Commit Graph

7 Commits

Author SHA1 Message Date
n8n-gitea b7afe7a434 feat: Implement Invocation System for Invoker attunement
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m22s
Implements the full Invocation System as per spec §13 with all 22 acceptance criteria:
- Invocation charge meter with passive fill and active drain
- Auto-activation when charge reaches 100 with living enemies
- Guardian selection by elemental bonus × tierMultiplier scoring
- Spell selection from guardian's full element spellbook (not limited to learned)
- Step-down to affordable spells, auto-end when none affordable
- Charge drain during invocation with spell cost and discipline scaling
- Pact affinity cast speed bonus (diminishing returns, max 50%)
- guardian-invocation discipline with 4 perks (efficiency/speed/sustain/mastery)
- Cost multiplier (base 0.1, min 0.05) and drain multiplier (base 1.0, min 0.7)
- Signal recharged on spire exit and reset on descent
- Invocation Panel UI in SpireCombatPage with charge meter and status
- Compact invocation status indicator in SpireCombatControls

Files changed:
- data/disciplines/invoker.ts: Added guardian-invocation discipline definition
- effects/discipline-effects.ts: Added invocationChargeRateBonus, drainRateMultiplier, invocationCostReduction stat keys
- utils/invocation-utils.ts: NEW - All invocation utility functions (guardian selection, spell selection, charge rate, cost/drain multipliers)
- stores/combat-state.types.ts: Added invocationCharge and activeInvocation fields
- stores/combatStore.ts: Added invocation state defaults, resetInvocationState action, partialize, spire exit reset
- stores/combat-invocation.ts: NEW - Extracted invocation tick processing (charge fill/drain, casting, auto-activate/end)
- stores/combat-melee.ts: NEW - Extracted melee combat processing (keeps combat-actions.ts under 400 lines)
- stores/combat-actions.ts: Integrated invocation and melee modules
- __tests__/invocation-system.test.ts: NEW - 39 comprehensive tests
- SpireCombatPage.tsx: Added InvocationPanel between SpireHeader and RoomDisplay
- SpireCombatControls.tsx: Added compact invocation status indicator

All 1235 tests pass (including 39 new invocation tests).
2026-06-13 13:42:05 +02:00
n8n-gitea 8df3be5628 fix: invoker disciplines use raw mana, fabricator uses earth
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m34s
- #151: Changed invoker disciplines (pact-attunement, guardians-boon) from light/dark to raw
- #150: Changed crafting-efficiency from sand to earth
2026-05-27 11:18:31 +02:00
n8n-gitea 1aea72c013 refactor: Redesign Invoker disciplines for pact bonuses and guardian boons
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m21s
- Replace generic spell-casting/void-manipulation with pact-focused disciplines
- Add Pact Attunement (light): reduces pact signing time, boosts pact affinity
- Add Guardian's Boon (dark): amplifies all guardian unique perks
- Add pactAffinityBonus and guardianBoonMultiplier stat keys to effect system
- Apply pactAffinityBonus in pact signing time calculation (gameStore)
- Scale guardian boon values by guardianBoonMultiplier (combat-utils)
- Guard Invoker discipline activation behind signedPacts.length > 0
- Add 'Signed guardian pact' prerequisite display in discipline-math
2026-05-26 21:43:46 +02:00
n8n-gitea da4f9eccb3 fix: make discipline perk numerical bonuses functional via structured BonusSpec
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m23s
- Add PerkBonus type and optional bonus field to DisciplinePerk
- Populate bonus data on 39 perks across base, elemental, elemental-regen,
  elemental-regen-advanced, and invoker discipline files
- Rewrite computeDisciplineEffects() to apply once/infinite/capped perk bonuses
  through known stat keys (maxManaBonus, baseDamageBonus, regen_*, elementCap_*)
- Add per-element cap bonus routing in effects.ts computeAllEffects()
- Remove dead enchantPower bonus (no consumer in effects pipeline)
2026-05-26 18:00:29 +02:00
n8n-gitea 635b3b3f70 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
2026-05-25 15:20:02 +02:00
n8n-gitea 23a83a04cf fix: resolve all TypeScript compilation errors
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m17s
- Fixed DisciplinesAttunementType enum usage in discipline data files
- Fixed EquipmentSlot import in equipment/types.ts
- Fixed enchantment-effects.ts export/import chain
- Fixed safe-persist.ts StateStorage type compatibility
- Fixed store persist partial return types for all stores
- Fixed gameStore.ts ElementState type and error handling
- Fixed useGameDerived.ts missing properties on GameCoordinatorStore
- Added SkillUpgradeChoice type to types.ts
- Fixed ActionButtons.tsx optional currentStudyTarget prop
- Fixed GameToast.tsx Toast type compatibility
- Fixed EnchantmentDesigner sub-component type mismatches
- Fixed SpireCombatPage equippedInstances/equipmentInstances types
- Fixed page.tsx computeClickMana argument
- Added baseCastTime to SpellDef type
- Fixed golem/types.ts and loot-drops.ts import paths
- Fixed craftingStore.ts missing lastError in initial state and actions
- Fixed store-actions-combat-prestige.test.ts Memory type usage
- Fixed floor-utils.upgraded.test.ts array type annotation
- Fixed computed-stats.test.ts state type assertions
- Fixed activity-log.test.ts state type annotation
- Fixed discipline-math.test.ts enum value usage
- Fixed game-loop.test.ts vitest mock import
- Various other test file type fixes
2026-05-24 14:34:49 +02:00
n8n-gitea e462bfcc13 feat: implement Active Disciplines system
Build and Publish Mana Loop Docker Image / build-and-publish (push) Failing after 31s
2026-05-16 19:17:12 +02:00