Another idea, depending on your threshold of math pain, is to play a bit with decimals.. Assuming your values are always positive and in a know range, you could do something like this: [[ ( @{attack} + ( @{defense} * .001 )) + ( 2d6 * 1.001 ) ]] Assuming attack of 5 and defense of 8, and a roll of 7, you'd have: ( 5 + ( 8 * .001) ) + ( 7 * 1.001 ) ( 5 .00 8 ) + ( 7 .00 7 ) 12 .0 15 For a 12 attack and 15 defense. It breaks down a bit if you have an even multiple of 10 as the insignificant 0 is truncated, but definitely doable and a single macro. =D Edit : You will have to deal with rounding errors on occasion... You can instead use something like this: [[ ( ( @{attack} * 1000 ) + @{defense} ) + ( 2d6 * 1001 ) ]] If you don't mind an intervening 0, and it fixes both those issues. ( ( 5 * 1000 ) + 8 ) + ( 7 * 1001 ) ( 5 00 8 + ( 7 00 7 ) 12 0 15 Tada!