Commit Graph

7 Commits

Author SHA1 Message Date
n8n-gitea 505481cefc fix: Restrict pact affinity cast speed bonus to invocation spells only
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m21s
Previously (commit 62638d6), the pact affinity cast speed bonus was applied
to ALL spell casts (active, equipment, invocation). Per design intent, it
should only apply to invocation system spells.

Changes:
- invocation-system-spec.md: Update §6.2, §10.2, AC-13 to clarify bonus
  applies to invocation spells only
- gameStore.ts: Stop computing pact affinity bonus into attackSpeedMult;
  pass base 1.0 instead
- combat-actions.ts: Remove stale AC-13 comment
- combat-invocation.ts: Compute pact affinity cast speed bonus locally
  for invocation spells only, using prestige upgrade level + discipline bonus
- invocation-utils.ts: Remove computeAttackSpeedMultFromPactAffinity (no
  longer needed)

All 1235 tests pass.
2026-06-13 19:47:06 +02:00
n8n-gitea 7dda515a71 feat: add Invocation System spec for Invoker attunement
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m22s
- New spec at docs/specs/attunements/invoker/systems/invocation-system-spec.md
- Invocation Charge meter (0-100) fills passively, drains while invoking
- Channeled guardian auto-casts spells from their elements at reduced cost
- Spell selection picks best affordable spell, steps down as mana depletes
- No guardian swap mid-invocation; ends when charge depleted or room cleared
- Pact Affinity extended with diminishing-returns cast speed bonus (max 50%)
- New guardian-invocation discipline with 4 perks (efficiency, speed, sustain, mastery)
2026-06-13 13:02:21 +02:00
n8n-gitea 4863dbc324 fix: apply mana drain to conversion disciplines (bug #379)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m24s
- Remove isConversionDiscipline guard in discipline-slice.ts:processTick
  that was skipping mana drain for all 24 conversion disciplines
- Update test to verify conversion disciplines DO drain mana
- Add regression tests for auto-pause and XP accrual on conversion disciplines
- Fix misleading comments in elemental-regen.ts and elemental-regen-advanced.ts

All 1196 tests pass.
2026-06-12 18:56:51 +02:00
n8n-gitea cba3090d7e fix(pact-system): resolve 5 spec-vs-code discrepancies (DISC-4,6,8,11,12)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
- DISC-11: Fix floor 140/150 element composition in guardian-data.ts
  Floor 140 now uses [light, fire, radiantflames] (was [sand, earth, water])
  Floor 150 now uses [air, death, miasma] (was [lightning, fire, air])
- DISC-12: Reconcile spec §7.1 vs §8.2 tables in pact-system-spec.md
  Updated §8.2 to match §7.1 authoritative element mappings
- DISC-4: Deduplicate pact ritual completion logic
  Refactored pact-ritual.ts pipeline to delegate completion to
  prestigeStore.completePactRitual() instead of duplicating state writes
- DISC-6: Add 4 missing boon types to guardians
  critChance (floor 90), manaGain (floor 110), prestigeInsight (floor 200),
  studySpeed (floor 220) — all 12 spec boon types now used
- DISC-8: Add comment clarifying signedPactDetails persistence
  Code already correct (not reset by startNewLoop/resetPrestigeForNewLoop)
- Updated spire-utils.test.ts to match corrected floor 140/150 elements
2026-06-08 22:50:03 +02:00
n8n-gitea e90ae82da1 docs: fix documentation inconsistencies (issue #291)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m29s
- Fix pact-system-spec.md §5.2: Remove misquote of AGENTS.md (pacts do NOT persist)
- Fix pact-system-spec.md §4.2: Update pactBinding note (now resolved in code)
- Fix pact-system-spec.md §8.2/8.3: Correct floor 140/150/200 element tags
- Add pactInterferenceMitigation to AGENTS.md and GAME_BRIEFING.md (15 upgrades)
- Fix GAME_BRIEFING.md §7: Correct Tier 1 armor values and pact times
- Fix GAME_BRIEFING.md §7: Correct Tier 2 armor values and pact times
- Fix GAME_BRIEFING.md §7: Correct Tier 3 pact times
- Fix GAME_BRIEFING.md §7: Correct floor 100 element (sand, not sand+fire+earth)
- Fix AGENTS.md: Update equipment count from 50 to 43
- Fix AGENTS.md: Fix enchantment design time (per stack, not per effect slot)
- Fix GAME_BRIEFING.md §6: Clarify puzzle room frequency (guaranteed per 7th floor)
- Fix GAME_BRIEFING.md §11: Clarify spireKey formula (1 + level × 2)
2026-06-07 16:14:23 +02:00
n8n-gitea 6aed5c8d2b docs: reconcile spec inconsistencies across all documentation
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s
- Fix incursion start day: 5→20 in GAME_BRIEFING.md (matches code constant)
- Fix fabricator discipline count: 2→5 in AGENTS.md
- Fix discipline counts: elemental.ts 22→21, advanced-regen.ts 14→15
- Fix equipment count: 50→43, remove shields, fix catalysts count
- Fix prestige upgrade count: add missing manaWell, manaFlow, pactBinding, pactInterferenceMitigation
- Remove x3 victory multiplier (no victory condition defined yet)
- Update pact persistence: pacts do NOT persist through prestige
- Update elemental matchup tables to match ultimate truth
- Update room type frequencies to match spire-climbing-spec
- Update guardian data tables to use formulas
- Update Tier 3 guardian elements to match guardian-data.ts code
- Add pactBinding + pactInterferenceMitigation to PRESTIGE_DEF constants
- Wire pactInterferenceMitigation into useGameDerived.ts
- Update spire-combat-spec.md Known Gaps table (DoT implemented, melee bypass bug)
- Update invoker-spec.md known issues (all resolved)
- Update golemancy-spec.md status (undergoing redesign)
- Update PrestigeTab test to expect 15 upgrades
- Create Gitea issues #285 (melee defense bypass), #286 (DoT verified), #287 (mana conversion gap)
2026-06-05 14:07:22 +02:00
n8n-gitea b506f0bcc3 feat: implement DoT/debuff runtime system (spec §6, AC-12, AC-13)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m18s
- Add ActiveEffect, EffectType types to game.ts; activeEffects + effectiveArmor on EnemyState
- Add SpellOnHitEffect + onHitEffect field to SpellDefinition
- Wire onHitEffect to fire (burn), death (curse), lightning (armor_corrode), frost (freeze), soul (bypassArmor burn)
- Add applyOnHitEffect() — applies on-hit effect on successful spell hit (spec §6.2)
- Add processDoTPhase() — ticks all active effects after weapon/golem attacks (spec §6.3)
- Add bypassArmor/bypassBarrier support in applyEnemyDefenses() (AC-13)
- Export standalone applyEnemyDefenses from combat-tick.ts for DoT pipeline
- Split DoT runtime into separate dot-runtime.ts (135 lines) to keep combat-actions.ts under 400 lines
- Update all enemy generation sites with activeEffects/effectiveArmor defaults
- Fix test helpers for new required fields

All 921 tests pass (45 test files)
2026-06-03 18:38:01 +02:00