From 79c4b99e8a9cced54472c79584827aabeb4f33a7 Mon Sep 17 00:00:00 2001 From: Hikari Date: Thu, 19 Mar 2026 15:39:04 -0700 Subject: [PATCH] feat: add essence infusion upgrades as late-prestige essence sink (#77) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Closes #62 Adds five **Essence Infusion** upgrades (I–V) to give essence an ongoing meaningful use deep into a prestige run, when gold upgrades are all purchased and essence reserves are in the trillions with nowhere to go: | Upgrade | Cost | Multiplier | |---|---|---| | Essence Infusion I | 1T essence | ×2 global | | Essence Infusion II | 5T essence | ×2 global | | Essence Infusion III | 25T essence | ×2 global | | Essence Infusion IV | 100T essence | ×3 global | | Essence Infusion V | 500T essence | ×5 global | All five start `unlocked: true` (no prerequisite boss or quest required) and cost zero gold and zero crystals — they are purely essence sinks. Combined, they provide a ×120 global income multiplier for players willing to pour their essence reserves into the guild. The About panel's Upgrades section is also updated to inform players these exist. CDN art assets will need to be generated for IDs `essence_sink_1` through `essence_sink_5` in the `upgrades` folder. ✨ This issue was created with help from Hikari~ 🌸 Reviewed-on: https://git.nhcarrigan.com/nhcarrigan/elysium/pulls/77 Co-authored-by: Hikari Co-committed-by: Hikari --- CLAUDE.md | 2 +- apps/api/src/data/upgrades.ts | 66 +++++++++++++++++++++ apps/web/src/components/game/aboutPanel.tsx | 5 +- 3 files changed, 71 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index a877cf3..8aef5f5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -14,7 +14,7 @@ Game art is generated via the Gemini API (`gemini-3-pro-image-preview`, ~$0.134/ ### Process 1. Generate images with `curl` to `https://generativelanguage.googleapis.com/v1beta/models/gemini-3-pro-image-preview:generateContent?key=`, requesting soft-shaded anime style 2. Save responses to `/home/naomi/code/naomi/elysium/img//.jpg` -3. Upload to R2 with: `AWS_ACCESS_KEY_ID=dd0a3d73969143ada84d50f8940cc5e2 AWS_SECRET_ACCESS_KEY=f73e9907da1b2297e93e17f786d6446d33d4ac60e185879578a0d5020899b18e aws s3 sync img/ s3://nhcarrigan-cdn/elysium/ --endpoint-url https://751c386661d378cc032093493cfb0869.r2.cloudflarestorage.com` +3. Upload to R2 with the AWS CLI — credentials are in the global `~/.claude/CLAUDE.md` (never commit them here) 4. Delete the local `img/` directory before committing (images live on CDN only) ### CDN URL Helper diff --git a/apps/api/src/data/upgrades.ts b/apps/api/src/data/upgrades.ts index 6dc88e3..17fc9bc 100644 --- a/apps/api/src/data/upgrades.ts +++ b/apps/api/src/data/upgrades.ts @@ -767,4 +767,70 @@ export const defaultUpgrades: Array = [ target: "adventurer", unlocked: false, }, + // ── Essence Sinks ───────────────────────────────────────────────────────── + { + costCrystals: 0, + costEssence: 1e12, + costGold: 0, + description: + "Channel a vast reservoir of essence into the guild's core — all production ×2.", + id: "essence_sink_1", + multiplier: 2, + name: "Essence Infusion I", + purchased: false, + target: "global", + unlocked: true, + }, + { + costCrystals: 0, + costEssence: 5e12, + costGold: 0, + description: + "A deeper infusion saturates every operation with raw essence — all production ×2.", + id: "essence_sink_2", + multiplier: 2, + name: "Essence Infusion II", + purchased: false, + target: "global", + unlocked: true, + }, + { + costCrystals: 0, + costEssence: 2.5e13, + costGold: 0, + description: + "Essence floods the ley-lines binding your guild — all production ×2.", + id: "essence_sink_3", + multiplier: 2, + name: "Essence Infusion III", + purchased: false, + target: "global", + unlocked: true, + }, + { + costCrystals: 0, + costEssence: 1e14, + costGold: 0, + description: + "The guild breathes essence as its very lifeblood — all production ×3.", + id: "essence_sink_4", + multiplier: 3, + name: "Essence Infusion IV", + purchased: false, + target: "global", + unlocked: true, + }, + { + costCrystals: 0, + costEssence: 5e14, + costGold: 0, + description: + "Essence transcends material form and reshapes reality itself — all production ×5.", + id: "essence_sink_5", + multiplier: 5, + name: "Essence Infusion V", + purchased: false, + target: "global", + unlocked: true, + }, ]; diff --git a/apps/web/src/components/game/aboutPanel.tsx b/apps/web/src/components/game/aboutPanel.tsx index c159b37..1c5caf1 100644 --- a/apps/web/src/components/game/aboutPanel.tsx +++ b/apps/web/src/components/game/aboutPanel.tsx @@ -34,7 +34,10 @@ const howToPlay = [ + " for the current run and stack multiplicatively — two ×2 upgrades" + " targeting the same adventurer combine to give ×4, not ×3. Global" + " upgrades multiply on top of adventurer-specific ones, so stacking" - + " both types compounds the effect significantly.", + + " both types compounds the effect significantly. Late in a run, look" + + " for the Essence Infusion upgrades — five powerful global multipliers" + + " purchasable purely with essence, giving that resource an ongoing" + + " use when gold upgrades are all bought.", title: "🔧 Upgrades", }, {