fix: runestone formula, prestige/transcendence rebalance, exploration fixes, and comprehensive balance audit #135

Merged
naomi merged 53 commits from fix/stones into main 2026-03-31 19:57:53 -07:00
Owner

What changed and why

Runestone formula (prestige.ts)

  • Swapped sqrt for cbrt — much stronger diminishing returns for large gold values
  • Added base cap of 200 (→ ~1,125 max with all upgrades at 5.625× multiplier)
  • Prevents extended AFK sessions from producing runestone windfalls that allow immediate upgrade purchasing and rapid prestige chaining

Prestige threshold formula (prestige.ts)

  • Old: 1,000,000 × 5^n — exponential, grows impossibly fast, prestige 10+ takes years
  • New: 1,000,000 × (n+1)² — polynomial, peaks at ~1 day/run around P8–10, then gets easier as the production multiplier overtakes it
  • Removed thresholdScaleFactor constant (no longer needed)

Production multiplier (prestige.ts)

  • Old: 1.15^n
  • New: 1.25^n — compounds faster, ensures the polynomial threshold eventually gets easy in the late game

Boss prestige requirements (bosses.ts)

  • Rescaled proportionally from 0–88 range to 0–20 range
  • The Absolute One now requires prestige 20 (was 88), making transcendence reachable in a few weeks of idle play

Echo formula (transcendence.ts)

  • Constant changed from 853 → 224
  • At the target prestige of 20: floor(224 / sqrt(20)) = 50 echoes per transcendence (no meta upgrades)
  • With all echo_meta upgrades (3.75× total): up to 187 echoes per transcendence

Transcendence upgrade costs (transcendenceUpgrades.ts)

  • Old total: 866 echoes → New total: 400 echoes (roughly halved across all categories)
  • Apotheosis still requires all 15 upgrades purchased

Balance fixes (closes #141, #142, #143, #144, #145)

  • Equipment: philosophers_stone click multiplier 2.25→2.5, crystal_shard 1.55→1.65 (#144)
  • Recipes: added primal_omega_lens cross-zone click_power recipe at 1.38× (#142)
  • Adventurers: celestial_guard base cost adjusted to smooth tier 14→15→16 cost curve (#145)

Quest reward rebalancing (closes #136, #137)

  • Shadow Marshes: buffed shadow_mere, witch_coven, plague_ruins rewards to match combat requirements (#136)
  • Astral Void: added gold to void_rift, increased rewards across all Astral Void quests (#137)

Boss reward additions (closes #138, #139, #140)

  • Assigned 9 unassigned adventurer-specific upgrades to Crystalline Spire through Eternal Throne bosses that had empty upgradeRewards arrays (#140)

Combat power documentation (closes #153)

  • Expanded JSDoc on computePartyCombatPower to clarify companion bossDamage multiplier behaviour

Effective adventurer stats (closes #154)

  • Added computeEffectiveAdventurerStats to tick.ts and updated AdventurerCard to display effective post-multiplier stats

Adventurer upgrade timing (closes #158)

  • Audited every adventurer-specific upgrade reward — upgrades now land within the same progression window where that adventurer tier is still a meaningful contributor

Sync and save fixes (closes #147, #148, #151)

  • Fixed sync new content count to report only genuinely changed items (#147)
  • Fixed signature mismatch after first auto-boss completion (#148)
  • Added auto-buy cap (100) on non-max-tier adventurers (#151)

Auto-adventurer persistence (closes #156)

  • Auto-buy preference now preserved across prestige resets

Broken CDN image (closes #159)

  • Uploaded missing auto_adventurer.jpg to CDN

Codex unlock hints (closes #146)

  • Locked codex entries now display a hint generated from sourceType and sourceId

Exploration bug fixes (closes #160, #161)

  • Fixed auto-save race condition discarding exploration materials collected mid-tick (#160)
  • Fixed exploration areas failing to unlock when zone was unlocked via boss kill or quest completion (#161)

Concurrent prestige fix (closes #162)

  • Added optimistic locking via updatedAt — concurrent prestige requests return 409

Prestige UX (closes #163)

  • Added reloadSilent to game context — no loading screen flash after prestige

Balance adjustments (closes #164, #165, #166, #167)

  • Reduced shadow_mere CP requirement 5,000,000 → 2,000,000 (#164)
  • Buffed crystal drops from Shadow Marshes bosses and quests (#165)
  • Increased runestone yield from 10 → 15 per prestige level (#166)
  • Daily challenge set always includes a clicks challenge (#167)

Progression QoL (closes #168, #169)

  • Added computeProjectedRunestones() and persistent +N On Prestige resource bar row (#168)
  • Added enablePrestigeAnnouncements setting per player (#169)

Comprehensive balance audit (closes #187, #191, #192, #193, #194, #195, #196, #197, #198)

Crystal economy fixes

  • Zeroed crystal rewards for all Zone 7+ boss drops (Celestial Reaches onwards) — crystals are an early/mid-game currency and should not flow freely into the endgame (#187)
  • Zeroed crystal rewards for all Zone 9+ quest rewards (Infernal Court onwards) — same rationale (#191)

Achievement additions and fixes

  • Added quest milestone achievements at 75 quests (10,000 crystals) and 100 quests (15,000 crystals)
  • Added boss milestone achievement at 50 bosses (15,000 crystals)
  • Added prestige milestone achievements at P50, P100, P150, P200 — rewarding runestones rather than crystals to match the late-game economy
  • Added gold milestone achievements through 1e90 gold earned
  • Fixed quest_eternal condition from 122 → 112 (actual quest count) — was permanently impossible (#197)
  • Fixed fully_equipped condition from 65 → 78 (actual equipment count after new items) (#197)
  • Fixed devourer_slayer description to remove incorrect zone reference

Upgrade balance

  • Fixed Essence Guild multiplier 1.5× → — was identical to the cheaper Merchant Alliance for 5× the cost (#194)
  • Raised Void Ascendancy crystal cost 10M → 50M — was trivially cheap compared to the parallel Celestial Mandate upgrade (100B essence + 50T gold) (#195)
  • Fixed Sunken Temple quest rewards (gold 2M → 60M, essence 1,500 → 25,000, crystals 75 → 400) — was rewarding less than its easier prerequisite Witch Coven (#193)

Equipment balance

  • Buffed Eternal Prism stats to click 5×, combat , gold 2.5× — was only marginally better than the free Eternity Stone boss drop for 100M crystals (#196)

Missing content

  • Created 13 missing equipment items for Zones 15–18 (primordial_chaos through the_absolute) that were referenced by late-game boss equipmentRewards arrays but never existed in equipment.ts (#198):
    • chaos_mantle, titan_core (Primordial Chaos)
    • expanse_blade, void_armour_mk2 (Infinite Expanse)
    • cosmos_blade, reality_plate (Reality Forge)
    • maelstrom_edge, cosmic_plate (Cosmic Maelstrom)
    • primeval_blade, ancient_aegis (Primeval Sanctum)
    • absolute_blade, eternity_plate, omniversal_core (The Absolute)
  • Stats scale from combat 14× / gold 9× (Zone 15) up to combat 28× / gold 20× for the final boss drops

Type system

  • Extended AchievementReward type to support runestones field
  • Updated tick engine achievement processing to award both crystals and runestones

Target progression timeline (optimal play, ~16h/day idle)

  • First cycle to P20: ~375h (~3.3 weeks)
  • Each subsequent cycle gets faster as echo upgrades boost income/combat/threshold
  • Expected ~5 transcendences before apotheosis at 50–187 echoes/transcendence
  • ~6 months to apotheosis for a dedicated player

Test plan

  • Lint, build, and test pipeline passes (100% coverage maintained)
  • Prestige threshold at P0 is still 1,000,000 gold
  • Prestige runs feel ~1 day long around P8–10 and get easier after
  • The Absolute One is locked until prestige 20
  • Transcendence at P20 awards 50 echoes (no meta upgrades)
  • All 15 transcendence upgrades cost 400 echoes total
  • Bosses in Zones 7+ drop 0 crystals; Zones 1–6 retain crystal drops
  • Quests in Zones 9+ reward 0 crystals; Zones 1–8 retain crystal rewards
  • Sunken Temple rewards more gold/essence/crystals than Witch Coven
  • Essence Guild gives 2× income (stronger than Merchant Alliance 1.5×)
  • Void Ascendancy costs 50M crystals
  • Eternal Prism stats are click 5×, combat 3×, gold 2.5×
  • Late-game bosses (primordial_titan through the_absolute_one) drop equipment on kill
  • quest_eternal achievement requires 112 quests
  • fully_equipped achievement requires 78 equipment pieces
  • P50/P100/P150/P200 prestige achievements reward runestones
  • Adventurer cards show effective post-multiplier stats
  • Exploration areas unlock correctly when their zone is unlocked
  • Concurrent prestige requests return 409
  • No loading screen flash after prestige
  • Daily challenge set always includes a clicks challenge
  • Resource bar shows +N On Prestige runestone preview

This PR was crafted with help from Hikari~ 🌸

## What changed and why ### Runestone formula (`prestige.ts`) - Swapped `sqrt` for `cbrt` — much stronger diminishing returns for large gold values - Added base cap of **200** (→ ~1,125 max with all upgrades at 5.625× multiplier) - Prevents extended AFK sessions from producing runestone windfalls that allow immediate upgrade purchasing and rapid prestige chaining ### Prestige threshold formula (`prestige.ts`) - Old: `1,000,000 × 5^n` — exponential, grows impossibly fast, prestige 10+ takes years - New: `1,000,000 × (n+1)²` — polynomial, peaks at ~1 day/run around P8–10, then gets *easier* as the production multiplier overtakes it - Removed `thresholdScaleFactor` constant (no longer needed) ### Production multiplier (`prestige.ts`) - Old: `1.15^n` - New: `1.25^n` — compounds faster, ensures the polynomial threshold eventually gets easy in the late game ### Boss prestige requirements (`bosses.ts`) - Rescaled proportionally from 0–88 range to 0–20 range - The Absolute One now requires prestige **20** (was 88), making transcendence reachable in a few weeks of idle play ### Echo formula (`transcendence.ts`) - Constant changed from 853 → **224** - At the target prestige of 20: `floor(224 / sqrt(20)) = 50 echoes` per transcendence (no meta upgrades) - With all echo_meta upgrades (3.75× total): up to **187 echoes** per transcendence ### Transcendence upgrade costs (`transcendenceUpgrades.ts`) - Old total: **866 echoes** → New total: **400 echoes** (roughly halved across all categories) - Apotheosis still requires **all 15 upgrades** purchased ### Balance fixes (closes #141, #142, #143, #144, #145) - Equipment: `philosophers_stone` click multiplier 2.25→2.5, `crystal_shard` 1.55→1.65 (#144) - Recipes: added `primal_omega_lens` cross-zone click_power recipe at 1.38× (#142) - Adventurers: `celestial_guard` base cost adjusted to smooth tier 14→15→16 cost curve (#145) ### Quest reward rebalancing (closes #136, #137) - Shadow Marshes: buffed `shadow_mere`, `witch_coven`, `plague_ruins` rewards to match combat requirements (#136) - Astral Void: added gold to `void_rift`, increased rewards across all Astral Void quests (#137) ### Boss reward additions (closes #138, #139, #140) - Assigned 9 unassigned adventurer-specific upgrades to Crystalline Spire through Eternal Throne bosses that had empty `upgradeRewards` arrays (#140) ### Combat power documentation (closes #153) - Expanded JSDoc on `computePartyCombatPower` to clarify companion `bossDamage` multiplier behaviour ### Effective adventurer stats (closes #154) - Added `computeEffectiveAdventurerStats` to `tick.ts` and updated `AdventurerCard` to display effective post-multiplier stats ### Adventurer upgrade timing (closes #158) - Audited every adventurer-specific upgrade reward — upgrades now land within the same progression window where that adventurer tier is still a meaningful contributor ### Sync and save fixes (closes #147, #148, #151) - Fixed sync new content count to report only genuinely changed items (#147) - Fixed signature mismatch after first auto-boss completion (#148) - Added auto-buy cap (100) on non-max-tier adventurers (#151) ### Auto-adventurer persistence (closes #156) - Auto-buy preference now preserved across prestige resets ### Broken CDN image (closes #159) - Uploaded missing `auto_adventurer.jpg` to CDN ### Codex unlock hints (closes #146) - Locked codex entries now display a hint generated from `sourceType` and `sourceId` ### Exploration bug fixes (closes #160, #161) - Fixed auto-save race condition discarding exploration materials collected mid-tick (#160) - Fixed exploration areas failing to unlock when zone was unlocked via boss kill or quest completion (#161) ### Concurrent prestige fix (closes #162) - Added optimistic locking via `updatedAt` — concurrent prestige requests return 409 ### Prestige UX (closes #163) - Added `reloadSilent` to game context — no loading screen flash after prestige ### Balance adjustments (closes #164, #165, #166, #167) - Reduced `shadow_mere` CP requirement 5,000,000 → 2,000,000 (#164) - Buffed crystal drops from Shadow Marshes bosses and quests (#165) - Increased runestone yield from 10 → 15 per prestige level (#166) - Daily challenge set always includes a clicks challenge (#167) ### Progression QoL (closes #168, #169) - Added `computeProjectedRunestones()` and persistent `+N On Prestige` resource bar row (#168) - Added `enablePrestigeAnnouncements` setting per player (#169) --- ## Comprehensive balance audit (closes #187, #191, #192, #193, #194, #195, #196, #197, #198) ### Crystal economy fixes - Zeroed crystal rewards for all Zone 7+ boss drops (Celestial Reaches onwards) — crystals are an early/mid-game currency and should not flow freely into the endgame (#187) - Zeroed crystal rewards for all Zone 9+ quest rewards (Infernal Court onwards) — same rationale (#191) ### Achievement additions and fixes - Added quest milestone achievements at 75 quests (10,000 crystals) and 100 quests (15,000 crystals) - Added boss milestone achievement at 50 bosses (15,000 crystals) - Added prestige milestone achievements at P50, P100, P150, P200 — rewarding **runestones** rather than crystals to match the late-game economy - Added gold milestone achievements through 1e90 gold earned - Fixed `quest_eternal` condition from 122 → **112** (actual quest count) — was permanently impossible (#197) - Fixed `fully_equipped` condition from 65 → **78** (actual equipment count after new items) (#197) - Fixed `devourer_slayer` description to remove incorrect zone reference ### Upgrade balance - Fixed Essence Guild multiplier 1.5× → **2×** — was identical to the cheaper Merchant Alliance for 5× the cost (#194) - Raised Void Ascendancy crystal cost 10M → **50M** — was trivially cheap compared to the parallel Celestial Mandate upgrade (100B essence + 50T gold) (#195) - Fixed Sunken Temple quest rewards (gold 2M → 60M, essence 1,500 → 25,000, crystals 75 → 400) — was rewarding less than its easier prerequisite Witch Coven (#193) ### Equipment balance - Buffed Eternal Prism stats to click 5×, combat **3×**, gold **2.5×** — was only marginally better than the free Eternity Stone boss drop for 100M crystals (#196) ### Missing content - Created **13 missing equipment items** for Zones 15–18 (primordial_chaos through the_absolute) that were referenced by late-game boss `equipmentRewards` arrays but never existed in `equipment.ts` (#198): - `chaos_mantle`, `titan_core` (Primordial Chaos) - `expanse_blade`, `void_armour_mk2` (Infinite Expanse) - `cosmos_blade`, `reality_plate` (Reality Forge) - `maelstrom_edge`, `cosmic_plate` (Cosmic Maelstrom) - `primeval_blade`, `ancient_aegis` (Primeval Sanctum) - `absolute_blade`, `eternity_plate`, `omniversal_core` (The Absolute) - Stats scale from combat 14× / gold 9× (Zone 15) up to combat 28× / gold 20× for the final boss drops ### Type system - Extended `AchievementReward` type to support `runestones` field - Updated tick engine achievement processing to award both crystals and runestones --- ## Target progression timeline (optimal play, ~16h/day idle) - First cycle to P20: ~375h (~3.3 weeks) - Each subsequent cycle gets faster as echo upgrades boost income/combat/threshold - Expected **~5 transcendences** before apotheosis at 50–187 echoes/transcendence - **~6 months** to apotheosis for a dedicated player ## Test plan - [ ] Lint, build, and test pipeline passes (100% coverage maintained) - [ ] Prestige threshold at P0 is still 1,000,000 gold - [ ] Prestige runs feel ~1 day long around P8–10 and get easier after - [ ] The Absolute One is locked until prestige 20 - [ ] Transcendence at P20 awards 50 echoes (no meta upgrades) - [ ] All 15 transcendence upgrades cost 400 echoes total - [ ] Bosses in Zones 7+ drop 0 crystals; Zones 1–6 retain crystal drops - [ ] Quests in Zones 9+ reward 0 crystals; Zones 1–8 retain crystal rewards - [ ] Sunken Temple rewards more gold/essence/crystals than Witch Coven - [ ] Essence Guild gives 2× income (stronger than Merchant Alliance 1.5×) - [ ] Void Ascendancy costs 50M crystals - [ ] Eternal Prism stats are click 5×, combat 3×, gold 2.5× - [ ] Late-game bosses (primordial_titan through the_absolute_one) drop equipment on kill - [ ] `quest_eternal` achievement requires 112 quests - [ ] `fully_equipped` achievement requires 78 equipment pieces - [ ] P50/P100/P150/P200 prestige achievements reward runestones - [ ] Adventurer cards show effective post-multiplier stats - [ ] Exploration areas unlock correctly when their zone is unlocked - [ ] Concurrent prestige requests return 409 - [ ] No loading screen flash after prestige - [ ] Daily challenge set always includes a clicks challenge - [ ] Resource bar shows `+N On Prestige` runestone preview ✨ This PR was crafted with help from Hikari~ 🌸
hikari added 1 commit 2026-03-24 20:01:44 -07:00
fix: apply cbrt and cap to runestone formula to prevent AFK windfalls
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m3s
CI / Lint, Build & Test (pull_request) Successful in 1m10s
959b86fa8b
hikari added 1 commit 2026-03-24 20:03:20 -07:00
chore: raise runestone base cap to 100
CI / Lint, Build & Test (pull_request) Successful in 1m12s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m12s
74dd3bf463
hikari added 1 commit 2026-03-24 20:08:56 -07:00
chore: raise runestone base cap to 200
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m6s
CI / Lint, Build & Test (pull_request) Successful in 1m10s
0d6d05e50b
hikari added 1 commit 2026-03-24 20:44:27 -07:00
fix: rewrite prestige/transcendence formula and rebalance progression
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m8s
CI / Lint, Build & Test (pull_request) Successful in 1m11s
0ae6aa12b2
hikari changed title from fix: runestone formula diminishing returns and cap to WIP: fix: runestone formula and full prestige/transcendence rebalance 2026-03-24 20:55:37 -07:00
hikari added 5 commits 2026-03-25 14:07:22 -07:00
Closes #138
- shadow_mere: 150 essence → 5M gold + 5K essence
- witch_coven: 500 essence → 20M gold + 20K essence
- plague_ruins: 8M gold + 2K essence → 100M gold + 30K essence + 500 crystals

Closes #136
- void_rift: zero gold → 2B gold + 300K essence + 1K crystals
- star_graveyard: 1B gold + 100K essence → 8B gold + 800K essence + 3K crystals
- between_worlds: zero gold + 250K essence → 25B gold + 2M essence + 8K crystals
- the_end: 10B gold + 1M essence → 80B gold + 5M essence + 20K crystals

Closes #137
- Added glacier_tomb (200K combat, 2.5hr) between frozen_wastes and ice_caves
- Added frozen_throne (3M combat, 7hr) after storm_citadel
- Updated ice_caves prerequisite to chain from glacier_tomb
- Frozen Peaks now has 5 quests, in line with other zones

Closes #139
fix: restore upgrade drops to late-game bosses
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m5s
CI / Lint, Build & Test (pull_request) Successful in 1m10s
d84725921a
Assigned 3 previously orphaned adventurer upgrades to appropriate bosses:
- horizon_beast (Infinite Expanse) → oblivion_paladin_1
- maelstrom_god (Cosmic Maelstrom) → transcendent_rogue_1
- eternal_end (The Absolute) → omniversal_champion_1

Closes #140
hikari added 5 commits 2026-03-25 15:29:57 -07:00
- militia: GPS 0.5 → 0.7 to match 10x cost jump
- Tiers 11-14: costs raised to even ~4.7x spread through tier 15
- Closes #145
- celestial_focus: click 3x → 4.25x (above free void_heart_gem)
- void_conduit: combat 7x → 10.5x (above free throne_blade)
- crystal_matrix: gold 4.75x → 7.5x (above free eternal_armour)
- Closes #141
- Added absolute_focus (click 1.28x) to the_absolute zone
- Matches zone-18 pattern, filling gap left by existing gold/combat recipes
- Closes #142
- elder_bark_shield: combat 1.08x → 1.12x
- void_fragment_amulet: gold 1.10x → 1.15x
- soul_bound_catalyst: essence 1.15x → 1.20x
- Closes #143
fix: differentiate philosophers_stone and buff crystal_shard
CI / Lint, Build & Test (pull_request) Successful in 1m17s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m18s
b6e218167d
- philosophers_stone: gold 1.25x → 1.4x (income specialist, distinct
  from eternal_flame which has combat 1.1x + gold 1.25x)
- crystal_shard: gold 1.10x → 1.20x (zone-5 epic, better premium)
- Closes #144
hikari added 1 commit 2026-03-25 16:47:58 -07:00
fix: resolve sync inflation, signature mismatch, CP accuracy, auto-buy cap, unlock hints
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m3s
CI / Lint, Build & Test (pull_request) Failing after 1m8s
4c297f1ce1
- #147: Guard all patch functions with hasChanged before incrementing
  sync counter to prevent inflation on no-op patches
- #148: Clear stale HMAC signature after each boss fight so subsequent
  auto-saves do not send a mismatched signature
- #146: Auto-unlock adventurer-specific upgrades in applyTick when
  their adventurer count > 0; show recruit hint in upgrade panel
- #149: Add Essence/s row to resource bar dropdown
- #150: Fix broken auto-quest CP reduce formula; centralise via
  computePartyCombatPower which applies all multipliers correctly
- #151: Cap auto-buy at 100 for non-max-tier adventurers; max tier
  (highest level unlocked) remains uncapped
- #152: Export computePartyCombatPower from tick, applying global
  upgrades, prestige, equipment, set bonuses, echo, crafted, and
  companion multipliers; use it in resource bar and boss panel
hikari added 1 commit 2026-03-25 16:55:00 -07:00
fix: balance equipment, click_power recipe ceiling, adventurer cost curve
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m5s
CI / Lint, Build & Test (pull_request) Failing after 1m10s
d1559c327f
- #141: Already resolved in prior commits (celestial_focus 4.25×,
  void_conduit 10.5×, crystal_matrix 7.5× all exceed free-drop tier)
- #142: Add primal_omega_lens cross-zone click_power recipe at 1.38×,
  matching the eternal_omega combat ceiling and closing the gap above
  the zone-17 cap of 1.25×
- #143: Already resolved in prior commits (elder_bark_shield 1.12×,
  void_fragment_amulet 1.15×, soul_bound_catalyst 1.20× all buffed)
- #144: Raise philosophers_stone click 2.25×→2.5× to differentiate from
  eternal_flame; raise crystal_shard click 1.55×→1.65× so the
  volcanic_forger set trinket beats void_compass (1.6×)
- #145: Militia goldPerSecond already fixed; raise celestial_guard
  baseCost 1.4T→1.8T, smoothing tier 14→15 from 4.67× to 6× and
  removing the jarring tier 15→16 wall (7.14×→5.56×)
hikari added 3 commits 2026-03-25 17:13:05 -07:00
Distributes the nine unassigned adventurer-specific upgrade rewards
across Crystalline Spire through Eternal Throne bosses that previously
had empty upgradeRewards arrays, ensuring all adventurer upgrades are
obtainable via boss drops.
Expands the JSDoc on computePartyCombatPower to explicitly document
that the companion bossDamage multiplier is intentionally included in
all combat-power calculations (boss panel, resource bar, quest gating),
matching server-side behaviour and resolving labelling ambiguity.
fix: show effective post-multiplier stats on adventurer cards (#154)
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m2s
CI / Lint, Build & Test (pull_request) Failing after 1m8s
8a332dc9ce
Adds computeEffectiveAdventurerStats to tick.ts to calculate per-unit
gold/s, essence/s, and combat power with all active multipliers applied
(upgrades, prestige, equipment, echo, crafted, companions). Updates
AdventurerCard to display these effective values so players can see the
true contribution of each adventurer rather than raw base stats.
hikari added 2 commits 2026-03-26 10:28:35 -07:00
The auto-buy adventurers toggle was silently reset to false on every
prestige because it was not included in the list of automation preferences
carried forward into the fresh state. This mirrors the existing handling
for autoBoss and autoQuest.

Closes #156
fix: use computePartyCombatPower in quest panel for consistent CP display
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m5s
CI / Lint, Build & Test (pull_request) Failing after 1m10s
0542402b4d
The quest panel was computing party combat power with a simplified
hand-rolled loop (base combatPower × count only) that did not account for
upgrade multipliers, prestige bonus, equipment set bonuses, echo or
crafted multipliers, or the active companion bonus.

This meant the displayed "you have X combat power" value diverged from
the value used by the auto-quest engine (computePartyCombatPower), which
could show the player an incorrect picture of whether a quest was
startable — particularly after upgrades or equipment began boosting
combat power.

Replacing the loop with computePartyCombatPower(state) makes the quest
card display fully consistent with the auto-quest eligibility check.

Closes #157
hikari added 1 commit 2026-03-26 15:43:22 -07:00
fix: pull adventurer upgrade rewards forward to their relevant progression window
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m13s
CI / Lint, Build & Test (pull_request) Failing after 1m13s
48120e0789
Ten upgrades were dropping 1-2 zones after the adventurer they buff was
no longer meaningful. Moved apprentice_1 to goblin_camp, militia_1 to
haunted_mine, knight_1 to frozen_wastes, peasant_2 to glacier_tomb,
peasant_3 to shadow_mere, and pulled the T27-30 upgrades
(astral_sovereign_1, primordial_mage_1, reality_warden_1,
infinity_ranger_1) and cosmos_knight_1 into their adventurer's own zone.
hikari added 4 commits 2026-03-31 12:35:21 -07:00
Block the auto-save tick while the /explore/collect request is in-flight,
clear the stale HMAC signature after the server-side DB write, and reset
the save timer so the next auto-save fires after React has re-rendered with
the new materials in stateReference — eliminating the window where a stale
client snapshot could overwrite the server's freshly saved collect result.
applyBossResult and the tick engine both updated zone status to "unlocked"
but never propagated that unlock to state.exploration.areas, leaving all
areas in the new zone permanently locked until force-unlock was used.
Both code paths now map over exploration areas and set any locked area
whose zone just became unlocked to "available" in the same state update.
Adds an optimistic lock on the prestige route so that a second concurrent
request for the same state is rejected with 409 rather than firing the
Discord announcement twice. Also adds missing branch-coverage tests for
debug.ts to satisfy the 100% threshold.

Closes #162
fix: eliminate loading screen flash after prestige (#163)
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m6s
CI / Lint, Build & Test (pull_request) Successful in 1m13s
48477ee286
Add reloadSilent which rehydrates state without toggling isLoading,
preventing the game from unmounting and showing the loading screen
after auto- or manual prestige.
hikari added 4 commits 2026-03-31 12:48:41 -07:00
The zone unlocks at 1.5M CP (storm_citadel), making the 5M CP entry
quest unreachable for most players. 2M CP is achievable with Arcane
Scholar and Dragon Rider adventurers without being trivial.
Add 150 crystals to shadow_mere and 500 to witch_coven quest rewards.
Double shadow_marshes boss crystal drops (700->1500, 1500->3000, 3000->6000)
to provide meaningful crystal flow for players reaching Shadow Marshes.
Raise runestonesPerPrestigeLevel from 10 to 15. Early-game players
were earning only 10-20 runestones per prestige, making the upgrade
shop feel out of reach. This boost helps mid-game without affecting
the cap behaviour (cbrt formula still prevents AFK windfalls).
fix: guarantee clicks challenge in daily set (#167)
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m7s
CI / Lint, Build & Test (pull_request) Successful in 1m12s
7d1126e8ad
Players blocked on zone progression had days where all three daily
challenges (bossesDefeated, questsCompleted, prestige) required
progression they couldn't make. Always including a clicks challenge
ensures at least one challenge is completable regardless of where
the player is in the game.
hikari added 2 commits 2026-03-31 13:20:08 -07:00
Adds computeProjectedRunestones() to the shared tick engine using the
correct server-side formula (cbrt, (count+1)^2 threshold). The resource
bar now shows a persistent '+N On Prestige' row so players can always
see what they would earn. The prestige panel's own preview was also
fixed to use the shared helper, replacing a broken local calculation
that used sqrt and the wrong threshold formula.

Closes #168
feat: add opt-out toggle for prestige bot announcements
CI / Lint, Build & Test (pull_request) Failing after 1m2s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m9s
87686a310f
Adds enablePrestigeAnnouncements to ProfileSettings (defaults to true).
The prestige route now checks this setting before posting the Discord
webhook, and the edit profile modal exposes a toggle in the Sounds &
Notifications section so players can opt out.

Closes #169
hikari changed title from WIP: fix: runestone formula and full prestige/transcendence rebalance to fix: runestone formula, full prestige/transcendence rebalance, exploration fixes, and balance improvements 2026-03-31 13:25:09 -07:00
hikari added 1 commit 2026-03-31 13:43:00 -07:00
fix: show unlock hint on locked codex entries (#146)
CI / Lint, Build & Test (pull_request) Failing after 1m1s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m6s
50b9883951
Locked codex entries previously showed only '???' with no indication
of how to unlock them. Each entry now displays a hint generated from
its sourceType and sourceId (e.g. 'Defeat Troll King', 'Complete:
Shadow Mere').

Closes #146
hikari added 1 commit 2026-03-31 14:41:15 -07:00
balance: reduce quest and exploration durations (#172)
CI / Lint, Build & Test (pull_request) Failing after 1m1s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m2s
f83728df57
Quest max reduced from 168h to 24h (÷7 scaling).
Exploration max reduced from 144h to 12h (÷12 scaling).
Zone 1 quest durations restored to original short values (1–30min).
All inline duration comments updated to reflect new values.
hikari added 1 commit 2026-03-31 15:05:47 -07:00
balance: smooth prestige income cliff, quadratic milestones, exponential combat scaling (#170, #171)
CI / Lint, Build & Test (pull_request) Failing after 52s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m7s
9cff54cfcd
Reduce income_10 cost 30k→22.5k and income_11 80k→60k (25% cut each)
to ease the late-prestige runestone cliff without collapsing the timeline.

Change prestige milestone bonus from linear (n×25) to quadratic (n²×25)
so high-prestige milestones feel meaningful (P100 = 10k stones).

Replace linear prestige combat multiplier (1 + count×0.1) with exponential
(4^count) in both the tick engine and server-side boss route. Without this
the final boss (2×10^145 HP) was unreachable by ~112 orders of magnitude;
base-4 makes it achievable around P190, consistent with the 6-month target.
hikari added 1 commit 2026-03-31 15:10:39 -07:00
balance: early crystal access and smoother production scaling (#173, #174)
CI / Lint, Build & Test (pull_request) Failing after 52s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m2s
952e9d6299
Give Troll King 5 crystals (was 0) to signal the crystal economy from
the first boss kill, and halve crystal_focus cost from 100 to 50 so it
is reachable within the first zone's boss chain (#173).

Increase production multiplier base from 1.25 to 1.3 so each prestige
provides more perceptible run-time reduction in the P1-P30 window where
the treadmill effect was most pronounced (#174).
hikari added 3 commits 2026-03-31 16:45:12 -07:00
feat: extend quest content through endgame to cover P60–P160 (#175)
CI / Lint, Build & Test (pull_request) Failing after 57s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m11s
65c4a409ca
hikari added 2 commits 2026-03-31 17:19:37 -07:00
balance: reduce echo meta upgrade costs for a more reasonable transcendence loop (#179)
CI / Lint, Build & Test (pull_request) Failing after 50s
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m5s
d20ae27fd2
hikari added 2 commits 2026-03-31 17:43:05 -07:00
- Update devourer_slayer description: no longer references "first six zones"
- Update quest_eternal to require 122 quests (was 95; added 27 in #175 and #178)
feat: add endgame prestige and gold milestone achievements (#183, #185)
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m4s
CI / Lint, Build & Test (pull_request) Successful in 1m13s
2827ddef72
- Add prestige milestones at P50/P100/P150/P200 (10k/25k/50k/100k crystals)
- Add gold milestones at 1e30/1e60/1e90 (Cosmic Wealthy, Infinite Hoarder, Omniversal Tycoon)
hikari added 3 commits 2026-03-31 18:00:28 -07:00
Crystals are an early-game currency. The total crystal sink is ~125M
crystals (purchasable equipment), but Zone 7+ bosses were awarding up
to 5e139 crystals with the crystal multipliers applied. Bosses in
celestial_reaches and beyond now award 0 crystals, keeping the
crystal economy meaningful in early-mid game only.
- Add quest_hero milestone at 75 quests (closes gap between 50 and 122)
- Add boss_legend milestone at 50 bosses (closes gap between 30 and 72)
- Replace crystal rewards on P50/P100/P150/P200 prestige achievements
  with runestones (100/500/2000/10000) — crystals become worthless by
  the time these are earned, runestones remain meaningful throughout
feat: support runestone rewards in achievement system (#190)
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m4s
CI / Lint, Build & Test (pull_request) Successful in 1m11s
010b4ea1da
- Add runestones field to AchievementReward type
- Update tick engine to accumulate and apply runestone rewards
  when achievements unlock, alongside the existing crystal rewards
hikari added 2 commits 2026-03-31 18:20:54 -07:00
Closes #191
feat: add quest legend achievement at 100 quests
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m5s
CI / Lint, Build & Test (pull_request) Successful in 1m11s
bdc5849c93
Closes #192
hikari added 2 commits 2026-03-31 18:38:09 -07:00
Closes #193
fix: increase essence guild multiplier to 2x
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m6s
CI / Lint, Build & Test (pull_request) Successful in 1m12s
c7b88061d0
Closes #194
hikari added 3 commits 2026-03-31 18:56:27 -07:00
Closes #196
Closes #197
feat: add 13 missing late-game equipment items for zones 15-18
Security Scan and Upload / Security & DefectDojo Upload (pull_request) Successful in 1m8s
CI / Lint, Build & Test (pull_request) Successful in 1m12s
f3f4f70b7c
Closes #198
hikari changed title from fix: runestone formula, full prestige/transcendence rebalance, exploration fixes, and balance improvements to fix: runestone formula, prestige/transcendence rebalance, exploration fixes, and comprehensive balance audit 2026-03-31 19:04:56 -07:00
naomi merged commit 666a5b2d6d into main 2026-03-31 19:57:53 -07:00
naomi deleted branch fix/stones 2026-03-31 19:57:54 -07:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: nhcarrigan/elysium#135