generated from nhcarrigan/template
balance: comprehensive game balance pass (#103-#123) (#124)
## Summary Comprehensive balance pass addressing 20 tickets (#103–#122) plus one audit-discovered fix (#123), ensuring no player soft-locks and aligning all content counts with achievements and progression milestones. ### Changes - **Equipment** (#103–#111): Differentiated all stat pairs so every piece has a unique bonus combination; added missing stats to `eternal_flame` and increased `eternal_prism` multiplier to justify cost tier - **Recipes** (#112–#115): Added 4 cross-zone crafting recipes requiring materials from multiple zones to incentivise exploration breadth - **Achievements** (#116–#118): Aligned `fully_equipped` (40→65), `quest_eternal` (72→95), and `boss_eternal` (60→72) thresholds with actual content counts; updated `devourer_slayer` description - **Quest CP scaling** (#120–#122): Verified and corrected combat power requirements across all zones to follow consistent 4×/4× progression pattern - **Zone file ordering** (#123): Swapped Frozen Peaks and Shadow Marshes quest sections so file order matches the actual unlock chain (no gameplay change) ### Tickets Closed Closes #103 Closes #104 Closes #105 Closes #106 Closes #107 Closes #108 Closes #109 Closes #110 Closes #111 Closes #112 Closes #113 Closes #114 Closes #115 Closes #116 Closes #117 Closes #118 Closes #120 Closes #121 Closes #122 Closes #123 ✨ This PR was created with help from Hikari~ 🌸 Reviewed-on: #124 Co-authored-by: Hikari <hikari@nhcarrigan.com> Co-committed-by: Hikari <hikari@nhcarrigan.com>
This commit was merged in pull request #124.
This commit is contained in:
+44
-44
@@ -121,17 +121,17 @@ export const defaultBosses: Array<Boss> = [
|
||||
},
|
||||
// ── Shadow Marshes ────────────────────────────────────────────────────────
|
||||
{
|
||||
bountyRunestones: 5,
|
||||
crystalReward: 30,
|
||||
currentHp: 80_000,
|
||||
damagePerSecond: 80,
|
||||
bountyRunestones: 20,
|
||||
crystalReward: 700,
|
||||
currentHp: 6_000_000,
|
||||
damagePerSecond: 1200,
|
||||
description:
|
||||
"She has hexed villages for three centuries from her hut on the black water. Her curse-weaving is second to none — but so is the bounty on her head.",
|
||||
equipmentRewards: [],
|
||||
essenceReward: 800,
|
||||
goldReward: 800_000,
|
||||
essenceReward: 30_000,
|
||||
goldReward: 80_000_000,
|
||||
id: "swamp_witch",
|
||||
maxHp: 80_000,
|
||||
maxHp: 6_000_000,
|
||||
name: "Morgantha the Swamp Witch",
|
||||
prestigeRequirement: 0,
|
||||
status: "locked",
|
||||
@@ -139,17 +139,17 @@ export const defaultBosses: Array<Boss> = [
|
||||
zoneId: "shadow_marshes",
|
||||
},
|
||||
{
|
||||
bountyRunestones: 8,
|
||||
crystalReward: 80,
|
||||
currentHp: 300_000,
|
||||
damagePerSecond: 180,
|
||||
bountyRunestones: 25,
|
||||
crystalReward: 1500,
|
||||
currentHp: 12_000_000,
|
||||
damagePerSecond: 2400,
|
||||
description:
|
||||
"A bloated, rotting horror that spreads pestilence wherever it walks. Entire kingdoms have fallen to the disease it carries. Yours will not.",
|
||||
equipmentRewards: [ "runestone_amulet" ],
|
||||
essenceReward: 2000,
|
||||
goldReward: 3_000_000,
|
||||
essenceReward: 60_000,
|
||||
goldReward: 180_000_000,
|
||||
id: "plague_lord",
|
||||
maxHp: 300_000,
|
||||
maxHp: 12_000_000,
|
||||
name: "The Plague Lord",
|
||||
prestigeRequirement: 0,
|
||||
status: "locked",
|
||||
@@ -157,17 +157,17 @@ export const defaultBosses: Array<Boss> = [
|
||||
zoneId: "shadow_marshes",
|
||||
},
|
||||
{
|
||||
bountyRunestones: 10,
|
||||
crystalReward: 150,
|
||||
currentHp: 800_000,
|
||||
damagePerSecond: 350,
|
||||
bountyRunestones: 30,
|
||||
crystalReward: 3000,
|
||||
currentHp: 20_000_000,
|
||||
damagePerSecond: 4000,
|
||||
description:
|
||||
"An eldritch leviathan that lurks in the deepest part of the marshes, older than the gods themselves. Its tentacles have dragged ships — and armies — into the mire.",
|
||||
equipmentRewards: [ "crystal_shard" ],
|
||||
essenceReward: 4000,
|
||||
goldReward: 8_000_000,
|
||||
essenceReward: 100_000,
|
||||
goldReward: 350_000_000,
|
||||
id: "mud_kraken",
|
||||
maxHp: 800_000,
|
||||
maxHp: 20_000_000,
|
||||
name: "The Mud Kraken",
|
||||
prestigeRequirement: 0,
|
||||
status: "locked",
|
||||
@@ -231,17 +231,17 @@ export const defaultBosses: Array<Boss> = [
|
||||
},
|
||||
// ── Volcanic Depths ───────────────────────────────────────────────────────
|
||||
{
|
||||
bountyRunestones: 12,
|
||||
crystalReward: 150,
|
||||
currentHp: 1_000_000,
|
||||
damagePerSecond: 400,
|
||||
bountyRunestones: 32,
|
||||
crystalReward: 4000,
|
||||
currentHp: 25_000_000,
|
||||
damagePerSecond: 5000,
|
||||
description:
|
||||
"Born from the first volcanic eruption the world ever knew. It exists purely to consume, and your guild looks like the finest kindling it has seen in millennia.",
|
||||
equipmentRewards: [ "flame_lance" ],
|
||||
essenceReward: 6000,
|
||||
goldReward: 10_000_000,
|
||||
essenceReward: 150_000,
|
||||
goldReward: 500_000_000,
|
||||
id: "fire_elemental",
|
||||
maxHp: 1_000_000,
|
||||
maxHp: 25_000_000,
|
||||
name: "The Ancient Fire Elemental",
|
||||
prestigeRequirement: 0,
|
||||
status: "locked",
|
||||
@@ -249,17 +249,17 @@ export const defaultBosses: Array<Boss> = [
|
||||
zoneId: "volcanic_depths",
|
||||
},
|
||||
{
|
||||
bountyRunestones: 18,
|
||||
crystalReward: 400,
|
||||
currentHp: 4_000_000,
|
||||
damagePerSecond: 1000,
|
||||
bountyRunestones: 40,
|
||||
crystalReward: 8000,
|
||||
currentHp: 60_000_000,
|
||||
damagePerSecond: 12_000,
|
||||
description:
|
||||
"Half-giant, half-living volcano, this colossus was created by the fire elementals to guard their greatest forge. Every strike from its fists sends shockwaves through the earth.",
|
||||
equipmentRewards: [ "volcanic_plate" ],
|
||||
essenceReward: 15_000,
|
||||
goldReward: 40_000_000,
|
||||
essenceReward: 300_000,
|
||||
goldReward: 1_000_000_000,
|
||||
id: "magma_titan",
|
||||
maxHp: 4_000_000,
|
||||
maxHp: 60_000_000,
|
||||
name: "The Magma Titan",
|
||||
prestigeRequirement: 0,
|
||||
status: "locked",
|
||||
@@ -267,17 +267,17 @@ export const defaultBosses: Array<Boss> = [
|
||||
zoneId: "volcanic_depths",
|
||||
},
|
||||
{
|
||||
bountyRunestones: 25,
|
||||
crystalReward: 800,
|
||||
currentHp: 12_000_000,
|
||||
damagePerSecond: 2500,
|
||||
bountyRunestones: 50,
|
||||
crystalReward: 15_000,
|
||||
currentHp: 150_000_000,
|
||||
damagePerSecond: 30_000,
|
||||
description:
|
||||
"The apex predator of the volcanic chain — a being of pure flame that has died and reborn itself more times than recorded history. This time, it will not rise again.",
|
||||
equipmentRewards: [ "eternal_flame" ],
|
||||
essenceReward: 40_000,
|
||||
goldReward: 120_000_000,
|
||||
essenceReward: 600_000,
|
||||
goldReward: 2_000_000_000,
|
||||
id: "phoenix_lord",
|
||||
maxHp: 12_000_000,
|
||||
maxHp: 150_000_000,
|
||||
name: "The Phoenix Lord",
|
||||
prestigeRequirement: 0,
|
||||
status: "locked",
|
||||
@@ -1120,7 +1120,7 @@ export const defaultBosses: Array<Boss> = [
|
||||
name: "The Storm Colossus",
|
||||
prestigeRequirement: 51,
|
||||
status: "locked",
|
||||
upgradeRewards: [ "cosmos_knight_1" ],
|
||||
upgradeRewards: [],
|
||||
zoneId: "cosmic_maelstrom",
|
||||
},
|
||||
{
|
||||
@@ -1318,7 +1318,7 @@ export const defaultBosses: Array<Boss> = [
|
||||
id: "the_absolute_one",
|
||||
maxHp: 2e145,
|
||||
name: "The Absolute One",
|
||||
prestigeRequirement: 90,
|
||||
prestigeRequirement: 88,
|
||||
status: "locked",
|
||||
upgradeRewards: [],
|
||||
zoneId: "the_absolute",
|
||||
|
||||
Reference in New Issue
Block a user