Files
TravianZ/Templates
Ferywir 91a980fa3d fix(combat): keep the hero casualty when rams force a battle recalculation [#372] (#373)
When rams change the wall level, applyRamDamage() replays the whole battle
through calculateBattle(). That helper WRITES to the hero table, so the replay
applied the hero damage a second time: applyHeroBattleDamage() only looks up
heroes with dead = 0, so the hero who had just died on the first pass was no
longer found, the call returned null and casualties_attacker[11] was never set.

Consequences, all visible in the screenshots of the issue: the report showed the
hero alive and "gained XP" instead of "died", modifyAttack3() never decremented
t11, and returnunitsComplete() added the hero back to units.hero - a hero dead in
the hero table but still displayed in dorf1 and in the rally point. Defender
heroes were also charged their health damage twice.

calculateBattle() now takes an optional $previousHeroOutcome: when the caller
hands over the first pass result, the hero damage is not applied again and the
first verdict (attacker / defender / reinforcement heroes) is carried over.

Also:
- drop the temporary [TravianZ][EROU] error_log() debug traces;
- 37_revive.tpl: only render a revive row for a hero that is actually dead
  (the revive action itself was already gated on dead = 1).

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Catalin Novgorodschi <cata7007@gmail.com>
2026-08-09 20:20:37 +03:00
..
2026-08-05 09:57:35 +03:00
2026-08-05 10:30:33 +03:00
2026-08-05 12:03:09 +03:00
2026-08-05 13:51:47 +03:00
2026-08-05 14:07:25 +03:00
2026-08-04 09:50:03 +03:00
2026-07-17 07:53:59 +03:00
2026-08-04 07:54:47 +03:00
2026-07-24 11:21:22 +03:00
2026-05-07 11:20:05 +03:00
2026-07-03 14:15:19 +03:00
2026-05-07 11:20:05 +03:00
2026-07-24 08:34:50 +03:00
2026-05-07 11:20:05 +03:00
2026-08-03 09:27:12 +03:00
2026-05-08 13:06:53 +03:00
2026-08-05 14:14:10 +03:00