refactor: 整理技能与战斗相关的配置与逻辑
1. 新增技能飞行距离配置项,支持自定义直线技能飞行距离 2. 调整英雄后退击退范围从30改为20 3. 重构击退逻辑,统一敌我双方的边界钳制处理 4. 优化Boss数值配置,固定基础面板为初始英雄2倍强度 5. 修正技能6006的动画资源引用为atk1 6. 调整近战英雄默认停火距离从80改为60 7. 更新注释文档与配置注释,优化代码可读性
This commit is contained in:
@@ -14,9 +14,10 @@
|
||||
* 3. RogueSpawningEngine - 生成引擎(基础属性 × 可调系数)
|
||||
*
|
||||
* 核心公式(基础属性 × 可调系数):
|
||||
* 怪物 hp = HeroInfo 基础hp × MON_HP_MUL(Boss 额外 × BOSS_HP_BONUS_MUL)
|
||||
* 怪物 ap = HeroInfo 基础ap × MON_AP_MUL
|
||||
* 怪物基础面板与 1 级英雄持平(近战镜像 hp300/ap22/cd1.8),默认系数校准为
|
||||
* 小怪 hp = HeroInfo 基础hp × MON_HP_MUL,小怪 ap = HeroInfo 基础ap × MON_AP_MUL
|
||||
* Boss 基础面板固定为初始英雄 2 倍强度(BOSS_BASE_HP/BOSS_BASE_AP),与小怪共用同一套系数,
|
||||
* 场上 Boss 恰好为小怪 2 倍强度(如需额外压场可调 BOSS_HP_BONUS_MUL)。
|
||||
* 小怪基础面板与 1 级英雄持平(近战镜像 hp300/ap22/cd1.8),默认系数校准为
|
||||
* 整场战斗(3 英雄 vs 4 小怪 + 1 Boss)双方对砍 ≈ WAVE_DURATION(30s)。
|
||||
* 手感微调只改 MON_HP_MUL / MON_AP_MUL / BOSS_HP_BONUS_MUL 三个系数即可。
|
||||
*/
|
||||
@@ -40,8 +41,14 @@ export const MON_HP_MUL = 2.6;
|
||||
/** 怪物攻击可调系数:最终 ap = HeroInfo 基础ap × MON_AP_MUL。
|
||||
* 0.9 使 4 小怪+1 Boss 的总 DPS ≈ 20,30s 恰好磨光 3 英雄总血量(≈600) */
|
||||
export const MON_AP_MUL = 0.9;
|
||||
/** Boss 血量额外加成(在 MON_HP_MUL 之上乘算,突出压场定位) */
|
||||
export const BOSS_HP_BONUS_MUL = 1.6;
|
||||
|
||||
/** Boss 基础面板 = 初始英雄基准(hp300/ap22)× 2 倍强度,
|
||||
* 不读取 Boss HeroInfo 的差异化高基础值,避免数值膨胀 */
|
||||
export const BOSS_BASE_HP = 600;
|
||||
export const BOSS_BASE_AP = 44;
|
||||
|
||||
/** Boss 血量额外加成(在 MON_HP_MUL 之上乘算,默认 1.0 表示不再额外膨胀,保留作压场微调旋钮) */
|
||||
export const BOSS_HP_BONUS_MUL = 1.0;
|
||||
/** 战斗超时(秒):超过后强制结算整局(残留怪销毁并扣留存分) */
|
||||
export const BATTLE_TIMEOUT = 90;
|
||||
|
||||
@@ -398,7 +405,8 @@ export class RogueSpawningEngine {
|
||||
monsters.push(this.makeBoss());
|
||||
}
|
||||
|
||||
// 属性缩放:基础属性 × 可调系数(Boss 血量额外加成),校准目标双方对砍 ≈ 30s
|
||||
// 属性缩放:基础属性 × 可调系数(Boss 基础面板已是英雄 2 倍,BOSS_HP_BONUS_MUL 默认 1.0),
|
||||
// 校准目标:Boss 场上强度恰为小怪 2 倍,双方对砍 ≈ 30s
|
||||
for (const m of monsters) {
|
||||
m.hp = Math.max(1, Math.round(m.hp * MON_HP_MUL * (m.isBoss ? BOSS_HP_BONUS_MUL : 1)));
|
||||
m.ap = Math.max(1, Math.round(m.ap * MON_AP_MUL));
|
||||
@@ -451,7 +459,7 @@ export class RogueSpawningEngine {
|
||||
return monsters;
|
||||
}
|
||||
|
||||
/** 生成 Boss(基础血量带最终战加成,属性随后由总强度框架统一缩放) */
|
||||
/** 生成 Boss(基础面板固定为初始英雄 2 倍强度,属性随后由 generateBossCombo 统一系数缩放) */
|
||||
private makeBoss(): GeneratedMonster {
|
||||
const isMeleeBoss = Math.random() < 0.5;
|
||||
const type = isMeleeBoss ? MonType.MeleeBoss : MonType.LongBoss;
|
||||
@@ -463,15 +471,11 @@ export class RogueSpawningEngine {
|
||||
}
|
||||
const uuid = uuids[Math.floor(Math.random() * uuids.length)];
|
||||
|
||||
const baseInfo = HeroInfo[uuid];
|
||||
const baseHp = baseInfo ? baseInfo.hp : 500;
|
||||
const baseAp = baseInfo ? baseInfo.ap : 30;
|
||||
|
||||
return {
|
||||
uuid,
|
||||
type,
|
||||
hp: Math.round(baseHp * BOSS_HP_BONUS_MUL),
|
||||
ap: baseAp,
|
||||
hp: BOSS_BASE_HP,
|
||||
ap: BOSS_BASE_AP,
|
||||
isBoss: true,
|
||||
spawnIndex: 0, // 占位值,由 generateBossCombo 统一分配
|
||||
batch: 0,
|
||||
|
||||
Reference in New Issue
Block a user