when i run this, it plays an effect, but not the custom effect i have entered. it just does a burn-fire at the caster's location. am i missing something? my use-case is that effect happen before roll20AM plays the sound for them. So, i'll just do it form the API with a setTimeout. on('chat:message', (msg) => { if (msg.type !== 'api' || !msg.content.startsWith('!attack')) return; const args = msg.content.split(' ').slice(1); if (args.length < 2) { const errorMessage = "Error: '!attack caster target' requires two arguments: caster and target token IDs."; sendChat('', errorMessage); return; } const [casterId, targetId] = args; // Find the caster and target tokens const caster = getObj('graphic', casterId); const target = getObj('graphic', targetId); if (!caster || !target) { const errorMessage = `Error: Couldn't find tokens for caster ID: ${casterId} or target ID: ${targetId}.`; sendChat('test', errorMessage); return; } const trackName = "MESBeam"; const playTrackCommand = `!roll20AM --audio,play|${trackName}`; sendChat("API", playTrackCommand); setTimeout(() => { const fxType = "MESBeam"; // coordinates for the start and end points const startX = caster.get('left'); const startY = caster.get('top'); const endX = target.get('left'); const endY = target.get('top'); // Spawn the directional FX between the caster and target spawnFxBetweenPoints({ x: startX, y: startY }, { x: endX, y: endY }, fxType); }, 2000); });