public RollResult(IRollTarget target, SingleRollResult initialRollResult, SingleRollResult rerollResult, int modifierValue, int final) { Guard.Against.Null(target, nameof(target)); Guard.Against.Null(initialRollResult, nameof(initialRollResult)); InitialRollResult = initialRollResult; Target = target; RerollResult = rerollResult; ModifierValue = modifierValue; Final = final; IsSuccessful = target.GetSuccessfulSides(initialRollResult.Die.TotalSides).Contains(final); }
public RollResult Simulate() { var initial = _die.Simulate(_numberGenerator); SingleRollResult rerollResult = null; var final = initial; if (_rerollOptions.RequiresReroll(initial, _target)) { rerollResult = _die.Simulate(_numberGenerator); final = rerollResult; } var modifiedValue = _modifier.ModifyRoll(final.SideRolled); return(new RollResult(_target, initial, rerollResult, _modifier.ModifierValue, modifiedValue)); }
public bool RequiresReroll(SingleRollResult initial, IRollTarget target) { return(initial.SideRolled == 1); }
public bool RequiresReroll(SingleRollResult initial, IRollTarget target) { return(!target.GetSuccessfulSides(initial.Die.TotalSides).Contains(initial.SideRolled)); }
public bool RequiresReroll(SingleRollResult initial, IRollTarget target) { return(false); }