feat(rogue): 调整刷怪配置,减少数量并提升质量

- 将最大同屏怪物数量从 50 减少到 10,追求更高质量的战斗体验
- 降低刷怪频率和单次生成上限,适配新的怪物总量
- 为平衡收益,将怪物属性、金币和经验产出均提升 5 倍
- 调整基础预算和出怪间隔以匹配新的配置策略
This commit is contained in:
walkpan
2026-01-29 23:32:31 +08:00
parent bff20f0ded
commit 4e28ea6859

View File

@@ -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));
}
// 怪物消耗点数配置