const notifStyle = `
font-size: 1.5rem;
margin: 0.5rem 0;
padding: 6px 8px;
box-shadow: 0 0 10px var(--color-shadow-dark);
color: var(--color-text-light-1);
border-radius: 5px;
text-align: center;`;
const greenNotif = `
background: var(--color-level-success-bg);
border: 1px solid var(--color-level-success-border);`;
const redNotif = `
background: var(--color-level-error-bg);
border: 1px solid var(--color-level-error);`;
async function rollDice() {
const sidesOnDice = 6;
const answers = await DialogManager.ask({
id: `glock-dice-pool`,
question: `Set up your dice pool:`,
inputs: [
{
key: `statBase`,
inputType: `number`,
label: `Stat Base`,
autofocus: true,
},
{
key: `extraDice`,
inputType: `number`,
label: `Extra Dice`,
defaultValue: 0,
},
],
});
const { statBase, extraDice } = answers;
let rollMode = game.settings.get(`core`, `rollMode`);
let diceCount = statBase;
diceCount += extraDice;
let successes = 0;
let critsOnly = 0;
const results = [];
for (let i = diceCount; i > 0; i--) {
let r = new Roll(`1d${sidesOnDice}`);
await r.evaluate();
let classes = `roll die d${sidesOnDice}`;
const total = r.total;
if (total <= statBase) {
successes += 1;
}
else {
classes += ` discarded`
}
if (total === statBase) {
successes += 1;
critsOnly += 1;
classes += ` success`;
}
resultValues.push(total);
results.push(`
${total}`);
};
if (successes === 0) {
successes = 2;
};
let content = `Rolls:
Gain 1 Momentum
Successes: ${successes}
Crits: ${critsOnly}`;
let successType = `Normal`;
if (successes >= 8) {
content += `POP OFF
Add one to your gun stat and gain 1 additional Momentum!`;
successType = `Popped Off`;
}
else if (successes === 0) {
content += `Pinned Down
Roll a d6, rescuing you becomes a new objective`;
successType = `Downed`;
};
if (rollMode === CONST.DICE_ROLL_MODES.BLIND) {
ui.notifications.info(`Cannot make a blind roll from the macro, rolling with mode "Private GM Roll" instead`);
rollMode = CONST.DICE_ROLL_MODES.PRIVATE;
};
const privacy = stats.utils.determinePrivacyFromRollMode(rollMode);
await CONFIG.stats.db.createRows(
`Dice/d6`,
game.user.id,
resultValues.map(value => ({ value, privacy })),
{ rerender: false },
);
await CONFIG.stats.db.createRow(
`AwaG/Type of Success`,
game.user.id,
{ value: successType, privacy },
{ rerender: false },
);
await CONFIG.stats.db.createRow(
`AwaG/Count of Successes`,
game.user.id,
{ value: successes, privacy },
{ rerender: false },
);
await CONFIG.stats.db.createRow(
`AwaG/Amount of Dice Rolled`,
game.user.id,
{ value: diceCount, privacy },
{ rerender: false },
);
CONFIG.stats.db.render();
const chatData = ChatMessage.applyRollMode(
{
flavor: `(Gun: Glock)`,
content,
},
rollMode,
);
await ChatMessage.implementation.create(chatData);
}
rollDice();