Update all of the macros to account for the new module to track stats with
This commit is contained in:
parent
9cee87b81e
commit
992201262f
11 changed files with 315 additions and 244 deletions
3
Axolotl-with-a-Gun/AwaG-world-script.mjs
Normal file
3
Axolotl-with-a-Gun/AwaG-world-script.mjs
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
Hooks.on(`ready`, () => {
|
||||||
|
globalThis.WorldAPI ??= {};
|
||||||
|
});
|
||||||
|
|
@ -19,7 +19,7 @@ async function rollDice() {
|
||||||
const sidesOnDice = 6;
|
const sidesOnDice = 6;
|
||||||
|
|
||||||
const answers = await DialogManager.ask({
|
const answers = await DialogManager.ask({
|
||||||
id: `hobby-dice-pool`,
|
id: `axolotl-dice-pool`,
|
||||||
question: `Set up your dice pool:`,
|
question: `Set up your dice pool:`,
|
||||||
inputs: [
|
inputs: [
|
||||||
{
|
{
|
||||||
|
|
@ -45,6 +45,7 @@ async function rollDice() {
|
||||||
let successes = 0;
|
let successes = 0;
|
||||||
let critsOnly = 0;
|
let critsOnly = 0;
|
||||||
const results = [];
|
const results = [];
|
||||||
|
const resultValues = [];
|
||||||
for (let i = diceCount; i > 0; i--) {
|
for (let i = diceCount; i > 0; i--) {
|
||||||
let r = new Roll(`1d${sidesOnDice}`);
|
let r = new Roll(`1d${sidesOnDice}`);
|
||||||
await r.evaluate();
|
await r.evaluate();
|
||||||
|
|
@ -61,40 +62,65 @@ async function rollDice() {
|
||||||
successes += 1;
|
successes += 1;
|
||||||
critsOnly += 1;
|
critsOnly += 1;
|
||||||
classes += ` success`;
|
classes += ` success`;
|
||||||
}
|
};
|
||||||
|
|
||||||
// Save dice stats if present
|
|
||||||
WorldAPI?.saveRollValue?.(sidesOnDice, total);
|
|
||||||
|
|
||||||
|
resultValues.push(total);
|
||||||
results.push(`<li class="${classes}">${total}</li>`);
|
results.push(`<li class="${classes}">${total}</li>`);
|
||||||
}
|
};
|
||||||
|
|
||||||
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 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) {
|
if (successes >= 8) {
|
||||||
content += `<div style="${notifStyle} ${greenNotif}">POP OFF</div> Add one to your gun 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) {
|
else if (successes === 0) {
|
||||||
content += `<div style="${notifStyle} ${redNotif}">Pinned Down</div> Roll a d6, rescuing you becomes a new objective`;
|
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) {
|
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`);
|
ui.notifications.info(`Cannot make a blind roll from the macro, rolling with mode "Private GM Roll" instead`);
|
||||||
rollMode = CONST.DICE_ROLL_MODES.PRIVATE;
|
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(
|
const chatData = ChatMessage.applyRollMode(
|
||||||
{
|
{
|
||||||
flavor: `Hobby Roll`,
|
flavor: `Axoltl Roll`,
|
||||||
content,
|
content,
|
||||||
},
|
},
|
||||||
rollMode,
|
rollMode,
|
||||||
);
|
);
|
||||||
|
|
||||||
await ChatMessage.implementation.create(chatData);
|
await ChatMessage.implementation.create(chatData);
|
||||||
}
|
};
|
||||||
|
|
||||||
rollDice();
|
rollDice();
|
||||||
|
|
@ -53,6 +53,7 @@ async function rollDice() {
|
||||||
let successes = 0;
|
let successes = 0;
|
||||||
let critsOnly = 0;
|
let critsOnly = 0;
|
||||||
const results = [];
|
const results = [];
|
||||||
|
const resultValues = [];
|
||||||
for (let i = diceCount; i > 0; i--) {
|
for (let i = diceCount; i > 0; i--) {
|
||||||
let r = new Roll(`1d${sidesOnDice}`);
|
let r = new Roll(`1d${sidesOnDice}`);
|
||||||
await r.evaluate();
|
await r.evaluate();
|
||||||
|
|
@ -72,23 +73,21 @@ async function rollDice() {
|
||||||
classes += ` success`;
|
classes += ` success`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save dice stats if present
|
resultValues.push(total);
|
||||||
WorldAPI?.saveRollValue?.(sidesOnDice, total);
|
|
||||||
|
|
||||||
results.push(`<li class="${classes}">${total}</li>`);
|
results.push(`<li class="${classes}">${total}</li>`);
|
||||||
}
|
}
|
||||||
|
|
||||||
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 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) {
|
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 hobby stat and gain 1 additional Momentum!`;
|
||||||
|
successType = `Popped Off`;
|
||||||
}
|
}
|
||||||
else if (successes === 0) {
|
else if (successes === 0) {
|
||||||
content += `<div style="${notifStyle} ${redNotif}">Pinned Down</div> Roll a d6, rescuing you becomes a new objective`;
|
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) {
|
if (rollMode === CONST.DICE_ROLL_MODES.BLIND) {
|
||||||
|
|
@ -96,6 +95,33 @@ async function rollDice() {
|
||||||
rollMode = CONST.DICE_ROLL_MODES.PRIVATE;
|
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(
|
const chatData = ChatMessage.applyRollMode(
|
||||||
{
|
{
|
||||||
flavor: `(Gun: AK-47)`,
|
flavor: `(Gun: AK-47)`,
|
||||||
|
|
@ -64,9 +64,7 @@ async function rollDice() {
|
||||||
classes += ` success`;
|
classes += ` success`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save dice stats if present
|
resultValues.push(total);
|
||||||
WorldAPI?.saveRollValue?.(sidesOnDice, total);
|
|
||||||
|
|
||||||
results.push(`<li class="${classes}">${total}</li>`);
|
results.push(`<li class="${classes}">${total}</li>`);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -74,24 +72,50 @@ async function rollDice() {
|
||||||
successes = 2;
|
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 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) {
|
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) {
|
else if (successes === 0) {
|
||||||
content += `<div style="${notifStyle} ${redNotif}">Pinned Down</div> Roll a d6, rescuing you becomes a new objective`;
|
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) {
|
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`);
|
ui.notifications.info(`Cannot make a blind roll from the macro, rolling with mode "Private GM Roll" instead`);
|
||||||
rollMode = CONST.DICE_ROLL_MODES.PRIVATE;
|
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(
|
const chatData = ChatMessage.applyRollMode(
|
||||||
{
|
{
|
||||||
flavor: `(Gun: Glock)`,
|
flavor: `(Gun: Glock)`,
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ async function rollDice() {
|
||||||
let successes = 0;
|
let successes = 0;
|
||||||
let critsOnly = 0;
|
let critsOnly = 0;
|
||||||
const results = [];
|
const results = [];
|
||||||
|
const resultValues = [];
|
||||||
for (let i = diceCount; i > 0; i--) {
|
for (let i = diceCount; i > 0; i--) {
|
||||||
let r = new Roll(`1d${sidesOnDice}`);
|
let r = new Roll(`1d${sidesOnDice}`);
|
||||||
await r.evaluate();
|
await r.evaluate();
|
||||||
|
|
@ -64,32 +65,56 @@ async function rollDice() {
|
||||||
classes += ` success`;
|
classes += ` success`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save dice stats if present
|
resultValues.push(total);
|
||||||
WorldAPI?.saveRollValue?.(sidesOnDice, total);
|
|
||||||
|
|
||||||
results.push(`<li class="${classes}">${total}</li>`);
|
results.push(`<li class="${classes}">${total}</li>`);
|
||||||
}
|
}
|
||||||
|
|
||||||
successes = Math.max(successes, 1);
|
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 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) {
|
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) {
|
else if (successes === 0) {
|
||||||
content += `<div style="${notifStyle} ${redNotif}">Pinned Down</div> Roll a d6, rescuing you becomes a new objective`;
|
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) {
|
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`);
|
ui.notifications.info(`Cannot make a blind roll from the macro, rolling with mode "Private GM Roll" instead`);
|
||||||
rollMode = CONST.DICE_ROLL_MODES.PRIVATE;
|
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(
|
const chatData = ChatMessage.applyRollMode(
|
||||||
{
|
{
|
||||||
flavor: `(Gun: Glock)`,
|
flavor: `(Gun: Glock)`,
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,7 @@ async function rollDice() {
|
||||||
let successes = 0;
|
let successes = 0;
|
||||||
let critsOnly = 0;
|
let critsOnly = 0;
|
||||||
const results = [];
|
const results = [];
|
||||||
|
const resultValues = [];
|
||||||
for (let i = diceCount; i > 0; i--) {
|
for (let i = diceCount; i > 0; i--) {
|
||||||
let r = new Roll(`1d${sidesOnDice}`);
|
let r = new Roll(`1d${sidesOnDice}`);
|
||||||
await r.evaluate();
|
await r.evaluate();
|
||||||
|
|
@ -74,30 +75,56 @@ async function rollDice() {
|
||||||
classes += ` discarded`
|
classes += ` discarded`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save dice stats if present
|
resultValues.push(total);
|
||||||
WorldAPI?.saveRollValue?.(sidesOnDice, total);
|
|
||||||
|
|
||||||
results.push(`<li class="${classes}">${total}</li>`);
|
results.push(`<li class="${classes}">${total}</li>`);
|
||||||
}
|
}
|
||||||
|
|
||||||
game.user.setFlag(`world`, `comboCount`, comboCount);
|
game.user.setFlag(`world`, `comboCount`, comboCount);
|
||||||
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}<br>Combo Count After Roll: ${comboCount}`;
|
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}<br>Combo Count After Roll: ${comboCount}`;
|
||||||
|
|
||||||
|
let successType = `Normal`;
|
||||||
if (successes >= 8) {
|
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) {
|
else if (successes === 0) {
|
||||||
content += `<div style="${notifStyle} ${redNotif}">Pinned Down</div> Roll a d6, rescuing you becomes a new objective`;
|
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) {
|
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`);
|
ui.notifications.info(`Cannot make a blind roll from the macro, rolling with mode "Private GM Roll" instead`);
|
||||||
rollMode = CONST.DICE_ROLL_MODES.PRIVATE;
|
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(
|
const chatData = ChatMessage.applyRollMode(
|
||||||
{
|
{
|
||||||
flavor: `(Gun: Gunsword)`,
|
flavor: `(Gun: Gunsword)`,
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,7 @@ async function rollDice() {
|
||||||
let successes = 0;
|
let successes = 0;
|
||||||
let critsOnly = 0;
|
let critsOnly = 0;
|
||||||
const results = [];
|
const results = [];
|
||||||
|
const resultValues = [];
|
||||||
for (let i = diceCount; i > 0; i--) {
|
for (let i = diceCount; i > 0; i--) {
|
||||||
let r = new Roll(`1d${sidesOnDice}`);
|
let r = new Roll(`1d${sidesOnDice}`);
|
||||||
await r.evaluate();
|
await r.evaluate();
|
||||||
|
|
@ -74,30 +75,56 @@ async function rollDice() {
|
||||||
classes += ` discarded`
|
classes += ` discarded`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save dice stats if present
|
resultValues.push(total);
|
||||||
WorldAPI?.saveRollValue?.(sidesOnDice, total);
|
|
||||||
|
|
||||||
results.push(`<li class="${classes}">${total}</li>`);
|
results.push(`<li class="${classes}">${total}</li>`);
|
||||||
}
|
}
|
||||||
|
|
||||||
game.user.setFlag(`world`, `comboCount`, comboCount);
|
game.user.setFlag(`world`, `comboCount`, comboCount);
|
||||||
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}<br>Combo Count After Roll: ${comboCount}`;
|
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}<br>Combo Count After Roll: ${comboCount}`;
|
||||||
|
|
||||||
|
let successType = `Normal`;
|
||||||
if (successes >= 8) {
|
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) {
|
else if (successes === 0) {
|
||||||
content += `<div style="${notifStyle} ${redNotif}">Pinned Down</div> Roll a d6, rescuing you becomes a new objective`;
|
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) {
|
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`);
|
ui.notifications.info(`Cannot make a blind roll from the macro, rolling with mode "Private GM Roll" instead`);
|
||||||
rollMode = CONST.DICE_ROLL_MODES.PRIVATE;
|
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(
|
const chatData = ChatMessage.applyRollMode(
|
||||||
{
|
{
|
||||||
flavor: `(Gun: Gunsword)`,
|
flavor: `(Gun: Gunsword)`,
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ async function rollDice() {
|
||||||
let successes = 0;
|
let successes = 0;
|
||||||
let critsOnly = 0;
|
let critsOnly = 0;
|
||||||
const results = [];
|
const results = [];
|
||||||
|
const resultValues = [];
|
||||||
for (let i = diceCount; i > 0; i--) {
|
for (let i = diceCount; i > 0; i--) {
|
||||||
let r = new Roll(`1d${sidesOnDice}x=${statBase}`);
|
let r = new Roll(`1d${sidesOnDice}x=${statBase}`);
|
||||||
await r.evaluate();
|
await r.evaluate();
|
||||||
|
|
@ -64,30 +65,56 @@ async function rollDice() {
|
||||||
critsOnly += 1;
|
critsOnly += 1;
|
||||||
classes += ` success exploded`;
|
classes += ` success exploded`;
|
||||||
}
|
}
|
||||||
// Save dice stats if present
|
|
||||||
WorldAPI?.saveRollValue?.(sidesOnDice, total);
|
|
||||||
|
|
||||||
|
resultValues.push(total);
|
||||||
results.push(`<li class="${classes}">${total}</li>`);
|
results.push(`<li class="${classes}">${total}</li>`);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
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 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) {
|
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) {
|
else if (successes === 0) {
|
||||||
content += `<div style="${notifStyle} ${redNotif}">Pinned Down</div> Roll a d6, rescuing you becomes a new objective`;
|
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) {
|
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`);
|
ui.notifications.info(`Cannot make a blind roll from the macro, rolling with mode "Private GM Roll" instead`);
|
||||||
rollMode = CONST.DICE_ROLL_MODES.PRIVATE;
|
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(
|
const chatData = ChatMessage.applyRollMode(
|
||||||
{
|
{
|
||||||
flavor: `(Gun: Hand Cannon)`,
|
flavor: `(Gun: Hand Cannon)`,
|
||||||
|
|
|
||||||
|
|
@ -46,11 +46,11 @@ async function main() {
|
||||||
diceCount += 6;
|
diceCount += 6;
|
||||||
};
|
};
|
||||||
|
|
||||||
let statGain = 0;
|
|
||||||
let gunLoss = 0;
|
let gunLoss = 0;
|
||||||
let successes = 0;
|
let successes = 0;
|
||||||
let critsOnly = 0;
|
let critsOnly = 0;
|
||||||
let results = [];
|
const results = [];
|
||||||
|
const resultValues = [];
|
||||||
for (let i = 0; i < diceCount; i++) {
|
for (let i = 0; i < diceCount; i++) {
|
||||||
let succeeded = false;
|
let succeeded = false;
|
||||||
|
|
||||||
|
|
@ -123,9 +123,7 @@ async function main() {
|
||||||
} catch {};
|
} catch {};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save dice stats if present
|
resultValues.push(total);
|
||||||
WorldAPI?.saveRollValue?.(6, total);
|
|
||||||
|
|
||||||
results.push(`<li class="${classes}">${total}</li>`);
|
results.push(`<li class="${classes}">${total}</li>`);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -137,21 +135,50 @@ async function main() {
|
||||||
|
|
||||||
if (gunLoss > 0) {
|
if (gunLoss > 0) {
|
||||||
content += `<div style="${notifStyle} ${redNotif}">Lose ${gunLoss} GUN</div>`;
|
content += `<div style="${notifStyle} ${redNotif}">Lose ${gunLoss} GUN</div>`;
|
||||||
}
|
};
|
||||||
|
|
||||||
|
let successType = `Normal`;
|
||||||
if (successes >= 8) {
|
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) {
|
else if (successes === 0) {
|
||||||
content += `<div style="${notifStyle} ${redNotif}">Pinned Down</div> Roll a d6, rescuing you becomes a new objective`;
|
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) {
|
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`);
|
ui.notifications.info(`Cannot make a blind roll from the macro, rolling with mode "Private GM Roll" instead`);
|
||||||
rollMode = CONST.DICE_ROLL_MODES.PRIVATE;
|
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(
|
const chatData = ChatMessage.applyRollMode(
|
||||||
{
|
{
|
||||||
flavor: `(Gun: Mini-Gun)`,
|
flavor: `(Gun: Mini-Gun)`,
|
||||||
|
|
|
||||||
|
|
@ -1,166 +0,0 @@
|
||||||
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 main() {
|
|
||||||
let heatMeter = game.user.getFlag(`world`, `heatMeter`) ?? 0;
|
|
||||||
|
|
||||||
const answers = await DialogManager.ask({
|
|
||||||
id: `mini-gun-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 { extraDice } = answers;
|
|
||||||
let { statBase } = answers;
|
|
||||||
let rollMode = game.settings.get(`core`, `rollMode`);
|
|
||||||
|
|
||||||
let diceCount = statBase;
|
|
||||||
diceCount += extraDice;
|
|
||||||
if (statBase === 6) {
|
|
||||||
diceCount += 6;
|
|
||||||
};
|
|
||||||
|
|
||||||
let statGain = 0;
|
|
||||||
let gunLoss = 0;
|
|
||||||
let successes = 0;
|
|
||||||
let critsOnly = 0;
|
|
||||||
let results = [];
|
|
||||||
for (let i = 0; i < diceCount; i++) {
|
|
||||||
let succeeded = false;
|
|
||||||
|
|
||||||
let r = new Roll(`1d6`);
|
|
||||||
await r.evaluate();
|
|
||||||
let classes = `roll die d6`;
|
|
||||||
|
|
||||||
const total = r.total;
|
|
||||||
|
|
||||||
if (total <= statBase) {
|
|
||||||
successes += 1;
|
|
||||||
succeeded = true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
classes += ` discarded`
|
|
||||||
}
|
|
||||||
if (total === statBase) {
|
|
||||||
successes += 1;
|
|
||||||
critsOnly += 1;
|
|
||||||
classes += ` success`;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (statBase === 6 && i <= 6) {
|
|
||||||
if (i === 6) {
|
|
||||||
statBase -= 1;
|
|
||||||
};
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if (succeeded) {
|
|
||||||
try {
|
|
||||||
const { holdTheTrigger, ventHeat } = await DialogManager.ask({
|
|
||||||
id: `mini-gun-hold-the-trigger`,
|
|
||||||
question: `Hold The Trigger?`,
|
|
||||||
inputs: [
|
|
||||||
{
|
|
||||||
key: `_1`,
|
|
||||||
inputType: `hidden`,
|
|
||||||
label: `Success Count: ${successes}`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: `_2`,
|
|
||||||
inputType: `hidden`,
|
|
||||||
label: `Total Dice Rolled: ${i + 1}/${diceCount}`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: `_3`,
|
|
||||||
inputType: `hidden`,
|
|
||||||
label: `Current Heat: ${heatMeter}/6`,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: `holdTheTrigger`,
|
|
||||||
inputType: `checkbox`,
|
|
||||||
label: `Hold The Trigger?`,
|
|
||||||
details: `If you hold the trigger, you roll an additional dice, and gain 1 heat. If you don't hold the trigger, you lose one heat. When you reach 6 heat, you lost all heat and lose 2 GUN.`,
|
|
||||||
defaultValue: false,
|
|
||||||
autofocus: true,
|
|
||||||
}
|
|
||||||
],
|
|
||||||
});
|
|
||||||
heatMeter += (holdTheTrigger ? 1 : -1);
|
|
||||||
if (holdTheTrigger) {
|
|
||||||
diceCount += 1;
|
|
||||||
};
|
|
||||||
if (heatMeter >= 6) {
|
|
||||||
heatMeter = 0;
|
|
||||||
gunLoss += 2;
|
|
||||||
statBase -= 2;
|
|
||||||
}
|
|
||||||
} catch {};
|
|
||||||
}
|
|
||||||
|
|
||||||
// Save dice stats if present
|
|
||||||
WorldAPI?.saveRollValue?.(6, total);
|
|
||||||
|
|
||||||
results.push(`<li class="${classes}">${total}</li>`);
|
|
||||||
};
|
|
||||||
|
|
||||||
game.user.setFlag(`world`, `heatMeter`, heatMeter);
|
|
||||||
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}<br>Final Heat: ${heatMeter}`;
|
|
||||||
|
|
||||||
if (gunLoss > 0) {
|
|
||||||
content += `<div style="${notifStyle} ${redNotif}">Lose ${gunLoss} GUN</div>`;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (successes >= 8) {
|
|
||||||
content += `<div style="${notifStyle} ${greenNotif}">POP OFF</div> Add one to your hobby stat and gain 1 additional Momentum!`;
|
|
||||||
}
|
|
||||||
else if (successes === 0) {
|
|
||||||
content += `<div style="${notifStyle} ${redNotif}">Pinned Down</div> Roll a d6, rescuing you becomes a new objective`;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
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 chatData = ChatMessage.applyRollMode(
|
|
||||||
{
|
|
||||||
flavor: `(Gun: Mini-Gun)`,
|
|
||||||
content,
|
|
||||||
},
|
|
||||||
rollMode,
|
|
||||||
);
|
|
||||||
|
|
||||||
await ChatMessage.implementation.create(chatData);
|
|
||||||
}
|
|
||||||
|
|
||||||
main();
|
|
||||||
|
|
@ -45,6 +45,7 @@ async function rollDice() {
|
||||||
let successes = 0;
|
let successes = 0;
|
||||||
let critsOnly = 0;
|
let critsOnly = 0;
|
||||||
const results = [];
|
const results = [];
|
||||||
|
const resultValues = []
|
||||||
for (let i = diceCount; i > 0; i--) {
|
for (let i = diceCount; i > 0; i--) {
|
||||||
let r = new Roll(`1d${sidesOnDice}`);
|
let r = new Roll(`1d${sidesOnDice}`);
|
||||||
await r.evaluate();
|
await r.evaluate();
|
||||||
|
|
@ -59,30 +60,54 @@ async function rollDice() {
|
||||||
classes += ` discarded`;
|
classes += ` discarded`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save dice stats if present
|
resultValues.push(total);
|
||||||
WorldAPI?.saveRollValue?.(sidesOnDice, total);
|
|
||||||
|
|
||||||
results.push(`<li class="${classes}">${total}</li>`);
|
results.push(`<li class="${classes}">${total}</li>`);
|
||||||
}
|
};
|
||||||
|
|
||||||
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 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) {
|
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 hobby stat and gain 1 additional Momentum!`;
|
||||||
|
successType = `Popped Off`;
|
||||||
}
|
}
|
||||||
else if (successes === 0) {
|
else if (successes === 0) {
|
||||||
content += `<div style="${notifStyle} ${redNotif}">Pinned Down</div> Roll a d6, rescuing you becomes a new objective`;
|
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) {
|
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`);
|
ui.notifications.info(`Cannot make a blind roll from the macro, rolling with mode "Private GM Roll" instead`);
|
||||||
rollMode = CONST.DICE_ROLL_MODES.PRIVATE;
|
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(
|
const chatData = ChatMessage.applyRollMode(
|
||||||
{
|
{
|
||||||
flavor: `(Gun: Rocket Launcher)`,
|
flavor: `(Gun: Rocket Launcher)`,
|
||||||
Loading…
Add table
Add a link
Reference in a new issue