Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

//Macro to roll Exalted 3e die in Foundry VTT//

//Basic rolls, double 10s. TN 7. Copy everything below as a new macro.//

new Dialog({

title: "Rolls",

content: `<div>Dice Pool: <input name="diceRolls" style="width:50px"/></div>

<div>Automatic Successes: <input name="aS" style="width:50px"/></div>`,

buttons: {

roll: {

label: "Roll!",

callback: async (html) => {

let diceRolls = parseInt(html.find("[name=diceRolls]")[0].value);

let auto = parseInt(html.find("[name=aS]")[0].value);

let rolls = new Roll(`${diceRolls}d10`).roll();

let successes = Object.values(rolls.terms[0].results).reduce((acc, r) => acc += r.result < 7 ? 0 :


r.result < 10 ? 1 : 2, 0)

await ChatMessage.create({content: `You rolled ${successes} successes and ${auto}


automatic successes.

Total Successes: [[${successes} + ${auto}]].`})

rolls.toMessage();

},

default: "roll"

width: 125

}).render(true);

//DONT Double 10s. TN 7//

new Dialog({
title: "Rolls",

content: `<div>Dice Pool: <input name="diceRolls" style="width:50px"/></div>

<div>Automatic Successes: <input name="aS" style="width:50px"/></div>`,

buttons: {

roll: {

label: "Roll!",

callback: async (html) => {

let diceRolls = parseInt(html.find("[name=diceRolls]")[0].value);

let auto = parseInt(html.find("[name=aS]")[0].value);

let rolls = new Roll(`${diceRolls}d10`).roll();

let successes = Object.values(rolls.terms[0].results).reduce((acc, r) => acc += r.result < 7 ? 0 :


r.result < 10 ? 1 : 1, 0)

await ChatMessage.create({content: `You rolled ${successes} successes and ${auto}


automatic successes.

Total Successes: [[${successes} + ${auto}]].`})

rolls.toMessage();

},

default: "roll"

width: 125

}).render(true);

//Double 9s. TN 7//

new Dialog({

title: "Rolls",

content: `<div>Dice Pool: <input name="diceRolls" style="width:50px"/></div>

<div>Automatic Successes: <input name="aS" style="width:50px"/></div>`,


buttons: {

roll: {

label: "Roll!",

callback: async (html) => {

let diceRolls = parseInt(html.find("[name=diceRolls]")[0].value);

let auto = parseInt(html.find("[name=aS]")[0].value);

let rolls = new Roll(`${diceRolls}d10`).roll();

let successes = Object.values(rolls.terms[0].results).reduce((acc, r) => acc += r.result < 7 ? 0 :


r.result < 9 ? 1 : 2, 0)

await ChatMessage.create({content: `You rolled ${successes} successes and ${auto}


automatic successes.

Total Successes: [[${successes} + ${auto}]].`})

rolls.toMessage();

},

default: "roll"

width: 125

}).render(true);

//Double 8s. TN7 //

new Dialog({

title: "Rolls",

content: `<div>Dice Pool: <input name="diceRolls" style="width:50px"/></div>

<div>Automatic Successes: <input name="aS" style="width:50px"/></div>`,

buttons: {

roll: {

label: "Roll!",
callback: async (html) => {

let diceRolls = parseInt(html.find("[name=diceRolls]")[0].value);

let auto = parseInt(html.find("[name=aS]")[0].value);

let rolls = new Roll(`${diceRolls}d10`).roll();

let successes = Object.values(rolls.terms[0].results).reduce((acc, r) => acc += r.result < 7 ? 0 :


r.result < 8 ? 1 : 2, 0)

await ChatMessage.create({content: `You rolled ${successes} successes and ${auto}


automatic successes.

Total Successes: [[${successes} + ${auto}]].`})

rolls.toMessage();

},

default: "roll"

width: 125

}).render(true);

//Double 10s. Reroll 1s. TN 7 //

new Dialog({

title: "Rolls",

content: `<div>Dice Pool: <input name="diceRolls" style="width:50px"/></div>

<div>Automatic Successes: <input name="aS" style="width:50px"/></div>`,

buttons: {

roll: {

label: "Roll!",

callback: async (html) => {

let diceRolls = parseInt(html.find("[name=diceRolls]")[0].value);

let auto = parseInt(html.find("[name=aS]")[0].value);


let rolls = new Roll(`${diceRolls}d10x=1`).roll();

let successes = Object.values(rolls.terms[0].results).reduce((acc, r) => acc += r.result < 7 ? 0 :


r.result < 10 ? 1 : 2, 0)

await ChatMessage.create({content: `You rolled ${successes} successes and ${auto}


automatic successes.

Total Successes: [[${successes} + ${auto}]].`})

rolls.toMessage();

},

default: "roll"

width: 125

}).render(true);

You might also like