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.cpp14
1 files changed, 9 insertions, 5 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 8284c5a7238..25d8abfa242 100644
--- a/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp
+++ b/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp
@@ -24,7 +24,7 @@ EndScriptData */
#include "precompiled.h"
#include "def_black_temple.h"
-#define GETGO(obj, guid) GameObject* obj = pInstance->instance->GetGameObject(pInstance->GetData64(guid))
+#define GETGO(obj, guid) GameObject* obj = pInstance->instance->GetGameObject(guid)
#define GETUNIT(unit, guid) Unit* unit = Unit::GetUnit(*m_creature, guid)
#define GETCRE(cre, guid) Creature* cre = Unit::GetCreature(*m_creature, guid)
#define HPPCT(unit) unit->GetHealth()*100 / unit->GetMaxHealth()
@@ -1094,6 +1094,8 @@ struct TRINITY_DLL_DECL npc_akama_illidanAI : public ScriptedAI
float x, y, z;
if(GETGO(Gate, GateGUID))
Gate->GetPosition(x, y, z);
+ else
+ return;//if door not spawned, don't crash server
if(Creature* Channel = m_creature->SummonCreature(ILLIDAN_DOOR_TRIGGER, x, y, z+5, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 360000))
{
@@ -1104,7 +1106,7 @@ struct TRINITY_DLL_DECL npc_akama_illidanAI : public ScriptedAI
}
for(uint8 i = 0; i < 2; ++i)
- if(Creature* Spirit = m_creature->SummonCreature(i ? SPIRIT_OF_OLUM : SPIRIT_OF_UDALO, SpiritSpawns[i].x, SpiritSpawns[i].y, SpiritSpawns[i].z, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 360000))
+ if(Creature* Spirit = m_creature->SummonCreature(i ? SPIRIT_OF_OLUM : SPIRIT_OF_UDALO, SpiritSpawns[i].x, SpiritSpawns[i].y, SpiritSpawns[i].z, 0, TEMPSUMMON_TIMED_DESPAWN, 20000))
{
Spirit->SetVisibility(VISIBILITY_OFF);
SpiritGUID[i] = Spirit->GetGUID();
@@ -1249,8 +1251,8 @@ struct TRINITY_DLL_DECL npc_akama_illidanAI : public ScriptedAI
DoYell(SAY_AKAMA_BEWARE, LANG_UNIVERSAL, NULL);
DoPlaySoundToSet(m_creature, SOUND_AKAMA_BEWARE);
Channel->setDeathState(JUST_DIED);
- Spirit[0]->setDeathState(JUST_DIED);
- Spirit[1]->setDeathState(JUST_DIED);
+ Spirit[0]->SetVisibility(VISIBILITY_OFF);
+ Spirit[1]->SetVisibility(VISIBILITY_OFF);
Timer = 3000;
break;
case 6:
@@ -1731,7 +1733,9 @@ struct TRINITY_DLL_DECL mob_parasitic_shadowfiendAI : public ScriptedAI
if(!m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND)
&& !m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND2))
{
- m_creature->CastSpell(m_creature->getVictim(), SPELL_PARASITIC_SHADOWFIEND2, true, 0, 0, IllidanGUID); //do not stack
+ if(Creature* illidan = Unit::GetCreature((*m_creature),IllidanGUID))//summon only in 1. phase
+ if(((boss_illidan_stormrageAI*)illidan->AI())->Phase == PHASE_NORMAL)
+ m_creature->CastSpell(m_creature->getVictim(), SPELL_PARASITIC_SHADOWFIEND2, true, 0, 0, IllidanGUID); //do not stack
}
m_creature->AttackerStateUpdate(m_creature->getVictim());
m_creature->resetAttackTimer();