Update all of the macros to account for the new module to track stats with

This commit is contained in:
Oliver-Akins 2025-06-01 21:46:19 -06:00
parent 9cee87b81e
commit 992201262f
11 changed files with 315 additions and 244 deletions

View file

@ -64,9 +64,7 @@ async function rollDice() {
classes += ` success`;
}
// Save dice stats if present
WorldAPI?.saveRollValue?.(sidesOnDice, total);
resultValues.push(total);
results.push(`<li class="${classes}">${total}</li>`);
};
@ -74,24 +72,50 @@ async function rollDice() {
successes = 2;
};
WorldAPI?.saveRollValue?.(20, Math.min(diceCount, 20));
WorldAPI?.saveRollValue?.(100, successes === 0 ? 100 : successes);
let content = `Rolls:<div class="dice-tooltip"><ol class="dice-rolls">${results.join(`\n`)}</ol></div><hr>Gain 1 Momentum<br>Successes: ${successes}<br>Crits: ${critsOnly}`;
let successType = `Normal`;
if (successes >= 8) {
content += `<div style="${notifStyle} ${greenNotif}">POP OFF</div> Add one to your hobby stat and gain 1 additional Momentum!`;
content += `<div style="${notifStyle} ${greenNotif}">POP OFF</div> Add one to your gun stat and gain 1 additional Momentum!`;
successType = `Popped Off`;
}
else if (successes === 0) {
content += `<div style="${notifStyle} ${redNotif}">Pinned Down</div> 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)`,

View file

@ -45,6 +45,7 @@ async function rollDice() {
let successes = 0;
let critsOnly = 0;
const results = [];
const resultValues = [];
for (let i = diceCount; i > 0; i--) {
let r = new Roll(`1d${sidesOnDice}`);
await r.evaluate();
@ -64,32 +65,56 @@ async function rollDice() {
classes += ` success`;
}
// Save dice stats if present
WorldAPI?.saveRollValue?.(sidesOnDice, total);
resultValues.push(total);
results.push(`<li class="${classes}">${total}</li>`);
}
successes = Math.max(successes, 1);
WorldAPI?.saveRollValue?.(20, Math.min(diceCount, 20));
WorldAPI?.saveRollValue?.(100, successes === 0 ? 100 : successes);
let content = `Rolls:<div class="dice-tooltip"><ol class="dice-rolls">${results.join(`\n`)}</ol></div><hr>Gain 1 Momentum<br>Successes: ${successes}<br>Crits: ${critsOnly}`;
let successType = `Normal`;
if (successes >= 8) {
content += `<div style="${notifStyle} ${greenNotif}">POP OFF</div> Add one to your hobby stat and gain 1 additional Momentum!`;
content += `<div style="${notifStyle} ${greenNotif}">POP OFF</div> Add one to your gun stat and gain 1 additional Momentum!`;
successType = `Popped Off`;
}
else if (successes === 0) {
content += `<div style="${notifStyle} ${redNotif}">Pinned Down</div> 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)`,