Skip to content

Honor positional GBA mod-action targets through native execution - #195

Closed
Roxas2712 wants to merge 19 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/portable-enemy-targets
Closed

Roxas2712 wants to merge 19 commits into
UNDERdecoded:mainfrom
Roxas2712:codex/portable-enemy-targets

Conversation

@Roxas2712

@Roxas2712 Roxas2712 commented Oct 24, 2026 •

Copy link
Copy Markdown

A mod-selected GBA action such as {move="TACKLE", target=2} currently loses its target during Gen2 execution. Resolve positional targets at execution time, after any occupant replacement, and honor them through native move/damage events and the actual double-turn queue.

The move's native target policy remains authoritative. Both-foe/all-other ordering, self targeting and active Lightning Rod redirection follow the reference for the covered local GBA cases. Pressure counts every relevant holder, excludes the user's own self-targeted Pressure and spends PP once. Spread moves emit battle.move_used once per action; per-target hits remain battle.damage_dealt events. The zero-power GBA default path no longer emits a spurious zero-damage hit.

Stacked on #194. Review feature commit f84dfb56 relative to that prerequisite (11 files).

Validation:

  • 434/434 focused checks for FireRed/Emerald: all positional targets from both enemy flanks; mutation/replacement, actual move/damage event targets/order/cardinality, PP, self/spread/field policies, Pressure, Lightning Rod order, cached/replaced/absent targets, legacy handles, malformed hints and unchanged random-target selection/RNG against an identical-stats control.
  • Actual reference planner/executor and actual Gen2 turn queues execute the choices. Synthetic native-shaped move rows isolate target policies; no real-game Spikes implementation is claimed.
  • Existing 1,252 move-choice, 438 selector and 254 native-record checks remain green.
  • Unchanged read-only Gen1Recomp 535a5ec088c1ae1bf4d91dd3e35a56f64cf46d91: 20 isolated engine workers / 312 paired observations pass.
  • Full local quick run: 80/90 engine suites versus 79/89 on clean Expose shared API-3 GBA native move records #194. The exact Counter of all 27 inherited FAIL lines across ten suites matches; no new failures. SDK 3/3 and B30 pass.
  • actionlint and git diff --check pass.

Scope: selected mod-action targets in local GBA battles. Follow Me/unported effect producers, automatic AI target scoring, complete random/native RNG parity, called moves, link ordering, damage amounts and item/switch/watch actions remain separate work. Gen1 is a read-only reference; no Gen1 patch or publication is required. Hosted CI is reported separately from local acceptance.

Combined-fork validation: integrated into Roxas2712:codex/portability-testing, production runtime 916661d. All 211/211 engine suites, 3/3 SDK suites and B30 pass. The same 20-worker / 312-observation comparison passes here too. Integration forwards the optional spread-continuation flag through the existing GBA held-item scheduler wrapper.

Hosted CI: all three workflows report action_required pending maintainer approval. The dedicated contract workflow has zero executed jobs. These are separate from local acceptance.

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