*fix crash in Illidan script
*only spawn parasites in first phase of fight *despawn spirits instead of killing them (looks better) --HG-- branch : trunk
This commit is contained in:
@@ -24,7 +24,7 @@ EndScriptData */
|
|||||||
#include "precompiled.h"
|
#include "precompiled.h"
|
||||||
#include "def_black_temple.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 GETUNIT(unit, guid) Unit* unit = Unit::GetUnit(*m_creature, guid)
|
||||||
#define GETCRE(cre, guid) Creature* cre = Unit::GetCreature(*m_creature, guid)
|
#define GETCRE(cre, guid) Creature* cre = Unit::GetCreature(*m_creature, guid)
|
||||||
#define HPPCT(unit) unit->GetHealth()*100 / unit->GetMaxHealth()
|
#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;
|
float x, y, z;
|
||||||
if(GETGO(Gate, GateGUID))
|
if(GETGO(Gate, GateGUID))
|
||||||
Gate->GetPosition(x, y, z);
|
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))
|
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)
|
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);
|
Spirit->SetVisibility(VISIBILITY_OFF);
|
||||||
SpiritGUID[i] = Spirit->GetGUID();
|
SpiritGUID[i] = Spirit->GetGUID();
|
||||||
@@ -1249,8 +1251,8 @@ struct TRINITY_DLL_DECL npc_akama_illidanAI : public ScriptedAI
|
|||||||
DoYell(SAY_AKAMA_BEWARE, LANG_UNIVERSAL, NULL);
|
DoYell(SAY_AKAMA_BEWARE, LANG_UNIVERSAL, NULL);
|
||||||
DoPlaySoundToSet(m_creature, SOUND_AKAMA_BEWARE);
|
DoPlaySoundToSet(m_creature, SOUND_AKAMA_BEWARE);
|
||||||
Channel->setDeathState(JUST_DIED);
|
Channel->setDeathState(JUST_DIED);
|
||||||
Spirit[0]->setDeathState(JUST_DIED);
|
Spirit[0]->SetVisibility(VISIBILITY_OFF);
|
||||||
Spirit[1]->setDeathState(JUST_DIED);
|
Spirit[1]->SetVisibility(VISIBILITY_OFF);
|
||||||
Timer = 3000;
|
Timer = 3000;
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
@@ -1731,6 +1733,8 @@ struct TRINITY_DLL_DECL mob_parasitic_shadowfiendAI : public ScriptedAI
|
|||||||
if(!m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND)
|
if(!m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND)
|
||||||
&& !m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND2))
|
&& !m_creature->getVictim()->HasAura(SPELL_PARASITIC_SHADOWFIEND2))
|
||||||
{
|
{
|
||||||
|
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->CastSpell(m_creature->getVictim(), SPELL_PARASITIC_SHADOWFIEND2, true, 0, 0, IllidanGUID); //do not stack
|
||||||
}
|
}
|
||||||
m_creature->AttackerStateUpdate(m_creature->getVictim());
|
m_creature->AttackerStateUpdate(m_creature->getVictim());
|
||||||
|
|||||||
Reference in New Issue
Block a user