aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2022-04-02 15:07:30 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2022-04-02 15:07:30 +0200
commit3811396cd26e473e13abebb5d66b07b171541d33 (patch)
treeffa3e80040bbe93e4ed36b2ea5c966dac9f522b2
parent9bd116478b953edaa7e3e372b70b4175700e26fd (diff)
downloadmuhqs-game-3811396cd26e473e13abebb5d66b07b171541d33.tar.gz
muhqs-game-3811396cd26e473e13abebb5d66b07b171541d33.zip
add push mechanic
The push mechanic is heavily inspired by `Into the Breach`. Pushing a permanent moves it involuntarily in a straight line. On collisions units receive damage and permenents pushed onto free but unavailable tiles are destroyed.
-rw-r--r--data/cards/exp1/charger.yml15
-rw-r--r--data/cards/exp1/ramm.yml8
-rw-r--r--latex/cards/de/exp1/charger.tex14
-rw-r--r--latex/cards/de/exp1/ramm.tex2
-rw-r--r--latex/cards/en/exp1/charger.tex14
-rw-r--r--latex/cards/en/exp1/ramm.tex2
-rw-r--r--latex/sets/de/exp1.tex1
-rw-r--r--latex/sets/en/exp1.tex1
-rw-r--r--rules/de/rules.md22
-rw-r--r--rules/en/rules.md27
10 files changed, 94 insertions, 12 deletions
diff --git a/data/cards/exp1/charger.yml b/data/cards/exp1/charger.yml
new file mode 100644
index 00000000..2d3039b2
--- /dev/null
+++ b/data/cards/exp1/charger.yml
@@ -0,0 +1,15 @@
+type: unit
+name:
+ en: Charger
+ de: Schlachtross
+attack: 1
+health: 2
+movement: 3
+buy: 8
+upkeep: 1
+effect:
+ en: Crew 1
+ de: Bemannen 1
+full_action:
+ en: "Move next to and attack target unit in straight line. Charger gains push during the fight"
+ de: "Bewege Schlachtross vor eine Ziel-Unit in gerader Linie und greife sie an. Schlachtross hat Schieben während des Kampfes"
diff --git a/data/cards/exp1/ramm.yml b/data/cards/exp1/ramm.yml
index 98f52ba8..122bcd9d 100644
--- a/data/cards/exp1/ramm.yml
+++ b/data/cards/exp1/ramm.yml
@@ -7,8 +7,12 @@ movement: 1
buy: 7
upkeep: 1
effect:
- en: Crew 3
- de: Bemannen 3
+ en:
+ - Crew 3
+ - Push
+ de:
+ - Bemannen 3
+ - Schieben
full_action:
en: Neutralize one tile or destroy one artifact in Range 1
de: Neutraliziere ein Feld oder zerstöre ein Artifakt in Range 1
diff --git a/latex/cards/de/exp1/charger.tex b/latex/cards/de/exp1/charger.tex
new file mode 100644
index 00000000..f8d0dcfd
--- /dev/null
+++ b/latex/cards/de/exp1/charger.tex
@@ -0,0 +1,14 @@
+\documentclass{standalone}
+\usepackage[ngerman]{babel}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Schlachtross}
+\cardbuycost{8}
+\cardsplitcontent{Leben: 2\\Bewegung: 3\\Angriff: 1}{Bemannen 1\\ \vspace{0.2cm} \faRedo: Bewege Schlachtross vor eine Ziel-Unit in gerader Linie und greife sie an. Schlachtross hat Schieben während des Kampfes}
+\cardplaycost{1}
+\cardmodule{exp1}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/de/exp1/ramm.tex b/latex/cards/de/exp1/ramm.tex
index a4236e91..adcd1913 100644
--- a/latex/cards/de/exp1/ramm.tex
+++ b/latex/cards/de/exp1/ramm.tex
@@ -6,7 +6,7 @@
\begin{tikzpicture}
\cardtypeUnit{Ramme}
\cardbuycost{7}
-\cardsplitcontent{Leben: 3\\Bewegung: 1}{Bemannen 3\\ \vspace{0.2cm} \faRedo: Neutraliziere ein Feld oder zerstöre ein Artifakt in Range 1}
+\cardsplitcontent{Leben: 3\\Bewegung: 1}{Bemannen 3\\ Schieben\\ \vspace{0.2cm} \faRedo: Neutraliziere ein Feld oder zerstöre ein Artifakt in Range 1}
\cardplaycost{1}
\cardmodule{exp1}
\cardborder
diff --git a/latex/cards/en/exp1/charger.tex b/latex/cards/en/exp1/charger.tex
new file mode 100644
index 00000000..49d0f2ac
--- /dev/null
+++ b/latex/cards/en/exp1/charger.tex
@@ -0,0 +1,14 @@
+\documentclass{standalone}
+\usepackage[english]{babel}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Charger}
+\cardbuycost{8}
+\cardsplitcontent{Health: 2\\Movement: 3\\Attack: 1}{Crew 1\\ \vspace{0.2cm} \faRedo: Move next to and attack target unit in straight line. Charger gains push during the fight}
+\cardplaycost{1}
+\cardmodule{exp1}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/en/exp1/ramm.tex b/latex/cards/en/exp1/ramm.tex
index 8b36aa35..976f16f1 100644
--- a/latex/cards/en/exp1/ramm.tex
+++ b/latex/cards/en/exp1/ramm.tex
@@ -6,7 +6,7 @@
\begin{tikzpicture}
\cardtypeUnit{Ramm}
\cardbuycost{7}
-\cardsplitcontent{Health: 3\\Movement: 1}{Crew 3\\ \vspace{0.2cm} \faRedo: Neutralize one tile or destroy one artifact in Range 1}
+\cardsplitcontent{Health: 3\\Movement: 1}{Crew 3\\ Push\\ \vspace{0.2cm} \faRedo: Neutralize one tile or destroy one artifact in Range 1}
\cardplaycost{1}
\cardmodule{exp1}
\cardborder
diff --git a/latex/sets/de/exp1.tex b/latex/sets/de/exp1.tex
index 133549fd..a9e69e69 100644
--- a/latex/sets/de/exp1.tex
+++ b/latex/sets/de/exp1.tex
@@ -12,6 +12,7 @@
\includestandalone{cards/de/exp1/backup!}
\includestandalone{cards/de/exp1/berserker}
\includestandalone{cards/de/exp1/call_for_expertise!}
+\includestandalone{cards/de/exp1/charger}
\includestandalone{cards/de/exp1/chariot}
\includestandalone{cards/de/exp1/conscription!}
\includestandalone{cards/de/exp1/depression_monument}
diff --git a/latex/sets/en/exp1.tex b/latex/sets/en/exp1.tex
index ff3cd1fc..8d296b3f 100644
--- a/latex/sets/en/exp1.tex
+++ b/latex/sets/en/exp1.tex
@@ -12,6 +12,7 @@
\includestandalone{cards/en/exp1/backup!}
\includestandalone{cards/en/exp1/berserker}
\includestandalone{cards/en/exp1/call_for_expertise!}
+\includestandalone{cards/en/exp1/charger}
\includestandalone{cards/en/exp1/chariot}
\includestandalone{cards/en/exp1/conscription!}
\includestandalone{cards/en/exp1/depression_monument}
diff --git a/rules/de/rules.md b/rules/de/rules.md
index 3df76ff6..774f6dce 100644
--- a/rules/de/rules.md
+++ b/rules/de/rules.md
@@ -230,11 +230,15 @@ Solange kontrollierte ungetappte Karte auf dem Spielfeld oder spielbare Karte in
* **Ranges** definieren einen Bereich an **Feldern**.
* **Ranges** haben einen Ursprung.
* **Ranges** haben einen Radius r.
-* **Ranges** mit dem Radius r beinhalten alle **Felder** die mit r Schritten, wobei jeder zweite diagonale Schritte doppelt zählen, vom Ursprung erreichbar sind.
+* **Ranges** mit dem Radius `r` beinhalten alle **Felder** die mit `r` **Schritten**, wobei jeder zweite diagonale **Schritt** doppelt zählen, vom Ursprung erreichbar sind.
* Mathematisch ausgedrückt ein Feld (x, y), wobei x und y relativ zum Ursprung (0, 0) der Range angegeben werden, liegt in **Range** r genau dann wenn $$x > y$$ und
$$abs(x) + floor(abs(y) / 2)$$ sonst $$abs(y) + floor(abs(x) / 2)$$.
* *Angrenzend* ist eine verwendete Abkürzung für "in **Range** 1"
+# Schritt
+
+* Ein **Schritt** bezecihnet das platzieren eines **Permanents** von seinem aktuellem **Feld** auf ein *angrenzendes*.
+
# Permanents
* **Permanents** sind Spielelemente die exklusiv ein Feld des Spielfeldes belegen.
@@ -323,8 +327,8 @@ Für jedes Permanent des Stapels
## 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
+* 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**
## Unit Effekte
@@ -373,6 +377,18 @@ Für jedes Permanent des Stapels
* Wenn eine *geschuetzte* **Unit** Schaden erleidet verhindere diesen Schaden und entferne so viele **Schutz** Marken von ihr.
* Der einer *geschützten* **Unit** zugefügte Schaden wir immer vollständig verhindert egal wie viele *Schutz* Marken auf ihr liegen.
+# Schieben [X]
+
+* `X=1` kann weggelassen werden
+* **Schieben** bezeichnet das unfreiwillige bewegen eins **Permanent** um `X` **Schritte** in gerader Linie
+* **Permanents** können als Effekt einer **Aktion** oder eines **Kampfes** *geschoben* werden
+* Das *Schieben* eines **Permanents** benötigt immer ein **Feld** von dem das **Schieben** ausgeht
+ * Wenn eine **Unit** ein **Permanent** schiebt geht das **Schieben** von dem aktuellen **Feld** der *schiebenden* **Unit** aus
+* Jeder *geschobene* **Schritt** muss auf der selben Linie liegen wie das ausgehende und das aktuelle **Feld**
+* Falls ein **Permenent** auf ein nicht **freies Feld** *geschoben* würde endet das **Schieben**
+ * Einer **Unit**, die auf diese Art kollidiert, wird von dem anderen **Permanent** 1 **Schadeb** zugefügt
+* Falls ein **Permenent** auf ein **freies** aber nicht **verfuegbares Feld** *geschoben* würde zerstöre es
+
# Kampf
* Wird durch **Angriffs Aktion** oder einen Effekt initialisiert.
diff --git a/rules/en/rules.md b/rules/en/rules.md
index 150435a1..feb752a7 100644
--- a/rules/en/rules.md
+++ b/rules/en/rules.md
@@ -222,11 +222,15 @@ While you control an untapped card on the board or have a playable card in hand
* **Ranges** define a sphere of **tiles**
* **Ranges** have a origin
-* **Ranges** have a radius r
-* **Ranges** with the radius r include all **tiles** which are reachable with r steps from the origin, counting each second diagonal step twice
+* **Ranges** have a radius `r`
+* **Ranges** with the radius `r` include all **tiles** which are reachable with `r` **steps** from the origin, counting each second diagonal **step** twice
* More precisely: a **tile** (x, y), where x and y are relative to the its origin (0, 0), is in the **range** r iff $$x > y$$ and $$abs(x) + floor(abs(y) / 2)$$ else $$abs(y) + floor(abs(x) / 2)$$.
* *Adjacent* is a common Abbreviation for "in **range** 1"
+## Step
+
+* A **step** is performed by placing a **permanent** from its current **tile** onto an *adjacent*
+
# Permanents
* **Permanents** are game pieces which exclusively occupy one **tile** on the map
@@ -312,9 +316,10 @@ For each permanent in the pile
## Movement
-* A **unit** can move within the **range** specified by its **movement**
-* The *moved* **Unit** can make as many steps in its **movement range** as its **movement**
-* Each second diagonal step counts twice
+* A **unit** can be *moved* by using its **move action**
+* A **unit** can *move* within the **range** specified by its **movement**
+* The *moved* **Unit** can make at most m **steps** where m is equal to its **movement**
+* Each second diagonal **step** counts twice
## Effects Of Units
@@ -359,6 +364,18 @@ Additional States a **Unit** is in are represented by putting appropriate State
* When a *warded* **Unit** is dealt damage prevent that damage and remove that much **Ward** marks from it.
* Damage is always prevented completely independent how many **Ward** marks are on the *warded* **Unit**
+# Push [X]
+
+* `X` can be neglected if it is 1
+* To *push* a **permanent** *move* it `X` **steps** in a straight line
+* **Permanents** may be *pushed* as effect of an **action** or **combat**
+* *Pushing* a **permanent** always requires a **tile** where the **push** originates
+ * When a **unit** *pushes* a **permanent** the originating **tile** is the current **tile** of the *pushing* **unit**
+* Each step must be in a straight line determined by the originating **tile** and the current **tile**
+* If a **permenent** would be *pushed* onto a *not free* **tile** it is not *pushed* further
+ * A **Unit** colliding in this way is dealt 1 **damage** by the other **permenent**
+* If a **permenent** would be *pushed* onto a *free* but not *available* **tile** destroy the **permanent**
+
# Combat
* Is initialized with an **Unit's** **attack action** or an effect