Commit Graph

20 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 58181139d0 docs: update mana-conversion-spec with rebalanced cost formulas
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m32s
Update Section 2 (Cost Formula), cost table, Section 8 display example,
and Section 11 formula summary to reflect the new linear cost formulas:
- rawCost: 10^(d+1) → 2×distance
- componentCost: 10×(d+1) → 3×distance

These changes keep the spec in sync with the fix for issue #378.
2026-06-12 12:38:58 +02:00
n8n-gitea e45c206321 fix: resolve enchanting spec vs code discrepancies (issue #324)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
- D2: Move spell_iceShard to basic-spells.ts at cost 75 (canonical), remove duplicate from frost-spells.ts
- D7: disenchantEquipment now adds 'Ready for Enchantment' tag and resets rarity to 'common'
- D8: disenchantEquipment now credits recovered mana to raw mana pool
- D14: Wire enchantPower stat from discipline effects into efficiencyBonus via new getEnchantingEfficiencyBonus() helper
- D3: Fix spec file reference from crafting-attunements.ts to data/attunements.ts
- D1/D6: Add missing metalSpellFocus to spec capacity table
2026-06-09 09:33:30 +02:00
n8n-gitea 2994004707 fix(item-fab): wizard thresholds +50 XP shift, dup crystal_cap_10, spec rarity
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s
2026-06-08 23:49:55 +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 573130cdb1 fix: attunement system spec-vs-code discrepancies (issue #331)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m24s
- Fix conversion rate level scaling from linear (1+level*0.5) to exponential (1.5^(level-1)) in conversion-rates.ts
- Fix getAttunementLevelMultiplier formula to match spec §4.3
- Add level-up logging in attunementStore.ts via combat store addActivityLog
- Clarify getAttunementConversionRate returns flat base rate (level scaling applied separately)
- Update spec §8 to describe time-based puzzle room system matching code implementation
- Add 17 regression tests verifying exponential scaling, base rate behavior, and spec table values
2026-06-08 22:08:17 +02:00
n8n-gitea 64c1d2f51e fix: spire climbing spec discrepancies (DISC-1,14,15,18,19,21,22,23,29,34)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m21s
- DISC-1: Fix ascent seed missing +runId in combat-descent-actions.ts
- DISC-14: Recovery room 10x regen/conversion already in gameStore.ts
- DISC-15/18/21: Add missing completion logs for recovery, library, treasure rooms
- DISC-19: Filter library discipline selection to non-paused disciplines
- DISC-22: Fix puzzle room log format to match spec
- DISC-23: Replace hardcoded MAX_LEVEL with MAX_ATTUNEMENT_LEVEL
- DISC-29: Update spec to document libraryStayed/recoveryStayed on currentRoom
- DISC-34: Add 'Exited the Spire' activity log in exitSpireMode
2026-06-08 20:36:42 +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 3e8e8f72d5 chore: remove last stale golem ref in spire-combat-spec files table
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m25s
2026-06-07 14:41:39 +02:00
n8n-gitea 1a0886f702 chore: golemancy redesign cleanup — remove orphaned legacy code and update docs
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
2026-06-07 12:54:12 +02:00
n8n-gitea 9d4b3f3c69 fix: complete golemancy component-based redesign cleanup
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m18s
- Fix summonGolemsForRoom to use golemLoadout instead of removed enabledGolems
- Fix discBonus hardcoded to 0 in golem-combat.ts pipeline (now computed from discipline effects)
- Remove deprecated types: SummonedGolem, ActiveGolem, GolemDef
- Remove legacy GolemancyState fields: enabledGolems, summonedGolems, legacyActiveGolems
- Remove orphaned store actions: toggleGolem, setEnabledGolems
- Delete orphaned legacy data files: base-golems.ts, elemental-golems.ts, hybrid-golems.ts
- Update GolemDebugSection to use new golemLoadout system
- Update golemancy-spec.md §17 to reflect all features as complete
- Update all test files to match new type shapes
- All 958 tests passing
2026-06-06 18:37:09 +02:00
n8n-gitea bd15df85ff fix: add curse amplification to applyEnemyDefenses (spec §6.3)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m19s
The curse debuff was stored on enemies via dot-runtime.ts but the
amplification was never applied to incoming damage. Added curse
magnitude check in applyEnemyDefenses (combat-tick.ts) that multiplies
incoming damage by (1 + magnitude) for each active curse effect.

- Curse amplification applied BEFORE dodge/barrier/armse defenses
- Multiple curse effects stack multiplicatively
- Non-curse effects (burn, freeze, etc.) are ignored for amplification

Also updated spire-combat-spec.md Known Gaps table to reflect:
- Melee defense bypass fixed (issue #285)
- Curse amplification now implemented (issue #286)

Added 9 regression tests in curse-amplification.test.ts.

All 957 tests pass (50 test files).
2026-06-06 17:46:39 +02:00
n8n-gitea c40e4ee940 feat: redesign golemancy system spec - component-based construction (Core + Frame + Mind Circuit + Enchantments)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m20s
2026-06-05 15:36:17 +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 94a2b671b9 docs: update spire-climbing-spec with non-combat room mechanics (recovery, treasure, library, puzzle)
Build and Publish Mana Loop Docker Image / build-and-publish (push) Failing after 1m3s
2026-06-04 13:37:38 +02:00
n8n-gitea c22f9c3bd5 feat: add mana conversion system spec and ticket
Build and Publish Mana Loop Docker Image / build-and-publish (push) Failing after 1m2s
2026-06-04 13:24:15 +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
n8n-gitea feae6b468d fix: update AGENTS.md and specs for incursion day, elemental matchups, golem count, and descent mechanics
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m22s
2026-06-03 11:54:40 +02:00