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)