void UpdateAI(const uint32 diff) { if (!UpdateVictim()) return; if (Check_Timer <= diff) { Creature* Shaffar = me->FindNearestCreature(ENTRY_SHAFFAR, 100); if (!Shaffar || Shaffar->isDead() || !Shaffar->isInCombat()) { KillSelf(); return; } Check_Timer = 1000; } else Check_Timer -= diff; if (ArcaneBolt_Timer <= diff) { DoCast(me->getVictim(),SPELL_ARCANE_BOLT); ArcaneBolt_Timer = 2000 + rand()%2500; } else ArcaneBolt_Timer -= diff; if (Apprentice_Timer <= diff) { if (me->IsNonMeleeSpellCasted(false)) me->InterruptNonMeleeSpells(true); me->CastSpell(me,SPELL_ETHEREAL_APPRENTICE,true); if (me->isPet()) ((Pet*)me)->SetDuration(0); KillSelf(); return; } else Apprentice_Timer -= diff; }
void UpdateAI(uint32 diff) { if (!UpdateVictim()) return; if (Check_Timer <= diff) { Creature* Shaffar = me->FindNearestCreature(NPC_SHAFFAR, 100); if (!Shaffar || Shaffar->isDead() || !Shaffar->isInCombat()) { KillSelf(); return; } Check_Timer = 1000; } else Check_Timer -= diff; if (ArcaneBolt_Timer <= diff) { DoCast(me->getVictim(), SPELL_ARCANE_BOLT); ArcaneBolt_Timer = urand(2000, 4500); } else ArcaneBolt_Timer -= diff; if (Apprentice_Timer <= diff) { if (me->IsNonMeleeSpellCasted(false)) me->InterruptNonMeleeSpells(true); DoCast(me, SPELL_ETHEREAL_APPRENTICE, true); me->DespawnOrUnsummon(); return; } else Apprentice_Timer -= diff; }
void EnterCombat(Unit* who) { // Send Shaffar to fight Creature* Shaffar = me->FindNearestCreature(NPC_SHAFFAR, 100); if (!Shaffar || Shaffar->isDead()) { KillSelf(); return; } if (!Shaffar->isInCombat()) Shaffar->AI()->AttackStart(who); }