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)

1662921259
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Thanks, Scott! There are some alternative methods to achieving this outcome in this post .
Speaking of padding tokens, I came up with this method for making spell AOE tokens easier to manipulate. Padding out the token to double it's length redefines its center; that way, when a cone or line effect is placed on the VTT as if it is originating from a player or NPC token, you can easily rotate the spell token to "aim" it either by using the token's rotation handle or holding down "E" and using the mouse scroll wheel.
Rick A. said: Speaking of padding tokens, I came up with this method for making spell AOE tokens easier to manipulate. Padding out the token to double it's length redefines its center; that way, when a cone or line effect is placed on the VTT as if it is originating from a player or NPC token, you can easily rotate the spell token to "aim" it either by using the token's rotation handle or holding down "E" and using the mouse scroll wheel. I wasn't aware you could hold E + rotate Mouse Wheel, but you should remember you need to account for their central square too, meaning a 15-foot-cone should be 35-feet long to use this trick effectively (3 squares + 1 square + 3 squares = 7 squares = 35 feet)
1663195863
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
It looks like that's accounted for in the screen shot. That's a 30' cone. AFAIK, 5e only uses 15, 30, and 60 cones for spells.
Yes, the padding of the token needs to account for the effect beginning in the square adjacent to the originating token. The "E+Mousewheel" method is handy for crowded maps where the token's rotate handle is hard to find. "E+Alt+Mousewheel" allows for finer control, just like holding down the ALT key while using the rotate handle.
keithcurtis said: It looks like that's accounted for in the screen shot. That's a 30' cone. AFAIK, 5e only uses 15, 30, and 60 cones for spells. Accounted for in the Screenshot, perhaps; but they had failed to specify in their text, hence why I specified, with explanation to demonstrate, because 5e, amongst other systems, use Caster Edge instead of Caster Center to generate their radial start point when measuring things like the range on Burning Hands.
Blue64 said: Accounted for in the Screenshot, perhaps; but they had failed to specify in their text, hence why I specified, with explanation to demonstrate, because 5e, amongst other systems, use Caster Edge instead of Caster Center to generate their radial start point when measuring things like the range on Burning Hands. Fair point. I'm visually oriented so when given a diagram or illustration I use that as the primary source of information before reading accompanying text. I often forget that others don't do that. 41 years of creating technical drawings for a living will do that to you. :)
1664050203

Edited 1664050229
Fairly certain I am not misreading this; @SkyRZ5 did you forget to mention if default "New User CSS" Settings were fine in <a href="https://app.roll20.net/forum/permalink/11085840/" rel="nofollow">https://app.roll20.net/forum/permalink/11085840/</a> ? Probably want to edit that into your message, along with any other touch-ups.
1664766444
Scott C.
Forum Champion
Sheet Author
API Scripter
Compendium Curator
I'm sure this has occurred to others, but here's a simple trick for when you want to create a complex soundscape for a game, but can't find a single track that does everything you want. Layered Soundscapes This trick uses the ability to play multiple playlists at once to create a layered and complex environment of sounds. I'll be using the scenario from my game as the example, although it's actually a pretty simple version of this. The Problem I had a session where a Kraken was going to be assaulting the party and was going to be using an ability to control weather to turn the weather into a hurricane that would batter the party before the Kraken's minions came down on the party. There are some great weather soundscapes on the battle bards list in Roll20, but they are either long and relatively gentle, or short and violent. I wanted a long set of background storm noise interspersed semi-randomly with blasts, rumbles, and deafening crashes of thunder. The Solution Not being an audio engineer, I didn't want to try to assemble this collection of sounds on my own. Instead, I created two playlists. The background playlist This playlist contained the basic long storm soundscape tracks that I found. They had some thunder effects in them, but nothing BIG. The emphasis playlist This playlist contained a mix of the various loud thunder rolls and crashes that I had found interspersed with several silent tracks (See note below) of varying length. This created a set of loud storm noises that played at different times across my background storm noises. I had silent tracks of 5 seconds, 30 seconds, and 1 minute. Both playlists were set to repeat. Here's what my playlists look like: * Note on the silent tracks: While I used actual empty tracks that had no sound in them for my empty tracks, you could as easily just put any old track in those positions and move the volume slider for them all the way to 0. Trick Extensions/Modifications Use more playlists to create separate tracks of various environmental aspects you want interspersed in your scene (sword strikes, magic attacks, screams, etc). Play around with the different play modes of the playlists and their contained songs to see what various mixtures do (e.g. a playlist that is set to simulplay, but has tracks that are set to repeat).
This is a little trick if you wanted to try out One DnD's new exhaustion rules in a normal Roll20 5e character sheet: You'll need to use the FIRST other_resource box and name it "exhaustion" (name doesn't actually matter, but it's helpful) Then set up your core die roll like so: And away you go... that penalty will be applied to all your d20 rolls from the sheet. It'll give you negative results so it's not perfect but 20s and 1s still get coloured. One DnD's exhaustion rule for those who haven't read it (I think it's pretty elegant): EXHAUSTED [CONDITION] While you are subjected to the Exhausted Condition (known in older books as Exhaustion), you experience the following effects: Levels of Exhaustion. This Condition is cumulative. Each time you receive it, you gain 1 level of exhaustion. You die if your exhaustion level exceeds 10. d20&nbsp;Rolls Affected. When you make a d20 Test, you subtract your exhaustion level from the d20 roll. Spell Save DCs Affected. Subtract your exhaustion level from the Spell save DC of any Spell you cast. (this is not solved by the above hack) Ending the Condition. Finishing a Long Rest removes 1 of your levels of exhaustion. When your exhaustion level reaches 0, you are no longer Exhausted.
1665624236
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
I've tried that at my own table. You can make it a little more friendly by putting in: 1d20-@{other_resource}[Exhaustion] and the reason for the minus will show up when you hover over a roll in chat.
1667273721

Edited 1667792066
Responding To Roll20 Requests On External Server And Returning Response To Roll20 (With Only The Free Subscription): You can do a fair amount with the Roll20 macros but if you only have the free account sometimes you want a little more. For such cases, I found this hack. Macros don't allow you to call external server but they do allow you to reference images from external servers. The way that Roll20 determines a valid image URL is to check the ending of the URL for a valid image extension. This can be exploited. What I did was create a little PHP script that I run on my web server. The PHP script does all of the processing of the request (with the option to read parameters from Roll20 via query parameters) and then it creates an image with the results. The server then returns the image to Roll20 to display. As such, when the roll20 macro tries to get the image from my server, it is actually going to a PHP URL but because I tack on a query parameter that ends in ".png", roll20 is happy with it. Since my server does return an image, roll20 is happy with process and displays the image (i.e. the results of the request). This hack doesn't really pose any security treat to roll20 because the returned information, back to roll20, can only be an image. The only other trick is getting by the caching. Normally roll20 caches images so if you ran the macro twice the second time you would normally get the exact same results since it would just show the results of the cached image. To get around this I added a roll (random number) into the query parameter. I happened to have used two rolls of 1D100 meaning roughly 10000 possibilities. The difference in this random number causes roll20 to consider the URL as a different URL and forces it to read the image from the original server (and thus pick up the updated images with the new results).
1667577265

Edited 1667577324
Patrick M. (he/him) &nbsp;said: This is a little trick if you wanted to try out One DnD's new&nbsp; exhaustion rules &nbsp;in a normal Roll20 5e character sheet: You'll need to use the FIRST other_resource box and name it "exhaustion" (name doesn't actually matter, but it's helpful) Then set up your core die roll like so: And away you go... that penalty will be applied to all your d20 rolls from the sheet. It'll give you negative results so it's not perfect but 20s and 1s still get coloured. One DnD's exhaustion rule for those who haven't read it (I think it's pretty elegant): EXHAUSTED [CONDITION] While you are subjected to the Exhausted Condition (known in older books as Exhaustion), you experience the following effects: Levels of Exhaustion. &nbsp;This Condition is cumulative. Each time you receive it, you gain 1 level of exhaustion. You die if your exhaustion level exceeds 10.&nbsp; d20&nbsp;Rolls Affected. &nbsp;When you make a d20 Test, you subtract your exhaustion level from the d20 roll. Spell Save DCs Affected. &nbsp;Subtract your exhaustion level from the Spell save DC of any Spell you cast.&nbsp; (this is not solved by the above hack) Ending the Condition. &nbsp;Finishing a Long Rest removes 1 of your levels of exhaustion. When your exhaustion level reaches 0, you are no longer Exhausted. So I'm running the new OneDND Exhaustion rules and tried editing the core dice on the character sheet as described in the posts above, but whenever I do so, it doesn't appear to add any mods to whatever roll I'm making. The above, for example is what I see when I mouse over the roll. Exhaustion is set to 5 for this test, so the roll should be outputting 6 (the die roll) - 5 (exhaustion) + 4 (INT) + 2 (PROF) + 1 (Global spell atk mod), or (6)-5+4+2+1 which is 8, Instead, it's outputting 1, and I cannot for the life of me figure out why.
1667579877
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Have you filled out the exact same field for exhaustion? Not one on a different row?
1667697342

Edited 1667697841
(1d20-(5cs&gt;20)) This might be your error, move your modifier around with your Critical Success. ((1d20cs&gt;20)-5) Using bracketing parentheses will help; the P in PEMDAS means Parentheses go first, every time. Computer Science 101, easy. Comprehensively Debugging your Math in Macros: Just use Parentheses to track what each equation adjusts; adapt accordingly. Sometimes you want Multiplication first, sometimes you want Multiplication second, Parentheses are the way to reach this result, in addition to each iteration telling you exactly what your new result was. You can use this specific information to comprehensively iterate over your math logic to build a result you are aiming to achieve.
Hi everyone, sorry if it's not the good place (i'm french and a little bit lost here ^^) Do you know if there is a command to run an audio that i upload to my game ? like /play for exemple ?&nbsp; thank's for your help !
1668062443
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Hi Alexandre! This thread is for sharing finished tricks that use the Roll20 interface in a creative or novel way. A better place to post such a question is in the "Specific Use Questions and Macros forum. But a quick answer to your question is that running audio with a command requires a script like Roll20 AudioMaster or SimpleSound, which would require the game to be created by a user with a Pro subscription.
Thanks
1670204577

Edited 1670204829
G.M. Joe
Pro
Sheet Author
Hey, I never saw anyone else post this, and I just figured it out.... Building on Oosh's&nbsp; HTML Styles in Chat , I figured out you can also use HTML styling in images, but you have to put it in the square brackets, not the parentheses.&nbsp; So, normally when you enter an image it looks like this: [skull]( <a href="https://s3.amazonaws.com/files.d20.io/images/1/i-f4Y5RklihSCLNOzppdwA/max.png" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/1/i-f4Y5RklihSCLNOzppdwA/max.png</a> ) and you get an image that spans the width of the chat, but if I want it smaller I could do this:&nbsp; [skull" width="50" height="50"]( <a href="https://s3.amazonaws.com/files.d20.io/images/1/i-f4Y5RklihSCLNOzppdwA/max.png" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/1/i-f4Y5RklihSCLNOzppdwA/max.png</a> ) I know nothing about html, this was just a trial and error thing, so I'm not sure of any limitations, potential issues, or even other applications than resizing.
1670265748
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Hi G.M.Joe! Cool tip. Definitely aarrants some investigation for what is possible. Thanks!
G.M. Joe said: Building on Oosh's&nbsp; HTML Styles in Chat , I figured out you can also use HTML styling in images, but you have to put it in the square brackets, not the parentheses.&nbsp; and you get an image that spans the width of the chat, but if I want it smaller I could do this:&nbsp; [skull" width="50" height="50"]( <a href="https://s3.amazonaws.com/files.d20.io/images/1/i-f4Y5RklihSCLNOzppdwA/max.png" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/1/i-f4Y5RklihSCLNOzppdwA/max.png</a> ) You can keep the html styling in the parenthesis as well - you just need to add ".png" (or any other valid image extension) at the end.&nbsp; You can also add a couple other html styling options (cursor so that it doesn't look like a link, and title to add a tooltip).&nbsp;&nbsp; /w gm [skull](<a href="https://s3.amazonaws.com/files.d20.io/images/1/i-f4Y5RklihSCLNOzppdwA/max.png" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/1/i-f4Y5RklihSCLNOzppdwA/max.png</a> " width="50" height="50" style="cursor: default" title="Skull" .png)
Would suggest #.png instead of just .png, because # will force Parser to ignore the remainder of the URL in certain regards. &nbsp;You should make a thread about it, then update your post with new features; it's mostly HTML, also "Auto" is a valid size. Like I said, totally worth a thread.
Does anyone know if there is a way to organize map pages or add folders to the Page toolbar? I am using multiple pages for multi level maps and would love a way to clean up this clutter.&nbsp;
1671152964
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
SleepyDwarf said: Does anyone know if there is a way to organize map pages or add folders to the Page toolbar? I am using multiple pages for multi level maps and would love a way to clean up this clutter.&nbsp; Hi SleepyDwarf! This thread is for the posting and sharing of finished tricks that use the Roll20 interface in novel ways. Questions like that are generally better asked in their own thread.
1671716050

Edited 1671770651
Adding underlines to your text chat / macro Okay, so there is a pretty messy trick to&nbsp; underline &nbsp;your text in the chatbox, &nbsp;but if &nbsp;you really need it in your macro, this is the way to go. [UNDERLINED TEXT](#" style="text-decoration: underline;) Optionally for a cleaner method, make a macro called&nbsp; Underline &nbsp;in your collection tab, fill it with the following: (#" style="text-decoration: underline;) And then all you have to do is type&nbsp; [Any Text]#Underline &nbsp;to get your underlined text.
This is actually a neater trick than you realize, since you can use any valid style=, not just underline.
1671840248
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
It's so useful that it's actually in the index of this thread. :D HTML Styles in Chat
1673165294

Edited 1673165396
[5e Sheet] Extra Space This one can be useful for those who wants clean look on their main sheet, or just free sheet real estate. This uses "is_vehicle" and "npc" attributes (to find these attributes you can use this trick , and if they are not on your sheet you can just add them manually ). First time preparation: 1. Go to Attributes &amp; Abilities tab , find and drag "npc" attribute up. This one you will use quite often. Set it to 1.&nbsp; 2. Find "is_vehicle" attribute . You can leave it where it is, but set it to 1. 3.&nbsp; With these values set, if you switch back to your Character Sheet tab , you'll see vehicle sheet. Hit the cogwheel&nbsp; ⚙ &nbsp;on top right of it to exit editing mode.&nbsp; Usage: You can use this for whatever you feel like , I just moved my items here. And for items with descriptions I'd post, I used Weapons/Action Sections . You can track charges with it as well: option (I) is what I like, but option (II) works fine too. You can color code items (III). And I believe there're way more uses for that. Other one I can think of, you can use this space for your Bag of Holding without need to get and open separate sheet or having mess in your inventory: Now, to switch between sheet types you go to&nbsp; Attributes &amp; Abilities tab and clear "npc" attribute. &nbsp;That's it, you back to your normal sheet! Need to go back?&nbsp; Attributes &amp; Abilities &gt; set "npc" to 1. Here you go! ( Optionally you can have smth like that&nbsp; ◀███████ &nbsp;in Max field of this attribute to grab your attention quickly down the line)&nbsp; Bonus: You do it one time, if you want your spells to be displayed on your new vehicle sheet (might want it, if you have Staff of Healing or other spell related items): Go to Attributes &amp; Abilities tab ; f ind/add&nbsp; " npcspellcastingflag" attribute ; set it to 1. Your spells are now at the bottom of your vehicle sheet (and they should be linked to your actual spells)!
1673197958
Scott C.
Forum Champion
Sheet Author
API Scripter
Compendium Curator
That's a pretty drastic way to change to npc mode. You can simply do that by going to the settings page of your sheet.
Scott C. said: That's a pretty drastic way to change to npc mode. You can simply do that by going to the settings page of your sheet. If you go back and forth with one sheet as trick suggests, I find it more convinient (less clicks + click location consistency). But for forever npcs I do it through settings as well, since the whole set up will win you time only if you switch a lot per sheet
Sukida said: Patrick M. (he/him) &nbsp;said: This is a little trick if you wanted to try out One DnD's new&nbsp; exhaustion rules &nbsp;in a normal Roll20 5e character sheet: You'll need to use the FIRST other_resource box and name it "exhaustion" (name doesn't actually matter, but it's helpful) Then set up your core die roll like so: And away you go... that penalty will be applied to all your d20 rolls from the sheet. It'll give you negative results so it's not perfect but 20s and 1s still get coloured. One DnD's exhaustion rule for those who haven't read it (I think it's pretty elegant): EXHAUSTED [CONDITION] While you are subjected to the Exhausted Condition (known in older books as Exhaustion), you experience the following effects: Levels of Exhaustion. &nbsp;This Condition is cumulative. Each time you receive it, you gain 1 level of exhaustion. You die if your exhaustion level exceeds 10.&nbsp; d20&nbsp;Rolls Affected. &nbsp;When you make a d20 Test, you subtract your exhaustion level from the d20 roll. Spell Save DCs Affected. &nbsp;Subtract your exhaustion level from the Spell save DC of any Spell you cast.&nbsp; (this is not solved by the above hack) Ending the Condition. &nbsp;Finishing a Long Rest removes 1 of your levels of exhaustion. When your exhaustion level reaches 0, you are no longer Exhausted. So I'm running the new OneDND Exhaustion rules and tried editing the core dice on the character sheet as described in the posts above, but whenever I do so, it doesn't appear to add any mods to whatever roll I'm making. The above, for example is what I see when I mouse over the roll. Exhaustion is set to 5 for this test, so the roll should be outputting 6 (the die roll) - 5 (exhaustion) + 4 (INT) + 2 (PROF) + 1 (Global spell atk mod), or (6)-5+4+2+1 which is 8, Instead, it's outputting 1, and I cannot for the life of me figure out why. So I think if you write it the other way around it should work:&nbsp; core die roll: -@{other_resource}[Exhaustion] + 1d20
1673582744

Edited 1673583709
Debugging a trick should be placed into its own thread; though I will mention: if you call a variable which returns nothing, this error gets semi-suppressed if you prefix with “0+”; Meaning: 0 +1d20 -abs(@{other_resource})[Exhaustion Penalty] This should send to chat every time, even if the d20 roller and Other Resource fail to return a result; moreover, you can actually entirely bypass this using the built-in Exhaustion Tracker (because there isn't any upper limit actually mapped in default settings, just ignore the extra Exhaustion text appearing at Exhaustion 1~6). I went and included a call to Absolute your Exhaustion value, letting you math accurately even when a player eigenvectors your instruction (setting to -1 instead of +1 will add instead of subtract when not absolute, because 0+20-(-1)=21 though 0+20-abs(-1)=19 and 0+20-(1)=19 and 0+20-abs(1)=19 ) Though using the Exhaustion field this way would require a minor modification to your roll equation: 0 +1d20 -abs(@{exhaustion_level})[Exhaustion Penalty] This change allows you to reduce your Exhaustion Level with the use of the Long Rest button already built into standard 5e Character Sheets. If you wanted to instead change this to use Class Resource instead of Other Resource (maybe you want to track Ammunition), you can also shift this call to Class Resource or a lower Repeating Resource:; something like one of these: 0+ 1d20 -abs(@{class_resource})[Exhaustion Penalty] 0+ 1d20 -abs(@{repeating_resource_$0_resource_left})[Exhaustion Penalty] 0+ 1d20 -abs(@{repeating_resource_$0_resource_right})[Exhaustion Penalty] 0+ 1d20 -abs(@{repeating_resource_$1_resource_left})[Exhaustion Penalty] 0+ 1d20 -abs(@{repeating_resource_$1_resource_right})[Exhaustion Penalty] There are multiple available options to complete this logic calculation. If you want to force it to roll with advantage, there are multiple modifications you can make to your d20 roll too; example: 0 +2d20kh1 -abs(@{exhaustion_level})[Exhaustion Penalty] This will always roll with advantage. This should help everyone debug their setup when/if something goes wrong with setup. Note: You require calling these from whatever character sheet you are using this trick in; if used from outside said Character Sheet, for whatever reason, you require prefixing your targeting information, example: 0 +1d20 -abs(@{target|1|exhaustion_level})[Exhaustion Penalty] 0 +1d20 -abs(@{selected|exhaustion_level})[Exhaustion Penalty] 0 +1d20 -abs(@{Blue64|exhaustion_level})[Exhaustion Penalty] 0 +1d20 -abs(@{Patrick M. (he/him)|exhaustion_level})[Exhaustion Penalty] Etcetera; you get the idea.
I'm not sure if anyone else has posted it, since I've never seen it around the forums. But I figured out a formula that automatically calculates Sneak Attack damage as a PC levels for the 5e OGL character sheet. [[round((@Character Name|base_level})/2]]d6 As your character levels, it will automatically adjust the damage accordingly. If the character is a multiclass, you can create a attribute called " @rogue_level " and replace it in the formula. Nick Olivo explains multiclassing macros here if you want to get more out of it.
1674504582

Edited 1674504640
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Switching Familiar Sight with Token Mod Macro Note that this tip does require the use of Mod Scripts, specifically token-mod. It is also preset for the&nbsp;D&amp;D 5th Edition by Roll20 Sheet, but can be modified with the roll templates that come with your sheet. This set of macros is intended for PCs who have a familiar, whose sight they can temporarily use. It allows the player to quickly switch between what their token sees and what their familiar token sees. When one token is sighted, the other is blind. The base macro presumes a familiar with darkvision and a PC with normal sight. I have given alternates for cases where the PC has darkvision and the familiar has not, vice versa, and if both have darkvision. Edit to season, of course. Finally, replace occurrences of FAMILIARNAME with the name of the familiar as written on the sheet, and the occurrences of PCNAME with the name of the PC. To use, make sure the player has control over the NPC familiar. Place one of the macros below as an Ability on the Familiar. When the player selects their familiar, they can use this ability to switch their token vision with that of the familiar and back, though means of a&nbsp; Chat Menu . PC normal sight, Familiar Darkvision /w "@{selected|character_name}" &amp;{template:npcaction} {{rname=Familiar Perception}} {{description=[See Through Familiar's Eyes](!token-mod --set has_bright_light_vision|on has_night_vision|on night_vision_distance|60&nbsp; --ignore-selected --current-page --ids @{FAMILIARNAME|character_id} !token-mod --set has_bright_light_vision|off has_night_vision|off --ignore-selected --current-page --ids @{PCNAME|character_id}) [See Through PCs Eyes](!token-mod --set has_bright_light_vision|off has_night_vision|off --ignore-selected --current-page&nbsp; --ids @{FAMILIARNAME|character_id} !token-mod --set has_bright_light_vision|on has_night_vision|off --ignore-selected --current-page --ids @{PCNAME|character_id})}} PC Darkvision, Familiar&nbsp; normal sight /w "@{selected|character_name}" &amp;{template:npcaction} {{rname=Familiar Perception}} {{description=[See Through Familiar's Eyes](!token-mod --set has_bright_light_vision|on has_night_vision|off&nbsp; --ignore-selected --current-page --ids @{FAMILIARNAME|character_id} !token-mod --set has_bright_light_vision|off has_night_vision|off --ignore-selected --current-page --ids @{PCNAME|character_id}) [See Through PCs Eyes](!token-mod --set has_bright_light_vision|off has_night_vision|off --ignore-selected --current-page&nbsp; --ids @{FAMILIARNAME|character_id} !token-mod --set has_bright_light_vision|on has_night_vision|on&nbsp; night_vision_distance|60 &nbsp;--ignore-selected --current-page --ids @{PCNAME|character_id})}} PC normal sight, Familiar Normal Sight /w "@{selected|character_name}" &amp;{template:npcaction} {{rname=Familiar Perception}} {{description=[See Through Familiar's Eyes](!token-mod --set has_bright_light_vision|on has_night_vision|off&nbsp; --ignore-selected --current-page --ids @{FAMILIARNAME|character_id} !token-mod --set has_bright_light_vision|off has_night_vision|off --ignore-selected --current-page --ids @{PCNAME|character_id}) [See Through PCs Eyes](!token-mod --set has_bright_light_vision|off has_night_vision|off --ignore-selected --current-page&nbsp; --ids @{FAMILIARNAME|character_id} !token-mod --set has_bright_light_vision|on has_night_vision|off &nbsp;--ignore-selected --current-page --ids @{PCNAME|character_id})}} PC Darkvision, Familiar Darkvision /w "@{selected|character_name}" &amp;{template:npcaction} {{rname=Familiar Perception}} {{description=[See Through Familiar's Eyes](!token-mod --set has_bright_light_vision|on has_night_vision|on night_vision_distance|60&nbsp; --ignore-selected --current-page --ids @{FAMILIARNAME|character_id} !token-mod --set has_bright_light_vision|off has_night_vision|off --ignore-selected --current-page --ids @{PCNAME|character_id}) [See Through PCs Eyes](!token-mod --set has_bright_light_vision|off has_night_vision|off --ignore-selected --current-page&nbsp; --ids @{FAMILIARNAME|character_id} !token-mod --set has_bright_light_vision|on has_night_vision|on&nbsp; night_vision_distance|60 &nbsp;--ignore-selected --current-page --ids @{PCNAME|character_id})}} Click image for animation
1674562965
David M.
Pro
API Scripter
Nice, Keith! Beautiful tokens, btw.
1674575342

Edited 1677346151
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
I can't take too much credit. The illustrations are from Google, and the token ring on the PC is by the amazing Gabriel Pickard. I do enjoy making popouts, though.
Hello, I'm trying to create a conditional statement using (math only), with the return value of a roll-query ( i.e.,1d20 standard, 2d20kh1 advantange, 2d20kl1 disadvantage ).&nbsp; I've placed the roll query logic into an ability that I'm referencing inside the conditional.&nbsp; Nothing is being returned and I believe it's due to the return value of the roll-query (12 + 17) for advantage, or (2 + 7) for disadvantage.&nbsp; Is my assumptions right?&nbsp; Here's the code for the math conditional (which I'm using to determine if I rolled a critical or not) [[{ [[%{Aydon Keel|Attack-Type}]] , 16}&gt;17 *([[1d6]]) ]] (note: I've Italicized&nbsp;the area I believe is the issue) Here's the code for the Attack-Type/roll-query &amp;{template:default} ?{Attack Type|Standard, 1d20cs&gt;17|Advantage, 2d20kh1cs&gt;17|Disadvantage, 2d20kl1cs&gt;17}{{[[?{Attack Type}]]}} This does work when I reference the ability from another one that's not using the mathimatical conditional for example: %{Aydon Keel|Attack-Type}
1677771453
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Hi Saul! This thread is for sharing finished tricks that use the Roll20 interface in a creative or novel way. A better place to post such a question is in the "Specific Use Questions and Macros" forum.
ok, thank you
1678142605

Edited 1678142652
Saul S. said: Hello, I'm trying to create a conditional statement using (math only), with the return value of a roll-query ( i.e.,1d20 standard, 2d20kh1 advantange, 2d20kl1 disadvantage ).&nbsp; I've placed the roll query logic into an ability that I'm referencing inside the conditional.&nbsp; Nothing is being returned and I believe it's due to the return value of the roll-query (12 + 17) for advantage, or (2 + 7) for disadvantage.&nbsp; Is my assumptions right?&nbsp; Here's the code for the math conditional (which I'm using to determine if I rolled a critical or not) [[{ [[%{Aydon Keel|Attack-Type}]] , 16}&gt;17 *([[1d6]]) ]] (note: I've Italicized&nbsp;the area I believe is the issue) Here's the code for the Attack-Type/roll-query &amp;{template:default} ?{Attack Type|Standard, 1d20cs&gt;17|Advantage, 2d20kh1cs&gt;17|Disadvantage, 2d20kl1cs&gt;17}{{[[?{Attack Type}]]}} This does work when I reference the ability from another one that's not using the mathimatical conditional for example: %{Aydon Keel|Attack-Type} This looks like it is missing the Name portion of the template, though that is mostly irrelevant; secondarily, you are calling your query twice, and you want a space between } &amp; {{ too. &amp;{template:default} {{name=?{Attack Type|Standard,1d20cs&gt;17|Advantage,2d20kh1cs&gt;17|Disadvantage,2d20kl1cs&gt;17}:}} {{[[?{Attack Type}]]}} This code should work better for you, and might I suggest reviewing my tips about nested rollable tables (link available in the 1st post), I think you will find them useful, in addition to most of these other posts; hence why they instructed you thusly about compiling complete techniques here. I encountered a lot of similar oddity behavior when constructing my nested rollable tables.
1678374818

Edited 1678469005
Use Manual/In-Person Rolls Within Roll20 (D&amp;D 5E): If you're playing in person and want to use Roll20 for the maps, tokens, handouts, etc., but still want to use physical dice, then you can adjust the&nbsp; 'Core Dice Roll' to a query that allows you to input what got rolled in person. You can either adjust it on a per-character basis (if only your players are rolling physical dice) or through the Game Settings page and apply it to all character sheets. Here's the code (updated - thanks RainbowEncoder!): ?{Dice Roll Result?}+d0cf[[1-floor(1/?{Dice Roll Result?})]]cs[[1-floor(?{Dice Roll Result?}/20)]] This will show a red output for Nat1 Critical Fail rolls, and a green output for Nat20 Critical Hits.&nbsp; If you have a different Critical Range (e.g. if you crit on a 19 because you're a Champion Fighter) then you need to change the 20 to whatever your crit range is: ?{Dice Roll Result?}+d0cf[[1-floor(1/?{Dice Roll Result?})]]cs[[1-floor(?{Dice Roll Result?}/19)]] Or if you're using a selected token linked to a character sheet, you can reference the Critical Range field from the sheet: ?{Dice Roll Result?}+d0cf[[1-floor(1/?{Dice Roll Result?})]]cs[[1-floor(?{Dice Roll Result?}/@{default_critical_range})]] If other games (such as Pathfinder?) have a similar 'Core Dice Roll' field, then this approach should work for them as well! I'm not familiar with those sheets to know for sure. Edit: fixed the 2nd code Critical Range. Thanks Fluffy5789!
1678392174

Edited 1678392202
Wonderful tip. I think you have a typo in your second example. It still shows a 20, instead of a 19 for the second die. Jarren said: Use Manual/In-Person Rolls Within Roll20 (D&amp;D 5E): ... If you have a different Critical Range (e.g. if you crit on a 19 because you're a Champion Fighter) then you need to change the 2nd 20 to whatever your crit range is: ?{Dice Roll Result?}d1cf[[floor([[1/[[[[ceil([[?{Dice Roll Result?}-1]]/20)]]+1]]]])]]cs[[[[floor(?{Dice Roll Result?}/**20**)]]d1]]
Jarren said: Use Manual/In-Person Rolls Within Roll20 (D&amp;D 5E): ... Here's the code: ?{Dice Roll Result?}d1cf[[floor([[1/[[[[ceil([[?{Dice Roll Result?}-1]]/20)]]+1]]]])]]cs[[[[floor(?{Dice Roll Result?}/20)]]d1]] Definitely a good thing to know. My preference would be for X+d0 rather than Xd1 but that matters little. A more impactful thing would be to simplify the cs and cf calculations. Removing some of those nested rolls will help speed up the roll handling. Strictly speaking the cf calculation could be replaced by the query result alone since it'll only line up with the d1's on an entered 1 but assuming we want to bind it to 0 or 1 it could become [[floor(1/?{Dice Roll Result?})]] On a 1 that returns 1 everything else is floored to 0 For the cs calculation the inner roll is sufficient, there's no need to then roll d1's after it, becoming [[floor(?{Dice Roll Result?}/20)]] With the whole thing becoming ?{Dice Roll Result?}d1cf[[floor(1/?{Dice Roll Result?})]]cs[[floor(?{Dice Roll Result?}/20)]] As a bonus there is now only a single 20 so you cannot accidentally change the wrong one with crit range.
I'm wondering if anyone can help me with an issue I'm having. As you can see here it l have some dynamic lighting issues and I'm not sure what to do about this. It's making these weird almost walls. The tokens can pass through them but light does not and it's making my maps look like garbage.
1680412559

Edited 1680412815
Gauss
Forum Champion
Dustin F. &nbsp;said: I'm wondering if anyone can help me with an issue I'm having. As you can see here it l have some dynamic lighting issues and I'm not sure what to do about this. It's making these weird almost walls. The tokens can pass through them but light does not and it's making my maps look like garbage. So the first thing is, are you using freehand for your DL walls? If so, try to replace them with polygon/line walls.&nbsp; Second, when using polygon/line walls, are you using any sharp angles? Best practice is to not use sharp angles (ie a line doubling back on itself) because that can create strange artifacts.&nbsp; &nbsp;Are you using a single line meandering everywhere?&nbsp; If so, that may also cause issues, try to keep the line segments....reasonable. Like, one side of each of your cave. Then use another for the next section of cave wall.&nbsp; If none of these tips help, could you provide a screenshot of the DL layer with your lines turned to a bright color? Right now your lines appear hard to see, we may be able to see what is going on better with a different color.&nbsp; You can do this by going to the DL layer, then ctrl+A, then change the color to something easier to see.&nbsp;
Dustin F. said: I'm wondering if anyone can help me with an issue I'm having. As you can see here it l have some dynamic lighting issues and I'm not sure what to do about this. It's making these weird almost walls. The tokens can pass through them but light does not and it's making my maps look like garbage. This thread is for sharing finished tricks that use the Roll20 interface in a creative or novel way. A better place to post such a question is in the "Specific Use Questions and Macros" forum.
how can I roll any dice and depending on the number generate a predefined text, example, roll 1d4 in case 1 Acid, case 2 Electricity, case 3 ice, case 4 fire. I was able to do this by rolling 1d3 using the crit settings, but for any dice greater than d3 it doesn't work. &amp;{template:custom}{{name=Type}}{{secondname=chosen damage type}}{{theroll=[[1d3]]}}{{criticalname=Damage}}{{ifcritical=Acid}}{{notcritical=Electric}}{{ifcriticalerror=Ice}}