feat: implement DoT/debuff runtime system (spec §6, AC-12, AC-13)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m18s

- Add ActiveEffect, EffectType types to game.ts; activeEffects + effectiveArmor on EnemyState
- Add SpellOnHitEffect + onHitEffect field to SpellDefinition
- Wire onHitEffect to fire (burn), death (curse), lightning (armor_corrode), frost (freeze), soul (bypassArmor burn)
- Add applyOnHitEffect() — applies on-hit effect on successful spell hit (spec §6.2)
- Add processDoTPhase() — ticks all active effects after weapon/golem attacks (spec §6.3)
- Add bypassArmor/bypassBarrier support in applyEnemyDefenses() (AC-13)
- Export standalone applyEnemyDefenses from combat-tick.ts for DoT pipeline
- Split DoT runtime into separate dot-runtime.ts (135 lines) to keep combat-actions.ts under 400 lines
- Update all enemy generation sites with activeEffects/effectiveArmor defaults
- Fix test helpers for new required fields

All 921 tests pass (45 test files)
This commit is contained in:
2026-06-03 18:38:01 +02:00
parent a2cdf6d21c
commit b506f0bcc3
30 changed files with 3272 additions and 71 deletions
+31 -4
View File
@@ -1,6 +1,6 @@
{
"_meta": {
"generated": "2026-06-02T14:39:44.895Z",
"generated": "2026-06-03T13:40:50.953Z",
"description": "Import dependency graph for src/lib/game. Keys are files, values are arrays of files they import.",
"usage": "To find what a file affects, search for its path in the VALUES. To find what a file depends on, look at its KEY entry."
},
@@ -533,22 +533,33 @@
"data/guardian-encounters.ts",
"effects/discipline-effects.ts",
"stores/combat-state.types.ts",
"stores/golem-combat-actions.ts",
"types.ts",
"utils/index.ts"
],
"stores/combat-descent-actions.ts": [
"data/guardian-encounters.ts",
"stores/combat-state.types.ts",
"stores/discipline-slice.ts",
"stores/golem-combat-actions.ts",
"stores/manaStore.ts",
"stores/prestigeStore.ts",
"types.ts",
"utils/spire-utils.ts"
],
"stores/combat-state.types.ts": [
"types.ts"
],
"stores/combatStore.ts": [
"data/guardian-encounters.ts",
"stores/combat-actions.ts",
"stores/combat-descent-actions.ts",
"stores/combat-state.types.ts",
"types.ts",
"utils/activity-log.ts",
"utils/index.ts",
"utils/room-utils.ts",
"utils/safe-persist.ts",
"utils/spire-utils.ts"
"utils/safe-persist.ts"
],
"stores/crafting-equipment-tick.ts": [
"constants.ts",
@@ -661,15 +672,23 @@
"stores/manaStore.ts",
"stores/pipelines/combat-tick.ts",
"stores/pipelines/enchanting-tick.ts",
"stores/pipelines/golem-combat.ts",
"stores/pipelines/pact-ritual.ts",
"stores/prestigeStore.ts",
"stores/tick-pipeline.ts",
"stores/uiStore.ts",
"types.ts",
"utils/element-cap-bonus.ts",
"utils/index.ts",
"utils/safe-persist.ts"
],
"stores/gameStore.types.ts": [],
"stores/golem-combat-actions.ts": [
"constants.ts",
"data/golems/index.ts",
"types.ts",
"utils/index.ts"
],
"stores/index.ts": [
"constants.ts",
"stores/attunementStore.ts",
@@ -696,7 +715,9 @@
"constants.ts",
"data/guardian-encounters.ts",
"effects/special-effects.ts",
"effects/upgrade-effects.types.ts"
"effects/upgrade-effects.types.ts",
"stores/golem-combat-actions.ts",
"types.ts"
],
"stores/pipelines/enchanting-tick.ts": [
"constants.ts",
@@ -715,6 +736,12 @@
"stores/manaStore.ts",
"stores/uiStore.ts"
],
"stores/pipelines/golem-combat.ts": [
"stores/combatStore.ts",
"stores/golem-combat-actions.ts",
"stores/manaStore.ts",
"types.ts"
],
"stores/pipelines/pact-ritual.ts": [
"constants.ts",
"data/guardian-encounters.ts",