[feature: guardian-stats] Improve guardian stat labels and add defensive mechanics #205

Closed
opened 2026-05-29 13:05:10 +02:00 by Anexim · 2 comments
Owner

FEATURE: Better stat labels and new defensive mechanics for guardians

Part A: Rename Stat Labels

Current labels are abbreviated and unclear. Change to:

  • HPHealth
  • PWRPower
  • ARMArmor

Files to Update

  1. src/components/game/tabs/guardian-pacts-components.tsx (lines 173-183) - GuardianStats component
  2. src/components/game/tabs/SpireSummaryTab.tsx (line 240) - NextGuardianCard
  3. src/components/game/tabs/SpireSummaryTab.tsx (line 331) - GuardianRosterItem

Part B: Add Defensive Mechanics to Guardians

Currently guardians only have armor (static damage reduction) and offensive effects. They lack:

  • Shields/Barriers - Temporary or regenerating damage absorption
  • Health Regen - Passive healing over time
  • Damage Reduction - Beyond flat armor percentage

New Mechanics to Implement

  1. Shield - Absorbs a flat amount of damage before HP is affected (can regenerate between rooms or over time)
  2. Barrier - Percentage-based damage reduction that regenerates (similar to existing enemy barrier system in room-utils.ts)
  3. Health Regen - Guardian heals X% of max HP per tick or per room transition

Files to Modify

  1. src/lib/game/types/attunements.ts - Add optional shield, barrier, healthRegen fields to GuardianDef
  2. src/lib/game/data/guardian-data.ts - Add new defensive stats to guardian definitions
  3. Combat processing logic - Apply shield/barrier/regen ticks during combat
  4. UI components - Display shield/barrier/regen stats on guardian cards

Priority

Medium - Improves guardian depth and readability

**FEATURE: Better stat labels and new defensive mechanics for guardians** ### Part A: Rename Stat Labels Current labels are abbreviated and unclear. Change to: - `HP` → `Health` - `PWR` → `Power` - `ARM` → `Armor` ### Files to Update 1. `src/components/game/tabs/guardian-pacts-components.tsx` (lines 173-183) - `GuardianStats` component 2. `src/components/game/tabs/SpireSummaryTab.tsx` (line 240) - `NextGuardianCard` 3. `src/components/game/tabs/SpireSummaryTab.tsx` (line 331) - `GuardianRosterItem` ### Part B: Add Defensive Mechanics to Guardians Currently guardians only have `armor` (static damage reduction) and offensive `effects`. They lack: - **Shields/Barriers** - Temporary or regenerating damage absorption - **Health Regen** - Passive healing over time - **Damage Reduction** - Beyond flat armor percentage ### New Mechanics to Implement 1. **Shield** - Absorbs a flat amount of damage before HP is affected (can regenerate between rooms or over time) 2. **Barrier** - Percentage-based damage reduction that regenerates (similar to existing enemy barrier system in `room-utils.ts`) 3. **Health Regen** - Guardian heals X% of max HP per tick or per room transition ### Files to Modify 1. `src/lib/game/types/attunements.ts` - Add optional `shield`, `barrier`, `healthRegen` fields to `GuardianDef` 2. `src/lib/game/data/guardian-data.ts` - Add new defensive stats to guardian definitions 3. Combat processing logic - Apply shield/barrier/regen ticks during combat 4. UI components - Display shield/barrier/regen stats on guardian cards ### Priority Medium - Improves guardian depth and readability
Anexim added the ai:todo label 2026-05-29 13:05:10 +02:00
n8n-gitea was assigned by Anexim 2026-05-29 13:05:10 +02:00
Author
Owner

Implementation Complete

Part A: Stat Label Renames

  • guardian-pacts-components.tsx (GuardianStats component): HP→Health, PWR→Power, ARM→Armor
  • SpireSummaryTab.tsx (NextGuardianCard + GuardianRosterItem): HP→Health

Part B: Defensive Mechanics

Type changes (attunements.ts):

  • Added optional fields to GuardianDef: shield, shieldRegen, barrier, barrierRegen, healthRegen, healthRegenIsPercent

Guardian data (guardian-data.ts):

  • Updated mk() helper with defensive parameter (shield, barrier, healthRegen stats)
  • Tier 1 (floors 10-80): Added progressive defensive stats (flat HP regen, small shields, low barriers)
  • Tier 2 (floors 90-120): Added shields + HP regen, barriers + HP regen, shields + barrier combos
  • Tier 3 (floors 130-160): Stronger shields/barriers/regen with tri-aspect guardians
  • Tier 4 (floors 170-200): Highest tier exotic guardians with full defensive suites

Combat logic (gameStore.ts + combatStore.ts):

  • Added guardianShield, guardianShieldMax, guardianBarrier, guardianBarrierMax to combat state
  • OnDamageDealt callback: shield absorbs flat damage first, then barrier absorbs percentage, then health regen heals floorHP
  • OnFloorCleared: resets guardian defensive state for next floor
  • State persists via localStorage

UI updates:

  • guardian-pacts-components.tsx: GuardianStats now shows Shield (cyan), Barrier (blue), Regen (green) in a second row when present
  • SpireSummaryTab.tsx: NextGuardianCard shows defensive stats inline when present

All 895 tests pass. All files under 400 lines.

**Implementation Complete** ### Part A: Stat Label Renames - `guardian-pacts-components.tsx` (GuardianStats component): HP→Health, PWR→Power, ARM→Armor - `SpireSummaryTab.tsx` (NextGuardianCard + GuardianRosterItem): HP→Health ### Part B: Defensive Mechanics **Type changes** (`attunements.ts`): - Added optional fields to `GuardianDef`: `shield`, `shieldRegen`, `barrier`, `barrierRegen`, `healthRegen`, `healthRegenIsPercent` **Guardian data** (`guardian-data.ts`): - Updated `mk()` helper with `defensive` parameter (shield, barrier, healthRegen stats) - Tier 1 (floors 10-80): Added progressive defensive stats (flat HP regen, small shields, low barriers) - Tier 2 (floors 90-120): Added shields + HP regen, barriers + HP regen, shields + barrier combos - Tier 3 (floors 130-160): Stronger shields/barriers/regen with tri-aspect guardians - Tier 4 (floors 170-200): Highest tier exotic guardians with full defensive suites **Combat logic** (`gameStore.ts` + `combatStore.ts`): - Added `guardianShield`, `guardianShieldMax`, `guardianBarrier`, `guardianBarrierMax` to combat state - OnDamageDealt callback: shield absorbs flat damage first, then barrier absorbs percentage, then health regen heals floorHP - OnFloorCleared: resets guardian defensive state for next floor - State persists via localStorage **UI updates**: - `guardian-pacts-components.tsx`: GuardianStats now shows Shield (cyan), Barrier (blue), Regen (green) in a second row when present - `SpireSummaryTab.tsx`: NextGuardianCard shows defensive stats inline when present All 895 tests pass. All files under 400 lines.
Author
Owner

Feature complete and pushed to master (commit 7bd28e2). All 895 tests pass, all files under 400 lines, no circular dependencies introduced.

Feature complete and pushed to master (commit 7bd28e2). All 895 tests pass, all files under 400 lines, no circular dependencies introduced.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Anexim/Mana-Loop#205