Files
Mana-Loop/src/lib/game/data/disciplines/enchanter-combat.ts
T
n8n-gitea 9b559bb9f9
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m23s
feat: implement Room Enchantments system for Enchanter attunement
- Add roomEnchantment field to FloorState (coverage meter 0-100)
- Add 8 room enchantment effect definitions (fire/frost/death/lightning/dark/earth/transference)
- Add room-enchanting discipline with perks (room-coverage-rate capped, resonant-stamps once, 8 unlock perks)
- Add room enchantment combat tick phase (after DoT) with coverage growth and effect application
- Add coverage carryover between rooms via resonant-stamps perk
- Add RoomDisplay coverage bar and effect magnitude UI
- Add room-enchantments-utils.ts for coverage/effect computation
- Extract combat-room-enchantments.ts to keep combat-actions.ts under 400 lines
- Add 25 tests covering all acceptance criteria (AC-1 through AC-22)
2026-06-14 23:48:57 +02:00

103 lines
3.2 KiB
TypeScript

// ─── Enchanter Combat Disciplines ──────────────────────────────────────────────
// Room Enchanting discipline for the Room Enchantments system
import { DisciplinesAttunementType } from '../../types/disciplines';
import type { DisciplineDefinition } from '../../types/disciplines';
export const enchanterCombatDisciplines: DisciplineDefinition[] = [
{
id: 'room-enchanting',
name: 'Room Enchanting',
attunement: DisciplinesAttunementType.ENCHANTER,
manaType: 'transference',
baseCost: 10,
description: 'Empower your footwear enchantments to fill the room with elemental auras during combat. Higher mastery increases aura magnitude.',
statBonus: { stat: 'roomEnchantmentAuraMagnitude', baseValue: 0.10, label: 'Room Aura Magnitude' },
difficultyFactor: 150,
scalingFactor: 100,
drainBase: 3,
perks: [
{
id: 'room-coverage-rate',
type: 'capped',
threshold: 100,
value: 150,
maxTier: 4,
description: '+0.03 coverage/tick per tier (max 4)',
bonus: { stat: 'roomCoverageRate', amount: 0.03 },
},
{
id: 'resonant-stamps',
type: 'once',
threshold: 500,
value: 0,
description: 'Carry 20% coverage between rooms (max 20%)',
},
{
id: 'room-sigil-fire',
type: 'once',
threshold: 50,
value: 0,
description: 'Unlock Blazing Footsteps room enchantment',
unlocksEffects: ['boots_sigil_fire'],
},
{
id: 'room-sigil-frost',
type: 'once',
threshold: 75,
value: 0,
description: 'Unlock Frozen Trail room enchantment',
unlocksEffects: ['boots_sigil_frost'],
},
{
id: 'room-sigil-death',
type: 'once',
threshold: 100,
value: 0,
description: 'Unlock Necrotic Tread room enchantment',
unlocksEffects: ['boots_sigil_death'],
},
{
id: 'room-sigil-lightning',
type: 'once',
threshold: 125,
value: 0,
description: 'Unlock Shocking Stride room enchantment',
unlocksEffects: ['boots_sigil_lightning'],
},
{
id: 'room-sigil-dark',
type: 'once',
threshold: 150,
value: 0,
description: 'Unlock Shadow Patch room enchantment',
unlocksEffects: ['boots_sigil_dark'],
},
{
id: 'room-sigil-earth',
type: 'once',
threshold: 175,
value: 0,
description: 'Unlock Scoured Earth room enchantment',
unlocksEffects: ['boots_sigil_earth'],
},
{
id: 'room-sigil-transference-ground',
type: 'once',
threshold: 100,
value: 0,
description: 'Unlock Transference Grounds room enchantment',
unlocksEffects: ['boots_sigil_transference_ground'],
},
{
id: 'room-sigil-transference-path',
type: 'once',
threshold: 125,
value: 0,
description: 'Unlock Conductive Path room enchantment',
unlocksEffects: ['boots_sigil_transference_path'],
},
],
},
];