Example #1
0
        public DiceRoll GetBonus(GetBonusDto bonusDto)
        {
            var diceRoll   = new DiceRoll();
            var totalBonus = FixedValue.GetValueOrDefault();

            if (AbilityModifyer != null)
            {
                totalBonus += bonusDto.Abilities.First(x => x.Ability.ID == AbilityModifyer.ID).GetCurrentModifier(bonusDto);
            }
            else if (ClassProgression != null && ClassProgression.Any())
            {
                var progressions = ClassProgression.Where(x => x.AtLevel <= bonusDto.Classes.FirstOrDefault(y => y.Class.ID == x.ClassProgression.ID)?.Level).OrderByDescending(x => x.AtLevel).FirstOrDefault();
                if (progressions != null)
                {
                    diceRoll += progressions.Bonues;
                }
            }
            diceRoll.AddFixedAmount(totalBonus);
            if (Dice != null)
            {
                diceRoll.AddDice(Dice.GetDice());
            }

            return(diceRoll);
        }