diff --git a/server/gameserver/car.cc b/server/gameserver/car.cc index fa7af75..082bebb 100644 --- a/server/gameserver/car.cc +++ b/server/gameserver/car.cc @@ -380,10 +380,6 @@ void Car::DecHP(float dec_hp, int killer_id, const std::string& killer_name, int void Car::BeKill(int killer_id, const std::string& killer_name, int weapon_id) { dead = true; - room->TakeOnCarObject(GetUniId()); - BroadcastDeleteState(room); - RemoveFromAroundPlayers(room); - room->grid_service->RemoveCreature(this); if (hero_meta_->i->delay_remove() > 0) { room->xtimer.AddDeadLineTimerAndAttach ( @@ -392,11 +388,12 @@ void Car::BeKill(int killer_id, const std::string& killer_name, int weapon_id) .SetSender(this), [] (const a8::XParams& param) { - + Car* c = (Car*)param.sender.GetUserData(); + c->RemoveFromScene(); }, &xtimer_attacher.timer_list_); } else { - room->RemoveObjectLater(this); + RemoveFromScene(); } int team_id = 0; for (Human* passenger : passengers_) { @@ -512,3 +509,12 @@ void Car::CheckCreatureCollision() { } + +void Car::RemoveFromScene() +{ + room->TakeOnCarObject(GetUniId()); + BroadcastDeleteState(room); + RemoveFromAroundPlayers(room); + room->grid_service->RemoveCreature(this); + room->RemoveObjectLater(this); +} diff --git a/server/gameserver/car.h b/server/gameserver/car.h index 25855fe..3317eb2 100644 --- a/server/gameserver/car.h +++ b/server/gameserver/car.h @@ -57,6 +57,7 @@ class Car : public Creature void RecalcSelfCollider(); bool NeedCreatureCollision(); void CheckCreatureCollision(); + void RemoveFromScene(); private: long long born_frameno_ = 0;