fix: remove unused imports from GolemancyTab and fix build error
Some checks failed
Build and Publish Mana Loop Docker Image / build-and-publish (push) Has been cancelled

This commit is contained in:
Z User
2026-04-02 10:03:52 +00:00
parent d91460a4e6
commit 6df5dc6a53
3 changed files with 118 additions and 8 deletions

View File

@@ -1,18 +1,15 @@
'use client';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
import { Button } from '@/components/ui/button';
import { Badge } from '@/components/ui/badge';
import { ScrollArea } from '@/components/ui/scroll-area';
import { Separator } from '@/components/ui/separator';
import {
Golem, Zap, Clock, Swords, Shield, Target, Sparkles, Lock, Check, X
Mountain, Zap, Clock, Swords, Target, Sparkles, Lock, Check, X
} from 'lucide-react';
import { GOLEMS_DEF, getGolemSlots, isGolemUnlocked, getGolemDamage, getGolemAttackSpeed, getGolemFloorDuration } from '@/lib/game/data/golems';
import { ELEMENTS } from '@/lib/game/constants';
import { fmt } from '@/lib/game/store';
import type { GameStore } from '@/lib/game/store';
import type { GolemancyState, AttunementState, ElementState } from '@/lib/game/types';
export interface GolemancyTabProps {
store: GameStore;
@@ -108,7 +105,7 @@ export function GolemancyTab({ store }: GolemancyTabProps) {
<CardHeader className="pb-2">
<CardTitle className="text-sm flex items-center justify-between">
<div className="flex items-center gap-2">
<Golem className="w-4 h-4" style={{ color: elementColor }} />
<Mountain className="w-4 h-4" style={{ color: elementColor }} />
<span style={{ color: elementColor }}>{golem.name}</span>
</div>
<div className="flex items-center gap-1">
@@ -215,7 +212,7 @@ export function GolemancyTab({ store }: GolemancyTabProps) {
<Card className="bg-gray-900/80 border-gray-700">
<CardHeader className="pb-2">
<CardTitle className="text-lg flex items-center gap-2">
<Golem className="w-5 h-5 text-amber-500" />
<Mountain className="w-5 h-5 text-amber-500" />
Golemancy
</CardTitle>
</CardHeader>
@@ -278,7 +275,7 @@ export function GolemancyTab({ store }: GolemancyTabProps) {
return (
<Badge key={sg.golemId} variant="outline" className="text-sm py-1 px-2">
<Golem className="w-3 h-3 mr-1" style={{ color: elem?.color }} />
<Mountain className="w-3 h-3 mr-1" style={{ color: elem?.color }} />
{golem?.name}
</Badge>
);

View File

@@ -356,3 +356,116 @@ export function getGolemAttackSpeed(
export function getGolemFloorDuration(skills: Record<string, number>): number {
return 1 + (skills.golemLongevity || 0);
}
// Get maintenance cost multiplier (Golem Siphon reduces by 10% per level)
export function getGolemMaintenanceMultiplier(skills: Record<string, number>): number {
return 1 - (skills.golemSiphon || 0) * 0.1;
}
// Check if player can afford golem summon cost
export function canAffordGolemSummon(
golemId: string,
rawMana: number,
elements: Record<string, { current: number; max: number; unlocked: boolean }>
): boolean {
const golem = GOLEMS_DEF[golemId];
if (!golem) return false;
for (const cost of golem.summonCost) {
if (cost.type === 'raw') {
if (rawMana < cost.amount) return false;
} else if (cost.element) {
const elem = elements[cost.element];
if (!elem || !elem.unlocked || elem.current < cost.amount) return false;
}
}
return true;
}
// Deduct golem summon cost from mana pools
export function deductGolemSummonCost(
golemId: string,
rawMana: number,
elements: Record<string, { current: number; max: number; unlocked: boolean }>
): { rawMana: number; elements: Record<string, { current: number; max: number; unlocked: boolean }> } {
const golem = GOLEMS_DEF[golemId];
if (!golem) return { rawMana, elements };
let newRawMana = rawMana;
let newElements = { ...elements };
for (const cost of golem.summonCost) {
if (cost.type === 'raw') {
newRawMana -= cost.amount;
} else if (cost.element && newElements[cost.element]) {
newElements = {
...newElements,
[cost.element]: {
...newElements[cost.element],
current: newElements[cost.element].current - cost.amount,
},
};
}
}
return { rawMana: newRawMana, elements: newElements };
}
// Check if player can afford golem maintenance for one tick
export function canAffordGolemMaintenance(
golemId: string,
rawMana: number,
elements: Record<string, { current: number; max: number; unlocked: boolean }>,
skills: Record<string, number>
): boolean {
const golem = GOLEMS_DEF[golemId];
if (!golem) return false;
const maintenanceMult = getGolemMaintenanceMultiplier(skills);
for (const cost of golem.maintenanceCost) {
const adjustedAmount = cost.amount * maintenanceMult;
if (cost.type === 'raw') {
if (rawMana < adjustedAmount) return false;
} else if (cost.element) {
const elem = elements[cost.element];
if (!elem || !elem.unlocked || elem.current < adjustedAmount) return false;
}
}
return true;
}
// Deduct golem maintenance cost for one tick
export function deductGolemMaintenance(
golemId: string,
rawMana: number,
elements: Record<string, { current: number; max: number; unlocked: boolean }>,
skills: Record<string, number>
): { rawMana: number; elements: Record<string, { current: number; max: number; unlocked: boolean }> } {
const golem = GOLEMS_DEF[golemId];
if (!golem) return { rawMana, elements };
const maintenanceMult = getGolemMaintenanceMultiplier(skills);
let newRawMana = rawMana;
let newElements = { ...elements };
for (const cost of golem.maintenanceCost) {
const adjustedAmount = cost.amount * maintenanceMult;
if (cost.type === 'raw') {
newRawMana -= adjustedAmount;
} else if (cost.element && newElements[cost.element]) {
newElements = {
...newElements,
[cost.element]: {
...newElements[cost.element],
current: newElements[cost.element].current - adjustedAmount,
},
};
}
}
return { rawMana: newRawMana, elements: newElements };
}

View File

@@ -48,7 +48,7 @@ import {
import { EQUIPMENT_TYPES } from './data/equipment';
import { ENCHANTMENT_EFFECTS, calculateEffectCapacityCost } from './data/enchantment-effects';
import { ATTUNEMENTS_DEF, getTotalAttunementRegen, getAttunementConversionRate, getAttunementXPForLevel, MAX_ATTUNEMENT_LEVEL } from './data/attunements';
import { GOLEMS_DEF, getGolemSlots, isGolemUnlocked, getGolemDamage, getGolemAttackSpeed, getGolemFloorDuration } from './data/golems';
import { GOLEMS_DEF, getGolemSlots, isGolemUnlocked, getGolemDamage, getGolemAttackSpeed, getGolemFloorDuration, canAffordGolemSummon, deductGolemSummonCost, canAffordGolemMaintenance, deductGolemMaintenance } from './data/golems';
// Default empty effects for when effects aren't provided
const DEFAULT_EFFECTS: ComputedEffects = {