Allows users to define custom Dynamic Entity Links that call macros. This module makes it possible to convert a single-use macro (e.g. activating a specific scene) into a reusable macro (e.g. activating any scene, given an id), that is still easily referenced using the Dynamic Entity Link system: @MyResuableMacro[id].
Included DML-Ready Macros
- ActivateScene - activate any scene from a journal using @ActivateScene[sceneId]
- PlayPlaylist - play any playlist using @PlayPlaylist[playlistId]
- PlayOnlyPlaylist - stop all playlists and then play a given playlist using @PlayOnlyPlaylist[playlistId]
Example Usage
A single use macro that activates a scene might look like this:
// Normal Macro with id 'macroId' 
const scene = game.scenes.get('sceneId');
if(scene !== null) { 
  scene.activate(); 
}
And get used in a journal entry like this:
// Normal Usage
@Macro['macroId']{Activate Scene with id "sceneId"}
With a small change, this macro becomes callable with Dynamic Macro Links.
// Dynamic Macro Link
const [id] = args; //args is a special environment variable available to macros called by DML 
const scene = game.scenes.get(id);
if(scene !== null) {
  scene.activate();
}
After we add the above macro to the Dynamic Macro Link settings, we can use it for multiple scenes:
// Dynamic Macro Links with name "ActivateScene"
@ActivateScene['sceneId']{Activate Scene with id "sceneId"}
@ActivateScene['anotherSceneId']{Activate Scene with id "anotherSceneId"}