Skip to content

Map portable move effects and secondary chances to native handlers - #121

Closed
Roxas2712 wants to merge 34 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/portable-move-effects
Closed

Roxas2712 wants to merge 34 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/portable-move-effects

Conversation

@Roxas2712

@Roxas2712 Roxas2712 commented Oct 22, 2026 •

Copy link
Copy Markdown

API-3/unified mods can now assign canonical move-effect IDs on Gen1–3, with validation against the host's actual battle handlers before journaling. Split Special Attack/Defense effects use the appropriate native stages. Gen2/3 also expose secondaryChance in whole percent, convert explicit odds to native fractions, and distinguish explicit 0% from a legacy zero byte's fallback behavior.

Depends on #120 and its prerequisites; merge that first. Focused review: https://github.com/Roxas2712/Gen2Recomped/compare/5528ea28a9e8f9451aa27bbc6f2d411fa8ef2e62...1d9b8ef0ae11e8faa791da895d9b3d305da1be4e

A reproducible, data-only catalog records 211 reference effect IDs from pinned Gen1Recomp maps and the host importer's native-name map, with provenance hashes. Runtime handler checks still refuse missing mechanics. Eight unimplemented Gen3 handlers remain unavailable; opaque native selectors roundtrip only with their original record, and Gen4/5 effect changes remain unavailable. Registered custom native effects keep their IDs. Unmodified detached records preserve exact native odds.

Validation:

  • 856 focused assertions, including hundreds of binding checks, actual native stage/status callbacks, zero/boundary odds, alias identity, atomic refusal and exact native-byte roundtrips.
  • Existing unified-content regression: 391/391.
  • Generator --check passes against the clean pinned reference.
  • 176 cross-engine comparisons / 352 isolated runs at clean feature and combined integration heads.
  • Feature 95/105 engine suites; integration 100/110. Exact baseline 17 failed assertions + 10 failed suites unchanged; SDK 3/3 and B30 pass.
  • Diff checks and formatting of new hand-written modules pass; legacy file encoding preserved.

This selects existing native behavior; it does not add missing mechanics or claim imported-ROM, RNG or pixel equivalence across engines.

Hosted workflows await maintainer approval for this fork (action_required): API 3, ci. No hosted pass is claimed.

# 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