aboutsummaryrefslogtreecommitdiff
path: root/src/scripts/outland
diff options
context:
space:
mode:
Diffstat (limited to 'src/scripts/outland')
-rw-r--r--src/scripts/outland/auchindoun/auchenai_crypts/boss_shirrak_the_dead_watcher.cpp10
-rw-r--r--src/scripts/outland/auchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp15
-rw-r--r--src/scripts/outland/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp21
-rw-r--r--src/scripts/outland/tempest_keep/arcatraz/instance_arcatraz.cpp122
4 files changed, 91 insertions, 77 deletions
diff --git a/src/scripts/outland/auchindoun/auchenai_crypts/boss_shirrak_the_dead_watcher.cpp b/src/scripts/outland/auchindoun/auchenai_crypts/boss_shirrak_the_dead_watcher.cpp
index fe8e00cea87..29808075fce 100644
--- a/src/scripts/outland/auchindoun/auchenai_crypts/boss_shirrak_the_dead_watcher.cpp
+++ b/src/scripts/outland/auchindoun/auchenai_crypts/boss_shirrak_the_dead_watcher.cpp
@@ -49,7 +49,7 @@ struct boss_shirrak_the_dead_watcherAI : public ScriptedAI
uint32 Carnivorousbite_Timer;
uint32 FocusFire_Timer;
- Unit *focusedTarget;
+ uint64 FocusedTargetGUID;
void Reset()
{
@@ -57,7 +57,7 @@ struct boss_shirrak_the_dead_watcherAI : public ScriptedAI
Attractmagic_Timer = 28000;
Carnivorousbite_Timer = 10000;
FocusFire_Timer = 17000;
- focusedTarget = NULL;
+ FocusedTargetGUID = 0;
}
void EnterCombat(Unit *who)
@@ -72,8 +72,8 @@ struct boss_shirrak_the_dead_watcherAI : public ScriptedAI
summoned->SetLevel(m_creature->getLevel());
summoned->addUnitState(UNIT_STAT_ROOT);
- if (focusedTarget)
- summoned->AI()->AttackStart(focusedTarget);
+ if (Unit *pFocusedTarget = Unit::GetUnit(*m_creature, FocusedTargetGUID))
+ summoned->AI()->AttackStart(pFocusedTarget);
}
}
@@ -127,7 +127,7 @@ struct boss_shirrak_the_dead_watcherAI : public ScriptedAI
Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,1);
if (pTarget && pTarget->GetTypeId() == TYPEID_PLAYER && pTarget->isAlive())
{
- focusedTarget = pTarget;
+ FocusedTargetGUID = pTarget->GetGUID();
m_creature->SummonCreature(ENTRY_FOCUS_FIRE,pTarget->GetPositionX(),pTarget->GetPositionY(),pTarget->GetPositionZ(),0,TEMPSUMMON_TIMED_DESPAWN,5500);
// TODO: Find better way to handle emote
diff --git a/src/scripts/outland/auchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp b/src/scripts/outland/auchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp
index f8f015634b6..346970b86b6 100644
--- a/src/scripts/outland/auchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp
+++ b/src/scripts/outland/auchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp
@@ -66,13 +66,13 @@ struct mob_voidtravelerAI : public ScriptedAI
{
}
- Unit *Vorpil;
+ uint64 VorpilGUID;
uint32 move;
bool sacrificed;
void Reset()
{
- Vorpil = NULL;
+ VorpilGUID = 0;
move = 0;
sacrificed = false;
}
@@ -81,13 +81,20 @@ struct mob_voidtravelerAI : public ScriptedAI
void UpdateAI(const uint32 diff)
{
- if (!Vorpil)
+ if (!VorpilGUID)
{
m_creature->Kill(m_creature);
return;
}
if (move <= diff)
{
+ Creature *Vorpil = Unit::GetCreature(*m_creature, VorpilGUID);
+ if(!Vorpil)
+ {
+ VorpilGUID = 0;
+ return;
+ }
+
if (sacrificed)
{
m_creature->AddAura(DUNGEON_MODE(SPELL_EMPOWERING_SHADOWS, H_SPELL_EMPOWERING_SHADOWS), Vorpil);
@@ -197,7 +204,7 @@ struct boss_grandmaster_vorpilAI : public ScriptedAI
void JustSummoned(Creature *summoned)
{
if (summoned && summoned->GetEntry() == MOB_VOID_TRAVELER)
- CAST_AI(mob_voidtravelerAI, summoned->AI())->Vorpil = m_creature;
+ CAST_AI(mob_voidtravelerAI, summoned->AI())->VorpilGUID = m_creature->GetGUID();
}
void KilledUnit(Unit *victim)
diff --git a/src/scripts/outland/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp b/src/scripts/outland/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp
index d16f9a9e57f..c3d50b78fda 100644
--- a/src/scripts/outland/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp
+++ b/src/scripts/outland/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp
@@ -574,7 +574,8 @@ struct mob_enchanted_elementalAI : public ScriptedAI
uint32 move;
uint32 phase;
float x, y, z;
- Creature *Vashj;
+
+ uint64 VashjGUID;
void Reset()
{
@@ -582,7 +583,8 @@ struct mob_enchanted_elementalAI : public ScriptedAI
m_creature->SetSpeed(MOVE_RUN,0.6);//run
move = 0;
phase = 1;
- Vashj = NULL;
+
+ VashjGUID = 0;
for (int i = 0; i<8; ++i)//search for nearest waypoint (up on stairs)
{
@@ -603,7 +605,7 @@ struct mob_enchanted_elementalAI : public ScriptedAI
}
}
if (pInstance)
- Vashj = Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_LADYVASHJ));
+ VashjGUID = pInstance->GetData64(DATA_LADYVASHJ);
}
void EnterCombat(Unit *who) { return; }
@@ -615,10 +617,8 @@ struct mob_enchanted_elementalAI : public ScriptedAI
if (!pInstance)
return;
- if (!Vashj)
- {
+ if (!VashjGUID)
return;
- }
if (move <= diff)
{
@@ -638,10 +638,13 @@ struct mob_enchanted_elementalAI : public ScriptedAI
if (m_creature->IsWithinDist3d(MIDDLE_X, MIDDLE_Y, MIDDLE_Z, 3))
DoCast(m_creature, SPELL_SURGE);
}
- if (!Vashj->isInCombat() || CAST_AI(boss_lady_vashjAI, Vashj->AI())->Phase != 2 || Vashj->isDead())
+ if (Creature *Vashj = Unit::GetCreature(*m_creature, VashjGUID))
{
- //call Unsummon()
- m_creature->Kill(m_creature);
+ if (!Vashj->isInCombat() || CAST_AI(boss_lady_vashjAI, Vashj->AI())->Phase != 2 || Vashj->isDead())
+ {
+ //call Unsummon()
+ m_creature->Kill(m_creature);
+ }
}
move = 1000;
} else move -= diff;
diff --git a/src/scripts/outland/tempest_keep/arcatraz/instance_arcatraz.cpp b/src/scripts/outland/tempest_keep/arcatraz/instance_arcatraz.cpp
index 039ee4a913d..0a903f6b84f 100644
--- a/src/scripts/outland/tempest_keep/arcatraz/instance_arcatraz.cpp
+++ b/src/scripts/outland/tempest_keep/arcatraz/instance_arcatraz.cpp
@@ -51,15 +51,14 @@ struct instance_arcatraz : public ScriptedInstance
uint32 m_auiEncounter[MAX_ENCOUNTER];
- GameObject *Containment_Core_Security_Field_Alpha;
- GameObject *Containment_Core_Security_Field_Beta;
- GameObject *Pod_Alpha;
- GameObject *Pod_Gamma;
- GameObject *Pod_Beta;
- GameObject *Pod_Delta;
- GameObject *Pod_Omega;
- GameObject *Wardens_Shield;
-
+ uint64 Containment_Core_Security_Field_AlphaGUID;
+ uint64 Containment_Core_Security_Field_BetaGUID;
+ uint64 Pod_AlphaGUID;
+ uint64 Pod_GammaGUID;
+ uint64 Pod_BetaGUID;
+ uint64 Pod_DeltaGUID;
+ uint64 Pod_OmegaGUID;
+ uint64 Wardens_ShieldGUID;
uint64 GoSphereGUID;
uint64 MellicharGUID;
@@ -67,15 +66,14 @@ struct instance_arcatraz : public ScriptedInstance
{
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
- Containment_Core_Security_Field_Alpha = NULL;
- Containment_Core_Security_Field_Beta = NULL;
- Pod_Alpha = NULL;
- Pod_Beta = NULL;
- Pod_Delta = NULL;
- Pod_Gamma = NULL;
- Pod_Omega = NULL;
- Wardens_Shield = NULL;
-
+ Containment_Core_Security_Field_AlphaGUID = 0;
+ Containment_Core_Security_Field_BetaGUID = 0;
+ Pod_AlphaGUID = 0;
+ Pod_GammaGUID = 0;
+ Pod_BetaGUID = 0;
+ Pod_DeltaGUID = 0;
+ Pod_OmegaGUID = 0;
+ Wardens_ShieldGUID = 0;
GoSphereGUID = 0;
MellicharGUID = 0;
}
@@ -92,15 +90,15 @@ struct instance_arcatraz : public ScriptedInstance
{
switch(pGo->GetEntry())
{
- case CONTAINMENT_CORE_SECURITY_FIELD_ALPHA: Containment_Core_Security_Field_Alpha = pGo; break;
- case CONTAINMENT_CORE_SECURITY_FIELD_BETA: Containment_Core_Security_Field_Beta = pGo; break;
- case SEAL_SPHERE: GoSphereGUID = pGo->GetGUID(); break;
- case POD_ALPHA: Pod_Alpha = pGo; break;
- case POD_BETA: Pod_Beta = pGo; break;
- case POD_DELTA: Pod_Delta = pGo; break;
- case POD_GAMMA: Pod_Gamma = pGo; break;
- case POD_OMEGA: Pod_Omega = pGo; break;
- //case WARDENS_SHIELD: Wardens_Shield = pGo; break;
+ case CONTAINMENT_CORE_SECURITY_FIELD_ALPHA: Containment_Core_Security_Field_AlphaGUID = pGo->GetGUID(); break;
+ case CONTAINMENT_CORE_SECURITY_FIELD_BETA: Containment_Core_Security_Field_BetaGUID = pGo->GetGUID(); break;
+ case POD_ALPHA: Pod_AlphaGUID = pGo->GetGUID(); break;
+ case POD_GAMMA: Pod_GammaGUID = pGo->GetGUID(); break;
+ case POD_BETA: Pod_BetaGUID = pGo->GetGUID(); break;
+ case POD_DELTA: Pod_DeltaGUID = pGo->GetGUID(); break;
+ case POD_OMEGA: Pod_OmegaGUID = pGo->GetGUID(); break;
+ case SEAL_SPHERE: GoSphereGUID = pGo->GetGUID(); break;
+ //case WARDENS_SHIELD: Wardens_ShieldGUID = pGo->GetGUID(); break;
}
}
@@ -120,15 +118,19 @@ struct instance_arcatraz : public ScriptedInstance
case TYPE_DALLIAH:
if (data == DONE)
- if (Containment_Core_Security_Field_Beta)
- Containment_Core_Security_Field_Beta->UseDoorOrButton();
+ {
+ if (GameObject *pGo = instance->GetGameObject(Containment_Core_Security_Field_BetaGUID))
+ pGo->UseDoorOrButton();
+ }
m_auiEncounter[1] = data;
break;
case TYPE_SOCCOTHRATES:
if (data == DONE)
- if (Containment_Core_Security_Field_Alpha)
- Containment_Core_Security_Field_Alpha->UseDoorOrButton();
+ {
+ if (GameObject *pGo = instance->GetGameObject(Containment_Core_Security_Field_AlphaGUID))
+ pGo->UseDoorOrButton();
+ }
m_auiEncounter[2] = data;
break;
@@ -146,43 +148,53 @@ struct instance_arcatraz : public ScriptedInstance
case TYPE_WARDEN_1:
if (data == IN_PROGRESS)
- if (Pod_Alpha)
- Pod_Alpha->UseDoorOrButton();
+ if (GameObject *pGo = instance->GetGameObject(Pod_AlphaGUID))
+ pGo->UseDoorOrButton();
m_auiEncounter[4] = data;
break;
case TYPE_WARDEN_2:
if (data == IN_PROGRESS)
- if (Pod_Beta)
- Pod_Beta->UseDoorOrButton();
+ {
+ if (GameObject *pGo = instance->GetGameObject(Pod_BetaGUID))
+ pGo->UseDoorOrButton();
+ }
m_auiEncounter[5] = data;
break;
case TYPE_WARDEN_3:
if (data == IN_PROGRESS)
- if (Pod_Delta)
- Pod_Delta->UseDoorOrButton();
+ {
+ if (GameObject *pGo = instance->GetGameObject(Pod_DeltaGUID))
+ pGo->UseDoorOrButton();
+ }
m_auiEncounter[6] = data;
break;
case TYPE_WARDEN_4:
if (data == IN_PROGRESS)
- if (Pod_Gamma)
- Pod_Gamma->UseDoorOrButton();
+ {
+ if (GameObject *pGo = instance->GetGameObject(Pod_GammaGUID))
+ pGo->UseDoorOrButton();
+ }
m_auiEncounter[7] = data;
break;
case TYPE_WARDEN_5:
if (data == IN_PROGRESS)
- if (Pod_Omega)
- Pod_Omega->UseDoorOrButton();
+ {
+ if (GameObject *pGo = instance->GetGameObject(Pod_OmegaGUID))
+ pGo->UseDoorOrButton();
+ }
m_auiEncounter[8] = data;
break;
case TYPE_SHIELD_OPEN:
if (data == IN_PROGRESS)
- if (Wardens_Shield)
- Wardens_Shield->UseDoorOrButton();
+ {
+ if (GameObject *pGo = instance->GetGameObject(Wardens_ShieldGUID))
+ pGo->UseDoorOrButton();
+ }
break;
}
}
@@ -191,18 +203,12 @@ struct instance_arcatraz : public ScriptedInstance
{
switch(type)
{
- case TYPE_HARBINGERSKYRISS:
- return m_auiEncounter[3];
- case TYPE_WARDEN_1:
- return m_auiEncounter[4];
- case TYPE_WARDEN_2:
- return m_auiEncounter[5];
- case TYPE_WARDEN_3:
- return m_auiEncounter[6];
- case TYPE_WARDEN_4:
- return m_auiEncounter[7];
- case TYPE_WARDEN_5:
- return m_auiEncounter[8];
+ case TYPE_HARBINGERSKYRISS: return m_auiEncounter[3];
+ case TYPE_WARDEN_1: return m_auiEncounter[4];
+ case TYPE_WARDEN_2: return m_auiEncounter[5];
+ case TYPE_WARDEN_3: return m_auiEncounter[6];
+ case TYPE_WARDEN_4: return m_auiEncounter[7];
+ case TYPE_WARDEN_5: return m_auiEncounter[8];
}
return 0;
}
@@ -211,10 +217,8 @@ struct instance_arcatraz : public ScriptedInstance
{
switch(data)
{
- case DATA_MELLICHAR:
- return MellicharGUID;
- case DATA_SPHERE_SHIELD:
- return GoSphereGUID;
+ case DATA_MELLICHAR: return MellicharGUID;
+ case DATA_SPHERE_SHIELD: return GoSphereGUID;
}
return 0;
}