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)

1648758385

Edited 1648758521
From a previous help request about rolling physical dice, some of us collaborated and through a meeting of the minds figured out how to make the 5e by roll20 sheet take physical dice in a cool way: ?{Physical Digital Critical?||Physical,?{What you rolled}+0d20|Digital,1d20|Critical,1d20cs>1} Physical asks for the actual number rolled and then adds the modifiers as normal but fails to register criticals for attack rolls.   Digital runs the dice as normal through the quantum roller Critical sets the CS range to always so that if you roll a physical nat 20 on an attack, this will just basically bypass the caveat with physical option above and roll critical damage.   You need to paste the above code into the "Core Die" field on the character sheets: This will also save on npc sheets if you briefly set them to PC change the core roll, then change them back, you can also do this trick for npcs that have an increased crit range too or need a global modifier turned on for the record.   NOTE:  It seems that the critical option overrides the crit range field below in the image for the record so you do not need to change that also for any reason for this trick.  Just include the cs>1 in the above code in the critical option.  
1649254455

Edited 1649255271
Use Emoji to Clarify Sheet Actions Not my original idea (thanks reddit user Emmia for this one!). Didn't see it in the thread anywhere else, so hopefully I'm not duplicating. Using emoji, you can make features and actions (or really anything!) on your sheet more easy to parse at a glance. Requires a bit of manual work - just copy and paste them into the name of the item. This work goes pretty fast for an established sheet, I suggest trying to do all similar items in one pass so you don't have to switch what is in your copied clipboard. While I think this is helpful to players, this is super helpful as the DM, as I'm less familiar with character options than most other functions in the game. So if I need to hop into a sheet to run for someone who is missing a session, or help troubleshoot, I can quickly see what options are available to me in my current game situation without toggling everything open. This is the template I have started with (easily expand with whatever emoji you want, add multiple emoji for complex actions, whatever!), which I add at the top of the Features & Traits section as a cheat sheet: For some reason the forum won't display four of the emoji. They display fine on the character sheet. Click this  link to access github version  to copy/paste from ❔ Action Colors ⚪ - Passive  - Action  - Bonus Action  - Movement  - Reaction ⚫ - Free Action ⏲️ - Spell with long cast time And here are some screenshots of this in action on the 5e sheet: 6th Level Cleric Sheet Easy to spot which attacks/actions are Bonus or Standard. 6th Level Cleric Spell Page Don't need to toggle open the spell description to see whether the spell is a reaction, action, or bonus action, or if it just takes a long time to cast but isn't a ritual. 6th Level Tortle Druid Sheet Lots of passive items on this sheet. The emoji makes it easier to skim through the features looking for features you can use as an action, or to spot passives you need to double check. Could easily be re-arranged so all similar actions/passives are grouped together in the features box.
1649255145

Edited 1649255170
I also added a stopwatch and crossed swords for concentration and superiority dice.  And I added another color for "On hit" and "On critical".  
1649257668
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Good tip. It's similar to one of the very first tricks, but that was more aimed at saving button space.
That's neat but doesn't everything get remove when you level up using the charactermancer ? Loren the GM said: Use Emoji to Clarify Sheet Actions Not my original idea (thanks reddit user Emmia for this one!). Didn't see it in the thread anywhere else, so hopefully I'm not duplicating. Using emoji, you can make features and actions (or really anything!) on your sheet more easy to parse at a glance. Requires a bit of manual work - just copy and paste them into the name of the item. This work goes pretty fast for an established sheet, I suggest trying to do all similar items in one pass so you don't have to switch what is in your copied clipboard. While I think this is helpful to players, this is super helpful as the DM, as I'm less familiar with character options than most other functions in the game. So if I need to hop into a sheet to run for someone who is missing a session, or help troubleshoot, I can quickly see what options are available to me in my current game situation without toggling everything open. This is the template I have started with (easily expand with whatever emoji you want, add multiple emoji for complex actions, whatever!), which I add at the top of the Features & Traits section as a cheat sheet: For some reason the forum won't display four of the emoji. They display fine on the character sheet. Click this  link to access github version  to copy/paste from ❔ Action Colors ⚪ - Passive  - Action  - Bonus Action  - Movement  - Reaction ⚫ - Free Action ⏲️ - Spell with long cast time And here are some screenshots of this in action on the 5e sheet: 6th Level Cleric Sheet Easy to spot which attacks/actions are Bonus or Standard. 6th Level Cleric Spell Page Don't need to toggle open the spell description to see whether the spell is a reaction, action, or bonus action, or if it just takes a long time to cast but isn't a ritual. 6th Level Tortle Druid Sheet Lots of passive items on this sheet. The emoji makes it easier to skim through the features looking for features you can use as an action, or to spot passives you need to double check. Could easily be re-arranged so all similar actions/passives are grouped together in the features box.
Verbose API message debugging script I use the following script to help debug API scripts. For example, figuring out how to make "Customizable Roll Listener" work. on('chat:message', msg => {     log(msg); //log every msg to the API console }); //below is a reminder that logging is ongoing; script should be disabled for normal use on('ready',f =>{    log('API is Up.\n*************************************\n*****VERBOSE MSG LOGGING ENABLED*****\n*************************************');    sendChat("dumpMsg.js","/w gm VERBOSE MSG LOGGING ENABLED",null,{noarchive:true});   // log(`=========================id: ${state.someState} | obj: ${JSON.stringify(state.someState)}`); //log state information for another script }); I save the above as a New Script named "dumpMsg.js", and enable/disable it as needed. The name is not important. Disabling it when not needed will avoid lots of unneeded messages in the API console.
sebastien g. said: That's neat but doesn't everything get remove when you level up using the charactermancer ? It only removes it if you overwrite the item when using the charactermancer, which I don't believe is general behavior - the charactermancer tends to be additive rather than overwrite (it is much easier to end up with two entries on your character sheet then for it to remove something or overwrite it). The one weirdness I have noticed with the charactermancer is it does mess with the list of currently known spells, since it is technically renaming them. 
Ok thx Loren the GM said: sebastien g. said: That's neat but doesn't everything get remove when you level up using the charactermancer ? It only removes it if you overwrite the item when using the charactermancer, which I don't believe is general behavior - the charactermancer tends to be additive rather than overwrite (it is much easier to end up with two entries on your character sheet then for it to remove something or overwrite it). The one weirdness I have noticed with the charactermancer is it does mess with the list of currently known spells, since it is technically renaming them.  Loren the GM said: sebastien g. said: That's neat but doesn't everything get remove when you level up using the charactermancer ? It only removes it if you overwrite the item when using the charactermancer, which I don't believe is general behavior - the charactermancer tends to be additive rather than overwrite (it is much easier to end up with two entries on your character sheet then for it to remove something or overwrite it). The one weirdness I have noticed with the charactermancer is it does mess with the list of currently known spells, since it is technically renaming them. 
1649368291

Edited 1649368505
Hiding multiple query calls on an empty link I'm not sure if this is a known trick, but filling the text of a link with a space "[ ](<url>)" seems to completely remove the link from the chat, but if you replace the url with a query call, it is still triggered and can be referenced later on. This might be useful for condensing multiple query calls at the beginning of a macro/roll template (i use this before the title of a roll template) to help with  readability or preventing more complex queries from breaking more sensitive parts of a macro (like rollable table calls). Ex.:  [ ]( ?{bonus_type|Accuracy,1|Split,0.5|Damage,0} ?{mana|1,4|2,8|3,12})
1649379335
Arumeda said: Hiding multiple query calls on an empty link I'm not sure if this is a known trick, but filling the text of a link with a space "[ ](<url>)" seems to completely remove the link from the chat, but if you replace the url with a query call, it is still triggered and can be referenced later on. This might be useful for condensing multiple query calls at the beginning of a macro/roll template (i use this before the title of a roll template) to help with  readability or preventing more complex queries from breaking more sensitive parts of a macro (like rollable table calls). Ex.:  [ ]( ?{bonus_type|Accuracy,1|Split,0.5|Damage,0} ?{mana|1,4|2,8|3,12}) That’s good, but an even simpler way is to use a fake API call:  !?{bonus_type|Accuracy,1|Split,0.5|Damage,0} ?{mana|1,4|2,8|3,12}
To clarify: Jarren said: Arumeda said: Hiding multiple query calls on an empty link I'm not sure if this is a known trick, but filling the text of a link with a space "[ ](<url>)" seems to completely remove the link from the chat, but if you replace the url with a query call, it is still triggered and can be referenced later on. This might be useful for condensing multiple query calls at the beginning of a macro/roll template (i use this before the title of a roll template) to help with  readability or preventing more complex queries from breaking more sensitive parts of a macro (like rollable table calls). Ex.:  [ ]( ?{bonus_type|Accuracy,1|Split,0.5|Damage,0} ?{mana|1,4|2,8|3,12}) That’s good, but an even simpler way is to use a fake API call:  !?{bonus_type|Accuracy,1|Split,0.5|Damage,0} ?{mana|1,4|2,8|3,12} I should point out: this isn't a “fake API Call” this is an “ignored API call” where the API Call goes out but is ignored, used when constructing Chat Macro Buttons (link URL can be located in 1st post, with multiple other indexed completed tips) in addition to Parser Buffering using HTML (which was covered in a separate trick, URL in 1st Post).
Thanks for such a helpful post!
1651862521
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Khruc said: Does anyone know of any script that does random outcomes?  I want to add 5 different possible sounds to one attack roll using the  !roll20AM --audio,play|  script.  thanks Hi Khruc! This thread is for sharing finished tricks that users have created. Check out the top post for some general guidelines. If you are looking for a solution to a particular thing you want to accomplish, the best thing to do is to post your own thread in  Specific Use Questions & Macros . I'm sure there are some folks who have great ideas to share.
1653246172
Having a lot to keep track of, I often found myself forgetting to use the extra actions in D&D boss fights.  So I have created tokens for Lair Action and Legendary Action 1 through 3.  I keep them on the GM layer so I can add them to the turn counter, but they don't show up to the players.  I space them into the initiative as a reminder to use them in boss fights (of course I can use them whenever, but it helps).
Jim M. said: Having a lot to keep track of, I often found myself forgetting to use the extra actions in D&D boss fights.  So I have created tokens for Lair Action and Legendary Action 1 through 3.  I keep them on the GM layer so I can add them to the turn counter, but they don't show up to the players.  I space them into the initiative as a reminder to use them in boss fights (of course I can use them whenever, but it helps). Nice!  I did the exact same thing. :)
1653254820
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
That's pretty handy! Good way to keep track of all kinds of events that are invisible to the players.
1655508633

Edited 1656085445
Reusing rolls to get additional crit damage So, thanks to Scott C   RainbowEncoder and Oosh 's respective work, I started messing with roll templates to allow attacks to add damage dices if and only if we get a nat twenty. &{template:default} {{name=Attack}} {{2=Damage : [[ [[4d6+5]]+[[floor($[[1]]/25)*4d6]] ]]}} {{1=Check : [ ]([[) [[1d20+5]] [ ](]])}}   Thanks to Blue64 for the improvement
1655922893
I am fairly certain this is because you are using round() instead of the more commonly used floor().
1657328687
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Moving a Journal Quickly Up and Down the Journal Tab Problem: A handout or character is created at the bottom of the Journal Tab, usually via the API or importing through the Character Vauult or the Transmogrifier. You need to move it to the top, but there are dozens of open folders in between with maybe hundreds of files. Solution: Use the Find field in the journal tab to find the journal. It is now the only file that shows and can be dragged to the top (or anywhere, really) in an instant. Before (aieee!!! Look at all that scrolling!) : After (take the shortcut!):
1657348112
does this work when searching folders too?
1657349866
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Blue64 said: does this work when searching folders too? What do you mean? You will need to expand a folder that a journal is in if it is not already expanded.
1657363302
THANK YOU!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! keithcurtis said: Moving a Journal Quickly Up and Down the Journal Tab Problem: A handout or character is created at the bottom of the Journal Tab, usually via the API or importing through the Character Vauult or the Transmogrifier. You need to move it to the top, but there are dozens of open folders in between with maybe hundreds of files. Solution: Use the Find field in the journal tab to find the journal. It is now the only file that shows and can be dragged to the top (or anywhere, really) in an instant. Before (aieee!!! Look at all that scrolling!) : After (take the shortcut!):
1657386788
Bless you, sir!
1657401180
keithcurtis said: Blue64 said: does this work when searching folders too? What do you mean? You will need to expand a folder that a journal is in if it is not already expanded. I mean, can you search folders the same way? Does this work when searching folders too, or just sheets & handouts?
1657402073
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
You cannot search for a folder name, but if you search for anything , all the folder names will still be visible. You can drag those up and down .
I do not know where to post this question, so here goes.   I need to copy several maps out of one game into my working game.  How do I do that?
1657858019

Edited 1657858057
Kraynic
Pro
Sheet Author
Gregory D said: I do not know where to post this question, so here goes.   I need to copy several maps out of one game into my working game.  How do I do that? You should create your own thread for that, since this is a thread specifically for finished tricks to use in Roll20.
Rolling multiples of dice plus modifier (eg 1d4 lots of 1d6+1) If want to handle a variable amount of some dice plus modifier but without using secondary macros or rollable tables (which could be cumbersome if you need this a lot); an alternative is to wrap the modifier into the dice. For example to handle 1d4 lots of 1d6+1 you can change the d6+1 into a d7r<1 d6+1 and d7r<1 have the same output range and frequencies but with the d7 you can just roll multiple times without having to worry about the separate modifier. Thus 1d4 lots of 1d6+1 can become [[1d4]]d7r<1 This only works with positive modifiers since dice cannot roll zeros or negatives It can also be extended to use a query modifier Such that d6+?{Mod|0} can be written as d(6+?{Mod|0})r<?{Mod} If you wanting to use something that isn't some amount of a single die plus modifier your options are more limited. 2d4+1 cannot be handled this way since 2d5r>1 would have a range of 4 to 10 instead of 3 to 9. However if the modifier is a multiple of the number of dice it can work by dividing the modifier by the dice count. So 1d4 lots of 2d4+6 can become ([[1d4]]*2)d(4+3)r<3 Generically this works for X lots of AdB+C as (X*A)d(B+C/A)r<[[C/A]] as long is the modifier C is a multiple of the number of dice A
1658909456
That being said, you might find reading the Rollable Chat Menu trick from this thread useful! You just require a little transposing specific symbols into HTML, there should be a Google Doc where you can see someone automated this somewhere in this archive as well. I use a similar looking Macro to identify local weather patterns when playing my game (recently, my players had a Sleet Storm hit, Ice everywhere, now if only they were affected by difficult terrain, shrug). We wish you luck, and encourage you to return when you've completed your Macro, it looks promising!
1658924118
OK thanks guys, appreciate the help. I will follow your advice, thanks Blue64
I have been going through the wikis and looked around in the forums but I can't figure out a way to reduce the number of an outcome if it is a specific number. I am trying to create a specific roll where the chances of different outcomes differ in 3 stages.  1/12 individual chance to roll 1, 2, 3 or 4. There is a 1/6 individual chance to roll 5 or 6 and a 1/3 chance to roll a 7 I got this so far. /roll 2d8kh1 I just don’t know how to make it lower it from a 8 to a 7 if it rolls a 8 to make the 1/3 to get a 7.
1659563996
Kraynic
Pro
Sheet Author
Micro said: I have been going through the wikis and looked around in the forums but I can't figure out a way to reduce the number of an outcome if it is a specific number. I am trying to create a specific roll where the chances of different outcomes differ in 3 stages.  1/12 individual chance to roll 1, 2, 3 or 4. There is a 1/6 individual chance to roll 5 or 6 and a 1/3 chance to roll a 7 I got this so far. /roll 2d8kh1 I just don’t know how to make it lower it from a 8 to a 7 if it rolls a 8 to make the 1/3 to get a 7. This isn't a thread in which to ask questions (unless it is to clarify a trick that is detailed here).  You should start your own thread for this question.
1661512614
Kruc
Pro
Is there an API script available that does the following: When a player token crosses a threshold, let's say opens the door and moves into the room, that will play an audio file and have some text show up in the chat automatically? thx
1661515388
David M.
Pro
API Scripter
Kruc, this thread is for posting completed and working solutions, tricks, and tips, not questions. If you have a question it's best to start your own thread. That being said, you may want to look into the It's a Trap api mod.
1662454671

Edited 1662510911
Comparing numbers, greater than or equal to, and return only one of two dice rolls So, using Mike deBoston's trick for comparing values without the API , I came up with an inline-heavy trick to cut off dice progression for a skill/spell/ability once a certain level requirement is met. The example use case for this is Pathfinder v1, for a spell that has a maximum die level determined by caster/class level, with a threshold where the die level stops increasing at a certain caster/class level. Part 1 of the comparison starts with just whether the caster/class level is below the threshold: [[ [[ [[ floor([[ {-1000, (@{CharacterName|class-#-level}+1)}<X]]/2)]]*@{CharacterName|class-#-level}]]dY]] Where # is (class-1) in the Pathfinder sheet, typically the 1st class if not multiclassing, and Y is the die (ex: d4, d6...). X is the level cutoff. We're comparing to see if the class level is less than the cutoff, using "<X". True returns "2", and False returns "1". We need to make those results, "1" for True and "0" for False, so we divide the result by 2, and then wrap that part in a "floor()". Then we take the floored equation, which now outputs either 1 or 0, and multiply by the class level, which will return either 0 or the class level. Part 2 of the comparison is the inverse of what we did above, finding whether the caster/class level is above the threshold: [[ ([[ {-1000, (@{CharacterName|class-#-level})}>X]]*X)dY ]] The same identifiers from the above equation are the same here, with # being (class-1), Y is the die, and X is the level cutoff. In this case, since we're going >X, True already returns "1" and False returns "0". Which we then multiply by the level cutoff, getting either 0 or (level)d(Y) as a result. Part 3: Combine the two equations with "+" , and wrap in one more set of double brackets, to get the whole roll: [[ [[ [[ [[ floor([[ {-1000, (@{CharacterName|class-#-level}+1)}<X]]/2)]]*@{CharacterName|class-#-level}]]dY]] + [[ ([[ {-1000, (@{CharacterName|class-#-level})}>X]]*X)dY ]] ]] The final result for my current Pathfinder v1 character, Uro, who is a Fire domain Cleric with the ability to cast Burning Hands, with a damage die of 1d4 per caster level, and a threshold of level 5/max 5d4, looks like this: [[ [[ [[ [[ floor([[ {-1000, (@{Uro|class-0-level}+1)}<5]]/2)]]*@{Uro|class-0-level}]]d4]] + [[ ([[ {-1000, (@{Uro|class-0-level})}>5]]*5)d4 ]] ]] Below level 5, hovering over the result in chat looks like "Rolling ## + 0 = ##+0". Over level 5, the hover result in chat looks like "Rolling 0 +## = 0 +##". In both cases '##' represents the half of the die roll equation that was allowed to go off. So ideally one would want to use some of the other tricks lying around if it is necessary to see the individual dice rolls, but this was meant to be a means of "set it and forget it". The Pathfinder v1 sheet gets pretty busy and it's nice to only have to adjust it when adding new abilities instead of also when fixing old ones every level-up or two. Much like the macro someone came up with for setting/forgetting the bonus for Blessed Healer (was gonna link it for posterity but now I can't find it :\ [edit: found it , and it's actually more similar to the solution in the reply below this post, I just didn't understand it well at the time]). If someone else has a better/cleaner version, then by all means share it/point me at it!
Epsi said: Comparing numbers, greater than or equal to, and return only one of two dice rolls ...snip... If someone else has a better/cleaner version, then by all means share it/point me at it! The theory is sound. The ability to have conditionals return 0 or 1 in order to select an output is a particularly useful in the absence of traditional if-then statements. However the example provided of rolling a class-level number of dice up to a maximum can be more cleanly stated using Keep/Drop mechanics as [[ {@{class-#-level},X}kl1]]dY Had the die size or calculation changed at that (or other) points then this would be a perfectly serviceable technique.
RainbowEncoder said: The theory is sound. The ability to have conditionals return 0 or 1 in order to select an output is a particularly useful in the absence of traditional if-then statements. However the example provided of rolling a class-level number of dice up to a maximum can be more cleanly stated using Keep/Drop mechanics as [[ {@{class-#-level},X}kl1]]dY Had the die size or calculation changed at that (or other) points then this would be a perfectly serviceable technique. Holy crap that's amazing. Thank you. I'm still pretty new to doing macros from "scratch" in Roll20, creating them for our games usually gets shoved over to the programmer guy in our group. It's mostly learning the syntax yet. But I'm learning web programming myself, and have aspirations of getting good enough at Roll20 stuff to resurrect some dying sheets that aren't being maintained anymore.
1662560214
I don't think many of us figured out the Roll20 Tip & Trick (yet) to both be the Programmer Guy & the GM (Game Master, procedural creator of the world and its rules).
1662877117

Edited 1662877505
Removing "This message has been hidden." status from Chat Box I don't know if this the right place to post this but: The Delete (or more like, hide ) message update is out now, but if you guys' dislike the stacking spam "This message has been hidden" status, just use stylus and add this to your stylus. @-moz-document domain("app.roll20.net") { /*Hide hidden message status from yourself*/ div.message.hidden-message.you { display: none !important; } /*Hide hidden message status from other*/ div.message.hidden-message { display: none !important; } } For those who don't know what or how to use stylus: Stylus - Roll20 Wiki Pretty neat, It's a win-win solution for both player, GM and Moderator. The message is still there, but it's just become invisible. Without Stylus: With Stylus: Note: It also automatically work for Chat Archive as well! If there's a moderation problem, or accidentally delete the wrong message, just turn off the Stylus, the Hidden message label will reappear and the option to view the message will appear as well. Also, works great with games with many hidden clue/messages.
1662915682
Scott
Plus
Creating Padded Tokens in Paint3D (For the purpose of having a small character centred token on the map) Hi all, Just posting a quick tip that I sorted out for myself.  There may be better ways to do it, but this is how I started doing this: [Using Paint3D on Windows10] Craft your token normally (like many I use token tool and borrow images I found online, or get my players to find an image they like etc.). Once you have the PNG file created by Token tool with preferred border etc, but the nice round shape as the rest of the "square" is transparent, we need to use Paint3D to Resize the image. Open the file in Paint3D. Click Canvas at the TOP of the application. On the right side, Under the Resize Canvas section - make sure that Lock aspect ratio and Resize image with canvas are selected. Also make sure that you have "Transparent canvas" set to On in the "Canvas" section. [My starting image dimensions are 256x256 Pixels] Easiest to just click in and set 128px on one of those boxes and it will resize the image and canvas to the smaller size. Click "Select" From the top of the app, just below the "Menu" option. Hit CTRL-A to select the entire image Hit CTRL-C to copy the image to your clip board. Re-open the original image file in Paint3D (choosing not to save any changes made so far if Prompted). Hit CTRL-A to select this larger image. Hit DEL key to delete it. Hit CTRL-V to paste your saved image (It should paste the smaller image from your clipboard, dead centre of the canvas. Now you just need to save the new file. Click Menu -> Save as Click Image Save the image with the file name you desire (I usually use original filename with _SMALL appended to it). Make sure you are saving as 2D - PNG (*.png).  The save window should show this under "Save as type:" before you click save. If it does not say that, use the drop down to choose that type.  (PNG type is required to preserve the transparency of the token. From there just upload this file to Roll20 and create a token as you normally would. You should have smaller token with desired transparency around it.  It is in effect a full size token, but the token image will appear smaller and it will be evident that said character is small and not a medium creature.