Eric E. said: I've been playing with token-mod, and cant find a way to take a drawing of a wall in the DL layer to the gmlayer, so it ceases to obscure light or/and prevent passage. Whether I select the shape in the DL layer or start by naming its ID, there is just no way to make it work. Also, it might have a link to the fact I am using UDLwindow. This the simple macro that does nothing : !token-mod --ids -MuRmZf3Al7vPxrvGZzA --set layer|gmlayer What's wrong ? It's possible to move the drawings on the DL layer, but unless Aaron has updated TokenMod, I believe you need a different API. Here's a thread where we discuss options. This ability is built into some of the full-featured door managing scripts, but I usually prefer simpler methods with a lower setup cost. How to move drawn lines on the DL Layer. to GM layer: !movelight gmlayer -M6vpypwKC2-LzGJr3RS -LJdaF9LwaqkFmTmA0uC to DL Layer: !movelight walls -M6vre7ctu7KWgV94FyR -M6vriHPBmriVdd42EIx to objects Layer: !movelight objects -M6vre7ctu7KWgV94FyR -M6vriHPBmriVdd42EIx to map Layer: !movelight map -M6vre7ctu7KWgV94FyR -M6vriHPBmriVdd42EIx // By: Kastion // Contact: <a href="https://app.roll20.net/users/3173313/kastion" rel="nofollow">https://app.roll20.net/users/3173313/kastion</a> var moveLighting = moveLighting || (function(){ 'use strict'; var showHelp = function() { sendChat('Move Lighting Script', '/w gm '+ '<div style="border: 1px solid black; background-color: white; padding: 3px 3px;">'+ '<div style="font-weight: bold; border-bottom: 1px solid black;font-size: 130%;">'+ 'moveLighting'+ '<div style="clear: both"></div>'+ '</div>'+ '<div style="padding-left:10px;margin-bottom:3px;">'+ '<p>Allows the GM to move what layer a lighting path is on.</p>'+ '</div>'+ '<b>Commands</b>'+ '<div style="padding-left:10px;"><b><span style="font-family: serif;">!movelight [layer] [ID]</span></b>'+ '<div style="padding-left: 10px;padding-right:20px; font-size:12px;">'+ 'Valid Layer Options Are: map, objects, gmlayer, walls'+ '</div>'+ '</div>' ); }, handleInput = function(msg) { if ( "api" !== msg.type || !playerIsGM(msg.playerid) ) { return; } let args = msg.content.split(/\s+/); switch(args.shift()) { case '!movelight': { let valid_layer = 0; let new_layer = args.shift(); switch (new_layer) { case "gmlayer": case "walls": case "objects": case "map": valid_layer = 1; break; } if (valid_layer == 1) { args.map(id=>getObj('path',id)) .filter(o => undefined !== o) .forEach(p => p.set({layer: new_layer})) ; } else { sendChat('Move Lighting Script', '/w gm Invalid Layer Specified.'); showHelp(); } break; } } }, checkInstall = function() { var script_version = "0.1.5"; if( ! state.moveLighting ) { state.moveLighting = { version: script_version }; } if (state.moveLighting.version != script_version) state.moveLighting.version = script_version; log("-=> Move Lighting Script v"+state.moveLighting.version+" Initialized <=-"); }, registerEventHandlers = function() { on('chat:message', handleInput); }; return { CheckInstall: checkInstall, RegisterEventHandlers: registerEventHandlers }; }()); on("ready", function() { 'use strict'; moveLighting.CheckInstall(); moveLighting.RegisterEventHandlers(); });