Files
healer-man/docs/ENEMY_WEAPON_UTILITIES_2026-10-05.md
2026-10-06 22:25:34 -04:00

155 lines
9.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Enemy weapon utilities — 2026-10-05
## Scope
This continuation implements the authorized Bloodlust, Disarm/Infected Wound
and Dual Wield/Thrash groups. Separate GPT-6 Luna extra-high subprocesses own
their source helpers and tests; shared runtime and catalog integration preserve
the existing level-80 cap, loot scope and Ready-five certification.
Routine browser proof uses Stormwind Stockade: Cellblock Rush and records the
actual seeded boss. Full Stockade campaigns remain separately selected.
## Source contracts
| Mechanic | Verified behavior |
| --- | --- |
| Bloodlust 6742 | One selected friendly creature, 30 seconds, +30% melee haste, Magic dispel. No party-wide aura radius. Separate source haste factors multiply: Bloodlust and Enrage give interval factor 100/169. |
| Disarm 6713, Ascension | Five seconds; main-hand and ranged channels. Offhand and casting remain available subject to exact equipped-item requirements. |
| Disarm 6713, Epoch | Five seconds; main-hand channel only. |
| Infected Wound 17230 | Five minutes; Disease dispel; +6 flat physical damage taken before armor, block and absorbs. Its own Nature school does not determine the damage modifier's school. |
| Dual Wield 674/29651 | Non-damaging persistent creature capability. Explicit enabled mode uses the source creature baseline for an independent offhand, with the core's 0.5 damage factor. |
| Thrash 3391 | Two queued main-hand extra swings on the next unit update, separate ordinary hit/mitigation results. The spell itself is not a direct-damage packet. |
The pinned Ascension and Epoch rows, shared support tables, core consumers and
source limitations are in the subprocess audits:
- [Bloodlust](ENEMY_BLOODLUST_2026-10-05.md)
- [Disarm and Infected Wound](ENEMY_WEAPON_DEBUFFS_2026-10-05.md)
- [Dual Wield and Thrash](ENEMY_EXTRA_ATTACKS_2026-10-05.md)
Hamhock's raw SmartAI has a five-second, one-time self Bloodlust event with
`SMARTCAST_AURA_NOT_PRESENT`, plus an independent event-16 missing-buff check
within 30 yards and ten-second repeat. The latter selects one engaged living
friendly creature. Targorr's raw Dual Wield event is in combat; Bazil's is out
of combat, despite conflicting SQL comments. Numeric event IDs are authoritative.
Targorr's template lists Thrash but this source set does not supply a SmartAI
Thrash cast schedule. Any retained generic template cadence is simulator policy,
not a recovered source schedule.
## Integration
The compiler emits source-bound utility effects instead of false direct hits.
It retains both sourced Hamhock Bloodlust rules while suppressing the duplicate
template fallback. Ordinary source auras use the shared authoritative aura
array. Disarm state uses explicit channel tags; it does not become a blanket
crowd-control state or remove equipped items. Weapon damage masking is temporary;
non-weapon item stats and persisted equipment remain intact.
The WotLK ability importer had exported equipment metadata from fields 67/68.
Independent raw Spell.dbc probes establish fields 68/69/70 for item class,
subclass mask and inventory mask. The scoped refresh must preserve all other
rank fields, including costs, effects, progression and spell-defense metadata.
Classic Ascension equipment metadata requires the same field correction.
The metadata-only CoA refresh compares parsed current input/output before its
write, allowing only the three equipment fields and synchronization timestamp.
No persistent pre-refresh snapshot was retained; the former dirty working tree
cannot now be independently reconstructed from HEAD. The final formatting-only
rewrite was separately checked for parsed equality.
Timed direct Bloodlust, Disarm and Infected Wound auras on another actor survive
caster death/removal or return-home cleanup. Removing the recipient and resetting
the encounter still clears them. Existing cleanup for other aura families stays
outside this change. Disarm target eligibility uses currently usable resolved
weapons, so an unavailable weapon cannot refresh the debuff.
WoW-ruleset unarmed main-hand autos retain the core's 1–2 base, two-second delay,
AP and other item stats. This includes RoM characters using WoW compatibility.
Native RoM unarmed amounts, complete weapon-dependent aura removal and permitted
generic weapon formulas remain source/runtime limits. Explicit source utility
support does not supply missing automatic/flag-driven virtual equipment.
The existing enemy-team simulation does not model core faction hostility,
map phase or object-size-expanded range. Selected friendly recipients therefore
use the represented enemy team, engaged/living state, point distance and LOS.
This is an explicit simulator boundary rather than an exact faction search.
## Validation
Completed focused checks cover 360 distinct Vitest cases, five Node cases and
twenty Python cases. Repeated regression runs do not inflate these totals.
| Scope | Result |
| --- | --- |
| Shared aura/source contracts, imported aura execution and Bloodlust (six files) | 32 Vitest |
| Selected source/Stockade campaign assertions | 11 Vitest; 22 unrelated cases skipped |
| Avatar and equipment rendering invariants | 56 Vitest |
| Shared combat results, stance/block/spell metadata and native exclusions (eight files) | 57 Vitest |
| Actual imported Disarm application, unusable reapplication and expiry | 2 Vitest |
| Dual Wield/Thrash helpers and imported runtime | 14 Vitest |
| Disarm contracts/runtime/player-party execution plus affected party/combat files | 171 Vitest |
| Actual imported Wound, physical packet kinds, mitigation, Cure Disease and caster removal | 10 Vitest |
| Ready-five | 7 Vitest + 20 Python |
| Equipment-column parser and pinned utility drift | 5 Node |
The standard 8GB TypeScript compilation passes. A default-output build reached
Vite but hit Windows `EPERM` clearing the shared `dist/assets` folder. The same
8GB TypeScript/Vite pipeline succeeds with the isolated output
`artifacts/enemy-weapon-utilities-2026-10-05/production-dist`; standard prebuild
asset audits, precompression and release-bundle verification pass. The shared
build already had a restored index when checked and was preserved.
Earlier test-fixture seed/timestamp type errors were corrected before this build.
The validated output is copied and checked before/after freezing. Its 5,964-file
aggregate SHA-256 is
`58dfe50765b0635caeae50bd3eca2fd079cd69cce0e571ff6cb2dd5aeec77b39`.
Entry is `index-nDB7zewy.js`; combat is `combatStore-NW7YcPHP.js`.
Frozen build/content live under
`artifacts/enemy-weapon-utilities-2026-10-05/frozen-20261006-011726964/`.
Content version is `content-62324661bc5f7a0e`, manifest SHA-256
`36614a23f3b98b4289bc3726c8a9bdb075445ada50dfce6504ade4e36325be1f`.
All 27,571 referenced objects (6,489,458,993 bytes; 21,597 logical files) were
copied and independently verified against their manifest hashes.
The final Luna review found missing attribute pins for 674/29651/3391. The
compiler now rejects profile-specific attribute drift and Thrash die-roll drift;
its three tests pass. Regeneration validates both clients and leaves campaign
JSON and compressed TypeScript byte-identical. Source spell availability does
not establish missing Thrash timing.
Frozen Cellblock Rush run `20261006-012123000` selects Hamhock
(`entry-1717`, `creature-79098`) and verifies its native 1/1 clear in 3:14.6.
The level-30 Discipline player and four Ready companions enter normally; there
are no observed player or party deaths. The build and content manifest remain
unchanged, and all 2,124 served manifest-referenced objects were independently
rehashed by root. The roster, dungeon equipment silhouettes and results capture
were visually inspected. There are no page exceptions; the console records one
`favicon.ico` 404.
This first run's checkpoint projection omits the new weapon fields even though
the live-state reader captures them. All-null summarized weapon state therefore
establishes a harness gap, not an absent game mechanic. The recorder now retains
those fields through the checkpoint reducer and captures the three direct
utility aura IDs globally, including player and party recipients.
Corrected run `20261006-013934624` uses the same frozen inputs and selects
Bazil Thredd (`entry-1716`, `creature-79124`). It verifies the native 1/1 clear
in 3:20.7 without player or party deaths. All 328 mob snapshots retain weapon
fields; 35 show Bazil's Dual Wield capability enabled. All captured offhand
timers are zero, no hand-specific swing is captured, and no nonempty extra
queue is observed. Capability evidence does not establish an offhand hit.
The global aura store supplies 26 snapshots of the tank's single Wound instance,
with four distinct source/application-time tuples. Each is one stack, Disease,
and exactly 300,000 ms; these are four observed applications/refreshes, not
26 applications. Bloodlust and Disarm auras remain unobserved in this retest.
Deterministic imported-runtime tests cover those mechanics and queued Thrash.
Root independently verifies unchanged build/content inputs, all 2,124 served
objects and the actual entry/combat/runtime chunks again, and inspects the
new roster, dungeon and native results captures. No page exceptions; one
favicon 404. Both runs' `root-evidence-audit.json` files retain the audit scope.
Final release hygiene passes, including untracked files; game and vault
changes are reviewed separately. No full-source campaign or readiness promotion
is inferred from these two ordinary one-boss routes.
See [the scoped live report](STOCKADE_WEAPON_UTILITIES_PLAYTEST_2026-10-05.md).