void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; events.Update(diff); if (me->HasUnitState(UNIT_STATE_CASTING)) return; switch (events.GetEvent()) { case EVENT_SPELL_NECROTIC_AURA: me->CastSpell(me, SPELL_NECROTIC_AURA, true); events.RepeatEvent(20000); break; case EVENT_SPELL_DEATHBLOOM: me->CastSpell(me, SPELL_SUMMON_SPORE, true); me->CastSpell(me, RAID_MODE(SPELL_DEATHBLOOM_10, SPELL_DEATHBLOOM_25), false); events.RepeatEvent(30000); break; case EVENT_SPELL_INEVITABLE_DOOM: me->CastSpell(me, RAID_MODE(SPELL_INEVITABLE_DOOM_10, SPELL_INEVITABLE_DOOM_25), false); events.RepeatEvent(events.GetTimer() < 5*MINUTE*IN_MILLISECONDS ? 30000 : 15000); break; case EVENT_SPELL_BERSERK: me->CastSpell(me, SPELL_BERSERK, true); events.PopEvent(); break; } DoMeleeAttackIfReady(); }
uint32 GetData(uint32 type) const { if (type == DATA_NEGATIVE_ENERGY_TARGETS) return 1 + uint32(events.GetTimer() / 12000); return 0; }