diff --git a/packs/macros-module-specific.db b/packs/macros-module-specific.db index e69de29..d1ae378 100644 --- a/packs/macros-module-specific.db +++ b/packs/macros-module-specific.db @@ -0,0 +1 @@ +{"name":"Token Favorite Action","type":"script","scope":"global","author":"9xl2JLocACiT1lMg","img":"icons/svg/dice-target.svg","command":"/*\n* FAVORITE ACTION PICKER\n* Requires: DND5e with Tidy5eSheet extension\n* --------------------------------------------------------------------------------\n* Provides handy and minimalistic, icon based menu for accessing actions that checked\n* in as favorite for a selected token or main character.\n* --------------------------------------------------------------------------------\n* Author: Broadway-afk\n* This script forked from show_token_actions.js macro made by shawndibble and stick#0520\n*/\n\nclass ActionDialog extends Application {\n getData(){\n // Get user's character or the first token from the controlled list.\n function getTargetActor() {\n const character = game.user.character;\n if (character)\n return character;\n\n const controlled = canvas.tokens.controlled;\n\n if (controlled.length > 0 && controlled[0] !== null)\n return controlled[0].actor;\n }\n\n function buildActionsList(targetActor) {\n let actionsList = [];\n Object.entries(targetActor.itemTypes).forEach(([type, items]) => {\n items.forEach(item => {\n if (item.flags[\"tidy5e-sheet\"]?.favorite) {\n actionsList.push(item);\n }\n });\n })\n return actionsList;\n }\n\n function getContentTemplate(actions) {\n let actionButtonsTemplate = actions.map((action) => {\n let displayName = action.name.split(\" /\")[0];\n let initials = displayName.split(\" \").map((item) => item[0]).join(\"\").toUpperCase();\n return ``\n }).join(\" \");\n\n return `\n ${getCssStyle()}\n
\n ${actionButtonsTemplate}\n
\n `;\n }\n\n function getCssStyle() {\n return ``\n }\n\n function getRollItemMacro(itemName) {\n return `game.dnd5e.rollItemMacro("${itemName}")`;\n }\n\n let targetActor = getTargetActor();\n let innerContent = \"\";\n\n if (targetActor) {\n this.options.title = `${targetActor.name} favorite actions`;\n let actionLists = buildActionsList(targetActor);\n innerContent = getContentTemplate(actionLists);\n } else {\n ui.notifications.error(\"No token selected or user character found.\");\n throw new Error(\"No token selected or character found\");\n }\n\n let content = `
${innerContent}
`;\n let contentsObject = {content:`${content}`}\n return contentsObject;\n }\n}\n\nlet opt=Dialog.defaultOptions;\nopt.resizable=true;\nopt.minimizable=true;\nopt.width=600;\nlet viewer;\nviewer = new ActionDialog(opt);\nviewer.render(true);","ownership":{"default":0,"9xl2JLocACiT1lMg":3},"flags":{"core":{"sourceId":"Macro.eKi2YKRqMXaVYgWC"}},"_stats":{"systemId":"dnd5e","systemVersion":"2.1.4","coreVersion":"10.291","createdTime":1676359091029,"modifiedTime":1676359141430,"lastModifiedBy":"9xl2JLocACiT1lMg"},"folder":null,"sort":0,"_id":"mGIy84rESg0w7xxK"}