示例#1
0
        public int Attack(Entity target, IOffensive offense)
        {
            var calculatedDamages = CalculateDamages(target, offense);

            target.TakeDamages(calculatedDamages);
            return(calculatedDamages);
        }
示例#2
0
        private int CharacteristicDamages(IOffensive offensive, int damages)
        {
            double result = damages;

            switch (offensive.Effect)
            {
            case EffectType.Blunt:
                result = result + Strength * 1.7 + Dexterity * 1.2;
                break;

            case EffectType.Sharp:
                result = result + Strength * 1.3 + Dexterity * 1.3 + Intelligence * 1.1;
                break;

            case EffectType.Thrust:
                result = result + Strength * 1.1 + Dexterity * 1.3 + Intelligence * 1.3;
                break;

            case EffectType.Fire:
                result = result + Strength * 1.2 + Intelligence * 1.7;
                break;

            case EffectType.Ice:
                result = result + Strength * 1.1 + Dexterity * 1.1 + Intelligence * 1.5;
                break;

            case EffectType.Wind:
                result = result + Dexterity * 1.2 + Intelligence * 1.7;
                break;

            default:
                throw new ArgumentOutOfRangeException($"Unknown {offensive.Effect}");
            }
            return((int)result);
        }
示例#3
0
        private int CalculateDamages(Entity target, IOffensive offensive)
        {
            var damages = offensive.RandomDamages();

            damages += MultiplierDamages(target, offensive, damages);
            damages += CharacteristicDamages(offensive, damages);
            return(damages);
        }
示例#4
0
 public void Equip(IOffensive offensive)
 {
     _offensives.Add(offensive);
 }
示例#5
0
        private int MultiplierDamages(Entity target, IOffensive offense, int damages)
        {
            var effectMultiplier = target.Multipliers.Where(m => m.EffectType == offense.Effect).Select(m => m.Value).Sum();

            return(damages * effectMultiplier / 100);
        }