generated from nhcarrigan/template
feat: comprehensive balance pass (#239)
## Summary Working through all 15 open balance tickets in a coordinated multi-pass approach. ### Pass 1 — Quest failure rates (closes #172) - Capped all zone quest failure chances at 15% (down from up to 40%) - Proportional scaling preserved (harder zones still fail more than easier ones) ### Pass 2 — Crystal economy (closes #165, #173, #215) - Added `crystal_pulse` (3,000 crystals), `crystal_surge` (20,000), `crystal_tempest` (150,000) upgrades to fill the dead zone between 600 and 2M crystal sinks - Bumped `click_deity`, `prestige_master`, and `prestige_legend` achievement crystal rewards (5K→15K, 5K→15K, 25K→75K) - Added crystal rewards to `first_steps` (+5) and `goblin_camp` (+10) early quests ### Pass 3 — Runestone/prestige loop (closes #166, #170) - Bumped `runestonesPerPrestigeLevel` from 15 → 20 (~33% yield increase for mid-game runs) - Reduced `income_10` cost from 22,500 → 15,000 and `income_11` from 60,000 → 35,000 - Kept client/server parity: `runestonesPerPrestigeLevelClient` in tick.ts updated to match ### Pass 4 — Quest content (#175, #178) - Both already resolved in commit666a5b2: quests now reach 5e141 CP across reality_forge, cosmic_maelstrom, primeval_sanctum, and the_absolute — fully covering P60–P212 ### Pass 5 — Daily challenges (closes #167) - Added `crafting` as a new `DailyChallengeType` - Added 3 crafting challenge templates (craft 1/2/3 recipes) - Changed generation to guarantee: 1 clicks + 1 crafting + 1 from progression pool - Added crafting challenge tracking in `craft.ts` (awards crystals on recipe craft) - Stuck players now have 2/3 daily challenges always completable ### Pass 6 — Transcendence costs (#179) - Already resolved in commit666a5b2: echo meta costs are 15/45/100 (was 25/75/200) ### Also closed as stale - #171 (milestone bonus already quadratic) - #174 (production multiplier already 1.3^n) - #176 (expanse_sovereign HP already at 3e39) - #177 (recipe costs already in expected range) - #178 (post-absolute quests already present) - #179 (echo meta costs already reduced) ✨ This PR was created with help from Hikari~ 🌸 Reviewed-on: #239 Co-authored-by: Hikari <hikari@nhcarrigan.com> Co-committed-by: Hikari <hikari@nhcarrigan.com>
This commit was merged in pull request #239.
This commit is contained in:
@@ -11,6 +11,7 @@ import { Hono } from "hono";
|
||||
import { defaultRecipes } from "../data/recipes.js";
|
||||
import { prisma } from "../db/client.js";
|
||||
import { authMiddleware } from "../middleware/auth.js";
|
||||
import { updateChallengeProgress } from "../services/dailyChallenges.js";
|
||||
import { logger } from "../services/logger.js";
|
||||
import type { HonoEnvironment } from "../types/hono.js";
|
||||
import type {
|
||||
@@ -138,6 +139,16 @@ craftRouter.post("/", async(context) => {
|
||||
state.exploration.craftedCombatMultiplier
|
||||
= updatedMultipliers.craftedCombatMultiplier;
|
||||
|
||||
if (state.dailyChallenges !== undefined) {
|
||||
const { updatedChallenges, crystalsAwarded } = updateChallengeProgress(
|
||||
state.dailyChallenges,
|
||||
"crafting",
|
||||
1,
|
||||
);
|
||||
state.dailyChallenges = updatedChallenges;
|
||||
state.resources.crystals = state.resources.crystals + crystalsAwarded;
|
||||
}
|
||||
|
||||
await prisma.gameState.update({
|
||||
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions -- Prisma requires object */
|
||||
data: { state: state as object, updatedAt: Date.now() },
|
||||
|
||||
Reference in New Issue
Block a user