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); } } }
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; }
public decimal CalculateProbability(Die die, IRollTarget target, IRollModifier modifier) { return(die.CalculateProbability(1) * die.CalculateProbability(target.GetModifiedSuccessfulSides(die.TotalSides, modifier).Count())); }
public IBuildableRoll WithModifier(int modifier) { RollModifier = new FlatRollModifier(modifier); return(this); }
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())); }
public decimal CalculateProbability(Die die, IRollTarget target, IRollModifier modifier) { return(0); }