Repository navigation
Conversation
# Conflicts: # src/mods/Loader.lua
# Conflicts: # docs/modding.md # src/mods/Loader.lua # src/world/WorldAPI.lua
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Depends on #106 and its API ancestors. Merge those first and rebase before merging. Isolated implementation:
b191fdcc3d904e51619e250f0c984236e8980aed(focused diff).Enable
mod.world:invalidateMap(mapId)for API-3 generations 1–3. Validate map identifiers and Gen3 aliases; reuse the NPC/object/block idle-world, owner-lease and reentry guards. Dispatch through the existing native reloadMap path, preserving target/neighbor cache eviction, seamless active reload with player coordinates/facing/music, and the native heal-point fallback when the new geometry cannot contain the player. Inactive invalidation does not relocate the player. Gen4/5, API-1/2 and portable script verbs remain unchanged.All 24 world method names in the pinned Gen1 API-3 facade now have host adapters for generations 1–3. This is availability, not identical internals or a promise of complete native behavioral equivalence. Native flags and version datasets remain follow-up work.
Contract and reproduction. Retain native lifecycle semantics: host emits map.reloaded on accepted inactive invalidation; pinned Gen1's Gen2 backend does not. Native failure can happen after cache eviction and is not transactional rollback.
Validation
79ea62f45fb2ea8f65d081a109431e4eb1bbdb36. Eight new identical public-only fixture cases run under both loaders for Red, Blue, Yellow, Gold, Silver, Crystal, FireRed and Emerald. Compare validation, active reload, notification and inactive acceptance; no engine imports/backend branches in the mod.1bf94ae7345a31a1fc9a9e0a2df21c292087bced): 86/96 engine, SDK3/3, B30 PASS; identical baseline failures. The same 64 comparisons /128 runs pass on the clean integration tree.The unchanged failing suites are gate_fingerprint, gate_meta_coverage, quit_thread_shutdown, rebind_capture_bug510, rebind_swap_clear_bug589, soft_reset_bug563, tool_mod_hooks, update_check_tests, update_tests and wide_battle_layout; full test entry therefore remains nonzero.
Hosted CI
Published open/non-draft at the tested head. API 3 contracts and ci currently conclude
action_requiredpending maintainer fork-workflow approval. Hosted CI is not green; the validation above ran locally.