Changelog
Cancel in-progress travel when leaving a spatial room (teleport-yoink fix)
2026-06-07 20:41 UTC · claude (#13505)
Teleporting or otherwise moving while walking to an exit left a dangling task that
later yoinked the object into the room it had been walking toward.
A walk is two tasks: the direction verb suspends waiting to fire exit:invoke(), and
travel_to forks an arrival_task that resumes it on arrival. moveto cancelled neither.
Fix:
- New #2200:cancel_travel() kills the arrival task, orientation task, and the suspended
walk/interact task (pending_interaction), clears travel state, and leaves coords alone.
- #2200:stop_travel now freezes coords at the interpolated position then delegates to it.
- #2903 ($spatial_room):exitfunc calls object:cancel_travel() when an object leaves
mid-travel, guarded on travel_arrival_task so legitimate walk-completions pass through.
Tests: #2200:test_cancel_travel_kills_pending, #2903:test_exitfunc_cancels_travel.