aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Achievements/CriteriaHandler.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-12-31 11:53:12 +0100
committerShauren <shauren.trinity@gmail.com>2022-12-31 11:53:12 +0100
commit55091ff4bcf4500d0ebe9701e6dc121f5e6a3bb2 (patch)
tree54212430a73c70418f854cb1a7a4fb4eff5e02cb /src/server/game/Achievements/CriteriaHandler.cpp
parent23cb9592fc83957ce1a5cfb0b5bef0ce13c19edb (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.cpp24
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))