Hooks.on("createChatMessage", async (chatMessage) => { try{ if(game.system.id != "dnd5e")return; if (!chatMessage.isAuthor || !game.settings.get(AECONSTS.MN, "enableautomations")) return; const messageContent = $(chatMessage.content); if(!messageContent.length)return; const actorId = messageContent[0].dataset.actorId; const itemId = messageContent[0].dataset.itemId; const spellLevel = parseInt(messageContent[0].dataset.spellLevel); const tokenId = messageContent[0].dataset.tokenId; const token = tokenId ? await fromUuid(tokenId) : null; const actor = token?.actor ?? game.actors.get(actorId); if(!actor) return; const spellName = actor?.items?.get(itemId)?.name; const spellItem = actor?.items?.get(itemId); let system = game.automatedevocations[game.system.id]; if (!system) return; if (system[spellName]) { //attempt to get spell level let summonData = []; const data = {level:spellLevel} const creatures = typeof system[spellName] === "function" ? system[spellName](data) : system[spellName]; for (let creature of creatures) { if (creature.level && spellLevel && creature.level >= spellLevel) continue; let actor = game.actors.getName(creature.creature); if (actor) { summonData.push({ id: actor.id, number: creature.number, animation: creature.animation, }); } } new SimpleCompanionManager(summonData,spellLevel,canvas.tokens.get(chatMessage?.speaker?.token)?.actor, spellItem?.system?.range?.value, spellItem?.img).render(true); } }catch(e){} }); Hooks.on("createChatMessage", async (chatMessage) => { if(game.system.id != "pf2e")return; if (chatMessage.user !== game.user.id || !game.settings.get(AECONSTS.MN, "enableautomations")) return; const item = await fromUuid(chatMessage.flags.pf2e.origin.uuid) const spellName = item.document.name; let system = game.automatedevocations[game.system.id]; if (!system) return; if (system[spellName]) { let summonData = []; const spellLevel = $(chatMessage.content)?.data("spell-lvl") const data = {level:item, spellLevel:spellLevel} //const data = {level:item} const creatures = typeof system[spellName] === "function" ? system[spellName](data) : system[spellName]; for (let creature of creatures) { if (creature.level && spellLevel && creature.level >= spellLevel) continue; let actor = game.actors.getName(creature.creature); if (actor) { summonData.push({ id: actor.id, number: creature.number, animation: creature.animation, }); } } new SimpleCompanionManager(summonData,spellLevel,canvas.tokens.get(chatMessage?.data?.speaker?.token)?.actor).render(true); } });