Der Dungeon hat jetzt Gegner, und man kann sterben.
- game/action.rs: sieben Schadenstypen, fuenf der zehn Aktionen, Target
- game/condition.rs: Bedingungsgrammatik (Liste = UND, not je Eintrag)
- game/event.rs: zwoelf Events, Trigger als vierte Wirkungsform
- game/combat.rs: Treffer- und Schadensformel mit drei Klemmbereichen
- Game::apply, drain_events (FIFO), Initiative, Rundenablauf aus Ticket 14
- data/: abilities-, creatures- und modifiers-Registry, [balance] feldweise
- ui/: Combat-Screen mit Faehigkeitsmenue und Sperrgrund
Drei Befunde:
- Die Trefferformel war toter Code — jeder Angriff traf. Nur der Compiler
hat es gemeldet ('hit_chance is never used'). Test haelt sie am Leben.
- Die Warteschlange war ein Stack (pop statt pop_front), obwohl Ticket 08
ausdruecklich 'haengt es hinten an' sagt. Jetzt VecDeque.
- Benannte Modifikatoren (core:poisoned) hatten keine Registry — Ticket 01
laesst apply_modifier per ID referenzieren, aber keine der zwoelf
definierte sie. Das ist die dreizehnte.
43 Tests.
59 lines
2.0 KiB
TOML
59 lines
2.0 KiB
TOML
# Etagen sind Registry-Eintraege (Ticket 10). Ausgewaehlt wird durchgehend
|
|
# ueber TAGS, nie ueber IDs — sonst kann ein Mod keinen eigenen Eingangsraum
|
|
# beisteuern, ohne die ganze Tabelle zu ueberschreiben.
|
|
#
|
|
# `core:merchant` steht unter `required`, nicht unter `prefabs`: Ticket 07 hat
|
|
# Backtracking ausgeschlossen, der Haendler muss also garantiert auftauchen.
|
|
#
|
|
# Es gibt keine Zahl "5" im Code — findet die Engine keine Etage mit der
|
|
# naechsten Nummer, ist der Lauf gewonnen.
|
|
|
|
[[floors]]
|
|
id = "floor_1"
|
|
number = 1
|
|
size = [72, 34]
|
|
rooms = 7
|
|
required = ["core:entrance", "core:stairs", "core:merchant"]
|
|
prefabs = [ { tag = "core:normal", weight = 10 } ]
|
|
creatures = [ { id = "core:rat", weight = 10 } ]
|
|
|
|
[[floors]]
|
|
id = "floor_2"
|
|
number = 2
|
|
size = [72, 34]
|
|
rooms = 8
|
|
required = ["core:entrance", "core:stairs", "core:merchant"]
|
|
prefabs = [ { tag = "core:normal", weight = 10 },
|
|
{ tag = "core:treasure", weight = 2 } ]
|
|
creatures = [ { id = "core:rat", weight = 6 }, { id = "core:skeleton", weight = 6 } ]
|
|
|
|
[[floors]]
|
|
id = "floor_3"
|
|
number = 3
|
|
size = [80, 38]
|
|
rooms = 9
|
|
required = ["core:entrance", "core:stairs", "core:merchant"]
|
|
prefabs = [ { tag = "core:normal", weight = 10 },
|
|
{ tag = "core:treasure", weight = 3 } ]
|
|
creatures = [ { id = "core:rat", weight = 3 }, { id = "core:skeleton", weight = 8 }, { id = "core:ghoul", weight = 3 } ]
|
|
|
|
[[floors]]
|
|
id = "floor_4"
|
|
number = 4
|
|
size = [80, 38]
|
|
rooms = 10
|
|
required = ["core:entrance", "core:stairs", "core:merchant"]
|
|
prefabs = [ { tag = "core:normal", weight = 10 },
|
|
{ tag = "core:treasure", weight = 3 } ]
|
|
creatures = [ { id = "core:skeleton", weight = 6 }, { id = "core:ghoul", weight = 8 } ]
|
|
|
|
[[floors]]
|
|
id = "floor_5"
|
|
number = 5
|
|
size = [88, 40]
|
|
rooms = 11
|
|
required = ["core:entrance", "core:stairs", "core:merchant"]
|
|
prefabs = [ { tag = "core:normal", weight = 10 },
|
|
{ tag = "core:treasure", weight = 4 } ]
|
|
creatures = [ { id = "core:ghoul", weight = 8 }, { id = "core:bone_lord", weight = 2 } ]
|