void UpdateAI(const uint32 diff) { //Return since we have no target if (!UpdateVictim()) return; if (!bHealth && HealthBelowPct(50) && !HealthBelowPct(5)) { CreatureState(me, false); DoCast(me,SPELL_FREEZE_ANIM); DoCast(me,SPELL_EMERGE); bHealth = true; } if (!bHealth1 && HealthBelowPct(5)) { DoCast(me,SPELL_EMERGE); CreatureState(me, false); bHealth1 = true; me->RemoveAllAuras(); } if (MightyBlowTimer <= diff) { DoCast(me->getVictim(), SPELL_MIGHTY_BLOW, true); MightyBlowTimer = 10*IN_MILLISECONDS; } else MightyBlowTimer -= diff; if (!me->HasUnitState(UNIT_STAT_STUNNED)) DoMeleeAttackIfReady(); }
void Reset() { if (pInstance) pInstance->SetData(DATA_DRAKKARI_COLOSSUS_EVENT, NOT_STARTED); if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE)) me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); MightyBlowTimer = 10*IN_MILLISECONDS; bHealth = false; bHealth1 = false; DespawnMojo(); // make sure no mojo is left SpawnMojo(); MojoEventPhase = 0; MojoEventTimer = 2*IN_MILLISECONDS; CreatureState(me, true); }
void UpdateAI(const uint32 diff) { //Return since we have no target if (!UpdateVictim()) return; if (MojoEventPhase == 1) { me->GetMotionMaster()->Clear(); me->GetMotionMaster()->MoveIdle(); CreatureState(me, false); for (uint8 i = 0; i < 5; ++i) { if (MojoGUID[i]) { Creature* pCreature = Unit::GetCreature((*me), MojoGUID[i]); if (pCreature && pCreature->isAlive()) { pCreature->GetMotionMaster()->Clear(); pCreature->GetMotionMaster()->MovePoint(0,me->GetPositionX(),me->GetPositionY(),me->GetPositionZ()); } } } MojoEventPhase = 2; } if (MojoEventPhase == 2) { if (MojoEventTimer <= diff) { DespawnMojo(); CreatureState(me, true); me->GetMotionMaster()->MoveChase(me->getVictim()); MojoEventPhase = 3; } else MojoEventTimer -= diff; } if (!bHealth && HealthBelowPct(50) && !HealthBelowPct(5)) { CreatureState(me, false); DoCast(me, SPELL_EMERGE); bHealth = true; me->RemoveAllAuras(); } if (!bHealth1 && HealthBelowPct(5)) { CreatureState(me, false); DoCast(me, SPELL_EMERGE); bHealth1 = true; me->RemoveAllAuras(); } if (me->HasUnitState(UNIT_STAT_STUNNED)) return; if (MightyBlowTimer <= diff) { DoCast(me->getVictim(), SPELL_MIGHTY_BLOW, true); MightyBlowTimer = 15*IN_MILLISECONDS; } else MightyBlowTimer -= diff; DoMeleeAttackIfReady(); }