public IEnumerable <int> GetModifiedSuccessfulSides(int dieSides, IRollModifier modifier)
        {
            var modifiedTarget = modifier.GetModifiedTarget(Target);

            for (int i = 1; i <= dieSides; i++)
            {
                if (i >= modifiedTarget)
                {
                    yield return(i);
                }
            }
        }
Esempio n. 2
0
        internal Roll(Die die, IRollTarget target, IRerollBehaviour rerollOptions, IRollModifier modifier, INumberGenerator numberGenerator)
        {
            Guard.Against.Null(die, nameof(die));
            Guard.Against.Null(rerollOptions, nameof(rerollOptions));
            Guard.Against.Null(rerollOptions, nameof(rerollOptions));
            Guard.Against.Null(modifier, nameof(modifier));
            Guard.Against.Null(numberGenerator, nameof(numberGenerator));

            _die             = die;
            _target          = target;
            _rerollOptions   = rerollOptions;
            _modifier        = modifier;
            _numberGenerator = numberGenerator;
        }
Esempio n. 3
0
 public decimal CalculateProbability(Die die, IRollTarget target, IRollModifier modifier)
 {
     return(die.CalculateProbability(1) * die.CalculateProbability(target.GetModifiedSuccessfulSides(die.TotalSides, modifier).Count()));
 }
Esempio n. 4
0
 public IBuildableRoll WithModifier(int modifier)
 {
     RollModifier = new FlatRollModifier(modifier);
     return(this);
 }
Esempio n. 5
0
        public decimal CalculateProbability(Die die, IRollTarget target, IRollModifier modifier)
        {
            var failures = die.TotalSides - target.GetSuccessfulSides(die.TotalSides).Count();

            return(die.CalculateProbability(failures) * die.CalculateProbability(target.GetModifiedSuccessfulSides(die.TotalSides, modifier).Count()));
        }
Esempio n. 6
0
 public decimal CalculateProbability(Die die, IRollTarget target, IRollModifier modifier)
 {
     return(0);
 }