4.9 KiB
RuneWaker Rogue/Warden Revival state and hit chain
Source chain
The local RuneWaker learnmagic.db record for Rogue (class 3), record 590003, has a level-60 499544 entry at index 133 (record offset 0xD2C). It uses key item 546772 and requires 499542. Resource/luascript/02248.lua maps that key item to Rogue-primary/Warden-secondary (3/7) at level 60. The exporter previously retained only the first candidate at this elite milestone, which dropped 499544 beside 499542. It now emits this second row only for that exact pair, milestone, key item, parent, and prerequisite; other candidate selection is unchanged.
MagicCollect 499544 is a self-targeted, zero-cooldown cast that references component 623079. That state lasts 900 seconds and owns on-hit trigger 499545. Its trigger power follows the effective cast MagicLv: source AssistMagic initializes Buff.Power from the cast MagicLv, and the child reads that stored value. AbilitySkillLevelArg=5 scales authored modifiers on the state; 623079 has no such modifiers. The player catalog contains one learned rank of 499544 at level 60, so its current rank approximation supplies effective MagicLv 1. No owner-level-80 substitution or added rank curve is used.
Trigger 499545 references 623072 (the 15-second Revival charge, maximum ten stacks), 620302 (HolyHeal), and 623527 (six-second dodge modifier). The runtime applies one actor-owned charge and refreshes the sourced dodge aura after a qualifying incoming hit. Source type 198 is physical dodge-rate +20; the existing RuneWaker semantic adapter maps it to the simulator's flat dodge channel, which is consumed as dodgePercent by its physical hit resolver. The source's separate type-200 magical dodge channel has no separate consumer in the current simulator and is left unwired.
Event gate and runtime boundary
RuneWaker RD_ValueCal.cxx accepts SpecialAttackBuffProc only for EM_ATTACK_DMGTYPE_NORMAL and negative post-absorb addHP. MagicProcess.cpp resolves magic-shield absorption before assigning Temp.Value and calling OnAttack; critical hits use the distinct DOUBLE damage type, and a fully absorbed hit has zero value with the absorb result. The runtime therefore excludes misses/dodges, criticals, fully absorbed hits, zero health loss, and owners dead after damage. Authored player-vs-mob and party-member-vs-mob event paths receive outcome and resolved health damage, so they gate on landed, noncritical hits after absorption.
The existing direct damagePlayer API has no attack-result payload. For that adapter only, positive post-absorb health loss is treated as a normal incoming-hit event; its caller may also represent environmental or other damage. This is a documented event approximation, rather than a source claim about those external events.
The player and companion paths both require the exact Rogue-primary/Warden-secondary build, the learned 499544 entry at the actor's current level, and the actor's own active 623079 state. Charges and dodge auras are owned by that actor. Companion upkeep self-casts the learned 499544 state when absent; this AI maintenance choice is simulator policy, not a sourced priority rule. An injured companion's existing 499542 Revival heal retains priority. The 499542 cast consumes only the caster's own unexpired 623072 aura, so expired or foreign charges do not raise its stack-based heal.
Remaining native-input gaps
The 499545 HolyHeal rider 620302 is not applied. Its source row supplies DmgPower 30, a MagicLv argument of 18%, and random range 2 (±2%), but RuneWaker's HolyHeal calculation also reads MND, spell time, a cap branch, MPow multiplied by HealPowerRate, and HealPoint. The simulator does not currently expose these native inputs and mappings as a validated shared healing adapter. Substituting the source OrgPower or a generic spell-power coefficient would be unsupported. This is separate from the sourced 499542 self-heal formula (10 + 5 × own active stacks percent of max HP), which remains implemented.
The magical type-200 dodge contribution is also unmodeled because the simulator has no separate magic-dodge resolver. Neither channel is approximated with a new stat rate.
Validation
Focused Revival helper, player/party state-chain, player 499542, and companion partyRuntime tests cover the source gates, durations, stacking cap, exact build/level access, normal versus critical hits, fully absorbed damage, own active charge ownership, and cast maintenance priority. romWardenRuntime.test.ts retains a check that the unresolved HolyHeal child is not exposed as a generic triggered ability. The full player-catalog test also has two failures reproduced against the clean baseline: Mage/Druid unlock levels expected [15, 20, 25, 30, 35, 40, 45, 50, 60, 70] but receive level 25 instead of 30, and Druid/Rogue Speed Catalysis (494023) expects source cost 15 Energy while the existing runtime override omits it. The new Rogue/Warden 499544 catalog assertion passes; those baseline failures are unchanged.