scroll.server/crates/logic/src
WiseDev 6c5295bc07 fix the LogicGameObject field mapping
the base object writes owner index, component mask, position and z, in
that order. we had the first field unnamed and were writing the owner
into the z slot, so every object belonged to player 0, and the mask slot
carried a zero.

the mask matters: getHitpointComponent tests bit 2 of it before touching
components[2], so a zero mask made every tower report no hitpoints,
LogicCharacter::isAlive fell through to the z field, shouldDestruct went
true and the towers were destroyed on the first tick - which then hit
"cant find summoner tower" in LogicBattle::removeGameObjectReferences.

entries are built through LogicGameObjectEntry::new now so the mask is
derived from the component array and cannot drift from it.

also rename the first character flag after what sets it: kamikaze
death and morph both raise it right before the object is removed.
2026-08-23 11:17:10 +03:00
..
battle fix the LogicGameObject field mapping 2026-08-23 11:17:10 +03:00
commands matchmake against a bot instead of searching forever 2026-08-23 10:28:28 +03:00
data unwind panics instead of aborting the process 2026-08-23 09:42:44 +03:00
home battle model: LogicBattle, the object manager and BattleResultMessage 2026-08-23 10:00:16 +03:00
messages write the compression flag byte in SectorStateMessage 2026-08-23 11:09:27 +03:00
model deck swapping and achievement claims 2026-08-23 09:24:30 +03:00
factory.rs move all crates into crates/, glob members 2026-08-23 08:15:45 +03:00
lib.rs battle model: LogicBattle, the object manager and BattleResultMessage 2026-08-23 10:00:16 +03:00
logic_random.rs battle model: LogicBattle, the object manager and BattleResultMessage 2026-08-23 10:00:16 +03:00