Assimilation

d6/d10/d12 pools, symbols, and manual result selection.

Notation and pool

assim(d6,d10,d12,keep?) accepts non-negative integer counts with at least one die in total. keep defaults to 1 and cannot exceed the pool size. Named form: assim(d6=2,d10=1,d12=1,keep=2); AS is an alias. Rolling never automatically chooses dice.

assim(2,1,1,2)
assim(d6=2,d10=1,d12=1,keep=2)
AS(2,1,1,1)

Symbolic faces

d6 uses faces 1–6, d10 uses 1–10, and d12 uses 1–12. Every die has its own profileId, faceKey, and symbols list.

Face Symbols
1–2 none
3–4 pressure
5 adaptation, pressure
6 success
7 two success
8 success, adaptation
9 success, adaptation, pressure
10 two success, pressure
11 success, two adaptation, pressure
12 two pressure

Explicit selection

Call evaluateAssimilationSelection(roll, selectedIds) with up to keep IDs from roll.dice. The return value preserves selection order and counts success, adaptation, and pressure. Unknown, repeated, or excess IDs raise INVALID_SYSTEM_INPUT.

import { rollAssimilation, evaluateAssimilationSelection } from '@erpg/dicecore/systems/assimilation'
const roll = rollAssimilation({ d6: 2, d10: 1, d12: 1, keep: 2 })
const selected = evaluateAssimilationSelection(roll, [roll.dice[0].id, roll.dice[3].id])
console.log(selected.success, selected.adaptation, selected.pressure)

Try the examples

Try assim(2,1,1,2) · Try assim(d6=2,d10=1,d12=1,keep=2)