Ejemplo n.º 1
0
 void EnterCombat(Unit* who) override
 {
     if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true))
     {
         StartChase(target);
         Talk(EMOTE_SPIKE, who);
     }
 }
Ejemplo n.º 2
0
 void JustEngagedWith(Unit* who) override
 {
     if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true))
     {
         StartChase(target);
         Talk(EMOTE_SPIKE, who);
     }
 }
Ejemplo n.º 3
0
            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;
                }
            }