import { createDGRollChatMessage } from "./dg-chat-card.js"; /** * Underlined "{amount} Willpower" span with a current/max tooltip for chat roll labels. * * @param {object} params * @param {number} params.amount Willpower lost or regained. * @param {number} params.current * @param {number} params.max * @returns {string} */ export function buildWillpowerChangeSpan({ amount, current, max }) { const willpower = game.i18n.localize("DG.Physical.Chat.Willpower"); const tooltip = game.i18n.format("DG.Physical.Chat.WillpowerTooltip", { current, max, }); const label = game.i18n.format("DG.Physical.Chat.WillpowerAmount", { amount, willpower, }); return `${foundry.utils.escapeHTML(label)}`; } /** * @param {object} params * @param {Actor} params.actor * @param {TokenDocument|null} [params.token] * @param {string} [params.contentKey] i18n key for message body. * @param {string} [params.labelKey] i18n key for the roll-label row when rollLabelKey is omitted. * @param {string} [params.rollLabelKey] i18n key for a formatted roll-label row (HTML). * @param {Record} params.i18nData * @param {Roll} params.roll Roll attached to the chat message for display and Dice So Nice. * @param {string|null} [params.extraContentKey] Optional i18n key appended on a new line after the main body. * @returns {Promise} */ export default async function createAgentResourceChatMessage({ actor, token = null, contentKey = null, labelKey = "", rollLabelKey = null, i18nData, roll, extraContentKey = null, }) { let content = contentKey ? game.i18n.format(contentKey, i18nData) : ""; if (extraContentKey) { const extra = game.i18n.format(extraContentKey, i18nData); content = content ? `${content}
${extra}` : extra; } const rollLabel = rollLabelKey ? game.i18n.format(rollLabelKey, i18nData) : labelKey ? game.i18n.localize(labelKey) : ""; const messageMode = game.settings.get("core", "messageMode"); return createDGRollChatMessage({ actor, token, roll, rollLabel, content, messageMode, }); }