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>
/*
|--------------------------------------------------------------------------
| FIX List
|--------------------------------------------------------------------------
|
| 1. Hero Attribute Points
| - When adding attribute points to the hero, the page currently refreshes
| after every click on the "+" button.
| - Implement a faster allocation method (AJAX or similar) so multiple
| points can be assigned without a full page refresh.
| - The implementation must remain secure and not be exploitable
| (validate requests server-side, prevent double submissions,
| verify available points, etc.).
|
| 2. Hero Equipment Restrictions (Original Travian Behavior)
| - Prevent equipping or unequipping hero items while the hero is:
| • On an adventure.
| • Attacking (alone or with troops).
| • Away as reinforcements.
|
| 3. Oasis Navigation
| - When opening an oasis (37_land.tpl), the 37_t4nav.tpl navigation
| disappears.
| - Include the navigation menu on the oasis page as well.
|
| 4. Auction House Redesign
| - Redesign 37_auction.tpl to match the Merchant.png mockup.
| - Keep the existing auction functionality exactly as it is.
| - Only improve the UI/UX.
| - You may crop and reuse graphics from Merchant.png.
| - Add Gold ⇄ Silver exchange functionality.
|
| 5. Hero Item Bonuses (Highest Priority)
| - Verify that hero equipment bonuses are applied correctly.
| - Example:
| • Helmet of the Ruler should reduce Barracks training time by 20%.
| • Currently, training time remains unchanged whether the helmet
| is equipped or not.
| - Also verify:
| • Stable training speed bonuses.
| • Boots bonuses.
| • Any other related hero equipment effects.
|
| 6. Adventures Page Redesign
| - Redesign 37_adventures.tpl to match the Adventure.png mockup.
| - Keep the "Expires in" column intact.
|
*/