[Milestone M26] Assassin Asset Pipeline & Trap Mechanics (10 skills) #473

Closed
opened 2026-09-25 03:14:24 +00:00 by troytt · 0 comments
Owner

Milestone M26 Completed & Verified

All 10 Assassin Trap Skills and Asset Foundations implemented with authentic Diablo II v1.13c parity:

1. Asset Baking & Pipeline Alignment:

  • 10 Trap Missiles baked via scripts/pack-missiles.ts and registered in src/render/missiles-meta.ts:
    • firetrauma (expansion/FireTraumaMissile), firetraumaground, firetraumaexplode
    • shockfieldair (expansion/caltrops), shockfieldground (Expansion/ShockField)
    • bladefury, bladefuryb, bladefuryc (Expansion/bladefury*)
    • deathsentryexplode (Expansion/dethsentry02)
    • bladeshieldmissile (Expansion/blade_shield_missile)
  • Trap Overlays baked via scripts/pack-overlays.ts and typed in src/render/overlays-meta.ts:
    • blade_shield (Expansion/blade_shield, trans 3)
    • deathsentry_explode (expansion/dethsentry01, trans 3)

2. Core Trap Engine (src/game/skills/assassin-traps.ts):

  • Global 5-Trap Cap: PetType assassintrap max = 5 enforced via TrapManager with strict FIFO eviction on 6th spawn.
  • NextDelay Engine: NextDelayTracker enforcing 4-frame damage immunity on Wake of Fire and 25-frame immunity on Shock Web / Blade Sentinel.
  • Death Sentry Dual-Mode AI: Prioritizes unconsumed corpse in radius (40-80% corpse max HP, 50% physical / 50% fire split) with radius progression 10 + (slvl - 1) subtiles. Automatically falls back to piercing lightning bolt when no corpse exists. Shot scaling: 5 + floor(FireBlast.blvl / 3).
  • Blade Weapon Scaling: srcDam exact scaling:
    • Blade Sentinel: 48/128 = 3/8 (37.5%)
    • Blade Fury: 96/128 = 3/4 (75.0%)
    • Blade Shield: 32/128 = 1/4 (25.0%)
  • Shock Web Clusters: Exact 1.13c missile calculation 6 + floor(slvl / 4) + floor(FB.blvl / 3).

3. Verification & Quality Gate:

  • tests/skills/ass/adv-ass-traps-stress.test.ts: 22/22 passed.
  • All 10 Trap unit tests (skill-251 .. skill-277): 30/30 passed.
  • npm run typecheck: 0 errors.
  • Fast-forward merged to main (880b196) and pushed to origin/main.
### Milestone M26 Completed & Verified All 10 Assassin Trap Skills and Asset Foundations implemented with authentic Diablo II v1.13c parity: #### 1. Asset Baking & Pipeline Alignment: - 10 Trap Missiles baked via `scripts/pack-missiles.ts` and registered in `src/render/missiles-meta.ts`: - `firetrauma` (`expansion/FireTraumaMissile`), `firetraumaground`, `firetraumaexplode` - `shockfieldair` (`expansion/caltrops`), `shockfieldground` (`Expansion/ShockField`) - `bladefury`, `bladefuryb`, `bladefuryc` (`Expansion/bladefury*`) - `deathsentryexplode` (`Expansion/dethsentry02`) - `bladeshieldmissile` (`Expansion/blade_shield_missile`) - Trap Overlays baked via `scripts/pack-overlays.ts` and typed in `src/render/overlays-meta.ts`: - `blade_shield` (`Expansion/blade_shield`, trans 3) - `deathsentry_explode` (`expansion/dethsentry01`, trans 3) #### 2. Core Trap Engine (`src/game/skills/assassin-traps.ts`): - **Global 5-Trap Cap**: PetType `assassintrap` max = 5 enforced via `TrapManager` with strict FIFO eviction on 6th spawn. - **NextDelay Engine**: `NextDelayTracker` enforcing 4-frame damage immunity on Wake of Fire and 25-frame immunity on Shock Web / Blade Sentinel. - **Death Sentry Dual-Mode AI**: Prioritizes unconsumed corpse in radius (40-80% corpse max HP, 50% physical / 50% fire split) with radius progression `10 + (slvl - 1)` subtiles. Automatically falls back to piercing lightning bolt when no corpse exists. Shot scaling: `5 + floor(FireBlast.blvl / 3)`. - **Blade Weapon Scaling**: `srcDam` exact scaling: - Blade Sentinel: 48/128 = 3/8 (37.5%) - Blade Fury: 96/128 = 3/4 (75.0%) - Blade Shield: 32/128 = 1/4 (25.0%) - **Shock Web Clusters**: Exact 1.13c missile calculation `6 + floor(slvl / 4) + floor(FB.blvl / 3)`. #### 3. Verification & Quality Gate: - `tests/skills/ass/adv-ass-traps-stress.test.ts`: 22/22 passed. - All 10 Trap unit tests (`skill-251` .. `skill-277`): 30/30 passed. - `npm run typecheck`: 0 errors. - Fast-forward merged to `main` (`880b196`) and pushed to `origin/main`.
Sign in to join this conversation.
No Label
No Milestone
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#473
No description provided.