forked from phenom/healer-man
Update Healer Man server
This commit is contained in:
1 parent
6114a2295f
commit
69809f7228
593 files changed
+903643
-40774
No files matched your search
@@ -0,0 +1,94 @@
|
||||
# Ordinary Creature Critical Block imports — 2026-10-06
|
||||
|
||||
## Import boundary
|
||||
|
||||
`src/game/enemyBlockAuras.ts` keeps
|
||||
`supportedEnemyBlockAuraDefinition` fail-closed for Critical Block
|
||||
(47294–47296) and Deterrence. The separate
|
||||
`ordinaryCreatureSelfTargetCriticalBlockAuraDefinition` guard admits only
|
||||
Critical Block after the caller supplies an
|
||||
`EnemyNpcCriticalBlockImportProof` for one ordinary Creature self-cast. The
|
||||
defender, caster, and target IDs must be the same nonempty ID; the proof must
|
||||
explicitly identify an ordinary Creature and exclude a native defender, a
|
||||
summon, and a character defender. It also carries the bounded applicability
|
||||
token `azerothcore-e822d718-default-spellmod-path`.
|
||||
|
||||
The guard validates the complete raw spell signature, runtime contract, block
|
||||
chance, and the exact aura-107 sibling list against the reviewed profile/rank
|
||||
row before returning an aura-253 runtime definition. Aura 107 stays present in
|
||||
the source signature and unsupported-effect metadata. Its no-op behavior is
|
||||
specific to the reviewed default core path; a custom aura script/module or a
|
||||
private server override invalidates that applicability proof. The WoW,
|
||||
Ascension, and Epoch labels identify client DBC rows. They do not certify
|
||||
private server overrides for those clients. Player and party casts must never
|
||||
use this full-import guard.
|
||||
|
||||
## Reviewed Spell.dbc signatures
|
||||
|
||||
Each listed effect is type 6, mechanic 0, target A/B 1/0, radius 0, period 0;
|
||||
spell range index is 1, school mask is 1, damage class is 0, duration is
|
||||
permanent (`-1` in the raw signature), and stack amount is 0. The parsed
|
||||
`basePoints` below are the client amount (`Spell.dbc` base-points field plus
|
||||
one). The Spell.dbc hashes and source paths are pinned in
|
||||
`NPC_BLOCK_AURA_PARITY_2026-10-06.md`.
|
||||
|
||||
| Profile | Spell | Aura effects (`auraType:basePoints:miscValue`) |
|
||||
| --- | ---: | --- |
|
||||
| WoW 3.3.5a | 47294 | `253:20:0`, `107:5:7` |
|
||||
| WoW 3.3.5a | 47295 | `253:40:0`, `107:10:7` |
|
||||
| WoW 3.3.5a | 47296 | `253:60:0`, `107:15:7` |
|
||||
| Ascension | 47294 | `253:100:0`, `107:4:7`, `107:8:3` |
|
||||
| Ascension | 47295 | `253:100:0`, `107:7:7`, `107:16:3` |
|
||||
| Ascension | 47296 | `253:100:0`, `107:10:7`, `107:25:3` |
|
||||
| Epoch | 47294 | `253:20:0`, `107:5:7` |
|
||||
| Epoch | 47295 | `253:40:0`, `107:10:7` |
|
||||
| Epoch | 47296 | `253:60:0`, `107:15:7` |
|
||||
|
||||
Aura 253 supplies the modeled critical-block chance. Aura 107 is
|
||||
`SPELL_AURA_ADD_FLAT_MODIFIER`; misc 7 is the spell critical-chance modifier,
|
||||
and Ascension also has misc 3 (`SPELLMOD_EFFECT1`). In the pinned AzerothCore
|
||||
checkout at commit `e822d718322289dd036fb2daf8867ba41283bf9a`,
|
||||
`SpellAuraEffects.cpp:780` sends aura spell modifiers through `ApplySpellMod`.
|
||||
`ApplySpellMod` returns at lines 813–816 when the target is not a player, so
|
||||
these aura-107 spell modifiers do not apply to an ordinary Creature on that
|
||||
default path. This evidence does not cover custom aura scripts, custom modules,
|
||||
or external server changes.
|
||||
|
||||
## Source assignment availability
|
||||
|
||||
The pinned AzerothCore base `creature_template_spell.sql` dump and checked
|
||||
`db_world` SQL updates contain no `Spell` assignment for 47294, 47295, or
|
||||
47296. This pass adds an importer guard and its evidence only; it does not
|
||||
assign Critical Block to a creature. A real source creature assignment is
|
||||
still required before any NPC receives the buff. Do not infer or fabricate one
|
||||
from the player talent spell rows.
|
||||
|
||||
Deterrence remains outside the full importer because its source signatures
|
||||
also contain effects (including aura 185 or aura 27) that are not represented
|
||||
by ordinary NPC block inputs.
|
||||
|
||||
## Focused coverage
|
||||
|
||||
`src/game/enemyBlockAuras.test.ts` covers all three ranks in all three client
|
||||
profiles, missing and malformed proof, mismatched self-target IDs, native,
|
||||
summoned, and character-defender exclusions, the pinned applicability token,
|
||||
generic importer fail-closed behavior, Deterrence exclusion, and raw signature
|
||||
drift. The focused command is:
|
||||
|
||||
```text
|
||||
npx vitest run src/game/enemyBlockAuras.test.ts
|
||||
```
|
||||
|
||||
`combatStore.ts` uses this guard only for an ordinary source Creature's
|
||||
self-target descriptor with a known template entry. The compiler pins all
|
||||
three rank signatures in Ascension/Epoch, including aura-107 siblings, and
|
||||
validates them even when no source NPC assignment uses them. Its duration-index
|
||||
0 parser sentinel is 0; the guarded runtime definition normalizes the source
|
||||
permanent aura to an `expiresAt=null` lifetime.
|
||||
|
||||
`enemyCriticalBlockImport.integration.test.ts` passes two actual runtime tests:
|
||||
a clearly labeled synthetic self-cast applies the permanent aura without
|
||||
damage, produces a deterministic critical block, and clears on reset; native,
|
||||
summoned, character and non-self fixtures are excluded. This synthetic fixture
|
||||
does not establish a real creature assignment. Regenerated campaign data is
|
||||
byte-for-byte unchanged from this pass's starting snapshot.
|
||||
Reference in new issue
Block a user