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 .
1663098730
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.
1663191113
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.
1663262750
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.
1663466937
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.
1663510048
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.
1668264808
Thanks
1670204577

Edited 1670204829
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!
1670267887
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)
1670373361
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.
1671831311
Bill (Do Not Kill)
Pro
API Scripter
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
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
I can't take too much credit. The illustrations are from ggogle, and the token ring on the PC is by the amazing Gabriel Pickard. I do enjoy making popouts, though.