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)

1534001261
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Scopo said: Heya, I got a request for a scaling dice roller for Flurry of Blows, ... I hope this helps some people! And sorry if this has already been done ;w; As said, I could not find anything, so I assumed not. Hi Scopo. Thanks for submitting your macro. I've left the post in since it might help someone, but I won't be placing it in the index. This thread is about innovative or creative uses of existing tools. There's absolutely nothing wrong with your macro, but it's a pretty standard use of Roll20 tools.
1534025023

Edited 1534026623
Scopo said: Heya, I got a request for a scaling dice roller for Flurry of Blows, and thought it might be useful for others because I couldn't find anything when I did an initial search for macros. I'm not totally sure if this is the thread it goes in, so please let me know if it goes somewhere else! I don't post on the forums much. Anyway. In the "Damage:" section of the sheet, where you put in the dice, enter this: 1d[[[[round((@{level} + 1) / 6 + 1.5)]]*2]] This will scale it so that at level 5 it's a d6, at 11 it's d8, etc. I based it on the Cantrip Dice Progression formula. This is optimised for the OGL sheet, because I don't know what attributes other sheets use for level. If you want to roll it in chat (with the /roll command), change the "@{level}" to "@{NAME|level}". Be sure to swap out "NAME" with your character sheet's title, or it'll break! I hope this helps some people! And sorry if this has already been done ;w; As said, I could not find anything, so I assumed not. A few notes: Flurry of Blows (namely the Punching Damage) scales with the Class Level, not the Player Level, as such, this makes the @{call} slightly incorrect. This functions as is, so long as they do not Multi-Class. Whilst the OGL Sheet doesn't show that it recognizes it, the Parser it uses for sending the damage to Chat is the same, meaning it does recognize the floor() command. You have an extra [[inline math]] that is not required, this can actually break the Math if overdone (it only takes about 7 [[Inline Math]] in a single message to break it), the result would be that it only does the lowest layer and does a plain text print of the higher levels (EG: "1d[[ 2 *2]]"). Whilst the Mathematical Ruling of PEMDAS is widely known (with varying Acronyms), it is not always followed, and as such, any College Tier Math Professor will always tell you to use the (Parenthesis Brackets) around each step of the equation, which you forgot around the /6 step. Should someone who is not familiar with the way PEMDAS works read the equation (which is a surprisingly big issue), they might misread your equation as 1d[[[[round((@{level} +1) / ( 6 +1.5 ) )]]*2]] instead of the intended 1d[[[[round( ( (@{level} +1) /6 ) +1.5)]]*2]] The correct @{call} in Roll20 OGL 5e Sheet would be something along the lines of one of the following @{base_level} @{multiclass1_lvl} @{multiclass2_lvl} @{multiclass3_lvl} depending on if they have Main, Multi-Class 1, Multi-Class 2, or Multi-Class 3 as their Monk. Important: Make sure they change the Level of the Class and exit the Text Entry Box at least Once! As they click away from the Text Entry Box, it Saves the Text that was entered as the correct Attribute so you can @{call} it. You might need to adjust the Multi-Class Level before everything is saved properly. I shall post the Macro I use, beneath your own, so as to ease any confusion that might have arisen from the things which I have pointed out. 1d[[[[round(((@{level} +1) /6) +1.5)]]*2]] 1d[[((floor((@{base_level} +1) /6)) +2) *2]] 1d[[((floor((@{multiclass1_lvl} +1) /6)) +2) *2]] 1d[[((floor((@{multiclass2_lvl} +1) /6)) +2) *2]] 1d[[((floor((@{multiclass3_lvl} +1) /6)) +2) *2]] Depending on your build, at least 1 of these should work for any Monk-Type Math. Don't forget: none of these use a Prefix, so, outside of a Character Sheet, they'll either need the Explicit Name (including trailing Spaces), or the selected| or the target| prefix (EG: @{Blue64|multiclass3_lvl} or @{selected|multiclass3_lvl} or @{target|1|multiclass3_lvl} ) This AutoMath is also used in Cantrip Dice & Cantrip Beam Macros if you replace the +2) *2]] with a simple +1)]] or, for Spells like Green-Flame Blade it would be replaced with +0)]] trust me, it looks odd, but it works. I have used this Macro mixed with a few other tricks from this thread to create things like Character Sheets named SpellCantrip MacroPC MacroGM and I gave them each Attributes (in the Left Column) called DC LV+0 LV+1 LV+2 They are all pointing to the one in MacroPC. This allows me to write it out in a very simple Shorthand whenever I make one of those @{Calls} (EG: "makes a DC @{DC} Strength Save" or "[[[[@{LV+1}]]d10]] Fire Damage" or "unleashes a Flurry of Blows dealing [[1d[[@{LV+2} *2]]]] Bludgeoning Damage" ). P. S. Indeed, it is quite difficult to locate a solid Monk Unarmed Strike Macro, I myself invested at least 3 hours minimum exclusively to reading threads in search of the exact same thing, to no avail. P. P. S. I do plan on starting a Multi-Sheet 5e Macro thread eventually, although my own Macros are rather lacking at present, and I feel I would not be able to provide a stable or broad enough groundwork for such a thread to become self sustaining as of yet.
1534307386

Edited 1534307593
Mik Holmes
Pro
Marketplace Creator
Quickly Populating with Rollable Tables This isn't a very descriptive title, sorry. When I run a map in where there are a lot of similar creatures with the same stat blocks (such as a bunch of commoners in a street), I like to have multiple different tokens, so you don't have entire taverns filled with the same woman in a hood. Rather than having a dozen different Commoner character sheets, I use the Rollable Tables for them. First, I set up a table with each entry being a different image (in this example I'm using vampires). Then (not shown), I put down one token and set it up as the creature's sheet's default token. From there, whenever I want to fill up a room, I drag a bunch of copies of the same token onto the map, select all, and hit Random Side.  The drawbacks of this trick is that it requires a bit of setup time (though arguably less than placing tokens manually), and that you're somewhat limited by the number of images you can find (though if there's duplicates, flipping some horizontally or adding tints can help differentiate it). Since it's rolling randomly, you'll probably have a number of repeats even in small rooms - in that case, you can easily just roll again or pick a different side for a few tokens (still arguably less time).  Tangential note: while you can select multiple tokens and randomize all of them, you can't select multiple tokens and Choose Side for all of them; only one of the tokens change.
1534342425

Edited 1534342486
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Good Tip, Mik. It's something I do so often, I forget that it's not a standard practice. For those of you with API, here are some refinements you can add. I use [Token Mod] to create a macro that rolls a random name chosen from lists (Male-English, Female-Arabic, etc.), and assigns it to the token. It also assigns three random personality descriptors to the GMNotes field of the token. I can also decide on the fly to re-link it from a mook set to the Commoner sheet to one set to the Guard or Veteran sheet if I feel they are more imposing than a shopkeeper or day laborer. I'm working on creating tables of pricelists that can also be sent to GMNotes to reference different kinds of merchants and business owners. Then during play, I hit my universal Notes button, which uses [GM Notes] to display personality and prices for anyone they happen to interact with.
1534367125
Mik Holmes
Pro
Marketplace Creator
Thanks Keith! I never thought about using Tokenmod to change the sheets to other variants, and the idea of adding random personality descriptors to the GMNotes is perfect! I've been experimenting with a similar technique with TokenMod for naming non-humanoid creatures, ending up with every creature named "adjective creature". Instead of tables of random names, I do the same thing but with adjectives based on certain types of creatures. For example, I have one for wolf-like creatures, including "Snarling," "Scar-Eyed," "Bloodspecked," "Runty," etc. Then I run: !token-mod --set name|"[[1t[Wolf-Adj]]] Wolf" which will change "Wolf" to "Scar-Eyed Wolf." It needs a seperate table and macro for each set of adjectives. In my games, I have Players See Names and Nameplates set on to default, so my players can specify which wolf they're talking about quickly. One limitation:  unlike two posts above, you can't seem to select all similar tokens and run the macro - they'll all get the first result. Instead, you'll need to run the macro for each token individually.
keithcurtis said: Good Tip, Mik. It's something I do so often, I forget that it's not a standard practice. For those of you with API, here are some refinements you can add. I use [Token Mod] to create a macro that rolls a random name chosen from lists (Male-English, Female-Arabic, etc.), and assigns it to the token. It also assigns three random personality descriptors to the GMNotes field of the token. I can also decide on the fly to re-link it from a mook set to the Commoner sheet to one set to the Guard or Veteran sheet if I feel they are more imposing than a shopkeeper or day laborer. I'm working on creating tables of pricelists that can also be sent to GMNotes to reference different kinds of merchants and business owners. Then during play, I hit my universal Notes button, which uses [GM Notes] to display personality and prices for anyone they happen to interact with. Jeez that sounds awesome! Very well done, lots of prepwork but i can see it paying dividends!
1534370807
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Mik, Descriptors sound a lot more immersive than "Wolf 1", "Wolf 2", ... I like it. Anthony V. Yeah, but it's the kind of prepwork I like. :)
1534371379
Scott C.
Forum Champion
Sheet Author
API Scripter
Compendium Curator
keithcurtis said: Mik, Descriptors sound a lot more immersive than "Wolf 1", "Wolf 2", ... I like it. Anthony V. Yeah, but it's the kind of prepwork I like. :) I wonder if we could convince Aaron to modify tokenNameNumber
1534371803

Edited 1534380377
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
And pull from a rollable table, or from a list in the API call? Knowing Aaron, probably both. :D Scott C. said: keithcurtis said: Mik, Descriptors sound a lot more immersive than "Wolf 1", "Wolf 2", ... I like it. Anthony V. Yeah, but it's the kind of prepwork I like. :) I wonder if we could convince Aaron to modify tokenNameNumber
1534374810

Edited 1534374980
don't forget you can assign it to the Wolf's Sheet's Abilities Section as a Token Macro to speed it up. Alternatively, I have no idea if this will work or not, as I personally lack API access, but, are you by chance capable of doing something along the lines of: !token-mod --set name|"[[1t[@{selected|character_name}-Adj]]] @{selected|character_name}" because if you are, that is suddenly a VERY powerful Macro! Perhaps Keith might know how to pull something like that off should I have gotten it wrong. perhaps by adding more Square/Curly Brackets or something to change the Order of Operations around should it require it. P. S. Keith, edit those 3 Line Returns at the end of your Quote post! ("^_^) you were the one getting on us about keeping the posts short! lol
1534376742
The Aaron
Pro
API Scripter
keithcurtis said: And pull from a rollable table, or from a list in the API call? Knowing Aaron, probably both. :D Scott C. said: keithcurtis said: Mik, Descriptors sound a lot more immersive than "Wolf 1", "Wolf 2", ... I like it. Anthony V. Yeah, but it's the kind of prepwork I like. :) I wonder if we could convince Aaron to modify tokenNameNumber I think I could be convinced. =D =D
1534380291
GiGs
Pro
Sheet Author
API Scripter
Let the convincing begin!
1534424239
The Aaron
Pro
API Scripter
I explained this in the TokenMod thread just the other day , but I don't mind saying it again.  The arguments to TokenMod get expanded on the client before the API ever sees them.  To have individualized rolls applied by TokenMod, it would need a syntax for delaying the roll until the server side.  That's on my todo list, but it's behind a few other things and life.  TokenNameNumber and MonsterHitDice are already set up to handle individual results on the server side because they are very focused special purpose scripts with many hard-coded assumptions, TokenMod's solution would need to be general purpose without hard-coding any assumptions, which makes it a bit more complicated.
couldn't you simply ping the Server to grab the desired information to be parsed, then factor it into the Client Side equation before sending the finished result to the Server? For example, @{selected|character_name} would end up Parsing to Wolf , making !token-mod --set name|"[[1t[@{selected|character_name}-Adj]]] @{selected|character_name}" get sent to the Server to Query the Roll20 Parser, which would result in !token-mod --set name|"[[1t[Wolf-Adj]]] Wolf" which then gets sent to the API to parse it one last time, which then sets the Token Name to something like Snarling Wolf .
1534539802
The Aaron
Pro
API Scripter
You are failing to understand the issue.  Setting a single token with a random result is a solved problem, and part of that solution is using the @{selected|character_name}.   The issue is setting multiple token names uniquely simultaneously. 
1534615287

Edited 1534615304
that is indeed a conundrum... perhaps query the number of tokens selected, send that many calls to the Server to retrieve the result, then ... You'd need to retrieve some type of Unique ID for each Token, perhaps their Layer Position? nothing should ever share a Layer, so that might work. Apply the appropriate name to each Token on each Layer that is selected. That's pretty much the only thing I can think of. I know you have some scripts which can access the Layer section via API, so I know it's possible to affect it, but I have no idea to what extent, as I am not familiar enough.
1534615584
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Hey folks. Hammer out a script in its own thread, please. Thanks! :)
1534627908

Edited 1541537788
Mik Holmes
Pro
Marketplace Creator
EDIT: An updated version of this tip can be found&nbsp; <a href="https://app.roll20.net/forum/permalink/6944801/" rel="nofollow">https://app.roll20.net/forum/permalink/6944801/</a> Exploration Mode (TokenMod API) If you're in a tight map (something like a dungeon, town, castle, etc.), your players might find it difficult to maneuver around with the typical 5' x 5' tokens. Outside combat, a 10' x 10' room can easily fit a 5 PC party, but with the regular token size, you'd need to use the alt key to avoid snapping to grid and overlay people - and even then, the players would struggle to actually see what's going on. What I use is two macros, one to shrink tokens by half and ignore the grid, and another to bring them back to combat size. Select all PC tokens, and click the appropriate macro. The way they ignore the grid is to turn them into drawings, which unfortunately has the side effect of making it impossible to change status icons or edit the three bubbles. In addition, since "isdrawing" on or off is tied to the appropriate macro, you need to be careful not to double click them. Token Shrink !token-mod --on isdrawing --set width|/2 height|/2 Token Enlarge !token-mod --off isdrawing --set width|*2 height|*2
Mik Holmes said: Exploration Mode (TokenMod API) If you're in a tight map (something like a dungeon, town, castle, etc.), your players might find it difficult to maneuver around with the typical 5' x 5' tokens. Outside combat, a 10' x 10' room can easily fit a 5 PC party, but with the regular token size, you'd need to use the alt key to avoid snapping to grid and overlay people - and even then, the players would struggle to actually see what's going on. What I use is two macros, one to shrink tokens by half and ignore the grid, and another to bring them back to combat size. Select all PC tokens, and click the appropriate macro. The way they ignore the grid is to turn them into drawings, which unfortunately has the side effect of making it impossible to change status icons or edit the three bubbles. In addition, since "isdrawing" on or off is tied to the appropriate macro, you need to be careful not to double click them. Token Shrink !token-mod --on isdrawing --set width|/2 height|/2 Token Enlarge !token-mod --off isdrawing --set width|*2 height|*2 If anyone knows how if there is an API script that lets you turn off/on the grid via page settings, please message me and I'll edit this with a nicer version. Cool Concept!
1534693688
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
That's a pretty slick idea, Mik Holmes! I had toyed with they idea of making a Party Token, shared by all, just to mark position, but this allows for easy independent movement.
1534740033
Mik Holmes
Pro
Marketplace Creator
keithcurtis said: That's a pretty slick idea, Mik Holmes! I had toyed with they idea of making a Party Token, shared by all, just to mark position, but this allows for easy independent movement. I do that with overworld maps, though I do my overworld without line of sight, so I can get away without giving control of the party token.
Mik Holmes said: Thanks Keith! I never thought about using Tokenmod to change the sheets to other variants, and the idea of adding random personality descriptors to the GMNotes is perfect! I've been experimenting with a similar technique with TokenMod for naming non-humanoid creatures, ending up with every creature named "adjective creature". Instead of tables of random names, I do the same thing but with adjectives based on certain types of creatures. For example, I have one for wolf-like creatures, including "Snarling," "Scar-Eyed," "Bloodspecked," "Runty," etc. Then I run: !token-mod --set name|"[[1t[Wolf-Adj]]] Wolf" which will change "Wolf" to "Scar-Eyed Wolf." It needs a seperate table and macro for each set of adjectives. In my games, I have Players See Names and Nameplates set on to default, so my players can specify which wolf they're talking about quickly. One limitation: &nbsp;unlike two posts above, you can't seem to select all similar tokens and run the macro - they'll all get the first result. Instead, you'll need to run the macro for each token individually. You could also use @{selected|token_name} inside the quotations with that macro to apply a generic list of adjectives to a token. Of course, if you accidentally double click you'll get another adjective beforehand, but it would allow for a single table of adjectives without needing to have several tables and macros.
1534803292
Mik Holmes
Pro
Marketplace Creator
bluesoda said: You could also use @{selected|token_name} inside the quotations with that macro to apply a generic list of adjectives to a token. Of course, if you accidentally double click you'll get another adjective beforehand, but it would allow for a single table of adjectives without needing to have several tables and macros. That's a great idea. Blue64 mentioned something similar before and I forgot to comment. The only time using @{selected|token_name} doesn't necessarily work for me is if I want to change the token's base name as well. For example, in the module I'm using, the tokens are named Vampire Spawn by default, but adding an adjective to that would make the names unwieldly. In that case, I use "[[table]]] Spawn," which overwrites the name. I also use separate tables for adjectives, as "Three-legged Wolf" and "Three-legged Commoner" are two completely different mental images. I could do 1t[[@{selected|token_name}-Adj]]], but that would require a table for every individual token (eg, most humanoids can use my Human-adj table)
1534808744
Scott C.
Forum Champion
Sheet Author
API Scripter
Compendium Curator
So, you can add on to this even more if you use tokens linked to character sheets: you can use @{selected|character_name} instead of token_name to avoid the repeating name problem You can create (or some sheets may already have it) a type attribute that you could use to reference humanoid, goblinoid, etc tables. You could also make a suffix attribute to use instead of character_name.
I would like to point out that there is a distinct difference between @{selected|character_name} &amp; @{selected|token_name} which is as follows: @{selected|token_name} is useful for doing reference calls, it is handy for the Players, as this is the Display Name that is shown when it is placed on the Grid. This is information located in the Token's Options, and does not require a Character Sheet in the Journal linked to it. @{selected|character_name} is useful for Macros affecting specific feature of specific Tokens, and is rarely ever changed. This information is located on the Character Sheet in the Journal, and requires the selected Token to have a Sheet in the Journal linked to it. For a Parable, we shall use the D&amp;D 5e Acrobatics' Modifier; 1 Dexterity &amp; not Proficient for the minimum: (0 +(floor((1[Dex] -10) /2))[Dex Mod] +0[Not Proficient])=(-5) (0 +(floor((1 -10) /2))) +0)=(-5) (0 +(-5) +0)=(-5) now at 20 Dexterity &amp; Expertise for the average Maximum: (0 +(floor((20[Dex] -10) /2))[Dex Mod] +(6[Proficiency] *2)[Expertise])=(17) (0 +(floor((20 -10) /2)) +(6*2))=(17) (0 +(5) +(12))=(17) Now, we have ALL of this information, and THAT is the Core Info, which is all mechanical, completely irrelevant to the Player's desire to do a Cartwheel in game, other than the fact that it's Sum Total is the Acrobatics' Modifier, which is directly relevant to such a desire. in this Parable, the Mechanical information would be regarded comparable to the @{selected|character_name} , whereas the Sum Total of the Acrobatics' Modifier would be comparable to the @{selected|token_name} . Another parable (if Math isn't your forté), would be a Character's Introduction, such as Mollymok on Critical Role Campaign 2. "But everybody calls me Molly." , which is only about two thirds of his first name; That would be his Token Name. Whereas his Full Name, at length, would be his Character Name. People could start calling him Mok, and his Character Name would not change, just his Token Name. My suggestion was to use !token-mod --set name|"[[1t[@{selected|character_name}-Adj]]] @{selected|character_name}" Which can result in things such as: !token-mod --set name|"[[1t[Wolf-Adj]]] Wolf" !token-mod --set name|"[[1t[Commoner-Adj]]] Commoner" not !token-mod --set name|"[[1t[@{selected|token_name}-Adj]]] @{selected|token_name}" Which can result in things such as: !token-mod --set name|"[[1t[Savage Wolf-Adj]]] Savage Wolf" !token-mod --set name|"[[1t[Rugged Commoner-Adj]]] Rugged Commoner" because I anticipated such an issue as was referenced by Mik (Three-Legged Commoner, lol), &amp; Scott. My suggestion was already pushing towards the separate Tables for each type of Creature as well, however, might I suggest: Macro: !token-mod --set name|"@{selected|Identity}" @{selected|Identity} [[1t[@{selected|character_name}-Adj]]] @{selected|character_name} this will allow you to cut down on the number of Tables required since it allows you to not only Share tables, but allows you to optionally use multiple Tables, and adjust per Character Sheet! Maybe you want a "Three-Legged Wolf with Rabies"? Just add the Disease Suffix Roll to the Wolf Sheet's @{Identity} Attribute!
How would someone either enter manual line breaks or control the width for token nameplates so that you don't have one line of very long text when you do need three short lines of text?
1535395589
The Aaron
Pro
API Scripter
I don't believe that is possible.&nbsp; Token name plates can only be a single line.
The Aaron said: I don't believe that is possible.&nbsp; Token name plates can only be a single line. Darn. I may need to redo all of my tarot cards with text in the image then. Good to know.
Dunno if this is some beginners's tip, but here it is. When setting up a map, you can use much smaller images without having them stretched if you play with the scale and grid unit size. For instance, when a map have a grid that each square = 10ft, yuo can set scale to be 10ft, and grid size be 0.5 units. This way, your players can move their tokens accurately.
Book Brat said: Dunno if this is some beginners's tip, but here it is. When setting up a map, you can use much smaller images without having them stretched if you play with the scale and grid unit size. For instance, when a map have a grid that each square = 10ft, yuo can set scale to be 10ft, and grid size be 0.5 units. This way, your players can move their tokens accurately. While this is true, I'm would advise against this if you use status icon or the token bars a lot. The CSS of the token bars and status icons do not scale with zoom (much in the same way the the ruler didn't use to scale). So these objects may make if difficult to "read" the map and get in the way.
There's always the option of having a second token specifically to display bars and status effects, which could be placed to the side of the map.
RolanDnD said: There's always the option of having a second token specifically to display bars and status effects, which could be placed to the side of the map. That's a REALLY! good idea :) - Never considered that.
1537378154

Edited 1537378441
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Landing Page I was surprised to see that this wasn’t in the Stupid Tricks list already. It’s a pretty common practice, but it may not occur to all users (It didn’t to me for nearly 6 months after starting Roll20 in earnest). Roll20 allows players to log on, even when unattended by a GM. Unless the GM changes the ribbon at the end of a session, this merely takes them to whatever page they were last on, usually the last combat. The idea here is to give them something more useful, and to give your campaign an identity. Enter the Landing Page. Also referred to as a Home Page or a Splash Page, the Landing page is the entry point to your campaign. People have come up with some clever uses for them in the past, but at a bare minimum, the Landing Page should have tokens out for all active characters, so that players can easily work with them in the down time. Other potential elements: A campaign map A map from the recent adventure A text area detailing the last adventure or xp award The latest treasure that has not been divvied up (useful if you use cards for inventory ) Clues to follow up on A Notice Board of quests in the area A Rogues Gallery of the BBEG and his/her lieutenants An area for players to scribble on with the drawing tools (some people gotta) Images of prominent NPCs or locations A Kill Record— X-ed out tokens of defeated adversaries There have been a couple of Landing Page gallery threads , but they are old enough to now be archived. I have started a new one here , so that people can share their setups and ideas and keep this thread more focussed on new tricks. If there are some cool innovations for elements to include, I will edit them into the list on this post.
1537393760

Edited 1537407815
that would also be good for reducing the initial loading time, as the splash page is also one of the first things to be loaded (along with chat images, and the visible Journal entries). some of those Ideas you mentioned Kieth could also be integrated into a Chat Macro via something akin to the MacroGM &amp; MacroPC Character Sheet idea, which could potentially help if Lag becomes an issue. For those not wanting to track it down in this thread, here's an example of how that would work: Macro Bar Button: /w gm &amp;{template:default} {{name=Chat Menu Macros}} {{Recent=[Kills](! @{MacroPC|Recent-Kills})} MacroPC Character Sheet Attribute: Recent-Kills &amp;#37;&amp;#123;MacroPC&amp;#124;Recent-Kills&amp;#125; (Parsed) it will send (when clicked): %{MacroPC|Recent-Kills} you can also store the parsed form in the @{MacroPC|Recent-Kills|max} section for quick Reference/Edit later MacroPC Character Sheet Ability: Recent Kills &amp;{template:default} {{name=Recent Kills}} {{Kobolds=3}} {{Orcs=7}} {{Ghouls=8}} {{Necromancers=2}} {{Cultists=5}} You'd want to have it in MacroPC and not MacroGM because the Players doing the Attribute/Ability Call needs to have Edit Access, and you might not want them to have access to your GM Notes. It took me a bit to understand how this trick mechanically functioned, but essentially you are using the Parser as a buffer so that it doesn't read the destination until you click the button, because the Parser runs after the destination gets resolved, not before. in a similar thread of thought, if you have tech savvy players, this might come in handy for you GMs that desire to hide Stats: continued...
1537406133

Edited 1537407864
Hidden Stats, Attributes, and Abilities: Sometimes you find those Players that simply love to Metagame everything, allowing their technical knowledge of things their character wouldn't know dictate their tactics instead of their environment and character's personality (eg: the monster looks heavily beat up, it's actually only got 1 HP, but so does everyone else, and it's AoE attack next turn is a TPK if nobody runs away, logic says to run, but the player sees the 1 HP and decides to charge instead). Whilst this would increase the Survival Rate of the Party, it also takes that fun little aspect of the mystery away, especially if they start sharing their Out of Character knowledge with the other Players. There is an easy enough way to keep this information out of the Hands of the Players though: Custom Attributes &amp; Abilities! If your Players don't have Edit Access, they are incapable of looking up things like %{target|speed} or %{target|hp|max} if you move all of the Attribute Calls to Ability Variables using the above examples (skipping the Chat Macro step) you can generate a clean little menu of Stats, Attributes, and Abilities, and none of the Players will be capable of accessing any of it. if they do try to peek, they'll find whatever messages you leave behind, if you even leave one (perhaps your favorite Family Guy "He's a cheater" GIF sent to Chat). Come to think of it, I don't think anyone has really gone over that trick in depth on here yet... continued...
1537406191

Edited 1537407886
Pictures and GIFs in Chat and Abilities I had a fellow Player point out to me a while ago that a large variety of abilities and attacks are capable of accepting Picture and GIFs, and with some further research, I found that a large variety works using a simple Google Search and tracking down the Image's exact location, with a few exceptions not working because the Site stores the image on a type of splash page (help in figuring out the fix for such things would be appreciated). The following examples will be for FireFox Browser, as I am unfamiliar with the other browsers. If you wish to Message me the instructions for the other Browsers, I will try to Edit them in here. First, we require an image; for this example, I shall be using the screenshot posted by Kieth in his new thread (which he referenced earlier). 1. First, we should make sure it is of the appropriate quality and size for our tastes: Since this is Roll20 we enlarge the image with a Left Click 2. Then (skip this step on Roll20) Right Click it and select Open Image in New Tab, this will allow us to inspect the Image without any resizing so we can see the actual quality of the image (this will also help us note if we are trying to grab am exceptionally tiny version, such as a 512x512 thumbnail) 3. Once we are here, we have a few options for locating the Image, the easiest being another option in the Right Click's Context Menu called "Copy Image Location". Using this we can find out that the Screenshot is located at the following URL: <a href="https://s3.amazonaws.com/files.d20.io/images/63058958/9lcOFUVygdOlhpVRU8I1Lg/original.png?1537378258" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/63058958/9lcOFUVygdOlhpVRU8I1Lg/original.png?1537378258</a> in it's current state, this URL is entirely useless for posting a Picture in Chat. you can post the link and it will be clickable, allowing players to download it when the page finishes opening (this is not standard behavior across all sites, this is however standard for the Roll20 images, they will not even see the picture before it tries to download in this fashion) With a bit of modification though, we can make this URL useful to us. 4. For starters, in URLs, anything after a ? denotes a variable or option, in this case we are talking about the ?1537378258 as it is entirely not needed, so, let's strip that text out, leaving us with the following URL: <a href="https://s3.amazonaws.com/files.d20.io/images/63058958/9lcOFUVygdOlhpVRU8I1Lg/original.png" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/63058958/9lcOFUVygdOlhpVRU8I1Lg/original.png</a> then we need to know the method which to use the URL, as we still have the same problem as before: we can post the Direct Download URL into Chat, but they won't see the Image this way unless they download and then open the Image. Roll20 uses a simple format for URLs: [Text](URL) this means that we should try a similar format for the Image. It should be noted that if the Image breaks, the Text portion will get posted to Chat as a Clickable Link. This is useful knowledge if there is a large amount to load, as Chat is not entirely top priority, although it is highly ranked, it should also be noted that Chat loads Text from Top to Bottom, then Images the same way, so that 50 GIF message from 25 messages ago will load before the 1 PNG message 2 messages ago, be considerate of this fact, and use the rule of thumb of "moderation in all things". This also means you probably do not wish to include this trick with your most common attack, as it will cause considerable lag to load that many images when launching the Game, instead relegate it to perhaps 1 or 2 per Turn at most. Picture: [x](<a href="https://s3.amazonaws.com/files.d20.io/images/63058958/9lcOFUVygdOlhpVRU8I1Lg/original.png" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/63058958/9lcOFUVygdOlhpVRU8I1Lg/original.png</a>) [Screenshot](<a href="https://s3.amazonaws.com/files.d20.io/images/63058958/9lcOFUVygdOlhpVRU8I1Lg/original.png" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/63058958/9lcOFUVygdOlhpVRU8I1Lg/original.png</a>) Hyperlink: [x](<a href="https://s3.amazonaws.com/files.d20.io/images/63058958/9lcOFUVygdOlhpVRU8I1Lg/original.png?1537378258" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/63058958/9lcOFUVygdOlhpVRU8I1Lg/original.png?1537378258</a>) [Screenshot](<a href="https://s3.amazonaws.com/files.d20.io/images/63058958/9lcOFUVygdOlhpVRU8I1Lg/original.png?1537378258" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/63058958/9lcOFUVygdOlhpVRU8I1Lg/original.png?1537378258</a>) I apologize for the lengthy disclaimer, but it really should be mentally noted, as the lag spike can become quite exponential when it's used in things like a Monk's Unarmed Strike, which can easily reach 9 swings per turn at later levels, in addition to everyone else's chat images. A useful trick if you find your sources to be unstable: save the images to an imgur account and link to the images there with the accessibility set to Hidden but accessible with the URL.
Blue64 said: Hidden Stats, Attributes, and Abilities: Sometimes you find those Players that simply love to Metagame everything, allowing their technical knowledge of things their character wouldn't know dictate their tactics instead of their environment and character's personality (eg: the monster looks heavily beat up, it's actually only got 1 HP, but so does everyone else, and it's AoE attack next turn is a TPK if nobody runs away, logic says to run, but the player sees the 1 HP and decides to charge instead). Whilst this would increase the Survival Rate of the Party, it also takes that fun little aspect of the mystery away, especially if they start sharing their Out of Character knowledge with the other Players. There is an easy enough way to keep this information out of the Hands of the Players though: Custom Attributes &amp; Abilities! If your Players don't have Edit Access, they are incapable of looking up things like %{target|speed} or %{target|hp|max} if you move all of the Attribute Calls to Ability Variables using the above examples (skipping the Chat Macro step) you can generate a clean little menu of Stats, Attributes, and Abilities, and none of the Players will be capable of accessing any of it. if they do try to peek, they'll find whatever messages you leave behind, if you even leave one (perhaps your favorite Family Guy "He's a cheater" GIF sent to Chat). Come to think of it, I don't think anyone has really gone over that trick in depth on here yet... continued... So you're suggesting moving all 167 Attributes that come standard on the OGL Character Sheet to Abilities for every NPC used in a game??? Sorry, I didn't purchase the Monster Manual to do more work. Interesting that Abilities are user protected while the attributes aren't.
1537448746

Edited 1537449240
More interactive world - every npc is a character mook I Love the idea of having most NPCs be a functional character. Not just the bosses, or planned enemies. Every NPC, pretty much. It immediately sounds like a lot of work, but it doesn't have to be. Required: Token Mod API for faster results - this Script is provided with the one click install script library. Step 1: prepare maybe 5 characters for a group you want to make more interactive. Example: create one char called timid villager, another can be an agressive villager, etc. Get some stats that go with these archetypes, get some abilities too. Step 2: create a simple macro that uses the Token Mod API to set up an NPC token in one click. As an example I choose to immediatly give them a light source, hide their bars from players, give them vision and much more, in one click. Step 3: add tokens to map. Prepare them with the macro, and link them to one of the character types. Link and unlink the bars to make it a mook with the right bar values quick. Done. Now this token is an equivalent to a player token in many ways, takes 5 seconds to set up.&nbsp; If the players anger it, it is ready to go. If the players ask it for help, ready to go. This can be applied to any other common creature too, like dogs or horses, robots or soldiers. For everyone wondering what a mook is: a token associated to a character, but with its token bars unlinked. An example, it will show the HP bar with the value you want but will not affect the character's HP if the token's HP is changed. PS: Something that came to mind while writing this... can you set multi sided tokens with default tokens of a character? Then the process could be even faster.
gui8312 said: PS: Something that came to mind while writing this... can you set multi sided tokens with default tokens of a character? Then the process could be even faster. Are you asking if you can set a multi-sided token as&nbsp;the &nbsp;default token for a character? Of course! Just look at any of the shapeshifting creatures like a werewolf.
Ohhh that's cool! That the whole process can be done even faster with that (in some situations)
1537453241
GiGs
Pro
Sheet Author
API Scripter
Correct me if I'm wrong Keith, but I believe this thread is primarily for tricks anyone can use, and we should avoid posting tricks that rely on the API. Otherwise it could easily get overrun with tips that most users cant benefit from (there are a LOT of tricks you can use the API for).
1537459589
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
G G said: Correct me if I'm wrong Keith, but I believe this thread is primarily for tricks anyone can use, and we should avoid posting tricks that rely on the API. Otherwise it could easily get overrun with tips that most users cant benefit from (there are a LOT of tricks you can use the API for). Actually, there are a small number of tricks that use the API. Just be up front about it at the beginning. Also, if something similar can be done without the API, put that in. Example would be the Notes token, where I did an API and non-API set of posts. Also, an API by itself is not a Stupid Trick, no matter how cool. Using an API in a specific and clever way is. For instance, the Notes token made heavy use of the GMNotes script, but (hopefully) came with added value, and was intended as a companion piece to the more elaborate non-API version.
1537461269
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
gui8312 said: More interactive world - every npc is a character mook ... PS: Something that came to mind while writing this... can you set multi sided tokens with default tokens of a character? Then the process could be even faster. Yes you can. Good trick, I do pretty much the same. I have a collection of tokens that are all commoners. These are all in a rollable token that I assigned to the Commoner sheet. The commoner sheet has a character ability I can use to assign names and personality quirks randomly. I do similarly for three classes of generic NPC, using Commoner, Guard or Veteran from the SRD to vary threat level.
The trick I posted does not require API btw :)
Delete this if this doesn't belong here as it is somewhat of a suggestion. But with so many "stupid tricks" and a post that then redirecting users to this post where they then navigate a table of contents got me asking. I wonder if it would be in Roll20's best interest to have a separate Forum Topic for Helpful Hints Tricks and Guidance (the title of their stickied thread). The idea being that the only posts in that forum would be things that appear in Stupid Tricks, and each topic has its own conversation history. As much as I'm against heavy forum moderation / thread locking, this would be one instance where I would totally be on board with keeping topics on thread / moving them to the Q&amp;A Forum when it makes sense. Just seems like this thread itself is becoming its own forum within itself. Posted this here because multiple moderators frequent this thread, and it's not important enough for me to create a suggestion or idea for it, as it's about the forums and not the platform itself.