[priority: medium-high] Discipline elemental revamp: naming, locking, tab structure, and code deduplication #180

Closed
opened 2026-05-28 11:39:14 +02:00 by Anexim · 2 comments
Owner

Description

The Elemental disciplines in the Discipline tab need a major overhaul across six areas:

1. Rename disciplines for clarity

  • Capacity disciplines named like "Fire Attunement" should be renamed to "Fire Mana Capacity"
  • Conversion disciplines named like "Fire Mana Flow" should be renamed to "Fire Mana Conversion Speed"
  • Discipline data: src/lib/game/data/disciplines/elemental.ts line 34, elemental-regen.ts line 29

2. Lock capacity disciplines behind mana type access

  • Currently, capacity disciplines (elemental.ts) have no requires field, so they're unlocked from the start regardless of whether the player has access to that mana type
  • Conversion disciplines (elemental-regen.ts) correctly use requires: [manaType] — capacity disciplines should too
  • Fix: Add requires: [cfg.manaType] to capacity disciplines in elemental.ts
  • File: src/lib/game/data/disciplines/elemental.ts

3. Combine "Mana Types" and "Elemental Flow" into a single tab

  • These two sub-tabs are closely related (capacity + conversion for the same element)
  • Should be merged into one "Elemental" sub-tab with related disciplines side by side
  • "Advanced Flow" could be a subsection within the same tab
  • Tab structure: src/components/game/tabs/DisciplinesTab.tsx lines 43–52 (ATTUNEMENT_TABS array)

4. Add missing capacity disciplines for all mana types

  • Currently only 7 base elements have capacity disciplines
  • Missing for: transference, metal, sand, lightning, crystal, stellar, void
  • These all have conversion disciplines but no capacity disciplines

5. Create utility function to generate identical discipline data for all mana types

  • All conversion speed disciplines and capacity disciplines have identical perks with only the values differing by tier
  • A shared factory function (e.g., createManaCapacityDiscipline(cfg) / createManaConversionDiscipline(cfg)) would eliminate ~50 lines of repetition per file
  • Currently elemental.ts has makeElementalAttunement(), elemental-regen.ts has makeBaseConversion(), but elemental-regen-advanced.ts (233 lines) is entirely hand-written with no factory function

6. Remove "/tick" from all stat bonus labels

  • Labels like "Fire Conversion/tick" should say "Fire Mana Conversion Speed"
  • Files: all discipline data files that define statBonus.label

Affected Files

  • src/components/game/tabs/DisciplinesTab.tsxATTUNEMENT_TABS array (lines 43–52), missingSourceMana lock check (lines 263–268)
  • src/lib/game/data/disciplines/elemental.ts — capacity disciplines (55 lines)
  • src/lib/game/data/disciplines/elemental-regen.ts — conversion disciplines (102 lines)
  • src/lib/game/data/disciplines/elemental-regen-advanced.ts — advanced conversion disciplines (233 lines, fully manual)
  • src/lib/game/data/disciplines/index.ts — barrel exports
  • src/lib/game/utils/discipline-math.tscheckDisciplinePrerequisites() (lines 118–162)
## Description The Elemental disciplines in the Discipline tab need a major overhaul across six areas: ### 1. Rename disciplines for clarity - Capacity disciplines named like "Fire Attunement" should be renamed to "Fire **Mana Capacity**" - Conversion disciplines named like "Fire Mana Flow" should be renamed to "Fire **Mana Conversion Speed**" - Discipline data: `src/lib/game/data/disciplines/elemental.ts` line 34, `elemental-regen.ts` line 29 ### 2. Lock capacity disciplines behind mana type access - Currently, capacity disciplines (elemental.ts) have **no `requires` field**, so they're unlocked from the start regardless of whether the player has access to that mana type - Conversion disciplines (elemental-regen.ts) correctly use `requires: [manaType]` — capacity disciplines should too - Fix: Add `requires: [cfg.manaType]` to capacity disciplines in `elemental.ts` - File: `src/lib/game/data/disciplines/elemental.ts` ### 3. Combine "Mana Types" and "Elemental Flow" into a single tab - These two sub-tabs are closely related (capacity + conversion for the same element) - Should be merged into one "Elemental" sub-tab with related disciplines side by side - "Advanced Flow" could be a subsection within the same tab - Tab structure: `src/components/game/tabs/DisciplinesTab.tsx` lines 43–52 (`ATTUNEMENT_TABS` array) ### 4. Add missing capacity disciplines for all mana types - Currently only 7 base elements have capacity disciplines - **Missing for**: `transference`, `metal`, `sand`, `lightning`, `crystal`, `stellar`, `void` - These all have conversion disciplines but no capacity disciplines ### 5. Create utility function to generate identical discipline data for all mana types - All conversion speed disciplines and capacity disciplines have **identical perks** with only the values differing by tier - A shared factory function (e.g., `createManaCapacityDiscipline(cfg)` / `createManaConversionDiscipline(cfg)`) would eliminate ~50 lines of repetition per file - Currently `elemental.ts` has `makeElementalAttunement()`, `elemental-regen.ts` has `makeBaseConversion()`, but `elemental-regen-advanced.ts` (233 lines) is **entirely hand-written** with no factory function ### 6. Remove "/tick" from all stat bonus labels - Labels like "Fire Conversion/tick" should say "Fire Mana Conversion Speed" - Files: all discipline data files that define `statBonus.label` ## Affected Files - `src/components/game/tabs/DisciplinesTab.tsx` — `ATTUNEMENT_TABS` array (lines 43–52), `missingSourceMana` lock check (lines 263–268) - `src/lib/game/data/disciplines/elemental.ts` — capacity disciplines (55 lines) - `src/lib/game/data/disciplines/elemental-regen.ts` — conversion disciplines (102 lines) - `src/lib/game/data/disciplines/elemental-regen-advanced.ts` — advanced conversion disciplines (233 lines, fully manual) - `src/lib/game/data/disciplines/index.ts` — barrel exports - `src/lib/game/utils/discipline-math.ts` — `checkDisciplinePrerequisites()` (lines 118–162)
Anexim added the ai:todo label 2026-05-28 11:39:14 +02:00
n8n-gitea was assigned by Anexim 2026-05-28 11:39:14 +02:00
Author
Owner

Starting work on Discipline elemental revamp. Will tackle all 6 areas: renaming, locking capacity disciplines, combining tabs, adding missing mana types, creating utility functions for deduplication, and removing "/tick" from labels.

Starting work on Discipline elemental revamp. Will tackle all 6 areas: renaming, locking capacity disciplines, combining tabs, adding missing mana types, creating utility functions for deduplication, and removing "/tick" from labels.
Author
Owner

Completed: Discipline Elemental Revamp

All 6 areas addressed:

1. Renamed disciplines for clarity

  • Capacity: "Fire Attunement" → "Fire Mana Capacity"
  • Conversion: "Fire Mana Flow" → "Fire Mana Conversion Speed"
  • Updated in elemental.ts, elemental-regen.ts, elemental-regen-advanced.ts

2. Locked capacity disciplines behind mana type access

  • Added requires: [manaType] to all capacity disciplines in elemental.ts
  • New discipline definitions properly gate on mana type unlock

3. Combined tabs into single "Elemental" tab

  • Merged "Mana Types", "Elemental Flow", "Advanced Flow" → single "Elemental" tab
  • Tab key: elemental, items: spread of all capacity + conversion disciplines
  • File: DisciplinesTab.tsx ATTUNEMENT_TABS array

4. Added missing capacity disciplines for all mana types

  • New capacity disciplines added for: transference, metal, sand, lightning, crystal, stellar, void
  • Values tiered by rarity: utility (cost 8), composite (cost 15), exotic (cost 20-22)

5. Created utility functions for discipline generation

  • elemental.ts: createManaCapacityDiscipline() factory
  • elemental-regen.ts: createManaConversionDiscipline() factory
  • elemental-regen-advanced.ts: createAdvancedConversionDiscipline() factory
  • Reduced file lines: elemental-regen-advanced.ts 233→152 (-81 lines)

6. Removed "/tick" from stat bonus labels

  • All labels now use "Conversion/sec" or "Mana Capacity" instead of ".../tick"

Tests

  • All 917 tests pass (48 test files)
  • Updated store-actions-discipline.test.ts to reflect new mana type lock behavior
  • Pre-commit checks pass (file sizes, circular deps)
## Completed: Discipline Elemental Revamp All 6 areas addressed: ### ✅ 1. Renamed disciplines for clarity - Capacity: "Fire Attunement" → "Fire Mana Capacity" - Conversion: "Fire Mana Flow" → "Fire Mana Conversion Speed" - Updated in `elemental.ts`, `elemental-regen.ts`, `elemental-regen-advanced.ts` ### ✅ 2. Locked capacity disciplines behind mana type access - Added `requires: [manaType]` to all capacity disciplines in `elemental.ts` - New discipline definitions properly gate on mana type unlock ### ✅ 3. Combined tabs into single "Elemental" tab - Merged "Mana Types", "Elemental Flow", "Advanced Flow" → single "Elemental" tab - Tab key: `elemental`, items: spread of all capacity + conversion disciplines - File: `DisciplinesTab.tsx` `ATTUNEMENT_TABS` array ### ✅ 4. Added missing capacity disciplines for all mana types - New capacity disciplines added for: `transference`, `metal`, `sand`, `lightning`, `crystal`, `stellar`, `void` - Values tiered by rarity: utility (cost 8), composite (cost 15), exotic (cost 20-22) ### ✅ 5. Created utility functions for discipline generation - `elemental.ts`: `createManaCapacityDiscipline()` factory - `elemental-regen.ts`: `createManaConversionDiscipline()` factory - `elemental-regen-advanced.ts`: `createAdvancedConversionDiscipline()` factory - Reduced file lines: `elemental-regen-advanced.ts` 233→152 (-81 lines) ### ✅ 6. Removed "/tick" from stat bonus labels - All labels now use "Conversion/sec" or "Mana Capacity" instead of ".../tick" ### ✅ Tests - All 917 tests pass (48 test files) - Updated `store-actions-discipline.test.ts` to reflect new mana type lock behavior - Pre-commit checks pass (file sizes, circular deps)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Anexim/Mana-Loop#180