diff --git a/server/gameserver/car.cc b/server/gameserver/car.cc index 79e984c..fa7af75 100644 --- a/server/gameserver/car.cc +++ b/server/gameserver/car.cc @@ -384,7 +384,20 @@ void Car::BeKill(int killer_id, const std::string& killer_name, int weapon_id) BroadcastDeleteState(room); RemoveFromAroundPlayers(room); room->grid_service->RemoveCreature(this); - room->RemoveObjectLater(this); + if (hero_meta_->i->delay_remove() > 0) { + room->xtimer.AddDeadLineTimerAndAttach + ( + hero_meta_->i->delay_remove() / FRAME_RATE_MS, + a8::XParams() + .SetSender(this), + [] (const a8::XParams& param) + { + + }, + &xtimer_attacher.timer_list_); + } else { + room->RemoveObjectLater(this); + } int team_id = 0; for (Human* passenger : passengers_) { team_id = passenger->team_id; diff --git a/server/tools/protobuild/metatable.proto b/server/tools/protobuild/metatable.proto index b942f9d..0ec5359 100755 --- a/server/tools/protobuild/metatable.proto +++ b/server/tools/protobuild/metatable.proto @@ -217,6 +217,7 @@ message Player optional int32 dead_drop = 29; optional int32 delay_delete = 39; optional int32 ai = 46; + optional int32 delay_remove = 47; } message Robot