Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

Roll20 Tips and Tricks (Innovative Solutions to Common Problems)

Stavros said: ``DC 23`` Dexterity saving throw, taking half damage ([[floor(0.5*[[4d10]])]]) on a success, or $[[0]] lightning damage on a failed save.  Hi Stavros, can you explain why the ``DC 23`` appears in a pink box and only works when put into an NPC action description?
1607554339
Scott C.
Forum Champion
Sheet Author
API Scripter
Compendium Curator
That pink box is the code formatting in Roll20 chat. You can designate something as inline code by wrapping your desired code in double backticks (`). Note that this will not work if your code is the first non space character in the chat message because starting a message with a backtick causes the message to not be parsed by the chat system.
Exploding Doubles In DC Heroes , you roll 2d10. If they're doubles, you roll both dice again and add them to the running total. If that second roll is doubles, you keep on going. So, you might end up with rolls like: 2d10 => (4 + 6) 2d10 => (4 + 4) + (2 + 7) 2d10 => (6 + 6) + (3 + 3) + (9 + 9) + (2 + 2) + (3 + 7) To explode on doubles, this is a good start: [[1d10!![[1d10]]]], $[[0]] But that only rerolls one of the dice instead of both. I've finally figured out how to explode doubles, sort of... [[([[{1d10}=10]]*2+2)d10]] The chance of the second dice matching the first is always the max roll (i.e. On a 4-sider there's a 1 in 4 chance that you'll roll doubes; on a 10-sider there's a 1 in 10 chance). The formula above will roll a d10 to give a 0 (90% of the time) or a 1 (10%), double it (to a 0 or a 2) and add it to the number of dice rolled. TL;DR: Usually roll 2d10, or roll 4d10 if you're lucky. To keep the exploding train going (since in DC Heroes, every time you roll doubles you keep on going), you can expand the formula to look like this: [[([[{1d10}=10]]*2+[[{1d10}=10]]*2+[[{1d10}=10]]*2+2)d10]] It's not exactly the right math, which would give you a one in 10 chance of 4 dice, a 1 in 100 chance of 6 dice, and a 1 in 1000 chance of 8 dice. Since each 10% isn't cumulative in my formula, that means that yes, you do still have a 1 in 1000 chance of 8 dice, but you have a 20% chance of 6 dice and a 30% chance of 4 dice (since any of those 10%'s coming up roses means that you'll get a bonus pair). If anyone can give me a tip on how to accumulate the percentages in the formula, it would be appreciated.
is there a macro to have on my macro bar that would allow me to just click on the token and have it roll and add to initiative?
1607761078

Edited 1607761110
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Hi Ethan, This thread is for posting innovative tricks the community has come up with. That's the sort of post that would be best expressed in its own thread, where it would be seen by more eyes as well. The specific answer will depend on the sheet you are using, but yes, it is possible. If you want to start a thread and ask the question there, listing which sheet you are using, I'm sure we can come up with something.
oh apologies! thanks for the heads up!
1608142990

Edited 1608145844
Jordan C.
Pro
API Scripter
Open Chests via Token Actions So I have been trying to handle a way to open chests that players find and letting them open them via token actions that output the results to chat. I have gotten close to the desired result but it still have caveats so if anyone has any improvements send em over! This method makes a character sheet for each play titled “ playername -Chest” and another character sheet called “Chest-Tool-Source”. Each player sheet has a transparent token as its default that has two token actions that call “!pcnotes”. &nbsp;that can easily be anything that calls a source file whether its a handout or character sheet attribute. The first one opens it publicly, the second whispers a stealth check and the contents to the player. Disclaimer: This uses scripts, and it specifically uses a modified version of Super Notes that allows a command that whispers to individual players. Edit: Well I think I got myself confused because after thinking about it, you can do the exact same thing without the script... I think my original attempt at this needed the supernotes and after adpating it I left that part in. Anyway, the modified script still has its uses so I'll leave that. Modified Supernotes: <a href="https://github.com/JWCaiola/JWCaiola.github.io/blob/main/SuperNotesModified/SuperNotes.js" rel="nofollow">https://github.com/JWCaiola/JWCaiola.github.io/blob/main/SuperNotesModified/SuperNotes.js</a> &nbsp;(with chat command "!pcnote --whisper -- playername " you can specifically whisper to an individual player. &nbsp; Token Settings (One for each character): &nbsp; Here is what the Token Action macros are: Edit: Open: @{ SourceName|AttributeName } Open-Discretely: /w playername @{ playername |stealth} /w playername&nbsp; @{ SourceName | AttributeName } Chat output: &nbsp; Here is the treasure attributes description (This is written in the Source character sheet): This can be set to anything and changes the results for all tokens. Any attribute can be used, I just choses treasure from 5e Bio. &nbsp; Here’s the list of characters used (4 Players, 1 Source): &nbsp; What I do is drag out the transparent token of the player that is inspecting the chest and give them the option. Other players won't be able to access the information unless their corresponding token is on the board. If anyone has suggestions on how to handle it better please let me know. I wanted to have it determine who was selecting the token so that only one sheet was needed but I am not sure that it's possible. I'd potentially like to turn a script out of this where it determines who saw the person grab the items out of the chest based on their passive perception.
1608445005

Edited 1700958495
Oosh
Sheet Author
API Scripter
Blind Roll (requires Stylus for GM) So I posted something similar to this over in the Stylening thread a while back, but some recent messing about with nesting templates inside buttons got me thinking there must be an easier way to do it. This trick requires that the GM has Stylus to work properly (otherwise they won't be able to see the blind roll). Otherwise, it pretty much works copied straight out of the box - you might just want to add skills to it. This certainly isn't cheat-proof. In the Stylening post I have a method for hiding the id of the element to make it harder for players to uncover the element, but it occurred to me afterwards that there's no way to hide from HTML inspection, so it's probably not worth putting any effort in to that side of it. Let's just assume your players aren't total jerks looking for ways to cheat, and are happy with the blind roll. The nature of the macro makes the tooltip information unavailable and avoids rolling 3D dice (because... obviously). It does show the roll expression for both player and DM, though - so you can see if someone is rolling with advantage or not, or if their bonus doesn't look right, or they suddenly have 200 proficiency bonus. So I've made this macro as simple as possible. The players don't need to do anything . The DM needs to: - install Stylus - create a Style approximately 3 lines long - run the macro The Stylus style (this one's pretty scary): #userscript-broll { display:inline!important; } And the macro, set up for Roll20 5e: **DM requests a blind roll:** [Roll for ?{Roll|Stealth|Strength|Dexterity|Constitution|Wisdom|Intelligence|Charisma}](`/w gm &amp;amp;&amp;lcub;template:default&amp;rcub; &amp;lcub;&amp;lcub;name&amp;equals;?{Roll} Check&amp;rcub;&amp;rcub; &amp;lcub;&amp;lcub;&amp;commat;&amp;lcub;selected|character_name&amp;rcub; rolls...&amp;equals;&amp;quest;&amp;lcub;Advantage|Normal,1d20|Advantage,2d20k1|Disadvantage,2d20kl1&amp;rcub; + &amp;commat;&amp;lcub;selected|?{Roll}_bonus&amp;rcub;&amp;lsqb;Bonus&amp;rsqb; + &amp;commat;&amp;lcub;selected|pb&amp;rcub;&amp;lsqb;Prof&amp;rsqb;&amp;rcub;&amp;rcub; &amp;lcub;&amp;lcub;&amp;equals;&amp;lsqb;Result &amp;equals; &amp;rsqb;(&amp;num;&amp;quot; id&amp;equals;&amp;quot;broll&amp;quot; style&amp;equals;&amp;quot;display:none&amp;rpar;&amp;lsqb;&amp;lsqb;&amp;lsqb;&amp;lsqb;&amp;lsqb;&amp;quest;&amp;lcub;Advantage&amp;rcub;&amp;rsqb;&amp;rsqb;d1 + &amp;commat;&amp;lcub;selected|?{Roll}_bonus&amp;rcub; + &amp;commat;&amp;lcub;selected|pb&amp;rcub;&amp;rsqb;&amp;rsqb;&amp;rsqb;(#&amp;quot; id&amp;equals;&amp;quot;broll&amp;quot; style&amp;equals;&amp;quot;display:none&amp;rpar;&amp;rcub;&amp;rcub;" style="color:darkred;background-color:white;border:solid 2px darkred;font-size:17px;border-radius: 5px;padding:2px;display:inline-block) I've kept the Ability list short, I just did the primary Attributes for 5e then threw Stealth in for fun. Most skills are unlikely to see much blind action... I'd assume Stealth is the big one at most tables. To add skills for the 5e by Roll 20 sheet, all you need to change is the very first Query - put in the skills you want, in the order of usefulness you want. This could be as short as ?{Roll|Stealth|Perception}. Be mindful of Animal Handling &amp; Sleight of Hand: you'll need to either have the underscores visible in the drop-down, or use a comma: |Animal Handling,animal_handling| For other systems, it might need some tweaking. You might need to get rid of the Advantage, or tweak how the Attributes are referenced: it's currently set up for 5e which is @{selected|&lt;skillname&gt;_bonus} . Some other tweaks which would be easy to apply: wrap the button inside a 5e template (npcaction or traits) to prettify it, or chuck a whisper Query in front of it ?{Whisper or public?|Public, |Alice,/w alice |Bob,/w bob |Carly,/w carly } . If you haven't popped your head into any of the threads where we've been poking around with nesting entire templates inside API command buttons, you may have noticed a handy little Stupid Trick inside this Stupid Trick - namely, using a Roll Query to fill in an Attribute reference. This is usually a big no-no, but in this case it works. We've escaped the absolute brains out of the Attribute reference, so it's just a jumble of escaped entities and unresolved Roll Queries. But we don't need it to be a working Attribute reference until an entire round of parsing has.... errr.... passed. It's a nifty little trick which does have a big downside - you have to manually click the button after it's created. But I can see it saving a ton of macro code in the right situation. Anyway, sing out if you need any help adapting this... I know it's hard to read. A tip if you want to make more sense of the macro: paste it into chat, then mouse-over the button it creates. Right click =&gt; Copy link location =&gt; paste into Notepad. The escaped HTML will all have been parsed into regular macro code, and the button its wrapped in will be gone. Much sanerer!
1608454260
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
That's pretty clever. This is something the Shaped Sheet uses quite a lot, but it's a great solution!
I been looking for this for fate and Savage worlds. Thanks Dave! Dave Mattingly said: Exploding Doubles In DC Heroes , you roll 2d10. If they're doubles, you roll both dice again and add them to the running total. If that second roll is doubles, you keep on going. So, you might end up with rolls like: 2d10 =&gt; (4 + 6) 2d10 =&gt; (4 + 4) + (2 + 7) 2d10 =&gt; (6 + 6) + (3 + 3) + (9 + 9) + (2 + 2) + (3 + 7) To explode on doubles, this is a good start: [[1d10!![[1d10]]]], $[[0]] But that only rerolls one of the dice instead of both. I've finally figured out how to explode doubles, sort of... [[([[{1d10}=10]]*2+2)d10]] The chance of the second dice matching the first is always the max roll (i.e. On a 4-sider there's a 1 in 4 chance that you'll roll doubes; on a 10-sider there's a 1 in 10 chance). The formula above will roll a d10 to give a 0 (90% of the time) or a 1 (10%), double it (to a 0 or a 2) and add it to the number of dice rolled. TL;DR: Usually roll 2d10, or roll 4d10 if you're lucky. To keep the exploding train going (since in DC Heroes, every time you roll doubles you keep on going), you can expand the formula to look like this: [[([[{1d10}=10]]*2+[[{1d10}=10]]*2+[[{1d10}=10]]*2+2)d10]] It's not exactly the right math, which would give you a one in 10 chance of 4 dice, a 1 in 100 chance of 6 dice, and a 1 in 1000 chance of 8 dice. Since each 10% isn't cumulative in my formula, that means that yes, you do still have a 1 in 1000 chance of 8 dice, but you have a 20% chance of 6 dice and a 30% chance of 4 dice (since any of those 10%'s coming up roses means that you'll get a bonus pair). If anyone can give me a tip on how to accumulate the percentages in the formula, it would be appreciated.
Hey, I am new, wondering if someone can help me figure all this junk out!
1609320687
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Hi Murderess, Questions should usually go in their own thread; this one is reserved for the sharing clever tricks on Roll20. But send me a PM or post as a separate thread and I'll send you an orientation message there, just to keep this thread on track.
Using Macros to Map Discrete Points Hey everyone, after some time of being frustrated with the lack of macro conditionals I have come up with a formula to transform a set of input numbers into a set of output numbers. The Formula: f(x) =&nbsp; y * floor(10000 (-10000 * (x - t) ** 2) ) This formula maps x to y when x = t other wise f(x) = 0 when x != t In Macro Form: &nbsp; &nbsp; [[OUTPUT * (floor(10000 ** (-10000 * (INPUT - CHECK) ** 2)))]] The Use (examples): Say you like the number 7 very much and the number 9 a little. &nbsp;&nbsp;&nbsp;&nbsp;So if a character makes a strength check you want to reward them for having those values accordingly Macro: &nbsp;&nbsp;&nbsp;&nbsp;[[2d6 + 1*(floor(10000**(-10000 * (@{strength} - 9) ** 2))) + 3*(floor(10000**(-10000 * (@{strength} - 7)&nbsp;** 2)))]] So now if their strength value is 9 they roll 2d6 + 1, &nbsp;&nbsp;&nbsp;&nbsp;if their strength value is 7 they roll 2d6 + 3 &nbsp; &nbsp; otherwise they roll a plain old 2d6 As you can see this function gives us the ability to selectively apply modifications by repeatedly adding. Another example would be to give an additional die roll to a token with their bar1 value = 1 &nbsp; &nbsp; ie: characters on deaths door are given an extra die roll to their action. Macro: &nbsp; &nbsp; [[2d6 + 1d6 * (floor(10000 ** (-10000 * (@{selected|bar1} - 1) ** 2)))]] So if a character has bar1 = 1 they roll 3d6 &nbsp; &nbsp; otherwise they roll 2d6 For all but 1 number: Say you hate the number 7 so a character with 7 strength rolls 1 less d6 Apply this: &nbsp; &nbsp; [[OUTPUT&nbsp; * (1 - (floor(10000 ** (-10000 * (INPUT - CHECK) ** 2))))]] Ex: &nbsp; &nbsp; &nbsp;[[1d6 + 1d6 * (1 - (floor(10000 ** (-10000 * (@{strength} - 7) ** 2))))]] So characters with strength = 7 will roll 1d6 &nbsp; &nbsp; but characters with any other value will roll 2d6 The simplified explanation&nbsp;as to why this works (and how to prevent it breaking): f(x) =&nbsp; y * floor(10000 (-10000 * (x - t) ** 2) ) is just a very skinny bell curve which peaks at y when x = t ideally in place of those two 10000 values you would use infinity but to avoid breaking anything in the macros ability to calculate I've found that using 10000 works pretty well. If you have many discrete values very very near one another they may overlap a little and throw off your results so just increase the 10000 values to a larger number. Here is an the first example in demos for you to play around with if you want to learn more: <a href="https://www.desmos.com/calculator/0ac0jkelxp" rel="nofollow">https://www.desmos.com/calculator/0ac0jkelxp</a> With all that being said let me know if you find any errors in my math and thank you for reading.
Tooltips for links, roll buttons etc. Using a similar technique to&nbsp; HTML Styles in chat &nbsp;it's possible to add dice-roll-esque tooltips&nbsp;to anything that uses the&nbsp;&nbsp; [Label](Url) &nbsp;syntax. By appending to the end of the URL " class="showtip" title=" You can then add your own tooltip content after that. Whether it's a compendium link [Brown Bear](<a href="https://roll20.net/compendium/dnd5e/Brown" rel="nofollow">https://roll20.net/compendium/dnd5e/Brown</a> Bear" class="showtip" title="Large Beast, CR1) Or an ability button [Start Combat](~selected|initiative" class="showtip" title="Roll Initiative for selected token) Or a null link if you just want some extra info without filling the chat [Burn](#" class="showtip" title="Causes damage at start of turn, Reflex save to end condition) Note: Tooltips created this way do get tagged as userscript/api which adds an additional box to the tooltip as shown below
1609798564
Oosh
Sheet Author
API Scripter
Nice!
Hi everyone, I'm a Roll20 Noob, and I am needing some help with a macro I am building.&nbsp; How can I can have a macro assign the result of a specific auto dice roll to a 'variable' so that value can be used multiple times in different parts of the macro?&nbsp; For example, I am building a macro to help create Pre-Rolled PCs for my games.&nbsp; I want to have a fair random distribution of heights &amp; weights.&nbsp; To keep things from being too crazy, I need to link the height to the weight, but also allow for some bounded randomness.&nbsp; For example, with a Human female, I can get a random height by [[1d18+55]] in. which will give me a height which is 4'7" to 6'1" tall.&nbsp; But if I then use another completely random calculation for the weight, I can end up with a 4'7" female weighing 245lbs.&nbsp; Possible, but far more unlikely than what is coming up.&nbsp; I have been trying to use a modified BMI calculation, but it requires knowing the height, and so far I have not figured out how to assign the 1d18+55 roll to a variable name.&nbsp; I sure there must be a way because it works for Query Rolls since Query Name can be referenced multiple times with always the same value.&nbsp; But how do you assign a value to a placeholder without a Query?
1609804565
GiGs
Pro
Sheet Author
API Scripter
You should create a separate thread to ask about that - this thread is not a general discussion thread, it has a specific purpose.
1609864687

Edited 1609865166
Jordan C.
Pro
API Scripter
If this has been done similarly let me know and I can remove this to reduce clutter/repeating ideas! Saving Throw Command Button in Spell Output (D&amp;D 5e OGL Sheet) Something I like to do for spells that get used a lot in games is to turn the saving throw text into a command button so I can target tokens with it. I did this by closing the {{savedesc}} parameter early and overwriting the {{saveatrr}} parameter using the saving throw effect input field. Here is an example of what I add to the spell settings in the saving throw effect field: Half damage}} {{saveattr=[Dexterity](`!&amp;#13;&amp;#64;{target|dexterity_save_roll}) Which results in this: I am sure this could be improved for multiple targets but if nesting a query in that field is possible I couldn't determine how to do it. You could potentially create a separate macro and call it from the button that way.&nbsp;
1609869615
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
That's a good solution that would work well on free accounts. For Pro, I do something similar, but use the Customizable Roll Listener script to look for the words "DC ## [ability_name] saving throw" and when it encounters them in a spell or ability template, it calls a preformulated Group Check macro.
1609869760
Jordan C.
Pro
API Scripter
keithcurtis said: That's a good solution that would work well on free accounts. For Pro, I do something similar, but use the Customizable Roll Listener script to look for the words "DC ## [ability_name] saving throw" and when it encounters them in a spell or ability template, it calls a preformulated Group Check macro. I knew I had some recollection of a similar process, I'm certain this was it! I may have to implement that for the future instead of manually changing things.
Using Tokens to show dynamic data&nbsp; Sometime as GM you want a table with an overview of key character data for the full party, without having to click tokens (to see the three values) or open character sheets. Or as a GM you want to have that overview during a theatre of the mind combat, without the players seeing their tokens.&nbsp; You can make a seperate page with a drawn table and use multiple, tranparent tokens to display the key character data.&nbsp; Example: For a real game i would use a fully transparent token, but the grey ones are used to show how it technically works.
1609886782
Jordan C.
Pro
API Scripter
Gotta say I am a huge fan of this and need to find a way to implement it. I can see using a token that represents all the conditions being used in this format as well and really just has a lot of ways to be used creatively. Great trick! Martijn S. said: Using Tokens to show dynamic data&nbsp; Sometime as GM you want a table with an overview of key character data for the full party, without having to click tokens (to see the three values) or open character sheets. Or as a GM you want to have that overview during a theatre of the mind combat, without the players seeing their tokens.&nbsp; You can make a seperate page with a drawn table and use multiple, tranparent tokens to display the key character data.&nbsp; Example: For a real game i would use a fully transparent token, but the grey ones are used to show how it technically works.
1610114237

Edited 1610114298
Using the 3D dice as overlay in a stream I've been planning to start a game stream lately and was looking for a way to stretch the 3D dice models from Roll20 to the complete screen size and the possibility to use them, even when focussing the camera on a particular player. I'm using OBS Studio for this, other software should have similar capabilities as well though. Basically what I do is capture the game and apply a green screen to it.&nbsp; Requirements You need a software like OBS Studio or similar products with the ability to capture specific windows and apply Chroma Key Filter to them A Roll20 game where you're either GM or have a spare account, that can log into the game as a player, that the GM can move to a specific page for you without you losing your screen I recommend using two different browsers to make the captured window more unique and prevent accidental window switching. Restrictions This method has a small area where dice can roll out of screen.&nbsp; If the gm shows a Handout to everyone, it will most likely pop up in the rolling area as well. You could use that to your advantage though, to have a way to show it to all viewers at the same time as the players get it Since the dice are only rolled, if the browser window is shown, the window has to be visible at all times. This might provide a challenge for people with small screens. How-To Create a new page in the game you want to show the rolls for Set the background color to green (or any color you want to filter) and remove the grid Open the game with a player account and move the character for that player to the new page (recommended to use a second browser)&nbsp; Make sure Avatars are set to "Names only" for the current account and 3D dice options are activated for the player you use and everyone's whose dice rolls you want to show and none of them has the color selected that you use as the background color (or their dice might be almost invisible) (optional) minimize chat Resize the window to a size that still has enough space left but is comfortable enough for you to keep around open somewhere on screen. You might want to experiment a bit so you can resize the cropped area (see below) to your desired screen area and keep the proportions Zoom and pan until everything on screen is green (or the color you chose earlier) Capture the window in your capturing software Add a "cut / pad" filter to the captured window and make sure only the colored background is shown without menues or address / scroll bars Roll the dice Add a "Chroma Key" filter to the captured window, set it to the background color of the page and play around with the settings, until the dice are shown without borders and look good to you Resize and move the captured window in your capturing software to the area you want to show it in your game, put it as one of the top layers so it is visible And that's it.
1610137830
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Nice trick. I'd adopt it immediately, but AFAIK, OBS still doesn't have a Chroma Key filter on Mac. :(
I believe that the trick " Storing and Reading Values for Macros using the Turn Tracker " does not actually work as described.&nbsp; Reading values is fine, but as far as I can tell, the syntax "/r 3d6&nbsp; &amp;{tracker:TOKEN_NAME} " does not do anything different than "/r 3d6&nbsp; &amp;{tracker} ", regardless of whether there is a token named TOKEN_NAME or a character sheet associated with it. Many posts in this forum state plainly that without API access , macros/abilities/etc can only ever send a value to the turn tracker for the token you have currently selected . If there is actually a way to set a value in the tracker for an arbitrary named token, I'd dearly love to know, but I've tried countless variations on this syntax with no effect. Without a token selected, any attempt to send values to the tracker fails with the usual error message, and with a token selected, the value is set for the selected token, disregarding any token name included like " &amp;{tracker:TOKEN_NAME} ".
1610325419
Jordan C.
Pro
API Scripter
Hide Names From "Speaking As" Dropdown After fiddling with Stylus as a result of looking more into the idea of hiding names from the Speaking As dropdown list for chat, I figured it was worth sharing. The basic rules I have found to be easiest to work with are these: Hide specific character - #speakingas option[value=character\| character_id ] { display: none; } Hide all BUT specific character(s) - #speakingas option:not([value=player\| player_id ]):not([value=character\| character_id ]) { &nbsp; &nbsp; display: none; } Here is an example of a full list before any rules are applied: Here is the first rule applied: The ID used here is for Troll. Here is the second rule applied: The IDs used here are for the Troll &nbsp; character and the GM . If there are any improvements to be made, let me know!
1611074425

Edited 1644701900
pell and AoE Templates Assuming your game system has a grid based picture of your effect, you can make a roll20 drag and drop template for the game in about 10 minutes for free. I used these Pathfinder examples. <a href="https://www.d20pfsrd.com/gamemastering/combat/space-reach-threatened-area-templates/" rel="nofollow">https://www.d20pfsrd.com/gamemastering/combat/space-reach-threatened-area-templates/</a> You will need some photo editing software that allows for layers and clear / transparent areas. I used paint.net which is free. 1) First copy and paste the non transparent template into your photo software. Then create another layer. On the new layer, carefully trace the outline of the template. I found that using the draw tool to create boxes, and then deleting the inside lines was easier and neater. 2) Once you are done, delete the first layer with the nontransparent template. 3) Reduce the canvas size until your template just barely fits.&nbsp; 4) Save your image. 5) Import the new image into roll20. 6) Drag it onto the map, and resize until it matches the grids. &nbsp;&nbsp; 7) Create a new character, and use the template as the default token. Make the character useable by all. Voila! Now everyone that casts a spell, chunks a grenade, emanates&nbsp;a power, etc can drag that "character" onto the map and position the template. PS&nbsp; - you can also easily add a photo or graphic to a layer beneath the template, trim it to the same shape as the template, and end up with a token that matches your spell or effect, like this one I made for snowball swarm.
1611165198

Edited 1611165535
Melvin the Mediocre said: 2) Once you are done, delete the first layer with the nontransparent template. Alternatively, make the template layer transparency 75%, and you can get nice fills for the template that don't obscure the view. Like this nice fireball effect. PS on the subject, is there any way to make a "character" dragged out be on the lowest view level. i.e., make the template get a move to back action when dragged out? It is better for visibility if lower on layers but players can't "move to back".
1611166370
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
It can be moved to back with an API script, but not otherwise automatically.
PS on the subject, is there any way to make a "character" dragged out be on the lowest view level. i.e., make the template get a move to back action when dragged out? It is better for visibility if lower on layers but players can't "move to back". Actually I just tested this as a player, and it is a pain as it turns out, because regardless if the gm or a player drops the template, the players can no longer move or select tokens behind the template token until the gm sends it "to back". It would be nice if players had the "to back" and "to front" options for tokens they control.
Melvin the Mediocre said: PS on the subject, is there any way to make a "character" dragged out be on the lowest view level. i.e., make the template get a move to back action when dragged out? It is better for visibility if lower on layers but players can't "move to back". Actually I just tested this as a player, and it is a pain as it turns out, because regardless if the gm or a player drops the template, the players can no longer move or select tokens behind the template token until the gm sends it "to back". It would be nice if players had the "to back" and "to front" options for tokens they control. My workaround currently is to build a "holding area" off map (a border to the map) which players can access and put the spell templates they need on that area and "send to back" myself in advance so they can pull them from there and return them after using.&nbsp;
Melvin the Mediocre said: PS on the subject, is there any way to make a "character" dragged out be on the lowest view level. i.e., make the template get a move to back action when dragged out? It is better for visibility if lower on layers but players can't "move to back" My workaround currently is to build a "holding area" off map (a border to the map) which players can access and put the spell templates they need on that area and "send to back" myself in advance so they can pull them from there and return them after using.&nbsp; This method does not work well on any map where there are enabled dynamic lighting walls, if those walls are checked to block movement.&nbsp; Players trying to "drag"&nbsp; a spell effect in will be blocked by this.&nbsp; It does work for maps without that feature enabled though.
A Stupid Trick if you have Pro: DoorKnocker1x211.js allows you to create transparent walls, they are called windows. They will keep a player token from passing through but allow light go through. Author: Scott C. Contact: <a href="https://app.roll20.net/users/459831/scott-c" rel="nofollow">https://app.roll20.net/users/459831/scott-c</a>
1612154322

Edited 1621087169
Andreas J.
Forum Champion
Sheet Author
Translator
Keeper of Secrets (KoS) said: A Stupid Trick if you have Pro: DoorKnocker1x211.js allows you to create transparent walls, they are called windows. They will keep a player token from passing through but allow light go through. One doesn't even need to use an API to do it. I initially discovered it was possible to make with the freehand tool, and then Scott &amp; Aaron got inspired to incorporate the option to APIs. Seems I forgot to make a proper "Stupid Trick" post about it back then. Dynamic Lighting "Windows" (UDL only) Creating "Windows" in Roll20 is currently an emergent property, and not (yet) strictly an intended feature. There are currently 3 2 methods to create them: (Plus user) Use the Freehand Drawing Tool and draw a back-and-forth line,starting and ending the drawing on the same spot, on the Map or Token Layer , and then move it to the DL layer. You can't use the free hand drawing tool on the DL layer, and need to draw it on another layer. The starting/ending spots will create a small dot that isnt see through, but even with a short window you should get more than 90% of your section like you want. Since Eclipse &amp; Freehand DL was implemented for UDL, this manual trick seems to have stopped working. (Pro user, API) TheAaron has a dedicated API for it called UDLWindows (Pro user, API) Use Scott C's DoorKnocker API, which can create &amp; manage windows since v.1.211 See Windows (Roll20 Community Wiki) for more. Related: [Script] UDLPasswall -- Walls that block sight but not movement!
thank you
Thank you
1612331197

Edited 1612331378
Hey, something similar&nbsp;was already posted, but I thought I'd throw in my two cents. Basically just a quicker, dirtier version of the Map Pins trick. This is especially helpful for official marketplace campaigns that provide a legend for all the locations in a town or area, but combines all of the information into a single handout. It's extremely simple but was definitely a eureka moment for me when I thought of it, especially for GMing on a time crunch like I do. Go to the location marker token on the GM layer and Shift+double click to bring up the token settings. Under GM notes, simply paste in the location notes for that marker. Easy! If you want to go the extra mile, you can add the location name to a nameplate on the marker token, but that can look messy on some maps.
Matthew T. said: Hey, something similar&nbsp;was already posted, but I thought I'd throw in my two cents. Basically just a quicker, dirtier version of the Map Pins trick. This is especially helpful for official marketplace campaigns that provide a legend for all the locations in a town or area, but combines all of the information into a single handout. It's extremely simple but was definitely a eureka moment for me when I thought of it, especially for GMing on a time crunch like I do. Go to the location marker token on the GM layer and Shift+double click to bring up the token settings. Under GM notes, simply paste in the location notes for that marker. Easy! If you want to go the extra mile, you can add the location name to a nameplate on the marker token, but that can look messy on some maps. And if you want to take that one step further, use the Supernotes script to send info on that token to Chat (either to all players or just to the GM) with just a couple of clicks! (That's what I do for all my maps, dungeon or otherwise.)
1612405494
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Even quicker is to put: [name of handout] into the token notes. It will become a link to the handout. Supernotes will put that link into chat that you can click on to open the handout. If you forgo using the built in tokens and just drop an invisible Notes token directly over the room number (keeping it on the token layer), then: It's always ready Player's can't see it You can ping pull to it. If you use the Find Token script, you can put: [name of handout] [Pull players here](!find-token --@{selected|token_name}) into the Notes field. This will give you: in chat. The first button opens a handout called "Hobgoblin Dilemma". The second pulls the player view to the key. In case it's not clear in the screen shot the "A1" graphic is on the GM layer, and an invisible token with a slight yellow square aura (visible only to the GM) is on the token layer. You can put a lot more in that chat menu: Buttons to control visibility of tokens for that encounter, sound effects to play, and more.
keithcurtis said: Even quicker is to put: [name of handout] into the token notes. It will become a link to the handout. Supernotes will put that link into chat that you can click on to open the handout. If you forgo using the built in tokens and just drop an invisible Notes token directly over the room number (keeping it on the token layer), then: It's always ready Player's can't see it You can ping pull to it. If you use the Find Token script, you can put: [name of handout] [Pull players here](!find-token --@{selected|token_name}) into the Notes field. This will give you: in chat. The first button opens a handout called "Hobgoblin Dilemma". The second pulls the player view to the key. In case it's not clear in the screen shot the "A1" graphic is on the GM layer, and an invisible token with a slight yellow square aura (visible only to the GM) is on the token layer. You can put a lot more in that chat menu: Buttons to control visibility of tokens for that encounter, sound effects to play, and more. Yep, and I should have been more clear. That's what I do as well: use the marker token's GM Notes field as a place to store room-specific links that I can send to chat with Supernotes: music, read-aloud text, monster tactics, treasure, secret doors, and so on. Combined with a SendText snippet Gigi adapted from something Aaron wrote: on('ready',()=&gt;{ &nbsp; on('chat:message', (msg) =&gt; { &nbsp; &nbsp; if('api' === msg.type &amp;&amp; /^!send(text|pc)\s+/i.test(msg.content)){ &nbsp; &nbsp; &nbsp; &nbsp;let whom = '/w gm '; &nbsp; &nbsp; &nbsp; &nbsp; if (msg.content.split(/\s/)[0] === '!sendpc') { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; whom = ''; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; let message = whom + `&amp;{template:npcaction} {{description=${ &nbsp; &nbsp; &nbsp; &nbsp; msg.content &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .replace(/^!send(text|pc)\s+/i,'') &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .replace(/(\{\{([\s\S]*)\}\})/g," $2 ") &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .replace(/&lt;br[/]?&gt;/ig,'') &nbsp; &nbsp; &nbsp; } }}`; &nbsp; &nbsp; &nbsp; &nbsp; const checks = { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bolditalic: {what: /B{2}I{2}.*?B{2}I{2}/g, before: /BBII/g, after: '***'},&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bold: {what: /B{2}.*?B{2}/g, before: /BB/g, after: '**'}, &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; italic: {what: /I{2}.*?I{2}/g, before: /II/g, after: '*'}, &nbsp; &nbsp; &nbsp; &nbsp; }; &nbsp; &nbsp; &nbsp; &nbsp; Object.keys(checks).forEach(check =&gt; { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(checks[check].what.test(message)) message = message.replace(checks[check].before,checks[check].after); &nbsp; &nbsp; &nbsp; &nbsp; }); &nbsp; &nbsp; &nbsp; &nbsp; sendChat(msg.who, message); &nbsp; &nbsp; } &nbsp; }); }); Having said that, the pull token thing is new to me, and I'm definitely going to look more into it.
I had an empty spot on my character sheet that I needed to fill, so I came up with this bit of CSS art: The HTMl is: &lt;div class="sword"&gt; &lt;div class="blade-shadow"&gt; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div class="point"&gt;&lt;/div&gt; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div class="blade"&gt;&lt;/div&gt; &nbsp; &nbsp; &lt;/div&gt; &nbsp; &nbsp; &nbsp; &nbsp; &lt;div class="guard"&gt;&lt;/div&gt; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &lt;div class="guard-shadow"&gt;&lt;/div&gt; &nbsp; &nbsp; &lt;div class="hilt"&gt;&lt;/div&gt; &nbsp; &nbsp; &lt;div class="pommel"&gt;&lt;/div&gt; &nbsp; &nbsp; &lt;div class="pommel-shadow"&gt;&lt;/div&gt; &lt;/div&gt; and the CSS: .sheet-pommel-shadow{ &nbsp; &nbsp; height:8px; &nbsp; &nbsp; width:8px; &nbsp; &nbsp; border-radius:50%; &nbsp; &nbsp; background-color:#555; &nbsp; &nbsp; box-shadow: 0 0 5px 5px #555; &nbsp; &nbsp; position:relative; &nbsp; &nbsp; left:5px; &nbsp; &nbsp; top:-8px; &nbsp; &nbsp; z-index:-1; } .sheet-blade-shadow{ &nbsp; &nbsp; margin-top:4px; &nbsp; &nbsp; width:1px; &nbsp; &nbsp; height:60px; &nbsp; &nbsp; margin-left:9px; &nbsp; &nbsp; border-top-left-radius:50%; &nbsp; &nbsp; border-top-right-radius:50%; &nbsp; &nbsp; background-color:#555; &nbsp; &nbsp; box-shadow: 0 0 5px 10px #555; } .sheet-point:after{ &nbsp; &nbsp; content:""; &nbsp; &nbsp; border-style: solid; &nbsp; &nbsp; border-width: 0px 6px 12px 0px; &nbsp; &nbsp; border-color: transparent transparent #dcdcdc transparent; &nbsp; &nbsp; position:relative; &nbsp; &nbsp; top:-16px; } .sheet-guard-shadow{ &nbsp; &nbsp; width:24px; &nbsp; &nbsp; height:2px; &nbsp; &nbsp; margin-left:-2px; &nbsp; &nbsp; margin-top:-8px; &nbsp; &nbsp; background-color:#555; &nbsp; &nbsp; box-shadow: 0 0 5px 5px #555; } .sheet-point{ &nbsp; &nbsp; width: 0; &nbsp; &nbsp; margin-left:-5px; &nbsp; &nbsp; height: 0; &nbsp; &nbsp; border-style: solid; &nbsp; &nbsp; border-width: 0px 0px 12px 6px; &nbsp; &nbsp; border-color: transparent transparent #bcbcbc transparent; &nbsp; &nbsp; position:relative; &nbsp; &nbsp; top:-6px; } .sheet-blade{ &nbsp; &nbsp; width:0px; &nbsp; &nbsp; margin-left:-5px; &nbsp; &nbsp; height:64px; &nbsp; &nbsp; border-style:solid; &nbsp; &nbsp; border-width:0px 6px 0px 6px; &nbsp; &nbsp; border-color:transparent #cccccc transparent #acacac; &nbsp; &nbsp; position:relative; &nbsp; &nbsp; top:-6px; } .sheet-guard{ &nbsp; &nbsp; width:24px; &nbsp; &nbsp; height:6px; &nbsp; &nbsp; border-width:6px; &nbsp; &nbsp; border-radius:50%; &nbsp; &nbsp; border-style:solid; &nbsp; &nbsp; border-color:transparent transparent #FFD700 transparent; &nbsp; &nbsp; z-index:1; &nbsp; &nbsp; position:relative; &nbsp; &nbsp; top:-3px; &nbsp; &nbsp; left:-8px; } .sheet-hilt{ &nbsp; &nbsp; width:8px; &nbsp; &nbsp; height:16px; &nbsp; &nbsp; background: repeating-linear-gradient(15deg, #8B4513, #D2691E 10%, black 20%); &nbsp; &nbsp; position:relative; &nbsp; &nbsp; top:2px; &nbsp; &nbsp; left:6px; &nbsp; &nbsp; box-shadow: 0 0 5px 5px #555; } .sheet-pommel{ &nbsp; &nbsp; width:12px; &nbsp; &nbsp; height:6px; &nbsp; &nbsp; border-top-left-radius:2px; &nbsp; &nbsp; border-top-right-radius:2px; &nbsp; &nbsp; border-bottom-left-radius:50%; &nbsp; &nbsp; border-bottom-right-radius:50%; &nbsp; &nbsp; position:relative; &nbsp; &nbsp; left:4px; &nbsp; &nbsp; top:0px; &nbsp; &nbsp; background-color:#FFD700; }
1612724902

Edited 1612824128
Interpolation between rollable tables and dice rolls I love this thread and it made me solve an interesting problem using only a free account: use both the result from a rollable table and a dice roll to print a single outcome description. To make it happen, I've combined a bunch of already indexed tricks like using a macro mule character, reusing previous rolls and exploit the Ability Command Button rendering. Let's go step by step: Create a rollable table Table name: "option" item1: "A" item2: "B" Create a character mule to hold some abilities Character name: "Macros" ability1: &nbsp;&nbsp;&nbsp;&nbsp;name: "A)'&gt;A0" &nbsp;&nbsp;&nbsp;&nbsp;content: "scenario A failed" ability2: &nbsp;&nbsp;&nbsp;&nbsp;name: "A)'&gt;A1" &nbsp;&nbsp;&nbsp;&nbsp;content: "scenario A succeeded" ability3: &nbsp;&nbsp;&nbsp;&nbsp;name: "B)'&gt;B0" &nbsp;&nbsp;&nbsp;&nbsp;content: "scenario B failed" ability4: &nbsp;&nbsp;&nbsp;&nbsp;name: "B)'&gt;B1" &nbsp;&nbsp;&nbsp;&nbsp;content: "scenario B succeeded" Combine a skill roll with a random option in a macro [[ 1t[option] ]] [[ [[1d6&lt;3]]*1 ]] [Description](~Macros|$[[0]]$[[2]]) If everything went according to plan, you should now have in the same message a roll from the table, a successful or failed skill roll, and a button that prints a textual description of the outcome for you How does this even work? The macro (3.) stores the result of the inline rollable table into $[[0]] , then the result of the skill roll into $[[1]] and finally the multiplication between the latter and 1 in $[[2]]. $[[2]] becomes therefore a string that is independent from any element of the skill roll ($[[1]] on the other hand still holds the number of dice, the size of the dice and the threshold for the success: " Rolling 1d6&lt;3'=(2) ") $[[0]]$[[2]] is therefore rendered as the concatenation of the results of the rollable table and the success of the action. The button serves to reverse the parsing precedence. Note that calling the ability directly ( %{Macros|$[[0]]$[[2]]} ) won't work because the ability parsing takes precedence over the rolls and there is no ability called "$[[0]]$[[2]]" in the character Macros (nor it would be useful to have it). By using a button, the results are embedded in the rendered button and therefore are executed before the ability is called. Now the correct ability can be requested by clicking the button and it will always match the results shown in the line where the button was rendered. The magic here is that somehow (if someone knows how, please quote and respond) either the parser storing mechanism, or the concatenation, or more likely the button rendering, crops the result from the table roll from something like "Rolling 1t[option]'=(A)"&nbsp;to "A)'&gt;A" (much more readable) and the multiplication from "Rolling 0*1'=(0)" to just "0", meaning that the ending call is made against the ability named either "A)'&gt;A0", "A)'&gt;A1", "B)'&gt;B0", or "B)'&gt;B1" . The naming is therefore just " {table_item} )'&gt; {table_item}{success_boolean} " which is extremely easy to write, it works with almost any boolean result, and it's also very clear what it's referring to if you need to scroll through a huge list of similar abilities to update just one.
1612738401
Oosh
Sheet Author
API Scripter
Fiendishly clever.
1612950971
Peter B.
Pro
Sheet Author
Inject any number of attributes to a Roll template Hello Roll20 guys! I don't know if anyone has posted this before, but I just realized that you can any number of attributes to a roll template, by saving them in another field, and then add the field to the end of the template call, if the template is called from a button. I made a post about it here: <a href="https://app.roll20.net/forum/permalink/9793261/" rel="nofollow">https://app.roll20.net/forum/permalink/9793261/</a>
Shinin-Light said: Interpolation between rollable tables and dice rolls &lt;snip&gt; How does this even work? &lt;snip&gt; The magic here is that somehow (if someone knows how, please quote and respond) either the parser storing mechanism, or the concatenation, or more likely the button rendering, crops the result from the table roll from something like "Rolling 1t[option]'=(A)"&nbsp;to "A)'&gt;A" (much more readable) and the multiplication from "Rolling 0*1'=(0)" to just "0", meaning that the ending call is made against the ability named either "A)'&gt;A0", "A)'&gt;A1", "B)'&gt;B0", or "B)'&gt;B1" . The naming is therefore just " {table_item} )'&gt; {table_item}{success_boolean} " which is extremely easy to write, it works with almost any boolean result, and it's also very clear what it's referring to if you need to scroll through a huge list of similar abilities to update just one. The cropping is the result of the HTML sanitizer. When the roll button is created it adds the raw html for the dice roll into the link. When clicked the HTML is scrubbed from the input. However that HTML also contains the tooltip content as an HTML attribute; when the tooltip also contains HTML the sanitizer gets tripped up and cuts in the wrong place. This results in tooltip text and the hanging end of an HTML tag bleeding through. As for why different rolls get different text. Calculation only rolls with no random elements (that haven't been lifted into a nested roll) don't add any HTML to it's tooltip which correctly leaves just the result Roll tables add HTML only around the item in brackets (but not the brackets themselves) cutting everything up to that point Dices rolls add the quantum roll image so the bleed through starts immediately with the "Rolling" text after the image
1613191904

Edited 1613342424
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Deleted this because I was responding to a clever spam.