diff options
| -rw-r--r-- | html/Makefile | 35 | ||||
| -rw-r--r-- | html/build/cards.html | 157 | ||||
| -rw-r--r-- | html/build/index.html | 183 | ||||
| l--------- | html/build/maps | 1 | ||||
| -rw-r--r-- | html/build/maps.html | 176 | ||||
| -rw-r--r-- | html/build/rules.html | 162 | ||||
| -rw-r--r-- | html/build/rules/de/ai.html | 201 | ||||
| -rw-r--r-- | html/build/rules/de/rules.html | 541 | ||||
| -rw-r--r-- | html/build/rules/de/tiles.html | 206 | ||||
| -rw-r--r-- | html/build/rules/en/ai.html | 201 | ||||
| -rw-r--r-- | html/build/rules/en/rules.html | 541 | ||||
| -rw-r--r-- | html/build/rules/en/tiles.html | 200 | ||||
| -rw-r--r-- | html/cards.md | 3 | ||||
| -rw-r--r-- | html/index.md | 11 | ||||
| -rw-r--r-- | html/maps.md | 24 | ||||
| l--------- | html/rules | 1 | ||||
| -rw-r--r-- | html/rules.md | 7 | ||||
| -rw-r--r-- | rules/Makefile | 11 | ||||
| -rw-r--r-- | rules/de/ai.md (renamed from rules/de/ki.md) | 2 | ||||
| -rw-r--r-- | rules/de/tiles.md (renamed from rules/de/maps.md) | 0 | ||||
| -rw-r--r-- | rules/en/ai.md | 2 | ||||
| -rw-r--r-- | rules/en/rules.md | 324 | ||||
| -rw-r--r-- | rules/en/tiles.md (renamed from rules/en/maps.md) | 0 |
23 files changed, 2974 insertions, 15 deletions
diff --git a/html/Makefile b/html/Makefile new file mode 100644 index 00000000..d495a5a2 --- /dev/null +++ b/html/Makefile @@ -0,0 +1,35 @@ +VERBOSE = @ + +PANDOC_FLAGS = -f markdown -s + +BUILDDIR = build + +RULES_DIR = rules +RULE_FILES = rules.md tiles.md ai.md +DE_RULES = $(addprefix $(RULES_DIR)/de/,$(RULE_FILES)) +EN_RULES = $(addprefix $(RULES_DIR)/en/,$(RULE_FILES)) +RULES = $(DE_RULES) $(EN_RULES) +RULES_HTML = $(addprefix $(BUILDDIR)/,$(RULES:.md=.html)) + +MAPS_DIR = ../../maps +MAPS_BUILDDIR = $(BUILDDIR)/maps + +SITES = index.md rules.md cards.md maps.md +HTML = $(addprefix $(BUILDDIR)/,$(SITES:.md=.html)) + +.PHONY: all clean maps +all: $(HTML) $(RULES_HTML) maps + +clean: + rm -rf $(BUILDDIR) + +maps: + ln -sf $(MAPS_DIR) $(MAPS_BUILDDIR) + make -C $(MAPS_BUILDDIR) + +$(BUILDDIR)/%.html: %.md + @echo "building $@" + @if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi + $(VERBOSE) if [[ $$(cat $< | wc -l) -gt 80 ]]; \ + then pandoc --toc $(PANDOC_FLAGS) $< -o $@; \ + else pandoc $(PANDOC_FLAGS) $< -o $@; fi diff --git a/html/build/cards.html b/html/build/cards.html new file mode 100644 index 00000000..ad7b67be --- /dev/null +++ b/html/build/cards.html @@ -0,0 +1,157 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> +<head> + <meta charset="utf-8" /> + <meta name="generator" content="pandoc" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>Cards</title> + <style> + html { + line-height: 1.5; + font-family: Georgia, serif; + font-size: 20px; + color: #1a1a1a; + background-color: #fdfdfd; + } + body { + margin: 0 auto; + max-width: 36em; + padding-left: 50px; + padding-right: 50px; + padding-top: 50px; + padding-bottom: 50px; + hyphens: auto; + word-wrap: break-word; + text-rendering: optimizeLegibility; + font-kerning: normal; + } + @media (max-width: 600px) { + body { + font-size: 0.9em; + padding: 1em; + } + } + @media print { + body { + background-color: transparent; + color: black; + font-size: 12pt; + } + p, h2, h3 { + orphans: 3; + widows: 3; + } + h2, h3, h4 { + page-break-after: avoid; + } + } + p { + margin: 1em 0; + } + a { + color: #1a1a1a; + } + a:visited { + color: #1a1a1a; + } + img { + max-width: 100%; + } + h1, h2, h3, h4, h5, h6 { + margin-top: 1.4em; + } + h5, h6 { + font-size: 1em; + font-style: italic; + } + h6 { + font-weight: normal; + } + ol, ul { + padding-left: 1.7em; + margin-top: 1em; + } + li > ol, li > ul { + margin-top: 0; + } + blockquote { + margin: 1em 0 1em 1.7em; + padding-left: 1em; + border-left: 2px solid #e6e6e6; + color: #606060; + } + code { + font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace; + font-size: 85%; + margin: 0; + } + pre { + margin: 1em 0; + overflow: auto; + } + pre code { + padding: 0; + overflow: visible; + } + .sourceCode { + background-color: transparent; + overflow: visible; + } + hr { + background-color: #1a1a1a; + border: none; + height: 1px; + margin: 1em 0; + } + table { + margin: 1em 0; + border-collapse: collapse; + width: 100%; + overflow-x: auto; + display: block; + font-variant-numeric: lining-nums tabular-nums; + } + table caption { + margin-bottom: 0.75em; + } + tbody { + margin-top: 0.5em; + border-top: 1px solid #1a1a1a; + border-bottom: 1px solid #1a1a1a; + } + th { + border-top: 1px solid #1a1a1a; + padding: 0.25em 0.5em 0.25em 0.5em; + } + td { + padding: 0.125em 0.5em 0.25em 0.5em; + } + header { + margin-bottom: 4em; + text-align: center; + } + #TOC li { + list-style: none; + } + #TOC a:not(:hover) { + text-decoration: none; + } + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} + ul.task-list{list-style: none;} + .display.math{display: block; text-align: center; margin: 0.5rem auto;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> +</head> +<body> +<header id="title-block-header"> +<h1 class="title">Cards</h1> +</header> +<p>There are cards somewhere I promise</p> +</body> +</html> diff --git a/html/build/index.html b/html/build/index.html new file mode 100644 index 00000000..ebb2b642 --- /dev/null +++ b/html/build/index.html @@ -0,0 +1,183 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> +<head> + <meta charset="utf-8" /> + <meta name="generator" content="pandoc" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>Muhq’ Game (working title)</title> + <style> + html { + line-height: 1.5; + font-family: Georgia, serif; + font-size: 20px; + color: #1a1a1a; + background-color: #fdfdfd; + } + body { + margin: 0 auto; + max-width: 36em; + padding-left: 50px; + padding-right: 50px; + padding-top: 50px; + padding-bottom: 50px; + hyphens: auto; + word-wrap: break-word; + text-rendering: optimizeLegibility; + font-kerning: normal; + } + @media (max-width: 600px) { + body { + font-size: 0.9em; + padding: 1em; + } + } + @media print { + body { + background-color: transparent; + color: black; + font-size: 12pt; + } + p, h2, h3 { + orphans: 3; + widows: 3; + } + h2, h3, h4 { + page-break-after: avoid; + } + } + p { + margin: 1em 0; + } + a { + color: #1a1a1a; + } + a:visited { + color: #1a1a1a; + } + img { + max-width: 100%; + } + h1, h2, h3, h4, h5, h6 { + margin-top: 1.4em; + } + h5, h6 { + font-size: 1em; + font-style: italic; + } + h6 { + font-weight: normal; + } + ol, ul { + padding-left: 1.7em; + margin-top: 1em; + } + li > ol, li > ul { + margin-top: 0; + } + blockquote { + margin: 1em 0 1em 1.7em; + padding-left: 1em; + border-left: 2px solid #e6e6e6; + color: #606060; + } + code { + font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace; + font-size: 85%; + margin: 0; + } + pre { + margin: 1em 0; + overflow: auto; + } + pre code { + padding: 0; + overflow: visible; + } + .sourceCode { + background-color: transparent; + overflow: visible; + } + hr { + background-color: #1a1a1a; + border: none; + height: 1px; + margin: 1em 0; + } + table { + margin: 1em 0; + border-collapse: collapse; + width: 100%; + overflow-x: auto; + display: block; + font-variant-numeric: lining-nums tabular-nums; + } + table caption { + margin-bottom: 0.75em; + } + tbody { + margin-top: 0.5em; + border-top: 1px solid #1a1a1a; + border-bottom: 1px solid #1a1a1a; + } + th { + border-top: 1px solid #1a1a1a; + padding: 0.25em 0.5em 0.25em 0.5em; + } + td { + padding: 0.125em 0.5em 0.25em 0.5em; + } + header { + margin-bottom: 4em; + text-align: center; + } + #TOC li { + list-style: none; + } + #TOC a:not(:hover) { + text-decoration: none; + } + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} + ul.task-list{list-style: none;} + .display.math{display: block; text-align: center; margin: 0.5rem auto;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> +</head> +<body> +<header id="title-block-header"> +<h1 class="title">Muhq’ Game (working title)</h1> +</header> +<hr> +<a href="rules.html">rules</a> <a href="cards.html">card</a> <a href="maps.html">maps</a> +<hr> +<p>Muhq’s game is a mashup of multiple game mechanics I enjoy. It is a complex strategy game involving playing cards as well a board. Games which inspired the rules and gameplay:</p> +<ul> +<li>Magic: The Gathering</li> +<li>Dominion</li> +<li>El Dorado</li> +<li>Chess</li> +<li>Decent</li> +<li>Faeria</li> +<li>Age of Empires</li> +</ul> +<p>Relevant Mechanics are:</p> +<ul> +<li>Separate sets of playing cards using different gameplay aspects</li> +<li>Draft the players Decks to prevent repetitive gameplay</li> +<li>Deck building to adapt to the current board position and your opponents</li> +<li>Map and card independent rules to allow the players to play the game the way they enjoy the most</li> +<li>Deep strategic decision making, how to use all available resources on the board or in your hand</li> +<li>Clean and simple economy system using a single resource</li> +</ul> +<h2 id="license">License</h2> +<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />Muhq’s game if not otherwise stated is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p> +<h2 id="contribution">Contribution</h2> +<p>If you have your own ideas and want to share them. You can download and manage the sources of muhq’s game using <a href="https://git-scm.com/">git</a>.</p> +<p>To retrieve the <a href="https://muhq.space/muhqs-game.git">sources</a> and start hacking run <code>git clone https://muhq.space/muhqs-game.git</code>.</p> +</body> +</html> diff --git a/html/build/maps b/html/build/maps new file mode 120000 index 00000000..32d0cb7e --- /dev/null +++ b/html/build/maps @@ -0,0 +1 @@ +../../maps
\ No newline at end of file diff --git a/html/build/maps.html b/html/build/maps.html new file mode 100644 index 00000000..f6c85193 --- /dev/null +++ b/html/build/maps.html @@ -0,0 +1,176 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> +<head> + <meta charset="utf-8" /> + <meta name="generator" content="pandoc" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>Maps</title> + <style> + html { + line-height: 1.5; + font-family: Georgia, serif; + font-size: 20px; + color: #1a1a1a; + background-color: #fdfdfd; + } + body { + margin: 0 auto; + max-width: 36em; + padding-left: 50px; + padding-right: 50px; + padding-top: 50px; + padding-bottom: 50px; + hyphens: auto; + word-wrap: break-word; + text-rendering: optimizeLegibility; + font-kerning: normal; + } + @media (max-width: 600px) { + body { + font-size: 0.9em; + padding: 1em; + } + } + @media print { + body { + background-color: transparent; + color: black; + font-size: 12pt; + } + p, h2, h3 { + orphans: 3; + widows: 3; + } + h2, h3, h4 { + page-break-after: avoid; + } + } + p { + margin: 1em 0; + } + a { + color: #1a1a1a; + } + a:visited { + color: #1a1a1a; + } + img { + max-width: 100%; + } + h1, h2, h3, h4, h5, h6 { + margin-top: 1.4em; + } + h5, h6 { + font-size: 1em; + font-style: italic; + } + h6 { + font-weight: normal; + } + ol, ul { + padding-left: 1.7em; + margin-top: 1em; + } + li > ol, li > ul { + margin-top: 0; + } + blockquote { + margin: 1em 0 1em 1.7em; + padding-left: 1em; + border-left: 2px solid #e6e6e6; + color: #606060; + } + code { + font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace; + font-size: 85%; + margin: 0; + } + pre { + margin: 1em 0; + overflow: auto; + } + pre code { + padding: 0; + overflow: visible; + } + .sourceCode { + background-color: transparent; + overflow: visible; + } + hr { + background-color: #1a1a1a; + border: none; + height: 1px; + margin: 1em 0; + } + table { + margin: 1em 0; + border-collapse: collapse; + width: 100%; + overflow-x: auto; + display: block; + font-variant-numeric: lining-nums tabular-nums; + } + table caption { + margin-bottom: 0.75em; + } + tbody { + margin-top: 0.5em; + border-top: 1px solid #1a1a1a; + border-bottom: 1px solid #1a1a1a; + } + th { + border-top: 1px solid #1a1a1a; + padding: 0.25em 0.5em 0.25em 0.5em; + } + td { + padding: 0.125em 0.5em 0.25em 0.5em; + } + header { + margin-bottom: 4em; + text-align: center; + } + #TOC li { + list-style: none; + } + #TOC a:not(:hover) { + text-decoration: none; + } + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} + ul.task-list{list-style: none;} + .display.math{display: block; text-align: center; margin: 0.5rem auto;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> +</head> +<body> +<header id="title-block-header"> +<h1 class="title">Maps</h1> +</header> +<p>Tile definitions can be found in the <a href="rules.html">rules</a></p> +<h2 id="available-maps">Available Maps</h2> +<h3 id="coop">Coop</h3> +<ul> +<li>The Kraken [<a href="maps/the-kraken.map">raw</a>] [<a href="maps/the-kraken.png">png</a>]</li> +</ul> +<h3 id="players">2 Players</h3> +<ul> +<li>Ring street [<a href="maps/2P-ring-street.map">raw</a>] [<a href="maps/2P-ring-street.png">png</a>]</li> +<li>River king [<a href="maps/2P-river-king.map">raw</a>] [<a href="maps/2P-river-king.png">png</a>]</li> +</ul> +<h3 id="players-1">3 Players</h3> +<ul> +<li>Ring street [<a href="maps/3P-ring-street.map">raw</a>] [<a href="maps/3P-ring-street.png">png</a>]</li> +</ul> +<h3 id="players-2">4 Players</h3> +<ul> +<li>Islands [<a href="maps/4P-islands.map">raw</a>] [<a href="maps/4P-islands.png">png</a>]</li> +</ul> +<p>“Dolle karte die leg ich mal da hin”</p> +</body> +</html> diff --git a/html/build/rules.html b/html/build/rules.html new file mode 100644 index 00000000..41c6e93b --- /dev/null +++ b/html/build/rules.html @@ -0,0 +1,162 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> +<head> + <meta charset="utf-8" /> + <meta name="generator" content="pandoc" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>Muhq’s Game rules</title> + <style> + html { + line-height: 1.5; + font-family: Georgia, serif; + font-size: 20px; + color: #1a1a1a; + background-color: #fdfdfd; + } + body { + margin: 0 auto; + max-width: 36em; + padding-left: 50px; + padding-right: 50px; + padding-top: 50px; + padding-bottom: 50px; + hyphens: auto; + word-wrap: break-word; + text-rendering: optimizeLegibility; + font-kerning: normal; + } + @media (max-width: 600px) { + body { + font-size: 0.9em; + padding: 1em; + } + } + @media print { + body { + background-color: transparent; + color: black; + font-size: 12pt; + } + p, h2, h3 { + orphans: 3; + widows: 3; + } + h2, h3, h4 { + page-break-after: avoid; + } + } + p { + margin: 1em 0; + } + a { + color: #1a1a1a; + } + a:visited { + color: #1a1a1a; + } + img { + max-width: 100%; + } + h1, h2, h3, h4, h5, h6 { + margin-top: 1.4em; + } + h5, h6 { + font-size: 1em; + font-style: italic; + } + h6 { + font-weight: normal; + } + ol, ul { + padding-left: 1.7em; + margin-top: 1em; + } + li > ol, li > ul { + margin-top: 0; + } + blockquote { + margin: 1em 0 1em 1.7em; + padding-left: 1em; + border-left: 2px solid #e6e6e6; + color: #606060; + } + code { + font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace; + font-size: 85%; + margin: 0; + } + pre { + margin: 1em 0; + overflow: auto; + } + pre code { + padding: 0; + overflow: visible; + } + .sourceCode { + background-color: transparent; + overflow: visible; + } + hr { + background-color: #1a1a1a; + border: none; + height: 1px; + margin: 1em 0; + } + table { + margin: 1em 0; + border-collapse: collapse; + width: 100%; + overflow-x: auto; + display: block; + font-variant-numeric: lining-nums tabular-nums; + } + table caption { + margin-bottom: 0.75em; + } + tbody { + margin-top: 0.5em; + border-top: 1px solid #1a1a1a; + border-bottom: 1px solid #1a1a1a; + } + th { + border-top: 1px solid #1a1a1a; + padding: 0.25em 0.5em 0.25em 0.5em; + } + td { + padding: 0.125em 0.5em 0.25em 0.5em; + } + header { + margin-bottom: 4em; + text-align: center; + } + #TOC li { + list-style: none; + } + #TOC a:not(:hover) { + text-decoration: none; + } + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} + ul.task-list{list-style: none;} + .display.math{display: block; text-align: center; margin: 0.5rem auto;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> +</head> +<body> +<header id="title-block-header"> +<h1 class="title">Muhq’s Game rules</h1> +</header> +<p>Rules are available in german and english.</p> +<ul> +<li><a href="rules/en/rules.html">Base rules</a> [<a href="rules/de/rules.html">de</a>] - everything you know to play the game</li> +<li><a href="rules/en/tiles.html">Common tiles</a> [<a href="rules/de/tiles.html">de</a>] - all tiles used on the maps</li> +<li><a href="rules/en/ai.html">AI</a> [<a href="rules/de/ai.html">de</a>] - algorithms for controlling units</li> +</ul> +</body> +</html> diff --git a/html/build/rules/de/ai.html b/html/build/rules/de/ai.html new file mode 100644 index 00000000..1a77d330 --- /dev/null +++ b/html/build/rules/de/ai.html @@ -0,0 +1,201 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> +<head> + <meta charset="utf-8" /> + <meta name="generator" content="pandoc" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>KI</title> + <style> + html { + line-height: 1.5; + font-family: Georgia, serif; + font-size: 20px; + color: #1a1a1a; + background-color: #fdfdfd; + } + body { + margin: 0 auto; + max-width: 36em; + padding-left: 50px; + padding-right: 50px; + padding-top: 50px; + padding-bottom: 50px; + hyphens: auto; + word-wrap: break-word; + text-rendering: optimizeLegibility; + font-kerning: normal; + } + @media (max-width: 600px) { + body { + font-size: 0.9em; + padding: 1em; + } + } + @media print { + body { + background-color: transparent; + color: black; + font-size: 12pt; + } + p, h2, h3 { + orphans: 3; + widows: 3; + } + h2, h3, h4 { + page-break-after: avoid; + } + } + p { + margin: 1em 0; + } + a { + color: #1a1a1a; + } + a:visited { + color: #1a1a1a; + } + img { + max-width: 100%; + } + h1, h2, h3, h4, h5, h6 { + margin-top: 1.4em; + } + h5, h6 { + font-size: 1em; + font-style: italic; + } + h6 { + font-weight: normal; + } + ol, ul { + padding-left: 1.7em; + margin-top: 1em; + } + li > ol, li > ul { + margin-top: 0; + } + blockquote { + margin: 1em 0 1em 1.7em; + padding-left: 1em; + border-left: 2px solid #e6e6e6; + color: #606060; + } + code { + font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace; + font-size: 85%; + margin: 0; + } + pre { + margin: 1em 0; + overflow: auto; + } + pre code { + padding: 0; + overflow: visible; + } + .sourceCode { + background-color: transparent; + overflow: visible; + } + hr { + background-color: #1a1a1a; + border: none; + height: 1px; + margin: 1em 0; + } + table { + margin: 1em 0; + border-collapse: collapse; + width: 100%; + overflow-x: auto; + display: block; + font-variant-numeric: lining-nums tabular-nums; + } + table caption { + margin-bottom: 0.75em; + } + tbody { + margin-top: 0.5em; + border-top: 1px solid #1a1a1a; + border-bottom: 1px solid #1a1a1a; + } + th { + border-top: 1px solid #1a1a1a; + padding: 0.25em 0.5em 0.25em 0.5em; + } + td { + padding: 0.125em 0.5em 0.25em 0.5em; + } + header { + margin-bottom: 4em; + text-align: center; + } + #TOC li { + list-style: none; + } + #TOC a:not(:hover) { + text-decoration: none; + } + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} + ul.task-list{list-style: none;} + .display.math{display: block; text-align: center; margin: 0.5rem auto;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> +</head> +<body> +<header id="title-block-header"> +<h1 class="title">KI</h1> +</header> +<h2 id="grundsätze">Grundsätze</h2> +<ul> +<li>Die Algorithmen der KIs sollten so einfach wie möglich sein</li> +<li>Sie müssen von Spieler mit herkömmlichen Spielmaterialien ausgeführt werden können</li> +<li>Ihre Ausführung sollte nicht viel Zeit brauchen</li> +<li>Spieler wollen das Spiel spielen und nicht die KI ausführen</li> +<li>Entscheidungen sollten zufällig sein</li> +<li>Wir geben den Spieler keine Ausführung von Zufall vor</li> +</ul> +<h2 id="units">Units</h2> +<p>Um eine Unit mit KI zu aktivieren werden die Anweisungen ihrer KI in aufsteigender Reihenfolge ausgeführt. Wenn keine weiteren Anweisungen ausgeführt werden können wird die Unit getapped.</p> +<p>Jede Mehrdeutigkeit wird zufällig entschieden Zufall (mehrere Units in Angriffs Range, mehrere Endpunkte für Bewegungen, …). ### Aggressive 1. Falls gegnerische Unit in Angriffs Range Greife gegnerische Unit an 2. Solange Bewegungs-Aktion vorhanden Ziehe auf nächste gegnerische Unit zu Falls Angriffs-Action vorhanden fahre mit 1. fort</p> +<h3 id="scheu">Scheu</h3> +<pre><code>1. Falls nicht in Angriffs Range einer gegnerischen Unit + Aktiviere Volle-Aktion falls vorhanden +2. Falls Bewegungs-Aktion vorhanden + Ziehe auf entferntesten Punkt von gegnerischen Units +3. Falls gegnerische Unit in Angriffs Range + Greife gegnerische Unit an</code></pre> +<h3 id="wandelnd-x">Wandelnd X</h3> +<pre><code>1. Falls gegnerische Unit in Range X + Fuehre Aggresive KI aus +2. Falls Bewegungs-Aktion vorhanden + Ziehe auf zufälliges Feld + Fahre mit 1. fort</code></pre> +<h3 id="unterstützend">Unterstützend</h3> +<pre><code>1. Aktiviere Volle-Aktion falls vorhanden +2. Ziehe auf nächste verbündete Unit zu +3. Falls gegnerische Unit in Angriffs Range + Greife gegnerische Unit an</code></pre> +<h2 id="der-kraken">Der Kraken</h2> +<p>Anweisungen für den gegnerischen Spieler im “The Kraken” Spielmodus.</p> +<h3 id="zug-struktur">Zug Struktur</h3> +<pre><code>0. (Mische Ablagestapel in das leere Deck) +1. Erhalte #Spieler * 5 Resource +2. Upkeep: + 2.1 Solange die Summe aller upkeep Kosten größer ist als die verfügbaren Ressourcen + Zerstöre zufällige eigene Unit + 2.2 Bezahle alle Upkeep kosten +3. Aktionen: + 3.1 Ziehe eine Karte + 3.2 Falls die Karte spielbar ist + Spiele die Karte + Fahre mit 3.1 fort +4. Lege die ungenutzte Karte auf den Ablagestapel</code></pre> +</body> +</html> diff --git a/html/build/rules/de/rules.html b/html/build/rules/de/rules.html new file mode 100644 index 00000000..ea884888 --- /dev/null +++ b/html/build/rules/de/rules.html @@ -0,0 +1,541 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> +<head> + <meta charset="utf-8" /> + <meta name="generator" content="pandoc" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>muhq’s game rules</title> + <style> + html { + line-height: 1.5; + font-family: Georgia, serif; + font-size: 20px; + color: #1a1a1a; + background-color: #fdfdfd; + } + body { + margin: 0 auto; + max-width: 36em; + padding-left: 50px; + padding-right: 50px; + padding-top: 50px; + padding-bottom: 50px; + hyphens: auto; + word-wrap: break-word; + text-rendering: optimizeLegibility; + font-kerning: normal; + } + @media (max-width: 600px) { + body { + font-size: 0.9em; + padding: 1em; + } + } + @media print { + body { + background-color: transparent; + color: black; + font-size: 12pt; + } + p, h2, h3 { + orphans: 3; + widows: 3; + } + h2, h3, h4 { + page-break-after: avoid; + } + } + p { + margin: 1em 0; + } + a { + color: #1a1a1a; + } + a:visited { + color: #1a1a1a; + } + img { + max-width: 100%; + } + h1, h2, h3, h4, h5, h6 { + margin-top: 1.4em; + } + h5, h6 { + font-size: 1em; + font-style: italic; + } + h6 { + font-weight: normal; + } + ol, ul { + padding-left: 1.7em; + margin-top: 1em; + } + li > ol, li > ul { + margin-top: 0; + } + blockquote { + margin: 1em 0 1em 1.7em; + padding-left: 1em; + border-left: 2px solid #e6e6e6; + color: #606060; + } + code { + font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace; + font-size: 85%; + margin: 0; + } + pre { + margin: 1em 0; + overflow: auto; + } + pre code { + padding: 0; + overflow: visible; + } + .sourceCode { + background-color: transparent; + overflow: visible; + } + hr { + background-color: #1a1a1a; + border: none; + height: 1px; + margin: 1em 0; + } + table { + margin: 1em 0; + border-collapse: collapse; + width: 100%; + overflow-x: auto; + display: block; + font-variant-numeric: lining-nums tabular-nums; + } + table caption { + margin-bottom: 0.75em; + } + tbody { + margin-top: 0.5em; + border-top: 1px solid #1a1a1a; + border-bottom: 1px solid #1a1a1a; + } + th { + border-top: 1px solid #1a1a1a; + padding: 0.25em 0.5em 0.25em 0.5em; + } + td { + padding: 0.125em 0.5em 0.25em 0.5em; + } + header { + margin-bottom: 4em; + text-align: center; + } + #TOC li { + list-style: none; + } + #TOC a:not(:hover) { + text-decoration: none; + } + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} + ul.task-list{list-style: none;} + .display.math{display: block; text-align: center; margin: 0.5rem auto;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> +</head> +<body> +<header id="title-block-header"> +<h1 class="title">muhq’s game rules</h1> +</header> +<nav id="TOC" role="doc-toc"> +<ul> +<li><a href="#grundideen">Grundideen</a></li> +<li><a href="#spielvorbereitung">Spielvorbereitung</a></li> +<li><a href="#draft">Draft</a></li> +<li><a href="#zug-struktur">Zug Struktur</a> +<ul> +<li><a href="#upkeep">Upkeep</a></li> +<li><a href="#aktionen">Aktionen</a> +<ul> +<li><a href="#freie-aktionen">Freie Aktionen</a></li> +<li><a href="#aktionen-stapel">Aktionen-Stapel</a></li> +<li><a href="#langsame-aktionen">Langsame Aktionen</a></li> +<li><a href="#schnelle-aktionen">Schnelle Aktionen</a></li> +</ul></li> +<li><a href="#kauf">Kauf</a></li> +</ul></li> +<li><a href="#deck">Deck</a></li> +<li><a href="#ablagestapel">Ablagestapel</a></li> +<li><a href="#store">Store</a></li> +<li><a href="#spielfeld">Spielfeld</a> +<ul> +<li><a href="#siegbedingungen">Siegbedingungen</a></li> +</ul></li> +<li><a href="#ressource">Ressource</a></li> +<li><a href="#karten">Karten</a> +<ul> +<li><a href="#zauber">Zauber</a></li> +<li><a href="#units">Units</a></li> +<li><a href="#artifacts">Artifacts</a></li> +</ul></li> +<li><a href="#range">Range</a></li> +<li><a href="#kampf">Kampf</a> +<ul> +<li><a href="#high-ground-bonus">High Ground Bonus</a></li> +</ul></li> +<li><a href="#permanents">Permanents</a> +<ul> +<li><a href="#permanent-stapel">Permanent Stapel</a></li> +<li><a href="#verfügbare-felder">Verfügbare Felder</a></li> +</ul></li> +<li><a href="#units-1">Units</a> +<ul> +<li><a href="#bewegung">Bewegung</a></li> +<li><a href="#effekte">Effekte</a> +<ul> +<li><a href="#crew-x---bemannen-x">Crew X - Bemannen X</a></li> +</ul></li> +<li><a href="#zustände">Zustände</a> +<ul> +<li><a href="#gift">Gift</a></li> +<li><a href="#panik">Panik</a></li> +</ul></li> +</ul></li> +<li><a href="#artefakte">Artefakte</a> +<ul> +<li><a href="#effekte-1">Effekte</a> +<ul> +<li><a href="#solid-x">Solid X</a></li> +</ul></li> +<li><a href="#equipments">Equipments</a></li> +</ul></li> +</ul> +</nav> +<h1 id="grundideen">Grundideen</h1> +<ul> +<li>Mehrere thematisch oder strategisch zusammenhängende Kartensets</li> +<li>Draft aus Subset von Blöcken (Legt Decks und Strategien fest) -> Spieler können entscheiden wie sie auf dem Spielfeld spielen wollen</li> +<li>Deckbuilding (legt Spielentwicklung fest)</li> +<li>Hand wird jede Runde aufgefüllt</li> +<li>Tabletop (Erfüllen einer Siegbedingung)</li> +<li>es gibt nur eine Ressource</li> +<li>Spielfeld stark Spielablauf und Taktik -> Wiederspielbarkeit</li> +</ul> +<h1 id="spielvorbereitung">Spielvorbereitung</h1> +<ul> +<li>Wähle Spielfeld</li> +<li>Wähle Verwendete Sets</li> +<li>Mische alle Karten der verwendeten Sets zusammen</li> +<li>Draft Spielerdecks</li> +<li>Verteile von der Karte festgelegten Starthände</li> +<li>Jeder Spieler legt seine gedrafteten Karten als seinen <strong>Store</strong> offen aus</li> +</ul> +<h1 id="draft">Draft</h1> +<ul> +<li>Aus allen Karten der ausgewählten Sets werden Stapel a 10 Karten ausgeteilt</li> +</ul> +<pre><code>Solange noch zwei Stapel vorhanden und erst weniger als 25 Karten pro Spieler + Jeder Spieler nimmt einen Stapel + Solange Karten im Stapel + Nimm eine Karte aus deinem Stapel und gib in an den naechsten Spieler weiter</code></pre> +<h1 id="zug-struktur">Zug Struktur</h1> +<ul> +<li>Spieler sind alternierend am Zug</li> +<li>Ein Zuge besteht aus fünf Phasen: +<ul> +<li>[Ersetze leeres <strong>Deck</strong> mit Ablagestapel]</li> +<li>[Ziehe auf drei Karten auf]</li> +<li><strong>Upkeep</strong></li> +<li>Aktionsphase</li> +<li>Kauf</li> +<li>[Lege eine beliebige Zahl an Handkarten auf den Ablagestapel]</li> +</ul></li> +</ul> +<h2 id="upkeep">Upkeep</h2> +<ul> +<li>Von Spielfeld spezifizierte Anzahl an Ressource erhalten</li> +<li>Alle getriggerten Effekte abarbeiten</li> +<li><strong>Units</strong> bezahlen:</li> +</ul> +<pre><code>Pro Unit die du kontrollierst + Bezahle upkeep Kosten oder die Unit ist besiegt</code></pre> +<h2 id="aktionen">Aktionen</h2> +<ul> +<li>Aktionen sind alle Spielhandlungen die ein Spieler unternehmen kann.</li> +<li>Eine Karten ausspielen ist eine Aktion</li> +<li>Eine <strong>Unit</strong> kann Aktionen ausführen</li> +<li>Aktionen haben unterschiedliche Zeitpunkte an denen ein Spieler sie ausführen kann +<ul> +<li>Langsame Aktionen können nur in der eigenen Aktionsphase ausgeführt werden</li> +<li>Schnelle Aktionen können jeder Zeit ausgeführt werden</li> +</ul></li> +<li>Die Aktionen Phase eines Zuges:</li> +</ul> +<pre><code>Solange kontrollierte ungetappte Karte auf dem Spielfeld oder spielbare Karte in der Hand + Spiele Karte von der Hand + Oder Wähle ungetappte Karte + Solange verfügbare Aktionen der gewählten Karte + Führe verfügbare Aktion aus + Oder tappe Karte</code></pre> +<h3 id="freie-aktionen">Freie Aktionen</h3> +<ul> +<li><strong>Permanents</strong> können <strong>Freie Aktionen</strong> haben</li> +<li><strong>Freie Aktionen</strong> bestehen aus Kosten und ihrem Effekt (“Kosten: Effekt”)</li> +<li><strong>Freie Aktionen</strong> können zu jedem Zeitpunkt ausgeführt werden</li> +<li>Um <strong>Freie Aktionen</strong> auszuführen müssen ihre Kosten bezahlt werden</li> +</ul> +<h3 id="aktionen-stapel">Aktionen-Stapel</h3> +<ul> +<li>Die Abarbeitung von Aktionen basiert auf einem Stapel-Verfahren</li> +<li>Dabei wird die zuletzt ausgeführte Aktion zuerst abgearbeitet</li> +<li>Jede ausgeführte Aktion wird vor ihrer Abarbeitung auf den Aktionen-Stapel <em>gelegt</em></li> +<li>Die oberste Aktion auf dem Aktionen-Stapel wird abgearbeitet wenn niemand eine weitere Aktion ausführt</li> +</ul> +<h3 id="langsame-aktionen">Langsame Aktionen</h3> +<ul> +<li>Eine <strong>Permanent</strong> Karte ausspielen ist eine langsame Aktion</li> +<li>Aktionen einer <strong>Unit</strong> sind langsame Aktionen</li> +</ul> +<h3 id="schnelle-aktionen">Schnelle Aktionen</h3> +<ul> +<li>Eine <strong>Zauber</strong> Karte ausspielen ist eine schnelle Aktionen</li> +<li><strong>freie Aktionen</strong> sind schnelle Aktionen</li> +</ul> +<h2 id="kauf">Kauf</h2> +<ul> +<li>Karten können nur aus dem eigenen <strong>Store</strong> gekauft werden.</li> +<li>Um eine Karte zu kaufen gibt der aktive Spieler Ressource in Höhe des Kaufpreises der Karte aus.</li> +<li>Es kann nur eine Karte pro Zug gekauft werden.</li> +<li>Die gekaufte Karte wird auf den <strong>Ablagestapel</strong> gelegt.</li> +</ul> +<h1 id="deck">Deck</h1> +<ul> +<li>Dynamisches <strong>Deck</strong></li> +<li>Startet mit <em>X</em> Start-<strong>Units</strong></li> +<li>Muss durch kaufen verbessert werden</li> +<li>Kann durch Effekte verkleinert werden</li> +<li>Wenn <strong>Deck</strong> leer in <strong>Upkeep</strong> : <strong>Ablagestapel</strong> -> <strong>Deck</strong></li> +<li>Möglichkeit eines dauerhaft leeren <strong>Decks</strong></li> +</ul> +<h1 id="ablagestapel">Ablagestapel</h1> +<ul> +<li>Jeder Spieler darf jeden <strong>Ablagestapel</strong> beliebig ansehen.</li> +<li><strong>Ablagestapel</strong> haben keine feste Karten Reihenfolge</li> +</ul> +<h1 id="store">Store</h1> +<ul> +<li>Jeder Spieler hat eigenen <strong>Store</strong></li> +<li>Bei Spielbeginn enthält der <strong>Store</strong> alle Karten des jeweiligen Spielers</li> +</ul> +<h1 id="spielfeld">Spielfeld</h1> +<ul> +<li>Bestimmt Siegbedingung, Grund-Ressourcen-Zuwachs, Startkarten</li> +<li>In Felder aufgeteilt</li> +<li>Auf jeden Feld kann nur ein <strong>Permanent</strong> stehen</li> +<li>Feld kann Typ bzw. Effekt haben <!-- * Kann *einzigen* (mutable) Effekt haben --></li> +</ul> +<h2 id="siegbedingungen">Siegbedingungen</h2> +<ul> +<li><em>VIP</em> (besiege eine gegnerische <strong>Unit</strong> wie König im Schach)</li> +<li>Ressourcen battle wer ein Ressourcen limit erreicht gewinnt mit Möglichkeit durch <strong>Units</strong> Ressource zuklauen/-vernichten.</li> +<li><em>Capture points</em> (Wenn am ende des gegnerischen Zugs du die meisten Gebiete hälst. Gebiet gilt als von dir gehalten wenn du die mehr Zahl an <strong>Units</strong> darin kontrollierst)</li> +<li>Zerstörung von Gebäuden (moba style)</li> +<li>Stecken des Sieges, der: Ein Equipment das als Siegbedingung von einer <strong>Unit</strong> ausgerüstet sein muss</li> +</ul> +<h1 id="ressource">Ressource</h1> +<ul> +<li>Es gibt nur eine Ressource</li> +<li>Ressource kann gespart werden</li> +<li>Ressource verändert sich jede Runde</li> +<li>Abhängig von Zustand des Spielfeldes</li> +<li>Anzahl der eigenen <strong>Units</strong> auf dem Feld</li> +<li>Grundzuwachs des Spielfeldes</li> +</ul> +<h1 id="karten">Karten</h1> +<ul> +<li>Alle Karten haben: +<ul> +<li>Set</li> +<li>Namen</li> +<li>Typ</li> +<li>Kaufkosten</li> +<li>Typ spezifische Beschränkung wann sie benutzt werden können</li> +</ul></li> +<li>Zu jedem Zeitpunkt (<strong>Instant Speed</strong>) kann ein Spieler zwei Karten von seiner Hand auf den <strong>Ablagestapel</strong> legen um 1 Ressource erhalten.</li> +</ul> +<h2 id="zauber">Zauber</h2> +<ul> +<li>Einmalig</li> +<li>Nach resolve -≥ Ablage stapel</li> +<li>TODO: <strong>Instant Speed</strong></li> +<li>Siehe Zauber</li> +</ul> +<h2 id="units">Units</h2> +<ul> +<li>siehe <strong><a href="#units">Units</a></strong></li> +</ul> +<h2 id="artifacts">Artifacts</h2> +<ul> +<li>siehe <strong><a href="#artefakte">Artifakte</a></strong></li> +</ul> +<h1 id="range">Range</h1> +<ul> +<li><strong>Ranges</strong> definieren einen Bereich an Feldern</li> +<li><strong>Ranges</strong> haben einen Ursprung</li> +<li><strong>Ranges</strong> haben einen Wert X</li> +<li><strong>Ranges</strong> mit dem Wert X beinhalten alle Felder die mit X Schritten, wobei diagonale Schritte ab dem zweiten doppelt zählen, vom Ursprung erreichbar sind</li> +</ul> +<h1 id="kampf">Kampf</h1> +<ul> +<li>Wird durch Angriffs Aktion oder Ereignis initialisiert.</li> +<li>Bei Initialisierung muss der aktive Spieler festlegen welche andere <strong>Unit</strong> er angreifen möchte</li> +<li>Die angegriffene <strong>Unit</strong> muss in der <strong>Range</strong> des Angriffs der angreifenden <strong>Unit</strong> sein.</li> +<li>Beide am Kampf beteiligen <strong>Units</strong> fügen sich gegenseitig Schaden zu falls möglich</li> +<li>Schaden kann durch Effekte verändert werden</li> +<li><strong>Unit</strong> können Schaden nur in der <strong>Range</strong> ihres Angriffs zufügen +<ul> +<li>Nahkampf beschreibt Angriffe der Form: X <strong>Range</strong> 1</li> +<li>Fernkampf beschreibt Angriffe mit <strong>Range</strong> > 1</li> +</ul></li> +<li>Fernkampf hat <code>High Ground Bonus</code></li> +</ul> +<h2 id="high-ground-bonus">High Ground Bonus</h2> +<ul> +<li><ul> +<li>1 Reichweite für <strong>Units</strong> mit Fernkampf</li> +</ul></li> +</ul> +<h1 id="permanents">Permanents</h1> +<ul> +<li><strong>Permanents</strong> sind Spielelemente die exklusiv ein Feld des Spielfeldes belegen.</li> +<li>Kein <strong>Permanent</strong> kann auf dem selben Feld eines anderem <strong>Permanents</strong> platziert werden.</li> +<li><strong>Permanents</strong> bleiben solange auf dem Spielfeld bis sie zerstört oder besiegt wurden.</li> +<li>Besiegte oder zerstörte <strong>Permanents</strong> werden auf den Ablagestapel gelegt</li> +<li><strong>Permanents</strong> haben einen Besitzer und einen Eigentümer +<ul> +<li>Eigentümer eines <strong>Permanents</strong> ist derjenige aus dessen Deck die Karte des <strong>Permanents</strong></li> +<li>Besitzer ist derjenige der das <strong>Permanent</strong> kontrolliert.</li> +</ul></li> +</ul> +<h2 id="permanent-stapel">Permanent Stapel</h2> +<ul> +<li><strong>Permanents</strong> können auf anderen <strong>Permanents</strong> platziert werden.</li> +<li><strong>Permanents</strong> die auf anderen Permanent platziert werden bilden einen <strong>Stapel</strong>.</li> +<li>Das Feld eines <strong>Stapels</strong> ist das des zugrundeliegenden <strong>Permanents</strong>.</li> +<li>Wenn ein zugrundeliegenden <strong>Permanent</strong> das Spielfeld verlässt wir der <strong>Stapel</strong> auf sein Feld <strong>fallen gelassen</strong></li> +<li>Um einen <strong>Stapel</strong> <strong>fallen zu lassen</strong> führt der Spieler, der das zugrundeliegenden <strong>Permanent</strong> kontrolliert Folgendes durch:</li> +</ul> +<pre><code>Für jedes Permanent des Stapels + Lege das Permanent auf ein verfügbares Feld in Range 1. + Falls kein Feld verfügbar ist wird das Permanent zerstört.</code></pre> +<h2 id="verfügbare-felder">Verfügbare Felder</h2> +<pre><code>* Nicht von einem anderen **Permanent** besetzt +* Schwimmende **Permanents** können nur **deep water** Felder besetzen +* Nicht schwimmende **Permanents** können nur nicht **deep water** Felder besetzen</code></pre> +<h1 id="units-1">Units</h1> +<ul> +<li><strong>Units</strong> sind <strong>Permanents</strong></li> +<li>Besiegte oder zerstörte <strong>Units</strong> werden auf den <strong>Ablagestapel</strong> gelegt</li> +<li>Haben Leben, Bewegung, Angriff, Unterhalt</li> +<li>Sind besiegt wenn Leben < 0 oder Effekt sie explizit besiegt</li> +<li>Nur im eigenen Zug spielbar</li> +<li>Können auf von dem Spielfeld und Effekten bestimmten Bereichen auf verfügbare Feldern ausgespielt werden</li> +<li><strong>Units</strong> haben entweder eine Bewegung und einen Angriff oder ein Volle-Aktion pro Zug</li> +<li><strong>Units</strong> können darüber hinaus <strong>freie Aktionen</strong> haben</li> +<li>Können dauerhaften Effekt haben (z.B. Buff, Taunt, +1 Armor, …)</li> +<li>Können Zustände haben (entsprechende Marken auf Karte)</li> +<li>Haben Fern- oder Nahkampf +<ul> +<li>Fernkampf: Angriff mit <strong>Range</strong> > 1</li> +<li>Nahkampf: Angriff mit <strong>Range</strong> = 1</li> +<li><strong>Units</strong> mit Fernkampf können auch im Nahkampf kämpfen</li> +</ul></li> +<li><strong>Units</strong> können eine auf gewisse Felder beschränkte Bewegung haben +<ul> +<li><strong>Unit</strong> mit Schwimmen können nur auf <strong>deep water</strong> Feldern platziert werden</li> +</ul></li> +<li><strong>Units</strong> in einem <strong>Stapel</strong> fügen ihren Angriff dem des zugrundeliegenden <strong>Permanents</strong> hinzu +<ul> +<li>Angriffe in der selben <strong>Range</strong> werden dabei addiert</li> +<li>Beispiel: Auf einem zugrundeliegenden <strong>Permanent</strong> mit Angriff X <strong>Range</strong> R liegt ein <strong>Stapel</strong> dessen <strong>Units</strong> folgende Angriffe haben +<ul> +<li>X=1 <strong>Range</strong> R=1 + <strong>Stapel</strong> {1 <strong>Range</strong> 1} -> 2 <strong>Range</strong> 1</li> +<li>X=1 <strong>Range</strong> R=1 + <strong>Stapel</strong> {1 <strong>Range</strong> 2} -> 1 <strong>Range</strong> 2; 2 <strong>Range</strong> 1</li> +<li>X=1 <strong>Range</strong> R=2 + <strong>Stapel</strong> {1 <strong>Range</strong> 1} -> 1 <strong>Range</strong> 2; 2 <strong>Range</strong> 1</li> +<li>X=1 <strong>Range</strong> R=1 + <strong>Stapel</strong> {2 <strong>Range</strong> 1, 1 <strong>Range</strong> 1} -> 4 <strong>Range</strong> 1</li> +<li>X=1 <strong>Range</strong> R=3 + <strong>Stapel</strong> {1 <strong>Range</strong> 2, 1 <strong>Range</strong> 1} -> 1 <strong>Range</strong> 3; 2 <strong>Range</strong> 2; 3 <strong>Range</strong> 1</li> +</ul></li> +</ul></li> +</ul> +<h2 id="bewegung">Bewegung</h2> +<ul> +<li>Eine <strong>Unit</strong> kann sich innerhalb der <strong>Range</strong> die ihrer Bewegung entspricht bewegen</li> +<li>Die bewegte <strong>Unit</strong> kann so viele Schritte in dieser <strong>Range</strong> auf <strong>verfuegbare Felder</strong> ziehen wie ihre Bewegung angibt</li> +<li>Jedes zweite diagonale Feld dieser Bewegung benötigt zwei Schritte</li> +</ul> +<h2 id="effekte">Effekte</h2> +<ul> +<li>Effekte beschreiben alles was eine <strong>Unit</strong> über ihre Grundcharakteristiken (Leben, Angriff, Bewegung, Kosten) ausmacht</li> +</ul> +<h3 id="crew-x---bemannen-x">Crew X - Bemannen X</h3> +<ul> +<li>Effekt einer <strong>Unit</strong>, der ihr erlaubt von X anderen <strong>Units</strong> als Ende einer Bewegung betreten/<em>bemannt</em> zu werden.</li> +<li>Dabei bilden die <em>bemannenden</em> <strong>Units</strong> einen <strong>Stapel</strong> auf der <em>bemannten</em> <strong>Unit</strong>.</li> +<li><em>Bemannende</em> <strong>Units</strong> fügen ihren Angriff der bemannten <strong>Unit</strong> hinzu (siehe <strong>Stapel</strong>).</li> +</ul> +<h2 id="zustände">Zustände</h2> +<p>Die Zustände einer <strong>Unit</strong> werden mit entsprechenden Zustandsmarken auf der <strong>Unit</strong> Karte markiert. ### Paralyse</p> +<ul> +<li><strong>Units</strong> mit <strong>Paralyse</strong>-Marken sind <em>paralysiert</em>.</li> +<li><em>Paralysierte</em> <strong>Unit</strong> können keine ihrer Aktionen ausführen.</li> +<li>Eine <em>paralysierte</em> <strong>Unit</strong> kann eine beliebige Aktionen ausgeben um eine <strong>Paralyse</strong>-Marke zu entfernen.</li> +</ul> +<h3 id="gift">Gift</h3> +<ul> +<li>Eine <strong>Unit</strong> ist vergiftet wenn auf ihr ein oder mehrere <strong>Gift</strong> Marken liegen.</li> +<li>Bei Aktivierung einer <em>vergifteten</em> <strong>Unit</strong> wird ein weiterer <strong>Gift</strong> Marke hinzugefügt.</li> +<li>Wenn mehr <strong>Gift</strong>-Marken auf einer <strong>Unit</strong> liegen als sie leben hat wird sie besiegt.</li> +</ul> +<h3 id="panik">Panik</h3> +<ul> +<li><strong>Units</strong> mit <strong>Panik</strong> Marken sind <em>panisch</em>.</li> +<li>Bei Aktivierung einer <em>panischen</em> <strong>Unit</strong> fuehre die KI Scheu fuer diese Unit aus und entferne ein <strong>Panik</strong> Marke von ihr.</li> +</ul> +<h1 id="artefakte">Artefakte</h1> +<ul> +<li><strong>Artefakte</strong> sind <strong>Permanents</strong></li> +<li>Zerstörte <strong>Artefakte</strong> werden auf den <strong>Ablagestapel</strong> gelegt</li> +<li><strong>Artefakte</strong> können Effekte haben</li> +<li><strong>Artefakte</strong> können <strong>freie Aktionen</strong> haben</li> +<li><strong>Artefakte</strong> können von angrenzenden <strong>Units</strong> als volle Aktion die Bewegungsrate der <strong>Unit</strong> transportiert werden. Das transportierte <strong>Artefakt</strong> wird auf ein <strong>verfügbar Feld</strong> neben der transportierenden <strong>Unit</strong> abgelegt.</li> +<li><strong>Units</strong> können statt einer Bewegung oder Angriffs mit einem angrenzenden <strong>Artefakt</strong> Felder tauschen</li> +</ul> +<h2 id="effekte-1">Effekte</h2> +<ul> +<li>Effekte beschreiben permanente Fähigkeiten ein <strong>Artefakt</strong></li> +</ul> +<h3 id="solid-x">Solid X</h3> +<ul> +<li><strong>Artefakte</strong> können den Effekt <strong>solid X</strong> haben</li> +<li>Ein <em>solides</em> <strong>Artefakt</strong> kann von gegnerischen <strong>Units</strong> weder transportiert noch mit ihm Feld getauscht werden</li> +<li>Gegnerische <strong>Units</strong> können ein <em>solides</em> <strong>Artifakt</strong> angreifen</li> +<li>Das Leben eines <em>soliden</em> <strong>Artifakts</strong> ist gleich dem durch den <em>solid</em> Effekt spezifizierten <em>X</em>-Wert.</li> +</ul> +<h2 id="equipments">Equipments</h2> +<ul> +<li><strong>Equipments</strong> sind <strong>Artefakte</strong></li> +<li><strong>Equipments</strong> haben einen <strong>Haltbarkeits</strong> Wert</li> +<li><strong>Equipments</strong> mit einer <strong>Haltbarkeit</strong> unter eins sind zerstört und werden abgelegt.</li> +<li><strong>Equipments</strong> können von <strong>Units</strong> ausgerüstet werden</li> +<li>Ein <em>ausgerüstetes</em> <strong>Equipment</strong> nimmt kein eigenes Feld ein und bildet einen <strong>Stapel</strong> auf der <em>ausgerüsteten</em> <strong>Unit</strong></li> +<li>Ein <strong>Equipment</strong> kann einzeln oder an die nächste gespielte <strong>Unit</strong> <em>ausgerüstet</em> ausgespielt werden.</li> +<li>Immer wenn der <strong>Stapel</strong> eines Equipments <em>fallen gelassen</em> wird dessen Haltbarkeit um 1 reduziert</li> +<li>Eine <strong>Unit</strong> kann statt einer Bewegung oder eines Angriffs ein <strong>Equipment</strong> in <strong>Range</strong> 1 <em>ausrüsten</em></li> +</ul> +</body> +</html> diff --git a/html/build/rules/de/tiles.html b/html/build/rules/de/tiles.html new file mode 100644 index 00000000..fddaa84b --- /dev/null +++ b/html/build/rules/de/tiles.html @@ -0,0 +1,206 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> +<head> + <meta charset="utf-8" /> + <meta name="generator" content="pandoc" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>muhq’s game common map tiles</title> + <style> + html { + line-height: 1.5; + font-family: Georgia, serif; + font-size: 20px; + color: #1a1a1a; + background-color: #fdfdfd; + } + body { + margin: 0 auto; + max-width: 36em; + padding-left: 50px; + padding-right: 50px; + padding-top: 50px; + padding-bottom: 50px; + hyphens: auto; + word-wrap: break-word; + text-rendering: optimizeLegibility; + font-kerning: normal; + } + @media (max-width: 600px) { + body { + font-size: 0.9em; + padding: 1em; + } + } + @media print { + body { + background-color: transparent; + color: black; + font-size: 12pt; + } + p, h2, h3 { + orphans: 3; + widows: 3; + } + h2, h3, h4 { + page-break-after: avoid; + } + } + p { + margin: 1em 0; + } + a { + color: #1a1a1a; + } + a:visited { + color: #1a1a1a; + } + img { + max-width: 100%; + } + h1, h2, h3, h4, h5, h6 { + margin-top: 1.4em; + } + h5, h6 { + font-size: 1em; + font-style: italic; + } + h6 { + font-weight: normal; + } + ol, ul { + padding-left: 1.7em; + margin-top: 1em; + } + li > ol, li > ul { + margin-top: 0; + } + blockquote { + margin: 1em 0 1em 1.7em; + padding-left: 1em; + border-left: 2px solid #e6e6e6; + color: #606060; + } + code { + font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace; + font-size: 85%; + margin: 0; + } + pre { + margin: 1em 0; + overflow: auto; + } + pre code { + padding: 0; + overflow: visible; + } + .sourceCode { + background-color: transparent; + overflow: visible; + } + hr { + background-color: #1a1a1a; + border: none; + height: 1px; + margin: 1em 0; + } + table { + margin: 1em 0; + border-collapse: collapse; + width: 100%; + overflow-x: auto; + display: block; + font-variant-numeric: lining-nums tabular-nums; + } + table caption { + margin-bottom: 0.75em; + } + tbody { + margin-top: 0.5em; + border-top: 1px solid #1a1a1a; + border-bottom: 1px solid #1a1a1a; + } + th { + border-top: 1px solid #1a1a1a; + padding: 0.25em 0.5em 0.25em 0.5em; + } + td { + padding: 0.125em 0.5em 0.25em 0.5em; + } + header { + margin-bottom: 4em; + text-align: center; + } + #TOC li { + list-style: none; + } + #TOC a:not(:hover) { + text-decoration: none; + } + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} + ul.task-list{list-style: none;} + .display.math{display: block; text-align: center; margin: 0.5rem auto;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> +</head> +<body> +<header id="title-block-header"> +<h1 class="title">muhq’s game common map tiles</h1> +</header> +<h1 id="gebräuchliche-felder">Gebräuchliche Felder</h1> +<h2 id="haus">Haus</h2> +<ul> +<li>Ein kleines Wohnhaus.</li> +<li><strong>Units</strong> auf diesem Feld können nur in range 1 angegriffen werden</li> +</ul> +<h2 id="turm">Turm</h2> +<ul> +<li>Ein militärisches Gebäude um Gelände zu kontrollieren.</li> +<li><strong>Units</strong> mit einer Angriffs range > 1 bekommen + 1 range</li> +</ul> +<h2 id="acker">Acker</h2> +<ul> +<li>Ein Acker um Ressource um landwirtschaftlich Ressource zu produzieren</li> +<li>Ein <strong>Bauer</strong> auf einem <strong>Acker</strong> stehender Bauer hat folgende Volle-Aktion: erhalte 3 Ressource</li> +</ul> +<h2 id="startfeld">Startfeld</h2> +<ul> +<li>Ein militärisch taktischer Ort</li> +<li>Startfelder sind Spieler spezifisch</li> +<li>Spieler können auf eigenen Startfeldern <strong>Permanents</strong> spielen</li> +</ul> +<h2 id="hafen">Hafen</h2> +<ul> +<li>Ein Ort an dem schwimmende Dinge gebaut werden</li> +<li>Hafen sind Spieler spezifisch</li> +<li>Spieler können schwimmende <strong>Permanents</strong> auf <strong>tiefen Wasser</strong> Feldern in range 2 spielen</li> +</ul> +<h2 id="strasse">Strasse</h2> +<ul> +<li>Strecken zur schnelleren Fortbewegung</li> +<li>Eine <strong>unit</strong> auf einer Strasse hat eine zusätzliche Bewegungs-Aktion welche sich nur auf Strassen Feldern bewegen darf</li> +<li>Strassen gelten als verbunden wenn sie sich eine Kannte teilen</li> +</ul> +<h2 id="tiefes-wasser">Tiefes Wasser</h2> +<ul> +<li>Ozeane, Seen, grosse Flüsse oder Kanäle</li> +<li>Nur schwimmende <strong>permanents</strong> koennen auf <strong>tiefen Wasser</strong> platziert werden</li> +</ul> +<h2 id="wasser">Wasser</h2> +<ul> +<li>Wasser das von Menschen mit Mühe durchquerbar ist</li> +<li>Schwimmende und nicht schwimmende <strong>permanents</strong> können auf <strong>Wasser</strong> platziert werden</li> +<li><strong>Units</strong> müssen ihre Bewegung auf dem ersten betretenen <strong>Wasser</strong> Feld beenden</li> +</ul> +<h2 id="flaches-wasser">Flaches Wasser</h2> +<ul> +<li>Wasser das von Menschen ohne Mühe durchquerbar ist</li> +<li>Schwimmende und nicht schwimmende <strong>permanents</strong> können auf <strong>flachem Wasser</strong> platziert werden</li> +</ul> +</body> +</html> diff --git a/html/build/rules/en/ai.html b/html/build/rules/en/ai.html new file mode 100644 index 00000000..97d7fe22 --- /dev/null +++ b/html/build/rules/en/ai.html @@ -0,0 +1,201 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> +<head> + <meta charset="utf-8" /> + <meta name="generator" content="pandoc" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>AI</title> + <style> + html { + line-height: 1.5; + font-family: Georgia, serif; + font-size: 20px; + color: #1a1a1a; + background-color: #fdfdfd; + } + body { + margin: 0 auto; + max-width: 36em; + padding-left: 50px; + padding-right: 50px; + padding-top: 50px; + padding-bottom: 50px; + hyphens: auto; + word-wrap: break-word; + text-rendering: optimizeLegibility; + font-kerning: normal; + } + @media (max-width: 600px) { + body { + font-size: 0.9em; + padding: 1em; + } + } + @media print { + body { + background-color: transparent; + color: black; + font-size: 12pt; + } + p, h2, h3 { + orphans: 3; + widows: 3; + } + h2, h3, h4 { + page-break-after: avoid; + } + } + p { + margin: 1em 0; + } + a { + color: #1a1a1a; + } + a:visited { + color: #1a1a1a; + } + img { + max-width: 100%; + } + h1, h2, h3, h4, h5, h6 { + margin-top: 1.4em; + } + h5, h6 { + font-size: 1em; + font-style: italic; + } + h6 { + font-weight: normal; + } + ol, ul { + padding-left: 1.7em; + margin-top: 1em; + } + li > ol, li > ul { + margin-top: 0; + } + blockquote { + margin: 1em 0 1em 1.7em; + padding-left: 1em; + border-left: 2px solid #e6e6e6; + color: #606060; + } + code { + font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace; + font-size: 85%; + margin: 0; + } + pre { + margin: 1em 0; + overflow: auto; + } + pre code { + padding: 0; + overflow: visible; + } + .sourceCode { + background-color: transparent; + overflow: visible; + } + hr { + background-color: #1a1a1a; + border: none; + height: 1px; + margin: 1em 0; + } + table { + margin: 1em 0; + border-collapse: collapse; + width: 100%; + overflow-x: auto; + display: block; + font-variant-numeric: lining-nums tabular-nums; + } + table caption { + margin-bottom: 0.75em; + } + tbody { + margin-top: 0.5em; + border-top: 1px solid #1a1a1a; + border-bottom: 1px solid #1a1a1a; + } + th { + border-top: 1px solid #1a1a1a; + padding: 0.25em 0.5em 0.25em 0.5em; + } + td { + padding: 0.125em 0.5em 0.25em 0.5em; + } + header { + margin-bottom: 4em; + text-align: center; + } + #TOC li { + list-style: none; + } + #TOC a:not(:hover) { + text-decoration: none; + } + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} + ul.task-list{list-style: none;} + .display.math{display: block; text-align: center; margin: 0.5rem auto;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> +</head> +<body> +<header id="title-block-header"> +<h1 class="title">AI</h1> +</header> +<h2 id="concepts">Concepts</h2> +<ul> +<li>The algorithms for the AIs should be as simple as possible</li> +<li>They must be executable by human players with normal game materials</li> +<li>They should not take much time</li> +<li>Players want to play the game not execute the AI</li> +<li>Decision making should most of the time rely on RNG</li> +<li>We do not specify how the players implement their randomness</li> +</ul> +<h2 id="units">Units</h2> +<p>To execute a units AI the players follow the introductions in the AI logic in descending order. If no further steps can be executed the unit gets tapped.</p> +<p>Any ambiguity is decided at random (multiple units in attack range, multiple most distant tiles, …). ### Aggressive 1. If enemy Unit in attack Range then attack enemy Unit in Range 2. While move action available do move towards nearest enemy unit if attack action avail then proceed at 1.</p> +<h3 id="shy">Shy</h3> +<pre><code>1. If not in the attack Range of an enemy Unit then + activate full action if available +2. If move action available then + move to most distant point from all enemy units +3. If enemy Unit in attack Range then + attack enemy Unit in Range</code></pre> +<h3 id="wandering-x">Wandering X</h3> +<pre><code>1. If enemy unit in Range X then + execute aggressive AI +2. If move action available then + move to random tile in movement Range + proceed at 1.</code></pre> +<h3 id="supportive">Supportive</h3> +<pre><code>1. Use full action if possible +2. move towards nearest allied Unit +3. If enemy Unit in attack Range + attack enemy Unit in Range</code></pre> +<h2 id="the-kraken">The Kraken</h2> +<p>Instructions for the opponent player in “The Kraken” game mode.</p> +<h3 id="turn-structure">Turn structure</h3> +<pre><code>0. (Shuffle discard pile into empty deck) +1. Get #players * 5 Resource +2. Upkeep: + 2.1 While sum of upkeep cost bigger than available resource + destroy random unit + 2.2 Pay all upkeep cost +3. Actions: + 3.1 Draw a card + 3.2 If the card is playable then + play the card + proceed at 3.1 +4. Discard the unused card</code></pre> +</body> +</html> diff --git a/html/build/rules/en/rules.html b/html/build/rules/en/rules.html new file mode 100644 index 00000000..5b2b9516 --- /dev/null +++ b/html/build/rules/en/rules.html @@ -0,0 +1,541 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> +<head> + <meta charset="utf-8" /> + <meta name="generator" content="pandoc" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>muhq’s game rules</title> + <style> + html { + line-height: 1.5; + font-family: Georgia, serif; + font-size: 20px; + color: #1a1a1a; + background-color: #fdfdfd; + } + body { + margin: 0 auto; + max-width: 36em; + padding-left: 50px; + padding-right: 50px; + padding-top: 50px; + padding-bottom: 50px; + hyphens: auto; + word-wrap: break-word; + text-rendering: optimizeLegibility; + font-kerning: normal; + } + @media (max-width: 600px) { + body { + font-size: 0.9em; + padding: 1em; + } + } + @media print { + body { + background-color: transparent; + color: black; + font-size: 12pt; + } + p, h2, h3 { + orphans: 3; + widows: 3; + } + h2, h3, h4 { + page-break-after: avoid; + } + } + p { + margin: 1em 0; + } + a { + color: #1a1a1a; + } + a:visited { + color: #1a1a1a; + } + img { + max-width: 100%; + } + h1, h2, h3, h4, h5, h6 { + margin-top: 1.4em; + } + h5, h6 { + font-size: 1em; + font-style: italic; + } + h6 { + font-weight: normal; + } + ol, ul { + padding-left: 1.7em; + margin-top: 1em; + } + li > ol, li > ul { + margin-top: 0; + } + blockquote { + margin: 1em 0 1em 1.7em; + padding-left: 1em; + border-left: 2px solid #e6e6e6; + color: #606060; + } + code { + font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace; + font-size: 85%; + margin: 0; + } + pre { + margin: 1em 0; + overflow: auto; + } + pre code { + padding: 0; + overflow: visible; + } + .sourceCode { + background-color: transparent; + overflow: visible; + } + hr { + background-color: #1a1a1a; + border: none; + height: 1px; + margin: 1em 0; + } + table { + margin: 1em 0; + border-collapse: collapse; + width: 100%; + overflow-x: auto; + display: block; + font-variant-numeric: lining-nums tabular-nums; + } + table caption { + margin-bottom: 0.75em; + } + tbody { + margin-top: 0.5em; + border-top: 1px solid #1a1a1a; + border-bottom: 1px solid #1a1a1a; + } + th { + border-top: 1px solid #1a1a1a; + padding: 0.25em 0.5em 0.25em 0.5em; + } + td { + padding: 0.125em 0.5em 0.25em 0.5em; + } + header { + margin-bottom: 4em; + text-align: center; + } + #TOC li { + list-style: none; + } + #TOC a:not(:hover) { + text-decoration: none; + } + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} + ul.task-list{list-style: none;} + .display.math{display: block; text-align: center; margin: 0.5rem auto;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> +</head> +<body> +<header id="title-block-header"> +<h1 class="title">muhq’s game rules</h1> +</header> +<nav id="TOC" role="doc-toc"> +<ul> +<li><a href="#ideas">Ideas</a></li> +<li><a href="#game-preparations">Game Preparations</a></li> +<li><a href="#draft">Draft</a></li> +<li><a href="#player-turns">Player Turns</a> +<ul> +<li><a href="#upkeep">Upkeep</a></li> +<li><a href="#actions">Actions</a> +<ul> +<li><a href="#free-actions">Free Actions</a></li> +<li><a href="#action-stack">Action-Stack</a></li> +<li><a href="#slow-actions">Slow Actions</a></li> +<li><a href="#fast-actions">Fast Actions</a></li> +</ul></li> +<li><a href="#buying">Buying</a></li> +</ul></li> +<li><a href="#deck">Deck</a></li> +<li><a href="#discard-pile">Discard Pile</a></li> +<li><a href="#store">Store</a></li> +<li><a href="#map">Map</a> +<ul> +<li><a href="#win-conditions">Win Conditions</a></li> +</ul></li> +<li><a href="#ressource">Ressource</a></li> +<li><a href="#karten">Karten</a> +<ul> +<li><a href="#zauber">Zauber</a></li> +<li><a href="#units">Units</a></li> +<li><a href="#artifacts">Artifacts</a></li> +</ul></li> +<li><a href="#range">Range</a></li> +<li><a href="#kampf">Kampf</a> +<ul> +<li><a href="#high-ground-bonus">High Ground Bonus</a></li> +</ul></li> +<li><a href="#permanents">Permanents</a> +<ul> +<li><a href="#permanent-stapel">Permanent Stapel</a></li> +<li><a href="#verfügbare-felder">Verfügbare Felder</a></li> +</ul></li> +<li><a href="#units-1">Units</a> +<ul> +<li><a href="#bewegung">Bewegung</a></li> +<li><a href="#effekte">Effekte</a> +<ul> +<li><a href="#crew-x---bemannen-x">Crew X - Bemannen X</a></li> +</ul></li> +<li><a href="#zustände">Zustände</a> +<ul> +<li><a href="#paralyse">Paralyse</a></li> +<li><a href="#gift">Gift</a></li> +</ul></li> +</ul></li> +<li><a href="#artefakte">Artefakte</a> +<ul> +<li><a href="#effekte-1">Effekte</a> +<ul> +<li><a href="#solid-x">Solid X</a></li> +</ul></li> +<li><a href="#equipments">Equipments</a></li> +</ul></li> +</ul> +</nav> +<h1 id="ideas">Ideas</h1> +<ul> +<li>Mehrere thematisch oder strategisch zusammenhängende Kartensets</li> +<li>Draft aus Subset von Blöcken (Legt Decks und Strategien fest) -> Spieler können entscheiden wie sie auf dem Spielfeld spielen wollen</li> +<li>Deckbuilding (legt Spielentwicklung fest)</li> +<li>Hand wird jede Runde aufgefüllt</li> +<li>Tabletop (Erfüllen einer Siegbedingung)</li> +<li>es gibt nur eine Ressource</li> +<li>Spielfeld stark Spielablauf und Taktik -> Wiederspielbarkeit</li> +</ul> +<h1 id="game-preparations">Game Preparations</h1> +<ul> +<li>Choose map</li> +<li>Choose card sets</li> +<li>Shuffle all selected cards</li> +<li>Draft player decks</li> +<li>Give each player the map defined starting deck</li> +<li>Each player openly lays out their drafted cards as their <strong>store</strong></li> +</ul> +<h1 id="draft">Draft</h1> +<ul> +<li>Aus allen Karten der ausgewählten Sets werden Stapel a 10 Karten ausgeteilt</li> +</ul> +<pre><code>Solange noch zwei Stapel vorhanden und erst weniger als 25 Karten pro Spieler + Jeder Spieler nimmt einen Stapel + Solange Karten im Stapel + Nimm eine Karte aus deinem Stapel und gib in an den naechsten Spieler weiter</code></pre> +<h1 id="player-turns">Player Turns</h1> +<ul> +<li>players take turns alternating</li> +<li>A turn exist of five steps: +<ul> +<li>[shuffle <strong>pile</strong> and replace empty <strong>deck</strong>]</li> +<li>[draw cards till you have three cards in hand]</li> +<li><strong>Upkeep</strong></li> +<li>actions-step</li> +<li>buying-step</li> +<li>[put any number of cards from your hand onto your pile]</li> +</ul></li> +</ul> +<h2 id="upkeep">Upkeep</h2> +<ul> +<li>Gain amount of resource defined by the map</li> +<li>Process all triggered effects</li> +<li>Pay your <strong>Units</strong>:</li> +</ul> +<pre><code>For each of your Units + Pay upkeep cost or destoy Unit</code></pre> +<h2 id="actions">Actions</h2> +<ul> +<li>Actions are everything a player can do in this game</li> +<li>Actions are processed in two steps: +<ul> +<li>By declaring an action the player announces the action, all its targets and pays any required cost</li> +<li>The execution of an action is the atomic applying of all its effect.</li> +</ul></li> +<li>Playing a card is an action</li> +<li><strong>Units</strong> can execute actions</li> +<li>Actions have different timing restriction when a player can declare them +<ul> +<li>Slow actions can only be declared during ones action phase</li> +<li>Fast actions can always be declared</li> +</ul></li> +<li>The action phase of a turn:</li> +</ul> +<pre><code>While you control an untapped card on the board or have a playable card in hand + Play a card from hand + Or select an untapped card on the board + While the selected card hat actions left + Declare/execute a available action + Or tap the card</code></pre> +<h3 id="free-actions">Free Actions</h3> +<ul> +<li><strong>Permanents</strong> can have <strong>free actions</strong></li> +<li><strong>Free actions</strong> consist of their cost and their effect (“cost: effect”)</li> +<li><strong>Free actions</strong> are fast actions and can be executed anytime</li> +<li>To declare a <strong>free action</strong> you must pay its cost</li> +</ul> +<h3 id="action-stack">Action-Stack</h3> +<ul> +<li>The processing of actions is based on batch processing</li> +<li>The last declared action is executed first</li> +<li>Each declared action is put on the action-stack before its execution</li> +<li>The last action on the stack is executed if nobody declares a new action</li> +</ul> +<h3 id="slow-actions">Slow Actions</h3> +<ul> +<li>Playing a <strong>permanent</strong> card is a slow action</li> +<li><strong>Unit</strong> actions are slow actions</li> +</ul> +<h3 id="fast-actions">Fast Actions</h3> +<ul> +<li>Playing a <strong>spell</strong> card is a fast action</li> +<li><strong>free actions</strong> are fast actions</li> +</ul> +<h2 id="buying">Buying</h2> +<ul> +<li>Card must be bought from the own <strong>store</strong></li> +<li>To buy a card the active player pays resource equal to the buy cost of the card</li> +<li>Only one card can be bought er turn</li> +<li>The bought card is put onto the <strong>discard pile</strong></li> +</ul> +<h1 id="deck">Deck</h1> +<ul> +<li>The game features dynamic <strong>Decks</strong></li> +<li>A deck starts with <em>X</em> start cards which are defined by the map</li> +<li>The deck can be changed by buying cards or effects</li> +<li>If your <strong>deck</strong> is empty shuffle your <strong>discard pile</strong> in your <strong>upkeep</strong> into your <strong>deck</strong></li> +<li>It is possible to have a permanently empty deck</li> +</ul> +<h1 id="discard-pile">Discard Pile</h1> +<ul> +<li>Each player’s <strong>discard pile</strong> is public information and can be looked at anytime</li> +<li><strong>Discard piles</strong> have no card order</li> +</ul> +<h1 id="store">Store</h1> +<ul> +<li>Each player has its own <strong>store</strong></li> +<li>When the game starts the <strong>store</strong> contains all cards of a player</li> +</ul> +<h1 id="map">Map</h1> +<ul> +<li>Defines win condition, base resource gain and the start deck</li> +<li>Is divided into tiles</li> +<li>On each tile only one <strong>permanent</strong> can be placed</li> +<li>Tiles can have a type and an effect <!-- * Kann *einzigen* (mutable) Effekt haben --></li> +</ul> +<h2 id="win-conditions">Win Conditions</h2> +<ul> +<li><em>VIP</em>: destroy special enemy <strong>Unit</strong>, like chess</li> +<li>Resource battle: wer ein Ressourcen limit erreicht gewinnt mit Möglichkeit durch <strong>Units</strong> Ressource zuklauen/-vernichten.</li> +<li><em>Capture points</em> (Wenn am ende des gegnerischen Zugs du die meisten Gebiete hälst. Gebiet gilt als von dir gehalten wenn du die mehr Zahl an <strong>Units</strong> darin kontrollierst)</li> +<li>Zerstörung von Gebäuden (moba style)</li> +<li>Stecken des Sieges, der: Ein Equipment das als Siegbedingung von einer <strong>Unit</strong> ausgerüstet sein muss</li> +</ul> +<h1 id="ressource">Ressource</h1> +<ul> +<li>Es gibt nur eine Ressource</li> +<li>Ressource kann gespart werden</li> +<li>Ressource verändert sich jede Runde</li> +<li>Abhängig von Zustand des Spielfeldes</li> +<li>Anzahl der eigenen <strong>Units</strong> auf dem Feld</li> +<li>Grundzuwachs des Spielfeldes</li> +</ul> +<h1 id="karten">Karten</h1> +<ul> +<li>Alle Karten haben: +<ul> +<li>Set</li> +<li>Namen</li> +<li>Typ</li> +<li>Kaufkosten</li> +<li>Typ spezifische Beschränkung wann sie benutzt werden können</li> +</ul></li> +<li>Zu jedem Zeitpunkt (<strong>Instant Speed</strong>) kann ein Spieler zwei Karten von seiner Hand auf den <strong>Ablagestapel</strong> legen um 1 Ressource erhalten.</li> +</ul> +<h2 id="zauber">Zauber</h2> +<ul> +<li>Einmalig</li> +<li>Nach resolve -≥ Ablage stapel</li> +<li>TODO: <strong>Instant Speed</strong></li> +<li>Siehe Zauber</li> +</ul> +<h2 id="units">Units</h2> +<ul> +<li>siehe <strong><a href="#units">Units</a></strong></li> +</ul> +<h2 id="artifacts">Artifacts</h2> +<ul> +<li>siehe <strong><a href="#artefakte">Artifakte</a></strong></li> +</ul> +<h1 id="range">Range</h1> +<ul> +<li><strong>Ranges</strong> definieren einen Bereich an Feldern</li> +<li><strong>Ranges</strong> haben einen Ursprung</li> +<li><strong>Ranges</strong> haben einen Wert X</li> +<li><strong>Ranges</strong> mit dem Wert X beinhalten alle Felder die mit X Schritten, wobei diagonale Schritte ab dem zweiten doppelt zählen, vom Ursprung erreichbar sind</li> +</ul> +<h1 id="kampf">Kampf</h1> +<ul> +<li>Wird durch Angriffs Aktion oder Ereignis initialisiert.</li> +<li>Bei Initialisierung muss der aktive Spieler festlegen welche andere <strong>Unit</strong> er angreifen möchte</li> +<li>Die angegriffene <strong>Unit</strong> muss in der <strong>Range</strong> des Angriffs der angreifenden <strong>Unit</strong> sein.</li> +<li>Beide am Kampf beteiligen <strong>Units</strong> fügen sich gegenseitig Schaden zu falls möglich</li> +<li>Schaden kann durch Effekte verändert werden</li> +<li><strong>Unit</strong> können Schaden nur in der <strong>Range</strong> ihres Angriffs zufügen +<ul> +<li>Nahkampf beschreibt Angriffe der Form: X <strong>Range</strong> 1</li> +<li>Fernkampf beschreibt Angriffe mit <strong>Range</strong> > 1</li> +</ul></li> +<li>Fernkampf hat <code>High Ground Bonus</code></li> +</ul> +<h2 id="high-ground-bonus">High Ground Bonus</h2> +<ul> +<li><ul> +<li>1 Reichweite für <strong>Units</strong> mit Fernkampf</li> +</ul></li> +</ul> +<h1 id="permanents">Permanents</h1> +<ul> +<li><strong>Permanents</strong> sind Spielelemente die exklusiv ein Feld des Spielfeldes belegen.</li> +<li>Kein <strong>Permanent</strong> kann auf dem selben Feld eines anderem <strong>Permanents</strong> platziert werden.</li> +<li><strong>Permanents</strong> bleiben solange auf dem Spielfeld bis sie zerstört oder besiegt wurden.</li> +<li>Besiegte oder zerstörte <strong>Permanents</strong> werden auf den Ablagestapel gelegt</li> +<li><strong>Permanents</strong> haben einen Besitzer und einen Eigentümer +<ul> +<li>Eigentümer eines <strong>Permanents</strong> ist derjenige aus dessen Deck die Karte des <strong>Permanents</strong></li> +<li>Besitzer ist derjenige der das <strong>Permanent</strong> kontrolliert.</li> +</ul></li> +</ul> +<h2 id="permanent-stapel">Permanent Stapel</h2> +<ul> +<li><strong>Permanents</strong> können auf anderen <strong>Permanents</strong> platziert werden.</li> +<li><strong>Permanents</strong> die auf anderen Permanent platziert werden bilden einen <strong>Stapel</strong>.</li> +<li>Das Feld eines <strong>Stapels</strong> ist das des zugrundeliegenden <strong>Permanents</strong>.</li> +<li>Wenn ein zugrundeliegenden <strong>Permanent</strong> das Spielfeld verlässt wir der <strong>Stapel</strong> auf sein Feld <strong>fallen gelassen</strong></li> +<li>Um einen <strong>Stapel</strong> <strong>fallen zu lassen</strong> führt der Spieler, der das zugrundeliegenden <strong>Permanent</strong> kontrolliert Folgendes durch:</li> +</ul> +<pre><code>Für jedes Permanent des Stapels + Lege das Permanent auf ein verfügbares Feld in Range 1. + Falls kein Feld verfügbar ist wird das Permanent zerstört.</code></pre> +<h2 id="verfügbare-felder">Verfügbare Felder</h2> +<pre><code>* Nicht von einem anderen **Permanent** besetzt +* Schwimmende **Permanents** können nur **deep water** Felder besetzen +* Nicht schwimmende **Permanents** können nur nicht **deep water** Felder besetzen</code></pre> +<h1 id="units-1">Units</h1> +<ul> +<li><strong>Units</strong> sind <strong>Permanents</strong></li> +<li>Besiegte oder zerstörte <strong>Units</strong> werden auf den <strong>Ablagestapel</strong> gelegt</li> +<li>Haben Leben, Bewegung, Angriff, Unterhalt</li> +<li>Sind besiegt wenn Leben < 0 oder Effekt sie explizit besiegt</li> +<li>Nur im eigenen Zug spielbar</li> +<li>Können auf von dem Spielfeld und Effekten bestimmten Bereichen auf verfügbare Feldern ausgespielt werden</li> +<li><strong>Units</strong> haben entweder eine Bewegung und einen Angriff oder ein Volle-Aktion pro Zug</li> +<li><strong>Units</strong> können darüber hinaus <strong>freie Aktionen</strong> haben</li> +<li>Können dauerhaften Effekt haben (z.B. Buff, Taunt, +1 Armor, …)</li> +<li>Können Zustände haben (entsprechende Marken auf Karte)</li> +<li>Haben Fern- oder Nahkampf +<ul> +<li>Fernkampf: Angriff mit <strong>Range</strong> > 1</li> +<li>Nahkampf: Angriff mit <strong>Range</strong> = 1</li> +<li><strong>Units</strong> mit Fernkampf können auch im Nahkampf kämpfen</li> +</ul></li> +<li><strong>Units</strong> können eine auf gewisse Felder beschränkte Bewegung haben +<ul> +<li><strong>Unit</strong> mit Schwimmen können nur auf <strong>deep water</strong> Feldern platziert werden</li> +</ul></li> +<li><strong>Units</strong> in einem <strong>Stapel</strong> fügen ihren Angriff dem des zugrundeliegenden <strong>Permanents</strong> hinzu +<ul> +<li>Angriffe in der selben <strong>Range</strong> werden dabei addiert</li> +<li>Beispiel: Auf einem zugrundeliegenden <strong>Permanent</strong> mit Angriff X <strong>Range</strong> R liegt ein <strong>Stapel</strong> dessen <strong>Units</strong> folgende Angriffe haben +<ul> +<li>X=1 <strong>Range</strong> R=1 + <strong>Stapel</strong> {1 <strong>Range</strong> 1} -> 2 <strong>Range</strong> 1</li> +<li>X=1 <strong>Range</strong> R=1 + <strong>Stapel</strong> {1 <strong>Range</strong> 2} -> 1 <strong>Range</strong> 2; 2 <strong>Range</strong> 1</li> +<li>X=1 <strong>Range</strong> R=2 + <strong>Stapel</strong> {1 <strong>Range</strong> 1} -> 1 <strong>Range</strong> 2; 2 <strong>Range</strong> 1</li> +<li>X=1 <strong>Range</strong> R=1 + <strong>Stapel</strong> {2 <strong>Range</strong> 1, 1 <strong>Range</strong> 1} -> 4 <strong>Range</strong> 1</li> +<li>X=1 <strong>Range</strong> R=3 + <strong>Stapel</strong> {1 <strong>Range</strong> 2, 1 <strong>Range</strong> 1} -> 1 <strong>Range</strong> 3; 2 <strong>Range</strong> 2; 3 <strong>Range</strong> 1</li> +</ul></li> +</ul></li> +</ul> +<h2 id="bewegung">Bewegung</h2> +<ul> +<li>Eine <strong>Unit</strong> kann sich innerhalb der <strong>Range</strong> die ihrer Bewegung entspricht bewegen</li> +<li>Die bewegte <strong>Unit</strong> kann so viele Schritte in dieser <strong>Range</strong> auf <strong>verfuegbare Felder</strong> ziehen wie ihre Bewegung angibt</li> +<li>Jedes zweite diagonale Feld dieser Bewegung benötigt zwei Schritte</li> +</ul> +<h2 id="effekte">Effekte</h2> +<ul> +<li>Effekte beschreiben alles was eine <strong>Unit</strong> über ihre Grundcharakteristiken (Leben, Angriff, Bewegung, Kosten) ausmacht</li> +</ul> +<h3 id="crew-x---bemannen-x">Crew X - Bemannen X</h3> +<ul> +<li>Effekt einer <strong>Unit</strong>, der ihr erlaubt von X anderen <strong>Units</strong> als Ende einer Bewegung betreten/<em>bemannt</em> zu werden.</li> +<li>Dabei bilden die <em>bemannenden</em> <strong>Units</strong> einen <strong>Stapel</strong> auf der <em>bemannten</em> <strong>Unit</strong>.</li> +<li><em>Bemannende</em> <strong>Units</strong> fügen ihren Angriff der bemannten <strong>Unit</strong> hinzu (siehe <strong>Stapel</strong>).</li> +</ul> +<h2 id="zustände">Zustände</h2> +<p>Die Zustände einer <strong>Unit</strong> werden mit entsprechenden Zustandsmarken auf der <strong>Unit</strong> Karte markiert.</p> +<h3 id="paralyse">Paralyse</h3> +<ul> +<li><strong>Units</strong> mit <strong>Paralyse</strong>-Marken sind <em>paralysiert</em>.</li> +<li><em>Paralysierte</em> <strong>Unit</strong> können keine ihrer Aktionen ausführen.</li> +<li>Eine <em>paralysierte</em> <strong>Unit</strong> kann eine beliebige Aktionen ausgeben um eine <strong>Paralyse</strong>-Marke zu entfernen.</li> +</ul> +<h3 id="gift">Gift</h3> +<ul> +<li>Eine <strong>Unit</strong> ist vergiftet wenn auf ihr ein oder mehrere <strong>Gift</strong> Marken liegen.</li> +<li>Bei Aktivierung einer vergifteten <strong>Unit</strong> wird ein weiterer <strong>Gift</strong> Marke hinzugefügt.</li> +<li>Wenn mehr <strong>Gift</strong>-Marken auf einer <strong>Unit</strong> liegen als sie leben hat wird sie besiegt.</li> +</ul> +<h1 id="artefakte">Artefakte</h1> +<ul> +<li><strong>Artefakte</strong> sind <strong>Permanents</strong></li> +<li>Zerstörte <strong>Artefakte</strong> werden auf den <strong>Ablagestapel</strong> gelegt</li> +<li><strong>Artefakte</strong> können Effekte haben</li> +<li><strong>Artefakte</strong> können <strong>freie Aktionen</strong> haben</li> +<li><strong>Artefakte</strong> können von angrenzenden <strong>Units</strong> als volle Aktion die Bewegungsrate der <strong>Unit</strong> transportiert werden. Das transportierte <strong>Artefakt</strong> wird auf ein <strong>verfügbar Feld</strong> neben der transportierenden <strong>Unit</strong> abgelegt.</li> +<li><strong>Units</strong> können statt einer Bewegung oder Angriffs mit einem angrenzenden <strong>Artefakt</strong> Felder tauschen</li> +</ul> +<h2 id="effekte-1">Effekte</h2> +<ul> +<li>Effekte beschreiben permanente Fähigkeiten ein <strong>Artefakt</strong></li> +</ul> +<h3 id="solid-x">Solid X</h3> +<ul> +<li><strong>Artefakte</strong> können den Effekt <strong>solid X</strong> haben</li> +<li>Ein <em>solides</em> <strong>Artefakt</strong> kann von gegnerischen <strong>Units</strong> weder transportiert noch mit ihm Feld getauscht werden</li> +<li>Gegnerische <strong>Units</strong> können ein <em>solides</em> <strong>Artifakt</strong> angreifen</li> +<li>Das Leben eines <em>soliden</em> <strong>Artifakts</strong> ist gleich dem durch den <em>solid</em> Effekt spezifizierten <em>X</em>-Wert.</li> +</ul> +<h2 id="equipments">Equipments</h2> +<ul> +<li><strong>Equipments</strong> sind <strong>Artefakte</strong></li> +<li><strong>Equipments</strong> haben einen <strong>Haltbarkeits</strong> Wert</li> +<li><strong>Equipments</strong> mit einer <strong>Haltbarkeit</strong> unter eins sind zerstört und werden abgelegt.</li> +<li><strong>Equipments</strong> können von <strong>Units</strong> ausgerüstet werden</li> +<li>Ein <em>ausgerüstetes</em> <strong>Equipment</strong> nimmt kein eigenes Feld ein und bildet einen <strong>Stapel</strong> auf der <em>ausgerüsteten</em> <strong>Unit</strong></li> +<li>Ein <strong>Equipment</strong> kann einzeln oder an die nächste gespielte <strong>Unit</strong> <em>ausgerüstet</em> ausgespielt werden.</li> +<li>Immer wenn der <strong>Stapel</strong> eines Equipments <em>fallen gelassen</em> wird dessen Haltbarkeit um 1 reduziert</li> +<li>Eine <strong>Unit</strong> kann statt einer Bewegung oder eines Angriffs ein <strong>Equipment</strong> in <strong>Range</strong> 1 <em>ausrüsten</em></li> +</ul> +</body> +</html> diff --git a/html/build/rules/en/tiles.html b/html/build/rules/en/tiles.html new file mode 100644 index 00000000..b5c28ddc --- /dev/null +++ b/html/build/rules/en/tiles.html @@ -0,0 +1,200 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang=""> +<head> + <meta charset="utf-8" /> + <meta name="generator" content="pandoc" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> + <title>muhq’s game common map tiles</title> + <style> + html { + line-height: 1.5; + font-family: Georgia, serif; + font-size: 20px; + color: #1a1a1a; + background-color: #fdfdfd; + } + body { + margin: 0 auto; + max-width: 36em; + padding-left: 50px; + padding-right: 50px; + padding-top: 50px; + padding-bottom: 50px; + hyphens: auto; + word-wrap: break-word; + text-rendering: optimizeLegibility; + font-kerning: normal; + } + @media (max-width: 600px) { + body { + font-size: 0.9em; + padding: 1em; + } + } + @media print { + body { + background-color: transparent; + color: black; + font-size: 12pt; + } + p, h2, h3 { + orphans: 3; + widows: 3; + } + h2, h3, h4 { + page-break-after: avoid; + } + } + p { + margin: 1em 0; + } + a { + color: #1a1a1a; + } + a:visited { + color: #1a1a1a; + } + img { + max-width: 100%; + } + h1, h2, h3, h4, h5, h6 { + margin-top: 1.4em; + } + h5, h6 { + font-size: 1em; + font-style: italic; + } + h6 { + font-weight: normal; + } + ol, ul { + padding-left: 1.7em; + margin-top: 1em; + } + li > ol, li > ul { + margin-top: 0; + } + blockquote { + margin: 1em 0 1em 1.7em; + padding-left: 1em; + border-left: 2px solid #e6e6e6; + color: #606060; + } + code { + font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace; + font-size: 85%; + margin: 0; + } + pre { + margin: 1em 0; + overflow: auto; + } + pre code { + padding: 0; + overflow: visible; + } + .sourceCode { + background-color: transparent; + overflow: visible; + } + hr { + background-color: #1a1a1a; + border: none; + height: 1px; + margin: 1em 0; + } + table { + margin: 1em 0; + border-collapse: collapse; + width: 100%; + overflow-x: auto; + display: block; + font-variant-numeric: lining-nums tabular-nums; + } + table caption { + margin-bottom: 0.75em; + } + tbody { + margin-top: 0.5em; + border-top: 1px solid #1a1a1a; + border-bottom: 1px solid #1a1a1a; + } + th { + border-top: 1px solid #1a1a1a; + padding: 0.25em 0.5em 0.25em 0.5em; + } + td { + padding: 0.125em 0.5em 0.25em 0.5em; + } + header { + margin-bottom: 4em; + text-align: center; + } + #TOC li { + list-style: none; + } + #TOC a:not(:hover) { + text-decoration: none; + } + code{white-space: pre-wrap;} + span.smallcaps{font-variant: small-caps;} + span.underline{text-decoration: underline;} + div.column{display: inline-block; vertical-align: top; width: 50%;} + div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} + ul.task-list{list-style: none;} + .display.math{display: block; text-align: center; margin: 0.5rem auto;} + </style> + <!--[if lt IE 9]> + <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> + <![endif]--> +</head> +<body> +<header id="title-block-header"> +<h1 class="title">muhq’s game common map tiles</h1> +</header> +<h1 id="common-tiles">Common tiles</h1> +<h2 id="house">House</h2> +<ul> +<li>A small structural building.</li> +<li><strong>Units</strong> on this tile can’t be attacked from ranges > 1</li> +</ul> +<h2 id="tower">Tower</h2> +<ul> +<li>A military building for area control.</li> +<li><strong>Units</strong> with attack range X > 1 have attack range X + 1</li> +</ul> +<h2 id="farm-field">Farm field</h2> +<ul> +<li>A generating resource through agriculture</li> +<li>A <strong>Farmer</strong> standing on a <strong>Farm field</strong> has full-action: gain 3 resource</li> +</ul> +<h2 id="spawns">Spawns</h2> +<ul> +<li>A tactical military location</li> +<li>Spawns are owned by a single player</li> +<li>Player can play permanents on a spawn they own</li> +</ul> +<h2 id="harbor">Harbor</h2> +<ul> +<li>A place where swimming stuff is build</li> +<li>Harbors are owned by a single player</li> +<li>Player can play swimming permanents on deep water tiles in range 1</li> +</ul> +<h2 id="street">Street</h2> +<ul> +<li>Routes for faster movement</li> +<li>A <strong>unit</strong> on a street has an additional move action which must result on a connected street in its movement range</li> +<li>Street are connected if they are adjacent</li> +</ul> +<h2 id="deep-water">Deep Water</h2> +<ul> +<li>Oceans, Lakes, big rivers or canal</li> +<li>Only <strong>unit</strong> with swimming can be placed on deep water</li> +</ul> +<h2 id="water">Water</h2> +<ul> +<li>Water that is passable by a person</li> +<li><strong>Unit</strong> must end their movement on the first water tile they enter</li> +</ul> +</body> +</html> diff --git a/html/cards.md b/html/cards.md new file mode 100644 index 00000000..ac292b48 --- /dev/null +++ b/html/cards.md @@ -0,0 +1,3 @@ +% Cards + +There are cards somewhere I promise diff --git a/html/index.md b/html/index.md index 7215c730..42ccb8ae 100644 --- a/html/index.md +++ b/html/index.md @@ -1,4 +1,8 @@ -# Muhq' Game (working title) +% Muhq' Game (working title) + +<hr> +[rules](rules.html) [card](cards.html) [maps](maps.html) +<hr> Muhq's game is a mashup of multiple game mechanics I enjoy. It is a complex strategy game involving playing cards as well a board. @@ -21,10 +25,13 @@ Relevant Mechanics are: * Deep strategic decision making, how to use all available resources on the board or in your hand * Clean and simple economy system using a single resource +## License + <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />Muhq's game if not otherwise stated is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>. ## Contribution If you have your own ideas and want to share them. You can download and manage the sources of muhq's game using [git](https://git-scm.com/). -To retrieve the sources and start hacking run `git clone https://muhq.space/muhqs-game.git`. + +To retrieve the [sources](https://muhq.space/muhqs-game.git) and start hacking run `git clone https://muhq.space/muhqs-game.git`. diff --git a/html/maps.md b/html/maps.md new file mode 100644 index 00000000..4637948e --- /dev/null +++ b/html/maps.md @@ -0,0 +1,24 @@ +%Maps + +Tile definitions can be found in the [rules](rules.html) + +## Available Maps + +### Coop + +* The Kraken [[raw](maps/the-kraken.map)] [[png](maps/the-kraken.png)] + +### 2 Players + +* Ring street [[raw](maps/2P-ring-street.map)] [[png](maps/2P-ring-street.png)] +* River king [[raw](maps/2P-river-king.map)] [[png](maps/2P-river-king.png)] + +### 3 Players + +* Ring street [[raw](maps/3P-ring-street.map)] [[png](maps/3P-ring-street.png)] + +### 4 Players + +* Islands [[raw](maps/4P-islands.map)] [[png](maps/4P-islands.png)] + +"Dolle karte die leg ich mal da hin" diff --git a/html/rules b/html/rules new file mode 120000 index 00000000..c6a39ed7 --- /dev/null +++ b/html/rules @@ -0,0 +1 @@ +../rules/
\ No newline at end of file diff --git a/html/rules.md b/html/rules.md new file mode 100644 index 00000000..75a1ca13 --- /dev/null +++ b/html/rules.md @@ -0,0 +1,7 @@ +% Muhq's Game rules + +Rules are available in german and english. + +* [Base rules](rules/en/rules.html) [[de](rules/de/rules.html)] - everything you know to play the game +* [Common tiles](rules/en/tiles.html) [[de](rules/de/tiles.html)] - all tiles used on the maps +* [AI](rules/en/ai.html) [[de](rules/de/ai.html)] - algorithms for controlling units diff --git a/rules/Makefile b/rules/Makefile deleted file mode 100644 index f5fa401e..00000000 --- a/rules/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -.PHONY: all clean - -HTML = rules.html maps.html - -all: $(HTML) - -%.html: %.md Makefile - pandoc --toc $*.md -s -o $@ - -clean: - rm $(HTML) diff --git a/rules/de/ki.md b/rules/de/ai.md index be5a0031..e4e293bc 100644 --- a/rules/de/ki.md +++ b/rules/de/ai.md @@ -1,4 +1,4 @@ -# KI +% KI ## Grundsätze diff --git a/rules/de/maps.md b/rules/de/tiles.md index dba5b98f..dba5b98f 100644 --- a/rules/de/maps.md +++ b/rules/de/tiles.md diff --git a/rules/en/ai.md b/rules/en/ai.md index 8ae75108..a00fff29 100644 --- a/rules/en/ai.md +++ b/rules/en/ai.md @@ -1,4 +1,4 @@ -# AI +% AI ## Concepts diff --git a/rules/en/rules.md b/rules/en/rules.md new file mode 100644 index 00000000..6ee0196b --- /dev/null +++ b/rules/en/rules.md @@ -0,0 +1,324 @@ +% muhq's game rules + +# Ideas + +* Mehrere thematisch oder strategisch zusammenhängende Kartensets +* Draft aus Subset von Blöcken (Legt Decks und Strategien fest) -> Spieler können entscheiden wie sie auf dem Spielfeld spielen wollen +* Deckbuilding (legt Spielentwicklung fest) +* Hand wird jede Runde aufgefüllt +* Tabletop (Erfüllen einer Siegbedingung) +* es gibt nur eine Ressource +* Spielfeld stark Spielablauf und Taktik -> Wiederspielbarkeit + +# Game Preparations + +* Choose map +* Choose card sets +* Shuffle all selected cards +* Draft player decks +* Give each player the map defined starting deck +* Each player openly lays out their drafted cards as their **store** + +# Draft + +* Aus allen Karten der ausgewählten Sets werden Stapel a 10 Karten ausgeteilt + +``` +Solange noch zwei Stapel vorhanden und erst weniger als 25 Karten pro Spieler + Jeder Spieler nimmt einen Stapel + Solange Karten im Stapel + Nimm eine Karte aus deinem Stapel und gib in an den naechsten Spieler weiter +``` + +# Player Turns + +* players take turns alternating +* A turn exist of five steps: + * [shuffle **pile** and replace empty **deck**] + * [draw cards till you have three cards in hand] + * **Upkeep** + * actions-step + * buying-step + * [put any number of cards from your hand onto your pile] + +## Upkeep + +* Gain amount of resource defined by the map +* Process all triggered effects +* Pay your **Units**: + +``` +For each of your Units + Pay upkeep cost or destoy Unit +``` + +## Actions + +* Actions are everything a player can do in this game +* Actions are processed in two steps: + * By declaring an action the player announces the action, all its targets and pays any required cost + * The execution of an action is the atomic applying of all its effect. + +* Playing a card is an action +* **Units** can execute actions +* Actions have different timing restriction when a player can declare them + * Slow actions can only be declared during ones action phase + * Fast actions can always be declared +* The action phase of a turn: + +``` +While you control an untapped card on the board or have a playable card in hand + Play a card from hand + Or select an untapped card on the board + While the selected card hat actions left + Declare/execute a available action + Or tap the card +``` + +### Free Actions + +* **Permanents** can have **free actions** +* **Free actions** consist of their cost and their effect ("cost: effect") +* **Free actions** are fast actions and can be executed anytime +* To declare a **free action** you must pay its cost + +### Action-Stack + +* The processing of actions is based on batch processing +* The last declared action is executed first +* Each declared action is put on the action-stack before its execution +* The last action on the stack is executed if nobody declares a new action + +### Slow Actions + +* Playing a **permanent** card is a slow action +* **Unit** actions are slow actions + +### Fast Actions + +* Playing a **spell** card is a fast action +* **free actions** are fast actions + +## Buying + +* Card must be bought from the own **store** +* To buy a card the active player pays resource equal to the buy cost of the card +* Only one card can be bought er turn +* The bought card is put onto the **discard pile** + +# Deck + +* The game features dynamic **Decks** +* A deck starts with *X* start cards which are defined by the map +* The deck can be changed by buying cards or effects +* If your **deck** is empty shuffle your **discard pile** in your **upkeep** into your **deck** +* It is possible to have a permanently empty deck + +# Discard Pile + +* Each player's **discard pile** is public information and can be looked at anytime +* **Discard piles** have no card order + +# Store + +* Each player has its own **store** +* When the game starts the **store** contains all cards of a player + +# Map + +* Defines win condition, base resource gain and the start deck +* Is divided into tiles +* On each tile only one **permanent** can be placed +* Tiles can have a type and an effect +<!-- * Kann *einzigen* (mutable) Effekt haben --> + +## Win Conditions + +* *VIP*: destroy special enemy **Unit**, like chess +* Resource battle: wer ein Ressourcen limit erreicht gewinnt mit Möglichkeit durch **Units** Ressource zuklauen/-vernichten. +* *Capture points* (Wenn am ende des gegnerischen Zugs du die meisten Gebiete hälst. Gebiet gilt als von dir gehalten wenn du die mehr Zahl an **Units** darin kontrollierst) +* Zerstörung von Gebäuden (moba style) +* Stecken des Sieges, der: Ein Equipment das als Siegbedingung von einer **Unit** ausgerüstet sein muss + +# Ressource + +* Es gibt nur eine Ressource +* Ressource kann gespart werden +* Ressource verändert sich jede Runde +* Abhängig von Zustand des Spielfeldes +* Anzahl der eigenen **Units** auf dem Feld +* Grundzuwachs des Spielfeldes + +# Karten + +* Alle Karten haben: + * Set + * Namen + * Typ + * Kaufkosten + * Typ spezifische Beschränkung wann sie benutzt werden können +* Zu jedem Zeitpunkt (**Instant Speed**) kann ein Spieler zwei Karten von seiner Hand auf den **Ablagestapel** legen um 1 Ressource erhalten. + +## Zauber + +* Einmalig +* Nach resolve -≥ Ablage stapel +* TODO: **Instant Speed** +* Siehe Zauber + +## Units + +* siehe **[Units](#units)** + +## Artifacts + +* siehe **[Artifakte](#artefakte)** + +# Range + +* **Ranges** definieren einen Bereich an Feldern +* **Ranges** haben einen Ursprung +* **Ranges** haben einen Wert X +* **Ranges** mit dem Wert X beinhalten alle Felder die mit X Schritten, wobei diagonale Schritte ab dem zweiten doppelt zählen, vom Ursprung erreichbar sind + +# Kampf + +* Wird durch Angriffs Aktion oder Ereignis initialisiert. +* Bei Initialisierung muss der aktive Spieler festlegen welche andere **Unit** er angreifen möchte +* Die angegriffene **Unit** muss in der **Range** des Angriffs der angreifenden **Unit** sein. +* Beide am Kampf beteiligen **Units** fügen sich gegenseitig Schaden zu falls möglich +* Schaden kann durch Effekte verändert werden +* **Unit** können Schaden nur in der **Range** ihres Angriffs zufügen + * Nahkampf beschreibt Angriffe der Form: X **Range** 1 + * Fernkampf beschreibt Angriffe mit **Range** > 1 +* Fernkampf hat `High Ground Bonus` + +## High Ground Bonus + +* + 1 Reichweite für **Units** mit Fernkampf + +# Permanents + +* **Permanents** sind Spielelemente die exklusiv ein Feld des Spielfeldes belegen. +* Kein **Permanent** kann auf dem selben Feld eines anderem **Permanents** platziert werden. +* **Permanents** bleiben solange auf dem Spielfeld bis sie zerstört oder besiegt wurden. +* Besiegte oder zerstörte **Permanents** werden auf den Ablagestapel gelegt +* **Permanents** haben einen Besitzer und einen Eigentümer + * Eigentümer eines **Permanents** ist derjenige aus dessen Deck die Karte des **Permanents** + * Besitzer ist derjenige der das **Permanent** kontrolliert. + +## Permanent Stapel + +* **Permanents** können auf anderen **Permanents** platziert werden. +* **Permanents** die auf anderen Permanent platziert werden bilden einen **Stapel**. +* Das Feld eines **Stapels** ist das des zugrundeliegenden **Permanents**. +* Wenn ein zugrundeliegenden **Permanent** das Spielfeld verlässt wir der **Stapel** auf sein Feld **fallen gelassen** +* Um einen **Stapel** **fallen zu lassen** führt der Spieler, der das zugrundeliegenden **Permanent** kontrolliert Folgendes durch: + +``` +Für jedes Permanent des Stapels + Lege das Permanent auf ein verfügbares Feld in Range 1. + Falls kein Feld verfügbar ist wird das Permanent zerstört. +``` + +## Verfügbare Felder + * Nicht von einem anderen **Permanent** besetzt + * Schwimmende **Permanents** können nur **deep water** Felder besetzen + * Nicht schwimmende **Permanents** können nur nicht **deep water** Felder besetzen + +# Units + +* **Units** sind **Permanents** +* Besiegte oder zerstörte **Units** werden auf den **Ablagestapel** gelegt +* Haben Leben, Bewegung, Angriff, Unterhalt +* Sind besiegt wenn Leben < 0 oder Effekt sie explizit besiegt +* Nur im eigenen Zug spielbar +* Können auf von dem Spielfeld und Effekten bestimmten Bereichen auf verfügbare Feldern ausgespielt werden +* **Units** haben entweder eine Bewegung und einen Angriff oder ein Volle-Aktion pro Zug +* **Units** können darüber hinaus **freie Aktionen** haben +* Können dauerhaften Effekt haben (z.B. Buff, Taunt, +1 Armor, ...) +* Können Zustände haben (entsprechende Marken auf Karte) +* Haben Fern- oder Nahkampf + * Fernkampf: Angriff mit **Range** > 1 + * Nahkampf: Angriff mit **Range** = 1 + * **Units** mit Fernkampf können auch im Nahkampf kämpfen +* **Units** können eine auf gewisse Felder beschränkte Bewegung haben + * **Unit** mit Schwimmen können nur auf **deep water** Feldern platziert werden +* **Units** in einem **Stapel** fügen ihren Angriff dem des zugrundeliegenden **Permanents** hinzu + * Angriffe in der selben **Range** werden dabei addiert + * Beispiel: Auf einem zugrundeliegenden **Permanent** mit Angriff X **Range** R liegt ein **Stapel** dessen **Units** folgende Angriffe haben + * X=1 **Range** R=1 + **Stapel** {1 **Range** 1} -> 2 **Range** 1 + * X=1 **Range** R=1 + **Stapel** {1 **Range** 2} -> 1 **Range** 2; 2 **Range** 1 + * X=1 **Range** R=2 + **Stapel** {1 **Range** 1} -> 1 **Range** 2; 2 **Range** 1 + * X=1 **Range** R=1 + **Stapel** {2 **Range** 1, 1 **Range** 1} -> 4 **Range** 1 + * X=1 **Range** R=3 + **Stapel** {1 **Range** 2, 1 **Range** 1} -> 1 **Range** 3; 2 **Range** 2; 3 **Range** 1 + + +## Bewegung + +* Eine **Unit** kann sich innerhalb der **Range** die ihrer Bewegung entspricht bewegen +* Die bewegte **Unit** kann so viele Schritte in dieser **Range** auf **verfuegbare Felder** ziehen wie ihre Bewegung angibt +* Jedes zweite diagonale Feld dieser Bewegung benötigt zwei Schritte + +## Effekte + +* Effekte beschreiben alles was eine **Unit** über ihre Grundcharakteristiken (Leben, Angriff, Bewegung, Kosten) ausmacht + +### Crew X - Bemannen X + +* Effekt einer **Unit**, der ihr erlaubt von X anderen **Units** als Ende einer Bewegung betreten/*bemannt* zu werden. +* Dabei bilden die *bemannenden* **Units** einen **Stapel** auf der *bemannten* **Unit**. +* *Bemannende* **Units** fügen ihren Angriff der bemannten **Unit** hinzu (siehe **Stapel**). + +## Zustände + +Die Zustände einer **Unit** werden mit entsprechenden Zustandsmarken auf der **Unit** Karte markiert. + +### Paralyse + +* **Units** mit **Paralyse**-Marken sind *paralysiert*. +* *Paralysierte* **Unit** können keine ihrer Aktionen ausführen. +* Eine *paralysierte* **Unit** kann eine beliebige Aktionen ausgeben um eine **Paralyse**-Marke zu entfernen. + +### Gift + +* Eine **Unit** ist vergiftet wenn auf ihr ein oder mehrere **Gift** Marken liegen. +* Bei Aktivierung einer vergifteten **Unit** wird ein weiterer **Gift** Marke hinzugefügt. +* Wenn mehr **Gift**-Marken auf einer **Unit** liegen als sie leben hat wird sie besiegt. + + + + +# Artefakte + +* **Artefakte** sind **Permanents** +* Zerstörte **Artefakte** werden auf den **Ablagestapel** gelegt +* **Artefakte** können Effekte haben +* **Artefakte** können **freie Aktionen** haben +* **Artefakte** können von angrenzenden **Units** als volle Aktion die Bewegungsrate der **Unit** transportiert werden. Das transportierte **Artefakt** wird auf ein **verfügbar Feld** neben der transportierenden **Unit** abgelegt. +* **Units** können statt einer Bewegung oder Angriffs mit einem angrenzenden **Artefakt** Felder tauschen + +## Effekte + +* Effekte beschreiben permanente Fähigkeiten ein **Artefakt** + +### Solid X + +* **Artefakte** können den Effekt **solid X** haben +* Ein *solides* **Artefakt** kann von gegnerischen **Units** weder transportiert noch mit ihm Feld getauscht werden +* Gegnerische **Units** können ein *solides* **Artifakt** angreifen +* Das Leben eines *soliden* **Artifakts** ist gleich dem durch den *solid* Effekt spezifizierten *X*-Wert. + + + + +## Equipments + +* **Equipments** sind **Artefakte** +* **Equipments** haben einen **Haltbarkeits** Wert +* **Equipments** mit einer **Haltbarkeit** unter eins sind zerstört und werden abgelegt. +* **Equipments** können von **Units** ausgerüstet werden +* Ein *ausgerüstetes* **Equipment** nimmt kein eigenes Feld ein und bildet einen **Stapel** auf der *ausgerüsteten* **Unit** +* Ein **Equipment** kann einzeln oder an die nächste gespielte **Unit** *ausgerüstet* ausgespielt werden. +* Immer wenn der **Stapel** eines Equipments *fallen gelassen* wird dessen Haltbarkeit um 1 reduziert +* Eine **Unit** kann statt einer Bewegung oder eines Angriffs ein **Equipment** in **Range** 1 *ausrüsten* diff --git a/rules/en/maps.md b/rules/en/tiles.md index 5cda9e73..5cda9e73 100644 --- a/rules/en/maps.md +++ b/rules/en/tiles.md |
