[Medium] [Task] Combat spec gap: implement golemancy combat system (spec §6, §9) #259
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Combat Spec Gap: Golemancy Combat System
Gap Summary
The golemancy system is fully defined in the spec (12 golems across 4 tiers, summoning, maintenance, room-duration limits, combat loop) and golem data files exist in
data/golems/, but the entire combat runtime is disconnected.processCombatTickhas no golem summoning, attack, maintenance, or dismissal logic.What Exists
data/golems/(base-golems.ts, elemental-golems.ts, hybrid-golems.ts, golems-data.ts, types.ts, utils.ts)GolemancyStatetype intypes/game.tswithenabledGolems,summonedGolems,lastSummonFloorGolemDefinitiontype indata/golems/types.tscomponents/game/tabs/GolemancyTab.tsxWhat's Missing
1. Golem state extensions (spec §9.7)
GolemDefinitionneeds these fields (may already exist in data, verify):Active golem instances need runtime state:
2. Summoning on room entry (spec §9.3)
When entering a new combat room (called from
advanceRoomOrFlooror room transition):3. Golem combat tick (spec §3.1, §9.4)
In
processCombatTick, add golem branch:4. Maintenance cost per tick (spec §9.5)
Each tick, each active golem checks maintenance. If cost can't be met, golem is dismissed immediately (not re-summoned mid-room).
5. Room duration limit (spec §9.6)
On room clear (
onRoomCleared):6. Golem effects (spec §9.4)
applyGolemEffects()— per-golem special effects (DoT, armor pierce, AoE). Golems ignore Executioner and Berserker discipline specials.Files to Change
types/game.tsActiveGoleminterface; extendGolemancyStatewithactiveGolems: ActiveGolem[]data/golems/types.tsGolemDefinitionhas all spec §9.7 fieldsstores/combat-state.types.tsstores/combat-actions.tsprocessCombatTick; add maintenance tick; add room-duration countdown on room clearstores/combat-descent-actions.tsadvanceRoomOrFlooron room transitionsAcceptance Criteria
maxRoomDurationroomsDependencies
applyDamageToRoomto handle golem damage correctlyOut of Scope
Starting implementation of golemancy combat system. Plan:
Implementation complete — Golemancy combat system wired into the runtime pipeline.
Files changed:
types/game.ts— AddedActiveGoleminterface andactiveGolems: ActiveGolem[]toGolemancyStatedata/golems/types.ts— AddedmaxRoomDurationfield toGolemDefdata/golems/base-golems.ts— AddedmaxRoomDuration: 3to Earth Golemdata/golems/elemental-golems.ts— AddedmaxRoomDurationto Steel (3), Crystal (4), Sand (3)data/golems/hybrid-golems.ts— AddedmaxRoomDurationto all 6 hybrids (4-5)stores/golem-combat-actions.ts— New file — Pure golem combat logic (summoning, maintenance, attacks, room-duration countdown)stores/pipelines/golem-combat.ts— New file — Pipeline builder for golem combat setupstores/combat-actions.ts— Added golem maintenance + attack processing inprocessCombatTick; updatedCombatTickResultwithactiveGolemsstores/combat-state.types.ts— UpdatedprocessCombatTicksignature with golemancy paramsstores/combatStore.ts— UpdatedprocessCombatTickwrapper; addedactiveGolems: []to initial state; reset golems on spire exitstores/combat-descent-actions.ts— AddedsummonGolemsForRoomEntry()called inadvanceRoomOrFlooron both ascent and descentstores/pipelines/combat-tick.ts— Added golem room-duration countdown inonFloorClearedcallback (spec §9.6)stores/gameStore.ts— Extracted golem combat setup to pipeline; consolidated combat section to fit under 400-line limit__tests__/combat-actions.test.ts— Updated test helpers for newprocessCombatTicksignature__tests__/enemy-defenses.test.ts,store-actions.test.ts,store-actions-combat-prestige.test.ts,tick-integration.test.ts— AddedactiveGolems: []to golemancy state in test fixturesAcceptance criteria addressed:
maxRoomDurationroomsVerification:
Implementation complete. All acceptance criteria (AC-14, AC-15, AC-16) verified. All 921 tests pass.