aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/Object.cpp10
-rw-r--r--src/game/Player.cpp32
2 files changed, 37 insertions, 5 deletions
diff --git a/src/game/Object.cpp b/src/game/Object.cpp
index af96905b529..132729aea40 100644
--- a/src/game/Object.cpp
+++ b/src/game/Object.cpp
@@ -1646,12 +1646,18 @@ void Unit::BuildHeartBeatMsg(WorldPacket *data) const
void WorldObject::SendMessageToSet(WorldPacket *data, bool /*fake*/)
{
- GetMap()->MessageBroadcast(this, data);
+ //if object is in world, map for it already created!
+ Map * _map = IsInWorld() ? GetMap() : MapManager::Instance().FindMap(GetMapId(), GetInstanceId());
+ if(_map)
+ _map->MessageBroadcast(this, data);
}
void WorldObject::SendMessageToSetInRange(WorldPacket *data, float dist, bool /*bToSelf*/)
{
- GetMap()->MessageDistBroadcast(this, data, dist);
+ //if object is in world, map for it already created!
+ Map * _map = IsInWorld() ? GetMap() : MapManager::Instance().FindMap(GetMapId(), GetInstanceId());
+ if(_map)
+ _map->MessageDistBroadcast(this, data, dist);
}
void WorldObject::SendObjectDeSpawnAnim(uint64 guid)
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 9e86cab3615..02556d4f199 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -5681,17 +5681,43 @@ void Player::SaveRecallPosition()
void Player::SendMessageToSet(WorldPacket *data, bool self)
{
- GetMap()->MessageBroadcast(this, data, self);
+ Map * _map = IsInWorld() ? GetMap() : MapManager::Instance().FindMap(GetMapId(), GetInstanceId());
+ if(_map)
+ {
+ _map->MessageBroadcast(this, data, self);
+ return;
+ }
+
+ //if player is not in world and map in not created/already destroyed
+ //no need to create one, just send packet for itself!
+ if(self)
+ GetSession()->SendPacket(data);
}
void Player::SendMessageToSetInRange(WorldPacket *data, float dist, bool self)
{
- GetMap()->MessageDistBroadcast(this, data, dist, self);
+ Map * _map = IsInWorld() ? GetMap() : MapManager::Instance().FindMap(GetMapId(), GetInstanceId());
+ if(_map)
+ {
+ _map->MessageDistBroadcast(this, data, dist, self);
+ return;
+ }
+
+ if(self)
+ GetSession()->SendPacket(data);
}
void Player::SendMessageToSetInRange(WorldPacket *data, float dist, bool self, bool own_team_only)
{
- GetMap()->MessageDistBroadcast(this, data, dist, self, own_team_only);
+ Map * _map = IsInWorld() ? GetMap() : MapManager::Instance().FindMap(GetMapId(), GetInstanceId());
+ if(_map)
+ {
+ _map->MessageDistBroadcast(this, data, dist, self, own_team_only);
+ return;
+ }
+
+ if(self)
+ GetSession()->SendPacket(data);
}
void Player::SendDirectMessage(WorldPacket *data)