private void CompleteAchievement(AchievementTemplate achievement)
        {
            lock (this.m_lock)
            {
                var reward = this.Owner.Record.AchievementRewards.FirstOrDefault(entry => entry == this.Owner.Level);
                if (reward == null)
                {
                    reward = new PlayerAchievementReward(this.Owner, achievement);

                    this.Owner.Record.AchievementRewards.Add(reward);
                }
                else
                {
                    reward.AddRewardableAchievement(achievement);
                }

                this.Owner.Record.FinishedAchievements.Add((ushort)achievement.Id);
                this.Owner.Record.AchievementPoints += (int)achievement.Points;

                this.m_finishedAchievements.Add(achievement);
            }

            AchievementHandler.SendAchievementFinishedMessage(this.Owner.Client, (ushort)achievement.Id, this.Owner.Level);

            this.OnAchievementCompleted(achievement);
        }