Rolisteam/DiceParser

Problems with rerolling

ACleverDisguise opened this issue · 3 comments

The r/R modifiers don't seem to work in any way that I want them to.

What I'm trying to accomplish is "roll 3d6, rerolling on any sum less than 10".

Here's what I've tried.

!3d6r[<10]
!3d6r[<10]
!(3d6)r[<10]
!3d6R[<10]
!3d6R[<10]
!(3d6)R[<10]

!3d6r[?<10]
!3d6r[?<10]
!(3d6)r[?<10]
!3d6R[?<10]
!3d6R[?<10]
!(3d6)R[?<10]

!3d6r[:<10]
!3d6r[:<10]
!(3d6)r[:<10]
!3d6R[:<10]
!3d6R[:<10]
!(3d6)R[:<10]

In all cases I got nothing like what I wanted. Either I got no result, timeout, or results that were clearly below 10 after several repeat rolls.

What's the trick? Or is this a bug in the r/R validator?

First of all, the right command should be something like that: !3d6r[:<10]
Yes, it does not do what you want but the other syntaxes are wrong.

!3d6r[<10] is always true
!3d6r[?<10] is always true

I'm investigating the issue about the right syntax but I thing the R/r/a/e operator does not manage validator's compare method, they always do it as "on each dice".

Well, when I tried the syntax that looked right and it failed, I also tried every other variant (because the docs aren't written for comprehension). I even tried * and . as operators, knowing that they're not going to work either, just to be complete. Grouping. Lower-case or upper-case R. *, ., :, or nothing. It all failed.

So how would I go about making a "3d6, reroll if under 10" using the DiceParser?

As I said, I'm investigating on the issue about the right syntax. And it is was I thought Reroll does not manage compare methods for validator. I'm trying to add its support but it is an important change.

As a work around, you can use the if operator:

!3d6;$1i:[<10]{3d6};"Final score: $2"

If you want to check each result:

!3d6;$1i:[<10]{3d6};"Results: $1 - $2"