log the data reference, and what frida found

hooked the client and read its own memory rather than guessing again.
what it settles:

the listener is installed, addGameObject runs, Character::Character
completes, and both sprites reach the render system at layers 9 and 11.
no Debugger::error, no warning. models are built. and the references we
send are right - asked the client's own tables and got (34,0) Knight,
(34,9) Barbarian, (35,0) KingTower, (35,1) PrincessTower.

then the object dump gave it away. the arena is 33000 tall and the king
towers sit at y=3000 and y=29000, but our troops are at y=250 and
y=31750 - past the enemy king tower, hard against the edge of the map.
they are not missing, they are in the corner. that is also why they were
"fighting air".

so the fault is ours after all, in target selection: a unit walks
through the tower it should stop at and keeps going to the boundary.
This commit is contained in:
WiseDev 2026-08-23 17:14:52 +03:00
parent 97b7f8d968
commit 3d0b75b444
2 changed files with 3 additions and 0 deletions

View file

@ -64,6 +64,8 @@ impl BattleBuilder {
.unwrap_or(0); .unwrap_or(0);
tracing::info!( tracing::info!(
buff_type_count, buff_type_count,
knight_id = ?character_data("Knight").global_id(),
barbarian_id = ?character_data("Barbarian").global_id(),
king_id = ?character_data(CHARACTER_KING_TOWER).global_id(), king_id = ?character_data(CHARACTER_KING_TOWER).global_id(),
princess_id = ?character_data(CHARACTER_PRINCESS_TOWER).global_id(), princess_id = ?character_data(CHARACTER_PRINCESS_TOWER).global_id(),
"battle builder ready" "battle builder ready"

View file

@ -275,6 +275,7 @@ impl BattleSession {
tick, tick,
global_id = ?entry.global_id.0, global_id = ?entry.global_id.0,
data = %entry.data, data = %entry.data,
data_ref = ?entry.data.global_id(),
owner = entry.owner_index(), owner = entry.owner_index(),
position = ?entry.position(), position = ?entry.position(),
"spawning" "spawning"