Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions src/module/apps/roll-dialog.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,16 @@ export class GrimwildRollDialog extends foundry.applications.api.DialogV2 {
rollData.hasSpark = rollData.spark > 0;
rollData.sparkArray = Array.from({ length: rollData.spark }, (_, i) => i);
rollData.assistants = game.actors.filter((a) => a.type === "character" && a.name !== rollData.name).map((a) => a.name);
// Add weapon mastery as an assistant.
if (rollData.actor) {
const path = rollData.actor.system.path;
const weaponMastery = rollData.actor.itemTypes.talent.filter((t) => t.name.trim().toLowerCase()
.includes("weapon mastery"));

if (path.trim().toLowerCase() === "fighter" || weaponMastery.length > 0) {
rollData.assistants.push("Weapon Mastery");
}
}

options.content = await foundry.applications.handlebars.renderTemplate("systems/grimwild/templates/dialog/stat-roll.hbs", rollData);
options.render = this._render;
Expand Down
5 changes: 3 additions & 2 deletions src/module/data/actor-character.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,8 @@ export default class GrimwildCharacter extends GrimwildActorBase {
diceDefault: rollData?.stats?.[options.stat].value,
isBloodied: rollData?.isBloodied,
isRattled: rollData?.isRattled,
isMarked: rollData?.stats?.[options.stat].marked
isMarked: rollData?.stats?.[options.stat].marked,
actor: this.parent
}
});
// bail out if they closed the dialog
Expand Down Expand Up @@ -369,7 +370,7 @@ export default class GrimwildCharacter extends GrimwildActorBase {
await combatant.setFlag("grimwild", "actionCount", actionCount + 1);

const actor = combatant.actor;
await actor.update({"system.tokenActions.value": Math.max(actor.system.tokenActions.value - 1, 0)});
await actor.update({ "system.tokenActions.value": Math.max(actor.system.tokenActions.value - 1, 0) });

// Update the active turn.
const combatantTurn = combat.turns.findIndex((c) => c.id === combatant.id);
Expand Down
1 change: 1 addition & 0 deletions src/module/dice/rolls.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ export default class GrimwildRoll extends Roll {
total: isPrivate ? "?" : this.total,
dice: this.dice[0].results,
thorns: this.dice[1].results,
stat: this.options?.stat ?? null,
assists: {},
crit: false,
success: 0,
Expand Down
15 changes: 8 additions & 7 deletions src/module/documents/chat-message.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,9 @@ export class GrimwildChatMessage extends ChatMessage {
// Handle event listeners.
const click = this.#onClick.bind(this);
const sparkTakenArray = this.getFlag("grimwild", "sparkTaken") ?? [];
const damageTakenArray = this.getFlag("grimwild", "damageTaken") ?? [];
// const damageTakenArray = this.getFlag("grimwild", "damageTaken") ?? [];
const sparkTaken = sparkTakenArray.includes(game.user.id);
const damageTaken = damageTakenArray.includes(game.user.id);
// const damageTaken = damageTakenArray.includes(game.user.id);
html.querySelectorAll("[data-action]")?.forEach((element) => {
const { action } = element.dataset;
if (action === "updateSpark") {
Expand All @@ -87,10 +87,10 @@ export class GrimwildChatMessage extends ChatMessage {
}
}
else if (["applyMark", "applyHarm"].includes(action)) {
if (damageTaken) {
element.setAttribute("disabled", true);
return;
}
// if (damageTaken) {
// element.setAttribute("disabled", true);
// return;
// }
}
element.addEventListener("click", click);
});
Expand Down Expand Up @@ -256,7 +256,8 @@ export class GrimwildChatMessage extends ChatMessage {
if (!actor.system[harm === "bloodied" ? "isBloodied" : "isRattled"]) {
update[`system.${harm}.marked`] = true;
if (harmPools) {
update[`system.${harm}.pool.diceNum`] = 1;
const newHarmPool = Math.min(actor.system[harm].pool.diceNum + 1, maxHarm);
update[`system.${harm}.pool.diceNum`] = newHarmPool;
}
}
else if (!harmPools || actor.system[harm].pool.diceNum >= maxHarm) {
Expand Down
6 changes: 3 additions & 3 deletions src/module/documents/combat.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export class GrimwildCombat extends foundry.documents.Combat {
resetActions() {
for (let combatant of this.combatants) {
combatant.setFlag("grimwild", "actionCount", 0);
combatant.actor.update({"system.tokenActions.value": 2});
combatant.actor.update({ "system.tokenActions.value": 2 });
}
}

Expand Down Expand Up @@ -185,8 +185,8 @@ export class GrimwildCombatTracker extends foundry.applications.sidebar.tabs.Com
callback: (li) => {
const combatant = getCombatant(li);
if (combatant) {
combatant?.setFlag("grimwild", "actionCount", 0)
combatant?.actor.update({"system.tokenActions.value": 2});
combatant?.setFlag("grimwild", "actionCount", 0);
combatant?.actor.update({ "system.tokenActions.value": 2 });
}
}
}, {
Expand Down
10 changes: 5 additions & 5 deletions src/module/grimwild.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ Hooks.once("ready", function () {

if (event.target?.classList.contains("create-crucible")) {
event.preventDefault();
const label = game.i18n.format("DOCUMENT.Create", {type: "Crucible Table"});
const label = game.i18n.format("DOCUMENT.Create", { type: "Crucible Table" });
try {
const crucibleName = await foundry.applications.api.DialogV2.prompt({
window: { title: label },
Expand All @@ -339,7 +339,7 @@ Hooks.once("ready", function () {
callback: (event, button, dialog) => button.form.elements.name.value
}
});
const defaultData = Array.fromRange(36,1).map(result => {
const defaultData = Array.fromRange(36, 1).map((result) => {
return {
name: "",
range: [result, result],
Expand All @@ -358,9 +358,9 @@ Hooks.once("ready", function () {
}
});
}
catch (error) {
catch(error) {
console.error(error);
return;

}
}
});
Expand All @@ -383,7 +383,7 @@ Hooks.on("renderSceneControls", (application, html, data) => {
Hooks.on("renderDocumentDirectory", (application, html, data) => {
if (data.documentName === "RollTable") {
html.querySelector(".header-actions").insertAdjacentHTML("afterbegin", `
<button type="button" class="create-crucible" data-action="createCrucible"><i class="fas fa-grip"></i><span>${game.i18n.format("DOCUMENT.Create", {type: "Crucible"})}</span></button>
<button type="button" class="create-crucible" data-action="createCrucible"><i class="fas fa-grip"></i><span>${game.i18n.format("DOCUMENT.Create", { type: "Crucible" })}</span></button>
`);
}
});
Expand Down
2 changes: 1 addition & 1 deletion src/module/sheets/item-sheet-vue.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export class GrimwildItemSheetVue extends VueRenderingMixin(GrimwildBaseVueItemS
deleteTracker: this._deleteTracker,
createArrayEntry: this._createArrayEntry,
deleteArrayEntry: this._deleteArrayEntry,
rollPool: this._rollPool,
rollPool: this._rollPool
// @TODO restore when crucibles are added back to talents.
// rollCrucible: this._rollCrucible
},
Expand Down
Loading