aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2011-05-27 17:25:30 +0200
committerShauren <shauren.trinity@gmail.com>2011-05-27 17:25:30 +0200
commit65fc7f7a28b55aa668619d0985da6e8f6fd2499e (patch)
treef6b34c64c4043952cd111dd89ec4dc6db58998f7 /src
parent5851ec3e4fa02358b0cb4620e044f85475522105 (diff)
Scripts/Icecrown Citadel: Valithria Dreamwalker encounter will now be ended if there is no player on combat trigger's threat list
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp23
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