diff --git a/worklog.md b/worklog.md deleted file mode 100755 index 1a7fd8f..0000000 --- a/worklog.md +++ /dev/null @@ -1,758 +0,0 @@ -# Mana Loop Worklog - ---- -Task ID: 1 -Agent: Main -Task: Fix skill upgrade effects not being applied - -Work Log: -- Identified the issue: special effects like Mana Cascade were defined but never processed -- Added `specials: Set` to ComputedEffects interface in upgrade-effects.ts -- Created SPECIAL_EFFECTS constant with all special effect IDs -- Added `hasSpecial()` helper function to check if a special is active -- Updated `computeEffects()` to collect special effects into the set - -Stage Summary: -- Created the foundation for special effect tracking -- All special effects are now recognized and can be checked with hasSpecial() - ---- -Task ID: 2 -Agent: Main -Task: Implement special effect application in game logic - -Work Log: -- Created `computeEffectiveRegen()` function that applies: - - Mana Cascade: +0.1 regen per 100 max mana - - Mana Torrent: +50% regen when above 75% mana - - Desperate Wells: +50% regen when below 25% mana - - Steady Stream: Immune to incursion penalty -- Updated `gatherMana()` to apply Mana Echo (10% chance double mana) -- Updated combat in tick() to apply: - - Damage multipliers/bonuses from upgrades - - Executioner: +100% damage to enemies below 25% HP - - Berserker: +50% damage when mana < 50% - - Adrenaline Rush: Restore 5% mana on kill -- Updated study in tick() to apply: - - Study speed multipliers from upgrades - - Mental Clarity: +10% study speed when mana > 75% - - Study Rush: First hour is 2x speed - - Study Refund: 25% mana back on completion - -Stage Summary: -- Key tier 1 special effects are now functional -- Regen, combat, and study systems all apply upgrades correctly - ---- -Task ID: 3 -Agent: Main -Task: Display special effects in UI - -Work Log: -- Imported computeEffects, hasSpecial, SPECIAL_EFFECTS to page.tsx -- Added `upgradeEffects` computation in derived stats -- Added `manaCascadeBonus` calculation for display -- Updated `effectiveRegen` to use `effectiveRegenWithSpecials` -- Updated Mana Stats section to show: - - Steady Stream immunity indicator - - Mana Cascade bonus amount - - Mana Torrent/Desperate Wells conditional bonuses -- Updated Active Upgrades section to render special effects with cyan color - -Stage Summary: -- Special effects are now visible in the Stats tab -- Players can see exactly how much Mana Cascade contributes -- Active Upgrades shows all effect types including specials - ---- -Task ID: 4 -Agent: Main -Task: Test and verify implementation - -Work Log: -- Added 11 new tests for special effects: - - Mana Cascade recognition and calculation - - Steady Stream recognition - - Mana Echo recognition - - Combat special effects (Executioner, Berserker, Adrenaline Rush) - - Study special effects (Mental Clarity, Study Rush) - - Effect stacking tests -- All 203 tests pass - -Stage Summary: -- Complete test coverage for implemented special effects -- All lint checks pass -- Dev server running without errors - ---- -Task ID: 5 -Agent: Main -Task: Fix Deep Wellspring meditation efficiency upgrade - -Work Log: -- Identified issue: `meditationEfficiency` was tracked in computed effects but not used -- Updated `getMeditationBonus()` function signature to accept `meditationEfficiency` parameter -- Updated meditation bonus calculation to multiply by efficiency -- Updated `tick()` in store.ts to: - - Compute upgradeEffects before meditation calculation - - Pass `upgradeEffects.meditationEfficiency` to `getMeditationBonus()` -- Updated page.tsx to: - - Compute `upgradeEffects` before other derived stats - - Pass `upgradeEffects.meditationEfficiency` to meditation multiplier calculation -- Added 2 new tests for Deep Wellspring: - - Test that meditation efficiency is correctly computed (1.5x for +50%) - - Test that meditation bonus is boosted by efficiency (2.5 * 1.5 = 3.75) - -Stage Summary: -- Deep Wellspring (+50% meditation efficiency) now works correctly -- All 205 tests pass -- Dev server running without errors - ---- -Task ID: 6 -Agent: Main -Task: Fix multiple issues: Quick Learner tier-up reset, Parallel Mind upgrade, meditation display location, parallel study UI, combat spell usage verification - -Work Log: -- **Fixed Quick Learner tier-up reset issue**: Modified `tierUpSkill()` to NOT copy upgrades from old tier to new tier. Each tier now starts with empty upgrades, allowing players to choose new tier-specific upgrades at level 5 and 10. -- **Implemented Parallel Mind milestone upgrade**: Added parallel study support to the tick function and created actions for starting/canceling parallel study. Players can now study two things at once at 50% speed each. -- **Fixed meditation multiplier display**: Removed meditation multiplier from "Active Spell" card in Spire tab - it now only appears in the Mana Stats section. -- **Added parallel study UI**: - - Added parallel study progress card in Spire tab - - Added ⚡ button in Skills tab for selecting parallel study target - - Shows "50% speed (Parallel Study)" indicator -- **Verified combat uses active spells**: Confirmed that combat properly uses the active spell from `state.activeSpell`, calculates damage based on spell definition, applies elemental bonuses, and handles spell effects like lifesteal. -- **Added parallelStudyTarget to state persistence**: Updated the persist partialize function to include parallelStudyTarget. -- **Fixed TypeScript errors**: Updated `computeElementMax` call in makeInitial to include required parameters. - -Stage Summary: -- Quick Learner and other skills no longer lose progress when tiering up - players choose new upgrades for each tier -- Parallel Mind upgrade is now functional - allows studying two skills/spells simultaneously -- Meditation multiplier moved to correct location (Mana Stats only) -- Combat verified to use active spells properly with all effects -- All lint checks pass, dev server running without errors - ---- - Task ID: 7 -Agent: Main - Task: Implement cast speed system for combat - - Work Log: - - Added `castSpeed` property to `SpellDef` type in types.ts (default 1 cast/hour) - - Added cast speeds to all spells in SPELLS_DEF: - - Tier 0 (basic): 2.5-3 casts/hr (fast, cheap) - - Tier 1 (elemental): 1.5-3 casts/hr (varies by spell nature) - - Tier 2 (advanced): 0.8-1.8 casts/hr (slower, more powerful) - - Tier 3 (master): 0.5-0.75 casts/hr (slow but devastating) - - Tier 4 (legendary): 0.4-0.5 casts/hr (very slow, extremely powerful) - - Added `castProgress` to GameState (tracks progress to next cast, 0-1) - - Updated combat tick logic: - - Accumulates cast progress based on spell cast speed and attack speed bonuses - - When progress >= 1, triggers a spell cast (deducts mana, applies damage) - - Handles multiple casts per tick if cast speed is high - - Resets progress on floor change - - Attack speed affected by: - - Quick Cast skill: +5% per level - - Attack Speed upgrade multipliers from skill milestones - - Updated UI: - - Active Spell card now shows cast speed (casts/hr) - - Added cast progress bar when climbing - - DPS calculation now uses actual cast speed formula - - Stage Summary: - - Combat now properly uses spell cast speed instead of arbitrary damage multiplier - - Each spell has unique cast speed (faster spells = more DPS but lower damage per cast) - - Attack speed upgrades (Quick Cast, Quick Strikes) properly speed up casting - - Players can see cast progress and DPS in real-time - ---- -Task ID: 8 -Agent: Main -Task: Implement Crafting/Equipment System (Replace Combat Skills with Enchanting) - -Work Log: -- **Verified combat skills removed and enchanting skills added**: constants.ts already had enchanting skills (enchanting, efficientEnchant, disenchanting, enchantSpeed, scrollCrafting, essenceRefining) with 'enchant' category -- **Integrated crafting slice into main store**: - - Added GameStore interface to extend CraftingActions - - Added processCraftingTick call in tick function for design/prepare/enchant actions - - Implemented all crafting actions directly in store (createEquipmentInstance, equipItem, startDesigningEnchantment, etc.) - - Updated partialize function to persist equipment state (equippedInstances, equipmentInstances, enchantmentDesigns, designProgress, preparationProgress, applicationProgress) -- **Created CraftingTab component** with 3-stage UI: - - Design stage: Select equipment type, choose effects, name design, time-based progress - - Prepare stage: Select equipment, pay mana cost, time-based preparation - - Apply stage: Select equipment and design, apply enchantment with capacity validation - - Disenchant section: Remove enchantments and recover mana based on disenchanting skill -- **Updated SpellsTab** to show equipment-granted spells: - - Added equipment spells section at top showing spells from equipped items - - Shows source equipment for each spell - - Added pact spells placeholder section -- **Added 5-tier evolution paths for enchanting skills**: - - enchanting: 5 tiers from Enchanting → Rune Master → Arcane Forgemaster → Void Enchanter → Enchantment God - - efficientEnchant, disenchanting, enchantSpeed: 1 tier each with unique upgrades -- **Updated page.tsx** with Crafting tab: - - Added CraftingTab import and TabsTrigger for crafting - - Added TabsContent rendering CraftingTab with all required props - -Stage Summary: -- Complete 3-stage enchantment system (Design → Prepare → Apply) -- Equipment capacity limits enchantments -- Starting equipment: Basic Staff (with Mana Bolt), Civilian Shirt, Civilian Shoes -- Spells only learnable from equipment and pacts -- All crafting skills have evolution paths -- All lint checks pass - ---- -Task ID: 9 -Agent: Main -Task: Implement Attunement System - Core Framework - -Work Log: -- **Created attunement type definitions in types.ts**: - - Added AttunementSlot type (rightHand, leftHand, head, back, chest, leftLeg, rightLeg) - - Added AttunementDef interface with primaryManaType, rawManaRegen, conversionRate, capabilities, skillCategories - - Added AttunementState interface for tracking player attunements - - Updated GameState to include attunements field -- **Created attunements.ts data file** with 3 attunements: - - **Enchanter (right hand)**: Starting attunement, transference mana, unlocks enchanting, 0.5 raw regen/hr, 0.2 conversion/hr - - **Invoker (chest)**: Unlocks pacts with guardians, no primary mana but gains types from each pact, 0.3 raw regen/hr - - **Fabricator (left hand)**: Earth mana, crafts golems and earthen/metal gear, 0.4 raw regen/hr, 0.25 conversion/hr -- **Updated store.ts**: - - Added attunement imports - - Updated makeInitial() to start with Enchanter attunement active - - Unlocks transference element for Enchanter - - Added attunement mana conversion logic in tick() - - Updated computeRegen() to include attunement bonuses -- **Updated SKILL_CATEGORIES** to be attunement-based: - - Core categories (always available): mana, study, research, ascension - - Enchanter categories: enchant, effectResearch - - Invoker categories: invocation, pact - - Fabricator categories: fabrication, golemancy - -Stage Summary: -- Player starts with Enchanter attunement on right hand -- Attunements provide raw mana regen and convert to primary mana types -- Skills are now organized by attunement (foundation for skill tab overhaul) -- Lint checks pass, ready for UI implementation - ---- -Task ID: 10 -Agent: Main -Task: Implement Attunement System - UI Overhaul - -Work Log: -- **Created AttunementsTab component** (src/components/game/tabs/AttunementsTab.tsx): - - Displays all 3 attunements with their status (active/locked) - - Shows primary mana type and current mana for active attunements - - Displays raw mana regen and conversion rate stats - - Shows capabilities unlocked by each attunement - - Displays available skill categories based on active attunements - - Uses color coding and visual effects for active attunements -- **Updated page.tsx**: - - Added AttunementsTab import - - Added "✨ Attune" tab between Spire and Skills - - Added TabsContent for attunements -- **Updated SkillsTab.tsx**: - - Added import for getAvailableSkillCategories - - Modified skill rendering to filter categories by attunement access - - Skills now only show if the player has the appropriate attunement - -Stage Summary: -- New Attunements tab shows all attunement details -- Skills are filtered based on active attunements -- Player can see exactly which skill categories they have access to -- Visual feedback shows active vs locked attunements - ---- -Task ID: 11 -Agent: Main -Task: Fix build errors - correct imports for getActiveEquipmentSpells and getTotalDPS - -Work Log: -- Identified build failure: getActiveEquipmentSpells and getTotalDPS were being imported from store.ts but are defined in computed-stats.ts -- Fixed imports in page.tsx: - - Changed to import getActiveEquipmentSpells and getTotalDPS from computed-stats.ts -- Fixed imports in SpireTab.tsx: - - Changed to import getActiveEquipmentSpells and getTotalDPS from computed-stats.ts - - Removed duplicate local function definition of getActiveEquipmentSpells - - Cleaned up unused imports (ENCHANTMENT_EFFECTS, EQUIPMENT_TYPES) -- Committed and pushed fix to repository - -Stage Summary: -- Build errors resolved -- All imports correctly reference computed-stats.ts for DPS and equipment spell functions -- Code is cleaner with no duplicate function definitions - ---- -Task ID: 12 -Agent: Main -Task: Fix prerender error - Cannot read properties of undefined (reading 'count') - -Work Log: -- Identified the issue: ComboState type was referenced in ComboMeter.tsx but never defined -- The `combo` property was also missing from GameState interface and initial state -- Added ComboState interface to types.ts with: - - count: number (current combo hits) - - maxCombo: number (highest combo this session) - - multiplier: number (current damage multiplier) - - elementChain: string[] (last 3 elements used) - - decayTimer: number (hours until decay starts) -- Added `combo: ComboState` field to GameState interface -- Added default combo state to makeInitial() in store.ts: - - count: 0, maxCombo: 0, multiplier: 1, elementChain: [], decayTimer: 0 -- Added `combo` and `attunements` to persist partialize function for save/load -- Fixed ComboMeter.tsx to import ComboState from types.ts - -Stage Summary: -- ComboState type properly defined and used -- combo field now properly initialized in game state -- Persist function now saves both combo and attunements -- Build should now pass prerendering stage - ---- -Task ID: 13 -Agent: Main -Task: Fix prerender error - Cannot read properties of undefined (reading 'materials') - -Work Log: -- Identified the issue: LootInventory type was referenced but never defined -- The `lootInventory` property was also missing from GameState interface and initial state -- Added LootInventory interface to types.ts with: - - materials: Record (materialId -> count) - - blueprints: string[] (blueprint IDs discovered) -- Added `lootInventory: LootInventory` field to GameState interface -- Added default lootInventory to makeInitial() in store.ts -- Added lootInventory to persist partialize function - -Stage Summary: -- LootInventory type properly defined and used -- lootInventory field now properly initialized in game state -- Persist function now saves loot inventory - ---- -Task ID: 14 -Agent: Main -Task: Fix prerender error - Add missing AchievementState and stats tracking - -Work Log: -- Identified multiple missing types and fields referenced in page.tsx -- Added AchievementDef interface to types.ts with: - - id, name, desc, category, requirement, reward, hidden -- Added AchievementState interface with: - - unlocked: string[] (IDs of unlocked achievements) - - progress: Record (progress toward requirements) -- Added to GameState: - - achievements: AchievementState - - totalSpellsCast: number - - totalDamageDealt: number - - totalCraftsCompleted: number -- Added default values to makeInitial() in store.ts -- Added all new fields to persist partialize function - -Stage Summary: -- All missing types and fields now properly defined -- Achievement system can track unlocked achievements and progress -- Stats tracking for spells cast, damage dealt, and crafts completed -- Build should now pass without undefined property errors - ---- -Task ID: 15 -Agent: Main -Task: Implement multiple UI improvements and attunement leveling - -Work Log: -- **Added mana pools display to ManaDisplay component**: - - Shows all unlocked elemental mana types - - Collapsible section with progress bars for each element - - Sorted by current amount - - Added elements prop to ManaDisplay - -- **Added Debug tab**: - - Reset game with confirmation - - Mana debug (+10, +100, +1K, +10K, Fill to max) - - Time control (set day 1, 10, 20, 30) - - Attunement unlock buttons - - Attunement XP buttons - - Elemental mana unlock and add buttons - - Quick actions (unlock all base elements, utility elements, skip to floor 100) - -- **Removed ComboMeter from UI**: - - Removed from header in page.tsx - - Removed from SpireTab.tsx - -- **Updated AttunementsTab with level scaling**: - - Added XP progress bar - - Added level-scaled regen and conversion display - - Added max level indicator - - Removed 'scrollCrafting' from Enchanter capabilities - -- **Implemented attunement leveling system**: - - Added getAttunementXPForLevel() and MAX_ATTUNEMENT_LEVEL = 10 - - XP scales exponentially: 100 * 3^(level-2) - - Added addAttunementXP function with auto level-up - - Added debug functions: debugUnlockAttunement, debugAddElementalMana, debugSetTime, debugAddAttunementXP, debugSetFloor - -- **Implemented attunement passive conversion with level scaling**: - - Updated tick() to use getAttunementConversionRate() for level-scaled rates - - Conversion rate scales exponentially with level (1.5^(level-1) multiplier) - -- **Made skill categories collapsible**: - - Added collapsedCategories state - - Click on category header to toggle - - Shows ChevronDown/ChevronRight icons - - Shows skill count badge - -Stage Summary: -- All requested UI improvements completed -- Attunement leveling system fully functional -- Debug tab enables testing and development -- Skills tab is more manageable with collapsible categories -- Removed unused features (ComboMeter, scrollCrafting) - ---- -Task ID: 23 -Agent: Main -Task: Remove familiar system completely and fix inconsistencies - -Work Log: -- **Removed familiar system files**: - - Deleted `src/lib/game/data/familiars.ts` (520 lines) - - Deleted `src/lib/game/familiar-slice.ts` (368 lines) - - Deleted `src/components/game/tabs/FamiliarTab.tsx` (583 lines) -- **Removed familiar types from types.ts**: - - Removed FamiliarRole type - - Removed FamiliarAbilityType type - - Removed FamiliarAbility interface - - Removed FamiliarDef interface - - Removed FamiliarInstance interface -- **Fixed SpireTab spell effects display**: - - Updated to show valid effect types (burn, stun, pierce, multicast, buff) - - Removed invalid lifesteal and freeze effect displays -- **Fixed test files**: - - Removed Executioner test from store.test.ts (effect was previously removed) - - Removed familiar fields from skills.test.ts mock state - -Stage Summary: -- Familiar system completely removed - simplifies game and keeps focus on Invoker pact system -- All tests pass (32 tests in computed-stats.test.ts) -- Lint passes -- Build succeeds -- Spell effects now show correct types - ---- -Task ID: 24 -Agent: Main -Task: Add enchantments/spells for each mana type including compound types - -Work Log: -- **Added compound mana type spells to constants.ts**: - - Blood spells (Life + Water): bloodNeedle, bloodSlash, bloodRite, sanguineStorm - lifesteal focus - - Metal spells (Fire + Earth): metalShard, ironFist, steelTempest, furnaceBlast - armor pierce focus - - Wood spells (Life + Earth): thornStrike, rootGrab, treePunch, forestAwakening - regeneration/lifesteal focus - - Sand spells (Earth + Water): sandBlast, sandstorm, desertWind, duneCollapse - AOE focus - - Lightning spells already existed but added tier 3 thunderStrike - -- **Added utility mana type spells to constants.ts**: - - Mental spells: mindSpike, psychicBlast, mindCrush, cerebralAnnihilation - stun focus - - Transference spells: transferStrike, manaRip, essenceDrain, soulTransfer - lifesteal focus (Enchanter primary) - - Force spells: forcePush, kineticBlast, gravityWell, telekineticStorm - AOE/fast damage focus - -- **Added research skills for compound and utility spells**: - - Tier 1 research skills for all compound types (blood, metal, wood, sand, lightning) - - Tier 2 advanced research for all compound types - - Tier 3 master research for all compound types - - Tier 1-3 research skills for utility types (mental, transference, force) - - All skills have appropriate prerequisites based on parent element research - -- **Updated EFFECT_RESEARCH_MAPPING**: - - Added mappings for all 32 new spells to their respective research skills - - Compound spells require parent element research (e.g., blood needs life/death + water) - - Utility spells have their own independent research paths - -- **Added enchantment effects for all new spells**: - - 40+ new enchantment effects added to enchantment-effects.ts - - All spells have appropriate capacity costs and descriptions - - All spell effects are for ALL_CASTER equipment category - -Stage Summary: -- Complete spell coverage for all mana types (base, utility, compound, exotic) -- All mana types now have tier 1-3 spells with unique mechanics -- Research system properly gates access to advanced spell enchantments -- All 44 tests pass -- Lint passes clean - ---- -Task ID: 25 -Agent: Main -Task: Remove banned mana types (life, blood, wood, mental, force) and lifesteal - -Work Log: -- **Removed banned mana types from ELEMENTS**: - - Removed life, blood, wood, mental, force from ELEMENTS definition - - Updated crystal recipe from sand + sand + mental to sand + sand + light - - Updated FLOOR_ELEM_CYCLE to remove life - - Updated ELEMENT_OPPOSITES to remove life/death pair - - Updated ELEMENT_ICON_NAMES to remove banned elements - -- **Removed spells using banned elements**: - - Removed life spells: lifeTap, thornWhip, entangle, worldTree - - Removed blood spells: bloodNeedle, bloodSlash, bloodRite, sanguineStorm - - Removed wood spells: thornStrike, rootGrab, treePunch, forestAwakening - - Removed mental spells: mindSpike, psychicBlast, mindCrush, cerebralAnnihilation - - Removed force spells: forcePush, kineticBlast, gravityWell, telekineticStorm - - Removed transference spells with lifesteal: transferStrike, manaRip, essenceDrain, soulTransfer - -- **Removed lifesteal from remaining spells**: - - drain - removed lifesteal effect - - soulRend - removed lifesteal effect - - deathMark - removed lifesteal effect - - voidBlade - changed from lifesteal to +20% damage buff - -- **Updated guardians**: - - Floor 20 (Aqua Regia): Changed from "Water spells have 10% lifesteal" to "Water spells deal +15% damage" - - Floor 60 (Umbra Mortis): Changed from "Dark spells have 20% lifesteal" to "Dark spells deal +25% damage to armored enemies" - - Floor 70 (Vita Sempiterna): REMOVED (life element guardian) - -- **Removed research skills for banned spell types**: - - Removed researchBloodSpells, researchWoodSpells, researchMentalSpells, researchForceSpells - - Removed advanced and master variants of above - - Updated researchLifeDeathSpells description - -- **Updated EFFECT_RESEARCH_MAPPING**: - - Removed lifesteal_5 from researchSpecialEffects - - Removed all blood, wood, mental, force spell mappings - -- **Updated enchantment-effects.ts**: - - Removed lifesteal_5 effect - - Removed all blood, wood, mental, force spell enchantments - - Updated remaining spell descriptions to remove lifesteal mentions - -- **Removed lifesteal from types.ts**: - - Removed 'lifesteal' from SpellEffect type union - -- **Removed lifesteal handling from store.ts**: - - Removed lifesteal effect processing code - -- **Updated SpireTab.tsx**: - - Removed lifesteal badge rendering - - Added badge rendering for other effect types - -- **Added documentation**: - - Added "BANNED CONTENT" section to AGENTS.md explaining lifesteal/healing ban - - Added mana types overview to AGENTS.md with all current mana types - - Added mana types overview to README.md - -- **Fixed tests**: - - Updated bug-fixes.test.ts to test existing elements (transference, metal, sand, lightning) - - All 44 tests now pass - -Stage Summary: -- Lifesteal and healing completely removed from player abilities -- Banned mana types (life, blood, wood, mental, force) removed from game -- Crystal recipe updated to use light instead of mental -- Documentation updated with banned content policy -- All tests pass, lint clean - ---- -Task ID: 26 -Agent: Main -Task: Mobile UX improvements, debug options, and enchanting system fix - -Work Log: -- **Moved LootInventoryDisplay to separate LootTab**: - - Created new LootTab.tsx component - - Better mobile UX - materials no longer clutter main page - - Added to tabs in page.tsx -- **Moved AchievementsDisplay to separate AchievementsTab**: - - Created new AchievementsTab.tsx component - - Better mobile UX - achievements have their own space - - Added to tabs in page.tsx -- **Added skill research debug options to DebugTab**: - - "Level Up All Enchanting Skills" button - - "Level Up All Research Skills" button - - "Unlock All Effects" button - - "Max All Skills" button -- **Fixed enchanting system**: - - Disenchant is now ONLY possible in the Prepare stage - - Apply stage no longer shows disenchant/recover buttons - - Apply stage filters out already-enchanted gear - - Shows message "No unenchanted equipment available. Disenchant in Prepare stage first." - - Prepare stage shows disenchant option only for enchanted gear - -Stage Summary: -- Mobile UX improved with dedicated tabs for Loot and Achievements -- Debug options added for testing skill research system -- Enchanting system now properly enforces disenchant-only-in-prepare rule -- Cannot apply new enchantments to already enchanted gear -- Committed and pushed to git (94cc9a1) - ---- -Task ID: 27 -Agent: Main -Task: Implement Golemancy System - -Work Log: -- **Created golem data definitions** (`src/lib/game/data/golems.ts`): - - Base golem: Earth Golem (unlocks at Fabricator Level 2) - - Elemental variants: Steel (metal), Crystal, Sand golems - - Advanced hybrids (Enchanter 5 + Fabricator 5): Lava, Galvanic, Obsidian, Prism, Quicksilver, Voidstone - - Each golem has unique stats, mana costs, and special abilities - -- **Added golemancy types to types.ts**: - - `SummonedGolem` interface for active golems - - `GolemancyState` interface for enabled/summoned golems tracking - - Added `golemancy` to GameState - -- **Updated store.ts with golemancy**: - - Initialized golemancy state in `makeInitial()` - - Added `toggleGolem` and `setEnabledGolems` actions - - Added golemancy to persist partialize for save/load - -- **Added golemancy skills to constants.ts**: - - Golem Mastery (+10% golem damage) - - Golem Efficiency (+5% attack speed) - - Golem Longevity (+1 floor duration) - - Golem Siphon (-10% maintenance cost) - - Advanced Golemancy (unlock hybrid recipes) - - Golem Resonance (+1 slot at Fabricator 10) - -- **Created GolemancyTab component**: - - Displays available golem slots based on Fabricator level - - Shows all unlocked and locked golems - - Displays golem stats, costs, and status - - Toggle golems on/off for summoning - -- **Updated README.md**: - - Added golemancy system documentation - - Updated enchanting documentation - - Removed familiar system references - - Added Banned Content section - -Stage Summary: -- Golemancy system foundation implemented -- Golems unlock based on Fabricator level and mana types -- UI for selecting and managing golems -- Documentation updated -- Lint passes - ---- -Task ID: 28 -Agent: Main -Task: Fix level upgrade reset loop bug and add golem display to SpireTab - -Work Log: -- **Fixed upgrade reset bug in commitSkillUpgrades()**: - - Root cause: `commitSkillUpgrades()` was replacing ALL upgrades for a skill instead of merging by milestone - - When selecting level 10 upgrades, it would wipe out level 5 selections (and vice versa) - - Added optional `milestone` parameter (5 | 10) to the function - - When milestone is specified, the function now: - - Keeps existing upgrades from OTHER milestones - - Only replaces upgrades for the CURRENT milestone - - Updated type definition in GameStore interface - - Updated SkillsTab.tsx to pass `upgradeDialogMilestone` when committing - -- **Fixed tier-up upgrade reset in tierUpSkill()**: - - Root cause: `tierUpSkill()` was setting new tier's upgrades to empty array `[]` - - When tiering up, all previous tier's upgrades were lost - - Now copies current tier's upgrades to the new tier - - Example: Tier 1's L5/L10 upgrades persist when becoming Tier 2 - -- **Added summoned golems display to SpireTab**: - - Imported GOLEMS_DEF and helper functions - - Added Mountain icon import - - Added "Active Golems" card that appears when golems are summoned - - Shows each golem's name, damage, attack speed, and armor pierce - - Displays attack progress bar when climbing - - AOE badge for golems with area attacks - -Stage Summary: -- Level 5 and level 10 upgrades no longer reset each other -- Upgrades now carry over when tiering up to the next tier -- Players can safely select upgrades at both milestones across all tiers -- Summoned golems now visible in Spire tab during combat -- Lint passes, pushed to git (e2671d7) - ---- -Task ID: 29 -Agent: Main -Task: Complete skill system redesign with upgrade trees - -Work Log: -- **Created comprehensive documentation** (docs/skills.md): - - Overview of skill levels (1-10, 1-5, or 1 only) - - Tier up system with attunement requirements - - Milestone upgrade tree design principles - - Banned effects list (execution, instant finishing, lifesteal) - - Removed skills (combat-related since player can't cast directly) - -- **Rewrote skill-evolution.ts** with new upgrade tree structure: - - `UpgradeNode` interface with children, requires, upgrades fields - - Branching upgrade paths where choices lead to upgraded versions - - Example trees for Mana Well, Mana Flow, Elem Attune, Quick Learner, Focused Mind, Enchanting, Golem Mastery - - `getAvailableUpgrades()` helper for tree traversal - - `getBaseSkillId()` and `generateTierSkillDef()` helper functions - - `canTierUp()` checks attunement requirements - -- **Fixed multiple bugs**: - - `getFloorElement()` now uses `FLOOR_ELEM_CYCLE.length` instead of hardcoded `8` - - Updated test files to match current skill definitions - - Removed tests for non-existent skills (transferenceMastery, pactMastery, etc.) - -- **Upgrade Tree Design**: - - Each skill has 3-4 base choices per milestone - - Choices can branch to upgraded versions (e.g., "Expanded Capacity" → "Deep Reservoir") - - Trade-off options (gain X, lose Y) for meaningful choices - - Special mechanics (scaling bonuses, conditional effects) - -Stage Summary: -- Complete skill system documentation in docs/skills.md -- Upgrade trees support branching paths with prerequisites -- Tier up system requires attunement levels -- 445 tests passing (some tests need updates for new system) - ---- -Task ID: 30 -Agent: Main -Task: Complete skill system redesign - add all missing upgrade trees, special effects, and comprehensive tests - -Work Log: -- **Added upgrade trees for ALL skills with max > 1**: - - manaOverflow: Click Surge, Mana Flood upgrades - - efficientEnchant: Thrifty Enchanter, Optimized Enchanting - - enchantSpeed: Hasty Enchanter, Instant Designs - - essenceRefining: Pure Essence, Perfect Essence - - effCrafting: Batch Crafting, Mass Production - - fieldRepair: Scavenge, Reclaim - - golemEfficiency: Rapid Strikes, Blitz Attack - - insightHarvest: Insight Bounty, Greater Harvest - - Plus all skills with max 3 that don't need upgrades - -- **Added comprehensive special effects** (upgrade-effects.ts): - - Mana Flow: manaWaterfall, eternalFlow, clickSurge, manaFlood - - Mana Well: manaThreshold, manaConversion, panicReserve, manaCondense, deepReserve, manaTide, voidStorage, manaCore, manaHeart, manaGenesis - - Enchanting: enchantMastery, enchantPreservation, thriftyEnchanter, optimizedEnchanting, hastyEnchanter, instantDesigns, pureEssence - - Crafting: batchCrafting, massProduction, scavenge, reclaim - - Golemancy: golemFury, golemResonance, rapidStrikes, blitzAttack - - Ascension: insightBounty - -- **Created comprehensive skill system tests** (skill-system.test.ts): - - 38 tests covering all aspects of the skill system - - Tests for evolution paths, tier multipliers, tier-up logic - - Tests for upgrade tree structure and validation - - Tests for skill definitions and categories - - All 38 new tests pass - -- **Updated documentation** (docs/skills.md): - - Complete table of contents - - All skill categories with full details - - Every skill's max level, effect, cost, study time, prerequisites - - Complete upgrade trees for Mana Well, Mana Flow, Elem Attune, Quick Learner, Focused Mind, Enchanting, Golem Mastery - - Tier system requirements - - Banned content list - -Stage Summary: -- ALL skills now have proper upgrade trees defined -- 38 new comprehensive tests for skill system (all pass) -- Documentation is complete with all skills and upgrade trees -- Total: 544 tests pass, 56 legacy tests fail (expecting removed skills) -- Lint clean, dev server running -- Lint clean, pushed to git (b78c979)