diff --git a/server/gameserver/car.h b/server/gameserver/car.h index 2760ba2..51872f5 100644 --- a/server/gameserver/car.h +++ b/server/gameserver/car.h @@ -17,6 +17,7 @@ class Car : public Creature public: int car_uniid = 0; MetaData::Equip* meta = nullptr; + MetaData::Player* hero_meta_ = nullptr; Car(); virtual ~Car() override; @@ -38,5 +39,4 @@ class Car : public Creature bool later_removed_ = false; Human* driver_ = nullptr; std::set passengers_; - MetaData::Player* hero_meta_ = nullptr; }; diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index 63fefe4..b4e5eb7 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -149,6 +149,9 @@ void Player::UpdateMove() if (HasBuffEffect(kBET_Vertigo)) { return; } + if (GetCar() && GetCar()->HasBuffEffect(kBET_Vertigo)) { + return; + } if (HasBuffEffect(kBET_Passenger)) { return; } diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index ab9f8d1..057fac3 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -593,6 +593,9 @@ Car* Room::CreateCar(Human* driver, AddToEntityHash(car); grid_service->AddCreature(car); car->RefreshView(); + for (int buff_id : car->hero_meta_->init_buffs) { + car->MustBeAddBuff(car, buff_id); + } car->BroadcastFullState(this); return car; }