From 5560fc24d4333066f151103f02e89901c029cff8 Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 19 Oct 2020 18:30:53 -0700 Subject: [PATCH] Simplify macro creation for formula attributes --- module/macro.js | 31 +++---------------------------- module/simple.js | 5 ++--- 2 files changed, 5 insertions(+), 31 deletions(-) diff --git a/module/macro.js b/module/macro.js index b194747..1e98740 100644 --- a/module/macro.js +++ b/module/macro.js @@ -6,42 +6,17 @@ * @returns {Promise} */ export async function createWorldbuildingMacro(data, slot) { - const item = data; - - // Create the macro command - const command = `game.worldbuilding.rollAttrMacro("${item.label}", "${item.roll}");`; + const command = `const roll = new Roll("${data.roll}", actor ? actor.getRollData() : {}); + roll.toMessage({speaker, flavor: "${data.label}"});`; let macro = game.macros.entities.find(m => (m.name === item.label) && (m.command === command)); if (!macro) { macro = await Macro.create({ - name: item.label, + name: data.label, type: "script", command: command, flags: { "worldbuilding.attrMacro": true } }); } - game.user.assignHotbarMacro(macro, slot); return false; } - -/** - * Create a Macro from an Item drop. - * Get an existing item macro if one exists, otherwise create a new one. - * @param {string} itemName - * @return {Promise} - */ -export function rollAttrMacro(attrName, attrFormula) { - let actor; - // Get the speaker and actor if not provided. - const speaker = ChatMessage.getSpeaker({ actor: this.actor }); - if (speaker.token) actor = game.actors.tokens[speaker.token]; - if (!actor) actor = game.actors.get(speaker.actor); - - // Create the roll. - let r = new Roll(attrFormula, actor.getRollData()); - r.roll().toMessage({ - user: game.user._id, - speaker: speaker, - flavor: attrName - }); -} \ No newline at end of file diff --git a/module/simple.js b/module/simple.js index e87ca6b..173167e 100644 --- a/module/simple.js +++ b/module/simple.js @@ -9,7 +9,7 @@ import { SimpleActor } from "./actor.js"; import { SimpleItemSheet } from "./item-sheet.js"; import { SimpleActorSheet } from "./actor-sheet.js"; import { preloadHandlebarsTemplates } from "./templates.js"; -import { createWorldbuildingMacro, rollAttrMacro } from "./macro.js"; +import { createWorldbuildingMacro } from "./macro.js"; /* -------------------------------------------- */ /* Foundry VTT Initialization */ @@ -32,8 +32,7 @@ Hooks.once("init", async function() { game.worldbuilding = { SimpleActor, - createWorldbuildingMacro, - rollAttrMacro, + createWorldbuildingMacro }; // Define custom Entity classes