diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp index 8f64c80ac..58a8b7ea9 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp @@ -127,6 +127,7 @@ struct MajordomoAddData uint32 creatureEntry; Position spawnPos; + MajordomoAddData() { } MajordomoAddData(ObjectGuid _guid, uint32 _creatureEntry, Position _spawnPos) : guid(_guid), creatureEntry(_creatureEntry), spawnPos(_spawnPos) { } }; @@ -172,7 +173,7 @@ public: if (summon) { static_minionsGUIDS.insert(summon->GetGUID()); - majordomoSummonsData.push_back(MajordomoAddData(summon->GetGUID(), summon->GetEntry(), summon->GetPosition())); + majordomoSummonsData[summon->GetGUID().GetCounter()] = MajordomoAddData(summon->GetGUID(), summon->GetEntry(), summon->GetPosition()); } } } @@ -197,18 +198,19 @@ public: events.SetPhase(PHASE_COMBAT); instance->SetBossState(DATA_MAJORDOMO_EXECUTUS, NOT_STARTED); - for (auto summon : majordomoSummonsData) + for (auto const& summon : majordomoSummonsData) { - if (ObjectAccessor::GetCreature(*me, summon.guid)) + if (ObjectAccessor::GetCreature(*me, summon.second.guid)) { continue; } - if (Creature* spawn = me->SummonCreature(summon.creatureEntry, summon.spawnPos)) + if (Creature* spawn = me->SummonCreature(summon.second.creatureEntry, summon.second.spawnPos)) { - static_minionsGUIDS.erase(summon.guid); // Erase the guid from the previous, no longer existing, spawn. + static_minionsGUIDS.erase(summon.second.guid); // Erase the guid from the previous, no longer existing, spawn. static_minionsGUIDS.insert(spawn->GetGUID()); - summon.guid = spawn->GetGUID(); + majordomoSummonsData.erase(summon.second.guid.GetCounter()); + majordomoSummonsData[spawn->GetGUID().GetCounter()] = MajordomoAddData(spawn->GetGUID(), spawn->GetEntry(), spawn->GetPosition()); } } } @@ -521,7 +523,7 @@ public: private: GuidSet static_minionsGUIDS; // contained data should be changed on encounter completion GuidSet aliveMinionsGUIDS; // used for calculations - std::list majordomoSummonsData; + std::unordered_map majordomoSummonsData; }; bool OnGossipHello(Player* player, Creature* creature) override