Error checking for the fate type parsing in all potential problem locations

This commit is contained in:
Chris Ryan 2025-12-10 22:09:28 +10:00
parent 9ce5c27c85
commit 3e366a4c44
2 changed files with 35 additions and 7 deletions

View file

@ -10,7 +10,7 @@ import { enricherConfig, enricherRenderSetup } from './module/enrichers/_module.
import { getCommandTarget, rollCommandToJSON } from './module/helpers/utils.mjs'; import { getCommandTarget, rollCommandToJSON } from './module/helpers/utils.mjs';
import { BaseRoll, DHRoll, DualityRoll, D20Roll, DamageRoll, FateRoll } from './module/dice/_module.mjs'; import { BaseRoll, DHRoll, DualityRoll, D20Roll, DamageRoll, FateRoll } from './module/dice/_module.mjs';
import { enrichedDualityRoll } from './module/enrichers/DualityRollEnricher.mjs'; import { enrichedDualityRoll } from './module/enrichers/DualityRollEnricher.mjs';
import { enrichedFateRoll } from './module/enrichers/FateRollEnricher.mjs'; import { enrichedFateRoll, getFateType } from './module/enrichers/FateRollEnricher.mjs';
import { import {
handlebarsRegistration, handlebarsRegistration,
runMigrations, runMigrations,
@ -259,12 +259,10 @@ Hooks.on('chatMessage', (_, message) => {
const { result: rollCommand, flavor } = result; const { result: rollCommand, flavor } = result;
const fateTypeFromRollCommand = rollCommand?.type ? const fateTypeFromRollCommand = getFateType(rollCommand?.type);
(rollCommand?.type?.toLowerCase() == "fear" ? "Fear" :
(rollCommand?.type?.toLowerCase() == "hope" ? "Hope" : "BAD")) : "Hope";
if (fateTypeFromRollCommand == "BAD") { if (fateTypeFromRollCommand == "BAD") {
ui.notifications.error(game.i18n.localize('DAGGERHEART.UI.Notifications.fateParsing')); ui.notifications.error(game.i18n.localize('DAGGERHEART.UI.Notifications.fateParsing') + ". Bad Fate Type. Valid Fate Types are 'Hope' and 'Fear'.");
return false; return false;
} }

View file

@ -4,11 +4,33 @@ export default function DhFateRollEnricher(match, _options) {
const roll = rollCommandToJSON(match[1], match[0]); const roll = rollCommandToJSON(match[1], match[0]);
if (!roll) return match[0]; if (!roll) return match[0];
const fateTypeFromRoll = getFateType(roll?.type);
if (fateTypeFromRoll == "BAD") {
ui.notifications.error(game.i18n.localize('DAGGERHEART.UI.Notifications.fateParsing') + ". Bad Fate Type. Valid Fate Types are 'Hope' and 'Fear'.");
return;
}
return getFateMessage(roll.result, roll?.flavor); return getFateMessage(roll.result, roll?.flavor);
} }
export function getFateType(fateTypeValue) {
const fateTypeFromValue = fateTypeValue ?
(fateTypeValue.toLowerCase() == "fear" ? "Fear" :
(fateTypeValue.toLowerCase() == "hope" ? "Hope" : "BAD")) : "Hope";
return fateTypeFromValue;
}
function getFateMessage(roll, flavor) { function getFateMessage(roll, flavor) {
const fateType = roll?.type ?? 'Hope'; const fateType = getFateType(roll?.type);
if (fateType == "BAD") {
ui.notifications.error(game.i18n.localize('DAGGERHEART.UI.Notifications.fateParsing') + ". Bad Fate Type. Valid Fate Types are 'Hope' and 'Fear'.");
return '';
}
const fateTypeLocalized = fateType === "Hope" ? game.i18n.localize("DAGGERHEART.GENERAL.hope") : game.i18n.localize("DAGGERHEART.GENERAL.fear"); const fateTypeLocalized = fateType === "Hope" ? game.i18n.localize("DAGGERHEART.GENERAL.hope") : game.i18n.localize("DAGGERHEART.GENERAL.fear");
const title = flavor ?? fateTypeLocalized + ' ' + const title = flavor ?? fateTypeLocalized + ' ' +
@ -34,13 +56,21 @@ function getFateMessage(roll, flavor) {
export const renderFateButton = async event => { export const renderFateButton = async event => {
const button = event.currentTarget, const button = event.currentTarget,
target = getCommandTarget({ allowNull: true }); target = getCommandTarget({ allowNull: true });
console.log("button", button);
const fateTypeFromButton = getFateType(button.dataset?.fatetype);
if (fateTypeFromButton == "BAD") {
ui.notifications.error(game.i18n.localize('DAGGERHEART.UI.Notifications.fateParsing') + ". Bad Fate Type. Valid Fate Types are 'Hope' and 'Fear'.");
return;
}
await enrichedFateRoll( await enrichedFateRoll(
{ {
target, target,
title: button.dataset.title, title: button.dataset.title,
label: button.dataset.label, label: button.dataset.label,
fateType: button.dataset.fatetype fateType: fateTypeFromButton
}, },
event event
); );