From 6b79c73f88385faf66d3886e12c44ba0f68d9e7e Mon Sep 17 00:00:00 2001 From: Luccas Clezar Date: Fri, 7 Oct 2022 20:26:38 -0300 Subject: [PATCH 1/2] Fix -H and -L rolls - More than two dices didn't work - L and H were inverted --- lib/src/d20.dart | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/src/d20.dart b/lib/src/d20.dart index eadb4b8..b90724c 100644 --- a/lib/src/d20.dart +++ b/lib/src/d20.dart @@ -7,6 +7,7 @@ /// ``` import 'dart:math'; +import 'package:collection/collection.dart'; import 'package:math_expressions/math_expressions.dart'; import 'roll_result.dart'; import 'roll_statistics.dart'; @@ -45,12 +46,14 @@ class D20 { .toList(); final lowestHighest = match[3]; - var sum = results.fold(0, (int sum, int roll) => sum + roll); + int finalResult; if (lowestHighest == '-l') { - sum -= results.fold(faces, min); + finalResult = results.min; } else if (lowestHighest == '-h') { - sum -= results.fold(0, max); + finalResult = results.max; + } else { + finalResult = results.fold(0, (int sum, int roll) => sum + roll); } return RollResult( @@ -58,7 +61,7 @@ class D20 { faces: faces, numberOfRolls: numberOfRolls, results: results, - finalResult: sum, + finalResult: finalResult, ); } From 1009089f29ae9e4870a19ddda23746c84f256117 Mon Sep 17 00:00:00 2001 From: Luccas Clezar Date: Tue, 1 Nov 2022 14:50:41 -0300 Subject: [PATCH 2/2] Change from round to ceil on roll results --- lib/src/d20.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/src/d20.dart b/lib/src/d20.dart index b90724c..a33e25a 100644 --- a/lib/src/d20.dart +++ b/lib/src/d20.dart @@ -5,12 +5,12 @@ /// ``` /// import 'package:d20/d20.dart'; /// ``` - import 'dart:math'; + import 'package:collection/collection.dart'; import 'package:math_expressions/math_expressions.dart'; -import 'roll_result.dart'; -import 'roll_statistics.dart'; + +import '../d20.dart'; final RegExp _singleDiceRegExp = RegExp(r'(\d+)?d(\d+)(-[l|h])?'); @@ -125,6 +125,6 @@ class D20 { // ignore: avoid_as .evaluate(EvaluationType.REAL, _context) as double; - return exactResult.round(); + return exactResult.ceil(); } }