From 6ad48efff995e37ae62242afe3438be0e55146f9 Mon Sep 17 00:00:00 2001 From: n8n-gitea Date: Wed, 13 May 2026 12:00:05 +0200 Subject: [PATCH] fix: add missing properties to GuardianDef type and GUARDIANS data - Add power, effects, signingCost, unlocksMana, damageMultiplier, insightMultiplier to GuardianDef interface - Populate all 9 guardian entries with the new properties - Fixes TS2339 errors in GuardianPanel, pactSlice, computed, EquipmentTab --- src/lib/game/constants/guardians.ts | 98 ++++++++++++++++++++++------- src/lib/game/types/attunements.ts | 12 +++- 2 files changed, 85 insertions(+), 25 deletions(-) diff --git a/src/lib/game/constants/guardians.ts b/src/lib/game/constants/guardians.ts index 0a5e710..4fa846b 100644 --- a/src/lib/game/constants/guardians.ts +++ b/src/lib/game/constants/guardians.ts @@ -3,18 +3,24 @@ import type { GuardianDef } from '../types'; // All guardians have armor - damage reduction percentage export const GUARDIANS: Record = { - 10: { + 10: { name: "Ignis Prime", element: "fire", hp: 5000, pact: 1.5, color: "#FF6B35", - armor: 0.10, // 10% damage reduction + armor: 0.10, boons: [ { type: 'elementalDamage', value: 5, desc: '+5% Fire damage' }, { type: 'maxMana', value: 50, desc: '+50 max mana' }, ], pactCost: 500, pactTime: 2, - uniquePerk: "Fire spells cast 10% faster" + uniquePerk: "Fire spells cast 10% faster", + power: 50, + effects: [{ type: 'burn', value: 0.1 }], + signingCost: { mana: 500, time: 2 }, + unlocksMana: ['fire', 'lightning'], + damageMultiplier: 1.1, + insightMultiplier: 1.05, }, - 20: { + 20: { name: "Aqua Regia", element: "water", hp: 15000, pact: 1.75, color: "#4ECDC4", armor: 0.15, boons: [ @@ -23,9 +29,15 @@ export const GUARDIANS: Record = { ], pactCost: 1000, pactTime: 4, - uniquePerk: "Water spells deal +15% damage" + uniquePerk: "Water spells deal +15% damage", + power: 150, + effects: [{ type: 'armor_pierce', value: 0.15 }], + signingCost: { mana: 1000, time: 4 }, + unlocksMana: ['water', 'transference'], + damageMultiplier: 1.2, + insightMultiplier: 1.1, }, - 30: { + 30: { name: "Ventus Rex", element: "air", hp: 30000, pact: 2.0, color: "#00D4FF", armor: 0.18, boons: [ @@ -34,20 +46,32 @@ export const GUARDIANS: Record = { ], pactCost: 2000, pactTime: 6, - uniquePerk: "Air spells have 15% crit chance" + uniquePerk: "Air spells have 15% crit chance", + power: 300, + effects: [{ type: 'cast_speed', value: 0.05 }], + signingCost: { mana: 2000, time: 6 }, + unlocksMana: ['air', 'sand'], + damageMultiplier: 1.3, + insightMultiplier: 1.15, }, - 40: { + 40: { name: "Terra Firma", element: "earth", hp: 50000, pact: 2.25, color: "#F4A261", - armor: 0.25, // Earth guardian - highest armor + armor: 0.25, boons: [ { type: 'elementalDamage', value: 5, desc: '+5% Earth damage' }, { type: 'maxMana', value: 100, desc: '+100 max mana' }, ], pactCost: 4000, pactTime: 8, - uniquePerk: "Earth spells deal +25% damage to guardians" + uniquePerk: "Earth spells deal +25% damage to guardians", + power: 500, + effects: [{ type: 'armor_pierce', value: 0.2 }], + signingCost: { mana: 4000, time: 8 }, + unlocksMana: ['earth', 'metal'], + damageMultiplier: 1.4, + insightMultiplier: 1.2, }, - 50: { + 50: { name: "Lux Aeterna", element: "light", hp: 80000, pact: 2.5, color: "#FFD700", armor: 0.20, boons: [ @@ -56,9 +80,15 @@ export const GUARDIANS: Record = { ], pactCost: 8000, pactTime: 10, - uniquePerk: "Light spells reveal enemy weaknesses (+20% damage)" + uniquePerk: "Light spells reveal enemy weaknesses (+20% damage)", + power: 800, + effects: [{ type: 'crit_chance', value: 0.1 }], + signingCost: { mana: 8000, time: 10 }, + unlocksMana: ['light', 'crystal'], + damageMultiplier: 1.5, + insightMultiplier: 1.3, }, - 60: { + 60: { name: "Umbra Mortis", element: "dark", hp: 120000, pact: 2.75, color: "#9B59B6", armor: 0.22, boons: [ @@ -67,9 +97,15 @@ export const GUARDIANS: Record = { ], pactCost: 15000, pactTime: 12, - uniquePerk: "Dark spells deal +25% damage to armored enemies" + uniquePerk: "Dark spells deal +25% damage to armored enemies", + power: 1200, + effects: [{ type: 'crit_damage', value: 0.15 }], + signingCost: { mana: 15000, time: 12 }, + unlocksMana: ['dark', 'void'], + damageMultiplier: 1.6, + insightMultiplier: 1.4, }, - 80: { + 80: { name: "Mors Ultima", element: "death", hp: 250000, pact: 3.25, color: "#778CA3", armor: 0.25, boons: [ @@ -78,9 +114,15 @@ export const GUARDIANS: Record = { ], pactCost: 40000, pactTime: 16, - uniquePerk: "Death spells execute enemies below 20% HP" + uniquePerk: "Death spells execute enemies below 20% HP", + power: 2500, + effects: [{ type: 'raw_damage', value: 0.1 }], + signingCost: { mana: 40000, time: 16 }, + unlocksMana: ['death'], + damageMultiplier: 1.8, + insightMultiplier: 1.5, }, - 90: { + 90: { name: "Primordialis", element: "void", hp: 400000, pact: 4.0, color: "#4A235A", armor: 0.30, boons: [ @@ -90,11 +132,17 @@ export const GUARDIANS: Record = { ], pactCost: 75000, pactTime: 20, - uniquePerk: "Void spells ignore 30% of enemy resistance" + uniquePerk: "Void spells ignore 30% of enemy resistance", + power: 4000, + effects: [{ type: 'void_resist', value: 0.3 }], + signingCost: { mana: 75000, time: 20 }, + unlocksMana: ['void', 'stellar'], + damageMultiplier: 2.0, + insightMultiplier: 1.7, }, - 100: { + 100: { name: "The Awakened One", element: "stellar", hp: 1000000, pact: 5.0, color: "#F0E68C", - armor: 0.35, // Final boss has highest armor + armor: 0.35, boons: [ { type: 'elementalDamage', value: 20, desc: '+20% Stellar damage' }, { type: 'maxMana', value: 500, desc: '+500 max mana' }, @@ -103,6 +151,12 @@ export const GUARDIANS: Record = { ], pactCost: 150000, pactTime: 24, - uniquePerk: "All spells deal +50% damage and cast 25% faster" + uniquePerk: "All spells deal +50% damage and cast 25% faster", + power: 10000, + effects: [{ type: 'all_damage', value: 0.5 }], + signingCost: { mana: 150000, time: 24 }, + unlocksMana: ['stellar'], + damageMultiplier: 2.5, + insightMultiplier: 2.0, }, -}; +}; \ No newline at end of file diff --git a/src/lib/game/types/attunements.ts b/src/lib/game/types/attunements.ts index d22ad21..4dcc391 100644 --- a/src/lib/game/types/attunements.ts +++ b/src/lib/game/types/attunements.ts @@ -31,8 +31,8 @@ export interface AttunementState { // Boon types that guardians can grant export interface GuardianBoon { - type: 'maxMana' | 'manaRegen' | 'castingSpeed' | 'elementalDamage' | 'rawDamage' | - 'critChance' | 'critDamage' | 'spellEfficiency' | 'manaGain' | 'insightGain' | + type: 'maxMana' | 'manaRegen' | 'castingSpeed' | 'elementalDamage' | 'rawDamage' | + 'critChance' | 'critDamage' | 'spellEfficiency' | 'manaGain' | 'insightGain' | 'studySpeed' | 'prestigeInsight'; value: number; desc: string; @@ -49,4 +49,10 @@ export interface GuardianDef { pactTime: number; // Hours required for pact ritual uniquePerk: string; // Description of unique perk armor?: number; // Damage reduction (0-1, e.g., 0.2 = 20% reduction) -} + power: number; // Combat power for display + effects: { type: string; value: number }[]; // Passive combat effects + signingCost: { mana: number; time: number }; // Pact ritual cost & time + unlocksMana: string[]; // Mana types unlocked on pact + damageMultiplier: number; // Pact damage multiplier + insightMultiplier: number; // Pact insight multiplier +} \ No newline at end of file