diff options
author | Meji <alvaromegias_46@hotmail.com> | 2021-09-08 22:07:01 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-08 22:07:01 +0200 |
commit | 0a83f748766c49775d76412d2b98bb9b9dc8c4df (patch) | |
tree | c91a91eaf934401238dfaadeb59407ecd043bbb6 /src/server/game | |
parent | f57cf66dac296ba3b3424fe7431f2032c019df94 (diff) |
Core/Achievements: Update CriteriaType enum (#26856)
Diffstat (limited to 'src/server/game')
48 files changed, 1483 insertions, 1378 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index fd77d880dfc..0674a28d559 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -57,8 +57,8 @@ AchievementMgr::~AchievementMgr() { } void AchievementMgr::CheckAllAchievementCriteria(Player* referencePlayer) { // suppress sending packets - for (uint32 i = 0; i < CRITERIA_TYPE_TOTAL; ++i) - UpdateCriteria(CriteriaTypes(i), 0, 0, 0, nullptr, referencePlayer); + for (uint32 i = 0; i < uint32(CriteriaType::Count); ++i) + UpdateCriteria(CriteriaType(i), 0, 0, 0, nullptr, referencePlayer); } bool AchievementMgr::HasAchieved(uint32 achievementId) const @@ -525,8 +525,8 @@ void PlayerAchievementMgr::CompletedAchievement(AchievementEntry const* achievem if (!(achievement->Flags & ACHIEVEMENT_FLAG_TRACKING_FLAG)) _achievementPoints += achievement->Points; - UpdateCriteria(CRITERIA_TYPE_COMPLETE_ACHIEVEMENT, achievement->ID, 0, 0, nullptr, referencePlayer); - UpdateCriteria(CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS, achievement->Points, 0, 0, nullptr, referencePlayer); + UpdateCriteria(CriteriaType::EarnAchievement, achievement->ID, 0, 0, nullptr, referencePlayer); + UpdateCriteria(CriteriaType::EarnAchievementPoints, achievement->Points, 0, 0, nullptr, referencePlayer); // reward items and titles if any AchievementReward const* reward = sAchievementMgr->GetAchievementReward(achievement); @@ -691,7 +691,7 @@ void PlayerAchievementMgr::SendPacket(WorldPacket const* data) const _owner->SendDirectMessage(data); } -CriteriaList const& PlayerAchievementMgr::GetCriteriaByType(CriteriaTypes type, uint32 asset) const +CriteriaList const& PlayerAchievementMgr::GetCriteriaByType(CriteriaType type, uint32 asset) const { return sCriteriaMgr->GetPlayerCriteriaByType(type, asset); } @@ -972,8 +972,8 @@ void GuildAchievementMgr::CompletedAchievement(AchievementEntry const* achieveme if (!(achievement->Flags & ACHIEVEMENT_FLAG_TRACKING_FLAG)) _achievementPoints += achievement->Points; - UpdateCriteria(CRITERIA_TYPE_COMPLETE_ACHIEVEMENT, achievement->ID, 0, 0, nullptr, referencePlayer); - UpdateCriteria(CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS, achievement->Points, 0, 0, nullptr, referencePlayer); + UpdateCriteria(CriteriaType::EarnAchievement, achievement->ID, 0, 0, nullptr, referencePlayer); + UpdateCriteria(CriteriaType::EarnAchievementPoints, achievement->Points, 0, 0, nullptr, referencePlayer); } void GuildAchievementMgr::SendCriteriaUpdate(Criteria const* entry, CriteriaProgress const* progress, Seconds /*timeElapsed*/, bool /*timedCompleted*/) const @@ -1026,7 +1026,7 @@ void GuildAchievementMgr::SendPacket(WorldPacket const* data) const _owner->BroadcastPacket(data); } -CriteriaList const& GuildAchievementMgr::GetCriteriaByType(CriteriaTypes type, uint32 /*asset*/) const +CriteriaList const& GuildAchievementMgr::GetCriteriaByType(CriteriaType type, uint32 /*asset*/) const { return sCriteriaMgr->GetGuildCriteriaByType(type); } diff --git a/src/server/game/Achievements/AchievementMgr.h b/src/server/game/Achievements/AchievementMgr.h index f11856a6345..29443a21055 100644 --- a/src/server/game/Achievements/AchievementMgr.h +++ b/src/server/game/Achievements/AchievementMgr.h @@ -103,7 +103,7 @@ protected: void SendPacket(WorldPacket const* data) const override; std::string GetOwnerInfo() const override; - CriteriaList const& GetCriteriaByType(CriteriaTypes type, uint32 asset) const override; + CriteriaList const& GetCriteriaByType(CriteriaType type, uint32 asset) const override; private: Player* _owner; @@ -136,7 +136,7 @@ protected: void SendPacket(WorldPacket const* data) const override; std::string GetOwnerInfo() const override; - CriteriaList const& GetCriteriaByType(CriteriaTypes type, uint32 asset) const override; + CriteriaList const& GetCriteriaByType(CriteriaType type, uint32 asset) const override; private: Guild* _owner; diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index d750d16cea9..aa4e43eedcc 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -57,35 +57,34 @@ bool CriteriaData::IsValid(Criteria const* criteria) TC_LOG_ERROR("sql.sql", "Table `criteria_data` for criteria (Entry: %u) contains a wrong data type (%u), ignored.", criteria->ID, DataType); return false; } - - switch (criteria->Entry->Type) + switch (CriteriaType(criteria->Entry->Type)) { - case CRITERIA_TYPE_KILL_CREATURE: - case CRITERIA_TYPE_KILL_CREATURE_TYPE: - case CRITERIA_TYPE_WIN_BG: - case CRITERIA_TYPE_FALL_WITHOUT_DYING: - case CRITERIA_TYPE_COMPLETE_QUEST: // only hardcoded list - case CRITERIA_TYPE_CAST_SPELL: - case CRITERIA_TYPE_WIN_RATED_ARENA: - case CRITERIA_TYPE_DO_EMOTE: - case CRITERIA_TYPE_SPECIAL_PVP_KILL: - case CRITERIA_TYPE_WIN_DUEL: - case CRITERIA_TYPE_LOOT_TYPE: - case CRITERIA_TYPE_CAST_SPELL2: - case CRITERIA_TYPE_BE_SPELL_TARGET: - case CRITERIA_TYPE_BE_SPELL_TARGET2: - case CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT: - case CRITERIA_TYPE_ROLL_NEED_ON_LOOT: - case CRITERIA_TYPE_ROLL_GREED_ON_LOOT: - case CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE: - case CRITERIA_TYPE_HONORABLE_KILL: - case CRITERIA_TYPE_COMPLETE_DAILY_QUEST: // only Children's Week achievements - case CRITERIA_TYPE_USE_ITEM: // only Children's Week achievements - case CRITERIA_TYPE_GET_KILLING_BLOWS: - case CRITERIA_TYPE_REACH_LEVEL: - case CRITERIA_TYPE_ON_LOGIN: - case CRITERIA_TYPE_LOOT_ANY_ITEM: - case CRITERIA_TYPE_OBTAIN_ANY_ITEM: + case CriteriaType::KillCreature: + case CriteriaType::KillAnyCreature: + case CriteriaType::WinBattleground: + case CriteriaType::MaxDistFallenWithoutDying: + case CriteriaType::CompleteQuest: // only hardcoded list + case CriteriaType::CastSpell: + case CriteriaType::WinAnyRankedArena: + case CriteriaType::DoEmote: + case CriteriaType::KillPlayer: + case CriteriaType::WinDuel: + case CriteriaType::GetLootByType: + case CriteriaType::LandTargetedSpellOnTarget: + case CriteriaType::BeSpellTarget: + case CriteriaType::GainAura: + case CriteriaType::EquipItemInSlot: + case CriteriaType::RollNeed: + case CriteriaType::RollGreed: + case CriteriaType::TrackedWorldStateUIModified: + case CriteriaType::EarnHonorableKill: + case CriteriaType::CompleteDailyQuest: // only Children's Week achievements + case CriteriaType::UseItem: // only Children's Week achievements + case CriteriaType::DeliveredKillingBlow: + case CriteriaType::ReachLevel: + case CriteriaType::Login: + case CriteriaType::LootAnyItem: + case CriteriaType::ObtainAnyItem: break; default: if (DataType != CRITERIA_DATA_TYPE_SCRIPT) @@ -407,7 +406,7 @@ bool CriteriaData::Meets(uint32 criteriaId, Player const* source, WorldObject co { Criteria const* entry = ASSERT_NOTNULL(sCriteriaMgr->GetCriteria(criteriaId)); - uint32 itemId = (entry->Entry->Type == CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT ? miscValue2 : miscValue1); + uint32 itemId = (CriteriaType(entry->Entry->Type) == CriteriaType::EquipItemInSlot ? miscValue2 : miscValue1); ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(itemId); if (!itemTemplate) return false; @@ -459,11 +458,11 @@ void CriteriaHandler::Reset() /** * this function will be called whenever the user might have done a criteria relevant action */ -void CriteriaHandler::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0*/, uint64 miscValue2 /*= 0*/, uint64 miscValue3 /*= 0*/, WorldObject const* ref /*= nullptr*/, Player* referencePlayer /*= nullptr*/) +void CriteriaHandler::UpdateCriteria(CriteriaType type, uint64 miscValue1 /*= 0*/, uint64 miscValue2 /*= 0*/, uint64 miscValue3 /*= 0*/, WorldObject const* ref /*= nullptr*/, Player* referencePlayer /*= nullptr*/) { - if (type >= CRITERIA_TYPE_TOTAL) + if (type >= CriteriaType::Count) { - TC_LOG_DEBUG("criteria", "CriteriaHandler::UpdateCriteria: Wrong criteria type %u", type); + TC_LOG_DEBUG("criteria", "CriteriaHandler::UpdateCriteria: Wrong criteria type %u", uint32(type)); return; } @@ -477,12 +476,12 @@ void CriteriaHandler::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0 if (referencePlayer->IsGameMaster()) { TC_LOG_DEBUG("criteria", "CriteriaHandler::UpdateCriteria: [Player %s GM mode on] %s, %s (%u), " UI64FMTD ", " UI64FMTD ", " UI64FMTD, - referencePlayer->GetName().c_str(), GetOwnerInfo().c_str(), CriteriaMgr::GetCriteriaTypeString(type), type, miscValue1, miscValue2, miscValue3); + referencePlayer->GetName().c_str(), GetOwnerInfo().c_str(), CriteriaMgr::GetCriteriaTypeString(type), uint32(type), miscValue1, miscValue2, miscValue3); return; } TC_LOG_DEBUG("criteria", "CriteriaHandler::UpdateCriteria(%s, %u, " UI64FMTD ", " UI64FMTD ", " UI64FMTD ") %s", - CriteriaMgr::GetCriteriaTypeString(type), type, miscValue1, miscValue2, miscValue3, GetOwnerInfo().c_str()); + CriteriaMgr::GetCriteriaTypeString(type), uint32(type), miscValue1, miscValue2, miscValue3, GetOwnerInfo().c_str()); CriteriaList const& criteriaList = GetCriteriaByType(type, uint32(miscValue1)); for (Criteria const* criteria : criteriaList) @@ -499,109 +498,109 @@ void CriteriaHandler::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0 switch (type) { // std. case: increment at 1 - case CRITERIA_TYPE_WIN_BG: - case CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS: - case CRITERIA_TYPE_LOSE_DUEL: - case CRITERIA_TYPE_CREATE_AUCTION: - case CRITERIA_TYPE_WON_AUCTIONS: /* FIXME: for online player only currently */ - case CRITERIA_TYPE_ROLL_NEED: - case CRITERIA_TYPE_ROLL_GREED: - case CRITERIA_TYPE_QUEST_ABANDONED: - case CRITERIA_TYPE_FLIGHT_PATHS_TAKEN: - case CRITERIA_TYPE_ACCEPTED_SUMMONINGS: - case CRITERIA_TYPE_LOOT_ANY_ITEM: - case CRITERIA_TYPE_OBTAIN_ANY_ITEM: - case CRITERIA_TYPE_DEATH: - case CRITERIA_TYPE_COMPLETE_DAILY_QUEST: - case CRITERIA_TYPE_COMPLETE_BATTLEGROUND: - case CRITERIA_TYPE_DEATH_AT_MAP: - case CRITERIA_TYPE_DEATH_IN_DUNGEON: - case CRITERIA_TYPE_KILLED_BY_CREATURE: - case CRITERIA_TYPE_KILLED_BY_PLAYER: - case CRITERIA_TYPE_DEATHS_FROM: - case CRITERIA_TYPE_BE_SPELL_TARGET: - case CRITERIA_TYPE_BE_SPELL_TARGET2: - case CRITERIA_TYPE_CAST_SPELL: - case CRITERIA_TYPE_CAST_SPELL2: - case CRITERIA_TYPE_WIN_RATED_ARENA: - case CRITERIA_TYPE_USE_ITEM: - case CRITERIA_TYPE_ROLL_NEED_ON_LOOT: - case CRITERIA_TYPE_ROLL_GREED_ON_LOOT: - case CRITERIA_TYPE_DO_EMOTE: - case CRITERIA_TYPE_USE_GAMEOBJECT: - case CRITERIA_TYPE_FISH_IN_GAMEOBJECT: - case CRITERIA_TYPE_WIN_DUEL: - case CRITERIA_TYPE_HK_CLASS: - case CRITERIA_TYPE_HK_RACE: - case CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE: - case CRITERIA_TYPE_HONORABLE_KILL: - case CRITERIA_TYPE_SPECIAL_PVP_KILL: - case CRITERIA_TYPE_GET_KILLING_BLOWS: - case CRITERIA_TYPE_HONORABLE_KILL_AT_AREA: - case CRITERIA_TYPE_WIN_ARENA: // This also behaves like CRITERIA_TYPE_WIN_RATED_ARENA - case CRITERIA_TYPE_ON_LOGIN: - case CRITERIA_TYPE_PLACE_GARRISON_BUILDING: - case CRITERIA_TYPE_UPGRADE_GARRISON_BUILDING: - case CRITERIA_TYPE_HONOR_LEVEL_REACHED: - case CRITERIA_TYPE_PRESTIGE_REACHED: - case CRITERIA_TYPE_APPEARANCE_UNLOCKED_BY_SLOT: - case CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED: - case CRITERIA_TYPE_COMPLETE_QUEST_ACCUMULATE: - case CRITERIA_TYPE_BOUGHT_ITEM_FROM_VENDOR: - case CRITERIA_TYPE_SOLD_ITEM_TO_VENDOR: - case CRITERIA_TYPE_TRAVELLED_TO_AREA: + case CriteriaType::WinBattleground: + case CriteriaType::TotalRespecs: + case CriteriaType::LoseDuel: + case CriteriaType::ItemsPostedAtAuction: + case CriteriaType::AuctionsWon: /* FIXME: for online player only currently */ + case CriteriaType::RollAnyNeed: + case CriteriaType::RollAnyGreed: + case CriteriaType::AbandonAnyQuest: + case CriteriaType::BuyTaxi: + case CriteriaType::AcceptSummon: + case CriteriaType::LootAnyItem: + case CriteriaType::ObtainAnyItem: + case CriteriaType::DieAnywhere: + case CriteriaType::CompleteDailyQuest: + case CriteriaType::ParticipateInBattleground: + case CriteriaType::DieOnMap: + case CriteriaType::DieInInstance: + case CriteriaType::KilledByCreature: + case CriteriaType::KilledByPlayer: + case CriteriaType::DieFromEnviromentalDamage: + case CriteriaType::BeSpellTarget: + case CriteriaType::GainAura: + case CriteriaType::CastSpell: + case CriteriaType::LandTargetedSpellOnTarget: + case CriteriaType::WinAnyRankedArena: + case CriteriaType::UseItem: + case CriteriaType::RollNeed: + case CriteriaType::RollGreed: + case CriteriaType::DoEmote: + case CriteriaType::UseGameobject: + case CriteriaType::CatchFishInFishingHole: + case CriteriaType::WinDuel: + case CriteriaType::DeliverKillingBlowToClass: + case CriteriaType::DeliverKillingBlowToRace: + case CriteriaType::TrackedWorldStateUIModified: + case CriteriaType::EarnHonorableKill: + case CriteriaType::KillPlayer: + case CriteriaType::DeliveredKillingBlow: + case CriteriaType::PVPKillInArea: + case CriteriaType::WinArena: // This also behaves like CriteriaType::WinAnyRankedArena + case CriteriaType::Login: + case CriteriaType::PlaceGarrisonBuilding: + case CriteriaType::ActivateAnyGarrisonBuilding: + case CriteriaType::HonorLevelIncrease: + case CriteriaType::PrestigeLevelIncrease: + case CriteriaType::LearnAnyTransmogInSlot: + case CriteriaType::CollectTransmogSetFromGroup: + case CriteriaType::CompleteAnyReplayQuest: + case CriteriaType::BuyItemsFromVendors: + case CriteriaType::SellItemsToVendors: + case CriteriaType::EnterTopLevelArea: SetCriteriaProgress(criteria, 1, referencePlayer, PROGRESS_ACCUMULATE); break; // std case: increment at miscValue1 - case CRITERIA_TYPE_MONEY_FROM_VENDORS: - case CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS: - case CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD: - case CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING: - case CRITERIA_TYPE_GOLD_SPENT_AT_BARBER: - case CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL: - case CRITERIA_TYPE_LOOT_MONEY: - case CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS:/* FIXME: for online player only currently */ - case CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED: - case CRITERIA_TYPE_TOTAL_HEALING_RECEIVED: - case CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS: - case CRITERIA_TYPE_DAMAGE_DONE: - case CRITERIA_TYPE_HEALING_DONE: - case CRITERIA_TYPE_HEART_OF_AZEROTH_ARTIFACT_POWER_EARNED: + case CriteriaType::MoneyEarnedFromSales: + case CriteriaType::MoneySpentOnRespecs: + case CriteriaType::MoneyEarnedFromQuesting: + case CriteriaType::MoneySpentOnTaxis: + case CriteriaType::MoneySpentAtBarberShop: + case CriteriaType::MoneySpentOnPostage: + case CriteriaType::MoneyLootedFromCreatures: + case CriteriaType::MoneyEarnedFromAuctions:/* FIXME: for online player only currently */ + case CriteriaType::TotalDamageTaken: + case CriteriaType::TotalHealReceived: + case CriteriaType::CompletedLFGDungeonWithStrangers: + case CriteriaType::DamageDealt: + case CriteriaType::HealingDone: + case CriteriaType::EarnArtifactXPForAzeriteItem: SetCriteriaProgress(criteria, miscValue1, referencePlayer, PROGRESS_ACCUMULATE); break; - case CRITERIA_TYPE_KILL_CREATURE: - case CRITERIA_TYPE_KILL_CREATURE_TYPE: - case CRITERIA_TYPE_LOOT_TYPE: - case CRITERIA_TYPE_OWN_ITEM: - case CRITERIA_TYPE_LOOT_ITEM: - case CRITERIA_TYPE_CURRENCY: + case CriteriaType::KillCreature: + case CriteriaType::KillAnyCreature: + case CriteriaType::GetLootByType: + case CriteriaType::AcquireItem: + case CriteriaType::LootItem: + case CriteriaType::CurrencyGained: SetCriteriaProgress(criteria, miscValue2, referencePlayer, PROGRESS_ACCUMULATE); break; // std case: high value at miscValue1 - case CRITERIA_TYPE_HIGHEST_AUCTION_BID: - case CRITERIA_TYPE_HIGHEST_AUCTION_SOLD: /* FIXME: for online player only currently */ - case CRITERIA_TYPE_HIGHEST_HIT_DEALT: - case CRITERIA_TYPE_HIGHEST_HIT_RECEIVED: - case CRITERIA_TYPE_HIGHEST_HEAL_CAST: - case CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED: - case CRITERIA_TYPE_HEART_OF_AZEROTH_LEVEL_REACHED: + case CriteriaType::HighestAuctionBid: + case CriteriaType::HighestAuctionSale: /* FIXME: for online player only currently */ + case CriteriaType::HighestDamageDone: + case CriteriaType::HighestDamageTaken: + case CriteriaType::HighestHealCast: + case CriteriaType::HighestHealReceived: + case CriteriaType::AzeriteLevelReached: SetCriteriaProgress(criteria, miscValue1, referencePlayer, PROGRESS_HIGHEST); break; - case CRITERIA_TYPE_REACH_LEVEL: + case CriteriaType::ReachLevel: SetCriteriaProgress(criteria, referencePlayer->getLevel(), referencePlayer); break; - case CRITERIA_TYPE_REACH_SKILL_LEVEL: + case CriteriaType::SkillRaised: if (uint32 skillvalue = referencePlayer->GetBaseSkillValue(criteria->Entry->Asset.SkillID)) SetCriteriaProgress(criteria, skillvalue, referencePlayer); break; - case CRITERIA_TYPE_LEARN_SKILL_LEVEL: + case CriteriaType::AchieveSkillStep: if (uint32 maxSkillvalue = referencePlayer->GetPureMaxSkillValue(criteria->Entry->Asset.SkillID)) SetCriteriaProgress(criteria, maxSkillvalue, referencePlayer); break; - case CRITERIA_TYPE_COMPLETE_QUEST_COUNT: + case CriteriaType::CompleteQuestsCount: SetCriteriaProgress(criteria, referencePlayer->GetRewardedQuestCount(), referencePlayer); break; - case CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY: + case CriteriaType::CompleteAnyDailyQuestPerDay: { time_t nextDailyResetTime = sWorld->GetNextDailyQuestsResetTime(); CriteriaProgress *progress = GetCriteriaProgress(criteria); @@ -631,7 +630,7 @@ void CriteriaHandler::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0 SetCriteriaProgress(criteria, 1, referencePlayer, progressType); break; } - case CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE: + case CriteriaType::CompleteQuestsInZone: { if (miscValue1) { @@ -652,37 +651,37 @@ void CriteriaHandler::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0 } break; } - case CRITERIA_TYPE_FALL_WITHOUT_DYING: + case CriteriaType::MaxDistFallenWithoutDying: // miscValue1 is the ingame fallheight*100 as stored in dbc SetCriteriaProgress(criteria, miscValue1, referencePlayer); break; - case CRITERIA_TYPE_COMPLETE_QUEST: - case CRITERIA_TYPE_LEARN_SPELL: - case CRITERIA_TYPE_EXPLORE_AREA: - case CRITERIA_TYPE_VISIT_BARBER_SHOP: - case CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT: - case CRITERIA_TYPE_EQUIP_ITEM: - case CRITERIA_TYPE_COMPLETE_ACHIEVEMENT: - case CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER: - case CRITERIA_TYPE_OWN_BATTLE_PET: - case CRITERIA_TYPE_ACTIVELY_REACH_LEVEL: + case CriteriaType::CompleteQuest: + case CriteriaType::LearnOrKnowSpell: + case CriteriaType::RevealWorldMapOverlay: + case CriteriaType::GotHaircut: + case CriteriaType::EquipItemInSlot: + case CriteriaType::EquipItem: + case CriteriaType::EarnAchievement: + case CriteriaType::RecruitGarrisonFollower: + case CriteriaType::LearnedNewPet: + case CriteriaType::ActivelyReachLevel: SetCriteriaProgress(criteria, 1, referencePlayer); break; - case CRITERIA_TYPE_BUY_BANK_SLOT: + case CriteriaType::BankSlotsPurchased: SetCriteriaProgress(criteria, referencePlayer->GetBankBagSlotCount(), referencePlayer); break; - case CRITERIA_TYPE_GAIN_REPUTATION: + case CriteriaType::ReputationGained: { int32 reputation = referencePlayer->GetReputationMgr().GetReputation(criteria->Entry->Asset.FactionID); if (reputation > 0) SetCriteriaProgress(criteria, reputation, referencePlayer); break; } - case CRITERIA_TYPE_GAIN_EXALTED_REPUTATION: + case CriteriaType::TotalExaltedFactions: SetCriteriaProgress(criteria, referencePlayer->GetReputationMgr().GetExaltedFactionCount(), referencePlayer); break; - case CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS: - case CRITERIA_TYPE_LEARN_SKILL_LINE: + case CriteriaType::LearnSpellFromSkillLine: + case CriteriaType::LearnTradeskillSkillLine: { uint32 spellCount = 0; for (PlayerSpellMap::const_iterator spellIter = referencePlayer->GetSpellMap().begin(); @@ -703,27 +702,27 @@ void CriteriaHandler::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0 SetCriteriaProgress(criteria, spellCount, referencePlayer); break; } - case CRITERIA_TYPE_GAIN_REVERED_REPUTATION: + case CriteriaType::TotalReveredFactions: SetCriteriaProgress(criteria, referencePlayer->GetReputationMgr().GetReveredFactionCount(), referencePlayer); break; - case CRITERIA_TYPE_GAIN_HONORED_REPUTATION: + case CriteriaType::TotalHonoredFactions: SetCriteriaProgress(criteria, referencePlayer->GetReputationMgr().GetHonoredFactionCount(), referencePlayer); break; - case CRITERIA_TYPE_KNOWN_FACTIONS: + case CriteriaType::TotalFactionsEncountered: SetCriteriaProgress(criteria, referencePlayer->GetReputationMgr().GetVisibleFactionCount(), referencePlayer); break; - case CRITERIA_TYPE_EARN_HONORABLE_KILL: + case CriteriaType::HonorableKills: SetCriteriaProgress(criteria, referencePlayer->m_activePlayerData->LifetimeHonorableKills, referencePlayer); break; - case CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED: + case CriteriaType::MostMoneyOwned: SetCriteriaProgress(criteria, referencePlayer->GetMoney(), referencePlayer, PROGRESS_HIGHEST); break; - case CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS: + case CriteriaType::EarnAchievementPoints: if (!miscValue1) continue; SetCriteriaProgress(criteria, miscValue1, referencePlayer, PROGRESS_ACCUMULATE); break; - case CRITERIA_TYPE_HIGHEST_PERSONAL_RATING: + case CriteriaType::EarnPersonalArenaRating: { uint32 reqTeamType = criteria->Entry->Asset.TeamType; @@ -755,97 +754,98 @@ void CriteriaHandler::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0 } break; } - case CRITERIA_TYPE_OWN_BATTLE_PET_COUNT: + case CriteriaType::UniquePetsOwned: SetCriteriaProgress(criteria, referencePlayer->GetSession()->GetBattlePetMgr()->GetPetUniqueSpeciesCount(), referencePlayer); break; - case CRITERIA_TYPE_REACH_GUILD_LEVEL: + case CriteriaType::GuildAttainedLevel: SetCriteriaProgress(criteria, miscValue1, referencePlayer); break; // FIXME: not triggered in code as result, need to implement - case CRITERIA_TYPE_COMPLETE_RAID: - case CRITERIA_TYPE_PLAY_ARENA: - case CRITERIA_TYPE_HIGHEST_TEAM_RATING: - case CRITERIA_TYPE_OWN_RANK: - case CRITERIA_TYPE_SPENT_GOLD_GUILD_REPAIRS: - case CRITERIA_TYPE_CRAFT_ITEMS_GUILD: - case CRITERIA_TYPE_CATCH_FROM_POOL: - case CRITERIA_TYPE_BUY_GUILD_BANK_SLOTS: - case CRITERIA_TYPE_EARN_GUILD_ACHIEVEMENT_POINTS: - case CRITERIA_TYPE_WIN_RATED_BATTLEGROUND: - case CRITERIA_TYPE_REACH_BG_RATING: - case CRITERIA_TYPE_BUY_GUILD_TABARD: - case CRITERIA_TYPE_COMPLETE_QUESTS_GUILD: - case CRITERIA_TYPE_HONORABLE_KILLS_GUILD: - case CRITERIA_TYPE_KILL_CREATURE_TYPE_GUILD: - case CRITERIA_TYPE_COMPLETE_ARCHAEOLOGY_PROJECTS: - case CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE_TYPE: - case CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE: - case CRITERIA_TYPE_LFR_DUNGEONS_COMPLETED: - case CRITERIA_TYPE_LFR_LEAVES: - case CRITERIA_TYPE_LFR_VOTE_KICKS_INITIATED_BY_PLAYER: - case CRITERIA_TYPE_LFR_VOTE_KICKS_NOT_INIT_BY_PLAYER: - case CRITERIA_TYPE_BE_KICKED_FROM_LFR: - case CRITERIA_TYPE_COUNT_OF_LFR_QUEUE_BOOSTS_BY_TANK: - case CRITERIA_TYPE_COMPLETE_SCENARIO_COUNT: - case CRITERIA_TYPE_COMPLETE_SCENARIO: - case CRITERIA_TYPE_CAPTURE_BATTLE_PET: - case CRITERIA_TYPE_WIN_PET_BATTLE: - case CRITERIA_TYPE_LEVEL_BATTLE_PET: - case CRITERIA_TYPE_CAPTURE_BATTLE_PET_CREDIT: - case CRITERIA_TYPE_LEVEL_BATTLE_PET_CREDIT: - case CRITERIA_TYPE_ENTER_AREA: - case CRITERIA_TYPE_LEAVE_AREA: - case CRITERIA_TYPE_COMPLETE_DUNGEON_ENCOUNTER: - case CRITERIA_TYPE_CONSTRUCT_GARRISON_BUILDING: - case CRITERIA_TYPE_UPGRADE_GARRISON: - case CRITERIA_TYPE_START_GARRISON_MISSION: - case CRITERIA_TYPE_COMPLETE_GARRISON_MISSION_COUNT: - case CRITERIA_TYPE_COMPLETE_GARRISON_MISSION: - case CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER_COUNT: - case CRITERIA_TYPE_LEARN_GARRISON_BLUEPRINT_COUNT: - case CRITERIA_TYPE_COMPLETE_GARRISON_SHIPMENT: - case CRITERIA_TYPE_RAISE_GARRISON_FOLLOWER_ITEM_LEVEL: - case CRITERIA_TYPE_RAISE_GARRISON_FOLLOWER_LEVEL: - case CRITERIA_TYPE_OWN_TOY: - case CRITERIA_TYPE_OWN_TOY_COUNT: - case CRITERIA_TYPE_OWN_HEIRLOOMS: - case CRITERIA_TYPE_SURVEY_GAMEOBJECT: - case CRITERIA_TYPE_CLEAR_DIGSITE: - case CRITERIA_TYPE_MANUAL_COMPLETE_CRITERIA: - case CRITERIA_TYPE_COMPLETE_CHALLENGE_MODE_GUILD: - case CRITERIA_TYPE_DEFEAT_CREATURE_GROUP: - case CRITERIA_TYPE_COMPLETE_CHALLENGE_MODE: - case CRITERIA_TYPE_SEND_EVENT: - case CRITERIA_TYPE_COOK_RECIPES_GUILD: - case CRITERIA_TYPE_EARN_PET_BATTLE_ACHIEVEMENT_POINTS: - case CRITERIA_TYPE_SEND_EVENT_SCENARIO: - case CRITERIA_TYPE_RELEASE_SPIRIT: - case CRITERIA_TYPE_OWN_PET: - case CRITERIA_TYPE_GARRISON_COMPLETE_DUNGEON_ENCOUNTER: - case CRITERIA_TYPE_COMPLETE_LFG_DUNGEON: - case CRITERIA_TYPE_LFG_VOTE_KICKS_INITIATED_BY_PLAYER: - case CRITERIA_TYPE_LFG_VOTE_KICKS_NOT_INIT_BY_PLAYER: - case CRITERIA_TYPE_BE_KICKED_FROM_LFG: - case CRITERIA_TYPE_LFG_LEAVES: - case CRITERIA_TYPE_COUNT_OF_LFG_QUEUE_BOOSTS_BY_TANK: - case CRITERIA_TYPE_REACH_AREATRIGGER_WITH_ACTIONSET: - case CRITERIA_TYPE_START_ORDER_HALL_MISSION: - case CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER_WITH_QUALITY: - case CRITERIA_TYPE_ARTIFACT_POWER_EARNED: - case CRITERIA_TYPE_ARTIFACT_TRAITS_UNLOCKED: - case CRITERIA_TYPE_ORDER_HALL_TALENT_LEARNED: - case CRITERIA_TYPE_ORDER_HALL_RECRUIT_TROOP: - case CRITERIA_TYPE_COMPLETE_WORLD_QUEST: - case CRITERIA_TYPE_GAIN_PARAGON_REPUTATION: - case CRITERIA_TYPE_EARN_HONOR_XP: - case CRITERIA_TYPE_RELIC_TALENT_UNLOCKED: - case CRITERIA_TYPE_REACH_ACCOUNT_HONOR_LEVEL: - case CRITERIA_TYPE_MYTHIC_KEYSTONE_COMPLETED: - case CRITERIA_TYPE_APPLY_CONDUIT: - case CRITERIA_TYPE_CONVERT_ITEMS_TO_CURRENCY: - case CRITERIA_TYPE_EXPANSION_LEVEL: - case CRITERIA_TYPE_OWN_ITEM_MODIFIED_APPEARANCE: - break; // Not implemented yet :( + case CriteriaType::RunInstance: + case CriteriaType::ParticipateInArena: + case CriteriaType::EarnTeamArenaRating: + case CriteriaType::EarnTitle: + case CriteriaType::MoneySpentOnGuildRepair: + case CriteriaType::CreatedItemsByCastingSpell: + case CriteriaType::FishInAnyPool: + case CriteriaType::GuildBankTabsPurchased: + case CriteriaType::EarnGuildAchievementPoints: + case CriteriaType::WinAnyBattleground: + case CriteriaType::EarnBattlegroundRating: + case CriteriaType::GuildTabardCreated: + case CriteriaType::CompleteQuestsCountForGuild: + case CriteriaType::HonorableKillsForGuild: + case CriteriaType::KillAnyCreatureForGuild: + case CriteriaType::CompleteAnyResearchProject: + case CriteriaType::CompleteGuildChallenge: + case CriteriaType::CompleteAnyGuildChallenge: + case CriteriaType::CompletedLFRDungeon: + case CriteriaType::AbandonedLFRDungeon: + case CriteriaType::KickInitiatorInLFRDungeon: + case CriteriaType::KickVoterInLFRDungeon: + case CriteriaType::KickTargetInLFRDungeon: + case CriteriaType::GroupedTankLeftEarlyInLFRDungeon: + case CriteriaType::CompleteAnyScenario: + case CriteriaType::CompleteScenario: + case CriteriaType::AccountObtainPetThroughBattle: + case CriteriaType::WinPetBattle: + case CriteriaType::BattlePetReachLevel: + case CriteriaType::PlayerObtainPetThroughBattle: + case CriteriaType::ActivelyEarnPetLevel: + case CriteriaType::EnterArea: + case CriteriaType::LeaveArea: + case CriteriaType::DefeatDungeonEncounter: + case CriteriaType::ActivateGarrisonBuilding: + case CriteriaType::UpgradeGarrison: + case CriteriaType::StartAnyGarrisonMissionWithFollowerType: + case CriteriaType::SucceedAnyGarrisonMissionWithFollowerType: + case CriteriaType::SucceedGarrisonMission: + case CriteriaType::RecruitAnyGarrisonFollower: + case CriteriaType::LearnAnyGarrisonBlueprint: + case CriteriaType::CollectGarrisonShipment: + case CriteriaType::ItemLevelChangedForGarrisonFollower: + case CriteriaType::LevelChangedForGarrisonFollower: + case CriteriaType::LearnToy: + case CriteriaType::LearnAnyToy: + case CriteriaType::LearnAnyHeirloom: + case CriteriaType::FindResearchObject: + case CriteriaType::ExhaustAnyResearchSite: + case CriteriaType::CompleteInternalCriteria: + case CriteriaType::CompleteAnyChallengeMode: + case CriteriaType::KilledAllUnitsInSpawnRegion: + case CriteriaType::CompleteChallengeMode: + case CriteriaType::PlayerTriggerGameEvent: + case CriteriaType::CreatedItemsByCastingSpellWithLimit: + case CriteriaType::BattlePetAchievementPointsEarned: + case CriteriaType::AnyoneTriggerGameEventScenario: + case CriteriaType::ReleasedSpirit: + case CriteriaType::AccountKnownPet: + case CriteriaType::DefeatDungeonEncounterWhileElegibleForLoot: + case CriteriaType::CompletedLFGDungeon: + case CriteriaType::KickInitiatorInLFGDungeon: + case CriteriaType::KickVoterInLFGDungeon: + case CriteriaType::KickTargetInLFGDungeon: + case CriteriaType::AbandonedLFGDungeon: + case CriteriaType::GroupedTankLeftEarlyInLFGDungeon: + case CriteriaType::EnterAreaTriggerWithActionSet: + case CriteriaType::StartGarrisonMission: + case CriteriaType::QualityUpgradedForGarrisonFollower: + case CriteriaType::EarnArtifactXP: + case CriteriaType::AnyArtifactPowerRankPurchased: + case CriteriaType::CompleteResearchGarrisonTalent: + case CriteriaType::RecruitAnyGarrisonTroop: + case CriteriaType::CompleteAnyWorldQuest: + case CriteriaType::ParagonLevelIncreaseWithFaction: + case CriteriaType::PlayerHasEarnedHonor: + case CriteriaType::ChooseRelicTalent: + case CriteriaType::AccountHonorLevelReached: + case CriteriaType::MythicPlusCompleted: + case CriteriaType::SocketAnySoulbindConduit: + case CriteriaType::ObtainAnyItemWithCurrencyValue: + case CriteriaType::EarnExpansionLevel: + case CriteriaType::LearnTransmog: + default: + break; // Not implemented yet :( } for (CriteriaTree const* tree : *trees) @@ -1151,121 +1151,121 @@ bool CriteriaHandler::IsCompletedCriteria(Criteria const* criteria, uint64 requi if (!progress) return false; - switch (CriteriaTypes(criteria->Entry->Type)) + switch (CriteriaType(criteria->Entry->Type)) { - case CRITERIA_TYPE_WIN_BG: - case CRITERIA_TYPE_KILL_CREATURE: - case CRITERIA_TYPE_REACH_LEVEL: - case CRITERIA_TYPE_REACH_GUILD_LEVEL: - case CRITERIA_TYPE_REACH_SKILL_LEVEL: - case CRITERIA_TYPE_COMPLETE_QUEST_COUNT: - case CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY: - case CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE: - case CRITERIA_TYPE_DAMAGE_DONE: - case CRITERIA_TYPE_HEALING_DONE: - case CRITERIA_TYPE_COMPLETE_DAILY_QUEST: - case CRITERIA_TYPE_FALL_WITHOUT_DYING: - case CRITERIA_TYPE_BE_SPELL_TARGET: - case CRITERIA_TYPE_BE_SPELL_TARGET2: - case CRITERIA_TYPE_CAST_SPELL: - case CRITERIA_TYPE_CAST_SPELL2: - case CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE: - case CRITERIA_TYPE_HONORABLE_KILL_AT_AREA: - case CRITERIA_TYPE_HONORABLE_KILL: - case CRITERIA_TYPE_EARN_HONORABLE_KILL: - case CRITERIA_TYPE_OWN_ITEM: - case CRITERIA_TYPE_WIN_RATED_ARENA: - case CRITERIA_TYPE_HIGHEST_PERSONAL_RATING: - case CRITERIA_TYPE_USE_ITEM: - case CRITERIA_TYPE_LOOT_ITEM: - case CRITERIA_TYPE_BUY_BANK_SLOT: - case CRITERIA_TYPE_GAIN_REPUTATION: - case CRITERIA_TYPE_GAIN_EXALTED_REPUTATION: - case CRITERIA_TYPE_VISIT_BARBER_SHOP: - case CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT: - case CRITERIA_TYPE_ROLL_NEED_ON_LOOT: - case CRITERIA_TYPE_ROLL_GREED_ON_LOOT: - case CRITERIA_TYPE_HK_CLASS: - case CRITERIA_TYPE_HK_RACE: - case CRITERIA_TYPE_DO_EMOTE: - case CRITERIA_TYPE_EQUIP_ITEM: - case CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD: - case CRITERIA_TYPE_LOOT_MONEY: - case CRITERIA_TYPE_USE_GAMEOBJECT: - case CRITERIA_TYPE_SPECIAL_PVP_KILL: - case CRITERIA_TYPE_FISH_IN_GAMEOBJECT: - case CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS: - case CRITERIA_TYPE_WIN_DUEL: - case CRITERIA_TYPE_LOOT_TYPE: - case CRITERIA_TYPE_LEARN_SKILL_LINE: - case CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS: - case CRITERIA_TYPE_GET_KILLING_BLOWS: - case CRITERIA_TYPE_CURRENCY: - case CRITERIA_TYPE_PLACE_GARRISON_BUILDING: - case CRITERIA_TYPE_OWN_BATTLE_PET_COUNT: - case CRITERIA_TYPE_APPEARANCE_UNLOCKED_BY_SLOT: - case CRITERIA_TYPE_GAIN_PARAGON_REPUTATION: - case CRITERIA_TYPE_EARN_HONOR_XP: - case CRITERIA_TYPE_RELIC_TALENT_UNLOCKED: - case CRITERIA_TYPE_REACH_ACCOUNT_HONOR_LEVEL: - case CRITERIA_TYPE_HEART_OF_AZEROTH_ARTIFACT_POWER_EARNED: - case CRITERIA_TYPE_HEART_OF_AZEROTH_LEVEL_REACHED: - case CRITERIA_TYPE_COMPLETE_QUEST_ACCUMULATE: - case CRITERIA_TYPE_BOUGHT_ITEM_FROM_VENDOR: - case CRITERIA_TYPE_SOLD_ITEM_TO_VENDOR: - case CRITERIA_TYPE_TRAVELLED_TO_AREA: + case CriteriaType::WinBattleground: + case CriteriaType::KillCreature: + case CriteriaType::ReachLevel: + case CriteriaType::GuildAttainedLevel: + case CriteriaType::SkillRaised: + case CriteriaType::CompleteQuestsCount: + case CriteriaType::CompleteAnyDailyQuestPerDay: + case CriteriaType::CompleteQuestsInZone: + case CriteriaType::DamageDealt: + case CriteriaType::HealingDone: + case CriteriaType::CompleteDailyQuest: + case CriteriaType::MaxDistFallenWithoutDying: + case CriteriaType::BeSpellTarget: + case CriteriaType::GainAura: + case CriteriaType::CastSpell: + case CriteriaType::LandTargetedSpellOnTarget: + case CriteriaType::TrackedWorldStateUIModified: + case CriteriaType::PVPKillInArea: + case CriteriaType::EarnHonorableKill: + case CriteriaType::HonorableKills: + case CriteriaType::AcquireItem: + case CriteriaType::WinAnyRankedArena: + case CriteriaType::EarnPersonalArenaRating: + case CriteriaType::UseItem: + case CriteriaType::LootItem: + case CriteriaType::BankSlotsPurchased: + case CriteriaType::ReputationGained: + case CriteriaType::TotalExaltedFactions: + case CriteriaType::GotHaircut: + case CriteriaType::EquipItemInSlot: + case CriteriaType::RollNeed: + case CriteriaType::RollGreed: + case CriteriaType::DeliverKillingBlowToClass: + case CriteriaType::DeliverKillingBlowToRace: + case CriteriaType::DoEmote: + case CriteriaType::EquipItem: + case CriteriaType::MoneyEarnedFromQuesting: + case CriteriaType::MoneyLootedFromCreatures: + case CriteriaType::UseGameobject: + case CriteriaType::KillPlayer: + case CriteriaType::CatchFishInFishingHole: + case CriteriaType::LearnSpellFromSkillLine: + case CriteriaType::WinDuel: + case CriteriaType::GetLootByType: + case CriteriaType::LearnTradeskillSkillLine: + case CriteriaType::CompletedLFGDungeonWithStrangers: + case CriteriaType::DeliveredKillingBlow: + case CriteriaType::CurrencyGained: + case CriteriaType::PlaceGarrisonBuilding: + case CriteriaType::UniquePetsOwned: + case CriteriaType::LearnAnyTransmogInSlot: + case CriteriaType::ParagonLevelIncreaseWithFaction: + case CriteriaType::PlayerHasEarnedHonor: + case CriteriaType::ChooseRelicTalent: + case CriteriaType::AccountHonorLevelReached: + case CriteriaType::EarnArtifactXPForAzeriteItem: + case CriteriaType::AzeriteLevelReached: + case CriteriaType::CompleteAnyReplayQuest: + case CriteriaType::BuyItemsFromVendors: + case CriteriaType::SellItemsToVendors: + case CriteriaType::EnterTopLevelArea: return progress->Counter >= requiredAmount; - case CRITERIA_TYPE_COMPLETE_ACHIEVEMENT: - case CRITERIA_TYPE_COMPLETE_QUEST: - case CRITERIA_TYPE_LEARN_SPELL: - case CRITERIA_TYPE_EXPLORE_AREA: - case CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER: - case CRITERIA_TYPE_OWN_BATTLE_PET: - case CRITERIA_TYPE_HONOR_LEVEL_REACHED: - case CRITERIA_TYPE_PRESTIGE_REACHED: - case CRITERIA_TYPE_ACTIVELY_REACH_LEVEL: - case CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED: + case CriteriaType::EarnAchievement: + case CriteriaType::CompleteQuest: + case CriteriaType::LearnOrKnowSpell: + case CriteriaType::RevealWorldMapOverlay: + case CriteriaType::RecruitGarrisonFollower: + case CriteriaType::LearnedNewPet: + case CriteriaType::HonorLevelIncrease: + case CriteriaType::PrestigeLevelIncrease: + case CriteriaType::ActivelyReachLevel: + case CriteriaType::CollectTransmogSetFromGroup: return progress->Counter >= 1; - case CRITERIA_TYPE_LEARN_SKILL_LEVEL: + case CriteriaType::AchieveSkillStep: return progress->Counter >= (requiredAmount * 75); - case CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS: + case CriteriaType::EarnAchievementPoints: return progress->Counter >= 9000; - case CRITERIA_TYPE_WIN_ARENA: + case CriteriaType::WinArena: return requiredAmount && progress->Counter >= requiredAmount; - case CRITERIA_TYPE_ON_LOGIN: + case CriteriaType::Login: return true; // handle all statistic-only criteria here - case CRITERIA_TYPE_COMPLETE_BATTLEGROUND: - case CRITERIA_TYPE_DEATH_AT_MAP: - case CRITERIA_TYPE_DEATH: - case CRITERIA_TYPE_DEATH_IN_DUNGEON: - case CRITERIA_TYPE_KILLED_BY_CREATURE: - case CRITERIA_TYPE_KILLED_BY_PLAYER: - case CRITERIA_TYPE_DEATHS_FROM: - case CRITERIA_TYPE_HIGHEST_TEAM_RATING: - case CRITERIA_TYPE_MONEY_FROM_VENDORS: - case CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS: - case CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS: - case CRITERIA_TYPE_GOLD_SPENT_AT_BARBER: - case CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL: - case CRITERIA_TYPE_LOSE_DUEL: - case CRITERIA_TYPE_KILL_CREATURE_TYPE: - case CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS: - case CRITERIA_TYPE_CREATE_AUCTION: - case CRITERIA_TYPE_HIGHEST_AUCTION_BID: - case CRITERIA_TYPE_HIGHEST_AUCTION_SOLD: - case CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED: - case CRITERIA_TYPE_WON_AUCTIONS: - case CRITERIA_TYPE_GAIN_REVERED_REPUTATION: - case CRITERIA_TYPE_GAIN_HONORED_REPUTATION: - case CRITERIA_TYPE_KNOWN_FACTIONS: - case CRITERIA_TYPE_LOOT_ANY_ITEM: - case CRITERIA_TYPE_OBTAIN_ANY_ITEM: - case CRITERIA_TYPE_ROLL_NEED: - case CRITERIA_TYPE_ROLL_GREED: - case CRITERIA_TYPE_QUEST_ABANDONED: - case CRITERIA_TYPE_FLIGHT_PATHS_TAKEN: - case CRITERIA_TYPE_ACCEPTED_SUMMONINGS: + case CriteriaType::ParticipateInBattleground: + case CriteriaType::DieOnMap: + case CriteriaType::DieAnywhere: + case CriteriaType::DieInInstance: + case CriteriaType::KilledByCreature: + case CriteriaType::KilledByPlayer: + case CriteriaType::DieFromEnviromentalDamage: + case CriteriaType::EarnTeamArenaRating: + case CriteriaType::MoneyEarnedFromSales: + case CriteriaType::MoneySpentOnRespecs: + case CriteriaType::TotalRespecs: + case CriteriaType::MoneySpentAtBarberShop: + case CriteriaType::MoneySpentOnPostage: + case CriteriaType::LoseDuel: + case CriteriaType::KillAnyCreature: + case CriteriaType::MoneyEarnedFromAuctions: + case CriteriaType::ItemsPostedAtAuction: + case CriteriaType::HighestAuctionBid: + case CriteriaType::HighestAuctionSale: + case CriteriaType::MostMoneyOwned: + case CriteriaType::AuctionsWon: + case CriteriaType::TotalReveredFactions: + case CriteriaType::TotalHonoredFactions: + case CriteriaType::TotalFactionsEncountered: + case CriteriaType::LootAnyItem: + case CriteriaType::ObtainAnyItem: + case CriteriaType::RollAnyNeed: + case CriteriaType::RollAnyGreed: + case CriteriaType::AbandonAnyQuest: + case CriteriaType::BuyTaxi: + case CriteriaType::AcceptSummon: default: break; } @@ -1339,87 +1339,87 @@ bool CriteriaHandler::ConditionsSatisfied(Criteria const* criteria, Player* refe bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 miscValue1, uint64 miscValue2, uint64 miscValue3, WorldObject const* ref, Player* referencePlayer) const { - switch (CriteriaTypes(criteria->Entry->Type)) + switch (CriteriaType(criteria->Entry->Type)) { - case CRITERIA_TYPE_ACCEPTED_SUMMONINGS: - case CRITERIA_TYPE_COMPLETE_DAILY_QUEST: - case CRITERIA_TYPE_CREATE_AUCTION: - case CRITERIA_TYPE_FALL_WITHOUT_DYING: - case CRITERIA_TYPE_FLIGHT_PATHS_TAKEN: - case CRITERIA_TYPE_GET_KILLING_BLOWS: - case CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS: - case CRITERIA_TYPE_GOLD_SPENT_AT_BARBER: - case CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL: - case CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS: - case CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING: - case CRITERIA_TYPE_HIGHEST_AUCTION_BID: - case CRITERIA_TYPE_HIGHEST_AUCTION_SOLD: - case CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED: - case CRITERIA_TYPE_HIGHEST_HEAL_CAST: - case CRITERIA_TYPE_HIGHEST_HIT_DEALT: - case CRITERIA_TYPE_HIGHEST_HIT_RECEIVED: - case CRITERIA_TYPE_HONORABLE_KILL: - case CRITERIA_TYPE_LOOT_ANY_ITEM: - case CRITERIA_TYPE_LOOT_MONEY: - case CRITERIA_TYPE_LOSE_DUEL: - case CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD: - case CRITERIA_TYPE_MONEY_FROM_VENDORS: - case CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS: - case CRITERIA_TYPE_OBTAIN_ANY_ITEM: - case CRITERIA_TYPE_QUEST_ABANDONED: - case CRITERIA_TYPE_REACH_GUILD_LEVEL: - case CRITERIA_TYPE_ROLL_GREED: - case CRITERIA_TYPE_ROLL_NEED: - case CRITERIA_TYPE_SPECIAL_PVP_KILL: - case CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED: - case CRITERIA_TYPE_TOTAL_HEALING_RECEIVED: - case CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS: - case CRITERIA_TYPE_VISIT_BARBER_SHOP: - case CRITERIA_TYPE_WIN_DUEL: - case CRITERIA_TYPE_WIN_RATED_ARENA: - case CRITERIA_TYPE_WON_AUCTIONS: - case CRITERIA_TYPE_COMPLETE_QUEST_ACCUMULATE: - case CRITERIA_TYPE_BOUGHT_ITEM_FROM_VENDOR: - case CRITERIA_TYPE_SOLD_ITEM_TO_VENDOR: + case CriteriaType::AcceptSummon: + case CriteriaType::CompleteDailyQuest: + case CriteriaType::ItemsPostedAtAuction: + case CriteriaType::MaxDistFallenWithoutDying: + case CriteriaType::BuyTaxi: + case CriteriaType::DeliveredKillingBlow: + case CriteriaType::MoneyEarnedFromAuctions: + case CriteriaType::MoneySpentAtBarberShop: + case CriteriaType::MoneySpentOnPostage: + case CriteriaType::MoneySpentOnRespecs: + case CriteriaType::MoneySpentOnTaxis: + case CriteriaType::HighestAuctionBid: + case CriteriaType::HighestAuctionSale: + case CriteriaType::HighestHealReceived: + case CriteriaType::HighestHealCast: + case CriteriaType::HighestDamageDone: + case CriteriaType::HighestDamageTaken: + case CriteriaType::EarnHonorableKill: + case CriteriaType::LootAnyItem: + case CriteriaType::MoneyLootedFromCreatures: + case CriteriaType::LoseDuel: + case CriteriaType::MoneyEarnedFromQuesting: + case CriteriaType::MoneyEarnedFromSales: + case CriteriaType::TotalRespecs: + case CriteriaType::ObtainAnyItem: + case CriteriaType::AbandonAnyQuest: + case CriteriaType::GuildAttainedLevel: + case CriteriaType::RollAnyGreed: + case CriteriaType::RollAnyNeed: + case CriteriaType::KillPlayer: + case CriteriaType::TotalDamageTaken: + case CriteriaType::TotalHealReceived: + case CriteriaType::CompletedLFGDungeonWithStrangers: + case CriteriaType::GotHaircut: + case CriteriaType::WinDuel: + case CriteriaType::WinAnyRankedArena: + case CriteriaType::AuctionsWon: + case CriteriaType::CompleteAnyReplayQuest: + case CriteriaType::BuyItemsFromVendors: + case CriteriaType::SellItemsToVendors: if (!miscValue1) return false; break; - case CRITERIA_TYPE_BUY_BANK_SLOT: - case CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY: - case CRITERIA_TYPE_COMPLETE_QUEST_COUNT: - case CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS: - case CRITERIA_TYPE_GAIN_EXALTED_REPUTATION: - case CRITERIA_TYPE_GAIN_HONORED_REPUTATION: - case CRITERIA_TYPE_GAIN_REVERED_REPUTATION: - case CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED: - case CRITERIA_TYPE_HIGHEST_PERSONAL_RATING: - case CRITERIA_TYPE_KNOWN_FACTIONS: - case CRITERIA_TYPE_REACH_LEVEL: - case CRITERIA_TYPE_ON_LOGIN: - case CRITERIA_TYPE_OWN_BATTLE_PET_COUNT: - break; - case CRITERIA_TYPE_COMPLETE_ACHIEVEMENT: + case CriteriaType::BankSlotsPurchased: + case CriteriaType::CompleteAnyDailyQuestPerDay: + case CriteriaType::CompleteQuestsCount: + case CriteriaType::EarnAchievementPoints: + case CriteriaType::TotalExaltedFactions: + case CriteriaType::TotalHonoredFactions: + case CriteriaType::TotalReveredFactions: + case CriteriaType::MostMoneyOwned: + case CriteriaType::EarnPersonalArenaRating: + case CriteriaType::TotalFactionsEncountered: + case CriteriaType::ReachLevel: + case CriteriaType::Login: + case CriteriaType::UniquePetsOwned: + break; + case CriteriaType::EarnAchievement: if (!RequiredAchievementSatisfied(criteria->Entry->Asset.AchievementID)) return false; break; - case CRITERIA_TYPE_WIN_BG: - case CRITERIA_TYPE_COMPLETE_BATTLEGROUND: - case CRITERIA_TYPE_DEATH_AT_MAP: + case CriteriaType::WinBattleground: + case CriteriaType::ParticipateInBattleground: + case CriteriaType::DieOnMap: if (!miscValue1 || uint32(criteria->Entry->Asset.MapID) != referencePlayer->GetMapId()) return false; break; - case CRITERIA_TYPE_KILL_CREATURE: - case CRITERIA_TYPE_KILLED_BY_CREATURE: + case CriteriaType::KillCreature: + case CriteriaType::KilledByCreature: if (!miscValue1 || uint32(criteria->Entry->Asset.CreatureID) != miscValue1) return false; break; - case CRITERIA_TYPE_REACH_SKILL_LEVEL: - case CRITERIA_TYPE_LEARN_SKILL_LEVEL: + case CriteriaType::SkillRaised: + case CriteriaType::AchieveSkillStep: // update at loading or specific skill update if (miscValue1 && miscValue1 != uint32(criteria->Entry->Asset.SkillID)) return false; break; - case CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE: + case CriteriaType::CompleteQuestsInZone: if (miscValue1) { Quest const* quest = sObjectMgr->GetQuestTemplate(miscValue1); @@ -1427,13 +1427,13 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis return false; } break; - case CRITERIA_TYPE_DEATH: + case CriteriaType::DieAnywhere: { if (!miscValue1) return false; break; } - case CRITERIA_TYPE_DEATH_IN_DUNGEON: + case CriteriaType::DieInInstance: { if (!miscValue1) return false; @@ -1447,15 +1447,15 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis return false; break; } - case CRITERIA_TYPE_KILLED_BY_PLAYER: + case CriteriaType::KilledByPlayer: if (!miscValue1 || !ref || ref->GetTypeId() != TYPEID_PLAYER) return false; break; - case CRITERIA_TYPE_DEATHS_FROM: - if (!miscValue1 || miscValue2 != uint32(criteria->Entry->Asset.DamageType)) + case CriteriaType::DieFromEnviromentalDamage: + if (!miscValue1 || miscValue2 != uint32(criteria->Entry->Asset.EnviromentalDamageType)) return false; break; - case CRITERIA_TYPE_COMPLETE_QUEST: + case CriteriaType::CompleteQuest: { // if miscValues != 0, it contains the questID. if (miscValue1) @@ -1475,37 +1475,37 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis return false; break; } - case CRITERIA_TYPE_BE_SPELL_TARGET: - case CRITERIA_TYPE_BE_SPELL_TARGET2: - case CRITERIA_TYPE_CAST_SPELL: - case CRITERIA_TYPE_CAST_SPELL2: + case CriteriaType::BeSpellTarget: + case CriteriaType::GainAura: + case CriteriaType::CastSpell: + case CriteriaType::LandTargetedSpellOnTarget: if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.SpellID)) return false; break; - case CRITERIA_TYPE_LEARN_SPELL: + case CriteriaType::LearnOrKnowSpell: if (miscValue1 && miscValue1 != uint32(criteria->Entry->Asset.SpellID)) return false; if (!referencePlayer->HasSpell(criteria->Entry->Asset.SpellID)) return false; break; - case CRITERIA_TYPE_LOOT_TYPE: + case CriteriaType::GetLootByType: // miscValue1 = itemId - miscValue2 = count of item loot // miscValue3 = loot_type (note: 0 = LOOT_CORPSE and then it ignored) if (!miscValue1 || !miscValue2 || !miscValue3 || miscValue3 != uint32(criteria->Entry->Asset.LootType)) return false; break; - case CRITERIA_TYPE_OWN_ITEM: + case CriteriaType::AcquireItem: if (miscValue1 && uint32(criteria->Entry->Asset.ItemID) != miscValue1) return false; break; - case CRITERIA_TYPE_USE_ITEM: - case CRITERIA_TYPE_LOOT_ITEM: - case CRITERIA_TYPE_EQUIP_ITEM: + case CriteriaType::UseItem: + case CriteriaType::LootItem: + case CriteriaType::EquipItem: if (!miscValue1 || uint32(criteria->Entry->Asset.ItemID )!= miscValue1) return false; break; - case CRITERIA_TYPE_EXPLORE_AREA: + case CriteriaType::RevealWorldMapOverlay: { WorldMapOverlayEntry const* worldOverlayEntry = sWorldMapOverlayStore.LookupEntry(criteria->Entry->Asset.WorldMapOverlayID); if (!worldOverlayEntry) @@ -1537,18 +1537,18 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis return false; break; } - case CRITERIA_TYPE_GAIN_REPUTATION: + case CriteriaType::ReputationGained: if (miscValue1 && miscValue1 != uint32(criteria->Entry->Asset.FactionID)) return false; break; - case CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT: - case CRITERIA_TYPE_APPEARANCE_UNLOCKED_BY_SLOT: + case CriteriaType::EquipItemInSlot: + case CriteriaType::LearnAnyTransmogInSlot: // miscValue1 = EquipmentSlot miscValue2 = itemid | itemModifiedAppearanceId if (!miscValue2 || miscValue1 != uint32(criteria->Entry->Asset.EquipmentSlot)) return false; break; - case CRITERIA_TYPE_ROLL_NEED_ON_LOOT: - case CRITERIA_TYPE_ROLL_GREED_ON_LOOT: + case CriteriaType::RollNeed: + case CriteriaType::RollGreed: { // miscValue1 = itemid miscValue2 = diced value if (!miscValue1 || miscValue2 != uint32(criteria->Entry->Asset.RollValue)) @@ -1559,12 +1559,12 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis return false; break; } - case CRITERIA_TYPE_DO_EMOTE: + case CriteriaType::DoEmote: if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.EmoteID)) return false; break; - case CRITERIA_TYPE_DAMAGE_DONE: - case CRITERIA_TYPE_HEALING_DONE: + case CriteriaType::DamageDealt: + case CriteriaType::HealingDone: if (!miscValue1) return false; @@ -1578,58 +1578,58 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis return false; } break; - case CRITERIA_TYPE_USE_GAMEOBJECT: - case CRITERIA_TYPE_FISH_IN_GAMEOBJECT: + case CriteriaType::UseGameobject: + case CriteriaType::CatchFishInFishingHole: if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.GameObjectID)) return false; break; - case CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS: - case CRITERIA_TYPE_LEARN_SKILL_LINE: + case CriteriaType::LearnSpellFromSkillLine: + case CriteriaType::LearnTradeskillSkillLine: if (miscValue1 && miscValue1 != uint32(criteria->Entry->Asset.SkillID)) return false; break; - case CRITERIA_TYPE_HK_CLASS: + case CriteriaType::DeliverKillingBlowToClass: if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.ClassID)) return false; break; - case CRITERIA_TYPE_HK_RACE: + case CriteriaType::DeliverKillingBlowToRace: if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.RaceID)) return false; break; - case CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE: - if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.ObjectiveId)) + case CriteriaType::TrackedWorldStateUIModified: + if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.WorldStateUIID)) return false; break; - case CRITERIA_TYPE_HONORABLE_KILL_AT_AREA: - case CRITERIA_TYPE_TRAVELLED_TO_AREA: + case CriteriaType::PVPKillInArea: + case CriteriaType::EnterTopLevelArea: if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.AreaID)) return false; break; - case CRITERIA_TYPE_CURRENCY: + case CriteriaType::CurrencyGained: if (!miscValue1 || !miscValue2 || int64(miscValue2) < 0 || miscValue1 != uint32(criteria->Entry->Asset.CurrencyID)) return false; - break; - case CRITERIA_TYPE_WIN_ARENA: + break; + case CriteriaType::WinArena: if (miscValue1 != uint32(criteria->Entry->Asset.MapID)) return false; break; - case CRITERIA_TYPE_HIGHEST_TEAM_RATING: + case CriteriaType::EarnTeamArenaRating: return false; - case CRITERIA_TYPE_PLACE_GARRISON_BUILDING: - case CRITERIA_TYPE_CONSTRUCT_GARRISON_BUILDING: + case CriteriaType::PlaceGarrisonBuilding: + case CriteriaType::ActivateGarrisonBuilding: if (miscValue1 != uint32(criteria->Entry->Asset.GarrBuildingID)) return false; break; - case CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER: + case CriteriaType::RecruitGarrisonFollower: if (miscValue1 != uint32(criteria->Entry->Asset.GarrFollowerID)) return false; break; - case CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED: + case CriteriaType::CollectTransmogSetFromGroup: if (miscValue1 != uint32(criteria->Entry->Asset.TransmogSetGroupID)) return false; break; - case CRITERIA_TYPE_ACTIVELY_REACH_LEVEL: + case CriteriaType::ActivelyReachLevel: if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.PlayerLevel)) return false; default: @@ -3758,399 +3758,472 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 char const* CriteriaMgr::GetCriteriaTypeString(uint32 type) { - return GetCriteriaTypeString(CriteriaTypes(type)); + return GetCriteriaTypeString(CriteriaType(type)); } -char const* CriteriaMgr::GetCriteriaTypeString(CriteriaTypes type) +char const* CriteriaMgr::GetCriteriaTypeString(CriteriaType type) { switch (type) { - case CRITERIA_TYPE_KILL_CREATURE: - return "KILL_CREATURE"; - case CRITERIA_TYPE_WIN_BG: - return "TYPE_WIN_BG"; - case CRITERIA_TYPE_COMPLETE_ARCHAEOLOGY_PROJECTS: - return "COMPLETE_RESEARCH"; - case CRITERIA_TYPE_SURVEY_GAMEOBJECT: - return "SURVEY_GAMEOBJECT"; - case CRITERIA_TYPE_REACH_LEVEL: - return "REACH_LEVEL"; - case CRITERIA_TYPE_CLEAR_DIGSITE: - return "CLEAR_DIGSITE"; - case CRITERIA_TYPE_REACH_SKILL_LEVEL: - return "REACH_SKILL_LEVEL"; - case CRITERIA_TYPE_COMPLETE_ACHIEVEMENT: - return "COMPLETE_ACHIEVEMENT"; - case CRITERIA_TYPE_COMPLETE_QUEST_COUNT: - return "COMPLETE_QUEST_COUNT"; - case CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY: - return "COMPLETE_DAILY_QUEST_DAILY"; - case CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE: - return "COMPLETE_QUESTS_IN_ZONE"; - case CRITERIA_TYPE_CURRENCY: - return "CURRENCY"; - case CRITERIA_TYPE_DAMAGE_DONE: - return "DAMAGE_DONE"; - case CRITERIA_TYPE_COMPLETE_DAILY_QUEST: - return "COMPLETE_DAILY_QUEST"; - case CRITERIA_TYPE_COMPLETE_BATTLEGROUND: - return "COMPLETE_BATTLEGROUND"; - case CRITERIA_TYPE_DEATH_AT_MAP: - return "DEATH_AT_MAP"; - case CRITERIA_TYPE_DEATH: - return "DEATH"; - case CRITERIA_TYPE_DEATH_IN_DUNGEON: - return "DEATH_IN_DUNGEON"; - case CRITERIA_TYPE_COMPLETE_RAID: - return "COMPLETE_RAID"; - case CRITERIA_TYPE_KILLED_BY_CREATURE: - return "KILLED_BY_CREATURE"; - case CRITERIA_TYPE_MANUAL_COMPLETE_CRITERIA: - return "MANUAL_COMPLETE_CRITERIA"; - case CRITERIA_TYPE_COMPLETE_CHALLENGE_MODE_GUILD: - return "COMPLETE_CHALLENGE_MODE_GUILD"; - case CRITERIA_TYPE_KILLED_BY_PLAYER: - return "KILLED_BY_PLAYER"; - case CRITERIA_TYPE_FALL_WITHOUT_DYING: - return "FALL_WITHOUT_DYING"; - case CRITERIA_TYPE_DEATHS_FROM: - return "DEATHS_FROM"; - case CRITERIA_TYPE_COMPLETE_QUEST: - return "COMPLETE_QUEST"; - case CRITERIA_TYPE_BE_SPELL_TARGET: - return "BE_SPELL_TARGET"; - case CRITERIA_TYPE_CAST_SPELL: - return "CAST_SPELL"; - case CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE: - return "BG_OBJECTIVE_CAPTURE"; - case CRITERIA_TYPE_HONORABLE_KILL_AT_AREA: - return "HONORABLE_KILL_AT_AREA"; - case CRITERIA_TYPE_WIN_ARENA: - return "WIN_ARENA"; - case CRITERIA_TYPE_PLAY_ARENA: - return "PLAY_ARENA"; - case CRITERIA_TYPE_LEARN_SPELL: - return "LEARN_SPELL"; - case CRITERIA_TYPE_HONORABLE_KILL: - return "HONORABLE_KILL"; - case CRITERIA_TYPE_OWN_ITEM: - return "OWN_ITEM"; - case CRITERIA_TYPE_WIN_RATED_ARENA: - return "WIN_RATED_ARENA"; - case CRITERIA_TYPE_HIGHEST_TEAM_RATING: - return "HIGHEST_TEAM_RATING"; - case CRITERIA_TYPE_HIGHEST_PERSONAL_RATING: - return "HIGHEST_PERSONAL_RATING"; - case CRITERIA_TYPE_LEARN_SKILL_LEVEL: - return "LEARN_SKILL_LEVEL"; - case CRITERIA_TYPE_USE_ITEM: - return "USE_ITEM"; - case CRITERIA_TYPE_LOOT_ITEM: - return "LOOT_ITEM"; - case CRITERIA_TYPE_EXPLORE_AREA: - return "EXPLORE_AREA"; - case CRITERIA_TYPE_OWN_RANK: - return "OWN_RANK"; - case CRITERIA_TYPE_BUY_BANK_SLOT: - return "BUY_BANK_SLOT"; - case CRITERIA_TYPE_GAIN_REPUTATION: - return "GAIN_REPUTATION"; - case CRITERIA_TYPE_GAIN_EXALTED_REPUTATION: - return "GAIN_EXALTED_REPUTATION"; - case CRITERIA_TYPE_VISIT_BARBER_SHOP: - return "VISIT_BARBER_SHOP"; - case CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT: - return "EQUIP_ITEM_IN_SLOT"; - case CRITERIA_TYPE_ROLL_NEED_ON_LOOT: - return "ROLL_NEED_ON_LOOT"; - case CRITERIA_TYPE_ROLL_GREED_ON_LOOT: - return "GREED_ON_LOOT"; - case CRITERIA_TYPE_HK_CLASS: - return "HK_CLASS"; - case CRITERIA_TYPE_HK_RACE: - return "HK_RACE"; - case CRITERIA_TYPE_DO_EMOTE: - return "DO_EMOTE"; - case CRITERIA_TYPE_HEALING_DONE: - return "HEALING_DONE"; - case CRITERIA_TYPE_GET_KILLING_BLOWS: - return "GET_KILLING_BLOWS"; - case CRITERIA_TYPE_EQUIP_ITEM: - return "EQUIP_ITEM"; - case CRITERIA_TYPE_MONEY_FROM_VENDORS: - return "MONEY_FROM_VENDORS"; - case CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS: - return "GOLD_SPENT_FOR_TALENTS"; - case CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS: - return "NUMBER_OF_TALENT_RESETS"; - case CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD: - return "MONEY_FROM_QUEST_REWARD"; - case CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING: - return "GOLD_SPENT_FOR_TRAVELLING"; - case CRITERIA_TYPE_DEFEAT_CREATURE_GROUP: - return "DEFEAT_CREATURE_GROUP"; - case CRITERIA_TYPE_GOLD_SPENT_AT_BARBER: - return "GOLD_SPENT_AT_BARBER"; - case CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL: - return "GOLD_SPENT_FOR_MAIL"; - case CRITERIA_TYPE_LOOT_MONEY: - return "LOOT_MONEY"; - case CRITERIA_TYPE_USE_GAMEOBJECT: - return "USE_GAMEOBJECT"; - case CRITERIA_TYPE_BE_SPELL_TARGET2: - return "BE_SPELL_TARGET2"; - case CRITERIA_TYPE_SPECIAL_PVP_KILL: - return "SPECIAL_PVP_KILL"; - case CRITERIA_TYPE_COMPLETE_CHALLENGE_MODE: - return "COMPLETE_CHALLENGE_MODE"; - case CRITERIA_TYPE_FISH_IN_GAMEOBJECT: - return "FISH_IN_GAMEOBJECT"; - case CRITERIA_TYPE_SEND_EVENT: - return "SEND_EVENT"; - case CRITERIA_TYPE_ON_LOGIN: - return "ON_LOGIN"; - case CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS: - return "LEARN_SKILLLINE_SPELLS"; - case CRITERIA_TYPE_WIN_DUEL: - return "WIN_DUEL"; - case CRITERIA_TYPE_LOSE_DUEL: - return "LOSE_DUEL"; - case CRITERIA_TYPE_KILL_CREATURE_TYPE: - return "KILL_CREATURE_TYPE"; - case CRITERIA_TYPE_COOK_RECIPES_GUILD: - return "COOK_RECIPE_GUILD"; - case CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS: - return "GOLD_EARNED_BY_AUCTIONS"; - case CRITERIA_TYPE_EARN_PET_BATTLE_ACHIEVEMENT_POINTS: - return "EARN_PET_BATTLE_ACHIEVEMENT_POINTS"; - case CRITERIA_TYPE_CREATE_AUCTION: - return "CREATE_AUCTION"; - case CRITERIA_TYPE_HIGHEST_AUCTION_BID: - return "HIGHEST_AUCTION_BID"; - case CRITERIA_TYPE_WON_AUCTIONS: - return "WON_AUCTIONS"; - case CRITERIA_TYPE_HIGHEST_AUCTION_SOLD: - return "HIGHEST_AUCTION_SOLD"; - case CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED: - return "HIGHEST_GOLD_VALUE_OWNED"; - case CRITERIA_TYPE_GAIN_REVERED_REPUTATION: - return "GAIN_REVERED_REPUTATION"; - case CRITERIA_TYPE_GAIN_HONORED_REPUTATION: - return "GAIN_HONORED_REPUTATION"; - case CRITERIA_TYPE_KNOWN_FACTIONS: - return "KNOWN_FACTIONS"; - case CRITERIA_TYPE_LOOT_ANY_ITEM: - return "LOOT_ANY_ITEM"; - case CRITERIA_TYPE_OBTAIN_ANY_ITEM: - return "OBTAIN_ANY_ITEM"; - case CRITERIA_TYPE_SEND_EVENT_SCENARIO: - return "SEND_EVENT_SCENARIO"; - case CRITERIA_TYPE_ROLL_NEED: - return "ROLL_NEED"; - case CRITERIA_TYPE_ROLL_GREED: - return "ROLL_GREED"; - case CRITERIA_TYPE_RELEASE_SPIRIT: - return "RELEASE_SPIRIT"; - case CRITERIA_TYPE_OWN_PET: - return "OWN_PET"; - case CRITERIA_TYPE_GARRISON_COMPLETE_DUNGEON_ENCOUNTER: - return "GARRISON_COMPLETE_DUNGEON_ENCOUNTER"; - case CRITERIA_TYPE_HIGHEST_HIT_DEALT: - return "HIT_DEALT"; - case CRITERIA_TYPE_HIGHEST_HIT_RECEIVED: - return "HIT_RECEIVED"; - case CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED: - return "TOTAL_DAMAGE_RECEIVED"; - case CRITERIA_TYPE_HIGHEST_HEAL_CAST: - return "HIGHEST_HEAL_CAST"; - case CRITERIA_TYPE_TOTAL_HEALING_RECEIVED: - return "TOTAL_HEALING_RECEIVED"; - case CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED: - return "HIGHEST_HEALING_RECEIVED"; - case CRITERIA_TYPE_QUEST_ABANDONED: - return "QUEST_ABANDONED"; - case CRITERIA_TYPE_FLIGHT_PATHS_TAKEN: - return "FLIGHT_PATHS_TAKEN"; - case CRITERIA_TYPE_LOOT_TYPE: - return "LOOT_TYPE"; - case CRITERIA_TYPE_CAST_SPELL2: - return "CAST_SPELL2"; - case CRITERIA_TYPE_LEARN_SKILL_LINE: - return "LEARN_SKILL_LINE"; - case CRITERIA_TYPE_EARN_HONORABLE_KILL: - return "EARN_HONORABLE_KILL"; - case CRITERIA_TYPE_ACCEPTED_SUMMONINGS: - return "ACCEPTED_SUMMONINGS"; - case CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS: - return "EARN_ACHIEVEMENT_POINTS"; - case CRITERIA_TYPE_COMPLETE_LFG_DUNGEON: - return "COMPLETE_LFG_DUNGEON"; - case CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS: - return "USE_LFD_TO_GROUP_WITH_PLAYERS"; - case CRITERIA_TYPE_LFG_VOTE_KICKS_INITIATED_BY_PLAYER: - return "LFG_VOTE_KICKS_INITIATED_BY_PLAYER"; - case CRITERIA_TYPE_LFG_VOTE_KICKS_NOT_INIT_BY_PLAYER: - return "LFG_VOTE_KICKS_NOT_INIT_BY_PLAYER"; - case CRITERIA_TYPE_BE_KICKED_FROM_LFG: - return "BE_KICKED_FROM_LFG"; - case CRITERIA_TYPE_LFG_LEAVES: - return "LFG_LEAVES"; - case CRITERIA_TYPE_SPENT_GOLD_GUILD_REPAIRS: - return "SPENT_GOLD_GUILD_REPAIRS"; - case CRITERIA_TYPE_REACH_GUILD_LEVEL: - return "REACH_GUILD_LEVEL"; - case CRITERIA_TYPE_CRAFT_ITEMS_GUILD: - return "CRAFT_ITEMS_GUILD"; - case CRITERIA_TYPE_CATCH_FROM_POOL: - return "CATCH_FROM_POOL"; - case CRITERIA_TYPE_BUY_GUILD_BANK_SLOTS: - return "BUY_GUILD_BANK_SLOTS"; - case CRITERIA_TYPE_EARN_GUILD_ACHIEVEMENT_POINTS: - return "EARN_GUILD_ACHIEVEMENT_POINTS"; - case CRITERIA_TYPE_WIN_RATED_BATTLEGROUND: - return "WIN_RATED_BATTLEGROUND"; - case CRITERIA_TYPE_REACH_BG_RATING: - return "REACH_BG_RATING"; - case CRITERIA_TYPE_BUY_GUILD_TABARD: - return "BUY_GUILD_TABARD"; - case CRITERIA_TYPE_COMPLETE_QUESTS_GUILD: - return "COMPLETE_QUESTS_GUILD"; - case CRITERIA_TYPE_HONORABLE_KILLS_GUILD: - return "HONORABLE_KILLS_GUILD"; - case CRITERIA_TYPE_KILL_CREATURE_TYPE_GUILD: - return "KILL_CREATURE_TYPE_GUILD"; - case CRITERIA_TYPE_COUNT_OF_LFG_QUEUE_BOOSTS_BY_TANK: - return "COUNT_OF_LFG_QUEUE_BOOSTS_BY_TANK"; - case CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE_TYPE: - return "GUILD_CHALLENGE_TYPE"; - case CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE: - return "GUILD_CHALLENGE"; - case CRITERIA_TYPE_LFR_DUNGEONS_COMPLETED: - return "LFR_DUNGEONS_COMPLETED"; - case CRITERIA_TYPE_LFR_LEAVES: - return "LFR_LEAVES"; - case CRITERIA_TYPE_LFR_VOTE_KICKS_INITIATED_BY_PLAYER: - return "LFR_VOTE_KICKS_INITIATED_BY_PLAYER"; - case CRITERIA_TYPE_LFR_VOTE_KICKS_NOT_INIT_BY_PLAYER: - return "LFR_VOTE_KICKS_NOT_INIT_BY_PLAYER"; - case CRITERIA_TYPE_BE_KICKED_FROM_LFR: - return "BE_KICKED_FROM_LFR"; - case CRITERIA_TYPE_COUNT_OF_LFR_QUEUE_BOOSTS_BY_TANK: - return "COUNT_OF_LFR_QUEUE_BOOSTS_BY_TANK"; - case CRITERIA_TYPE_COMPLETE_SCENARIO_COUNT: - return "COMPLETE_SCENARIO_COUNT"; - case CRITERIA_TYPE_COMPLETE_SCENARIO: - return "COMPLETE_SCENARIO"; - case CRITERIA_TYPE_REACH_AREATRIGGER_WITH_ACTIONSET: - return "REACH_AREATRIGGER_WITH_ACTIONSET"; - case CRITERIA_TYPE_OWN_BATTLE_PET: - return "OWN_BATTLE_PET"; - case CRITERIA_TYPE_OWN_BATTLE_PET_COUNT: - return "OWN_BATTLE_PET_COUNT"; - case CRITERIA_TYPE_CAPTURE_BATTLE_PET: - return "CAPTURE_BATTLE_PET"; - case CRITERIA_TYPE_WIN_PET_BATTLE: - return "WIN_PET_BATTLE"; - case CRITERIA_TYPE_LEVEL_BATTLE_PET: - return "LEVEL_BATTLE_PET"; - case CRITERIA_TYPE_CAPTURE_BATTLE_PET_CREDIT: - return "CAPTURE_BATTLE_PET_CREDIT"; - case CRITERIA_TYPE_LEVEL_BATTLE_PET_CREDIT: - return "LEVEL_BATTLE_PET_CREDIT"; - case CRITERIA_TYPE_ENTER_AREA: - return "ENTER_AREA"; - case CRITERIA_TYPE_LEAVE_AREA: - return "LEAVE_AREA"; - case CRITERIA_TYPE_COMPLETE_DUNGEON_ENCOUNTER: - return "COMPLETE_DUNGEON_ENCOUNTER"; - case CRITERIA_TYPE_PLACE_GARRISON_BUILDING: - return "PLACE_GARRISON_BUILDING"; - case CRITERIA_TYPE_UPGRADE_GARRISON_BUILDING: - return "UPGRADE_GARRISON_BUILDING"; - case CRITERIA_TYPE_CONSTRUCT_GARRISON_BUILDING: - return "CONSTRUCT_GARRISON_BUILDING"; - case CRITERIA_TYPE_UPGRADE_GARRISON: - return "UPGRADE_GARRISON"; - case CRITERIA_TYPE_START_GARRISON_MISSION: - return "START_GARRISON_MISSION"; - case CRITERIA_TYPE_START_ORDER_HALL_MISSION: - return "START_ORDER_HALL_MISSION"; - case CRITERIA_TYPE_COMPLETE_GARRISON_MISSION_COUNT: - return "COMPLETE_GARRISON_MISSION_COUNT"; - case CRITERIA_TYPE_COMPLETE_GARRISON_MISSION: - return "COMPLETE_GARRISON_MISSION"; - case CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER_COUNT: - return "RECRUIT_GARRISON_FOLLOWER_COUNT"; - case CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER: - return "RECRUIT_GARRISON_FOLLOWER"; - case CRITERIA_TYPE_LEARN_GARRISON_BLUEPRINT_COUNT: - return "LEARN_GARRISON_BLUEPRINT_COUNT"; - case CRITERIA_TYPE_COMPLETE_GARRISON_SHIPMENT: - return "COMPLETE_GARRISON_SHIPMENT"; - case CRITERIA_TYPE_RAISE_GARRISON_FOLLOWER_ITEM_LEVEL: - return "RAISE_GARRISON_FOLLOWER_ITEM_LEVEL"; - case CRITERIA_TYPE_RAISE_GARRISON_FOLLOWER_LEVEL: - return "RAISE_GARRISON_FOLLOWER_LEVEL"; - case CRITERIA_TYPE_OWN_TOY: - return "OWN_TOY"; - case CRITERIA_TYPE_OWN_TOY_COUNT: - return "OWN_TOY_COUNT"; - case CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER_WITH_QUALITY: - return "RECRUIT_GARRISON_FOLLOWER_WITH_QUALITY"; - case CRITERIA_TYPE_OWN_HEIRLOOMS: - return "OWN_HEIRLOOMS"; - case CRITERIA_TYPE_ARTIFACT_POWER_EARNED: - return "ARTIFACT_POWER_EARNED"; - case CRITERIA_TYPE_ARTIFACT_TRAITS_UNLOCKED: - return "ARTIFACT_TRAITS_UNLOCKED"; - case CRITERIA_TYPE_OWN_ITEM_MODIFIED_APPEARANCE: - return "OWN_ITEM_MODIFIED_APPEARANCE"; - case CRITERIA_TYPE_HONOR_LEVEL_REACHED: - return "HONOR_LEVEL_REACHED"; - case CRITERIA_TYPE_PRESTIGE_REACHED: - return "PRESTIGE_REACHED"; - case CRITERIA_TYPE_ACTIVELY_REACH_LEVEL: - return "ACTIVELY_REACH_LEVEL"; - case CRITERIA_TYPE_ORDER_HALL_TALENT_LEARNED: - return "ORDER_HALL_TALENT_LEARNED"; - case CRITERIA_TYPE_APPEARANCE_UNLOCKED_BY_SLOT: - return "APPEARANCE_UNLOCKED_BY_SLOT"; - case CRITERIA_TYPE_ORDER_HALL_RECRUIT_TROOP: - return "ORDER_HALL_RECRUIT_TROOP"; - case CRITERIA_TYPE_COMPLETE_WORLD_QUEST: - return "COMPLETE_WORLD_QUEST"; - case CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED: - return "TRANSMOG_SET_UNLOCKED"; - case CRITERIA_TYPE_GAIN_PARAGON_REPUTATION: - return "GAIN_PARAGON_REPUTATION"; - case CRITERIA_TYPE_EARN_HONOR_XP: - return "EARN_HONOR_XP"; - case CRITERIA_TYPE_RELIC_TALENT_UNLOCKED: - return "RELIC_TALENT_UNLOCKED"; - case CRITERIA_TYPE_EXPANSION_LEVEL: - return "EXPANSION_LEVEL"; - case CRITERIA_TYPE_REACH_ACCOUNT_HONOR_LEVEL: - return "REACH_ACCOUNT_HONOR_LEVEL"; - case CRITERIA_TYPE_HEART_OF_AZEROTH_ARTIFACT_POWER_EARNED: - return "HEART_OF_AZEROTH_ARTIFACT_POWER_EARNED"; - case CRITERIA_TYPE_HEART_OF_AZEROTH_LEVEL_REACHED: - return "HEART_OF_AZEROTH_LEVEL_REACHED"; - case CRITERIA_TYPE_MYTHIC_KEYSTONE_COMPLETED: - return "MYTHIC_KEYSTONE_COMPLETED"; - case CRITERIA_TYPE_COMPLETE_QUEST_ACCUMULATE: - return "COMPLETE_QUEST_ACCUMULATE"; - case CRITERIA_TYPE_BOUGHT_ITEM_FROM_VENDOR: - return "BOUGHT_ITEM_FROM_VENDOR"; - case CRITERIA_TYPE_SOLD_ITEM_TO_VENDOR: - return "SOLD_ITEM_TO_VENDOR"; - case CRITERIA_TYPE_TRAVELLED_TO_AREA: - return "TRAVELLED_TO_AREA"; - case CRITERIA_TYPE_APPLY_CONDUIT: - return "APPLY_CONDUIT"; - case CRITERIA_TYPE_CONVERT_ITEMS_TO_CURRENCY: - return "CONVERT_ITEMS_TO_CURRENCY"; + case CriteriaType::KillCreature: + return "KillCreature"; + case CriteriaType::WinBattleground: + return "WinBattleground"; + case CriteriaType::CompleteResearchProject: + return "CompleteResearchProject"; + case CriteriaType::CompleteAnyResearchProject: + return "CompleteAnyResearchProject"; + case CriteriaType::FindResearchObject: + return "FindResearchObject"; + case CriteriaType::ReachLevel: + return "ReachLevel"; + case CriteriaType::ExhaustAnyResearchSite: + return "ExhaustAnyResearchSite"; + case CriteriaType::SkillRaised: + return "SkillRaised"; + case CriteriaType::EarnAchievement: + return "EarnAchievement"; + case CriteriaType::CompleteQuestsCount: + return "CompleteQuestsCount"; + case CriteriaType::CompleteAnyDailyQuestPerDay: + return "CompleteAnyDailyQuestPerDay"; + case CriteriaType::CompleteQuestsInZone: + return "CompleteQuestsInZone"; + case CriteriaType::CurrencyGained: + return "CurrencyGained"; + case CriteriaType::DamageDealt: + return "DamageDealt"; + case CriteriaType::CompleteDailyQuest: + return "CompleteDailyQuest"; + case CriteriaType::ParticipateInBattleground: + return "ParticipateInBattleground"; + case CriteriaType::DieOnMap: + return "DieOnMap"; + case CriteriaType::DieAnywhere: + return "DieAnywhere"; + case CriteriaType::DieInInstance: + return "DieInInstance"; + case CriteriaType::RunInstance: + return "RunInstance"; + case CriteriaType::KilledByCreature: + return "KilledByCreature"; + case CriteriaType::CompleteInternalCriteria: + return "CompleteInternalCriteria"; + case CriteriaType::CompleteAnyChallengeMode: + return "CompleteAnyChallengeMode"; + case CriteriaType::KilledByPlayer: + return "KilledByPlayer"; + case CriteriaType::MaxDistFallenWithoutDying: + return "MaxDistFallenWithoutDying"; + case CriteriaType::EarnChallengeModeMedal: + return "EarnChallengeModeMedal"; + case CriteriaType::DieFromEnviromentalDamage: + return "DieFromEnviromentalDamage"; + case CriteriaType::CompleteQuest: + return "CompleteQuest"; + case CriteriaType::BeSpellTarget: + return "BeSpellTarget"; + case CriteriaType::CastSpell: + return "CastSpell"; + case CriteriaType::TrackedWorldStateUIModified: + return "TrackedWorldStateUIModified"; + case CriteriaType::PVPKillInArea: + return "PVPKillInArea"; + case CriteriaType::WinArena: + return "WinArena"; + case CriteriaType::ParticipateInArena: + return "ParticipateInArena"; + case CriteriaType::LearnOrKnowSpell: + return "LearnOrKnowSpell"; + case CriteriaType::EarnHonorableKill: + return "EarnHonorableKill"; + case CriteriaType::AcquireItem: + return "AcquireItem"; + case CriteriaType::WinAnyRankedArena: + return "WinAnyRankedArena"; + case CriteriaType::EarnTeamArenaRating: + return "EarnTeamArenaRating"; + case CriteriaType::EarnPersonalArenaRating: + return "EarnPersonalArenaRating"; + case CriteriaType::AchieveSkillStep: + return "AchieveSkillStep"; + case CriteriaType::UseItem: + return "UseItem"; + case CriteriaType::LootItem: + return "LootItem"; + case CriteriaType::RevealWorldMapOverlay: + return "RevealWorldMapOverlay"; + case CriteriaType::EarnTitle: + return "EarnTitle"; + case CriteriaType::BankSlotsPurchased: + return "BankSlotsPurchased"; + case CriteriaType::ReputationGained: + return "ReputationGained"; + case CriteriaType::TotalExaltedFactions: + return "TotalExaltedFactions"; + case CriteriaType::GotHaircut: + return "GotHaircut"; + case CriteriaType::EquipItemInSlot: + return "EquipItemInSlot"; + case CriteriaType::RollNeed: + return "RollNeed"; + case CriteriaType::RollGreed: + return "RollGreed"; + case CriteriaType::DeliverKillingBlowToClass: + return "DeliverKillingBlowToClass"; + case CriteriaType::DeliverKillingBlowToRace: + return "DeliverKillingBlowToRace"; + case CriteriaType::DoEmote: + return "DoEmote"; + case CriteriaType::HealingDone: + return "HealingDone"; + case CriteriaType::DeliveredKillingBlow: + return "DeliveredKillingBlow"; + case CriteriaType::EquipItem: + return "EquipItem"; + case CriteriaType::CompleteQuestsInSort: + return "CompleteQuestsInSort"; + case CriteriaType::MoneyEarnedFromSales: + return "MoneyEarnedFromSales"; + case CriteriaType::MoneySpentOnRespecs: + return "MoneySpentOnRespecs"; + case CriteriaType::TotalRespecs: + return "TotalRespecs"; + case CriteriaType::MoneyEarnedFromQuesting: + return "MoneyEarnedFromQuesting"; + case CriteriaType::MoneySpentOnTaxis: + return "MoneySpentOnTaxis"; + case CriteriaType::KilledAllUnitsInSpawnRegion: + return "KilledAllUnitsInSpawnRegion"; + case CriteriaType::MoneySpentAtBarberShop: + return "MoneySpentAtBarberShop"; + case CriteriaType::MoneySpentOnPostage: + return "MoneySpentOnPostage"; + case CriteriaType::MoneyLootedFromCreatures: + return "MoneyLootedFromCreatures"; + case CriteriaType::UseGameobject: + return "UseGameobject"; + case CriteriaType::GainAura: + return "GainAura"; + case CriteriaType::KillPlayer: + return "KillPlayer"; + case CriteriaType::CompleteChallengeMode: + return "CompleteChallengeMode"; + case CriteriaType::CatchFishInFishingHole: + return "CatchFishInFishingHole"; + case CriteriaType::PlayerTriggerGameEvent: + return "PlayerTriggerGameEvent"; + case CriteriaType::Login: + return "Login"; + case CriteriaType::LearnSpellFromSkillLine: + return "LearnSpellFromSkillLine"; + case CriteriaType::WinDuel: + return "WinDuel"; + case CriteriaType::LoseDuel: + return "LoseDuel"; + case CriteriaType::KillAnyCreature: + return "KillAnyCreature"; + case CriteriaType::CreatedItemsByCastingSpellWithLimit: + return "CreatedItemsByCastingSpellWithLimit"; + case CriteriaType::MoneyEarnedFromAuctions: + return "MoneyEarnedFromAuctions"; + case CriteriaType::BattlePetAchievementPointsEarned: + return "BattlePetAchievementPointsEarned"; + case CriteriaType::ItemsPostedAtAuction: + return "ItemsPostedAtAuction"; + case CriteriaType::HighestAuctionBid: + return "HighestAuctionBid"; + case CriteriaType::AuctionsWon: + return "AuctionsWon"; + case CriteriaType::HighestAuctionSale: + return "HighestAuctionSale"; + case CriteriaType::MostMoneyOwned: + return "MostMoneyOwned"; + case CriteriaType::TotalReveredFactions: + return "TotalReveredFactions"; + case CriteriaType::TotalHonoredFactions: + return "TotalHonoredFactions"; + case CriteriaType::TotalFactionsEncountered: + return "TotalFactionsEncountered"; + case CriteriaType::LootAnyItem: + return "LootAnyItem"; + case CriteriaType::ObtainAnyItem: + return "ObtainAnyItem"; + case CriteriaType::AnyoneTriggerGameEventScenario: + return "AnyoneTriggerGameEventScenario"; + case CriteriaType::RollAnyNeed: + return "RollAnyNeed"; + case CriteriaType::RollAnyGreed: + return "RollAnyGreed"; + case CriteriaType::ReleasedSpirit: + return "ReleasedSpirit"; + case CriteriaType::AccountKnownPet: + return "AccountKnownPet"; + case CriteriaType::DefeatDungeonEncounterWhileElegibleForLoot: + return "DefeatDungeonEncounterWhileElegibleForLoot"; + case CriteriaType::HighestDamageDone: + return "HighestDamageDone"; + case CriteriaType::HighestDamageTaken: + return "HighestDamageTaken"; + case CriteriaType::TotalDamageTaken: + return "TotalDamageTaken"; + case CriteriaType::HighestHealCast: + return "HighestHealCast"; + case CriteriaType::TotalHealReceived: + return "TotalHealReceived"; + case CriteriaType::HighestHealReceived: + return "HighestHealReceived"; + case CriteriaType::AbandonAnyQuest: + return "AbandonAnyQuest"; + case CriteriaType::BuyTaxi: + return "BuyTaxi"; + case CriteriaType::GetLootByType: + return "GetLootByType"; + case CriteriaType::LandTargetedSpellOnTarget: + return "LandTargetedSpellOnTarget"; + case CriteriaType::LearnTradeskillSkillLine: + return "LearnTradeskillSkillLine"; + case CriteriaType::HonorableKills: + return "HonorableKills"; + case CriteriaType::AcceptSummon: + return "AcceptSummon"; + case CriteriaType::EarnAchievementPoints: + return "EarnAchievementPoints"; + case CriteriaType::RollDisenchant: + return "RollDisenchant"; + case CriteriaType::RollAnyDisenchant: + return "RollAnyDisenchant"; + case CriteriaType::CompletedLFGDungeon: + return "CompletedLFGDungeon"; + case CriteriaType::CompletedLFGDungeonWithStrangers: + return "CompletedLFGDungeonWithStrangers"; + case CriteriaType::KickInitiatorInLFGDungeon: + return "KickInitiatorInLFGDungeon"; + case CriteriaType::KickVoterInLFGDungeon: + return "KickVoterInLFGDungeon"; + case CriteriaType::KickTargetInLFGDungeon: + return "KickTargetInLFGDungeon"; + case CriteriaType::AbandonedLFGDungeon: + return "AbandonedLFGDungeon"; + case CriteriaType::MoneySpentOnGuildRepair: + return "MoneySpentOnGuildRepair"; + case CriteriaType::GuildAttainedLevel: + return "GuildAttainedLevel"; + case CriteriaType::CreatedItemsByCastingSpell: + return "CreatedItemsByCastingSpell"; + case CriteriaType::FishInAnyPool: + return "FishInAnyPool"; + case CriteriaType::GuildBankTabsPurchased: + return "GuildBankTabsPurchased"; + case CriteriaType::EarnGuildAchievementPoints: + return "EarnGuildAchievementPoints"; + case CriteriaType::WinAnyBattleground: + return "WinAnyBattleground"; + case CriteriaType::ParticipateInAnyBattleground: + return "ParticipateInAnyBattleground"; + case CriteriaType::EarnBattlegroundRating: + return "EarnBattlegroundRating"; + case CriteriaType::GuildTabardCreated: + return "GuildTabardCreated"; + case CriteriaType::CompleteQuestsCountForGuild: + return "CompleteQuestsCountForGuild"; + case CriteriaType::HonorableKillsForGuild: + return "HonorableKillsForGuild"; + case CriteriaType::KillAnyCreatureForGuild: + return "KillAnyCreatureForGuild"; + case CriteriaType::GroupedTankLeftEarlyInLFGDungeon: + return "GroupedTankLeftEarlyInLFGDungeon"; + case CriteriaType::CompleteGuildChallenge: + return "CompleteGuildChallenge"; + case CriteriaType::CompleteAnyGuildChallenge: + return "CompleteAnyGuildChallenge"; + case CriteriaType::MarkedAFKInBattleground: + return "MarkedAFKInBattleground"; + case CriteriaType::RemovedAFKInBattleground: + return "RemovedAFKInBattleground"; + case CriteriaType::StartAnyBattleground: + return "StartAnyBattleground"; + case CriteriaType::CompleteAnyBattleground: + return "CompleteAnyBattleground"; + case CriteriaType::MarkedSomeoneAFKInBattleground: + return "MarkedSomeoneAFKInBattleground"; + case CriteriaType::CompletedLFRDungeon: + return "CompletedLFRDungeon"; + case CriteriaType::AbandonedLFRDungeon: + return "AbandonedLFRDungeon"; + case CriteriaType::KickInitiatorInLFRDungeon: + return "KickInitiatorInLFRDungeon"; + case CriteriaType::KickVoterInLFRDungeon: + return "KickVoterInLFRDungeon"; + case CriteriaType::KickTargetInLFRDungeon: + return "KickTargetInLFRDungeon"; + case CriteriaType::GroupedTankLeftEarlyInLFRDungeon: + return "GroupedTankLeftEarlyInLFRDungeon"; + case CriteriaType::CompleteAnyScenario: + return "CompleteAnyScenario"; + case CriteriaType::CompleteScenario: + return "CompleteScenario"; + case CriteriaType::EnterAreaTriggerWithActionSet: + return "EnterAreaTriggerWithActionSet"; + case CriteriaType::LeaveAreaTriggerWithActionSet: + return "LeaveAreaTriggerWithActionSet"; + case CriteriaType::LearnedNewPet: + return "LearnedNewPet"; + case CriteriaType::UniquePetsOwned: + return "UniquePetsOwned"; + case CriteriaType::AccountObtainPetThroughBattle: + return "AccountObtainPetThroughBattle"; + case CriteriaType::WinPetBattle: + return "WinPetBattle"; + case CriteriaType::LosePetBattle: + return "LosePetBattle"; + case CriteriaType::BattlePetReachLevel: + return "BattlePetReachLevel"; + case CriteriaType::PlayerObtainPetThroughBattle: + return "PlayerObtainPetThroughBattle"; + case CriteriaType::ActivelyEarnPetLevel: + return "ActivelyEarnPetLevel"; + case CriteriaType::EnterArea: + return "EnterArea"; + case CriteriaType::LeaveArea: + return "LeaveArea"; + case CriteriaType::DefeatDungeonEncounter: + return "DefeatDungeonEncounter"; + case CriteriaType::PlaceAnyGarrisonBuilding: + return "PlaceAnyGarrisonBuilding"; + case CriteriaType::PlaceGarrisonBuilding: + return "PlaceGarrisonBuilding"; + case CriteriaType::ActivateAnyGarrisonBuilding: + return "ActivateAnyGarrisonBuilding"; + case CriteriaType::ActivateGarrisonBuilding: + return "ActivateGarrisonBuilding"; + case CriteriaType::UpgradeGarrison: + return "UpgradeGarrison"; + case CriteriaType::StartAnyGarrisonMissionWithFollowerType: + return "StartAnyGarrisonMissionWithFollowerType"; + case CriteriaType::StartGarrisonMission: + return "StartGarrisonMission"; + case CriteriaType::SucceedAnyGarrisonMissionWithFollowerType: + return "SucceedAnyGarrisonMissionWithFollowerType"; + case CriteriaType::SucceedGarrisonMission: + return "SucceedGarrisonMission"; + case CriteriaType::RecruitAnyGarrisonFollower: + return "RecruitAnyGarrisonFollower"; + case CriteriaType::RecruitGarrisonFollower: + return "RecruitGarrisonFollower"; + case CriteriaType::AcquireGarrison: + return "AcquireGarrison"; + case CriteriaType::LearnAnyGarrisonBlueprint: + return "LearnAnyGarrisonBlueprint"; + case CriteriaType::LearnGarrisonBlueprint: + return "LearnGarrisonBlueprint"; + case CriteriaType::LearnAnyGarrisonSpecialization: + return "LearnAnyGarrisonSpecialization"; + case CriteriaType::LearnGarrisonSpecialization: + return "LearnGarrisonSpecialization"; + case CriteriaType::CollectGarrisonShipment: + return "CollectGarrisonShipment"; + case CriteriaType::ItemLevelChangedForGarrisonFollower: + return "ItemLevelChangedForGarrisonFollower"; + case CriteriaType::LevelChangedForGarrisonFollower: + return "LevelChangedForGarrisonFollower"; + case CriteriaType::LearnToy: + return "LearnToy"; + case CriteriaType::LearnAnyToy: + return "LearnAnyToy"; + case CriteriaType::QualityUpgradedForGarrisonFollower: + return "QualityUpgradedForGarrisonFollower"; + case CriteriaType::LearnHeirloom: + return "LearnHeirloom"; + case CriteriaType::LearnAnyHeirloom: + return "LearnAnyHeirloom"; + case CriteriaType::EarnArtifactXP: + return "EarnArtifactXP"; + case CriteriaType::AnyArtifactPowerRankPurchased: + return "AnyArtifactPowerRankPurchased"; + case CriteriaType::LearnTransmog: + return "LearnTransmog"; + case CriteriaType::LearnAnyTransmog: + return "LearnAnyTransmog"; + case CriteriaType::HonorLevelIncrease: + return "HonorLevelIncrease"; + case CriteriaType::PrestigeLevelIncrease: + return "PrestigeLevelIncrease"; + case CriteriaType::ActivelyReachLevel: + return "ActivelyReachLevel"; + case CriteriaType::CompleteResearchAnyGarrisonTalent: + return "CompleteResearchAnyGarrisonTalent"; + case CriteriaType::CompleteResearchGarrisonTalent: + return "CompleteResearchGarrisonTalent"; + case CriteriaType::LearnAnyTransmogInSlot: + return "LearnAnyTransmogInSlot"; + case CriteriaType::RecruitAnyGarrisonTroop: + return "RecruitAnyGarrisonTroop"; + case CriteriaType::StartResearchAnyGarrisonTalent: + return "StartResearchAnyGarrisonTalent"; + case CriteriaType::StartResearchGarrisonTalent: + return "StartResearchGarrisonTalent"; + case CriteriaType::CompleteAnyWorldQuest: + return "CompleteAnyWorldQuest"; + case CriteriaType::EarnLicense: + return "EarnLicense"; + case CriteriaType::CollectTransmogSetFromGroup: + return "CollectTransmogSetFromGroup"; + case CriteriaType::ParagonLevelIncreaseWithFaction: + return "ParagonLevelIncreaseWithFaction"; + case CriteriaType::PlayerHasEarnedHonor: + return "PlayerHasEarnedHonor"; + case CriteriaType::KillCreatureScenario: + return "KillCreatureScenario"; + case CriteriaType::ArtifactPowerRankPurchased: + return "ArtifactPowerRankPurchased"; + case CriteriaType::ChooseAnyRelicTalent: + return "ChooseAnyRelicTalent"; + case CriteriaType::ChooseRelicTalent: + return "ChooseRelicTalent"; + case CriteriaType::EarnExpansionLevel: + return "EarnExpansionLevel"; + case CriteriaType::AccountHonorLevelReached: + return "AccountHonorLevelReached"; + case CriteriaType::EarnArtifactXPForAzeriteItem: + return "EarnArtifactXPForAzeriteItem"; + case CriteriaType::AzeriteLevelReached: + return "AzeriteLevelReached"; + case CriteriaType::MythicPlusCompleted: + return "MythicPlusCompleted"; + case CriteriaType::ScenarioGroupCompleted: + return "ScenarioGroupCompleted"; + case CriteriaType::CompleteAnyReplayQuest: + return "CompleteAnyReplayQuest"; + case CriteriaType::BuyItemsFromVendors: + return "BuyItemsFromVendors"; + case CriteriaType::SellItemsToVendors: + return "SellItemsToVendors"; + case CriteriaType::ReachMaxLevel: + return "ReachMaxLevel"; + case CriteriaType::MemorizeSpell: + return "MemorizeSpell"; + case CriteriaType::LearnTransmogIllusion: + return "LearnTransmogIllusion"; + case CriteriaType::LearnAnyTransmogIllusion: + return "LearnAnyTransmogIllusion"; + case CriteriaType::EnterTopLevelArea: + return "EnterTopLevelArea"; + case CriteriaType::LeaveTopLevelArea: + return "LeaveTopLevelArea"; + case CriteriaType::SocketGarrisonTalent: + return "SocketGarrisonTalent"; + case CriteriaType::SocketAnySoulbindConduit: + return "SocketAnySoulbindConduit"; + case CriteriaType::ObtainAnyItemWithCurrencyValue: + return "ObtainAnyItemWithCurrencyValue"; + case CriteriaType::MythicPlusRatingAttained: + return "MythicPlusRatingAttained"; + case CriteriaType::SpentTalentPoint: + return "SpentTalentPoint"; + default: + return "MissingType"; } - return "MISSING_TYPE"; } CriteriaMgr* CriteriaMgr::Instance() @@ -4161,41 +4234,41 @@ CriteriaMgr* CriteriaMgr::Instance() namespace { -inline bool IsCriteriaTypeStoredByAsset(CriteriaTypes type) +inline bool IsCriteriaTypeStoredByAsset(CriteriaType type) { switch (type) { - case CRITERIA_TYPE_KILL_CREATURE: - case CRITERIA_TYPE_WIN_BG: - case CRITERIA_TYPE_REACH_SKILL_LEVEL: - case CRITERIA_TYPE_COMPLETE_ACHIEVEMENT: - case CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE: - case CRITERIA_TYPE_COMPLETE_BATTLEGROUND: - case CRITERIA_TYPE_KILLED_BY_CREATURE: - case CRITERIA_TYPE_COMPLETE_QUEST: - case CRITERIA_TYPE_BE_SPELL_TARGET: - case CRITERIA_TYPE_CAST_SPELL: - case CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE: - case CRITERIA_TYPE_HONORABLE_KILL_AT_AREA: - case CRITERIA_TYPE_LEARN_SPELL: - case CRITERIA_TYPE_OWN_ITEM: - case CRITERIA_TYPE_LEARN_SKILL_LEVEL: - case CRITERIA_TYPE_USE_ITEM: - case CRITERIA_TYPE_LOOT_ITEM: - case CRITERIA_TYPE_EXPLORE_AREA: - case CRITERIA_TYPE_GAIN_REPUTATION: - case CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT: - case CRITERIA_TYPE_HK_CLASS: - case CRITERIA_TYPE_HK_RACE: - case CRITERIA_TYPE_DO_EMOTE: - case CRITERIA_TYPE_EQUIP_ITEM: - case CRITERIA_TYPE_USE_GAMEOBJECT: - case CRITERIA_TYPE_BE_SPELL_TARGET2: - case CRITERIA_TYPE_FISH_IN_GAMEOBJECT: - case CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS: - case CRITERIA_TYPE_LOOT_TYPE: - case CRITERIA_TYPE_CAST_SPELL2: - case CRITERIA_TYPE_LEARN_SKILL_LINE: + case CriteriaType::KillCreature: + case CriteriaType::WinBattleground: + case CriteriaType::SkillRaised: + case CriteriaType::EarnAchievement: + case CriteriaType::CompleteQuestsInZone: + case CriteriaType::ParticipateInBattleground: + case CriteriaType::KilledByCreature: + case CriteriaType::CompleteQuest: + case CriteriaType::BeSpellTarget: + case CriteriaType::CastSpell: + case CriteriaType::TrackedWorldStateUIModified: + case CriteriaType::PVPKillInArea: + case CriteriaType::LearnOrKnowSpell: + case CriteriaType::AcquireItem: + case CriteriaType::AchieveSkillStep: + case CriteriaType::UseItem: + case CriteriaType::LootItem: + case CriteriaType::RevealWorldMapOverlay: + case CriteriaType::ReputationGained: + case CriteriaType::EquipItemInSlot: + case CriteriaType::DeliverKillingBlowToClass: + case CriteriaType::DeliverKillingBlowToRace: + case CriteriaType::DoEmote: + case CriteriaType::EquipItem: + case CriteriaType::UseGameobject: + case CriteriaType::GainAura: + case CriteriaType::CatchFishInFishingHole: + case CriteriaType::LearnSpellFromSkillLine: + case CriteriaType::GetLootByType: + case CriteriaType::LandTargetedSpellOnTarget: + case CriteriaType::LearnTradeskillSkillLine: return true; default: break; @@ -4204,16 +4277,16 @@ inline bool IsCriteriaTypeStoredByAsset(CriteriaTypes type) } } -CriteriaList const& CriteriaMgr::GetPlayerCriteriaByType(CriteriaTypes type, uint32 asset) const +CriteriaList const& CriteriaMgr::GetPlayerCriteriaByType(CriteriaType type, uint32 asset) const { if (asset && IsCriteriaTypeStoredByAsset(type)) { - auto itr = _criteriasByAsset[type].find(asset); - if (itr != _criteriasByAsset[type].end()) + auto itr = _criteriasByAsset[size_t(type)].find(asset); + if (itr != _criteriasByAsset[size_t(type)].end()) return itr->second; } - return _criteriasByType[type]; + return _criteriasByType[size_t(type)]; } //========================================================== @@ -4346,8 +4419,8 @@ void CriteriaMgr::LoadCriteriaList() uint32 questObjectiveCriterias = 0; for (CriteriaEntry const* criteriaEntry : sCriteriaStore) { - ASSERT(criteriaEntry->Type < CRITERIA_TYPE_TOTAL, "CRITERIA_TYPE_TOTAL must be greater than or equal to %u but is currently equal to %u", - criteriaEntry->Type + 1, CRITERIA_TYPE_TOTAL); + ASSERT(criteriaEntry->Type < uint8(CriteriaType::Count), "CRITERIA_TYPE_TOTAL must be greater than or equal to %u but is currently equal to %u", + criteriaEntry->Type + 1, uint32(CriteriaType::Count)); ASSERT(criteriaEntry->StartEvent < uint8(CriteriaStartEvent::Count), "CriteriaStartEvent::Count must be greater than or equal to %u but is currently equal to %u", criteriaEntry->StartEvent + 1, uint32(CriteriaStartEvent::Count)); ASSERT(criteriaEntry->FailEvent < uint8(CriteriaFailEvent::Count), "CriteriaFailEvent::Count must be greater than or equal to %u but is currently equal to %u", @@ -4387,9 +4460,9 @@ void CriteriaMgr::LoadCriteriaList() { ++criterias; _criteriasByType[criteriaEntry->Type].push_back(criteria); - if (IsCriteriaTypeStoredByAsset(CriteriaTypes(criteriaEntry->Type))) + if (IsCriteriaTypeStoredByAsset(CriteriaType(criteriaEntry->Type))) { - if (criteriaEntry->Type != CRITERIA_TYPE_EXPLORE_AREA) + if (CriteriaType(criteriaEntry->Type) != CriteriaType::RevealWorldMapOverlay) _criteriasByAsset[criteriaEntry->Type][criteriaEntry->Asset.ID].push_back(criteria); else { diff --git a/src/server/game/Achievements/CriteriaHandler.h b/src/server/game/Achievements/CriteriaHandler.h index 1d4dca27813..51a962a6dcb 100644 --- a/src/server/game/Achievements/CriteriaHandler.h +++ b/src/server/game/Achievements/CriteriaHandler.h @@ -271,7 +271,7 @@ public: virtual void Reset(); - void UpdateCriteria(CriteriaTypes type, uint64 miscValue1 = 0, uint64 miscValue2 = 0, uint64 miscValue3 = 0, WorldObject const* ref = nullptr, Player* referencePlayer = nullptr); + void UpdateCriteria(CriteriaType type, uint64 miscValue1 = 0, uint64 miscValue2 = 0, uint64 miscValue3 = 0, WorldObject const* ref = nullptr, Player* referencePlayer = nullptr); virtual void SendAllData(Player const* receiver) const = 0; @@ -305,7 +305,7 @@ protected: bool ModifierSatisfied(ModifierTreeEntry const* modifier, uint64 miscValue1, uint64 miscValue2, WorldObject const* ref, Player* referencePlayer) const; virtual std::string GetOwnerInfo() const = 0; - virtual CriteriaList const& GetCriteriaByType(CriteriaTypes type, uint32 asset) const = 0; + virtual CriteriaList const& GetCriteriaByType(CriteriaType type, uint32 asset) const = 0; CriteriaProgressMap _criteriaProgress; std::map<uint32, uint32 /*ms time left*/> _timeCriteriaTrees; @@ -317,26 +317,26 @@ class TC_GAME_API CriteriaMgr ~CriteriaMgr(); public: - static char const* GetCriteriaTypeString(CriteriaTypes type); + static char const* GetCriteriaTypeString(CriteriaType type); static char const* GetCriteriaTypeString(uint32 type); static CriteriaMgr* Instance(); - CriteriaList const& GetPlayerCriteriaByType(CriteriaTypes type, uint32 asset) const; + CriteriaList const& GetPlayerCriteriaByType(CriteriaType type, uint32 asset) const; - CriteriaList const& GetGuildCriteriaByType(CriteriaTypes type) const + CriteriaList const& GetGuildCriteriaByType(CriteriaType type) const { - return _guildCriteriasByType[type]; + return _guildCriteriasByType[size_t(type)]; } - CriteriaList const& GetScenarioCriteriaByType(CriteriaTypes type) const + CriteriaList const& GetScenarioCriteriaByType(CriteriaType type) const { - return _scenarioCriteriasByType[type]; + return _scenarioCriteriasByType[size_t(type)]; } - CriteriaList const& GetQuestObjectiveCriteriaByType(CriteriaTypes type) const + CriteriaList const& GetQuestObjectiveCriteriaByType(CriteriaType type) const { - return _questObjectiveCriteriasByType[type]; + return _questObjectiveCriteriasByType[size_t(type)]; } CriteriaTreeList const* GetCriteriaTreesByCriteria(uint32 criteriaId) const @@ -362,16 +362,16 @@ public: return iter != _criteriaDataMap.end() ? &iter->second : nullptr; } - static bool IsGroupCriteriaType(CriteriaTypes type) + static bool IsGroupCriteriaType(CriteriaType type) { switch (type) { - case CRITERIA_TYPE_KILL_CREATURE: - case CRITERIA_TYPE_WIN_BG: - case CRITERIA_TYPE_BE_SPELL_TARGET: // NYI - case CRITERIA_TYPE_WIN_RATED_ARENA: - case CRITERIA_TYPE_BE_SPELL_TARGET2: // NYI - case CRITERIA_TYPE_WIN_RATED_BATTLEGROUND: // NYI + case CriteriaType::KillCreature: + case CriteriaType::WinBattleground: + case CriteriaType::BeSpellTarget: // NYI + case CriteriaType::WinAnyRankedArena: + case CriteriaType::GainAura: // NYI + case CriteriaType::WinAnyBattleground: // NYI return true; default: break; @@ -406,11 +406,11 @@ private: std::unordered_map<uint32, CriteriaTreeList> _criteriaTreeByCriteria; // store criterias by type to speed up lookup - CriteriaList _criteriasByType[CRITERIA_TYPE_TOTAL]; - CriteriaListByAsset _criteriasByAsset[CRITERIA_TYPE_TOTAL]; - CriteriaList _guildCriteriasByType[CRITERIA_TYPE_TOTAL]; - CriteriaList _scenarioCriteriasByType[CRITERIA_TYPE_TOTAL]; - CriteriaList _questObjectiveCriteriasByType[CRITERIA_TYPE_TOTAL]; + CriteriaList _criteriasByType[size_t(CriteriaType::Count)]; + CriteriaListByAsset _criteriasByAsset[size_t(CriteriaType::Count)]; + CriteriaList _guildCriteriasByType[size_t(CriteriaType::Count)]; + CriteriaList _scenarioCriteriasByType[size_t(CriteriaType::Count)]; + CriteriaList _questObjectiveCriteriasByType[size_t(CriteriaType::Count)]; CriteriaList _criteriasByTimedType[size_t(CriteriaStartEvent::Count)]; std::unordered_map<int32, CriteriaList> _criteriasByFailEvent[size_t(CriteriaFailEvent::Count)]; diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index 6dbd0aab744..7237deb2493 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -1767,8 +1767,8 @@ bool AuctionHouseObject::BuyCommodity(CharacterDatabaseTransaction trans, Player if (Player* owner = ObjectAccessor::FindConnectedPlayer(auction->Owner)) { - owner->UpdateCriteria(CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS, profit); - owner->UpdateCriteria(CRITERIA_TYPE_HIGHEST_AUCTION_SOLD, profit); + owner->UpdateCriteria(CriteriaType::MoneyEarnedFromAuctions, profit); + owner->UpdateCriteria(CriteriaType::HighestAuctionSale, profit); owner->GetSession()->SendAuctionClosedNotification(auction, (float)sWorld->getIntConfig(CONFIG_MAIL_DELIVERY_DELAY), true); } @@ -1909,7 +1909,7 @@ void AuctionHouseObject::SendAuctionWon(AuctionPosting const* auction, Player* b bidder->SendDirectMessage(packet.Write()); // FIXME: for offline player need also - bidder->UpdateCriteria(CRITERIA_TYPE_WON_AUCTIONS, 1); + bidder->UpdateCriteria(CriteriaType::AuctionsWon, 1); } mail.SendMailTo(trans, MailReceiver(bidder, auction->Bidder), this, MAIL_CHECK_MASK_COPIED); @@ -1937,8 +1937,8 @@ void AuctionHouseObject::SendAuctionSold(AuctionPosting const* auction, Player* //FIXME: what do if owner offline if (owner) { - owner->UpdateCriteria(CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS, profit); - owner->UpdateCriteria(CRITERIA_TYPE_HIGHEST_AUCTION_SOLD, auction->BidAmount); + owner->UpdateCriteria(CriteriaType::MoneyEarnedFromAuctions, profit); + owner->UpdateCriteria(CriteriaType::HighestAuctionSale, auction->BidAmount); //send auction owner notification, bidder must be current! owner->GetSession()->SendAuctionClosedNotification(auction, (float)sWorld->getIntConfig(CONFIG_MAIL_DELIVERY_DELAY), true); } diff --git a/src/server/game/BattlePets/BattlePetMgr.cpp b/src/server/game/BattlePets/BattlePetMgr.cpp index 5fd954f931f..55531bf20fa 100644 --- a/src/server/game/BattlePets/BattlePetMgr.cpp +++ b/src/server/game/BattlePets/BattlePetMgr.cpp @@ -334,7 +334,7 @@ void BattlePetMgr::AddPet(uint32 species, uint32 creatureId, uint16 breed, uint8 updates.push_back(std::ref(pet)); SendUpdates(std::move(updates), true); - _owner->GetPlayer()->UpdateCriteria(CRITERIA_TYPE_OWN_BATTLE_PET, species); + _owner->GetPlayer()->UpdateCriteria(CriteriaType::LearnedNewPet, species); } void BattlePetMgr::RemovePet(ObjectGuid guid) diff --git a/src/server/game/Battlegrounds/Arena.cpp b/src/server/game/Battlegrounds/Arena.cpp index 344535ba19f..79c589ef0bd 100644 --- a/src/server/game/Battlegrounds/Arena.cpp +++ b/src/server/game/Battlegrounds/Arena.cpp @@ -249,8 +249,8 @@ void Arena::EndBattleground(uint32 winner) { // update achievement BEFORE personal rating update uint32 rating = player->GetArenaPersonalRating(winnerArenaTeam->GetSlot()); - player->UpdateCriteria(CRITERIA_TYPE_WIN_RATED_ARENA, rating ? rating : 1); - player->UpdateCriteria(CRITERIA_TYPE_WIN_ARENA, GetMapId()); + player->UpdateCriteria(CriteriaType::WinAnyRankedArena, rating ? rating : 1); + player->UpdateCriteria(CriteriaType::WinArena, GetMapId()); // Last standing - Rated 5v5 arena & be solely alive player if (GetArenaType() == ARENA_TYPE_5v5 && aliveWinners == 1 && player->IsAlive()) @@ -261,7 +261,7 @@ void Arena::EndBattleground(uint32 winner) guildAwarded = true; if (ObjectGuid::LowType guildId = GetBgMap()->GetOwnerGuildId(player->GetBGTeam())) if (Guild* guild = sGuildMgr->GetGuildById(guildId)) - guild->UpdateCriteria(CRITERIA_TYPE_WIN_RATED_ARENA, std::max<uint32>(winnerArenaTeam->GetRating(), 1), 0, 0, nullptr, player); + guild->UpdateCriteria(CriteriaType::WinAnyRankedArena, std::max<uint32>(winnerArenaTeam->GetRating(), 1), 0, 0, nullptr, player); } winnerArenaTeam->MemberWon(player, loserMatchmakerRating, winnerMatchmakerChange); diff --git a/src/server/game/Battlegrounds/ArenaTeam.cpp b/src/server/game/Battlegrounds/ArenaTeam.cpp index 3a087bd1fdd..c8b5aad4f17 100644 --- a/src/server/game/Battlegrounds/ArenaTeam.cpp +++ b/src/server/game/Battlegrounds/ArenaTeam.cpp @@ -444,7 +444,7 @@ void ArenaTeamMember::ModifyPersonalRating(Player* player, int32 mod, uint32 typ if (player) { player->SetArenaTeamInfoField(ArenaTeam::GetSlotByType(type), ARENA_TEAM_PERSONAL_RATING, PersonalRating); - player->UpdateCriteria(CRITERIA_TYPE_HIGHEST_PERSONAL_RATING, PersonalRating, type); + player->UpdateCriteria(CriteriaType::EarnPersonalArenaRating, PersonalRating, type); } } @@ -605,7 +605,7 @@ void ArenaTeam::FinishGame(int32 mod) // Check if rating related achivements are met for (MemberList::iterator itr = Members.begin(); itr != Members.end(); ++itr) if (Player* member = ObjectAccessor::FindConnectedPlayer(itr->Guid)) - member->UpdateCriteria(CRITERIA_TYPE_HIGHEST_TEAM_RATING, Stats.Rating, Type); + member->UpdateCriteria(CriteriaType::EarnTeamArenaRating, Stats.Rating, Type); } // Update number of games played per season or week diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 25a9f200606..6fbed319b01 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -818,14 +818,14 @@ void Battleground::EndBattleground(uint32 winner) // TODO: loss honor xp } - player->UpdateCriteria(CRITERIA_TYPE_WIN_BG, player->GetMapId()); + player->UpdateCriteria(CriteriaType::WinBattleground, player->GetMapId()); if (!guildAwarded) { guildAwarded = true; if (ObjectGuid::LowType guildId = GetBgMap()->GetOwnerGuildId(player->GetBGTeam())) { if (Guild* guild = sGuildMgr->GetGuildById(guildId)) - guild->UpdateCriteria(CRITERIA_TYPE_WIN_BG, player->GetMapId(), 0, 0, nullptr, player); + guild->UpdateCriteria(CriteriaType::WinBattleground, player->GetMapId(), 0, 0, nullptr, player); } } } @@ -842,7 +842,7 @@ void Battleground::EndBattleground(uint32 winner) player->SendDirectMessage(pvpMatchComplete.GetRawPacket()); - player->UpdateCriteria(CRITERIA_TYPE_COMPLETE_BATTLEGROUND, player->GetMapId()); + player->UpdateCriteria(CriteriaType::ParticipateInBattleground, player->GetMapId()); } } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp index 0d321586147..c6e66665048 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp @@ -683,10 +683,10 @@ bool BattlegroundAB::UpdatePlayerScore(Player* player, uint32 type, uint32 value switch (type) { case SCORE_BASES_ASSAULTED: - player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AB_OBJECTIVE_ASSAULT_BASE); + player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, AB_OBJECTIVE_ASSAULT_BASE); break; case SCORE_BASES_DEFENDED: - player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AB_OBJECTIVE_DEFEND_BASE); + player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, AB_OBJECTIVE_DEFEND_BASE); break; default: break; diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp index 07fa4bbcc98..bfd5dd3028c 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp @@ -537,16 +537,16 @@ bool BattlegroundAV::UpdatePlayerScore(Player* player, uint32 type, uint32 value switch (type) { case SCORE_GRAVEYARDS_ASSAULTED: - player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AV_OBJECTIVE_ASSAULT_GRAVEYARD); + player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, AV_OBJECTIVE_ASSAULT_GRAVEYARD); break; case SCORE_GRAVEYARDS_DEFENDED: - player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AV_OBJECTIVE_DEFEND_GRAVEYARD); + player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, AV_OBJECTIVE_DEFEND_GRAVEYARD); break; case SCORE_TOWERS_ASSAULTED: - player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AV_OBJECTIVE_ASSAULT_TOWER); + player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, AV_OBJECTIVE_ASSAULT_TOWER); break; case SCORE_TOWERS_DEFENDED: - player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, AV_OBJECTIVE_DEFEND_TOWER); + player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, AV_OBJECTIVE_DEFEND_TOWER); break; default: break; diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp index 1ed1c625c36..bffbddfeb6c 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp @@ -847,7 +847,7 @@ bool BattlegroundEY::UpdatePlayerScore(Player* player, uint32 type, uint32 value switch (type) { case SCORE_FLAG_CAPTURES: - player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, EY_OBJECTIVE_CAPTURE_FLAG); + player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, EY_OBJECTIVE_CAPTURE_FLAG); break; default: break; diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp index 6c494a5602c..9c14dd3af32 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp @@ -909,7 +909,7 @@ void BattlegroundSA::TitanRelicActivated(Player* clicker) { if (Player* player = ObjectAccessor::FindPlayer(itr->first)) if (player->GetTeamId() == Attackers) - player->UpdateCriteria(CRITERIA_TYPE_BE_SPELL_TARGET, 65246); + player->UpdateCriteria(CriteriaType::BeSpellTarget, 65246); } Attackers = (Attackers == TEAM_ALLIANCE) ? TEAM_HORDE : TEAM_ALLIANCE; @@ -939,7 +939,7 @@ void BattlegroundSA::TitanRelicActivated(Player* clicker) { if (Player* player = ObjectAccessor::FindPlayer(itr->first)) if (player->GetTeamId() == Attackers && RoundScores[1].winner == Attackers) - player->UpdateCriteria(CRITERIA_TYPE_BE_SPELL_TARGET, 65246); + player->UpdateCriteria(CriteriaType::BeSpellTarget, 65246); } if (RoundScores[0].time == RoundScores[1].time) @@ -1074,10 +1074,10 @@ bool BattlegroundSA::UpdatePlayerScore(Player* player, uint32 type, uint32 value switch (type) { case SCORE_DESTROYED_DEMOLISHER: - player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, BG_SA_DEMOLISHERS_DESTROYED); + player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, BG_SA_DEMOLISHERS_DESTROYED); break; case SCORE_DESTROYED_WALL: - player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, BG_SA_GATES_DESTROYED); + player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, BG_SA_GATES_DESTROYED); break; default: break; diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp index 677f4c9c290..5e33f441530 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp @@ -780,10 +780,10 @@ bool BattlegroundWS::UpdatePlayerScore(Player* player, uint32 type, uint32 value switch (type) { case SCORE_FLAG_CAPTURES: // flags captured - player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, WS_OBJECTIVE_CAPTURE_FLAG); + player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, WS_OBJECTIVE_CAPTURE_FLAG); break; case SCORE_FLAG_RETURNS: // flags returned - player->UpdateCriteria(CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE, WS_OBJECTIVE_RETURN_FLAG); + player->UpdateCriteria(CriteriaType::TrackedWorldStateUIModified, WS_OBJECTIVE_RETURN_FLAG); break; default: break; diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index a1e05e12c71..c73daf5594f 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -1007,174 +1007,200 @@ struct CriteriaEntry union AssetNameAlias { int32 ID; - // CRITERIA_TYPE_KILL_CREATURE = 0 - // CRITERIA_TYPE_KILLED_BY_CREATURE = 20 - // CRITERIA_TYPE_OWN_PET = 96 - // CRITERIA_TYPE_208 = 208 + // CriteriaType::KillCreature = 0 + // CriteriaType::KilledByCreature = 20 + // CriteriaType::AccountKnownPet = 96 + // CriteriaType::KillCreatureScenario = 208 int32 CreatureID; - // CRITERIA_TYPE_WIN_BG = 1 - // CRITERIA_TYPE_COMPLETE_BATTLEGROUND = 15 - // CRITERIA_TYPE_DEATH_AT_MAP = 16 - // CRITERIA_TYPE_WIN_ARENA = 32 - // CRITERIA_TYPE_PLAY_ARENA = 33 - // CRITERIA_TYPE_COMPLETE_CHALLENGE_MODE = 71 + // CriteriaType::WinBattleground = 1 + // CriteriaType::ParticipateInBattleground = 15 + // CriteriaType::DieOnMap = 16 + // CriteriaType::WinArena = 32 + // CriteriaType::ParticipateInArena = 33 + // CriteriaType::CompleteChallengeMode = 71 int32 MapID; - // CRITERIA_TYPE_SURVEY_GAMEOBJECT = 4 - // CRITERIA_TYPE_USE_GAMEOBJECT = 68 - // CRITERIA_TYPE_FISH_IN_GAMEOBJECT = 72 + // CriteriaType::CompleteResearchProject = 2 + int32 ResearchProjectID; + + // CriteriaType::FindResearchObject = 4 + // CriteriaType::UseGameobject = 68 + // CriteriaType::CatchFishInFishingHole = 72 int32 GameObjectID; - // CRITERIA_TYPE_REACH_SKILL_LEVEL = 7 - // CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40 - // CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS = 75 - // CRITERIA_TYPE_LEARN_SKILL_LINE = 112 + // CriteriaType::SkillRaised = 7 + // CriteriaType::AchieveSkillStep = 40 + // CriteriaType::LearnSpellFromSkillLine = 75 + // CriteriaType::LearnTradeskillSkillLine = 112 int32 SkillID; - // CRITERIA_TYPE_COMPLETE_ACHIEVEMENT = 8 + // CriteriaType::EarnAchievement = 8 int32 AchievementID; - // CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE = 11 + // CriteriaType::CompleteQuestsInZone = 11 int32 ZoneID; - // CRITERIA_TYPE_CURRENCY = 12 - // CRITERIA_TYPE_CONVERT_ITEMS_TO_CURRENCY = 229 + // CriteriaType::CurrencyGained = 12 + // CriteriaType::ObtainAnyItemWithCurrencyValue = 229 int32 CurrencyID; - // CRITERIA_TYPE_DEATH_IN_DUNGEON = 18 - // CRITERIA_TYPE_COMPLETE_RAID = 19 + // CriteriaType::DieInInstance = 18 + // CriteriaType::RunInstance = 19 int32 GroupSize; - // CRITERIA_TYPE_MANUAL_COMPLETE_CRITERIA = 21 + // CriteriaType::CompleteInternalCriteria = 21 int32 CriteriaID; - // CRITERIA_TYPE_DEATHS_FROM = 26 - int32 DamageType; + // CriteriaType::DieFromEnviromentalDamage = 26 + int32 EnviromentalDamageType; - // CRITERIA_TYPE_COMPLETE_QUEST = 27 + // CriteriaType::CompleteQuest = 27 int32 QuestID; - // CRITERIA_TYPE_BE_SPELL_TARGET = 28 - // CRITERIA_TYPE_CAST_SPELL = 29 - // CRITERIA_TYPE_LEARN_SPELL = 34 - // CRITERIA_TYPE_BE_SPELL_TARGET2 = 69 - // CRITERIA_TYPE_CAST_SPELL2 = 110 + // CriteriaType::BeSpellTarget = 28 + // CriteriaType::CastSpell = 29 + // CriteriaType::LearnOrKnowSpell = 34 + // CriteriaType::GainAura = 69 + // CriteriaType::LandTargetedSpellOnTarget = 110 + // CriteriaType::MemorizeSpell = 222 int32 SpellID; - // CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE = 30 - int32 ObjectiveId; + // CriteriaType::TrackedWorldStateUIModified = 30 + int32 WorldStateUIID; - // CRITERIA_TYPE_HONORABLE_KILL_AT_AREA = 31 - // CRITERIA_TYPE_ENTER_AREA = 163 - // CRITERIA_TYPE_LEAVE_AREA = 164 - // CRITERIA_TYPE_TRAVELLED_TO_AREA = 225 + // CriteriaType::PVPKillInArea = 31 + // CriteriaType::EnterArea = 163 + // CriteriaType::LeaveArea = 164 + // CriteriaType::EnterTopLevelArea = 225 + // CriteriaType::LeaveTopLevelArea = 226 int32 AreaID; - // CRITERIA_TYPE_OWN_ITEM = 36 - // CRITERIA_TYPE_USE_ITEM = 41 - // CRITERIA_TYPE_LOOT_ITEM = 42 - // CRITERIA_TYPE_EQUIP_ITEM = 57 - // CRITERIA_TYPE_OWN_TOY = 185 + // CriteriaType::AcquireItem = 36 + // CriteriaType::UseItem = 41 + // CriteriaType::LootItem = 42 + // CriteriaType::EquipItem = 57 + // CriteriaType::LearnToy = 185 + // CriteriaType::LearnHeirloom = 188 int32 ItemID; - // CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38 - // CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39 + // CriteriaType::EarnTeamArenaRating = 38 + // CriteriaType::EarnPersonalArenaRating = 39 int32 TeamType; - // CRITERIA_TYPE_EXPLORE_AREA = 43 + // CriteriaType::RevealWorldMapOverlay = 43 int32 WorldMapOverlayID; - // CRITERIA_TYPE_GAIN_REPUTATION = 46 - // CRITERIA_TYPE_GAIN_PARAGON_REPUTATION = 206 + // CriteriaType::ReputationGained = 46 + // CriteriaType::ParagonLevelIncreaseWithFaction = 206 int32 FactionID; - // CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT = 49 - // CRITERIA_TYPE_APPEARANCE_UNLOCKED_BY_SLOT = 199 + // CriteriaType::EquipItemInSlot = 49 + // CriteriaType::LearnAnyTransmogInSlot = 199 int32 EquipmentSlot; - // CRITERIA_TYPE_ROLL_NEED_ON_LOOT = 50 - // CRITERIA_TYPE_ROLL_GREED_ON_LOOT = 51 + // CriteriaType::RollNeed = 50 + // CriteriaType::RollGreed = 51 + // CriteriaType::RollDisenchant = 116 int32 RollValue; - // CRITERIA_TYPE_HK_CLASS = 52 + // CriteriaType::DeliverKillingBlowToClass = 52 int32 ClassID; - // CRITERIA_TYPE_HK_RACE = 53 + // CriteriaType::DeliverKillingBlowToRace = 53 int32 RaceID; - // CRITERIA_TYPE_DO_EMOTE = 54 + // CriteriaType::DoEmote = 54 int32 EmoteID; - // CRITERIA_TYPE_SEND_EVENT = 73 - // CRITERIA_TYPE_SEND_EVENT_SCENARIO = 92 + // CriteriaType::CompleteQuestsInSort = 58 + int32 QuestSortID; + + // CriteriaType::KilledAllUnitsInSpawnRegion = 64 + int32 SpawnRegionID; + + // CriteriaType::PlayerTriggerGameEvent = 73 + // CriteriaType::AnyoneTriggerGameEventScenario = 92 int32 EventID; - // CRITERIA_TYPE_GARRISON_COMPLETE_DUNGEON_ENCOUNTER = 97 - // CRITERIA_TYPE_COMPLETE_DUNGEON_ENCOUNTER = 165 + // CriteriaType::DefeatDungeonEncounterWhileElegibleForLoot = 97 + // CriteriaType::DefeatDungeonEncounter = 165 int32 DungeonEncounterID; - // CRITERIA_TYPE_LOOT_TYPE = 109 + // CriteriaType::GetLootByType = 109 int32 LootType; - // CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE_TYPE = 138 + // CriteriaType::CompleteGuildChallenge = 138 int32 GuildChallengeType; - // CRITERIA_TYPE_COMPLETE_SCENARIO = 152 + // CriteriaType::CompleteScenario = 152 int32 ScenarioID; - // CRITERIA_TYPE_REACH_AREATRIGGER_WITH_ACTIONSET = 153 + // CriteriaType::EnterAreaTriggerWithActionSet = 153 + // CriteriaType::LeaveAreaTriggerWithActionSet = 154 int32 AreaTriggerActionSetID; - // CRITERIA_TYPE_LEVEL_BATTLE_PET = 160 - // CRITERIA_TYPE_LEVEL_BATTLE_PET_CREDIT = 162 + // CriteriaType::BattlePetReachLevel = 160 + // CriteriaType::ActivelyEarnPetLevel = 162 int32 PetLevel; - // CRITERIA_TYPE_PLACE_GARRISON_BUILDING = 167 - // CRITERIA_TYPE_CONSTRUCT_GARRISON_BUILDING = 169 + // CriteriaType::PlaceGarrisonBuilding = 167 + // CriteriaType::ActivateGarrisonBuilding = 169 + // CriteriaType::LearnGarrisonBlueprint = 179 int32 GarrBuildingID; - // CRITERIA_TYPE_UPGRADE_GARRISON = 170 + // CriteriaType::UpgradeGarrison = 170 int32 GarrisonLevel; - // CRITERIA_TYPE_START_GARRISON_MISSION = 171 - // CRITERIA_TYPE_COMPLETE_GARRISON_MISSION_COUNT = 173 + // CriteriaType::StartAnyGarrisonMissionWithFollowerType = 171 + // CriteriaType::SucceedAnyGarrisonMissionWithFollowerType = 173 int32 GarrFollowerTypeID; - // CRITERIA_TYPE_START_ORDER_HALL_MISSION = 172 - // CRITERIA_TYPE_COMPLETE_GARRISON_MISSION = 174 + // CriteriaType::StartGarrisonMission = 172 + // CriteriaType::SucceedGarrisonMission = 174 int32 GarrMissionID; - // CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER = 176 + // CriteriaType::RecruitGarrisonFollower = 176 int32 GarrFollowerID; - // CRITERIA_TYPE_COMPLETE_GARRISON_SHIPMENT = 182 + // CriteriaType::LearnGarrisonSpecialization = 181 + int32 GarrSpecializationID; + + // CriteriaType::CollectGarrisonShipment = 182 int32 CharShipmentContainerID; - // CRITERIA_TYPE_OWN_ITEM_MODIFIED_APPEARANCE = 192 + // CriteriaType::LearnTransmog = 192 int32 ItemModifiedAppearanceID; - // CRITERIA_TYPE_ACTIVELY_REACH_LEVEL = 196 + // CriteriaType::ActivelyReachLevel = 196 int32 PlayerLevel; - // CRITERIA_TYPE_ORDER_HALL_TALENT_LEARNED = 198 - // CRITERIA_TYPE_202 = 202 + // CriteriaType::CompleteResearchGarrisonTalent = 198 + // CriteriaType::StartResearchGarrisonTalent = 202 + // CriteriaType::SocketGarrisonTalent = 227 int32 GarrTalentID; - // CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED = 205 + // CriteriaType::EarnLicense = 204 + int32 BattlePayDeliverableID; + + // CriteriaType::CollectTransmogSetFromGroup = 205 int32 TransmogSetGroupID; - // CRITERIA_TYPE_RELIC_TALENT_UNLOCKED = 211 + // CriteriaType::ArtifactPowerRankPurchased = 209 + // CriteriaType::ChooseRelicTalent = 211 int32 ArtifactPowerID; - // CRITERIA_TYPE_EXPANSION_LEVEL = 212 + // CriteriaType::EarnExpansionLevel = 212 int32 ExpansionLevel; - // CRITERIA_TYPE_REACH_ACCOUNT_HONOR_LEVEL = 213 + // CriteriaType::AccountHonorLevelReached = 213 int32 AccountHonorLevel; - // CRITERIA_TREE_HEART_OF_AZEROTH_LEVEL_REACHED = 215 - int32 HeartOfAzerothLevel; + // CriteriaType::AzeriteLevelReached = 215 + int32 AzeriteLevel; + + // CriteriaType::MythicPlusRatingAttained = 230 + int32 DungeonScore; } Asset; uint32 ModifierTreeId; uint8 StartEvent; diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index fdc4a3aac10..babc2fde7a2 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -303,237 +303,243 @@ enum class CriteriaFlags : uint8 DEFINE_ENUM_FLAG(CriteriaFlags); -enum CriteriaTypes : uint8 -{ - CRITERIA_TYPE_KILL_CREATURE = 0, - CRITERIA_TYPE_WIN_BG = 1, - // 2 - unused (Legion - 23420) - CRITERIA_TYPE_COMPLETE_ARCHAEOLOGY_PROJECTS = 3, // struct { uint32 itemCount; } - CRITERIA_TYPE_SURVEY_GAMEOBJECT = 4, - CRITERIA_TYPE_REACH_LEVEL = 5, - CRITERIA_TYPE_CLEAR_DIGSITE = 6, - CRITERIA_TYPE_REACH_SKILL_LEVEL = 7, - CRITERIA_TYPE_COMPLETE_ACHIEVEMENT = 8, - CRITERIA_TYPE_COMPLETE_QUEST_COUNT = 9, - CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY = 10, // you have to complete a daily quest x times in a row - CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE = 11, - CRITERIA_TYPE_CURRENCY = 12, - CRITERIA_TYPE_DAMAGE_DONE = 13, - CRITERIA_TYPE_COMPLETE_DAILY_QUEST = 14, - CRITERIA_TYPE_COMPLETE_BATTLEGROUND = 15, - CRITERIA_TYPE_DEATH_AT_MAP = 16, - CRITERIA_TYPE_DEATH = 17, - CRITERIA_TYPE_DEATH_IN_DUNGEON = 18, - CRITERIA_TYPE_COMPLETE_RAID = 19, - CRITERIA_TYPE_KILLED_BY_CREATURE = 20, - CRITERIA_TYPE_MANUAL_COMPLETE_CRITERIA = 21, - CRITERIA_TYPE_COMPLETE_CHALLENGE_MODE_GUILD = 22, - CRITERIA_TYPE_KILLED_BY_PLAYER = 23, - CRITERIA_TYPE_FALL_WITHOUT_DYING = 24, - // 25 - unused (Legion - 23420) - CRITERIA_TYPE_DEATHS_FROM = 26, - CRITERIA_TYPE_COMPLETE_QUEST = 27, - CRITERIA_TYPE_BE_SPELL_TARGET = 28, - CRITERIA_TYPE_CAST_SPELL = 29, - CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE = 30, - CRITERIA_TYPE_HONORABLE_KILL_AT_AREA = 31, - CRITERIA_TYPE_WIN_ARENA = 32, - CRITERIA_TYPE_PLAY_ARENA = 33, - CRITERIA_TYPE_LEARN_SPELL = 34, - CRITERIA_TYPE_HONORABLE_KILL = 35, - CRITERIA_TYPE_OWN_ITEM = 36, - CRITERIA_TYPE_WIN_RATED_ARENA = 37, - CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38, - CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39, - CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40, - CRITERIA_TYPE_USE_ITEM = 41, - CRITERIA_TYPE_LOOT_ITEM = 42, - CRITERIA_TYPE_EXPLORE_AREA = 43, - CRITERIA_TYPE_OWN_RANK = 44, - CRITERIA_TYPE_BUY_BANK_SLOT = 45, - CRITERIA_TYPE_GAIN_REPUTATION = 46, - CRITERIA_TYPE_GAIN_EXALTED_REPUTATION = 47, - CRITERIA_TYPE_VISIT_BARBER_SHOP = 48, - CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT = 49, - CRITERIA_TYPE_ROLL_NEED_ON_LOOT = 50, /// @todo itemlevel is mentioned in text but not present in dbc - CRITERIA_TYPE_ROLL_GREED_ON_LOOT = 51, - CRITERIA_TYPE_HK_CLASS = 52, - CRITERIA_TYPE_HK_RACE = 53, - CRITERIA_TYPE_DO_EMOTE = 54, - CRITERIA_TYPE_HEALING_DONE = 55, - CRITERIA_TYPE_GET_KILLING_BLOWS = 56, /// @todo in some cases map not present, and in some cases need do without die - CRITERIA_TYPE_EQUIP_ITEM = 57, - // 58 - unused (Legion - 23420) - CRITERIA_TYPE_MONEY_FROM_VENDORS = 59, - CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS = 60, - CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS = 61, - CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD = 62, - CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING = 63, - CRITERIA_TYPE_DEFEAT_CREATURE_GROUP = 64, - CRITERIA_TYPE_GOLD_SPENT_AT_BARBER = 65, - CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL = 66, - CRITERIA_TYPE_LOOT_MONEY = 67, - CRITERIA_TYPE_USE_GAMEOBJECT = 68, - CRITERIA_TYPE_BE_SPELL_TARGET2 = 69, - CRITERIA_TYPE_SPECIAL_PVP_KILL = 70, - CRITERIA_TYPE_COMPLETE_CHALLENGE_MODE = 71, - CRITERIA_TYPE_FISH_IN_GAMEOBJECT = 72, - CRITERIA_TYPE_SEND_EVENT = 73, - CRITERIA_TYPE_ON_LOGIN = 74, - CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS = 75, - CRITERIA_TYPE_WIN_DUEL = 76, - CRITERIA_TYPE_LOSE_DUEL = 77, - CRITERIA_TYPE_KILL_CREATURE_TYPE = 78, - CRITERIA_TYPE_COOK_RECIPES_GUILD = 79, - CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS = 80, - CRITERIA_TYPE_EARN_PET_BATTLE_ACHIEVEMENT_POINTS = 81, - CRITERIA_TYPE_CREATE_AUCTION = 82, - CRITERIA_TYPE_HIGHEST_AUCTION_BID = 83, - CRITERIA_TYPE_WON_AUCTIONS = 84, - CRITERIA_TYPE_HIGHEST_AUCTION_SOLD = 85, - CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED = 86, - CRITERIA_TYPE_GAIN_REVERED_REPUTATION = 87, - CRITERIA_TYPE_GAIN_HONORED_REPUTATION = 88, - CRITERIA_TYPE_KNOWN_FACTIONS = 89, - CRITERIA_TYPE_LOOT_ANY_ITEM = 90, - CRITERIA_TYPE_OBTAIN_ANY_ITEM = 91, - CRITERIA_TYPE_SEND_EVENT_SCENARIO = 92, - CRITERIA_TYPE_ROLL_NEED = 93, - CRITERIA_TYPE_ROLL_GREED = 94, - CRITERIA_TYPE_RELEASE_SPIRIT = 95, - CRITERIA_TYPE_OWN_PET = 96, - CRITERIA_TYPE_GARRISON_COMPLETE_DUNGEON_ENCOUNTER = 97, - // 98 - unused (Legion - 23420) - // 99 - unused (Legion - 23420) - // 100 - unused (Legion - 23420) - CRITERIA_TYPE_HIGHEST_HIT_DEALT = 101, - CRITERIA_TYPE_HIGHEST_HIT_RECEIVED = 102, - CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED = 103, - CRITERIA_TYPE_HIGHEST_HEAL_CAST = 104, - CRITERIA_TYPE_TOTAL_HEALING_RECEIVED = 105, - CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED = 106, - CRITERIA_TYPE_QUEST_ABANDONED = 107, - CRITERIA_TYPE_FLIGHT_PATHS_TAKEN = 108, - CRITERIA_TYPE_LOOT_TYPE = 109, - CRITERIA_TYPE_CAST_SPELL2 = 110, /// @todo target entry is missing - // 111 - unused (Legion - 23420) - CRITERIA_TYPE_LEARN_SKILL_LINE = 112, - CRITERIA_TYPE_EARN_HONORABLE_KILL = 113, - CRITERIA_TYPE_ACCEPTED_SUMMONINGS = 114, - CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS = 115, - // 116 - unused (Legion - 23420) - // 117 - unused (Legion - 23420) - CRITERIA_TYPE_COMPLETE_LFG_DUNGEON = 118, - CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS = 119, - CRITERIA_TYPE_LFG_VOTE_KICKS_INITIATED_BY_PLAYER = 120, - CRITERIA_TYPE_LFG_VOTE_KICKS_NOT_INIT_BY_PLAYER = 121, - CRITERIA_TYPE_BE_KICKED_FROM_LFG = 122, - CRITERIA_TYPE_LFG_LEAVES = 123, - CRITERIA_TYPE_SPENT_GOLD_GUILD_REPAIRS = 124, - CRITERIA_TYPE_REACH_GUILD_LEVEL = 125, - CRITERIA_TYPE_CRAFT_ITEMS_GUILD = 126, - CRITERIA_TYPE_CATCH_FROM_POOL = 127, - CRITERIA_TYPE_BUY_GUILD_BANK_SLOTS = 128, - CRITERIA_TYPE_EARN_GUILD_ACHIEVEMENT_POINTS = 129, - CRITERIA_TYPE_WIN_RATED_BATTLEGROUND = 130, - // 131 - unused (Legion - 23420) - CRITERIA_TYPE_REACH_BG_RATING = 132, - CRITERIA_TYPE_BUY_GUILD_TABARD = 133, - CRITERIA_TYPE_COMPLETE_QUESTS_GUILD = 134, - CRITERIA_TYPE_HONORABLE_KILLS_GUILD = 135, - CRITERIA_TYPE_KILL_CREATURE_TYPE_GUILD = 136, - CRITERIA_TYPE_COUNT_OF_LFG_QUEUE_BOOSTS_BY_TANK = 137, - CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE_TYPE = 138, //struct { Flag flag; uint32 count; } 1: Guild Dungeon, 2:Guild Challenge, 3:Guild battlefield - CRITERIA_TYPE_COMPLETE_GUILD_CHALLENGE = 139, //struct { uint32 count; } Guild Challenge - // 140 - 1 criteria (16883), unused (Legion - 23420) - // 141 - 1 criteria (16884), unused (Legion - 23420) - // 142 - 1 criteria (16881), unused (Legion - 23420) - // 143 - 1 criteria (16882), unused (Legion - 23420) - // 144 - 1 criteria (17386), unused (Legion - 23420) - CRITERIA_TYPE_LFR_DUNGEONS_COMPLETED = 145, - CRITERIA_TYPE_LFR_LEAVES = 146, - CRITERIA_TYPE_LFR_VOTE_KICKS_INITIATED_BY_PLAYER = 147, - CRITERIA_TYPE_LFR_VOTE_KICKS_NOT_INIT_BY_PLAYER = 148, - CRITERIA_TYPE_BE_KICKED_FROM_LFR = 149, - CRITERIA_TYPE_COUNT_OF_LFR_QUEUE_BOOSTS_BY_TANK = 150, - CRITERIA_TYPE_COMPLETE_SCENARIO_COUNT = 151, - CRITERIA_TYPE_COMPLETE_SCENARIO = 152, - CRITERIA_TYPE_REACH_AREATRIGGER_WITH_ACTIONSET = 153, - // 154 - unused (Legion - 23420) - CRITERIA_TYPE_OWN_BATTLE_PET = 155, - CRITERIA_TYPE_OWN_BATTLE_PET_COUNT = 156, - CRITERIA_TYPE_CAPTURE_BATTLE_PET = 157, - CRITERIA_TYPE_WIN_PET_BATTLE = 158, - // 159 - 2 criterias (22312,22314), unused (Legion - 23420) - CRITERIA_TYPE_LEVEL_BATTLE_PET = 160, - CRITERIA_TYPE_CAPTURE_BATTLE_PET_CREDIT = 161, // triggers a quest credit - CRITERIA_TYPE_LEVEL_BATTLE_PET_CREDIT = 162, // triggers a quest credit - CRITERIA_TYPE_ENTER_AREA = 163, // triggers a quest credit - CRITERIA_TYPE_LEAVE_AREA = 164, // triggers a quest credit - CRITERIA_TYPE_COMPLETE_DUNGEON_ENCOUNTER = 165, - // 166 - unused (Legion - 23420) - CRITERIA_TYPE_PLACE_GARRISON_BUILDING = 167, - CRITERIA_TYPE_UPGRADE_GARRISON_BUILDING = 168, - CRITERIA_TYPE_CONSTRUCT_GARRISON_BUILDING = 169, - CRITERIA_TYPE_UPGRADE_GARRISON = 170, - CRITERIA_TYPE_START_GARRISON_MISSION = 171, - CRITERIA_TYPE_START_ORDER_HALL_MISSION = 172, - CRITERIA_TYPE_COMPLETE_GARRISON_MISSION_COUNT = 173, - CRITERIA_TYPE_COMPLETE_GARRISON_MISSION = 174, - CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER_COUNT = 175, - CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER = 176, - // 177 - 0 criterias (Legion - 23420) - CRITERIA_TYPE_LEARN_GARRISON_BLUEPRINT_COUNT = 178, - // 179 - 0 criterias (Legion - 23420) - // 180 - 0 criterias (Legion - 23420) - // 181 - 0 criterias (Legion - 23420) - CRITERIA_TYPE_COMPLETE_GARRISON_SHIPMENT = 182, - CRITERIA_TYPE_RAISE_GARRISON_FOLLOWER_ITEM_LEVEL = 183, - CRITERIA_TYPE_RAISE_GARRISON_FOLLOWER_LEVEL = 184, - CRITERIA_TYPE_OWN_TOY = 185, - CRITERIA_TYPE_OWN_TOY_COUNT = 186, - CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER_WITH_QUALITY= 187, - // 188 - 0 criterias (Legion - 23420) - CRITERIA_TYPE_OWN_HEIRLOOMS = 189, - CRITERIA_TYPE_ARTIFACT_POWER_EARNED = 190, - CRITERIA_TYPE_ARTIFACT_TRAITS_UNLOCKED = 191, - CRITERIA_TYPE_OWN_ITEM_MODIFIED_APPEARANCE = 192, - CRITERIA_TYPE_HONOR_LEVEL_REACHED = 194, - CRITERIA_TYPE_PRESTIGE_REACHED = 195, - CRITERIA_TYPE_ACTIVELY_REACH_LEVEL = 196, - // 197 - Order Hall Advancement related - CRITERIA_TYPE_ORDER_HALL_TALENT_LEARNED = 198, - CRITERIA_TYPE_APPEARANCE_UNLOCKED_BY_SLOT = 199, - CRITERIA_TYPE_ORDER_HALL_RECRUIT_TROOP = 200, - // 201 - 0 criterias (Legion - 23420) - // 202 - 0 criterias (Legion - 23420) - CRITERIA_TYPE_COMPLETE_WORLD_QUEST = 203, - // 204 - Special criteria type to award players for some external events? Comes with what looks like an identifier, so guessing it's not unique. - CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED = 205, - CRITERIA_TYPE_GAIN_PARAGON_REPUTATION = 206, - CRITERIA_TYPE_EARN_HONOR_XP = 207, - CRITERIA_TYPE_RELIC_TALENT_UNLOCKED = 211, - CRITERIA_TYPE_EXPANSION_LEVEL = 212, - CRITERIA_TYPE_REACH_ACCOUNT_HONOR_LEVEL = 213, - CRITERIA_TYPE_HEART_OF_AZEROTH_ARTIFACT_POWER_EARNED= 214, - CRITERIA_TYPE_HEART_OF_AZEROTH_LEVEL_REACHED = 215, - CRITERIA_TYPE_MYTHIC_KEYSTONE_COMPLETED = 216, // NYI - // 217 - 0 criterias - CRITERIA_TYPE_COMPLETE_QUEST_ACCUMULATE = 218, - CRITERIA_TYPE_BOUGHT_ITEM_FROM_VENDOR = 219, - CRITERIA_TYPE_SOLD_ITEM_TO_VENDOR = 220, - // 221 - 0 criterias - // 222 - 0 criterias - // 223 - 0 criterias - // 224 - 0 criterias - CRITERIA_TYPE_TRAVELLED_TO_AREA = 225, - // 226 - 0 criterias - // 227 - 0 criterias - CRITERIA_TYPE_APPLY_CONDUIT = 228, - CRITERIA_TYPE_CONVERT_ITEMS_TO_CURRENCY = 229, -}; - -#define CRITERIA_TYPE_TOTAL 232 +enum class CriteriaType : uint8 +{ + KillCreature = 0, // Kill NPC "{Creature}" + WinBattleground = 1, // Win battleground "{Map}" + CompleteResearchProject = 2, /*NYI*/ // Complete research project "{ResearchProject}" + CompleteAnyResearchProject = 3, /*NYI*/ // Complete any research project + FindResearchObject = 4, /*NYI*/ // Find research object "{GameObjects}" + ReachLevel = 5, // Reach level + ExhaustAnyResearchSite = 6, /*NYI*/ // Exhaust any research site + SkillRaised = 7, // Skill "{SkillLine}" raised + EarnAchievement = 8, // Earn achievement "{Achievement}" + CompleteQuestsCount = 9, // Count of complete quests (quest count) + CompleteAnyDailyQuestPerDay = 10, // Complete any daily quest (per day) + CompleteQuestsInZone = 11, // Complete quests in "{AreaTable}" + CurrencyGained = 12, // Currency "{CurrencyTypes}" gained + DamageDealt = 13, // Damage dealt + CompleteDailyQuest = 14, // Complete daily quest + ParticipateInBattleground = 15, // Participate in battleground "{Map}" + DieOnMap = 16, // Die on map "{Map}" + DieAnywhere = 17, // Die anywhere + DieInInstance = 18, // Die in an instance which handles at most {#Max Players} players + RunInstance = 19, /*NYI*/ // Run an instance which handles at most {#Max Players} players + KilledByCreature = 20, // Get killed by "{Creature}" + CompleteInternalCriteria = 21, /*NYI*/ // Designer Value{`Uses Record ID} + CompleteAnyChallengeMode = 22, /*NYI*/ // Complete any challenge mode + KilledByPlayer = 23, // Die to a player + MaxDistFallenWithoutDying = 24, // Maximum distance fallen without dying + EarnChallengeModeMedal = 25, /*NYI*/ // Earn a challenge mode medal of "{#Challenge Mode Medal (OBSOLETE)}" (OBSOLETE) + DieFromEnviromentalDamage = 26, // Die to "{$Env Damage}" environmental damage + CompleteQuest = 27, // Complete quest "{QuestV2}" + BeSpellTarget = 28, // Have the spell "{Spell}" cast on you + CastSpell = 29, // Cast the spell "{Spell}" + TrackedWorldStateUIModified = 30, // Tracked WorldStateUI value "{WorldStateUI}" is modified + PVPKillInArea = 31, // Kill someone in PVP in "{AreaTable}" + WinArena = 32, // Win arena "{Map}" + ParticipateInArena = 33, /*NYI*/ // Participate in arena "{Map}" + LearnOrKnowSpell = 34, // Learn or Know spell "{Spell}" + EarnHonorableKill = 35, // Earn an honorable kill + AcquireItem = 36, // Acquire item "{Item}" + WinAnyRankedArena = 37, // Win a ranked arena match (any arena) + EarnTeamArenaRating = 38, /*NYI*/ // Earn a team arena rating of {#Arena Rating} + EarnPersonalArenaRating = 39, // Earn a personal arena rating of {#Arena Rating} + AchieveSkillStep = 40, // Achieve a skill step in "{SkillLine}" + UseItem = 41, // Use item "{Item}" + LootItem = 42, // Loot "{Item}" via corpse, pickpocket, fishing, disenchanting, etc. + RevealWorldMapOverlay = 43, // Reveal world map overlay "{WorldMapOverlay}" + EarnTitle = 44, /*NYI*/ // Deprecated PVP Titles + BankSlotsPurchased = 45, // Bank slots purchased + ReputationGained = 46, // Reputation gained with faction "{Faction}" + TotalExaltedFactions = 47, // Total exalted factions + GotHaircut = 48, // Got a haircut + EquipItemInSlot = 49, // Equip item in slot "{$Equip Slot}" + RollNeed = 50, // Roll need and get {#Need Roll} + RollGreed = 51, // Roll greed and get {#Greed Roll} + DeliverKillingBlowToClass = 52, // Deliver a killing blow to a {ChrClasses} + DeliverKillingBlowToRace = 53, // Deliver a killing blow to a {ChrRaces} + DoEmote = 54, // Do a "{EmotesText}" emote + HealingDone = 55, // Healing done + DeliveredKillingBlow = 56, // Delivered a killing blow + EquipItem = 57, // Equip item "{Item}" + CompleteQuestsInSort = 58, /*NYI*/ // Complete quests in "{QuestSort}" + MoneyEarnedFromSales = 59, // Sell items to vendors + MoneySpentOnRespecs = 60, // Money spent on respecs + TotalRespecs = 61, // Total respecs + MoneyEarnedFromQuesting = 62, // Money earned from questing + MoneySpentOnTaxis = 63, // Money spent on taxis + KilledAllUnitsInSpawnRegion = 64, /*NYI*/ // Killed all units in spawn region "{SpawnRegion}" + MoneySpentAtBarberShop = 65, // Money spent at the barber shop + MoneySpentOnPostage = 66, // Money spent on postage + MoneyLootedFromCreatures = 67, // Money looted from creatures + UseGameobject = 68, // Use Game Object "{GameObjects}" + GainAura = 69, // Gain aura "{Spell}" + KillPlayer = 70, // Kill a player (no honor check) + CompleteChallengeMode = 71, /*NYI*/ // Complete a challenge mode on map "{Map}" + CatchFishInFishingHole = 72, // Catch fish in the "{GameObjects}" fishing hole + PlayerTriggerGameEvent = 73, /*NYI*/ // Player will Trigger game event "{GameEvents}" + Login = 74, // Login (USE SPARINGLY!) + LearnSpellFromSkillLine = 75, // Learn spell from the "{SkillLine}" skill line + WinDuel = 76, // Win a duel + LoseDuel = 77, // Lose a duel + KillAnyCreature = 78, // Kill any NPC + CreatedItemsByCastingSpellWithLimit = 79, /*NYI*/ // Created items by casting a spell (limit 1 per create...) + MoneyEarnedFromAuctions = 80, // Money earned from auctions + BattlePetAchievementPointsEarned = 81, /*NYI*/ // Battle pet achievement points earned + ItemsPostedAtAuction = 82, // Number of items posted at auction + HighestAuctionBid = 83, // Highest auction bid + AuctionsWon = 84, // Auctions won + HighestAuctionSale = 85, // Highest coin value of item sold + MostMoneyOwned = 86, // Most money owned + TotalReveredFactions = 87, // Total revered factions + TotalHonoredFactions = 88, // Total honored factions + TotalFactionsEncountered = 89, // Total factions encountered + LootAnyItem = 90, // Loot any item + ObtainAnyItem = 91, // Obtain any item + AnyoneTriggerGameEventScenario = 92, /*NYI*/ // Anyone will Trigger game event "{GameEvents}" (Scenario Only) + RollAnyNeed = 93, // Roll any number on need + RollAnyGreed = 94, // Roll any number on greed + ReleasedSpirit = 95, /*NYI*/ // Released Spirit + AccountKnownPet = 96, /*NYI*/ // Account knows pet "{Creature}" (Backtracked) + DefeatDungeonEncounterWhileElegibleForLoot = 97, /*NYI*/ // Defeat Encounter "{DungeonEncounter}" While Eligible For Loot + // UNUSED 18{} = 98, // Unused + // UNUSED 19{} = 99, // Unused + // UNUSED 20{} = 100, // Unused + HighestDamageDone = 101, // Highest damage done in 1 single ability + HighestDamageTaken = 102, // Most damage taken in 1 single hit + TotalDamageTaken = 103, // Total damage taken + HighestHealCast = 104, // Largest heal cast + TotalHealReceived = 105, // Total healing received + HighestHealReceived = 106, // Largest heal received + AbandonAnyQuest = 107, // Abandon any quest + BuyTaxi = 108, // Buy a taxi + GetLootByType = 109, // Get loot via "{$Loot Acquisition}" + LandTargetedSpellOnTarget = 110, // Land targeted spell "{Spell}" on a target + // UNUSED 21{} = 111, // Unused + LearnTradeskillSkillLine = 112, // Learn tradeskill skill line "{SkillLine}" + HonorableKills = 113, // Honorable kills (number in interface, won't update except for login) + AcceptSummon = 114, // Accept a summon + EarnAchievementPoints = 115, // Earn achievement points + RollDisenchant = 116, /*NYI*/ // Roll disenchant and get {#Disenchant Roll} + RollAnyDisenchant = 117, /*NYI*/ // Roll any number on disenchant + CompletedLFGDungeon = 118, /*NYI*/ // Completed an LFG dungeon + CompletedLFGDungeonWithStrangers = 119, // Completed an LFG dungeon with strangers + KickInitiatorInLFGDungeon = 120, /*NYI*/ // Kicked in an LFG dungeon (initiator) + KickVoterInLFGDungeon = 121, /*NYI*/ // Kicked in an LFG dungeon (voter) + KickTargetInLFGDungeon = 122, /*NYI*/ // Kicked in an LFG dungeon (target) + AbandonedLFGDungeon = 123, /*NYI*/ // Abandoned an LFG dungeon + MoneySpentOnGuildRepair = 124, /*NYI*/ // Guild repair amount spent + GuildAttainedLevel = 125, /*NYI*/ // Guild attained level + CreatedItemsByCastingSpell = 126, /*NYI*/ // Created items by casting a spell + FishInAnyPool = 127, /*NYI*/ // Fish in any pool + GuildBankTabsPurchased = 128, /*NYI*/ // Guild bank tabs purchased + EarnGuildAchievementPoints = 129, /*NYI*/ // Earn guild achievement points + WinAnyBattleground = 130, /*NYI*/ // Win any battleground + ParticipateInAnyBattleground = 131, /*NYI*/ // Participate in any battleground + EarnBattlegroundRating = 132, /*NYI*/ // Earn a battleground rating + GuildTabardCreated = 133, /*NYI*/ // Guild tabard created + CompleteQuestsCountForGuild = 134, /*NYI*/ // Count of complete quests for guild (Quest count) + HonorableKillsForGuild = 135, /*NYI*/ // Honorable kills for Guild + KillAnyCreatureForGuild = 136, /*NYI*/ // Kill any NPC for Guild + GroupedTankLeftEarlyInLFGDungeon = 137, /*NYI*/ // Grouped tank left early in an LFG dungeon + CompleteGuildChallenge = 138, /*NYI*/ // Complete a "{$Guild Challenge}" guild challenge + CompleteAnyGuildChallenge = 139, /*NYI*/ // Complete any guild challenge + MarkedAFKInBattleground = 140, /*NYI*/ // Marked AFK in a battleground + RemovedAFKInBattleground = 141, /*NYI*/ // Removed for being AFK in a battleground + StartAnyBattleground = 142, /*NYI*/ // Start any battleground (AFK tracking) + CompleteAnyBattleground = 143, /*NYI*/ // Complete any battleground (AFK tracking) + MarkedSomeoneAFKInBattleground = 144, /*NYI*/ // Marked someone for being AFK in a battleground + CompletedLFRDungeon = 145, /*NYI*/ // Completed an LFR dungeon + AbandonedLFRDungeon = 146, /*NYI*/ // Abandoned an LFR dungeon + KickInitiatorInLFRDungeon = 147, /*NYI*/ // Kicked in an LFR dungeon (initiator) + KickVoterInLFRDungeon = 148, /*NYI*/ // Kicked in an LFR dungeon (voter) + KickTargetInLFRDungeon = 149, /*NYI*/ // Kicked in an LFR dungeon (target) + GroupedTankLeftEarlyInLFRDungeon = 150, /*NYI*/ // Grouped tank left early in an LFR dungeon + CompleteAnyScenario = 151, /*NYI*/ // Complete a Scenario + CompleteScenario = 152, /*NYI*/ // Complete scenario "{Scenario}" + EnterAreaTriggerWithActionSet = 153, /*NYI*/ // Enter area trigger "{AreaTriggerActionSet}" + LeaveAreaTriggerWithActionSet = 154, /*NYI*/ // Leave area trigger "{AreaTriggerActionSet}" + LearnedNewPet = 155, // (Account Only) Learned a new pet + UniquePetsOwned = 156, // (Account Only) Unique pets owned + AccountObtainPetThroughBattle = 157, /*NYI*/ // (Account Only) Obtain a pet through battle + WinPetBattle = 158, /*NYI*/ // Win a pet battle + LosePetBattle = 159, /*NYI*/ // Lose a pet battle + BattlePetReachLevel = 160, /*NYI*/ // (Account Only) Battle pet has reached level {#Level} + PlayerObtainPetThroughBattle = 161, /*NYI*/ // (Player) Obtain a pet through battle + ActivelyEarnPetLevel = 162, /*NYI*/ // (Player) Actively earn level {#Level} with a pet by a player + EnterArea = 163, /*NYI*/ // Enter Map Area "{AreaTable}" + LeaveArea = 164, /*NYI*/ // Leave Map Area "{AreaTable}" + DefeatDungeonEncounter = 165, /*NYI*/ // Defeat Encounter "{DungeonEncounter}" + PlaceAnyGarrisonBuilding = 166, /*NYI*/ // Garrison Building: Place any + PlaceGarrisonBuilding = 167, // Garrison Building: Place "{GarrBuilding}" + ActivateAnyGarrisonBuilding = 168, // Garrison Building: Activate any + ActivateGarrisonBuilding = 169, /*NYI*/ // Garrison Building: Activate "{GarrBuilding}" + UpgradeGarrison = 170, /*NYI*/ // Garrison: Upgrade Garrison to Tier "{#Tier:2,3}" + StartAnyGarrisonMissionWithFollowerType = 171, /*NYI*/ // Garrison Mission: Start any with FollowerType "{GarrFollowerType}" + StartGarrisonMission = 172, /*NYI*/ // Garrison Mission: Start "{GarrMission}" + SucceedAnyGarrisonMissionWithFollowerType = 173, /*NYI*/ // Garrison Mission: Succeed any with FollowerType "{GarrFollowerType}" + SucceedGarrisonMission = 174, /*NYI*/ // Garrison Mission: Succeed "{GarrMission}" + RecruitAnyGarrisonFollower = 175, /*NYI*/ // Garrison Follower: Recruit any + RecruitGarrisonFollower = 176, // Garrison Follower: Recruit "{GarrFollower}" + AcquireGarrison = 177, /*NYI*/ // Garrison: Acquire a Garrison + LearnAnyGarrisonBlueprint = 178, /*NYI*/ // Garrison Blueprint: Learn any + LearnGarrisonBlueprint = 179, /*NYI*/ // Garrison Blueprint: Learn "{GarrBuilding}" + LearnAnyGarrisonSpecialization = 180, /*NYI*/ // Garrison Specialization: Learn any + LearnGarrisonSpecialization = 181, /*NYI*/ // Garrison Specialization: Learn "{GarrSpecialization}" + CollectGarrisonShipment = 182, /*NYI*/ // Garrison Shipment of type "{CharShipmentContainer}" collected + ItemLevelChangedForGarrisonFollower = 183, /*NYI*/ // Garrison Follower: Item Level Changed + LevelChangedForGarrisonFollower = 184, /*NYI*/ // Garrison Follower: Level Changed + LearnToy = 185, /*NYI*/ // Learn Toy "{Item}" + LearnAnyToy = 186, /*NYI*/ // Learn Any Toy + QualityUpgradedForGarrisonFollower = 187, /*NYI*/ // Garrison Follower: Quality Upgraded + LearnHeirloom = 188, /*NYI*/ // Learn Heirloom "{Item}" + LearnAnyHeirloom = 189, /*NYI*/ // Learn Any Heirloom + EarnArtifactXP = 190, /*NYI*/ // Earn Artifact XP + AnyArtifactPowerRankPurchased = 191, /*NYI*/ // Artifact Power Ranks Purchased + LearnTransmog = 192, /*NYI*/ // Learn Transmog "{ItemModifiedAppearance}" + LearnAnyTransmog = 193, /*NYI*/ // Learn Any Transmog + HonorLevelIncrease = 194, // (Player) honor level increase + PrestigeLevelIncrease = 195, /*NYI*/ // (Player) prestige level increase + ActivelyReachLevel = 196, // Actively level to level {#Level} + CompleteResearchAnyGarrisonTalent = 197, /*NYI*/ // Garrison Talent: Complete Research Any + CompleteResearchGarrisonTalent = 198, /*NYI*/ // Garrison Talent: Complete Research "{GarrTalent}" + LearnAnyTransmogInSlot = 199, // Learn Any Transmog in Slot "{$Equip Slot}" + RecruitAnyGarrisonTroop = 200, /*NYI*/ // Recruit any Garrison Troop + StartResearchAnyGarrisonTalent = 201, /*NYI*/ // Garrison Talent: Start Research Any + StartResearchGarrisonTalent = 202, /*NYI*/ // Garrison Talent: Start Research "{GarrTalent}" + CompleteAnyWorldQuest = 203, /*NYI*/ // Complete Any Quest + EarnLicense = 204, /*NYI*/ // Earn License "{BattlePayDeliverable}" (does NOT work for box level) + CollectTransmogSetFromGroup = 205, // (Account Only) Collect a Transmog Set from Group "{TransmogSetGroup}" + ParagonLevelIncreaseWithFaction = 206, /*NYI*/ // (Player) paragon level increase with faction "{Faction}" + PlayerHasEarnedHonor = 207, /*NYI*/ // Player has earned honor + KillCreatureScenario = 208, /*NYI*/ // Kill NPC "{Creature}" (scenario criteria only, do not use for player) + ArtifactPowerRankPurchased = 209, /*NYI*/ // Artifact Power Rank of "{ArtifactPower}" Purchased + ChooseAnyRelicTalent = 210, /*NYI*/ // Choose any Relic Talent + ChooseRelicTalent = 211, /*NYI*/ // Choose Relic Talent "{ArtifactPower}" + EarnExpansionLevel = 212, /*NYI*/ // Earn Expansion Level "{$Expansion Level}" + AccountHonorLevelReached = 213, /*NYI*/ // (Account Only) honor level {#Level} reached + EarnArtifactXPForAzeriteItem = 214, // Earn Artifact experience for Azerite Item + AzeriteLevelReached = 215, // Azerite Level {#Azerite Level} reached + MythicPlusCompleted = 216, /*NYI*/ // Mythic Plus Completed + ScenarioGroupCompleted = 217, /*NYI*/ // Scenario Group Completed + CompleteAnyReplayQuest = 218, // Complete Any Replay Quest + BuyItemsFromVendors = 219, // Buy items from vendors + SellItemsToVendors = 220, // Sell items to vendors + ReachMaxLevel = 221, /*NYI*/ // Reach Max Level + MemorizeSpell = 222, /*NYI*/ // Memorize Spell "{Spell}" + LearnTransmogIllusion = 223, /*NYI*/ // Learn Transmog Illusion + LearnAnyTransmogIllusion = 224, /*NYI*/ // Learn Any Transmog Illusion + EnterTopLevelArea = 225, // Enter Top Level Map Area "{AreaTable}" + LeaveTopLevelArea = 226, /*NYI*/ // Leave Top Level Map Area "{AreaTable}" + SocketGarrisonTalent = 227, /*NYI*/ // Socket Garrison Talent {GarrTalent} + SocketAnySoulbindConduit = 228, /*NYI*/ // Socket Any Soulbind Conduit + ObtainAnyItemWithCurrencyValue = 229, /*NYI*/ // Obtain Any Item With Currency Value "{CurrencyTypes}" + MythicPlusRatingAttained = 230, /*NYI*/ // (Player) Mythic+ Rating "{#DungeonScore}" attained + SpentTalentPoint = 231, /*NYI*/ // (Player) spent talent point + + Count +}; enum class CriteriaTreeFlags : uint16 { diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index fe2a3b02f2b..9cae257d87b 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -1450,7 +1450,7 @@ void LFGMgr::FinishDungeon(ObjectGuid gguid, const uint32 dungeonId, Map const* // Update achievements if (dungeon->difficulty == DIFFICULTY_HEROIC) - player->UpdateCriteria(CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS, 1); + player->UpdateCriteria(CriteriaType::CompletedLFGDungeonWithStrangers, 1); LfgReward const* reward = GetRandomDungeonReward(rDungeonId, player->getLevel()); if (!reward) diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index a18fe4277d8..4b7e2964b06 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -2046,7 +2046,7 @@ void GameObject::Use(Unit* user) Player* player = user->ToPlayer(); player->SendLoot(GetGUID(), LOOT_FISHINGHOLE); - player->UpdateCriteria(CRITERIA_TYPE_FISH_IN_GAMEOBJECT, GetGOInfo()->entry); + player->UpdateCriteria(CriteriaType::CatchFishInFishingHole, GetGOInfo()->entry); return; } diff --git a/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp b/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp index f81b2e1a6b2..293e5485689 100644 --- a/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp +++ b/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp @@ -258,7 +258,7 @@ void AzeriteItem::GiveXP(uint64 xp) SetUpdateFieldValue(m_values.ModifyValue(&AzeriteItem::m_azeriteItemData).ModifyValue(&UF::AzeriteItemData::Xp), currentXP); - owner->UpdateCriteria(CRITERIA_TYPE_HEART_OF_AZEROTH_ARTIFACT_POWER_EARNED, xp); + owner->UpdateCriteria(CriteriaType::EarnArtifactXPForAzeriteItem, xp); // changing azerite level changes item level, need to update stats if (m_azeriteItemData->Level != level) @@ -268,7 +268,7 @@ void AzeriteItem::GiveXP(uint64 xp) SetUpdateFieldValue(m_values.ModifyValue(&AzeriteItem::m_azeriteItemData).ModifyValue(&UF::AzeriteItemData::Level), level); UnlockDefaultMilestones(); - owner->UpdateCriteria(CRITERIA_TYPE_HEART_OF_AZEROTH_LEVEL_REACHED, level); + owner->UpdateCriteria(CriteriaType::AzeriteLevelReached, level); if (IsEquipped()) owner->_ApplyItemBonuses(this, GetSlot(), true); diff --git a/src/server/game/Entities/Player/CollectionMgr.cpp b/src/server/game/Entities/Player/CollectionMgr.cpp index bf1ed68072e..cd5a7a147d8 100644 --- a/src/server/game/Entities/Player/CollectionMgr.cpp +++ b/src/server/game/Entities/Player/CollectionMgr.cpp @@ -799,13 +799,13 @@ void CollectionMgr::AddItemAppearance(ItemModifiedAppearanceEntry const* itemMod { int32 transmogSlot = ItemTransmogrificationSlots[item->InventoryType]; if (transmogSlot >= 0) - _owner->GetPlayer()->UpdateCriteria(CRITERIA_TYPE_APPEARANCE_UNLOCKED_BY_SLOT, transmogSlot, itemModifiedAppearance->ID); + _owner->GetPlayer()->UpdateCriteria(CriteriaType::LearnAnyTransmogInSlot, transmogSlot, itemModifiedAppearance->ID); } if (std::vector<TransmogSetEntry const*> const* sets = sDB2Manager.GetTransmogSetsForItemModifiedAppearance(itemModifiedAppearance->ID)) for (TransmogSetEntry const* set : *sets) if (IsSetCompleted(set->ID)) - _owner->GetPlayer()->UpdateCriteria(CRITERIA_TYPE_TRANSMOG_SET_UNLOCKED, set->TransmogSetGroupID); + _owner->GetPlayer()->UpdateCriteria(CriteriaType::CollectTransmogSetFromGroup, set->TransmogSetGroupID); } void CollectionMgr::AddTemporaryAppearance(ObjectGuid const& itemGuid, ItemModifiedAppearanceEntry const* itemModifiedAppearance) diff --git a/src/server/game/Entities/Player/KillRewarder.cpp b/src/server/game/Entities/Player/KillRewarder.cpp index 35e3b892e01..4cf0befcaa0 100644 --- a/src/server/game/Entities/Player/KillRewarder.cpp +++ b/src/server/game/Entities/Player/KillRewarder.cpp @@ -180,7 +180,7 @@ inline void KillRewarder::_RewardKillCredit(Player* player) if (Creature* target = _victim->ToCreature()) { player->KilledMonster(target->GetCreatureTemplate(), target->GetGUID()); - player->UpdateCriteria(CRITERIA_TYPE_KILL_CREATURE_TYPE, target->GetCreatureType(), 1, 0, target); + player->UpdateCriteria(CriteriaType::KillAnyCreature, target->GetCreatureType(), 1, 0, target); } } @@ -244,7 +244,7 @@ void KillRewarder::_RewardGroup() if (_killer == member || member->IsAtGroupRewardDistance(_victim)) { _RewardPlayer(member, isDungeon); - member->UpdateCriteria(CRITERIA_TYPE_SPECIAL_PVP_KILL, 1, 0, 0, _victim); + member->UpdateCriteria(CriteriaType::KillPlayer, 1, 0, 0, _victim); } } } @@ -282,9 +282,9 @@ void KillRewarder::Reward() if (ObjectGuid::LowType guildId = victim->GetMap()->GetOwnerGuildId()) if (Guild* guild = sGuildMgr->GetGuildById(guildId)) - guild->UpdateCriteria(CRITERIA_TYPE_KILL_CREATURE, victim->GetEntry(), 1, 0, victim, _killer); + guild->UpdateCriteria(CriteriaType::KillCreature, victim->GetEntry(), 1, 0, victim, _killer); if (Scenario* scenario = victim->GetScenario()) - scenario->UpdateCriteria(CRITERIA_TYPE_KILL_CREATURE, victim->GetEntry(), 1, 0, victim, _killer); + scenario->UpdateCriteria(CriteriaType::KillCreature, victim->GetEntry(), 1, 0, victim, _killer); } } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 7b4a05056cc..7e19587d496 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -683,7 +683,7 @@ uint32 Player::EnvironmentalDamage(EnviromentalDamage type, uint32 damage) SendDurabilityLoss(this, 10); } - UpdateCriteria(CRITERIA_TYPE_DEATHS_FROM, 1, type); + UpdateCriteria(CriteriaType::DieFromEnviromentalDamage, 1, type); } return final_damage; @@ -1259,9 +1259,9 @@ void Player::setDeathState(DeathState s) InitializeSelfResurrectionSpells(); - UpdateCriteria(CRITERIA_TYPE_DEATH_AT_MAP, 1); - UpdateCriteria(CRITERIA_TYPE_DEATH, 1); - UpdateCriteria(CRITERIA_TYPE_DEATH_IN_DUNGEON, 1); + UpdateCriteria(CriteriaType::DieOnMap, 1); + UpdateCriteria(CriteriaType::DieAnywhere, 1); + UpdateCriteria(CriteriaType::DieInInstance, 1); // reset all death criterias ResetCriteria(CriteriaFailEvent::Death, 0); @@ -2377,8 +2377,8 @@ void Player::GiveLevel(uint8 level) CharacterDatabase.CommitTransaction(trans); } - UpdateCriteria(CRITERIA_TYPE_REACH_LEVEL); - UpdateCriteria(CRITERIA_TYPE_ACTIVELY_REACH_LEVEL, level); + UpdateCriteria(CriteriaType::ReachLevel); + UpdateCriteria(CriteriaType::ActivelyReachLevel, level); PushQuests(); @@ -3051,11 +3051,11 @@ bool Player::AddSpell(uint32 spellId, bool active, bool learning, bool dependent // not ranked skills for (SkillLineAbilityMap::const_iterator _spell_idx = skill_bounds.first; _spell_idx != skill_bounds.second; ++_spell_idx) { - UpdateCriteria(CRITERIA_TYPE_LEARN_SKILL_LINE, _spell_idx->second->SkillLine); - UpdateCriteria(CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS, _spell_idx->second->SkillLine); + UpdateCriteria(CriteriaType::LearnTradeskillSkillLine, _spell_idx->second->SkillLine); + UpdateCriteria(CriteriaType::LearnSpellFromSkillLine, _spell_idx->second->SkillLine); } - UpdateCriteria(CRITERIA_TYPE_LEARN_SPELL, spellId); + UpdateCriteria(CriteriaType::LearnOrKnowSpell, spellId); } // needs to be when spell is already learned, to prevent infinite recursion crashes @@ -3068,7 +3068,7 @@ bool Player::AddSpell(uint32 spellId, bool active, bool learning, bool dependent if (entry->SummonSpellID == int32(spellId) && GetSession()->GetBattlePetMgr()->GetPetCount(entry->ID) == 0) { GetSession()->GetBattlePetMgr()->AddPet(entry->ID, entry->CreatureID, BattlePetMgr::RollPetBreed(entry->ID), BattlePetMgr::GetDefaultPetQuality(entry->ID)); - UpdateCriteria(CRITERIA_TYPE_OWN_BATTLE_PET_COUNT); + UpdateCriteria(CriteriaType::UniquePetsOwned); break; } } @@ -3453,8 +3453,8 @@ bool Player::ResetTalents(bool noCost) if (!noCost) { ModifyMoney(-(int64)cost); - UpdateCriteria(CRITERIA_TYPE_GOLD_SPENT_FOR_TALENTS, cost); - UpdateCriteria(CRITERIA_TYPE_NUMBER_OF_TALENT_RESETS, 1); + UpdateCriteria(CriteriaType::MoneySpentOnRespecs, cost); + UpdateCriteria(CriteriaType::TotalRespecs, 1); SetTalentResetCost(cost); SetTalentResetTime(GameTime::GetGameTime()); @@ -5588,7 +5588,7 @@ bool Player::UpdateSkillPro(uint16 skillId, int32 chance, uint32 step) } UpdateSkillEnchantments(skillId, value, new_value); - UpdateCriteria(CRITERIA_TYPE_REACH_SKILL_LEVEL, skillId); + UpdateCriteria(CriteriaType::SkillRaised, skillId); TC_LOG_DEBUG("entities.player.skills", "Player::UpdateSkillPro: Player '%s' (%s), SkillID: %u, Chance: %3.1f%% taken", GetName().c_str(), GetGUID().ToString().c_str(), skillId, chance / 10.0f); return true; @@ -5684,8 +5684,8 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) if (newVal > currVal) UpdateSkillEnchantments(id, currVal, newVal); - UpdateCriteria(CRITERIA_TYPE_REACH_SKILL_LEVEL, id); - UpdateCriteria(CRITERIA_TYPE_LEARN_SKILL_LEVEL, id); + UpdateCriteria(CriteriaType::SkillRaised, id); + UpdateCriteria(CriteriaType::AchieveSkillStep, id); // update skill state if (itr->second.uState == SKILL_UNCHANGED) @@ -5807,8 +5807,8 @@ void Player::SetSkill(uint16 id, uint16 step, uint16 newVal, uint16 maxVal) if (newVal) { - UpdateCriteria(CRITERIA_TYPE_REACH_SKILL_LEVEL, id); - UpdateCriteria(CRITERIA_TYPE_LEARN_SKILL_LEVEL, id); + UpdateCriteria(CriteriaType::SkillRaised, id); + UpdateCriteria(CriteriaType::AchieveSkillStep, id); // temporary bonuses for (AuraEffect* effect : GetAuraEffectsByType(SPELL_AURA_MOD_SKILL)) @@ -6178,7 +6178,7 @@ void Player::CheckAreaExploreAndOutdoor() { SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::ExploredZones, offset), val); - UpdateCriteria(CRITERIA_TYPE_EXPLORE_AREA, GetAreaId()); + UpdateCriteria(CriteriaType::RevealWorldMapOverlay, GetAreaId()); if (Optional<ContentTuningLevels> areaLevels = sDB2Manager.GetContentTuningData(areaEntry->ContentTuningID, m_playerData->CtrOptions->ContentTuningConditionMask)) { @@ -6563,11 +6563,11 @@ bool Player::RewardHonor(Unit* victim, uint32 groupsize, int32 honor, bool pvpto ApplyModUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::TodayHonorableKills), 1, true); // and those in a lifetime ApplyModUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::LifetimeHonorableKills), 1, true); - UpdateCriteria(CRITERIA_TYPE_EARN_HONORABLE_KILL); - UpdateCriteria(CRITERIA_TYPE_HK_CLASS, victim->getClass()); - UpdateCriteria(CRITERIA_TYPE_HK_RACE, victim->getRace()); - UpdateCriteria(CRITERIA_TYPE_HONORABLE_KILL_AT_AREA, GetAreaId()); - UpdateCriteria(CRITERIA_TYPE_HONORABLE_KILL, 1, 0, 0, victim); + UpdateCriteria(CriteriaType::HonorableKills); + UpdateCriteria(CriteriaType::DeliverKillingBlowToClass, victim->getClass()); + UpdateCriteria(CriteriaType::DeliverKillingBlowToRace, victim->getRace()); + UpdateCriteria(CriteriaType::PVPKillInArea, GetAreaId()); + UpdateCriteria(CriteriaType::EarnHonorableKill, 1, 0, 0, victim); } else { @@ -6712,7 +6712,7 @@ void Player::SetHonorLevel(uint8 level) SetUpdateFieldValue(m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::HonorLevel), level); UpdateHonorNextLevel(); - UpdateCriteria(CRITERIA_TYPE_HONOR_LEVEL_REACHED); + UpdateCriteria(CriteriaType::HonorLevelIncrease); } void Player::UpdateHonorNextLevel() @@ -6979,7 +6979,7 @@ void Player::ModifyCurrency(uint32 id, int32 count, bool printLog/* = true*/, bo itr->second.TrackedQuantity = newTrackedCount; if (count > 0) - UpdateCriteria(CRITERIA_TYPE_CURRENCY, id, count); + UpdateCriteria(CriteriaType::CurrencyGained, id, count); WorldPackets::Misc::SetCurrency packet; packet.Type = id; @@ -7186,7 +7186,7 @@ void Player::UpdateArea(uint32 newArea) PushQuests(); - UpdateCriteria(CRITERIA_TYPE_TRAVELLED_TO_AREA, newArea); + UpdateCriteria(CriteriaType::EnterTopLevelArea, newArea); } void Player::UpdateZone(uint32 newZone, uint32 newArea) @@ -7417,8 +7417,8 @@ void Player::DuelComplete(DuelCompleteType type) } break; case DUEL_WON: - UpdateCriteria(CRITERIA_TYPE_LOSE_DUEL, 1); - duel->opponent->UpdateCriteria(CRITERIA_TYPE_WIN_DUEL, 1); + UpdateCriteria(CriteriaType::LoseDuel, 1); + duel->opponent->UpdateCriteria(CriteriaType::WinDuel, 1); // Credit for quest Death's Challenge if (getClass() == CLASS_DEATH_KNIGHT && duel->opponent->GetQuestStatus(12733) == QUEST_STATUS_INCOMPLETE) @@ -12043,8 +12043,8 @@ Item* Player::StoreNewItem(ItemPosCountVec const& pos, uint32 itemId, bool updat if (item) { ItemAddedQuestCheck(itemId, count); - UpdateCriteria(CRITERIA_TYPE_OBTAIN_ANY_ITEM, itemId, count); - UpdateCriteria(CRITERIA_TYPE_OWN_ITEM, itemId, 1); + UpdateCriteria(CriteriaType::ObtainAnyItem, itemId, count); + UpdateCriteria(CriteriaType::AcquireItem, itemId, 1); item->AddItemFlag(ITEM_FIELD_FLAG_NEW_ITEM); @@ -12233,7 +12233,7 @@ Item* Player::EquipNewItem(uint16 pos, uint32 item, ItemContext context, bool up if (Item* pItem = Item::CreateItem(item, 1, context, this)) { ItemAddedQuestCheck(item, 1); - UpdateCriteria(CRITERIA_TYPE_OBTAIN_ANY_ITEM, item, 1); + UpdateCriteria(CriteriaType::ObtainAnyItem, item, 1); return EquipItem(pos, pItem, update); } @@ -12347,8 +12347,8 @@ Item* Player::EquipItem(uint16 pos, Item* pItem, bool update) CheckTitanGripPenalty(); // only for full equip instead adding to stack - UpdateCriteria(CRITERIA_TYPE_EQUIP_ITEM, pItem->GetEntry()); - UpdateCriteria(CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT, slot, pItem->GetEntry()); + UpdateCriteria(CriteriaType::EquipItem, pItem->GetEntry()); + UpdateCriteria(CriteriaType::EquipItemInSlot, slot, pItem->GetEntry()); UpdateAverageItemLevelEquipped(); @@ -12475,8 +12475,8 @@ void Player::QuickEquipItem(uint16 pos, Item* pItem) if (slot == EQUIPMENT_SLOT_MAINHAND || slot == EQUIPMENT_SLOT_OFFHAND) CheckTitanGripPenalty(); - UpdateCriteria(CRITERIA_TYPE_EQUIP_ITEM, pItem->GetEntry()); - UpdateCriteria(CRITERIA_TYPE_EQUIP_ITEM_IN_SLOT, slot, pItem->GetEntry()); + UpdateCriteria(CriteriaType::EquipItem, pItem->GetEntry()); + UpdateCriteria(CriteriaType::EquipItemInSlot, slot, pItem->GetEntry()); } } @@ -12635,7 +12635,7 @@ void Player::MoveItemToInventory(ItemPosCountVec const& dest, Item* pItem, bool { // update quest counters ItemAddedQuestCheck(pItem->GetEntry(), pItem->GetCount()); - UpdateCriteria(CRITERIA_TYPE_OBTAIN_ANY_ITEM, pItem->GetEntry(), pItem->GetCount()); + UpdateCriteria(CriteriaType::ObtainAnyItem, pItem->GetEntry(), pItem->GetCount()); // store item Item* pLastItem = StoreItem(dest, pItem, update); @@ -15702,7 +15702,7 @@ void Player::RewardQuest(Quest const* quest, LootItemType rewardType, uint32 rew ModifyMoney(moneyRew); if (moneyRew > 0) - UpdateCriteria(CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD, uint32(moneyRew)); + UpdateCriteria(CriteriaType::MoneyEarnedFromQuesting, uint32(moneyRew)); } // honor reward @@ -15733,8 +15733,8 @@ void Player::RewardQuest(Quest const* quest, LootItemType rewardType, uint32 rew SetDailyQuestStatus(quest_id); if (quest->IsDaily()) { - UpdateCriteria(CRITERIA_TYPE_COMPLETE_DAILY_QUEST, quest_id); - UpdateCriteria(CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY, quest_id); + UpdateCriteria(CriteriaType::CompleteDailyQuest, quest_id); + UpdateCriteria(CriteriaType::CompleteAnyDailyQuestPerDay, quest_id); } } else if (quest->IsWeekly()) @@ -15782,10 +15782,10 @@ void Player::RewardQuest(Quest const* quest, LootItemType rewardType, uint32 rew } if (quest->GetZoneOrSort() > 0) - UpdateCriteria(CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE, quest->GetQuestId()); - UpdateCriteria(CRITERIA_TYPE_COMPLETE_QUEST_COUNT); - UpdateCriteria(CRITERIA_TYPE_COMPLETE_QUEST, quest->GetQuestId()); - UpdateCriteria(CRITERIA_TYPE_COMPLETE_QUEST_ACCUMULATE, 1); + UpdateCriteria(CriteriaType::CompleteQuestsInZone, quest->GetQuestId()); + UpdateCriteria(CriteriaType::CompleteQuestsCount); + UpdateCriteria(CriteriaType::CompleteQuest, quest->GetQuestId()); + UpdateCriteria(CriteriaType::CompleteAnyReplayQuest, 1); // make full db save SaveToDB(false); @@ -16870,7 +16870,7 @@ void Player::KilledMonsterCredit(uint32 entry, ObjectGuid guid /*= ObjectGuid::E } StartCriteriaTimer(CriteriaStartEvent::KillNPC, real_entry); // MUST BE CALLED FIRST - UpdateCriteria(CRITERIA_TYPE_KILL_CREATURE, real_entry, addKillCount, 0, killed); + UpdateCriteria(CriteriaType::KillCreature, real_entry, addKillCount, 0, killed); UpdateQuestObjectiveProgress(QUEST_OBJECTIVE_MONSTER, entry, 1, guid); } @@ -22695,7 +22695,7 @@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc } //Checks and preparations done, DO FLIGHT - UpdateCriteria(CRITERIA_TYPE_FLIGHT_PATHS_TAKEN, 1); + UpdateCriteria(CriteriaType::BuyTaxi, 1); // prevent stealth flight //RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::Interacting); @@ -22706,14 +22706,14 @@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc ASSERT(lastPathNode); m_taxi.ClearTaxiDestinations(); ModifyMoney(-int64(totalcost)); - UpdateCriteria(CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING, totalcost); + UpdateCriteria(CriteriaType::MoneySpentOnTaxis, totalcost); TeleportTo(lastPathNode->ContinentID, lastPathNode->Pos.X, lastPathNode->Pos.Y, lastPathNode->Pos.Z, GetOrientation()); return false; } else { ModifyMoney(-int64(firstcost)); - UpdateCriteria(CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING, firstcost); + UpdateCriteria(CriteriaType::MoneySpentOnTaxis, firstcost); GetSession()->SendActivateTaxiReply(ERR_TAXIOK); GetSession()->SendDoFlight(mount_display_id, sourcepath); } @@ -23290,7 +23290,7 @@ bool Player::BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uin if (Guild* guild = GetGuild()) guild->AddGuildNews(GUILD_NEWS_ITEM_PURCHASED, GetGUID(), 0, item); - UpdateCriteria(CRITERIA_TYPE_BOUGHT_ITEM_FROM_VENDOR, 1); + UpdateCriteria(CriteriaType::BuyItemsFromVendors, 1); return true; } @@ -24062,7 +24062,7 @@ void Player::SetMoney(uint64 value) { MoneyChanged(value); SetUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::Coinage), value); - UpdateCriteria(CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED); + UpdateCriteria(CriteriaType::MostMoneyOwned); } bool Player::IsQuestRewarded(uint32 quest_id) const @@ -25165,7 +25165,7 @@ void Player::SummonIfPossible(bool agree) m_summon_expire = 0; - UpdateCriteria(CRITERIA_TYPE_ACCEPTED_SUMMONINGS, 1); + UpdateCriteria(CriteriaType::AcceptSummon, 1); RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::Summon); TeleportTo(m_summon_location); @@ -26302,9 +26302,9 @@ void Player::StoreLootItem(uint8 lootSlot, Loot* loot, AELootResult* aeResult/* if (!aeResult) { SendNewItem(newitem, uint32(item->count), false, false, true); - UpdateCriteria(CRITERIA_TYPE_LOOT_ITEM, item->itemid, item->count); - UpdateCriteria(CRITERIA_TYPE_LOOT_TYPE, item->itemid, item->count, loot->loot_type); - UpdateCriteria(CRITERIA_TYPE_LOOT_ANY_ITEM, item->itemid, item->count); + UpdateCriteria(CriteriaType::LootItem, item->itemid, item->count); + UpdateCriteria(CriteriaType::GetLootByType, item->itemid, item->count, loot->loot_type); + UpdateCriteria(CriteriaType::LootAnyItem, item->itemid, item->count); } else aeResult->Add(newitem, item->count, loot->loot_type); @@ -26539,7 +26539,7 @@ void Player::HandleFall(MovementInfo const& movementInfo) // recheck alive, might have died of EnvironmentalDamage, avoid cases when player die in fact like Spirit of Redemption case if (IsAlive() && final_damage < original_health) - UpdateCriteria(CRITERIA_TYPE_FALL_WITHOUT_DYING, uint32(z_diff*100)); + UpdateCriteria(CriteriaType::MaxDistFallenWithoutDying, uint32(z_diff*100)); } //Z given by moveinfo, LastZ, FallTime, WaterZ, MapZ, Damage, Safefall reduction @@ -26589,7 +26589,7 @@ void Player::ResetCriteria(CriteriaFailEvent condition, int32 failAsset, bool ev m_questObjectiveCriteriaMgr->ResetCriteria(condition, failAsset, evenIfCriteriaComplete); } -void Player::UpdateCriteria(CriteriaTypes type, uint64 miscValue1 /*= 0*/, uint64 miscValue2 /*= 0*/, uint64 miscValue3 /*= 0*/, WorldObject* ref /*= nullptr*/) +void Player::UpdateCriteria(CriteriaType type, uint64 miscValue1 /*= 0*/, uint64 miscValue2 /*= 0*/, uint64 miscValue3 /*= 0*/, WorldObject* ref /*= nullptr*/) { m_achievementMgr->UpdateCriteria(type, miscValue1, miscValue2, miscValue3, ref, this); m_questObjectiveCriteriaMgr->UpdateCriteria(type, miscValue1, miscValue2, miscValue3, ref, this); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 35cd545fe26..649f2ee9a31 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2494,7 +2494,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> bool HasAchieved(uint32 achievementId) const; void ResetAchievements(); void ResetCriteria(CriteriaFailEvent condition, int32 failAsset, bool evenIfCriteriaComplete = false); - void UpdateCriteria(CriteriaTypes type, uint64 miscValue1 = 0, uint64 miscValue2 = 0, uint64 miscValue3 = 0, WorldObject* ref = nullptr); + void UpdateCriteria(CriteriaType type, uint64 miscValue1 = 0, uint64 miscValue2 = 0, uint64 miscValue3 = 0, WorldObject* ref = nullptr); void StartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry, uint32 timeLost = 0); void RemoveCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry); void CompletedAchievement(AchievementEntry const* entry); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 7ed94e06164..10edd2ef852 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -807,13 +807,13 @@ bool Unit::HasBreakableByDamageCrowdControlAura(Unit* excludeCasterChannel) cons if (Battleground* bg = killer->GetBattleground()) bg->UpdatePlayerScore(killer, SCORE_DAMAGE_DONE, damage); - killer->UpdateCriteria(CRITERIA_TYPE_DAMAGE_DONE, health > damage ? damage : health, 0, 0, victim); - killer->UpdateCriteria(CRITERIA_TYPE_HIGHEST_HIT_DEALT, damage); + killer->UpdateCriteria(CriteriaType::DamageDealt, health > damage ? damage : health, 0, 0, victim); + killer->UpdateCriteria(CriteriaType::HighestDamageDone, damage); } } if (victim->GetTypeId() == TYPEID_PLAYER) - victim->ToPlayer()->UpdateCriteria(CRITERIA_TYPE_HIGHEST_HIT_RECEIVED, damage); + victim->ToPlayer()->UpdateCriteria(CriteriaType::HighestDamageTaken, damage); if (attacker) damage /= victim->GetHealthMultiplierForTarget(attacker); @@ -835,7 +835,7 @@ bool Unit::HasBreakableByDamageCrowdControlAura(Unit* excludeCasterChannel) cons killed = true; if (victim->GetTypeId() == TYPEID_PLAYER && victim != attacker) - victim->ToPlayer()->UpdateCriteria(CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED, health); + victim->ToPlayer()->UpdateCriteria(CriteriaType::TotalDamageTaken, health); if (damagetype != NODAMAGE && damagetype != SELF_DAMAGE && victim->HasAuraType(SPELL_AURA_SCHOOL_ABSORB_OVERKILL)) { @@ -904,7 +904,7 @@ bool Unit::HasBreakableByDamageCrowdControlAura(Unit* excludeCasterChannel) cons else { if (victim->GetTypeId() == TYPEID_PLAYER) - victim->ToPlayer()->UpdateCriteria(CRITERIA_TYPE_TOTAL_DAMAGE_RECEIVED, damage); + victim->ToPlayer()->UpdateCriteria(CriteriaType::TotalDamageTaken, damage); victim->ModifyHealth(-(int32)damage); @@ -6089,16 +6089,16 @@ void Unit::SetCharm(Unit* charm, bool apply) // use the actual gain, as the overheal shall not be counted, skip gain 0 (it ignored anyway in to criteria) if (gain) - player->UpdateCriteria(CRITERIA_TYPE_HEALING_DONE, gain, 0, 0, victim); + player->UpdateCriteria(CriteriaType::HealingDone, gain, 0, 0, victim); - player->UpdateCriteria(CRITERIA_TYPE_HIGHEST_HEAL_CAST, addhealth); + player->UpdateCriteria(CriteriaType::HighestHealCast, addhealth); } } if (Player* player = victim->ToPlayer()) { - player->UpdateCriteria(CRITERIA_TYPE_TOTAL_HEALING_RECEIVED, gain); - player->UpdateCriteria(CRITERIA_TYPE_HIGHEST_HEALING_RECEIVED, addhealth); + player->UpdateCriteria(CriteriaType::TotalHealReceived, gain); + player->UpdateCriteria(CriteriaType::HighestHealReceived, addhealth); } if (gain) @@ -10445,7 +10445,7 @@ void Unit::SetMeleeAnimKitId(uint16 animKitId) // and before Spirit of Redemption as it also removes auras if (attacker) if (Player* killerPlayer = attacker->GetCharmerOrOwnerPlayerOrPlayerItself()) - killerPlayer->UpdateCriteria(CRITERIA_TYPE_GET_KILLING_BLOWS, 1, 0, 0, victim); + killerPlayer->UpdateCriteria(CriteriaType::DeliveredKillingBlow, 1, 0, 0, victim); if (!skipSettingDeathState) { @@ -10578,9 +10578,9 @@ void Unit::SetMeleeAnimKitId(uint16 animKitId) if (attacker && victim->GetTypeId() == TYPEID_PLAYER) { if (attacker->GetTypeId() == TYPEID_UNIT) - victim->ToPlayer()->UpdateCriteria(CRITERIA_TYPE_KILLED_BY_CREATURE, attacker->GetEntry()); + victim->ToPlayer()->UpdateCriteria(CriteriaType::KilledByCreature, attacker->GetEntry()); else if (attacker->GetTypeId() == TYPEID_PLAYER && victim != attacker) - victim->ToPlayer()->UpdateCriteria(CRITERIA_TYPE_KILLED_BY_PLAYER, 1, attacker->ToPlayer()->GetTeam()); + victim->ToPlayer()->UpdateCriteria(CriteriaType::KilledByPlayer, 1, attacker->ToPlayer()->GetTeam()); } // Hook for OnPVPKill Event diff --git a/src/server/game/Garrison/Garrison.cpp b/src/server/game/Garrison/Garrison.cpp index 756581dfc2b..1f09b37f61f 100644 --- a/src/server/game/Garrison/Garrison.cpp +++ b/src/server/game/Garrison/Garrison.cpp @@ -421,7 +421,7 @@ void Garrison::PlaceBuilding(uint32 garrPlotInstanceId, uint32 garrBuildingId) _owner->SendDirectMessage(buildingRemoved.Write()); } - _owner->UpdateCriteria(CRITERIA_TYPE_PLACE_GARRISON_BUILDING, garrBuildingId); + _owner->UpdateCriteria(CriteriaType::PlaceGarrisonBuilding, garrBuildingId); } _owner->SendDirectMessage(placeBuildingResult.Write()); @@ -495,7 +495,7 @@ void Garrison::ActivateBuilding(uint32 garrPlotInstanceId) buildingActivated.GarrPlotInstanceID = garrPlotInstanceId; _owner->SendDirectMessage(buildingActivated.Write()); - _owner->UpdateCriteria(CRITERIA_TYPE_UPGRADE_GARRISON_BUILDING, plot->BuildingInfo.PacketInfo->GarrBuildingID); + _owner->UpdateCriteria(CriteriaType::ActivateAnyGarrisonBuilding, plot->BuildingInfo.PacketInfo->GarrBuildingID); } } } @@ -530,7 +530,7 @@ void Garrison::AddFollower(uint32 garrFollowerId) addFollowerResult.Follower = follower.PacketInfo; _owner->SendDirectMessage(addFollowerResult.Write()); - _owner->UpdateCriteria(CRITERIA_TYPE_RECRUIT_GARRISON_FOLLOWER, follower.PacketInfo.DbID); + _owner->UpdateCriteria(CriteriaType::RecruitGarrisonFollower, follower.PacketInfo.DbID); } Garrison::Follower const* Garrison::GetFollower(uint64 dbId) const diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 07be71b46ff..5c23b76fa9c 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -1258,7 +1258,7 @@ void Group::CountTheRoll(Rolls::iterator rollI, Map* allowedMap) if (player && player->GetSession()) { - player->UpdateCriteria(CRITERIA_TYPE_ROLL_NEED_ON_LOOT, roll->itemid, maxresul); + player->UpdateCriteria(CriteriaType::RollNeed, roll->itemid, maxresul); ItemPosCountVec dest; LootItem* item = &(roll->itemSlot >= roll->getLoot()->items.size() ? roll->getLoot()->quest_items[roll->itemSlot - roll->getLoot()->items.size()] : roll->getLoot()->items[roll->itemSlot]); @@ -1322,7 +1322,7 @@ void Group::CountTheRoll(Rolls::iterator rollI, Map* allowedMap) if (player && player->GetSession()) { - player->UpdateCriteria(CRITERIA_TYPE_ROLL_GREED_ON_LOOT, roll->itemid, maxresul); + player->UpdateCriteria(CriteriaType::RollGreed, roll->itemid, maxresul); LootItem* item = &(roll->itemSlot >= roll->getLoot()->items.size() ? roll->getLoot()->quest_items[roll->itemSlot - roll->getLoot()->items.size()] : roll->getLoot()->items[roll->itemSlot]); @@ -1349,7 +1349,7 @@ void Group::CountTheRoll(Rolls::iterator rollI, Map* allowedMap) item->is_looted = true; roll->getLoot()->NotifyItemRemoved(roll->itemSlot); roll->getLoot()->unlootedCount--; - player->UpdateCriteria(CRITERIA_TYPE_CAST_SPELL, 13262); // Disenchant + player->UpdateCriteria(CriteriaType::CastSpell, 13262); // Disenchant ItemDisenchantLootEntry const* disenchant = ASSERT_NOTNULL(roll->GetItemDisenchantLoot(player)); diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp index 39b9d37e551..b170400c5d5 100644 --- a/src/server/game/Guilds/Guild.cpp +++ b/src/server/game/Guilds/Guild.cpp @@ -3521,7 +3521,7 @@ bool Guild::HasAchieved(uint32 achievementId) const return m_achievementMgr.HasAchieved(achievementId); } -void Guild::UpdateCriteria(CriteriaTypes type, uint64 miscValue1, uint64 miscValue2, uint64 miscValue3, WorldObject* ref, Player* player) +void Guild::UpdateCriteria(CriteriaType type, uint64 miscValue1, uint64 miscValue2, uint64 miscValue3, WorldObject* ref, Player* player) { m_achievementMgr.UpdateCriteria(type, miscValue1, miscValue2, miscValue3, ref, player); } diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h index 56fef1bdc70..2b2d1984a9a 100644 --- a/src/server/game/Guilds/Guild.h +++ b/src/server/game/Guilds/Guild.h @@ -841,7 +841,7 @@ class TC_GAME_API Guild void ResetTimes(bool weekly); bool HasAchieved(uint32 achievementId) const; - void UpdateCriteria(CriteriaTypes type, uint64 miscValue1, uint64 miscValue2, uint64 miscValue3, WorldObject* ref, Player* player); + void UpdateCriteria(CriteriaType type, uint64 miscValue1, uint64 miscValue2, uint64 miscValue3, WorldObject* ref, Player* player); protected: ObjectGuid::LowType m_id; diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp index 150c4821337..5c3e155132a 100644 --- a/src/server/game/Handlers/AuctionHouseHandler.cpp +++ b/src/server/game/Handlers/AuctionHouseHandler.cpp @@ -146,7 +146,7 @@ void WorldSession::HandleAuctionConfirmCommoditiesPurchase(WorldPackets::Auction { if (success) { - GetPlayer()->UpdateCriteria(CRITERIA_TYPE_WON_AUCTIONS, 1); + GetPlayer()->UpdateCriteria(CriteriaType::AuctionsWon, 1); SendAuctionCommandResult(0, AuctionCommand::PlaceBid, AuctionResult::Ok, throttle.DelayUntilNext); } else @@ -475,7 +475,7 @@ void WorldSession::HandleAuctionPlaceBid(WorldPackets::AuctionHouse::AuctionPlac { if (success) { - GetPlayer()->UpdateCriteria(CRITERIA_TYPE_HIGHEST_AUCTION_BID, bidAmount); + GetPlayer()->UpdateCriteria(CriteriaType::HighestAuctionBid, bidAmount); SendAuctionCommandResult(auctionId, AuctionCommand::PlaceBid, AuctionResult::Ok, throttle.DelayUntilNext); } else @@ -778,7 +778,7 @@ void WorldSession::HandleAuctionSellCommodity(WorldPackets::AuctionHouse::Auctio { if (success) { - GetPlayer()->UpdateCriteria(CRITERIA_TYPE_CREATE_AUCTION, 1); + GetPlayer()->UpdateCriteria(CriteriaType::ItemsPostedAtAuction, 1); SendAuctionCommandResult(auctionId, AuctionCommand::SellItem, AuctionResult::Ok, throttle.DelayUntilNext); } else @@ -926,7 +926,7 @@ void WorldSession::HandleAuctionSellItem(WorldPackets::AuctionHouse::AuctionSell { if (success) { - GetPlayer()->UpdateCriteria(CRITERIA_TYPE_CREATE_AUCTION, 1); + GetPlayer()->UpdateCriteria(CriteriaType::ItemsPostedAtAuction, 1); SendAuctionCommandResult(auctionId, AuctionCommand::SellItem, AuctionResult::Ok, throttle.DelayUntilNext); } else diff --git a/src/server/game/Handlers/BankHandler.cpp b/src/server/game/Handlers/BankHandler.cpp index d87aa38e1f4..6010b0afec3 100644 --- a/src/server/game/Handlers/BankHandler.cpp +++ b/src/server/game/Handlers/BankHandler.cpp @@ -147,7 +147,7 @@ void WorldSession::HandleBuyBankSlotOpcode(WorldPackets::Bank::BuyBankSlot& pack _player->SetBankBagSlotCount(slot); _player->ModifyMoney(-int64(price)); - _player->UpdateCriteria(CRITERIA_TYPE_BUY_BANK_SLOT); + _player->UpdateCriteria(CriteriaType::BankSlotsPurchased); } void WorldSession::SendShowBank(ObjectGuid guid) diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index bce4ccd7049..20652bb9fee 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1370,7 +1370,7 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder) m_playerLoading.Clear(); // Handle Login-Achievements (should be handled after loading) - _player->UpdateCriteria(CRITERIA_TYPE_ON_LOGIN, 1); + _player->UpdateCriteria(CriteriaType::Login, 1); sScriptMgr->OnPlayerLogin(pCurrChar, firstLogin); @@ -1698,7 +1698,7 @@ void WorldSession::HandleAlterAppearance(WorldPackets::Character::AlterApperance SendPacket(WorldPackets::Character::BarberShopResult(WorldPackets::Character::BarberShopResult::ResultEnum::Success).Write()); _player->ModifyMoney(-cost); // it isn't free - _player->UpdateCriteria(CRITERIA_TYPE_GOLD_SPENT_AT_BARBER, cost); + _player->UpdateCriteria(CriteriaType::MoneySpentAtBarberShop, cost); if (_player->GetNativeSex() != packet.NewSex) { @@ -1709,7 +1709,7 @@ void WorldSession::HandleAlterAppearance(WorldPackets::Character::AlterApperance _player->SetCustomizations(Trinity::Containers::MakeIteratorPair(packet.Customizations.begin(), packet.Customizations.end())); - _player->UpdateCriteria(CRITERIA_TYPE_VISIT_BARBER_SHOP, 1); + _player->UpdateCriteria(CriteriaType::GotHaircut, 1); _player->SetStandState(UNIT_STAND_STATE_STAND); diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index 2b2ac0cbf06..3a084ee81c4 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -629,7 +629,7 @@ void WorldSession::HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet) Unit* unit = ObjectAccessor::GetUnit(*_player, packet.Target); - _player->UpdateCriteria(CRITERIA_TYPE_DO_EMOTE, packet.SoundIndex, 0, 0, unit); + _player->UpdateCriteria(CriteriaType::DoEmote, packet.SoundIndex, 0, 0, unit); // Send scripted event call if (unit) diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp index 96affd34804..412fdb9b161 100644 --- a/src/server/game/Handlers/GroupHandler.cpp +++ b/src/server/game/Handlers/GroupHandler.cpp @@ -408,10 +408,10 @@ void WorldSession::HandleLootRoll(WorldPackets::Loot::LootRoll& packet) switch (packet.RollType) { case ROLL_NEED: - GetPlayer()->UpdateCriteria(CRITERIA_TYPE_ROLL_NEED, 1); + GetPlayer()->UpdateCriteria(CriteriaType::RollAnyNeed, 1); break; case ROLL_GREED: - GetPlayer()->UpdateCriteria(CRITERIA_TYPE_ROLL_GREED, 1); + GetPlayer()->UpdateCriteria(CriteriaType::RollAnyGreed, 1); break; } } diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index dd9646d8dd2..a3f1f1dd7b7 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -458,8 +458,8 @@ void WorldSession::HandleSellItemOpcode(WorldPackets::Item::SellItem& packet) return; } - _player->UpdateCriteria(CRITERIA_TYPE_MONEY_FROM_VENDORS, money); - _player->UpdateCriteria(CRITERIA_TYPE_SOLD_ITEM_TO_VENDOR, 1); + _player->UpdateCriteria(CriteriaType::MoneyEarnedFromSales, money); + _player->UpdateCriteria(CriteriaType::SellItemsToVendors, 1); if (packet.Amount < pItem->GetCount()) // need split items { @@ -1201,7 +1201,7 @@ void WorldSession::HandleUseCritterItem(WorldPackets::Item::UseCritterItem& useC if (BattlePetSpeciesEntry const* entry = sSpellMgr->GetBattlePetSpecies(uint32(spellToLearn))) { GetBattlePetMgr()->AddPet(entry->ID, entry->CreatureID, BattlePetMgr::RollPetBreed(entry->ID), BattlePetMgr::GetDefaultPetQuality(entry->ID)); - _player->UpdateCriteria(CRITERIA_TYPE_OWN_BATTLE_PET_COUNT); + _player->UpdateCriteria(CriteriaType::UniquePetsOwned); } _player->DestroyItem(item->GetBagSlot(), item->GetSlot(), true); diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp index f9074df7fbb..93f0b1947e0 100644 --- a/src/server/game/Handlers/LootHandler.cpp +++ b/src/server/game/Handlers/LootHandler.cpp @@ -135,9 +135,9 @@ void WorldSession::HandleAutostoreLootItemOpcode(WorldPackets::Loot::LootItem& p for (AELootResult::ResultValue const& resultValue : aeResult) { player->SendNewItem(resultValue.item, resultValue.count, false, false, true); - player->UpdateCriteria(CRITERIA_TYPE_LOOT_ITEM, resultValue.item->GetEntry(), resultValue.count); - player->UpdateCriteria(CRITERIA_TYPE_LOOT_TYPE, resultValue.item->GetEntry(), resultValue.count, resultValue.lootType); - player->UpdateCriteria(CRITERIA_TYPE_LOOT_ANY_ITEM, resultValue.item->GetEntry(), resultValue.count); + player->UpdateCriteria(CriteriaType::LootItem, resultValue.item->GetEntry(), resultValue.count); + player->UpdateCriteria(CriteriaType::GetLootByType, resultValue.item->GetEntry(), resultValue.count, resultValue.lootType); + player->UpdateCriteria(CriteriaType::LootAnyItem, resultValue.item->GetEntry(), resultValue.count); } } } @@ -229,7 +229,7 @@ void WorldSession::HandleLootMoneyOpcode(WorldPackets::Loot::LootMoney& /*packet uint64 goldMod = CalculatePct(goldPerPlayer, (*i)->GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_MONEY_GAIN, 1)); (*i)->ModifyMoney(goldPerPlayer + goldMod); - (*i)->UpdateCriteria(CRITERIA_TYPE_LOOT_MONEY, goldPerPlayer); + (*i)->UpdateCriteria(CriteriaType::MoneyLootedFromCreatures, goldPerPlayer); WorldPackets::Loot::LootMoneyNotify packet; packet.Money = goldPerPlayer; @@ -243,7 +243,7 @@ void WorldSession::HandleLootMoneyOpcode(WorldPackets::Loot::LootMoney& /*packet uint64 goldMod = CalculatePct(loot->gold, player->GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_MONEY_GAIN, 1)); player->ModifyMoney(loot->gold + goldMod); - player->UpdateCriteria(CRITERIA_TYPE_LOOT_MONEY, loot->gold); + player->UpdateCriteria(CriteriaType::MoneyLootedFromCreatures, loot->gold); WorldPackets::Loot::LootMoneyNotify packet; packet.Money = loot->gold; @@ -546,9 +546,9 @@ void WorldSession::HandleLootMasterGiveOpcode(WorldPackets::Loot::MasterLootItem for (AELootResult::ResultValue const& resultValue : aeResult) { target->SendNewItem(resultValue.item, resultValue.count, false, false, true); - target->UpdateCriteria(CRITERIA_TYPE_LOOT_ITEM, resultValue.item->GetEntry(), resultValue.count); - target->UpdateCriteria(CRITERIA_TYPE_LOOT_TYPE, resultValue.item->GetEntry(), resultValue.count, resultValue.lootType); - target->UpdateCriteria(CRITERIA_TYPE_LOOT_ANY_ITEM, resultValue.item->GetEntry(), resultValue.count); + target->UpdateCriteria(CriteriaType::LootItem, resultValue.item->GetEntry(), resultValue.count); + target->UpdateCriteria(CriteriaType::GetLootByType, resultValue.item->GetEntry(), resultValue.count, resultValue.lootType); + target->UpdateCriteria(CriteriaType::LootAnyItem, resultValue.item->GetEntry(), resultValue.count); } } diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp index f6122bcd30a..784ddd23f92 100644 --- a/src/server/game/Handlers/MailHandler.cpp +++ b/src/server/game/Handlers/MailHandler.cpp @@ -273,7 +273,7 @@ void WorldSession::HandleSendMail(WorldPackets::Mail::SendMail& packet) player->SendMailResult(0, MAIL_SEND, MAIL_OK); player->ModifyMoney(-reqmoney); - player->UpdateCriteria(CRITERIA_TYPE_GOLD_SPENT_FOR_MAIL, cost); + player->UpdateCriteria(CriteriaType::MoneySpentOnPostage, cost); bool needItemDelay = false; diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index 5f96fb7ecc9..7e0d4832523 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -508,7 +508,7 @@ void WorldSession::HandleQuestLogRemoveQuest(WorldPackets::Quest::QuestLogRemove _player->SetQuestSlot(packet.Entry, 0); - _player->UpdateCriteria(CRITERIA_TYPE_QUEST_ABANDONED, 1); + _player->UpdateCriteria(CriteriaType::AbandonAnyQuest, 1); } } diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 48fb3685060..f0a48c0eda3 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -267,7 +267,7 @@ void WorldSession::HandleGameobjectReportUse(WorldPackets::GameObject::GameObjRe if (go->AI()->OnReportUse(_player)) return; - _player->UpdateCriteria(CRITERIA_TYPE_USE_GAMEOBJECT, go->GetEntry()); + _player->UpdateCriteria(CriteriaType::UseGameobject, go->GetEntry()); } } diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index 0df55ede4ab..00f8387e0ac 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -616,7 +616,7 @@ void InstanceScript::DoSendNotifyToInstance(char const* format, ...) } // Update Achievement Criteria for all players in instance -void InstanceScript::DoUpdateCriteria(CriteriaTypes type, uint32 miscValue1 /*= 0*/, uint32 miscValue2 /*= 0*/, Unit* unit /*= nullptr*/) +void InstanceScript::DoUpdateCriteria(CriteriaType type, uint32 miscValue1 /*= 0*/, uint32 miscValue2 /*= 0*/, Unit* unit /*= nullptr*/) { Map::PlayerList const& PlayerList = instance->GetPlayers(); diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h index cba5fa03936..8283caeb442 100644 --- a/src/server/game/Instances/InstanceScript.h +++ b/src/server/game/Instances/InstanceScript.h @@ -39,7 +39,7 @@ class ModuleReference; class Player; class Unit; struct InstanceSpawnGroupInfo; -enum CriteriaTypes : uint8; +enum class CriteriaType : uint8; enum class CriteriaStartEvent : uint8; enum EncounterCreditType : uint8; namespace WorldPackets @@ -220,7 +220,7 @@ class TC_GAME_API InstanceScript : public ZoneScript void DoSendNotifyToInstance(char const* format, ...); // Update Achievement Criteria for all players in instance - void DoUpdateCriteria(CriteriaTypes type, uint32 miscValue1 = 0, uint32 miscValue2 = 0, Unit* unit = nullptr); + void DoUpdateCriteria(CriteriaType type, uint32 miscValue1 = 0, uint32 miscValue2 = 0, Unit* unit = nullptr); // Start/Stop Timed Achievement Criteria for all players in instance void DoStartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry); diff --git a/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp index 1e07dbd1a31..cd4f09d40c8 100644 --- a/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/FlightPathMovementGenerator.cpp @@ -165,7 +165,7 @@ bool FlightPathMovementGenerator::DoUpdate(Player* player, uint32 /*diff*/) player->m_taxi.NextTaxiDestination(); if (!_pointsForPathSwitch.empty()) { - player->UpdateCriteria(CRITERIA_TYPE_GOLD_SPENT_FOR_TRAVELLING, _pointsForPathSwitch.front().Cost); + player->UpdateCriteria(CriteriaType::MoneySpentOnTaxis, _pointsForPathSwitch.front().Cost); player->ModifyMoney(-_pointsForPathSwitch.front().Cost); } } diff --git a/src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp b/src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp index 2d7082cdf5f..c704be563fb 100644 --- a/src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp +++ b/src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp @@ -37,8 +37,8 @@ QuestObjectiveCriteriaMgr::~QuestObjectiveCriteriaMgr() void QuestObjectiveCriteriaMgr::CheckAllQuestObjectiveCriteria(Player* referencePlayer) { // suppress sending packets - for (uint32 i = 0; i < CRITERIA_TYPE_TOTAL; ++i) - UpdateCriteria(CriteriaTypes(i), 0, 0, 0, nullptr, referencePlayer); + for (uint32 i = 0; i < uint32(CriteriaType::Count); ++i) + UpdateCriteria(CriteriaType(i), 0, 0, 0, nullptr, referencePlayer); } void QuestObjectiveCriteriaMgr::Reset() @@ -335,7 +335,7 @@ std::string QuestObjectiveCriteriaMgr::GetOwnerInfo() const return Trinity::StringFormat("%s %s", _owner->GetGUID().ToString().c_str(), _owner->GetName().c_str()); } -CriteriaList const& QuestObjectiveCriteriaMgr::GetCriteriaByType(CriteriaTypes type, uint32 /*asset*/) const +CriteriaList const& QuestObjectiveCriteriaMgr::GetCriteriaByType(CriteriaType type, uint32 /*asset*/) const { return sCriteriaMgr->GetQuestObjectiveCriteriaByType(type); } diff --git a/src/server/game/Quests/QuestObjectiveCriteriaMgr.h b/src/server/game/Quests/QuestObjectiveCriteriaMgr.h index 421b4103198..d2a97a93d47 100644 --- a/src/server/game/Quests/QuestObjectiveCriteriaMgr.h +++ b/src/server/game/Quests/QuestObjectiveCriteriaMgr.h @@ -54,7 +54,7 @@ protected: void SendPacket(WorldPacket const* data) const override; std::string GetOwnerInfo() const override; - CriteriaList const& GetCriteriaByType(CriteriaTypes type, uint32 asset) const override; + CriteriaList const& GetCriteriaByType(CriteriaType type, uint32 asset) const override; private: Player* _owner; diff --git a/src/server/game/Reputation/ReputationMgr.cpp b/src/server/game/Reputation/ReputationMgr.cpp index 6514c4b03b2..89078dd3f6f 100644 --- a/src/server/game/Reputation/ReputationMgr.cpp +++ b/src/server/game/Reputation/ReputationMgr.cpp @@ -495,11 +495,11 @@ bool ReputationMgr::SetOneFactionReputation(FactionEntry const* factionEntry, in if (!factionEntry->FriendshipRepID && !paragonReputation) UpdateRankCounters(old_rank, new_rank); - _player->UpdateCriteria(CRITERIA_TYPE_KNOWN_FACTIONS, factionEntry->ID); - _player->UpdateCriteria(CRITERIA_TYPE_GAIN_REPUTATION, factionEntry->ID); - _player->UpdateCriteria(CRITERIA_TYPE_GAIN_EXALTED_REPUTATION, factionEntry->ID); - _player->UpdateCriteria(CRITERIA_TYPE_GAIN_REVERED_REPUTATION, factionEntry->ID); - _player->UpdateCriteria(CRITERIA_TYPE_GAIN_HONORED_REPUTATION, factionEntry->ID); + _player->UpdateCriteria(CriteriaType::TotalFactionsEncountered, factionEntry->ID); + _player->UpdateCriteria(CriteriaType::ReputationGained, factionEntry->ID); + _player->UpdateCriteria(CriteriaType::TotalExaltedFactions, factionEntry->ID); + _player->UpdateCriteria(CriteriaType::TotalReveredFactions, factionEntry->ID); + _player->UpdateCriteria(CriteriaType::TotalHonoredFactions, factionEntry->ID); return true; } diff --git a/src/server/game/Scenarios/InstanceScenario.cpp b/src/server/game/Scenarios/InstanceScenario.cpp index baafc84c130..a60db23e417 100644 --- a/src/server/game/Scenarios/InstanceScenario.cpp +++ b/src/server/game/Scenarios/InstanceScenario.cpp @@ -59,10 +59,10 @@ void InstanceScenario::SaveToDB() continue; Criteria const* criteria = sCriteriaMgr->GetCriteria(iter->first); - switch (CriteriaTypes(criteria->Entry->Type)) + switch (CriteriaType(criteria->Entry->Type)) { // Blizzard only appears to store creature kills - case CRITERIA_TYPE_KILL_CREATURE: + case CriteriaType::KillCreature: break; default: continue; @@ -124,10 +124,10 @@ void InstanceScenario::LoadInstanceData(uint32 instanceId) if (criteria->Entry->StartTimer && time_t(date + criteria->Entry->StartTimer) < now) continue; - switch (CriteriaTypes(criteria->Entry->Type)) + switch (CriteriaType(criteria->Entry->Type)) { // Blizzard appears to only stores creatures killed progress for unknown reasons. Either technical shortcoming or intentional - case CRITERIA_TYPE_KILL_CREATURE: + case CriteriaType::KillCreature: break; default: continue; diff --git a/src/server/game/Scenarios/Scenario.cpp b/src/server/game/Scenarios/Scenario.cpp index 6e92b5625f4..37032069e26 100644 --- a/src/server/game/Scenarios/Scenario.cpp +++ b/src/server/game/Scenarios/Scenario.cpp @@ -321,7 +321,7 @@ std::vector<WorldPackets::Achievement::CriteriaProgress> Scenario::GetCriteriasP return criteriasProgress; } -CriteriaList const& Scenario::GetCriteriaByType(CriteriaTypes type, uint32 /*asset*/) const +CriteriaList const& Scenario::GetCriteriaByType(CriteriaType type, uint32 /*asset*/) const { return sCriteriaMgr->GetScenarioCriteriaByType(type); } diff --git a/src/server/game/Scenarios/Scenario.h b/src/server/game/Scenarios/Scenario.h index 596eae06077..683c317c8d4 100644 --- a/src/server/game/Scenarios/Scenario.h +++ b/src/server/game/Scenarios/Scenario.h @@ -94,7 +94,7 @@ class TC_GAME_API Scenario : public CriteriaHandler std::vector<WorldPackets::Scenario::BonusObjectiveData> GetBonusObjectivesData(); std::vector<WorldPackets::Achievement::CriteriaProgress> GetCriteriasProgress(); - CriteriaList const& GetCriteriaByType(CriteriaTypes type, uint32 asset) const override; + CriteriaList const& GetCriteriaByType(CriteriaType type, uint32 asset) const override; ScenarioData const* _data; private: diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index fc4f69453d9..c6a22ef199c 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2728,14 +2728,14 @@ SpellMissInfo Spell::PreprocessSpellHit(Unit* unit, TargetInfo& hitInfo) if (Player* player = unit->ToPlayer()) { player->StartCriteriaTimer(CriteriaStartEvent::BeSpellTarget, m_spellInfo->Id); - player->UpdateCriteria(CRITERIA_TYPE_BE_SPELL_TARGET, m_spellInfo->Id, 0, 0, m_caster); - player->UpdateCriteria(CRITERIA_TYPE_BE_SPELL_TARGET2, m_spellInfo->Id); + player->UpdateCriteria(CriteriaType::BeSpellTarget, m_spellInfo->Id, 0, 0, m_caster); + player->UpdateCriteria(CriteriaType::GainAura, m_spellInfo->Id); } if (Player* player = m_caster->ToPlayer()) { player->StartCriteriaTimer(CriteriaStartEvent::CastSpell, m_spellInfo->Id); - player->UpdateCriteria(CRITERIA_TYPE_CAST_SPELL2, m_spellInfo->Id, 0, 0, unit); + player->UpdateCriteria(CriteriaType::LandTargetedSpellOnTarget, m_spellInfo->Id, 0, 0, unit); } if (m_caster != unit) @@ -3435,10 +3435,10 @@ void Spell::_cast(bool skipCheck) if (!(_triggeredCastFlags & TRIGGERED_IGNORE_CAST_ITEM) && m_CastItem) { player->StartCriteriaTimer(CriteriaStartEvent::UseItem, m_CastItem->GetEntry()); - player->UpdateCriteria(CRITERIA_TYPE_USE_ITEM, m_CastItem->GetEntry()); + player->UpdateCriteria(CriteriaType::UseItem, m_CastItem->GetEntry()); } - player->UpdateCriteria(CRITERIA_TYPE_CAST_SPELL, m_spellInfo->Id); + player->UpdateCriteria(CriteriaType::CastSpell, m_spellInfo->Id); } if (!(_triggeredCastFlags & TRIGGERED_IGNORE_POWER_AND_REAGENT_COST)) |