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.
NPC mods can register
world.talkin Gen2Recomped's API-3 catalog, but native A-button interaction currently callstalkTodirectly. A mod therefore cannot claim its runtime NPC's conversation using the same public hook as Gen1Recomp.Dispatch
world.talk(next, owner, target)at the existing native NPC boundary, before the normal freeze/facing/dialogue flow. Omittingnextclaims the conversation; calling it retains the native flow. The continuation matches Gen1's classic void return contract. Register the producer in capability queries and unified API-2 callbacks, retaining opaque owner/actor identities.Behavior and boundaries
world.interactedownership retain their existing behavior.World:interactBodydoes not produceworld.talk, despite catalog recognition. The checker tests that native absence explicitly; Gen2 Gold executes the shared contract. It never substitutes the classic controller or modifies reference sources.nextasynchronously are not portable promises. These boundaries are documented.Validation
world_talkandunified_npcssuites: 9/9 + 1,555/1,555.git diff --checkpass. Validation is ROM-free; imported-ROM playthroughs are not claimed.The workflow pins clean Gen1 commit
79ea62f45fb2ea8f65d081a109431e4eb1bbdb36, runs the unmodified reference suites and publishes the cross-engine reports. Documentation includes reproduction commands and corrects an obsolete API-3 availability example.Stack
Depends on #148 and its prerequisites. This PR targets main to follow the existing series. Review the feature-only comparison against #148; please merge in stack order.
Hosted CI
All ten fork workflows currently require maintainer approval (
action_required), including the new world.talk contract run. Its job list contains 0 jobs; hosted tests have not run yet. The passing results above are local, reproducible ROM-free runs.