The system

  • The system relies on Traits and Skills (which both range from 0 to 6).

  • Players rolls a number of d6 equal to the Skill they're using.

  • Any die result equal or under the related Trait value is considered a success.

    Example: Bob attacks an orc. He has a Melee Skill of 3 and a Strength Trait of 4. He rolls 3d6 and the results are: 2 5 3. He has 2 successes.

Special cases

  • The result of a die is 1, the die counts as 2 successes.

    Example: Bob attacks again. He still rolls 3d6 and the results are: 1 3 6. He has 3 successes.

  • The character does not have the required Skill, he rolls 1d6, only a result of 1 counts as 1 success (instead of 2), other values are failures.

    Example: Bob tries to parry. Since he does not have the Parry skill, he rolls 1d6 and the result is a 2. He fails.

  • The required character Trait value is 0. No roll is possible. (possible as some creatures lack Mind / Charisma)

What would the success curve (skill over trait over difficulty) look like?

I've tried various things over excel and AnyDice but cannot comprehend the statistics or get formulas to work.


2 Answers 2


This AnyDice program might be helpful:

\ count number of rolls less than or equal to target, with bonus for each 1 rolled \
function: roll ROLL:s vs TARGET:n {
  result: (ROLL <= TARGET) + (ROLL = 1)

loop TRAIT over {1..6} {
  output [roll 1d6 vs 0] named "skill 0, trait [TRAIT]"  \ special case \
  loop SKILL over {1..6} {
    output [roll SKILLd6 vs TRAIT] named "skill [SKILL], trait [TRAIT]"

In particular, the "mean" section of the summary output shows the average number of expected successes per roll for each possible combination of trait and skill values:

AnyDice screenshot

In fact, we don't really even need AnyDice for this, since it's quite easy to calculate the average number of successes per roll with a bit of (mostly) high school level math. Specifically, let \$S\$ be the player's skill and \$T\$ be the trait value. Then:

  • For the special case of skill = 0 (where you roll one die and succeed on 1) the average number of successes is simply \$\frac16\$ regardless of the trait value.

  • For skill = 1, the expected number of successes is equal to \$\frac T6 + \frac16 = \frac{1+T}6\$, where \$T\$ is the target trait value.

    This is because you have a \$T\$ in six chance of rolling under or equal to the target, plus a one in six chance of rolling a one. Even though these are not independent events, due to the linearity of expectation we can simply add the expected numbers of successes from each of them together! (Alternatively, you can simply tabulate the number of successes for each of the six equally likely dice rolls and obtain the same result.)

  • For skill > 1, we can make use of the fact that your success counting mechanic is linear in the number of dice rolled. In other words, the distribution of the number of successes produced by any one of the rolled dice does not depend on the other dice.

    Because of this, the average number of successes for skill \$S \ge 1\$ is simply \$S\$ times the average number of successes for skill 1 with the same trait value, or \$\frac{S(1+T)}6\$.

In other words, the average number of successes for your system is directly proportional to the product of \$S\$ and \$1+T\$, with the constant of proportionality being \$\frac16\$. That is, expect for the special case of \$S = 0\$, where the average number of successes per roll is \$\frac16\$ instead of zero.

(BTW, while your system as described doesn't allow a roll if \$T = 0\$, tweaking it to let the player roll \$S\$ dice and count each 1 rolled as one success in that case would make the formulas above valid for \$T = 0\$ as well. That's also what the AnyDice code above will simulate, if you change it to allow TRAIT to be equal to 0.)

As for the exact distribution of possible success counts for each possible combination of skill and trait, the AnyDice program linked above will give you that too, if you switch from the Summary tab to the Normal tab.

One notable feature of your system that's apparent here is that, for trait = 1, the number of successes will always be even. This is because rolling a one will always give two successes, whereas in this case rolling above one will give no successes at all.

  • \$\begingroup\$ Wow, thanks for this complete answer! My ego hurt a little with the "high school level math". Great reminder! \$\endgroup\$
    – ssavinel
    Feb 16, 2021 at 22:22

Like this

loop TRAIT over {0..6} {
  loop SKILL over {0..6} {
    if TRAIT = 0 {
      output 0 named "Skill [SKILL] v Trait [TRAIT]"
    else {
      if SKILL = 0 {
        output d{1, 0:5} named "Skill [SKILL] v Trait [TRAIT]"
      else {
        output SKILLd{2, 1:(TRAIT-1), 0:(5-(TRAIT-1))} named "Skill [SKILL] v Trait [TRAIT]"

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .