I'd like to have the ability to have another number rather than a 20 be a crit number. I know that there isn't a way to do it with /r or an inline roll so rather than ask in the suggestion forums. I thought I would ask here if there was a way to do it via a script. If there isn't a way to interface with an inline roll to show a 17 as a crit, that Is fine. But could you guys help me with writing the script for it? I know I'm not a mentor yet but I would like to be in the future and I'm wondering if what I want to do is even possible. Basically, if the user inputs a single number then that number would be the new critical number. Example, if they put a 1 or a 17 then either of those numbers would be considered a critical if the d20 rolled them. But if they put a range of numbers, say 17-20. Then every number in that range would be considered a crit. My ideal function would have two inputs. The first would be the body of the macro. What is supposed to happen. My typical macro looks like this: 1d20 [Crit (17-20) / x3] + @{BAB} + @{Dex} [Dex] +2 [WFocus] + 5 [Enhancement] - %{Kenshin|REF-Power-Attack} [PAttack] + @{Misc. Attack Bonus} [Misc. AB] which is then referenced like this: Attack [[%{selected|REF-Melee-Attack}]] vs AC Damage [[%{selected|REF-Melee-Damage}]] Is it possible with the scripts to convert the attack macro to call the critical script like this Attack !crit (%{selected|REF-Melee-Attack}, 17-20, true) vs AC Damage [[%{selected|REF-Melee-Damage}]] If not, what would be a way to work around it? The script in turn would be coded something in the way of this pseudo-code: Crit (Macro_Body, Crit_Range, isAutoCrit): Assign passed in parameters to local variables. If the second parameter is missing or invalid, default it to 20. If the third parameter missing default to false. Build the crit range. Define crit_range array. If crit_range doesn't contain "-" Assign the single number to the array. Else Get the low value of the range and the high value of the range. Define variable initialized to the low_value Define array_index variable i and initialize it to zero While variable IS LESS THAN OR EQUAL TO high_value array[i++] = variable++ Evaluate Macro_Body Determine dice being rolled, get the first instance of a d20 in the variable. Then get the number of dice to roll. Should be 1 but could be others. Roll it, and then compare it against the crit_range array Foreach $item in $crit_range If attack_roll EQUALS $item: If $attack_roll EQUALS 20 OR isAutoCrit EQUALS return true Else return false If no item matched: return return false; Evaluate the rest of the macro_body and add it to the result of the dice roll. I really hope that pseudo code helps explain what I'm hoping to code up. I have never tried out the Roll20 API so I have no idea what it can and cannot do.