diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 66a9a642fb..29c8ae4eee 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -253,6 +253,24 @@ void Object::SendUpdateToPlayer(Player* player) player->GetSession()->SendPacket(&packet); } +void Object::SendUpdateToSet() +{ + if (Unit* unit = ToUnit()) + { + std::list players; + unit->GetPlayerListInGrid(players, unit->GetVisibilityRange()); + for (auto itr = players.begin(); itr != players.end(); itr++) + { + UpdateData upd((*itr)->GetMapId()); + WorldPacket packet; + if ((*itr)->HaveAtClient(this)) + BuildValuesUpdateBlockForPlayer(&upd, (*itr)); + upd.BuildPacket(&packet); + (*itr)->GetSession()->SendPacket(&packet); + } + } +} + void Object::BuildValuesUpdateBlockForPlayer(UpdateData* data, Player* target) const { ByteBuffer buf(500); diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index a2e8e276d4..903eb61bf6 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -116,6 +116,7 @@ class TC_GAME_API Object virtual void BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) const; void SendUpdateToPlayer(Player* player); + void SendUpdateToSet(); void BuildValuesUpdateBlockForPlayer(UpdateData* data, Player* target) const; void BuildOutOfRangeUpdateBlock(UpdateData* data) const; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index d9ed57c793..936535525d 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -8043,6 +8043,7 @@ void Unit::Mount(uint32 mount, uint32 VehicleId, uint32 creatureEntry) { if (mount) SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, mount); + SetObjectScale(GetObjectScale()); SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_MOUNT); @@ -8051,6 +8052,7 @@ void Unit::Mount(uint32 mount, uint32 VehicleId, uint32 creatureEntry) // mount as a vehicle if (VehicleId) { + // mount as a vehicle if (CreateVehicleKit(VehicleId, creatureEntry)) { // Send others that we now have a vehicle @@ -8098,7 +8100,10 @@ void Unit::Dismount() RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_MOUNT); if (Player* thisPlayer = ToPlayer()) + { + SendUpdateToSet(); thisPlayer->SendMovementSetCollisionHeight(thisPlayer->GetCollisionHeight(false)); + } WorldPacket data(SMSG_DISMOUNT, 8); data << GetPackGUID();