*Illidan script: Do not let shadowfiends attack Akama.

--HG--
branch : trunk
This commit is contained in:
megamage
2008-12-11 19:11:06 -06:00
parent f2028e1583
commit be4a689d1a
@@ -1736,14 +1736,14 @@ struct TRINITY_DLL_DECL mob_parasitic_shadowfiendAI : public ScriptedAI
DoCast(m_creature, SPELL_SHADOWFIEND_PASSIVE, true); DoCast(m_creature, SPELL_SHADOWFIEND_PASSIVE, true);
} }
void Aggro(Unit* who) {} void Aggro(Unit* who) { DoZoneInCombat(); }
void MoveInLineOfSight(Unit *who){}
void DoMeleeAttackIfReady() void DoMeleeAttackIfReady()
{ {
if( m_creature->isAttackReady() && m_creature->IsWithinMeleeRange(m_creature->getVictim())) if( m_creature->isAttackReady() && m_creature->IsWithinMeleeRange(m_creature->getVictim()))
{ {
if(!m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND, 0) && !m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND2, 0)) if(!m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND, 0)
&& !m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND2, 0))
{ {
m_creature->CastSpell(m_creature->getVictim(), SPELL_PARASITIC_SHADOWFIEND2, true, 0, 0, IllidanGUID); //do not stack m_creature->CastSpell(m_creature->getVictim(), SPELL_PARASITIC_SHADOWFIEND2, true, 0, 0, IllidanGUID); //do not stack
} }
@@ -1756,16 +1756,15 @@ struct TRINITY_DLL_DECL mob_parasitic_shadowfiendAI : public ScriptedAI
{ {
if(!m_creature->getVictim()) if(!m_creature->getVictim())
{ {
if(GETCRE(Illidan, IllidanGUID)) if(Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0, 999, true))
AttackStart(target);
else
{ {
if(Illidan->getVictim() && !Illidan->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND, 0)) m_creature->SetVisibility(VISIBILITY_OFF);
AttackStart(Illidan->getVictim()); m_creature->setDeathState(JUST_DIED);
else return;
AttackStart(((boss_illidan_stormrageAI*)Illidan->AI())->SelectUnit(SELECT_TARGET_RANDOM, 1));
} }
} }
else
DoMeleeAttackIfReady();
if(CheckTimer < diff) if(CheckTimer < diff)
{ {
@@ -1777,6 +1776,8 @@ struct TRINITY_DLL_DECL mob_parasitic_shadowfiendAI : public ScriptedAI
return; return;
}else CheckTimer = 5000; }else CheckTimer = 5000;
}else CheckTimer -= diff; }else CheckTimer -= diff;
DoMeleeAttackIfReady();
} }
}; };
@@ -1866,13 +1867,19 @@ void boss_illidan_stormrageAI::JustSummoned(Creature* summon)
switch(summon->GetEntry()) switch(summon->GetEntry())
{ {
case PARASITIC_SHADOWFIEND: case PARASITIC_SHADOWFIEND:
case SHADOW_DEMON:
{ {
Unit *target = SelectUnit(SELECT_TARGET_TOPAGGRO, 0, 999, true);
if(!target || target->HasAura(SPELL_PARASITIC_SHADOWFIEND, 0)
|| target->HasAura(SPELL_PARASITIC_SHADOWFIEND2, 0))
target = SelectUnit(SELECT_TARGET_RANDOM, 0, 999, true);
if(target)
summon->AI()->AttackStart(target);
}break;
case SHADOW_DEMON:
if(Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0, 999, true)) // only on players. if(Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0, 999, true)) // only on players.
{ {
summon->AddThreat(target, 5000000.0f); summon->AddThreat(target, 5000000.0f);
summon->AI()->AttackStart(target); summon->AI()->AttackStart(target);
}
}break; }break;
case MAIEV_SHADOWSONG: case MAIEV_SHADOWSONG:
{ {