void UpdateAI(const uint32 uiDiff) override { if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) { return; } // AntiMagicPulse_Timer if (m_uiAntiMagicPulseTimer < uiDiff) { if (DoCastSpellIfCan(m_creature, SPELL_ANTIMAGICPULSE) == CAST_OK) { m_uiAntiMagicPulseTimer = urand(10 * IN_MILLISECONDS, 15 * IN_MILLISECONDS); } } else { m_uiAntiMagicPulseTimer -= uiDiff; } // MagmaShackles_Timer if (m_uiMagmaShacklesTimer < uiDiff) { if (DoCastSpellIfCan(m_creature, SPELL_MAGMASHACKLES) == CAST_OK) { m_uiMagmaShacklesTimer = urand(8 * IN_MILLISECONDS, 12 * IN_MILLISECONDS); } } else { m_uiMagmaShacklesTimer -= uiDiff; } // Explode an add if (m_uiExplodeAddTimer < uiDiff) { if (urand(0, 1)) // 50% chance to explode, is it too much? { ObjectGuid guid = m_pInstance->GetGuid(NPC_FIRESWORN); if (Creature* firesworn = m_pInstance->instance->GetCreature(guid)) SendAIEvent(AI_EVENT_CUSTOM_A, firesworn, firesworn, SPELL_MASSIVE_ERUPTION); // this is an instant explosion with no SPELL_ERUPTION_TRIGGER } m_uiExplodeAddTimer = 15 * IN_MILLISECONDS; } else m_uiExplodeAddTimer -= uiDiff; DoMeleeAttackIfReady(); }