示例#1
0
        public void Update(SkillResult skillResult)
        {
            if (skillResult.SourcePlayer != null)
            {
                var playerStats = GetOrCreate(skillResult.SourcePlayer);
                var statsChange = StatsChange(skillResult);
                playerStats.Dealt.Add(statsChange);
                TotalDealt.Add(statsChange);
            }

            if (skillResult.TargetPlayer != null)
            {
                var playerStats = GetOrCreate(skillResult.TargetPlayer);
                var statsChange = StatsChange(skillResult);
                playerStats.Received.Add(statsChange);
                TotalReceived.Add(statsChange);
            }

            if (skillResult.SourcePlayer != null && (skillResult.Damage > 0) && (skillResult.Source.Id != skillResult.Target.Id))
            {
                LastAttack = skillResult.Time;

                if (FirstAttack == null)
                {
                    FirstAttack = skillResult.Time;
                }
            }
        }
示例#2
0
        public void Update(EachSkillResultServerMessage message)
        {
            var skillResult = new SkillResult(message, _entityTracker, _playerTracker, _skillDatabase);

            if (skillResult.SourcePlayer != null)
            {
                var playerStats = GetOrCreate(skillResult.SourcePlayer);
                var statsChange = StatsChange(skillResult);
                playerStats.Dealt.Add(statsChange);
                TotalDealt.Add(statsChange);
            }

            if (skillResult.TargetPlayer != null)
            {
                var playerStats = GetOrCreate(skillResult.TargetPlayer);
                var statsChange = StatsChange(skillResult);
                playerStats.Received.Add(statsChange);
                TotalReceived.Add(statsChange);
            }

            if (skillResult.SourcePlayer != null && (skillResult.Damage > 0) && (skillResult.Source.Id != skillResult.Target.Id))
            {
                LastAttack = skillResult.Time;

                if (FirstAttack == null)
                {
                    FirstAttack = skillResult.Time;
                }
            }
        }
示例#3
0
        public void Update(SkillResult skillResult)
        {
            if (IsArchived)
            {
                return;            //prevent archived trackers from accidentally recording stats
            }
            if (skillResult.SourcePlayer != null)
            {
                var playerStats = GetOrCreate(skillResult);
                if (playerStats == null)
                {
                    return;                      //if this is null, that means we should ignore it
                }
                var statsChange = StatsChange(skillResult);
                if (statsChange == null)
                {
                    Logger.Warn($"Generated null SkillStats from {skillResult}");
                }

                playerStats.LogSkillUsage(skillResult);

                TotalDealt.Add(statsChange);
                playerStats.Dealt.Add(statsChange);
            }

            if (IsValidAttack(skillResult))
            {
                if (FirstAttack == null)
                {
                    FirstAttack = skillResult.Time;
                }

                LastAttack = skillResult.Time;
            }

            foreach (var playerStat in StatsByUser)
            {   //force update of calculated dps metrics
                playerStat.Dealt.UpdateStats();
            }
        }