Commit Graph

57 Commits

Author SHA1 Message Date
troytt ebea702572 fix(skill): change Enchant cast overlay to authentic one-shot playback (Fixes #438) 2026-09-24 16:22:05 +00:00
troytt f12fd5674a fix(skill): extend Meteor ground fire duration and add extinction decay animation (Fixes #437) 2026-09-24 16:17:38 +00:00
troytt 0aa7c0a121 fix(skill): implement Hydra summon cap and authentic entity visuals (Fixes #436) 2026-09-24 16:10:44 +00:00
troytt f2b78c80de fix(test): use missileType in charged bolt kinematics test 2026-09-24 16:02:45 +00:00
troytt 4937f75131 test(missile): clean typecheck error in charged bolt kinematics test 2026-09-24 15:58:24 +00:00
troytt e33738d394 fix(missile): implement authentic Charged Bolt snake-like random walk kinematics (Fixes #435) 2026-09-24 15:55:57 +00:00
troytt a3f5013481 fix(skill): restore Lightning and Chain Lightning continuous beam and arc visuals (Fixes #434) 2026-09-24 15:12:39 +00:00
troytt 967a545116 fix(skill): implement Thunder Storm ambient aura and sky strike (Fixes #433) 2026-09-24 14:29:45 +00:00
troytt d9ad6df63f fix(skill): preserve buff visual persistence and enforce armor mutual exclusion (Fixes #432) 2026-09-24 13:55:10 +00:00
troytt 0e70ad1662 fix(skill): implement Frost Nova 64-missile radial spread and slow (Fixes #431) 2026-09-24 13:18:31 +00:00
troytt 71466df5e7 fix(skill): implement Glacial Spike explosion and 64px AoE freeze (Fixes #430) 2026-09-24 12:23:39 +00:00
troytt 51acb0effa test(skills): persist M4 fire and M5 cross-tree adversarial stress test suites on main 2026-09-24 04:28:37 +00:00
troytt 2e061b3257 feat(skills): implement Enchant (52) and Fire Mastery (61) with authentic 1.13c parity
- Implement 1.13c Enchant 5-band weapon fire damage progression (HitShift 7, Warmth 9%/blvl synergy)
- Implement Enchant Attack Rating bonus (20% + 9%/slvl) and duration (3600 + 600/slvl frames)
- Implement Fire Mastery passive fire damage bonus (30% + 7%/slvl) in stat-list and combat-pipeline
- Implement authentic Sorceress melee double-dip and ranged 33% weapon fire damage penalty
- Enforce fire immunity preservation (res >= 100% takes 0 fire damage, Fire Mastery cannot pierce)
- Wire Enchant cast skill (52) and overlay animation in act-scene and engine
- Maintain BATCH1_SKILLS invariant strictly at 38
- Add comprehensive 7-dimensional verification suites for Enchant and Fire Mastery (31 tests passing)
- Closes #206, Closes #215
2026-09-24 03:59:47 +00:00
troytt 6aa951e8cc fix(skills): remediate Milestone 3 gate failures for Inferno range and channeled mana drain
- Fix calculateInfernoRangePx to authentic 1.13c ratio: calculateInfernoRange(slvl) * 32 (32 px/subtile).
- Update act-scene.ts flame stream ttl calculation to Math.min(60, Math.round(rangePx / speed)) allowing authentic travel reach.
- Connect continuous channeled mana drain in act-scene.ts: drain (36 + slvl - 1) * 4 / 256 mana per frame with fractional accumulator, stopping channel on mana depletion.
- Update tests/skills/sor/skill-041-inferno.test.ts assertions to 320/752/1232 px and add runtime continuous mana drain tests.
- Persist adversarial stress test suites (adv-fire-m3-math-stress.test.ts and adv-fire-m3-geom-stress.test.ts).
2026-09-24 03:20:48 +00:00
troytt df4c5b66b0 feat(skills): implement Fire Wall, Blaze, and Inferno with 1.13c parity (closes #205, closes #200, closes #195) 2026-09-24 02:46:20 +00:00
troytt 10ef14b5b2 test(skills): persist M2 cold adversarial stress test suites on main 2026-09-24 02:44:18 +00:00
troytt 375f3296f9 feat(skills): implement Ice Blast, Glacial Spike, and Cold Mastery with 1.13c parity (closes #199, closes #209, closes #219) 2026-09-24 01:43:59 +00:00
troytt 2d6bbb93a2 fix(sor-cold): remediate number overload contract and wire reactive combat hooks (Issue #194, #204, #214)
- Fix calculateShiverArmorDamage and calculateChillingArmorDamage number overload to treat number as allocated synergy points (synPoints) with 1.13c percentage scaling, supporting explicit options.synMultiplier override
- Guard duration and chill/freeze length calculators against negative synergy inputs with Math.max(0, synPoints)
- Wire reactive combat hooks in combat.ts (tickMonsters/updateMonsters and hitPlayerWithMissile):
  * Frozen Armor: reactively freezes attacking monster upon taking physical melee damage
  * Shiver Armor: proactively chills and damages attacking monster upon melee attack initiation
  * Chilling Armor: reflects retaliatory chillingarmorbolt on incoming ranged missiles with returnFire=false
- Wire proactive and reactive combat events in combat-pipeline.ts (executeSUnitDmg):
  * Dispatches attackedinmelee proactively before hit resolution
  * Dispatches damagedinmelee post-damage on melee hits
  * Dispatches hitbymissile post-damage on missile hits
  * Exposes attackerStatesApplied, attackerColdDamage256, reflectedPhys256, and spawnedMissiles on SUnitDmgOutcome
- Add comprehensive remediation test suite tests/skills/sor/cold-armors-remediation.test.ts
2026-09-24 01:06:25 +00:00
troytt e7d105dce0 feat(skills): implement Frozen Armor, Shiver Armor, and Chilling Armor with 1.13c parity (closes #194, closes #204, closes #214) 2026-09-24 00:29:57 +00:00
troytt a0567c2473 feat(skills): implement Thunder Storm, Energy Shield, and Lightning Mastery with 1.13c parity (closes #211, closes #212, closes #217)
- Thunder Storm (57):
  * Authentic 1.13c duration: 800 + (slvl - 1) * 200 frames (Param1=800, Param2=200).
  * Hyperbolic cadence decay: Math.max(25, 125 - Math.floor((110 * slvl) / (slvl + 6))) frames.
  * Range: 17 subtiles = 340px (Param7=17).
  * 5-band piecewise lightning damage (1-100 base, +10/+10/+11 across bands).
  * Authentic missile 'thunderstorm1' (ID 166, CelFile 'LightningboltBig', animLen 8) and cast overlay 'light_cast_2'.
  * Zero synergies in 1.13c; multiplicative scaling with Lightning Mastery.

- Energy Shield (58):
  * Authentic duration: 3600 + (slvl - 1) * 1500 frames (Param1=3600, Param2=1500).
  * 1.13c piecewise absorb percentage: 20% lvl 1, +5% lvl 2-8, +2% lvl 9-16, +1% lvl 17+, strictly hard capped at 95% (slvl 40).
  * Telekinesis hard synergy ratio: (32 - Math.min(20, Math.max(0, tkBlvl))) / 16 (2.0 down to 0.75). Hard points only (blvl); soft points ignored.
  * Absorbs raw incoming damage BEFORE player resistances are applied. Remainder mitigated by player resistances.
  * Poison (elemType === 'pois' || isPoison) and Open Wounds strictly bypass ES directly to HP.
  * Mana depletion drains mana to 0, collapses shield, and spills unabsorbed damage to HP.
  * Overlays: 'energyshield' looping body overlay and 'energyshieldhit0' directional hit overlay.

- Lightning Mastery (63):
  * Passive formula: 50 + (slvl - 1) * 12 percent (+50% at lvl 1, +62% at lvl 2, +158% at lvl 10, +278% at lvl 20, +518% at lvl 40).
  * Multiplicative scaling with synergies across all 5 lightning skills (Charged Bolt, Lightning, Chain Lightning, Nova, Thunder Storm): Final = Math.floor(Base * (1 + Syn/100) * (1 + Mastery/100)).
  * StatList accrued stat 'passive_ltng_mastery' integration and combat pipeline executeSUnitDmg support.

- 7-Dimensional Vitest Suites:
  * Full 7-D coverage for skill-057-thunder-storm.test.ts (15 tests passing).
  * Full 7-D coverage for skill-058-energy-shield.test.ts (15 tests passing).
  * Full 7-D coverage for skill-063-lightning-mastery.test.ts (17 tests passing).
  * Invariants: BATCH1_SKILLS length strictly 38, zero runtime MPQ queries.
  * Full repo test suite passing (414 test files, 4213 tests passing, 0 errors).
2026-09-23 20:33:24 +00:00
troytt 728d641646 feat(skills): implement Charged Bolt (38) and Telekinesis (43) with 1.13c parity (#192, #197)
- Fix double-append bug in src/game/engine.ts lines 446-449
- Implement Charged Bolt (38) kinematics, NextDelay 0, 5-band damage, 32-entry discrete orthogonal jitter, and +6% Lightning synergy
- Implement Telekinesis (43) 600px range, remote object triggering, ground item pickup whitelist, 1-2 damage, 35% knockback, 35 stun ticks, and Energy Shield hard synergy
- Add comprehensive 7-Dimensional test suites for Charged Bolt (38) and Telekinesis (43)
- Verify 100% pass across all 4,175 unit tests and clean typecheck
2026-09-23 19:30:47 +00:00
troytt 6fefc684ef feat(skills): implement Sorceress Lightning (49) & Chain Lightning (53) with 1.13c parity (closes #203, closes #207)
- Implement 1.13c piecewise 5-band damage and +8%/+4% synergies for Lightning and Chain Lightning
- Implement authentic missile kinematics, NextDelay 4, ping-pong retargeting excluding immediate victim, and infinite beam piercing
- Wire casting overlays, 0 frame cooldown, and 1.13c mana formulas in missile-engine.ts, skills.ts, and act-scene.ts
- Add comprehensive 7-dimensional verification test suites in tests/skills/sor/ (40/40 passing)
- Full repo test suite passing: 4,140 passed, 0 failed, 0 typecheck errors
2026-09-23 18:24:28 +00:00
troytt 0e0cd3adee feat(skills): harden 1.13c Nova and Static Field against adversarial probes (fixes #196, #202)
- Fix ghost property resistLightning to respect monster resistances and lightningResist in act-scene.ts
- Wire monster resistances across MonsterStats and applyEliteModifiers in combat.ts and monsters.ts
- Clamp Static Field damage non-lethally post-resistance scaling and protect against difficulty floor underflow in missile-engine.ts
- Implement continuous sub-step collision and raycast line-of-sight in missile-engine.ts and skills.ts
- Add persistent NextDelay tracking on GameEngine with automatic per-tick expired entry pruning
- Align Nova (64 bolts, aspect ratio 0.5, NextDelay 4) and Static Field in executeSkillCore113c
2026-09-23 17:14:53 +00:00
troytt 35b926749e feat(skills): implement 1.13c Nova and Static Field with 7-D test verification (fixes #196, #202) 2026-09-23 16:27:57 +00:00
troytt 84c7730382 fix(skills): implement falling meteor dual sprite trajectory, frame indexing, exact tick-60 detonation, and wall collision
- Dual sprite falling trajectory: render falling meteor fireball (meteor) and flame tail (meteortail) descending diagonally during 60-tick countdown with additive blending
- Animation frame indexing: meteorcenter advances monotonically starting at frame 0, meteorfire plays emergence once (0..11) then loops 12..36 indefinitely
- Detonation timing: center expires and detonates at tick 60 exact (isExpired when ttl <= 1)
- Wall collision: drop meteorfire ground patches landing inside solid walls in MissileEngine
- Full test coverage: Dimensions 8 & 9 added to skill-056-meteor.test.ts, stress and adversarial test suites verified
2026-09-23 13:06:24 +00:00
troytt 96eee679b4 feat(skills): implement Skill #056 Meteor with 1.13c ground truth parity (Ref #401) 2026-09-23 12:36:17 +00:00
troytt 39de19364f fix(skills): route Blizzard damage calculation, eliminate shard silent fallback, and correct blizzardexplode3 celFile (Ref #400) 2026-09-23 11:35:28 +00:00
troytt 3fade77d76 feat(skill-065): implement 1.13c Cold Mastery module and Vitest suite (#219) 2026-09-22 03:43:59 +00:00
troytt 8ef345a8a1 feat(skill-064): implement 1.13c Frozen Orb module and Vitest suite (#218) 2026-09-22 03:43:57 +00:00
troytt 469ee48b7b feat(skill-063): implement 1.13c Lightning Mastery module and Vitest suite (#217) 2026-09-22 03:43:55 +00:00
troytt 4227c565ae feat(skill-062): implement 1.13c Hydra module and Vitest suite (#216) 2026-09-22 03:43:54 +00:00
troytt 8bd5e0f176 feat(skill-061): implement 1.13c Fire Mastery module and Vitest suite (#215) 2026-09-22 03:43:52 +00:00
troytt 1124830988 feat(skill-060): implement 1.13c Chilling Armor module and Vitest suite (#214) 2026-09-22 03:43:50 +00:00
troytt 084e1fd30a feat(skill-059): implement 1.13c Blizzard module and Vitest suite (#213) 2026-09-22 03:43:47 +00:00
troytt 2df5fdae46 feat(skill-058): implement 1.13c Energy Shield module and Vitest suite (#212) 2026-09-22 03:43:45 +00:00
troytt e9250c44ef feat(skill-057): implement 1.13c Thunder Storm module and Vitest suite (#211) 2026-09-22 03:43:43 +00:00
troytt 3246c1f73c feat(skill-056): implement 1.13c Meteor module and Vitest suite (#210) 2026-09-22 03:43:41 +00:00
troytt 8a6981f193 feat(skill-055): implement 1.13c Glacial Spike module and Vitest suite (#209) 2026-09-22 03:43:40 +00:00
troytt 0e7dfe1db4 feat(skill-054): implement 1.13c Teleport module and Vitest suite (#208) 2026-09-22 03:43:38 +00:00
troytt 13520d6d3c feat(skill-053): implement 1.13c Chain Lightning module and Vitest suite (#207) 2026-09-22 03:43:36 +00:00
troytt 9700297af4 feat(skill-052): implement 1.13c Enchant module and Vitest suite (#206) 2026-09-22 03:43:35 +00:00
troytt 9ce66a70fa feat(skill-051): implement 1.13c Fire Wall module and Vitest suite (#205) 2026-09-22 03:43:33 +00:00
troytt 3f32b5029e feat(skill-050): implement 1.13c Shiver Armor module and Vitest suite (#204) 2026-09-22 03:43:31 +00:00
troytt 195038b35a feat(skill-049): implement 1.13c Lightning module and Vitest suite (#203) 2026-09-22 03:43:29 +00:00
troytt 53aadb174c feat(skill-048): implement 1.13c Nova module and Vitest suite (#202) 2026-09-22 03:43:28 +00:00
troytt 74be483943 feat(skill-047): implement 1.13c Fire Ball module and Vitest suite (#201) 2026-09-22 03:43:26 +00:00
troytt 296766e1c1 feat(skill-046): implement 1.13c Blaze module and Vitest suite (#200) 2026-09-22 03:43:24 +00:00
troytt b8b4799899 feat(skill-045): implement 1.13c Ice Blast module and Vitest suite (#199) 2026-09-22 03:43:22 +00:00
troytt c95d27711b feat(skill-044): implement 1.13c Frost Nova module and Vitest suite (#198) 2026-09-22 03:43:21 +00:00
troytt 8b665cb632 feat(skill-043): implement 1.13c Telekinesis module and Vitest suite (#197) 2026-09-22 03:43:19 +00:00