diff --git a/server/gameserver/incubator.cc b/server/gameserver/incubator.cc index eba4426c..1dbf1cc7 100644 --- a/server/gameserver/incubator.cc +++ b/server/gameserver/incubator.cc @@ -248,7 +248,7 @@ void Incubator::OnEnterNewWave(int wave) return; } room->pve_data.wave = wave + 1; - room->OnEnterNewWave(wave); + room->OnEnterNewWave(wave + 1); if (wave < 0) { abort(); } @@ -320,11 +320,11 @@ void Incubator::SpawnWaveMon(int wave) int Incubator::GetPveLeftTime() { - if (room->pve_data.wave >= wave_timers_.size() || + if (room->pve_data.wave > wave_timers_.size() || room->pve_data.wave < 0) { - abort(); + return 0; } - xtimer_list* timer = wave_timers_[room->pve_data.wave]; + xtimer_list* timer = wave_timers_[room->pve_data.wave - 1]; int remain_time = room->xtimer.GetRemainTime(timer); return remain_time * FRAME_RATE_MS; } diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 1938fb01..43721fca 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -4110,7 +4110,7 @@ bool Room::IsSurvivalRoom() void Room::OnEnterNewWave(int wave) { - if (IsDestoryRoom() && wave > 0) { + if (IsDestoryRoom() && wave > 0 && wave < pve_mode_meta->area.size()) { gas_data_.gas_mode = GasWaiting; gas_data_.gas_start_frameno = GetFrameNo(); battle_start_frameno_ = GetFrameNo();