Public feed
#725549
/*######
23 ## mob_infested_root_walker
24 ######*/
25
26 struct MANGOS_DLL_DECL mob_infested_root_walkerAI : public ScriptedAI
27 {
28 mob_infested_root_walkerAI(Creature *c) : ScriptedAI(c) {EnterEvadeMode();}
29
30 void EnterEvadeMode()
31 {
32 m_creature->RemoveAllAuras();
33 m_creature->DeleteThreatList();
34 m_creature->CombatStop();
35 DoGoHome();
36
37 //m_creature->CastSpell(m_creature,7941,true);//Immunity: Nature
38 }
39
40 void DamageTaken(Unit *done_by, uint32 &damage)
41 {
42 if (done_by->GetTypeId() == TYPEID_PLAYER)
43 {
44 if( ((Player*)done_by)->GetQuestStatus(10896) == QUEST_STATUS_INCOMPLETE && !((Player*)done_by)->GetReqKillOrCastCurrentCount(10896, m_creature->GetEntry()) )
45 {
46 if (m_creature->GetHealth() <= damage)
47 {
48 if (rand()%100 < 75)
49 m_creature->CastSpell(m_creature,39130,true);//Summon Wood Mites
50 }
51 }
52 }
53 }
54
55 void AttackStart(Unit *who)
56 {
57 if (!who)
58 return;
59
60 if (who->isTargetableForAttack() && who!= m_creature)
61 {
62 //Begin melee attack if we are within range
63 DoStartMeleeAttack(who);
64 }
65 }
66
67 void MoveInLineOfSight(Unit *who)
68 {
69 if (!who || m_creature->getVictim())
70 return;
71
72 if (who->isTargetableForAttack() && who->isInAccessablePlaceFor(m_creature) && m_creature->IsHostileTo(who))
73 {
74 float attackRadius = m_creature->GetAttackDistance(who);
75 if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->GetDistanceZ(who) <= CREATURE_Z_ATTACK_RANGE && m_creature->IsWithinLOSInMap(who))
76 {
77 if(who->HasStealthAura())
78 who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);
79
80 //Begin melee attack if we are within range
81 DoStartMeleeAttack(who);
82 }
83 }
84 }
85 };
86 CreatureAI* GetAI_mob_infested_root_walker(Creature *_Creature)
87 {
88 return new mob_infested_root_walkerAI (_Creature);
89 }