diff --git a/docs/circular-deps.txt b/docs/circular-deps.txt index 7fd1049..0e38cbd 100644 --- a/docs/circular-deps.txt +++ b/docs/circular-deps.txt @@ -1,8 +1,8 @@ # Circular Dependencies -Generated: 2026-05-25T10:24:06.549Z +Generated: 2026-05-25T10:43:13.495Z Found: 6 circular chain(s) — these MUST be fixed before modifying involved files. -1. Processed 134 files (1.6s) (2 warnings) +1. Processed 134 files (1.4s) (2 warnings) 2. 1) utils/floor-utils.ts > utils/room-utils.ts > utils/enemy-utils.ts 3. 2) utils/floor-utils.ts > utils/room-utils.ts 4. 3) stores/gameStore.ts > stores/gameActions.ts diff --git a/docs/dependency-graph.json b/docs/dependency-graph.json index 879aa51..c75ceff 100644 --- a/docs/dependency-graph.json +++ b/docs/dependency-graph.json @@ -1,6 +1,6 @@ { "_meta": { - "generated": "2026-05-25T10:24:04.726Z", + "generated": "2026-05-25T10:43:11.889Z", "description": "Import dependency graph for src/lib/game. Keys are files, values are arrays of files they import.", "usage": "To find what a file affects, search for its path in the VALUES. To find what a file depends on, look at its KEY entry." }, diff --git a/src/components/game/tabs/DisciplinesTab.tsx b/src/components/game/tabs/DisciplinesTab.tsx index 8d0cdba..785c0e1 100644 --- a/src/components/game/tabs/DisciplinesTab.tsx +++ b/src/components/game/tabs/DisciplinesTab.tsx @@ -1,6 +1,8 @@ import React, { useEffect, useState, useCallback } from 'react'; import { useDisciplineStore } from '@/lib/game/stores/discipline-slice'; import type { DisciplineDefinition } from '@/lib/game/types/disciplines'; +import type { ManaType } from '@/lib/game/types/elements'; +import { ELEMENTS } from '@/lib/game/constants/elements'; import { baseDisciplines } from '@/lib/game/data/disciplines/base'; import { elementalRegenDisciplines } from '@/lib/game/data/disciplines/elemental-regen'; import { elementalRegenAdvancedDisciplines } from '@/lib/game/data/disciplines/elemental-regen-advanced'; @@ -33,6 +35,8 @@ export interface DisciplineCardDefinition { id: string; name: string; description: string; + manaType: ManaType; + baseCost: number; perkThresholds?: number[]; perkValues?: number[]; perkTypes?: string[]; @@ -63,7 +67,7 @@ interface DisciplineCardProps { const DisciplineCard: React.FC = ({ definition, runtime, callbacks }) => { const { - id, name, description, perkThresholds, perkValues, perkTypes, + id, name, description, manaType, baseCost, perkThresholds, perkValues, perkTypes, statBonus, baseValue, drainBase, difficultyFactor, scalingFactor, } = definition; const { xp, paused: isPaused, concurrentLimit } = runtime; @@ -75,6 +79,11 @@ const DisciplineCard: React.FC = ({ definition, runtime, ca const activeStatBonus = calculateStatBonus(baseValue, displayXp, scalingFactor); const estimatedDrain = calculateManaDrain(drainBase, displayXp, difficultyFactor); + const elementDef = ELEMENTS[manaType]; + const manaColor = elementDef?.color ?? '#888888'; + const manaIcon = elementDef?.sym ?? '✦'; + const manaName = elementDef?.name ?? manaType; + const unlockedPerks = perkTypes?.reduce((acc, typ, idx) => { const threshold = perkThresholds?.[idx]; if (threshold === undefined) return acc; @@ -94,7 +103,21 @@ const DisciplineCard: React.FC = ({ definition, runtime, ca return (
-

{name}

+
+

{name}

+ + {manaIcon} + {manaName} + +

{description}

@@ -107,9 +130,16 @@ const DisciplineCard: React.FC = ({ definition, runtime, ca
-
- Drain: {estimatedDrain.toFixed(1)} ✦{' '} - XP: {displayXp} +
+ + Drain: {estimatedDrain.toFixed(1)}/tick + + + Base Cost: {baseCost} + + + XP: {displayXp} +
@@ -215,6 +245,8 @@ export const DisciplinesTab: React.FC = () => { perkThresholds: disc.perks?.map((p) => p.threshold), perkValues: disc.perks?.map((p) => p.value), perkTypes: disc.perks?.map((p) => p.type), + manaType: disc.manaType, + baseCost: disc.baseCost, statBonus: disc.statBonus.stat, baseValue: disc.statBonus.baseValue, drainBase: disc.drainBase,