diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/DungeonFinding/LFGMgr.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Instances/InstanceScript.cpp | 19 |
2 files changed, 9 insertions, 12 deletions
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index b174dc0a7ab..5ae5208d3db 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -1459,7 +1459,7 @@ void LFGMgr::OnDungeonEncounterDone(ObjectGuid gguid, std::array<uint32, 4> cons uint32 gDungeonId = GetDungeon(gguid); LFGDungeonData const* dungeonDone = GetLFGDungeon(gDungeonId); // LFGDungeons can point to a DungeonEncounter from any difficulty so we need this kind of lenient check - if (std::find(dungeonEncounterIds.begin(), dungeonEncounterIds.end(), dungeonDone->finalDungeonEncounterId) == dungeonEncounterIds.end()) + if (!dungeonDone->finalDungeonEncounterId || !advstd::ranges::contains(dungeonEncounterIds, dungeonDone->finalDungeonEncounterId)) return; FinishDungeon(gguid, gDungeonId, currMap); diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index 6399bd29399..26cbfd86a21 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -908,20 +908,17 @@ void InstanceScript::SendBossKillCredit(uint32 encounterId) void InstanceScript::UpdateLfgEncounterState(BossInfo const* bossInfo) { - for (auto const& ref : instance->GetPlayers()) + for (MapReference const& ref : instance->GetPlayers()) { - if (Player* player = ref.GetSource()) + if (Group* grp = ref.GetSource()->GetGroup()) { - if (Group* grp = player->GetGroup()) + if (grp->isLFGGroup()) { - if (grp->isLFGGroup()) - { - std::array<uint32, MAX_DUNGEON_ENCOUNTERS_PER_BOSS> dungeonEncounterIds; - std::transform(bossInfo->DungeonEncounters.begin(), bossInfo->DungeonEncounters.end(), dungeonEncounterIds.begin(), - [](DungeonEncounterEntry const* entry) { return entry->ID; }); - sLFGMgr->OnDungeonEncounterDone(grp->GetGUID(), dungeonEncounterIds, instance); - break; - } + std::array<uint32, MAX_DUNGEON_ENCOUNTERS_PER_BOSS> dungeonEncounterIds; + std::ranges::transform(bossInfo->DungeonEncounters, dungeonEncounterIds.begin(), + [](DungeonEncounterEntry const* entry) { return entry ? entry->ID : 0u; }); + sLFGMgr->OnDungeonEncounterDone(grp->GetGUID(), dungeonEncounterIds, instance); + break; } } } |