Skip to content

abort inside an actor's stepFrame ends the whole actorList pass (and the frame update) #238

Description

@TylerHamilton7

Found while reviving Junk Food Jack (Flashpoint id 80cd4672-5b7c-46cb-bcb9-ea4adef35bdb) on the web polyfill, v0.8.1. References at tag v0.8.1.

Symptom. The game freezes — no script error — when the player enters a room where a patrolling enemy overlaps the player sprite. Direction-dependent and intermittent in practice (entering along a patrol row makes the overlap likely; falling in from above lands mid-air and works).

Cause. The game's enemy actors call abort from stepFrame when they overlap the player (after killGotan / go). In both actorList loops in vm-rust/src/player/handlers/movie.rs (~line 561 and ~1173), ScriptErrorCode::Abort from one actor sets is_in_frame_update = false, in_step_frame = false and returns — so the remaining actors never receive stepFrame and the whole frame update ends mid-frame. While the overlap persists this repeats every tick and the movie appears frozen. Director's abort "exits the current handler and any handler that called it" — dispatch to the other actors is unaffected.

Fix (verified in a local build). In the Abort arm, continue to the next actor instead of returning (and leave the flags alone). With this the room transition completes normally.

Repro. Junk Food Jack: walk sideways into a room whose enemy patrols the entry row.

Happy to send a PR.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions