This is a long overdue update for my Door Knocker script to bring it into compliance with several changes to the Roll20 system. For those that don't want the full details, here's the change log: Change log 1.3 Old window setups will be transitioned to native Roll20 window setup on script start. Window color also changed to wall color by default. Windows can now be any of the defined door type colors and will respect access for that type of door. Fixed issue with new path color format in Roll20 Fixed issue with searching/manipulating doors when a grid is not enabled (uses 70px as the equivalent of 1 square when no grid is enabled; this mimics the actual Roll20 behavior) Door Knocker v1.3 Welcome to Door Knocker. This script helps quickly open and close doors by controlling the dynamic lighting lines. If you have any questions, comments, or find a bug; please drop by the Door Knocker forum thread . Using Door Knocker The script will move dynamic lighting lines used as doors to the map layer and make them transparent, opening the door. It determines what is a door and a wall based on the stroke color of the polygon and will only open doors within 1 square of the door knocker token. If the grid is not activated on the page, then the script uses 70 pixels as the equivalent of 1 square. Basic Command Syntax The script uses a standardized API command syntax. All Door Knocker commands will begin with !knock . This will then be followed by a space a double dash preceding a keyword and options group. This looks like this: !knock --keyWord|option1|option2|... Opening and Closing Doors Open and close using the key or push keyword followed by an option to tell the script whether to open doors, close doors, or toggle doors. You can also pass an optional second option to tell the script to open/close/toggle all doors within range of the knocker token, on the page, or in the campaign. These commands look like: Affecting obvious doors !knock --key/push|open/close/toggle|all/page/campaign/range Affecting hidden doors !knock --key|reveal/hide/togglehide|all/page/campaign/range Affecting obvious and/or hidden doors !knock --key|anydooropen/anydoorclose/anydoortoggle|all/page/campaign/range Affecting Windows Windows have been switched to the native Roll20 implementation. The script will clean up old window lines from the script's version of windows and convert them to the native Roll20 window lines. Affecting any doors !knock --key|anyopen/anyclose/anytoggle|all/page/campaign/range key/push: This is the keyword that tells the script to manipulate door dynamic lighting lines. The key keyword operates on both locked and unlocked doors and is GM only. The push keyword only operates on unlocked doors. open/close/toggle This option tells the script to open, close, or toggle (open closed doors and close open doors) the closest door (or all doors if also using the all option described below). reveal/hide/togglehide This option tells the script to open, close, or toggle the closest hidden door (or all doors if also using the all option described below). anydooropen/anydoorclose/anydoortoggle This option tells the script to open, close, or toggle the closest obvious or hidden door (or all doors if also using the all option described below). openwindow/closewindow/togglewindow This option tells the script to open, close, or toggle the closest window (or all windows if also using the all option described below). anyopen/anyclose/anytoggle This option tells the script to open, close, or toggle the closest obvious door, hidden door, or window (or everything in range if also using the all option described below). all/page/campaign: Optional argument This option tells the script to operate on all doors within range, all doors on a page, or all doors in the campaign. The page and campaign keywords are GM only and do not work with the push keyword. Range and the all/page/campaign keywords can be entered in any order relative to each other. range: Optional argument This option tells the script to operate at a custom range, entered in the units of the map (e.g. ft, meters, kilometers). Range and the all/page/campaign keywords can be entered in any order relative to each other. Setting up the Door Knocker Set the wall, door, and locked door stroke colors in the settings menu using hex color codes (e.g. #000000). You can also set these values by selecting an already created DL line. This functionality is only accessible to the GM. The command syntax for using a selected DL line looks like: !knock --preset|wall/door/unlocked/hidden|hex color preset: This is the keyword that tells the script to change it's settings wall/door/unlocked: This option tells the script to update the color setting for walls, doors, and unlocked doors hex color: Optional argument Passing a hex color here will set the script to consider all polygons on the Dynamic Lighting layer with a stroke of this color (or the rgb equivalent) to be doors/walls. If this option is not passed the script will look for a selected polygon to pull a stroke color from. Setting up your maps The only map setup needed is to ensure your dynamic lighting doors are the appropriate color. This functionality is only accessible to the GM. If you are adapting a module or add-on to an already existing door color scheme you can select a door line and run the following chat command: !knock --adapt|door/wall/unlocked/hidden/window|campaign adapt: This is the keyword that tells the script to update all polygons on the dynamic lighting layer with the same stroke color as the selected polygon(s) to have the script's door/wall stroke color wall/door/unlocked: This option tells the script to update the stroke color to that of walls, doors, or unlocked doors campaign: Optional argument adding this optional argument tells the script to update polygons on all pages, not just the current page. Searching for Doors When you search for doors using Door Knocker, it will copy door lines to a visible layer. If a gm initiates the search with a non-pc token selected, hidden doors are copied and all door lines are shown on the gm layer. If a player initates the search, hidden doors are not displayed and the door lines are shown on the objects layer. How long door lines are visible for (in seconds) can be set from the settings page. !knock --search|range search: This is the keyword that tells the script to display any nearby doors range: Optional argument Enter the search range, in the units of the map (e.g. feet, meters, kilometers). If you do not provide a range, it will default to the distance of a square on the map. Note that searching does not currently reveal windows due to how the window paths are encoded. This functionality is being worked on. Customizing the Script Door knocker token The script uses a generic key token as the door knocker token. You can customize this by changing the default token of this character. You also can run the script's commands from any selected token. Script created abilities The script also creates six abilities on this character as token actions. These can be disabled as token actions, but should not be deleted as the script will simply remake them. You can also add whatever other macros you want to this character. Attributions The default token image is from <a href="https://game-icons.net/" rel="nofollow">https://game-icons.net/</a> under the creative commons license . Thanks to Keith Curtis for finding this awesome token. Change log 1.3 Old window setups will be transitioned to native Roll20 window setup. Window color also changed to wall color by default. Windows can now be any of the defined door type colors and will respect access for that type of door. Fixed issue with new path color format in Roll20 Fixed issue with searching/manipulating doors when a grid is not enabled