'use client'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Bug } from 'lucide-react'; import { useGameStore } from '@/lib/game/stores'; import { GUARDIANS, ELEMENTS } from '@/lib/game/constants'; export function PactDebug() { // Get state from the main game store where pacts are stored const store = useGameStore(); const signedPacts = useGameStore((s) => s.signedPacts); const signedPactDetails = useGameStore((s) => s.signedPactDetails); const elements = useGameStore((s) => s.elements); const prestigeUpgrades = useGameStore((s) => s.prestigeUpgrades); // Get all guardian floors const guardianFloors = Object.keys(GUARDIANS).map(Number).sort((a, b) => a - b); // Helper to add log messages const addLog = (message: string) => { store.log.unshift(message); }; // Force sign a pact with a guardian (bypass costs and time) const forcePact = (floor: number) => { const guardian = GUARDIANS[floor]; if (!guardian) return; // Check if already signed if (signedPacts.includes(floor)) { addLog(`⚠️ Already signed pact with ${guardian.name}!`); return; } // Check max pacts const maxPacts = 1 + (prestigeUpgrades?.pactCapacity || 0); if (signedPacts.length >= maxPacts) { addLog(`⚠️ Cannot sign more pacts! Maximum: ${maxPacts}.`); return; } // Force sign the pact const newSignedPacts = [...signedPacts, floor]; // Add pact details const newSignedPactDetails = { ...signedPactDetails, [floor]: { floor, guardianId: guardian.element, signedAt: { day: store.day, hour: store.hour }, skillLevels: {} as Record, }, }; // Unlock mana types let newElements = { ...elements }; for (const elemId of guardian.unlocksMana) { if (newElements[elemId]) { newElements = { ...newElements, [elemId]: { ...newElements[elemId], unlocked: true }, }; } } // Check for compound element unlocks const unlockedSet = new Set( Object.entries(newElements) .filter(([, e]) => e.unlocked) .map(([id]) => id) ); for (const [elemId, elemDef] of Object.entries(ELEMENTS)) { if (elemDef.recipe && !newElements[elemId]?.unlocked) { const canUnlock = elemDef.recipe.every((comp: string) => unlockedSet.has(comp)); if (canUnlock) { newElements = { ...newElements, [elemId]: { ...newElements[elemId], unlocked: true }, }; addLog(`🔮 ${elemDef.name} mana unlocked through component synergy!`); } } } addLog(`📜 DEBUG: Pact with ${guardian.name} force-signed! ${guardian.unlocksMana.map(e => ELEMENTS[e]?.name || e).join(', ')} mana unlocked!`); // Update store store.setState({ signedPacts: newSignedPacts, signedPactDetails: newSignedPactDetails, elements: newElements, }); }; // Remove a pact const removePact = (floor: number) => { const guardian = GUARDIANS[floor]; const newSignedPacts = signedPacts.filter(f => f !== floor); const newSignedPactDetails = { ...signedPactDetails }; delete newSignedPactDetails[floor]; addLog(`📜 DEBUG: Removed pact with ${guardian?.name || 'Unknown'}!`); store.setState({ signedPacts: newSignedPacts, signedPactDetails: newSignedPactDetails, }); }; // Clear all pacts const clearAllPacts = () => { addLog(`📜 DEBUG: Cleared all pacts!`); store.setState({ signedPacts: [], signedPactDetails: {}, }); }; return ( Pact Debug

Force sign pacts with guardians (bypasses mana costs and signing time)

{guardianFloors.map((floor) => { const guardian = GUARDIANS[floor]; const isSigned = signedPacts.includes(floor); return (
{guardian.name}
Floor {floor} | {guardian.pact}x multiplier
Unlocks: {guardian.unlocksMana.map(e => ELEMENTS[e]?.name || e).join(', ')}
{isSigned ? ( ) : ( )}
); })}
{/* Clear All Button */} {signedPacts.length > 0 && (
)} {/* Status */}
Signed Pacts: {signedPacts.length} | Max Pacts: {1 + (prestigeUpgrades?.pactCapacity || 0)}
); }