Files
healer-man/docs/ROM_DRUID_MAGE_GREEN_GUARDIAN.md
T
2026-10-02 10:38:12 -04:00

35 lines
4.5 KiB
Markdown

# RoM Mage/Druid: Current CoA Green Guardian
## Source choice and identity
This note covers only Mage-primary/Druid-secondary (`rom-mage` / `rom-druid`) skill `494331`. The current [CoA Mage/Druid skills page](https://chroniclesofarcadia.com/en/wiki/skills/list/4-8) identifies Green Guardian as a level-25 instant self skill. The exact pair and skill ID match, so this current CoA entry replaces the conflicting generated RuneWaker interpretation for that pair.
The generated `rom-mage-rom-druid-elite-30` row uses the same ID and name as a level-30 passive. Its RuneWaker components describe healing after Mother Earth's Protection ends. The local old hook in `combatStore.ts` only schedules those HoTs when it finds the passive Green Guardian row and its tagged Protection aura. The current Mage/Druid catalog row is now active, its translated effect is replaced with the stack aura, and the passive lookup therefore does not fire. This removes the old expiry HoT only for this exact pair; the RuneWaker passive and HoTs are retained for any other row using that source ID.
## Implemented behavior
CoA states that each second standing still grants one stack, capped at 20, and each stack adds one percentage point of movement speed. Movement pauses stack generation but does not say that it removes stacks. The runtime implements those explicit values and leaves MP restoration disabled: the page mentions a restore on stack loss, but does not identify the loss trigger or whether its 10% basis is maximum or missing MP.
The small timing rule needed by the simulator is explicit: after a sampled position change, the actor must accumulate one full stationary second before another stack can be gained. This is a one-full-stationary-second gate, not a claim about the source's unspecified “brief” pause duration. It does not decay or remove stacks.
## Runtime integration
- `src/game/romAbilityCatalog.ts` updates the existing exact-pair row in place: level 25, active instant self skill, no cost or cooldown, current CoA tooltip, and the existing generated ID. The reverse Druid/Mage pair gate remains separate.
- `src/game/romDruidOverrides.ts` replaces only the Mage/Druid 494331 effect with the current self aura. Other Druid rows retain their existing RuneWaker effects.
- `src/game/combatStore.ts` starts the caster aura at zero stacks, samples player and companion positions each combat tick, advances standing time, adds stacks to 20, and drops timing state after the aura is gone. The existing Mother Earth's Protection expiry branch is bypassed for this pair because 494331 is no longer a passive and has no legacy Green Guardian tag.
- `src/game/partyRuntime.ts` selects learned 494331 for an exact-pair companion on its first available combat action when the aura is absent, then uses the ordinary ability commit and effect execution path. CoA describes the skill as active but does not specify companion AI; auto-use in combat is a simulator policy, not a sourced mechanic.
- `src/scene/PlayerRig.tsx` applies the stack movement multiplier to the player. `src/scene/PartyPopulation.tsx` applies it to a Mage/Druid companion. Both scene hooks check the exact pair.
- `src/game/romMageDruidGreenGuardianRuntime.ts` contains the pair gate, stack cap, one-second transition, speed multiplier, aura definition, and timing helper.
The aura is indefinite and starts with zero stacks. The timer begins on the first movement sample after application; the simulator does not guess elapsed standing time before it can observe a position. Player accrual/movement coverage is in `src/game/romMageDruidGreenGuardian.integration.test.ts`; companion AI cast selection and aura application are covered in `src/game/romMageDruidGreenGuardian.party.integration.test.ts`. Helper and catalog regressions are in `src/game/romMageDruidGreenGuardianRuntime.test.ts` and `src/game/romDruidMageCoaCatalog.test.ts`.
## Still unknown
- The exact duration and refresh behavior of the movement pause.
- Whether any event removes stacks, and if so how many and at what interval.
- The MP percentage basis and whether each lost stack has a separate restore.
- Whether standing time counts during casts or other actions. The runtime observes position only.
- Any level-scaling formula beyond the stated per-stack values and 20-stack cap.
Historical [11.1.1.2000-2009](https://chroniclesofarcadia.com/patch/11-1-1-2000) and [11.1.6.1000](https://chroniclesofarcadia.com/patch/11-1-6-1000) patch notes describe Subterraneous Blade thresholds, not Green Guardian's pause or stack-loss rules. They do not fill these gaps.