mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 18:15:31 +01:00
Core/Objects: Keep current WMO info on position updates and use it in party member state packets
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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!
|
||||
|
||||
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user