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 #105 and its API prerequisites; merge those first and rebase before merging this PR. The focused change is commit
602302a8362cea3e0238b4cf7d53b5226f72f269(implementation-only diff). No shader dependency.API-3 mods can start a wild encounter through
mod.world:startWildBattle(species, level, onDone?)on generations 1–3. Validate canonical species, whole levels 1–100, optional callbacks, healthy non-egg party and idle-world ownership before native construction. Use the native BattleState constructor and overworld pushBattle/afterBattle entries rather than constructing a replacement battle flow. Gen4/5 and API-1/2 behavior remain unchanged.Completion is one-shot, attributed, error-isolated and deferred past admission for synchronous native completion. Observed session changes and mod rollback/reload/unload permanently retire stale mod callbacks. An admitted battle retains its native cleanup after mod unload; late results cannot mutate a replaced save. Share the synchronous mutation guard with NPC/object/block actions.
Public contract and reproduction.
Validation
79ea62f45fb2ea8f65d081a109431e4eb1bbdb36. Same public-only mod on both production loaders for Red, Blue, Yellow, Gold, Silver, Crystal, FireRed and Emerald. Native battle construction/transition/cleanup timing are instrumented driver seams; this does not establish retail-ROM battle, evolution, blackout or rendered-transition equivalence.Unchanged failing suites: 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, wide_battle_layout. Full test entry remains nonzero because of these baseline failures. Native effects after entering construction are not transactionally rolled back.
Hosted CI
Published open/non-draft at the tested commit; GitHub reports no merge conflicts. API 3 contracts and ci currently conclude
action_requiredpending maintainer approval for the fork workflows. Hosted CI is not green; the validation above ran locally.