fix: correct quest combat power requirements for SM, VD, and AV (#90)
CI / Lint, Build & Test (push) Successful in 1m10s
Security Scan and Upload / Security & DefectDojo Upload (push) Successful in 1m11s

## Summary

Fixes #85. Quest combat power requirements for Shadow Marshes, Volcanic Depths, and Astral Void were all drastically too low, breaking the zone progression curve.

### Root Cause

All three zones appear to have had their `combatPowerRequired` values entered at the wrong magnitude. Shadow Marshes was using K values where M was intended; Volcanic Depths and Astral Void were similarly off, resulting in later zones being trivially easier than earlier ones.

### Changes

| Zone | Before | After |
|---|---|---|
| Shadow Marshes | 5K / 20K / 80K / 300K | 5M / 20M / 80M / 300M |
| Volcanic Depths | 2M / 8M / 30M / 120M | 1.2B / 4.8B / 18B / 72B |
| Astral Void | 50M / 200M / 800M / 3B | 300B / 1.2T / 4.8T / 18T |

### Progression

All values now maintain a consistent ~×4 multiplier within each zone and ~×4 jump between zones, matching the established pattern from Verdant Vale through Frozen Peaks.

 This PR was created with help from Hikari~ 🌸

Reviewed-on: #90
Co-authored-by: Hikari <hikari@nhcarrigan.com>
Co-committed-by: Hikari <hikari@nhcarrigan.com>
This commit was merged in pull request #90.
This commit is contained in:
2026-03-20 09:19:16 -07:00
committed by Naomi Carrigan
parent 621f594018
commit 2236d1dc9f
+13 -12
View File
@@ -141,7 +141,7 @@ export const defaultQuests: Array<Quest> = [
},
// ── Shadow Marshes ────────────────────────────────────────────────────────
{
combatPowerRequired: 5000,
combatPowerRequired: 5_000_000,
description:
"A cursed lake shrouded in permanent twilight. Strange energies pulse beneath its surface.",
durationSeconds: 45 * 60,
@@ -156,7 +156,7 @@ export const defaultQuests: Array<Quest> = [
zoneId: "shadow_marshes",
},
{
combatPowerRequired: 20_000,
combatPowerRequired: 20_000_000,
description:
"Deep in the marshes, a coven of swamp witches performs rites that twist the very land. Their power must be broken.",
durationSeconds: 90 * 60,
@@ -171,7 +171,7 @@ export const defaultQuests: Array<Quest> = [
zoneId: "shadow_marshes",
},
{
combatPowerRequired: 80_000,
combatPowerRequired: 80_000_000,
description:
"An ancient temple half-submerged in black water, its altars still humming with the power of a god long since departed.",
durationSeconds: 2 * 60 * 60,
@@ -180,6 +180,7 @@ export const defaultQuests: Array<Quest> = [
prerequisiteIds: [ "witch_coven" ],
rewards: [
{ amount: 2_000_000, type: "gold" },
{ amount: 1500, type: "essence" },
{ amount: 75, type: "crystals" },
{ targetId: "knight_1", type: "upgrade" },
],
@@ -187,7 +188,7 @@ export const defaultQuests: Array<Quest> = [
zoneId: "shadow_marshes",
},
{
combatPowerRequired: 300_000,
combatPowerRequired: 300_000_000,
description:
"A city that died overnight, its streets still thick with something no healer can identify. Treasures lie unclaimed among the bones.",
durationSeconds: 3 * 60 * 60,
@@ -253,7 +254,7 @@ export const defaultQuests: Array<Quest> = [
},
// ── Volcanic Depths ───────────────────────────────────────────────────────
{
combatPowerRequired: 2_000_000,
combatPowerRequired: 1_200_000_000,
description:
"A river of molten rock that flows without end through the volcanic tunnels. Something valuable gleams in the depths.",
durationSeconds: 3 * 60 * 60,
@@ -268,7 +269,7 @@ export const defaultQuests: Array<Quest> = [
zoneId: "volcanic_depths",
},
{
combatPowerRequired: 8_000_000,
combatPowerRequired: 4_800_000_000,
description:
"A vast shrine where fire elementals perform rituals that shake the mountains. Whatever they worship, it has answered.",
durationSeconds: 5 * 60 * 60,
@@ -284,7 +285,7 @@ export const defaultQuests: Array<Quest> = [
zoneId: "volcanic_depths",
},
{
combatPowerRequired: 30_000_000,
combatPowerRequired: 18_000_000_000,
description:
"Kilometres of tunnels filled with rivers of fire and creatures born from the earth's core. The heat alone should kill you. Somehow, it won't.",
durationSeconds: 7 * 60 * 60,
@@ -300,7 +301,7 @@ export const defaultQuests: Array<Quest> = [
zoneId: "volcanic_depths",
},
{
combatPowerRequired: 120_000_000,
combatPowerRequired: 72_000_000_000,
description:
"The oldest forge in existence, where the fire elementals crafted weapons for gods. Its secrets could revolutionise your guild's arsenal.",
durationSeconds: 10 * 60 * 60,
@@ -317,7 +318,7 @@ export const defaultQuests: Array<Quest> = [
},
// ── Astral Void ───────────────────────────────────────────────────────────
{
combatPowerRequired: 50_000_000,
combatPowerRequired: 300_000_000_000,
description:
"A tear in reality itself. What lies beyond defies description — but the power within is unlike anything of this world.",
durationSeconds: 4 * 60 * 60,
@@ -332,7 +333,7 @@ export const defaultQuests: Array<Quest> = [
zoneId: "astral_void",
},
{
combatPowerRequired: 200_000_000,
combatPowerRequired: 1_200_000_000_000,
description:
"A field of dead stars, each one larger than a planet, each one cold and silent where once they burned with the light of creation.",
durationSeconds: 8 * 60 * 60,
@@ -348,7 +349,7 @@ export const defaultQuests: Array<Quest> = [
zoneId: "astral_void",
},
{
combatPowerRequired: 800_000_000,
combatPowerRequired: 4_800_000_000_000,
description:
"The space between realities, where the rules that govern your world do not apply. Time is meaningless here. Power is everything.",
durationSeconds: 12 * 60 * 60,
@@ -364,7 +365,7 @@ export const defaultQuests: Array<Quest> = [
zoneId: "astral_void",
},
{
combatPowerRequired: 3_000_000_000,
combatPowerRequired: 18_000_000_000_000,
description:
"There is nothing beyond this point. Only the greatest guild in the history of all existence could reach here — and you have.",
durationSeconds: 24 * 60 * 60,