diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-07-12 16:29:00 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-07-12 16:29:00 +0200 |
commit | 0cea730fa23473a85c47451c3bd13df816f2b6e4 (patch) | |
tree | 960078875798c5846a1aa465051da876642067e1 /src/server/game/Achievements/CriteriaHandler.cpp | |
parent | 252da139adedd20c297ce7bdd2abed2234fa1bb6 (diff) |
Core: Update to 10.1.5
Diffstat (limited to 'src/server/game/Achievements/CriteriaHandler.cpp')
-rw-r--r-- | src/server/game/Achievements/CriteriaHandler.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index 4900e4a3aff..9cee67b2058 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -3870,6 +3870,14 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 return false; break; } + case ModifierTreeType::PlayerSummonedBattlePetSpecies: // 352 + if (referencePlayer->m_playerData->CurrentBattlePetSpeciesID != int32(reqValue)) + return false; + break; + case ModifierTreeType::PlayerSummonedBattlePetIsMaxLevel: // 353 + if (referencePlayer->m_unitData->WildBattlePetLevel != BattlePets::MAX_BATTLE_PET_LEVEL) + return false; + break; case ModifierTreeType::PlayerHasAtLeastProfPathRanks: // 355 { auto traitNodeEntryRankCount = [referencePlayer, secondaryAsset]() @@ -3893,6 +3901,50 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 return false; break; } + case ModifierTreeType::PlayerHasItemTransmogrifiedToItemModifiedAppearance: // 358 + { + ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(reqValue); + + bool bagScanReachedEnd = referencePlayer->ForEachItem(ItemSearchLocation::Inventory, [referencePlayer, itemModifiedAppearance](Item const* item) + { + if (item->GetVisibleAppearanceModId(referencePlayer) == itemModifiedAppearance->ID) + return ItemSearchCallbackResult::Stop; + + if (int32(item->GetEntry()) == itemModifiedAppearance->ItemID) + return ItemSearchCallbackResult::Stop; + + return ItemSearchCallbackResult::Continue; + }); + if (bagScanReachedEnd) + return false; + break; + } + case ModifierTreeType::PlayerHasCompletedDungeonEncounterInDifficulty: // 366 + if (!referencePlayer->IsLockedToDungeonEncounter(reqValue, Difficulty(secondaryAsset))) + return false; + break; + case ModifierTreeType::PlayerIsBetweenQuests: // 369 + { + QuestStatus status = referencePlayer->GetQuestStatus(reqValue); + if (status == QUEST_STATUS_NONE || status == QUEST_STATUS_FAILED) + return false; + if (referencePlayer->IsQuestRewarded(secondaryAsset)) + return false; + break; + } + case ModifierTreeType::PlayerScenarioStepID: // 371 + { + Scenario const* scenario = referencePlayer->GetScenario(); + if (!scenario) + return false; + if (scenario->GetStep()->ID != reqValue) + return false; + break; + } + case ModifierTreeType::PlayerZPositionBelow: // 374 + if (referencePlayer->GetPositionZ() >= reqValue) + return false; + break; default: return false; } |