void UpdateAI (const uint32 diff) { //Return since we have no target if (!UpdateVictim()) return; //MightyBlow_Timer if (MightyBlow_Timer <= diff) { DoCast(me->getVictim(), SPELL_MIGHTYBLOW); MightyBlow_Timer = 18000; } else MightyBlow_Timer -= diff; //HamString_Timer if (HamString_Timer <= diff) { DoCast(me->getVictim(), SPELL_HAMSTRING); HamString_Timer = 15000; } else HamString_Timer -= diff; //Cleave_Timer if (Cleave_Timer <= diff) { DoCast(me->getVictim(), SPELL_CLEAVE); Cleave_Timer = 9000; } else Cleave_Timer -= diff; //Adds_Timer if (HealthBelowPct(21)) { if (Adds_Timer <= diff) { // summon 3 Adds every 25s SummonAdds(me->getVictim()); SummonAdds(me->getVictim()); SummonAdds(me->getVictim()); Adds_Timer = 25000; } else Adds_Timer -= diff; } //Summon Medics if (!Medics && HealthBelowPct(21)) { SummonMedics(me->getVictim()); SummonMedics(me->getVictim()); Medics = true; } DoMeleeAttackIfReady(); }
void UpdateAI(const uint32 diff) { //Return since we have no target if (!m_creature->SelectHostilTarget() || !m_creature->getVictim()) return; //MightyBlow_Timer if (MightyBlow_Timer < diff) { DoCast(m_creature->getVictim(),SPELL_MIGHTYBLOW); MightyBlow_Timer = 18000; }else MightyBlow_Timer -= diff; //HamString_Timer if (HamString_Timer < diff) { DoCast(m_creature->getVictim(),SPELL_HAMSTRING); HamString_Timer = 15000; }else HamString_Timer -= diff; //Cleave_Timer if (Cleave_Timer < diff) { DoCast(m_creature->getVictim(),SPELL_CLEAVE); Cleave_Timer = 9000; }else Cleave_Timer -= diff; //Adds_Timer if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 21) { if (Adds_Timer < diff) { // summon 3 Adds every 25s SummonAdds(m_creature->getVictim()); SummonAdds(m_creature->getVictim()); SummonAdds(m_creature->getVictim()); Adds_Timer = 25000; } else Adds_Timer -= diff; } //Summon Medics if (!Medics && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 21) { SummonMedics(m_creature->getVictim()); SummonMedics(m_creature->getVictim()); Medics = true; } DoMeleeAttackIfReady(); }
void UpdateAI(const uint32 diff) { //Return since we have no target if (!m_creature->SelectHostilTarget()) return; //Check if we have a current target if( m_creature->getVictim() && m_creature->isAlive()) { //MightyBlow_Timer if (MightyBlow_Timer < diff) { //Cast DoCast(m_creature->getVictim(),SPELL_MIGHTYBLOW); //18 seconds MightyBlow_Timer = 18000; }else MightyBlow_Timer -= diff; //HamString_Timer if (HamString_Timer < diff) { //Cast DoCast(m_creature->getVictim(),SPELL_HAMSTRING); //15 seconds HamString_Timer = 15000; }else HamString_Timer -= diff; //Cleave_Timer if (Cleave_Timer < diff) { //Cast DoCast(m_creature->getVictim(),SPELL_CLEAVE); //45 seconds Cleave_Timer = 9000; }else Cleave_Timer -= diff; //Adds_Timer if ( m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 21 ) { if (Adds_Timer < diff) { // summon 3 Adds every 25s SummonAdds(m_creature->getVictim()); SummonAdds(m_creature->getVictim()); SummonAdds(m_creature->getVictim()); //25 seconds until we should cast this agian Adds_Timer = 25000; } else Adds_Timer -= diff; } //Summon Medics if ( !Medics && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 21 ) { //Cast SummonMedics(m_creature->getVictim()); SummonMedics(m_creature->getVictim()); Medics = true; } //If we are within range melee the target if( m_creature->IsWithinDistInMap(m_creature->getVictim(), ATTACK_DISTANCE)) { //Make sure our attack is ready and we arn't currently casting if( m_creature->isAttackReady() && !m_creature->m_currentSpell) { m_creature->AttackerStateUpdate(m_creature->getVictim()); m_creature->resetAttackTimer(); } } } }