aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrazom62 <none@none>2010-03-28 11:06:19 +0200
committerTrazom62 <none@none>2010-03-28 11:06:19 +0200
commitc1678a9ab847fe78d202290155f962278679ece7 (patch)
tree2d22afb84af3724369b0ef41ae70f752b7a9b07b
parent756e3e3beca6d2420fad341f7ea43ccd1f3e9c33 (diff)
Fix crash in Mal'Ganis script + cleanup.
Fixes issue #1347. Thanks Johnholiver. --HG-- branch : trunk
-rw-r--r--src/scripts/kalimdor/caverns_of_time/culling_of_stratholme/boss_mal_ganis.cpp22
-rw-r--r--src/scripts/kalimdor/caverns_of_time/culling_of_stratholme/culling_of_stratholme.h1
-rw-r--r--src/scripts/kalimdor/caverns_of_time/culling_of_stratholme/instance_culling_of_stratholme.cpp5
3 files changed, 15 insertions, 13 deletions
diff --git a/src/scripts/kalimdor/caverns_of_time/culling_of_stratholme/boss_mal_ganis.cpp b/src/scripts/kalimdor/caverns_of_time/culling_of_stratholme/boss_mal_ganis.cpp
index 054669f7fea..e3b65fa62ae 100644
--- a/src/scripts/kalimdor/caverns_of_time/culling_of_stratholme/boss_mal_ganis.cpp
+++ b/src/scripts/kalimdor/caverns_of_time/culling_of_stratholme/boss_mal_ganis.cpp
@@ -86,7 +86,6 @@ struct boss_mal_ganisAI : public ScriptedAI
bool bYelled;
bool bYelled2;
- Creature *pArthas;
CombatPhases Phase;
ScriptedInstance* pInstance;
@@ -95,7 +94,6 @@ struct boss_mal_ganisAI : public ScriptedAI
{
bYelled = false;
bYelled2 = false;
- pArthas = NULL;
Phase = COMBAT;
uiCarrionSwarmTimer = 6000;
uiMindBlastTimer = 11000;
@@ -110,9 +108,6 @@ struct boss_mal_ganisAI : public ScriptedAI
void EnterCombat(Unit* who)
{
DoScriptText(SAY_AGGRO, m_creature);
-
- pArthas = GetClosestCreatureWithEntry(m_creature, NPC_ARTHAS, 150.0f);
-
if (pInstance)
pInstance->SetData(DATA_MAL_GANIS_EVENT, IN_PROGRESS);
}
@@ -153,13 +148,14 @@ struct boss_mal_ganisAI : public ScriptedAI
return;
}
- if (pArthas && pArthas->isDead())
- {
- EnterEvadeMode();
- m_creature->DisappearAndDie();
- if (pInstance)
- pInstance->SetData(DATA_MAL_GANIS_EVENT, FAIL);
- }
+ if (Creature* pArthas = m_creature->GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_ARTHAS) : 0))
+ if (pArthas->isDead())
+ {
+ EnterEvadeMode();
+ m_creature->DisappearAndDie();
+ if (pInstance)
+ pInstance->SetData(DATA_MAL_GANIS_EVENT, FAIL);
+ }
if (uiCarrionSwarmTimer < diff)
{
@@ -202,7 +198,7 @@ struct boss_mal_ganisAI : public ScriptedAI
uiOutroTimer = 8000;
break;
case 2:
- m_creature->SetUInt64Value(UNIT_FIELD_TARGET, pArthas->GetGUID());
+ m_creature->SetUInt64Value(UNIT_FIELD_TARGET, pInstance ? pInstance->GetData64(DATA_ARTHAS) : 0);
m_creature->HandleEmoteCommand(29);
DoScriptText(SAY_ESCAPE_SPEECH_2, m_creature);
++uiOutroStep;
diff --git a/src/scripts/kalimdor/caverns_of_time/culling_of_stratholme/culling_of_stratholme.h b/src/scripts/kalimdor/caverns_of_time/culling_of_stratholme/culling_of_stratholme.h
index ed3230b7526..d020770bb77 100644
--- a/src/scripts/kalimdor/caverns_of_time/culling_of_stratholme/culling_of_stratholme.h
+++ b/src/scripts/kalimdor/caverns_of_time/culling_of_stratholme/culling_of_stratholme.h
@@ -31,6 +31,7 @@ enum Data
enum Data64
{
+ DATA_ARTHAS,
DATA_MEATHOOK,
DATA_SALRAMM,
DATA_EPOCH,
diff --git a/src/scripts/kalimdor/caverns_of_time/culling_of_stratholme/instance_culling_of_stratholme.cpp b/src/scripts/kalimdor/caverns_of_time/culling_of_stratholme/instance_culling_of_stratholme.cpp
index 85561e30579..b034c7e5c28 100644
--- a/src/scripts/kalimdor/caverns_of_time/culling_of_stratholme/instance_culling_of_stratholme.cpp
+++ b/src/scripts/kalimdor/caverns_of_time/culling_of_stratholme/instance_culling_of_stratholme.cpp
@@ -33,6 +33,7 @@ struct instance_culling_of_stratholme : public ScriptedInstance
{
instance_culling_of_stratholme(Map* pMap) : ScriptedInstance(pMap) {Initialize();};
+ uint64 uiArthas;
uint64 uiMeathook;
uint64 uiSalramm;
uint64 uiEpoch;
@@ -60,6 +61,9 @@ struct instance_culling_of_stratholme : public ScriptedInstance
{
switch(pCreature->GetEntry())
{
+ case NPC_ARTHAS:
+ uiArthas = pCreature->GetGUID();
+ break;
case NPC_MEATHOOK:
uiMeathook = pCreature->GetGUID();
break;
@@ -162,6 +166,7 @@ struct instance_culling_of_stratholme : public ScriptedInstance
{
switch(identifier)
{
+ case DATA_ARTHAS: return uiArthas;
case DATA_MEATHOOK: return uiMeathook;
case DATA_SALRAMM: return uiSalramm;
case DATA_EPOCH: return uiEpoch;