feat(战斗): 实现战斗时间结束和怪物全灭自动推进波次
- 将战斗时间从600秒改为30秒,便于测试 - 战斗倒计时归零或场上怪物全灭时,自动结束当前波次并进入准备阶段 - 怪物波次切换时,新怪物继承被覆盖旧怪物的部分属性(生命值和攻击力) - 调整波次初始化逻辑,确保战斗时间在每波开始时重置 - 新增事件 PhasePrepareEnd 和 TimeUpAdvanceWave 协调阶段切换
This commit is contained in:
@@ -214,6 +214,11 @@ export class MissionComp extends CCComp {
|
||||
smc.vmdata.mission_data.fight_time+=dt
|
||||
this.FightTime-=dt
|
||||
this.update_time();
|
||||
if (this.FightTime <= 0) {
|
||||
// 时间到了,自动结束战斗进入准备阶段
|
||||
this.FightTime = FightSet.FiIGHT_TIME;
|
||||
oops.message.dispatchEvent("TimeUpAdvanceWave");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -321,6 +326,7 @@ export class MissionComp extends CCComp {
|
||||
|
||||
case MissionPhase.PrepareEnd:
|
||||
if (this.start_btn && this.start_btn.isValid) this.start_btn.active = false;
|
||||
oops.message.dispatchEvent("PhasePrepareEnd");
|
||||
break;
|
||||
|
||||
case MissionPhase.BattleStart:
|
||||
@@ -558,6 +564,7 @@ export class MissionComp extends CCComp {
|
||||
smc.vmdata.mission_data.level = wave;
|
||||
this.grantPrepareCoinByWave(wave);
|
||||
this.lastTimeSecond = -1;
|
||||
this.FightTime = FightSet.FiIGHT_TIME;
|
||||
this.update_time();
|
||||
|
||||
// 检查并推送卡池升级事件
|
||||
@@ -639,6 +646,14 @@ export class MissionComp extends CCComp {
|
||||
}
|
||||
});
|
||||
this.handleHeroWipe(heroCount);
|
||||
|
||||
// 怪物全灭检测:如果战斗阶段场上没有任何活着的怪物,直接结束战斗进入下一波的准备阶段
|
||||
if (monsterCount === 0 && smc.mission.play && !smc.mission.pause && this.currentPhase === MissionPhase.Battle) {
|
||||
this.FightTime = FightSet.FiIGHT_TIME;
|
||||
oops.message.dispatchEvent("TimeUpAdvanceWave");
|
||||
return;
|
||||
}
|
||||
|
||||
smc.vmdata.mission_data.mon_num = monsterCount;
|
||||
const { max, resume } = this.getMonsterThresholds();
|
||||
smc.vmdata.mission_data.mon_max = max;
|
||||
|
||||
Reference in New Issue
Block a user