Script/Misc: Fix two script crashes when spawned outside instance

also remove redundant null check in boss_lich_king_toc and an unused variable in npc_announcer_toc10
Closes #7785
This commit is contained in:
kaelima
2012-09-16 17:56:18 +02:00
parent bb03cfb0a2
commit b6ff06a796
2 changed files with 13 additions and 15 deletions
@@ -120,11 +120,8 @@ class npc_announcer_toc10 : public CreatureScript
{
npc_announcer_toc10AI(Creature* creature) : ScriptedAI(creature)
{
instance = creature->GetInstanceScript();
}
InstanceScript* instance;
void Reset()
{
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
@@ -274,7 +271,7 @@ class boss_lich_king_toc : public CreatureScript
void MovementInform(uint32 uiType, uint32 uiId)
{
if (uiType != POINT_MOTION_TYPE)
if (uiType != POINT_MOTION_TYPE || !instance)
return;
switch (uiId)
{
@@ -338,20 +335,18 @@ class boss_lich_king_toc : public CreatureScript
if (GameObject* go = instance->instance->GetGameObject(instance->GetData64(GO_ARGENT_COLISEUM_FLOOR)))
go->SetDestructibleState(GO_DESTRUCTIBLE_DAMAGED);
me->CastSpell(me, 69016, false);
if (instance)
{
instance->SetData(TYPE_LICH_KING, DONE);
Creature* temp = Unit::GetCreature(*me, instance->GetData64(NPC_ANUBARAK));
if (!temp || !temp->isAlive())
temp = me->SummonCreature(NPC_ANUBARAK, AnubarakLoc[0].GetPositionX(), AnubarakLoc[0].GetPositionY(), AnubarakLoc[0].GetPositionZ(), 3, TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME);
instance->SetData(TYPE_EVENT, 0);
}
me->DespawnOrUnsummon();
m_uiUpdateTimer = 20000;
break;
}
} else m_uiUpdateTimer -= uiDiff;
instance->SetData(TYPE_EVENT_TIMER, m_uiUpdateTimer);
}
};
@@ -125,6 +125,7 @@ public:
void Reset()
{
if (instance)
instance->SetData(DATA_PRINCEKELESETH_EVENT, NOT_STARTED);
events.Reset();
@@ -140,12 +141,14 @@ public:
void EnterCombat(Unit* /*who*/)
{
me->SetInCombatWithZone();
if (instance)
instance->SetData(DATA_PRINCEKELESETH_EVENT, IN_PROGRESS);
Talk(SAY_START_COMBAT);
}
void JustDied(Unit* /*killer*/)
{
if (instance)
instance->SetData(DATA_PRINCEKELESETH_EVENT, DONE);
summons.DespawnAll();
Talk(SAY_DEATH);