aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Achievements/CriteriaHandler.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-07-12 16:29:00 +0200
committerShauren <shauren.trinity@gmail.com>2023-07-12 16:29:00 +0200
commit0cea730fa23473a85c47451c3bd13df816f2b6e4 (patch)
tree960078875798c5846a1aa465051da876642067e1 /src/server/game/Achievements/CriteriaHandler.cpp
parent252da139adedd20c297ce7bdd2abed2234fa1bb6 (diff)
Core: Update to 10.1.5
Diffstat (limited to 'src/server/game/Achievements/CriteriaHandler.cpp')
-rw-r--r--src/server/game/Achievements/CriteriaHandler.cpp52
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;
}