forked from phenom/healer-man
156 lines
9.3 KiB
Markdown
156 lines
9.3 KiB
Markdown
# Hunter Deterrence integration — 2026-10-07
|
||
|
||
Hunter Deterrence 19263 is available at level 60 to players and configured
|
||
Hunter companions. It grants its three parent auras and the two linked 67801
|
||
auras to the same caster for five seconds, costs no Mana, preserves the existing
|
||
global cooldown and starts its sourced 90-second cooldown. The selected source
|
||
requires a matching equipped weapon. The existing Training Gear staff satisfies
|
||
that mask; a source Disarm does not remove the matching item, and the pinned
|
||
nonpassive aura-spell exception still permits this cast.
|
||
|
||
## Source and ownership
|
||
|
||
The pinned Spell.dbc SHA-256 is
|
||
`57011d528fd66cf39f5ab6fb168e389ab9e4cc1b8050f7201a54239d489b415c`;
|
||
AzerothCore is `e822d718322289dd036fb2daf8867ba41283bf9a`. The exact type-2
|
||
`spell_linked_spell` row binds 19263 to 67801. Same-name 65871 and child 67801
|
||
remain unavailable as independent Hunter actions. The older
|
||
[source audit](WOW335_DETERRENCE_SOURCE_2026-10-06.md) records the raw package.
|
||
|
||
- `scripts/dungeon-pipeline/export-enemy-damage-types.mjs` owns generated raw
|
||
Attributes0/3/7 (DBC fields 4/7/11). `mobDamageTypes.ts` and
|
||
`enemyAttacks.ts` retain them on normalized, source-identified WoW attacks.
|
||
All 671 existing WoW source rows and RuneWaker mappings are retained. Unknown,
|
||
native and omitted non-damage rows do not acquire invented zero attributes.
|
||
- `wow335AbilityCatalog.ts` supplies a narrow fallback for selected 19263,
|
||
which the generator's class-mask filter omitted despite its Hunter skill-line
|
||
row. Its pinned PreventionType lookup covers all 190 selected Hunter rank IDs
|
||
and the public merged ability aliases.
|
||
- `wow335DeterrenceRuntime.ts` validates the selected ability and all five real
|
||
aura instances: exact behavior, owner, target, application time and lifetime.
|
||
- `combatStore.ts` applies the linked children after accepted parent effects,
|
||
forces this self cast to the caster even when a caller supplies a foreign
|
||
target, synchronizes malformed/expired packages and resolves incoming results.
|
||
- `partyRuntime.ts` selects a learned, ready self defense while a live enemy
|
||
targets the Hunter and health is below its configured defensive threshold
|
||
(default 55%), or a recognized defensive mechanic is imminent. It rejects an
|
||
active cast and respects equipment, cooldown, resources and existing GCD.
|
||
|
||
## Defense and attack behavior
|
||
|
||
The parent supplies +100 parry percentage points, sourced spell deflection and
|
||
pacify. Linked 67801 supplies ignore-facing and -100 incoming ranged-hit
|
||
percentage points. Simultaneous Hunters keep separate owner-local packages.
|
||
Incomplete, foreign and expired packages cannot lend parry or ranged-hit stats
|
||
to incoming resolution; the shared tick removes their package members.
|
||
|
||
Eligible landed, direct WoW Magic/ranged spell packets become an explicit
|
||
`deflect` outcome with zero effective damage. Raw damage remains diagnostic;
|
||
critical/block/resistance mitigation is discarded, no absorb is consumed and
|
||
no landed-hit proc is credited. Earlier miss/full resist remains the actual
|
||
outcome. Ordinary ranged autos use Aura185's miss modifier, and melee uses
|
||
parry. Known source flags are matched against the complete source row tuple
|
||
before applying AlwaysHit, NoActiveDefense, NoAttackMiss or defense exclusions.
|
||
The complete package rejects the front-arc requirement through its linked aura.
|
||
|
||
The exact 100% deflect package also suppresses eligible hostile control, aura,
|
||
periodic application, pull and leech-healing riders. Damage retains its real
|
||
roll. Stun is read from the original combat-update snapshot, before a newly
|
||
queued slow changes control state. Source bypasses, stunned defenders, periodic
|
||
ticks, autos and unknown/native source records do not borrow spell deflection.
|
||
|
||
Pacify stops owner weapon autos and selected Hunter PACIFY=2 attacks, including
|
||
Arcane Shot and Steady Shot. SILENCE=1 actions such as traps and Mend Pet remain
|
||
eligible under their ordinary prerequisites. This does not pacify the pet.
|
||
|
||
## Verification
|
||
|
||
The final focused run passes **110/110 checks in 15 files**, including 12
|
||
actual cast/defense integration cases. The exporter Node test and two selected
|
||
catalog/prevention checks pass. Ready-five passes seven Vitest and twenty Python
|
||
checks. Final 8 GB TypeScript, normal prebuild hooks, isolated Vite output,
|
||
precompression and release-bundle verification pass; the isolated output avoids
|
||
the previously observed shared `dist` lock. Build logs and JSON reports are in
|
||
`artifacts/deterrence-continuation-2026-10-07/`. Actual player/NPC fixtures are
|
||
`wow335DeterrenceCast.integration.test.ts` and
|
||
`wow335DeterrenceDefense.integration.test.ts`.
|
||
|
||
The required avatar scope also passes **56 checks in 11 files**, following the
|
||
equipped-item requirement change. No character/gear rendering code changed.
|
||
|
||
The fixtures prove actual player and NPC Frostbolt deflection, no newly applied
|
||
slow on a deflected spell, existing stun exclusion, melee parry, periodic and
|
||
AlwaysHit exclusions, source-bound cast requirements, linked expiry and
|
||
simultaneous owners. Source ranged spell 2643 truthfully misses under Aura185;
|
||
the helper separately verifies its eligible deflect branch for a landed input.
|
||
Arcane/Steady casts reject while Freezing Trap succeeds under pacify. A torn
|
||
Aura185 package matches the same-seed auto baseline; regular tick cleanup leaves
|
||
the second Hunter's valid package intact. Native/unknown source rejection is
|
||
helper evidence, not a new native live encounter.
|
||
|
||
The final frozen build contains 5,967 files / 118,501,108 bytes; aggregate SHA-256
|
||
`a30787cafc7e1421e872cb37f883147177981b6627dc4238bf89f46ffb850ec2`.
|
||
Fresh content `content-151109efcb20cc00` has manifest SHA-256
|
||
`40d5c9e16d8045b8c240d57ca52017aaf95e423c44f96507aceb02285dca693c`;
|
||
all 27,587 referenced objects / 6,554,643,247 bytes verify against that captured
|
||
manifest before entry. The isolated snapshot is
|
||
`artifacts/deterrence-continuation-2026-10-07/frozen-20261007-161003375/`.
|
||
|
||
One ordinary Cellblock Rush run, `20261007-161404213`, selects **Hamhock 1717**
|
||
(`creature-79098`) and clears native **1/1 in 03:13.6**, with no deaths. The
|
||
isolated UI-created Discipline Priest enters at level 30 with four asserted
|
||
Ready companions; normal progression finishes the Priest at 32 and companions
|
||
at 31. Six attributed Lesser Heal events supply **1,952 effective healing**,
|
||
zero overheal. No live combat-state seeding or Boss Testing is used.
|
||
|
||
Root independently verifies the unchanged frozen build/manifest, all seven
|
||
loaded chunks and 2,124 served manifest objects / 77,019,550 bytes with zero
|
||
integrity failures. Event coverage is **745 consecutive IDs 9–753**, with no
|
||
gaps, discarded events or recorder errors. There are zero page exceptions;
|
||
the only console error is the existing favicon 404. The audit matches immutable
|
||
local bytes to captured successful response URLs/status and manifest references;
|
||
raw response bodies are not retained or independently hashed.
|
||
|
||
Root inspects the actual roster, equipped entrance, route-50 and results PNGs
|
||
under `playtest-artifacts/stockade-weapon-utilities/20261007-161404213/campaign/`.
|
||
Bodies and visible equipment render; entrance overlap and partly offscreen
|
||
companions limit certification of every gear/race silhouette. The file named
|
||
`bite-sized-stormwind-stockade-boss-arrival.png` shows the native results overlay.
|
||
No camera-drag proof or level-60 live Deterrence claim is credited. This is the
|
||
one selected boss slice, despite the results screen's generic full-clear label.
|
||
The harness cleans up its browser/helper/server. No gameplay change or second
|
||
live run follows the freeze.
|
||
|
||
The independent Luna extra-high evidence review confirms those fingerprints,
|
||
event coverage and native result without launching another run or rehashing
|
||
content. Native completion ends traversal at checkpoint 75/86 before the
|
||
dedicated boss handler (`bossClearAttempted:false`); observed boss death and
|
||
persisted kill progress prove the clear. Do not claim a completed scripted boss
|
||
handler or every route checkpoint. Its report is
|
||
`artifacts/deterrence-continuation-2026-10-07/luna-evidence-review.md`.
|
||
Final release hygiene passes all 101 changed paths, including untracked files;
|
||
the user Git index remains empty.
|
||
|
||
## Remaining boundaries
|
||
|
||
The underlying miss/resist/armor formulas remain the existing simulator model,
|
||
not a complete AzerothCore hit table or RNG reproduction. The exported enemy
|
||
table excludes unsupported/non-damage rows, so general shout/utility deflection
|
||
remains unproven. Ordinary miss/resist control riders without this exact
|
||
Deterrence package retain their earlier behavior. Same-update controls use the
|
||
original-frame simultaneous policy; source server event ordering is not claimed.
|
||
The always-equipped Training Gear fixture does not exercise a truly empty
|
||
matching-equipment branch. Unknown/custom/native rates and equipment remain
|
||
separate source gaps.
|
||
|
||
The routine level-30 Ready-only live party does not unlock level-60 Deterrence;
|
||
its player/NPC behavior is actual store-fixture evidence. Cellblock Rush proves
|
||
only the selected one-boss route and regression behavior. Level cap 80, saved
|
||
stat/profile compatibility, loot wiring and readiness policy remain intact.
|
||
No full suite, expanded balance sweep, staging, commit or deployment is part of
|
||
this continuation. All subprocesses use GPT-6 Luna extra-high.
|
||
|
||
Related: [catalog](DETERRENCE_CATALOG_2026-10-07.md),
|
||
[runtime contract](DETERRENCE_RUNTIME_CONTRACT_2026-10-07.md),
|
||
[hit source inputs](ENEMY_HIT_SOURCE_INPUTS_2026-10-07.md).
|