diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-12-31 11:53:12 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-12-31 11:53:12 +0100 |
| commit | 55091ff4bcf4500d0ebe9701e6dc121f5e6a3bb2 (patch) | |
| tree | 54212430a73c70418f854cb1a7a4fb4eff5e02cb /src/server/game/Achievements/CriteriaHandler.cpp | |
| parent | 23cb9592fc83957ce1a5cfb0b5bef0ce13c19edb (diff) | |
Core/Players: Fixed crashes when accessing ActivePlayerData::PvpInfo
Closes #28638
Diffstat (limited to 'src/server/game/Achievements/CriteriaHandler.cpp')
| -rw-r--r-- | src/server/game/Achievements/CriteriaHandler.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index 4cba6ab5b55..7345b40b0b1 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -3204,10 +3204,10 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 PvpTierEntry const* pvpTier = sPvpTierStore.LookupEntry(reqValue); if (!pvpTier) return false; - if (std::size_t(pvpTier->BracketID) >= referencePlayer->m_activePlayerData->PvpInfo.size()) + UF::PVPInfo const* pvpInfo = referencePlayer->GetPvpInfoForBracket(pvpTier->BracketID); + if (!pvpInfo) return false; - UF::PVPInfo const& pvpInfo = referencePlayer->m_activePlayerData->PvpInfo[pvpTier->BracketID]; - if (pvpTier->ID != pvpInfo.PvpTierID || *pvpInfo.Disqualified) + if (pvpTier->ID != pvpInfo->PvpTierID) return false; break; } @@ -3243,10 +3243,10 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 } case ModifierTreeType::PlayerPvpTierInBracketEqualOrGreaterThan: // 239 { - if (secondaryAsset >= referencePlayer->m_activePlayerData->PvpInfo.size()) + UF::PVPInfo const* pvpInfo = referencePlayer->GetPvpInfoForBracket(secondaryAsset); + if (!pvpInfo) return false; - UF::PVPInfo const& pvpInfo = referencePlayer->m_activePlayerData->PvpInfo[secondaryAsset]; - PvpTierEntry const* pvpTier = sPvpTierStore.LookupEntry(pvpInfo.PvpTierID); + PvpTierEntry const* pvpTier = sPvpTierStore.LookupEntry(pvpInfo->PvpTierID); if (!pvpTier) return false; if (pvpTier->Rank < int32(reqValue)) @@ -3725,19 +3725,19 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 PvpTierEntry const* pvpTier = sPvpTierStore.LookupEntry(reqValue); if (!pvpTier) return false; - if (std::size_t(pvpTier->BracketID) >= referencePlayer->m_activePlayerData->PvpInfo.size()) + UF::PVPInfo const* pvpInfo = referencePlayer->GetPvpInfoForBracket(pvpTier->BracketID); + if (!pvpInfo) return false; - UF::PVPInfo const& pvpInfo = referencePlayer->m_activePlayerData->PvpInfo[pvpTier->BracketID]; - if (pvpTier->ID != pvpInfo.WeeklyBestWinPvpTierID || *pvpInfo.Disqualified) + if (pvpTier->ID != pvpInfo->WeeklyBestWinPvpTierID) return false; break; } case ModifierTreeType::PlayerBestWeeklyWinPvpTierInBracketEqualOrGreaterThan: // 325 { - if (secondaryAsset >= referencePlayer->m_activePlayerData->PvpInfo.size()) + UF::PVPInfo const* pvpInfo = referencePlayer->GetPvpInfoForBracket(secondaryAsset); + if (!pvpInfo) return false; - UF::PVPInfo const& pvpInfo = referencePlayer->m_activePlayerData->PvpInfo[secondaryAsset]; - PvpTierEntry const* pvpTier = sPvpTierStore.LookupEntry(pvpInfo.WeeklyBestWinPvpTierID); + PvpTierEntry const* pvpTier = sPvpTierStore.LookupEntry(pvpInfo->WeeklyBestWinPvpTierID); if (!pvpTier) return false; if (pvpTier->Rank < int32(reqValue)) |
