Пример #1
0
        public IReadOnlyList <Behavior> ConcretizeDamage(IStat stat, IDamageSpecification damageSpecification)
        {
            // Behaviors are only for damage, not other damage related stats
            if (!Enums.GetValues <DamageType>().Any(t => _statFactory.Damage(stat.Entity, t).Equals(stat)))
            {
                return(new Behavior[0]);
            }

            if (damageSpecification.DamageSource == DamageSource.OverTime)
            {
                // Skill DoT
                return(new Behavior[0]);
            }
            else if (damageSpecification.IsSkillDamage())
            {
                // Skill Hit
                return(new[]
                {
                    DamageEffectivenessBaseBehavior(stat, damageSpecification)
                });
            }
            else
            {
                // Ailment
                return(new[]
                {
                    AilmentDamageUncappedSubtotalBehavior(stat, damageSpecification),
                    AilmentDamageBaseBehavior(stat, damageSpecification),
                    AilmentDamageIncreaseMoreBehavior(stat, damageSpecification)
                });
            }
        }
Пример #2
0
 public IReadOnlyList <Behavior> ConcretizeDamage(IStat stat, IDamageSpecification damageSpecification)
 {
     if (damageSpecification.IsSkillDamage())
     {
         return(new Behavior[0]);
     }
     if (!Enums.GetValues <DamageType>().Any(t => _statFactory.Damage(stat.Entity, t).Equals(stat)))
     {
         return(new Behavior[0]);
     }
     return(new[]
     {
         AilmentDamageUncappedSubtotalBehavior(stat, damageSpecification),
         AilmentDamageBaseBehavior(stat, damageSpecification),
         AilmentDamageIncreaseMoreBehavior(stat, damageSpecification)
     });
 }