forked from phenom/healer-man
44 lines
8.5 KiB
Markdown
44 lines
8.5 KiB
Markdown
# Native RoM five mechanics gap audit — 2026-10-04
|
|
|
|
## Scope and finding
|
|
|
|
This targeted audit covers the five active native identities in `src/game/romFiveIdentities.ts`: Knight/Scout Rorik, Priest/Knight Serenna, Rogue/Warrior Veyra, Scout/Rogue Caelan, and Mage/Warlock Durnik. It checks the current source inputs and translated effects that reach player and owned-NPC casts, including pair skills actually learnable in each selected build. RoM remains **Needs Testing**; this is not a readiness or balance promotion.
|
|
|
|
The native stat and combat-input route already contains the active-five source channels audited in the recent native passes, including HolyHeal and supported DotMagic healing, player/owned-NPC source bindings, training weapons, Throw, ShieldDef, native target resolution, and target-count falloff. This review found one concrete pair-effect mismatch: the Knight/Scout Blood Punishment rider still used RuneWaker's old 50% healing-received child and omitted current CoA's Light damage bonus. It now modifies the caster's existing Blood Arrow aura with current CoA's 15% healing-received and 5% Light/Holy damage benefits. No separate passive timer is created.
|
|
|
|
The owned-party direct-damage adapter also had two gaps that hid this rider in NPC play: it inferred native RoM damage school from presentation text, and its deterministic no-roll direct path did not resolve generic caster damage auras. The party path now uses `abilityDamageSchool` for Runewaker spells and prefers an explicit direct effect school when the translated source component supplies one; the ability-level school remains the fallback. This preserves source-described mixed packets without inferring from presentation text, while WoW school selection is unchanged. Active actor-owned damage modifiers are also applied to no-roll Runewaker direct hits. The dedicated Holy Blessing modifier is excluded from that generic pass because Priest already resolves it through its source-specific path. Native `statRuleset: "rom"` hits continue through the existing combat-roll resolver.
|
|
|
|
## Blood Punishment source and identity
|
|
|
|
The generated RuneWaker catalog identifies `499923` as the learnable level-70 Knight/Scout passive Blood Punishment, with prerequisite Blood Arrow `490420`; the source general active is Scout Blood Arrow `490434` (the current CoA corresponding active is `499924`). The local `learnmagic.db`, `magiccollectobject.db`, and `magicobject.db` SHA-256 values match the generated catalog's recorded hashes. Local component `623167` links its one-second `onTimeMagicId` to `499910` for 30 seconds. `Resource/luascript/02708.lua`'s `lua_bico_kni_sco_es_70_blood` checks owner buff `500871` and cancels `623167` when that Blood Arrow marker is absent; this is the old child-timer behavior.
|
|
|
|
The [current CoA Knight/Scout skill list](https://chroniclesofarcadia.com/wiki/skills/list/6-2?locale=ar) still identifies Blood Punishment as Knight/Scout `499923`, Blood Arrow as Scout-general `499924`, and says Blood Arrow increases received healing by 15% and Light damage by 5% while active. The [10.2.1 patch history](https://chroniclesofarcadia.com/ru/patch/10-2-1-1000) records the 15% healing-received reduction for Knight/Scout Blood Punishment. The exact skill IDs and pairing match the local rows, so the current CoA rider replaces the stale local 50%/30-second child. The current page's level-105 examples do not change Healer Man's level-80 cap.
|
|
|
|
The runtime attaches both modifiers directly to the existing caster aura tagged `rom-self-health-drain` for source skill `490434`. That keeps the rider actor-local and ties its lifetime to the active Blood Arrow aura already modeled by the simulator. The simulator still models the local Blood Arrow 30-second lifetime and 3%-of-maximum-HP periodic cost; this change does not claim full CoA toggle, deactivation cooldown, or per-ranged-skill HP/MP cost parity. The local 623167/499910 timer is intentionally not layered onto the current CoA rider.
|
|
|
|
### Remaining Blood Arrow base-contract work
|
|
|
|
This is source-confirmed but intentionally not implemented by the passive-rider fix. The [current CoA Scout general-skill page](https://chroniclesofarcadia.com/en/wiki/skills/list/1-2) documents Blood Arrow as a toggle that can be deactivated from its buff, with a ten-second cooldown on deactivation and an HP cost on physical attacks. The [10.7.0 patch notes](https://chroniclesofarcadia.com/en/patch/10-7-0-1000) also describe Blood Arrow's per-tick Mana cost. Healer Man's local `490434` instead remains a 30-second aura with a 3%-maximum-HP periodic drain and has no player toggle, deactivation cooldown, or per-offensive-attack HP/Mana charge. The general page's Blood Arrow row is `499998`, while the Knight/Scout page identifies the passive's active as `499924`; this audit does not assume those rows have an identical current cost contract. Keep these base-skill differences open and do not describe the pair as fully CoA-parity complete.
|
|
|
|
## Other active identities
|
|
|
|
| Identity | Audit result |
|
|
|---|---|
|
|
| Priest/Knight | The selected pair rows and Devotion Halo are covered by the pair catalog/runtime checks, and the native healing bindings cover supported direct and periodic HolyHeal for player and owned-NPC casts. The source-only Holy Chains child has no measurable player-facing payload; no runtime value is inferred. No comparable source-confirmed player/NPC effect mismatch was found. |
|
|
| Rogue/Warrior | The selected pair effects are covered by the pair tests, including Throwing Mastery, Whirlwind Mastery, Poison Spray, Toxic Splash, and Poison Battle Technique. One-Hand Axe Mastery is inapplicable to the canonical dual-dagger loadout. The source does not supply usable values for remaining Reclaim Energy/Toxic Splash chance clauses, so they remain source-blocked instead of guessed. No comparable confirmed mismatch was established. |
|
|
| Scout/Rogue | The pair and Poison Powder routes are covered by helper/runtime tests. `docs/ROM_SCOUT_REMAINING_PASSIVES_AUDIT.md` keeps Exploiting Shot's unspecified stack cap and Deadly Counterattack's missing critical amount/buff duration separate from existing hybrid estimates. These are unresolved source values, not confirmed values that this pass could implement. |
|
|
| Mage/Warlock | The ten exact pair skills and source-selected cast/proc branches are covered by pair tests. The Flame Follower identity conflict concerns Mage/Warden, outside Durnik's pairing; it is not mapped by ID alone. No comparable source-confirmed player/owned-NPC mismatch was found for this selected pair. |
|
|
| Knight/Scout | Current CoA Blood Punishment was the concrete confirmed mismatch fixed here. Its stale local child timer is not layered onto the current aura rider. The separate base Blood Arrow toggle/cost contract above remains open. |
|
|
|
|
The old Knight/Scout Lua callback is source-confirmed, but current CoA reuses the exact passive identity and publishes replacement benefits. The replacement is attached to the real caster aura, so cancellation and natural expiry remove it with Blood Arrow rather than waiting for a one-second child-timer poll. Unquantified or absent source behaviors remain open rather than receiving guessed values.
|
|
|
|
## Ownership and verification
|
|
|
|
- `src/game/romKnightScoutBloodPunishment.ts` owns the exact caster-aura attachment rule.
|
|
- `src/game/romPriestKnightOverrides.ts` owns the learned Knight/Scout passive marker and routes Blood Arrow activation through the helper.
|
|
- `src/game/partyRuntime.ts` resolves RoM direct-hit schools from source ability effects and applies active actor-owned damage modifiers in the no-roll Runewaker compatibility path, excluding Holy Blessing from its dedicated resolver. Native stat-mode hits use the existing roll-based outgoing-aura path.
|
|
- `src/game/romPriestKnightPairValidation.test.ts` covers the exact passive marker, effect values, aura attachment, and player cast. `src/game/romKnightScoutBloodPunishment.integration.test.ts` exercises player Holy and physical damage, healing taken, immediate cancellation, owned-NPC healing and damage, natural expiry, owner isolation, and both native and compatibility stat rulesets. It also checks Earth Chain's explicit Nature school and Wind Arrows' explicit Physical school.
|
|
- Focused validation passed: `npx vitest run src/game/romKnightScoutBloodPunishment.integration.test.ts src/game/romPriestKnightPairValidation.test.ts src/game/romScoutRoguePairValidation.test.ts src/game/romMageWarlockPairValidation.test.ts` (154 tests across four files).
|
|
|
|
No identity, stat input, health, loot, recovery, level-cap, or readiness scope changed.
|