Code Monkey home page Code Monkey logo

dicemaiden's Introduction

Dice Maiden

Dice Maiden
Dice Bot for Discord
Dice Maiden is a simple to use dice rolling bot perfect for any trpg sessions!

Slash Command Update

On August 31st 2022, Discord is enforcing new permission rules for large bots. This includes Dice Maiden. These updates restricts access to certain APIs for privacy reasons. One is the message content from users which Dice Maiden has used for years. More info about these changes can be found here

In an attempt to not have to rewrite the majority of Dice Maidens codebase, I applied for privileged intents and was denied. The Discord devteam recommended moving the bot to slash commands so here we are. What this means for users:

  • !roll and other prefixes have been retired. Sorry no custom prefixes
  • rolls can be initiated now by doing /roll or /r
  • Some new (and maybe old) bugs might crop up with this shift to slash command. We are working on ironing these out
  • Bot permissions may have broken for your server. Please update the permission for the bot or re add the bot to your server

PLEASE DISABLE "Use the legacy chat input" UNDER USER SETTINGS > ACCESSIBILITY TO REDUCE POTENTIAL COMPATIBILITY ISSUES WITH THIS BOT!

USERS WILL NEED THE ROLE "USE APPLICATION COMMANDS" TO USE SLASH COMMANDS

Quick Install

Follow the link to add the bot to your discord server :

https://discord.com/api/oauth2/authorize?client_id=572301609305112596&permissions=274878000128&scope=bot%20applications.commands

This will authorize the bot for your server and you should see it in your default public channel. The bot will have permissions to read, send and manage messages.

NOTE: When you first add the bot to your server, it may show up as offline. This is normal! It can take some time for your server to be cached by the bot and Discord API backend.

Manual Install

If you wish to host this yourself, Dice Maiden requires ruby version 2.4 or higher. Please check the Gemfile for the various gems required. To manage these gems, it is recommended to utilize Bundler.You will also need to create a bot which can be done at the discord developer section.

An ENV file (.env) must be created for storing your bots secret token and current shard count. Single instance bots will have a shard count of 1. This file must exist in the bots root directory. Example ENV file:

TOKEN: foobar
SHARD: 1

A single instance of Dice Maiden does not require a sqlite database to operate. Passing the command 'lite' at runtime will tell the bot to ignore any database requirement.

Example runtime command for a single bot instance: bundle exec ruby dice_maiden.rb 0 lite

Single instance Docker install

Another way to run a single instance of Dice Maiden is via docker. Before utilizing the docker image included with Dice Maiden, please make sure both docker and docker-compose are installed. Follow the steps below:

  1. Run git clone https://github.com/Humblemonk/DiceMaiden.git in your /opt directory. This may require sudo powers.
  2. run vim /opt/DiceMaiden/.env and add the following to the env file:
TOKEN: token obtained from your discord developer application
SHARD: 1

The docker-compose file created by this repo expects to find the .env file in /opt directory. This can be changed by editing the docker-compose file.

  1. Once the env file is created, make sure you are in the DiceMaiden directory by typing cd /opt/dicemaiden. Once in the DiceMaiden directory, run docker-compose up -d to build the docker container.

NOTE: The initial run can take a bit as the container needs to download and install all the ruby gems and their dependencies. This isnt required again unless you rebuild the container.

If everything was successful, your Dice Maiden docker container should now be running! A couple helpful commands for docker newbies:

  1. View dicemaiden container logs: sudo docker logs -f dicemaiden
  2. Run commands inside dicemaiden container: sudo docker exec -it dicemaiden bash
  3. Start/stop/restart dicemaiden container: sudo docker start dicemaiden; sudo docker stop dicemaiden; sudo docker restart dicemaiden

If you wish to rebuild the container so that your bot is running the latest changes, run the following commands:

  1. Update the bot by running git pull origin master in the /opt/dicemaiden directory
  2. Rebuild the docker container sudo docker-compose up -d --build

Support

Found a bug? Have a feature request? Create an issue on github. Thanks!

You can also join the Discord Support server: https://discord.gg/AYNcxc9NeU

If you wish to support the bot and donate, you can do so via Patreon here!

How to use

Below are examples of the dice roll syntax.

/roll 2d6 + 3d10 : Roll two six-sided dice and three ten-sided dice.

/roll 3d6 + 5 : Roll three six-sided dice and add five. Other supported static modifiers are add (+), subtract (-), multiply (*), and divide (/).

/roll 3d6 e6 : Roll three six-sided dice and explode on sixes. Some game systems call this 'open ended' dice. If the number rolled is greater than or equal to the value given for this option, the die is rolled again and added to the total. If no number is given for this option, it is assumed to be the same as the number of sides on the die. Thus, '3d6 e' is the same as '3d6 e6'. The dice will only explode once with this command. Use "ie" for indefinite explosions.

/roll 3d6 ie6 : Roll three six-sided dice and explode on sixes indefinitely within reason. We will cap explosions at 100 rolls to prevent abuse.

/roll 3d10 d1 : Roll three ten-sided dice and drop one die. The lowest value will be dropped first. NOTE: These dice are dropped before any dice are kept with the following k command. Order of operations is : roll dice, drop dice, keep dice

/roll 3d10 k2 : Roll three ten-sided dice and keep two. The highest value rolled will be kept.

/roll 4d6 r2 : Roll four six-sided dice and reroll any that are equal to or less than two once. Use ir for indefinite rerolls.

/roll 4d6 ir2 : Roll four six-sided dice and reroll any that are equal to or less than two (and do the same to those dice). This is capped at 100 rerolls per die to prevent abuse.

/roll 6d10 t7 : Roll six ten-sided dice and any that are seven or higher are counted as a success. The dice in the roll are not added together for a total. Any die that meets or exceeds the target number is added to a total of successes.

/roll 5d10 t8 f1 : f# denotes a failure number that each dice must match or be beneath in order to count against successes. These work as a sort of negative success and are totaled together as described above. In the example roll, roll five ten-sided dice and each dice that is 8 or higher is a success and subtract each one. The total may be negative. If the option is given a 0 value, that is the same as not having the option at all thus a normal sum of all dice in the roll is performed instead.

/roll 4d10 kl3 : Roll four ten-sided dice and keep the lowest three dice rolled.

/roll purge 10: Purge the last 10 messages from channel. The purge value can be between 2 to 100 messages and requires the user to have the "manage messages" or "administrator" role.

/roll 4d6 ! Hello World!: Roll four six-sided dice and add comment to the roll.

/roll 6 4d6 : Roll 6 sets of four six-sided dice. A size of a set can be between 2 and 20.

/roll s 4d6 : Simplify roll output by not showing the tally.

/roll p 4d6 : Private roll results. Roll four six-sided dice and return the results privately.

/roll 4d6 ! unsort or !roll ul 4d6: Roll four six-sided dice and unsort the tally.

/roll help : Displays basic usage instructions.

/roll help alias : Displays alias instructions.

/roll help system : Displays game system instructions.

/roll donate : Get donation information on how to help support the bot!

These commands can be combined. For example:

/roll 10d6 e6 k8 +4 : Roll ten six-sided dice , explode on sixes and keep eight of the highest rolls and add four.

Game Systems Specific Rolls

Warhammer 40k Wrath and Glory example syntaxes:

/roll wng 4d6 : Roll four six-sided dice with a wrath dice.

/roll wng dn2 4d6: Roll four six-sided dice with a wrath dice and a difficulty test of 2. The bot will append the test pass/fail status to the roll result!

/roll wng 4d6 !soak or !roll wng 4d6 !exempt or !roll wng 4d6 !dmg : Roll four six-sided dice without a wrath dice.

Dark Heresy 2nd edition syntaxes:

/roll dh 4d10 : Roll four ten-sided dice for dark heresy 2nd edition. If your roll contains a natural 10, you will be prompted with a righteous fury notification!

Alias Rolls

Alias rolls are commands that are shorthand for a longer, more complex comand. They can also change what the dice faces appear as in most cases. Below is the complete list of aliases , with example rolls, currently supported by Dice Maiden. Have a game system that you want turned into an alias? Create an issue on github to get it added to this list!

4cod -> 4d10 t8 ie10 Chronicles of Darkness. The first number is the number of dice to roll (use cod8, cod9 and codr for 8-again, 9-again and rote quality rolls).

4wod8 -> 4d10 f1 ie10 t8 World of darkness 4th edition. The first number is the number of dice to roll and the second is the toughness of the check.

3df -> 3d3 t3 f1 Fudge dice from the fate RPG system. The number represents total dice rolled. This alias also outputs the dice faces as +/ /-.

3wh4+ -> 3d6 t4 Warhammer Age of Sigmar/40k style rolls. The first number is the amount of dice rolled and the second number is the target number.

dd34 -> (1d3 * 10) + 1d4 Double digit rolls. Uses the first number for the first digit and the second number for the second digit. This is sometimes used in warhammer as a "d66".

age -> 2d6 + 1d6 AGE system roll. The AGE system games use 3d6 for ability tests, with 1 of them typically being represented as a drama die, stunt die, dragon die etc. It is important that all three dice be rolled together but the drama die is able to be distinguished from the others. Example games include Fantasy Age, Dragon Age, Modern Age, Blue Rose, and The Expanse RPG.

+dX -> 2dX d1 Advantage roll where X is the dice sides value. Roll two dice and keep the highest.

-dX -> 2dX kl1 Disadvantage roll where X the dice sides value. Roll two dice and keep the lowest.

+d% -> ((2d10kl1-1) *10) + 1d10 Advantage roll for a percentile dice in a roll-under system. Rolls two tens and keeps the lowest.

-d% -> ((2d10k1-1) *10) + 1d10 Disadvantage roll for a percentile dice in a roll-under system. Rolls two tens and keeps the highest.

xd% -> d100 Simple shorthand for a d100 roll where x is the number of dice to roll.

snm5 -> 5d6 ie6 t4 Sunsails: New Millennium 4th edition. The number represents total dice rolled. Indefinitely explodes on sixes, with a target of four.

d6s4 -> 4d6 + 1d6 ie The D6 System. The number must be 1 lower than the total size of the dice pool as the wild die is automatically added for you. If you have some pips to add put them on the end (i.e. d6s4 +2 is the same as 4d6 + 1d6 ie + 2).

sr6 -> 6d6 t5 Shadowrun System. The number represents total dice rolled. Target to hit is 5 or higher.

sp4 -> 4d10 t8 ie10 Storypath system. The number represents total dice rolled. A d10 system with a target set to 8 and infinite explosion on 10.

6yz -> 6d6 t6 Year Zero system. The number represents the total dice rolled. A d6 system with a target set to 6.

dndstats -> 6 4d6 k3 DnD stat roll (4d6 drop lowest). This is supported by DnD 2nd edition, 3.5e, 5e and pathfinder 1e.

Earthdawn System:

/roll edX where X can be a value of 1 to 50. Earthdawn system has a plethora of ways to roll the dice and the table below breaks down the various options:

Roll Command Description
/roll ed1 1d4 ie - 2
/roll ed2 1d4 ie - 1
/roll ed3 1d4 ie
/roll ed4 1d6 ie
/roll ed5 1d8 ie
/roll ed6 1d10 ie
/roll ed7 1d12 ie
/roll ed8 2d6 ie
/roll ed9 1d8 ie + 1d6 ie
/roll ed10 2d8 ie
/roll ed11 1d10 ie + 1d8 ie
/roll ed12 2d10 ie
/roll ed13 1d12 ie + 1d10 ie
/roll ed14 2d12 ie
/roll ed15 1d12 ie + 2d6 ie
/roll ed16 1d12 ie + 1d8 ie + 1d6 ie
/roll ed17 1d12 ie + 2d8 ie
/roll ed18 1d12 ie + 1d10 ie + 1d8 ie
/roll ed19 1d20 ie + 2d6 ie
/roll ed20 1d20 ie + 1d8 ie + 1d6 ie
/roll ed21 1d20 ie + 1d10 ie + 1d6 ie
/roll ed22 1d20 ie + 1d10 ie + 1d8 ie
/roll ed23 1d20 ie + 2d10 ie
/roll ed24 1d20 ie + 1d12 ie + 1d10 ie
/roll ed25 1d20 ie + 1d12 ie + 1d8 ie + 1d4 ie
/roll ed26 1d20 ie + 1d12 ie + 1d8 ie + 1d6 ie
/roll ed27 1d20 ie + 1d12 ie + 2d8 ie
/roll ed28 1d20 ie + 2d10 ie + 1d8 ie
/roll ed29 1d20 ie + 1d12 ie + 1d10 ie + 1d8 ie
/roll ed30 1d20 ie + 1d12 ie + 1d10 ie + 1d8 ie
/roll ed31 1d20 ie + 1d10 ie + 2d8 ie + 1d6 ie
/roll ed32 1d20 ie + 2d10 ie + 1d8 ie + 1d6 ie
/roll ed33 1d20 ie + 2d10 ie + 2d8 ie
/roll ed34 1d20 ie + 3d10 ie + 1d8 ie
/roll ed35 1d20 ie + 1d12 ie + 2d10 ie + 1d8 ie
/roll ed36 2d20 ie + 1d10 ie + 1d8 ie + 1d4 ie
/roll ed37 2d20 ie + 1d10 ie + 1d8 ie + 1d6 ie
/roll ed38 2d20 ie + 1d10 ie + 2d8 ie
/roll ed39 2d20 ie + 2d10 ie + 1d8 ie
/roll ed40 2d20 ie + 1d12 ie + 1d10 ie + 1d8 ie
/roll ed41 2d20 ie + 1d10 ie + 1d8 ie + 2d6 ie
/roll ed42 2d20 ie + 1d10 ie + 2d8 ie + 1d6 ie
/roll ed43 2d20 ie + 2d10 ie + 1d8 ie + 1d6 ie
/roll ed44 2d20 ie + 3d10 ie + 1d8 ie
/roll ed45 2d20 ie + 3d10 ie + 1d8 ie
/roll ed46 2d20 ie + 1d12 ie + 2d10 ie + 1d8 ie
/roll ed47 2d20 ie + 2d10 ie + 2d8 ie + 1d4 ie
/roll ed48 2d20 ie + 2d10 ie + 2d8 ie + 1d6 ie
/roll ed49 2d20 ie + 2d10 ie + 3d8 ie
/roll ed50 2d20 ie + 3d10 ie + 2d8 ie

Earthdawn 4th edition

/roll ed4eX where X can be a value of 1 to 50. Earthdawn 4th edition roll steps can be found in the earthdawn_logic.rb.

dicemaiden's People

Contributors

b-rex avatar boredcity avatar chrisbloom7 avatar criticalfault avatar humblemonk avatar khneori avatar lank891 avatar mbirky avatar mechjacktv avatar moliver91 avatar nnoodle avatar oxr463 avatar scottlafetra avatar studio315b avatar thatguywhatsmadeofcheese avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dicemaiden's Issues

REQUEST: Support for Tunnels and Trolls DARO/TARO

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.

REQUEST: Rerolls

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.

Hero System 5e Damage/Effect Rolls

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.

  • !roll Normal 3d6, (6, 5, 1) would be 12 Stun (6+5+1), and 3 Body (+2, +1, +0)
  • !roll Normal 3d6, (6, 6, 6) would be 18 Stun (6+6+6), and 6 Body (+2, +2, +2)
  • !roll Normal 3d6, (1, 2, 3) would be 6 Stun (6+6+6), and 2 Body (+0, +1, +1)
    Output should be in the format of: '[name] has rolled Y Body and Z Stun'

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).

  • !roll killing 3d6 (6, 5, 1) would be 12 Body, and it would then multiply that 12, by d6-1 (eg 3, for 36 Stun).
  • !roll Killing 3d6 sm1 (6, 5, 1) would be 12 Body, and it would then multiply that 12, by d6 (eg 4, for 48 Stun).
  • !roll Killing 3d6 sm2 (6, 5, 1) would be 12 Body, and it would then multiply that 12, by d6+1 (eg 5, for 60 Stun).
    Output should be in the format of: '[name] has rolled Y Body and Z Stun'

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.

  • !roll OCV 7 would be 18 (11+7) - 3d6 (5, 4, 2 = 11) = 7
  • !roll OCV 3 would be 14 (11+3) - 3d6 (1, 2, 1 = 4) = 10
    Output should be in the format of '[name] has hit DCV 'Y'

REQUEST: Drop highest value

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!!

Support for 1D66 with two D6 dice.

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.

Keep lowest value

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.

Keeps going offline

The Dice Maiden bot often appears offline and when this occurs the commands no longer work.

REQUEST: Add an alias "!roll dx" to "!roll 1dx" if possible

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!

!roll 1d1e1

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

Request: add a !messageroll or !mroll

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

Add roll options to specify "less than or equal to" target numbers and critical roll conditions.

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

WoD Botches

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.

Wrath and Glory Exalted Icons

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 :)

Botch tag for Dicepools

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.

Warhammer (WFRP4) support

I would like to request the following features:

  • Be able to specify what numbers are critical rolls either by providing an array of numbers or, having separate modes per system that one can toggle in between. For example, in WFRP4, when rolling the same number on both dice (22, 88, etc) it is a critical roll.
  • Be able to set a target number and have it announce a success when the number is not surpassed (<=).
  • Be able to ask for success calculations (if <= target, roll/10 as integer division successes, else if >target (100-roll)/10 as integer division failures)

I would be willing to contribute and code these features myself if pull requests are accepted.

Maybe unintended behaviour in r2 (r#)

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.

Negative Permutations

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.

D20 +/- Boons & Banes - Shadow of the Demon Lord

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.

Use @ or nicknames when addressing bot caller.

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

bot disallows d2

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.

Request: Custom Board game dice

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

Different dice must be able to have a separate explode threshold

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]


REQUEST: 10s count for 2

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.

roll purge does not seem to work

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

REQUEST: Add Negative Explode

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!

The e option does not 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?

Alias Support

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

Divert Output to other Channel

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!

REQUEST: Extended rolls to a target number

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:

Screenshot 2020-04-16 at 16 28 37

REQUEST: Brave New World-style Rolls

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."

Request: Respond to edited messages

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.

Secret Rolls for GM

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

Provide an option to only ever reroll a single dice once.

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!

"0" in !unsort result

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)

Discord Dice-Maiden bot, no longer working?

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.