feat: discipline UI improvements - stat labels, prerequisites, mana type tab
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m23s

- Add player-friendly label field to statBonus in DisciplineDefinition
- Show prerequisite requirements on locked discipline cards
- Disable activate button for locked disciplines
- Restructure elemental attunement into dedicated 'Mana Types' tab
- Add checkDisciplinePrerequisites utility function
- Update store to enforce prerequisite checking on activation
- Split discipline-prerequisites tests into separate file
This commit is contained in:
2026-05-25 15:20:02 +02:00
parent 2c58186a67
commit 635b3b3f70
21 changed files with 313 additions and 82 deletions
@@ -14,7 +14,7 @@ export const elementalRegenAdvancedDisciplines: DisciplineDefinition[] = [
manaType: 'metal',
baseCost: 12,
description: 'Attune your metal mana to regenerate passively over time.',
statBonus: { stat: 'regen_metal', baseValue: 0.35 },
statBonus: { stat: 'regen_metal', baseValue: 0.35, label: 'Metal Regen/tick' },
difficultyFactor: 160,
scalingFactor: 80,
drainBase: 2,
@@ -43,7 +43,7 @@ export const elementalRegenAdvancedDisciplines: DisciplineDefinition[] = [
manaType: 'sand',
baseCost: 12,
description: 'Attune your sand mana to regenerate passively over time.',
statBonus: { stat: 'regen_sand', baseValue: 0.35 },
statBonus: { stat: 'regen_sand', baseValue: 0.35, label: 'Sand Regen/tick' },
difficultyFactor: 160,
scalingFactor: 80,
drainBase: 2,
@@ -72,7 +72,7 @@ export const elementalRegenAdvancedDisciplines: DisciplineDefinition[] = [
manaType: 'lightning',
baseCost: 12,
description: 'Attune your lightning mana to regenerate passively over time.',
statBonus: { stat: 'regen_lightning', baseValue: 0.35 },
statBonus: { stat: 'regen_lightning', baseValue: 0.35, label: 'Lightning Regen/tick' },
difficultyFactor: 160,
scalingFactor: 80,
drainBase: 2,
@@ -102,7 +102,7 @@ export const elementalRegenAdvancedDisciplines: DisciplineDefinition[] = [
manaType: 'crystal',
baseCost: 18,
description: 'Attune your crystal mana to regenerate passively over time.',
statBonus: { stat: 'regen_crystal', baseValue: 0.25 },
statBonus: { stat: 'regen_crystal', baseValue: 0.25, label: 'Crystal Regen/tick' },
difficultyFactor: 220,
scalingFactor: 110,
drainBase: 3,
@@ -131,7 +131,7 @@ export const elementalRegenAdvancedDisciplines: DisciplineDefinition[] = [
manaType: 'stellar',
baseCost: 18,
description: 'Attune your stellar mana to regenerate passively over time.',
statBonus: { stat: 'regen_stellar', baseValue: 0.25 },
statBonus: { stat: 'regen_stellar', baseValue: 0.25, label: 'Stellar Regen/tick' },
difficultyFactor: 220,
scalingFactor: 110,
drainBase: 3,
@@ -160,7 +160,7 @@ export const elementalRegenAdvancedDisciplines: DisciplineDefinition[] = [
manaType: 'void',
baseCost: 18,
description: 'Attune your void mana to regenerate passively over time.',
statBonus: { stat: 'regen_void', baseValue: 0.25 },
statBonus: { stat: 'regen_void', baseValue: 0.25, label: 'Void Regen/tick' },
difficultyFactor: 220,
scalingFactor: 110,
drainBase: 3,