diff --git a/Source/Framework/Constants/AchievementConst.cs b/Source/Framework/Constants/AchievementConst.cs index 80b8f3ae5..57579a3dd 100644 --- a/Source/Framework/Constants/AchievementConst.cs +++ b/Source/Framework/Constants/AchievementConst.cs @@ -581,7 +581,7 @@ namespace Framework.Constants 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}" + PlayerTriggerGameEvent = 73, // 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 @@ -698,7 +698,7 @@ namespace Framework.Constants 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 + EarnArtifactXP = 190, // Earn Artifact XP AnyArtifactPowerRankPurchased = 191, /*NYI*/ // Artifact Power Ranks Purchased LearnTransmog = 192, /*NYI*/ // Learn Transmog "{ItemModifiedAppearance}" LearnAnyTransmog = 193, /*NYI*/ // Learn Any Transmog diff --git a/Source/Game/Achievements/CriteriaHandler.cs b/Source/Game/Achievements/CriteriaHandler.cs index 20fa86ebf..4a5c278ad 100644 --- a/Source/Game/Achievements/CriteriaHandler.cs +++ b/Source/Game/Achievements/CriteriaHandler.cs @@ -156,6 +156,7 @@ namespace Game.Achievements case CriteriaType.HealingDone: case CriteriaType.EarnArtifactXPForAzeriteItem: case CriteriaType.GainLevels: + case CriteriaType.EarnArtifactXP: SetCriteriaProgress(criteria, miscValue1, referencePlayer, ProgressType.Accumulate); break; case CriteriaType.KillCreature: @@ -419,7 +420,6 @@ namespace Game.Achievements case CriteriaType.EnterAreaTriggerWithActionSet: case CriteriaType.StartGarrisonMission: case CriteriaType.QualityUpgradedForGarrisonFollower: - case CriteriaType.EarnArtifactXP: case CriteriaType.AnyArtifactPowerRankPurchased: case CriteriaType.CompleteResearchGarrisonTalent: case CriteriaType.RecruitAnyGarrisonTroop: @@ -803,6 +803,7 @@ namespace Game.Achievements case CriteriaType.BuyItemsFromVendors: case CriteriaType.SellItemsToVendors: case CriteriaType.GainLevels: + case CriteriaType.EarnArtifactXP: return progress.Counter >= requiredAmount; case CriteriaType.EarnAchievement: case CriteriaType.CompleteQuest: diff --git a/Source/Game/Entities/Item/Item.cs b/Source/Game/Entities/Item/Item.cs index 65a25628a..a9febaea1 100644 --- a/Source/Game/Entities/Item/Item.cs +++ b/Source/Game/Entities/Item/Item.cs @@ -2304,6 +2304,7 @@ namespace Game.Entities } public void SetArtifactXP(ulong xp) { SetUpdateFieldValue(m_values.ModifyValue(m_itemData).ModifyValue(m_itemData.ArtifactXP), xp); } + public void GiveArtifactXp(ulong amount, Item sourceItem, ArtifactCategory artifactCategoryId) { Player owner = GetOwner(); @@ -2336,6 +2337,8 @@ namespace Game.Entities owner.SendPacket(artifactXpGain); SetState(ItemUpdateState.Changed, owner); + + owner.UpdateCriteria(CriteriaType.EarnArtifactXP, amount); } public ItemContext GetContext() { return (ItemContext)(int)m_itemData.Context; }