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

5.4 KiB

WoW Shaman Remaining Talent Audit

Audit date: 2026-10-01

Scope: generated WoW Shaman talent rows and player/companion combat paths. The initial audit was read-only; its recommended Flurry follow-up is now implemented in isolated runtime hooks and covered by focused tests.

The source model and combat integration are in src/game/wow335ShamanFlurryRuntime.ts, src/game/combatStore.ts, and src/game/partyRuntime.ts. Focused source and player/companion integration regressions are in src/game/wow335ShamanFlurryRuntime.test.ts and src/game/wow335ShamanFlurry.integration.test.ts.

Implemented candidate: Flurry (talent-602)

The generated Enhancement talent row has three explicit ranks:

Rank Melee attack speed Charges
1 4% 3 swings
2 6% 3 swings
3 10% 3 swings

The proc begins after a melee critical strike. The local generated DBC row and rank text are in src/game/wow335Talents.generated.ts (talent-602, “Flurry”); the generated Shaman talent UI row mirrors those rank descriptions in src/game/generated/talentUi/shaman.json.

Why this was a bounded candidate

  • The generic talent parser does not interpret “attack speed” as haste, so rank-specific timing needed an explicit temporary melee-haste effect.
  • Player main-hand and off-hand autos resolve through the common melee hit path in src/game/combatStore.ts. Companion Shaman weapon autos resolve through src/game/partyRuntime.ts. Both paths produce the combat result needed to distinguish a landed melee critical from a miss or non-critical hit.
  • Player weapon intervals are derived from melee haste, and companion Shaman swing intervals read the actor's melee-haste aura. An actor-local temporary melee-haste aura can therefore affect the already modeled swing timing without inventing a new weapon or attack system.
  • Flurry supplies the trigger, all three rank values, and the number of affected swings locally. Its generated 100% proc chance avoids an unsupported random roll. WotLKDB is only a secondary reference when local child-spell details are unavailable.

Implemented behavior and source notes

The runtime gates by each source actor's generated talent-602 rank; a landed direct melee critical applies that rank's value and three charges to the actor. Each completed melee autoattack attempt consumes one charge; the triggering hit does not. Existing player and companion Shaman swing schedulers read the aura when scheduling the following interval.

The generated rank spells are 16256, 16281, and 16282, with displayed values 4%, 6%, and 10%. Local rank two's expanded tooltip says 6% while its raw child effect has basePoints: 7; WotLKDB child effects report 12% (16277) and 18% (16278). Runtime follows the generated expanded tooltip values. Local rank spells' duration index 21 resolves to -1 (permanent); triggered child spells 16257, 16277, and 16278 each use local duration index 8, which resolves to 15,000 ms. Runtime uses this local duration mapping; WotLKDB rank-two and rank-three child aura rows corroborate 15 seconds. The local Spell.dbc and SpellDuration.dbc rows were parsed from the extracted client files under F:\Projects\LadiksMPQEditor\client-current\patch-T\DBFilesClient and patch-S\DBFilesClient, respectively.

Repeated procs currently replace remaining charges with three and restart the timer. The source pages do not state whether stock reapplication restores used charges or expose proc-phase flags, so those are documented implementation choices. The runtime counts resolved melee autoattack attempts, including misses, as swings; special direct melee hits can trigger Flurry, while periodic packets cannot. Both hands consume a shared actor aura. If hands are due at the same simulation timestamp, existing loop order resolves main-hand then off-hand. A special ability's proc does not retime an already-pending swing; exact fractional swing progress is outside the combat model.

Focused validation passed for the source helper and player/companion integration (8 tests total). The tests cover generated ranks, landed-crit gating, player haste scheduling, companion rank ownership, three subsequent autoattack charges, charge expiry, and the implementation refresh policy. Equal-time dual-wield order and server-confirmed refresh/proc flags remain open.

Other candidates reviewed

  • Static Shock (talent-2055, Enhancement, 3 ranks): the generated rows specify rank-based Lightning Shield damage/charge increases and melee-hit proc chances, but leave the internal cooldown unresolved as the listed amount[1 second][1.5 seconds]. Resolve that rank mapping from the local spell data before implementing the full talent; the unresolved text is why this was not selected as the source-complete candidate.
  • Nature's Guardian (talent-1699, Restoration, capstone rider): its threshold and cooldown are named, but the self-heal is only “a small amount (increased by healing power).” The generated tooltip does not provide its base amount or scaling formula, so do not guess those values.