Franky H. said: Man, just when you think you know things,Silvyre is here to crush dreams. Can you explain the purpose if the damage line in the second one? Yup and sure; that's my job! I wanted to see if I could amalgamate the four --?? $Roll [...] ?? Damage| tags into a single --Damage| tag. --Damage|[[ [$Roll] {1d20 - 16, 0d0}kh1 + ?{Damage Type?} ]] intuitively seemed like a good way to do this; it would perfectly conform to what we needed: $Roll Extra Damage <=16 0 17 1 18 2 19 3 20 4 Unfortunately, $RollIDs do not (yet?) play nice with {}kh1 functions... For example, [^Roll] and [^Roll.base] were returning the value of the entire {}kh1 function instead of the base value of 1d20. (Attempting to use something like { [$Roll] 1d20 - 16, 0d0 }kh1 results in $Roll not getting properly parsed by PowerCards, returning "Roll ID Not Found".) So, I had to find a replacement for {1d20 - 16, 0d0}kh1. (1d20 - 16 + abs(1d20 - 16)) / 2 won't work for obvious reasons, so I came up with another solution that takes advantage of two 'properties' of modulo operations; for numbers M, N such that M < N ≠ 0: M % N = M (call this Property 1) N % N = 0 (call this Property 2) (21 - [$Roll] 1d20) % 20 % 19 % 18 % 17 % 16 % 15 % 14 % 13 % 12 % 11 % 10 % 9 % 8 % 7 % 6 % 5 Looking at the code above; if 1d20 rolls between 17 and 20, (21 - 1d20) resolves to equal a number between 4 and 1. By Property 1, those numbers are 'unaffected' by the modulo operations. If 1d20 rolls less than 17, (21 - 1d20) resolves to equal a number between 20 and 5. By Property 2, each of those numbers are 'eliminated' to 0 by one of the respective modulo operations. So, with the code above, I had so far managed to get pretty close to the table of values above, i.e. $Roll Extra Damage <=16 0 17 4 18 3 19 2 20 1 Subtracting the above code from 5 (and appending %5 to 'eliminate' unwanted values of 5-0) finally aligned the macro with the desired table of values.