Well it would appear I'm not as clever as I thought I might be. I'm trying to make a second macro, this time for physical attacks. (The game splits combat tables between weapon combat and combat by a combatant's hit dice) I though it was just a matter of swapping out values but I'm running into errors. So Ideally it should behave like the first macro, ask for a modifier, query for Hit Dice (rather than Weapon Class) and then compare a success against an entered AC value. Is there a simple way of showing how you hack the first macro to get this new one? Oh yes in this case instead of 16 weapon classes there are 7 Hit Dice categories. RainbowEncoder said: You'll need a macro of the form {1d20+?{Mod|0}}>X where X is the value from the table lookup. Transcribing tables can be arduous so it might be best to use roll queries. Here is a template you can fill in the actual values with /r {1d20+?{Mod|0}}>[[?{Weapon Class| One (1) , ?{AC| 10 , X10 | 9 , X9 | 8 , X8 | 7 , X7 | 6 , X6 | 5, X5 | 4 , X4 | 3 , X3 | 2 , X2 | 1 , X1 } | Two (2) , ?{AC| 10 , X10 | 9 , X9 | 8 , X8 | 7 , X7 | 6 , X6 | 5, X5 | 4 , X4 | 3 , X3 | 2 , X2 | 1 , X1 } | Three (3) , ?{AC| 10 , X10 | 9 , X9 | 8 , X8 | 7 , X7 | 6 , X6 | 5, X5 | 4 , X4 | 3 , X3 | 2 , X2 | 1 , X1 } | Four (4) , ?{AC| 10 , X10 | 9 , X9 | 8 , X8 | 7 , X7 | 6 , X6 | 5, X5 | 4 , X4 | 3 , X3 | 2 , X2 | 1 , X1 } | Five (5) , ?{AC| 10 , X10 | 9 , X9 | 8 , X8 | 7 , X7 | 6 , X6 | 5, X5 | 4 , X4 | 3 , X3 | 2 , X2 | 1 , X1 } | Six (6) , ?{AC| 10 , X10 | 9 , X9 | 8 , X8 | 7 , X7 | 6 , X6 | 5, X5 | 4 , X4 | 3 , X3 | 2 , X2 | 1 , X1 } | Seven (7) , ?{AC| 10 , X10 | 9 , X9 | 8 , X8 | 7 , X7 | 6 , X6 | 5, X5 | 4 , X4 | 3 , X3 | 2 , X2 | 1 , X1 } | Eight (8) , ?{AC| 10 , X10 | 9 , X9 | 8 , X8 | 7 , X7 | 6 , X6 | 5, X5 | 4 , X4 | 3 , X3 | 2 , X2 | 1 , X1 } | Nine (9) , ?{AC| 10 , X10 | 9 , X9 | 8 , X8 | 7 , X7 | 6 , X6 | 5, X5 | 4 , X4 | 3 , X3 | 2 , X2 | 1 , X1 } | Ten (10) , ?{AC| 10 , X10 | 9 , X9 | 8 , X8 | 7 , X7 | 6 , X6 | 5, X5 | 4 , X4 | 3 , X3 | 2 , X2 | 1 , X1 } | Eleven (11) , ?{AC| 10 , X10 | 9 , X9 | 8 , X8 | 7 , X7 | 6 , X6 | 5, X5 | 4 , X4 | 3 , X3 | 2 , X2 | 1 , X1 } | Twelve (12) , ?{AC| 10 , X10 | 9 , X9 | 8 , X8 | 7 , X7 | 6 , X6 | 5, X5 | 4 , X4 | 3 , X3 | 2 , X2 | 1 , X1 } | Thirteen (13), ?{AC| 10 , X10 | 9 , X9 | 8 , X8 | 7 , X7 | 6 , X6 | 5, X5 | 4 , X4 | 3 , X3 | 2 , X2 | 1 , X1 } | Fourteen (14), ?{AC| 10 , X10 | 9 , X9 | 8 , X8 | 7 , X7 | 6 , X6 | 5, X5 | 4 , X4 | 3 , X3 | 2 , X2 | 1 , X1 } | Fifteen (15) , ?{AC| 10 , X10 | 9 , X9 | 8 , X8 | 7 , X7 | 6 , X6 | 5, X5 | 4 , X4 | 3 , X3 | 2 , X2 | 1 , X1 } | Sixteen (16) , ?{AC| 10 , X10 | 9 , X9 | 8 , X8 | 7 , X7 | 6 , X6 | 5, X5 | 4 , X4 | 3 , X3 | 2 , X2 | 1 , X1 } }]] Wherever there is a X followed by a number that needs to be replaced by the actual value required to hit that AC with that line's Weapon class. So X10 for class 1 might be replaced by 16 for example