Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
1c61d6d
Add files via upload
keithcurtis1 May 15, 2026
23d3724
Add Patreon link to script.json
keithcurtis1 May 16, 2026
74f627e
Add Patreon link to script.json
keithcurtis1 May 18, 2026
afec914
Update script.json
keithcurtis1 May 18, 2026
43a2684
Add Patreon link to campaign survey script
keithcurtis1 May 18, 2026
12d5bc1
Update script.json
keithcurtis1 May 18, 2026
e98b31a
Add Patreon link and update script description
keithcurtis1 May 18, 2026
c374d76
Add Patreon link to script.json
keithcurtis1 May 18, 2026
4518790
Add Patreon link to script.json
keithcurtis1 May 18, 2026
26804c0
Add Patreon link to script.json
keithcurtis1 May 18, 2026
c2d0289
Add Patreon link to script.json
keithcurtis1 May 18, 2026
aff915f
Add Patreon link to script.json
keithcurtis1 May 18, 2026
8d1f757
Update script.json
keithcurtis1 May 18, 2026
5d432ad
Update script.json with Patreon link and description
keithcurtis1 May 18, 2026
bb6b112
Add Patreon link to script.json
keithcurtis1 May 18, 2026
fba9982
Add Patreon link to script.json
keithcurtis1 May 18, 2026
07cab13
Add Patreon link to script.json
keithcurtis1 May 18, 2026
87bc744
Add Patreon link and reorder dependencies
keithcurtis1 May 18, 2026
8d0f0ad
Add Patreon link to script.json
keithcurtis1 May 18, 2026
e72df76
Add Patreon link to script.json
keithcurtis1 May 18, 2026
a6aa651
Add Patreon link to script.json
keithcurtis1 May 18, 2026
ffd321d
Add Patreon link to script.json
keithcurtis1 May 18, 2026
25c2515
Update script.json
keithcurtis1 May 18, 2026
8815007
Add Patreon link to script.json
keithcurtis1 May 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Align/script.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"description": "Visually align, distribute, snap, stack, and scatter tokens on the VTT with a chat menu interface. Features include grid snapping, spacing control, z-index sorting, random scatter, undo, and edge protection. Now contains token page management",
"authors": "Keith Curtis",
"roll20userid": "162065",
"patreon": "https://www.patreon.com/c/KeithCurtis",
"dependencies": [],
"modifies": {
"graphics": "read,write",
Expand Down
3 changes: 2 additions & 1 deletion AutoLinker/script.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"description": "# Autolinker\n\n## Purpose\n\nAutolinker converts bracketed shorthand written in the Notes or GMNotes fields of handouts and characters into clickable Roll20 journal or compendium links when the entry is saved. This extends the basic linking functions built into Roll20.\n\n## General Usage\n\nThese formats may be used in the Notes or GMNotes fields of any handout or character.\n\nNote: The script runs after a save event. Because the handout may refresh before processing finishes, you may need to close and reopen the handout (or click Edit again) to see the updated links.\n\n## Journal Links\n\n[goblin|Jimmy]\n\nCreates a link to the handout or character named goblin, displayed as Jimmy.\n\nIf no display text is provided, standard Roll20 journal linking rules apply.\n\n## Compendium Links\n\n[5e:fireball]\n\nLinks to the D&D 5e compendium entry for fireball.\n\n[5e:wall of fire|the wall]\n\nLinks to the D&D 5e compendium entry for wall of fire, displayed as the wall.\n\n### Supported Compendium Prefixes\n\n- 5e: — D&D 5th Edition\n- pf2: — Pathfinder 2nd Edition\n\n## Handout Header Linking\n\nHeader links apply to handouts only and use the # character.\n\n### Link to a Header in Another Handout\n\n[Dungeon of Doom#6. Zombie Chorus|See Room 6]\n\nLinks to the header 6. Zombie Chorus in the handout Dungeon of Doom, displayed as See Room 6.\n\n### Link to a Header in the Same Handout\n\n[#6. Zombie Chorus|See Room 6]\n\nLinks to the header 6. Zombie Chorus in the current handout, displayed as See Room 6.\n\n### Omit Display Text\n\n[#6. Zombie Chorus]\n\nIf no display text is supplied, the header text is used as the link text.",
"authors": "Keith Curtis",
"roll20userid": "162065",
"patreon": "https://www.patreon.com/c/KeithCurtis",
"dependencies": [],
"modifies": {
"handouts": "read,write",
Expand All @@ -14,4 +15,4 @@
"previousversions": [
"1.0.0", "1.0.1"
]
}
}
1 change: 1 addition & 0 deletions Campaign Survey/script.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"description": "**Campaign Survey** *([Forum thread](https://app.roll20.net/forum/post/10675897/script-campaign-survey))* is a script that tries to give the user a bird-eye view of their campaign, reporting on how much space is taken up by which elements. Some elements have more of an impact on game performance than others, and in general, the script tries to show them in descending order of importance. Information on improving Roll20 performance can be found on [Roll20 system Recommendations](https://help.roll20.net/hc/en-us/articles/4403128607127-Roll20-System-Recommendations) and [Optimizing Roll20 Performance](https://help.roll20.net/hc/en-us/articles/360041544654) in the Help Center. The !survey command can be followed by ' --' and one or more of the following keywords:\r\r**characters** A list of all character sheets in a campaign in descending order of complexity. All entries are linked to the sheet so you can quickly open them and investigate. Each character is appended by the number of attributes it contains. This will vary depending on the sheet used, and complexity of the character. Look for exceptionally high outliers, typically spell caster with many spells.\r\r**attributes** A list of all character attributes in a campaign. This is a very rough indicator of the size of the Firebase DB, when combined with the number of graphics placed on the VTT. A high number will likely affect loading time, and may contribute to lag. Character sheets, and the number of graphics and drawings on the VTT are the greatest contributors to game size.\r\r**abilities** A list of all character sheets in a campaign in descending order of number of abilities (macros resident on character sheets). Abilities can be quite long, but they are still relatively low impact compared to attributes. All entries are linked to the sheet so you can quickly open them and investigate. Each character is appended by the number of abilities it contains. Look for exceptionally high outliers, typically Macro Character Sheets. In this case, a high number of macros is rarely an issue, since this practice serves to consolidate a lot of a games automation in one place. For more information see, [Macro Character Sheet](https://tinyurl.com/3jn6jzrr) in the [Roll20 Community Wiki](https://tinyurl.com/mtz43sun).\r\r**pages** A list of all pages in a campaign, along with the number of graphics on that page. Graphics are listed as total graphics/count of tokens. Look for exceptionally high count outliers. More graphics = more Firebase items to track. Number of graphics is more likely to be a lag concern on Dynamically Lit pages.\r\r**lighting** A list of all dynamically lit pages in a campaign, along with the number of sighted tokens, light-emitting tokens, plus DL paths, and the total number of points in those paths. Simplify when possible. There is overlap in the report, if one token is emitting low and bright light, it is listed in both counts. See [System Requirements & Best Practices](https://help.roll20.net/hc/en-us/articles/360045793374-System-Requirements-Best-Practices) in the Help Center for performance help, or Help Center's [Dynamic Lighting headquarters](https://help.roll20.net/hc/en-us/categories/360003712734-Dynamic-Lighting). If Dynamic Lighting does not seem to be working, try going through the [Dynamic Lighting Checklist](https://help.roll20.net/hc/en-us/articles/360044771413-Dynamic-Lighting-Checklist).\r\r**graphics** A list of all graphics in a campaign, followed by the number of times they are used. You may occasionally see a 1x and a say, 6x for the same graphic. This likely indicates that an item was dragged in from a marketplace source and used again from the art library. Using the alternate arguments of **ugraphics** or **mgraphics** will constrain the report to User Art Library or Marketplace items respectively. Marketplace items can be identified by a thin black border around the graphics frame. Clicking on a graphic lists all occurrences of the identified graphic in a campaign, broken out by page, with the source of the graphic clearly labeled. Information on best practices for creating and uploading graphics can be found in [Best Practices for Files on Roll20](https://help.roll20.net/hc/en-us/articles/360037256634-Best-Practices-for-Files-on-Roll20s) in the Help Center\r\r**handouts** A list of all handouts in a campaign. All entries are linked to the handout so you can quickly open them and investigate. Handouts are very low impact items, and are unlikely to contribute to lag or increased loading time except in extreme numbers.\r\r**macros** A list of all macros in a campaign. Each macro will play the macro when clicked. Macros are low impact items.\r\r**tables A list of all tables in a campaign in alphabetical order. All entries are linked to a roll on that table. Clicking on the name will produce a gmroll, clicking on the number of entries will perform an inline roll. Tables are low impact items.\r\r**texts** A list of all text obejcts in a campaign. Text objects are low impact items. There may be some entries for empty texts. This can happen when the user clicks with the text editing tool in error and then abandons the process to do something else. Empty texts are not a serious problem, but in order to clean things up and make it easier not select them by accident. There is a tool to remove all empty texts. Use with caution.\r\r**decks** A list of all card decks in a campaign, along with a card count for each deck. Decks are a relatively low-impact item, unless there are an inordinate number of cards in play on the VTT.\r\r**tracks** A list of all jukebox tracks in a campaign. Clicking on the track will play the track. Each track name has a button next to it that will stop playing that track. Jukebox tracks are streaming files and will not affect loading time. They are unlikely to contribute to lag, except in cases where there is already low bandwidth.\r\r**players** A list of all players in a campaign, along with their player id, and avatar color. Clicking the player color box calls up a character list report formatted like the characters keyword in descending order of complexity, but is limited to characters for whom the player is listed as a controller. Clicking on the player name will take you to their public Roll20 profile page, in case you need to PM them or can't remember what they are called outside of the game.\r\r**makehandout** Sends the report to a handout named 'Campaign Survey Report'. You can use this with any other keyword or as the sole keyword. Every category on the campaign overview display has a handout option. There is a button at the bottom of the display to directly open the handout. All reports sent to the handout will update in real time. If you want the name of the campaign to appear at the top of every report, put it in the gmnotes of the Campaign Survey Report handout.\r\r**overview** _(optional)_ gives a count of each of the categories. Each category is clickable to send that command to chat or to the report. typiing **!survey --overview**, is the same as typing **!survey**.\r\r**Help** Displays this help information.",
"authors": "Keith Curtis",
"roll20userid": "162065",
"patreon": "https://www.patreon.com/c/KeithCurtis",
"modifies": {
"ability.*": "read, write"
},
Expand Down
3 changes: 2 additions & 1 deletion Condefinition/script.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"description": "## Condefinition\rWorks with Condition Sync on the D&D 2024 sheet.\r\r### What it does\r\rCondefinition reads incoming roll templates and looks for imposed conditions and saving throws. It displays button(s) in chat that allow you to:\r- Quickly apply a corresponding token marker\r- Define the condition\r- Track concentration\r- Roll saving throws\r- Apply damage from spells or effects triggered by saving throws\r- If the roll template contains a saving throw, it gives a button for the saving throw. Press the button and click on a target to roll the appropriate save. With **GroupCheck** installed, it runs a groupcheck save. If you have [**Apply Damage**](https://app.roll20.net/forum/post/3631602/script-groupcheck-roll-checks-saves-et-cetera-for-many-tokens-at-once/?pageforid=4359153#post-4359153) installed, it also applies damage.\r- If the roll template contains an imposed condition, it creates a button to define the condition. If there's a cross-reference in the definition, it creates an inline link. You can hover or whisper/broadcast the text to players.\r- You can toggle that condition on selected tokens. Assigning token markers requires **TokenMod**, and for improved function, **LibTokenMarkers**. Default status markers are included, and the configuration handout allows you to customize these.\r- If installed via One-Click, this Mod will also auto-install **GroupCheck**, **TokenMod**, and **LibTokenMarkers** if they’re missing. **[Apply Damage](https://app.roll20.net/forum/post/3631602/script-groupcheck-roll-checks-saves-et-cetera-for-many-tokens-at-once/?pageforid=4359153#post-4359153)** must be installed manually.\r- In addition to official conditions, it tracks many common features that benefit from markers (e.g., Raging, Hunter's Mark, Hexblade's Curse).\r- The Concentration condition marker also tracks concentration and prompts for a Constitution Save when damaged.\r- Compatible with Classic and Jumpgate VTT, and the 2014 or 2024 D&D sheets. Advanced configuration requires JavaScript knowledge.\r### What it can't do\r\rThere are some limitations:\r- Primarily designed for GMs and NPCs. Players may see buttons, but full use is GM-facing.\r- Conditions are matched to tokens, not character sheets (intentional, for individual instances like multiple goblins).\r- Some condition wordings may be missed, especially in non-WotC content.\r- Currently, all buttons and definitions are whispered to the controller of the NPC. If needed, this could change based on whisper settings.\r### Helper Scripts\r- **Required:** `TokenMod`, `libTokenMarkers`\r- **Optional/Recommended:** `GroupCheck`, [`Apply Damage`](https://app.roll20.net/forum/post/3631602/script-groupcheck-roll-checks-saves-et-cetera-for-many-tokens-at-once/?pageforid=4359153#post-4359153)\r---\r## Operation\rFor full documentation and configuration options, enter `!config-help` or `!condef-config` in chat. The script produces a full documentation handout.",
"authors": "Keith Curtis",
"roll20userid": "162065",
"dependencies": [ "TokenMod", "GroupCheck", "libTokenMarkers" ],
"patreon": "https://www.patreon.com/c/KeithCurtis",
"dependencies": [ "TokenMod", "GroupCheck", "libTokenMarkers" ],
"modifies": {},
"conflicts": [],
"previousversions": ["1.0.0", "1.0.1", "1.0.2", "1.0.3"]
Expand Down
1 change: 1 addition & 0 deletions Dealer/script.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"description": "Deals and takes cards from players by deck\r\rSyntax is:\r`!deal --[give,take] [#] --[deck name]|[Card Name]`\r\rIf give/take is not specified, it gives a card to the player controlling the selected token If deck name is not specified, it defaults to \"Playing Cards\". If a card name is not specified, it defaults to a random card from the specified deck.\r\rYou can specify a number of cards to give or take. After the action word, type an integer, after a space:\r\r`!deal --give 5 --Playing Cards`\r\rYou can specify a card to deal by name. If no card exists by that name in that deck, the script will inform the user by chat message. Note that it is possible to give multiple copies of the same card even from a finite deck:\r\r`!deal --give --Playing Cards|Six of Hearts`\r\rThe script will deal cards to the player from the specified deck so long as there are enough available. If the deck has cycled through all cards, it will automatically shuffle.\r\rIf a token has more than one controller or is controlled by All and one or more players, it will select the first single player in the controlled by list.\r\rScript will try to let you know if you have not prepared a command or deck properly.\r\rIf deck does not deal a card, you may need to manually shuffle (Roll20 bug). If the deck is shuffled, it may not recognize all cards in hand.",
"authors": "Keith Curtis",
"roll20userid": "162065",
"patreon": "https://www.patreon.com/c/KeithCurtis",
"dependencies": [],
"modifies": {
"hand.*": "read,write",
Expand Down
5 changes: 3 additions & 2 deletions Dynamic Lighting Tool/script.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@
"description": "### Dynamic Lighting Tool\r**Dynamic Lighting Tool** is a script that performs a host of Dynamic Lighting tasks. It allows you to change most Dynamic Lighting settings on tokens and pages in real time, without needing to call up dialog boxes. It also analyzes many common Dynamic Lighting issues and suggests solutions.\r\r\r### Features:\rA full report of all current relevant Dynamic Lighting information on the current page and the selected token.\rA *Why can't this token see?* button that performs a detailed analysis of the selected token and tries to pinpoint what the problem might be.\rA list of things to check manually that cannot be handled by mod scripts.\rPreset buttons for common lighting solutions.\rIdentifies controllers and represented sheet (if any) of selected token.\rExtensive hover text over most labels and settings with explanations and tips.\rIf the checkLightLevel script is installed (soon in One Click, or get it here), it will inform you of whether the token has light shining on it and how much.\r\r### Dependencies:\rThis script requires the following scripts for best performance. They will be loaded as dependencies\r**Token Mod.** This is used for setting token values. There are many idiosyncrasies in the Mod system for tokens, and the Aaron has already done the hard work of accounting for them.\r**checkLightLevel.** This adds functionality, but the script will function without it.\r\r### Command:\r`!dltool` or `!dltool --report`\r\rFor full documentation see [this thread](https://app.roll20.net/forum/post/11316788/script-dltool-a-dynamic-lighting-control-panel-and-troubleshooter) in the Roll20 forums.",
"authors": "Keith Curtis",
"roll20userid": "162065",
"dependencies": [ "TokenMod", "checkLightLevel" ],
"modifies": {},
"patreon": "https://www.patreon.com/c/KeithCurtis",
"dependencies": [ "TokenMod", "checkLightLevel" ],
"modifies": {},
"conflicts": [],
"previousversions": ["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","1.0.8","1.0.9"]
}
1 change: 1 addition & 0 deletions Faces/script.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"version": "0.1.2",
"description": "**Faces** is a script is designed to provide a quick visual interface for swapping token images and names, drawing the information from a Rollabel Table or an existing token. The user can choose which face to apply from the graphical list, or apply random faces to a group of selected tokens. It can also quickly create rollable tables from an existing set of tokens, both simple and multisided. The interface will work for both players and GMs.\r\rThere is a comprehensive help system accessible by typing `!faces help` in the chat window, once the script is installed. There is also documentation and feedback available from the [Faces Feedback Thread](https://app.roll20.net/forum/post/11129007/script-faces-1-dot-0) in the Roll20 Forums.\r\r**What this script does not do:**\r- Adjust token size.\r- Change any token-character representation, linking, or attributes.\r- It is not intended to be a Wildshape script. There are much better-suited scripts for that.\r\r\r**Potential uses for this script:**\r- Disguise-master characters\r- Changeling characters\r- Alter Self and Seeming spells (and similar)\r- Providing the GM a way to alter the image choices for a group of enemies. Quickly differentiate between goblin archers, goblin infantry, dead goblins\r- Give a visual interface for a player who has multiple expressions or variations for their character\r- Characters who contract lycanthropy\r- Monsters with different states: Ankheg on surface, surfacing or a Bugs Bunny-style burrowing mound\r- Build a library of townsfolk, scholars, city guards or other commoner-types.\r- Assigning map pin icons: Tavern vs temple vs shop, etc.\r- Quickly changing the state of a trap image\r- Changing a closed door image to an open door image.\r- Laying out a bunch of map tiles and quickly switching between them to build a dungeon\r- having tables for map furnishings: a chair table, a door, even a table table.\r- Change downed enemies to a creative variety of grisly remains?\r- A GM could present players with a menu of tokens for their PCs\r- A rollable table of scenes and images to show characters using shift-Z. Just keep one token on the VTT and switch at need.\r- Quickly create a rollable table from a bunch of uploaded images.\r- Move image from one token to another (select first token, use !faces existing, and use the resulting button to assign to one or more other tokens)\r- Randomly populate a scene with differentiated token images\r- Probably more I haven't thought of.",
"authors": "Keith Curtis",
"patreon": "https://www.patreon.com/c/KeithCurtis",
"roll20userid": "162065",
"modifies": {
"ability.*": "read, write"
Expand Down
Loading
Loading