|  | @@ -181,8 +181,11 @@ class Dices:
 | 
											
												
													
														|  |          if self.result:
 |  |          if self.result:
 | 
											
												
													
														|  |              buffer = ""
 |  |              buffer = ""
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -            for count, sides, roll in self._rolls:
 |  | 
 | 
											
												
													
														|  | -                buffer += f"{'' if count == 1 else count}d{sides}: {roll}\n"
 |  | 
 | 
											
												
													
														|  | 
 |  | +            for count, sides, roll, is_range in self._rolls:
 | 
											
												
													
														|  | 
 |  | +                if is_range:
 | 
											
												
													
														|  | 
 |  | +                    buffer += f"{count}..{sides}: {roll}\n"
 | 
											
												
													
														|  | 
 |  | +                else:
 | 
											
												
													
														|  | 
 |  | +                    buffer += f"{'' if count == 1 else count}d{sides}: {roll}\n"
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |              for roll, result in zip(self.rolls, self.result):
 |  |              for roll, result in zip(self.rolls, self.result):
 | 
											
												
													
														|  |                  count, sides, roll = roll
 |  |                  count, sides, roll = roll
 | 
											
										
											
												
													
														|  | @@ -261,7 +264,7 @@ class Dices:
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          roll = Value(await _roll(left, right))
 |  |          roll = Value(await _roll(left, right))
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        self._rolls.append((left, right, roll))
 |  | 
 | 
											
												
													
														|  | 
 |  | +        self._rolls.append((left, right, roll, False))
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          return roll
 |  |          return roll
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -310,11 +313,26 @@ class Dices:
 | 
											
												
													
														|  |          left = await self._parse_atom()
 |  |          left = await self._parse_atom()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          if op := self._match(T_OP):
 |  |          if op := self._match(T_OP):
 | 
											
												
													
														|  | 
 |  | +            is_range = op[0] == ".."
 | 
											
												
													
														|  |              op = OPS[op[0]]
 |  |              op = OPS[op[0]]
 | 
											
												
													
														|  |              right = await self._parse_expr()
 |  |              right = await self._parse_expr()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -            if inspect.iscoroutinefunction(op):
 |  | 
 | 
											
												
													
														|  | -                left = Value(await op(int(left), int(right)))
 |  | 
 | 
											
												
													
														|  | 
 |  | +            if is_range or inspect.iscoroutinefunction(op):
 | 
											
												
													
														|  | 
 |  | +                left = int(left)
 | 
											
												
													
														|  | 
 |  | +                right = int(right)
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                try:
 | 
											
												
													
														|  | 
 |  | +                    r = await op(left, right)
 | 
											
												
													
														|  | 
 |  | +                except Exception:
 | 
											
												
													
														|  | 
 |  | +                    r = 0
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                if not isinstance(r, Value):
 | 
											
												
													
														|  | 
 |  | +                    r = Value(r)
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                if is_range:
 | 
											
												
													
														|  | 
 |  | +                    self._rolls.append((left, right, r, True))
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                left = r
 | 
											
												
													
														|  |              else:
 |  |              else:
 | 
											
												
													
														|  |                  left = left.apply(op, right)
 |  |                  left = left.apply(op, right)
 | 
											
												
													
														|  |          elif self._match(T_COLON):
 |  |          elif self._match(T_COLON):
 |