diff --git a/src/module/helpers.js b/src/module/helpers.js index c21b45b..dad9b44 100644 --- a/src/module/helpers.js +++ b/src/module/helpers.js @@ -94,35 +94,13 @@ export function helpersRenderChatMessage(message, html, data) { )?.id; } const result = await actor[rollFunc](rollId, options); - tokenData.resolved = true; - tokenData.total = result.total; - if (result.successes == -1) { - tokenData.icon = '⛝'; - tokenData.resolveClass = 'critFail'; - tokenData.value = 'Critical Failure!'; - } else if (result.successes == 0) { - tokenData.icon = '⛒'; - tokenData.value = 'Failure'; - tokenData.resolveClass = 'failure'; - } else if (result.successes == 1) { - tokenData.icon = '✓'; - tokenData.value = 'Success'; - tokenData.resolveClass = 'success'; - } else if (result.successes == 2) { - tokenData.icon = '✓✓'; - tokenData.value = `Success and a raise!`; - tokenData.resolveClass = 'raise'; - } else { - tokenData.icon = '✓✓'; - tokenData.value = `Success and ${result.successes - 1} raises!`; - tokenData.resolveClass = 'raise'; - } - await message.setFlag('swade-mb-helpers', `rollRequest.tokens.${tokenId}`, tokenData); - log('result', result); - const newData = message.getFlag('swade-mb-helpers', 'rollRequest'); - const template = templates['rollRequest/chatcard.html']; - const newContent = await foundry.applications.handlebars.renderTemplate(template, newData); - await message.update({ content: newContent }); + moduleHelpers.socket.executeAsGM( + updateRequestRollChat, + message._id, + tokenUuid, + result.total, + result.successes, + ); }); } else { buttonSpan.remove(); @@ -131,8 +109,49 @@ export function helpersRenderChatMessage(message, html, data) { } } -export function helpersRenderChatLog(app, html, data) { - // log('RENDER CHAT LOG', app, html, data); +export async function updateRequestRollChat(messageId, tokenUuid, total, successes) { + log('Update chat', messageId, tokenUuid, total, successes); + const message = game.messages.get(messageId); + if (!message) { + return; + } + const token = foundry.utils.fromUuidSync(tokenUuid); + const tokenData = { + resolved: true, + total, + }; + switch (successes) { + case -1: + tokenData.icon = '⛝'; + tokenData.resolveClass = 'critFail'; + tokenData.value = 'Critical Failure!'; + break; + case 0: + tokenData.icon = '⛒'; + tokenData.value = 'Failure'; + tokenData.resolveClass = 'failure'; + break; + case 1: + tokenData.icon = '✓'; + tokenData.value = 'Success'; + tokenData.resolveClass = 'success'; + break; + case 2: + tokenData.icon = '✓✓'; + tokenData.value = `Success & raise!`; + tokenData.resolveClass = 'raise'; + break; + default: + tokenData.icon = '✓✓'; + tokenData.value = `Success & ${successes - 1} raises!`; + tokenData.resolveClass = 'raise'; + break; + } + await message.setFlag('swade-mb-helpers', `rollRequest.tokens.${token._id}`, tokenData); + const newData = message.getFlag('swade-mb-helpers', 'rollRequest'); + const template = templates['rollRequest/chatcard.html']; + const newContent = await foundry.applications.handlebars.renderTemplate(template, newData); + await message.update({ content: newContent }); } export async function requestRollFromTokens(tokens, rollType, rollDesc, options = {}) { diff --git a/src/module/swade-mb-helpers.js b/src/module/swade-mb-helpers.js index 161b5f2..ebbee5a 100644 --- a/src/module/swade-mb-helpers.js +++ b/src/module/swade-mb-helpers.js @@ -14,7 +14,7 @@ import { SwadeVAEbuttons, updateOwnedToken, helpersRenderChatMessage, - helpersRenderChatLog, + updateRequestRollChat, } from './helpers.js'; import { preAttackRollModifiers, preDamageRollModifiers, preTraitRollModifiers } from './rollHelpers.js'; import { log, moduleHelpers } from './globals.js'; @@ -54,7 +54,6 @@ function _checkModule(name) { Hooks.on('preCreateItem', embeddedHelperHook); Hooks.on('renderChatMessageHTML', helpersRenderChatMessage); -Hooks.on('renderChatLogHTML', helpersRenderChatLog); Hooks.on('swadePreRollAttribute', preTraitRollModifiers); Hooks.on('swadePreRollSkill', preTraitRollModifiers); Hooks.on('swadeCalculateDefaultAttackMods', preAttackRollModifiers); @@ -66,6 +65,7 @@ Hooks.on('visual-active-effects.createEffectButtons', SwadeVAEbuttons); Hooks.once('socketlib.ready', () => { const _socket = socketlib.registerModule('swade-mb-helpers'); + _socket.register('updateRequestRollChat', updateRequestRollChat); _socket.register('requestTokenRoll', requestTokenRoll); _socket.register('updateOwnedToken', updateOwnedToken); _socket.register('deleteToken', deleteToken); diff --git a/src/templates/rollRequest/chatcard.html b/src/templates/rollRequest/chatcard.html index 7d51568..6a9d9d0 100644 --- a/src/templates/rollRequest/chatcard.html +++ b/src/templates/rollRequest/chatcard.html @@ -7,24 +7,28 @@ Token - Result + Result {{#each tokens}} {{name}} - - {{#unless resolved}} + {{#unless resolved}} + Waiting... - {{/unless}} - {{#if resolved}} + + {{/unless}} + {{#if resolved}} + {{total}} + + {{icon}} {{value}} - {{/if}} + {{/if}} {{/each}}