From 65fc7f7a28b55aa668619d0985da6e8f6fd2499e Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 27 May 2011 17:25:30 +0200 Subject: [PATCH] Scripts/Icecrown Citadel: Valithria Dreamwalker encounter will now be ended if there is no player on combat trigger's threat list --- .../boss_valithria_dreamwalker.cpp | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp index 9e53b1f9df..3e55ff048e 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