feat: initial prototype — core game systems (#30)
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m1s
CI / Lint, Build & Test (push) Successful in 1m6s

## Summary

This PR represents the full v1 prototype, implementing the core game systems for Elysium.

- Full idle/clicker RPG loop: resource collection, crafting, boss fights, exploration, and quests
- Adventurer hiring with batch size selector and progressive tier cost scaling
- Prestige, transcendence, and apotheosis systems with auto-prestige support
- Character sheet, titles, leaderboards, companion system, and daily login bonuses
- Auto-quest and auto-boss toggles
- Discord webhook notifications on prestige/transcendence/apotheosis
- Discord role awarded on apotheosis
- Responsive design and overarching story/lore system
- In-game sound effects and browser notifications for key events
- Support link button in the resource bar
- Full test coverage (100% on `apps/api` and `packages/types`)
- CI pipeline: lint → build → test

## Closes

Closes #1
Closes #2
Closes #3
Closes #4
Closes #5
Closes #6
Closes #7
Closes #8
Closes #9
Closes #10
Closes #11
Closes #12
Closes #13
Closes #14
Closes #16
Closes #19
Closes #20
Closes #21
Closes #22
Closes #23
Closes #24
Closes #25
Closes #26
Closes #27
Closes #29

 This issue was created with help from Hikari~ 🌸

Co-authored-by: Naomi Carrigan <commits@nhcarrigan.com>
Reviewed-on: #30
Co-authored-by: Hikari <hikari@nhcarrigan.com>
Co-committed-by: Hikari <hikari@nhcarrigan.com>
This commit was merged in pull request #30.
This commit is contained in:
2026-03-08 15:53:39 -07:00
committed by Naomi Carrigan
parent c69e155de3
commit 29c817230d
172 changed files with 50706 additions and 0 deletions
+191
View File
@@ -0,0 +1,191 @@
/**
* @file Game data definitions.
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
/* eslint-disable stylistic/max-len -- Data content */
import type { Zone } from "@elysium/types";
export const defaultZones: Array<Zone> = [
{
description:
"Rolling green hills and ancient forests stretch to the horizon. This is where your guild takes its first steps — trade roads in need of clearing, goblin camps to rout, and an undead queen stirring in the north.",
emoji: "🌿",
id: "verdant_vale",
name: "The Verdant Vale",
status: "unlocked",
unlockBossId: null,
unlockQuestId: null,
},
{
description:
"The remnants of a civilisation long lost to war and dragonfire. Crumbling towers and cursed lakes hide treasures — and an elder dragon who claims these lands as his own.",
emoji: "🏛️",
id: "shattered_ruins",
name: "The Shattered Ruins",
status: "locked",
unlockBossId: "forest_giant",
unlockQuestId: "ancient_ruins",
},
{
description:
"At the edge of the world, where the sun barely rises and the cold is a living thing, a tear in reality has drawn something ancient and terrible. Only the mightiest guilds dare tread here.",
emoji: "❄️",
id: "frozen_peaks",
name: "The Frozen Peaks",
status: "locked",
unlockBossId: "elder_dragon",
unlockQuestId: "dragon_lair",
},
{
description:
"A vast, fog-choked wetland where the sun never fully rises. Dark magic seeps from the earth itself, and things far older than the kingdom lurk beneath the murky waters.",
emoji: "🌑",
id: "shadow_marshes",
name: "The Shadow Marshes",
status: "locked",
unlockBossId: "void_titan",
unlockQuestId: "storm_citadel",
},
{
description:
"A chain of active volcanoes whose caverns plunge deep into the earth's molten heart. Legendary forges burn here, tended by fire elementals who serve no master — yet.",
emoji: "🌋",
id: "volcanic_depths",
name: "The Volcanic Depths",
status: "locked",
unlockBossId: "mud_kraken",
unlockQuestId: "plague_ruins",
},
{
description:
"Beyond the veil of the mortal world lies a realm of pure possibility and absolute terror. Stars are born and die here in moments, and the beings that call this place home have never known mortality.",
emoji: "🌌",
id: "astral_void",
name: "The Astral Void",
status: "locked",
unlockBossId: "phoenix_lord",
unlockQuestId: "the_forge",
},
{
description:
"Beyond the astral void, where reality gives way to pure divinity. The celestial host holds court here in towers of light older than stars, but their idea of order is as alien and terrifying as the chaos below.",
emoji: "✨",
id: "celestial_reaches",
name: "The Celestial Reaches",
status: "locked",
unlockBossId: "the_devourer",
unlockQuestId: "the_end",
},
{
description:
"At the bottom of all things, where no light reaches and pressure could crush continents, something old and patient waits. It has been waiting since before your world was made — and it has never been interrupted.",
emoji: "🌊",
id: "abyssal_trench",
name: "The Abyssal Trench",
status: "locked",
unlockBossId: "the_first_light",
unlockQuestId: "celestial_archive",
},
{
description:
"The courts of the underworld, where demon lords scheme across aeons. Power here is measured in souls and suffering — your guild deals in neither, but you will have to speak their language before this is over.",
emoji: "👿",
id: "infernal_court",
name: "The Infernal Court",
status: "locked",
unlockBossId: "elder_abomination",
unlockQuestId: "abyssal_chronicle",
},
{
description:
"A tower of living crystal that pierces every boundary between planes. Its facets reflect possibilities that have never existed and futures that cannot be. The intelligence at its core has been calculating since before this universe existed.",
emoji: "💎",
id: "crystalline_spire",
name: "The Crystalline Spire",
status: "locked",
unlockBossId: "the_fallen",
unlockQuestId: "infernal_codex",
},
{
description:
"Not a place but a state of being — the space between the spaces between things. Existence grows thin here. Your guild is the first to find it, drawn by a power that should not be able to call to anything that lives.",
emoji: "🌀",
id: "void_sanctum",
name: "The Void Sanctum",
status: "locked",
unlockBossId: "crystal_sovereign",
unlockQuestId: "the_prism_vault",
},
{
description:
"The seat of ultimate power at the centre of all creation. Whoever sits here has sat here since the beginning. They have watched countless guilds rise and fall across uncounted ages. Your guild has come to take the throne. It does not yield.",
emoji: "👑",
id: "eternal_throne",
name: "The Eternal Throne",
status: "locked",
unlockBossId: "void_emperor",
unlockQuestId: "heart_of_void",
},
{
description:
"Beyond the throne lies the raw stuff of creation itself — not a place but an ongoing argument between existence and non-existence that has never been resolved. Your guild enters the argument.",
emoji: "🌪️",
id: "primordial_chaos",
name: "The Primordial Chaos",
status: "locked",
unlockBossId: "the_apex",
unlockQuestId: "eternal_dominion",
},
{
description:
"A realm without edges, without centre, without reference — where distance is a concept that does not apply and your guild must define their own coordinates to navigate at all. Everything here is further than it looks.",
emoji: "♾️",
id: "infinite_expanse",
name: "The Infinite Expanse",
status: "locked",
unlockBossId: "primordial_titan",
unlockQuestId: "chaos_chronicle",
},
{
description:
"The workshop where the original universe was hammered into shape — still hot, still humming, still producing realities as a byproduct of its idle operation. The things that work here have never stopped.",
emoji: "⚒️",
id: "reality_forge",
name: "The Reality Forge",
status: "locked",
unlockBossId: "expanse_sovereign",
unlockQuestId: "expanse_codex",
},
{
description:
"A confluence of every force in existence, spinning in patterns that reduce galaxies to debris. Your guild navigates currents of energy that, on a good day, merely shatter planets.",
emoji: "🌀",
id: "cosmic_maelstrom",
name: "The Cosmic Maelstrom",
status: "locked",
unlockBossId: "reality_architect",
unlockQuestId: "forge_chronicle",
},
{
description:
"The oldest place that has ever existed — older than time, older than space, older than the concept of age itself. It holds something that remembers the moment before the first moment.",
emoji: "🗿",
id: "primeval_sanctum",
name: "The Primeval Sanctum",
status: "locked",
unlockBossId: "cosmic_annihilator",
unlockQuestId: "maelstrom_codex",
},
{
description:
"There is nothing beyond this. Not because nothing has been found — because nothing exists to find. The Absolute is the final truth: the end of all things that are and the beginning of all things that never were. Your guild stands at the edge of everything.",
emoji: "⚫",
id: "the_absolute",
name: "The Absolute",
status: "locked",
unlockBossId: "primeval_god",
unlockQuestId: "sanctum_chronicle",
},
];