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.
|
||
|---|---|---|
| .. | ||
| auth-service | ||
| game-service | ||
| gateway | ||
| logic | ||
| logic-derive | ||
| scroll-server | ||
| service-rpc | ||
| storage | ||
| titan | ||
| titan-derive | ||