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:
+7
-12
@@ -120,11 +120,8 @@ class npc_announcer_toc10 : public CreatureScript
|
|||||||
{
|
{
|
||||||
npc_announcer_toc10AI(Creature* creature) : ScriptedAI(creature)
|
npc_announcer_toc10AI(Creature* creature) : ScriptedAI(creature)
|
||||||
{
|
{
|
||||||
instance = creature->GetInstanceScript();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
InstanceScript* instance;
|
|
||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
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)
|
void MovementInform(uint32 uiType, uint32 uiId)
|
||||||
{
|
{
|
||||||
if (uiType != POINT_MOTION_TYPE)
|
if (uiType != POINT_MOTION_TYPE || !instance)
|
||||||
return;
|
return;
|
||||||
switch (uiId)
|
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)))
|
if (GameObject* go = instance->instance->GetGameObject(instance->GetData64(GO_ARGENT_COLISEUM_FLOOR)))
|
||||||
go->SetDestructibleState(GO_DESTRUCTIBLE_DAMAGED);
|
go->SetDestructibleState(GO_DESTRUCTIBLE_DAMAGED);
|
||||||
me->CastSpell(me, 69016, false);
|
me->CastSpell(me, 69016, false);
|
||||||
if (instance)
|
instance->SetData(TYPE_LICH_KING, DONE);
|
||||||
{
|
Creature* temp = Unit::GetCreature(*me, instance->GetData64(NPC_ANUBARAK));
|
||||||
instance->SetData(TYPE_LICH_KING, DONE);
|
if (!temp || !temp->isAlive())
|
||||||
Creature* temp = Unit::GetCreature(*me, instance->GetData64(NPC_ANUBARAK));
|
temp = me->SummonCreature(NPC_ANUBARAK, AnubarakLoc[0].GetPositionX(), AnubarakLoc[0].GetPositionY(), AnubarakLoc[0].GetPositionZ(), 3, TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME);
|
||||||
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);
|
instance->SetData(TYPE_EVENT, 0);
|
||||||
}
|
|
||||||
me->DespawnOrUnsummon();
|
me->DespawnOrUnsummon();
|
||||||
m_uiUpdateTimer = 20000;
|
m_uiUpdateTimer = 20000;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else m_uiUpdateTimer -= uiDiff;
|
} else m_uiUpdateTimer -= uiDiff;
|
||||||
|
|
||||||
instance->SetData(TYPE_EVENT_TIMER, m_uiUpdateTimer);
|
instance->SetData(TYPE_EVENT_TIMER, m_uiUpdateTimer);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -125,7 +125,8 @@ public:
|
|||||||
|
|
||||||
void Reset()
|
void Reset()
|
||||||
{
|
{
|
||||||
instance->SetData(DATA_PRINCEKELESETH_EVENT, NOT_STARTED);
|
if (instance)
|
||||||
|
instance->SetData(DATA_PRINCEKELESETH_EVENT, NOT_STARTED);
|
||||||
|
|
||||||
events.Reset();
|
events.Reset();
|
||||||
events.ScheduleEvent(EVENT_SHADOWBOLT, urand(2,3)*IN_MILLISECONDS);
|
events.ScheduleEvent(EVENT_SHADOWBOLT, urand(2,3)*IN_MILLISECONDS);
|
||||||
@@ -140,13 +141,15 @@ public:
|
|||||||
void EnterCombat(Unit* /*who*/)
|
void EnterCombat(Unit* /*who*/)
|
||||||
{
|
{
|
||||||
me->SetInCombatWithZone();
|
me->SetInCombatWithZone();
|
||||||
instance->SetData(DATA_PRINCEKELESETH_EVENT, IN_PROGRESS);
|
if (instance)
|
||||||
|
instance->SetData(DATA_PRINCEKELESETH_EVENT, IN_PROGRESS);
|
||||||
Talk(SAY_START_COMBAT);
|
Talk(SAY_START_COMBAT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit* /*killer*/)
|
void JustDied(Unit* /*killer*/)
|
||||||
{
|
{
|
||||||
instance->SetData(DATA_PRINCEKELESETH_EVENT, DONE);
|
if (instance)
|
||||||
|
instance->SetData(DATA_PRINCEKELESETH_EVENT, DONE);
|
||||||
summons.DespawnAll();
|
summons.DespawnAll();
|
||||||
Talk(SAY_DEATH);
|
Talk(SAY_DEATH);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user