Thank you very much for your help. It works perfectly, thank you! :) David M. said: Looks like you need to roll a d20 to determine which column to roll on, and a d100 to determine the result. A couple of ways to do this. Both requier you to create three rollable tables (one for each column), with entries for each cell in the column. Weight the entries appropriately (if there are 100 entries, leave the default weight of 1). Call the tables ExtremeSurge, ModerateSurge, and NuisanceSurge, for example. Method (1) Use the RecursiveTable script (available for one-click install) Create a 4th table called "WildSurgeSeverity". Add three items: [[1t[ExtremeSurge]]] [[1t[ModerateSurge]]] [[1t[NuisanceSurge]]]. The weights would be 3, 6, and 11, respectively. Create a macro with the following syntax !rt [[1t[WildSurgeSeverity]]] The RecursiveTable script will roll on the severity table, and then recursively roll on the appropriate surge table. The advantage of this method is that it is the simplest syntax. The disadvantage is that you need to create that 4th table, and the output format is pretty basic. Sample output (spammed a few times). I obviously just put dummy entries in the surge tables. Method (2) Use the Scriptcards script (available for one-click install). This script is more complicated as it actually has its own procedural language, but is very flexible and can do a lot of cool stuff. Only need the three surge tables. Then create a macro or ability with something like the following: !scriptcards {{
--#title|Wild Surge!
--:INITIALIZE ROLL VARIABLES|
--=d20|1d20
--+d20 Roll|[$d20]
--:CHECK SEVERITY|
--?[$d20.Total] -le 3|>RollOnTable;Extreme
--?[$d20.Total] -ge 4 -and [$d20.Total] -le 9|>RollOnTable;Moderate
--?[$d20.Total] -ge 10|>RollOnTable;Nuisance
--X|End Macro
--:PROCEDURES|
--:RollOnTable|
--=Roll|[T#[%1%]Surge]
--+Surge Severity|[%1%]
--+Effect|[$Roll.tableEntryText]
--<|
}} Sample output: Advantage of this method is you get to see more about what went into the rolls and you can customize the output if you wanted to review all of the options that scriptcards gives. The disadvantage is that it is obviously much more complicate syntax and not a script that I would usually recommend for someone just getting into api scripts. Of course, if the above is good enough, then I guess it could be as simple as copying and pasting :)