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

5.0 KiB

Current CoA Priest Holy Candle (490304)

Source and precedence

  • The current CoA Priest skill list identifies Holy Candle as Priest-primary skill 490304 and gives a +27% healing-effectiveness bonus. Its displayed 5% HP trigger is stale.
  • The same CoA row lists a 5% MP cost, range 1, and 30-second cooldown. The local row has no cost override, range 0.1, and a 180-second cooldown; the exact same-ID/name/class entry supports using CoA's metadata.
  • The newer CoA patch 12.1.6.2000 notes explicitly increase Holy Candle's self-damage from 5% to 12%, so the patch value takes precedence over the older page value.
  • A CoA developer reply on the Priest feedback thread clarifies that Holy Candle can hit the caster only once per second.
  • The skill page lists a 5% MP activation cost. This is distinct from the 12% HP self-damage trigger. The generated RuneWaker row has no cost, so the catalog supplies an ordinary 5% Mana cost, which resolves against maximum Mana; CoA does not specify a base-Mana cost.

RuneWaker conflict and model

Generated local skill 490304 uses component 500549. It currently has range 0.1, a 180-second cooldown, no Mana cost, a 60-second duration, a type-149 +5% healing-done modifier, and a -6% HP periodic effect every second. The CoA behavior uses range 1, a 30-second cooldown, and a 5% Mana activation cost; replaces the +5% modifier with +27%; retains the local 60-second duration because CoA does not publish one; and removes the free-running periodic drain. The 5% Mana activation cost is separate from the HP trigger.

The patch says 12% self-damage but does not state whether the percentage uses current or maximum HP. The simulator interprets it as 12% of maximum HP, matching the local percentage-based component's existing maximum-health calculation pattern. This basis remains an implementation interpretation rather than an explicit CoA value.

The chosen trigger boundary is one charge for each accepted healing-spell cast that resolves a heal, independent of the number of recipients. Direct and AoE heal casts charge once before recipient fan-out, even when the recipients are already full. A HoT charges once when its valid application cast resolves; periodic healing ticks do not charge again. A channel charges on its first qualifying healing pulse, and a per-cast flag prevents later pulses from charging again even when they are more than one second apart. The official one-second throttle is exact and stored per owner: multiple heal spells from the same owner share a window, while the player and each companion have independent windows. Failed, invalid, or interrupted casts do not charge.

For the channel regression, the test uses WoW Divine Hymn only as a fixture for the shared channel scheduler while the simulated owner is a RoM Priest-primary character. This verifies the persistent per-cast guard; it does not claim Holy Candle or Divine Hymn has a CoA Priest-primary channel mapping. A test-only RoM Holy Candle HoT fixture covers application-versus-tick behavior because the generated Priest-primary catalog currently has no healing HoT row. The source leaves these timing boundaries unspecified, so they remain explicit simulator choices.

Current implementation and limits

  • src/game/romPriestHolyCandleRuntime.ts owns the current values, Priest-primary effect transform, aura marker, and pure throttle/self-damage helpers.
  • src/game/romAbilityCatalog.ts gives only Priest-primary 490304 the 5% Mana cost, range 1, and 30-second cooldown plus a tagged 60-second +27% aura, replacing the generated periodic dot.
  • src/game/romPriestTooltips.ts exposes the current values and separates cast cost from HP trigger cost.
  • src/game/romPriestHolyCandle.test.ts covers catalog values, exact class scope, modifier replacement, periodic-dot removal, active-aura detection, and throttle math.
  • src/game/combatStore.ts applies the player self-damage in the cast-resolution transaction and handles channel-pulse charging.
  • src/game/partyRuntime.ts applies the same trigger for generated Priest-primary companions on direct/HoT heals and channel pulses; src/game/partyStore.ts retains the channel's charged flag across party-runtime advances.
  • src/game/romPriestHolyCandle.integration.test.ts covers direct over-heal, one charge for multi-recipient Group Heal, inactive/invalid/interrupted casts, per-owner one-second throttling across spell IDs, companion heals, HoT application versus later ticks, and channel pulses more than one second apart.

The runtime hook applies raw self-damage up to the owner's remaining health and records it as a Holy damage event. The 12% basis remains maximum HP by simulator interpretation. The one-second timestamp map is per combat owner; the channel guard is per cast and persists on companion casts across scheduler updates. Integration coverage verifies the player and generated-companion paths described above.