diff --git a/Source/Framework/Constants/AchievementConst.cs b/Source/Framework/Constants/AchievementConst.cs index 8e14652d1..bd0b628fe 100644 --- a/Source/Framework/Constants/AchievementConst.cs +++ b/Source/Framework/Constants/AchievementConst.cs @@ -475,235 +475,242 @@ namespace Framework.Constants IsForQuest = 0x20 // Is For Quest } - public enum CriteriaTypes : byte + public enum CriteriaType : byte { - KillCreature = 0, - WinBg = 1, - // 2 - unused (Legion - 23420) - CompleteArchaeologyProjects = 3, // Struct { Uint32 Itemcount; } - SurveyGameobject = 4, - ReachLevel = 5, - ClearDigsite = 6, - ReachSkillLevel = 7, - CompleteAchievement = 8, - CompleteQuestCount = 9, - CompleteDailyQuestDaily = 10, // You Have To Complete A Daily Quest X Times In A Row - CompleteQuestsInZone = 11, - Currency = 12, - DamageDone = 13, - CompleteDailyQuest = 14, - CompleteBattleground = 15, - DeathAtMap = 16, - Death = 17, - DeathInDungeon = 18, - CompleteRaid = 19, - KilledByCreature = 20, - ManualCompleteCriteria = 21, - CompleteChallengeModeGuild = 22, - KilledByPlayer = 23, - FallWithoutDying = 24, - // 25 - unused (Legion - 23420) - DeathsFrom = 26, - CompleteQuest = 27, - BeSpellTarget = 28, - CastSpell = 29, - BgObjectiveCapture = 30, - HonorableKillAtArea = 31, - WinArena = 32, - PlayArena = 33, - LearnSpell = 34, - HonorableKill = 35, - OwnItem = 36, - WinRatedArena = 37, - HighestTeamRating = 38, - HighestPersonalRating = 39, - LearnSkillLevel = 40, - UseItem = 41, - LootItem = 42, - ExploreArea = 43, - OwnRank = 44, - BuyBankSlot = 45, - GainReputation = 46, - GainExaltedReputation = 47, - VisitBarberShop = 48, - EquipItemInSlot = 49, - RollNeedOnLoot = 50, /// Todo Itemlevel Is Mentioned In Text But Not Present In Dbc - RollGreedOnLoot = 51, - HkClass = 52, - HkRace = 53, - DoEmote = 54, - HealingDone = 55, - GetKillingBlows = 56, /// Todo In Some Cases Map Not Present, And In Some Cases Need Do Without Die - EquipItem = 57, - // 58 - unused (Legion - 23420) - MoneyFromVendors = 59, - GoldSpentForTalents = 60, - NumberOfTalentResets = 61, - MoneyFromQuestReward = 62, - GoldSpentForTravelling = 63, - DefeatCreatureGroup = 64, - GoldSpentAtBarber = 65, - GoldSpentForMail = 66, - LootMoney = 67, - UseGameobject = 68, - BeSpellTarget2 = 69, - SpecialPvpKill = 70, - CompleteChallengeMode = 71, - FishInGameobject = 72, - SendEvent = 73, - OnLogin = 74, - LearnSkilllineSpells = 75, - WinDuel = 76, - LoseDuel = 77, - KillCreatureType = 78, - CookRecipesGuild = 79, - GoldEarnedByAuctions = 80, - EarnPetBattleAchievementPoints = 81, - CreateAuction = 82, - HighestAuctionBid = 83, - WonAuctions = 84, - HighestAuctionSold = 85, - HighestGoldValueOwned = 86, - GainReveredReputation = 87, - GainHonoredReputation = 88, - KnownFactions = 89, - LootAnyItem = 90, - ObtainAnyItem = 91, - SendEventScenario = 92, - RollNeed = 93, - RollGreed = 94, - ReleaseSpirit = 95, - OwnPet = 96, - GarrisonCompleteDungeonEncounter = 97, - // 98 - unused (Legion - 23420) - // 99 - unused (Legion - 23420) - // 100 - unused (Legion - 23420) - HighestHitDealt = 101, - HighestHitReceived = 102, - TotalDamageReceived = 103, - HighestHealCasted = 104, - TotalHealingReceived = 105, - HighestHealingReceived = 106, - QuestAbandoned = 107, - FlightPathsTaken = 108, - LootType = 109, - CastSpell2 = 110, /// Todo Target Entry Is Missing - // 111 - unused (Legion - 23420) - LearnSkillLine = 112, - EarnHonorableKill = 113, - AcceptedSummonings = 114, - EarnAchievementPoints = 115, - // 116 - unused (Legion - 23420) - // 117 - unused (Legion - 23420) - CompleteLfgDungeon = 118, - UseLfdToGroupWithPlayers = 119, - LfgVoteKicksInitiatedByPlayer = 120, - LfgVoteKicksNotInitByPlayer = 121, - BeKickedFromLfg = 122, - LfgLeaves = 123, - SpentGoldGuildRepairs = 124, - ReachGuildLevel = 125, - CraftItemsGuild = 126, - CatchFromPool = 127, - BuyGuildBankSlots = 128, - EarnGuildAchievementPoints = 129, - WinRatedBattleground = 130, - // 131 - unused (Legion - 23420) - ReachBgRating = 132, - BuyGuildTabard = 133, - CompleteQuestsGuild = 134, - HonorableKillsGuild = 135, - KillCreatureTypeGuild = 136, - CountOfLfgQueueBoostsByTank = 137, - CompleteGuildChallengeType = 138, //Struct { Flag Flag; Uint32 Count; } 1: Guild Dungeon, 2:Guild Challenge, 3:Guild Battlefield - CompleteGuildChallenge = 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) - LfrDungeonsCompleted = 145, - LfrLeaves = 146, - LfrVoteKicksInitiatedByPlayer = 147, - LfrVoteKicksNotInitByPlayer = 148, - BeKickedFromLfr = 149, - CountOfLfrQueueBoostsByTank = 150, - CompleteScenarioCount = 151, - CompleteScenario = 152, - ReachAreatriggerWithActionset = 153, - // 154 - unused (Legion - 23420) - OwnBattlePet = 155, - OwnBattlePetCount = 156, - CaptureBattlePet = 157, - WinPetBattle = 158, - // 159 - 2 criterias (22312,22314), unused (Legion - 23420) - LevelBattlePet = 160, - CaptureBattlePetCredit = 161, // Triggers A Quest Credit - LevelBattlePetCredit = 162, // Triggers A Quest Credit - EnterArea = 163, // Triggers A Quest Credit - LeaveArea = 164, // Triggers A Quest Credit - CompleteDungeonEncounter = 165, - // 166 - unused (Legion - 23420) - PlaceGarrisonBuilding = 167, - UpgradeGarrisonBuilding = 168, - ConstructGarrisonBuilding = 169, - UpgradeGarrison = 170, - StartGarrisonMission = 171, - StartOrderHallMission = 172, - CompleteGarrisonMissionCount = 173, - CompleteGarrisonMission = 174, - RecruitGarrisonFollowerCount = 175, - RecruitGarrisonFollower = 176, - // 177 - 0 criterias (Legion - 23420) - LearnGarrisonBlueprintCount = 178, - // 179 - 0 criterias (Legion - 23420) - // 180 - 0 criterias (Legion - 23420) - // 181 - 0 criterias (Legion - 23420) - CompleteGarrisonShipment = 182, - RaiseGarrisonFollowerItemLevel = 183, - RaiseGarrisonFollowerLevel = 184, - OwnToy = 185, - OwnToyCount = 186, - RecruitGarrisonFollowerWithQuality = 187, - // 188 - 0 criterias (Legion - 23420) - OwnHeirlooms = 189, - ArtifactPowerEarned = 190, - ArtifactTraitsUnlocked = 191, - OwnItemModifiedAppearance = 192, - HonorLevelReached = 194, - PrestigeReached = 195, - ActivelyReachLevel = 196, - // 197 - Order Hall Advancement related - OrderHallTalentLearned = 198, - AppearanceUnlockedBySlot = 199, - OrderHallRecruitTroop = 200, - // 201 - 0 criterias (Legion - 23420) - // 202 - 0 criterias (Legion - 23420) - CompleteWorldQuest = 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. - TransmogSetUnlocked = 205, - GainParagonReputation = 206, - EarnHonorXp = 207, - RelicTalentUnlocked = 211, - ExpansionLevel = 212, - ReachAccountHonorLevel = 213, - HeartOfAzerothArtifactPowerEarned = 214, - HeartOfAzerothLevelReached = 215, - MythicKeystoneCompleted = 216, // NYI - // 217 - 0 Criterias - CompleteQuestAccumulate = 218, - BoughtItemFromVendor = 219, - SoldItemToVendor = 220, - // 221 - 0 Criterias - // 222 - 0 Criterias - // 223 - 0 Criterias - // 224 - 0 Criterias - TravelledToArea = 225, - // 226 - 0 Criterias - // 227 - 0 Criterias - ApplyConduit = 228, - ConvertItemsToCurrency = 229, - TotalTypes = 232 + 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 } public enum CriteriaDataType diff --git a/Source/Game/Achievements/AchievementManager.cs b/Source/Game/Achievements/AchievementManager.cs index 68b5dad00..c0b90737d 100644 --- a/Source/Game/Achievements/AchievementManager.cs +++ b/Source/Game/Achievements/AchievementManager.cs @@ -45,7 +45,7 @@ namespace Game.Achievements public void CheckAllAchievementCriteria(Player referencePlayer) { // suppress sending packets - for (CriteriaTypes i = 0; i < CriteriaTypes.TotalTypes; ++i) + for (CriteriaType i = 0; i < CriteriaType.Count; ++i) UpdateCriteria(i, 0, 0, 0, null, referencePlayer); } @@ -533,8 +533,8 @@ namespace Game.Achievements if (!achievement.Flags.HasAnyFlag(AchievementFlags.TrackingFlag)) _achievementPoints += achievement.Points; - UpdateCriteria(CriteriaTypes.CompleteAchievement, achievement.Id, 0, 0, null, referencePlayer); - UpdateCriteria(CriteriaTypes.EarnAchievementPoints, achievement.Points, 0, 0, null, referencePlayer); + UpdateCriteria(CriteriaType.EarnAchievement, achievement.Id, 0, 0, null, referencePlayer); + UpdateCriteria(CriteriaType.EarnAchievementPoints, achievement.Points, 0, 0, null, referencePlayer); // reward items and titles if any AchievementReward reward = Global.AchievementMgr.GetAchievementReward(achievement); @@ -705,7 +705,7 @@ namespace Game.Achievements _owner.SendPacket(data); } - public override List GetCriteriaByType(CriteriaTypes type, uint asset) + public override List GetCriteriaByType(CriteriaType type, uint asset) { return Global.CriteriaMgr.GetPlayerCriteriaByType(type, asset); } @@ -1014,8 +1014,8 @@ namespace Game.Achievements if (!achievement.Flags.HasAnyFlag(AchievementFlags.TrackingFlag)) _achievementPoints += achievement.Points; - UpdateCriteria(CriteriaTypes.CompleteAchievement, achievement.Id, 0, 0, null, referencePlayer); - UpdateCriteria(CriteriaTypes.EarnAchievementPoints, achievement.Points, 0, 0, null, referencePlayer); + UpdateCriteria(CriteriaType.EarnAchievement, achievement.Id, 0, 0, null, referencePlayer); + UpdateCriteria(CriteriaType.EarnAchievementPoints, achievement.Points, 0, 0, null, referencePlayer); } public override void SendCriteriaUpdate(Criteria entry, CriteriaProgress progress, TimeSpan timeElapsed, bool timedCompleted) @@ -1069,7 +1069,7 @@ namespace Game.Achievements _owner.BroadcastPacket(data); } - public override List GetCriteriaByType(CriteriaTypes type, uint asset) + public override List GetCriteriaByType(CriteriaType type, uint asset) { return Global.CriteriaMgr.GetGuildCriteriaByType(type); } diff --git a/Source/Game/Achievements/CriteriaHandler.cs b/Source/Game/Achievements/CriteriaHandler.cs index c16cd4ccc..e2b85623d 100644 --- a/Source/Game/Achievements/CriteriaHandler.cs +++ b/Source/Game/Achievements/CriteriaHandler.cs @@ -57,9 +57,9 @@ namespace Game.Achievements /// /// /// - public void UpdateCriteria(CriteriaTypes type, ulong miscValue1 = 0, ulong miscValue2 = 0, ulong miscValue3 = 0, WorldObject refe = null, Player referencePlayer = null) + public void UpdateCriteria(CriteriaType type, ulong miscValue1 = 0, ulong miscValue2 = 0, ulong miscValue3 = 0, WorldObject refe = null, Player referencePlayer = null) { - if (type >= CriteriaTypes.TotalTypes) + if (type >= CriteriaType.Count) { Log.outDebug(LogFilter.Achievement, "UpdateCriteria: Wrong criteria type {0}", type); return; @@ -96,109 +96,111 @@ namespace Game.Achievements switch (type) { // std. case: increment at 1 - case CriteriaTypes.WinBg: - case CriteriaTypes.NumberOfTalentResets: - case CriteriaTypes.LoseDuel: - case CriteriaTypes.CreateAuction: - case CriteriaTypes.WonAuctions: //FIXME: for online player only currently - case CriteriaTypes.RollNeed: - case CriteriaTypes.RollGreed: - case CriteriaTypes.QuestAbandoned: - case CriteriaTypes.FlightPathsTaken: - case CriteriaTypes.AcceptedSummonings: - case CriteriaTypes.LootAnyItem: - case CriteriaTypes.ObtainAnyItem: - case CriteriaTypes.Death: - case CriteriaTypes.CompleteDailyQuest: - case CriteriaTypes.CompleteBattleground: - case CriteriaTypes.DeathAtMap: - case CriteriaTypes.DeathInDungeon: - case CriteriaTypes.KilledByCreature: - case CriteriaTypes.KilledByPlayer: - case CriteriaTypes.DeathsFrom: - case CriteriaTypes.BeSpellTarget: - case CriteriaTypes.BeSpellTarget2: - case CriteriaTypes.CastSpell: - case CriteriaTypes.CastSpell2: - case CriteriaTypes.WinRatedArena: - case CriteriaTypes.UseItem: - case CriteriaTypes.RollNeedOnLoot: - case CriteriaTypes.RollGreedOnLoot: - case CriteriaTypes.DoEmote: - case CriteriaTypes.UseGameobject: - case CriteriaTypes.FishInGameobject: - case CriteriaTypes.WinDuel: - case CriteriaTypes.HkClass: - case CriteriaTypes.HkRace: - case CriteriaTypes.BgObjectiveCapture: - case CriteriaTypes.HonorableKill: - case CriteriaTypes.SpecialPvpKill: - case CriteriaTypes.GetKillingBlows: - case CriteriaTypes.HonorableKillAtArea: - case CriteriaTypes.WinArena: // This also behaves like ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA - case CriteriaTypes.OnLogin: - case CriteriaTypes.PlaceGarrisonBuilding: - case CriteriaTypes.UpgradeGarrisonBuilding: - case CriteriaTypes.HonorLevelReached: - case CriteriaTypes.PrestigeReached: - case CriteriaTypes.CompleteQuestAccumulate: - case CriteriaTypes.BoughtItemFromVendor: - case CriteriaTypes.SoldItemToVendor: - case CriteriaTypes.TravelledToArea: + 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, ProgressType.Accumulate); break; // std case: increment at miscValue1 - case CriteriaTypes.MoneyFromVendors: - case CriteriaTypes.GoldSpentForTalents: - case CriteriaTypes.MoneyFromQuestReward: - case CriteriaTypes.GoldSpentForTravelling: - case CriteriaTypes.GoldSpentAtBarber: - case CriteriaTypes.GoldSpentForMail: - case CriteriaTypes.LootMoney: - case CriteriaTypes.GoldEarnedByAuctions: //FIXME: for online player only currently - case CriteriaTypes.TotalDamageReceived: - case CriteriaTypes.TotalHealingReceived: - case CriteriaTypes.UseLfdToGroupWithPlayers: - case CriteriaTypes.DamageDone: - case CriteriaTypes.HealingDone: - case CriteriaTypes.HeartOfAzerothArtifactPowerEarned: + 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, ProgressType.Accumulate); break; - case CriteriaTypes.KillCreature: - case CriteriaTypes.KillCreatureType: - case CriteriaTypes.LootType: - case CriteriaTypes.OwnItem: - case CriteriaTypes.LootItem: - case CriteriaTypes.Currency: + case CriteriaType.KillCreature: + case CriteriaType.KillAnyCreature: + case CriteriaType.GetLootByType: + case CriteriaType.AcquireItem: + case CriteriaType.LootItem: + case CriteriaType.CurrencyGained: SetCriteriaProgress(criteria, miscValue2, referencePlayer, ProgressType.Accumulate); break; // std case: high value at miscValue1 - case CriteriaTypes.HighestAuctionBid: - case CriteriaTypes.HighestAuctionSold: //FIXME: for online player only currently - case CriteriaTypes.HighestHitDealt: - case CriteriaTypes.HighestHitReceived: - case CriteriaTypes.HighestHealCasted: - case CriteriaTypes.HighestHealingReceived: - case CriteriaTypes.HeartOfAzerothLevelReached: + 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, ProgressType.Highest); break; - case CriteriaTypes.ReachLevel: + case CriteriaType.ReachLevel: SetCriteriaProgress(criteria, referencePlayer.GetLevel(), referencePlayer); break; - case CriteriaTypes.ReachSkillLevel: + case CriteriaType.SkillRaised: uint skillvalue = referencePlayer.GetBaseSkillValue((SkillType)criteria.Entry.Asset); if (skillvalue != 0) SetCriteriaProgress(criteria, skillvalue, referencePlayer); break; - case CriteriaTypes.LearnSkillLevel: + case CriteriaType.AchieveSkillStep: uint maxSkillvalue = referencePlayer.GetPureMaxSkillValue((SkillType)criteria.Entry.Asset); if (maxSkillvalue != 0) SetCriteriaProgress(criteria, maxSkillvalue, referencePlayer); break; - case CriteriaTypes.CompleteQuestCount: + case CriteriaType.CompleteQuestsCount: SetCriteriaProgress(criteria, (uint)referencePlayer.GetRewardedQuestCount(), referencePlayer); break; - case CriteriaTypes.CompleteDailyQuestDaily: + case CriteriaType.CompleteAnyDailyQuestPerDay: { long nextDailyResetTime = Global.WorldMgr.GetNextDailyQuestsResetTime(); CriteriaProgress progress = GetCriteriaProgress(criteria); @@ -228,7 +230,7 @@ namespace Game.Achievements SetCriteriaProgress(criteria, 1, referencePlayer, progressType); break; } - case CriteriaTypes.CompleteQuestsInZone: + case CriteriaType.CompleteQuestsInZone: { if (miscValue1 != 0) { @@ -249,37 +251,37 @@ namespace Game.Achievements } break; } - case CriteriaTypes.FallWithoutDying: + case CriteriaType.MaxDistFallenWithoutDying: // miscValue1 is the ingame fallheight*100 as stored in dbc SetCriteriaProgress(criteria, miscValue1, referencePlayer); break; - case CriteriaTypes.CompleteQuest: - case CriteriaTypes.LearnSpell: - case CriteriaTypes.ExploreArea: - case CriteriaTypes.VisitBarberShop: - case CriteriaTypes.EquipItemInSlot: - case CriteriaTypes.EquipItem: - case CriteriaTypes.CompleteAchievement: - case CriteriaTypes.RecruitGarrisonFollower: - case CriteriaTypes.OwnBattlePet: - case CriteriaTypes.ActivelyReachLevel: + 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 CriteriaTypes.BuyBankSlot: + case CriteriaType.BankSlotsPurchased: SetCriteriaProgress(criteria, referencePlayer.GetBankBagSlotCount(), referencePlayer); break; - case CriteriaTypes.GainReputation: + case CriteriaType.ReputationGained: { int reputation = referencePlayer.GetReputationMgr().GetReputation(criteria.Entry.Asset); if (reputation > 0) SetCriteriaProgress(criteria, (uint)reputation, referencePlayer); break; } - case CriteriaTypes.GainExaltedReputation: + case CriteriaType.TotalExaltedFactions: SetCriteriaProgress(criteria, referencePlayer.GetReputationMgr().GetExaltedFactionCount(), referencePlayer); break; - case CriteriaTypes.LearnSkilllineSpells: - case CriteriaTypes.LearnSkillLine: + case CriteriaType.LearnSpellFromSkillLine: + case CriteriaType.LearnTradeskillSkillLine: { uint spellCount = 0; foreach (var spell in referencePlayer.GetSpellMap()) @@ -298,27 +300,27 @@ namespace Game.Achievements SetCriteriaProgress(criteria, spellCount, referencePlayer); break; } - case CriteriaTypes.GainReveredReputation: + case CriteriaType.TotalReveredFactions: SetCriteriaProgress(criteria, referencePlayer.GetReputationMgr().GetReveredFactionCount(), referencePlayer); break; - case CriteriaTypes.GainHonoredReputation: + case CriteriaType.TotalHonoredFactions: SetCriteriaProgress(criteria, referencePlayer.GetReputationMgr().GetHonoredFactionCount(), referencePlayer); break; - case CriteriaTypes.KnownFactions: + case CriteriaType.TotalFactionsEncountered: SetCriteriaProgress(criteria, referencePlayer.GetReputationMgr().GetVisibleFactionCount(), referencePlayer); break; - case CriteriaTypes.EarnHonorableKill: + case CriteriaType.HonorableKills: SetCriteriaProgress(criteria, referencePlayer.m_activePlayerData.LifetimeHonorableKills, referencePlayer); break; - case CriteriaTypes.HighestGoldValueOwned: + case CriteriaType.MostMoneyOwned: SetCriteriaProgress(criteria, referencePlayer.GetMoney(), referencePlayer, ProgressType.Highest); break; - case CriteriaTypes.EarnAchievementPoints: + case CriteriaType.EarnAchievementPoints: if (miscValue1 == 0) continue; SetCriteriaProgress(criteria, miscValue1, referencePlayer, ProgressType.Accumulate); break; - case CriteriaTypes.HighestPersonalRating: + case CriteriaType.EarnPersonalArenaRating: { uint reqTeamType = criteria.Entry.Asset; @@ -352,106 +354,96 @@ namespace Game.Achievements } break; } - case CriteriaTypes.OwnBattlePetCount: + case CriteriaType.UniquePetsOwned: SetCriteriaProgress(criteria, referencePlayer.GetSession().GetBattlePetMgr().GetPetUniqueSpeciesCount(), referencePlayer); break; - case CriteriaTypes.ReachGuildLevel: + case CriteriaType.GuildAttainedLevel: SetCriteriaProgress(criteria, miscValue1, referencePlayer); break; - case CriteriaTypes.TransmogSetUnlocked: - if (miscValue1 != criteria.Entry.Asset) - continue; - SetCriteriaProgress(criteria, 1, referencePlayer, ProgressType.Accumulate); - break; - case CriteriaTypes.AppearanceUnlockedBySlot: - if (miscValue2 == 0 /*login case*/ || miscValue1 != criteria.Entry.Asset) - continue; - SetCriteriaProgress(criteria, 1, referencePlayer, ProgressType.Accumulate); - break; // FIXME: not triggered in code as result, need to implement - case CriteriaTypes.CompleteRaid: - case CriteriaTypes.PlayArena: - case CriteriaTypes.HighestTeamRating: - case CriteriaTypes.OwnRank: - case CriteriaTypes.SpentGoldGuildRepairs: - case CriteriaTypes.CraftItemsGuild: - case CriteriaTypes.CatchFromPool: - case CriteriaTypes.BuyGuildBankSlots: - case CriteriaTypes.EarnGuildAchievementPoints: - case CriteriaTypes.WinRatedBattleground: - case CriteriaTypes.ReachBgRating: - case CriteriaTypes.BuyGuildTabard: - case CriteriaTypes.CompleteQuestsGuild: - case CriteriaTypes.HonorableKillsGuild: - case CriteriaTypes.KillCreatureTypeGuild: - case CriteriaTypes.CompleteArchaeologyProjects: - case CriteriaTypes.CompleteGuildChallengeType: - case CriteriaTypes.CompleteGuildChallenge: - case CriteriaTypes.LfrDungeonsCompleted: - case CriteriaTypes.LfrLeaves: - case CriteriaTypes.LfrVoteKicksInitiatedByPlayer: - case CriteriaTypes.LfrVoteKicksNotInitByPlayer: - case CriteriaTypes.BeKickedFromLfr: - case CriteriaTypes.CountOfLfrQueueBoostsByTank: - case CriteriaTypes.CompleteScenarioCount: - case CriteriaTypes.CompleteScenario: - case CriteriaTypes.CaptureBattlePet: - case CriteriaTypes.WinPetBattle: - case CriteriaTypes.LevelBattlePet: - case CriteriaTypes.CaptureBattlePetCredit: - case CriteriaTypes.LevelBattlePetCredit: - case CriteriaTypes.EnterArea: - case CriteriaTypes.LeaveArea: - case CriteriaTypes.CompleteDungeonEncounter: - case CriteriaTypes.ConstructGarrisonBuilding: - case CriteriaTypes.UpgradeGarrison: - case CriteriaTypes.StartGarrisonMission: - case CriteriaTypes.CompleteGarrisonMissionCount: - case CriteriaTypes.CompleteGarrisonMission: - case CriteriaTypes.RecruitGarrisonFollowerCount: - case CriteriaTypes.LearnGarrisonBlueprintCount: - case CriteriaTypes.CompleteGarrisonShipment: - case CriteriaTypes.RaiseGarrisonFollowerItemLevel: - case CriteriaTypes.RaiseGarrisonFollowerLevel: - case CriteriaTypes.OwnToy: - case CriteriaTypes.OwnToyCount: - case CriteriaTypes.OwnHeirlooms: - case CriteriaTypes.SurveyGameobject: - case CriteriaTypes.ClearDigsite: - case CriteriaTypes.ManualCompleteCriteria: - case CriteriaTypes.CompleteChallengeModeGuild: - case CriteriaTypes.DefeatCreatureGroup: - case CriteriaTypes.CompleteChallengeMode: - case CriteriaTypes.SendEvent: - case CriteriaTypes.CookRecipesGuild: - case CriteriaTypes.EarnPetBattleAchievementPoints: - case CriteriaTypes.SendEventScenario: - case CriteriaTypes.ReleaseSpirit: - case CriteriaTypes.OwnPet: - case CriteriaTypes.GarrisonCompleteDungeonEncounter: - case CriteriaTypes.CompleteLfgDungeon: - case CriteriaTypes.LfgVoteKicksInitiatedByPlayer: - case CriteriaTypes.LfgVoteKicksNotInitByPlayer: - case CriteriaTypes.BeKickedFromLfg: - case CriteriaTypes.LfgLeaves: - case CriteriaTypes.CountOfLfgQueueBoostsByTank: - case CriteriaTypes.ReachAreatriggerWithActionset: - case CriteriaTypes.StartOrderHallMission: - case CriteriaTypes.RecruitGarrisonFollowerWithQuality: - case CriteriaTypes.ArtifactPowerEarned: - case CriteriaTypes.ArtifactTraitsUnlocked: - case CriteriaTypes.OrderHallTalentLearned: - case CriteriaTypes.OrderHallRecruitTroop: - case CriteriaTypes.CompleteWorldQuest: - case CriteriaTypes.GainParagonReputation: - case CriteriaTypes.EarnHonorXp: - case CriteriaTypes.RelicTalentUnlocked: - case CriteriaTypes.ReachAccountHonorLevel: - case CriteriaTypes.MythicKeystoneCompleted: - case CriteriaTypes.ApplyConduit: - case CriteriaTypes.ConvertItemsToCurrency: - case CriteriaTypes.ExpansionLevel: - case CriteriaTypes.OwnItemModifiedAppearance: + 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: break; // Not implemented yet :( } @@ -770,86 +762,86 @@ namespace Game.Achievements switch (criteria.Entry.Type) { - case CriteriaTypes.WinBg: - case CriteriaTypes.KillCreature: - case CriteriaTypes.ReachLevel: - case CriteriaTypes.ReachGuildLevel: - case CriteriaTypes.ReachSkillLevel: - case CriteriaTypes.CompleteQuestCount: - case CriteriaTypes.CompleteDailyQuestDaily: - case CriteriaTypes.CompleteQuestsInZone: - case CriteriaTypes.DamageDone: - case CriteriaTypes.HealingDone: - case CriteriaTypes.CompleteDailyQuest: - case CriteriaTypes.FallWithoutDying: - case CriteriaTypes.BeSpellTarget: - case CriteriaTypes.BeSpellTarget2: - case CriteriaTypes.CastSpell: - case CriteriaTypes.CastSpell2: - case CriteriaTypes.BgObjectiveCapture: - case CriteriaTypes.HonorableKillAtArea: - case CriteriaTypes.HonorableKill: - case CriteriaTypes.EarnHonorableKill: - case CriteriaTypes.OwnItem: - case CriteriaTypes.WinRatedArena: - case CriteriaTypes.HighestPersonalRating: - case CriteriaTypes.UseItem: - case CriteriaTypes.LootItem: - case CriteriaTypes.BuyBankSlot: - case CriteriaTypes.GainReputation: - case CriteriaTypes.GainExaltedReputation: - case CriteriaTypes.VisitBarberShop: - case CriteriaTypes.EquipItemInSlot: - case CriteriaTypes.RollNeedOnLoot: - case CriteriaTypes.RollGreedOnLoot: - case CriteriaTypes.HkClass: - case CriteriaTypes.HkRace: - case CriteriaTypes.DoEmote: - case CriteriaTypes.EquipItem: - case CriteriaTypes.MoneyFromQuestReward: - case CriteriaTypes.LootMoney: - case CriteriaTypes.UseGameobject: - case CriteriaTypes.SpecialPvpKill: - case CriteriaTypes.FishInGameobject: - case CriteriaTypes.LearnSkilllineSpells: - case CriteriaTypes.LearnSkillLine: - case CriteriaTypes.WinDuel: - case CriteriaTypes.LootType: - case CriteriaTypes.UseLfdToGroupWithPlayers: - case CriteriaTypes.GetKillingBlows: - case CriteriaTypes.Currency: - case CriteriaTypes.PlaceGarrisonBuilding: - case CriteriaTypes.OwnBattlePetCount: - case CriteriaTypes.AppearanceUnlockedBySlot: - case CriteriaTypes.GainParagonReputation: - case CriteriaTypes.EarnHonorXp: - case CriteriaTypes.RelicTalentUnlocked: - case CriteriaTypes.ReachAccountHonorLevel: - case CriteriaTypes.HeartOfAzerothArtifactPowerEarned: - case CriteriaTypes.HeartOfAzerothLevelReached: - case CriteriaTypes.CompleteQuestAccumulate: - case CriteriaTypes.BoughtItemFromVendor: - case CriteriaTypes.SoldItemToVendor: - case CriteriaTypes.TravelledToArea: + 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 CriteriaTypes.CompleteAchievement: - case CriteriaTypes.CompleteQuest: - case CriteriaTypes.LearnSpell: - case CriteriaTypes.ExploreArea: - case CriteriaTypes.RecruitGarrisonFollower: - case CriteriaTypes.OwnBattlePet: - case CriteriaTypes.HonorLevelReached: - case CriteriaTypes.PrestigeReached: - case CriteriaTypes.ActivelyReachLevel: - case CriteriaTypes.TransmogSetUnlocked: + 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 CriteriaTypes.LearnSkillLevel: + case CriteriaType.AchieveSkillStep: return progress.Counter >= (requiredAmount * 75); - case CriteriaTypes.EarnAchievementPoints: + case CriteriaType.EarnAchievementPoints: return progress.Counter >= 9000; - case CriteriaTypes.WinArena: + case CriteriaType.WinArena: return requiredAmount != 0 && progress.Counter >= requiredAmount; - case CriteriaTypes.OnLogin: + case CriteriaType.Login: return true; // handle all statistic-only criteria here default: @@ -927,85 +919,85 @@ namespace Game.Achievements { switch (criteria.Entry.Type) { - case CriteriaTypes.AcceptedSummonings: - case CriteriaTypes.CompleteDailyQuest: - case CriteriaTypes.CreateAuction: - case CriteriaTypes.FallWithoutDying: - case CriteriaTypes.FlightPathsTaken: - case CriteriaTypes.GetKillingBlows: - case CriteriaTypes.GoldEarnedByAuctions: - case CriteriaTypes.GoldSpentAtBarber: - case CriteriaTypes.GoldSpentForMail: - case CriteriaTypes.GoldSpentForTalents: - case CriteriaTypes.GoldSpentForTravelling: - case CriteriaTypes.HighestAuctionBid: - case CriteriaTypes.HighestAuctionSold: - case CriteriaTypes.HighestHealingReceived: - case CriteriaTypes.HighestHealCasted: - case CriteriaTypes.HighestHitDealt: - case CriteriaTypes.HighestHitReceived: - case CriteriaTypes.HonorableKill: - case CriteriaTypes.LootAnyItem: - case CriteriaTypes.LootMoney: - case CriteriaTypes.LoseDuel: - case CriteriaTypes.MoneyFromQuestReward: - case CriteriaTypes.MoneyFromVendors: - case CriteriaTypes.NumberOfTalentResets: - case CriteriaTypes.ObtainAnyItem: - case CriteriaTypes.QuestAbandoned: - case CriteriaTypes.ReachGuildLevel: - case CriteriaTypes.RollGreed: - case CriteriaTypes.RollNeed: - case CriteriaTypes.SpecialPvpKill: - case CriteriaTypes.TotalDamageReceived: - case CriteriaTypes.TotalHealingReceived: - case CriteriaTypes.UseLfdToGroupWithPlayers: - case CriteriaTypes.VisitBarberShop: - case CriteriaTypes.WinDuel: - case CriteriaTypes.WinRatedArena: - case CriteriaTypes.WonAuctions: - case CriteriaTypes.CompleteQuestAccumulate: - case CriteriaTypes.BoughtItemFromVendor: - case CriteriaTypes.SoldItemToVendor: + 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 == 0) return false; break; - case CriteriaTypes.BuyBankSlot: - case CriteriaTypes.CompleteDailyQuestDaily: - case CriteriaTypes.CompleteQuestCount: - case CriteriaTypes.EarnAchievementPoints: - case CriteriaTypes.GainExaltedReputation: - case CriteriaTypes.GainHonoredReputation: - case CriteriaTypes.GainReveredReputation: - case CriteriaTypes.HighestGoldValueOwned: - case CriteriaTypes.HighestPersonalRating: - case CriteriaTypes.KnownFactions: - case CriteriaTypes.ReachLevel: - case CriteriaTypes.OnLogin: - case CriteriaTypes.OwnBattlePetCount: + 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 CriteriaTypes.CompleteAchievement: + case CriteriaType.EarnAchievement: if (!RequiredAchievementSatisfied(criteria.Entry.Asset)) return false; break; - case CriteriaTypes.WinBg: - case CriteriaTypes.CompleteBattleground: - case CriteriaTypes.DeathAtMap: + case CriteriaType.WinBattleground: + case CriteriaType.ParticipateInBattleground: + case CriteriaType.DieOnMap: if (miscValue1 == 0 || criteria.Entry.Asset != referencePlayer.GetMapId()) return false; break; - case CriteriaTypes.KillCreature: - case CriteriaTypes.KilledByCreature: + case CriteriaType.KillCreature: + case CriteriaType.KilledByCreature: if (miscValue1 == 0 || criteria.Entry.Asset != miscValue1) return false; break; - case CriteriaTypes.ReachSkillLevel: - case CriteriaTypes.LearnSkillLevel: + case CriteriaType.SkillRaised: + case CriteriaType.AchieveSkillStep: // update at loading or specific skill update if (miscValue1 != 0 && miscValue1 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.CompleteQuestsInZone: + case CriteriaType.CompleteQuestsInZone: if (miscValue1 != 0) { Quest quest = Global.ObjectMgr.GetQuestTemplate((uint)miscValue1); @@ -1013,13 +1005,13 @@ namespace Game.Achievements return false; } break; - case CriteriaTypes.Death: + case CriteriaType.DieAnywhere: { if (miscValue1 == 0) return false; break; } - case CriteriaTypes.DeathInDungeon: + case CriteriaType.DieInInstance: { if (miscValue1 == 0) return false; @@ -1033,15 +1025,15 @@ namespace Game.Achievements return false; break; } - case CriteriaTypes.KilledByPlayer: + case CriteriaType.KilledByPlayer: if (miscValue1 == 0 || !refe || !refe.IsTypeId(TypeId.Player)) return false; break; - case CriteriaTypes.DeathsFrom: + case CriteriaType.DieFromEnviromentalDamage: if (miscValue1 == 0 || miscValue2 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.CompleteQuest: + case CriteriaType.CompleteQuest: { // if miscValues != 0, it contains the questID. if (miscValue1 != 0) @@ -1061,37 +1053,37 @@ namespace Game.Achievements return false; break; } - case CriteriaTypes.BeSpellTarget: - case CriteriaTypes.BeSpellTarget2: - case CriteriaTypes.CastSpell: - case CriteriaTypes.CastSpell2: + case CriteriaType.BeSpellTarget: + case CriteriaType.GainAura: + case CriteriaType.CastSpell: + case CriteriaType.LandTargetedSpellOnTarget: if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.LearnSpell: + case CriteriaType.LearnOrKnowSpell: if (miscValue1 != 0 && miscValue1 != criteria.Entry.Asset) return false; if (!referencePlayer.HasSpell(criteria.Entry.Asset)) return false; break; - case CriteriaTypes.LootType: + case CriteriaType.GetLootByType: // miscValue1 = itemId - miscValue2 = count of item loot // miscValue3 = loot_type (note: 0 = LOOT_CORPSE and then it ignored) if (miscValue1 == 0 || miscValue2 == 0 || miscValue3 == 0 || miscValue3 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.OwnItem: + case CriteriaType.AcquireItem: if (miscValue1 != 0 && criteria.Entry.Asset != miscValue1) return false; break; - case CriteriaTypes.UseItem: - case CriteriaTypes.LootItem: - case CriteriaTypes.EquipItem: + case CriteriaType.UseItem: + case CriteriaType.LootItem: + case CriteriaType.EquipItem: if (miscValue1 == 0 || criteria.Entry.Asset != miscValue1) return false; break; - case CriteriaTypes.ExploreArea: + case CriteriaType.RevealWorldMapOverlay: { WorldMapOverlayRecord worldOverlayEntry = CliDB.WorldMapOverlayStorage.LookupByKey(criteria.Entry.Asset); if (worldOverlayEntry == null) @@ -1123,18 +1115,18 @@ namespace Game.Achievements return false; break; } - case CriteriaTypes.GainReputation: + case CriteriaType.ReputationGained: if (miscValue1 != 0 && miscValue1 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.EquipItemInSlot: - case CriteriaTypes.AppearanceUnlockedBySlot: + case CriteriaType.EquipItemInSlot: + case CriteriaType.LearnAnyTransmogInSlot: // miscValue1 = EquipmentSlot miscValue2 = itemid | itemModifiedAppearanceId if (miscValue2 == 0 || miscValue1 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.RollNeedOnLoot: - case CriteriaTypes.RollGreedOnLoot: + case CriteriaType.RollNeed: + case CriteriaType.RollGreed: { // miscValue1 = itemid miscValue2 = diced value if (miscValue1 == 0 || miscValue2 != criteria.Entry.Asset) @@ -1145,12 +1137,12 @@ namespace Game.Achievements return false; break; } - case CriteriaTypes.DoEmote: + case CriteriaType.DoEmote: if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.DamageDone: - case CriteriaTypes.HealingDone: + case CriteriaType.DamageDealt: + case CriteriaType.HealingDone: if (miscValue1 == 0) return false; @@ -1164,58 +1156,58 @@ namespace Game.Achievements return false; } break; - case CriteriaTypes.UseGameobject: - case CriteriaTypes.FishInGameobject: + case CriteriaType.UseGameobject: + case CriteriaType.CatchFishInFishingHole: if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.LearnSkilllineSpells: - case CriteriaTypes.LearnSkillLine: + case CriteriaType.LearnSpellFromSkillLine: + case CriteriaType.LearnTradeskillSkillLine: if (miscValue1 != 0 && miscValue1 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.HkClass: + case CriteriaType.DeliverKillingBlowToClass: if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.HkRace: + case CriteriaType.DeliverKillingBlowToRace: if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.BgObjectiveCapture: + case CriteriaType.TrackedWorldStateUIModified: if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.HonorableKillAtArea: - case CriteriaTypes.TravelledToArea: + case CriteriaType.PVPKillInArea: + case CriteriaType.EnterTopLevelArea: if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.Currency: + case CriteriaType.CurrencyGained: if (miscValue1 == 0 || miscValue2 == 0 || (long)miscValue2 < 0 || miscValue1 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.WinArena: + case CriteriaType.WinArena: if (miscValue1 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.HighestTeamRating: + case CriteriaType.EarnTeamArenaRating: return false; - case CriteriaTypes.PlaceGarrisonBuilding: - case CriteriaTypes.ConstructGarrisonBuilding: + case CriteriaType.PlaceGarrisonBuilding: + case CriteriaType.ActivateGarrisonBuilding: if (miscValue1 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.RecruitGarrisonFollower: + case CriteriaType.RecruitGarrisonFollower: if (miscValue1 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.TransmogSetUnlocked: + case CriteriaType.CollectTransmogSetFromGroup: if (miscValue1 != criteria.Entry.Asset) return false; break; - case CriteriaTypes.ActivelyReachLevel: + case CriteriaType.ActivelyReachLevel: if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset) return false; break; @@ -3533,7 +3525,7 @@ namespace Game.Achievements public virtual bool RequiredAchievementSatisfied(uint achievementId) { return false; } public virtual string GetOwnerInfo() { return ""; } - public virtual List GetCriteriaByType(CriteriaTypes type, uint asset) { return null; } + public virtual List GetCriteriaByType(CriteriaType type, uint asset) { return null; } } public class CriteriaManager : Singleton @@ -3547,18 +3539,18 @@ namespace Game.Achievements MultiMap _criteriaTreeByCriteria = new(); // store criterias by type to speed up lookup - MultiMap _criteriasByType = new(); - MultiMap[] _criteriasByAsset = new MultiMap[(int)CriteriaTypes.TotalTypes]; - MultiMap _guildCriteriasByType = new(); - MultiMap _scenarioCriteriasByType = new(); - MultiMap _questObjectiveCriteriasByType = new(); + MultiMap _criteriasByType = new(); + MultiMap[] _criteriasByAsset = new MultiMap[(int)CriteriaType.Count]; + MultiMap _guildCriteriasByType = new(); + MultiMap _scenarioCriteriasByType = new(); + MultiMap _questObjectiveCriteriasByType = new(); MultiMap _criteriasByTimedType = new(); MultiMap[] _criteriasByFailEvent = new MultiMap[(int)CriteriaFailEvent.Max]; CriteriaManager() { - for (var i = 0; i < (int)CriteriaTypes.TotalTypes; ++i) + for (var i = 0; i < (int)CriteriaType.Count; ++i) _criteriasByAsset[i] = new MultiMap(); } @@ -3683,8 +3675,8 @@ namespace Game.Achievements uint questObjectiveCriterias = 0; foreach (CriteriaRecord criteriaEntry in CliDB.CriteriaStorage.Values) { - Cypher.Assert(criteriaEntry.Type < CriteriaTypes.TotalTypes, - $"CRITERIA_TYPE_TOTAL must be greater than or equal to {criteriaEntry.Type + 1} but is currently equal to {CriteriaTypes.TotalTypes}"); + Cypher.Assert(criteriaEntry.Type < CriteriaType.Count, + $"CRITERIA_TYPE_TOTAL must be greater than or equal to {criteriaEntry.Type + 1} but is currently equal to {CriteriaType.Count}"); Cypher.Assert(criteriaEntry.StartEvent < (byte)CriteriaStartEvent.Max, $"CRITERIA_TYPE_TOTAL must be greater than or equal to {criteriaEntry.StartEvent + 1} but is currently equal to {CriteriaStartEvent.Max}"); Cypher.Assert(criteriaEntry.FailEvent < (byte)CriteriaFailEvent.Max, $"CRITERIA_CONDITION_MAX must be greater than or equal to {criteriaEntry.FailEvent + 1} but is currently equal to {CriteriaFailEvent.Max}"); @@ -3725,7 +3717,7 @@ namespace Game.Achievements _criteriasByType.Add(criteriaEntry.Type, criteria); if (IsCriteriaTypeStoredByAsset(criteriaEntry.Type)) { - if (criteriaEntry.Type != CriteriaTypes.ExploreArea) + if (criteriaEntry.Type != CriteriaType.RevealWorldMapOverlay) _criteriasByAsset[(int)criteriaEntry.Type].Add(criteriaEntry.Asset, criteria); else { @@ -3850,48 +3842,48 @@ namespace Game.Achievements return _criteriaModifiers.LookupByKey(modifierTreeId); } - bool IsCriteriaTypeStoredByAsset(CriteriaTypes type) + bool IsCriteriaTypeStoredByAsset(CriteriaType type) { switch (type) { - case CriteriaTypes.KillCreature: - case CriteriaTypes.WinBg: - case CriteriaTypes.ReachSkillLevel: - case CriteriaTypes.CompleteAchievement: - case CriteriaTypes.CompleteQuestsInZone: - case CriteriaTypes.CompleteBattleground: - case CriteriaTypes.KilledByCreature: - case CriteriaTypes.CompleteQuest: - case CriteriaTypes.BeSpellTarget: - case CriteriaTypes.CastSpell: - case CriteriaTypes.BgObjectiveCapture: - case CriteriaTypes.HonorableKillAtArea: - case CriteriaTypes.LearnSpell: - case CriteriaTypes.OwnItem: - case CriteriaTypes.LearnSkillLevel: - case CriteriaTypes.UseItem: - case CriteriaTypes.LootItem: - case CriteriaTypes.ExploreArea: - case CriteriaTypes.GainReputation: - case CriteriaTypes.EquipItemInSlot: - case CriteriaTypes.HkClass: - case CriteriaTypes.HkRace: - case CriteriaTypes.DoEmote: - case CriteriaTypes.EquipItem: - case CriteriaTypes.UseGameobject: - case CriteriaTypes.BeSpellTarget2: - case CriteriaTypes.FishInGameobject: - case CriteriaTypes.LearnSkilllineSpells: - case CriteriaTypes.LootType: - case CriteriaTypes.CastSpell2: - case CriteriaTypes.LearnSkillLine: + 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: return false; } } - public List GetPlayerCriteriaByType(CriteriaTypes type, uint asset) + public List GetPlayerCriteriaByType(CriteriaType type, uint asset) { if (asset != 0 && IsCriteriaTypeStoredByAsset(type)) { @@ -3902,17 +3894,17 @@ namespace Game.Achievements return _criteriasByType.LookupByKey(type); } - public List GetGuildCriteriaByType(CriteriaTypes type) + public List GetGuildCriteriaByType(CriteriaType type) { return _guildCriteriasByType.LookupByKey(type); } - public List GetScenarioCriteriaByType(CriteriaTypes type) + public List GetScenarioCriteriaByType(CriteriaType type) { return _scenarioCriteriasByType.LookupByKey(type); } - public List GetQuestObjectiveCriteriaByType(CriteriaTypes type) + public List GetQuestObjectiveCriteriaByType(CriteriaType type) { return _questObjectiveCriteriasByType[type]; } @@ -3937,16 +3929,16 @@ namespace Game.Achievements return _criteriaDataMap.LookupByKey(criteria.Id); } - public static bool IsGroupCriteriaType(CriteriaTypes type) + public static bool IsGroupCriteriaType(CriteriaType type) { switch (type) { - case CriteriaTypes.KillCreature: - case CriteriaTypes.WinBg: - case CriteriaTypes.BeSpellTarget: // NYI - case CriteriaTypes.WinRatedArena: - case CriteriaTypes.BeSpellTarget2: // NYI - case CriteriaTypes.WinRatedBattleground: // 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; @@ -4088,37 +4080,37 @@ namespace Game.Achievements switch (criteria.Entry.Type) { - case CriteriaTypes.KillCreature: - case CriteriaTypes.KillCreatureType: - case CriteriaTypes.WinBg: - case CriteriaTypes.FallWithoutDying: - case CriteriaTypes.CompleteQuest: // only hardcoded list - case CriteriaTypes.CastSpell: - case CriteriaTypes.WinRatedArena: - case CriteriaTypes.DoEmote: - case CriteriaTypes.SpecialPvpKill: - case CriteriaTypes.WinDuel: - case CriteriaTypes.LootType: - case CriteriaTypes.CastSpell2: - case CriteriaTypes.BeSpellTarget: - case CriteriaTypes.BeSpellTarget2: - case CriteriaTypes.EquipItemInSlot: - case CriteriaTypes.RollNeedOnLoot: - case CriteriaTypes.RollGreedOnLoot: - case CriteriaTypes.BgObjectiveCapture: - case CriteriaTypes.HonorableKill: - case CriteriaTypes.CompleteDailyQuest: // only Children's Week achievements - case CriteriaTypes.UseItem: // only Children's Week achievements - case CriteriaTypes.GetKillingBlows: - case CriteriaTypes.ReachLevel: - case CriteriaTypes.OnLogin: - case CriteriaTypes.LootAnyItem: - case CriteriaTypes.ObtainAnyItem: + 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 != CriteriaDataType.Script) { - Log.outError(LogFilter.Sql, "Table `criteria_data` has data for non-supported criteria type (Entry: {0} Type: {1}), ignored.", criteria.Id, (CriteriaTypes)criteria.Entry.Type); + Log.outError(LogFilter.Sql, "Table `criteria_data` has data for non-supported criteria type (Entry: {0} Type: {1}), ignored.", criteria.Id, (CriteriaType)criteria.Entry.Type); return false; } break; @@ -4436,7 +4428,7 @@ namespace Game.Achievements { Criteria entry = Global.CriteriaMgr.GetCriteria(criteriaId); - uint itemId = entry.Entry.Type == CriteriaTypes.EquipItemInSlot ? miscValue2 : miscValue1; + uint itemId = entry.Entry.Type == CriteriaType.EquipItemInSlot ? miscValue2 : miscValue1; ItemTemplate itemTemplate = Global.ObjectMgr.GetItemTemplate(itemId); if (itemTemplate == null) return false; diff --git a/Source/Game/Arenas/Arena.cs b/Source/Game/Arenas/Arena.cs index a3707b990..fbb9282d8 100644 --- a/Source/Game/Arenas/Arena.cs +++ b/Source/Game/Arenas/Arena.cs @@ -253,8 +253,8 @@ namespace Game.Arenas { // update achievement BEFORE personal rating update uint rating = player.GetArenaPersonalRating(winnerArenaTeam.GetSlot()); - player.UpdateCriteria(CriteriaTypes.WinRatedArena, rating != 0 ? rating : 1); - player.UpdateCriteria(CriteriaTypes.WinRatedArena, GetMapId()); + player.UpdateCriteria(CriteriaType.WinAnyRankedArena, rating != 0 ? rating : 1); + player.UpdateCriteria(CriteriaType.WinArena, GetMapId()); // Last standing - Rated 5v5 arena & be solely alive player if (GetArenaType() == ArenaTypes.Team5v5 && aliveWinners == 1 && player.IsAlive()) @@ -268,7 +268,7 @@ namespace Game.Arenas { Guild guild = Global.GuildMgr.GetGuildById(guildId); if (guild) - guild.UpdateCriteria(CriteriaTypes.WinRatedArena, Math.Max(winnerArenaTeam.GetRating(), 1), 0, 0, null, player); + guild.UpdateCriteria(CriteriaType.WinAnyRankedArena, Math.Max(winnerArenaTeam.GetRating(), 1), 0, 0, null, player); } } diff --git a/Source/Game/Arenas/ArenaTeam.cs b/Source/Game/Arenas/ArenaTeam.cs index ef2be1b9a..3638e5192 100644 --- a/Source/Game/Arenas/ArenaTeam.cs +++ b/Source/Game/Arenas/ArenaTeam.cs @@ -559,7 +559,7 @@ namespace Game.Arenas { Player player = Global.ObjAccessor.FindPlayer(member.Guid); if (player) - player.UpdateCriteria(CriteriaTypes.HighestTeamRating, stats.Rating, type); + player.UpdateCriteria(CriteriaType.EarnTeamArenaRating, stats.Rating, type); } } @@ -834,7 +834,7 @@ namespace Game.Arenas if (player) { player.SetArenaTeamInfoField(ArenaTeam.GetSlotByType(type), ArenaTeamInfoType.PersonalRating, PersonalRating); - player.UpdateCriteria(CriteriaTypes.HighestPersonalRating, PersonalRating, type); + player.UpdateCriteria(CriteriaType.EarnPersonalArenaRating, PersonalRating, type); } } diff --git a/Source/Game/AuctionHouse/AuctionManager.cs b/Source/Game/AuctionHouse/AuctionManager.cs index a0a0039b3..552c517f5 100644 --- a/Source/Game/AuctionHouse/AuctionManager.cs +++ b/Source/Game/AuctionHouse/AuctionManager.cs @@ -1318,8 +1318,8 @@ namespace Game Player owner = Global.ObjAccessor.FindConnectedPlayer(auction.Owner); if (owner != null) { - owner.UpdateCriteria(CriteriaTypes.GoldEarnedByAuctions, profit); - owner.UpdateCriteria(CriteriaTypes.HighestAuctionSold, profit); + owner.UpdateCriteria(CriteriaType.MoneyEarnedFromAuctions, profit); + owner.UpdateCriteria(CriteriaType.HighestAuctionSale, profit); owner.GetSession().SendAuctionClosedNotification(auction, (float)WorldConfig.GetIntValue(WorldCfg.MailDeliveryDelay), true); } @@ -1460,7 +1460,7 @@ namespace Game bidder.SendPacket(packet); // FIXME: for offline player need also - bidder.UpdateCriteria(CriteriaTypes.WonAuctions, 1); + bidder.UpdateCriteria(CriteriaType.AuctionsWon, 1); } mail.SendMailTo(trans, new MailReceiver(bidder, auction.Bidder), new MailSender(this), MailCheckMask.Copied); @@ -1488,8 +1488,8 @@ namespace Game //FIXME: what do if owner offline if (owner) { - owner.UpdateCriteria(CriteriaTypes.GoldEarnedByAuctions, profit); - owner.UpdateCriteria(CriteriaTypes.HighestAuctionSold, 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)WorldConfig.GetIntValue(WorldCfg.MailDeliveryDelay), true); } diff --git a/Source/Game/BattleGrounds/BattleGround.cs b/Source/Game/BattleGrounds/BattleGround.cs index 72a66f925..f0f140802 100644 --- a/Source/Game/BattleGrounds/BattleGround.cs +++ b/Source/Game/BattleGrounds/BattleGround.cs @@ -776,7 +776,7 @@ namespace Game.BattleGrounds // TODO: lose honor xp } - player.UpdateCriteria(CriteriaTypes.WinBg, player.GetMapId()); + player.UpdateCriteria(CriteriaType.WinBattleground, player.GetMapId()); if (!guildAwarded) { guildAwarded = true; @@ -785,7 +785,7 @@ namespace Game.BattleGrounds { Guild guild = Global.GuildMgr.GetGuildById(guildId); if (guild) - guild.UpdateCriteria(CriteriaTypes.WinBg, player.GetMapId(), 0, 0, null, player); + guild.UpdateCriteria(CriteriaType.WinBattleground, player.GetMapId(), 0, 0, null, player); } } } @@ -802,7 +802,7 @@ namespace Game.BattleGrounds player.SendPacket(pvpMatchComplete); - player.UpdateCriteria(CriteriaTypes.CompleteBattleground, player.GetMapId()); + player.UpdateCriteria(CriteriaType.ParticipateInBattleground, player.GetMapId()); } } diff --git a/Source/Game/BattleGrounds/Zones/ArathiBasin.cs b/Source/Game/BattleGrounds/Zones/ArathiBasin.cs index fc952ee56..08b115604 100644 --- a/Source/Game/BattleGrounds/Zones/ArathiBasin.cs +++ b/Source/Game/BattleGrounds/Zones/ArathiBasin.cs @@ -683,10 +683,10 @@ namespace Game.BattleGrounds.Zones switch (type) { case ScoreType.BasesAssaulted: - player.UpdateCriteria(CriteriaTypes.BgObjectiveCapture, (uint)ABObjectives.AssaultBase); + player.UpdateCriteria(CriteriaType.TrackedWorldStateUIModified, (uint)ABObjectives.AssaultBase); break; case ScoreType.BasesDefended: - player.UpdateCriteria(CriteriaTypes.BgObjectiveCapture, (uint)ABObjectives.DefendBase); + player.UpdateCriteria(CriteriaType.TrackedWorldStateUIModified, (uint)ABObjectives.DefendBase); break; default: break; diff --git a/Source/Game/BattleGrounds/Zones/EyeofStorm.cs b/Source/Game/BattleGrounds/Zones/EyeofStorm.cs index 143333219..80d07cc0e 100644 --- a/Source/Game/BattleGrounds/Zones/EyeofStorm.cs +++ b/Source/Game/BattleGrounds/Zones/EyeofStorm.cs @@ -839,7 +839,7 @@ namespace Game.BattleGrounds.Zones switch (type) { case ScoreType.FlagCaptures: - player.UpdateCriteria(CriteriaTypes.BgObjectiveCapture, EotSMisc.ObjectiveCaptureFlag); + player.UpdateCriteria(CriteriaType.TrackedWorldStateUIModified, EotSMisc.ObjectiveCaptureFlag); break; default: break; diff --git a/Source/Game/BattleGrounds/Zones/StrandofAncients.cs b/Source/Game/BattleGrounds/Zones/StrandofAncients.cs index 612666fcd..f935c1325 100644 --- a/Source/Game/BattleGrounds/Zones/StrandofAncients.cs +++ b/Source/Game/BattleGrounds/Zones/StrandofAncients.cs @@ -927,7 +927,7 @@ namespace Game.BattleGrounds.Zones Player player = Global.ObjAccessor.FindPlayer(pair.Key); if (player) if (player.GetTeamId() == Attackers) - player.UpdateCriteria(CriteriaTypes.BeSpellTarget, 65246); + player.UpdateCriteria(CriteriaType.BeSpellTarget, 65246); } Attackers = (Attackers == TeamId.Alliance) ? TeamId.Horde : TeamId.Alliance; @@ -959,7 +959,7 @@ namespace Game.BattleGrounds.Zones Player player = Global.ObjAccessor.FindPlayer(pair.Key); if (player) if (player.GetTeamId() == Attackers && RoundScores[1].winner == Attackers) - player.UpdateCriteria(CriteriaTypes.BeSpellTarget, 65246); + player.UpdateCriteria(CriteriaType.BeSpellTarget, 65246); } if (RoundScores[0].time == RoundScores[1].time) @@ -1096,10 +1096,10 @@ namespace Game.BattleGrounds.Zones switch (type) { case ScoreType.DestroyedDemolisher: - player.UpdateCriteria(CriteriaTypes.BgObjectiveCapture, (uint)SAObjectives.DemolishersDestroyed); + player.UpdateCriteria(CriteriaType.TrackedWorldStateUIModified, (uint)SAObjectives.DemolishersDestroyed); break; case ScoreType.DestroyedWall: - player.UpdateCriteria(CriteriaTypes.BgObjectiveCapture, (uint)SAObjectives.GatesDestroyed); + player.UpdateCriteria(CriteriaType.TrackedWorldStateUIModified, (uint)SAObjectives.GatesDestroyed); break; default: break; diff --git a/Source/Game/BattleGrounds/Zones/WarsongGluch.cs b/Source/Game/BattleGrounds/Zones/WarsongGluch.cs index da0561d4d..695ecf9bd 100644 --- a/Source/Game/BattleGrounds/Zones/WarsongGluch.cs +++ b/Source/Game/BattleGrounds/Zones/WarsongGluch.cs @@ -762,10 +762,10 @@ namespace Game.BattleGrounds.Zones switch (type) { case ScoreType.FlagCaptures: // flags captured - player.UpdateCriteria(CriteriaTypes.BgObjectiveCapture, WSObjectives.CaptureFlag); + player.UpdateCriteria(CriteriaType.TrackedWorldStateUIModified, WSObjectives.CaptureFlag); break; case ScoreType.FlagReturns: // flags returned - player.UpdateCriteria(CriteriaTypes.BgObjectiveCapture, WSObjectives.ReturnFlag); + player.UpdateCriteria(CriteriaType.TrackedWorldStateUIModified, WSObjectives.ReturnFlag); break; default: break; diff --git a/Source/Game/BattlePets/BattlePetManager.cs b/Source/Game/BattlePets/BattlePetManager.cs index 2f7dd645c..164184ac6 100644 --- a/Source/Game/BattlePets/BattlePetManager.cs +++ b/Source/Game/BattlePets/BattlePetManager.cs @@ -297,7 +297,7 @@ namespace Game.BattlePets updates.Add(pet); SendUpdates(updates, true); - _owner.GetPlayer().UpdateCriteria(CriteriaTypes.OwnBattlePet, species); + _owner.GetPlayer().UpdateCriteria(CriteriaType.LearnedNewPet, species); } public void RemovePet(ObjectGuid guid) diff --git a/Source/Game/Chat/Commands/ResetCommands.cs b/Source/Game/Chat/Commands/ResetCommands.cs index 20e1087a0..fe673b587 100644 --- a/Source/Game/Chat/Commands/ResetCommands.cs +++ b/Source/Game/Chat/Commands/ResetCommands.cs @@ -52,7 +52,7 @@ namespace Game.Chat return false; target.ResetHonorStats(); - target.UpdateCriteria(CriteriaTypes.EarnHonorableKill); + target.UpdateCriteria(CriteriaType.HonorableKills); return true; } diff --git a/Source/Game/DataStorage/Structs/C_Records.cs b/Source/Game/DataStorage/Structs/C_Records.cs index cb705b9cb..5db6ceaf0 100644 --- a/Source/Game/DataStorage/Structs/C_Records.cs +++ b/Source/Game/DataStorage/Structs/C_Records.cs @@ -480,7 +480,7 @@ namespace Game.DataStorage public sealed class CriteriaRecord { public uint Id; - public CriteriaTypes Type; + public CriteriaType Type; public uint Asset; public uint ModifierTreeId; public byte StartEvent; diff --git a/Source/Game/DungeonFinding/LFGManager.cs b/Source/Game/DungeonFinding/LFGManager.cs index 74efbd14a..a0c5f8de1 100644 --- a/Source/Game/DungeonFinding/LFGManager.cs +++ b/Source/Game/DungeonFinding/LFGManager.cs @@ -1342,7 +1342,7 @@ namespace Game.DungeonFinding // Update achievements if (dungeon.difficulty == Difficulty.Heroic) - player.UpdateCriteria(CriteriaTypes.UseLfdToGroupWithPlayers, 1); + player.UpdateCriteria(CriteriaType.CompletedLFGDungeonWithStrangers, 1); LfgReward reward = GetRandomDungeonReward(rDungeonId, player.GetLevel()); if (reward == null) diff --git a/Source/Game/Entities/GameObject/GameObject.cs b/Source/Game/Entities/GameObject/GameObject.cs index f93a3e9f8..dc2497b2f 100644 --- a/Source/Game/Entities/GameObject/GameObject.cs +++ b/Source/Game/Entities/GameObject/GameObject.cs @@ -1921,7 +1921,7 @@ namespace Game.Entities Player player = user.ToPlayer(); player.SendLoot(GetGUID(), LootType.Fishinghole); - player.UpdateCriteria(CriteriaTypes.FishInGameobject, GetGoInfo().entry); + player.UpdateCriteria(CriteriaType.CatchFishInFishingHole, GetGoInfo().entry); return; } diff --git a/Source/Game/Entities/Item/AzeriteItem.cs b/Source/Game/Entities/Item/AzeriteItem.cs index 1841db825..e0f7ebf87 100644 --- a/Source/Game/Entities/Item/AzeriteItem.cs +++ b/Source/Game/Entities/Item/AzeriteItem.cs @@ -274,7 +274,7 @@ namespace Game.Entities SetUpdateFieldValue(m_values.ModifyValue(m_azeriteItemData).ModifyValue(m_azeriteItemData.Xp), currentXP); - owner.UpdateCriteria(CriteriaTypes.HeartOfAzerothArtifactPowerEarned, xp); + owner.UpdateCriteria(CriteriaType.EarnArtifactXPForAzeriteItem, xp); // changing azerite level changes item level, need to update stats if (m_azeriteItemData.Level != level) @@ -284,7 +284,7 @@ namespace Game.Entities SetUpdateFieldValue(m_values.ModifyValue(m_azeriteItemData).ModifyValue(m_azeriteItemData.Level), level); UnlockDefaultMilestones(); - owner.UpdateCriteria(CriteriaTypes.HeartOfAzerothLevelReached, level); + owner.UpdateCriteria(CriteriaType.AzeriteLevelReached, level); if (IsEquipped()) owner._ApplyItemBonuses(this, GetSlot(), true); diff --git a/Source/Game/Entities/Player/CollectionManager.cs b/Source/Game/Entities/Player/CollectionManager.cs index 3d7ece188..a0b594db7 100644 --- a/Source/Game/Entities/Player/CollectionManager.cs +++ b/Source/Game/Entities/Player/CollectionManager.cs @@ -728,13 +728,13 @@ namespace Game.Entities { int transmogSlot = Item.ItemTransmogrificationSlots[(int)item.inventoryType]; if (transmogSlot >= 0) - _owner.GetPlayer().UpdateCriteria(CriteriaTypes.AppearanceUnlockedBySlot, (ulong)transmogSlot, itemModifiedAppearance.Id); + _owner.GetPlayer().UpdateCriteria(CriteriaType.LearnAnyTransmogInSlot, (ulong)transmogSlot, itemModifiedAppearance.Id); } var sets = Global.DB2Mgr.GetTransmogSetsForItemModifiedAppearance(itemModifiedAppearance.Id); foreach (TransmogSetRecord set in sets) if (IsSetCompleted(set.Id)) - _owner.GetPlayer().UpdateCriteria(CriteriaTypes.TransmogSetUnlocked, set.TransmogSetGroupID); + _owner.GetPlayer().UpdateCriteria(CriteriaType.CollectTransmogSetFromGroup, set.TransmogSetGroupID); } void AddTemporaryAppearance(ObjectGuid itemGuid, ItemModifiedAppearanceRecord itemModifiedAppearance) diff --git a/Source/Game/Entities/Player/KillRewarder.cs b/Source/Game/Entities/Player/KillRewarder.cs index 9e93c9436..9349aebad 100644 --- a/Source/Game/Entities/Player/KillRewarder.cs +++ b/Source/Game/Entities/Player/KillRewarder.cs @@ -99,11 +99,11 @@ namespace Game.Entities uint guildId = victim.GetMap().GetOwnerGuildId(); var guild = Global.GuildMgr.GetGuildById(guildId); if (guild != null) - guild.UpdateCriteria(CriteriaTypes.KillCreature, victim.GetEntry(), 1, 0, victim, _killer); + guild.UpdateCriteria(CriteriaType.KillCreature, victim.GetEntry(), 1, 0, victim, _killer); Scenario scenario = victim.GetScenario(); if (scenario != null) - scenario.UpdateCriteria(CriteriaTypes.KillCreature, victim.GetEntry(), 1, 0, victim, _killer); + scenario.UpdateCriteria(CriteriaType.KillCreature, victim.GetEntry(), 1, 0, victim, _killer); } } @@ -208,7 +208,7 @@ namespace Game.Entities if (target != null) { player.KilledMonster(target.GetCreatureTemplate(), target.GetGUID()); - player.UpdateCriteria(CriteriaTypes.KillCreatureType, (ulong)target.GetCreatureType(), 1, 0, target); + player.UpdateCriteria(CriteriaType.KillAnyCreature, (ulong)target.GetCreatureType(), 1, 0, target); } } } @@ -271,7 +271,7 @@ namespace Game.Entities if (_killer == member || member.IsAtGroupRewardDistance(_victim)) { _RewardPlayer(member, isDungeon); - member.UpdateCriteria(CriteriaTypes.SpecialPvpKill, 1, 0, 0, _victim); + member.UpdateCriteria(CriteriaType.KillPlayer, 1, 0, 0, _victim); } } } diff --git a/Source/Game/Entities/Player/Player.Achievement.cs b/Source/Game/Entities/Player/Player.Achievement.cs index 5ae531307..061f2dc1b 100644 --- a/Source/Game/Entities/Player/Player.Achievement.cs +++ b/Source/Game/Entities/Player/Player.Achievement.cs @@ -66,7 +66,7 @@ namespace Game.Entities m_questObjectiveCriteriaMgr.ResetCriteria(failEvent, failAsset, evenIfCriteriaComplete); } - public void UpdateCriteria(CriteriaTypes type, ulong miscValue1 = 0, ulong miscValue2 = 0, ulong miscValue3 = 0, WorldObject refe = null) + public void UpdateCriteria(CriteriaType type, ulong miscValue1 = 0, ulong miscValue2 = 0, ulong miscValue3 = 0, WorldObject refe = null) { m_achievementSys.UpdateCriteria(type, miscValue1, miscValue2, miscValue3, refe, this); m_questObjectiveCriteriaMgr.UpdateCriteria(type, miscValue1, miscValue2, miscValue3, refe, this); diff --git a/Source/Game/Entities/Player/Player.Combat.cs b/Source/Game/Entities/Player/Player.Combat.cs index 34b5b3c56..9cf35efd1 100644 --- a/Source/Game/Entities/Player/Player.Combat.cs +++ b/Source/Game/Entities/Player/Player.Combat.cs @@ -491,8 +491,8 @@ namespace Game.Entities } break; case DuelCompleteType.Won: - UpdateCriteria(CriteriaTypes.LoseDuel, 1); - duel.opponent.UpdateCriteria(CriteriaTypes.WinDuel, 1); + UpdateCriteria(CriteriaType.LoseDuel, 1); + duel.opponent.UpdateCriteria(CriteriaType.WinDuel, 1); // Credit for quest Death's Challenge if (GetClass() == Class.Deathknight && duel.opponent.GetQuestStatus(12733) == QuestStatus.Incomplete) diff --git a/Source/Game/Entities/Player/Player.Items.cs b/Source/Game/Entities/Player/Player.Items.cs index b4de13438..1bfbf8dfc 100644 --- a/Source/Game/Entities/Player/Player.Items.cs +++ b/Source/Game/Entities/Player/Player.Items.cs @@ -1268,8 +1268,8 @@ namespace Game.Entities if (item != null) { ItemAddedQuestCheck(itemId, count); - UpdateCriteria(CriteriaTypes.ObtainAnyItem, itemId, count); - UpdateCriteria(CriteriaTypes.OwnItem, itemId, 1); + UpdateCriteria(CriteriaType.ObtainAnyItem, itemId, count); + UpdateCriteria(CriteriaType.AcquireItem, itemId, 1); item.AddItemFlag(ItemFieldFlags.NewItem); @@ -1539,7 +1539,7 @@ namespace Game.Entities if (pItem != null) { ItemAddedQuestCheck(item, 1); - UpdateCriteria(CriteriaTypes.ObtainAnyItem, item, 1); + UpdateCriteria(CriteriaType.ObtainAnyItem, item, 1); return EquipItem(pos, pItem, update); } @@ -1647,8 +1647,8 @@ namespace Game.Entities CheckTitanGripPenalty(); // only for full equip instead adding to stack - UpdateCriteria(CriteriaTypes.EquipItem, pItem.GetEntry()); - UpdateCriteria(CriteriaTypes.EquipItemInSlot, slot, pItem.GetEntry()); + UpdateCriteria(CriteriaType.EquipItem, pItem.GetEntry()); + UpdateCriteria(CriteriaType.EquipItemInSlot, slot, pItem.GetEntry()); UpdateAverageItemLevelEquipped(); @@ -1775,8 +1775,8 @@ namespace Game.Entities if (slot == EquipmentSlot.MainHand || slot == EquipmentSlot.OffHand) CheckTitanGripPenalty(); - UpdateCriteria(CriteriaTypes.EquipItem, pItem.GetEntry()); - UpdateCriteria(CriteriaTypes.EquipItemInSlot, slot, pItem.GetEntry()); + UpdateCriteria(CriteriaType.EquipItem, pItem.GetEntry()); + UpdateCriteria(CriteriaType.EquipItemInSlot, slot, pItem.GetEntry()); } } public void SendEquipError(InventoryResult msg, Item item1 = null, Item item2 = null, uint itemId = 0) @@ -3423,7 +3423,7 @@ namespace Game.Entities guild.AddGuildNews(GuildNews.ItemPurchased, GetGUID(), 0, item); } - UpdateCriteria(CriteriaTypes.BoughtItemFromVendor, 1); + UpdateCriteria(CriteriaType.BuyItemsFromVendors, 1); return true; } @@ -4238,7 +4238,7 @@ namespace Game.Entities { // update quest counters ItemAddedQuestCheck(pItem.GetEntry(), pItem.GetCount()); - UpdateCriteria(CriteriaTypes.ObtainAnyItem, pItem.GetEntry(), pItem.GetCount()); + UpdateCriteria(CriteriaType.ObtainAnyItem, pItem.GetEntry(), pItem.GetCount()); // store item Item pLastItem = StoreItem(dest, pItem, update); @@ -5941,9 +5941,9 @@ namespace Game.Entities if (aeResult == null) { SendNewItem(newitem, item.count, false, false, true); - UpdateCriteria(CriteriaTypes.LootItem, item.itemid, item.count); - UpdateCriteria(CriteriaTypes.LootType, item.itemid, item.count, (ulong)loot.loot_type); - UpdateCriteria(CriteriaTypes.LootAnyItem, item.itemid, item.count); + UpdateCriteria(CriteriaType.LootItem, item.itemid, item.count); + UpdateCriteria(CriteriaType.GetLootByType, item.itemid, item.count, (ulong)loot.loot_type); + UpdateCriteria(CriteriaType.LootAnyItem, item.itemid, item.count); } else aeResult.Add(newitem, item.count, loot.loot_type); diff --git a/Source/Game/Entities/Player/Player.Map.cs b/Source/Game/Entities/Player/Player.Map.cs index 49c965f06..349a2a9b9 100644 --- a/Source/Game/Entities/Player/Player.Map.cs +++ b/Source/Game/Entities/Player/Player.Map.cs @@ -147,7 +147,7 @@ namespace Game.Entities PushQuests(); - UpdateCriteria(CriteriaTypes.TravelledToArea, newArea); + UpdateCriteria(CriteriaType.EnterTopLevelArea, newArea); } public void UpdateZone(uint newZone, uint newArea) diff --git a/Source/Game/Entities/Player/Player.PvP.cs b/Source/Game/Entities/Player/Player.PvP.cs index d4215986e..77e57a537 100644 --- a/Source/Game/Entities/Player/Player.PvP.cs +++ b/Source/Game/Entities/Player/Player.PvP.cs @@ -139,11 +139,11 @@ namespace Game.Entities ApplyModUpdateFieldValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.TodayHonorableKills), (ushort)1, true); // and those in a lifetime ApplyModUpdateFieldValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.LifetimeHonorableKills), 1u, true); - UpdateCriteria(CriteriaTypes.EarnHonorableKill); - UpdateCriteria(CriteriaTypes.HkClass, (uint)victim.GetClass()); - UpdateCriteria(CriteriaTypes.HkRace, (uint)victim.GetRace()); - UpdateCriteria(CriteriaTypes.HonorableKillAtArea, GetAreaId()); - UpdateCriteria(CriteriaTypes.HonorableKill, 1, 0, 0, victim); + UpdateCriteria(CriteriaType.HonorableKills); + UpdateCriteria(CriteriaType.DeliverKillingBlowToClass, (uint)victim.GetClass()); + UpdateCriteria(CriteriaType.DeliverKillingBlowToRace, (uint)victim.GetRace()); + UpdateCriteria(CriteriaType.PVPKillInArea, GetAreaId()); + UpdateCriteria(CriteriaType.EarnHonorableKill, 1, 0, 0, victim); } else { @@ -290,7 +290,7 @@ namespace Game.Entities SetUpdateFieldValue(m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.HonorLevel), level); UpdateHonorNextLevel(); - UpdateCriteria(CriteriaTypes.HonorLevelReached); + UpdateCriteria(CriteriaType.HonorLevelIncrease); } void UpdateHonorNextLevel() diff --git a/Source/Game/Entities/Player/Player.Quest.cs b/Source/Game/Entities/Player/Player.Quest.cs index d1ff4264d..56e58d840 100644 --- a/Source/Game/Entities/Player/Player.Quest.cs +++ b/Source/Game/Entities/Player/Player.Quest.cs @@ -1056,7 +1056,7 @@ namespace Game.Entities ModifyMoney(moneyRew); if (moneyRew > 0) - UpdateCriteria(CriteriaTypes.MoneyFromQuestReward, (uint)(moneyRew)); + UpdateCriteria(CriteriaType.MoneyEarnedFromQuesting, (uint)moneyRew); } // honor reward @@ -1091,8 +1091,8 @@ namespace Game.Entities SetDailyQuestStatus(questId); if (quest.IsDaily()) { - UpdateCriteria(CriteriaTypes.CompleteDailyQuest, questId); - UpdateCriteria(CriteriaTypes.CompleteDailyQuestDaily, questId); + UpdateCriteria(CriteriaType.CompleteDailyQuest, questId); + UpdateCriteria(CriteriaType.CompleteAnyDailyQuestPerDay, questId); } } else if (quest.IsWeekly()) @@ -1147,11 +1147,11 @@ namespace Game.Entities } if (quest.QuestSortID > 0) - UpdateCriteria(CriteriaTypes.CompleteQuestsInZone, quest.Id); + UpdateCriteria(CriteriaType.CompleteQuestsInZone, quest.Id); - UpdateCriteria(CriteriaTypes.CompleteQuestCount); - UpdateCriteria(CriteriaTypes.CompleteQuest, quest.Id); - UpdateCriteria(CriteriaTypes.CompleteQuestAccumulate, 1); + UpdateCriteria(CriteriaType.CompleteQuestsCount); + UpdateCriteria(CriteriaType.CompleteQuest, quest.Id); + UpdateCriteria(CriteriaType.CompleteAnyReplayQuest, 1); // make full db save SaveToDB(false); @@ -2232,7 +2232,7 @@ namespace Game.Entities } StartCriteriaTimer(CriteriaStartEvent.KillNPC, real_entry); // MUST BE CALLED FIRST - UpdateCriteria(CriteriaTypes.KillCreature, real_entry, addKillCount, 0, killed); + UpdateCriteria(CriteriaType.KillCreature, real_entry, addKillCount, 0, killed); UpdateQuestObjectiveProgress(QuestObjectiveType.Monster, (int)entry, 1, guid); } diff --git a/Source/Game/Entities/Player/Player.Spells.cs b/Source/Game/Entities/Player/Player.Spells.cs index e7b443fd1..8b3f1dcb9 100644 --- a/Source/Game/Entities/Player/Player.Spells.cs +++ b/Source/Game/Entities/Player/Player.Spells.cs @@ -436,7 +436,7 @@ namespace Game.Entities } UpdateSkillEnchantments(skillId, value, new_value); - UpdateCriteria(CriteriaTypes.ReachSkillLevel, skillId); + UpdateCriteria(CriteriaType.SkillRaised, skillId); Log.outDebug(LogFilter.Player, "Player:UpdateSkillPro Chance={0:F3}% taken", chance / 10.0f); return true; } @@ -1071,8 +1071,8 @@ namespace Game.Entities if (newVal > currVal) UpdateSkillEnchantments(id, currVal, (ushort)newVal); - UpdateCriteria(CriteriaTypes.ReachSkillLevel, id); - UpdateCriteria(CriteriaTypes.LearnSkillLevel, id); + UpdateCriteria(CriteriaType.SkillRaised, id); + UpdateCriteria(CriteriaType.AchieveSkillStep, id); // update skill state if (skillStatusData.State == SkillState.Unchanged) @@ -1202,8 +1202,8 @@ namespace Game.Entities if (newVal != 0) { - UpdateCriteria(CriteriaTypes.ReachSkillLevel, id); - UpdateCriteria(CriteriaTypes.LearnSkillLevel, id); + UpdateCriteria(CriteriaType.SkillRaised, id); + UpdateCriteria(CriteriaType.AchieveSkillStep, id); // temporary bonuses foreach (var auraEffect in GetAuraEffectsByType(AuraType.ModSkill)) @@ -2636,11 +2636,11 @@ namespace Game.Entities // not ranked skills foreach (var _spell_idx in skill_bounds) { - UpdateCriteria(CriteriaTypes.LearnSkillLine, _spell_idx.SkillLine); - UpdateCriteria(CriteriaTypes.LearnSkilllineSpells, _spell_idx.SkillLine); + UpdateCriteria(CriteriaType.LearnTradeskillSkillLine, _spell_idx.SkillLine); + UpdateCriteria(CriteriaType.LearnSpellFromSkillLine, _spell_idx.SkillLine); } - UpdateCriteria(CriteriaTypes.LearnSpell, spellId); + UpdateCriteria(CriteriaType.LearnOrKnowSpell, spellId); } // needs to be when spell is already learned, to prevent infinite recursion crashes @@ -2653,7 +2653,7 @@ namespace Game.Entities if (entry.SummonSpellID == spellId && GetSession().GetBattlePetMgr().GetPetCount(entry.Id) == 0) { GetSession().GetBattlePetMgr().AddPet(entry.Id, entry.CreatureID, BattlePetMgr.RollPetBreed(entry.Id), BattlePetMgr.GetDefaultPetQuality(entry.Id)); - UpdateCriteria(CriteriaTypes.OwnBattlePetCount); + UpdateCriteria(CriteriaType.UniquePetsOwned); break; } } diff --git a/Source/Game/Entities/Player/Player.Talents.cs b/Source/Game/Entities/Player/Player.Talents.cs index 78754d42a..9b8e75eea 100644 --- a/Source/Game/Entities/Player/Player.Talents.cs +++ b/Source/Game/Entities/Player/Player.Talents.cs @@ -535,8 +535,8 @@ namespace Game.Entities if (!noCost) { ModifyMoney(-cost); - UpdateCriteria(CriteriaTypes.GoldSpentForTalents, cost); - UpdateCriteria(CriteriaTypes.NumberOfTalentResets, 1); + UpdateCriteria(CriteriaType.MoneySpentOnRespecs, cost); + UpdateCriteria(CriteriaType.TotalRespecs, 1); SetTalentResetCost(cost); SetTalentResetTime(GameTime.GetGameTime()); diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index f01e7eec5..fd631cbbc 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -653,9 +653,9 @@ namespace Game.Entities InitializeSelfResurrectionSpells(); - UpdateCriteria(CriteriaTypes.DeathAtMap, 1); - UpdateCriteria(CriteriaTypes.Death, 1); - UpdateCriteria(CriteriaTypes.DeathInDungeon, 1); + UpdateCriteria(CriteriaType.DieOnMap, 1); + UpdateCriteria(CriteriaType.DieAnywhere, 1); + UpdateCriteria(CriteriaType.DieInInstance, 1); // reset all death criterias ResetCriteria(CriteriaFailEvent.Death, 0); @@ -1213,7 +1213,7 @@ namespace Game.Entities playerCurrency.TrackedQuantity = (uint)newTrackedCount; if (count > 0) - UpdateCriteria(CriteriaTypes.Currency, (uint)id, (uint)count); + UpdateCriteria(CriteriaType.CurrencyGained, (uint)id, (uint)count); _currencyStorage[(uint)id] = playerCurrency; @@ -2036,7 +2036,7 @@ namespace Game.Entities // 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(CriteriaTypes.FallWithoutDying, (uint)z_diff * 100); + UpdateCriteria(CriteriaType.MaxDistFallenWithoutDying, (uint)z_diff * 100); } //Z given by moveinfo, LastZ, FallTime, WaterZ, MapZ, Damage, Safefall reduction @@ -2134,7 +2134,7 @@ namespace Game.Entities m_summon_expire = 0; - UpdateCriteria(CriteriaTypes.AcceptedSummonings, 1); + UpdateCriteria(CriteriaType.AcceptSummon, 1); RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags.Summon); m_summon_location.SetOrientation(GetOrientation()); @@ -3980,7 +3980,7 @@ namespace Game.Entities SendDurabilityLoss(this, 10); } - UpdateCriteria(CriteriaTypes.DeathsFrom, 1, (ulong)type); + UpdateCriteria(CriteriaType.DieFromEnviromentalDamage, 1, (ulong)type); } return final_damage; @@ -5106,7 +5106,7 @@ namespace Game.Entities { MoneyChanged((uint)value); SetUpdateFieldValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.Coinage), value); - UpdateCriteria(CriteriaTypes.HighestGoldValueOwned); + UpdateCriteria(CriteriaType.MostMoneyOwned); } //Target @@ -5258,8 +5258,8 @@ namespace Game.Entities DB.Characters.CommitTransaction(trans); } - UpdateCriteria(CriteriaTypes.ReachLevel); - UpdateCriteria(CriteriaTypes.ActivelyReachLevel, level); + UpdateCriteria(CriteriaType.ReachLevel); + UpdateCriteria(CriteriaType.ActivelyReachLevel, level); PushQuests(); @@ -6173,7 +6173,7 @@ namespace Game.Entities { SetUpdateFieldFlagValue(ref m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.ExploredZones, (int)offset), val); - UpdateCriteria(CriteriaTypes.ExploreArea, GetAreaId()); + UpdateCriteria(CriteriaType.RevealWorldMapOverlay, GetAreaId()); var areaLevels = Global.DB2Mgr.GetContentTuningData(areaEntry.ContentTuningID, m_playerData.CtrOptions.GetValue().ContentTuningConditionMask); if (areaLevels.HasValue) @@ -6845,21 +6845,21 @@ namespace Game.Entities } //Checks and preparations done, DO FLIGHT - UpdateCriteria(CriteriaTypes.FlightPathsTaken, 1); + UpdateCriteria(CriteriaType.BuyTaxi, 1); if (WorldConfig.GetBoolValue(WorldCfg.InstantTaxi)) { var lastPathNode = CliDB.TaxiNodesStorage.LookupByKey(nodes[^1]); m_taxi.ClearTaxiDestinations(); ModifyMoney(-totalcost); - UpdateCriteria(CriteriaTypes.GoldSpentForTravelling, totalcost); + UpdateCriteria(CriteriaType.MoneySpentOnTaxis, totalcost); TeleportTo(lastPathNode.ContinentID, lastPathNode.Pos.X, lastPathNode.Pos.Y, lastPathNode.Pos.Z, GetOrientation()); return false; } else { ModifyMoney(-firstcost); - UpdateCriteria(CriteriaTypes.GoldSpentForTravelling, firstcost); + UpdateCriteria(CriteriaType.MoneySpentOnTaxis, firstcost); GetSession().SendActivateTaxiReply(); GetSession().SendDoFlight(mount_display_id, sourcepath); } diff --git a/Source/Game/Entities/Unit/Unit.Combat.cs b/Source/Game/Entities/Unit/Unit.Combat.cs index 00338e83a..7af670f14 100644 --- a/Source/Game/Entities/Unit/Unit.Combat.cs +++ b/Source/Game/Entities/Unit/Unit.Combat.cs @@ -843,7 +843,7 @@ namespace Game.Entities { Player killerPlayer = attacker.GetCharmerOrOwnerPlayerOrPlayerItself(); if (killerPlayer != null) - killerPlayer.UpdateCriteria(CriteriaTypes.GetKillingBlows, 1, 0, 0, victim); + killerPlayer.UpdateCriteria(CriteriaType.DeliveredKillingBlow, 1, 0, 0, victim); } if (!skipSettingDeathState) @@ -983,9 +983,9 @@ namespace Game.Entities if (attacker != null && victim.IsPlayer()) { if (attacker.IsCreature()) - victim.ToPlayer().UpdateCriteria(CriteriaTypes.KilledByCreature, attacker.GetEntry()); + victim.ToPlayer().UpdateCriteria(CriteriaType.KilledByCreature, attacker.GetEntry()); else if (attacker.IsPlayer() && victim != attacker) - victim.ToPlayer().UpdateCriteria(CriteriaTypes.KilledByPlayer, 1, (ulong)attacker.ToPlayer().GetTeam()); + victim.ToPlayer().UpdateCriteria(CriteriaType.KilledByPlayer, 1, (ulong)attacker.ToPlayer().GetTeam()); } // Hook for OnPVPKill Event diff --git a/Source/Game/Entities/Unit/Unit.Spells.cs b/Source/Game/Entities/Unit/Unit.Spells.cs index 47de23c42..0c70eea76 100644 --- a/Source/Game/Entities/Unit/Unit.Spells.cs +++ b/Source/Game/Entities/Unit/Unit.Spells.cs @@ -1813,17 +1813,17 @@ namespace Game.Entities // use the actual gain, as the overheal shall not be counted, skip gain 0 (it ignored anyway in to criteria) if (gain != 0) - bgPlayer.UpdateCriteria(CriteriaTypes.HealingDone, (uint)gain, 0, 0, victim); + bgPlayer.UpdateCriteria(CriteriaType.HealingDone, (uint)gain, 0, 0, victim); - bgPlayer.UpdateCriteria(CriteriaTypes.HighestHealCasted, addhealth); + bgPlayer.UpdateCriteria(CriteriaType.HighestHealCast, addhealth); } } Player player = victim.ToPlayer(); if (player != null) { - player.UpdateCriteria(CriteriaTypes.TotalHealingReceived, (uint)gain); - player.UpdateCriteria(CriteriaTypes.HighestHealingReceived, addhealth); + player.UpdateCriteria(CriteriaType.TotalHealReceived, (uint)gain); + player.UpdateCriteria(CriteriaType.HighestHealReceived, addhealth); } if (gain != 0) diff --git a/Source/Game/Entities/Unit/Unit.cs b/Source/Game/Entities/Unit/Unit.cs index a98240aee..fd5b0d5d7 100644 --- a/Source/Game/Entities/Unit/Unit.cs +++ b/Source/Game/Entities/Unit/Unit.cs @@ -2402,13 +2402,13 @@ namespace Game.Entities bg.UpdatePlayerScore(killer, ScoreType.DamageDone, damage); } - killer.UpdateCriteria(CriteriaTypes.DamageDone, health > damage ? damage : health, 0, 0, victim); - killer.UpdateCriteria(CriteriaTypes.HighestHitDealt, damage); + killer.UpdateCriteria(CriteriaType.DamageDealt, health > damage ? damage : health, 0, 0, victim); + killer.UpdateCriteria(CriteriaType.HighestDamageDone, damage); } } if (victim.IsPlayer()) - victim.ToPlayer().UpdateCriteria(CriteriaTypes.HighestHitReceived, damage); + victim.ToPlayer().UpdateCriteria(CriteriaType.HighestDamageTaken, damage); if (attacker != null) damage = (uint)(damage / victim.GetHealthMultiplierForTarget(attacker)); @@ -2430,7 +2430,7 @@ namespace Game.Entities killed = true; if (victim.IsPlayer() && victim != attacker) - victim.ToPlayer().UpdateCriteria(CriteriaTypes.TotalDamageReceived, health); + victim.ToPlayer().UpdateCriteria(CriteriaType.TotalDamageTaken, health); if (damagetype != DamageEffectType.NoDamage && damagetype != DamageEffectType.Self && victim.HasAuraType(AuraType.SchoolAbsorbOverkill)) { @@ -2499,7 +2499,7 @@ namespace Game.Entities else { if (victim.IsTypeId(TypeId.Player)) - victim.ToPlayer().UpdateCriteria(CriteriaTypes.TotalDamageReceived, damage); + victim.ToPlayer().UpdateCriteria(CriteriaType.TotalDamageTaken, damage); victim.ModifyHealth(-(int)damage); diff --git a/Source/Game/Garrisons/Garrisons.cs b/Source/Game/Garrisons/Garrisons.cs index edf66aa4d..ac43524b0 100644 --- a/Source/Game/Garrisons/Garrisons.cs +++ b/Source/Game/Garrisons/Garrisons.cs @@ -397,7 +397,7 @@ namespace Game.Garrisons _owner.SendPacket(buildingRemoved); } - _owner.UpdateCriteria(CriteriaTypes.PlaceGarrisonBuilding, garrBuildingId); + _owner.UpdateCriteria(CriteriaType.PlaceGarrisonBuilding, garrBuildingId); } _owner.SendPacket(placeBuildingResult); @@ -477,7 +477,7 @@ namespace Game.Garrisons buildingActivated.GarrPlotInstanceID = garrPlotInstanceId; _owner.SendPacket(buildingActivated); - _owner.UpdateCriteria(CriteriaTypes.UpgradeGarrisonBuilding, plot.BuildingInfo.PacketInfo.Value.GarrBuildingID); + _owner.UpdateCriteria(CriteriaType.ActivateAnyGarrisonBuilding, plot.BuildingInfo.PacketInfo.Value.GarrBuildingID); } } } @@ -514,7 +514,7 @@ namespace Game.Garrisons addFollowerResult.Follower = follower.PacketInfo; _owner.SendPacket(addFollowerResult); - _owner.UpdateCriteria(CriteriaTypes.RecruitGarrisonFollower, follower.PacketInfo.DbID); + _owner.UpdateCriteria(CriteriaType.RecruitGarrisonFollower, follower.PacketInfo.DbID); } public Follower GetFollower(ulong dbId) diff --git a/Source/Game/Groups/Group.cs b/Source/Game/Groups/Group.cs index 33dca6b81..34c0b3d4c 100644 --- a/Source/Game/Groups/Group.cs +++ b/Source/Game/Groups/Group.cs @@ -1174,7 +1174,7 @@ namespace Game.Groups if (player && player.GetSession()) { - player.UpdateCriteria(CriteriaTypes.RollNeedOnLoot, roll.itemid, maxresul); + player.UpdateCriteria(CriteriaType.RollNeed, roll.itemid, maxresul); List dest = new(); LootItem item = (roll.itemSlot >= roll.GetLoot().items.Count ? roll.GetLoot().quest_items[roll.itemSlot - roll.GetLoot().items.Count] : roll.GetLoot().items[roll.itemSlot]); @@ -1237,7 +1237,7 @@ namespace Game.Groups if (player && player.GetSession() != null) { - player.UpdateCriteria(CriteriaTypes.RollGreedOnLoot, roll.itemid, maxresul); + player.UpdateCriteria(CriteriaType.RollGreed, roll.itemid, maxresul); LootItem item = roll.itemSlot >= roll.GetLoot().items.Count ? roll.GetLoot().quest_items[roll.itemSlot - roll.GetLoot().items.Count] : roll.GetLoot().items[roll.itemSlot]; @@ -1264,7 +1264,7 @@ namespace Game.Groups item.is_looted = true; roll.GetLoot().NotifyItemRemoved(roll.itemSlot); roll.GetLoot().unlootedCount--; - player.UpdateCriteria(CriteriaTypes.CastSpell, 13262); // Disenchant + player.UpdateCriteria(CriteriaType.CastSpell, 13262); // Disenchant ItemDisenchantLootRecord disenchant = roll.GetItemDisenchantLoot(player); diff --git a/Source/Game/Guilds/Guild.cs b/Source/Game/Guilds/Guild.cs index 00b4e683e..527f2a53e 100644 --- a/Source/Game/Guilds/Guild.cs +++ b/Source/Game/Guilds/Guild.cs @@ -2331,7 +2331,7 @@ namespace Game.Guilds return m_achievementSys.HasAchieved(achievementId); } - public void UpdateCriteria(CriteriaTypes type, ulong miscValue1, ulong miscValue2, ulong miscValue3, WorldObject refe, Player player) + public void UpdateCriteria(CriteriaType type, ulong miscValue1, ulong miscValue2, ulong miscValue3, WorldObject refe, Player player) { m_achievementSys.UpdateCriteria(type, miscValue1, miscValue2, miscValue3, refe, player); } diff --git a/Source/Game/Handlers/AuctionHandler.cs b/Source/Game/Handlers/AuctionHandler.cs index 06ba0372e..4dc834c2d 100644 --- a/Source/Game/Handlers/AuctionHandler.cs +++ b/Source/Game/Handlers/AuctionHandler.cs @@ -137,7 +137,7 @@ namespace Game { if (success) { - GetPlayer().UpdateCriteria(CriteriaTypes.WonAuctions, 1); + GetPlayer().UpdateCriteria(CriteriaType.AuctionsWon, 1); SendAuctionCommandResult(0, AuctionCommand.PlaceBid, AuctionResult.Ok, throttle.DelayUntilNext); } else @@ -435,7 +435,7 @@ namespace Game { if (success) { - GetPlayer().UpdateCriteria(CriteriaTypes.HighestAuctionBid, placeBid.BidAmount); + GetPlayer().UpdateCriteria(CriteriaType.HighestAuctionBid, placeBid.BidAmount); SendAuctionCommandResult(placeBid.AuctionID, AuctionCommand.PlaceBid, AuctionResult.Ok, throttle.DelayUntilNext); } else @@ -740,7 +740,7 @@ namespace Game { if (success) { - GetPlayer().UpdateCriteria(CriteriaTypes.CreateAuction, 1); + GetPlayer().UpdateCriteria(CriteriaType.ItemsPostedAtAuction, 1); SendAuctionCommandResult(auctionId, AuctionCommand.SellItem, AuctionResult.Ok, throttle.DelayUntilNext); } else @@ -886,7 +886,7 @@ namespace Game { if (success) { - GetPlayer().UpdateCriteria(CriteriaTypes.CreateAuction, 1); + GetPlayer().UpdateCriteria(CriteriaType.ItemsPostedAtAuction, 1); SendAuctionCommandResult(auctionId, AuctionCommand.SellItem, AuctionResult.Ok, throttle.DelayUntilNext); } else diff --git a/Source/Game/Handlers/BankHandler.cs b/Source/Game/Handlers/BankHandler.cs index f31fd0fc4..a04ed7395 100644 --- a/Source/Game/Handlers/BankHandler.cs +++ b/Source/Game/Handlers/BankHandler.cs @@ -140,7 +140,7 @@ namespace Game GetPlayer().SetBankBagSlotCount((byte)slot); GetPlayer().ModifyMoney(-price); - GetPlayer().UpdateCriteria(CriteriaTypes.BuyBankSlot); + GetPlayer().UpdateCriteria(CriteriaType.BankSlotsPurchased); } public void SendShowBank(ObjectGuid guid) diff --git a/Source/Game/Handlers/CharacterHandler.cs b/Source/Game/Handlers/CharacterHandler.cs index 9dd56ad63..939e2be81 100644 --- a/Source/Game/Handlers/CharacterHandler.cs +++ b/Source/Game/Handlers/CharacterHandler.cs @@ -1033,6 +1033,9 @@ namespace Game m_playerLoading.Clear(); + // Handle Login-Achievements (should be handled after loading) + _player.UpdateCriteria(CriteriaType.Login, 1); + Global.ScriptMgr.OnPlayerLogin(pCurrChar); } @@ -1357,7 +1360,7 @@ namespace Game SendPacket(new BarberShopResult(BarberShopResult.ResultEnum.Success)); _player.ModifyMoney(-cost); - _player.UpdateCriteria(CriteriaTypes.GoldSpentAtBarber, (ulong)cost); + _player.UpdateCriteria(CriteriaType.MoneySpentAtBarberShop, (ulong)cost); if (_player.GetNativeSex() != (Gender)packet.NewSex) { @@ -1368,7 +1371,7 @@ namespace Game _player.SetCustomizations(packet.Customizations); - _player.UpdateCriteria(CriteriaTypes.VisitBarberShop, 1); + _player.UpdateCriteria(CriteriaType.GotHaircut, 1); _player.SetStandState(UnitStandStateType.Stand); diff --git a/Source/Game/Handlers/ChatHandler.cs b/Source/Game/Handlers/ChatHandler.cs index f91e802db..ffa31c211 100644 --- a/Source/Game/Handlers/ChatHandler.cs +++ b/Source/Game/Handlers/ChatHandler.cs @@ -593,7 +593,7 @@ namespace Game Unit unit = Global.ObjAccessor.GetUnit(GetPlayer(), packet.Target); - GetPlayer().UpdateCriteria(CriteriaTypes.DoEmote, (uint)packet.EmoteID, 0, 0, unit); + GetPlayer().UpdateCriteria(CriteriaType.DoEmote, (uint)packet.EmoteID, 0, 0, unit); // Send scripted event call if (unit) diff --git a/Source/Game/Handlers/GroupHandler.cs b/Source/Game/Handlers/GroupHandler.cs index e2bf136f7..095588adf 100644 --- a/Source/Game/Handlers/GroupHandler.cs +++ b/Source/Game/Handlers/GroupHandler.cs @@ -394,10 +394,10 @@ namespace Game switch (packet.RollType) { case RollType.Need: - GetPlayer().UpdateCriteria(CriteriaTypes.RollNeed, 1); + GetPlayer().UpdateCriteria(CriteriaType.RollAnyNeed, 1); break; case RollType.Greed: - GetPlayer().UpdateCriteria(CriteriaTypes.RollGreed, 1); + GetPlayer().UpdateCriteria(CriteriaType.RollAnyGreed, 1); break; } } diff --git a/Source/Game/Handlers/ItemHandler.cs b/Source/Game/Handlers/ItemHandler.cs index e60d2f501..09db1d581 100644 --- a/Source/Game/Handlers/ItemHandler.cs +++ b/Source/Game/Handlers/ItemHandler.cs @@ -450,8 +450,8 @@ namespace Game return; } - _player.UpdateCriteria(CriteriaTypes.MoneyFromVendors, money); - _player.UpdateCriteria(CriteriaTypes.SoldItemToVendor, 1); + _player.UpdateCriteria(CriteriaType.MoneyEarnedFromSales, money); + _player.UpdateCriteria(CriteriaType.SellItemsToVendors, 1); if (packet.Amount < pItem.GetCount()) // need split items { @@ -1062,7 +1062,7 @@ namespace Game if (entry != null) { GetBattlePetMgr().AddPet(entry.Id, entry.CreatureID, BattlePetMgr.RollPetBreed(entry.Id), BattlePetMgr.GetDefaultPetQuality(entry.Id)); - _player.UpdateCriteria(CriteriaTypes.OwnBattlePetCount); + _player.UpdateCriteria(CriteriaType.UniquePetsOwned); } GetPlayer().DestroyItem(item.GetBagSlot(), item.GetSlot(), true); diff --git a/Source/Game/Handlers/LootHandler.cs b/Source/Game/Handlers/LootHandler.cs index 9a6c110f3..5222db8d2 100644 --- a/Source/Game/Handlers/LootHandler.cs +++ b/Source/Game/Handlers/LootHandler.cs @@ -104,9 +104,9 @@ namespace Game foreach (var resultValue in aeResult.GetByOrder()) { player.SendNewItem(resultValue.item, resultValue.count, false, false, true); - player.UpdateCriteria(CriteriaTypes.LootItem, resultValue.item.GetEntry(), resultValue.count); - player.UpdateCriteria(CriteriaTypes.LootType, resultValue.item.GetEntry(), resultValue.count, (ulong)resultValue.lootType); - player.UpdateCriteria(CriteriaTypes.LootAnyItem, resultValue.item.GetEntry(), resultValue.count); + player.UpdateCriteria(CriteriaType.LootItem, resultValue.item.GetEntry(), resultValue.count); + player.UpdateCriteria(CriteriaType.GetLootByType, resultValue.item.GetEntry(), resultValue.count, (ulong)resultValue.lootType); + player.UpdateCriteria(CriteriaType.LootAnyItem, resultValue.item.GetEntry(), resultValue.count); } } } @@ -202,7 +202,7 @@ namespace Game ulong goldMod = MathFunctions.CalculatePct(goldPerPlayer, pl.GetTotalAuraModifierByMiscValue(AuraType.ModMoneyGain, 1)); pl.ModifyMoney((long)(goldPerPlayer + goldMod)); - pl.UpdateCriteria(CriteriaTypes.LootMoney, goldPerPlayer); + pl.UpdateCriteria(CriteriaType.MoneyLootedFromCreatures, goldPerPlayer); LootMoneyNotify packet = new(); packet.Money = goldPerPlayer; @@ -216,7 +216,7 @@ namespace Game ulong goldMod = MathFunctions.CalculatePct(loot.gold, player.GetTotalAuraModifierByMiscValue(AuraType.ModMoneyGain, 1)); player.ModifyMoney((long)(loot.gold + goldMod)); - player.UpdateCriteria(CriteriaTypes.LootMoney, loot.gold); + player.UpdateCriteria(CriteriaType.MoneyLootedFromCreatures, loot.gold); LootMoneyNotify packet = new(); packet.Money = loot.gold; @@ -551,9 +551,9 @@ namespace Game foreach (var resultValue in aeResult.GetByOrder()) { target.SendNewItem(resultValue.item, resultValue.count, false, false, true); - target.UpdateCriteria(CriteriaTypes.LootItem, resultValue.item.GetEntry(), resultValue.count); - target.UpdateCriteria(CriteriaTypes.LootType, resultValue.item.GetEntry(), resultValue.count, (ulong)resultValue.lootType); - target.UpdateCriteria(CriteriaTypes.LootAnyItem, resultValue.item.GetEntry(), resultValue.count); + target.UpdateCriteria(CriteriaType.LootItem, resultValue.item.GetEntry(), resultValue.count); + target.UpdateCriteria(CriteriaType.GetLootByType, resultValue.item.GetEntry(), resultValue.count, (ulong)resultValue.lootType); + target.UpdateCriteria(CriteriaType.LootAnyItem, resultValue.item.GetEntry(), resultValue.count); } } diff --git a/Source/Game/Handlers/MailHandler.cs b/Source/Game/Handlers/MailHandler.cs index 01e7f4bad..bbbdab2f9 100644 --- a/Source/Game/Handlers/MailHandler.cs +++ b/Source/Game/Handlers/MailHandler.cs @@ -266,7 +266,7 @@ namespace Game player.SendMailResult(0, MailResponseType.Send, MailResponseResult.Ok); player.ModifyMoney(-reqmoney); - player.UpdateCriteria(CriteriaTypes.GoldSpentForMail, cost); + player.UpdateCriteria(CriteriaType.MoneySpentOnPostage, cost); bool needItemDelay = false; diff --git a/Source/Game/Handlers/QuestHandler.cs b/Source/Game/Handlers/QuestHandler.cs index cdd3b0671..6e28159f8 100644 --- a/Source/Game/Handlers/QuestHandler.cs +++ b/Source/Game/Handlers/QuestHandler.cs @@ -472,7 +472,7 @@ namespace Game GetPlayer().SetQuestSlot(packet.Entry, 0); - GetPlayer().UpdateCriteria(CriteriaTypes.QuestAbandoned, 1); + GetPlayer().UpdateCriteria(CriteriaType.AbandonAnyQuest, 1); } } diff --git a/Source/Game/Handlers/SpellHandler.cs b/Source/Game/Handlers/SpellHandler.cs index 24c3df411..67431a41f 100644 --- a/Source/Game/Handlers/SpellHandler.cs +++ b/Source/Game/Handlers/SpellHandler.cs @@ -264,7 +264,7 @@ namespace Game if (go.GetAI().GossipHello(GetPlayer())) return; - GetPlayer().UpdateCriteria(CriteriaTypes.UseGameobject, go.GetEntry()); + GetPlayer().UpdateCriteria(CriteriaType.UseGameobject, go.GetEntry()); } } diff --git a/Source/Game/Maps/Instances/InstanceScript.cs b/Source/Game/Maps/Instances/InstanceScript.cs index ad7a05011..eef0ffda0 100644 --- a/Source/Game/Maps/Instances/InstanceScript.cs +++ b/Source/Game/Maps/Instances/InstanceScript.cs @@ -605,7 +605,7 @@ namespace Game.Maps } // Update Achievement Criteria for all players in instance - public void DoUpdateCriteria(CriteriaTypes type, uint miscValue1 = 0, uint miscValue2 = 0, Unit unit = null) + public void DoUpdateCriteria(CriteriaType type, uint miscValue1 = 0, uint miscValue2 = 0, Unit unit = null) { var PlayerList = instance.GetPlayers(); diff --git a/Source/Game/Movement/Generators/FlightPathMovementGenerator.cs b/Source/Game/Movement/Generators/FlightPathMovementGenerator.cs index 6d0f6597e..752908f95 100644 --- a/Source/Game/Movement/Generators/FlightPathMovementGenerator.cs +++ b/Source/Game/Movement/Generators/FlightPathMovementGenerator.cs @@ -157,7 +157,7 @@ namespace Game.Movement player.m_taxi.NextTaxiDestination(); if (!_pointsForPathSwitch.Empty()) { - player.UpdateCriteria(CriteriaTypes.GoldSpentForTravelling, (uint)_pointsForPathSwitch[0].Cost); + player.UpdateCriteria(CriteriaType.MoneySpentOnTaxis, (uint)_pointsForPathSwitch[0].Cost); player.ModifyMoney(-_pointsForPathSwitch[0].Cost); } } diff --git a/Source/Game/Quest/QuestObjectiveCriteriaManager.cs b/Source/Game/Quest/QuestObjectiveCriteriaManager.cs index c76f2e4b5..4b4ff0932 100644 --- a/Source/Game/Quest/QuestObjectiveCriteriaManager.cs +++ b/Source/Game/Quest/QuestObjectiveCriteriaManager.cs @@ -36,7 +36,7 @@ namespace Game public void CheckAllQuestObjectiveCriteria(Player referencePlayer) { // suppress sending packets - for (CriteriaTypes i = 0; i < CriteriaTypes.TotalTypes; ++i) + for (CriteriaType i = 0; i < CriteriaType.Count; ++i) UpdateCriteria(i, 0, 0, 0, null, referencePlayer); } @@ -329,7 +329,7 @@ namespace Game return $"{_owner.GetGUID()} {_owner.GetName()}"; } - public override List GetCriteriaByType(CriteriaTypes type, uint asset) + public override List GetCriteriaByType(CriteriaType type, uint asset) { return Global.CriteriaMgr.GetQuestObjectiveCriteriaByType(type); } diff --git a/Source/Game/Reputation/ReputationManager.cs b/Source/Game/Reputation/ReputationManager.cs index beb231e88..e07928e4e 100644 --- a/Source/Game/Reputation/ReputationManager.cs +++ b/Source/Game/Reputation/ReputationManager.cs @@ -473,11 +473,11 @@ namespace Game if (factionEntry.FriendshipRepID == 0 && paragonReputation == null) UpdateRankCounters(old_rank, new_rank); - _player.UpdateCriteria(CriteriaTypes.KnownFactions, factionEntry.Id); - _player.UpdateCriteria(CriteriaTypes.GainReputation, factionEntry.Id); - _player.UpdateCriteria(CriteriaTypes.GainExaltedReputation, factionEntry.Id); - _player.UpdateCriteria(CriteriaTypes.GainReveredReputation, factionEntry.Id); - _player.UpdateCriteria(CriteriaTypes.GainHonoredReputation, 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/Source/Game/Scenarios/InstanceScenario.cs b/Source/Game/Scenarios/InstanceScenario.cs index ece302b38..5f79fb1cb 100644 --- a/Source/Game/Scenarios/InstanceScenario.cs +++ b/Source/Game/Scenarios/InstanceScenario.cs @@ -66,7 +66,7 @@ namespace Game.Scenarios switch (criteria.Entry.Type) { // Blizzard only appears to store creature kills - case CriteriaTypes.KillCreature: + case CriteriaType.KillCreature: break; default: continue; @@ -130,7 +130,7 @@ namespace Game.Scenarios switch (criteria.Entry.Type) { // Blizzard appears to only stores creatures killed progress for unknown reasons. Either technical shortcoming or intentional - case CriteriaTypes.KillCreature: + case CriteriaType.KillCreature: break; default: continue; diff --git a/Source/Game/Scenarios/Scenario.cs b/Source/Game/Scenarios/Scenario.cs index dd6342385..ec7651a66 100644 --- a/Source/Game/Scenarios/Scenario.cs +++ b/Source/Game/Scenarios/Scenario.cs @@ -341,7 +341,7 @@ namespace Game.Scenarios return criteriasProgress; } - public override List GetCriteriaByType(CriteriaTypes type, uint asset) + public override List GetCriteriaByType(CriteriaType type, uint asset) { return Global.CriteriaMgr.GetScenarioCriteriaByType(type); } diff --git a/Source/Game/Spells/Spell.cs b/Source/Game/Spells/Spell.cs index c4d511920..9aadd6f86 100644 --- a/Source/Game/Spells/Spell.cs +++ b/Source/Game/Spells/Spell.cs @@ -1897,15 +1897,15 @@ namespace Game.Spells if (player != null) { player.StartCriteriaTimer(CriteriaStartEvent.BeSpellTarget, m_spellInfo.Id); - player.UpdateCriteria(CriteriaTypes.BeSpellTarget, m_spellInfo.Id, 0, 0, m_caster); - player.UpdateCriteria(CriteriaTypes.BeSpellTarget2, m_spellInfo.Id); + player.UpdateCriteria(CriteriaType.BeSpellTarget, m_spellInfo.Id, 0, 0, m_caster); + player.UpdateCriteria(CriteriaType.GainAura, m_spellInfo.Id); } Player casterPlayer = m_caster.ToPlayer(); if (casterPlayer) { casterPlayer.StartCriteriaTimer(CriteriaStartEvent.CastSpell, m_spellInfo.Id); - casterPlayer.UpdateCriteria(CriteriaTypes.CastSpell2, m_spellInfo.Id, 0, 0, unit); + casterPlayer.UpdateCriteria(CriteriaType.LandTargetedSpellOnTarget, m_spellInfo.Id, 0, 0, unit); } if (m_caster != unit) @@ -2648,10 +2648,10 @@ namespace Game.Spells if (!Convert.ToBoolean(_triggeredCastFlags & TriggerCastFlags.IgnoreCastItem) && m_CastItem != null) { player.StartCriteriaTimer(CriteriaStartEvent.UseItem, m_CastItem.GetEntry()); - player.UpdateCriteria(CriteriaTypes.UseItem, m_CastItem.GetEntry()); + player.UpdateCriteria(CriteriaType.UseItem, m_CastItem.GetEntry()); } - player.UpdateCriteria(CriteriaTypes.CastSpell, m_spellInfo.Id); + player.UpdateCriteria(CriteriaType.CastSpell, m_spellInfo.Id); } Item targetItem = m_targets.GetItemTarget();