feat(rogue): 调整刷怪配置,减少数量并提升质量
- 将最大同屏怪物数量从 50 减少到 10,追求更高质量的战斗体验 - 降低刷怪频率和单次生成上限,适配新的怪物总量 - 为平衡收益,将怪物属性、金币和经验产出均提升 5 倍 - 调整基础预算和出怪间隔以匹配新的配置策略
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
// 怪物消耗点数配置
|
||||
|
||||
Reference in New Issue
Block a user