Files

37 lines
1.1 KiB
JavaScript

/* eslint-disable import/prefer-default-export */
export async function handleInlineActions(btnWithAction, messageId) {
const action = btnWithAction.dataset?.action;
const message = game.messages.get(messageId);
const actor = message?.speakerActor;
if (!actor) return;
if (action === "rollback-skill-failure-state") {
const rollbackFlag = message.getFlag("deltagreen", "rollbacks");
await actor.update(foundry.utils.deepClone(rollbackFlag));
// eslint-disable-next-line no-use-before-define
toggleAllSkillFailures(rollbackFlag);
const label = btnWithAction
.closest(".rollback-section")
?.querySelector("label");
const oldHtml = label.outerHTML;
label.classList.toggle("strike");
message.update({
[`flags.deltagreen.rollbacks`]: rollbackFlag,
content: message.content.replace(oldHtml, label.outerHTML),
});
}
}
function toggleAllSkillFailures(data) {
for (const skill of Object.values(data.system?.skills || {})) {
skill.failure = !skill.failure;
}
for (const skill of Object.values(data.system?.typedSkills || {})) {
skill.failure = !skill.failure;
}
}