void EnterCombat(Unit* who) override { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) { StartChase(target); Talk(EMOTE_SPIKE, who); } }
void JustEngagedWith(Unit* who) override { if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) { StartChase(target); Talk(EMOTE_SPIKE, who); } }
void UpdateAI(uint32 diff) override { if (!UpdateVictim()) { me->DisappearAndDie(); return; } if (_phaseSwitchTimer) { if (_phaseSwitchTimer <= diff) { switch (_phase) { case PHASE_NO_MOVEMENT: DoCast(me, SPELL_SPIKE_SPEED1); DoCast(me, SPELL_SPIKE_TRAIL); _phase = PHASE_IMPALE_NORMAL; if (Unit* target2 = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) { StartChase(target2); Talk(EMOTE_SPIKE, target2); } _phaseSwitchTimer = 7*IN_MILLISECONDS; return; case PHASE_IMPALE_NORMAL: DoCast(me, SPELL_SPIKE_SPEED2); _phase = PHASE_IMPALE_MIDDLE; _phaseSwitchTimer = 7*IN_MILLISECONDS; return; case PHASE_IMPALE_MIDDLE: DoCast(me, SPELL_SPIKE_SPEED3); _phase = PHASE_IMPALE_FAST; _phaseSwitchTimer = 0; return; default: return; } } else _phaseSwitchTimer -= diff; } }