[Skill #046] [SOR] Blaze (1.13c Parity) #200

Closed
opened 2026-09-22 02:40:05 +00:00 by troytt · 3 comments
Owner

Diablo II: Lord of Destruction v1.13c Skill Parity Specification

Field Value
Skill ID 46 (#046)
Skill Name Blaze (skilldesc: blaze)
Class sor (Sorceress)
Required Level (reqlevel) 12
Prerequisites (reqskill1..3) Inferno, -, -
Isolated Implementation Module src/game/skills/impl/sor/skill-046-blaze.ts
Isolated Vitest Suite tests/skills/sor/skill-046-blaze.test.ts

1. Authoritative 1.13c Skills.txt Function & Handler Dispatch

Function Slot 1.13c Value
srvstfunc (Server Start / Pre-Cast) -
srvdofunc (Server Action Frame 0x01/0x02) 23
srvprgfunc1..3 (Progressive Charge Release) - / - / -
cltstfunc / cltdofunc (Client Start / Action) - / -
cltprgfunc1..3 (Client Progressive Release) - / - / -
passive / checkfunc passive=- / checkfunc=-
auraevent1 / auraeventfunc1 - / -

2. Associated Missiles, States, Auras, Curses & Summons

Subsystem 1.13c Configuration
Server Missiles (srvmissile / a..c) - / a:blaze, b:blaze, c:blaze
Client Missiles (cltmissile / cltmissilea) blaze / firewall
Aura / Buff States (aurastate / auratgtstate) self:blaze / tgt:-
Aura / Buff Stats (aurastat1..3) -, -, -
Passive State & Stats (passivestate / passivestat1..3) state:- / -, -, -
Curse Priority (cursetype) -
Summon / Pet (summon / pettype / petmax) mon:- / type:- / max:-

3. 1.13c Base Numerical & Synergy Formulas (Patch_D2.mpq)

  • Mana Cost: mana=22, lvlmana=1 (256-fixed-point << HitShift)
  • Physical / Elemental Damage: MinDam=-, MaxDam=-, EType=fire, EMin=4, EMax=8, ELen=-
  • AST calc1..4: calc1=-, calc2=-, calc3=-, calc4=-
  • Synergy Calculations (blvl strictly base allocated STAT_SKILLPTS only):
    • EDmgSymPerCalc: skill('Warmth'.blvl)*par8+skill('Fire Wall'.blvl)*par7
    • DmgSymPerCalc: -
    • ELenSymPerCalc: -

4. R3 Verification & Merge Checklist

  • Isolated Git Worktree: Created via git worktree add ../wt-skill-46 -b feat/skill-46 from main.
  • 1.13c Implementation: src/game/skills/impl/sor/skill-046-blaze.ts implements exact 1.13c srvstfunc/srvdofunc/srvprgfunc & numerical evaluation.
  • Automated Unit & Numerical Tests (slvl 1, 10, 20 + blvl Synergies): tests/skills/sor/skill-046-blaze.test.ts passes 100% in Vitest verifying ManaCost, MinDmg, MaxDmg, ToHit, Duration, Radius, synergy scaling, and runtime combat/missile/state/summon effect.
  • Real-Browser Casting & Screenshot: Executed in headless Chromium (acts.html?arena=1&class=sor&skill=46&slvl=20&autocast=1) with zero console/page errors and PNG screenshot attached to this Issue.
  • Merge & Cleanup: Merged to main with fixes #<issue_number>, pushed to origin/main, verified Issue is closed, and removed worktree ../wt-skill-46 + branch feat/skill-46.
## Diablo II: Lord of Destruction v1.13c Skill Parity Specification | Field | Value | |---|---| | **Skill ID** | `46` (`#046`) | | **Skill Name** | **Blaze** (`skilldesc: blaze`) | | **Class** | `sor` (Sorceress) | | **Required Level (`reqlevel`)** | `12` | | **Prerequisites (`reqskill1..3`)** | `Inferno`, `-`, `-` | | **Isolated Implementation Module** | `src/game/skills/impl/sor/skill-046-blaze.ts` | | **Isolated Vitest Suite** | `tests/skills/sor/skill-046-blaze.test.ts` | --- ### 1. Authoritative 1.13c `Skills.txt` Function & Handler Dispatch | Function Slot | 1.13c Value | |---|---| | **`srvstfunc`** (Server Start / Pre-Cast) | `-` | | **`srvdofunc`** (Server Action Frame `0x01`/`0x02`) | `23` | | **`srvprgfunc1..3`** (Progressive Charge Release) | `-` / `-` / `-` | | **`cltstfunc` / `cltdofunc`** (Client Start / Action) | `-` / `-` | | **`cltprgfunc1..3`** (Client Progressive Release) | `-` / `-` / `-` | | **`passive` / `checkfunc`** | `passive=-` / `checkfunc=-` | | **`auraevent1` / `auraeventfunc1`** | `-` / `-` | ### 2. Associated Missiles, States, Auras, Curses & Summons | Subsystem | 1.13c Configuration | |---|---| | **Server Missiles (`srvmissile` / `a..c`)** | `-` / `a:blaze`, `b:blaze`, `c:blaze` | | **Client Missiles (`cltmissile` / `cltmissilea`)** | `blaze` / `firewall` | | **Aura / Buff States (`aurastate` / `auratgtstate`)** | `self:blaze` / `tgt:-` | | **Aura / Buff Stats (`aurastat1..3`)** | `-`, `-`, `-` | | **Passive State & Stats (`passivestate` / `passivestat1..3`)** | `state:-` / `-`, `-`, `-` | | **Curse Priority (`cursetype`)** | `-` | | **Summon / Pet (`summon` / `pettype` / `petmax`)** | `mon:-` / `type:-` / `max:-` | ### 3. 1.13c Base Numerical & Synergy Formulas (`Patch_D2.mpq`) - **Mana Cost**: `mana=22`, `lvlmana=1` (256-fixed-point `<< HitShift`) - **Physical / Elemental Damage**: `MinDam=-`, `MaxDam=-`, `EType=fire`, `EMin=4`, `EMax=8`, `ELen=-` - **AST `calc1..4`**: `calc1=-`, `calc2=-`, `calc3=-`, `calc4=-` - **Synergy Calculations (`blvl` strictly base allocated `STAT_SKILLPTS` only)**: - `EDmgSymPerCalc`: `skill('Warmth'.blvl)*par8+skill('Fire Wall'.blvl)*par7` - `DmgSymPerCalc`: `-` - `ELenSymPerCalc`: `-` --- ### 4. R3 Verification & Merge Checklist - [ ] **Isolated Git Worktree**: Created via `git worktree add ../wt-skill-46 -b feat/skill-46` from `main`. - [ ] **1.13c Implementation**: `src/game/skills/impl/sor/skill-046-blaze.ts` implements exact 1.13c `srvstfunc`/`srvdofunc`/`srvprgfunc` & numerical evaluation. - [ ] **Automated Unit & Numerical Tests (`slvl` 1, 10, 20 + `blvl` Synergies)**: `tests/skills/sor/skill-046-blaze.test.ts` passes 100% in Vitest verifying `ManaCost`, `MinDmg`, `MaxDmg`, `ToHit`, `Duration`, `Radius`, synergy scaling, and runtime combat/missile/state/summon effect. - [ ] **Real-Browser Casting & Screenshot**: Executed in headless Chromium (`acts.html?arena=1&class=sor&skill=46&slvl=20&autocast=1`) with zero console/page errors and PNG screenshot attached to this Issue. - [ ] **Merge & Cleanup**: Merged to `main` with `fixes #<issue_number>`, pushed to `origin/main`, verified Issue is `closed`, and removed worktree `../wt-skill-46` + branch `feat/skill-46`.
troytt added this to the All Player Skills (v1.13c Parity) milestone 2026-09-22 02:40:05 +00:00
Author
Owner

✅ Completed: [Skill #046] Blaze (SOR) — 1.13c Parity Verified

1. Isolated Worktree & Module Implementation

  • Worktree & Branch: ../wt-skill-046 (feat/skill-046)
  • Skill Module: src/game/skills/impl/sor/skill-046-blaze.ts
  • Vitest Suite: tests/skills/sor/skill-046-blaze.test.ts
  • 1.13c Dispatch: srvstfunc=0, srvdofunc=23, missile=blaze, state=blaze, summon=none

2. 1.13c Numerical & Synergy Verification Table

Metric slvl = 1 slvl = 10 slvl = 20 (0 Syn) slvl = 20 (+20 blvl Syn)
Mana Cost (usmc) 11 (2816) 15 (3968) 20 (5248) 20 (5248)
Phys Dmg (Min-Max) 0-0 0-0 0-0 0-0
Elem Dmg (Min-Max) 0-0 (fire) 1-1 (fire) 3-3 (fire) 6-6 (+80%)
AR % / Duration / Radius +0% / 120f / 50 +0% / 359f / 4550 +0% / 430f / 9550 +0% / 430f / 9550

3. Headless Chromium (chromium-1228) Runtime Telemetry & Screenshot

  • Arena State: ready=true, classCode=sor (so), castCount=1, anim=SC:7, totalDamageDealt=20, consoleErrors=0
  • Captured PNG Size: 587594 bytes

Skill #046 Blaze

### ✅ Completed: [Skill #046] Blaze (`SOR`) — 1.13c Parity Verified #### 1. Isolated Worktree & Module Implementation - **Worktree & Branch**: `../wt-skill-046` (`feat/skill-046`) - **Skill Module**: `src/game/skills/impl/sor/skill-046-blaze.ts` - **Vitest Suite**: `tests/skills/sor/skill-046-blaze.test.ts` - **1.13c Dispatch**: `srvstfunc=0`, `srvdofunc=23`, `missile=blaze`, `state=blaze`, `summon=none` #### 2. 1.13c Numerical & Synergy Verification Table | Metric | `slvl = 1` | `slvl = 10` | `slvl = 20` (0 Syn) | `slvl = 20` (+20 `blvl` Syn) | | :--- | :---: | :---: | :---: | :---: | | **Mana Cost (`usmc`)** | `11` (`2816`) | `15` (`3968`) | `20` (`5248`) | `20` (`5248`) | | **Phys Dmg (`Min-Max`)** | `0-0` | `0-0` | `0-0` | `0-0` | | **Elem Dmg (`Min-Max`)** | `0-0` (`fire`) | `1-1` (`fire`) | `3-3` (`fire`) | `6-6` (+80%) | | **AR % / Duration / Radius** | `+0%` / `120f` / `50` | `+0%` / `359f` / `4550` | `+0%` / `430f` / `9550` | `+0%` / `430f` / `9550` | #### 3. Headless Chromium (`chromium-1228`) Runtime Telemetry & Screenshot - **Arena State**: `ready=true`, `classCode=sor` (`so`), `castCount=1`, `anim=SC:7`, `totalDamageDealt=20`, `consoleErrors=0` - **Captured PNG Size**: `587594` bytes ![Skill #046 Blaze](https://git.projectdiablo2.cn/attachments/3dc1e355-8018-4965-8ac2-e8ee3fa08bf4)
Author
Owner

✅ Completed: [Skill #046] Blaze (SOR) — 1.13c Parity Verified

1. Isolated Worktree & Module Implementation

  • Worktree & Branch: ../wt-skill-046 (feat/skill-046)
  • Skill Module: src/game/skills/impl/sor/skill-046-blaze.ts
  • Vitest Suite: tests/skills/sor/skill-046-blaze.test.ts
  • 1.13c Dispatch: srvstfunc=0, srvdofunc=23, missile=blaze, state=blaze, summon=none

2. 1.13c Numerical & Synergy Verification Table

Metric slvl = 1 slvl = 10 slvl = 20 (0 Syn) slvl = 20 (+20 blvl Syn)
Mana Cost (usmc) 11 (2816) 15 (3968) 20 (5248) 20 (5248)
Phys Dmg (Min-Max) 0-0 0-0 0-0 0-0
Elem Dmg (Min-Max) 0-0 (fire) 1-1 (fire) 3-3 (fire) 6-6 (+80%)
AR % / Duration / Radius +0% / 120f / 50 +0% / 359f / 4550 +0% / 430f / 9550 +0% / 430f / 9550

3. Headless Chromium (chromium-1228) Runtime Telemetry & Screenshot

  • Arena State: ready=true, classCode=sor (so), castCount=1, anim=SC:7, totalDamageDealt=20, consoleErrors=0
  • Captured PNG Size: 587594 bytes

Skill #046 Blaze

### ✅ Completed: [Skill #046] Blaze (`SOR`) — 1.13c Parity Verified #### 1. Isolated Worktree & Module Implementation - **Worktree & Branch**: `../wt-skill-046` (`feat/skill-046`) - **Skill Module**: `src/game/skills/impl/sor/skill-046-blaze.ts` - **Vitest Suite**: `tests/skills/sor/skill-046-blaze.test.ts` - **1.13c Dispatch**: `srvstfunc=0`, `srvdofunc=23`, `missile=blaze`, `state=blaze`, `summon=none` #### 2. 1.13c Numerical & Synergy Verification Table | Metric | `slvl = 1` | `slvl = 10` | `slvl = 20` (0 Syn) | `slvl = 20` (+20 `blvl` Syn) | | :--- | :---: | :---: | :---: | :---: | | **Mana Cost (`usmc`)** | `11` (`2816`) | `15` (`3968`) | `20` (`5248`) | `20` (`5248`) | | **Phys Dmg (`Min-Max`)** | `0-0` | `0-0` | `0-0` | `0-0` | | **Elem Dmg (`Min-Max`)** | `0-0` (`fire`) | `1-1` (`fire`) | `3-3` (`fire`) | `6-6` (+80%) | | **AR % / Duration / Radius** | `+0%` / `120f` / `50` | `+0%` / `359f` / `4550` | `+0%` / `430f` / `9550` | `+0%` / `430f` / `9550` | #### 3. Headless Chromium (`chromium-1228`) Runtime Telemetry & Screenshot - **Arena State**: `ready=true`, `classCode=sor` (`so`), `castCount=1`, `anim=SC:7`, `totalDamageDealt=20`, `consoleErrors=0` - **Captured PNG Size**: `587594` bytes ![Skill #046 Blaze](https://git.projectdiablo2.cn/attachments/d8aa8d64-b454-474d-a2be-e9d8e1832d18)
Author
Owner

7-Dimensional Verification Report — Blaze (Skill ID: 46)

  • Dimension 1 (Static Data Table Parsing): Verified Skills.txt row 46 and Missiles.txt ID 67 (blaze). Range: 90, LevRange: 25, AnimLen: 37, AnimSpeed: 16, Trans: 1, Light: 5.
  • Dimension 2 (Pre-baked Visual Assets): Pre-baked visual assets public/missiles/blaze.png (139KB) and public/missiles/groundfirebig.png (139KB) verified with atlas metadata BLAZE_META (37 frames).
  • Dimension 3 (Kinematics & Buff / Footstep Duration): Buff duration formula floor((110 * slvl * 450) / (100 * (slvl + 6))) + 50 (120f at slvl 1, 359f at slvl 10, 430f at slvl 20). Patch duration 90 + slvl * 25 (115f at slvl 1, 340f at slvl 10, 590f at slvl 20). +30% FRW boost while active. Footstep patch drop every >= 24px moved.
  • Dimension 4 (Collision & Ground Ticks): Continuous per-frame damage with NextDelay = 0. Self-hit immunity strictly enforced (caster does not take damage from their own blaze patch). Enemies take continuous damage.
  • Dimension 5 (Damage Scaling & Synergies): Exact 1.13c 5-band damage progression in 256ths precision (EMin 4, EMax 8, bands [2, 3, 4, 6, 9]). Synergies: Warmth (+4%/lvl), Fire Wall (+1%/lvl) with hard-point synergy enforcement (soft points yield 0 synergy).
  • Dimension 6 (Mana Progression & Cooldown): Mana progression floor((22 + slvl - 1) * 0.5) (11 at slvl 1, 15 at slvl 10, 20 at slvl 20). Cooldown strictly 0 frames.
  • Dimension 7 (Invariants & Integration): BATCH1_SKILLS length invariant strictly maintained at 38. Standalone calculation decoupling into src/game/engine/missile-engine.ts. Zero runtime MPQ queries. All tests passing 100%.
### 7-Dimensional Verification Report — Blaze (Skill ID: 46) - **Dimension 1 (Static Data Table Parsing)**: Verified Skills.txt row 46 and Missiles.txt ID 67 (blaze). Range: 90, LevRange: 25, AnimLen: 37, AnimSpeed: 16, Trans: 1, Light: 5. - **Dimension 2 (Pre-baked Visual Assets)**: Pre-baked visual assets `public/missiles/blaze.png` (139KB) and `public/missiles/groundfirebig.png` (139KB) verified with atlas metadata `BLAZE_META` (37 frames). - **Dimension 3 (Kinematics & Buff / Footstep Duration)**: Buff duration formula `floor((110 * slvl * 450) / (100 * (slvl + 6))) + 50` (120f at slvl 1, 359f at slvl 10, 430f at slvl 20). Patch duration `90 + slvl * 25` (115f at slvl 1, 340f at slvl 10, 590f at slvl 20). +30% FRW boost while active. Footstep patch drop every >= 24px moved. - **Dimension 4 (Collision & Ground Ticks)**: Continuous per-frame damage with NextDelay = 0. Self-hit immunity strictly enforced (caster does not take damage from their own blaze patch). Enemies take continuous damage. - **Dimension 5 (Damage Scaling & Synergies)**: Exact 1.13c 5-band damage progression in 256ths precision (EMin 4, EMax 8, bands [2, 3, 4, 6, 9]). Synergies: Warmth (+4%/lvl), Fire Wall (+1%/lvl) with hard-point synergy enforcement (soft points yield 0 synergy). - **Dimension 6 (Mana Progression & Cooldown)**: Mana progression `floor((22 + slvl - 1) * 0.5)` (11 at slvl 1, 15 at slvl 10, 20 at slvl 20). Cooldown strictly 0 frames. - **Dimension 7 (Invariants & Integration)**: `BATCH1_SKILLS` length invariant strictly maintained at 38. Standalone calculation decoupling into `src/game/engine/missile-engine.ts`. Zero runtime MPQ queries. All tests passing 100%.
Sign in to join this conversation.
No Label
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: troytt/diablo2-web#200
No description provided.