feat: m3 kampf, events und trigger
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.
This commit is contained in:
20
mods/core/balance.toml
Normal file
20
mods/core/balance.toml
Normal file
@@ -0,0 +1,20 @@
|
||||
# Die Stellknoepfe aus Ticket 14 und 16.
|
||||
#
|
||||
# `[balance]` ist KEINE Registry: ein einzelner Block mit festem Schema, der
|
||||
# FELDWEISE verschmilzt statt als ganzer Eintrag ersetzt zu werden — die
|
||||
# ausdrueckliche Ausnahme zur Ganz-oder-gar-nicht-Regel aus Ticket 03.
|
||||
#
|
||||
# Die Begruendung bleibt eng: Das Schema ist der Engine bekannt. Genau das
|
||||
# fehlte bei Inhalt mit offenen Feldern, und das war Ticket 03s Argument gegen
|
||||
# feldweises Patchen.
|
||||
#
|
||||
# Ein Mod, der einen Knopf dreht, schreibt EINE Zeile. Standardwerte liegen in
|
||||
# der Engine — was hier fehlt, gilt trotzdem.
|
||||
|
||||
[balance]
|
||||
ausweich = 0.02 # wie stark dexterity des Ziels die Trefferchance senkt
|
||||
flucht = 0.05 # wie stark der Geschicklichkeitsunterschied die Flucht traegt
|
||||
stamina_regen = 4.0 # pro Zug — gibt `warten` seinen Zweck
|
||||
resistance_cap = 0.8 # 1.0 waere Immunitaet, und das ist ein Spielabbruch
|
||||
hit_floor = 0.05
|
||||
hit_ceiling = 0.95
|
||||
Reference in New Issue
Block a user