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

113 lines
7.3 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 stances and NPC blocking — 2026-10-05
The approved continuation implements NPC Defensive/Battle Stance and Improved
Blocking for ordinary source-backed WoW creatures. Separate GPT-6 Luna workers
with extra-high reasoning supplied source helpers, integration tests and live
QA. The level cap remains 80; loot and readiness promotion are outside scope.
`enemyStances.ts` binds NPC forms 18/17 to core-owned passives 7376/21156 using
the selected Ascension/Epoch client. The shared source aura is the only owner
of its stance modifiers. Defensive lasts 180 seconds and multiplies all-school
damage taken by 0.9 and dealt by 0.95. Battle is permanent until replacement or
removal. The exclusive group prevents both forms remaining active. Reset,
evade and expiry remove the owned modifiers. Ascension Battle has zero numeric
child effects but retains its form identity. Epoch threat modifiers are stored
without altering the incoming party threat table; this runtime has no hostile
NPC outgoing-threat consumer. Ascension Defensive's DUMMY +42 remains
unsupported because no source handler was established.
`enemyBlocking.ts` provides an ordinary Creature baseline of 5% plus block aura
percentage points, and block value `floor(level / 2)`. Historical Creature
Strength stays zero; the loaded class-level Strength column is not assigned
to ordinary creatures. This baseline has no equipment/shield requirement.
The shared player/companion damage resolver applies the level-based skill
adjustment once, real target facing, active cast/control and evade gates, and
the pinned template `flags_extra` NO_BLOCK bit. Improved Blocking adds 75
percentage points for six seconds. Its effect expires exactly at the aura
boundary. Native RoM attackers use the same ordinary WoW target defense path;
native RoM defenders and character/summoned defenders retain their own models.
This initial stance pass enables the sourced auto-attack block baseline. The
subsequent [spell continuation](NPC_SPELL_BLOCKING_2026-10-05.md) imports per-rank
defense attributes and enables direct physical spell mitigation for player and
party casts, including crit-plus-block. Periodic and non-direct full-hit spell
blocks remain excluded. Missing source flags, levels outside 1–80 or missing
spatial evidence disable this block baseline. Runtime Totems/Guardians are
outside ordinary-creature scope; template type is not a safe Totem identifier.
Ignore-hit-direction auras are not newly imported by this batch.
The source CONTROLLED set is stun/fear/confuse. The runtime additionally treats
sleep/blind/knockdown/freeze as unable to defend, matching its incapacitation
model; this is a simulator approximation. A plain root still permits blocking.
The world importer now preserves `flags_extra` without changing any other
reference fields: all 1,671 selected templates have an exact mask.
None of the selected masks sets NO_BLOCK; that gate is verified through the
importer fixture and pure helper, rather than claimed as a live Stockade case.
The campaign
compiler validates form and profile-specific child signatures, including raw
duration indices, attributes, equipped-item masks, targets, school masks,
triggers and effect amounts before enabling the three reviewed parent spells.
Both source profiles must be present; fallback cannot substitute one for the
other. Generated JSON and compressed TypeScript are refreshed together.
Reviewed SmartAI self auras preserve one-shot flags and combat timing.
Stockade Inmates apply Battle Stance after one idle second, before the pull;
it is excluded from in-combat selection. Kam Deepfury applies Defensive once
and repeats Improved Blocking on its source schedule. Reset re-arms the idle
schedule. Non-boss SmartAI expansion is restricted to these three self auras.
Catalog comparison against the preserved working baseline changes 14 entities
in seven dungeons, with unrelated attacks, health and placements unchanged.
Focused checks, production build and live evidence are recorded below.
Source details: [stances](ENEMY_STANCES_2026-10-05.md),
[blocking](NPC_BLOCKING_2026-10-05.md). Live report:
[full Stockade](STOCKADE_STANCES_BLOCKING_PLAYTEST_2026-10-05.md).
## Validation
- All 102 checks across the twelve affected Vitest files pass, including actual
imported aura casts, idle preparation, player/companion block results,
exact-boundary expiry, geometry, unsupported packets and source exclusions.
- Ready-five passes seven Vitest and twenty Python checks. The world importer
tests pass seven cases; compiler regeneration passes both strict profiles.
- Independent Luna review confirms formulas, source boundaries, skill applied
once, stance pins and idle timing. Its control-label precision finding is
recorded as the explicit simulator approximation above.
- Production build passes with its content/asset prechecks, 8GB TypeScript/Vite
and compression/release-bundle hooks. An incorrect test type import and a
separate concurrent test's ClassId annotation were corrected before the final
passing build; no runtime behavior changed in those corrections.
- Pre-live release check passes (211 changed paths including unrelated work).
One unrelated file's mixed CRLF/LF was normalized to LF for required hygiene.
Final release check passes 240 changed paths, including concurrent unrelated
work; the count is not a claim that every path belongs to this continuation.
- Frozen full Stockade live validation passes on 5,964 files / 116,405,610 bytes,
aggregate SHA-256
`1fcd021af0ef90c8d994cf1ab853ef0e62f4d4767fa3acaab698b14121194310`.
Mutable dist stayed unchanged during the verified copy; the frozen aggregate
stayed identical before and after live QA.
- Run `20261005-184333429` enters the normal full dungeon as a level-30
Discipline Priest with four Ready companions. The native results screen
confirms all five exact boss IDs, Easy/Normal, at 24:25.4. No observed player
or party deaths or resurrection recoveries occurred; all finish alive.
Natural progression ends at player level 40 / companions 39, within cap 80.
- Live state contains Defensive/Battle and Improved Blocking auras, plus eight
party attacks blocked by hostile NPCs and 141 hostile attacks blocked by the
party. Blocked amounts are retained only for the 33 samples matching the
latest damage event's outcome/raw amount; this is sampled correlation, not
a stronger actor-and-event-linked packet assertion. Remaining outcomes keep
their amount unknown. Deterministic tests supply unobserved boundaries and
melee/player/native-RoM attacker cases.
Reconstruction keys aura applications by instance ID plus application time:
one Defensive, 34 Battle and one preserved Improved Blocking application.
Additional short Improved Blocking applications remain unverified by live
sampling. The corrected wrapper and prepare-only syntax checks pass.
- Root reviewed the 25/50/75-percent scene captures and native full-clear image.
Bodies and weapon/shield silhouettes render; existing overlap/edge occlusion
remains. There are zero page errors and one missing-favicon console 404.
All 2,124 fetched hash-addressed content objects verify. The overall content
manifest changed during the run, so whole-content immutability is not claimed.
The live report records source-provenance and sampling limits, along with the
preserved superseded first attempt.
The run-owned runner/browser have exited and temporary harnesses are removed.