[TASK-009] Attunement expansion — new attunements + path choice at prestige (Phase 4) #12

Closed
opened 2026-05-13 10:45:01 +02:00 by Anexim · 0 comments
Owner

Objective

Expand the attunement system from 3 to 8–10 attunements grouped into 3 paths (Combat, Crafting, Utility). Implement a path selection moment at first prestige that determines unlock order.

New Attunements to Implement

Existing (reworked)

Attunement Path Slot
Enchanter Crafting Right Hand
Invoker Combat Chest
Fabricator Crafting Left Hand

New

Attunement Path Slot Unlock Condition
Battle Mage Combat Head Reach floor 20
Warden Combat Right Leg Sign 3 pacts
Arcanist Utility Back Study 5 skills to max
Sage Utility Head Complete 3 loops
Runesmith Crafting Left Leg Enchant 5 items
Timeweaver Utility Back Survive incursion

Path Selection

At first prestige (loop completion), present the player with a 3-way choice:

  • 🗡️ Combat Path — Battle Mage + Warden unlock first
  • Crafting Path — Runesmith + advanced Fabricator unlock first
  • 🔮 Utility Path — Sage + Arcanist unlock first

The choice determines unlock order only — all attunements are eventually accessible.

Type Changes

Update AttunementState in types/attunements.ts:

interface AttunementState {
  id: string;
  active: boolean;
  level: number;
  experience: number;
  title?: string;
  // NEW:
  path?: 'combat' | 'crafting' | 'utility';
  unlockedAt?: number; // Loop number when unlocked
}

Work Items

  • Add path and unlockedAt fields to AttunementState
  • Define 6 new attunement data entries in data/attunements.ts
  • Update attunements/index.ts to handle path-based unlock logic
  • Implement path selection UI at prestige screen
  • Update attunementStore.ts to support path-based filtering
  • Add attunement XP and level-up logic for new attunements
  • Write unit tests for attunement store (attunement store tests currently empty)
  • Verify no circular dependency introduced

Acceptance Criteria

  • 8–10 attunements exist with proper data definitions
  • Path choice appears at first prestige and correctly gates unlock order
  • Attunement store tests pass
  • No regression in existing attunement functionality
  • npx tsc --noEmit passes

Reference

  • Remediation Plan: Part 2 — Attunement Expansion
  • Data file: src/lib/game/data/attunements.ts
  • Store: src/lib/game/stores/attunementStore.ts
## Objective Expand the attunement system from 3 to 8–10 attunements grouped into 3 paths (Combat, Crafting, Utility). Implement a path selection moment at first prestige that determines unlock order. ## New Attunements to Implement ### Existing (reworked) | Attunement | Path | Slot | |------------|------|------| | Enchanter | Crafting | Right Hand | | Invoker | Combat | Chest | | Fabricator | Crafting | Left Hand | ### New | Attunement | Path | Slot | Unlock Condition | |------------|------|------|-----------------| | Battle Mage | Combat | Head | Reach floor 20 | | Warden | Combat | Right Leg | Sign 3 pacts | | Arcanist | Utility | Back | Study 5 skills to max | | Sage | Utility | Head | Complete 3 loops | | Runesmith | Crafting | Left Leg | Enchant 5 items | | Timeweaver | Utility | Back | Survive incursion | ## Path Selection At first prestige (loop completion), present the player with a 3-way choice: - 🗡️ **Combat Path** — Battle Mage + Warden unlock first - ✨ **Crafting Path** — Runesmith + advanced Fabricator unlock first - 🔮 **Utility Path** — Sage + Arcanist unlock first The choice determines **unlock order** only — all attunements are eventually accessible. ## Type Changes Update `AttunementState` in `types/attunements.ts`: ```typescript interface AttunementState { id: string; active: boolean; level: number; experience: number; title?: string; // NEW: path?: 'combat' | 'crafting' | 'utility'; unlockedAt?: number; // Loop number when unlocked } ``` ## Work Items - [ ] Add `path` and `unlockedAt` fields to `AttunementState` - [ ] Define 6 new attunement data entries in `data/attunements.ts` - [ ] Update `attunements/index.ts` to handle path-based unlock logic - [ ] Implement path selection UI at prestige screen - [ ] Update `attunementStore.ts` to support path-based filtering - [ ] Add attunement XP and level-up logic for new attunements - [ ] Write unit tests for attunement store (attunement store tests currently empty) - [ ] Verify no circular dependency introduced ## Acceptance Criteria - 8–10 attunements exist with proper data definitions - Path choice appears at first prestige and correctly gates unlock order - Attunement store tests pass - No regression in existing attunement functionality - `npx tsc --noEmit` passes ## Reference - Remediation Plan: Part 2 — Attunement Expansion - Data file: `src/lib/game/data/attunements.ts` - Store: `src/lib/game/stores/attunementStore.ts`
Anexim added the ai:todo label 2026-05-13 10:45:01 +02:00
n8n-gitea was assigned by Anexim 2026-05-13 10:45:01 +02:00
Anexim added the ai:blocked label 2026-05-16 13:34:02 +02:00
Anexim added ai:done and removed ai:todoai:blocked labels 2026-05-18 10:19:01 +02:00
Anexim removed the ai:done label 2026-05-18 10:19:28 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Anexim/Mana-Loop#12