diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 01a39cc3..15b25805 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1193,6 +1193,7 @@ void Room::UpdateGas() if (IsPveRoom()) { if (!IsGameOver() && ( + IsAllRealDead() || incubator_->IsTimeOut() || ( incubator_->IsLastWave() && @@ -4135,3 +4136,21 @@ void Room::OnEnterNewWave(int wave) a8::XPrintf("OnEnternerWave:%d\n", {wave}); #endif } + +bool Room::IsAllRealDead() +{ + bool is_all_dead = true; + TraverseHumanList + ( + a8::XParams(), + [&is_all_dead] (Human* hum, a8::XParams& param) + { + if (!hum->real_dead) { + is_all_dead = false; + return false; + } + return true; + } + ); + return is_all_dead; +} diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 0d4a9c3e..fb58d9d5 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -329,6 +329,8 @@ private: void UnInitDebugInfo(); #endif + bool IsAllRealDead(); + private: int room_idx_ = 0; RoomMode_e room_mode_ = kChiJiMode;