aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp37
1 files changed, 22 insertions, 15 deletions
diff --git a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp
index 46a05fcf0cc..b50dd2d55c4 100644
--- a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp
+++ b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp
@@ -1736,14 +1736,14 @@ struct TRINITY_DLL_DECL mob_parasitic_shadowfiendAI : public ScriptedAI
DoCast(m_creature, SPELL_SHADOWFIEND_PASSIVE, true);
}
- void Aggro(Unit* who) {}
- void MoveInLineOfSight(Unit *who){}
+ void Aggro(Unit* who) { DoZoneInCombat(); }
void DoMeleeAttackIfReady()
{
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
}
@@ -1756,16 +1756,15 @@ struct TRINITY_DLL_DECL mob_parasitic_shadowfiendAI : public ScriptedAI
{
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))
- AttackStart(Illidan->getVictim());
- else
- AttackStart(((boss_illidan_stormrageAI*)Illidan->AI())->SelectUnit(SELECT_TARGET_RANDOM, 1));
+ m_creature->SetVisibility(VISIBILITY_OFF);
+ m_creature->setDeathState(JUST_DIED);
+ return;
}
}
- else
- DoMeleeAttackIfReady();
if(CheckTimer < diff)
{
@@ -1777,6 +1776,8 @@ struct TRINITY_DLL_DECL mob_parasitic_shadowfiendAI : public ScriptedAI
return;
}else CheckTimer = 5000;
}else CheckTimer -= diff;
+
+ DoMeleeAttackIfReady();
}
};
@@ -1866,13 +1867,19 @@ void boss_illidan_stormrageAI::JustSummoned(Creature* summon)
switch(summon->GetEntry())
{
case PARASITIC_SHADOWFIEND:
- case SHADOW_DEMON:
{
- if(Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0, 999, true)) // only on players.
- {
- summon->AddThreat(target, 5000000.0f);
+ 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.
+ {
+ summon->AddThreat(target, 5000000.0f);
+ summon->AI()->AttackStart(target);
}break;
case MAIEV_SHADOWSONG:
{