How automated do you want this to be? To factor in terrain automatically, you'd definitely need a script & some setup. A really simple version (assuming you're using the Roll20 sheet) using the sheet's advantage setting is this: &{template:npcaction} {{rname=Fisticuffs}} {{rnamec=Fisticuffs}} {{name=@{selected|character_name}}} {{r1=[[@{selected|d20} + @{selected|strength_mod}[STR] @{selected|pb}[PROF]]]}} @{selected|rtype} + @{selected|strength_mod}[STR] @{selected|pb}[PROF]]]}} {{type=Attack}} {{typec=Attack}} {{attack=1}} We can't do a hit-or-miss comparison here, as it requires grouping the roll and the sheet's rtype Attribute doesn't have the leading { brace required. But if you're happy to hard-code the Advantage Query: &{template:npcaction} {{rname=Fisticuffs}} {{rnamec=Fisticuffs}} {{name=@{selected|character_name}}} {{r1=[[{[[@{selected|d20} + @{selected|strength_mod}[STR] @{selected|pb}[PROF]]],0}>@{target|t1|npc_ac}]] ($[[0]])}} ?{Advantage?| Normal,{{normal=11&#125&#125 {{r2=[[{0d20| Advantage,{{advantage=11&#125&#125 {{r2=[[{[[@{selected|d20}+ @{selected|strength_mod}[STR] @{selected|pb}[PROF]]],0}>@{target|t1|npc_ac}]]| Disadvantage, {{disadvantage=11&#125&#125 {{r2=[[{[[@{selected|d20}+ @{selected|strength_mod}[STR] @{selected|pb}[PROF]]],0}>@{target|t1|npc_ac}]]} ($[[2]])}} {{type=Attack}} {{typec=Attack}} {{attack=1}} It's a bit messy showing a 0 or 1 for a hit or miss, then the actual roll in brackets. You can remove the $[[0]] parts to make it a bit cleaner, but you'll lose the tooltip info on the actual roll. This might be better: &{template:npcaction} {{rname=Fisticuffs}} {{rnamec=Fisticuffs}} {{name=@{selected|character_name}}} {{r1=[[{[[@{selected|d20} + @{selected|strength_mod}[STR] @{selected|pb}[PROF]]],0}>@{target|t1|npc_ac}]]}} ?{Advantage?| Normal,{{normal=11&#125&#125 {{r2=[[{0d20| Advantage,{{advantage=11&#125&#125 {{r2=[[{[[@{selected|d20}+ @{selected|strength_mod}[STR] @{selected|pb}[PROF]]],0}>@{target|t1|npc_ac}]]| Disadvantage, {{disadvantage=11&#125&#125 {{r2=[[{[[@{selected|d20}+ @{selected|strength_mod}[STR] @{selected|pb}[PROF]]],0}>@{target|t1|npc_ac}]]}}} {{type=Attack}} {{typec=Attack}} {{attack=1}} {{description=Rolls were $[[0]] & $[[2]]}} Finally, if you wanted some conditional text to go with it, you could use the charactermancer template: &{template:mancerroll} {{title=Punch Things}} {{c1=[[[[10*{[[?{Advantage?|Normal,1d20|Advantage,2d20kh1|Disadvantage,2d20kl1}+@{selected|strength_mod}[STR] + @{selected|pb}[PROF]]],0}>@{target|t1|npc_ac}]]+1d2]]}} {{r1=$[[0]]}} {{option1=@{selected|character_name} swings and misses!}} {{option2=@{selected|character_name} needs to lay off the sauce...}} {{option11=Hey @{target|t1|token_name}... your ears are ringing, are you going to answer them?}} {{option12=@{selected|character_name} connects, sending @{target|t1|token_name} reeling.}} The {{option}} property displays rely on a single roll {{c1}}, so you can't display the two separate rolls for advantage/disadvantage easily. You could nest another {[[1d20 + str + prf]],[[1d20 + str + prof]]} if you really wanted to dig both rolls out, but it's another layer of nesting inside the Advantage Query. And you can change that +1d2 on the end to a +1d10 if you want to make full use of the 20 {{option}} properties the template has. Oh... and if it's PvP, you might need to change the {npc_ac} reference to {ac}. Or maybe {@{npc_ac},@{ac}}k1 to make it universal. Note that this may not be 100% accurate, there might be NPCs with a lower flat npc_ac value than the sheetworker-derived ac. edit - I find {selected} + {target} macros frustrating, as they un-select your token. I'd probably hard-code a version for each player with their character name. DM version is different, since you need to roll for multiple tokens and always need to watch what you have selected, but players don't need that extra level of annoyance edit 2 - may as well chuck the damage roll link in there. Inserting: [Roll Damage](~macros|damageMacro) into {{option11}} and {{option12}} will display the damage roll link only when the attack connects. That would require a macro character sheet with the damageMacro Ability macro on it.