diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index bd2b6deb..07a633ad 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1546,6 +1546,9 @@ void Human::FillMFGasData(cs::MFGasData* gas_data) (room->GetFrameNo() - room->GetGasData().gas_start_frameno); gas_data->set_duration(std::max(duration * 50, (long long)1000) / 1000); } + if (room->IsPveRoom()) { + gas_data->set_duration(0); + } } TypeConvert::ToPb(room->GetGasData().pos_old, gas_data->mutable_pos_old()); TypeConvert::ToPb(room->GetGasData().pos_new, gas_data->mutable_pos_new()); diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index a60bcb9c..fc77ea9e 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1311,22 +1311,19 @@ void Room::UpdateGasInactivePvp() void Room::UpdateGasInactivePve() { { - MetaData::SafeArea* first_safearea = MetaMgr::Instance()->GetSafeArea(FIRST_AREA_ID); - if (!first_safearea) { - abort(); - } + first_safearea = pve_mode_meta->area[0]; gas_data_.gas_mode = GasWaiting; gas_data_.gas_start_frameno = GetFrameNo(); battle_start_frameno_ = GetFrameNo(); gas_data_.old_area_meta = first_safearea; gas_data_.new_area_meta = pve_mode_meta->area[0]; - gas_data_.gas_progress = 0; gas_data_.gas_start_frameno = GetFrameNo(); - gas_data_.pos_old = a8::Vec2(first_safearea->i->x1(), first_safearea->i->y1()); gas_data_.pos_new = a8::Vec2(gas_data_.new_area_meta->i->x1(), gas_data_.new_area_meta->i->y1()); + gas_data_.pos_old = gas_data_.pos_new; gas_data_.pos_old_bk = gas_data_.pos_old; gas_data_.rad_old = gas_data_.old_area_meta->i->rad(); gas_data_.rad_new = gas_data_.new_area_meta->i->rad(); + gas_data_.gas_progress = 0; } NotifyUiUpdate(); ClearPostBattleAutoFreeList();