Files
healer-man/docs/WOW335_DETERRENCE_SOURCE_2026-10-06.md
T
2026-10-07 13:05:04 -04:00

7.4 KiB
Raw Blame History

WoW 3.3.5 Hunter Deterrence source audit — 2026-10-06

Result

This is the dated pre-integration audit. The selected catalog row, five-aura player/companion package and guarded hit resolution are implemented in the October 7 continuation. Missing-runtime statements below describe the October 6 source-audit boundary.

Spell 19263 is a five-second, self-targeted, aura-only source row. Its linked spell_linked_spell aura 67801 is part of the same defensive package. The source contract in src/game/wow335Deterrence.ts accepts that exact parent, child, and link signature and fails closed on profile or sibling drift. It does not import the ability or resolve combat outcomes.

Client and linked-row evidence

The read-only WoW 3.3.5a Spell.dbc is ../wow-pvt-server-backups-2/wow335a/Data/patch-A.MPQ/DBFilesClient/Spell.dbc, SHA-256 57011d528fd66cf39f5ab6fb168e389ab9e4cc1b8050f7201a54239d489b415c. Spell.dbc has 234 fields, so the parsed field shift is zero. Duration index 28 resolves to 5,000 ms in the pinned SpellDuration.dbc at ../LadiksMPQEditor/client-current/patch-S/DBFilesClient/SpellDuration.dbc, SHA-256 eeae44ef0185924f3d6ec57ab2701c66566db86e51ab0bae017a9449126eb3a.

Raw aura values below show the parsed DBC base-points value (the raw field plus one). All listed effects are APPLY_AURA, target A 1, target B 0, mechanic 0, radius 0, period 0, and misc value 0. No effect has a triggered spell.

Spell row Attributes 0–7 Damage class School Duration Effects
19263 Deterrence [327696, 16, 0, 0, 0, 0, 0, 0] None (0) 1 5,000 ms 47:+100, 287:+100, 25:0
67801 Deterrence [328080, 16, 0, 0, 0, 0, 0, 0] None (0) 1 5,000 ms 288:+100, 185:-100
65871 Deterrence [327696, 0, 0, 0, 0, 0, 0, 0] None (0) 1 5,000 ms 47:+100, 287:+100, 25:0

The pinned read-only AzerothCore data row is (19263,67801,2,'Deterrence') in ../wow-pvt-server-backups-2/azerothcore-wotlk/data/sql/base/db_world/spell_linked_spell.sql. The selected core defines type 2 as SPELL_LINK_AURA in src/server/game/Spells/SpellMgr.h. SpellMgr::LoadSpellLinked stores this under the Aura link key, and Aura::HandleAuraSpecificMods applies 67801 to the same target through the original caster when 19263 is added. On removal, the core removes the linked 67801 aura from that target and caster. The link is an aura relationship, not a Spell.dbc trigger effect.

Spell 65871 is a same-name DBC row, but it is not the selected package: its Attributes1 differs, it has no SkillLineAbility row, and no spell_linked_spell row references it. Spell 19263 is the only one of these rows listed on SkillLineAbility skill line 51. That source metadata does not establish how the current HealerMan catalog exposes or learns the spell. The generated Hunter catalog currently contains no 19263 entry.

Pinned core behavior

Historical core behavior is pinned to read-only AzerothCore e822d718322289dd036fb2daf8867ba41283bf9a; the link row above comes from its base world SQL. The active project and generated data remain authoritative for implementation.

  • Aura 47 is SPELL_AURA_MOD_PARRY_PERCENT. Its player aura handler enables parry and updates the player's parry percentage. The 19263 effect contributes +100 to that aura type; the actual attack result still depends on the defender's parry capability and the incoming attack path.
  • Aura 287 is SPELL_AURA_DEFLECT_SPELLS. The pinned Unit::MagicSpellHitResult and Unit::MeleeSpellHitResult check it for Magic-class spells and ranged damage-class spells. Deflection is checked after miss/resist and requires the defender not to be stunned. The attacker must be in the defender's front arc unless the target has Aura 288. The linked 67801 supplies that Aura 288, so the complete 19263 package does not retain a frontal-facing requirement. Ordinary ranged weapon auto attacks do not enter these spell deflection checks; linked Aura 185 changes their ranged miss chance separately.
  • Aura 25 is SPELL_AURA_MOD_PACIFY. Its amount is zero, but the aura handler still sets the pacified unit flag. The pinned AttackerStateUpdate returns for a pacified unit, and spell casts with PreventionType=PACIFY are rejected.
  • Aura 185 is SPELL_AURA_MOD_ATTACKER_RANGED_HIT_CHANCE, not a disarm aura. On the target, its -100 modifier raises the attacker's ranged miss chance by 100 percentage points in Unit::GetUnitMissChance. It applies to ranged weapon attacks and ranged-damage-class spells, subject to each spell's own hit attributes.
  • The parent is DamageClass None, has SchoolMask 1, Dispel 0, Mechanic 0, and contains only self-targeted aura effects. Its own application is not an incoming Magic, melee, or ranged hit. Its triggered-spell fields are zero; 67801 comes from the separate linked-aura row.

Relevant pinned paths are src/server/game/Spells/Auras/SpellAuraDefines.h, SpellAuraEffects.cpp, SpellMgr.cpp, and Auras/SpellAuras.cpp, plus src/server/game/Entities/Unit/Unit.cpp and src/server/game/Spells/Spell.cpp. The enum and consumer paths establish the raw aura roles and gates; they do not provide a complete simulator hit table.

HealerMan boundary

Generic WoW aura conversion already recognizes Aura 47 as a parry stat and Aura 25 as a pacify tag. The incoming player and companion hit paths consume parry from target-local aura stats. No current Hunter Deterrence definition applies those auras, because 19263 is absent from the generated Hunter catalog. The existing 67801 contract in enemyBlockAuras.ts uses Aura 288 only as an ordinary enemy Creature block input; that is not player/party deflection coverage.

The normalized enemy attack record carries spellId, damageClass, schoolMask, attackKind, and damageOrigin, but the generated enemy damage source table does not retain raw Attributes3. The pinned SPELL_ATTR3_ALWAYS_HIT bit is 0x00040000 and bypasses the deflect hit gate. The current shared incoming result also lacks a distinct deflect stage and does not pass attacker-relative facing or defender stunned state into that resolver. Those missing inputs block a safe generic deflect runtime. An exact adapter would need the active 19263/67801 aura package on the actual defender, the source spell's profile, damage class and raw AlwaysHit attributes, ordinary ranged-auto identity, attacker-facing relation, stun state, and placement after the source miss/resist checks.

At the start of this source audit, the player autoattack scheduler lacked the pacified aura gate already present in the party action loop. The shared runtime continuation now gates player main/offhand and owned Scout ranged autos on active actor-local pacify. Actual accepted-aura scheduler fixtures cover that gate; they do not prove a Deterrence cast. A future 19263 import still needs the linked aura lifetime and the missing deflect inputs above. This source helper records exact rows and linkage only. See the integration report.

Focused verification

src/game/wow335Deterrence.test.ts verifies the parent/child signatures and the exact type-2 aura link. It rejects another profile, the same-name 65871 duplicate, changed aura siblings, changed duration, and missing or extra link rows. Only this focused helper test was run; no build, live run, or full suite was part of the scoped source audit.