So based on your explanation: To hit: 1d100<Ballistic Skill Damage: 1d10+2 - armor - floor(Toughness/10) Now, to deal with the negative damage we can do the following: Damage: /roll {(1d10+2-armor-floor(toughness/10)), 0d0}kh1 I wrote this out in basic english rather than include Attributes (I don't know what attributes you are using) but this should be clear enough to modify to suit your needs. The floor(toughness/10) portion will give you the first digit of Toughness which, according to what you wrote, is your ToughnessBonus. The kh1 allows you to keep the damage if it is greater than zero and ignore it if it is less than zero. Regarding automating multiple damage rolls (Xd10) there is no way to do that in the (simple) setup above without using the API. However, what you could do is put in a bunch of those in a row (using inline rolls) and then use a calculation to ignore hits that did not happen. Here is the calculation: ceil((?{hits|0}- 0 )/10) The bolded number should be increased by one for every additional attack. Example, the second attack should read 1, the third attack read 2, fourth attack read 3...etc. Example: /roll [[ ceil((?{hits|0}- 0 )/10)* ({(1d10+2-armor-floor(toughness/10)), 0d0}kh1) ]] + [[ ceil((?{hits|0}-1)/10)* ({(1d10+2-armor-floor(toughness/10)), 0d0}kh1) ]] +[[ ceil((?{hits|0}- 2 )/10)* ({(1d10+2-armor-floor(toughness/10)), 0d0}kh1) ]] +[[ ceil((?{hits|0}- 3 )/10) *({(1d10+2-armor-floor(toughness/10)), 0d0}kh1) ]] ........ When you select the number of hits all attacks that are above that number will read zero. If I have misunderstood what you need or you need further help with this let me know.