timmaugh said: I hesitate to say that it's impossible without the API... because, honestly, that's like saying "RainbowEncoder" or "Oosh" in the mirror three times. Then they materialize with a mighty, "Foolish mortals!"... and an elegant solution. =D *hurls macros from the mirror universe* &{template:default} {{name=@{selected|name} shoots:}} {{Shoot}} {{Defense}} [[@{target|armortotal}]] {{Target[1](" hidden)=**Missed!**}} {{Target[0](" hidden)}} {{Target[[[{[[ [[ [[d20cf0+@{selected|Shoot}]]-@{target|armortotal}]]+@{target|armortotal}]],0}>[[d20cs21cf0+@{target|Fight}]] ]]](" hidden)=**Hit** for $[[3]] damage!}} {{Target[0](" hidden)=**Armor** $[[0]]}} {{Shoot=$[[1]]}} {{Defense=$[[2]]}} I wouldn't necessarily call it elegant, but it looks like this:- Notice that it can show negative damage values if the Shoot roll is lower than the Target Armour. So I also wrote an alternative &{template:default} {{name=@{selected|name} shoots:}} {{Shoot}} {{Defense}} [[@{target|armortotal}]] {{Target[1](" hidden)=**Missed!** or weak shot}} {{Target[0](" hidden)}} {{Target[[[floor({[[d20cs21cf0+@{target|Fight}]],@{target|armortotal}+1}<[[ [[ [[d20cf0+@{selected|Shoot}]]-@{target|armortotal}]]+@{target|armortotal}]]/2) ]]](" hidden)=**Hit** for $[[3]] damage!}} {{Target[0](" hidden)=**Armor** $[[0]]}} {{Shoot=$[[2]]}} {{Defense=$[[1]]}} The hit message looks the same but on misses, or if shoot roll - armour is 0 or less it looks like:- So feel free to choose whichever one is more appropriate