diff --git a/server/gameserver/incubator.cc b/server/gameserver/incubator.cc index ad1528ac..ea90168c 100644 --- a/server/gameserver/incubator.cc +++ b/server/gameserver/incubator.cc @@ -70,7 +70,8 @@ void Incubator::AllocAndroid(Human* target, int num, std::vector* androi if (!room->xtimer.IsRunning()) { A8_ABORT(); } - if (target->room->IsGameOver()) { + if (target->room->IsGameOver() || + target->room->IsForceOver()) { return; } int try_count = 0; diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 2c3a9538..8749d3d9 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -3751,6 +3751,7 @@ void Room::ForceOver() return true; }); } + force_over_ = true; GameLog::Instance()->ForceOver(this); xtimer.SetTimeoutEx (SERVER_FRAME_RATE * 5, diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 123372c4..05155e48 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -92,6 +92,7 @@ public: long long GetBattleStartFrameNo() { return battle_start_frameno_; } bool IsGameOver() { return game_over_; } bool IsGameTimeOut() { return game_timeout_; } + bool IsForceOver() { return force_over_; } const GasData& GetGasData() { return gas_data_; } RoomType_e GetRoomType() { return room_type_; } RoomMode_e GetRoomMode() { return room_mode_; } @@ -394,6 +395,7 @@ private: FrameCallNode* work_node_ = nullptr; Team* victory_team_ = nullptr; + bool force_over_ = false; friend class Incubator; friend class Team;