feat(rogue): 调整刷怪配置,减少数量并提升质量
- 将最大同屏怪物数量从 50 减少到 10,追求更高质量的战斗体验 - 降低刷怪频率和单次生成上限,适配新的怪物总量 - 为平衡收益,将怪物属性、金币和经验产出均提升 5 倍 - 调整基础预算和出怪间隔以匹配新的配置策略
This commit is contained in:
@@ -92,14 +92,14 @@ export interface IRogueGlobalConfig {
|
|||||||
* 默认配置
|
* 默认配置
|
||||||
*/
|
*/
|
||||||
export const DefaultRogueConfig: IRogueGlobalConfig = {
|
export const DefaultRogueConfig: IRogueGlobalConfig = {
|
||||||
maxMonsterCount: 50, // 默认同屏50只
|
maxMonsterCount: 10, // 默认同屏10只 (原25) - 追求极致质量
|
||||||
spawnLogicInterval: 1.0, // 每秒计算一次
|
spawnLogicInterval: 1.0, // 每秒计算一次
|
||||||
spawnInterval: 0.6, // 队列出怪间隔0.6秒
|
spawnInterval: 2.5, // 队列出怪间隔2.5秒 (原1.2) - 降低频率适配总量
|
||||||
baseBudget: 5.0, // 基础预算
|
baseBudget: 1.0, // 基础预算 (原2.5) - 降低产出适配总量
|
||||||
timeDifficultyFactor: 0.5, // 每分钟增加50%预算
|
timeDifficultyFactor: 0.5, // 每分钟增加50%预算
|
||||||
survivalHpThreshold: 0.4, // 40%血量触发保护
|
survivalHpThreshold: 0.4, // 40%血量触发保护
|
||||||
survivalBudgetMultiplier: 0.7, // 保护时预算打7折
|
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);
|
const waveFactor = calculateWaveFactor(stage, timeInSeconds);
|
||||||
|
|
||||||
|
// 质量系数:数量减至10(原50的1/5),质量x5
|
||||||
|
const qualityRatio = 5.0;
|
||||||
|
|
||||||
// 根据怪物类型应用额外的倍率
|
// 根据怪物类型应用额外的倍率
|
||||||
let typeMultiplier = 1.0;
|
let typeMultiplier = 1.0;
|
||||||
if (monType === MonType.ELITE) {
|
if (monType === MonType.ELITE) {
|
||||||
@@ -266,14 +269,14 @@ export function getMonAttr(stage: number, uuid: number, monType: MonType = MonTy
|
|||||||
typeMultiplier = 5.0; // Boss 5倍属性
|
typeMultiplier = 5.0; // Boss 5倍属性
|
||||||
}
|
}
|
||||||
|
|
||||||
// 应用不同的成长类型
|
// 应用不同的成长类型 (应用质量系数)
|
||||||
const hp = applyGrowthFormula(baseMonster.hp, waveFactor, GrowthType.EXPONENTIAL) * typeMultiplier;
|
const hp = applyGrowthFormula(baseMonster.hp, waveFactor, GrowthType.EXPONENTIAL) * typeMultiplier * qualityRatio;
|
||||||
const ap = applyGrowthFormula(baseMonster.ap, waveFactor, GrowthType.LINEAR) * typeMultiplier;
|
const ap = applyGrowthFormula(baseMonster.ap, waveFactor, GrowthType.LINEAR) * typeMultiplier * qualityRatio;
|
||||||
const speed = applyGrowthFormula(baseMonster.speed, waveFactor, GrowthType.LOGARITHMIC);
|
const speed = applyGrowthFormula(baseMonster.speed, waveFactor, GrowthType.LOGARITHMIC);
|
||||||
|
|
||||||
// MP和DEF使用线性成长
|
// MP和DEF使用线性成长 (应用质量系数)
|
||||||
const mp = applyGrowthFormula(baseMonster.mp, waveFactor, GrowthType.LINEAR);
|
const mp = applyGrowthFormula(baseMonster.mp, waveFactor, GrowthType.LINEAR) * qualityRatio;
|
||||||
const def = applyGrowthFormula(baseMonster.def, waveFactor, GrowthType.LINEAR) * typeMultiplier;
|
const def = applyGrowthFormula(baseMonster.def, waveFactor, GrowthType.LINEAR) * typeMultiplier * qualityRatio;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
hp: Math.floor(hp),
|
hp: Math.floor(hp),
|
||||||
@@ -367,7 +370,8 @@ export function calculateMonsterGold(uuid: number, level: number, type: MonType)
|
|||||||
|
|
||||||
// 公式: 基础(10) * 类型 * 危险值 + 等级加成
|
// 公式: 基础(10) * 类型 * 危险值 + 等级加成
|
||||||
const baseGold = 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;
|
return gold;
|
||||||
}
|
}
|
||||||
@@ -384,7 +388,8 @@ export function calculateMonsterExp(uuid: number, level: number): number {
|
|||||||
// 这样设计是为了对抗升级所需经验的指数增长 (1.2^L),同时平衡刷怪数量的线性增长
|
// 这样设计是为了对抗升级所需经验的指数增长 (1.2^L),同时平衡刷怪数量的线性增长
|
||||||
// T=0 (Lv1): Unit Exp ≈ 0.8
|
// T=0 (Lv1): Unit Exp ≈ 0.8
|
||||||
// T=13 (Lv14): Unit Exp ≈ 0.8 * 1.1^13 ≈ 2.76
|
// 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