Forced movement is wired to the client and has no production caller #62

Open
opened 2026-07-30 21:02:58 +00:00 by sickday · 0 comments
Owner

Forced movement is complete on the wire and has no production caller.

The chain is World.Player.force_move/5 -> pending_world.slide ->
World.Player.Advance.apply_slide/2 -> the 0x400 mask, and it is driven end
to end against a live tick by tier2_world_test.exs. What has no caller is
force_move/5 itself.

Two things it is worth knowing about it before writing one:

  • the deltas run backwards from the destination, not forwards from the
    start, and writing them the other way round decodes perfectly and slides the
    player the wrong way;
  • it needs a teleport applied with it — a slide whose teleport was refused is
    logged and dropped rather than half-applied.

Agility shortcuts are the usual caller. Combat has a couple too (knockback,
some boss mechanics).

Filed as a seam rather than a defect: nothing is wrong, there is simply nothing
in the world that forces a movement yet.

Forced movement is complete on the wire and has no production caller. The chain is `World.Player.force_move/5` -> `pending_world.slide` -> `World.Player.Advance.apply_slide/2` -> the `0x400` mask, and it is driven end to end against a live tick by `tier2_world_test.exs`. What has no caller is `force_move/5` itself. Two things it is worth knowing about it before writing one: * the deltas run **backwards from the destination**, not forwards from the start, and writing them the other way round decodes perfectly and slides the player the wrong way; * it needs a teleport applied with it — a slide whose teleport was refused is logged and dropped rather than half-applied. Agility shortcuts are the usual caller. Combat has a couple too (knockback, some boss mechanics). Filed as a seam rather than a defect: nothing is wrong, there is simply nothing in the world that forces a movement yet.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Revenant/Server#62
No description provided.