From 65fc7f7a28b55aa668619d0985da6e8f6fd2499e Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 27 May 2011 17:25:30 +0200 Subject: Scripts/Icecrown Citadel: Valithria Dreamwalker encounter will now be ended if there is no player on combat trigger's threat list --- .../IcecrownCitadel/boss_valithria_dreamwalker.cpp | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'src') 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 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::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 -- cgit v1.2.3