generated from nhcarrigan/template
feat: vampire expansion chunk 2 (wip) — content data and grant-apotheosis debug route
This commit is contained in:
@@ -0,0 +1,297 @@
|
||||
/**
|
||||
* @file Game data definitions.
|
||||
* @copyright nhcarrigan
|
||||
* @license Naomi's Public License
|
||||
* @author Naomi Carrigan
|
||||
*/
|
||||
/* eslint-disable stylistic/max-len -- Data content */
|
||||
/* eslint-disable max-lines -- Data file */
|
||||
import type { VampireAchievement } from "@elysium/types";
|
||||
|
||||
export const defaultVampireAchievements: Array<VampireAchievement> = [
|
||||
// ── Total Blood Earned milestones ─────────────────────────────────────────
|
||||
{
|
||||
condition: { amount: 1_000, type: "totalBloodEarned" },
|
||||
description: "Spill the first thousand drops. Every hunt starts here.",
|
||||
icon: "🩸",
|
||||
id: "blood_thousand",
|
||||
name: "First Blood",
|
||||
reward: { ichor: 5 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 10_000, type: "totalBloodEarned" },
|
||||
description: "Ten thousand drops flow through your domain — the hunger becomes familiar.",
|
||||
icon: "🔴",
|
||||
id: "blood_ten_thousand",
|
||||
name: "Crimson Tide",
|
||||
reward: { ichor: 25 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 100_000, type: "totalBloodEarned" },
|
||||
description: "The rivers of blood run deep. Your domain is truly cursed now.",
|
||||
icon: "🌊",
|
||||
id: "blood_hundred_thousand",
|
||||
name: "Rivers of Crimson",
|
||||
reward: { ichor: 100 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 1_000_000, type: "totalBloodEarned" },
|
||||
description: "One million drops — the world bends its neck toward you.",
|
||||
icon: "👑",
|
||||
id: "blood_million",
|
||||
name: "Lord of the Hunt",
|
||||
reward: { ichor: 300, soulShards: 1 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 10_000_000, type: "totalBloodEarned" },
|
||||
description: "Ten million — a tide of crimson that nations would drown in.",
|
||||
icon: "🌙",
|
||||
id: "blood_ten_million",
|
||||
name: "Midnight Sovereign",
|
||||
reward: { ichor: 750, soulShards: 3 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 100_000_000, type: "totalBloodEarned" },
|
||||
description: "A hundred million drops. The darkness remembers your name.",
|
||||
icon: "⚫",
|
||||
id: "blood_hundred_million",
|
||||
name: "The Dark Eternal",
|
||||
reward: { ichor: 2_000, soulShards: 10 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 1_000_000_000, type: "totalBloodEarned" },
|
||||
description: "One billion drops — a millennium of predation made manifest.",
|
||||
icon: "🕳️",
|
||||
id: "blood_billion",
|
||||
name: "Ancient Hunger",
|
||||
reward: { ichor: 5_000, soulShards: 25 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
// ── Vampire Bosses Defeated ───────────────────────────────────────────────
|
||||
{
|
||||
condition: { amount: 1, type: "vampireBossesDefeated" },
|
||||
description: "The first challenger falls. This is only the beginning.",
|
||||
icon: "⚔️",
|
||||
id: "boss_first",
|
||||
name: "First Kill",
|
||||
reward: { ichor: 10 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 5, type: "vampireBossesDefeated" },
|
||||
description: "Five enemies put to rest. The name 'hunter' begins to fit.",
|
||||
icon: "🗡️",
|
||||
id: "boss_five",
|
||||
name: "Hunter",
|
||||
reward: { ichor: 50 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 20, type: "vampireBossesDefeated" },
|
||||
description: "Twenty victories — the battlefield has become familiar ground.",
|
||||
icon: "⚰️",
|
||||
id: "boss_twenty",
|
||||
name: "Battle Hardened",
|
||||
reward: { ichor: 150 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 50, type: "vampireBossesDefeated" },
|
||||
description: "Fifty enemies broken. Even ancient horrors pause at your approach.",
|
||||
icon: "🩸",
|
||||
id: "boss_fifty",
|
||||
name: "Dread Predator",
|
||||
reward: { ichor: 400, soulShards: 2 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 72, type: "vampireBossesDefeated" },
|
||||
description: "All 72 vampire realm bosses have been defeated. The realm trembles.",
|
||||
icon: "🌑",
|
||||
id: "boss_all",
|
||||
name: "The Darkness Made Flesh",
|
||||
reward: { ichor: 1_000, soulShards: 10 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
// ── Vampire Quests Completed ──────────────────────────────────────────────
|
||||
{
|
||||
condition: { amount: 1, type: "vampireQuestsCompleted" },
|
||||
description: "The first mission of many. The domain stirs in response.",
|
||||
icon: "📜",
|
||||
id: "quest_first",
|
||||
name: "Night Errand",
|
||||
reward: { ichor: 5 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 10, type: "vampireQuestsCompleted" },
|
||||
description: "Ten missions carried out without failure. Reliability is its own power.",
|
||||
icon: "📋",
|
||||
id: "quest_ten",
|
||||
name: "Reliable Shadow",
|
||||
reward: { ichor: 30 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 30, type: "vampireQuestsCompleted" },
|
||||
description: "Thirty missions completed — your thralls have grown seasoned in the dark.",
|
||||
icon: "🕯️",
|
||||
id: "quest_thirty",
|
||||
name: "Veteran of the Night",
|
||||
reward: { ichor: 100 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 60, type: "vampireQuestsCompleted" },
|
||||
description: "Sixty missions. Your command reaches across the entire realm.",
|
||||
icon: "🌑",
|
||||
id: "quest_sixty",
|
||||
name: "Shadow Commander",
|
||||
reward: { ichor: 300, soulShards: 2 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 90, type: "vampireQuestsCompleted" },
|
||||
description: "Every quest in the vampire realm completed. The darkness answers your call.",
|
||||
icon: "👁️",
|
||||
id: "quest_all",
|
||||
name: "Voice of the Abyss",
|
||||
reward: { ichor: 800, soulShards: 8 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
// ── Total Thrall Count ────────────────────────────────────────────────────
|
||||
{
|
||||
condition: { amount: 10, type: "thrallTotal" },
|
||||
description: "Ten souls bound to your will. The domain begins to take shape.",
|
||||
icon: "🧟",
|
||||
id: "thralls_ten",
|
||||
name: "First Flock",
|
||||
reward: { ichor: 10 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 50, type: "thrallTotal" },
|
||||
description: "Fifty thralls bound — a proper hunting force. The night fears you.",
|
||||
icon: "🧛",
|
||||
id: "thralls_fifty",
|
||||
name: "Pack Leader",
|
||||
reward: { ichor: 50 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 150, type: "thrallTotal" },
|
||||
description: "One hundred and fifty thralls — a blood-drunk army in your service.",
|
||||
icon: "⚔️",
|
||||
id: "thralls_hundred_fifty",
|
||||
name: "Blood Army",
|
||||
reward: { ichor: 200 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 400, type: "thrallTotal" },
|
||||
description: "Four hundred thralls — a force that could drown a city in shadow.",
|
||||
icon: "🌑",
|
||||
id: "thralls_four_hundred",
|
||||
name: "Tide of Darkness",
|
||||
reward: { ichor: 600, soulShards: 3 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 1_000, type: "thrallTotal" },
|
||||
description: "One thousand bound souls. The vampire realm bows to your dominion.",
|
||||
icon: "👑",
|
||||
id: "thralls_thousand",
|
||||
name: "Sovereign of Thralls",
|
||||
reward: { ichor: 2_000, soulShards: 15 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
// ── Siring Count ──────────────────────────────────────────────────────────
|
||||
{
|
||||
condition: { amount: 1, type: "siringCount" },
|
||||
description: "The first siring. A new bloodline begins.",
|
||||
icon: "🌕",
|
||||
id: "siring_first",
|
||||
name: "The Sire",
|
||||
reward: { ichor: 50 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 3, type: "siringCount" },
|
||||
description: "Three sirings — the bloodline strengthens with each reset.",
|
||||
icon: "🌑",
|
||||
id: "siring_three",
|
||||
name: "Bloodline Builder",
|
||||
reward: { ichor: 200 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 7, type: "siringCount" },
|
||||
description: "Seven sirings — the ichor flows with the weight of accumulated power.",
|
||||
icon: "🩸",
|
||||
id: "siring_seven",
|
||||
name: "Ancient Sire",
|
||||
reward: { ichor: 500, soulShards: 5 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 15, type: "siringCount" },
|
||||
description: "Fifteen sirings. Your bloodline is one of the oldest and most powerful.",
|
||||
icon: "⚫",
|
||||
id: "siring_fifteen",
|
||||
name: "Eternal Bloodline",
|
||||
reward: { ichor: 1_500, soulShards: 15 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
// ── Vampire Equipment Owned ───────────────────────────────────────────────
|
||||
{
|
||||
condition: { amount: 1, type: "vampireEquipmentOwned" },
|
||||
description: "The first relic of darkness in your possession. The collection begins.",
|
||||
icon: "💎",
|
||||
id: "equipment_first",
|
||||
name: "First Relic",
|
||||
reward: { ichor: 15 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 5, type: "vampireEquipmentOwned" },
|
||||
description: "Five relics — a proper arsenal for a vampire of note.",
|
||||
icon: "🗡️",
|
||||
id: "equipment_five",
|
||||
name: "Armed and Dangerous",
|
||||
reward: { ichor: 75 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 15, type: "vampireEquipmentOwned" },
|
||||
description: "Fifteen relics — your collection is the envy of lesser vampires.",
|
||||
icon: "⚰️",
|
||||
id: "equipment_fifteen",
|
||||
name: "Collector of Darkness",
|
||||
reward: { ichor: 300 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 30, type: "vampireEquipmentOwned" },
|
||||
description: "Thirty relics — your power radiates through every piece you carry.",
|
||||
icon: "👑",
|
||||
id: "equipment_thirty",
|
||||
name: "Master of Relics",
|
||||
reward: { ichor: 750, soulShards: 5 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
{
|
||||
condition: { amount: 53, type: "vampireEquipmentOwned" },
|
||||
description: "All 53 vampire relics in your possession. The darkness is complete.",
|
||||
icon: "🌑",
|
||||
id: "equipment_all",
|
||||
name: "The Complete Darkness",
|
||||
reward: { ichor: 2_000, soulShards: 20 },
|
||||
unlockedAt: null,
|
||||
},
|
||||
];
|
||||
@@ -0,0 +1,136 @@
|
||||
/**
|
||||
* @file Game data definitions.
|
||||
* @copyright nhcarrigan
|
||||
* @license Naomi's Public License
|
||||
* @author Naomi Carrigan
|
||||
*/
|
||||
/* eslint-disable stylistic/max-len -- Data content */
|
||||
import type { AwakeningUpgrade } from "@elysium/types";
|
||||
|
||||
export const defaultVampireAwakeningUpgrades: Array<AwakeningUpgrade> = [
|
||||
// ── Blood income (from soul shards) ──────────────────────────────────────
|
||||
{
|
||||
category: "blood",
|
||||
cost: 10,
|
||||
description: "The awakened soul's hunger amplifies all blood income. All blood/s ×1.5.",
|
||||
id: "awakening_blood_1",
|
||||
multiplier: 1.5,
|
||||
name: "Soul Hunger I",
|
||||
},
|
||||
{
|
||||
category: "blood",
|
||||
cost: 50,
|
||||
description: "A second awakening sharpens the soul's drive to consume. All blood/s ×2.",
|
||||
id: "awakening_blood_2",
|
||||
multiplier: 2,
|
||||
name: "Soul Hunger II",
|
||||
},
|
||||
{
|
||||
category: "blood",
|
||||
cost: 200,
|
||||
description: "The awakened soul transcends ordinary hunger — all blood income triples. All blood/s ×3.",
|
||||
id: "awakening_blood_3",
|
||||
multiplier: 3,
|
||||
name: "Soul Hunger III",
|
||||
},
|
||||
// ── Combat power ──────────────────────────────────────────────────────────
|
||||
{
|
||||
category: "combat",
|
||||
cost: 15,
|
||||
description: "The awakened soul's predatory edge carries through every thrall. All thrall combat power ×1.5.",
|
||||
id: "awakening_combat_1",
|
||||
multiplier: 1.5,
|
||||
name: "Awakened Predator I",
|
||||
},
|
||||
{
|
||||
category: "combat",
|
||||
cost: 75,
|
||||
description: "Soul shards resonate with battle instinct — combat power doubles. All thrall combat power ×2.",
|
||||
id: "awakening_combat_2",
|
||||
multiplier: 2,
|
||||
name: "Awakened Predator II",
|
||||
},
|
||||
{
|
||||
category: "combat",
|
||||
cost: 300,
|
||||
description: "Apex awakened combat mastery triples every thrall's fighting power. All thrall combat power ×3.",
|
||||
id: "awakening_combat_3",
|
||||
multiplier: 3,
|
||||
name: "Awakened Predator III",
|
||||
},
|
||||
// ── Siring threshold ──────────────────────────────────────────────────────
|
||||
{
|
||||
category: "siring_threshold",
|
||||
cost: 30,
|
||||
description: "Soul shards carry the memory of past sirings — the threshold lowers by 15%.",
|
||||
id: "awakening_threshold_1",
|
||||
multiplier: 0.85,
|
||||
name: "Soul Memory I",
|
||||
},
|
||||
{
|
||||
category: "siring_threshold",
|
||||
cost: 120,
|
||||
description: "The awakened soul remembers every siring — the threshold drops by a further 20%.",
|
||||
id: "awakening_threshold_2",
|
||||
multiplier: 0.8,
|
||||
name: "Soul Memory II",
|
||||
},
|
||||
{
|
||||
category: "siring_threshold",
|
||||
cost: 480,
|
||||
description: "Perfect soul memory collapses the siring threshold to a fraction of its original. Threshold ×0.7.",
|
||||
id: "awakening_threshold_3",
|
||||
multiplier: 0.7,
|
||||
name: "Soul Memory III",
|
||||
},
|
||||
// ── Siring ichor yield ────────────────────────────────────────────────────
|
||||
{
|
||||
category: "siring_ichor",
|
||||
cost: 25,
|
||||
description: "Soul shards amplify the ichor extracted during each siring. Ichor per siring ×1.5.",
|
||||
id: "awakening_siring_ichor_1",
|
||||
multiplier: 1.5,
|
||||
name: "Ichor Resonance I",
|
||||
},
|
||||
{
|
||||
category: "siring_ichor",
|
||||
cost: 100,
|
||||
description: "The resonance deepens — siring yields twice the ichor. Ichor per siring ×2.",
|
||||
id: "awakening_siring_ichor_2",
|
||||
multiplier: 2,
|
||||
name: "Ichor Resonance II",
|
||||
},
|
||||
{
|
||||
category: "siring_ichor",
|
||||
cost: 400,
|
||||
description: "Peak resonance — each siring now yields three times the ichor. Ichor per siring ×3.",
|
||||
id: "awakening_siring_ichor_3",
|
||||
multiplier: 3,
|
||||
name: "Ichor Resonance III",
|
||||
},
|
||||
// ── Soul shards meta ──────────────────────────────────────────────────────
|
||||
{
|
||||
category: "soulshards_meta",
|
||||
cost: 60,
|
||||
description: "The soul refines itself — future awakenings yield 50% more soul shards.",
|
||||
id: "awakening_meta_1",
|
||||
multiplier: 1.5,
|
||||
name: "Soul Refinement I",
|
||||
},
|
||||
{
|
||||
category: "soulshards_meta",
|
||||
cost: 250,
|
||||
description: "The awakened soul's self-improvement compounds — soul shard yields double.",
|
||||
id: "awakening_meta_2",
|
||||
multiplier: 2,
|
||||
name: "Soul Refinement II",
|
||||
},
|
||||
{
|
||||
category: "soulshards_meta",
|
||||
cost: 1_000,
|
||||
description: "The apex of soul refinement — all future awakenings yield three times the soul shards.",
|
||||
id: "awakening_meta_3",
|
||||
multiplier: 3,
|
||||
name: "Soul Refinement III",
|
||||
},
|
||||
];
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,536 @@
|
||||
/**
|
||||
* @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";
|
||||
|
||||
// Note: In vampire context, "gold_income" bonus maps to blood income,
|
||||
// "essence_income" maps to ichor income, and "combat_power" maps to thrall combat power.
|
||||
export const defaultVampireCraftingRecipes: Array<CraftingRecipe> = [
|
||||
// ── Haunted Catacombs ─────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.1,
|
||||
},
|
||||
description: "Bone dust boiled with grave essence produces a thick extract that resonates with the catacombs' ancient hunger. Those who consume it briefly see in total darkness.",
|
||||
id: "bone_dust_extract",
|
||||
name: "Bone Dust Extract",
|
||||
requiredMaterials: [
|
||||
{ materialId: "bone_dust", quantity: 3 },
|
||||
{ materialId: "grave_essence", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_haunted_catacombs",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "combat_power",
|
||||
value: 1.1,
|
||||
},
|
||||
description: "Catacomb ash worked into a paste with grave essence, then applied to weapons before battle. The ash remembers every fight these tunnels have witnessed.",
|
||||
id: "catacomb_tonic",
|
||||
name: "Catacomb Tonic",
|
||||
requiredMaterials: [
|
||||
{ materialId: "catacomb_ash", quantity: 2 },
|
||||
{ materialId: "grave_essence", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_haunted_catacombs",
|
||||
},
|
||||
// ── Blood Mire ────────────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.1,
|
||||
},
|
||||
description: "Mire sludge filtered through blood moss produces a dense poultice that, when applied correctly, amplifies the feeding reflex across all thralls in range.",
|
||||
id: "mire_poultice",
|
||||
name: "Mire Poultice",
|
||||
requiredMaterials: [
|
||||
{ materialId: "mire_sludge", quantity: 3 },
|
||||
{ materialId: "blood_moss", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_blood_mire",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "combat_power",
|
||||
value: 1.1,
|
||||
},
|
||||
description: "Blood moss steeped in crimson reed sap makes a foul-smelling brew that is nevertheless extremely popular before fights — it dulls pain and sharpens reflex.",
|
||||
id: "blood_moss_brew",
|
||||
name: "Blood Moss Brew",
|
||||
requiredMaterials: [
|
||||
{ materialId: "blood_moss", quantity: 3 },
|
||||
{ materialId: "crimson_reed", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_blood_mire",
|
||||
},
|
||||
// ── Obsidian Keep ─────────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "combat_power",
|
||||
value: 1.15,
|
||||
},
|
||||
description: "Obsidian chips ground into a paste with iron shavings make an abrasive compound used to hone weapons. The resulting edge carries a trace of the Keep's blood magic.",
|
||||
id: "obsidian_edge",
|
||||
name: "Obsidian Edge Compound",
|
||||
requiredMaterials: [
|
||||
{ materialId: "obsidian_chip", quantity: 3 },
|
||||
{ materialId: "iron_shaving", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_obsidian_keep",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.15,
|
||||
},
|
||||
description: "Keep mortar dissolved into a slurry with iron shavings creates a sealant that, when applied to the feeding chambers, prevents blood loss between hunts.",
|
||||
id: "keep_mortar_mix",
|
||||
name: "Keep Mortar Mix",
|
||||
requiredMaterials: [
|
||||
{ materialId: "keep_mortar", quantity: 1 },
|
||||
{ materialId: "iron_shaving", quantity: 3 },
|
||||
],
|
||||
zoneId: "vampire_obsidian_keep",
|
||||
},
|
||||
// ── Crimson Citadel ───────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.15,
|
||||
},
|
||||
description: "Citadel stone powder mixed with blood bronze filings creates a seal that, when pressed into the architecture of a feeding ground, amplifies the blood yield of the space.",
|
||||
id: "citadel_seal",
|
||||
name: "Citadel Seal",
|
||||
requiredMaterials: [
|
||||
{ materialId: "citadel_stone", quantity: 2 },
|
||||
{ materialId: "blood_bronze", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_crimson_citadel",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "combat_power",
|
||||
value: 1.2,
|
||||
},
|
||||
description: "Crimson silk wrapped around weapons before battle absorbs moonlight during the process. Thralls armed with these wrapped weapons fight with unusual composure.",
|
||||
id: "crimson_silk_wrap",
|
||||
name: "Crimson Silk Wrap",
|
||||
requiredMaterials: [
|
||||
{ materialId: "crimson_silk", quantity: 1 },
|
||||
{ materialId: "blood_bronze", quantity: 3 },
|
||||
],
|
||||
zoneId: "vampire_crimson_citadel",
|
||||
},
|
||||
// ── Shadow Court ──────────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.2,
|
||||
},
|
||||
description: "Shadow thread woven into a net and suspended over feeding grounds creates an obscuring field that encourages prey to walk toward the hunter.",
|
||||
id: "shadow_thread_weave",
|
||||
name: "Shadow Thread Weave",
|
||||
requiredMaterials: [
|
||||
{ materialId: "shadow_thread", quantity: 4 },
|
||||
{ materialId: "whisper_ink", quantity: 1 },
|
||||
],
|
||||
zoneId: "vampire_shadow_court",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "essence_income",
|
||||
value: 1.2,
|
||||
},
|
||||
description: "Whisper ink recorded with secrets about the ichor trade and sealed with court wax. Reading it reveals techniques for extracting greater ichor yield during the siring rite.",
|
||||
id: "whisper_ink_tome",
|
||||
name: "Whisper Ink Tome",
|
||||
requiredMaterials: [
|
||||
{ materialId: "whisper_ink", quantity: 2 },
|
||||
{ materialId: "court_wax", quantity: 1 },
|
||||
],
|
||||
zoneId: "vampire_shadow_court",
|
||||
},
|
||||
// ── Plague Ossuary ────────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "combat_power",
|
||||
value: 1.2,
|
||||
},
|
||||
description: "Plague ash worked into a paste with ossuary resin and applied to thrall weapons before battle. The pestilence that lingers in the ash makes opponents hesitate.",
|
||||
id: "plague_ash_remedy",
|
||||
name: "Plague Ash Weapon Coat",
|
||||
requiredMaterials: [
|
||||
{ materialId: "plague_ash", quantity: 3 },
|
||||
{ materialId: "ossuary_resin", quantity: 1 },
|
||||
],
|
||||
zoneId: "vampire_plague_ossuary",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.2,
|
||||
},
|
||||
description: "Infected bone ground down and mixed with ossuary resin creates a sealant for feeding vessels that prevents spoilage and stretches each harvest considerably further.",
|
||||
id: "ossuary_resin_coat",
|
||||
name: "Ossuary Preservation Coat",
|
||||
requiredMaterials: [
|
||||
{ materialId: "infected_bone", quantity: 2 },
|
||||
{ materialId: "ossuary_resin", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_plague_ossuary",
|
||||
},
|
||||
// ── Ashen Wastes ──────────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "combat_power",
|
||||
value: 1.25,
|
||||
},
|
||||
description: "Volatile compounds produced when volcanic ash and cinder crystals are combined make an excellent weapon coating — the resulting strike burns in ways cold steel cannot.",
|
||||
id: "volcanic_ash_bomb",
|
||||
name: "Volcanic Ash Bomb",
|
||||
requiredMaterials: [
|
||||
{ materialId: "volcanic_ash", quantity: 3 },
|
||||
{ materialId: "cinder_crystal", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_ashen_wastes",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.25,
|
||||
},
|
||||
description: "Ashen cloth soaked in volcanic ash produces a wrapping for the body that insulates against heat and disperses the blood-scent of the wearer, making them harder to detect.",
|
||||
id: "ashen_cloth_wrap",
|
||||
name: "Ashen Cloth Wrapping",
|
||||
requiredMaterials: [
|
||||
{ materialId: "ashen_cloth", quantity: 2 },
|
||||
{ materialId: "volcanic_ash", quantity: 3 },
|
||||
],
|
||||
zoneId: "vampire_ashen_wastes",
|
||||
},
|
||||
// ── The Iron Gaol ─────────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "combat_power",
|
||||
value: 1.3,
|
||||
},
|
||||
description: "Iron rivets combined with a length of chain link produce a weapon wrap that adds both weight and containment glyph resonance to every strike.",
|
||||
id: "iron_chain_shackle",
|
||||
name: "Iron Chain Shackle",
|
||||
requiredMaterials: [
|
||||
{ materialId: "iron_rivet", quantity: 3 },
|
||||
{ materialId: "chain_link", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_iron_gaol",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.3,
|
||||
},
|
||||
description: "Gaol stone ground and packed with iron rivets into a floor-sealing mortar. The despair absorbed into the stone makes the feeding ground more effective at producing passive blood.",
|
||||
id: "gaol_stone_mortar",
|
||||
name: "Gaol Stone Mortar",
|
||||
requiredMaterials: [
|
||||
{ materialId: "gaol_stone", quantity: 1 },
|
||||
{ materialId: "iron_rivet", quantity: 4 },
|
||||
],
|
||||
zoneId: "vampire_iron_gaol",
|
||||
},
|
||||
// ── Veilborn Hollow ───────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.3,
|
||||
},
|
||||
description: "Veil thread woven through the structure of a feeding ground creates small tears in the boundary between worlds. Blood that passes through these tears is somehow more potent.",
|
||||
id: "veil_thread_weave",
|
||||
name: "Veil Thread Weave",
|
||||
requiredMaterials: [
|
||||
{ materialId: "veil_thread", quantity: 4 },
|
||||
{ materialId: "hollow_crystal", quantity: 1 },
|
||||
],
|
||||
zoneId: "vampire_veilborn_hollow",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "combat_power",
|
||||
value: 1.3,
|
||||
},
|
||||
description: "Phantom dust mixed with hollow crystal powder creates a potion that, when consumed, allows thralls to partially phase during the first moments of a fight — before the enemy can react.",
|
||||
id: "phantom_dust_potion",
|
||||
name: "Phantom Dust Potion",
|
||||
requiredMaterials: [
|
||||
{ materialId: "phantom_dust", quantity: 1 },
|
||||
{ materialId: "hollow_crystal", quantity: 3 },
|
||||
],
|
||||
zoneId: "vampire_veilborn_hollow",
|
||||
},
|
||||
// ── Moonless Moor ─────────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.35,
|
||||
},
|
||||
description: "Moor peat rendered with fog essence produces a slow-burning fuel that warms the feeding ground whilst simultaneously obscuring its location from outsiders.",
|
||||
id: "moor_peat_tonic",
|
||||
name: "Moor Peat Fuel",
|
||||
requiredMaterials: [
|
||||
{ materialId: "moor_peat", quantity: 3 },
|
||||
{ materialId: "fog_essence", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_moonless_moor",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "combat_power",
|
||||
value: 1.35,
|
||||
},
|
||||
description: "A brew of night bloom petals steeped in fog essence produces a drink that heightens the predator's senses to impossible levels for a brief, battle-winning window.",
|
||||
id: "fog_essence_brew",
|
||||
name: "Fog Essence Brew",
|
||||
requiredMaterials: [
|
||||
{ materialId: "fog_essence", quantity: 3 },
|
||||
{ materialId: "night_bloom", quantity: 1 },
|
||||
],
|
||||
zoneId: "vampire_moonless_moor",
|
||||
},
|
||||
// ── The Sunken Crypt ──────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.4,
|
||||
},
|
||||
description: "Sunken stone coated in drowned silk becomes a permanent feeding vessel — the silk prevents evaporation and the stone's porous structure allows remarkable volume.",
|
||||
id: "sunken_stone_seal",
|
||||
name: "Sunken Stone Vessel",
|
||||
requiredMaterials: [
|
||||
{ materialId: "sunken_stone", quantity: 2 },
|
||||
{ materialId: "drowned_silk", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_sunken_crypt",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "essence_income",
|
||||
value: 1.4,
|
||||
},
|
||||
description: "Deep amber dissolved in a solvent derived from sunken stone — the resulting extract amplifies ichor yield during siring by resonating with the amber's preserved fragments.",
|
||||
id: "deep_amber_extract",
|
||||
name: "Deep Amber Extract",
|
||||
requiredMaterials: [
|
||||
{ materialId: "deep_amber", quantity: 1 },
|
||||
{ materialId: "sunken_stone", quantity: 3 },
|
||||
],
|
||||
zoneId: "vampire_sunken_crypt",
|
||||
},
|
||||
// ── Desecrated Sanctum ────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "combat_power",
|
||||
value: 1.4,
|
||||
},
|
||||
description: "Defiled marble carved into a totem and inscribed with dark incense smoke. The desecrated memory in the marble makes it an effective focus for battle rites.",
|
||||
id: "defiled_marble_totem",
|
||||
name: "Defiled Marble Totem",
|
||||
requiredMaterials: [
|
||||
{ materialId: "defiled_marble", quantity: 3 },
|
||||
{ materialId: "dark_incense", quantity: 1 },
|
||||
],
|
||||
zoneId: "vampire_desecrated_sanctum",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.4,
|
||||
},
|
||||
description: "Dark incense burned in a vessel made of sanctum glass creates a ritual smoke that saturates a feeding ground with the hunger of the desecrated, amplifying all blood yield.",
|
||||
id: "dark_incense_ritual",
|
||||
name: "Dark Incense Ritual",
|
||||
requiredMaterials: [
|
||||
{ materialId: "dark_incense", quantity: 2 },
|
||||
{ materialId: "sanctum_glass", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_desecrated_sanctum",
|
||||
},
|
||||
// ── Carrion Peaks ─────────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "combat_power",
|
||||
value: 1.45,
|
||||
},
|
||||
description: "Carrion bone worked into a talisman and inlaid with peak crystal shards creates a focus for the predator's instinct — thralls carrying it fight with the certainty of the high hunt.",
|
||||
id: "carrion_bone_talisman",
|
||||
name: "Carrion Bone Talisman",
|
||||
requiredMaterials: [
|
||||
{ materialId: "carrion_bone", quantity: 3 },
|
||||
{ materialId: "peak_crystal", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_carrion_peaks",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.45,
|
||||
},
|
||||
description: "Blood obsidian edges ground from peak crystal and bonded to carrion bone handles — weapons that are as much ritual object as instrument of predation.",
|
||||
id: "blood_obsidian_edge",
|
||||
name: "Blood Obsidian Edge",
|
||||
requiredMaterials: [
|
||||
{ materialId: "blood_obsidian", quantity: 1 },
|
||||
{ materialId: "peak_crystal", quantity: 3 },
|
||||
],
|
||||
zoneId: "vampire_carrion_peaks",
|
||||
},
|
||||
// ── The Bloodspire ────────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.5,
|
||||
},
|
||||
description: "Spire stone carved into a seal and inscribed with blood crystal resonance. When placed at the centre of a feeding ground, it draws blood from the surrounding area passively.",
|
||||
id: "spire_stone_seal",
|
||||
name: "Spire Stone Seal",
|
||||
requiredMaterials: [
|
||||
{ materialId: "spire_stone", quantity: 3 },
|
||||
{ materialId: "blood_crystal", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_bloodspire",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "essence_income",
|
||||
value: 1.5,
|
||||
},
|
||||
description: "Ancient gore dissolved in a blood crystal suspension — a highly potent ichor catalyst that resonates with the Spire's pre-existing blood magic to enhance ichor production dramatically.",
|
||||
id: "blood_crystal_extract",
|
||||
name: "Blood Crystal Extract",
|
||||
requiredMaterials: [
|
||||
{ materialId: "blood_crystal", quantity: 3 },
|
||||
{ materialId: "ancient_gore", quantity: 1 },
|
||||
],
|
||||
zoneId: "vampire_bloodspire",
|
||||
},
|
||||
// ── Shroud of Eternity ────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.5,
|
||||
},
|
||||
description: "Eternity thread woven through a feeding space creates a temporal fold that causes each feeding to last slightly longer than it should. The blood never quite finishes flowing.",
|
||||
id: "eternity_thread_weave",
|
||||
name: "Eternity Thread Weave",
|
||||
requiredMaterials: [
|
||||
{ materialId: "eternity_thread", quantity: 4 },
|
||||
{ materialId: "shroud_dust", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_shroud_of_eternity",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "combat_power",
|
||||
value: 1.5,
|
||||
},
|
||||
description: "Timeless amber dissolved and reset in a shroud dust medium creates a capsule that, when broken before battle, briefly accelerates the thrall's perception of time.",
|
||||
id: "timeless_amber_brew",
|
||||
name: "Timeless Amber Brew",
|
||||
requiredMaterials: [
|
||||
{ materialId: "timeless_amber", quantity: 1 },
|
||||
{ materialId: "shroud_dust", quantity: 3 },
|
||||
],
|
||||
zoneId: "vampire_shroud_of_eternity",
|
||||
},
|
||||
// ── The Abyssal Vault ─────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.6,
|
||||
},
|
||||
description: "Abyssal stone inscribed with void crystal dust creates a seal that, when placed in a feeding ground, creates a pocket of absolute silence — prey within it cannot call for help.",
|
||||
id: "abyssal_stone_seal",
|
||||
name: "Abyssal Stone Seal",
|
||||
requiredMaterials: [
|
||||
{ materialId: "abyssal_stone", quantity: 3 },
|
||||
{ materialId: "void_crystal", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_abyssal_vault",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "combat_power",
|
||||
value: 1.6,
|
||||
},
|
||||
description: "Void crystal ground and bonded to vault iron makes a weapon component that strikes with the force of absolute inevitability — opponents don't question whether they will fall, only when.",
|
||||
id: "void_crystal_totem",
|
||||
name: "Void Crystal Weapon Core",
|
||||
requiredMaterials: [
|
||||
{ materialId: "void_crystal", quantity: 2 },
|
||||
{ materialId: "vault_iron", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_abyssal_vault",
|
||||
},
|
||||
// ── Court of Whispers ─────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "essence_income",
|
||||
value: 1.6,
|
||||
},
|
||||
description: "Whisper parchment inscribed with silent ink contains the distilled knowledge of the Court's ichor trade. Reading it aloud triggers a resonance that permanently enhances ichor yield.",
|
||||
id: "whisper_parchment_tome",
|
||||
name: "Whisper Parchment Tome",
|
||||
requiredMaterials: [
|
||||
{ materialId: "whisper_parchment", quantity: 2 },
|
||||
{ materialId: "silent_ink", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_court_of_whispers",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.6,
|
||||
},
|
||||
description: "Silent ink mixed with court crystal powder creates a medium for a feeding ritual that cannot be detected by anyone not already participating — the blood flows and no one outside knows.",
|
||||
id: "silent_ink_ritual",
|
||||
name: "Silent Ink Ritual",
|
||||
requiredMaterials: [
|
||||
{ materialId: "silent_ink", quantity: 1 },
|
||||
{ materialId: "court_crystal", quantity: 3 },
|
||||
],
|
||||
zoneId: "vampire_court_of_whispers",
|
||||
},
|
||||
// ── The Eternal Abyss ─────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: {
|
||||
type: "gold_income",
|
||||
value: 1.75,
|
||||
},
|
||||
description: "Void essence rendered in an eternal crystal medium produces a brew of impossible potency. Something about the combination makes every subsequent feeding feel like the first — and the first is always the best.",
|
||||
id: "void_essence_brew",
|
||||
name: "Void Essence Brew",
|
||||
requiredMaterials: [
|
||||
{ materialId: "void_essence", quantity: 3 },
|
||||
{ materialId: "eternal_crystal", quantity: 2 },
|
||||
],
|
||||
zoneId: "vampire_eternal_abyss",
|
||||
},
|
||||
{
|
||||
bonus: {
|
||||
type: "essence_income",
|
||||
value: 1.75,
|
||||
},
|
||||
description: "An eternal crystal seal made with primordial ash creates a focus for ichor resonance that has no upper bound — the older the vampire who sets it, the more it yields.",
|
||||
id: "eternal_crystal_seal",
|
||||
name: "Eternal Crystal Seal",
|
||||
requiredMaterials: [
|
||||
{ materialId: "eternal_crystal", quantity: 3 },
|
||||
{ materialId: "primordial_ash", quantity: 1 },
|
||||
],
|
||||
zoneId: "vampire_eternal_abyss",
|
||||
},
|
||||
];
|
||||
@@ -0,0 +1,624 @@
|
||||
/**
|
||||
* @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 { VampireEquipment } from "@elysium/types";
|
||||
|
||||
export const defaultVampireEquipment: Array<VampireEquipment> = [
|
||||
// ── Fangs — Common ────────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.08 },
|
||||
cost: { blood: 200, ichor: 0, soulShards: 0 },
|
||||
description: "A fragment of a broken fang, still sharp enough to count. Not impressive, but real.",
|
||||
equipped: false,
|
||||
id: "shard_fang",
|
||||
name: "Shard Fang",
|
||||
owned: false,
|
||||
rarity: "common",
|
||||
setId: "catacombs_hunter",
|
||||
type: "fang",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.1 },
|
||||
cost: { blood: 500, ichor: 0, soulShards: 0 },
|
||||
description: "A fang steeped in old blood until the metal absorbed the flavour. Every hunt feels more intentional wearing this.",
|
||||
equipped: false,
|
||||
id: "blood_fang",
|
||||
name: "Blood Fang",
|
||||
owned: false,
|
||||
rarity: "common",
|
||||
setId: "catacombs_hunter",
|
||||
type: "fang",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.08, combatMultiplier: 1.05 },
|
||||
cost: { blood: 1_500, ichor: 0, soulShards: 0 },
|
||||
description: "Ground from a warlord's tooth, this fang has seen three centuries of campaigns. Its edge is still perfect.",
|
||||
equipped: false,
|
||||
id: "war_fang",
|
||||
name: "War Fang",
|
||||
owned: false,
|
||||
rarity: "common",
|
||||
setId: "blood_stalker",
|
||||
type: "fang",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.12 },
|
||||
cost: { blood: 4_000, ichor: 0, soulShards: 0 },
|
||||
description: "Carved from volcanic obsidian, this fang channels the Keep's stored blood magic into every hunt.",
|
||||
equipped: false,
|
||||
id: "obsidian_fang",
|
||||
name: "Obsidian Fang",
|
||||
owned: false,
|
||||
rarity: "common",
|
||||
setId: "blood_stalker",
|
||||
type: "fang",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.15 },
|
||||
cost: { blood: 12_000, ichor: 2, soulShards: 0 },
|
||||
description: "A fang cut from the Citadel's bone-archive. It thrums with the accumulated authority of centuries of dynasty.",
|
||||
equipped: false,
|
||||
id: "crimson_fang",
|
||||
name: "Crimson Fang",
|
||||
owned: false,
|
||||
rarity: "common",
|
||||
setId: "crimson_regent",
|
||||
type: "fang",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.1, combatMultiplier: 1.08 },
|
||||
cost: { blood: 35_000, ichor: 5, soulShards: 0 },
|
||||
description: "This fang was honed in shadow — literally. The edge holds a darkness that does not catch light.",
|
||||
equipped: false,
|
||||
id: "shadow_fang",
|
||||
name: "Shadow Fang",
|
||||
owned: false,
|
||||
rarity: "common",
|
||||
setId: "crimson_regent",
|
||||
type: "fang",
|
||||
},
|
||||
// ── Fangs — Rare ──────────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.18, combatMultiplier: 1.1 },
|
||||
description: "Cultivated in a plague environment over a decade. The pestilence in the material amplifies every hunt's yield.",
|
||||
equipped: false,
|
||||
id: "plague_fang",
|
||||
name: "Plague Fang",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "plague_bringer",
|
||||
type: "fang",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.2, combatMultiplier: 1.12 },
|
||||
description: "Hardened in the Ashen Wastes' perpetual fires. The material does not conduct heat. It conducts hunger.",
|
||||
equipped: false,
|
||||
id: "ashen_fang",
|
||||
name: "Ashen Fang",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "plague_bringer",
|
||||
type: "fang",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.15, combatMultiplier: 1.15 },
|
||||
description: "Forged in the Iron Gaol's containment forges. Each containment glyph etched into the metal amplifies combat efficiency.",
|
||||
equipped: false,
|
||||
id: "iron_fang",
|
||||
name: "Iron Fang",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "iron_jailer",
|
||||
type: "fang",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.22, combatMultiplier: 1.1 },
|
||||
description: "A fang woven from veil-thread and bonded crystal. It phases slightly during each hunt, allowing it to feed from multiple layers of existence simultaneously.",
|
||||
equipped: false,
|
||||
id: "veil_fang",
|
||||
name: "Veil Fang",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "iron_jailer",
|
||||
type: "fang",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.25, combatMultiplier: 1.12 },
|
||||
description: "Shaped in absolute darkness and attuned to bloodscent rather than sight. Works twice as well in places where eyes are useless.",
|
||||
equipped: false,
|
||||
id: "moonless_fang",
|
||||
name: "Moonless Fang",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "moonlit_predator",
|
||||
type: "fang",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.28, combatMultiplier: 1.1 },
|
||||
description: "Recovered from a sealed chamber in the sunken depths. The pressure has made it denser than anything forged at surface level.",
|
||||
equipped: false,
|
||||
id: "sunken_fang",
|
||||
name: "Sunken Fang",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "moonlit_predator",
|
||||
type: "fang",
|
||||
},
|
||||
// ── Fangs — Epic ──────────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.35, combatMultiplier: 1.2 },
|
||||
description: "Salvaged from the Desecrated Sanctum's altar chamber. The sacred energy has not dissipated — it has inverted. This fang feeds on faith.",
|
||||
equipped: false,
|
||||
id: "sanctum_fang",
|
||||
name: "Sanctum Fang",
|
||||
owned: false,
|
||||
rarity: "epic",
|
||||
setId: "sanctum_desecrator",
|
||||
type: "fang",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.4, combatMultiplier: 1.25 },
|
||||
description: "Cut from the remains of a great peak-predator. The thing this came from hunted elder vampires for sport. The fang remembers.",
|
||||
equipped: false,
|
||||
id: "carrion_fang",
|
||||
name: "Carrion Fang",
|
||||
owned: false,
|
||||
rarity: "epic",
|
||||
setId: "sanctum_desecrator",
|
||||
type: "fang",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.45, combatMultiplier: 1.3 },
|
||||
description: "Grown from the Bloodspire's crystallised wall material — it is, in a literal sense, a fang of the building itself. The Spire does not stop growing, and neither does this fang's appetite.",
|
||||
equipped: false,
|
||||
id: "spire_fang",
|
||||
name: "Spire Fang",
|
||||
owned: false,
|
||||
rarity: "epic",
|
||||
setId: "eternal_tyrant",
|
||||
type: "fang",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.5, combatMultiplier: 1.3 },
|
||||
description: "A fang shaped from eternity thread and hardened in the Shroud's temporal compression. Strikes made with it land slightly before the target expects them.",
|
||||
equipped: false,
|
||||
id: "shroud_fang",
|
||||
name: "Shroud Fang",
|
||||
owned: false,
|
||||
rarity: "epic",
|
||||
setId: "eternal_tyrant",
|
||||
type: "fang",
|
||||
},
|
||||
// ── Fangs — Legendary ─────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.6, combatMultiplier: 1.4, ichorMultiplier: 1.2 },
|
||||
description: "Forged in the Vault's deepest chamber from void crystal and vault iron. It exists in a state of permanent readiness that does not require sharpening, maintenance, or sleep.",
|
||||
equipped: false,
|
||||
id: "abyss_fang",
|
||||
name: "Abyss Fang",
|
||||
owned: false,
|
||||
rarity: "legendary",
|
||||
setId: "void_sovereign",
|
||||
type: "fang",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.75, combatMultiplier: 1.5, ichorMultiplier: 1.3 },
|
||||
description: "A fang that came from the Eternal Abyss — or rather, from something that has always been there, watching. It feeds on everything and remembers every meal.",
|
||||
equipped: false,
|
||||
id: "eternal_fang",
|
||||
name: "Eternal Fang",
|
||||
owned: false,
|
||||
rarity: "legendary",
|
||||
setId: "void_sovereign",
|
||||
type: "fang",
|
||||
},
|
||||
// ── Shrouds — Common ──────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: { combatMultiplier: 1.08 },
|
||||
cost: { blood: 200, ichor: 0, soulShards: 0 },
|
||||
description: "A worn burial cloth repurposed as armour. Humble, patched, and surprisingly effective at stopping things that should not be stopped.",
|
||||
equipped: false,
|
||||
id: "tattered_shroud",
|
||||
name: "Tattered Shroud",
|
||||
owned: false,
|
||||
rarity: "common",
|
||||
setId: "catacombs_hunter",
|
||||
type: "shroud",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.05, combatMultiplier: 1.08 },
|
||||
cost: { blood: 500, ichor: 0, soulShards: 0 },
|
||||
description: "A cloak soaked in old blood until the fabric absorbed properties that new cloth simply does not have.",
|
||||
equipped: false,
|
||||
id: "blood_shroud",
|
||||
name: "Blood Shroud",
|
||||
owned: false,
|
||||
rarity: "common",
|
||||
setId: "catacombs_hunter",
|
||||
type: "shroud",
|
||||
},
|
||||
{
|
||||
bonus: { combatMultiplier: 1.1 },
|
||||
cost: { blood: 1_500, ichor: 0, soulShards: 0 },
|
||||
description: "Cut from volcanic obsidian-fibre and stitched with iron thread. It does not stop blows — it returns them.",
|
||||
equipped: false,
|
||||
id: "obsidian_shroud",
|
||||
name: "Obsidian Shroud",
|
||||
owned: false,
|
||||
rarity: "common",
|
||||
setId: "blood_stalker",
|
||||
type: "shroud",
|
||||
},
|
||||
{
|
||||
bonus: { combatMultiplier: 1.12, bloodMultiplier: 1.05 },
|
||||
cost: { blood: 4_000, ichor: 0, soulShards: 0 },
|
||||
description: "Woven from threads dyed in the Citadel's blood-tanneries. The crimson never fades. Neither does the authority it implies.",
|
||||
equipped: false,
|
||||
id: "crimson_shroud",
|
||||
name: "Crimson Shroud",
|
||||
owned: false,
|
||||
rarity: "common",
|
||||
setId: "blood_stalker",
|
||||
type: "shroud",
|
||||
},
|
||||
{
|
||||
bonus: { combatMultiplier: 1.12, bloodMultiplier: 1.08 },
|
||||
cost: { blood: 12_000, ichor: 2, soulShards: 0 },
|
||||
description: "Woven entirely from shadow thread. A skilled observer would say it moves before the wearer does — a less skilled observer would simply not notice the wearer at all.",
|
||||
equipped: false,
|
||||
id: "shadow_shroud",
|
||||
name: "Shadow Shroud",
|
||||
owned: false,
|
||||
rarity: "common",
|
||||
setId: "crimson_regent",
|
||||
type: "shroud",
|
||||
},
|
||||
{
|
||||
bonus: { combatMultiplier: 1.15, bloodMultiplier: 1.08 },
|
||||
cost: { blood: 35_000, ichor: 5, soulShards: 0 },
|
||||
description: "Treated with plague compounds until the fabric has developed its own kind of patience. Wearing it keeps opponents at arm's length, quite literally.",
|
||||
equipped: false,
|
||||
id: "plague_shroud",
|
||||
name: "Plague Shroud",
|
||||
owned: false,
|
||||
rarity: "common",
|
||||
setId: "crimson_regent",
|
||||
type: "shroud",
|
||||
},
|
||||
// ── Shrouds — Rare ────────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: { combatMultiplier: 1.2, bloodMultiplier: 1.1 },
|
||||
description: "Woven from ashen cloth and cinder-crystal thread. It does not burn. Opponents who try to burn the wearer discover this too late.",
|
||||
equipped: false,
|
||||
id: "ashen_shroud",
|
||||
name: "Ashen Shroud",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "plague_bringer",
|
||||
type: "shroud",
|
||||
},
|
||||
{
|
||||
bonus: { combatMultiplier: 1.22, bloodMultiplier: 1.1 },
|
||||
description: "Woven from chain-link thread recovered from the Gaol's deepest holding cells. Each link carries a containment glyph that now works against those who attack the wearer.",
|
||||
equipped: false,
|
||||
id: "iron_shroud",
|
||||
name: "Iron Shroud",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "plague_bringer",
|
||||
type: "shroud",
|
||||
},
|
||||
{
|
||||
bonus: { combatMultiplier: 1.2, bloodMultiplier: 1.15 },
|
||||
description: "Woven from veil thread and phantom-dust infused silk. It flickers between solid and not quite solid, making it very difficult to land a decisive blow against the wearer.",
|
||||
equipped: false,
|
||||
id: "veil_shroud",
|
||||
name: "Veil Shroud",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "iron_jailer",
|
||||
type: "shroud",
|
||||
},
|
||||
{
|
||||
bonus: { combatMultiplier: 1.25, bloodMultiplier: 1.12 },
|
||||
description: "Made from moor peat-treated fabric, this shroud absorbs and dissipates kinetic energy in ways that no one has been able to explain satisfactorily.",
|
||||
equipped: false,
|
||||
id: "moor_shroud",
|
||||
name: "Moor Shroud",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "iron_jailer",
|
||||
type: "shroud",
|
||||
},
|
||||
{
|
||||
bonus: { combatMultiplier: 1.28, bloodMultiplier: 1.12 },
|
||||
description: "Woven from drowned silk and sunken stone fibre. The pressure of the depths has been incorporated into every thread — this garment is under constant compression.",
|
||||
equipped: false,
|
||||
id: "sunken_shroud",
|
||||
name: "Sunken Shroud",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "moonlit_predator",
|
||||
type: "shroud",
|
||||
},
|
||||
{
|
||||
bonus: { combatMultiplier: 1.3, bloodMultiplier: 1.15 },
|
||||
description: "Salvaged from the Sanctum's vestry — garments that were once sacred and have since been repurposed, without apology, into something entirely different.",
|
||||
equipped: false,
|
||||
id: "sanctum_shroud",
|
||||
name: "Sanctum Shroud",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "moonlit_predator",
|
||||
type: "shroud",
|
||||
},
|
||||
// ── Shrouds — Epic ────────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: { combatMultiplier: 1.35, bloodMultiplier: 1.2 },
|
||||
description: "Woven from carrion bone fragments and peak crystal thread. This garment was assembled at altitude, in conditions where most vampires would not survive, by a craftsperson who clearly had opinions about structural integrity.",
|
||||
equipped: false,
|
||||
id: "carrion_shroud",
|
||||
name: "Carrion Shroud",
|
||||
owned: false,
|
||||
rarity: "epic",
|
||||
setId: "sanctum_desecrator",
|
||||
type: "shroud",
|
||||
},
|
||||
{
|
||||
bonus: { combatMultiplier: 1.4, bloodMultiplier: 1.25 },
|
||||
description: "The Bloodspire's architects would recognise their own work in this garment. It was made from the same crystallised blood-material as the building, and it follows the same impossible logic.",
|
||||
equipped: false,
|
||||
id: "spire_shroud",
|
||||
name: "Spire Shroud",
|
||||
owned: false,
|
||||
rarity: "epic",
|
||||
setId: "sanctum_desecrator",
|
||||
type: "shroud",
|
||||
},
|
||||
{
|
||||
bonus: { combatMultiplier: 1.45, bloodMultiplier: 1.3 },
|
||||
description: "Woven from eternity thread and shroud dust, this garment exists slightly out of sync with the present moment. Blows land where the wearer was, not where the wearer is.",
|
||||
equipped: false,
|
||||
id: "eternity_shroud",
|
||||
name: "Eternity Shroud",
|
||||
owned: false,
|
||||
rarity: "epic",
|
||||
setId: "eternal_tyrant",
|
||||
type: "shroud",
|
||||
},
|
||||
{
|
||||
bonus: { combatMultiplier: 1.5, bloodMultiplier: 1.3, ichorMultiplier: 1.1 },
|
||||
description: "The garment of someone who has been to the edge of the known world and found the edge wanting. It absorbs damage from an existential weariness that precedes the arrival of the blow.",
|
||||
equipped: false,
|
||||
id: "abyss_shroud",
|
||||
name: "Abyss Shroud",
|
||||
owned: false,
|
||||
rarity: "epic",
|
||||
setId: "eternal_tyrant",
|
||||
type: "shroud",
|
||||
},
|
||||
// ── Shrouds — Legendary ───────────────────────────────────────────────────
|
||||
{
|
||||
bonus: { combatMultiplier: 1.55, bloodMultiplier: 1.4, ichorMultiplier: 1.2 },
|
||||
description: "Woven from the Court's most closely held thread — shadow and whisper and silence all at once. To wear this is to become genuinely difficult to locate, let alone fight.",
|
||||
equipped: false,
|
||||
id: "whisper_shroud",
|
||||
name: "Whisper Shroud",
|
||||
owned: false,
|
||||
rarity: "legendary",
|
||||
setId: "void_sovereign",
|
||||
type: "shroud",
|
||||
},
|
||||
{
|
||||
bonus: { combatMultiplier: 1.7, bloodMultiplier: 1.5, ichorMultiplier: 1.3 },
|
||||
description: "A shroud woven from the fabric of the Eternal Abyss — the void itself, shaped into something that can be worn. It does not protect the wearer. It convinces the universe not to bother attacking.",
|
||||
equipped: false,
|
||||
id: "eternal_shroud",
|
||||
name: "Eternal Shroud",
|
||||
owned: false,
|
||||
rarity: "legendary",
|
||||
setId: "void_sovereign",
|
||||
type: "shroud",
|
||||
},
|
||||
// ── Talismans — Common ────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: { combatMultiplier: 1.06, bloodMultiplier: 1.06 },
|
||||
cost: { blood: 200, ichor: 0, soulShards: 0 },
|
||||
description: "A talisman carved from catacomb bone. Every vampire starts somewhere. Most of them start here.",
|
||||
equipped: false,
|
||||
id: "bone_talisman",
|
||||
name: "Bone Talisman",
|
||||
owned: false,
|
||||
rarity: "common",
|
||||
setId: "catacombs_hunter",
|
||||
type: "talisman",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.1 },
|
||||
cost: { blood: 500, ichor: 0, soulShards: 0 },
|
||||
description: "A talisman sealed with old blood until the material has become as much blood as bone. It resonates with the hunt.",
|
||||
equipped: false,
|
||||
id: "blood_talisman",
|
||||
name: "Blood Talisman",
|
||||
owned: false,
|
||||
rarity: "common",
|
||||
setId: "blood_stalker",
|
||||
type: "talisman",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.1, combatMultiplier: 1.05 },
|
||||
cost: { blood: 1_500, ichor: 0, soulShards: 0 },
|
||||
description: "Carved from obsidian chip and iron shaving bonded together. The resulting piece is heavier than it looks and radiates a faint warmth.",
|
||||
equipped: false,
|
||||
id: "obsidian_talisman",
|
||||
name: "Obsidian Talisman",
|
||||
owned: false,
|
||||
rarity: "common",
|
||||
setId: "blood_stalker",
|
||||
type: "talisman",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.12, combatMultiplier: 1.06 },
|
||||
cost: { blood: 4_000, ichor: 0, soulShards: 0 },
|
||||
description: "A talisman carrying the Citadel's seal — the weight of centuries of dynasty compressed into a small, heavy object.",
|
||||
equipped: false,
|
||||
id: "crimson_talisman",
|
||||
name: "Crimson Talisman",
|
||||
owned: false,
|
||||
rarity: "common",
|
||||
setId: "crimson_regent",
|
||||
type: "talisman",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.1, combatMultiplier: 1.1 },
|
||||
cost: { blood: 12_000, ichor: 2, soulShards: 0 },
|
||||
description: "A talisman sealed with court wax and whisper ink. It carries a secret, but will not tell you what it is.",
|
||||
equipped: false,
|
||||
id: "shadow_talisman",
|
||||
name: "Shadow Talisman",
|
||||
owned: false,
|
||||
rarity: "common",
|
||||
setId: "crimson_regent",
|
||||
type: "talisman",
|
||||
},
|
||||
// ── Talismans — Rare ──────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.15, combatMultiplier: 1.12 },
|
||||
description: "A talisman cultivated in the Ossuary's most contaminated wing. It smells wrong. It works very well.",
|
||||
equipped: false,
|
||||
id: "plague_talisman",
|
||||
name: "Plague Talisman",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "plague_bringer",
|
||||
type: "talisman",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.18, combatMultiplier: 1.12 },
|
||||
description: "A talisman of volcanic ash and cinder crystal, formed in the Wastes' fire. It does not cool down.",
|
||||
equipped: false,
|
||||
id: "ashen_talisman",
|
||||
name: "Ashen Talisman",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "plague_bringer",
|
||||
type: "talisman",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.15, combatMultiplier: 1.18 },
|
||||
description: "Forged from a chain link and an iron rivet, inscribed with every containment glyph used in the Gaol. The talisman contains the wearer's enemies.",
|
||||
equipped: false,
|
||||
id: "iron_talisman",
|
||||
name: "Iron Talisman",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "iron_jailer",
|
||||
type: "talisman",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.2, combatMultiplier: 1.15 },
|
||||
description: "A hollow crystal sealed with phantom dust and veil thread. Looking into it, you see the same location you are standing in, but empty — and something looking back.",
|
||||
equipped: false,
|
||||
id: "veil_talisman",
|
||||
name: "Veil Talisman",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "iron_jailer",
|
||||
type: "talisman",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.22, combatMultiplier: 1.15 },
|
||||
description: "Made from compressed moor peat and night bloom extract. The resulting piece does not emit any light whatsoever, which is somehow more alarming than if it glowed.",
|
||||
equipped: false,
|
||||
id: "moor_talisman",
|
||||
name: "Moor Talisman",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "moonlit_predator",
|
||||
type: "talisman",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.25, combatMultiplier: 1.18 },
|
||||
description: "A deep amber talisman recovered from the Sunken Crypt. The thing preserved inside it is still moving. Very slowly.",
|
||||
equipped: false,
|
||||
id: "sunken_talisman",
|
||||
name: "Sunken Talisman",
|
||||
owned: false,
|
||||
rarity: "rare",
|
||||
setId: "moonlit_predator",
|
||||
type: "talisman",
|
||||
},
|
||||
// ── Talismans — Epic ──────────────────────────────────────────────────────
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.3, combatMultiplier: 1.22, ichorMultiplier: 1.1 },
|
||||
description: "A talisman cut from defiled marble and sealed with dark incense. It carries the Sanctum's inverted purpose — it does not protect the wearer from the dark. It amplifies it.",
|
||||
equipped: false,
|
||||
id: "sanctum_talisman",
|
||||
name: "Sanctum Talisman",
|
||||
owned: false,
|
||||
rarity: "epic",
|
||||
setId: "sanctum_desecrator",
|
||||
type: "talisman",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.35, combatMultiplier: 1.25, ichorMultiplier: 1.1 },
|
||||
description: "Blood obsidian carved into a talisman at the summit of Carrion Peaks. Something about altitude and blood obsidian together creates a resonance that neither material possesses alone.",
|
||||
equipped: false,
|
||||
id: "carrion_talisman",
|
||||
name: "Carrion Talisman",
|
||||
owned: false,
|
||||
rarity: "epic",
|
||||
setId: "sanctum_desecrator",
|
||||
type: "talisman",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.4, combatMultiplier: 1.3, ichorMultiplier: 1.15 },
|
||||
description: "A blood crystal and spire stone talisman that pulses in rhythm with the Bloodspire's beating heart — if the Spire has one. It seems, somehow, likely.",
|
||||
equipped: false,
|
||||
id: "spire_talisman",
|
||||
name: "Spire Talisman",
|
||||
owned: false,
|
||||
rarity: "epic",
|
||||
setId: "eternal_tyrant",
|
||||
type: "talisman",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.45, combatMultiplier: 1.3, ichorMultiplier: 1.2 },
|
||||
description: "A timeless amber talisman from the Shroud — the moment sealed inside it is not identifiable because it is from outside of time. The talisman itself has given up waiting for it to end.",
|
||||
equipped: false,
|
||||
id: "eternity_talisman",
|
||||
name: "Eternity Talisman",
|
||||
owned: false,
|
||||
rarity: "epic",
|
||||
setId: "eternal_tyrant",
|
||||
type: "talisman",
|
||||
},
|
||||
// ── Talismans — Legendary ─────────────────────────────────────────────────
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.55, combatMultiplier: 1.4, ichorMultiplier: 1.3 },
|
||||
description: "Forged from void crystal in absolute vacuum. The talisman does not interact with the physical world on a philosophical level. On a practical level, it amplifies everything.",
|
||||
equipped: false,
|
||||
id: "abyss_talisman",
|
||||
name: "Abyss Talisman",
|
||||
owned: false,
|
||||
rarity: "legendary",
|
||||
setId: "void_sovereign",
|
||||
type: "talisman",
|
||||
},
|
||||
{
|
||||
bonus: { bloodMultiplier: 1.6, combatMultiplier: 1.45, ichorMultiplier: 1.35 },
|
||||
description: "Forged from silent ink and court crystal in the Court of Whispers' deepest sanctum. It carries every secret the Court has ever kept, and it will not tell you any of them. But it will use them on your behalf.",
|
||||
equipped: false,
|
||||
id: "whisper_talisman",
|
||||
name: "Whisper Talisman",
|
||||
owned: false,
|
||||
rarity: "legendary",
|
||||
setId: "void_sovereign",
|
||||
type: "talisman",
|
||||
},
|
||||
];
|
||||
@@ -0,0 +1,119 @@
|
||||
/**
|
||||
* @file Game data definitions.
|
||||
* @copyright nhcarrigan
|
||||
* @license Naomi's Public License
|
||||
* @author Naomi Carrigan
|
||||
*/
|
||||
/* eslint-disable stylistic/max-len -- Data content */
|
||||
import type { VampireEquipmentSet } from "@elysium/types";
|
||||
|
||||
export const defaultVampireEquipmentSets: Array<VampireEquipmentSet> = [
|
||||
{
|
||||
bonuses: {
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention -- numeric keys
|
||||
2: { bloodMultiplier: 1.15 },
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention -- numeric keys
|
||||
3: { combatMultiplier: 1.1 },
|
||||
},
|
||||
description: "The starter relics of a newly awakened vampire — mismatched, imperfect, and entirely adequate for the catacombs. Every legend begins with gear this humble.",
|
||||
id: "catacombs_hunter",
|
||||
name: "Catacomb Hunter",
|
||||
pieces: [ "shard_fang", "blood_fang", "tattered_shroud", "blood_shroud", "bone_talisman" ],
|
||||
},
|
||||
{
|
||||
bonuses: {
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention -- numeric keys
|
||||
2: { bloodMultiplier: 1.2 },
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention -- numeric keys
|
||||
3: { combatMultiplier: 1.15 },
|
||||
},
|
||||
description: "Equipment forged in the fires of early conquest — in the mire's depths and the obsidian corridors. Functional, battle-tested, and smelling faintly of old blood.",
|
||||
id: "blood_stalker",
|
||||
name: "Blood Stalker",
|
||||
pieces: [ "war_fang", "obsidian_fang", "obsidian_shroud", "crimson_shroud", "blood_talisman", "obsidian_talisman" ],
|
||||
},
|
||||
{
|
||||
bonuses: {
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention -- numeric keys
|
||||
2: { bloodMultiplier: 1.25 },
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention -- numeric keys
|
||||
3: { ichorMultiplier: 1.2 },
|
||||
},
|
||||
description: "The arms of a vampire who has learned to move through courts as easily as through darkness. These pieces announce arrival before the wearer does.",
|
||||
id: "crimson_regent",
|
||||
name: "Crimson Regent",
|
||||
pieces: [ "crimson_fang", "shadow_fang", "shadow_shroud", "plague_shroud", "crimson_talisman", "shadow_talisman" ],
|
||||
},
|
||||
{
|
||||
bonuses: {
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention -- numeric keys
|
||||
2: { combatMultiplier: 1.3 },
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention -- numeric keys
|
||||
3: { bloodMultiplier: 1.2 },
|
||||
},
|
||||
description: "Equipment sourced from the most dangerous zones of the middle realm — places where even other vampires refuse to hunt. The gear carries the memory of every survival it enabled.",
|
||||
id: "plague_bringer",
|
||||
name: "Plague Bringer",
|
||||
pieces: [ "plague_fang", "ashen_fang", "ashen_shroud", "iron_shroud", "plague_talisman", "ashen_talisman" ],
|
||||
},
|
||||
{
|
||||
bonuses: {
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention -- numeric keys
|
||||
2: { combatMultiplier: 1.35 },
|
||||
// eslint-disable-next-line @typescript-eslant/naming-convention -- numeric keys
|
||||
3: { bloodMultiplier: 1.25 },
|
||||
},
|
||||
description: "The arms of a vampire who has broken open prisons and walked through veils. These pieces have seen the inside of places most vampires only hear about in old stories.",
|
||||
id: "iron_jailer",
|
||||
name: "Iron Jailer",
|
||||
pieces: [ "iron_fang", "veil_fang", "veil_shroud", "moor_shroud", "iron_talisman", "veil_talisman" ],
|
||||
},
|
||||
{
|
||||
bonuses: {
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention -- numeric keys
|
||||
2: { bloodMultiplier: 1.3 },
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention -- numeric keys
|
||||
3: { combatMultiplier: 1.3 },
|
||||
},
|
||||
description: "Equipment forged in the moonless reaches and recovered from sunken depths. The pieces were each retrieved at significant cost, which they repay with significant interest.",
|
||||
id: "moonlit_predator",
|
||||
name: "Moonlit Predator",
|
||||
pieces: [ "moonless_fang", "sunken_fang", "sunken_shroud", "sanctum_shroud", "moor_talisman", "sunken_talisman" ],
|
||||
},
|
||||
{
|
||||
bonuses: {
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention -- numeric keys
|
||||
2: { combatMultiplier: 1.4 },
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention -- numeric keys
|
||||
3: { ichorMultiplier: 1.3 },
|
||||
},
|
||||
description: "The regalia of desecration and apex predation — taken from places where even the concept of sanctuary has been dismantled. Each piece is a monument to the absence of mercy.",
|
||||
id: "sanctum_desecrator",
|
||||
name: "Sanctum Desecrator",
|
||||
pieces: [ "sanctum_fang", "carrion_fang", "carrion_shroud", "spire_shroud", "sanctum_talisman", "carrion_talisman" ],
|
||||
},
|
||||
{
|
||||
bonuses: {
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention -- numeric keys
|
||||
2: { bloodMultiplier: 1.4 },
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention -- numeric keys
|
||||
3: { combatMultiplier: 1.45 },
|
||||
},
|
||||
description: "The arms of a vampire who has conquered both time and blood — relics of the Bloodspire and the Shroud. These pieces are older than the zones they came from.",
|
||||
id: "eternal_tyrant",
|
||||
name: "Eternal Tyrant",
|
||||
pieces: [ "spire_fang", "shroud_fang", "eternity_shroud", "abyss_shroud", "spire_talisman", "eternity_talisman" ],
|
||||
},
|
||||
{
|
||||
bonuses: {
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention -- numeric keys
|
||||
2: { ichorMultiplier: 1.5 },
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention -- numeric keys
|
||||
3: { bloodMultiplier: 1.5 },
|
||||
},
|
||||
description: "The complete arms of a vampire who has stood at the edge of the void and returned. These pieces no longer belong to any zone. They belong to whatever you have become.",
|
||||
id: "void_sovereign",
|
||||
name: "Void Sovereign",
|
||||
pieces: [ "abyss_fang", "eternal_fang", "whisper_shroud", "eternal_shroud", "abyss_talisman", "whisper_talisman" ],
|
||||
},
|
||||
];
|
||||
@@ -0,0 +1,408 @@
|
||||
/**
|
||||
* @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 { Material } from "@elysium/types";
|
||||
|
||||
export const defaultVampireMaterials: Array<Material> = [
|
||||
// ── Haunted Catacombs ─────────────────────────────────────────────────────
|
||||
{
|
||||
description: "Dust ground from the bones of vampires who rose, fought, and fell in these tunnels. It carries the faintest trace of their hunger.",
|
||||
id: "bone_dust",
|
||||
name: "Bone Dust",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_haunted_catacombs",
|
||||
},
|
||||
{
|
||||
description: "The residue of a life that chose darkness. It pools in the lowest reaches of the catacombs, slowly thickening over centuries.",
|
||||
id: "grave_essence",
|
||||
name: "Grave Essence",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_haunted_catacombs",
|
||||
},
|
||||
{
|
||||
description: "Fine grey ash that accumulates wherever the undead have spent long centuries in stasis. Not quite earth, not quite flesh. Something in between.",
|
||||
id: "catacomb_ash",
|
||||
name: "Catacomb Ash",
|
||||
rarity: "uncommon",
|
||||
zoneId: "vampire_haunted_catacombs",
|
||||
},
|
||||
// ── Blood Mire ────────────────────────────────────────────────────────────
|
||||
{
|
||||
description: "Thick, crimson-tinted mud drawn from the deepest channels of the mire. It does not dry out. It does not wash off. It does not forget.",
|
||||
id: "mire_sludge",
|
||||
name: "Mire Sludge",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_blood_mire",
|
||||
},
|
||||
{
|
||||
description: "A flat-bladed moss that grows exclusively on surfaces saturated with old blood. Herbalists who have tried to study it have stopped trying.",
|
||||
id: "blood_moss",
|
||||
name: "Blood Moss",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_blood_mire",
|
||||
},
|
||||
{
|
||||
description: "A hollow reed that grows where the mire runs deepest, with a faint red tint throughout its stem. If cut, it bleeds.",
|
||||
id: "crimson_reed",
|
||||
name: "Crimson Reed",
|
||||
rarity: "uncommon",
|
||||
zoneId: "vampire_blood_mire",
|
||||
},
|
||||
// ── Obsidian Keep ─────────────────────────────────────────────────────────
|
||||
{
|
||||
description: "A sharp shard of the volcanic stone used to build the Keep. Each chip holds a fragment of the blood magic sealed into the walls during construction.",
|
||||
id: "obsidian_chip",
|
||||
name: "Obsidian Chip",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_obsidian_keep",
|
||||
},
|
||||
{
|
||||
description: "Iron filings scraped from the Keep's ancient weapons and restraints. Cold to the touch, even near fire. Even near blood.",
|
||||
id: "iron_shaving",
|
||||
name: "Iron Shaving",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_obsidian_keep",
|
||||
},
|
||||
{
|
||||
description: "The bonding agent used to seal the Keep's stones together — mixed with ash, iron powder, and something that should have been left out. It cures permanently.",
|
||||
id: "keep_mortar",
|
||||
name: "Keep Mortar",
|
||||
rarity: "rare",
|
||||
zoneId: "vampire_obsidian_keep",
|
||||
},
|
||||
// ── Crimson Citadel ───────────────────────────────────────────────────────
|
||||
{
|
||||
description: "Polished stone quarried from the Citadel's foundations. Every piece has been touched by so many vampire lords that it practically radiates authority.",
|
||||
id: "citadel_stone",
|
||||
name: "Citadel Stone",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_crimson_citadel",
|
||||
},
|
||||
{
|
||||
description: "An alloy forged in blood-tempered furnaces, harder than ordinary bronze and carrying a subtle crimson sheen. The Citadel's armourers guard the recipe.",
|
||||
id: "blood_bronze",
|
||||
name: "Blood Bronze",
|
||||
rarity: "uncommon",
|
||||
zoneId: "vampire_crimson_citadel",
|
||||
},
|
||||
{
|
||||
description: "Silk woven from threads that were dyed with diluted vampire essence and then dried for a century. The fabric changes colour subtly in moonlight.",
|
||||
id: "crimson_silk",
|
||||
name: "Crimson Silk",
|
||||
rarity: "rare",
|
||||
zoneId: "vampire_crimson_citadel",
|
||||
},
|
||||
// ── Shadow Court ──────────────────────────────────────────────────────────
|
||||
{
|
||||
description: "Thread spun from shadow itself — a process that requires both technical skill and a complete willingness to let go of daylight. Woven garments made from it are essentially invisible.",
|
||||
id: "shadow_thread",
|
||||
name: "Shadow Thread",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_shadow_court",
|
||||
},
|
||||
{
|
||||
description: "Ink prepared from whispered secrets — literally. The Court's scribes capture spoken confidences in a phial and render them down into pigment. Every document written with it is, technically, a confession.",
|
||||
id: "whisper_ink",
|
||||
name: "Whisper Ink",
|
||||
rarity: "uncommon",
|
||||
zoneId: "vampire_shadow_court",
|
||||
},
|
||||
{
|
||||
description: "A heavy black wax used to seal the Court's most sensitive correspondences. Once set, it can only be broken by the vampire who pressed it. Forgeries have been attempted. None have survived the attempt.",
|
||||
id: "court_wax",
|
||||
name: "Court Wax",
|
||||
rarity: "rare",
|
||||
zoneId: "vampire_shadow_court",
|
||||
},
|
||||
// ── Plague Ossuary ────────────────────────────────────────────────────────
|
||||
{
|
||||
description: "Grey ash remaining after the Ossuary's plague fires have consumed what they were fed. Mildly corrosive. Handle with care, and perhaps with gloves.",
|
||||
id: "plague_ash",
|
||||
name: "Plague Ash",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_plague_ossuary",
|
||||
},
|
||||
{
|
||||
description: "Bone harvested from vampires taken by the Ossuary's endemic pestilence. The infection did not die with them. It merely changed hosts.",
|
||||
id: "infected_bone",
|
||||
name: "Infected Bone",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_plague_ossuary",
|
||||
},
|
||||
{
|
||||
description: "A thick, pale resin that oozes from the Ossuary's walls in places where plague-magic has been concentrated longest. It hardens into a surprisingly effective sealant.",
|
||||
id: "ossuary_resin",
|
||||
name: "Ossuary Resin",
|
||||
rarity: "rare",
|
||||
zoneId: "vampire_plague_ossuary",
|
||||
},
|
||||
// ── Ashen Wastes ──────────────────────────────────────────────────────────
|
||||
{
|
||||
description: "Ash falling perpetually from the sky above the Wastes — the remains of a war that never finished burning. It is surprisingly good for preservation.",
|
||||
id: "volcanic_ash",
|
||||
name: "Volcanic Ash",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_ashen_wastes",
|
||||
},
|
||||
{
|
||||
description: "Crystals formed where magical fire burned long enough to change the nature of the ground beneath it. They retain heat indefinitely.",
|
||||
id: "cinder_crystal",
|
||||
name: "Cinder Crystal",
|
||||
rarity: "uncommon",
|
||||
zoneId: "vampire_ashen_wastes",
|
||||
},
|
||||
{
|
||||
description: "Cloth woven in the Wastes and saturated with ash over generations. It does not burn. It does not stain. It does not soften.",
|
||||
id: "ashen_cloth",
|
||||
name: "Ashen Cloth",
|
||||
rarity: "uncommon",
|
||||
zoneId: "vampire_ashen_wastes",
|
||||
},
|
||||
// ── The Iron Gaol ─────────────────────────────────────────────────────────
|
||||
{
|
||||
description: "The iron pins and fasteners used throughout the Gaol's construction. Each one is inscribed with a containment glyph. They do not loosen with time.",
|
||||
id: "iron_rivet",
|
||||
name: "Iron Rivet",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_iron_gaol",
|
||||
},
|
||||
{
|
||||
description: "A single link from one of the Gaol's binding chains. Strong enough to hold an elder vampire. Heavier than it looks. Always cold.",
|
||||
id: "chain_link",
|
||||
name: "Chain Link",
|
||||
rarity: "uncommon",
|
||||
zoneId: "vampire_iron_gaol",
|
||||
},
|
||||
{
|
||||
description: "The stone quarried to build the Gaol's cells — dense, cold, and impregnated with centuries of accumulated despair. It absorbs magic rather than conducting it.",
|
||||
id: "gaol_stone",
|
||||
name: "Gaol Stone",
|
||||
rarity: "rare",
|
||||
zoneId: "vampire_iron_gaol",
|
||||
},
|
||||
// ── Veilborn Hollow ───────────────────────────────────────────────────────
|
||||
{
|
||||
description: "Thread spun from the Veil itself — a substance that exists partially in the shadow-realm and partially in the real world. Objects made with it are somewhat difficult to focus on.",
|
||||
id: "veil_thread",
|
||||
name: "Veil Thread",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_veilborn_hollow",
|
||||
},
|
||||
{
|
||||
description: "Crystals formed at the point where the Veil touches the physical world — each one containing a frozen moment from the shadow-realm. Looking into them for too long is inadvisable.",
|
||||
id: "hollow_crystal",
|
||||
name: "Hollow Crystal",
|
||||
rarity: "uncommon",
|
||||
zoneId: "vampire_veilborn_hollow",
|
||||
},
|
||||
{
|
||||
description: "The physical residue of a spirit that has fully crossed the Veil — fine, weightless particles that drift upward rather than falling. They make excellent catalyst material.",
|
||||
id: "phantom_dust",
|
||||
name: "Phantom Dust",
|
||||
rarity: "rare",
|
||||
zoneId: "vampire_veilborn_hollow",
|
||||
},
|
||||
// ── Moonless Moor ─────────────────────────────────────────────────────────
|
||||
{
|
||||
description: "Dark, saturated peat from the deepest parts of the Moor. It burns slowly and produces a smoke that seems to attract predators rather than repel them.",
|
||||
id: "moor_peat",
|
||||
name: "Moor Peat",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_moonless_moor",
|
||||
},
|
||||
{
|
||||
description: "The Moor's perpetual fog condensed and collected. It does not evaporate in warmth, which is how you know it is not ordinary fog.",
|
||||
id: "fog_essence",
|
||||
name: "Fog Essence",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_moonless_moor",
|
||||
},
|
||||
{
|
||||
description: "A rare plant that flowers only in absolute darkness. Its bloom is bioluminescent, which is the only way anyone has ever found one.",
|
||||
id: "night_bloom",
|
||||
name: "Night Bloom",
|
||||
rarity: "rare",
|
||||
zoneId: "vampire_moonless_moor",
|
||||
},
|
||||
// ── The Sunken Crypt ──────────────────────────────────────────────────────
|
||||
{
|
||||
description: "Stone recovered from the deepest chambers — porous, dark, and reeking of salt water and old blood. Everything sealed in these chambers has soaked into it.",
|
||||
id: "sunken_stone",
|
||||
name: "Sunken Stone",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_sunken_crypt",
|
||||
},
|
||||
{
|
||||
description: "Silk preserved in the crypt's submerged chambers for so long that it has taken on properties of neither cloth nor water. Soft, cold, and permanent.",
|
||||
id: "drowned_silk",
|
||||
name: "Drowned Silk",
|
||||
rarity: "uncommon",
|
||||
zoneId: "vampire_sunken_crypt",
|
||||
},
|
||||
{
|
||||
description: "Amber formed from resin that seeped into the crypt's lower levels and hardened around fragments of vampire essence. Each piece traps something that was still alive when it solidified.",
|
||||
id: "deep_amber",
|
||||
name: "Deep Amber",
|
||||
rarity: "rare",
|
||||
zoneId: "vampire_sunken_crypt",
|
||||
},
|
||||
// ── Desecrated Sanctum ────────────────────────────────────────────────────
|
||||
{
|
||||
description: "Polished marble torn from the Sanctum's original construction — its sacred inscriptions scraped away, but the stone remembers. It resists dark enchantments more than it should.",
|
||||
id: "defiled_marble",
|
||||
name: "Defiled Marble",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_desecrated_sanctum",
|
||||
},
|
||||
{
|
||||
description: "Fragments of the Sanctum's original windows — glass that was made to hold sacred light. Now it holds nothing, and the emptiness feels intentional.",
|
||||
id: "sanctum_glass",
|
||||
name: "Sanctum Glass",
|
||||
rarity: "uncommon",
|
||||
zoneId: "vampire_desecrated_sanctum",
|
||||
},
|
||||
{
|
||||
description: "Incense burned in rituals designed to invert the Sanctum's sacred purpose. The smoke still rises the wrong way — downward.",
|
||||
id: "dark_incense",
|
||||
name: "Dark Incense",
|
||||
rarity: "rare",
|
||||
zoneId: "vampire_desecrated_sanctum",
|
||||
},
|
||||
// ── Carrion Peaks ─────────────────────────────────────────────────────────
|
||||
{
|
||||
description: "Bone fragments from creatures that have lived and died on the Peaks for generations — stripped clean, bleached white, and still faintly warm.",
|
||||
id: "carrion_bone",
|
||||
name: "Carrion Bone",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_carrion_peaks",
|
||||
},
|
||||
{
|
||||
description: "Crystals found only in the Peaks' highest reaches — formed by a convergence of altitude, cold, and old hunting magic. Sharp enough to cut through standard vampire hide.",
|
||||
id: "peak_crystal",
|
||||
name: "Peak Crystal",
|
||||
rarity: "uncommon",
|
||||
zoneId: "vampire_carrion_peaks",
|
||||
},
|
||||
{
|
||||
description: "Obsidian that has absorbed vampire blood through direct contact during battles at the Peaks' summits. The two materials have merged into something neither purely mineral nor purely vital.",
|
||||
id: "blood_obsidian",
|
||||
name: "Blood Obsidian",
|
||||
rarity: "rare",
|
||||
zoneId: "vampire_carrion_peaks",
|
||||
},
|
||||
// ── The Bloodspire ────────────────────────────────────────────────────────
|
||||
{
|
||||
description: "The crystallised blood that forms the Spire's outer walls. Dense as stone, warm as fresh blood. It grows back if broken off.",
|
||||
id: "spire_stone",
|
||||
name: "Spire Stone",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_bloodspire",
|
||||
},
|
||||
{
|
||||
description: "Crystals grown at the Spire's interior junctions — formed where the architecture deliberately folds blood-magic into the structure of the building. Each one pulses faintly.",
|
||||
id: "blood_crystal",
|
||||
name: "Blood Crystal",
|
||||
rarity: "uncommon",
|
||||
zoneId: "vampire_bloodspire",
|
||||
},
|
||||
{
|
||||
description: "Residue harvested from the Spire's deepest chambers — a thick, dark ichor that predates even the building that contains it. It does not react to any known magical reagent. It reacts to intent.",
|
||||
id: "ancient_gore",
|
||||
name: "Ancient Gore",
|
||||
rarity: "rare",
|
||||
zoneId: "vampire_bloodspire",
|
||||
},
|
||||
// ── Shroud of Eternity ────────────────────────────────────────────────────
|
||||
{
|
||||
description: "Thread woven from the Shroud's temporal fabric — each strand has already lived through several possible futures and settled on none of them. Things made from it feel slightly out of phase.",
|
||||
id: "eternity_thread",
|
||||
name: "Eternity Thread",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_shroud_of_eternity",
|
||||
},
|
||||
{
|
||||
description: "Dust collected from the Shroud's boundary regions — the physical remnant of time that moved too slowly and eventually stopped. It drifts in currents that do not correspond to any wind.",
|
||||
id: "shroud_dust",
|
||||
name: "Shroud Dust",
|
||||
rarity: "uncommon",
|
||||
zoneId: "vampire_shroud_of_eternity",
|
||||
},
|
||||
{
|
||||
description: "Amber formed in the Shroud's temporal anomalies — trapping moments that exist outside of normal time. The things preserved inside are still happening.",
|
||||
id: "timeless_amber",
|
||||
name: "Timeless Amber",
|
||||
rarity: "rare",
|
||||
zoneId: "vampire_shroud_of_eternity",
|
||||
},
|
||||
// ── The Abyssal Vault ─────────────────────────────────────────────────────
|
||||
{
|
||||
description: "Stone from the Vault's outer walls — quarried from a place that exists below the normal underground, in a layer of the world that does not have a name.",
|
||||
id: "abyssal_stone",
|
||||
name: "Abyssal Stone",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_abyssal_vault",
|
||||
},
|
||||
{
|
||||
description: "Crystals formed in absolute void — places within the Vault where nothing has ever existed. Their interiors are genuinely empty in a way that normal empty space is not.",
|
||||
id: "void_crystal",
|
||||
name: "Void Crystal",
|
||||
rarity: "uncommon",
|
||||
zoneId: "vampire_abyssal_vault",
|
||||
},
|
||||
{
|
||||
description: "Iron refined in the Vault's deepest forges — as cold as absolute zero, as hard as any known material. It does not rust. It does not bend. It does not forgive.",
|
||||
id: "vault_iron",
|
||||
name: "Vault Iron",
|
||||
rarity: "rare",
|
||||
zoneId: "vampire_abyssal_vault",
|
||||
},
|
||||
// ── Court of Whispers ─────────────────────────────────────────────────────
|
||||
{
|
||||
description: "Parchment prepared from the skin of failed spies — a Court tradition that serves both as record and deterrent. Every document written on it contains the memory of its source.",
|
||||
id: "whisper_parchment",
|
||||
name: "Whisper Parchment",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_court_of_whispers",
|
||||
},
|
||||
{
|
||||
description: "Crystals formed where the Court's intelligence network has concentrated the most secrets in the least space. They vibrate at a frequency only very old vampires can hear.",
|
||||
id: "court_crystal",
|
||||
name: "Court Crystal",
|
||||
rarity: "uncommon",
|
||||
zoneId: "vampire_court_of_whispers",
|
||||
},
|
||||
{
|
||||
description: "Ink rendered from secrets so dangerous that even writing them down is a risk. The Court uses it for its most sensitive documents. The ink knows what it says.",
|
||||
id: "silent_ink",
|
||||
name: "Silent Ink",
|
||||
rarity: "rare",
|
||||
zoneId: "vampire_court_of_whispers",
|
||||
},
|
||||
// ── The Eternal Abyss ─────────────────────────────────────────────────────
|
||||
{
|
||||
description: "The primal substance that exists at the bottom of the vampire world — neither matter nor energy, but something that predates both. Handling it requires understanding it, which may be impossible.",
|
||||
id: "void_essence",
|
||||
name: "Void Essence",
|
||||
rarity: "common",
|
||||
zoneId: "vampire_eternal_abyss",
|
||||
},
|
||||
{
|
||||
description: "Crystals formed at the intersection of the vampire realm and whatever exists beyond it. Each one contains a fragment of something genuinely ancient — older than the first vampire, older than the concept of blood.",
|
||||
id: "eternal_crystal",
|
||||
name: "Eternal Crystal",
|
||||
rarity: "uncommon",
|
||||
zoneId: "vampire_eternal_abyss",
|
||||
},
|
||||
{
|
||||
description: "Ash from things that existed before the concept of fire. It does not look like ordinary ash. It does not behave like ordinary ash. It simply is.",
|
||||
id: "primordial_ash",
|
||||
name: "Primordial Ash",
|
||||
rarity: "rare",
|
||||
zoneId: "vampire_eternal_abyss",
|
||||
},
|
||||
];
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,216 @@
|
||||
/**
|
||||
* @file Game data definitions.
|
||||
* @copyright nhcarrigan
|
||||
* @license Naomi's Public License
|
||||
* @author Naomi Carrigan
|
||||
*/
|
||||
/* eslint-disable stylistic/max-len -- Data content */
|
||||
import type { SiringUpgrade } from "@elysium/types";
|
||||
|
||||
export const defaultVampireSiringUpgrades: Array<SiringUpgrade> = [
|
||||
// ── Blood income ─────────────────────────────────────────────────────────
|
||||
{
|
||||
category: "blood",
|
||||
description: "The first drop of ichor transforms your blood instinct. All blood/s ×1.25.",
|
||||
ichorCost: 5,
|
||||
id: "siring_blood_1",
|
||||
multiplier: 1.25,
|
||||
name: "Ichor Awakening I",
|
||||
},
|
||||
{
|
||||
category: "blood",
|
||||
description: "Sustained siring deepens the hunger that drives every thrall. All blood/s ×1.5.",
|
||||
ichorCost: 15,
|
||||
id: "siring_blood_2",
|
||||
multiplier: 1.5,
|
||||
name: "Ichor Awakening II",
|
||||
},
|
||||
{
|
||||
category: "blood",
|
||||
description: "Each siring sharpens your command over the blood flow. All blood/s ×2.",
|
||||
ichorCost: 40,
|
||||
id: "siring_blood_3",
|
||||
multiplier: 2,
|
||||
name: "Ichor Awakening III",
|
||||
},
|
||||
{
|
||||
category: "blood",
|
||||
description: "The bloodline resonates across every hunt and harvest. All blood/s ×5.",
|
||||
ichorCost: 120,
|
||||
id: "siring_blood_4",
|
||||
multiplier: 5,
|
||||
name: "Ichor Awakening IV",
|
||||
},
|
||||
{
|
||||
category: "blood",
|
||||
description: "Total mastery of the siring-blood bond multiplies all income tenfold. All blood/s ×10.",
|
||||
ichorCost: 350,
|
||||
id: "siring_blood_5",
|
||||
multiplier: 10,
|
||||
name: "Ichor Awakening V",
|
||||
},
|
||||
{
|
||||
category: "blood",
|
||||
description: "The accumulated weight of many sirings floods every vein in your domain. All blood/s ×25.",
|
||||
ichorCost: 1_000,
|
||||
id: "siring_blood_6",
|
||||
multiplier: 25,
|
||||
name: "Ichor Awakening VI",
|
||||
},
|
||||
// ── Thrall strength ───────────────────────────────────────────────────────
|
||||
{
|
||||
category: "thralls",
|
||||
description: "Sired blood flows through your thralls, amplifying their natural power. All thrall blood/s ×1.5.",
|
||||
ichorCost: 8,
|
||||
id: "siring_thralls_1",
|
||||
multiplier: 1.5,
|
||||
name: "Bloodline Bond I",
|
||||
},
|
||||
{
|
||||
category: "thralls",
|
||||
description: "The bond between sire and thrall deepens, multiplying their output. All thrall blood/s ×2.",
|
||||
ichorCost: 25,
|
||||
id: "siring_thralls_2",
|
||||
multiplier: 2,
|
||||
name: "Bloodline Bond II",
|
||||
},
|
||||
{
|
||||
category: "thralls",
|
||||
description: "Every thrall in your bloodline fights and works with supernatural coordination. All thrall blood/s ×3.",
|
||||
ichorCost: 75,
|
||||
id: "siring_thralls_3",
|
||||
multiplier: 3,
|
||||
name: "Bloodline Bond III",
|
||||
},
|
||||
{
|
||||
category: "thralls",
|
||||
description: "The siring bond reaches its apex — every thrall becomes an extension of your will. All thrall blood/s ×5.",
|
||||
ichorCost: 200,
|
||||
id: "siring_thralls_4",
|
||||
multiplier: 5,
|
||||
name: "Bloodline Bond IV",
|
||||
},
|
||||
// ── Combat power ──────────────────────────────────────────────────────────
|
||||
{
|
||||
category: "combat",
|
||||
description: "Sired instincts sharpen your thralls' fighting edge. All thrall combat power ×1.5.",
|
||||
ichorCost: 12,
|
||||
id: "siring_combat_1",
|
||||
multiplier: 1.5,
|
||||
name: "Dark Predator I",
|
||||
},
|
||||
{
|
||||
category: "combat",
|
||||
description: "The predator's cunning passed through siring doubles your combat effectiveness. All thrall combat power ×2.",
|
||||
ichorCost: 45,
|
||||
id: "siring_combat_2",
|
||||
multiplier: 2,
|
||||
name: "Dark Predator II",
|
||||
},
|
||||
{
|
||||
category: "combat",
|
||||
description: "Centuries of accumulated battle memory flood into your line. All thrall combat power ×3.",
|
||||
ichorCost: 150,
|
||||
id: "siring_combat_3",
|
||||
multiplier: 3,
|
||||
name: "Dark Predator III",
|
||||
},
|
||||
{
|
||||
category: "combat",
|
||||
description: "The ultimate expression of vampire combat mastery through the siring ritual. All thrall combat power ×5.",
|
||||
ichorCost: 500,
|
||||
id: "siring_combat_4",
|
||||
multiplier: 5,
|
||||
name: "Dark Predator IV",
|
||||
},
|
||||
// ── Ichor yield ───────────────────────────────────────────────────────────
|
||||
{
|
||||
category: "ichor",
|
||||
description: "The ritual of siring becomes more efficient, preserving greater ichor yield. Ichor per siring ×1.5.",
|
||||
ichorCost: 20,
|
||||
id: "siring_ichor_1",
|
||||
multiplier: 1.5,
|
||||
name: "Refined Siring I",
|
||||
},
|
||||
{
|
||||
category: "ichor",
|
||||
description: "Deeper siring mastery extracts twice the ichor from every reset. Ichor per siring ×2.",
|
||||
ichorCost: 60,
|
||||
id: "siring_ichor_2",
|
||||
multiplier: 2,
|
||||
name: "Refined Siring II",
|
||||
},
|
||||
{
|
||||
category: "ichor",
|
||||
description: "The siring ritual refined to its peak triples the ichor yield at reset. Ichor per siring ×3.",
|
||||
ichorCost: 180,
|
||||
id: "siring_ichor_3",
|
||||
multiplier: 3,
|
||||
name: "Refined Siring III",
|
||||
},
|
||||
// ── Utility ───────────────────────────────────────────────────────────────
|
||||
{
|
||||
category: "utility",
|
||||
description: "Siring instinct reduces the blood threshold needed for the next siring by 10%.",
|
||||
ichorCost: 30,
|
||||
id: "siring_threshold_1",
|
||||
multiplier: 0.9,
|
||||
name: "Blood Efficiency I",
|
||||
},
|
||||
{
|
||||
category: "utility",
|
||||
description: "Further refinement lowers the siring threshold by an additional 15%.",
|
||||
ichorCost: 90,
|
||||
id: "siring_threshold_2",
|
||||
multiplier: 0.85,
|
||||
name: "Blood Efficiency II",
|
||||
},
|
||||
{
|
||||
category: "utility",
|
||||
description: "The siring rite becomes almost effortless — threshold reduced by another 20%.",
|
||||
ichorCost: 270,
|
||||
id: "siring_threshold_3",
|
||||
multiplier: 0.8,
|
||||
name: "Blood Efficiency III",
|
||||
},
|
||||
{
|
||||
category: "utility",
|
||||
description: "Peak efficiency — the blood threshold for siring is reduced by a further 25%.",
|
||||
ichorCost: 800,
|
||||
id: "siring_threshold_4",
|
||||
multiplier: 0.75,
|
||||
name: "Blood Efficiency IV",
|
||||
},
|
||||
{
|
||||
category: "utility",
|
||||
description: "An ancient siring ritual accelerates the arrival of the first thrall class after each siring.",
|
||||
ichorCost: 50,
|
||||
id: "siring_quick_start_1",
|
||||
multiplier: 1.5,
|
||||
name: "Quick Fledglings I",
|
||||
},
|
||||
{
|
||||
category: "utility",
|
||||
description: "The first fledglings after siring arrive faster and work harder for longer.",
|
||||
ichorCost: 150,
|
||||
id: "siring_quick_start_2",
|
||||
multiplier: 2,
|
||||
name: "Quick Fledglings II",
|
||||
},
|
||||
{
|
||||
category: "utility",
|
||||
description: "Your siring bloodline passively preserves a fraction of your thrall efficiency across resets.",
|
||||
ichorCost: 250,
|
||||
id: "siring_persistence_1",
|
||||
multiplier: 1.25,
|
||||
name: "Bloodline Memory I",
|
||||
},
|
||||
{
|
||||
category: "utility",
|
||||
description: "The bloodline memory deepens — even more efficiency is preserved through each siring.",
|
||||
ichorCost: 750,
|
||||
id: "siring_persistence_2",
|
||||
multiplier: 1.5,
|
||||
name: "Bloodline Memory II",
|
||||
},
|
||||
];
|
||||
@@ -0,0 +1,402 @@
|
||||
/**
|
||||
* @file Game data definitions.
|
||||
* @copyright nhcarrigan
|
||||
* @license Naomi's Public License
|
||||
* @author Naomi Carrigan
|
||||
*/
|
||||
|
||||
/* eslint-disable max-lines -- Data file */
|
||||
import type { VampireThrall } from "@elysium/types";
|
||||
|
||||
export const defaultVampireThralls: Array<VampireThrall> = [
|
||||
// ── Fledgling (5 tiers) ───────────────────────────────────────────────────
|
||||
{
|
||||
baseCost: 1,
|
||||
bloodPerSecond: 0.1,
|
||||
class: "fledgling",
|
||||
combatPower: 1,
|
||||
count: 0,
|
||||
ichorPerSecond: 0,
|
||||
id: "fledgling_1",
|
||||
level: 1,
|
||||
name: "Fledgling",
|
||||
unlocked: true,
|
||||
},
|
||||
{
|
||||
baseCost: 8,
|
||||
bloodPerSecond: 0.5,
|
||||
class: "fledgling",
|
||||
combatPower: 3,
|
||||
count: 0,
|
||||
ichorPerSecond: 0,
|
||||
id: "fledgling_2",
|
||||
level: 2,
|
||||
name: "Hungry Fledgling",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 80,
|
||||
bloodPerSecond: 2,
|
||||
class: "fledgling",
|
||||
combatPower: 8,
|
||||
count: 0,
|
||||
ichorPerSecond: 0.01,
|
||||
id: "fledgling_3",
|
||||
level: 3,
|
||||
name: "Feral Fledgling",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 700,
|
||||
bloodPerSecond: 7,
|
||||
class: "fledgling",
|
||||
combatPower: 20,
|
||||
count: 0,
|
||||
ichorPerSecond: 0.02,
|
||||
id: "fledgling_4",
|
||||
level: 4,
|
||||
name: "Blooded Fledgling",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 5_000,
|
||||
bloodPerSecond: 20,
|
||||
class: "fledgling",
|
||||
combatPower: 50,
|
||||
count: 0,
|
||||
ichorPerSecond: 0.05,
|
||||
id: "fledgling_5",
|
||||
level: 5,
|
||||
name: "Seasoned Fledgling",
|
||||
unlocked: false,
|
||||
},
|
||||
// ── Revenant (5 tiers) ────────────────────────────────────────────────────
|
||||
{
|
||||
baseCost: 35_000,
|
||||
bloodPerSecond: 50,
|
||||
class: "revenant",
|
||||
combatPower: 120,
|
||||
count: 0,
|
||||
ichorPerSecond: 0.1,
|
||||
id: "revenant_1",
|
||||
level: 6,
|
||||
name: "Revenant",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 250_000,
|
||||
bloodPerSecond: 150,
|
||||
class: "revenant",
|
||||
combatPower: 300,
|
||||
count: 0,
|
||||
ichorPerSecond: 0.2,
|
||||
id: "revenant_2",
|
||||
level: 7,
|
||||
name: "Battle Revenant",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 2_000_000,
|
||||
bloodPerSecond: 400,
|
||||
class: "revenant",
|
||||
combatPower: 750,
|
||||
count: 0,
|
||||
ichorPerSecond: 0.5,
|
||||
id: "revenant_3",
|
||||
level: 8,
|
||||
name: "Ancient Revenant",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 15_000_000,
|
||||
bloodPerSecond: 1_000,
|
||||
class: "revenant",
|
||||
combatPower: 1_800,
|
||||
count: 0,
|
||||
ichorPerSecond: 1,
|
||||
id: "revenant_4",
|
||||
level: 9,
|
||||
name: "Elite Revenant",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 120_000_000,
|
||||
bloodPerSecond: 2_500,
|
||||
class: "revenant",
|
||||
combatPower: 4_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 2,
|
||||
id: "revenant_5",
|
||||
level: 10,
|
||||
name: "Undying Revenant",
|
||||
unlocked: false,
|
||||
},
|
||||
// ── Shade (6 tiers) ───────────────────────────────────────────────────────
|
||||
{
|
||||
baseCost: 800_000_000,
|
||||
bloodPerSecond: 6_000,
|
||||
class: "shade",
|
||||
combatPower: 9_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 5,
|
||||
id: "shade_1",
|
||||
level: 11,
|
||||
name: "Shade",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 6_000_000_000,
|
||||
bloodPerSecond: 15_000,
|
||||
class: "shade",
|
||||
combatPower: 20_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 10,
|
||||
id: "shade_2",
|
||||
level: 12,
|
||||
name: "Shadow Shade",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 45_000_000_000,
|
||||
bloodPerSecond: 35_000,
|
||||
class: "shade",
|
||||
combatPower: 45_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 20,
|
||||
id: "shade_3",
|
||||
level: 13,
|
||||
name: "Veil Shade",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 350_000_000_000,
|
||||
bloodPerSecond: 80_000,
|
||||
class: "shade",
|
||||
combatPower: 100_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 40,
|
||||
id: "shade_4",
|
||||
level: 14,
|
||||
name: "Phantom Shade",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 2_700_000_000_000,
|
||||
bloodPerSecond: 180_000,
|
||||
class: "shade",
|
||||
combatPower: 220_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 80,
|
||||
id: "shade_5",
|
||||
level: 15,
|
||||
name: "Wraith Shade",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 21_000_000_000_000,
|
||||
bloodPerSecond: 400_000,
|
||||
class: "shade",
|
||||
combatPower: 480_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 150,
|
||||
id: "shade_6",
|
||||
level: 16,
|
||||
name: "Eternal Shade",
|
||||
unlocked: false,
|
||||
},
|
||||
// ── Bloodbound (6 tiers) ──────────────────────────────────────────────────
|
||||
{
|
||||
baseCost: 160_000_000_000_000,
|
||||
bloodPerSecond: 900_000,
|
||||
class: "bloodbound",
|
||||
combatPower: 1_050_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 300,
|
||||
id: "bloodbound_1",
|
||||
level: 17,
|
||||
name: "Bloodbound",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 1_250_000_000_000_000,
|
||||
bloodPerSecond: 2_000_000,
|
||||
class: "bloodbound",
|
||||
combatPower: 2_300_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 600,
|
||||
id: "bloodbound_2",
|
||||
level: 18,
|
||||
name: "Crimson Bloodbound",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 10_000_000_000_000_000,
|
||||
bloodPerSecond: 4_500_000,
|
||||
class: "bloodbound",
|
||||
combatPower: 5_000_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 1_200,
|
||||
id: "bloodbound_3",
|
||||
level: 19,
|
||||
name: "Elder Bloodbound",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 80_000_000_000_000_000,
|
||||
bloodPerSecond: 10_000_000,
|
||||
class: "bloodbound",
|
||||
combatPower: 11_000_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 2_500,
|
||||
id: "bloodbound_4",
|
||||
level: 20,
|
||||
name: "Oath Bloodbound",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 650_000_000_000_000_000,
|
||||
bloodPerSecond: 22_000_000,
|
||||
class: "bloodbound",
|
||||
combatPower: 24_000_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 5_000,
|
||||
id: "bloodbound_5",
|
||||
level: 21,
|
||||
name: "Ancient Bloodbound",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 5_200_000_000_000_000_000,
|
||||
bloodPerSecond: 50_000_000,
|
||||
class: "bloodbound",
|
||||
combatPower: 54_000_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 10_000,
|
||||
id: "bloodbound_6",
|
||||
level: 22,
|
||||
name: "Eternal Bloodbound",
|
||||
unlocked: false,
|
||||
},
|
||||
// ── Wraith (5 tiers) ──────────────────────────────────────────────────────
|
||||
{
|
||||
baseCost: 4e19,
|
||||
bloodPerSecond: 110_000_000,
|
||||
class: "wraith",
|
||||
combatPower: 120_000_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 20_000,
|
||||
id: "wraith_1",
|
||||
level: 23,
|
||||
name: "Wraith",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 3.5e20,
|
||||
bloodPerSecond: 250_000_000,
|
||||
class: "wraith",
|
||||
combatPower: 270_000_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 40_000,
|
||||
id: "wraith_2",
|
||||
level: 24,
|
||||
name: "Banshee Wraith",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 2.8e21,
|
||||
bloodPerSecond: 560_000_000,
|
||||
class: "wraith",
|
||||
combatPower: 600_000_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 80_000,
|
||||
id: "wraith_3",
|
||||
level: 25,
|
||||
name: "Spectral Wraith",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 2.2e22,
|
||||
bloodPerSecond: 1_250_000_000,
|
||||
class: "wraith",
|
||||
combatPower: 1_350_000_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 160_000,
|
||||
id: "wraith_4",
|
||||
level: 26,
|
||||
name: "Elder Wraith",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 1.8e23,
|
||||
bloodPerSecond: 2_800_000_000,
|
||||
class: "wraith",
|
||||
combatPower: 3_000_000_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 320_000,
|
||||
id: "wraith_5",
|
||||
level: 27,
|
||||
name: "Eternal Wraith",
|
||||
unlocked: false,
|
||||
},
|
||||
// ── Ancient (5 tiers) ─────────────────────────────────────────────────────
|
||||
{
|
||||
baseCost: 1.5e24,
|
||||
bloodPerSecond: 6_500_000_000,
|
||||
class: "ancient",
|
||||
combatPower: 7_000_000_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 650_000,
|
||||
id: "ancient_1",
|
||||
level: 28,
|
||||
name: "Ancient",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 1.2e25,
|
||||
bloodPerSecond: 15_000_000_000,
|
||||
class: "ancient",
|
||||
combatPower: 16_000_000_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 1_300_000,
|
||||
id: "ancient_2",
|
||||
level: 29,
|
||||
name: "Bloodline Ancient",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 1e26,
|
||||
bloodPerSecond: 35_000_000_000,
|
||||
class: "ancient",
|
||||
combatPower: 37_000_000_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 2_600_000,
|
||||
id: "ancient_3",
|
||||
level: 30,
|
||||
name: "Elder Ancient",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 8e26,
|
||||
bloodPerSecond: 80_000_000_000,
|
||||
class: "ancient",
|
||||
combatPower: 85_000_000_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 5_200_000,
|
||||
id: "ancient_4",
|
||||
level: 31,
|
||||
name: "Apex Ancient",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
baseCost: 6.5e27,
|
||||
bloodPerSecond: 180_000_000_000,
|
||||
class: "ancient",
|
||||
combatPower: 200_000_000_000,
|
||||
count: 0,
|
||||
ichorPerSecond: 10_000_000,
|
||||
id: "ancient_5",
|
||||
level: 32,
|
||||
name: "Eternal Ancient",
|
||||
unlocked: false,
|
||||
},
|
||||
];
|
||||
@@ -0,0 +1,725 @@
|
||||
/**
|
||||
* @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 { VampireUpgrade } from "@elysium/types";
|
||||
|
||||
export const defaultVampireUpgrades: Array<VampireUpgrade> = [
|
||||
// ── Blood Income (18) ─────────────────────────────────────────────────────
|
||||
{
|
||||
costBlood: 50,
|
||||
costIchor: 0,
|
||||
costSoulShards: 0,
|
||||
description: "The first taste of blood sharpens the hunt. All blood/s ×1.25.",
|
||||
id: "blood_hunt_1",
|
||||
multiplier: 1.25,
|
||||
name: "Blood Hunt I",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: true,
|
||||
},
|
||||
{
|
||||
costBlood: 200,
|
||||
costIchor: 0,
|
||||
costSoulShards: 0,
|
||||
description: "A sustained hunting rhythm doubles the efficiency of every harvest. All blood/s ×1.5.",
|
||||
id: "blood_hunt_2",
|
||||
multiplier: 1.5,
|
||||
name: "Blood Hunt II",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: true,
|
||||
},
|
||||
{
|
||||
costBlood: 1_000,
|
||||
costIchor: 1,
|
||||
costSoulShards: 0,
|
||||
description: "The hunt becomes ritual — every drop flows with purpose. All blood/s ×2.",
|
||||
id: "blood_hunt_3",
|
||||
multiplier: 2,
|
||||
name: "Blood Hunt III",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: true,
|
||||
},
|
||||
{
|
||||
costBlood: 5_000,
|
||||
costIchor: 2,
|
||||
costSoulShards: 0,
|
||||
description: "The ritual deepens. Every vein in your domain opens wider. All blood/s ×3.",
|
||||
id: "blood_hunt_4",
|
||||
multiplier: 3,
|
||||
name: "Blood Hunt IV",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: true,
|
||||
},
|
||||
{
|
||||
costBlood: 25_000,
|
||||
costIchor: 5,
|
||||
costSoulShards: 0,
|
||||
description: "A hunter at full power commands the blood itself to flow. All blood/s ×5.",
|
||||
id: "blood_hunt_5",
|
||||
multiplier: 5,
|
||||
name: "Blood Hunt V",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: true,
|
||||
},
|
||||
{
|
||||
costBlood: 100_000,
|
||||
costIchor: 10,
|
||||
costSoulShards: 0,
|
||||
description: "Mastery of the hunt makes every moment a moment of feeding. All blood/s ×2.",
|
||||
id: "blood_mastery_1",
|
||||
multiplier: 2,
|
||||
name: "Blood Mastery I",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 500_000,
|
||||
costIchor: 25,
|
||||
costSoulShards: 0,
|
||||
description: "The second level of mastery reaches into the blood-flow itself. All blood/s ×3.",
|
||||
id: "blood_mastery_2",
|
||||
multiplier: 3,
|
||||
name: "Blood Mastery II",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 2_500_000,
|
||||
costIchor: 50,
|
||||
costSoulShards: 1,
|
||||
description: "The third level of mastery amplifies all income fivefold. All blood/s ×5.",
|
||||
id: "blood_mastery_3",
|
||||
multiplier: 5,
|
||||
name: "Blood Mastery III",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 12_500_000,
|
||||
costIchor: 100,
|
||||
costSoulShards: 2,
|
||||
description: "Total blood mastery — the hunger commands and the world obeys. All blood/s ×10.",
|
||||
id: "blood_mastery_4",
|
||||
multiplier: 10,
|
||||
name: "Blood Mastery IV",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 75_000_000,
|
||||
costIchor: 200,
|
||||
costSoulShards: 3,
|
||||
description: "A rising tide of crimson engulfs the entire domain. All blood/s ×5.",
|
||||
id: "crimson_tide_1",
|
||||
multiplier: 5,
|
||||
name: "Crimson Tide I",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 500_000_000,
|
||||
costIchor: 500,
|
||||
costSoulShards: 5,
|
||||
description: "The tide becomes a flood — no corner of your domain goes unwatered. All blood/s ×10.",
|
||||
id: "crimson_tide_2",
|
||||
multiplier: 10,
|
||||
name: "Crimson Tide II",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 3_000_000_000,
|
||||
costIchor: 1_000,
|
||||
costSoulShards: 10,
|
||||
description: "The flood becomes eternal — the blood never stops flowing. All blood/s ×25.",
|
||||
id: "crimson_tide_3",
|
||||
multiplier: 25,
|
||||
name: "Crimson Tide III",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 20_000_000_000,
|
||||
costIchor: 2_000,
|
||||
costSoulShards: 15,
|
||||
description: "The eternal thirst drives every thrall beyond their limits. All blood/s ×10.",
|
||||
id: "eternal_thirst_1",
|
||||
multiplier: 10,
|
||||
name: "Eternal Thirst I",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 150_000_000_000,
|
||||
costIchor: 5_000,
|
||||
costSoulShards: 25,
|
||||
description: "The second degree of eternal thirst saturates every hunting ground. All blood/s ×25.",
|
||||
id: "eternal_thirst_2",
|
||||
multiplier: 25,
|
||||
name: "Eternal Thirst II",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 1_000_000_000_000,
|
||||
costIchor: 10_000,
|
||||
costSoulShards: 50,
|
||||
description: "The final degree — the domain itself becomes a feeding ground. All blood/s ×50.",
|
||||
id: "eternal_thirst_3",
|
||||
multiplier: 50,
|
||||
name: "Eternal Thirst III",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 8_000_000_000_000,
|
||||
costIchor: 25_000,
|
||||
costSoulShards: 75,
|
||||
description: "Absolute sovereignty over blood — the vampire's birthright, fully claimed. All blood/s ×25.",
|
||||
id: "blood_sovereignty_1",
|
||||
multiplier: 25,
|
||||
name: "Blood Sovereignty I",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 60_000_000_000_000,
|
||||
costIchor: 50_000,
|
||||
costSoulShards: 100,
|
||||
description: "The sovereign's command extends to every drop in every vessel in every corner of the realm. All blood/s ×50.",
|
||||
id: "blood_sovereignty_2",
|
||||
multiplier: 50,
|
||||
name: "Blood Sovereignty II",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 500_000_000_000_000,
|
||||
costIchor: 100_000,
|
||||
costSoulShards: 150,
|
||||
description: "The apex of blood sovereignty — creation itself bows to your thirst. All blood/s ×100.",
|
||||
id: "blood_sovereignty_3",
|
||||
multiplier: 100,
|
||||
name: "Blood Sovereignty III",
|
||||
purchased: false,
|
||||
target: "blood",
|
||||
unlocked: false,
|
||||
},
|
||||
// ── Thrall Upgrades (12, 2 per class) ────────────────────────────────────
|
||||
{
|
||||
costBlood: 150,
|
||||
costIchor: 0,
|
||||
costSoulShards: 0,
|
||||
description: "The fledglings learn to hunt more efficiently. Fledgling blood/s ×2.",
|
||||
id: "thrall_fledgling_1",
|
||||
multiplier: 2,
|
||||
name: "Fledgling Training I",
|
||||
purchased: false,
|
||||
target: "thrall",
|
||||
thrallId: "fledgling",
|
||||
unlocked: true,
|
||||
},
|
||||
{
|
||||
costBlood: 2_000,
|
||||
costIchor: 2,
|
||||
costSoulShards: 0,
|
||||
description: "Advanced fledgling conditioning multiplies their contribution. Fledgling blood/s ×4.",
|
||||
id: "thrall_fledgling_2",
|
||||
multiplier: 4,
|
||||
name: "Fledgling Training II",
|
||||
purchased: false,
|
||||
target: "thrall",
|
||||
thrallId: "fledgling",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 75_000,
|
||||
costIchor: 5,
|
||||
costSoulShards: 0,
|
||||
description: "The revenant's battle instinct is sharpened to a fine edge. Revenant blood/s ×2.",
|
||||
id: "thrall_revenant_1",
|
||||
multiplier: 2,
|
||||
name: "Revenant Conditioning I",
|
||||
purchased: false,
|
||||
target: "thrall",
|
||||
thrallId: "revenant",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 1_500_000,
|
||||
costIchor: 15,
|
||||
costSoulShards: 0,
|
||||
description: "Elite revenant training doubles their already formidable output. Revenant blood/s ×4.",
|
||||
id: "thrall_revenant_2",
|
||||
multiplier: 4,
|
||||
name: "Revenant Conditioning II",
|
||||
purchased: false,
|
||||
target: "thrall",
|
||||
thrallId: "revenant",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 5_000_000,
|
||||
costIchor: 30,
|
||||
costSoulShards: 0,
|
||||
description: "The shade's shadow-walking technique is refined, producing greater yield. Shade blood/s ×2.",
|
||||
id: "thrall_shade_1",
|
||||
multiplier: 2,
|
||||
name: "Shadow Arts I",
|
||||
purchased: false,
|
||||
target: "thrall",
|
||||
thrallId: "shade",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 100_000_000,
|
||||
costIchor: 75,
|
||||
costSoulShards: 1,
|
||||
description: "The shade's shadow-step accelerates their harvest considerably. Shade blood/s ×4.",
|
||||
id: "thrall_shade_2",
|
||||
multiplier: 4,
|
||||
name: "Shadow Arts II",
|
||||
purchased: false,
|
||||
target: "thrall",
|
||||
thrallId: "shade",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 500_000_000,
|
||||
costIchor: 150,
|
||||
costSoulShards: 2,
|
||||
description: "The bloodbound oath is renewed with greater intensity. Bloodbound blood/s ×2.",
|
||||
id: "thrall_bloodbound_1",
|
||||
multiplier: 2,
|
||||
name: "Oath Renewal I",
|
||||
purchased: false,
|
||||
target: "thrall",
|
||||
thrallId: "bloodbound",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 10_000_000_000,
|
||||
costIchor: 350,
|
||||
costSoulShards: 4,
|
||||
description: "The strongest oath forges an unbreakable bond that multiplies all output. Bloodbound blood/s ×4.",
|
||||
id: "thrall_bloodbound_2",
|
||||
multiplier: 4,
|
||||
name: "Oath Renewal II",
|
||||
purchased: false,
|
||||
target: "thrall",
|
||||
thrallId: "bloodbound",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 50_000_000_000,
|
||||
costIchor: 700,
|
||||
costSoulShards: 8,
|
||||
description: "The wraith's ichor-feeding technique enters a new phase of efficiency. Wraith blood/s ×2.",
|
||||
id: "thrall_wraith_1",
|
||||
multiplier: 2,
|
||||
name: "Wraith Mastery I",
|
||||
purchased: false,
|
||||
target: "thrall",
|
||||
thrallId: "wraith",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 1_000_000_000_000,
|
||||
costIchor: 1_500,
|
||||
costSoulShards: 15,
|
||||
description: "Total wraith mastery — they exist between states, harvesting from both. Wraith blood/s ×4.",
|
||||
id: "thrall_wraith_2",
|
||||
multiplier: 4,
|
||||
name: "Wraith Mastery II",
|
||||
purchased: false,
|
||||
target: "thrall",
|
||||
thrallId: "wraith",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 5_000_000_000_000,
|
||||
costIchor: 3_000,
|
||||
costSoulShards: 25,
|
||||
description: "The ancient thralls remember techniques from before the oldest living vampires. Ancient blood/s ×2.",
|
||||
id: "thrall_ancient_1",
|
||||
multiplier: 2,
|
||||
name: "Ancient Wisdom I",
|
||||
purchased: false,
|
||||
target: "thrall",
|
||||
thrallId: "ancient",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 100_000_000_000_000,
|
||||
costIchor: 7_500,
|
||||
costSoulShards: 50,
|
||||
description: "The ancient thralls operate at the peak of millennia of refinement. Ancient blood/s ×4.",
|
||||
id: "thrall_ancient_2",
|
||||
multiplier: 4,
|
||||
name: "Ancient Wisdom II",
|
||||
purchased: false,
|
||||
target: "thrall",
|
||||
thrallId: "ancient",
|
||||
unlocked: false,
|
||||
},
|
||||
// ── Global Upgrades (10) ──────────────────────────────────────────────────
|
||||
{
|
||||
costBlood: 10_000,
|
||||
costIchor: 5,
|
||||
costSoulShards: 0,
|
||||
description: "All thralls synchronise their feeding — a whole greater than its parts. All blood/s ×1.5.",
|
||||
id: "vampire_synergy_1",
|
||||
multiplier: 1.5,
|
||||
name: "Vampire Synergy I",
|
||||
purchased: false,
|
||||
target: "global",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 100_000,
|
||||
costIchor: 20,
|
||||
costSoulShards: 0,
|
||||
description: "The synergy deepens — every domain element reinforces every other. All blood/s ×2.",
|
||||
id: "vampire_synergy_2",
|
||||
multiplier: 2,
|
||||
name: "Vampire Synergy II",
|
||||
purchased: false,
|
||||
target: "global",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 1_000_000,
|
||||
costIchor: 50,
|
||||
costSoulShards: 1,
|
||||
description: "Full synchronisation across the vampire domain triples all income. All blood/s ×3.",
|
||||
id: "vampire_synergy_3",
|
||||
multiplier: 3,
|
||||
name: "Vampire Synergy III",
|
||||
purchased: false,
|
||||
target: "global",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 10_000_000,
|
||||
costIchor: 100,
|
||||
costSoulShards: 3,
|
||||
description: "Perfect harmonic coordination across all vampire forces. All blood/s ×5.",
|
||||
id: "vampire_synergy_4",
|
||||
multiplier: 5,
|
||||
name: "Vampire Synergy IV",
|
||||
purchased: false,
|
||||
target: "global",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 100_000_000,
|
||||
costIchor: 200,
|
||||
costSoulShards: 5,
|
||||
description: "The apex of vampire domain synchronisation — a flawless, unified darkness. All blood/s ×10.",
|
||||
id: "vampire_synergy_5",
|
||||
multiplier: 10,
|
||||
name: "Vampire Synergy V",
|
||||
purchased: false,
|
||||
target: "global",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 500_000_000,
|
||||
costIchor: 500,
|
||||
costSoulShards: 8,
|
||||
description: "An ancient covenant between predator and prey amplifies all output. All blood/s ×5.",
|
||||
id: "dark_covenant_1",
|
||||
multiplier: 5,
|
||||
name: "Dark Covenant I",
|
||||
purchased: false,
|
||||
target: "global",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 5_000_000_000,
|
||||
costIchor: 1_500,
|
||||
costSoulShards: 15,
|
||||
description: "The covenant deepens into something approaching a law of nature. All blood/s ×10.",
|
||||
id: "dark_covenant_2",
|
||||
multiplier: 10,
|
||||
name: "Dark Covenant II",
|
||||
purchased: false,
|
||||
target: "global",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 50_000_000_000,
|
||||
costIchor: 5_000,
|
||||
costSoulShards: 30,
|
||||
description: "The final covenant makes the domain itself hunger on your behalf. All blood/s ×25.",
|
||||
id: "dark_covenant_3",
|
||||
multiplier: 25,
|
||||
name: "Dark Covenant III",
|
||||
purchased: false,
|
||||
target: "global",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 500_000_000_000,
|
||||
costIchor: 15_000,
|
||||
costSoulShards: 50,
|
||||
description: "The first step of blood ascension transcends the covenant. All blood/s ×25.",
|
||||
id: "blood_ascension_1",
|
||||
multiplier: 25,
|
||||
name: "Blood Ascension I",
|
||||
purchased: false,
|
||||
target: "global",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 5_000_000_000_000,
|
||||
costIchor: 50_000,
|
||||
costSoulShards: 100,
|
||||
description: "The final blood ascension — you become the very concept of the hunt. All blood/s ×50.",
|
||||
id: "blood_ascension_2",
|
||||
multiplier: 50,
|
||||
name: "Blood Ascension II",
|
||||
purchased: false,
|
||||
target: "global",
|
||||
unlocked: false,
|
||||
},
|
||||
// ── Siring Upgrades (8) ───────────────────────────────────────────────────
|
||||
{
|
||||
costBlood: 50_000,
|
||||
costIchor: 10,
|
||||
costSoulShards: 0,
|
||||
description: "The first step toward mastering the siring rite. Siring blood threshold ×0.9.",
|
||||
id: "siring_mastery_1",
|
||||
multiplier: 0.9,
|
||||
name: "Siring Mastery I",
|
||||
purchased: false,
|
||||
target: "siring",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 500_000,
|
||||
costIchor: 30,
|
||||
costSoulShards: 0,
|
||||
description: "Deeper mastery of the siring rite reduces the cost further. Siring blood threshold ×0.85.",
|
||||
id: "siring_mastery_2",
|
||||
multiplier: 0.85,
|
||||
name: "Siring Mastery II",
|
||||
purchased: false,
|
||||
target: "siring",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 5_000_000,
|
||||
costIchor: 75,
|
||||
costSoulShards: 1,
|
||||
description: "The ritual becomes instinctive, requiring less sacrifice each time. Siring blood threshold ×0.8.",
|
||||
id: "siring_mastery_3",
|
||||
multiplier: 0.8,
|
||||
name: "Siring Mastery III",
|
||||
purchased: false,
|
||||
target: "siring",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 50_000_000,
|
||||
costIchor: 200,
|
||||
costSoulShards: 3,
|
||||
description: "Apex siring mastery — the bloodline answers with a fraction of the effort. Siring blood threshold ×0.75.",
|
||||
id: "siring_mastery_4",
|
||||
multiplier: 0.75,
|
||||
name: "Siring Mastery IV",
|
||||
purchased: false,
|
||||
target: "siring",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 1_000_000_000,
|
||||
costIchor: 500,
|
||||
costSoulShards: 5,
|
||||
description: "The bloodline's power carries a multiplier into every siring. Siring production multiplier ×1.5.",
|
||||
id: "bloodline_power_1",
|
||||
multiplier: 1.5,
|
||||
name: "Bloodline Power I",
|
||||
purchased: false,
|
||||
target: "siring",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 10_000_000_000,
|
||||
costIchor: 1_500,
|
||||
costSoulShards: 10,
|
||||
description: "The bloodline power doubles its influence over each new generation. Siring production multiplier ×2.",
|
||||
id: "bloodline_power_2",
|
||||
multiplier: 2,
|
||||
name: "Bloodline Power II",
|
||||
purchased: false,
|
||||
target: "siring",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 100_000_000_000,
|
||||
costIchor: 5_000,
|
||||
costSoulShards: 20,
|
||||
description: "The bloodline power reaches its third stage — threefold production. Siring production multiplier ×3.",
|
||||
id: "bloodline_power_3",
|
||||
multiplier: 3,
|
||||
name: "Bloodline Power III",
|
||||
purchased: false,
|
||||
target: "siring",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 1_000_000_000_000,
|
||||
costIchor: 15_000,
|
||||
costSoulShards: 40,
|
||||
description: "The apex bloodline power — fivefold production carries into every generation. Siring production multiplier ×5.",
|
||||
id: "bloodline_power_4",
|
||||
multiplier: 5,
|
||||
name: "Bloodline Power IV",
|
||||
purchased: false,
|
||||
target: "siring",
|
||||
unlocked: false,
|
||||
},
|
||||
// ── Boss Upgrades (10) ────────────────────────────────────────────────────
|
||||
{
|
||||
costBlood: 1_000,
|
||||
costIchor: 1,
|
||||
costSoulShards: 0,
|
||||
description: "The hunter's instinct sharpens with each victory. Thrall combat power ×1.25.",
|
||||
id: "hunter_instinct_1",
|
||||
multiplier: 1.25,
|
||||
name: "Hunter Instinct I",
|
||||
purchased: false,
|
||||
target: "boss",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 10_000,
|
||||
costIchor: 5,
|
||||
costSoulShards: 0,
|
||||
description: "The instinct becomes method — every fight becomes a calculated feeding. Thrall combat power ×1.5.",
|
||||
id: "hunter_instinct_2",
|
||||
multiplier: 1.5,
|
||||
name: "Hunter Instinct II",
|
||||
purchased: false,
|
||||
target: "boss",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 100_000,
|
||||
costIchor: 15,
|
||||
costSoulShards: 0,
|
||||
description: "Method becomes mastery — the hunt reaches a new precision. Thrall combat power ×2.",
|
||||
id: "hunter_instinct_3",
|
||||
multiplier: 2,
|
||||
name: "Hunter Instinct III",
|
||||
purchased: false,
|
||||
target: "boss",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 1_000_000,
|
||||
costIchor: 40,
|
||||
costSoulShards: 1,
|
||||
description: "Peak hunting mastery — every thrall becomes a precision instrument of predation. Thrall combat power ×3.",
|
||||
id: "hunter_instinct_4",
|
||||
multiplier: 3,
|
||||
name: "Hunter Instinct IV",
|
||||
purchased: false,
|
||||
target: "boss",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 10_000_000,
|
||||
costIchor: 100,
|
||||
costSoulShards: 2,
|
||||
description: "The predator's sense detects weaknesses no eye can see. Thrall combat power ×2.",
|
||||
id: "predator_sense_1",
|
||||
multiplier: 2,
|
||||
name: "Predator Sense I",
|
||||
purchased: false,
|
||||
target: "boss",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 100_000_000,
|
||||
costIchor: 300,
|
||||
costSoulShards: 5,
|
||||
description: "The predator's sense reaches across zones — no prey is truly safe. Thrall combat power ×3.",
|
||||
id: "predator_sense_2",
|
||||
multiplier: 3,
|
||||
name: "Predator Sense II",
|
||||
purchased: false,
|
||||
target: "boss",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 1_000_000_000,
|
||||
costIchor: 1_000,
|
||||
costSoulShards: 10,
|
||||
description: "The apex predator sense collapses all opposition with surgical efficiency. Thrall combat power ×5.",
|
||||
id: "predator_sense_3",
|
||||
multiplier: 5,
|
||||
name: "Predator Sense III",
|
||||
purchased: false,
|
||||
target: "boss",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 10_000_000_000,
|
||||
costIchor: 3_000,
|
||||
costSoulShards: 20,
|
||||
description: "The first apex predator upgrade transcends ordinary vampire combat. Thrall combat power ×5.",
|
||||
id: "apex_predator_1",
|
||||
multiplier: 5,
|
||||
name: "Apex Predator I",
|
||||
purchased: false,
|
||||
target: "boss",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 100_000_000_000,
|
||||
costIchor: 10_000,
|
||||
costSoulShards: 40,
|
||||
description: "The second apex level — the domain produces warriors of legendary power. Thrall combat power ×10.",
|
||||
id: "apex_predator_2",
|
||||
multiplier: 10,
|
||||
name: "Apex Predator II",
|
||||
purchased: false,
|
||||
target: "boss",
|
||||
unlocked: false,
|
||||
},
|
||||
{
|
||||
costBlood: 1_000_000_000_000,
|
||||
costIchor: 30_000,
|
||||
costSoulShards: 75,
|
||||
description: "The final apex level — combat power that can shatter ancient evils. Thrall combat power ×25.",
|
||||
id: "apex_predator_3",
|
||||
multiplier: 25,
|
||||
name: "Apex Predator III",
|
||||
purchased: false,
|
||||
target: "boss",
|
||||
unlocked: false,
|
||||
},
|
||||
];
|
||||
@@ -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 { VampireZone } from "@elysium/types";
|
||||
|
||||
export const defaultVampireZones: Array<VampireZone> = [
|
||||
{
|
||||
description:
|
||||
"Ancient burial catacombs stretching deep beneath a forgotten city. The dead here did not rest peacefully — they were turned, bound, and set to guard secrets that no longer have owners. A good place to learn what it means to hunt.",
|
||||
emoji: "🪦",
|
||||
id: "vampire_haunted_catacombs",
|
||||
name: "Haunted Catacombs",
|
||||
status: "unlocked",
|
||||
unlockBossId: null,
|
||||
unlockQuestId: null,
|
||||
},
|
||||
{
|
||||
description:
|
||||
"A vast wetland soaked in centuries of spilled blood. The crimson mire never dries. The things that live here have adapted to drink the land itself, and they are not welcoming to rivals.",
|
||||
emoji: "🩸",
|
||||
id: "vampire_blood_mire",
|
||||
name: "Blood Mire",
|
||||
status: "locked",
|
||||
unlockBossId: "catacomb_lord",
|
||||
unlockQuestId: "catacombs_depths",
|
||||
},
|
||||
{
|
||||
description:
|
||||
"A fortress carved entirely from volcanic obsidian, its walls absorbing light and returning nothing. The soldiers who garrison it have not needed sleep or food in longer than anyone can remember. The Keep does not fall. It merely waits.",
|
||||
emoji: "🏯",
|
||||
id: "vampire_obsidian_keep",
|
||||
name: "Obsidian Keep",
|
||||
status: "locked",
|
||||
unlockBossId: "mire_sovereign",
|
||||
unlockQuestId: "mire_ritual",
|
||||
},
|
||||
{
|
||||
description:
|
||||
"The seat of an ancient vampire dynasty whose lineage predates recorded history. Every stone of the Crimson Citadel has been touched by blood magic. The court still convenes here, conducting business in a language of subtle power that outsiders rarely survive learning.",
|
||||
emoji: "🏰",
|
||||
id: "vampire_crimson_citadel",
|
||||
name: "Crimson Citadel",
|
||||
status: "locked",
|
||||
unlockBossId: "keep_overlord",
|
||||
unlockQuestId: "keep_conquest",
|
||||
},
|
||||
{
|
||||
description:
|
||||
"A court that exists entirely in shadow — its members, its politics, its location. Alliances here are written in whispers and sealed with betrayal. The most dangerous thing about the Shadow Court is that you never know you have lost until it is already over.",
|
||||
emoji: "🌑",
|
||||
id: "vampire_shadow_court",
|
||||
name: "Shadow Court",
|
||||
status: "locked",
|
||||
unlockBossId: "citadel_lord",
|
||||
unlockQuestId: "citadel_siege",
|
||||
},
|
||||
{
|
||||
description:
|
||||
"A charnel ground where plague vampires inter their dead — not out of respect, but to harvest what remains. The pestilence that festers here is not disease in any mortal sense. It is patient, intelligent, and perpetually hungry for new hosts.",
|
||||
emoji: "💀",
|
||||
id: "vampire_plague_ossuary",
|
||||
name: "Plague Ossuary",
|
||||
status: "locked",
|
||||
unlockBossId: "shadow_monarch",
|
||||
unlockQuestId: "shadow_ascension",
|
||||
},
|
||||
{
|
||||
description:
|
||||
"A desolate expanse where ancient vampire wars reduced everything to ash and cinder. Nothing grows here. The revenants who patrol it have forgotten what they were fighting for; they have not forgotten how to fight.",
|
||||
emoji: "🌋",
|
||||
id: "vampire_ashen_wastes",
|
||||
name: "Ashen Wastes",
|
||||
status: "locked",
|
||||
unlockBossId: "ossuary_overlord",
|
||||
unlockQuestId: "ossuary_purification",
|
||||
},
|
||||
{
|
||||
description:
|
||||
"An inescapable prison built to contain the most dangerous vampires ever captured. The wards that hold them were set by a power long since dead, and they are beginning to fade. The prisoners have had centuries to plan their response.",
|
||||
emoji: "⛓️",
|
||||
id: "vampire_iron_gaol",
|
||||
name: "The Iron Gaol",
|
||||
status: "locked",
|
||||
unlockBossId: "wastes_warden",
|
||||
unlockQuestId: "ash_domination",
|
||||
},
|
||||
{
|
||||
description:
|
||||
"A sunken vale where the boundary between the living world and the shadow-realm grows thin. The creatures born here are neither fully present nor entirely absent — half-real entities that flicker in and out of visibility, leaving cold air and blood in their wake.",
|
||||
emoji: "🕯️",
|
||||
id: "vampire_veilborn_hollow",
|
||||
name: "Veilborn Hollow",
|
||||
status: "locked",
|
||||
unlockBossId: "gaol_master",
|
||||
unlockQuestId: "gaol_liberation",
|
||||
},
|
||||
{
|
||||
description:
|
||||
"An endless expanse of fog-shrouded moorland where the moon has not risen in generations. The things that hunt here have evolved to navigate by blood-scent alone. The moor remembers every predator that has ever walked its surface.",
|
||||
emoji: "🌫️",
|
||||
id: "vampire_moonless_moor",
|
||||
name: "Moonless Moor",
|
||||
status: "locked",
|
||||
unlockBossId: "veilborn_herald",
|
||||
unlockQuestId: "veil_mastery",
|
||||
},
|
||||
{
|
||||
description:
|
||||
"A vast necropolis built atop a flooded underground sea. The crypts stretch downward into pitch-black water, and the things sealed in the deepest chambers have been there since before the city above them was built. They are waiting for the water to recede.",
|
||||
emoji: "🌊",
|
||||
id: "vampire_sunken_crypt",
|
||||
name: "The Sunken Crypt",
|
||||
status: "locked",
|
||||
unlockBossId: "moonless_warden",
|
||||
unlockQuestId: "moor_conquest",
|
||||
},
|
||||
{
|
||||
description:
|
||||
"A temple that was once a place of worship, now systematically stripped of every symbol, every relic, every remnant of its original purpose. The desecrators who occupy it did not destroy these things out of malice. They needed the space for something worse.",
|
||||
emoji: "⛪",
|
||||
id: "vampire_desecrated_sanctum",
|
||||
name: "Desecrated Sanctum",
|
||||
status: "locked",
|
||||
unlockBossId: "crypt_ancient",
|
||||
unlockQuestId: "sunken_conquest",
|
||||
},
|
||||
{
|
||||
description:
|
||||
"A range of jagged peaks where great winged predators nest and hunt. The updrafts here carry the scent of blood from miles away. The oldest residents have been here so long that the mountains have shaped themselves around them.",
|
||||
emoji: "🦅",
|
||||
id: "vampire_carrion_peaks",
|
||||
name: "Carrion Peaks",
|
||||
status: "locked",
|
||||
unlockBossId: "sanctum_sovereign",
|
||||
unlockQuestId: "sanctum_subjugation",
|
||||
},
|
||||
{
|
||||
description:
|
||||
"An impossible spire of crystallised blood that rises from the earth with no natural explanation. The architecture inside follows no logic familiar to mortal builders — rooms that don't connect to the rooms above them, staircases that lead to walls, windows that look into other windows. It was built this way deliberately.",
|
||||
emoji: "🗼",
|
||||
id: "vampire_bloodspire",
|
||||
name: "The Bloodspire",
|
||||
status: "locked",
|
||||
unlockBossId: "carrion_lord",
|
||||
unlockQuestId: "peaks_conquest",
|
||||
},
|
||||
{
|
||||
description:
|
||||
"A region where time moves strangely — not stopped, but reluctant. Vampires who spend too long here find that their memories of the past and their anticipation of the future begin to blur together. Only the present moment retains its edges. The shroud does not let go easily.",
|
||||
emoji: "⏳",
|
||||
id: "vampire_shroud_of_eternity",
|
||||
name: "Shroud of Eternity",
|
||||
status: "locked",
|
||||
unlockBossId: "bloodspire_tyrant",
|
||||
unlockQuestId: "spire_conquest",
|
||||
},
|
||||
{
|
||||
description:
|
||||
"An underground treasury sealed by a vampire lord who believed the only way to keep something safe was to make retrieving it more dangerous than it was worth. They were correct. Every soul who has broken in has paid the price. The vault keeps everything it takes.",
|
||||
emoji: "🔒",
|
||||
id: "vampire_abyssal_vault",
|
||||
name: "The Abyssal Vault",
|
||||
status: "locked",
|
||||
unlockBossId: "eternal_sovereign",
|
||||
unlockQuestId: "shroud_conquest",
|
||||
},
|
||||
{
|
||||
description:
|
||||
"The seat of the most ancient vampire intelligence network in existence. Nothing that happens in the vampire world goes unreported here. The Court of Whispers does not conduct violence — it simply arranges for others to conduct it at the optimal moment.",
|
||||
emoji: "🕊️",
|
||||
id: "vampire_court_of_whispers",
|
||||
name: "Court of Whispers",
|
||||
status: "locked",
|
||||
unlockBossId: "abyssal_warden",
|
||||
unlockQuestId: "vault_conquest",
|
||||
},
|
||||
{
|
||||
description:
|
||||
"The place where the vampire world ends — or rather, where it keeps going into something that has no name. The Eternal Abyss is not empty. It is full of things that predate the first vampire, the first turning, the first death. They are older than the concept of hunger, and they are always hungry.",
|
||||
emoji: "🌌",
|
||||
id: "vampire_eternal_abyss",
|
||||
name: "The Eternal Abyss",
|
||||
status: "locked",
|
||||
unlockBossId: "court_sovereign",
|
||||
unlockQuestId: "court_conquest",
|
||||
},
|
||||
];
|
||||
@@ -26,7 +26,7 @@ import { defaultGoddessExplorationAreas } from "../data/goddessExplorations.js";
|
||||
import { defaultGoddessQuests } from "../data/goddessQuests.js";
|
||||
import { defaultGoddessUpgrades } from "../data/goddessUpgrades.js";
|
||||
import { defaultGoddessZones } from "../data/goddessZones.js";
|
||||
import { initialGameState } from "../data/initialState.js";
|
||||
import { initialGameState, initialGoddessState } from "../data/initialState.js";
|
||||
import { defaultQuests } from "../data/quests.js";
|
||||
import { defaultRecipes } from "../data/recipes.js";
|
||||
import { currentSchemaVersion } from "../data/schemaVersion.js";
|
||||
@@ -1271,6 +1271,64 @@ debugRouter.post("/sync-new-content", async(context) => {
|
||||
}
|
||||
});
|
||||
|
||||
debugRouter.post("/grant-apotheosis", async(context) => {
|
||||
try {
|
||||
const discordId = context.get("discordId");
|
||||
|
||||
const record = await prisma.gameState.findUnique({ where: { discordId } });
|
||||
if (!record) {
|
||||
return context.json({ error: "No save found" }, 404);
|
||||
}
|
||||
|
||||
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Prisma returns JsonValue; cast to GameState */
|
||||
const state = record.state as GameState;
|
||||
|
||||
const updatedState: GameState
|
||||
= (state.apotheosis?.count ?? 0) >= 1
|
||||
? state
|
||||
: {
|
||||
...state,
|
||||
apotheosis: { count: 1 },
|
||||
goddess: initialGoddessState(),
|
||||
};
|
||||
|
||||
if (updatedState !== state) {
|
||||
const now = Date.now();
|
||||
await prisma.gameState.update({
|
||||
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Prisma requires object */
|
||||
data: { state: updatedState as object, updatedAt: now },
|
||||
where: { discordId },
|
||||
});
|
||||
}
|
||||
|
||||
const secret = process.env.ANTI_CHEAT_SECRET;
|
||||
const signature
|
||||
= secret === undefined
|
||||
? undefined
|
||||
: computeHmac(JSON.stringify(updatedState), secret);
|
||||
|
||||
return context.json({
|
||||
currentSchemaVersion: currentSchemaVersion,
|
||||
loginBonus: null,
|
||||
loginStreak: 0,
|
||||
offlineEssence: 0,
|
||||
offlineGold: 0,
|
||||
offlineSeconds: 0,
|
||||
schemaOutdated: false,
|
||||
signature: signature,
|
||||
state: updatedState,
|
||||
});
|
||||
} catch (error) {
|
||||
void logger.error(
|
||||
"debug_grant_apotheosis",
|
||||
error instanceof Error
|
||||
? error
|
||||
: new Error(String(error)),
|
||||
);
|
||||
return context.json({ error: "Internal server error" }, 500);
|
||||
}
|
||||
});
|
||||
|
||||
debugRouter.post("/hard-reset", async(context) => {
|
||||
try {
|
||||
const discordId = context.get("discordId");
|
||||
|
||||
Reference in New Issue
Block a user