diff --git a/scripts/macros/rollDice.mjs b/scripts/macros/rollDice.mjs index 2519669..b2d99b2 100644 --- a/scripts/macros/rollDice.mjs +++ b/scripts/macros/rollDice.mjs @@ -6,48 +6,67 @@ async function rollDice() { question: `Set up your dice pool:`, inputs: [ { + key: `statBase`, inputType: `number`, defaultValue: 2, label: `Number of Dice`, autofocus: true, }, { + key: `successThreshold`, inputType: `number`, - defaultValue: 4, - label: `Success Threshold (d${sidesOnDice} >= X)`, + defaultValue: 3, + label: `Success Threshold (d${sidesOnDice} > X)`, }, { + key: `critsEnabled`, inputType: `checkbox`, defaultValue: true, label: `Enable Criticals`, }, ], }); - const [ statBase, successThreshold, critsEnabled ] = Object.values(answers); - const rollMode = game.settings.get(`core`, `rollMode`); + const { statBase, successThreshold, critsEnabled } = answers; + let rollMode = game.settings.get(`core`, `rollMode`); + + let successes = 0; + let critsOnly = 0; const results = []; for (let i = statBase; i > 0; i--) { let r = new Roll(`1d${sidesOnDice}`); await r.evaluate(); - results.push(r.total); - if (r.total >= successThreshold) { + let classes = `roll die d6`; + + // Determine the success count and class modifications for the chat + if (r.total > successThreshold) { successes++; } + else { + classes += ` failure` + } if (r.total === sidesOnDice && critsEnabled) { successes++; + critsOnly++; + classes += ` success`; } + + results.push(`