Skip to main content

Dice Rolls

Hephaistos fires off JavaScript events using the Custom Event API whenever dice rolls are triggered. As per the Custom Event API, details about the rolls are added to the detail field in the Event object that any event listeners will receive.

info

Definitions on this page use TypeScript to represent types.

hephaistos_on_roll​

This event fires off when the roll is triggered by a user.

Detail​

The detail field of the Event object will contain the following:

interface OnRoll {
// A user-friendly name to describe the roll
name: string,

dice: DiceConfiguration,
category: DiceRollCategory,
}

Remarks​

The .preventDefault() function can be called on this event to stop Hephaistos from calculating the roll's result and displaying it on the website.

Examples​

Attack Roll

{
name: "Cestus Pistol, Advanced",
dice: {
d20: 1,
add: 24,
multiply: 1,
},
category: "Attack"
}

Damage Roll

{
name: "Cestus Pistol, Advanced",
dice: {
d10: 1,
add: 16,
multiply: 1,
},
category: "Damage"
}

hephaistos_on_roll_result​

This event fires off when a roll's result has been calculated, but before it's been displayed.

Detail​

The detail field of the Event object will contain the following:

interface OnRollResult {
// A user-friendly name to describe the roll
name: string,

dice: DiceConfiguration,
category: DiceRollCategory,

// The result of each rolled dice, in ascending order by the number of side each rolled dice had.
// The final entry in the list will be the modifier to add, if any. Any multipliers are ignored for
// this list. For example, rolling "2d4 + 3d6 + 14 x 2" may result in the following array:
// [ 1, 3, 2, 4, 5, 14 ]
// |---| |-----|
// 2d4 3d6
diceResult : number[],

// The final numer rolled, including any modifiers. In the example from above, this would be
// (1 + 3 + 2 + 4 + 5 + 14) x 2 = 58
finalResult : number,
}

Remarks​

The .preventDefault() function can be called on this event to stop Hephaistos displaying the result on the website.

Common Definitions​

DiceConfiguration​

interface DiceConfiguration {
// These fields define the number of each type of dice to roll
d1: number,
d2: number,
d3: number,
d4: number,
d6: number,
d8: number,
d10: number,
d12: number,
d20: number,
d100: number,

// An additional modifier to add to the rolled dice. This can be negative.
add: number,

// A number to multiply the final result by. This is mainly relevant for capital Starship Weapons.
multiply: number,
}

Examples​

2d6 + 15

{
d6: 2,
add: 15,
multiply: 1,
}

3d10 x 10

{
d10: 3,
multiply: 10,
}

1d4 + 2d12 + 4

{
d4: 1
d12: 2,
add: 4,
multiply: 1,
}

DiceRollCategory​

enum DiceRollCategory {
Initiative = "Initiative",
Skill = "Skill",
Ability = "Ability",
SavingThrow = "SavingThrow",
Attack = "Attack",
Damage = "Damage",
CasterLevel = "CasterLevel",
Custom = "Custom",
}

Example​

The following example code listens to the hephaistos_on_roll and hephaistos_on_roll_result events and logs the detail field to the console.

document.addEventListener("hephaistos_on_roll", (event) => {
console.log(event.detail);
});


document.addEventListener("hephaistos_on_roll_result", (event) => {
event.preventDefault(); // Stop Hephaistos from showing the roll result.
console.log(event.detail);
});