From 5b719bab05648800ad7ac42cf795a14f6d3f0045 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Mon, 30 May 2022 11:36:58 +0200 Subject: [PATCH] fix(Core): Crashfix. (#11898) Fixes #11861 --- .../instance_blackrock_spire.cpp | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp index 25c48eff9..8bd9dadcd 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp @@ -78,7 +78,7 @@ public: { uint32 CurrentSolakarWave = 0; uint32 SolakarState = NOT_STARTED; // there should be a global instance encounter state, where is it? - std::vector SolakarSummons; + GuidVector SolakarSummons; instance_blackrock_spireMapScript(InstanceMap* map) : InstanceScript(map) { @@ -360,11 +360,11 @@ public: } break; 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(); @@ -429,11 +429,19 @@ public: { if (number < MAX_WAVE_COUNT) { - SolakarSummons.push_back(instance->SummonCreature(NPC_ROOKERY_GUARDIAN, SolakarPosLeft)); - SolakarSummons.push_back(instance->SummonCreature(NPC_ROOKERY_HATCHER, SolakarPosRight)); + if (Creature* summon = instance->SummonCreature(NPC_ROOKERY_GUARDIAN, SolakarPosLeft)) + { + SolakarSummons.push_back(summon->GetGUID()); + } + + if (Creature* summon = instance->SummonCreature(NPC_ROOKERY_HATCHER, SolakarPosRight)) + { + SolakarSummons.push_back(summon->GetGUID()); + } + 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); } @@ -441,7 +449,10 @@ public: } 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()); + } } }