aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/DungeonFinding/LFGMgr.cpp2
-rw-r--r--src/server/game/Instances/InstanceScript.cpp19
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;
}
}
}