20 lines
2.3 KiB
Markdown
20 lines
2.3 KiB
Markdown
# RoM native party selection (2026-10-04)
|
|
|
|
## Finding and owner
|
|
|
|
`src/game/partyStore.ts` owns live companion selection. It previously shuffled the fixed native-five pools by role without receiving the player's active class pair. In a full Stockade party with Scout/Rogue in the damage seat, the three-candidate damage pool could therefore select Scout/Rogue again and omit Mage/Warlock. The Knight/Scout tank fixture happened to be valid because the fixed role pools did not repeat its tank identity.
|
|
|
|
`src/game/PartyBridge.tsx` now passes the active profile's ordered RoM pair into generation. `src/ui/ManastormSelectScreen.tsx` passes the same pair to avatar preloading so its preview uses the same party as entry.
|
|
|
|
## Selection contract
|
|
|
|
When the player pair exactly matches one of the five canonical identities, generation excludes that identity only if the remaining identities can satisfy every requested NPC role seat. This preserves the exact native complement for all five supported player pairs and keeps role assignment intact. If the pair is outside the active five, lacks a secondary class, or cannot satisfy the requested role counts, generation uses its prior per-role shuffled pool.
|
|
|
|
The option is read only for `categoryId === "rom"`. It does not alter any member's stat ruleset, expand the native pool, affect WoW specialization readiness, or change explicitly configured companions. Party resets retain the same option through the existing `PartyState.companionOptions` lifecycle. RoM identities remain separate from WoW eligibility and online specialization filters.
|
|
|
|
## Focused validation
|
|
|
|
`npm test -- --run src/game/partyStore.test.ts` passed: 32 tests in one file. New checks verify the exact unique four-identity complement, canonical names and roles, and native RoM stats for each of the five player pairs. Fallback checks cover an unsupported pair, a role composition the complement cannot fill, and WoW generation with a RoM pair option.
|
|
|
|
The parent task completed the shared build and bounded Stockade checks of both normally generated entry complements; see [the coordinated report](ROM_HEALING_PARTY_RANGED_FOLLOWUP_2026-10-04.md). No other repository tests, balance sweeps, full-suite run, build, staging, or commit were performed by this subtask. Work stayed in the existing `main` checkout.
|