diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index b3a3f9b7..12c5e28c 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -1408,10 +1408,16 @@ void Human::ProcThrowDmg(int throw_uniid) void Human::FillMFGasData(cs::MFGasData* gas_data) { gas_data->set_mode(room->GetGasData().GetGasMode()); + gas_data->set_total_duration(0); if (room->GetGasData().GetGasMode() == GasInactive) { long long duration = room->GetGasInactiveTime() * SERVER_FRAME_RATE - (room->GetFrameNo() - room->GetGasData().gas_start_frameno); gas_data->set_duration(std::max(duration * 50, (long long)1000) / 1000); + { + long long passed_frame_num = room->GetFrameNo() - room->GetGasData().gas_start_frameno; + float time = std::max(0.0f, gas_data->duration() - passed_frame_num / SERVER_FRAME_RATE) + 1; + gas_data->set_total_duration(time); + } } else if (room->GetGasData().GetGasMode() == GasJump) { gas_data->set_duration(0); } else if (room->GetGasData().GetGasMode() == GasMoving) { @@ -1435,11 +1441,6 @@ void Human::FillMFGasData(cs::MFGasData* gas_data) gas_data->set_duration(0); } } - { - long long passed_frame_num = room->GetFrameNo() - room->GetGasData().gas_start_frameno; - float time = std::max(0.0f, gas_data->duration() - passed_frame_num / SERVER_FRAME_RATE) + 1; - gas_data->set_total_duration(time); - } { glm::vec3 v3(room->GetGasData().pos_old.x, 0.0f, room->GetGasData().pos_old.y); TypeConvert::ToPb(v3, gas_data->mutable_pos_old());