fix(kampf): Gegner bekommen endlich ihre Werte

Gemeldet als "Ratten vergiften zu 100 %". Dahinter lagen drei Fehler:

1. Creature::from_def parste Attributnamen mit toml::from_str, das eine
   ganze TOML-Datei erwartet. Der Aufruf schlug fuer jeden Namen fehl,
   der Zweig hiess Err(_) => continue — jeder Gegner hatte seit M3 still
   die Standardwerte. Die Riesenratte: 100 Leben statt 14, der
   Knochenfuerst war eine grosse Ratte. Kampf gegen den ersten Gegner:
   22 Zuege statt 4.
2. attack_hit feuerte bei allen Traegern statt nur beim Angreifer, also
   vergiftete die Ratte auch bei eigenen Treffern. EventKind::
   bound_to_source benennt die zwei seitengebundenen Ereignisse.
3. Action::Damage wuerfelte die Trefferformel auch bei Selbstschaden —
   ein flinker Held wich seinem eigenen Gift aus.

Dazu ein Datenfehler: Das Gift stand in der Aktionsliste von rat_bite,
und Aktionen haben kein chance. Es haengt jetzt am Trigger mit 25 %.

Drei Regressionstests, darunter der, den es seit M3 haette geben muessen:
ein Gegner bekommt die Werte aus seiner Definition.
This commit is contained in:
2026-08-13 08:33:32 +02:00
parent a8fea8b526
commit e145d5d2df
7 changed files with 190 additions and 4 deletions

View File

@@ -39,8 +39,7 @@ actions = [ { action = "damage", amount = 6, damage_type = "blunt", target =
id = "rat_bite"
name = "Biss"
cost = 0
actions = [ { action = "damage", scale = 1.0, damage_type = "slash", target = "target" },
{ action = "apply_modifier", modifier = "core:poisoned", target = "target" } ]
actions = [ { action = "damage", scale = 1.0, damage_type = "slash", target = "target" } ]
[[abilities]]
id = "ghoul_claw"