Humblemonk / DiceMaiden

Dice bot for Discord
Apache License 2.0
121 stars 56 forks source link

Support for "Open Legend RPG" Advantage and Disadvantage rolls #149

Open catNap42 opened 3 years ago

catNap42 commented 3 years ago

Hello :)

Awesome bot :)

I've been trying for a little while to get it to work with Open Legend RPG's rules... Specifically the advantage and disadvantage system. (For the most detail, see: https://openlegendrpg.com/core-rules/02-actions-attributes or just read on as I try to describe below)

In this game, you roll a 1d20 and then a set of other dice such as 2d6.

!roll 1d20 +2d6

Each set is handled separately and explodes infinitely on its max roll.

!roll 1d20ie20 + 2d6ie6

All good so far. But Then there is the advantage and disadvantage system.

For advantage, you roll 1 or more extra dice on the second group, drop a set number of the lowest dice, and then explode if necessary the remaining dice.

For disadvantage, you also roll one or more extra dice in the second group, but then drop a set number of the highest dice, and then explode the remaining dice if necessary.

!roll 1d20ie20 + (3d6ie6 d1)

That is an attempt to roll the roll from above with advantage one, one extra six sided die, and then drop the lowest number of the six sided die. But it doesn’t quite follow the rules I’d like it to, and I can’t figure out how to get it to work. It will drop the lowest number of any roll in group two, even one of the results after the exploded dice.

!roll 1d6 + (3d20ie10 d1) [5][12, 4, 3], [2] Result: 24 It kept the three, when what the rules of this game call for is to drop the three and then keep the two.

Disadvantage is even harder to get to seem to work, I’d need it to roll some dice, drop a set number of the highest dice, and then explode as necessary, never dropping dice again or removing any of the exploded values even if they are among the new highest.

So, is there a way, or can there be made a way, to roll a set number of dice, drop a set number from that set (being able to pick either high or low) and then explode the remainder without the new values being assessed by the drop?

So like roll 4d6 -> drop high 2 dice (or low 2 dice at my choosing) -> explode remaining dice after drop if necessary, exploded dice are exempt from the drop consideration -> tally the group of original un-dropped dice plus the results of the explosion -> then add that group to another group

As best as I can write it out with parenthesis:

!roll (1d20 ie20) + ( (3d6 d1) ie6 )

But at present, that doesn’t explode the 6 !roll 1d20ie20 + (3d6 d1)ie6 [20], [8][6, 4, 3] Result: 38 It dropped the 3 but didn’t explode the 6

Whereas: !roll 1d6 + (3d20ie10 d1) [4][12, 4, 3], [2] Result: 23 This explodes the 12 but then drops the 2 and not the 3.

I’m not clear on the difference between dropping and keeping?

!roll 1d20ie20 + (3d6ie6 k2) [5][6, 6, 1], [5, 1] Result: 17 Is not what I am looking for, it exploded the two sixes but then dropped both the two ones and the 5. The result I want is 23. It should keep the rolled 1d20 for 5, then both of the sixes for 12, dropping the one, then explode the sixes and keep the results for 5 and 1. 5+6+6+5+1=23

And I’m really not sure what to do with disadvantage… It needs to do the same but drop the highest dice. But “DH” (drop high) isn’t a thing, And “KL” (keep low) has the same issues with not having a way I can see to separate the values before and after the initial explosion.

Is this already possible? If not, then I guess this is a feature request. :P

But no worries if it doesn’t get added. It’s already an awesome bot and I can always do it by hand if this feature is too much to ask.

!roll 1d20 !roll 3d6 (or something like it) Remove one or more manually Explode if necessary manually And then add all relevant values manually

That’s not a huge deal, and it might be fun to see the numbers happen more slowly rather than jumping to the result. :)

But if it can be added as an option, that would be neat. :)

Thanks again either way, :) This is already an awesome bot, and its cool that you didn’t lock it behind a pay wall.