void UpdateAI(const uint32 uiDiff) { if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) return; if (m_uiCallLightTimer < uiDiff) { m_creature->CastSpell(m_creature->getVictim(), SPELL_CALL_LIGHTNING, false); m_uiCallLightTimer = urand(15000, 25000); }else m_uiCallLightTimer -= uiDiff; if (m_uiStaticDisruptTimer < uiDiff) { if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 1)) m_creature->CastSpell(pTarget, SPELL_STATIC_DISRUPTION, false); m_uiStaticDisruptTimer = urand(7000, 14000); }else m_uiStaticDisruptTimer -= uiDiff; if (m_uiStormTimer < uiDiff) { if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0)) { if (m_creature->IsNonMeleeSpellCasted(false)) m_creature->InterruptNonMeleeSpells(false); DoScriptText(EMOTE_STORM, m_creature); m_creature->CastSpell(pTarget, SPELL_ELECTRICAL_STORM, false); } m_uiStormTimer = 60000; }else m_uiStormTimer -= uiDiff; if (m_uiGustOfWindTimer < uiDiff) { if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 1)) m_creature->CastSpell(pTarget, SPELL_GUST_OF_WIND, false); m_uiGustOfWindTimer = urand(20000, 30000); }else m_uiGustOfWindTimer -= uiDiff; if (m_uiSummonEagleTimer < uiDiff) { DoScriptText(urand(0,1) ? SAY_SUMMON : SAY_SUMMON_ALT, m_creature); DoSummonEagles(); m_uiSummonEagleTimer = 60000; }else m_uiSummonEagleTimer -= uiDiff; if (!m_bIsBerserk && m_uiBerserkTimer < uiDiff) { DoScriptText(SAY_ENRAGE, m_creature); m_creature->CastSpell(m_creature, SPELL_BERSERK, true); m_bIsBerserk = true; }else m_uiBerserkTimer -= uiDiff; DoMeleeAttackIfReady(); }
void UpdateAI(const uint32 uiDiff) override { if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) return; if (m_uiCallLightTimer < uiDiff) { if (DoCastSpellIfCan(m_creature->getVictim(), SPELL_CALL_LIGHTNING) == CAST_OK) m_uiCallLightTimer = urand(15000, 25000); } else m_uiCallLightTimer -= uiDiff; if (m_uiStaticDisruptTimer < uiDiff) { if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 1, nullptr, SELECT_FLAG_PLAYER)) { if (DoCastSpellIfCan(pTarget, SPELL_STATIC_DISRUPTION) == CAST_OK) m_uiStaticDisruptTimer = urand(7000, 14000); } } else m_uiStaticDisruptTimer -= uiDiff; if (m_uiStormTimer < uiDiff) { if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0, nullptr, SELECT_FLAG_PLAYER)) { if (DoCastSpellIfCan(pTarget, SPELL_ELECTRICAL_STORM) == CAST_OK) { DoScriptText(EMOTE_STORM, m_creature); m_uiStormTimer = 55000; } } } else m_uiStormTimer -= uiDiff; if (m_uiGustOfWindTimer < uiDiff) { if (Unit* pTarget = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 1, nullptr, SELECT_FLAG_PLAYER)) { if (DoCastSpellIfCan(pTarget, SPELL_GUST_OF_WIND) == CAST_OK) m_uiGustOfWindTimer = urand(20000, 30000); } } else m_uiGustOfWindTimer -= uiDiff; if (m_uiSummonEagleTimer < uiDiff) { DoScriptText(urand(0, 1) ? SAY_SUMMON : SAY_SUMMON_ALT, m_creature); DoSummonEagles(); m_uiSummonEagleTimer = 60000; } else m_uiSummonEagleTimer -= uiDiff; if (m_uiBerserkTimer) { if (m_uiBerserkTimer < uiDiff) { if (DoCastSpellIfCan(m_creature, SPELL_BERSERK) == CAST_OK) { DoScriptText(SAY_ENRAGE, m_creature); m_uiBerserkTimer = 0; } } else m_uiBerserkTimer -= uiDiff; } DoMeleeAttackIfReady(); }