2026-10-28 18:54:43 +07:00
|
|
|
# Currency Wars generated route continuation
|
|
|
|
|
|
2026-10-31 23:27:27 +07:00
|
|
|
The route continuation uses the extracted reference `gfPendingAdvanceNode` ->
|
2026-10-28 18:54:43 +07:00
|
|
|
`gfFxHEnterNode` flow and `gfRouteCreateNode` configuration. Reference executable
|
2026-10-31 23:27:27 +07:00
|
|
|
and Excel reference hashes are recorded in `CurrencyWarsReferenceNodes.json`; its 493
|
2026-10-28 18:54:43 +07:00
|
|
|
normalized templates are data, not snapshots of another player's run.
|
|
|
|
|
|
|
|
|
|
`cwAdvanceRouteNode` operates only on the caller's detached run. It finds the
|
|
|
|
|
next ordered chapter/section in the catalog, retains the run's existing route
|
|
|
|
|
display (including dynamic Tea Break replacements), and asks the reference
|
|
|
|
|
enemy factory to construct the destination layer using that run's saved
|
|
|
|
|
chapter boss/camp. It validates the destination before changing the source.
|
|
|
|
|
It then emits finish-old-queue, level change, and typed RoundBegin updates.
|
|
|
|
|
It neither awards rewards nor writes a save. The caller commits rewards and
|
|
|
|
|
continuation together with its existing revision/CAS check.
|
|
|
|
|
|
|
|
|
|
`cwNextRound` keeps the existing captured transitions and uses typed generated
|
|
|
|
|
pending actions when a new enemy node has no captured RoundWire. It refreshes
|
|
|
|
|
the finite-pool shop and creates ReturnPreparation, Spotlight, or Encounter
|
|
|
|
|
selection through the existing handlers. Queue values increase from the
|
|
|
|
|
active queue; battle settlement must seed that queue from its persisted
|
|
|
|
|
revision before calling the factory when no pending action remains.
|
|
|
|
|
|
|
|
|
|
Current integration target is the dynamic Tea Break at 1-5 followed by the
|
|
|
|
|
saved route's Boss at 1-6. General augment effects, non-enemy layer creation,
|
|
|
|
|
and end-of-route finalization require their own state handlers; this module
|
|
|
|
|
does not claim to implement all run effects or replace those handlers.
|
|
|
|
|
|
|
|
|
|
Validation: Go compilation only. No unit tests, live probes, deployment or
|
|
|
|
|
player-save writes were performed by this implementation task. Client
|
|
|
|
|
continuation and combat remain to be checked after the parent integration.
|
|
|
|
|
|
|
|
|
|
## Current Boss entry correction
|
|
|
|
|
|
|
|
|
|
Live logs now confirm take-drop, RoundBegin and ReturnPreparation succeeded:
|
|
|
|
|
the user's run reached 1-6, revision 545, without resetting the run. Boss start
|
|
|
|
|
was rejected by the new helper's `CW validated battle scalar parameters missing`.
|
|
|
|
|
That guard incorrectly required Level and HardLevelGroup to be nonzero. Decoding
|
|
|
|
|
the proven first-node BattleTemplates wire shows both are omitted/zero, while
|
2026-10-31 23:27:27 +07:00
|
|
|
formation is 5. Updated reference protocol handler `gfBattleMonsterWave` (RVA 0xc62b00) initializes its
|
2026-10-28 18:54:43 +07:00
|
|
|
wave param with formation and elite only, independently confirming omission.
|
|
|
|
|
|
|
|
|
|
The helper now preserves those captured zero values and validates the required
|
|
|
|
|
formation. It does not replace them with older recipes' explicit 90/1 constants.
|
|
|
|
|
Saved boss/camp, wave ordinals, stars, penalty and mode identity still validate.
|
|
|
|
|
No claim of live Boss entry is made until the patched request is observed.
|
|
|
|
|
|
|
|
|
|
## Monster and EliteBranch battle projection
|
|
|
|
|
|
|
|
|
|
The reference battle projection also accepts a previously created Monster or
|
|
|
|
|
EliteBranch layer: it validates the saved camp membership and wave ordering,
|
|
|
|
|
and EliteBranch's selected penalty against the extracted penalty table. This
|
|
|
|
|
does not generate those layers or establish that the Client accepts the fight.
|
|
|
|
|
|
|
|
|
|
The reference `gfRouteCreateNode` uses a run-specific neutral camp for Monster
|
2026-10-31 23:27:27 +07:00
|
|
|
nodes. `gfRoutePlanForRun` reads that camp from an internal reference run field; it
|
2026-10-28 18:54:43 +07:00
|
|
|
is not represented by the saved Client stage's boss camp list. The captured
|
|
|
|
|
first battle's monster IDs match more than one native season camp, so they do
|
2026-10-30 19:19:05 +07:00
|
|
|
not uniquely recover the saved run's neutral camp. As an explicit compatibility
|
|
|
|
|
policy, the new Monster factory picks an eligible, random-enabled captured
|
|
|
|
|
season camp deterministically from the run ID. This retains one camp for the
|
|
|
|
|
same run but does not claim to recover the reference's original choice. The
|
|
|
|
|
reference wave counts, tier limit and chapter star weights come from the
|
|
|
|
|
revision-bound resource. A focused unit test checks stable camp selection and
|
|
|
|
|
valid monster membership; the generated node is not yet verified in Client.
|
|
|
|
|
EliteBranch generation additionally needs its option, difficulty and reward
|
|
|
|
|
contract. No player save was modified by this implementation.
|