diff --git a/server/gameserver/car.cc b/server/gameserver/car.cc index ff8577f..37a96a8 100644 --- a/server/gameserver/car.cc +++ b/server/gameserver/car.cc @@ -94,10 +94,6 @@ void Car::GetDown(Human* passenger) if (driver_ == passenger) { driver_ = nullptr; } - if (meta->i->buffid()) { - passenger->RemoveBuffById(meta->i->buffid()); - passenger->RecalcSelfCollider(); - } passengers_.erase(passenger); passenger->SetCar(nullptr); passenger->SetSeat(0); @@ -111,6 +107,9 @@ void Car::GetDown(Human* passenger) room->TakeOffCarObject(GetEntityUniId(), GetPos()); RemoveBuffByEffectId(kBET_CarActive); TryAddBuff(this, meta->car_deactive_buff_id); + if (meta->i->buffid() != 0) { + passenger->RemoveBuffById(meta->i->buffid()); + } } SyncAroundPlayers(__FILE__, __LINE__, __func__); room->NotifyUiUpdate(); @@ -159,11 +158,8 @@ void Car::GetOn(Human* passenger) passenger->AddBuff(passenger, buff_meta, 1); } } - { - MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(meta->i->buffid()); - if (buff_meta) { - passenger->AddBuff(passenger, buff_meta, 1); - } + if (meta->i->buffid() != 0) { + passenger->TryAddBuff(passenger, meta->i->buffid()); } passenger->CancelAction(); room->frame_event.AddCarChg(passenger); @@ -318,10 +314,6 @@ void Car::BeKill(int killer_id, const std::string& killer_name, int weapon_id) room->RemoveObjectLater(this); int team_id = 0; for (Human* passenger : passengers_) { - if (meta->i->buffid()) { - passenger->RemoveBuffById(meta->i->buffid()); - passenger->RecalcSelfCollider(); - } team_id = passenger->team_id; passenger->SetCar(nullptr); passenger->SetSeat(0);