refactor(rogue): 重构肉鸽刷怪系统,新增动态难度与分批刷怪
1. 重构RogueConfig:替换旧强化系统为动态难度调节器,调整波次配置为20波通关,新增技能池与阵营适配 2. 优化刷怪逻辑:实现每波3批10秒间隔的分批刷怪,调整怪物上限为18只 3. 新增驻场技能支持:添加resolveFieldByLv处理等级化驻场技能,扩展FieldSkillHelper支持多阵营统计 4. 调整关卡判定:将最大波次从15改为20,新增英雄死亡计数与难度动态调节 5. 优化代码结构:移除废弃字段,统一技能注入方式,修复槽位复用逻辑
This commit is contained in:
@@ -15,13 +15,23 @@ import { EquipBoxComp } from "../map/EquipBoxComp";
|
||||
export class FieldSkillHelper {
|
||||
/** 获取指定驻场技能类型的总加成值(计算存活的友方英雄 + 场上的驻场技能卡) */
|
||||
public static getFieldSkillTotalValue(type: FieldSkillType): number {
|
||||
return FieldSkillHelper.getFieldSkillTotalValueForFac(type, FacSet.HERO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定阵营的驻场技能总加成值
|
||||
* @param type 驻场技能类型
|
||||
* @param fac 阵营(FacSet.HERO / FacSet.MON),默认 HERO
|
||||
* @returns 总加成值
|
||||
*/
|
||||
public static getFieldSkillTotalValueForFac(type: FieldSkillType, fac: number = FacSet.HERO): number {
|
||||
let total = 0;
|
||||
|
||||
// 1. 统计英雄带来的驻场技能加成
|
||||
// 1. 统计英雄/怪物带来的驻场技能加成
|
||||
// 读 model.runtime_field(已按当前等级 resolve 的 uuid 列表)
|
||||
ecs.query(ecs.allOf(HeroAttrsComp)).forEach((entity: ecs.Entity) => {
|
||||
const model = entity.get(HeroAttrsComp);
|
||||
if (!model || model.is_dead || model.fac !== FacSet.HERO) return;
|
||||
if (!model || model.is_dead || model.fac !== fac) return;
|
||||
const fields = model.runtime_field;
|
||||
if (fields) {
|
||||
for (const skillUuid of fields) {
|
||||
@@ -33,31 +43,33 @@ export class FieldSkillHelper {
|
||||
}
|
||||
});
|
||||
|
||||
// 2. 统计技能盒子(技能卡)带来的驻场技能加成
|
||||
ecs.query(ecs.allOf(SkillBoxComp)).forEach((entity: ecs.Entity) => {
|
||||
const skillBox = entity.get(SkillBoxComp);
|
||||
if (!skillBox || !skillBox.field || skillBox.field.length === 0) return;
|
||||
// 2. 统计技能盒子(技能卡)带来的驻场技能加成(仅英雄阵营)
|
||||
if (fac === FacSet.HERO) {
|
||||
ecs.query(ecs.allOf(SkillBoxComp)).forEach((entity: ecs.Entity) => {
|
||||
const skillBox = entity.get(SkillBoxComp);
|
||||
if (!skillBox || !skillBox.field || skillBox.field.length === 0) return;
|
||||
|
||||
for (const skillUuid of skillBox.field) {
|
||||
const skillConfig = FieldSkillSet[skillUuid];
|
||||
if (skillConfig && skillConfig.type === type) {
|
||||
total += skillConfig.value;
|
||||
for (const skillUuid of skillBox.field) {
|
||||
const skillConfig = FieldSkillSet[skillUuid];
|
||||
if (skillConfig && skillConfig.type === type) {
|
||||
total += skillConfig.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 3. 统计装备盒(装备卡)带来的驻场技能加成
|
||||
ecs.query(ecs.allOf(EquipBoxComp)).forEach((entity: ecs.Entity) => {
|
||||
const equipBox = entity.get(EquipBoxComp);
|
||||
if (!equipBox || !equipBox.field || equipBox.field.length === 0) return;
|
||||
// 3. 统计装备盒(装备卡)带来的驻场技能加成(仅英雄阵营)
|
||||
ecs.query(ecs.allOf(EquipBoxComp)).forEach((entity: ecs.Entity) => {
|
||||
const equipBox = entity.get(EquipBoxComp);
|
||||
if (!equipBox || !equipBox.field || equipBox.field.length === 0) return;
|
||||
|
||||
for (const skillUuid of equipBox.field) {
|
||||
const skillConfig = FieldSkillSet[skillUuid];
|
||||
if (skillConfig && skillConfig.type === type) {
|
||||
total += skillConfig.value;
|
||||
for (const skillUuid of equipBox.field) {
|
||||
const skillConfig = FieldSkillSet[skillUuid];
|
||||
if (skillConfig && skillConfig.type === type) {
|
||||
total += skillConfig.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
return total;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user