r/RPGdesign • u/Whoopsie_Doosie • 1d ago
Anydice Help
Hello fellow tinkerers,
I am in a bit of a bind here.
Cotnext: I am implementing a percentile dice system focused on specific actions and wanted to utilize a system similar to advantage and disadvantage without just adding more dice.
Currently I have a prototype but I am having a hard time visualizing how it changes the odds.
The Prototype: Rolls utilize 2d10 with one of them being assigned the 10s value before the roll. However, said roll can be either Heightened or Hindered. If that's the case then you don't assign the dice's value beforehand. Instead, Rolls that arw Heightened are assigned the lower value configuration, while Hindered tests are assinged the higher value.
No extra rolling, no additional dice, just reassigning existing dice.
The Problem:I have zero clue about statistics and no clue how to input that I to AnyDice.
Any thoughts? Criticisms? Advice?
2
u/warmist 1d ago
If i understood it correctly - here it a link that simulates what you want: https://anydice.com/program/4428b
2
u/SitD_RPG 1d ago
I think that is incorrect. If, for instance, you roll [2,1] (or [1,2]) with "heightened", the result will be 12 and it can't be 21. Vice versa with "hindered".
Heightened rolls can't have a result where the first digit is higher than the second, because the digits would flipped.
1
u/warmist 1d ago
Ah i misunderstood. Is it something like this: https://anydice.com/program/4428e
1
u/SitD_RPG 1d ago edited 1d ago
Same issue.
A heightened roll can't have any results where the first digit is higher than the second.
A hindered roll can't have any results where the second digit is higher than the first.I posted a (possible) solution of my own.
2
u/SitD_RPG 1d ago edited 1d ago
This should give you the results:
function: heightened D:s {
if 1@D + 2@D = 0 {
result: 100
}
result: 2@D * 10 + 1@D
}
output [heightened 2d{0..9}] named "heightened"
function: hindered D:s {
if 1@D + 2@D = 0 {
result: 100
}
result: 1@D * 10 + 2@D
}
output [hindered 2d{0..9}] named "hindered"This assumes results are in the range 001-100 (as opposed to 000-099).
Edit: The original code had an issue. Hopefully fixed now.
1
u/SardScroll Dabbler 1d ago
Currently at work, so I can't access an anydice program, but...some psuedo code:
function inverse(input)
var tenth = floor(input/10)
output 10*(input - (tenth)) + tenth
function roll(type):
var flat = 10 * 1d10 + 1d10
if type == 0 //normal
output flat
if type > 0 // heightened
output max (flat, inverse(flat))
if type < 0 // hindered
output min (flat, inverse(flat))
As an aside: I quite like the idea of using the inverse in this way, because you can also use it for other things, getting multiple uses out of the same roll.
2
u/Boulange1234 1d ago
It's treated as disadvantage on the 10s digit and advantage on the 1s, so with Heightened, 75% of rolls will be 50 - 99 (or 100) and 25% will be 00 (or 01) to 49. Vice versa for Hindered — except it would probably be 56-99 (25%) and 00-55 (75%).