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

Problem with Macro order of operations (Multiattack and Targeting Pogs)

Hi! Right now, me and my DM are attempting to create a macro that allows us to combine Multiattacking and Targeting, so that we can target multiple creatures to get AC/Reflex/Fort/Will/Etc values. Here's what we have right now, based on the 4e power Winged Horde: &{template:dnd4epower} {{atwill=1 }} {{name=@{power-1-name} }} {{type=At-Will }} {{keywords=Arcane, Illusion, Implement, Psychic }} {{action=Standard }} {{multiattacktoggle=[[?{Number of Attacks|2}]]}} {{range=Area burst 1 within 10 }} {{target=Each enemy in burst }} {{multiattack1=[[1d20+@{power-1-attack}]] vs. [[@{target|Target1|Will}]] }} {{multiattack2=[[1d20+@{power-1-attack}]] vs. [[@{target|Target2|Will}]] }} {{multiattack3=[[1d20+@{power-1-attack}]] vs. [[@{target|Target3|Will}]] }} {{multiattack4=[[1d20+@{power-1-attack}]] vs. [[@{target|Target4|Will}]] }} {{multiattack5=[[1d20+@{power-1-attack}]] vs. [[@{target|Target5|Will}]] }} {{multiattack6=[[1d20+@{power-1-attack}]] vs. [[@{target|Target6|Will}]] }} {{multiattack7=[[1d20+@{power-1-attack}]] vs. [[@{target|Target7|Will}]] }} {{multiattack8=[[1d20+@{power-1-attack}]] vs. [[@{target|Target8|Will}]] }} {{multiattack9=[[1d20+@{power-1-attack}]] vs.[[@{target|Target9|Will}]] }} {{damage=[[1d6+@{weapon-1-enh}]] psychic damage. }} {{critical=[[6+@{weapon-1-enh}d@{weapon-1-per-plus}]] psychic damage. }} {{hiteffect=The target cannot take opportunity actions until the end of your next turn. }} The problem: The order of operations has targeting comes BEFORE the multiattack. So, how this works right now is: You select 9 targets. You are asked how many people you would like to target. The appropriate number of attacks are rolled. (So, in practice, if I were attacking 4 targets, I would click 4 targets, then click one pog 5 additional times, then say I want 4 targets, and it would then roll 4 attacks.) What we want: You are asked how many targets you want. You click that many targets. It rolls that many attacks. (I'm attacking 3 targets. I click 3 targets. It rolls 3 attacks.) The macro is, at this time, functional, but it's a bit annoying. If someone could help us out, we'd appreciate it.
Update: I can't confirm this, but I'm beginning to believe that the Multiattack function doesn't actually choose what to ROLL, but rather what to PRINT. So, in my above example, what's ACTUALLY happening may be: Click 9 targets. All attacks are rolled. Multiattack asks how many attacks you wanted. (Let's say we wanted 3) Multiattack PRINTS the first 3 attacks, then discards the rest. However, I needed to find evidence for this, and I'm trying to check for something happening with no print out. So, how to check to see if something is HAPPENING and then just not being reported? How I tested this: I altered the above macro slightly. I altered the multiattack 9 to read: {{multiattack9=[[2000000000d200000000r<999999999999999999999]] vs.[[@{target|Target9|Will}]] }} I was then prompted, as usual, to target 9 pogs. I put down that I wanted 2 attacks. If Multiattack ROLLS only what I ask it to, then things should go fine. Nothing happened. Figuring that it was trying to roll that ridiculous function, I repeated those steps, oh, four or five times. Quickly enough, the page started CHUGGING, and I started getting popups about scripts taking a long time to run, even though roll20 had no real reason to perform multiattack 9. So, I'm not sure what we want done is POSSIBLE through multiattacking, as multiattacking isn't an if/then kind of statement, but rather a "print these many results" statement.
1449954187
The Aaron
Roll20 Production Team
API Scripter
You are correct in your assumptions. All rolls are performed before the template is evaluated. You can look at the order of operations for some information on what happens when:&nbsp; <a href="https://wiki.roll20.net/Dice_Reference#Order_of_Op" rel="nofollow">https://wiki.roll20.net/Dice_Reference#Order_of_Op</a>... It's easier to see what's happening from the API if your GM has that access. There isn't currently a way to avoid the 9 targets issue. You could have 9 versions of the macro which have the right number of targets, or use the API or a clever macro for a two-click process that would give the right number of prompts, but it would be deminishing returns.&nbsp;
What would a clever macro be? Right now, we don't have API.
1449961524

Edited 1449961920
Provided that each token has a unique name, you might use something like this (target up to 6 Tokens, clicking one multiple times to discard excessive targeting): &{template:dnd4epower} {{atwill=1 }} {{name=@{power-1-name} }} {{type=At-Will }} {{keywords=Arcane, Illusion, Implement, Psychic }} {{action=Standard }} {{range=Area burst 1 within 10 }} {{target=Each enemy in burst }} {{@{target|1st Target|token_name}=[[d20 + ?{Modifers, @{target|1st Target|token_name}|0}]] vs. [[@{target|1st Target|Will}]]}} {{@{target|2nd Target|token_name}=[[d20 + ?{Modifers, @{target|2nd Target|token_name}|0}]] vs. [[@{target|2nd Target|Will}]]}} {{@{target|3rd Target|token_name}=[[d20 + ?{Modifers, @{target|3rd Target|token_name}|0}]] vs. [[@{target|3rd Target|Will}]]}} {{@{target|4th Target|token_name}=[[d20 + ?{Modifers, @{target|4th Target|token_name}|0}]] vs. [[@{target|4th Target|Will}]]}} {{@{target|5th Target|token_name}=[[d20 + ?{Modifers, @{target|5th Target|token_name}|0}]] vs. [[@{target|5th Target|Will}]]}} {{@{target|6th Target|token_name}=[[d20 + ?{Modifers, @{target|6th Target|token_name}|0}]] vs. [[@{target|6th Target|Will}]]}} {{damage=[[1d6+@{weapon-1-enh}]] psychic damage. }} {{critical=[[6+@{weapon-1-enh}d@{weapon-1-per-plus}]] psychic damage. }} {{hiteffect=The target cannot take opportunity actions until the end of your next turn. }} You could replace ?{Modifers, @{target|1st Target|token_name}|0} with @{target|1st Target|power-1-attack} or ?{Modifers, @{target|1st Target|token_name}|@{target|1st Target|power-1-attack}} etc.
Well, that would still result in multiple clicks, but it'd make it so you didn't have to choose how many clicks, either, so that's a bit of an improvement. I'll work on it a bit, though I'd like to hear Aaron's clever macro.
1450041999

Edited 1450042110
The Aaron said: clever macro for a two-click process that would give the right number of prompts, but it would be deminishing returns.&nbsp; I'm inferring that this refers to the Advanced Usage of Roll Queries and API Command Buttons to "generate" the correct number of targeted Attributes. e.g. [Generate](!&amp;#13;&amp;amp;#13;&amp;&amp;#123;template:dnd4epower&amp;#125; {{atwill=1 }} {{name=@{power-1-name} }} {{type=At-Will }} {{keywords=Arcane, Illusion, Implement, Psychic }} {{action=Standard }} {{range=Area burst 1 within 10 }} {{target=Each enemy in burst }} ?{Number of Attacks| 1, {{multiattack1=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target1&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; | 2, {{multiattack1=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target1&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack2=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target2&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; | 3, {{multiattack1=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target1&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack2=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target2&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack3=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target3&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; | 4, {{multiattack1=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target1&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack2=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target2&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack3=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target3&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack4=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target4&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; | 5, {{multiattack1=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target1&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack2=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target2&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack3=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target3&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack4=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target4&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack5=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target5&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; | 6, {{multiattack1=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target1&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack2=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target2&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack3=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target3&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack4=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target4&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack5=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target5&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack6=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target6&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; | 7, {{multiattack1=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target1&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack2=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target2&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack3=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target3&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack4=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target4&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack5=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target5&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack6=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target6&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack7=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target7&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; | 8, {{multiattack1=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target1&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack2=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target2&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack3=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target3&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack4=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target4&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack5=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target5&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack6=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target6&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack7=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target7&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack8=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target8&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; | 9, {{multiattack1=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target1&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack2=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target2&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack3=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target3&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack4=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target4&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack5=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target5&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack6=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target6&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack7=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target7&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack8=[[1d20+@{power-1-attack}]&amp;amp;#93; vs. [[&amp;amp;#64;{target&amp;amp;#124;Target8&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; {{multiattack9=[[1d20+@{power-1-attack}]&amp;amp;#93; vs.[[&amp;amp;#64;{target&amp;amp;#124;Target9&amp;amp;#124;Will&amp;amp;#125;]&amp;amp;#93; &amp;amp;#125;&amp;amp;#125; } {{damage=[[1d6+@{weapon-1-enh}]&amp;#93; psychic damage. }} {{critical=[[6+@{weapon-1-enh}d@{weapon-1-per-plus}]&amp;#93; psychic damage. }} {{hiteffect=The target cannot take opportunity actions until the end of your next turn. }})
Unfortunately, I'm helping with macro development for several campaigns, so I can't count on API scripting being available. Thanks, though
1450113132

Edited 1450113252
Using API Command Buttons in this manner does not require access to the API.