fix(Core): Crashfix. (#11898)

Fixes #11861
This commit is contained in:
UltraNix
2022-05-30 11:36:58 +02:00
committed by GitHub
parent f85b62a77f
commit 5b719bab05
@@ -78,7 +78,7 @@ public:
{ {
uint32 CurrentSolakarWave = 0; uint32 CurrentSolakarWave = 0;
uint32 SolakarState = NOT_STARTED; // there should be a global instance encounter state, where is it? uint32 SolakarState = NOT_STARTED; // there should be a global instance encounter state, where is it?
std::vector<TempSummon*> SolakarSummons; GuidVector SolakarSummons;
instance_blackrock_spireMapScript(InstanceMap* map) : InstanceScript(map) instance_blackrock_spireMapScript(InstanceMap* map) : InstanceScript(map)
{ {
@@ -360,11 +360,11 @@ public:
} }
break; break;
case FAIL: case FAIL:
for (const auto& creature : SolakarSummons) for (ObjectGuid const& guid : SolakarSummons)
{ {
if (creature) if (Creature* creature = instance->GetCreature(guid))
{ {
creature->RemoveFromWorld(); creature->DespawnOrUnsummon();
} }
} }
SolakarSummons.clear(); SolakarSummons.clear();
@@ -429,11 +429,19 @@ public:
{ {
if (number < MAX_WAVE_COUNT) if (number < MAX_WAVE_COUNT)
{ {
SolakarSummons.push_back(instance->SummonCreature(NPC_ROOKERY_GUARDIAN, SolakarPosLeft)); if (Creature* summon = instance->SummonCreature(NPC_ROOKERY_GUARDIAN, SolakarPosLeft))
SolakarSummons.push_back(instance->SummonCreature(NPC_ROOKERY_HATCHER, SolakarPosRight)); {
SolakarSummons.push_back(summon->GetGUID());
}
if (Creature* summon = instance->SummonCreature(NPC_ROOKERY_HATCHER, SolakarPosRight))
{
SolakarSummons.push_back(summon->GetGUID());
}
if (number == 0) if (number == 0)
{ {
if (Creature* FirstHatcher = SolakarSummons.back()) // works because we spawned a hatcher second if (Creature* FirstHatcher = instance->GetCreature(SolakarSummons.back())) // works because we spawned a hatcher second
{ {
FirstHatcher->AI()->Talk(SAY_SOLAKAR_FIRST_HATCHER); FirstHatcher->AI()->Talk(SAY_SOLAKAR_FIRST_HATCHER);
} }
@@ -441,7 +449,10 @@ public:
} }
else if (number == MAX_WAVE_COUNT) else if (number == MAX_WAVE_COUNT)
{ {
SolakarSummons.push_back(instance->SummonCreature(NPC_SOLAKAR, SolakarPosBoss)); if (Creature* summon = instance->SummonCreature(NPC_SOLAKAR, SolakarPosBoss))
{
SolakarSummons.push_back(summon->GetGUID());
}
} }
} }