scroll.server/crates/game-service
WiseDev 14786cbc92 never take a leader off the board
the client crashed in LogicBattle::resetSimulatedManaTimers again, and
this time it was ours: remove_dead was dropping a king tower once it
fell, while battle.leaders still pointed at it. that function reads both
leaders straight out of the battle and calls a virtual on each without a
null check, so the next state to arrive killed the client.

the client's own rule is one line:

  LogicCharacter::shouldDestruct() { if (this[209]) return 0; ... }

isLeader, never destructs. remove_dead now keeps them the same way, and
the harness watches every tick of a full match for a leader that has
gone missing - it caught this one at tick 693.
2026-08-23 17:37:02 +03:00
..
src stop a crowd shoving troops out of the arena 2026-08-23 17:29:40 +03:00
tests never take a leader off the board 2026-08-23 17:37:02 +03:00
Cargo.toml move players and accounts into postgres 2026-08-23 08:40:13 +03:00