diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp index 9e53b1f9df6..3e55ff048e6 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp @@ -535,8 +535,29 @@ class npc_green_dragon_combat_trigger : public CreatureScript void UpdateAI(uint32 const /*diff*/) { - UpdateVictim(); + std::list<HostileReference*> const& threatList = me->getThreatManager().getThreatList(); + if (threatList.empty()) + { + EnterEvadeMode(); + return; + } + + // check evade every second tick + _evadeCheck ^= true; + if (!_evadeCheck) + return; + + // check if there is any player on threatlist, if not - evade + for (std::list<HostileReference*>::const_iterator itr = threatList.begin(); itr != threatList.end(); ++itr) + if (Unit* target = (*itr)->getTarget()) + if (target->GetTypeId() == TYPEID_PLAYER) + return; // found any player, return + + EnterEvadeMode(); } + + private: + bool _evadeCheck; }; CreatureAI* GetAI(Creature* creature) const |