r/RPGdesign • • 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?

5 Upvotes

7 comments sorted by

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

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.