7.4 KiB
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 pinnedUnit::MagicSpellHitResultandUnit::MeleeSpellHitResultcheck 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 pinnedAttackerStateUpdatereturns for a pacified unit, and spell casts withPreventionType=PACIFYare 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 inUnit::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.