diff --git a/server/gameserver/car.cc b/server/gameserver/car.cc index fcdaaaa..90011e8 100644 --- a/server/gameserver/car.cc +++ b/server/gameserver/car.cc @@ -88,6 +88,13 @@ void Car::GetDown(Human* passenger) passenger->RecalcSelfCollider(); } passengers_.erase(passenger); + passenger->SetCar(nullptr); + passenger->SetSeat(0); + passenger->second_weapon = Weapon(); + passenger->CancelAction(); + passenger->RemoveBuffByEffectId(kBET_Driver); + passenger->RemoveBuffByEffectId(kBET_Passenger); + room->frame_event.AddCarChg(passenger); if (passengers_.empty()) { int loot_uniid = room->CreateLoot(meta->i->id(), GetPos(), 1, 1); Entity* loot_entity = room->GetEntityByUniId(loot_uniid); @@ -100,17 +107,14 @@ void Car::GetDown(Human* passenger) loot_entity->GetPos()); } room->TakeOffCarObject(loot_uniid, GetPos()); + BroadcastDeleteState(room); + RemoveFromAroundPlayers(room); + room->grid_service->RemoveCreature(this); room->RemoveObjectLater(this); later_removed_ = true; + } else { + SyncAroundPlayers(__FILE__, __LINE__, __func__); } - passenger->SetCar(nullptr); - passenger->SetSeat(0); - passenger->second_weapon = Weapon(); - passenger->CancelAction(); - passenger->RemoveBuffByEffectId(kBET_Driver); - passenger->RemoveBuffByEffectId(kBET_Passenger); - room->frame_event.AddCarChg(passenger); - SyncAroundPlayers(__FILE__, __LINE__, __func__); room->NotifyUiUpdate(); }