Respondido por Jasper Flick, o criador do AnyDice: link
Aqui está o código
function: check A:n vs B:n {
if A < B - 3 { result: -2 } \ CF \
if A < B { result: -1 } \ F \
if A > B + 3 { result: 2 } \ CS \
if A > B { result: 1 } \ S \
result: 0 \ DR \
}
SD: d{-1, 0:2, 1:2, 2}
loop A over {1..15} {
A_POOL: AdSD
loop B over {1..15} {
output [check A_POOL vs BdSD] named "[A] vs [B]"
}
}
Espero poder deixar isso aqui, há alguns truques que podem ser úteis para outros usuários (como o dado com probabilidades diferentes).