Skip to content

Read native Beat Up participants across both side parties - #210

Closed
Roxas2712 wants to merge 33 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/gen3-beat-up-side-party
Closed

Roxas2712 wants to merge 33 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/gen3-beat-up-side-party

Conversation

@Roxas2712

@Roxas2712 Roxas2712 commented Oct 25, 2026 •

Copy link
Copy Markdown

Beat Up currently selects only the active trainer's party. In a two-trainer or player/ally battle, native Gen1Recomp execution reads the entire side party: six eligible members contribute six hits even when the user belongs to the second trainer.

Read primary slots followed by partner slots through a private live view. Keep the owning arrays and replacement benches separate. Honor the battle-scoped player party, current user's live HP/status, and replacement of an upcoming bench member inside a public hit callback. Capture the current array references for the move, matching the reference when whole party fields are reassigned mid-move.

Stacked on #209. Review c2a1a03 relative to 03d68a4.

Validation:

  • 1,728/1,728 focused checks: 18 cases at all four positions on FireRed/Emerald; six/five members, status/egg/faint filtering, either owner or the whole side blocked, accuracy-time eligibility, callback waking/blocking/replacement, whole-array reassignment, live/detached active battlers, scoped player view, Substitute, fainting, criticals and variation.
  • The shared API-3 mod and fixture use actual native constructors: Gen1 State with ownership halves; Gen2 trainer constructor, setAlly, addOpponentTrainer and sendOutSecondPair with prebuilt imported-shaped members. Ownership guards and replacement benches are verified separately from Beat Up's side read.
  • The complete unfiltered comparison against unchanged read-only Gen1Recomp 535a5ec088c1ae1bf4d91dd3e35a56f64cf46d91 passes 48 isolated workers / 4,766 paired observations. Actual actions, PP, hit order/amounts, event metadata, callback counts and counter memory are compared.
  • Negative control: clean Verify native Beat Up held-item adjustment across engines #209 fails 58 assertions in the new FireRed cases.
  • Full feature quick run: 91/100 engine suites against 90/99 on clean Verify native Beat Up held-item adjustment across engines #209. Exact Counters of all 25 inherited FAIL lines across nine suites match; no additions. SDK 3/3 and B30 pass.
  • BEAT_UP_EFFECT revision 2 intentionally changes the fixture digest from d518411055f17444 to fdbfa30b20cbbaef. Only move_effects changes (f45a80ce5e45ef42 to e4d28f474c15cd8b); restoring revision 1 restores the former digest.
  • Pinned JIT-enabled LuaJIT a4c064539ea931274d407e1249b4bb575424a0f4, scoped StyLua, actionlint and git diff --check pass.

These are native actions and constructors with synthetic imported-shaped parties, not a graphical playthrough or a full link/multi-owner controller claim. A scoped player view and detached active battler are seeded explicitly; no new selection/replacement API is introduced. Full raw RNG traces, arbitrary mid-move ownership reshaping, intros/animations, other scripted executors and complete gameplay remain separate acceptance surfaces. Gen1 stays read-only, with no source edit or publication.

Combined full-suite acceptance and hosted CI are reported below.

Hosted CI: all six workflows for c2a1a03 report action_required pending maintainer approval. The dedicated contract run has zero executed jobs. Local acceptance is separate.

Combined-fork acceptance: integrated into Roxas2712:codex/portability-testing. Clean runtime f39cc19 passes 217/217 engine suites, 3/3 SDK suites and B30 with zero FAIL lines. The same clean runtime passes all 48 workers / 4,766 paired observations. Integration updates only the audited move_effects section pin; the fingerprint gate passes 33/33 checks, including the unchanged sections and mutation checks. Subsequent combined commits only record validation.

# 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