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.
Gen-3 Spit Up currently goes through ordinary damage calculation, multiplying move power and entering ordinary damage/critical hooks. Native execution instead multiplies the calculated base (including its final +2), then applies Helping Hand, STAB and type rounding without critical or damage-variation rolls. Two Stockpile stacks with level 30, equal stats and normal STAB must release 90 rather than the ordinary power-based 87.
Use a dedicated GBA set-damage path and native Stockpile consumption: successful release, Protect and type immunity consume the counter; ordinary misses, semi-invulnerability, sleep and absorption preserve it. Keep owned PP, the three-stack cap and Swallow interaction. Preserve the native set-damage event metadata and clip Substitute hit amounts. Earlier-generation fallback paths remain separate.
Stacked on #198. Review feature commit 8c7df4d relative to f09b570. Canonical public effect writes additionally compose with #121.
Validation:
Reproducible runtime: both engines and the contract workflow use JIT-enabled LuaJIT v2.1 a4c064539ea931274d407e1249b4bb575424a0f4. The older local ARM64 2.1.1700008891 VM produces JIT-dependent Thick Fat results in unchanged reference code. Its original failing report is retained, not filtered or claimed green. The maintained pinned VM passes the complete comparison with JIT enabled.
Comparisons use equal stats and synthetic imported-shaped rows. Counters compare each engine's operative operand; the reference's stale legacy Stockpile alias after Protect is not an alias-equality claim. Full ability/item/badge coverage, ordinary damage's remaining order gaps, other set/delayed executors, full RNG traces, called/link controllers, animations and complete gameplay remain separate surfaces. Gen1 stays read-only; no Gen1 source change or publication is required. Hosted CI and combined-fork acceptance are reported separately.
Combined-fork acceptance: integrated into
Roxas2712:codex/portability-testing, tested runtime ba2d7d1. All 214/214 engine suites, 3/3 SDK suites and B30 pass with zero FAIL lines. The same 32-worker / 3,974-observation comparison passes on that clean runtime, and the canonical real-mod proof passes 14/14. Integration preserves the existing damage-adjustment argument and updates only the audited effect-section fingerprint pin. Subsequent combined commits only record validation.Additional runtime check: all new Gen2 Spit Up observations also match the pinned reference when the older local ARM64 VM executes the host alone, on both GBA profiles. The older reference-side JIT divergence remains separately reported.
Hosted CI: all five workflows report
action_requiredpending maintainer approval. The dedicated contract workflow has zero executed jobs. These are separate from local acceptance.