Skip to content

Add owned portable movement and facing scripts - #113

Closed
Roxas2712 wants to merge 26 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/portable-script-movement
Closed

Roxas2712 wants to merge 26 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/portable-script-movement

Conversation

@Roxas2712

@Roxas2712 Roxas2712 commented Oct 22, 2026 •

Copy link
Copy Markdown

Portable API-3 scripts can now move and face native actors on Gen1–3: move_player, move_npc, move_npc_to, place_npc, face_object, face_player_dir, face, face_npc and face_player.

Arguments and actor references are checked before any prefix runs. Movement uses the host's native queue and walker updates; path search is bounded and resolves against the live walkable grid. Each step owns its exact queue entries and a one-shot callback. Foreign overlays pause continuation. Cancellation, unloads, changed sessions/actors, native refusal and stalled steps cannot resume later effects, and cleanup preserves foreign tracks. Talking-NPC facing verbs require a native context.

Dependency: merge #112 and prerequisites first. Focused change 25af724…4632d3a.

Validation at clean head 4632d3a75be10e7af8161c715de0647b31dc1437:

  • 180 focused checks, including real production movement queues and player/NPC update loops for five versions, synchronous/refused callbacks, overlay pauses, replay, native cancellation races and timeout cleanup.
  • Existing 5,268 portable and 117 script-edit checks pass.
  • 112 cross-engine comparisons / 224 isolated loader runs against Gen1 79ea62f45fb2ea8f65d081a109431e4eb1bbdb36.
  • Full headless: 87/97 engine suites, SDK 3/3, B30 pass.
  • All-PR integration ff78bc7a0fdddce46a688ab76da8db4473271ec0: 92/102 engine suites, SDK 3/3, B30 and 112/224 cross-engine checks.
  • Both full commands exit 1 with exactly the same 27 baseline FAIL lines; no additional failures. StyLua and git diff --check pass.

ROM-free fixtures cover native semantics rather than ROM gameplay/pixel equivalence. Paths that cannot be represented fail explicitly. Counts are 0–1024 cells and each stalled step has a 3,600-foreground-frame limit. A native movement crossing to a different map ends this run; explicit portable warp support is a separate follow-up.

Hosted Actions: API 3 contracts and ci are action_required (fork workflow approval). Hosted tests have not run; the results above are local.

# Conflicts:
#	src/mods/Loader.lua
# Conflicts:
#	docs/modding.md
#	src/mods/Loader.lua
#	src/world/WorldAPI.lua
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant