humblemonk / dicemaiden Goto Github PK
View Code? Open in Web Editor NEWDice bot for Discord
License: Apache License 2.0
Dice bot for Discord
License: Apache License 2.0
Give the opportunity to do the not element for the target option would be nice.
For example !roll 1d20 !t25 mean will capture anything that is below 25.
Enjoying the bot so far!
Currently, the dice pool is limited to 500. It would be fantastic if there was an option to roll a dice pool where the upper bound is set as a variable/ from a command line argument. Also, the ability to skip displaying the individual rolls and just display the outcome.
for example a character needs to succeed a saving throw of 17 Dex so the player inputs
!roll (1d20 + 7) t17
the program does the roll, adds the 7, then checks if it is a success or not
In the game Shadow of the Demon Lord, you modify your d20 roll with Boons or Banes (Boons add, Banes subtract). Essentially you roll multiple Boons or Banes (never both, as they cancel each other out). Only the highest Boon or Bane is used, so it would be something like:
Roll w/2 Boons: 1d20 + (2d6 k1), example 18, (6, 1), result = 24
Roll w/2 Banes: 1d20 - (2d6 k1), example 18, (6, 1), result = 12
Except that the syntax doesn't function like that nor does it use parens.
Is this something that can be built in? It works in reverse with the Boons/Banes in front of the roll, but then you can end up with negative numbers even if d20 well exceeds Bane minus roll.
Like rolling disadvantage in D&D 5e
Im GMing a game which sometimes requires 1D66 rolls. It means that you roll 2D6 and pick the tens from first dice and single digits from the second. The roll range is 11-66.
Currently I can just roll 2d6 and see the separate results but it would be cool to this supported.
HI! It'd also be useful for games like Cyberpunk Red and The Witcher to "substract on explode"
Normal explode
In cyberpunk red if you roll a 20
you reroll and add to the previous result so 1d10 e10
Negative explode
but you also reroll on a 1
and substract the new dice from the previous result. Kind of 1d10 -e1
A full Cyberkpunk Red roll would be !roll 1d10 e10 -e1
Thanks!
In some games when rolling with disadvantage there is a need for dropping the highest single or multiple values. Can it be added to the bot to be able to drop the highest value or x number of the highest values?
Thanks!!
Hi,
roll purge x does not seem to work. When attempting to purge an amount of messages within valid range, bot does neither purge the amount of messages, nor reply that user is not authorized. I tried using a non-valid amount, the expected reply appears correctly ('Amount must be between 2-100').
There is something going on with that authorization check.
EDIT: apparently channel.prune(amount) is not defined in discordrb
A feature to consider:
The game system Tunnels and Trolls has a thing similar to exploding dice, but slightly different. It's doubles and triples of the same value rolled get added and rolled over.
If possible, would be a nice feature to add.
Hi, Love your work and I am requesting some special interpreted dice results for specific Board Games or RPGs
First, the dice roll for 2d20 RPG system used in Conan.
The standard roll is 2 to 5 d20s, easily done already.
Then there is damage dice which are 6 sided and resolved as follows
Roll Result
1 1 success
2 2 successes
3 nothing
4 nothing
5 1 success plus special
6 1 success plus special
You can roll any number of damage dice and count up total successes and specials.
Then there is the Hellboy Board Game dice.
When you roll dice for Hellboy you roll 4 six sided dice, one of these is an effect die and the other 3 dice are colored from worst to best - Yellow, Orange, Red then Black.
So you roll the Effect dice and any combination of colors that depend on the game, if you could choose which 3 colors that would be amazing.
The result of the dice pool roll is you count up how many dots total.
The results are as follows
Effect Dice
Roll Result
1 Catastrophe (ignores highest rolled dice)
2 One Dot
3 Two Dots
4 Reroll (reroll any amount of colored dice)
5 Double a dice result
6 Wildcard - choose any result usually double or two dots
Yellow Dice
Roll Result
1 nothing
2 nothing
3 nothing
4 One Dot
5 One Dot
6 One Dot
Orange Dice
Roll Result
1 nothing
2 nothing
3 One Dot
4 One Dot
5 Two Dots
6 Two Dots
Red Dice
Roll Result
1 nothing
2 One Dot
3 One Dot
4 Two Dots
5 Two Dots
6 Three Dots
Black Dice
Roll Result
1 One Dot
2 Two Dots
3 Two Dots
4 Three Dots
5 Three Dots
6 Four Dots
For example, the ability roll six sets of 4d6 d1 in a single command (for making RPG characters) it would save server hits and make for a cleaner interface
Hi!
Love the dice roller, I have been looking for an alternative to online RPG platform rollers for some time and make heavy use of Discord.
I do have a request though, do you guys think it would be possible to program the bot to divert the output via a flag in the command to a different text channel on the server?
Thanks for your consideration guys!
nonchip: !roll 20d2
[BOT]Dice Maiden: Please roll a dice value 3 or greater
probably because of this, but while "disallow < d2
" (like you said) would've made sense, "disallow <= d2
" (like you did instead) doesn't. coins are a thing, and systems want me to toss them.
It would be helpful for many games that use "Low roll is good" logic to be able to specify a target number under which the dice roll becomes a success.
Likewise, being able to provide criteria for critical successes/failures would be useful as well.
E.g. In Star Trek Adventures (from Modiphius) one adds the attribute and discipline being used in a check, and that becomes the target number for a d20 roll. If the player can apply a focus to the roll, the critical range starts at the relevant discipline rating rather than being 1. Likewise for failures - the GM can expand the critical failure roll by spending threat.
E.g. Eclipse Phase has a similar mechanic of "roll below" but in that case, there's also a mechanic for superior successes and failures. Any success on a d100 below the threshold number that is a multiple of 11 (e.g. 11, 22, 33, 44, etc) is a strong success. If the target number is above 33, then a successful roll above 33 provides a superior success. If the target number is above 66 and a successful roll is above 66, then that represents two superior successes. The inverse works for failures.
I know you're not going to be able to implement dice mechanics for every system, but the "below than" condition would be useful, as would a simple "critical success"/"critical fail" threshold.
Thanks
Some systems like Exalted have it so that 10s count for 2 successes rather than 1, rather than having them explode. Would be nice to be able to specify that a 10 counts for 2 successes, or indeed that any specific side should count for a specified number of successes rather than just 1.
I would like to request the following features:
I would be willing to contribute and code these features myself if pull requests are accepted.
I don't know whether or not this can be accomplished, or exists already, however searches, thus far, do not reveal the ability for the GM/DM to make a SECRET roll, not displayed to the players.
Ideally, it would be nice for the GM to be able to make a secret roll within DiceMaiden.
Thank you,
~ Allen
When doing the following : !roll 3d10 kl1
The command is ignored! But any value above 1 is not.
Bot has gone offline and will not respond to commands.
This may be possible with the current language, but I'm unsure how to do it. From the sourcebook, the rolls are defined as
"In Brave New World, we read the dice in a particular way that you might not be used to. In lots of games, you roll a bunch of dice and add all those results up together to get a final total. Not so in Brave New World.
'Instead, you roll all the dice and then pick the highest number you get. That's your result. You might say to yourself that, with that kind of a method of dice reading, a 6 is the highest result you can get. After all, that's the highest you can roll on a single die, right?
'It's not so. Dice rolls in Brave New World are what we call "open-ended." This means that if you roll a 6 on any of your dice--the highest you can get on a regular, six-sided die--you can pick up that die, roll it again, and add it to what you've already got. If you get another 6, you can roll the die again and keep going until you don't roll another 6.
'The best part is that if you get more than one 6 at a time, you can pick up each of those dice and reroll them all. Keep track of each of those open-ended rolls separately. When you're done rolling, the single die with the highest open-ended roll gives you your final result."
This is an issue for all RPGs, which need exploding dices, if the highest dice result is is rolled
Example of the Problem:
!roll 2d6 e6 + 1d4 e4
BOT Dice Maiden:
Incorrect format
Expected Result, e.g.:
!roll 2d6 e6 + 1d4 e4
BOT Dice Maiden:
[6,4,3] [4,1]
Hi! Great job on this bot, planning on using it for my sessions :)
My request is, given that you have the k command to keep the highest values rolled in a set of dice, how about keeping the lowest ones? This would work great for disadvantage rolling in 5e.
We use the bot for World of Darkness aka Vampire the Masquerade. IN that game 1's subtract from successes (while 10's explode). I would like to be able to add botches into the macro
ie !10d10 t6 b1 to cause any 1's to subtract from successes. Perhaps this already exists and I missed it.
In several systems there are mechanics for extended rolls to reach a certain target threshold. E.g. in WoD you have to get X number of successes over several rolls to determine how long something takes. It would be neat to have a function where Dice Maiden repeats a !roll command and provides a condensed summary of the roll results.
It currently leads to this:
As written in the quoted example, one of the rolls is always 0 when using !unsort, and the sum is wrong (try rolling: !roll 2d20 ! unsort):
[3:17 PM] Humblemonk: !roll 10d20 ! unsort
[3:17 PM] BOTDice Maiden: Humblemonk Roll: [9, 11, 10, 14, 17, 16, 1, 2, 0, 6] Result: 105 Reason: unsort
Originally posted by @Humblemonk in #14 (comment)
Option to show dice unsorted
Adding reroll as a feature to automatically reroll the last roll the user has made, example:
!roll d8 e8
[3] Result: 3
!roll reroll
[8, 3] Result: 11 (reroll of: d8 e8)
This way the !roll reroll command could be kept in the clipboard for ease of use if different dice rolls are made each time. Even simpler would be !reroll if that's possible.
My server makes heavy use of nicknames, so when a player calls the bot to roll for them, the message usually doesn't match what others see to be the user's name. I request that the bot @mentions the user so the right name is used or uses their nickname if they have one if you're worried about pinging people too much.
example:
<nickname>
!roll 2d6
Dice Maiden
<username> Roll: [4, 4] Result: 8
Some gaming systems, for example Warhammer 40K, have rules that only allow a single die to be rerolled once.
When using the r
option, Dice Maiden will happily reroll the dice until the value is greater than the reroll threshold. This breaks the rule in the gaming systems that only allow one reroll per dice.
I was thinking maybe an option such as r1
could be added to only reroll a single die once and thereby keep within the rules for those systems.
I think the same could be done with the e
option as well. Eg, the DAKKA! DAKKA! DAKKA! rule in WH40K says that any rolls of a 6 generate an extra shot, but 6s on those generated shots cannot themselves generate another shot.
I hope this makes sense!
Eventually it would be nice to have DM say something if you get a Botch in WoD. (no successes, and at least one "1") Putting this here so I don't forget about it after I take care of more pressing things.
Using !roll 2d4 r3
will result in dice that come up 1, 2 or 3 being rerolled infinitely. I think a most useful usecase would be to reroll them once (e.g. for Great Weapon Fighting style in 5e).
Is what is currently happening any different from just rolling a dice with less sides and then adding a modifier? What I mean is that, currently:
!roll 2d6 r2 == !roll 2d4 +4
This is similar to #24 but different in that I actually claim the current behaviour to be wrong.
I think it would be handy to allow users to use !mroll or !messageroll to be able to provide a message in front of their roll like:
!mroll <Leroy is rolling to seduce the Orc> 1d20
Completely broke the bot. I understand that this makes an infinite loop. I did it for the meme. But even after kicking and re adding dice maiden to my server we can't use any dice maiden features
She is no longer rolling. We have tried kicking her and bringing her back. Reloading Discord. And even multiple people rolling her !roll help. Nothing is happening. Any advice? She was the perfect bot for our online post stories.
For savage worlds mechanic need wild dice: always rolling d6 both characteristic dice. Both dice can explode. Choose highest. Something like: ((d20 e20) + (d6 e6)) k1
Please, include an option for rolls with Fudge/Fate Dice
The Dice Maiden bot often appears offline and when this occurs the commands no longer work.
The 'e' extension to !roll does not seem to do anything, I am assuming by explode you meant ignore. If I am wrong about that, can you describe what it is for in a different fashion?
Dicemaiden doesn't react to !Roll
Not quite sure why this wouldn't be legal according to the syntax guide:
!roll 1d100 +50 t75
gives "Incorrect format"
Basically, I'd love it if you could use the dice bot to perform functions like:
!roll 9-2d6
Currently, starting with a number means the dice bot does not give a result.
Would you be able to add HS5e support?
It would include the following:
Normal Damage: (Suggested Syntax "!roll normal Xd6")
Roll X Number of d6. The sum value is "Stun", "Body" is calculated on each dice : if it has a value of 1, +0 Body, a value of 2 - 5 is +1 Body, a value of 6 is +2 Body.
Killing Damage: (Suggested Syntax "!roll killing Xd6 (smY)")
Roll X Number of d6. The sum value is "Body", "Stun" is calculated by taking the Body Rolled and multiplying it by d6-1 (to a minimum of 1) (with a potential to manually add 1 or 2 Stun Multiplier by command).
To Hit Roll: (suggested Syntax: '!roll OCV X')
This command would roll 3d6 and perform the following calculation: (11+ provided OCV Value 'X') - 3d6 roll.
This is probably something I'll work on next weekend, but I wanted to make an issue for it for tracking purposes. I think simply having an alias/regex map which was passed over the non-comment section of the input before the roll was made would be nice for more complex systems. For example:
Fate: #dF
-> #d6 t5 f2
World of Darkness: #WoD?
-> #d10 t? f1
I'd love for the bot to be able to !roll # - XdY, e.g !roll 25 - 3d6, to give me a result of 25 minus the result of three six sided dice. I know there's not a lot of systems that do that, but I'm using one of those few now!
Right now I can approximate it with !roll 3d6 - 25 and then invert it, but it doesn't feel as intuitive.
Would it be possible to allow a second number to count as 2+ successes? for example, in wrath and glory, you roll Xd6, any over 4 gives you 1 success, any 6s give you 2 successes. Maybe add it in as something like (x)p6, where x is how many successes it gives on what number (or higher). If it's possible, you'd be an even bigger hero than you already are for making this. Thanks :)
Hey! This is an amazing bot you made! Is it possible to add an alias command that when you type "!roll dx" make the bot execute "!roll 1dx" ? (e.g. "!roll d6" . "!roll 1d6" will still work though). If you think that this is gonna cause trouble or slowdown ignore this request. This is more to improve ease of use.
Thanks!
Current behaviour is that when a dice roll (valid or otherwise) is edited, DM does not respond.
It would be nice if when an invalid expression is edited to be valid, DM could recognize the edit, and change its Incorrect format
report to be the result of the now corrected line.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.