aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/CreatureAISelector.cpp7
-rw-r--r--src/game/GridNotifiers.cpp10
-rw-r--r--src/game/Map.cpp3
3 files changed, 17 insertions, 3 deletions
diff --git a/src/game/CreatureAISelector.cpp b/src/game/CreatureAISelector.cpp
index f950e9f508c..bcec34781b0 100644
--- a/src/game/CreatureAISelector.cpp
+++ b/src/game/CreatureAISelector.cpp
@@ -38,8 +38,7 @@ namespace FactorySelector
const CreatureAICreator *ai_factory = NULL;
CreatureAIRegistry &ai_registry(CreatureAIRepository::Instance());
- //player-controlled guardians with pet bar
- if(creature->HasSummonMask(SUMMON_MASK_GUARDIAN) && ((Guardian*)creature)->GetOwner()->GetTypeId() == TYPEID_PLAYER)
+ if(creature->isPet())
ai_factory = ai_registry.GetRegistryItem("PetAI");
//scriptname in db
@@ -55,7 +54,9 @@ namespace FactorySelector
// select by NPC flags
if(!ai_factory)
{
- if(creature->isVehicle() || creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK))
+ if(creature->isGuardian() && ((Guardian*)creature)->GetOwner()->GetTypeId() == TYPEID_PLAYER)
+ ai_factory = ai_registry.GetRegistryItem("PetAI");
+ else if(creature->isVehicle() || creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK))
ai_factory = ai_registry.GetRegistryItem("NullCreatureAI");
else if(creature->isGuard())
ai_factory = ai_registry.GetRegistryItem("GuardAI");
diff --git a/src/game/GridNotifiers.cpp b/src/game/GridNotifiers.cpp
index 5158f51d695..2b59a1a9098 100644
--- a/src/game/GridNotifiers.cpp
+++ b/src/game/GridNotifiers.cpp
@@ -73,6 +73,16 @@ PlayerVisibilityNotifier::Notify()
if( i_data.HasData() )
{
+ uint32 entry = 0, map;
+ float x,y;
+ if(!i_visibleNow.empty())
+ {
+ entry = (*i_visibleNow.begin())->GetEntry();
+ map = (*i_visibleNow.begin())->GetMapId();
+ x = (*i_visibleNow.begin())->GetPositionX();
+ y = (*i_visibleNow.begin())->GetPositionY();
+ }
+
// send create/outofrange packet to player (except player create updates that already sent using SendUpdateToPlayer)
WorldPacket packet;
i_data.BuildPacket(&packet);
diff --git a/src/game/Map.cpp b/src/game/Map.cpp
index 144dce1edf6..3f5b0ba8e5e 100644
--- a/src/game/Map.cpp
+++ b/src/game/Map.cpp
@@ -592,7 +592,10 @@ void Map::RelocationNotify()
if(unit->GetTypeId() == TYPEID_PLAYER)
{
Trinity::PlayerRelocationNotifier notifier(*((Player*)unit));
+ if(((Player*)unit)->m_seer != unit)
VisitAll(((Player*)unit)->m_seer->GetPositionX(), ((Player*)unit)->m_seer->GetPositionY(), World::GetMaxVisibleDistance() + dist, notifier);
+ else
+ VisitAll(((Player*)unit)->GetPositionX(), ((Player*)unit)->GetPositionY(), World::GetMaxVisibleDistance() + dist, notifier);
notifier.Notify();
}
else