diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Entities/Object/Object.h | 5 | ||||
-rw-r--r-- | src/server/game/Server/Packets/PartyPackets.cpp | 8 |
3 files changed, 10 insertions, 4 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index afc986f9052..51c85f241df 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -998,6 +998,7 @@ void WorldObject::ProcessPositionDataChanged(PositionFullTerrainStatus const& da m_outdoors = data.outdoors; m_staticFloorZ = data.floorZ; m_liquidStatus = data.liquidStatus; + m_currentWmo = data.wmoLocation; } void WorldObject::AddToWorld() diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index cbb0486ea90..07cf03d3e28 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -22,6 +22,7 @@ #include "Duration.h" #include "Errors.h" #include "EventProcessor.h" +#include "MapDefines.h" #include "ModelIgnoreFlags.h" #include "MovementInfo.h" #include "ObjectDefines.h" @@ -62,10 +63,8 @@ class WorldPacket; class ZoneScript; struct FactionTemplateEntry; struct Loot; -struct PositionFullTerrainStatus; struct QuaternionData; struct SpellPowerCost; -enum ZLiquidStatus : uint32; namespace WorldPackets { @@ -530,6 +529,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation bool IsInWorldPvpZone() const; bool IsOutdoors() const { return m_outdoors; } ZLiquidStatus GetLiquidStatus() const { return m_liquidStatus; } + WmoLocation const* GetCurrentWmo() const { return m_currentWmo ? &*m_currentWmo : nullptr; } InstanceScript* GetInstanceScript() const; @@ -789,6 +789,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation float m_staticFloorZ; bool m_outdoors; ZLiquidStatus m_liquidStatus; + Optional<WmoLocation> m_currentWmo; //these functions are used mostly for Relocate() and Corpse/Player specific stuff... //use them ONLY in LoadFromDB()/Create() funcs and nowhere else! diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp index d02dfa1bd6f..0791574e61c 100644 --- a/src/server/game/Server/Packets/PartyPackets.cpp +++ b/src/server/game/Server/Packets/PartyPackets.cpp @@ -631,8 +631,12 @@ void WorldPackets::Party::PartyMemberFullState::Initialize(Player const* player) MemberStats.SpecID = AsUnderlyingType(player->GetPrimarySpecialization()); MemberStats.PartyType[0] = player->m_playerData->PartyType[0]; MemberStats.PartyType[1] = player->m_playerData->PartyType[1]; - MemberStats.WmoGroupID = 0; - MemberStats.WmoDoodadPlacementID = 0; + + if (WmoLocation const* wmoLocation = player->GetCurrentWmo()) + { + MemberStats.WmoGroupID = wmoLocation->GroupId; + MemberStats.WmoDoodadPlacementID = wmoLocation->UniqueId; + } // Vehicle if (::Vehicle const* vehicle = player->GetVehicle()) |