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

Call other attack macros from drop down.

I am trying to call other attack macros based on the selection from a dropdown, and it is not working. The Animal select drop down works, but it doesn't execute the other macros (Dire-Wolf, Giant-Hyena, etc) that I have created. Is it even possible? &{template:default} {{name= Animal Attack}} {{Attack vs AC = [[ ?{Select Animal | Dire Wolf, (!
#Dire-Wolf) | Giant Hyena, (!
#Giant-Hyena) | Rat Swarm, (!
#Rat-Swarm)}]]}}  Thanks in advance.
Macros don't like to be called from within Queries. A Chat Menu is a much better solution. See post here for more info.
That is unfortunate. Not a fan of the chat menu, but I will just whisper it to myself so everyone doesn't have to look at it all the time.
I'm not exactly sure what it is you are wanting the animal attack macros to do, but I think it can be done, but is complicated. If I'm understanding you correctly I think i did something similar for Spells in Shadowrun, where I have a drop down query menu for which spell was going to be cast and choosing the one from the drop down menu activated the spell macro including all the dice rolling.  It wasn't done using the macros in the collection tab, but done on a character sheet with the spell macros as Attributes.  It was complicated and needed a lot of html replacements in just the right place (people on this forum were a great help) but I did get it to work.  It could be that doing it on a character would work better for you. If no one comes up with a better answer for you, if you put down what you want the Dire Wolf Macro to do when you click on it from the drop down menu as an example I'll see if I can extrapolate from what I managed to make it work for you.
It is for my Conjure Animals spell. I can conjure all sorts of different animals (although it usually is the same ones, about 15 or so). Each animal has it's own attack. So I made macros for each animal's attack, and would like to simply have a drop down that picks the animal, which in turn calls the appropriate macro. But if I understand correctly,, the queries and macro calling don't work together. I don't have character sheets for the animals, simply their attacks, so I was going to do the only think I can think of, by creating a chat menu that I whisper to myself that lists all the animals. I then click the animal and it will post the attack to the chat window based on it's attack macro. Not a difficult thing, just using the chat menu is not my favorite, but it will work I guess.
This is the Dire Wolf macro (Dire-Wolf) &{template:default} {{name= Dire Wolf Bite}} {{Attack vs AC = [[ ?{Attack Type|Standard, 1d20+5|Advantage, 2d20kh1+5|Disadvantage, 2d20kl1+5} ]]}} {{damage= [[2d6+3}]]}}
1604619446

Edited 1604620159
Oosh
Sheet Author
API Scripter
As Dakota said, linking to macros from a big drop-down is definitely not advised, as you have to break all the macros to get them to work in the drop-down, and they will no longer function by themselves. But you can make a giant macro instead, with all the HTML replacement. It isn't that difficult if you're keeping it reasonably basic, and make sure you don't tangle up two queries together (i.e. keep the Advantage query outside the other one, or you will lose your mind). So you could follow this layout, paste the Wolf line a bunch of times and edit the +to hit and damage rolls: &{template:default} {{Attack vs AC = [[ ?{Attack Type| Standard, 1d20| Advantage, 2d20kh1| Disadvantage, 2d20kl1}?{Which animal attack?| Dire Wolf Bite, + 5]]}} {{name=Dire Wolf Bite}} {{damage=[[2d6+3]] piercing| Angry Wasp Sting, + 5]]}} {{name=Angry Wasp Sting}} {{damage=[[2d4+1]] piercing} }} Or you can even create a button from the drop down, if you prefer. The drawback is needing to click a button after selecting from the drop-down, but it will work with those macros you've already got. Added benefit for Conjure X spells, is you'll often be making 2 - 8 of the same attack. Creating a button like this means you can spam-click it 4 times, then spam click the Advantge pop-up 4 times to quickly roll for multiple summons. [?{Animal attack|Giant Hyena,Giant-Hyena|Rat Swarm,Rat-Swarm}](!
#?{Animal attack}) Obviously your Query options in the first one need to exactly match the Collections macro name. I'd highly recommend switching to Ability macros, by the way - being case insensitive is one of the many benefits.
1604636949

Edited 1604638548
I have altered the Community Contributed 5e DND character sheet and created Macro's for their weapons attacks. The Templates and Attribute names are different but this is what I got to work as a Token Action... I programmed/made the adjustments in  notepad++ then copy and pasted it into roll20 for sanity sake (notepad++ can keep track of things like opening and closing brackets, but I also utilized being able to create a new line and tabs for things I wanted to be sure would work ) &{template:5eDefault} {{character_name=@{selected|character_name}}} {{subheader=@{selected|character_name}}} {{weapon=1}} {{simple=1}} {{rollname=Attack}} {{title=?{Choose your weapon: |@{selected|meleeweaponname1},@{selected|meleeweaponname1}}} {{subheaderright=Melee Attack}} {{roll1= [[ 1d20cs>@{selected|meleeweaponcritrange1} + [[@{selected|meleetohit1}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]] }} {{ ?{Roll type?|Normal,noadvroll=1 }} |Advantage,rollhasadv=1}} {{roll2=[[1d20cs>@{selected|meleeweaponcritrange1} + [[@{selected|meleetohit1}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]] }} |Disadvantage,rollhasdisadv=1}} {{roll2=[[1d20cs>@{selected|meleeweaponcritrange1} + [[@{selected|meleetohit1}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]] }} } {{weapondamage=[[ @{selected|meleedmg1} + [[@{selected|meleedmgbonus1}]] + @{selected|global_melee_damage_bonus}[Global M.Dmg] + (@{selected|hunters_mark_toggle}*@{selected|hunters_mark})[H.Mark] + (@{selected|sneak_attack_toggle}*@{selected|sneak_attack})[S.Attack] + (@{selected|hex_toggle}*@{selected|hex})[Hex] + (@{selected|rage_toggle}*@{selected|rage})[Rage] + (@{selected|weapon_placeholder_1_toggle}*@{selected|weapon_placeholder_1})[P.Holder_1] + (@{selected|weapon_placeholder_2_toggle}*@{selected|weapon_placeholder_2})[P.Holder_2] + (@{selected|weapon_placeholder_3_toggle}*@{selected|weapon_placeholder_3})[P.Holder_3] ]] @{selected|meleedmgtype1} }} {{weaponcritdamage=Additional [[ @{selected|meleecritdmg1}[Normal] + @{selected|extra_total_crit}[Other] ]] damage}} |@{selected|meleeweaponname2}, @{selected|meleeweaponname2}}} {{subheaderright=Melee Attack}} {{roll1=[[ 1d20cs>@{selected|meleeweaponcritrange2} + [[@{selected|meleetohit2}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]] }} {{?{Roll type?|Normal,noadvroll=1 }} |Advantage,rollhasadv=1}} {{roll2=[[1d20cs>@{selected|meleeweaponcritrange2} + [[@{selected|meleetohit2}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]] }} |Disadvantage,rollhasdisadv=1}} {{roll2=[[1d20cs>@{selected|meleeweaponcritrange2} + [[@{selected|meleetohit2}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]] }} } {{weapondamage=[[@{selected|meleedmg2} + [[@{selected|meleedmgbonus2}]] + @{selected|global_melee_damage_bonus}[Global M.Dmg] + (@{selected|hunters_mark_toggle}*@{selected|hunters_mark})[H.Mark] + (@{selected|sneak_attack_toggle}*@{selected|sneak_attack})[S.Attack] + (@{selected|hex_toggle}*@{selected|hex})[Hex] + (@{selected|rage_toggle}*@{selected|rage})[Rage] + (@{selected|weapon_placeholder_1_toggle}*@{selected|weapon_placeholder_1})[P.Holder_1] + (@{selected|weapon_placeholder_2_toggle}*@{selected|weapon_placeholder_2})[P.Holder_2] + (@{selected|weapon_placeholder_3_toggle}*@{selected|weapon_placeholder_3})[P.Holder_3] ]] @{selected|meleedmgtype2} }} {{weaponcritdamage=Additional [[ @{selected|meleecritdmg2}[Normal] + @{selected|extra_total_crit}[Other] ]] damage}} |@{selected|meleeweaponname3},@{selected|meleeweaponname3} }} {{subheaderright=Melee Attack}} {{roll1=[[ 1d20cs>@{selected|meleeweaponcritrange3} + [[@{selected|meleetohit3}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]]}} {{?{Roll type?|Normal,noadvroll=1 }} |Advantage,rollhasadv=1}} {{roll2=[[1d20cs>@{selected|meleeweaponcritrange3} + [[@{selected|meleetohit3}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]] }} |Disadvantage,rollhasdisadv=1}} {{roll2=[[1d20cs>@{selected|meleeweaponcritrange3} + [[@{selected|meleetohit3}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]] }} } {{weapondamage=[[@{selected|meleedmg3} + [[@{selected|meleedmgbonus3}]] + @{selected|global_melee_damage_bonus}[Global M.Dmg] + (@{selected|hunters_mark_toggle}*@{selected|hunters_mark})[H.Mark] + (@{selected|sneak_attack_toggle}*@{selected|sneak_attack})[S.Attack] + (@{selected|hex_toggle}*@{selected|hex})[Hex] + (@{selected|rage_toggle}*@{selected|rage})[Rage] + (@{selected|weapon_placeholder_1_toggle}*@{selected|weapon_placeholder_1})[P.Holder_1] + (@{selected|weapon_placeholder_2_toggle}*@{selected|weapon_placeholder_2})[P.Holder_2] + (@{selected|weapon_placeholder_3_toggle}*@{selected|weapon_placeholder_3})[P.Holder_3] ]] @{selected|meleedmgtype3} }} {{weaponcritdamage=Additional [[ @{selected|meleecritdmg3}[Normal] + @{selected|extra_total_crit}[Other] ]] damage}} |@{selected|meleeweaponname4},@{selected|meleeweaponname4} }} {{subheaderright=Melee Attack}} {{roll1=[[ 1d20cs>@{selected|meleeweaponcritrange4} + [[@{selected|meleetohit4}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]] }} {{?{Roll type?|Normal,noadvroll=1 }} |Advantage,rollhasadv=1}} {{roll2=[[1d20cs>@{selected|meleeweaponcritrange4} + [[@{selected|meleetohit4}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]] }} |Disadvantage,rollhasdisadv=1}} {{roll2=[[1d20cs>@{selected|meleeweaponcritrange4} + [[@{selected|meleetohit4}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]] }} } {{weapondamage=[[@{selected|meleedmg4} + [[@{selected|meleedmgbonus4}]] + @{selected|global_melee_damage_bonus}[Global M.Dmg] + (@{selected|hunters_mark_toggle}*@{selected|hunters_mark})[H.Mark] + (@{selected|sneak_attack_toggle}*@{selected|sneak_attack})[S.Attack] + (@{selected|hex_toggle}*@{selected|hex})[Hex] + (@{selected|rage_toggle}*@{selected|rage})[Rage] + (@{selected|weapon_placeholder_1_toggle}*@{selected|weapon_placeholder_1})[P.Holder_1] + (@{selected|weapon_placeholder_2_toggle}*@{selected|weapon_placeholder_2})[P.Holder_2] + (@{selected|weapon_placeholder_3_toggle}*@{selected|weapon_placeholder_3})[P.Holder_3] ]] @{selected|meleedmgtype4} }} {{weaponcritdamage=Additional [[ @{selected|meleecritdmg4}[Normal] + @{selected|extra_total_crit}[Other] ]] damage}} |@{selected|meleeweaponname5}, @{selected|meleeweaponname5}}} {{subheaderright=Melee Attack}} {{roll1=[[ 1d20cs>@{selected|meleeweaponcritrange5} + [[@{selected|meleetohit5}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]] }} {{?{Roll type?|Normal,noadvroll=1 }} |Advantage,rollhasadv=1}} {{roll2=[[1d20cs>@{selected|meleeweaponcritrange5} + [[@{selected|meleetohit5}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]] }} |Disadvantage,rollhasdisadv=1}} {{roll2=[[1d20cs>@{selected|meleeweaponcritrange5} + [[@{selected|meleetohit5}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]] }} } {{weapondamage=[[@{selected|meleedmg5} + [[@{selected|meleedmgbonus5}]] + @{selected|global_melee_damage_bonus}[Global M.Dmg] + (@{selected|hunters_mark_toggle}*@{selected|hunters_mark})[H.Mark] + (@{selected|sneak_attack_toggle}*@{selected|sneak_attack})[S.Attack] + (@{selected|hex_toggle}*@{selected|hex})[Hex] + (@{selected|rage_toggle}*@{selected|rage})[Rage] + (@{selected|weapon_placeholder_1_toggle}*@{selected|weapon_placeholder_1})[P.Holder_1] + (@{selected|weapon_placeholder_2_toggle}*@{selected|weapon_placeholder_2})[P.Holder_2] + (@{selected|weapon_placeholder_3_toggle}*@{selected|weapon_placeholder_3})[P.Holder_3] ]] @{selected|meleedmgtype5} }} {{weaponcritdamage=Additional [[ @{selected|meleecritdmg5}[Normal] + @{selected|extra_total_crit}[Other] ]] damage }} |@{selected|meleeweaponname6}, @{selected|meleeweaponname6}}} {{subheaderright=Melee Attack}} {{roll1=[[ 1d20cs>@{selected|meleeweaponcritrange6} + [[@{selected|meleetohit6}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]] }} {{?{Roll type?|Normal,noadvroll=1 }} |Advantage,rollhasadv=1}} {{roll2=[[1d20cs>@{selected|meleeweaponcritrange6} + [[@{selected|meleetohit6}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]] }} |Disadvantage,rollhasdisadv=1}} {{roll2=[[1d20cs>@{selected|meleeweaponcritrange6} + [[@{selected|meleetohit6}]] + @{selected|global_melee_attack_bonus}[Global M.Atk] ]] }} } {{weapondamage=[[@{selected|meleedmg6} + [[@{selected|meleedmgbonus6}]] + @{selected|global_melee_damage_bonus}[Global M.Dmg] + (@{selected|hunters_mark_toggle}*@{selected|hunters_mark})[H.Mark] + (@{selected|sneak_attack_toggle}*@{selected|sneak_attack})[S.Attack] + (@{selected|hex_toggle}*@{selected|hex})[Hex] + (@{selected|rage_toggle}*@{selected|rage})[Rage] + (@{selected|weapon_placeholder_1_toggle}*@{selected|weapon_placeholder_1})[P.Holder_1] + (@{selected|weapon_placeholder_2_toggle}*@{selected|weapon_placeholder_2})[P.Holder_2] + (@{selected|weapon_placeholder_3_toggle}*@{selected|weapon_placeholder_3})[P.Holder_3] ]] @{selected|meleedmgtype6} }} {{weaponcritdamage=Additional [[ @{selected|meleecritdmg6}[Normal] + @{selected|extra_total_crit}[Other] ]] damage }} |@{selected|rangedweaponname1}, @{selected|rangedweaponname1}}} {{subheaderright=Ranged Attack}} {{roll1=[[ 1d20cs>@{selected|rangedweaponcritrange1} + [[@{selected|rangedtohit1}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} {{?{Roll type?|Normal,noadvroll=1 }} |Advantage,rollhasadv=1}} {{roll2=[[1d20cs>@{selected|rangedweaponcritrange1} + [[@{selected|rangedtohit1}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} |Disadvantage,rollhasdisadv=1}} {{roll2=[[1d20cs>@{selected|rangedweaponcritrange1} + [[@{selected|rangedtohit1}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} } {{weapondamage=[[@{selected|rangeddmg1} + [[@{selected|rangeddmgbonus1}]] + @{selected|global_ranged_damage_bonus}[Global R.Dmg] + (@{selected|hunters_mark_toggle}*@{selected|hunters_mark})[H.Mark] + (@{selected|sneak_attack_toggle}*@{selected|sneak_attack})[S.Attack] + (@{selected|hex_toggle}*@{selected|hex})[Hex] + (@{selected|rage_toggle}*@{selected|rage})[Rage] + (@{selected|weapon_placeholder_1_toggle}*@{selected|weapon_placeholder_1})[P.Holder_1] + (@{selected|weapon_placeholder_2_toggle}*@{selected|weapon_placeholder_2})[P.Holder_2] + (@{selected|weapon_placeholder_3_toggle}*@{selected|weapon_placeholder_3})[P.Holder_3] ]] @{selected|rangeddmgtype1} }} {{weaponcritdamage=Additional [[ @{selected|rangedcritdmg1}[Normal] + @{selected|extra_total_crit}[Other] ]] damage}} |@{selected|rangedweaponname2}, @{selected|rangedweaponname2}}} {{subheaderright=Ranged Attack}} {{roll1=[[ 1d20cs>@{selected|rangedweaponcritrange2} + [[@{selected|rangedtohit2}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} {{?{Roll type?|Normal,noadvroll=1 }} |Advantage,rollhasadv=1}} {{roll2=[[1d20cs>@{selected|rangedweaponcritrange2} + [[@{selected|rangedtohit2}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} |Disadvantage,rollhasdisadv=1}} {{roll2=[[1d20cs>@{selected|rangedweaponcritrange2} + [[@{selected|rangedtohit2}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} } {{weapondamage=[[@{selected|rangeddmg2} + [[@{selected|rangeddmgbonus2}]] + @{selected|global_ranged_damage_bonus}[Global R.Dmg] + (@{selected|hunters_mark_toggle}*@{selected|hunters_mark})[H.Mark] + (@{selected|sneak_attack_toggle}*@{selected|sneak_attack})[S.Attack] + (@{selected|hex_toggle}*@{selected|hex})[Hex] + (@{selected|rage_toggle}*@{selected|rage})[Rage] + (@{selected|weapon_placeholder_1_toggle}*@{selected|weapon_placeholder_1})[P.Holder_1] + (@{selected|weapon_placeholder_2_toggle}*@{selected|weapon_placeholder_2})[P.Holder_2] + (@{selected|weapon_placeholder_3_toggle}*@{selected|weapon_placeholder_3})[P.Holder_3] ]] @{selected|rangeddmgtype2} }} {{weaponcritdamage=Additional [[ @{selected|rangedcritdmg2}[Normal] + @{selected|extra_total_crit}[Other] ]] damage}} |@{selected|rangedweaponname3}, @{selected|rangedweaponname3}}} {{subheaderright=Ranged Attack}} {{roll1=[[ 1d20cs>@{selected|rangedweaponcritrange3} + [[@{selected|rangedtohit3}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} {{?{Roll type?|Normal,noadvroll=1 }} |Advantage,rollhasadv=1}} {{roll2=[[1d20cs>@{selected|rangedweaponcritrange3} + [[@{selected|rangedtohit3}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} |Disadvantage,rollhasdisadv=1}} {{roll2=[[1d20cs>@{selected|rangedweaponcritrange3} + [[@{selected|rangedtohit3}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} } {{weapondamage= [[@{selected|rangeddmg3} + [[@{selected|rangeddmgbonus3}]] + @{selected|global_ranged_damage_bonus}[Global R.Dmg] + (@{selected|hunters_mark_toggle}*@{selected|hunters_mark})[H.Mark] + (@{selected|sneak_attack_toggle}*@{selected|sneak_attack})[S.Attack] + (@{selected|hex_toggle}*@{selected|hex})[Hex] + (@{selected|rage_toggle}*@{selected|rage})[Rage] + (@{selected|weapon_placeholder_1_toggle}*@{selected|weapon_placeholder_1})[P.Holder_1] + (@{selected|weapon_placeholder_2_toggle}*@{selected|weapon_placeholder_2})[P.Holder_2] + (@{selected|weapon_placeholder_3_toggle}*@{selected|weapon_placeholder_3})[P.Holder_3] ]] @{selected|rangeddmgtype3} }} {{weaponcritdamage=Additional [[ @{selected|rangedcritdmg3}[Normal] + @{selected|extra_total_crit}[Other] ]] damage}} |@{selected|rangedweaponname4}, @{selected|rangedweaponname4}}} {{subheaderright=Ranged Attack}} {{roll1=[[ 1d20cs>@{selected|rangedweaponcritrange4} + [[@{selected|rangedtohit4}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} {{?{Roll type?|Normal,noadvroll=1 }} |Advantage,rollhasadv=1}} {{roll2=[[1d20cs>@{selected|rangedweaponcritrange4} + [[@{selected|rangedtohit4}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} |Disadvantage,rollhasdisadv=1}} {{roll2=[[1d20cs>@{selected|rangedweaponcritrange4} + [[@{selected|rangedtohit4}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} } {{weapondamage=[[@{selected|rangeddmg4} + [[@{selected|rangeddmgbonus4}]] + @{selected|global_ranged_damage_bonus}[Global R.Dmg] + (@{selected|hunters_mark_toggle}*@{selected|hunters_mark})[H.Mark] + (@{selected|sneak_attack_toggle}*@{selected|sneak_attack})[S.Attack] + (@{selected|hex_toggle}*@{selected|hex})[Hex] + (@{selected|rage_toggle}*@{selected|rage})[Rage] + (@{selected|weapon_placeholder_1_toggle}*@{selected|weapon_placeholder_1})[P.Holder_1] + (@{selected|weapon_placeholder_2_toggle}*@{selected|weapon_placeholder_2})[P.Holder_2] + (@{selected|weapon_placeholder_3_toggle}*@{selected|weapon_placeholder_3})[P.Holder_3] ]] @{selected|rangeddmgtype4} }} {{weaponcritdamage=Additional [[ @{selected|rangedcritdmg4}[Normal] + @{selected|extra_total_crit}[Other] ]] damage}} |@{selected|rangedweaponname5}, @{selected|rangedweaponname5}}} {{subheaderright=Ranged Attack}} {{roll1=[[ 1d20cs>@{selected|rangedweaponcritrange5} + [[@{selected|rangedtohit5}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} {{?{Roll type?|Normal,noadvroll=1 }} |Advantage,rollhasadv=1}} {{roll2=[[1d20cs>@{selected|rangedweaponcritrange5} + [[@{selected|rangedtohit5}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} |Disadvantage,rollhasdisadv=1}} {{roll2=[[1d20cs>@{selected|rangedweaponcritrange5} + [[@{selected|rangedtohit5}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} } {{weapondamage=[[@{selected|rangeddmg5} + [[@{selected|rangeddmgbonus5}]] + @{selected|global_ranged_damage_bonus}[Global R.Dmg] + (@{selected|hunters_mark_toggle}*@{selected|hunters_mark})[H.Mark] + (@{selected|sneak_attack_toggle}*@{selected|sneak_attack})[S.Attack] + (@{selected|hex_toggle}*@{selected|hex})]][Hex] + (@{selected|rage_toggle}*@{selected|rage})[Rage] + (@{selected|weapon_placeholder_1_toggle}*@{selected|weapon_placeholder_1})[P.Holder_1] + (@{selected|weapon_placeholder_2_toggle}*@{selected|weapon_placeholder_2})[P.Holder_2] + (@{selected|weapon_placeholder_3_toggle}*@{selected|weapon_placeholder_3})[P.Holder_3] ]] @{selected|rangeddmgtype5} }} {{weaponcritdamage=Additional [[ @{selected|rangedcritdmg5}[Normal] + @{selected|extra_total_crit}[Other] ]] damage}} |@{selected|rangedweaponname6}, @{selected|rangedweaponname6}}} {{subheaderright=Ranged Attack}} {{roll1=[[ 1d20cs>@{selected|rangedweaponcritrange6} + [[@{selected|rangedtohit6}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} {{?{Roll type?|Normal,noadvroll=1 }} |Advantage,rollhasadv=1}} {{roll2=[[1d20cs>@{selected|rangedweaponcritrange6} + [[@{selected|rangedtohit6}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} |Disadvantage,rollhasdisadv=1}} {{roll2=[[1d20cs>@{selected|rangedweaponcritrange6} + [[@{selected|rangedtohit6}]] + @{selected|global_ranged_attack_bonus}[Global R.Atk] ]] }} } {{weapondamage=[[@{selected|rangeddmg6} + [[@{selected|rangeddmgbonus6}]] + @{selected|global_ranged_damage_bonus}[Global R.Dmg] + (@{selected|hunters_mark_toggle}*@{selected|hunters_mark})[H.Mark] + (@{selected|sneak_attack_toggle}*@{selected|sneak_attack})[S.Attack] + (@{selected|hex_toggle}*@{selected|hex})[Hex] + (@{selected|rage_toggle}*@{selected|rage})[Rage] + (@{selected|weapon_placeholder_1_toggle}*@{selected|weapon_placeholder_1})[P.Holder_1] + (@{selected|weapon_placeholder_2_toggle}*@{selected|weapon_placeholder_2})[P.Holder_2] + (@{selected|weapon_placeholder_3_toggle}*@{selected|weapon_placeholder_3})[P.Holder_3] ]] @{selected|rangeddmgtype6} }} {{weaponcritdamage=Additional [[ @{selected|rangedcritdmg6}[Normal] + @{selected|extra_total_crit}[Other] ]] damage }} } I know that looks messy, but that creates a Pulldown list from a Token macro button of all 12 weapon slots available on my players character sheets and it works (not entire sure how you would handle the normal character sheet that utilizes repeatable fields, as you would have to know in advance the number of them... But maybe someone else can chime in/help with merging these two. If you have question about how to get Queries inside of Queries let me know. I usually code it the way you intuitive think about it first,  (for example the first weapon. Then copy paste working code and change variable names slightly so didn't have to re-write everything..) This Macro asks what weapon attack you want to make, and then another prompt asks whether its Normal/Advantage/Disadvantage). It also works with the Dice roller (not run it extensively, so if you have weird formulas in your Attribute fields for dice roll I make no guarantees...) Many of those Attribute names I created/custom made my Character sheets to all have in case you were wondering.  Again I know its not directly related, But this is an example of Token macro that creates a pulldown list for what weapon attack to use, then if that attack should be with Advantage/Normal/Disadvantage and then executes those fields... The Important things of note is how ending Curly Brackets, Commas  and Vertical Pipes are handled for nested Queries within a Macro. It looks ugly but I was really proud of getting this to work... :) The Underlined portion in the 2nd line is the beginning and end of the nested Query and how I handled Those HTML replacement characters. Each Row is each weapon choice and that how I handled those HTML replacement values.... Edit: Also their was a slight bug in the code above (forgot to remove some roll dice brackets.... made it work for 3D dice...) anyway format wise still the same.
1604639512
Oosh
Sheet Author
API Scripter
J.C said: (not entire sure how you would handle the normal character sheet that utilizes repeatable fields, as you would have to know in advance the number of them... But maybe someone else can chime in/help with merging these two. The short answer is: you can't. Firstly, if the repeating action is found, the action itself will almost certainly break the Query (every ability on the 5e sheet has characters which will break it, anyway). Secondly, if the action isn't found the { | } characters in the missing repeating field text will also break the Query. There are a few ways to hide missing repeating row calls (both free and API) in a Chat Menu, but there's no sane way to do it in a Query. Also, just to clarify - I was just providing some options since OP said they weren't really fond of full Chat Menus. Fair enough, some people don't like the chat bar spam. Personally I use a Chat Menu macro for my Druid, a cut-down NPC Chat Menu + Stylus on top to hide empty rows and un-pink the buttons. Never needs to be edited again, and will work for anything dragged on to the canvas provided it's linked to an NPC sheet:
This is what I managed to come up with.  It doesn't use the template as I don't use them much and I don't know my way around getting that bit to work with the rest of it, but I think it does what you are after otherwise. It is done on a character sheet, but you shouldn't need a special one, you could just add it to the Attributes and Abilities of your normal one and have the Animal Attack Ability as a token action or in the macro tool bar at the bottom. This is what it looks like The Dire-Wolf Ability isn't needed it is just where i worked out the code as the larger box makes it easier, I just then adjust it and copy/paste it into the appropriate Attribute boxes The Animal-Attack Ability is fairly simple ?{Select Animal| Dire Wolf,@{dire-wolf}| Giant Hyena, @{giant-hyena}| Rat Swarm, @{Rat-swarm}} You can then just add animals to the list as normal.  This will just bring up the drop down menu for you to choose the animal you want from and the level of attack. The Animal Attributes is where it gets tricky. This is what I had based of the wolf (Iforgot the Dire bit) ?{Attack| Standard, Standard| Advantage, Advantaged| Disadvantage, Disadvantaged} Wolf Attack vs AC = [[ ?{Attack Type|Standard, 1d20+5|Advantage, 2d20kh1+5|Disadvantage, 2d20kl1+5}]]  damage= [[2d6+3]] The first query is what puts what type of attack you are making in the chat box, there should be a way of making it so it only needs to ask for 'Attack Type' once, but when i tried it it broke the macro so it now asks the question twice and you have to make sure you put the same answer in (The first query is just labelled 'Attack' to diferenciate it from the second query).  You can leave that first query out if you want in which case it will just come up as 'Wolf Attack vs AC' not 'Standard Wolf Attack vs AC', it depends on whether you are bothered about knowing if it was Standard, Advantaged or Disadvantaged roll with out checking what the result shows. I changed names and damage dice in my workings just to make sure it was picking up what i wanted it to.  You will need to change the basic Dire Wolf macro to suit your own animals.  The macro will not work by itself, it has to be put into the Attributes for the various animals and then accessed from the Animal Attack query (or any other query that points to those Attributes) Hopefully this might give you another option to try.