Skip to content

Opposed Roll

POST
/api/creative/mechanics/analysis/opposed

Analyze an opposed roll between two dice pools (weight-based).

OpposedRollRequest

Request for opposed roll analysis.

object
attackerPool
required
Attackerpool
integer
>= 1 <= 50
defenderPool
required
Defenderpool
integer
>= 1 <= 50
attackerBonus
Attackerbonus
number
0
defenderBonus
Defenderbonus
number
0
outcomeMapping
required
DiceOutcomeMapping

Defines how individual die faces map to categorical outcomes.

For a d10 pool system: faces 1-10 map to bands like Critical Success, Advantage, Neutral, Consequence, Critical Failure — each with a weight that determines net outcome when advantages and consequences cancel.

object
dieFaces
required
Diefaces
integer
>= 2 <= 100
bands
required
Bands
Array<object>
>= 1 items
DiceOutcomeBand

A range of die face values with a categorical meaning and weight.

Example: on a d10, faces 8-9 are “Advantage” with weight +1.

object
name
required
Name
string
>= 1 characters <= 50 characters
minValue
required
Minvalue
integer
>= 1
maxValue
required
Maxvalue
integer
>= 1
weight
Weight
integer
0
color
Color
string
default: #6b7280

Successful Response

OpposedResult

Result of comparing two dice pools head-to-head.

object
attackerPool
required
Attackerpool
integer
defenderPool
required
Defenderpool
integer
attackerWinProb
required
Attackerwinprob
number
defenderWinProb
required
Defenderwinprob
number
tieProb
required
Tieprob
number
expectedMargin
required
Expectedmargin
number
marginDistribution
required
Margindistribution
Array<object>
DistributionBucket
object
value
required
Value
number
probability
required
Probability
number
cumulative
required
Cumulative
number

Validation Error

HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object