/// <summary> /// Adds a new achievement to the list, when achievement is earned. /// </summary> /// <param name="achievementEntry"></param> public void EarnAchievement(AchievementEntry achievement) { AddAchievement(AchievementRecord.CreateNewAchievementRecord(m_owner, achievement.ID)); CheckPossibleAchievementUpdates(AchievementCriteriaType.CompleteAchievement, (uint)achievement.ID, 1); RemoveAchievementProgress(achievement); foreach (var achievementReward in achievement.Rewards) achievementReward.GiveReward(Owner); if (m_owner.IsInGuild) m_owner.Guild.Broadcast(AchievementHandler.CreateAchievementEarnedToGuild(achievement.ID, m_owner)); if (achievement.IsRealmFirstType()) AchievementHandler.SendServerFirstAchievement(achievement.ID, m_owner); AchievementHandler.SendAchievementEarned(achievement.ID, m_owner); }