Edit - Never mind all this, I misread your formula. It's much simpler than the one in my head. Well you can do the first part using a variation of one of RainbowEncoder's tricks. A 4d4 total, dropping numbers below 3: /r [[{1d4*101, 1d1*250}k1%10]] + [[{1d4*101, 1d1*250}k1%10]] + [[{1d4*101, 1d1*250}k1%10]] + [[{1d4*101, 1d1*250}k1%10]] You'd change the 250 to 50, 150 or 350 for the other cutoff points, and for more dice you just need to paste more code (you could do a long Query with a "number of dice" input). It's a handful of a macro if you're going up to 12 dice (or more) but I don't know of any non-hacky way of doing it. The second part is a huge problem. Retaining the values of the "failed" dice, adding them together separately, then subtracting them from the initial total is far beyond my ken with the vanilla roller. Either a custom sheet or an API script is almost certainly needed, unless someone has some serious Dark Arts up their sleeve. Edit - Excuse me while I eat my own delicious words. OK. There's probably a way to simplify this, but this macro will roll 4d4, add up the 3's and 4's, then subtract the 1's and 2's: /r {[[(1d4*101 - 250)%10]], 0}k1 + {[[(1d4*101 - 250)%10]], 0}k1 + {[[(1d4*101 - 250)%10]], 0}k1 + {[[(1d4*101 - 250)%10]], 0}k1 - (50+($[[0]]-abs($[[0]])))%10/2 - (50+($[[1]]-abs($[[1]])))%10/2 - (50+($[[2]]-abs($[[2]])))%10/2 - (50+($[[3]]-abs($[[3]])))%10/2 It sure ain't pretty, but as it reuses rolls by index $[[0], it can only be run with /r - there's not much you can do to pretty it up. You can wrap the initial rolls (first half, with the plus signs) in [[ braces ]] but that would mean needing to rewrite the $[[1]] index references.