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) }); } }
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) }); }