diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/CreatureAISelector.cpp | 7 | ||||
-rw-r--r-- | src/game/GridNotifiers.cpp | 10 | ||||
-rw-r--r-- | src/game/Map.cpp | 3 |
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 |