Automated Evocations
A small window, the Companion Manager, that keeps a list of the creatures a character can summon: familiars, animal companions, conjured elementals, spiritual weapons. Click a creature and choose where to place it: its tokens appear on the scene with a summoning animation.
It works in every game system. The Portal library module must be installed and enabled, and Sequencer (opens in a new tab) is needed to play the summoning animations.
Getting Started

Open a character sheet, click the ⋮ button in its top-right corner and choose Companions. The Companion Manager
opens.
The first time it is empty. To add your first companion:
- Open the
Actorssidebar tab (or a compendium). - Drag the creature you want onto the Companion Manager window.
You have added your first companion! Add as many as you like: they stay in the list until you remove them.
Companion Manager

Each line of the list is one companion:
- Portrait: click it to summon the creature (see below).
- Name: click it to open the creature's sheet.
- Number: how many tokens to summon at once, for example
2for two wolves. - Animation: the effect played where the creature appears. They are grouped in Elemental (
Air,Fire,Four Elements,Ice,Lightning,Storm,Water), Magical (Darkness,Energy,Magic,Conjuration) and Other (Doki-Doki,Crescendo,Chord). - Trash can: removes the companion from the list, after asking for confirmation.
Type in the box at the top to filter the list by name, and drag a line up or down to change the order. The number and animation you choose are remembered for next time.
Summoning a Companion
As a GM, select the summoner's token on the scene before clicking a portrait, or the summon will not start. Players with an assigned character do not need to.
- Click the companion's portrait. The Companion Manager shrinks to its title bar.
- Move the mouse over the scene: a circle shows where the creature will appear.
- Left-click to place it, or right-click to cancel.
The animation plays and the tokens appear. Players can summon even if they are not allowed to create tokens, as long as a GM is connected.
Whose list is it?
By default each user has one companion list, and it is the same whichever character sheet they open it from. If a
player has several characters, or you want the GM's NPCs to have their own companions, turn on
Store Companions on Actor in the module settings: every character then keeps its own list.
To give a single character its own list without changing the setting, use the Store Companions On Actor macro (see
Included Compendiums).
Settings
Open them from Game Settings -> Configure Settings -> Automated Evocations - Companion Manager.
- Auto-Close: close the Companion Manager after a summon, instead of reopening it.
- Store Companions on Actor: keep a companion list for each character instead of one per user (see Whose list is it?).
- Hide Companion Button: remove
Companionsfrom the character sheet menu. Useful if you only open the Companion Manager from macros. - Only Owned Actors: only show the companions the user owns. Creatures a player cannot control are hidden from their list.
Included Compendiums
The module comes with two compendiums:
- Automated Evocations Summons (dnd5e only): ready-made creatures for summoning spells, such as
Flaming Sphere,Spiritual Weapon,Arcane Hand,Arcane Sword,Spectral GuardianandPhantom Watchdog. Drag them into the Companion Manager like any other actor. - Automated Evocations Macros:
Store Companions On ActorandStore Companions On Global for Actor: select a character's token and run one of these to switch that character between its own list and the user's list. Switching back does not delete the character's list.AE_Companion_Macro(...): Companion Macros for the summons above, which change the creature when it is summoned (see Companion Macros). Import a macro into your world for it to work.
Advanced
Companion Macros
A Companion Macro runs every time a creature with a given name is summoned, and can change the new token, its actor and its items, for example to scale damage with the spell level or use the caster's save DC.
- Create a script macro named
AE_Companion_Macro(Creature Name), with the creature's exact name: a macro for an actor namedBatis calledAE_Companion_Macro(Bat). - In the macro, read the summon data from
args[0]and return the changes to apply.
args[0] contains:
| Data | Description |
|---|---|
summon | The actor being summoned |
spellLevel | The level of the spell that summoned it (0 from the Companion Manager, see Opening the Companion Manager from a macro) |
duplicates | How many creatures are being summoned |
assignedActor | The summoner: the actor passed by the macro, else the user's assigned character, else the selected token's actor |
The returned object can have:
token: changes to the token, for example{ token: { name: "Flaming Sphere (Merric)" } }actor: changes to the summoned actorembedded: changes to its items, by item name or id:{ embedded: { Item: { "Item Name": { ... } } } }
This Flaming Sphere macro (dnd5e 6) sets the save DC to the caster's spell DC and adds 1d6 damage for every level above 2nd:
// Macro name: AE_Companion_Macro(Flaming Sphere)
const { spellLevel, assignedActor } = args[0];
const upcast = Math.max((spellLevel || 2) - 2, 0); // Flaming Sphere is a level 2 spell
const dc = assignedActor?.system.attributes.spell.dc ?? 10;
const dice = 2 + upcast;
return {
embedded: {
Item: {
"Flaming Sphere": {
"system.description.value": `<p>Any creature that ends its turn within 5 feet of the sphere, or has the sphere rammed into it, must make a Dexterity saving throw (DC ${dc}). The creature takes ${dice}d6 fire damage on a failed save, or half as much damage on a successful one.</p>`,
"system.activities.dnd5eactivity000.damage.parts": [{ number: dice, denomination: 6, types: ["fire"] }],
"system.activities.dnd5eactivity100.damage.parts": [{ number: dice, denomination: 6, types: ["fire"] }],
"system.activities.dnd5eactivity100.save.dc": { calculation: "", formula: `${dc}` },
},
},
},
};dnd5eactivity000 and dnd5eactivity100 are the ids of the activities of the Flaming Sphere item in the included
compendium actor. For your own creatures, read the ids from the item's activities.
Opening the Companion Manager from a macro
A macro can open a Companion Manager with a fixed list of creatures, for example from a spell with a macro attached. These creatures are not saved in any list, and the spell level is passed to the Companion Macros.
new SimpleCompanionManager(
[
{ id: game.actors.getName("Giant Rat").id, animation: "darkness", number: 4 },
{ id: game.actors.getName("Dire Wolf").id, animation: "air", number: 1 },
],
3, // spell level, passed to the Companion Macros
_token?.actor, // the summoner
60, // optional: range in feet, drawn around the selected token
"icons/svg/fire.svg" // optional: image shown inside the range circle
).render(true);id can be an actor id or a UUID (for compendium actors). The animation ids are the names in lowercase, except
energy1 (Energy), magic1 (Magic), magic2 (Conjuration), ice1 (Ice), lightning2 (Storm),
fourelements (Four Elements), heart (Doki-Doki), music (Crescendo) and music2 (Chord).
Custom Animations
You can add your own animations to the list by saving them in a hidden world setting.
Saving this setting replaces its previous value: keep all your custom animations in one macro and run it again every time you add one.
const customanims = {
energy2: {
fn: "light2", // name of the macro that plays the animation
time: 650, // milliseconds to wait after the animation starts before the tokens appear
name: "Energy 2", // name shown in the dropdown
group: "My Group", // optional: dropdown group
},
};
game.settings.set("automated-evocations", "customanimations", customanims);Reload the page after running it. The animation macro (here named light2) receives the placement position in
args[0] and the token data in args[1]:
const template = args[0];
const tokenData = args[1];
const tokenScale = (Math.abs(tokenData.texture.scaleX) + Math.abs(tokenData.texture.scaleY)) / 2;
await new Sequence()
.effect()
.file("modules/automated-evocations/assets/animations/energy_spark_CIRCLE_01.webm")
.belowTokens()
.randomRotation()
.atLocation(template, { randomOffset: true })
.repeats(6, 50, 25, 75, 60, 20)
.scale(Math.max(tokenData.width, tokenData.height) * tokenScale * 0.15)
.wait(500)
.effect()
.file("modules/automated-evocations/assets/animations/energy_pulse_yellow_CIRCLE.webm")
.belowTokens()
.atLocation(template)
.scale(Math.max(tokenData.width, tokenData.height) * tokenScale * 0.35)
.play();Hooks
automated-evocations.preCreateToken: just before the tokens are created, withtokenData,customTokenData,posData,actor,spellLevel,duplicatesandassignedActor.automated-evocations.postSummon: after the summon, with the same data plussummonedTokens.automated-evocations.saveCompanionData: when a companion list is saved, withactoranddata.
Credits
- The
Fire,Air,Lightning,Water,Energy,Magic,Doki-Doki,CrescendoandFour Elementsanimations are from Jack Kerouac's Animated Spell Effects: Cartoon (opens in a new tab), with his permission. - The
Chord,Darkness,Ice,ConjurationandStormanimations are courtesy of JB2A (opens in a new tab), with their permission. - Sequencer (opens in a new tab) plays the animations and Portal places the tokens.
- Some images are from Game Icons (opens in a new tab).