How can I calculate the probability of meeting a certain Difficulty Value on 3d6 with critical success/failure modifiers?

In one Fuzion-system variant 3d6 is used to resolve skill checks. A Task is given a Difficulty Value (DV) from 10 (easy) to impossible (30 and beyond). Characters can have primary attribute levels from 1-10 and the same scale for skills.

A Skill-check is made with attribute + skill + 3d6 vs DV (you win on a tie). The tricky part is that when rolling 3d6 if you get all dice as 6, you get an additional 2d6 added to your result. Likewise if you get all dice facing 1, you must subtract 2d6 from your result.

How can I calculate probabilities for a given base attr+skill against a certain DV? For example if I have a presence of 10 and interrogation of 10 and I would try to compete against a DV of 50 so:
10+10+3d6 (and possibly +-2d6) VS 50, what would be my odds of getting at least 50?

• Welcome! You can take the tour as an introduction to the site and check the help center for further guidance. Good luck and happy gaming!
– Sdjz
Jun 14 '19 at 10:52
• Tervetuloa sivustolle. Jun 14 '19 at 14:10
• Thank you and kiitos! Jun 17 '19 at 6:28

You can crunch the numbers on this pretty easily using anydice.com. Here's an example program:

function: fuzion ATT:n SKL:n DICE:s {
if 3@DICE=6 { result: ATT + SKL + DICE + 2d6}
if 1@DICE=1 { result: ATT + SKL + DICE - 2d6}
result: ATT + SKL + DICE
}

output [fuzion 10 10 3d6] >= 50

The way this works is that we define a function called fuzion which expects to be provided your attribute, skill, and a 3d6 dice roll. The attribute/skill are just flat numbers, indicated with :n in the function definition. The roll is cast to a sequence by :s, which by default sorts the dice in the roll in descending order. Then we inspect the dice:

• If the 3rd die is a 6, that means all 3 dice were 6s, so we get to add an extra 2d6 to the result
• If the 1st die is a 1, all the dice must be 1s, so we subtract 2d6 from the result
• Otherwise, the result is just adding everything together

Then we can use that function fuzion to simulate a roll and compare it against a target number. In this case, I used your example of an attribute of 10, a skill of 10, and a target of 50. The result when running that anydice program shows you've got about a 0.01286...% chance of succeeding at that test.

You could also use the output statement without the comparison:

output [fuzion 10 10 3d6]

Which will produce graphs and tables showing the distribution of possible values you can get, instead of your odds to succeed on a specific task.

Intuitively, in this specific example we can observe that success requires you to roll the maximum on all dice - which for 5d6 is odds of 1/(6*6*6*6*6) or 1 in 7776, which comes out to a probability of 0.0001286..., or 0.01286...%, which agrees with the value anydice calculated.

You can obviously change the values in the example if you want to compare different scenarios, and it is possible to write a functionally identical program which does this simulation more efficiently, but in thise case it's such a simple calculation that it's not necessary to optimise.

• Adding that removing the >= 50 part will produce a chart of the distribution would improve you answer I think. I was going to make an answer to show the chart but basically the whole answer was the same. Jun 14 '19 at 11:40
• @linksassin fair point. It's a bit difficult for me to screenshot in my current environment but feel free to edit in a graph/chart image if you think it would be good! Jun 14 '19 at 12:12