diff --git a/assets/script/game/map/RogueConfig.ts b/assets/script/game/map/RogueConfig.ts index 83e28157..297755ac 100644 --- a/assets/script/game/map/RogueConfig.ts +++ b/assets/script/game/map/RogueConfig.ts @@ -92,14 +92,14 @@ export interface IRogueGlobalConfig { * 默认配置 */ export const DefaultRogueConfig: IRogueGlobalConfig = { - maxMonsterCount: 50, // 默认同屏50只 + maxMonsterCount: 10, // 默认同屏10只 (原25) - 追求极致质量 spawnLogicInterval: 1.0, // 每秒计算一次 - spawnInterval: 0.6, // 队列出怪间隔0.6秒 - baseBudget: 5.0, // 基础预算 + spawnInterval: 2.5, // 队列出怪间隔2.5秒 (原1.2) - 降低频率适配总量 + baseBudget: 1.0, // 基础预算 (原2.5) - 降低产出适配总量 timeDifficultyFactor: 0.5, // 每分钟增加50%预算 survivalHpThreshold: 0.4, // 40%血量触发保护 survivalBudgetMultiplier: 0.7, // 保护时预算打7折 - maxSpawnPerLogic: 5 // 单次最多生成5只 + maxSpawnPerLogic: 2 // 单次最多生成2只 (原3) }; // 当前配置实例 @@ -258,6 +258,9 @@ export function getMonAttr(stage: number, uuid: number, monType: MonType = MonTy // 计算波次因子 const waveFactor = calculateWaveFactor(stage, timeInSeconds); + // 质量系数:数量减至10(原50的1/5),质量x5 + const qualityRatio = 5.0; + // 根据怪物类型应用额外的倍率 let typeMultiplier = 1.0; if (monType === MonType.ELITE) { @@ -266,14 +269,14 @@ export function getMonAttr(stage: number, uuid: number, monType: MonType = MonTy typeMultiplier = 5.0; // Boss 5倍属性 } - // 应用不同的成长类型 - const hp = applyGrowthFormula(baseMonster.hp, waveFactor, GrowthType.EXPONENTIAL) * typeMultiplier; - const ap = applyGrowthFormula(baseMonster.ap, waveFactor, GrowthType.LINEAR) * typeMultiplier; + // 应用不同的成长类型 (应用质量系数) + const hp = applyGrowthFormula(baseMonster.hp, waveFactor, GrowthType.EXPONENTIAL) * typeMultiplier * qualityRatio; + const ap = applyGrowthFormula(baseMonster.ap, waveFactor, GrowthType.LINEAR) * typeMultiplier * qualityRatio; const speed = applyGrowthFormula(baseMonster.speed, waveFactor, GrowthType.LOGARITHMIC); - // MP和DEF使用线性成长 - const mp = applyGrowthFormula(baseMonster.mp, waveFactor, GrowthType.LINEAR); - const def = applyGrowthFormula(baseMonster.def, waveFactor, GrowthType.LINEAR) * typeMultiplier; + // MP和DEF使用线性成长 (应用质量系数) + const mp = applyGrowthFormula(baseMonster.mp, waveFactor, GrowthType.LINEAR) * qualityRatio; + const def = applyGrowthFormula(baseMonster.def, waveFactor, GrowthType.LINEAR) * typeMultiplier * qualityRatio; return { hp: Math.floor(hp), @@ -367,7 +370,8 @@ export function calculateMonsterGold(uuid: number, level: number, type: MonType) // 公式: 基础(10) * 类型 * 危险值 + 等级加成 const baseGold = 10; - let gold = Math.floor(baseGold * type_ratio * danger_ratio + level); + // 数量减至1/5,收益x5 + let gold = Math.floor((baseGold * type_ratio * danger_ratio + level) * 5); return gold; } @@ -384,7 +388,8 @@ export function calculateMonsterExp(uuid: number, level: number): number { // 这样设计是为了对抗升级所需经验的指数增长 (1.2^L),同时平衡刷怪数量的线性增长 // T=0 (Lv1): Unit Exp ≈ 0.8 // T=13 (Lv14): Unit Exp ≈ 0.8 * 1.1^13 ≈ 2.76 - return Math.max(1, Math.floor(cost * 0.8 * Math.pow(1.1, level - 1))); + // 数量减至1/5,收益x5 + return Math.max(1, Math.floor(cost * 0.8 * Math.pow(1.1, level - 1) * 5)); } // 怪物消耗点数配置