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 .
×
Advertisement Create a free account

[5e Community] Animate Objects Dropdown Macro?

Hi. I'm not 100% on how I would best make an animate objects macro with dropdown menus. Essentially there are 2 things to keep in mind here. Depending on the size of the objects (tiny, small, medium, large, huge) there are different attack rolls (+8, +6, +5, +6, +8), and different number of attacks (10, 10, 5 and different damage (1d4+4, 1d8+2, 2d6+1, 2d10+2, 2d12+4).  I was wondering if it was possible to make a nice macro for this. My thought is: Step 1: Ask what size object. Step 2: Ask how many objects. Step 3: Roll attack for all these objects with advantage. Step 4: Roll damage for all these objects. Step 5: Critical hit for all these objects. I've been messing around a bit with a few old macros but I can't quite get my mind around how this would best be accomplished. Is this possible? And if so would someone be willing to help?
1490301942
Silvyre
Forum Champion
Personally, I would create a Token for each object. e.g. for a tiny object, I would add 20 to bar3 (HP), 18 to bar2 (AC), and [[1d20+8]], [[1d4+1]] bludgeoning to bar1 (attack).
1490345442

Edited 1490345684
I think our DM woud prefer a macro over a bunch of tokens. I'm just not sure it's even possible though. Maybe only a macro for step 3 and 4 would be easier. I'm not sure how you would autoroll on a token with the click of a button outside of making a separate macro and placing it so all tokens would have it.
1490378855

Edited 1490378926
Silvyre
Forum Champion
In my opinion, making mass rolls for (dis)advantage is best handled by using Rollable Tables with the correct statistical distributions in place of traditional dice. If you and your GM are comfortable doing so, the first step here would be for your GM to create two Rollable Tables: Advantage Table Item Weight 1 25 2 75 3 125 4 175 5 225 6 275 7 325 8 375 9 425 10 475 11 525 12 575 13 625 14 675 15 725 16 775 17 825 18 875 19 925 20 975 Disadvantage Table Item Weight 1 975 2 925 3 875 4 825 5 775 6 725 7 675 8 625 9 575 10 525 11 475 12 425 13 375 14 325 15 275 16 225 17 175 18 125 19 75 20 25
1490380831

Edited 1490381066
Silvyre
Forum Champion
If you and your GM are comfortable with using a single damage roll for attacking groups of objects (and the above Rollable Tables have been set up), then here is a macro that you can use: &{template:default} {{?{Number of attacks|10} ?{Size|Tiny, [Tiny](-2)|Small, [Small](0)|Medium, [Medium](1)|Large, [Large](2)|Huge, [Huge](4)} objects attack @{target|token_name}... ...and [[ {?{Number of attacks|1}?{Roll|Normal,d20|Advantage,t[Advantage]|Disadvantage,t[Disadvantage]} + [[abs(?{Size} - 1) + 5]]}>@{target|AC} ]] attacks hit! }} {{Each hit deals [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage. Each 20 rolled adds [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]] damage. }}
Thanks a lot for the reply. I tested it and of course it works great. Unfortunately we don't generally tie the tokens to an NPC sheet as our DM throws a lot of things in on the fly. So for this to work it'd have to be a separate attack roll and damage roll for each attack. It's not a huge deal, just thought it would be neat if it could all work in one macro.
1490391915

Edited 1490393307
Silvyre
Forum Champion
Sure, this can be done in one macro: <a href="https://gist.github.com/Silvyre/df009250a726c51623d038b6725d3333" rel="nofollow">https://gist.github.com/Silvyre/df009250a726c51623d038b6725d3333</a> &{template:5e-shaped} {{title=Animate Objects}} {{subheader=*?{Size|Tiny, [Tiny](-2)|Small, [Small](0)|Medium, [Medium](1)|Large, [Large](2)|Huge, [Huge](4)} objects attack!* }} {{[1](#)=[[ ?{Roll|Normal, 1d20|Advantage, 2d20kh1|Disadvantage, 2d20kl1} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{[[[{?{Number of attacks|1|2|3|4|5|6|7|8|9|10}, 2}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{[[[{?{Number of attacks}, 3}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{[[[{?{Number of attacks}, 4}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{[[[{?{Number of attacks}, 5}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{[[[{?{Number of attacks}, 6}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{[[[{?{Number of attacks}, 7}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{[[[{?{Number of attacks}, 8}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{[[[{?{Number of attacks}, 9}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{[[[{?{Number of attacks}, 10}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} The first macro I posted uses a single damage/crit roll (but separate attack rolls). This second macro offers separate damage/crit rolls and uses some tricks to hide extra attacks; the result is that it's a bit slower than most macros. Unlike the first macro, this second macro does not report how many attacks are successful (and you won't want to use 3D dice when using it).
Holy shit, I can't believe you're sitting here typing all this out. You're incredible.
1490393347
Silvyre
Forum Champion
Haha, copy/paste/regex is your friend! Enjoy!
Sorry to bother you again, the macro doesn't appear to work. There doesn't seem to be any output. If I use it I just get a blank space in the chat, as if I had pressed enter with no text typed.
1490453899

Edited 1490454119
Silvyre
Forum Champion
Just to clarify, which Character Sheet are you using? Community <a href="https://app.roll20.net/sheet-previews/dnd5e.png" rel="nofollow">https://app.roll20.net/sheet-previews/dnd5e.png</a> Shaped <a href="https://app.roll20.net/sheet-previews/dnd5eshaped2.jpg" rel="nofollow">https://app.roll20.net/sheet-previews/dnd5eshaped2.jpg</a> Shaped Legacy <a href="https://app.roll20.net/sheet-previews/dnd5eshaped.jpg" rel="nofollow">https://app.roll20.net/sheet-previews/dnd5eshaped.jpg</a> (This is a sort of mix between the Community & Shaped sheets.)
Community.
1490459179
Silvyre
Forum Champion
The macro I posted earlier will work for the 5e Shaped sheet; this one will work for the Community Contributed sheet: &{template:5eDefault} {{outputall=1}} {{title=Animate Objects}} {{emote=*?{Size|Tiny, [Tiny](-2)|Small, [Small](0)|Medium, [Medium](1)|Large, [Large](2)|Huge, [Huge](4)} objects attack!* }} {{Attack #[1](#)=[[ ?{Roll|Normal, 1d20|Advantage, 2d20kh1|Disadvantage, 2d20kl1} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{Attack #[[[{?{Number of attacks|1|2|3|4|5|6|7|8|9|10}, 2}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{Attack #[[[{?{Number of attacks}, 3}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{Attack #[[[{?{Number of attacks}, 4}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{Attack #[[[{?{Number of attacks}, 5}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{Attack #[[[{?{Number of attacks}, 6}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{Attack #[[[{?{Number of attacks}, 7}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{Attack #[[[{?{Number of attacks}, 8}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{Attack #[[[{?{Number of attacks}, 9}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }} {{Attack #[[[{?{Number of attacks}, 10}kl1]]](#)=[[ ?{Roll} + [[abs(?{Size} - 1) + 5]] + {0} ]] vs. AC for [[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] + [[abs(?{Size} - 1) + 1]] ]] damage (if crit, +[[ [[1 + ceil(?{Size} / 4)]]d[[floor((?{Size} - 2 * {0, 3}=[[2 + ?{Size}]]) / 2) * 2 + 8]] ]]) }}