diff --git a/daggerheart.mjs b/daggerheart.mjs index 23f153dd..ae93253c 100644 --- a/daggerheart.mjs +++ b/daggerheart.mjs @@ -300,8 +300,8 @@ Hooks.on('chatMessage', (_, message) => { const difficulty = rollCommand.difficulty; const target = getCommandTarget({ allowNull: true }); - const title = flavor ?? - traitValue ? game.i18n.format('DAGGERHEART.UI.Chat.dualityRoll.abilityCheckTitle', { + const title = traitValue + ? game.i18n.format('DAGGERHEART.UI.Chat.dualityRoll.abilityCheckTitle', { ability: game.i18n.localize(SYSTEM.ACTOR.abilities[traitValue].label) }) : game.i18n.localize('DAGGERHEART.GENERAL.duality'); diff --git a/module/applications/dialogs/deathMove.mjs b/module/applications/dialogs/deathMove.mjs index 01df6057..18ebf104 100644 --- a/module/applications/dialogs/deathMove.mjs +++ b/module/applications/dialogs/deathMove.mjs @@ -180,8 +180,7 @@ export default class DhDeathMove extends HandlebarsApplicationMixin(ApplicationV 'systems/daggerheart/templates/ui/chat/deathMove.hbs', { player: this.actor.name, - actor: this.actor, - actorId: this.actor._id, + actor: { name: this.actor.name, img: this.actor.img }, author: game.users.get(game.user.id), title: game.i18n.localize(this.selectedMove.name), img: this.selectedMove.img, diff --git a/module/applications/dialogs/riskItAllDialog.mjs b/module/applications/dialogs/riskItAllDialog.mjs index 10fa1bb4..9bdd5dc2 100644 --- a/module/applications/dialogs/riskItAllDialog.mjs +++ b/module/applications/dialogs/riskItAllDialog.mjs @@ -41,8 +41,6 @@ export default class RiskItAllDialog extends HandlebarsApplicationMixin(Applicat async _prepareContext(_options) { const context = await super._prepareContext(_options); context.resourceValue = this.resourceValue; - context.maxHitPointsValue = Math.min(this.resourceValue, this.actor.system.resources.hitPoints.max); - context.maxStressValue = Math.min(this.resourceValue, this.actor.system.resources.stress.max); context.remainingResource = this.resourceValue - this.choices.hitPoints - this.choices.stress; context.unfinished = context.remainingResource !== 0; diff --git a/module/applications/ui/chatLog.mjs b/module/applications/ui/chatLog.mjs index 2b489f58..f0c7288c 100644 --- a/module/applications/ui/chatLog.mjs +++ b/module/applications/ui/chatLog.mjs @@ -391,7 +391,6 @@ export default class DhpChatLog extends foundry.applications.sidebar.tabs.ChatLo async riskItAllClearStressAndHitPoints(event, data) { const resourceValue = event.target.dataset.resourceValue; - const actor = game.actors.get(event.target.dataset.actorId); - new game.system.api.applications.dialogs.RiskItAllDialog(actor, resourceValue).render({ force: true }); + new game.system.api.applications.dialogs.RiskItAllDialog(data.actor, resourceValue).render({ force: true }); } } diff --git a/module/data/item/base.mjs b/module/data/item/base.mjs index 2399b7db..0c9fdabe 100644 --- a/module/data/item/base.mjs +++ b/module/data/item/base.mjs @@ -240,7 +240,7 @@ export default class BaseDataItem extends foundry.abstract.TypeDataModel { game.system.registeredTriggers.unregisterTriggers(triggersToRemove, this.parent.uuid); - if (this.parent.parent && !(this.parent.parent.token instanceof game.system.api.documents.DhToken)) { + if (!(this.parent.parent.token instanceof game.system.api.documents.DhToken)) { for (const token of this.parent.parent.getActiveTokens()) { game.system.registeredTriggers.unregisterTriggers( triggersToRemove, diff --git a/module/data/registeredTriggers.mjs b/module/data/registeredTriggers.mjs index 8a100585..fe962c5e 100644 --- a/module/data/registeredTriggers.mjs +++ b/module/data/registeredTriggers.mjs @@ -60,7 +60,7 @@ export default class RegisteredTriggers extends Map { unregisterItemTriggers(items) { for (const item of items) { - if (!item.system.actions?.size) continue; + if (!item.system.actions.size) continue; const triggers = (item.system.actions ?? []).reduce((acc, action) => { acc.push(...action.triggers.map(x => x.trigger)); diff --git a/module/dice/dualityRoll.mjs b/module/dice/dualityRoll.mjs index 0edbe5ad..3091deaf 100644 --- a/module/dice/dualityRoll.mjs +++ b/module/dice/dualityRoll.mjs @@ -118,6 +118,10 @@ export default class DualityRoll extends D20Roll { /** @inheritDoc */ static fromData(data) { + if (data.options.guaranteedCritical) { + console.log('TODO: set the max values for Hope and Fear here?'); + } + data.terms[0].class = foundry.dice.terms.Die.name; data.terms[2].class = foundry.dice.terms.Die.name; return super.fromData(data); diff --git a/module/documents/item.mjs b/module/documents/item.mjs index fe62c5bd..0a163dab 100644 --- a/module/documents/item.mjs +++ b/module/documents/item.mjs @@ -217,7 +217,7 @@ export default class DHItem extends foundry.documents.Item { game.system.registeredTriggers.unregisterTriggers(triggerKeys, this.uuid); - if (this.actor && !(this.actor.parent instanceof game.system.api.documents.DhToken)) { + if (!(this.actor.parent instanceof game.system.api.documents.DhToken)) { for (const token of this.actor.getActiveTokens()) { game.system.registeredTriggers.unregisterTriggers(triggerKeys, `${token.document.uuid}.${this.uuid}`); } diff --git a/module/enrichers/DualityRollEnricher.mjs b/module/enrichers/DualityRollEnricher.mjs index f6f022f9..1ba4c792 100644 --- a/module/enrichers/DualityRollEnricher.mjs +++ b/module/enrichers/DualityRollEnricher.mjs @@ -2,7 +2,7 @@ import { abilities } from '../config/actorConfig.mjs'; import { getCommandTarget, rollCommandToJSON } from '../helpers/utils.mjs'; export default function DhDualityRollEnricher(match, _options) { - const roll = rollCommandToJSON(match[0]); + const roll = rollCommandToJSON(match[1], match[0]); if (!roll) return match[0]; return getDualityMessage(roll.result, roll.flavor); diff --git a/module/enrichers/FateRollEnricher.mjs b/module/enrichers/FateRollEnricher.mjs index c82bbcb2..c50a563b 100644 --- a/module/enrichers/FateRollEnricher.mjs +++ b/module/enrichers/FateRollEnricher.mjs @@ -1,7 +1,7 @@ import { getCommandTarget, rollCommandToJSON } from '../helpers/utils.mjs'; export default function DhFateRollEnricher(match, _options) { - const roll = rollCommandToJSON(match[0]); + const roll = rollCommandToJSON(match[1], match[0]); if (!roll) return match[0]; return getFateMessage(roll.result, roll?.flavor); @@ -45,6 +45,7 @@ function getFateMessage(roll, flavor) { export const renderFateButton = async event => { const button = event.currentTarget, target = getCommandTarget({ allowNull: true }); + console.log('button', button); const fateTypeData = getFateTypeData(button.dataset?.fatetype); diff --git a/module/helpers/utils.mjs b/module/helpers/utils.mjs index 1cce581a..234b68b4 100644 --- a/module/helpers/utils.mjs +++ b/module/helpers/utils.mjs @@ -5,10 +5,10 @@ export const capitalize = string => { return string.charAt(0).toUpperCase() + string.slice(1); }; -export function rollCommandToJSON(text) { +export function rollCommandToJSON(text, raw) { if (!text) return {}; - const flavorMatch = text?.match(/{(.*)}$/); + const flavorMatch = raw?.match(/{(.*)}$/); const flavor = flavorMatch ? flavorMatch[1] : null; // Match key="quoted string" OR key=unquotedValue @@ -31,7 +31,7 @@ export function rollCommandToJSON(text) { } result[key] = value; } - return { result, flavor }; + return Object.keys(result).length > 0 ? { result, flavor } : null; } export const getCommandTarget = (options = {}) => { diff --git a/src/packs/domains/domainCard_Bold_Presence_tdsL00yTSLNgZWs6.json b/src/packs/domains/domainCard_Bold_Presence_tdsL00yTSLNgZWs6.json index 08110cca..02698989 100644 --- a/src/packs/domains/domainCard_Bold_Presence_tdsL00yTSLNgZWs6.json +++ b/src/packs/domains/domainCard_Bold_Presence_tdsL00yTSLNgZWs6.json @@ -81,7 +81,7 @@ "name": "Bold Presence", "img": "icons/magic/holy/barrier-shield-winged-blue.webp", "origin": "Compendium.daggerheart.domains.Item.tdsL00yTSLNgZWs6", - "transfer": true, + "transfer": false, "_id": "2XEYhuAcRGTtqvED", "type": "base", "system": { diff --git a/system.json b/system.json index 8e4d19d9..f9131987 100644 --- a/system.json +++ b/system.json @@ -2,7 +2,7 @@ "id": "daggerheart", "title": "Daggerheart", "description": "An unofficial implementation of the Daggerheart system", - "version": "1.5.4", + "version": "1.5.2", "compatibility": { "minimum": "13.346", "verified": "13.351", diff --git a/templates/dialogs/riskItAllDialog.hbs b/templates/dialogs/riskItAllDialog.hbs index 98f89416..edb2fbf6 100644 --- a/templates/dialogs/riskItAllDialog.hbs +++ b/templates/dialogs/riskItAllDialog.hbs @@ -10,11 +10,11 @@