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)

1580981821

Edited 1580982464
Horvald said: Have you played with this trick?  Does it reduce lag and load on maps?  I came up with this trick to "solve" the issue I was having with the " No turn order item was found by the name X " error so I haven't had a chance to experiment with it too much so far, but it definitely helps with the Page Ribbon clutter. Tomb of Annihilation has a lot  of pages, and even before adding my own (and with  Add Rows to Map Tab  - keithcurtis  [install] ) there were 3 Ribbons worth of them, so being able to condense that into something more manegeable was really helpful. That said, I am not sure how multi-sided tokens work, but the game seems to "load" a little when you switch for the first time to a new Token side, but it's insteantaneous if you try to switch again between "cached" sides (even if close and reopen the editor or refresh the page).  EDIT:  I've attempted an experiment with loading times and the Rollable Table token seems definitely better on load times compared to multiple maps, even if the Token has been "pre-cached" with all its content for insta-side-swapping. With the fully pre-cached token (7 sides) on the board, it took 23.2s for the page to refresh, With the same 7 maps all on the board at the same time (on a 30x30 size, no consideration for the original size for "parity" with the pre-cached token) it took 27.5s for the page to load. It doesn't seem much, but it's almost a 20% difference. Using rollable tables for tokens and maps (where applicable)  could  make a significant difference in load times, if you compound the effects. As an added benefit, the page itself felt less "laggy" when scrolling around with just the pre-cache token, but of course this could be just confirmation bias.
Noon said: Joyous day. I remembered another Caveman Math (debugging API errors) (uses API) Caveman debugging is... necessary. It's fine. I guess. Log all the things. Or whatever. But sometimes that isn't enough when you're trying to read '1' of null and the API just can't even. Which '1'? I have a lot of those. What do you mean line 12k? This doesn't help me. I've narrowed down the script but there's still 600 lines here. Math to the rescue. Just crash the API on purpose and figure out the difference. Format is apiscript.js:[ErrorLineNumber]:[ErrorCharNumber] For instance, let's say you have this error Add a line like this to the beginning of the offending API script on("chat:message", function(msg) {if(msg.type == "api" && msg.content.indexOf('!killAPI') == 0)null.f();}); Call !killAPI from within the game Since you added a line to the API script you know your null[1] is now on line 1 + 11499 - 11468. Time to go to line 32: var charid = /{{character_id=([^}]*)}}/.exec(msg.content)[1]; Yup. I could see how that would be a problem. Let's fix that. var charid = (/{{character_id=([^}]*)}}/.exec(msg.content) || {})[1]; Oof. But at least it won't crash as much. This is the principle behind Airbag .
1581775328

Edited 1581775690
Using Characters/Tokens to represent Conditions This might be a rather stupid trick, but it works fine for me and as I haven't seen it in this forum so far, I thought I might share it: Conditions can be a nuisance if you don't know all the rules to them and how long they are in effect, especially if you're using a conditions-heavy system like PF2 or D&amp;D. So here is what I did: I create a Character for each Condition and a Handout for each Condition with all the necessary rules (e.g. a Character named Blinded and a Handout named Blinded with all the rules about the blinded condition). The Character will have 4 basic Macros: an "Add Timer", a "+Time" a "-Time" and a "Link" Macro. The Add Timer Macro will basically put the Token to the TurnTracker with a number (depending on how long a Condition will stay): for non-API users like that:&nbsp;[[?{How many rounds?|1 round,1|2 rounds, 2|...} &amp;{tracker}]]; the +Time will count up the rounds (/w gm [[1 &amp;{tracker:+}]]), the -Time will count down the rounds (/w gm [[1 &amp;{tracker:-}]]) and the Link Macro just contains a link to the Handout [Blinded](Blinded-Handout-Link). Now you can just drag the Condition Character to your map, simply click on the Add Timer Macro and it goes into the Turn Order and you can simply drag it under the Character/Monster that is afflicted by the condition.&nbsp; I also use the bars for Values that go along with some Conditions, but that's basically all up to you. I also made some nice Condition Icons using this site:&nbsp; <a href="https://game-icons.net/" rel="nofollow">https://game-icons.net/</a> I hope that's helpful and you understand what I meant (english is not my first language). Robert
1581788988
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Thanks Robert. Pretty clever, I don't think I've seen that one before. I've added it to the index, but if I could make a formatting suggestion to make it easier for folks to read it, I think the macro code could take advantage of the code style: Add Timer Macro will basically put the Token to the TurnTracker with a number (depending on how long a Condition will stay): for non-API users like that: [[?{How many rounds?|1 round,1|2 rounds, 2|...} &amp;{tracker}]] +Time will count up the rounds /w gm [[1 &amp;{tracker:+}]] -Time will count down the rounds /w gm [[1 &amp;{tracker:-}]] Link Macro just contains a link to the Handout [Blinded](Blinded-Handout-Link)
Thank you for fixing that for me; I tried that, but somehow it didn't work as intended for me.
1581807945
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
The text editor on Roll20 can be quirky, to say the least.
1581864580

Edited 1581864660
Also, might I suggest that you consider using the Character Sheet as the Handout, since the people with View Permission can view the initial Bio &amp; Info Page (which all character sheets have), and this would reduce some of the late-game bloat that can come with more fleshed out Games. I should note that they will not have Character Sheet or Attributes &amp; Abilities access without Edit Permissions, nor will they have Token Control permission without Edit Permissions.
1582204988

Edited 1582205339
Yet another Spell Tracker (with no extra tokens) This one is a bit of a hacky solution since you can't write values to a field without API access. What I really wanted was a way to reset the number of spell slots available to my PCs after a Long Rest. &nbsp;It involves using Default Tokens and Custom Token Markers. As a note, this will not update the value for the consumed spell slots in the sheet, so it's an alternative tracking method to use instead of that one; it involves less admin work though (and it's more easily readable by the player and the master), so I prefer it. Add some Custom Token Markers to your library&nbsp; <a href="https://app.roll20.net/marker-library/" rel="nofollow">https://app.roll20.net/marker-library/</a> &nbsp;to represent spell levels. I have created some quick and dirty ones for the first few levels&nbsp; <a href="https://imgur.com/a/Blkd4a0" rel="nofollow">https://imgur.com/a/Blkd4a0</a> Add the Custom Token Marker Set to your campaign. Create/Load a default PC token tied to a Character. Add a Marker for each level of Spells that character has access to. Set the current MAXIMUM slots for each level. It will look something like this: Once you are done, save the Token as the Default one for the PC. Every time the PC casts a spell, update the counter. After a Long Rest, simply click and drag a fresh token from the Journal to the Board and delete the old one. &nbsp; The Markers and the numbers associated with them are stored in the Default Token, but all the values tied to the sheet (HP, class resources, etc) are saved between Tokens. Once the PC levels up and gains more spell levels, update the token and save it as the new default. This is what the process looks like in practice:&nbsp; <a href="https://imgur.com/a/bIgW0kC" rel="nofollow">https://imgur.com/a/bIgW0kC</a>
1582206891
GiGs
Pro
Sheet Author
API Scripter
Thats a clever use of custom tokens. excellent.
1582602372

Edited 1582611099
Dumbhuman
Pro
Marketplace Creator
Using TokenMod and ChatSetAttr to Set Up Druid Wild Shapes (uses API) TokenMod makes it so that you don't need to bother with rollable tables to create a multi-sided token (as long as all of the images involved are in your user library). !token-mod --set imgsrc|+@{target|token_id} --ids @{selected|token_id} Select your Druid's token, use the macro above and click their token as your target.&nbsp; They now have a multi-sided token with their base token as side 1.&nbsp; Put down some beast form tokens and add them to the Druid's token.&nbsp; Don't forget to save the token as their default token or you won't have any additional sides the next time you drag their token out. !token-mod --set defaulttoken I find this so much faster than creating/updating lots of rollable tables, especially because I tend to add multiple sides to the majority of tokens in my games (variations on appearance whenever I can for enemies, players, etc). I use separate character sheets for all the Wild Shapes that Druids might have (so that I can have appropriate token macros for attacks and such for each).&nbsp; So if I have two Druids in my game named Bob and Mary Sue and they both like to turn into wolves, then I'll have a Wolf sheet (for use with Conjure Animals and such), a Wolf Bob character sheet with Bob's mental stats/proficiencies/saves, and a Wolf Mary Sue sheet with Mary Sue's mental stats/saves.&nbsp; Setting up the Druid specific sheets correctly for mental stats/proficiences/saves is easy enough if you have the ChatSetAttr API script. You just need to have the tokens for the Druid and Wild Shape to be modified and then run the following three macros, selecting the appropriate targets as prompted. The first sets up the Wild Shape character sheet with the Druid's mental stats and proficiency bonus: !setattr {{ --charid @{target|Wild Shape|character_id} --evaluate --pb_custom|(%pb_custom% &lt; @{target|Druid|pb}) ? @{target|Druid|pb} : %pb_custom% --intelligence|@{target|Druid|intelligence} --intelligence_mod|@{target|Druid|intelligence_mod} --wisdom|@{target|Druid|wisdom} --wisdom_mod|@{target|Druid|wisdom_mod} --charisma|@{target|Druid|charisma} --charisma_mod|@{target|Druid|charisma_mod} }} The second does a little needed preparation to the Wild Shape character sheet (making sure that all the necessary fields are actually using numbers for the attributes to be evaluated in the next step): !setattr {{ --charid @{target|Wild Shape|character_id} --evaluate --npc_saving_flag|1 --npc_skills_flag|1 --strength_mod|"%strength_mod%" ? "%strength_mod%" : "0" --dexterity_mod|"%dexterity_mod%" ? "%dexterity_mod%" : "0" --constitution_mod|"%constitution_mod%" ? "%constitution_mod%" : "0" --intelligence_mod|"%intelligence_mod%" ? "%intelligence_mod%" : "0" --wisdom_mod|"%wisdom_mod%" ? "%wisdom_mod%" : "0" --charisma_mod|"%charisma_mod%" ? "%charisma_mod%" : "0" --npc_str_save_flag|"%npc_str_save_flag%" ? "%npc_str_save_flag%" : "0" --npc_dex_save_flag|"%npc_dex_save_flag%" ? "%npc_dex_save_flag%" : "0" --npc_con_save_flag|"%npc_con_save_flag%" ? "%npc_con_save_flag%" : "0" --npc_int_save_flag|"%npc_int_save_flag%" ? "%npc_int_save_flag%" : "0" --npc_wis_save_flag|"%npc_wis_save_flag%" ? "%npc_wis_save_flag%" : "0" --npc_cha_save_flag|"%npc_cha_save_flag%" ? "%npc_cha_save_flag%" : "0" --npc_athletics_flag|"%npc_athletics_flag%" ? "%npc_athletics_flag%" : "0" --npc_acrobatics_flag|"%npc_acrobatics_flag%" ? "%npc_acrobatics_flag%" : "0" --npc_sleight_of_hand_flag|"%npc_sleight_of_hand_flag%" ? "%npc_sleight_of_hand_flag%" : "0" --npc_stealth_flag|"%npc_stealth_flag%" ? "%npc_stealth_flag%" : "0" --npc_arcana_flag|"%npc_arcana_flag%" ? "%npc_arcana_flag%" : "0" --npc_history_flag|"%npc_history_flag%" ? "%npc_history_flag%" : "0" --npc_investigation_flag|"%npc_investigation_flag%" ? "%npc_investigation_flag%" : "0" --npc_nature_flag|"%npc_nature_flag%" ? "%npc_nature_flag%" : "0" --npc_religion_flag|"%npc_religion_flag%" ? "%npc_religion_flag%" : "0" --npc_animal_handling_flag|"%npc_animal_handling_flag%" ? "%npc_animal_handling_flag%" : "0" --npc_insight_flag|"%npc_insight_flag%" ? "%npc_insight_flag%" : "0" --npc_medicine_flag|"%npc_medicine_flag%" ? "%npc_medicine_flag%" : "0" --npc_perception_flag|"%npc_perception_flag%" ? "%npc_perception_flag%" : "0" --npc_survival_flag|"%npc_survival_flag%" ? "%npc_survival_flag%" : "0" --npc_deception_flag|"%npc_deception_flag%" ? "%npc_deception_flag%" : "0" --npc_intimidation_flag|"%npc_intimidation_flag%" ? "%npc_intimidation_flag%" : "0" --npc_performance_flag|"%npc_performance_flag%" ? "%npc_performance_flag%" : "0" --npc_persuasion_flag|"%npc_persuasion_flag%" ? "%npc_persuasion_flag%" : "0" }} The final macro compares saves/skills between the Druid and the Wild Shape and adds the newly calculated values to the Wild Shape: !setattr {{ --charid @{target|Wild Shape|character_id} --evaluate --npc_str_save_flag|(@{target|Druid|strength_save_prof}!==0)?1:%npc_str_save_flag% --npc_dex_save_flag|(@{target|Druid|dexterity_save_prof}!==0)?1:%npc_dex_save_flag% --npc_con_save_flag|(@{target|Druid|constitution_save_prof}!==0)?1:%npc_con_save_flag% --npc_int_save_flag|(@{target|Druid|intelligence_save_prof}!==0)?1:%npc_int_save_flag% --npc_wis_save_flag|(@{target|Druid|wisdom_save_prof}!==0)?1:%npc_wis_save_flag% --npc_cha_save_flag|(@{target|Druid|charisma_save_prof}!==0)?1:%npc_cha_save_flag% --npc_athletics_flag|(@{target|Druid|athletics_prof}!==0)?1:%npc_athletics_flag% --npc_acrobatics_flag|(@{target|Druid|acrobatics_prof}!==0)?1:%npc_acrobatics_flag% --npc_sleight_of_hand_flag|(@{target|Druid|sleight_of_hand_prof}!==0)?1:%npc_sleight_of_hand_flag% --npc_stealth_flag|(@{target|Druid|stealth_prof}!==0)?1:%npc_stealth_flag% --npc_arcana_flag|(@{target|Druid|arcana_prof}!==0)?1:%npc_arcana_flag% --npc_history_flag|(@{target|Druid|history_prof}!==0)?1:%npc_history_flag% --npc_investigation_flag|(@{target|Druid|investigation_prof}!==0)?1:%npc_investigation_flag% --npc_nature_flag|(@{target|Druid|nature_prof}!==0)?1:%npc_nature_flag% --npc_religion_flag|(@{target|Druid|religion_prof}!==0)?1:%npc_religion_flag% --npc_animal_handling_flag|(@{target|Druid|animal_handling_prof}!==0)?1:%npc_animal_handling_flag% --npc_insight_flag|(@{target|Druid|insight_prof}!==0)?1:%npc_insight_flag% --npc_medicine_flag|(@{target|Druid|medicine_prof}!==0)?1:%npc_medicine_flag% --npc_perception_flag|(@{target|Druid|perception_prof}!==0)?1:%npc_perception_flag% --npc_survival_flag|(@{target|Druid|survival_prof}!==0)?1:%npc_survival_flag% --npc_deception_flag|(@{target|Druid|deception_prof}!==0)?1:%npc_deception_flag% --npc_intimidation_flag|(@{target|Druid|intimidation_prof}!==0)?1:%npc_intimidation_flag% --npc_performance_flag|(@{target|Druid|performance_prof}!==0)?1:%npc_performance_flag% --npc_persuasion_flag|(@{target|Druid|persuasion_prof}!==0)?1:%npc_persuasion_flag% --npc_str_save|(%pb_custom% + %strength_mod%) --npc_dex_save|(%pb_custom% + %dexterity_mod%) --npc_con_save|(%pb_custom% + %constitution_mod%) --npc_int_save|(%pb_custom% + %intelligence_mod%) --npc_wis_save|(%pb_custom% + %wisdom_mod%) --npc_cha_save|(%pb_custom% + %charisma_mod%) --npc_athletics|(%pb_custom% + %strength_mod%) --npc_acrobatics|(%pb_custom% + %dexterity_mod%) --npc_sleight_of_hand|(%pb_custom% + %dexterity_mod%) --npc_stealth|(%pb_custom% + %dexterity_mod%) --npc_arcana|(%pb_custom% + %intelligence_mod%) --npc_history|(%pb_custom% + %intelligence_mod%) --npc_investigation|(%pb_custom% + %intelligence_mod%) --npc_nature|(%pb_custom% + %intelligence_mod%) --npc_religion|(%pb_custom% + %intelligence_mod%) --npc_animal_handling|(%pb_custom% + %wisdom_mod%) --npc_insight|(%pb_custom% + %wisdom_mod%) --npc_medicine|(%pb_custom% + %wisdom_mod%) --npc_perception|(%pb_custom% + %wisdom_mod%) --npc_survival|(%pb_custom% + %wisdom_mod%) --npc_cha_save|(%pb_custom% + %charisma_mod%) --npc_cha_save|(%pb_custom% + %charisma_mod%) --npc_cha_save|(%pb_custom% + %charisma_mod%) --npc_cha_save|(%pb_custom% + %charisma_mod%) }} For the Druid's base form and each Wild Shape, I add a macro as an ability on the Druid's character sheet.&nbsp; It uses TokenMod to switch their token to the correct side and size for that Wild Shape, links it to the appropriate character sheet, sets the correct (dark)vision, displays speed in bar 1 (sometimes using bar1_value and bar1_max to remind me of multiple speeds like the climbing speed for spiders), displays AC in bar 2, and rolls hit points based on the Wild Shapes hit point formula into bar 3.&nbsp; A couple of examples below: !token-mod {{ --set currentside|1 height|70 width|70 represents|"Mary Sue" light_radius|12 light_dimradius|=-5 bar1_link|speed bar2_link|ac bar3_link|hp &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }} !token-mod {{ --set currentside|6 height|140 width|140 represents|"Giant Spider Mary Sue" light_radius|60 light_dimradius|0 bar1_value|30 bar1_max|30 bar2_value|@{Giant Spider Mary Sue|npc_ac} bar3|[[@{Giant Spider Mary Sue|npc_hpformula}]] }} Finally each Druid gets an ability called "Wild Shapes" which just whispers them a bunch of buttons linked up to the forms they have available.&nbsp; Select the Show in Macro Bar option for that one so it'll be available no matter what shape they're using.&nbsp; That macro looks something like this: /w "Mary Sue" [Base](~Mary Sue|BaseForm) [Giant Spider](~Mary Sue|GiantSpider) ... When the Druid gets a new Wild Shape, you just need to click a few macro buttons to add the image to their token, duplicate and rename the shape's character sheet, then set up a new ability for that shape, and finally add a new button to the Wild Shape menu.&nbsp; It's actually pretty fast using the macros above, but I do still wish someone would make one API to handle all of that. That said, I really feel like this is more towards the stupid end of the spectrum than the clever one, because a clever one wouldn't be quite as resource intensive as requiring all those separate character sheets for each Druid.&nbsp; I've tinkered around a little bit with a method that makes back up copies of the Druid's base attributes and then overwrites a Wild Shape's attributes on the Druid character sheet as well as adding abilities for the Wild Shape's attacks, but it's so far from being ready that I probably shouldn't even be mentioning it.
1582606069

Edited 1582771172
huh, that does actually sound pretty useful. However, out of curiosity, I'm wondering 2 things: What Sheet are you using? are those API Scripts capable of equipping Items from your Inventory as well? Also, you should probably denote that your Trick requires Pro Membership in the Header. The Reason why I am wondering is because, I have been using a silly &amp; stupid trick myself to apply Racial Modifiers to my NPCs that you might be able to make use of in order to perhaps restructure your System. You'll be able to consolidate their Sheets into one singular Sheet if you create a Chat Menu for calling the Abilities, migrating them accordingly into each Character Sheet, or you could also use a Handout, but the Chat Menus are more reliable, as the Handout breaks if you open it in a new Tab. I use the Roll20 5e OGL Sheet myself, and the Items have a wonderful trick I use that I like to call: Quick and Easy Variable Racial Modifiers (Free Version) Items like Belt of Storm Giant Strength in D&amp;D have effects that modify the Base Stats under certain circumstances, and I'm sure this is common amongst many different Games. Such items can be studied when they're properly placed in a Character Sheet, and the formula Tweaked and repurposed accordingly. For example, the aforementioned Belt of Storm Giant Strength has the ability of "Set Strength to 29 unless already Higher while Attuned", and looking at the Item's "Properties" value in the Roll20 5e OGL Sheet reveals the following Property enforcing that very Effect: Strength: 29 This tells us that we can also use this for the remainder of the Corresponding Core Stats as well: Strength: 20 Dexterity: 20 Constitution: 20 Intelligence: 20 Wisdom: 20 Charisma: 20 and on top of that, with some tinkering, you can also find out that you're capable of applying modifiers to the Stats as well Strength +2 Dexterity +2 Constitution +2 Intelligence +2 Wisdom +2 Charisma +2 Strength -2 Dexterity -2 Constitution -2 Intelligence -2 Wisdom -2 Charisma -2 and this can even be done multiple times on the same item. For example, in order to replace a Ghost's Physical Stats when they successfully Possess someone, you'd create an Item named (for example) " Possession " that has the following Properties: Strength -20, Strength: 10, Dexterity -20, Dexterity: 10, Constitution -20, Constitution: 10 and the result would be that their Str, Dex, &amp; Con would become a 10, useful for when they Possess a Commoner for example. You can tweak those numbers to have it prepared as separate items for each Party Member as well. Then you simply leave each item Unequipped until it Possesses the appropriate Target, at which point, you equip that Item. This is also great for creating a Boss Monster based on a normal Monster that simply has beefed up stats, or tweaking your Druid's Stats when they Wildshape, or tweaking the Stats of a Creature when your Party decides to Polymorph them. now obviously, this trick will vary from Sheet to Sheet, and the names will change from Game to Game (3.5e D&amp;D for example uses Fortitude, not Constitution), but, so long as such Items exist in your Game, and are functional on your Sheet, this trick should be able to be implemented accordingly. P. S. Continue reading for disclaimers
1582612378
Dumbhuman
Pro
Marketplace Creator
Blue64 said: huh, that does actually sound pretty useful. However, out of curiosity, I'm wondering 2 things: What Sheet are you using? are those API Scripts capable of equipping Items from your Inventory as well? Also, you should probably denote that your Trick requires Pro Membership in the Header. The header's been edited to specify that it requires API (in the format that seems most used for that from the page I scanned). I'm using the 5E OGL sheet and ChatSetAttr is very capable of equipping inventory items, but it's also capable of accomplishing the same thing that the Belt of Giant Strength does (which is to overwrite the Strength attribute, while leaving Strength_Base untouched).&nbsp; Still, I wasn't aware that items could do that, so thank you very much for pointing that out.&nbsp; I should definitely be making use of that in the future for some homebrew magic items.
1582614980
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
That's a neat idea Blue, but each sheet handles that sort of thing very differently. The Shaped Sheet doesn't tie it to equipment, for instance, but has a repeating field of global modifiers. I'd suggest noting more strongly that this trick is specific to the D&amp;D 5e by Roll20 sheet. The other thing I would caution about here is to make sure to un-equip any equipment-based modifier that is not actively being used. The Roll20 sheet has a known bug that if you use Charactermancer Level Up while using equipment that modifies your ability scores, it will overwrite those scores, treating them as the base. If you have Headband of Intellect (which gives a 19 Int) equipped during level up, your character will henceforth have a permanent 19 Int.
1582894346

Edited 1582894385
^^^ That's a neat trick Blue64! I'm using it have a quick and dirty "item" for Druid transformations that can be equipped on and off to overwrite the Druid's physical Abilities. Draw from a pouch (Free/Plus) Instead of rolling dice, a few RPGs use a pouch drafting system: you build your bag with tokens that represent failure, success or other outcomes, then you draw one or more tokens from the bag when it's time to resolve conflicts. If your bag is mostly static (IE: the contents of the bag only change at level up), then your best bet is to us a Deck of Cards . If the pouch content is dynamic , though (IE: the bag contents are different for each roll), the Deck falls short (you can't duplicate cards, you can quick add/remove them). I am sure there is an easier way to do this if you have a Pro account, but if you are on the Free or Plus membership, this should do it in a pinch. The trick works best with a binary (success/failure) token system, but it can accomodate other systems if necessary . Create a&nbsp; Macro Character Sheet &nbsp;as per keithcurtis's trick. In my case, mine is called MacroMule . Create 3 empty characters. In the game I'm playing, the bag contains a mix of white and black tokens to represent success and failure. My characters are called Black , White &nbsp;and Var . Create suitable tokens for the characters. Var is going to be on the GM layer; the other 2 tokens are going to be in the Tokens layer, close to the chat. This are the ones I'm using, for reference: Create two Rollable tables as per&nbsp; Use Rollable Tables to Spice up Flavor Text &nbsp;by godthedj. The first one is going to be called 0 &nbsp;with a single entry called Success! while the other one is going to be called 1 &nbsp;with a single entry called Failure! &nbsp;(or whatever else your game is using. The one I'm playing atm calls the failure state Complication &nbsp;so I used that): Open your Macro mule character and make sure it has "Can be edited and controlled by: All Players" but that it isn't in any player's journal. Switch to the Attributes &amp; Abilities tab and create 5 Abilities , as follows: percent The bag holds @{tracker|White} White and @{tracker|Black} Black tokens. The chance to draw a Success is @{tracker|var} % draw /em draws a [[ 1t[[[{1d100}&gt;@{tracker|var}]]] ]] +1 /desc There is [[1d1 &amp;{tracker:+}]] more @{selected|token_name} token in the bag. -1 /desc There is [[1d1 &amp;{tracker:-}]] less @{selected|token_name} token in the bag. Full (uses&nbsp; Chat Menus &nbsp; by keithcurtis) - make sure to add this Ability to your quickbar! /desc &amp;{template:default} {{name=Current Situation}} {{%{MacroMule|percent}}} {{ [Draw!](~MacroMule|draw) [Add](~MacroMule|+1) [Remove](~MacroMule|-1)}} {{[Go Again!](~MacroMule|Full)}} Last but not least, assign this value to the tracker for var : [[floor((100 / (@{tracker|White} + @{tracker|Black})) * @{tracker|White})]] Trick Usage Build your bag by setting the initial number of black and white tokens - assign those values to the respective trackers: Click the Full Ability on your quickbar. It will create a chat Menu that looks like this: Click Draw! &nbsp;This is what you will see: Since we have drawn a success, we have to select the White token and click Remove . In the image below, you can see that the Turn Order value for White is now 2 instead of 3. Quite often games that use this system have some kind of push your luck mechanic, so let's click Go Again!&nbsp; to have an updated situtation: The Chat Menu is now displaying the updated chance to draw a Success. Originally, I had set this "update" to be displayed every time a token was added or removed from the pouch, but unfortunately Roll20 resolves all the values in a Macro at the same time, so the % displayed would be wrong (it would still show the % from before the Draw). Let's draw a couple more tokens: Here's a gif showing the full process:&nbsp; <a href="https://imgur.com/KwJ4BJU" rel="nofollow">https://imgur.com/KwJ4BJU</a>
whilst the Var Token is great for visual demonstrations like the one you did there (very nice by the way), I would suggest a MacroPC Macro Mule&nbsp; to be paired with your MacroGM Macro Mule, that way you can give players access to certain Macros easily, without needing to place the Var Token each time, and you will also have a place where you can safely put your GM Macros that use features such as /as /emas &amp; /desc without needing to worry about getting the question of "What does this error mean?" from your players mid-session because you used a command they didn't have access to and need to fix it. Simply put, the MacroPC Sheet (specifically the Attributes &amp; Abilities section) would contain all of the Macros that you could use the Var Token for, whilst the MacroGM Sheet would be used for things like New Character Macros, Loot &amp; Exp Roll Macros, or Mob Stat Macros.
Roll initiative for all selected tokens at once and add them to the combat tracker (no need for Pro account and scripting API access): You need to install free chrome extension VTT Enhancement Suite. It adds "roll bulk macro" button when you select many tokens. The macro looks like this: &amp;{template:default} {{name=Initiative}}{{@{selected|token_name}=[[ 1d20 + @{selected|initiative_bonus} &amp;{tracker} ]]}} remember to select "Show as token action" for that macro when creating it. Then just select as many tokens as you like, right click one of them, select "Roll Bulk Macro" from the context menu and select that macro from a list. You can even put some enemies tokens on the GM layer and add all the, to the initiative at once with this trick - the combat tracker will hide the tokens on the GM layer from the players until you move the token to the token layer, and you won't need to roll initiative each time reinforcements arrive.
1582996658

Edited 1582996821
Universal NPC Actions/PC Attacks/PC Spellbooks/etc Chat Menus This trick uses&nbsp; Chat Menus &nbsp;by keithcurtis, of course, and the D&amp;D 5e OGL sheet by Roll20. It took me a while to build these, since for some reason nothing in the sheet uses the same naming convention, but this trick can be potentially used to display any kind of sheet info without any need to open up the sheet itself - quite useful for a GM that is juggling several different NPCs, for example. Trick explanation We are going to use a macro-tandem system, with one main macro containing all the code, and a second one that simply calls for the first macro and add the &amp;{noerror} &nbsp;tag to prevent your chat from being cluttered with a lot of error messages whenever our menu is trying to invoke more entries than are present in the selected token sheet. NPC Actions Menu The first macro is called&nbsp; NPC-Action . It displays the first 3 Actions present on a selected NPC sheet. /w gm &amp;{template:default}{{name=@{selected|character_name} NPC Actions}}{{@{selected|repeating_npcaction_$0_name}:[roll](~selected|repeating_npcaction_$0_npc_action)@{selected|repeating_npcaction_$1_name}:[roll](~selected|repeating_npcaction_$1_npc_action) @{selected|repeating_npcaction_$2_name}:[roll](~selected|repeating_npcaction_$2_npc_action)}} The second macro is called&nbsp; NCP-Actions . I've marked as a Token action and made it only visible to myself (the GM). #NPC-Action&amp;{noerror} This is what it looks like (I've invoked the macro and rolled one of the Actions): PC Attacks Menu The first macro is called&nbsp; PC-Attack . It displays the first 10 Attacks present on a selected NPC sheet. /w @{selected|character_name} &amp;{template:default}{{name=@{selected|character_name} Attacks}}{{@{selected|repeating_attack_$0_atkname}:[roll](~selected|repeating_attack_$0_attack) @{selected|repeating_attack_$1_atkname}:[roll](~selected|repeating_attack_$1_attack) @{selected|repeating_attack_$2_atkname}:[roll](~selected|repeating_attack_$2_attack) @{selected|repeating_attack_$3_atkname}:[roll](~selected|repeating_attack_$3_attack) @{selected|repeating_attack_$4_atkname}:[roll](~selected|repeating_attack_$4_attack) @{selected|repeating_attack_$5_atkname}:[roll](~selected|repeating_attack_$5_attack) @{selected|repeating_attack_$6_atkname}:[roll](~selected|repeating_attack_$6_attack) @{selected|repeating_attack_$7_atkname}:[roll](~selected|repeating_attack_$7_attack) @{selected|repeating_attack_$8_atkname}:[roll](~selected|repeating_attack_$8_attack) @{selected|repeating_attack_$9_atkname}:[roll](~selected|repeating_attack_$9_attack)}} The second macro is called&nbsp; PC-Attacks . I've marked as a Token action and made it visibile to every player. #PC-Attack&amp;{noerror} This is what it looks like (I've invoked the macro and rolled one of the Attacks): PC Cantrips Menu The first macro is called&nbsp; PC-Cantrip . It displays the first&nbsp; 5 Cantrips present on a selected NPC sheet. /w @{selected|character_name} &amp;{template:default}{{name=@{selected|character_name} Spellbook Cantrips}}{{@{selected|repeating_spell-cantrip_$0_spellname}:[cast](~selected|repeating_spell-cantrip_$0_spell) @{selected|repeating_spell-cantrip_$1_spellname}:[cast](~selected|repeating_spell-cantrip_$1_spell) @{selected|repeating_spell-cantrip_$2_spellname}:[cast](~selected|repeating_spell-cantrip_$2_spell) @{selected|repeating_spell-cantrip_$3_spellname}:[cast](~selected|repeating_spell-cantrip_$3_spell) @{selected|repeating_spell-cantrip_$4_spellname}:[cast](~selected|repeating_spell-cantrip_$4_spell)}} The second macro is called&nbsp; PC-Cantrips . I've marked as a Token action and made it visibile to every player that can cast Cantrips. #PC-Cantrip&amp;{noerror} This is what it looks like (I've invoked the macro and rolled one of the Cantrips): PC Level 1 Spellbook Menu The first macro is called PC-Spell-1 . It displays the first&nbsp; 10 Level 1 Spells present on a selected NPC sheet. /w @{selected|character_name} &amp;{template:default}{{name=@{selected|character_name} Spellbook Level1}}{{@{selected|repeating_spell-1_$0_spellname}:[cast](~selected|repeating_spell-1_$0_spell) @{selected|repeating_spell-1_$1_spellname}:[cast](~selected|repeating_spell-1_$1_spell) @{selected|repeating_spell-1_$2_spellname}:[cast](~selected|repeating_spell-1_$2_spell) @{selected|repeating_spell-1_$3_spellname}:[cast](~selected|repeating_spell-1_$3_spell) @{selected|repeating_spell-1_$4_spellname}:[cast](~selected|repeating_spell-1_$4_spell) @{selected|repeating_spell-1_$5_spellname}:[cast](~selected|repeating_spell-1_$5_spell) @{selected|repeating_spell-1_$6_spellname}:[cast](~selected|repeating_spell-1_$6_spell) @{selected|repeating_spell-1_$7_spellname}:[cast](~selected|repeating_spell-1_$7_spell) @{selected|repeating_spell-1_$8_spellname}:[cast](~selected|repeating_spell-1_$8_spell) @{selected|repeating_spell-1_$9_spellname}:[cast](~selected|repeating_spell-1_$9_spell)}} The second macro is called&nbsp; PC-Spells-1 . I've marked as a Token action and made it visibile to every player that can cast Level 1 Spells. #PC-Spell-1&amp;{noerror} Certain characters have a very long (IE: Clerics) or very short (IE: Sorcerers) spell list. To avoid not the Spellbook truncated or&nbsp;a long list full of errors, I've created two companion Macros called&nbsp; PC-Spell-1-long &nbsp;and&nbsp; PC-Spell-1-short , with the relative second macro in tandem. That way I can assign visibility to an appropriate macro to each character. This is what they look like:
nice
1583758954

Edited 1583759285
Andreas J.
Forum Champion
Sheet Author
Translator
(I organized the Stupid Tricks by category, so things will be easier to find. Keith should be able to just copy my post into his and then it will be easy to place future tips together with those that are related, improving the readability of the impressive list we have. Some organization is better than no organization) Stupid Trick Directory Tokens Black Aura Token for Night - lordmage Party Sight Token - Marius Mood Lighting Tokens - keithcurtis&nbsp;&nbsp;— ( Video &nbsp;by Nick O,&nbsp; timestamp ) Flying Tokens - Arthur B Quick and Dirty Invisible Token Tracking Using Basic Fog of War - keithcurtis&nbsp;&nbsp;— ( Video &nbsp;by Nick O,&nbsp; timestamp ) Put building Interiors on Token Layer with AFoW - Taran Pre-Linked Tokens - Blue64 Droppable Torch Token - Gimblejam Auras as Token Outlines - Noon (includes bonus script) Using Characters/Tokens to represent Conditions - Robert S. Make Large Creatures Look More Threatening - keithcurtis Invisible Tokens - keithcurtis — ( Video by Nick O) Invisible Tokens - The Notes Token -keithcurtis —&nbsp;( Video by Nick O) Invisible Tokens - The Notes Token (API version) - keithcurtis Invisible Tokens - The Control Token - keithcurtis Invisible Tokens - The Door Control - keithcurtis Invisible Tokens - Invisible Creatures - keithcurtis — ( Video &nbsp;by Nick O, timestamp ) Invisible Tokens - Invisible PC or NPC &nbsp;- Rabulais Hide Token with Map Assets - Anton Palikhov Invisible Tokens - Hidden Light Source - El Gato of de Churros and others Character/Character Sheet Inventory Container Sheet - keithcurtis Finding Attributes on Characters - Jeremy R. — ( More info - Loren the GM, and even more &nbsp;- Gargamond) Hidden Stats, Attributes, and Abilities - Blue64 Use a Macro to Report on Obscure Character Abilities and Rules - PapaWhiskey11 Handouts Interactive Tables as Handouts - Jeremy R. Managing Magic Items With Handouts - The Aaron Aligning Images in Handouts - keithcurtis ( More info by Noon) Live Handouts - Noon Macros/Text Chat Chat Menus - keithcurtis (See below for list of Chat Menu generators) Macro Character Sheet - keithcurtis&nbsp; &nbsp;— ( More info - gui8312) Use Modular Macros to Simplify Parsing - Aranador Use /talktomyself to Temporarily Bypass API - keithcurtis DM Whisper With No Breaks - Muckbuckle Tooltip Hack in Chat Display - Aranador Styled HTML in Roll20 Text Fields - Noobsauce Use Images in the Default Template - The Aaron ( More info by Blue64) Spaces in Macro Names - Jeremy (read further posts for cautions) Monster Images in Chat - Kirsty Use a "Placeholder" Character(s) to Handle In-Game Languages - Vince Bypass Blank Ability Call Math - Blue64 Using Tables to Speak Messages in Other Languages - Mike deBoston Summing Success Rolls - Bryan P. Roll Table Tricks Use Rollable Tables to Spice up Flavor Text - godthedj Quickly Populating with Rollable Tables &nbsp;- Mik Holmes Simplified Hour/Day/Night System With Rollable Tables - Dwarf Rollable Encounter Images - Blue64 Nestable Rollable Tables (Free User Version) - Blue64 Maps Make Doors on DL Layer Clear to Players &nbsp;- godthedj Map Pins - keithcurtis ( More info - Airsickhydra) Precautions to Take With Very Large Maps - keithcurtis Landing Pages - keithcurtis Using tints for art compatibility (high level map design) - gui8312 Fine Tune 'Snap to Grid' Dynamic Lighting - Ziechael Battle Maps Rollable Table - Barakka (best if used with Concatenate Tracker Values -trick) Music Quick Play: Room Specific Music -&nbsp;Ye'Olde DM D&amp;D5E PC Token Action to Roll Initiative (5e OGL) - Jeremy How to manipulate Attack Actions&nbsp;(5e OGL) - Jeremy API/Pro/Plus 2 column API buttons in Default Roll Template - Bryan P Exploration Mode (TokenMod API) - Mik Holmes ( Updated version ) Caveman Math (debugging API errors) (uses API) - Noon Using TokenMod and ChatSetAttr to Set Up Druid Wild Shapes - KC Where to Find Scripts - keithcurtis Browser/General Settings Full-screen your browser for more room - Gold GM Disable WebRTC if you use other chat program - Gold Creating a Dummy Account (and why) - keithcurtis Player Vault pages/ UI Pages (to manage cards &amp; equipment) &nbsp; - GUI8312 Archive Characters, and Other Assets Into A Library Campaign - keithcurtis Popout sheets/handouts into tabs (Chrome) &nbsp;- Mik Holmes ( More info by Malachi and Blue 64) Record Session in External Window - Elvin ( More info by keithcurtis) Launch Game in Player/GM Mode - Blue64 Forums/Marketplace/LFG Improved Forum Checking - keithcurtis Forum Searching... But Better - Ziechael Responding to an Old Thread in the Forums - Blue64 Save Sorted Marketplace Searches — Free or Newest - Mike deBoston Easily Repeatable Game Searches - Gen Kitty Uncategorized The Beholder Anti Magic Field - keithcurtis --- Giving Players Limited Access - Kyle.G --- Elaboration - Vince Use Emojis in Macro Buttons - keithcurtis Deck of Cards to Track Player Resources - Gozer the Gozerian Keep Crits/Fumbles from Display on Attack Rolls - Scott C. Query Ordering Without Affecting Functionality - Ziechael Keyboard Macro Shortcuts - keithcurtis Easy Area Markers / Room Numbering - The Aaron Prefix Trick to Variably Call Attributes - Kyle G. Stagger the Timer for Multiple Page FX - Kastion Rolling HP at New Level - Jerry F. Trap and Room Markers sans character sheet or API - Scott C. ( More Info - Barakka) Aura Effect to Reveal Hidden Objects or Markings - reported by Gold ( Stephen S.'s original thread ) ( video - Nick O.) Quick and Dirty Slide Show and Image Display - keithcurtis Simple Way to have a "Handout" without a Journal Entry or Actually Making a Handout - Kastion Drop Down Nester - Scott C. More interactive world - every npc is a character mook - gui8312 Example of Structured Abilities: The XP Macro - Ed S. Environmental Effects ( download link ) - Kirsty Player Dashboard - Spell/Resource/Sheet management direct from the map page - Ziechael Custom Success/Failure Outcome Messages - Ziechael Storing and Reading Values for Macros using the Turn Tracker - Pat Light Crumbs - keithcurtis Expanded graphical tools - gui8312 Conditional Results (ex. Savage Worlds) - Mike deBoston Use Compendium Links for Magic Item Descriptions - keithcurtis Use Resources From free Master's Vault Intro Game - Gold Variable Numbers of Targets in an AoE Attack - Gen Kitty Fake Crits Using Math Instead of Dice - Noon Dynamic Multitarget Roll without API - Barakka "Concatenate" Tracker Values to Build Complex Dynamic Abilities - Barakka Yet another Spell Tracker (with no extra tokens) - Barakka Draw From a Pouch - Barakka
Combination of a few Tricks/Hints to better set up Traps, Locked Doors or both For this im combining a few things: the SimpleDoorControls API by The Aaron, Invisible Tokens and the fact that the bar-values can be used as text-placeholders.&nbsp; Let's assume we have a door that is trapped and locked; here is what I do: Add a closed door and enter all information: I set up a picture of the closed door (or an invisible token if used as a trigger plate). In the bar1_value field I put in the picture of a bomb (I use emojis to do that) and in the bar2_value field I insert the picture of a lock (again emojis). Now when I select the door, I will see that the door is locked and trapped. In the bar1_max field I enter all information concerning the trap (how it is disabled, what damage it deals etc.), in the bar2_max field I enter all information about the lock (how to unlock, etc.).I also set up an Aura around the door to have a good indication of the door being locked/trapped. Add an open door: Now I set up my open door picture (or a pictue of the trap effect) Link both: Create a path that blocks line of sight (in case of a trap just put it anywhere outside your map) and link those.&nbsp; Set up a macro I have a macro set up just for doors which is set to be a Shown as Token Action Macro: ?{What would you like to do with the door?|Open/Close/Activate, !DoorOpenClose|Check for traps,@{selected|bar1|max}|Check for locks,@{selected|bar2|max} } So once my players come to the door or step on the trigger plate I can see if the door/trap is locked or trapped and what is required to unlock it/disable the trap. I hope that's helpful. Robert
1583809134
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Nice job, Andreas, thank you! I have replaced the directory in the top post. If anyone thinks their Stupid Trick would fit in a different category that what is listed, shoot me a PM.
Hi, I don't think this one works anymore. Whatever I try I only get the link.&nbsp;<a href="https://app.roll20.net/forum/permalink/6827714/" rel="nofollow">https://app.roll20.net/forum/permalink/6827714/</a>
1584120888

Edited 1584120937
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Can you post the macro you are using, along with the image URL? Make sure you are following this step: Paste the URL into chat like so: [Name](URL) Note the blue highlighted section. This must be deleted from the URL in order for it to work properly. All images pasted into the chat window must end with .jpg or other image extension. If you don't delete the last section, you will get a link, rather than an image, in chat.
1584121662

Edited 1584121690
it was even mentioned here that you can add the suffix of #.png and it will work right. I still use that trick whenever I want to show my Players an Image that I don't want to create a Token for, such as Character Portraits.
Hey all, I just paid for the pro subscription and it's my first time on roll20. I was looking for a way to put dm notes on the map. The results from the search were from 1 year ago and older. Has anything new popped up in the last year? I also find it kind of hard to figure out how to use all these tools. Lots of different scripts and lots of integration points. They just seem to build on top of each other and so being kind of new to all this it gets pretty overwhelming. I look for youtube videos and what they use don't match what the results are from this forum because there are many ways to do one thing and there doesn't seem to be a consensus. So does anyone have a good approach to dm notes and if so, links to help me figure out how to integrate it into my game step by step?
1584400603
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
These Stupid Tricks are a good place to start: Invisible Tokens &nbsp;- keithcurtis — ( Video &nbsp;by Nick O) Invisible Tokens - The Notes Token &nbsp;-keithcurtis —&nbsp;( Video &nbsp;by Nick O) Invisible Tokens - The Notes Token (API version) &nbsp;- keithcurtis
Perfect! I have indeed been following these post since last night. I have a few questions with respect to The Notes Token (API version).&nbsp; So I install the following scripts in the api scripts location right? - GMNotes - CharNotes - PCNotes When that is done how do I invoke this logic? I didn't quite understand which elements from the "Invisible Tokens - The Notes Token" posts I need to use. Thanks!
1584409354

Edited 1584409381
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
A lot has changed since I wrote that post. I no longer use those three scripts, but have collapsed most of it into one, that I call Supernotes . I've never really made it public, because it really is a Frankenstein level job of coding. If you are using the D&amp;D 5th Edition by Roll20 sheet, then you can use the script as-is. Otherwise, there are some variables at the beginning you can set to conform to your roll template of choice. Once the script is installed, all you need do is make a macro that contains: !GMNotes and it will do everything for you. Or it should. Let me know if it gives you problems. I'll use you as my test case before I re-write the post. I should really have the Aaron look over my work with a critical eye, since most of the code came from him to begin with.
Sure sounds great! I'll try it now. First the url gives 404! You included an extra period at the end. 2 commits nice! Use this URL&nbsp; <a href="https://github.com/keithcurtis1/Supernotes/" rel="nofollow">https://github.com/keithcurtis1/Supernotes/</a> &nbsp;cause the other one forces me to log onto my github account
1584422964
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Professor Chaos said: Sure sounds great! I'll try it now. First the url gives 404! You included an extra period at the end. 2 commits nice! Use this URL&nbsp; <a href="https://github.com/keithcurtis1/Supernotes/" rel="nofollow">https://github.com/keithcurtis1/Supernotes/</a> &nbsp;cause the other one forces me to log onto my github account Fixed, thanks. That was sloppy linking on my part. :)
1584426618

Edited 1584427109
Ok so I did a few things: - Added Supernotes.js to the API scripts - Followed the " Invisible Tokens - The Notes Token " post to create a basic token with no api access - Create a new macro that contained&nbsp; !GMNotes - Click on the button but then nothing happens How can I troubleshoot this? Extra debug info: I changed the code to have debug statements like below and I never see hi2 in the debug window log('hi1'); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; on('chat:message', function(msg) { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; log('hi2'); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ('api' === msg.type &amp;&amp; msg.content.match(/^!(gm|pc)note/) &amp;&amp; playerIsGM(msg.playerid)) {
1584430878

Edited 1584430947
ok I figured it out the macro isn't !GMNotes It's !gmnote That is something your regex was expecting. It seems to work now I'll do more testing
Also concerning Supernotes: if you're using spezial letters (like I do as a German) e.g. ä,ö,ü and ß the API crashes. I haven't found out how to fix this unfortunatley, because I can't script ;)
1584457978
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
That's a bit beyond me. Like I said, I just tinkered with the Aaron's script. I'll run it past him. I'm happy to help with future debugging, but please send me a PM. I try to keep this thread free of chatter and focused on trick presentation.
1584458469
The Aaron
Roll20 Production Team
API Scripter
Robert, do you have the error from when the API crashes?&nbsp; I need to duplicate this then I think I can fix it.
Yes I have the error from the crashes: URIError: URI malformed URIError: URI malformed at decodeURIComponent (&lt;anonymous&gt;) at _.chain.map.reject.reject.each.o (apiscript.js:7152:55) at Function._.each._.forEach (/home/node/d20-api-server/node_modules/underscore/underscore.js:186:9) at _.(anonymous function) [as each] (/home/node/d20-api-server/node_modules/underscore/underscore.js:1639:39) at apiscript.js:7148:38 at eval (eval at &lt;anonymous&gt; (/home/node/d20-api-server/api.js:154:1), &lt;anonymous&gt;:65:16) at Object.publish (eval at &lt;anonymous&gt; (/home/node/d20-api-server/api.js:154:1), &lt;anonymous&gt;:70:8) at /home/node/d20-api-server/api.js:1638:12 at /home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:93:560 at hc (/home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:39:147) It's really easy to replicate the error. All I have to do is enter one of said letters (which unfortunatley come up quite often when writing in german :( ) and try to get them with !gmnotes. If you could fix that, that would be a huge help. Thanks in advance, Rob
I was in a game once that instead of the GM pre-making a sheet ready to go there was a macro that recognized a new player and auto made a sheet once player first came in game. Could anyone point me to a source for making this? Thank you kindly. Search bar is only as good as a person knows how to explain what to search for.
1584738209
GiGs
Pro
Sheet Author
API Scripter
There's a script that does this called the Welcome Pack, IIRC, you can get in the one-click install on your API scripts page.
1584749320
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
There is also Add Player Character by the Aaron.
1584749866
GiGs
Pro
Sheet Author
API Scripter
Oh yes, thats a great script.
Thanks for sharing this good idea! I guess it is more simple if you just click on "add Turn", add an element with the name you wish and then you set an initial value and a counter.&nbsp; For instance: name: Blind Aaron, value 5 (it lasts max 5 rounds), counter: -1 (each round its initiative decreases by 1) And instead handouts you could use either the Roll20 free integrated 5ed rules compendium, or you can create a fancy play card for your players XD &nbsp; Robert S. said: Using Characters/Tokens to represent Conditions This might be a rather stupid trick, but it works fine for me and as I haven't seen it in this forum so far, I thought I might share it: Conditions can be a nuisance if you don't know all the rules to them and how long they are in effect, especially if you're using a conditions-heavy system like PF2 or D&amp;D. So here is what I did: I create a Character for each Condition and a Handout for each Condition with all the necessary rules (e.g. a Character named Blinded and a Handout named Blinded with all the rules about the blinded condition). The Character will have 4 basic Macros: an "Add Timer", a "+Time" a "-Time" and a "Link" Macro. The Add Timer Macro will basically put the Token to the TurnTracker with a number (depending on how long a Condition will stay): for non-API users like that:&nbsp;[[?{How many rounds?|1 round,1|2 rounds, 2|...} &amp;{tracker}]]; the +Time will count up the rounds (/w gm [[1 &amp;{tracker:+}]]), the -Time will count down the rounds (/w gm [[1 &amp;{tracker:-}]]) and the Link Macro just contains a link to the Handout [Blinded](Blinded-Handout-Link). Now you can just drag the Condition Character to your map, simply click on the Add Timer Macro and it goes into the Turn Order and you can simply drag it under the Character/Monster that is afflicted by the condition.&nbsp; I also use the bars for Values that go along with some Conditions, but that's basically all up to you. I also made some nice Condition Icons using this site:&nbsp; <a href="https://game-icons.net/" rel="nofollow">https://game-icons.net/</a> I hope that's helpful and you understand what I meant (english is not my first language). Robert
Well actually if you're playing a condition heavy game like PF 2 or D&amp;D&nbsp; 5E. and have a couple of players, adding turns and entering values is a pain in the */(%!&amp;. Having a character that you can add a couple of time just by clicking on it is way more simple. Also you have all the information at hand without going through the Compendium&nbsp; all the time (linking works only half the time, e.g. blinded just links to the general condition page on the PF2 compendium). It's not the best way, but it works a lot faster than what you're suggesting. Master said: Thanks for sharing this good idea! I guess it is more simple if you just click on "add Turn", add an element with the name you wish and then you set an initial value and a counter.&nbsp; For instance: name: Blind Aaron, value 5 (it lasts max 5 rounds), counter: -1 (each round its initiative decreases by 1) And instead handouts you could use either the Roll20 free integrated 5ed rules compendium, or you can create a fancy play card for your players XD &nbsp;
Apologies if this is already covered; I see there is a way to do long rest / short rest on the shaped 5e dnd sheets; is there a way to do so in the OGL as well? I found other forums on this but all of the suggested methods didn't seem to work.&nbsp; At best I got a nice chat output saying that selected character was taking a long rest; but nothing actually updated.&nbsp; I'm dum as a rock and not entirely sure how to set it up so that all the things a long rest / short rest will happen... i.e., restore hp / hd / abilites / spells, etc.&nbsp; I'm assuming I can't just replace !shaped-rest with !OGL or something?&nbsp; **Rests and Resets** [Short Rest](!shaped-rest --short) | [Long Rest](!shaped-rest --long)
1585266996
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
This isn't really the right thread for this, but the answer is to install the 5th Edition OGL by Roll20 script. It has a long rest command: !longrest @{selected|character_name} The D&amp;D 5th Edition by Roll20 has no short rest functionality, so there is no short rest command
I do actually have a (series of) Macro(s) for this exact purpose! I could gather my notes and post it here as something like "Quick &amp; Easy Character Creation" and "5e Long &amp; Short Rest Macros in Longhand". I've not yet finished my Macros Collection though, thus I lack a GitHub page to properly showcase it. I'll likely be working on this soon though.
How to delete drawings that you no longer need on the map, when you can’t. I often play Roll20 on an iPad, without a physical keyboard. The way to delete a drawing under this setting is to call the contextual menu on the drawing itself, with a two-finger tap. This is a nearly impossible task: maybe page reduction makes the drawing too small for a two-fingers tap, for instance. Sometimes the contextual menu just doesn’t appear, whatever the effort. A workaround is to select the drawing (maybe you need to zoom in a bit before) and make it transparent . It stays there, but nobody notices it anymore.
Brilliant! &nbsp;I have run into this many times myself, thank you! Lucio Bragagnolo said: How to delete drawings that you no longer need on the map, when you can’t. [...] A workaround is to select the drawing (maybe you need to zoom in a bit before) and make it transparent . It stays there, but nobody notices it anymore.
Hello all needing a helping hand in creating a macro. the scenario is a player has an auto turret with its own radar built-in that potential could lock on to an enemy, I am looking to create a macro-based on how well the enemy beats their own electronic countermeasure skill and pit the player against it to see if the NPC can elude the radars lock. An in a perfect world would also like to then have it roll the 1d20+1 and then the 3d6 points of damage if the radar lock is successful. If anyone can help me create this I'd appreciate it&nbsp;
1586017423
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
Hi Rifts GM, Please post that in its own thread, where I'm sure you will get some help. This thread is specifically for the posting of Stupid Tricks, as per the definition in the top post.&nbsp;
1586257334

Edited 1618142451
Andreas J.
Forum Champion
Sheet Author
Translator
Character &amp; Token ID lookup macro When you want to figure out a character's or token's ID, here is a streamlined macro that will show you the character's name, character's ID, and the token's ID in a way that that is clear to read. You need to select a token for this to work. Note: This macro only works if a token is connected to a character sheet, otherwise it will throw an error and show nothing. Use instead the Token ID macro below for only checking ID of tokens that are not connected to character sheets. Normal roll: &amp;{template:default} {{name=**Character &amp; Token ID**}} {{**Character Name**=@{selected|character_name} }} {{**Character ID**= @{selected|character_id} }} {{**Token Name**=@{selected|token_name} }} {{**Token ID**= @{selected|token_id} }} Only GM: /w gm &amp;{template:default} {{name=**Character &amp; Token ID**}} {{**Character Name**=@{selected|character_name} }} {{**Character ID**= @{selected|character_id} }} {{**Token Name**=@{selected|token_name} }} {{**Token ID**= @{selected|token_id} }} I have it also show both the Token Name &amp; the Character Name , useful to quickly see if they differ. If a token isn't connected to a sheet, it will simply show "selected|character_name" and "selected|character_id" instead of the values. Token ID lookup Macro that outputs only the token's ID in the chat: /w gm &amp;{template:default} {{name=**Token Name &amp; ID**}} {{**Token ID**= @{selected|token_id} }}