5.0 KiB
WoW 3.3.5 Hunter Deterrence runtime contract — 2026-10-07
Scope
src/game/wow335DeterrenceRuntime.ts binds the selected Hunter catalog row to
the audited Spell.dbc 19263 parent and its spell_linked_spell Aura link to
67801. It supplies source-shaped aura descriptors and a narrow post-hit
deflect gate. The shared combat store, party runtime, and combat-result paths
own cast execution, actual aura application/removal, and outcome recording.
The five source aura definitions are identified by their source spell/effect IDs: parent 19263 Auras 47, 287, and 25; linked child 67801 Auras 288 and 185. All five instances must belong to the same Hunter self-cast, target that Hunter, share one application time, and expire exactly five seconds later. The runtime contract returns no Deterrence package when any member is missing, duplicated, expired, foreign-owned, or out of step with the other members. Removing or expiring one member should remove the other members for that same owner, target, and application time.
The helper exports the parent effects for the selected catalog mapping and the linked-child effects for the original cast target. Aura 47 carries a flat +100 parry modifier. Aura 25 carries the pacify tag. Aura 287 supplies the 100-point spell-deflect source aura. Aura 288 removes the attacker's frontal-arc requirement for this package. Aura 185 carries the -100 incoming ranged-hit modifier; the existing shared hit-stat path consumes it, so the combat caller must not add a second copy of that penalty.
Deflect gate
resolveWow335DeterrenceIncoming is a final gate after the existing combat
resolver has produced a landed hit, crit, or block. It preserves miss,
resist, dodge, and parry. For an otherwise eligible event it returns the
distinct deflect outcome; the source aura is 100%, so this gate adds no random
roll.
The input must identify a non-periodic WoW 3.3.5 spell source and match the
exact enemy damage-source row, including DamageClass, SchoolMask, and raw
AttributesEx0/3/7. Only Magic (DamageClass 1) and ranged (DamageClass 3) spells
qualify. DamageClass None, melee, unknown, foreign-profile, periodic, and
weapon-auto inputs remain unchanged. A stun suppresses deflection. The core's
source bypasses are preserved: AttributesEx3 ALWAYS_HIT (0x00040000)
suppresses both branches; ranged DamageClass also skips the deflect check for
AttributesEx0 NO_ACTIVE_DEFENSE (0x00200000); Magic DamageClass skips it for
AttributesEx7 NO_ATTACK_MISS (0x02000000). The front-arc gate applies unless
Aura 288 is active. A complete accepted Deterrence package always contains Aura
288, so an attacker behind the Hunter remains eligible.
Ordinary ranged autos never produce deflect. They receive Aura 185's separate
incoming ranged-hit modifier through the existing aura-stat path. The helper
does not calculate general miss/resist chances, and it does not widen the
simulator's existing combat table to other spells or profiles.
The shared combat path also uses this exact eligibility gate before applying
non-damage spell riders while the complete Deterrence package is active. For a
source event that is guaranteed to deflect if it lands, control, target-aura,
periodic, pull, and leech-healing riders are skipped while damage still goes
through the ordinary hit resolver and records deflect only after its normal
landed result. This suppression is package-specific; ordinary sourced attacks
outside Deterrence retain the simulator's existing rider behavior on miss or
resist. Same-update incoming events use the combat store's original-frame stun
snapshot, consistent with its simultaneous batch policy.
Identity and provenance
The source contract continues to use the exact audited 19263, 67801, and
type-2 link signatures in src/game/wow335Deterrence.ts. The runtime ability
contract accepts only the selected wow335-hunter-deterrence Hunter mapping,
its wow335-progression source, DBC ID 19263, self target, and the three exact
parent source effects. Runtime activation is derived from the actual serializable
ActiveAura records; callers do not pass a copied source-package object as
proof. Incoming deflection independently checks its spell ID and hit attributes
against the exact WoW damage-source table. Missing or mismatched source fields
fail closed.
The pinned source evidence and the limits of the imported behavior are recorded
in WOW335_DETERRENCE_SOURCE_2026-10-06.md.
The source row authenticates hit-class and bypass metadata; the game's current
miss/resist calculations remain its own policy. This contract does not create a
complete AzerothCore hit table.
Focused verification
Run npx vitest run src/game/wow335Deterrence.test.ts src/game/wow335DeterrenceRuntime.test.ts
for the exact source rows, linked package identity and lifetime, cleanup scope,
branch-specific bypass bits, and unsupported-input exclusions. The mechanics
work remains within the project's Ready-five certification boundary, level-80
cap, and existing loot scope.