diff options
Diffstat (limited to 'src/server/scripts')
| -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  | 
