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

Template Notes, New Flags, & Varitable Attacks

So I've been messing around with the new roll templates trying to redo all my macros to utilize them making for some cleaner rolls and well... I've run into a bit of a snag... First off the Notes section... I saw this section as a great opportunity to reduce the number of queries in my rolls thus speeding up my roll process. In order to do this cleanly I was wanting to post each effect on a seperate line in the notes section... thus far I have not had any luck figuring out how to do so... Next I was wondering if there is any way as a user to define a new flag... for example, my attacks have a 50% miss chance and I was wanting to create a flag on a d100 roll that would output " Miss " at the end of an attack roll if it rolled <50 on the d100 Finally, is there any way to configure the Full Attack roll to roll a number of attacks based off the characters base attack? For example, my character only gets 2 attacks from her base attack bonus, however she can get a full set of 4 attacks should she cast her divine power spell beforehand...
If you're using the default template &{template:default} You can't customize it. It special from the other templates in that it just accepts whatever arguments you feed it. (ie: If you can't make a roll do something in a regular macro already, nothing's changed) Formatting wise, what I've found myself doing with spell effects (anything that has a block of text and not just Property = Value layout) is to use multiple templates back to back. Example: &{template:default} {{name=GlitterDust}} {{DC=14}}{{Range=120 ft}} {{SomethingElse=SomeValue}} &{template:default} {{name=Effect}} {{Save vs Will or targets are blinded}} {{Targets made Visible and receive -40 stealth penalty}} With Mentor level support, you can make your own custom sheets and Roll Templates, though.
1426171452

Edited 1426171563
I figured it out... sorta... I'm using the template attached to the D&D 3.5 charactersheet which has a few predefined templates included with it. using additional "attacks" in the template to create new lines for my attack notes... actually resulted in a better appearance as I could designate a new damage to each line that applied an additional damage effect. Still would like to find a better solution for the miss chance on each attack... but for right now I have {{subtags2=[[4d100<50]] attacks miss }} providing minimal information regarding missed attacks... would much rather just have " Miss " appended to the end of (or flat out replacing) any individual attack that misses though... As for the variatable attacks... I havn't got a clue on this one...
1426172568
Diana P
Pro
Sheet Author
In the 3.5 templates, you are not limited to one roll per attack (or other tag). you could do {{attack1= A1: [[d20+misc to attack stuff]] ([[d100<50]] miss) }} ..... {{attack2=A2: [[d20+other attack stuff]] ([[d100<50]] miss) }} .... you just need to have the first roll be the attack roll if you want the crit and fumble stuff to work correctly.
1426172726
Diana P
Pro
Sheet Author
Oh, and I think the only way to vary the number of attacks would be to include them all in the template but have some logic to zero out the attack rolls if you aren't using the power, probably something like : [[?{Divine power?|0}*(d20+attackroll)]]
Diana P. said: In the 3.5 templates, you are not limited to one roll per attack (or other tag). you could do {{attack1= A1: [[d20+misc to attack stuff]] ([[d100<50]] miss) }} ..... {{attack2=A2: [[d20+other attack stuff]] ([[d100<50]] miss) }} .... you just need to have the first roll be the attack roll if you want the crit and fumble stuff to work correctly. that would output the roll for the miss on every attack whether it was a miss or not... what I'm looking to do is have the result of a miss only displayed if the roll was a miss... and if possible hide the rest of that attack line on missed attacks... Basically something that would output in one of the following ways Hitting AC [XX] for [XX] dmg Hitting AC [XX] for [XX] dmg *MISS* Hitting AC [XX] for [XX] dmg or Hitting AC [XX] for [XX] dmg Attack Missed Hitting AC [XX] for [XX] dmg
1426178615

Edited 1426178679
Toby
Pro
I despise roll queries as a part of things that are rolled frequently as well, and this update does seem to reduce the need for them thank god at least from what I've seen. At least so far, anyways. You can do conditional logic with the roll templates? I didnt think that was possible.
1426179901
Diana P
Pro
Sheet Author
The 3.5 templates are not set up to allow that kind of logic. You would have to create a custom template which currently requires mentor. You can do some conditional logic. Basically you have to set up the roll and the template to trigger off one of the following: {{#rollWasCrit() &lt;rollname&gt;}} {{#rollWasFumble() &lt;rollname&gt;}} {{#rollTotal() &lt;rollname&gt;}} The first two of those use the new critical success and critical failure flags for rolls : [[d20cf&lt;2cs&gt;15]] You can also use {{#property}} and {{^property}} to display or not display something if the property (or flag) exists. That is what the 3.5 roll template uses to switch between the various color/divisor options. More on the wiki at: <a href="https://wiki.roll20.net/Roll_Templates" rel="nofollow">https://wiki.roll20.net/Roll_Templates</a>
From <a href="https://wiki.roll20.net/Roll_Templates#Creating_a_" rel="nofollow">https://wiki.roll20.net/Roll_Templates#Creating_a_</a>... Helper Function Shows Section If {{#rollWasCrit() &lt;rollname&gt;}} If the provided roll contains any crits, the section will be shown. For example, {{#rollWasCrit() attack}} would check the "attack" property for an inline roll that has at least one critical roll. {{#rollWasFumble() &lt;rollname&gt;}} Same as #rollWasCrit(), but checks for any fumbles (rolls of 1). {{#rollTotal() &lt;rollname&gt;}} Checks the total of an inline roll for the value. If they match, the section is shown. For example, {{#rollTotal() attack 10}} would check the "attack" property for an inline roll that totaled 10. Either I'm using it wrong, myself, or the 3.5 sheet doesn't have the {{#rollTotal () &lt;rollname&gt;}} function defined. &{template:DnD35Attack} {{pcflag=true}} {{name=Bob}} {{subtags=attacks with her weapons }} {{attack1=hitting AC[[1d20+2]]}} {{#rollTotal() attack1 10}} {{damage1=for [[1d8]] dmg}} {{/rollTotal() attack1 10}} always shows the damage roll even when "attack1" doesn't result in a "10"
1426180812
Diana P
Pro
Sheet Author
Mark, Those functions have to be defined in the html code which makes the roll template. the 3.5 sheet has the rolltotal only defined in conjunction with the StdRoll as part of the compcheck property (which only checks for 1 or 0). If it helps, the 3.5 attack template code is: &lt;rolltemplate class="sheet-rolltemplate-DnD35Attack"&gt; &lt;table&gt; {{#pcflag}}&lt;tr&gt;&lt;th class="header-attack"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/pcflag}} {{#npcflag}}&lt;tr&gt;&lt;th class="header-attack"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/npcflag}} {{#spellflag}}&lt;tr&gt;&lt;th class="header-spell"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/spellflag}} {{#abilityflag}} &lt;tr&gt;&lt;th class="header-ability"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/abilityflag}} {{#saveflag}} &lt;tr&gt;&lt;th class="header-save"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/saveflag}} {{#skillflag}} &lt;tr&gt;&lt;th class="header-skill"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/skillflag}} {{#skillcatflag}} &lt;tr&gt;&lt;th class="header-skillcat"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/skillcatflag}} {{#initflag}} &lt;tr&gt;&lt;th class="header-initiative"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/initflag}} {{#basicflag}} &lt;tr&gt;&lt;th class="header-basic"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/basicflag}} {{^initflag}} {{^skillcatflag}} {{^skillflag}} {{^saveflag}} {{^abilityflag}} {{^spellflag}} {{^pcflag}} {{^npcflag}} {{^basicflag}} &lt;tr&gt;&lt;th&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/basicflag}} {{/npcflag}} {{/pcflag}} {{/spellflag}}{{/abilityflag}} {{/saveflag}} {{/skillflag}} {{/skillcatflag}} {{/initflag}} {{#subtags}}&lt;tr&gt;&lt;td class="subheader"&gt;{{subtags}}&lt;/td&gt;&lt;/tr&gt;{{/subtags}} {{#subtags2}}&lt;tr&gt;&lt;td class="subheader"&gt;{{subtags2}}&lt;/td&gt;&lt;/tr&gt;{{/subtags2}} {{#npcflag}} &lt;tr class="arrow-container"&gt;&lt;td&gt;&lt;div class="arrow-left"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; {{/npcflag}} {{#pcflag}} &lt;tr class="arrow-container"&gt;&lt;td&gt;&lt;div class="arrow-right"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; {{/pcflag}} {{#spellflag}}&lt;tr class="arrow-container"&gt;&lt;td&gt;&lt;div class="arrow-spell"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; {{/spellflag}} {{#abilityflag}} &lt;tr class="arrow-container"&gt;&lt;td&gt;&lt;div class="arrow-ability"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; {{/abilityflag}} {{#saveflag}} &lt;tr class="arrow-container"&gt;&lt;td&gt;&lt;div class="arrow-save"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; {{/saveflag}} {{#skillflag}} &lt;tr class="arrow-container"&gt;&lt;td&gt;&lt;div class="arrow-skill"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; {{/skillflag}} {{#skillcatflag}} &lt;tr class="arrow-container"&gt;&lt;td&gt;&lt;div class="arrow-skillcat"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; {{/skillcatflag}} {{#initflag}} &lt;tr class="arrow-container"&gt;&lt;td&gt;&lt;div class="arrow-initiative"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; {{/initflag}} &lt;tr class="sheet-tr-repeating"&gt; &lt;td&gt;{{attack1}} {{#rollWasCrit() attack1}} {{critconfirm1}} {{/rollWasCrit() attack1}} {{#rollWasFumble() attack1}} {{fumbleroll}} {{/rollWasFumble() attack1}} {{#damage1}} {{^rollWasFumble() attack1}}&lt;span class="dcolor"&gt; {{damage1}} {{#rollWasCrit() attack1}} {{critdmg1}} {{/rollWasCrit() attack1}} &lt;/span&gt; {{/rollWasFumble() attack1}} {{/damage1}} &lt;/td&gt; &lt;/tr&gt; {{#rollWasCrit() fullattackflag}} {{#attack2}} &lt;tr class="sheet-tr-repeating"&gt; &lt;td&gt;{{attack2}} {{#rollWasCrit() attack2}} {{critconfirm2}} {{/rollWasCrit() attack2}} {{#rollWasFumble() attack2}} {{fumbleroll}} {{/rollWasFumble() attack2}} {{#damage2}} {{^rollWasFumble() attack2}}&lt;span class="dcolor"&gt; {{damage2}} {{#rollWasCrit() attack2}} {{critdmg2}} {{/rollWasCrit() attack2}} &lt;/span&gt; {{/rollWasFumble() attack2}} {{/damage2}} &lt;/td&gt; &lt;/tr&gt; {{/attack2}} {{#attack3}} &lt;tr class="sheet-tr-repeating"&gt; &lt;td&gt;{{attack3}} {{#rollWasCrit() attack3}} {{critconfirm3}} {{/rollWasCrit() attack3}} {{#rollWasFumble() attack3}} {{fumbleroll}} {{/rollWasFumble() attack3}} {{#damage3}} {{^rollWasFumble() attack3}}&lt;span class="dcolor"&gt; {{damage3}} {{#rollWasCrit() attack3}} {{critdmg3}} {{/rollWasCrit() attack3}} &lt;/span&gt; {{/rollWasFumble() attack3}} {{/damage3}} &lt;/td&gt; &lt;/tr&gt; {{/attack3}} {{#attack4}} &lt;tr class="sheet-tr-repeating"&gt;&lt;td&gt;{{attack4}} {{#rollWasCrit() attack4}} {{critconfirm4}} {{/rollWasCrit() attack4}} {{#rollWasFumble() attack4}} {{fumbleroll}} {{/rollWasFumble() attack4}} {{#damage4}} {{^rollWasFumble() attack4}}&lt;span class="dcolor"&gt; {{damage4}} {{#rollWasCrit() attack4}} {{critdmg4}} {{/rollWasCrit() attack4}}&lt;/span&gt; {{/rollWasFumble() attack4}} {{/damage4}} &lt;/td&gt; &lt;/tr&gt; {{/attack4}} {{#attack5}} &lt;tr class="sheet-tr-repeating"&gt; &lt;td&gt;{{attack5}} {{#rollWasCrit() attack5}} {{critconfirm5}} {{/rollWasCrit() attack5}} {{#rollWasFumble() attack5}} {{fumbleroll}} {{/rollWasFumble() attack5}} {{#damage5}} {{^rollWasFumble() attack5}}&lt;span class="dcolor"&gt; {{damage5}} {{#rollWasCrit() attack5}} {{critdmg5}} {{/rollWasCrit() attack5}}&lt;/span&gt; {{/rollWasFumble() attack5}} {{/damage5}} &lt;/td&gt; &lt;/tr&gt; {{/attack5}} {{#attack6}} &lt;tr class="sheet-tr-repeating"&gt; &lt;td&gt;{{attack6}} {{#rollWasCrit() attack6}} {{critconfirm6}} {{/rollWasCrit() attack6}} {{#rollWasFumble() attack6}} {{fumbleroll}} {{/rollWasFumble() attack6}} {{#damage6}} {{^rollWasFumble() attack6}}&lt;span class="dcolor"&gt; {{damage6}} {{#rollWasCrit() attack6}} {{critdmg6}} {{/rollWasCrit() attack6}}&lt;/span&gt; {{/rollWasFumble() attack6}} {{/damage6}} &lt;/td&gt; &lt;/tr&gt; {{/attack6}} {{#attack7}} &lt;tr class="sheet-tr-repeating"&gt; &lt;td&gt;{{attack7}} {{#rollWasCrit() attack7}} {{critconfirm7}} {{/rollWasCrit() attack7}} {{#rollWasFumble() attack7}} {{fumbleroll}} {{/rollWasFumble() attack7}} {{#damage7}} {{^rollWasFumble() attack7}}&lt;span class="dcolor"&gt; {{damage7}} {{#rollWasCrit() attack7}} {{critdmg7}} {{/rollWasCrit() attack7}}&lt;/span&gt; {{/rollWasFumble() attack7}} {{/damage7}} &lt;/td&gt; &lt;/tr&gt; {{/attack7}} {{#attack8}} &lt;tr class="sheet-tr-repeating"&gt; &lt;td&gt;{{attack8}} {{#rollWasCrit() attack8}} {{critconfirm8}} {{/rollWasCrit() attack8}} {{#rollWasFumble() attack8}} {{fumbleroll}} {{/rollWasFumble() attack8}} {{#damage8}} {{^rollWasFumble() attack8}}&lt;span class="dcolor"&gt; {{damage8}} {{#rollWasCrit() attack8}} {{critdmg8}} {{/rollWasCrit() attack8}} &lt;/span&gt; {{/rollWasFumble() attack8}} {{/damage8}} &lt;/td&gt; &lt;/tr&gt; {{/attack8}} {{#attack9}} &lt;tr class="sheet-tr-repeating"&gt; &lt;td&gt;{{attack9}} {{#rollWasCrit() attack9}} {{critconfirm9}} {{/rollWasCrit() attack9}} {{#rollWasFumble() attack9}} {{fumbleroll}} {{/rollWasFumble() attack9}} {{#damage9}} {{^rollWasFumble() attack9}}&lt;span class="dcolor"&gt; {{damage9}} {{#rollWasCrit() attack9}} {{critdmg9}} {{/rollWasCrit() attack9}} &lt;/span&gt; {{/rollWasFumble() attack9}} {{/damage9}} &lt;/td&gt; &lt;/tr&gt; {{/attack9}} {{#attack10}} &lt;tr class="sheet-tr-repeating"&gt; &lt;td&gt;{{attack10}} {{#rollWasCrit() attack10}} {{critconfirm10}} {{/rollWasCrit() attack10}} {{#rollWasFumble() attack10}} {{fumbleroll}} {{/rollWasFumble() attack10}} {{#damage10}} {{^rollWasFumble() attack10}}&lt;span class="dcolor"&gt; {{damage10}} {{#rollWasCrit() attack10}} {{critdmg10}} {{/rollWasCrit() attack10}} &lt;/span&gt; {{/rollWasFumble() attack10}} {{/damage10}} &lt;/td&gt; &lt;/tr&gt; {{/attack10}} {{/rollWasCrit() fullattackflag}} {{#notes}}&lt;tr class="sheet-tr-repeating"&gt;&lt;td&gt;&lt;span class="tcat"&gt;{{notes}}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;{{/notes}} &lt;/table&gt; &lt;/rolltemplate&gt; And the 3.5 standard roll is &lt;rolltemplate class="sheet-rolltemplate-DnD35StdRoll"&gt; &lt;table&gt; {{#pcflag}}&lt;tr&gt;&lt;th class="header-attack" colspan="2"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/pcflag}} {{#npcflag}}&lt;tr&gt;&lt;th class="header-attack" colspan="2"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/npcflag}} {{#spellflag}}&lt;tr&gt;&lt;th class="header-spell" colspan="2"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/spellflag}} {{#abilityflag}} &lt;tr&gt;&lt;th class="header-ability" colspan="2"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/abilityflag}} {{#saveflag}} &lt;tr&gt;&lt;th class="header-save" colspan="2"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/saveflag}} {{#skillflag}} &lt;tr&gt;&lt;th class="header-skill" colspan="2"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/skillflag}} {{#skillcatflag}} &lt;tr&gt;&lt;th class="header-skillcat" colspan="2"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/skillcatflag}} {{#initflag}} &lt;tr&gt;&lt;th class="header-initiative" colspan="2"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/initflag}} {{#basicflag}} &lt;tr&gt;&lt;th class="header-basic" colspan="2"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/basicflag}} {{^initflag}} {{^skillcatflag}} {{^skillflag}} {{^saveflag}} {{^abilityflag}} {{^spellflag}} {{^pcflag}} {{^npcflag}} {{^basicflag}} &lt;tr&gt;&lt;th class="header-basic" colspan="2"&gt;{{name}}&lt;/th&gt;&lt;/tr&gt; {{/basicflag}} {{/npcflag}} {{/pcflag}} {{/spellflag}}{{/abilityflag}} {{/saveflag}} {{/skillflag}} {{/skillcatflag}} {{/initflag}} {{#subtags}}&lt;tr&gt;&lt;td class="subheader" colspan="2"&gt;{{subtags}}&lt;/td&gt;&lt;/tr&gt;{{/subtags}} {{#subtags2}}&lt;tr&gt;&lt;td class="subheader" colspan="2"&gt;{{subtags2}}&lt;/td&gt;&lt;/tr&gt;{{/subtags2}} {{#npcflag}} &lt;tr class="arrow-container"&gt;&lt;td colspan="2"&gt;&lt;div class="arrow-left"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; {{/npcflag}} {{#pcflag}} &lt;tr class="arrow-container"&gt;&lt;td colspan="2"&gt;&lt;div class="arrow-right"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; {{/pcflag}} {{#spellflag}}&lt;tr class="arrow-container"&gt;&lt;td colspan="2"&gt;&lt;div class="arrow-spell"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; {{/spellflag}} {{#abilityflag}} &lt;tr class="arrow-container"&gt;&lt;td colspan="2"&gt;&lt;div class="arrow-ability"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; {{/abilityflag}} {{#saveflag}} &lt;tr class="arrow-container"&gt;&lt;td colspan="2"&gt;&lt;div class="arrow-save"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; {{/saveflag}} {{#skillflag}} &lt;tr class="arrow-container"&gt;&lt;td colspan="2"&gt;&lt;div class="arrow-skill"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; {{/skillflag}} {{#skillcatflag}} &lt;tr class="arrow-container"&gt;&lt;td colspan="2"&gt;&lt;div class="arrow-skillcat"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; {{/skillcatflag}} {{#initflag}} &lt;tr class="arrow-container"&gt;&lt;td colspan="2"&gt;&lt;div class="arrow-initiative"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; {{/initflag}} {{#allprops() notes subtags subtags2 compcheck failcheck succeedcheck check checkroll critroll fumbleroll initflag skillcatflag skillflag saveflag abilityflag spellflag pcflag npcflag basicflag name}} &lt;tr class="sheet-tr-repeating"&gt;&lt;td&gt;{{key}} &lt;/td&gt;&lt;td&gt;{{value}} &lt;/td&gt;&lt;/tr&gt; {{/allprops() notes subtags subtags2 compcheck failcheck succeedcheck check checkroll critroll fumbleroll initflag skillcatflag skillflag saveflag abilityflag spellflag pcflag npcflag basicflag name}} {{#compcheck}} &lt;tr class="sheet-tr-repeating"&gt;&lt;td colspan="2"&gt;{{compcheck}} {{#rollTotal() compcheck 1}} {{succeedcheck}} {{/rollTotal() compcheck 1}} {{#rollTotal() compcheck 0}} {{failcheck}} {{/rollTotal() compcheck 0}}&lt;/td&gt;&lt;/tr&gt; {{/compcheck}} {{#checkroll}} &lt;tr class="sheet-tr-repeating"&gt;&lt;td colspan="2"&gt;{{check}} {{checkroll}} &lt;/td&gt;&lt;/tr&gt; &lt;tr class="sheet-tr-repeating"&gt;&lt;td colspan="2"&gt; {{#rollWasCrit() checkroll}} {{critroll}} {{/rollWasCrit() checkroll}} {{#rollWasFumble() checkroll}} {{fumbleroll}} {{/rollWasFumble() checkroll}} &lt;/td&gt;&lt;/tr&gt;{{/checkroll}} {{#notes}}&lt;tr&gt;&lt;td colspan="2"&gt;&lt;span class="tcat"&gt;{{notes}}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;{{/notes}} &lt;/table&gt; &lt;/rolltemplate&gt;