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()) { //EncasingWebs if (EncasingWebs_Timer < diff) { //Cast DoCast(m_creature->getVictim(),SPELL_ENCASINGWEBS); //30 seconds until we should cast this again EncasingWebs_Timer = 30000; }else EncasingWebs_Timer -= diff; //PierceArmor if (PierceArmor_Timer < diff) { //Cast if (rand()%100 < 75) //75% chance to cast { DoCast(m_creature->getVictim(),SPELL_PIERCEARMOR); } //35 seconds until we should cast this again PierceArmor_Timer = 35000; }else PierceArmor_Timer -= diff; //VirulentPoison if (VirulentPoison_Timer < diff) { //Cast DoCast(m_creature->getVictim(),SPELL_VIRULENTPOISON); //20 seconds until we should cast this again VirulentPoison_Timer = 20000; }else VirulentPoison_Timer -= diff; //RaiseUndeadScarab if (RaiseUndeadScarab_Timer < diff) { //Cast RaiseUndeadScarab(m_creature->getVictim()); //16 seconds until we should cast this again RaiseUndeadScarab_Timer = 16000; }else RaiseUndeadScarab_Timer -= diff; //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(); } } } }
void UpdateAI(const uint32 diff) { if (!m_creature->SelectHostilTarget() || !m_creature->getVictim()) return; //EncasingWebs if (EncasingWebs_Timer < diff) { DoCast(m_creature->getVictim(),SPELL_ENCASINGWEBS); EncasingWebs_Timer = 30000; }else EncasingWebs_Timer -= diff; //PierceArmor if (PierceArmor_Timer < diff) { if (rand()%100 < 75) DoCast(m_creature->getVictim(),SPELL_PIERCEARMOR); PierceArmor_Timer = 35000; }else PierceArmor_Timer -= diff; //CryptScarabs if (CryptScarabs_Timer < diff) { DoCast(m_creature->getVictim(),SPELL_CRYPT_SCARABS); CryptScarabs_Timer = 16000; }else CryptScarabs_Timer -= diff; //RaiseUndeadScarab if (RaiseUndeadScarab_Timer < diff) { RaiseUndeadScarab(m_creature->getVictim()); RaiseUndeadScarab_Timer = 18000; }else RaiseUndeadScarab_Timer -= diff; DoMeleeAttackIfReady(); }
void UpdateAI(const uint32 diff) { if (!UpdateVictim()) return; //EncasingWebs if (EncasingWebs_Timer <= diff) { DoCast(me->getVictim(), SPELL_ENCASINGWEBS); EncasingWebs_Timer = 30000; } else EncasingWebs_Timer -= diff; //PierceArmor if (PierceArmor_Timer <= diff) { if (urand(0,3) < 2) DoCast(me->getVictim(), SPELL_PIERCEARMOR); PierceArmor_Timer = 35000; } else PierceArmor_Timer -= diff; //CryptScarabs_Timer if (CryptScarabs_Timer <= diff) { DoCast(me->getVictim(), SPELL_CRYPT_SCARABS); CryptScarabs_Timer = 20000; } else CryptScarabs_Timer -= diff; //RaiseUndeadScarab if (RaiseUndeadScarab_Timer <= diff) { RaiseUndeadScarab(me->getVictim()); RaiseUndeadScarab_Timer = 16000; } else RaiseUndeadScarab_Timer -= diff; DoMeleeAttackIfReady(); }