diff --git a/macros/summon.js b/macros/summon.js new file mode 100644 index 0000000..3381fdd --- /dev/null +++ b/macros/summon.js @@ -0,0 +1,49 @@ +const ACTORFOLDER = 'Summonables' + +swadeMBHelpers.runOnTargetOrSelectedTokens(main) + +async function main (tokens) { + const token = tokens[0] + const tokenList = token.name + const folder = swadeMBHelpers.getActorFolderByPath(ACTORFOLDER) + const actors = swadeMBHelpers.getActorsInFolder(folder) + const menuOptions = { + title: 'Summon Creature', + defaultButton: 'cancel', + options: {} + } + const menuData = { + inputs: [ + { type: 'header', label: 'Summon Creature' }, + { type: 'info', label: `${tokenList} is summoning` }, + { + type: 'select', + label: 'Ally to summon', + options: Object.keys(actors).sort().map(k => { return { value: actors[k].id, html: k } }) + }, + { type: 'number', label: 'Number to spawn (+half base cost per)', options: 1 } + ], + buttons: [ + { label: 'Apply', value: 'apply' }, + { label: 'Apply with raise', value: 'raise' }, + { label: 'Cancel', value: 'cancel' } + ] + } + const { buttons, inputs } = await warpgate.menu(menuData, menuOptions) + if (buttons && buttons !== 'cancel') { + const summonData = { + raise: (buttons === 'raise'), + actorId: inputs[2], + number: inputs[3] + } + summonData.actor = game.actors.get(summonData.actorId) + summonData.actorName = summonData.actor.name + summonData.icon = summonData.actor.token.img + + doWork(summonData, token) + } +} + +function doWork (summonData, token) { + console.log(summonData, token) +}