feat: implement golemancy combat system (spec §6, §9)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
- Add ActiveGolem interface and activeGolems to GolemancyState - Add maxRoomDuration to all 12 golem definitions - Create golem-combat-actions.ts with pure golem combat logic (summoning, maintenance, attacks, room-duration) - Create golem-combat.ts pipeline for golem combat setup - Wire golem maintenance and attacks into processCombatTick - Wire golem summoning into advanceRoomOrFloor on room entry - Wire golem room-duration countdown into onFloorCleared callback - Update combat-actions tests for new processCombatTick signature - All 921 tests pass, all files under 400-line limit Closes #259
This commit is contained in:
@@ -26,5 +26,6 @@ export const BASE_GOLEMS: Record<string, GolemDef> = {
|
||||
level: 2,
|
||||
},
|
||||
tier: 1,
|
||||
maxRoomDuration: 3,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -25,6 +25,7 @@ export const ELEMENTAL_GOLEMS: Record<string, GolemDef> = {
|
||||
manaType: 'metal',
|
||||
},
|
||||
tier: 2,
|
||||
maxRoomDuration: 3,
|
||||
},
|
||||
|
||||
// Crystal Golem - Crystal mana variant
|
||||
@@ -46,6 +47,7 @@ export const ELEMENTAL_GOLEMS: Record<string, GolemDef> = {
|
||||
manaType: 'crystal',
|
||||
},
|
||||
tier: 3,
|
||||
maxRoomDuration: 4,
|
||||
},
|
||||
|
||||
// Sand Golem - Sand mana variant
|
||||
@@ -67,6 +69,7 @@ export const ELEMENTAL_GOLEMS: Record<string, GolemDef> = {
|
||||
manaType: 'sand',
|
||||
},
|
||||
tier: 2,
|
||||
maxRoomDuration: 3,
|
||||
specialAbilities: [
|
||||
{ name: 'Sandstorm', description: 'Hits multiple enemies (AoE)' },
|
||||
],
|
||||
|
||||
@@ -25,6 +25,7 @@ export const HYBRID_GOLEMS: Record<string, GolemDef> = {
|
||||
levels: [5, 5],
|
||||
},
|
||||
tier: 3,
|
||||
maxRoomDuration: 4,
|
||||
specialAbilities: [
|
||||
{ name: 'Burn', description: 'Burns enemies over time (DoT)' },
|
||||
],
|
||||
@@ -50,6 +51,7 @@ export const HYBRID_GOLEMS: Record<string, GolemDef> = {
|
||||
levels: [5, 5],
|
||||
},
|
||||
tier: 3,
|
||||
maxRoomDuration: 4,
|
||||
specialAbilities: [
|
||||
{ name: 'Lightning Speed', description: 'Extremely fast attacks bonus' },
|
||||
],
|
||||
@@ -75,6 +77,7 @@ export const HYBRID_GOLEMS: Record<string, GolemDef> = {
|
||||
levels: [5, 5],
|
||||
},
|
||||
tier: 4,
|
||||
maxRoomDuration: 5,
|
||||
specialAbilities: [
|
||||
{ name: 'Devastating Strike', description: 'Devastating single-target damage' },
|
||||
],
|
||||
@@ -100,6 +103,7 @@ export const HYBRID_GOLEMS: Record<string, GolemDef> = {
|
||||
levels: [5, 5],
|
||||
},
|
||||
tier: 4,
|
||||
maxRoomDuration: 5,
|
||||
specialAbilities: [
|
||||
{ name: 'Piercing Beams', description: 'Channels light into piercing beams' },
|
||||
],
|
||||
@@ -125,6 +129,7 @@ export const HYBRID_GOLEMS: Record<string, GolemDef> = {
|
||||
levels: [5, 5],
|
||||
},
|
||||
tier: 3,
|
||||
maxRoomDuration: 4,
|
||||
specialAbilities: [
|
||||
{ name: 'Flow', description: 'Flows around defenses, fast & hard to dodge' },
|
||||
],
|
||||
@@ -150,6 +155,7 @@ export const HYBRID_GOLEMS: Record<string, GolemDef> = {
|
||||
levels: [5, 5],
|
||||
},
|
||||
tier: 4,
|
||||
maxRoomDuration: 5,
|
||||
specialAbilities: [
|
||||
{ name: 'Void Infusion', description: 'Earth infused with void energy' },
|
||||
],
|
||||
|
||||
@@ -39,5 +39,6 @@ export interface GolemDef {
|
||||
levels?: number[];
|
||||
};
|
||||
tier: number; // Power tier (1-4)
|
||||
maxRoomDuration: number; // Rooms before golem disappears (spec §9.6)
|
||||
specialAbilities?: { name: string; description: string }[]; // Special abilities
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user