fix: SpireTab store props, mana regen display, skill cost deduction, grimoire cost format, unequip store, add test suite
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m34s

This commit is contained in:
2026-05-08 11:45:31 +02:00
parent 0fadbfef4a
commit 71fbc7c964
12 changed files with 354 additions and 22 deletions
+14 -12
View File
@@ -7,9 +7,10 @@ import { ManaDisplay } from '@/components/game';
import { ActionButtons } from '@/components/game';
import { CalendarDisplay } from '@/components/game';
import { DebugName } from '@/lib/game/debug-context';
import { useGameStore, useManaStore, useSkillStore, useCombatStore, useCraftingStore } from '@/lib/game/stores';
import { useGameStore, useManaStore, useSkillStore, useCombatStore, useCraftingStore, usePrestigeStore } from '@/lib/game/stores';
import { getUnifiedEffects } from '@/lib/game/effects';
import { computeMaxMana, computeRegen, computeClickMana, getMeditationBonus, getIncursionStrength } from '@/lib/game/stores';
import { getMeditationBonus, getIncursionStrength } from '@/lib/game/stores';
import { computeTotalMaxMana, computeTotalRegen, computeTotalClickMana } from '@/lib/game/effects';
export function LeftPanel() {
const [isGathering, setIsGathering] = useState(false);
@@ -23,6 +24,8 @@ export function LeftPanel() {
const skillTiers = useSkillStore((s) => s.skillTiers);
const skillUpgrades = useSkillStore((s) => s.skillUpgrades);
const prestigeUpgrades = usePrestigeStore((s) => s.prestigeUpgrades);
const equippedInstances = useCraftingStore((s) => s.equippedInstances);
const equipmentInstances = useCraftingStore((s) => s.equipmentInstances);
@@ -77,19 +80,18 @@ export function LeftPanel() {
equipmentInstances,
});
const maxMana = computeMaxMana(
{ skills, skillTiers, skillUpgrades },
const maxMana = computeTotalMaxMana(
{ skills, prestigeUpgrades, skillUpgrades, skillTiers, equippedInstances, equipmentInstances },
upgradeEffects
);
const baseRegen = computeRegen(
{ skills, skillTiers, skillUpgrades },
const baseRegen = computeTotalRegen(
{ skills, prestigeUpgrades, skillUpgrades, skillTiers, equippedInstances, equipmentInstances },
upgradeEffects
);
const clickMana = computeTotalClickMana(
{ skills, skillUpgrades, skillTiers, equippedInstances, equipmentInstances },
upgradeEffects
);
const clickMana = computeClickMana({
skills,
skillTiers,
skillUpgrades,
});
const meditationMultiplier = getMeditationBonus(meditateTicks, skills, upgradeEffects.meditationEfficiency);
const incursionStrength = getIncursionStrength(day, hour);
const effectiveRegen = baseRegen * (1 - incursionStrength) * meditationMultiplier;
@@ -127,7 +129,7 @@ export function LeftPanel() {
<DebugName name="ActionButtons">
<ActionButtons
currentAction={currentAction}
currentStudyTarget={currentStudyTarget}
currentStudyTarget={currentStudyTarget as any}
designProgress={designProgress}
designProgress2={designProgress2}
preparationProgress={preparationProgress}