void UpdateAI(const uint32 diff) { if(!UpdateVictim()) return; events.Update(diff); EncounterTime += diff; while(uint32 eventId = events.ExecuteEvent()) { switch(eventId) { case EVENT_HATEFUL: { if(Unit* StrikeTarget = GetHatefullStrikeTarget()) DoCast(StrikeTarget, RAID_MODE(SPELL_HATEFUL_STRIKE,H_SPELL_HATEFUL_STRIKE), true); events.ScheduleEvent(EVENT_HATEFUL, 1200); break; } case EVENT_BERSERK: DoCast(me, SPELL_BERSERK, true); DoScriptText(EMOTE_BERSERK, me); events.ScheduleEvent(EVENT_SLIME, 2000); break; case EVENT_SLIME: DoCast(me->getVictim(), SPELL_SLIME_BOLT); events.ScheduleEvent(EVENT_SLIME, 2000); break; } } if(!Enraged && HealthBelowPct(5)) { DoCast(me, SPELL_FRENZY, true); DoScriptText(EMOTE_ENRAGE, me); Enraged = true; } DoMeleeAttackIfReady(); }
void UpdateAI(const uint32 diff) { if (!UpdateVictim()) return; events.Update(diff); EncounterTime += diff; while (uint32 eventId = events.ExecuteEvent()) { switch(eventId) { case EVENT_HATEFUL: { //Cast Hateful strike on the player with the highest //amount of HP within melee distance //uint32 MostHP = 0; //Unit* pMostHPTarget = NULL; //uint32 counter = 1; //std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin(); //++i; //for (; i != me->getThreatManager().getThreatList().end(); ++i) //{ // Unit *pTarget = (*i)->getTarget(); // if(!me->IsWithinMeleeRange(pTarget)) // continue; // counter++; // if(counter > 3) // break; // if (pTarget->isAlive() && pTarget->GetHealth() > MostHP) // { // MostHP = pTarget->GetHealth(); // pMostHPTarget = pTarget; // } //} //if (pMostHPTarget) pMostHPTarget = me->getVictim(); //if (pMostHPTarget) if(Unit* StrikeTarget = GetHatefullStrikeTarget()) DoCast(StrikeTarget, RAID_MODE(SPELL_HATEFUL_STRIKE,H_SPELL_HATEFUL_STRIKE), true); events.ScheduleEvent(EVENT_HATEFUL, 1200); break; } case EVENT_BERSERK: DoCast(me, SPELL_BERSERK, true); DoScriptText(EMOTE_BERSERK, me); events.ScheduleEvent(EVENT_SLIME, 2000); break; case EVENT_SLIME: DoCast(me->getVictim(), SPELL_SLIME_BOLT); events.ScheduleEvent(EVENT_SLIME, 2000); break; } } if (!Enraged && HealthBelowPct(5)) { DoCast(me, SPELL_FRENZY, true); DoScriptText(EMOTE_ENRAGE, me); Enraged = true; } DoMeleeAttackIfReady(); }