generated from nhcarrigan/template
d1d1f70c75
- Fix strict-boolean-expressions in 7 route files (runtime body validation) - Fix no-unnecessary-condition in profile.ts and offlineProgress.ts (defensive null checks) - Extend v8 ignore next-N counts in game.ts to reach 100% coverage - Add CI requirements to CLAUDE.md (lint + build + test must pass before commit) - Add manual verification checklist (verify.md) - Remove progress.md
480 lines
18 KiB
TypeScript
480 lines
18 KiB
TypeScript
/**
|
|
* @file Game data definitions.
|
|
* @copyright nhcarrigan
|
|
* @license Naomi's Public License
|
|
* @author Naomi Carrigan
|
|
*/
|
|
/* eslint-disable max-lines -- Data file */
|
|
/* eslint-disable stylistic/max-len -- Data content */
|
|
import type { CraftingRecipe } from "@elysium/types";
|
|
|
|
export const defaultRecipes: Array<CraftingRecipe> = [
|
|
// Zone 1: verdant_vale
|
|
{
|
|
bonus: { type: "gold_income", value: 1.05 },
|
|
description:
|
|
"Sap from ancient heartwood trees, refined and bound with forest crystal. The resulting tincture accelerates the flow of wealth through your guild in ways the alchemists cannot fully explain.",
|
|
id: "heartwood_tincture",
|
|
name: "Heartwood Tincture",
|
|
requiredMaterials: [
|
|
{ materialId: "verdant_sap", quantity: 5 },
|
|
{ materialId: "forest_crystal", quantity: 3 },
|
|
],
|
|
zoneId: "verdant_vale",
|
|
},
|
|
{
|
|
bonus: { type: "combat_power", value: 1.08 },
|
|
description:
|
|
"A ward fashioned from bark older than the kingdom. Its presence on the battlefield is not merely physical — something ancient watches through it.",
|
|
id: "elder_bark_shield",
|
|
name: "Elder Bark Shield",
|
|
requiredMaterials: [
|
|
{ materialId: "elder_bark", quantity: 2 },
|
|
{ materialId: "verdant_sap", quantity: 8 },
|
|
],
|
|
zoneId: "verdant_vale",
|
|
},
|
|
|
|
// Zone 2: shattered_ruins
|
|
{
|
|
bonus: { type: "essence_income", value: 1.05 },
|
|
description:
|
|
"The ruin dust and cursed fragments, carefully worked into a binding that borrows the essence-drawing power of the fallen civilisation's final enchantments.",
|
|
id: "runic_binding",
|
|
name: "Runic Binding",
|
|
requiredMaterials: [
|
|
{ materialId: "ruin_dust", quantity: 8 },
|
|
{ materialId: "cursed_fragment", quantity: 4 },
|
|
],
|
|
zoneId: "shattered_ruins",
|
|
},
|
|
{
|
|
bonus: { type: "gold_income", value: 1.08 },
|
|
description:
|
|
"A charm set with a chip of the elder dragon's scale. The dragon would be furious if he knew. He would also be impressed.",
|
|
id: "dragon_scale_charm",
|
|
name: "Dragon Scale Charm",
|
|
requiredMaterials: [
|
|
{ materialId: "dragonscale_chip", quantity: 2 },
|
|
{ materialId: "ruin_dust", quantity: 10 },
|
|
],
|
|
zoneId: "shattered_ruins",
|
|
},
|
|
|
|
// Zone 3: frozen_peaks
|
|
{
|
|
bonus: { type: "click_power", value: 1.08 },
|
|
description:
|
|
"Glacial ice ground and shaped into a lens that clarifies and focuses. Holding it, your guild's actions become sharper, more precise, more effective per motion.",
|
|
id: "glacial_lens",
|
|
name: "Glacial Lens",
|
|
requiredMaterials: [
|
|
{ materialId: "glacial_ice", quantity: 8 },
|
|
{ materialId: "frost_crystal", quantity: 4 },
|
|
],
|
|
zoneId: "frozen_peaks",
|
|
},
|
|
{
|
|
bonus: { type: "gold_income", value: 1.1 },
|
|
description:
|
|
"The void shard set in frost crystal, creating something that should not be possible: a stable window into the spaces between spaces. Profitable beyond what physics suggests.",
|
|
id: "void_fragment_amulet",
|
|
name: "Void Fragment Amulet",
|
|
requiredMaterials: [
|
|
{ materialId: "void_shard", quantity: 2 },
|
|
{ materialId: "frost_crystal", quantity: 6 },
|
|
],
|
|
zoneId: "frozen_peaks",
|
|
},
|
|
|
|
// Zone 4: shadow_marshes
|
|
{
|
|
bonus: { type: "essence_income", value: 1.08 },
|
|
description:
|
|
"Marsh roots processed with shadow essence into a refined compound that somehow makes the essence of things flow more freely toward your guild hall.",
|
|
id: "shadow_extract",
|
|
name: "Shadow Extract",
|
|
requiredMaterials: [
|
|
{ materialId: "marsh_root", quantity: 8 },
|
|
{ materialId: "shadow_essence", quantity: 4 },
|
|
],
|
|
zoneId: "shadow_marshes",
|
|
},
|
|
{
|
|
bonus: { type: "combat_power", value: 1.1 },
|
|
description:
|
|
"The cursed bone and shadow essence combined into a focus that doesn't so much help your party fight as make things afraid of them before the battle begins.",
|
|
id: "cursed_focus",
|
|
name: "Cursed Focus",
|
|
requiredMaterials: [
|
|
{ materialId: "cursed_bone", quantity: 2 },
|
|
{ materialId: "shadow_essence", quantity: 6 },
|
|
],
|
|
zoneId: "shadow_marshes",
|
|
},
|
|
|
|
// Zone 5: volcanic_depths
|
|
{
|
|
bonus: { type: "gold_income", value: 1.1 },
|
|
description:
|
|
"A seal forged in the volcanic depths, using the eternal heat of the magma stone and ember crystal to create something that burns wealth into existence continuously.",
|
|
id: "magma_core_seal",
|
|
name: "Magma Core Seal",
|
|
requiredMaterials: [
|
|
{ materialId: "magma_stone", quantity: 8 },
|
|
{ materialId: "ember_crystal", quantity: 4 },
|
|
],
|
|
zoneId: "volcanic_depths",
|
|
},
|
|
{
|
|
bonus: { type: "combat_power", value: 1.12 },
|
|
description:
|
|
"The legendary ore, smelted in the volcanic forges with magma stone as fuel. What emerges is something the fire elementals recognise — and fear slightly.",
|
|
id: "elemental_ore_ingot",
|
|
name: "Elemental Ore Ingot",
|
|
requiredMaterials: [
|
|
{ materialId: "legendary_ore", quantity: 2 },
|
|
{ materialId: "magma_stone", quantity: 10 },
|
|
],
|
|
zoneId: "volcanic_depths",
|
|
},
|
|
|
|
// Zone 6: astral_void
|
|
{
|
|
bonus: { type: "click_power", value: 1.12 },
|
|
description:
|
|
"Stardust arranged along astral threads into a map of the void that somehow, impossibly, shows your guild where to press and how to press it for maximum effect.",
|
|
id: "star_chart",
|
|
name: "Star Chart",
|
|
requiredMaterials: [
|
|
{ materialId: "stardust", quantity: 10 },
|
|
{ materialId: "astral_thread", quantity: 4 },
|
|
],
|
|
zoneId: "astral_void",
|
|
},
|
|
{
|
|
bonus: { type: "gold_income", value: 1.12 },
|
|
description:
|
|
"A void crystal suspended in a matrix of stardust — something that exists in several places simultaneously and draws gold from all of them at once.",
|
|
id: "void_crystal_matrix",
|
|
name: "Void Crystal Matrix",
|
|
requiredMaterials: [
|
|
{ materialId: "void_crystal", quantity: 2 },
|
|
{ materialId: "stardust", quantity: 12 },
|
|
],
|
|
zoneId: "astral_void",
|
|
},
|
|
|
|
// Zone 7: celestial_reaches
|
|
{
|
|
bonus: { type: "essence_income", value: 1.12 },
|
|
description:
|
|
"Celestial dust and divine fragments ground into a lens that sees the essence in all things and draws a portion of it — gently, as the celestials would prefer.",
|
|
id: "celestial_lens",
|
|
name: "Celestial Lens",
|
|
requiredMaterials: [
|
|
{ materialId: "celestial_dust", quantity: 10 },
|
|
{ materialId: "divine_fragment", quantity: 4 },
|
|
],
|
|
zoneId: "celestial_reaches",
|
|
},
|
|
{
|
|
bonus: { type: "gold_income", value: 1.15 },
|
|
description:
|
|
"A choir shard set in divine fragments, still humming with the celestial harmonic. The resonance makes gold flow in its direction — not compelled, simply invited.",
|
|
id: "choir_resonator",
|
|
name: "Choir Resonator",
|
|
requiredMaterials: [
|
|
{ materialId: "choir_shard", quantity: 2 },
|
|
{ materialId: "divine_fragment", quantity: 6 },
|
|
],
|
|
zoneId: "celestial_reaches",
|
|
},
|
|
|
|
// Zone 8: abyssal_trench
|
|
{
|
|
bonus: { type: "combat_power", value: 1.15 },
|
|
description:
|
|
"Trench coral and pressure gem combined under conditions that should have destroyed both. The result is something that survived conditions nothing should survive, which is ideal for combat.",
|
|
id: "pressure_forged_core",
|
|
name: "Pressure-Forged Core",
|
|
requiredMaterials: [
|
|
{ materialId: "trench_coral", quantity: 10 },
|
|
{ materialId: "pressure_gem", quantity: 4 },
|
|
],
|
|
zoneId: "abyssal_trench",
|
|
},
|
|
{
|
|
bonus: { type: "click_power", value: 1.15 },
|
|
description:
|
|
"A talisman set with the ancient tooth, suspended in trench coral carvings. Your party fights differently with this at their chest. More deliberately. More completely.",
|
|
id: "ancient_fang_talisman",
|
|
name: "Ancient Fang Talisman",
|
|
requiredMaterials: [
|
|
{ materialId: "ancient_tooth", quantity: 2 },
|
|
{ materialId: "trench_coral", quantity: 12 },
|
|
],
|
|
zoneId: "abyssal_trench",
|
|
},
|
|
|
|
// Zone 9: infernal_court
|
|
{
|
|
bonus: { type: "gold_income", value: 1.15 },
|
|
description:
|
|
"A seal of infernal court authority, forged from brimstone and ichor. The court doesn't know you have this. It's better that way. It does make trade extremely efficient.",
|
|
id: "court_seal",
|
|
name: "Court Seal",
|
|
requiredMaterials: [
|
|
{ materialId: "brimstone_flake", quantity: 10 },
|
|
{ materialId: "demon_ichor", quantity: 5 },
|
|
],
|
|
zoneId: "infernal_court",
|
|
},
|
|
{
|
|
bonus: { type: "essence_income", value: 1.15 },
|
|
description:
|
|
"Soul residue and demon ichor worked into a catalyst that draws the essence from everything around it — gently, without drawing the court's attention. Usually.",
|
|
id: "soul_bound_catalyst",
|
|
name: "Soul-Bound Catalyst",
|
|
requiredMaterials: [
|
|
{ materialId: "soul_residue", quantity: 2 },
|
|
{ materialId: "demon_ichor", quantity: 8 },
|
|
],
|
|
zoneId: "infernal_court",
|
|
},
|
|
|
|
// Zone 10: crystalline_spire
|
|
{
|
|
bonus: { type: "click_power", value: 1.18 },
|
|
description:
|
|
"Prism dust and calculation shards assembled into an array that the spire's intelligence would call elegant, if it had aesthetic preferences, which it might.",
|
|
id: "prism_array",
|
|
name: "Prism Array",
|
|
requiredMaterials: [
|
|
{ materialId: "prism_dust", quantity: 10 },
|
|
{ materialId: "calculation_shard", quantity: 4 },
|
|
],
|
|
zoneId: "crystalline_spire",
|
|
},
|
|
{
|
|
bonus: { type: "gold_income", value: 1.18 },
|
|
description:
|
|
"A possibility crystal contained within a calculation shard framework. It runs through every possible outcome of every guild action and finds the one with the highest gold yield.",
|
|
id: "possibility_engine",
|
|
name: "Possibility Engine",
|
|
requiredMaterials: [
|
|
{ materialId: "possibility_crystal", quantity: 2 },
|
|
{ materialId: "calculation_shard", quantity: 6 },
|
|
],
|
|
zoneId: "crystalline_spire",
|
|
},
|
|
|
|
// Zone 11: void_sanctum
|
|
{
|
|
bonus: { type: "combat_power", value: 1.18 },
|
|
description:
|
|
"Null matter and resonance fragments assembled into something that generates a field where the laws governing how hard things are to kill become negotiable.",
|
|
id: "null_field_generator",
|
|
name: "Null Field Generator",
|
|
requiredMaterials: [
|
|
{ materialId: "null_matter", quantity: 10 },
|
|
{ materialId: "resonance_fragment", quantity: 4 },
|
|
],
|
|
zoneId: "void_sanctum",
|
|
},
|
|
{
|
|
bonus: { type: "essence_income", value: 1.18 },
|
|
description:
|
|
"A sanctum core and resonance fragments shaped into a key to something. The essence flows through it like it was designed to carry essence, which it may have been.",
|
|
id: "sanctum_key",
|
|
name: "Sanctum Key",
|
|
requiredMaterials: [
|
|
{ materialId: "sanctum_core", quantity: 2 },
|
|
{ materialId: "resonance_fragment", quantity: 6 },
|
|
],
|
|
zoneId: "void_sanctum",
|
|
},
|
|
|
|
// Zone 12: eternal_throne
|
|
{
|
|
bonus: { type: "gold_income", value: 1.2 },
|
|
description:
|
|
"Throne dust pressed into throne dust-lacquered crown fragments, shaped into a circlet. Wearing it — metaphorically — makes gold accumulate with the inevitability of authority.",
|
|
id: "crown_circlet",
|
|
name: "Crown Circlet",
|
|
requiredMaterials: [
|
|
{ materialId: "throne_dust", quantity: 10 },
|
|
{ materialId: "crown_fragment", quantity: 4 },
|
|
],
|
|
zoneId: "eternal_throne",
|
|
},
|
|
{
|
|
bonus: { type: "combat_power", value: 1.2 },
|
|
description:
|
|
"An eternity splinter set into crown fragments, shaped into a ring. What it binds is unclear. Whatever it is, it makes your party significantly harder to kill.",
|
|
id: "eternity_bound_ring",
|
|
name: "Eternity-Bound Ring",
|
|
requiredMaterials: [
|
|
{ materialId: "eternity_splinter", quantity: 2 },
|
|
{ materialId: "crown_fragment", quantity: 6 },
|
|
],
|
|
zoneId: "eternal_throne",
|
|
},
|
|
|
|
// Zone 13: primordial_chaos
|
|
{
|
|
bonus: { type: "click_power", value: 1.2 },
|
|
description:
|
|
"Chaos fragments and creation shards arranged into a lens that hasn't decided what it wants to focus on yet, which somehow makes every click land harder than it should.",
|
|
id: "chaos_lens",
|
|
name: "Chaos Lens",
|
|
requiredMaterials: [
|
|
{ materialId: "chaos_fragment", quantity: 10 },
|
|
{ materialId: "creation_shard", quantity: 4 },
|
|
],
|
|
zoneId: "primordial_chaos",
|
|
},
|
|
{
|
|
bonus: { type: "gold_income", value: 1.22 },
|
|
description:
|
|
"Primordial essence held in a creation shard framework. It hums constantly. Gold flows toward it with the enthusiasm of something that wants to become something.",
|
|
id: "creation_core",
|
|
name: "Creation Core",
|
|
requiredMaterials: [
|
|
{ materialId: "primordial_essence", quantity: 2 },
|
|
{ materialId: "creation_shard", quantity: 6 },
|
|
],
|
|
zoneId: "primordial_chaos",
|
|
},
|
|
|
|
// Zone 14: infinite_expanse
|
|
{
|
|
bonus: { type: "essence_income", value: 1.2 },
|
|
description:
|
|
"Expanse dust wound around distance crystals into a coil that draws essence from distances too vast to measure, compressing it into something your guild can actually use.",
|
|
id: "distance_coil",
|
|
name: "Distance Coil",
|
|
requiredMaterials: [
|
|
{ materialId: "expanse_dust", quantity: 10 },
|
|
{ materialId: "distance_crystal", quantity: 4 },
|
|
],
|
|
zoneId: "infinite_expanse",
|
|
},
|
|
{
|
|
bonus: { type: "gold_income", value: 1.22 },
|
|
description:
|
|
"An infinity shard mounted in a distance crystal frame. The prism reflects gold from an infinite number of directions simultaneously. The math works out favourably.",
|
|
id: "infinity_prism",
|
|
name: "Infinity Prism",
|
|
requiredMaterials: [
|
|
{ materialId: "infinity_shard", quantity: 2 },
|
|
{ materialId: "distance_crystal", quantity: 6 },
|
|
],
|
|
zoneId: "infinite_expanse",
|
|
},
|
|
|
|
// Zone 15: reality_forge
|
|
{
|
|
bonus: { type: "combat_power", value: 1.22 },
|
|
description:
|
|
"Forge ash smelted with creation tools into an ingot of compressed reality. Your party hits harder when carrying it. Reality does not enjoy being concentrated like this.",
|
|
id: "reality_ingot",
|
|
name: "Reality Ingot",
|
|
requiredMaterials: [
|
|
{ materialId: "forge_ash", quantity: 10 },
|
|
{ materialId: "creation_tool", quantity: 4 },
|
|
],
|
|
zoneId: "reality_forge",
|
|
},
|
|
{
|
|
bonus: { type: "click_power", value: 1.22 },
|
|
description:
|
|
"A reality shard carefully shaped with creation tools into something that could, theoretically, become a universe. Instead it makes your clicks unreasonably effective.",
|
|
id: "universe_seed",
|
|
name: "Universe Seed",
|
|
requiredMaterials: [
|
|
{ materialId: "reality_shard", quantity: 2 },
|
|
{ materialId: "creation_tool", quantity: 6 },
|
|
],
|
|
zoneId: "reality_forge",
|
|
},
|
|
|
|
// Zone 16: cosmic_maelstrom
|
|
{
|
|
bonus: { type: "gold_income", value: 1.25 },
|
|
description:
|
|
"Maelstrom debris and force crystals ground into a lens at the intersection of fundamental forces. Gold flows toward it with the same inevitability that galaxies flow toward gravity.",
|
|
id: "force_lens",
|
|
name: "Force Lens",
|
|
requiredMaterials: [
|
|
{ materialId: "maelstrom_debris", quantity: 10 },
|
|
{ materialId: "force_crystal", quantity: 4 },
|
|
],
|
|
zoneId: "cosmic_maelstrom",
|
|
},
|
|
{
|
|
bonus: { type: "essence_income", value: 1.22 },
|
|
description:
|
|
"A cosmic fragment suspended in a force crystal matrix — a piece of the maelstrom's impossible calm, holding the eye of the storm. Essence accumulates in its vicinity.",
|
|
id: "maelstrom_eye",
|
|
name: "Maelstrom Eye",
|
|
requiredMaterials: [
|
|
{ materialId: "cosmic_fragment", quantity: 2 },
|
|
{ materialId: "force_crystal", quantity: 6 },
|
|
],
|
|
zoneId: "cosmic_maelstrom",
|
|
},
|
|
|
|
// Zone 17: primeval_sanctum
|
|
{
|
|
bonus: { type: "combat_power", value: 1.25 },
|
|
description:
|
|
"Ancient dust and memory shards arranged into something that remembers how to fight before fighting was invented. Your party benefits from this instinct enormously.",
|
|
id: "ancient_memory_array",
|
|
name: "Ancient Memory Array",
|
|
requiredMaterials: [
|
|
{ materialId: "ancient_dust", quantity: 10 },
|
|
{ materialId: "memory_shard", quantity: 4 },
|
|
],
|
|
zoneId: "primeval_sanctum",
|
|
},
|
|
{
|
|
bonus: { type: "click_power", value: 1.25 },
|
|
description:
|
|
"The primeval relic, set into a memory shard framework. What function it originally served is unknowable. In your guild's hands, it makes every action more deliberate and more powerful.",
|
|
id: "first_artefact",
|
|
name: "First Artefact",
|
|
requiredMaterials: [
|
|
{ materialId: "primeval_relic", quantity: 2 },
|
|
{ materialId: "memory_shard", quantity: 6 },
|
|
],
|
|
zoneId: "primeval_sanctum",
|
|
},
|
|
|
|
// Zone 18: the_absolute
|
|
{
|
|
bonus: { type: "gold_income", value: 1.3 },
|
|
description:
|
|
"Absolute fragments and boundary shards ground into a lens that sees to the end of all things — and in seeing, draws the wealth inherent in finality toward your guild.",
|
|
id: "final_truth_lens",
|
|
name: "Final Truth Lens",
|
|
requiredMaterials: [
|
|
{ materialId: "absolute_fragment", quantity: 10 },
|
|
{ materialId: "boundary_shard", quantity: 4 },
|
|
],
|
|
zoneId: "the_absolute",
|
|
},
|
|
{
|
|
bonus: { type: "combat_power", value: 1.3 },
|
|
description:
|
|
"The last omega crystal, set at the convergence of boundary shards in the precise arrangement of an ending. What it does to combat is what endings do to everything: make it final.",
|
|
id: "omega_convergence",
|
|
name: "Omega Convergence",
|
|
requiredMaterials: [
|
|
{ materialId: "omega_crystal", quantity: 2 },
|
|
{ materialId: "boundary_shard", quantity: 6 },
|
|
],
|
|
zoneId: "the_absolute",
|
|
},
|
|
];
|