void UpdateAI(const uint32 uiDiff) { if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) return; //Achievments if (m_bIsAchievInTime && (m_bIsAchievTimer < uiDiff)) { m_bIsAchievInTime = false; } else m_bIsAchievTimer -= uiDiff; // Hateful Strike if (m_uiHatefulStrikeTimer < uiDiff) { DoHatefulStrike(); m_uiHatefulStrikeTimer = 1000; } else m_uiHatefulStrikeTimer -= uiDiff; // Soft Enrage at 5% if (!m_bEnraged) { if (m_creature->GetHealthPercent() < 5.0f) { DoCast(m_creature, SPELL_ENRAGE); DoScriptText(EMOTE_ENRAGE, m_creature); m_bEnraged = true; } } // Berserk after 6 minutes if (!m_bBerserk) { if (m_uiBerserkTimer < uiDiff) { DoCast(m_creature, SPELL_BERSERK); DoScriptText(EMOTE_BERSERK, m_creature); m_bBerserk = true; } else m_uiBerserkTimer -= uiDiff; } else { // Slimebolt - casted only while Berserking to prevent kiting if (m_uiSlimeboltTimer < uiDiff) { DoCast(m_creature->getVictim(), SPELL_SLIMEBOLT); m_uiSlimeboltTimer = 5000; } else m_uiSlimeboltTimer -= uiDiff; } DoMeleeAttackIfReady(); }
void UpdateAI(const uint32 uiDiff) override { if (!m_creature->SelectHostileTarget() || !m_creature->getVictim()) return; // Hateful Strike if (m_uiHatefulStrikeTimer < uiDiff) { DoHatefulStrike(); m_uiHatefulStrikeTimer = 1000; } else m_uiHatefulStrikeTimer -= uiDiff; // Soft Enrage at 5% if (!m_bEnraged) { if (m_creature->GetHealthPercent() < 5.0f) { if (DoCastSpellIfCan(m_creature, SPELL_ENRAGE) == CAST_OK) { DoScriptText(EMOTE_GENERIC_ENRAGED, m_creature); m_bEnraged = true; } } } // Berserk after 6 minutes if (!m_bBerserk) { if (m_uiBerserkTimer < uiDiff) { if (DoCastSpellIfCan(m_creature, SPELL_BERSERK) == CAST_OK) { DoScriptText(EMOTE_GENERIC_BERSERK, m_creature); m_bBerserk = true; } } else m_uiBerserkTimer -= uiDiff; } else { // Slimebolt - casted only while Berserking to prevent kiting if (m_uiSlimeboltTimer < uiDiff) { DoCastSpellIfCan(m_creature->getVictim(), SPELL_SLIMEBOLT); m_uiSlimeboltTimer = 5000; } else m_uiSlimeboltTimer -= uiDiff; } DoMeleeAttackIfReady(); }