Several months ago Silvyre produced a brilliant macro for me that handled all of the standard tests required to run a WFRP First Edition game. &{template:default} {{name=**WFRP Standard Test**}} {{@{selected|token_name}'s ?{Test|Select one:, attempt to use this macro was [[ 1t[[[d3-3]]] ]] | Animosity, attempt to resist animosity (@{selected|Cl}) ?{Modifiers|None, |Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|Cl} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Bargain, attempt to bargain (@{selected|Fel}) ?{Modifiers|None, |Charm (+10%), [using Charm] +10|Haggle (+10%), [using Haggle] +10|Seduction (+10%), [using Seduction] +10|Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|Fel} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Bluff, attempt to bluff (@{selected|Fel}) ?{Modifiers|None, |Acting (+15%), [using Acting] +15|Charm (+10%), [using Charm] +10|Clown (+10%), [using Clown] +10|Jester (+10%), [using Jester] +10|Public Speaking, [using Public Speaking (affects @{selected|Ld} people)]|Seduction (+10%), [using Seduction] +10|Wit (+10%), [using Wit] +10|Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|Fel} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Boat Handling, attempt at boat handling (@{selected|Int} + @{selected|I})/?{Do you possess the appropriate skill (Rowing and/or Sailing) for your boat?|No,4|Yes,2} ?{Modifiers|None, |River Lore (+10%), [using River Lore] +10|Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor(([[floor(@{selected|Int} + @{selected|I})/?{Do you possess the appropriate skill (Rowing and/or Sailing) for your boat?}]] ?{Modifiers} - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Bribe, attempt to bribe (100 - @{selected|WP}) ?{Modifiers|None, |Bribery (+20%), [using Bribery] +20|Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(100 - @{selected|WP} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Busk, attempt to busk (@{selected|Fel}) ?{Modifiers|None, |Acrobatics (+10%), [using Acrobatics] +10|Acting (+10%), [using Acting] +10|Art (+10%), [using Art] +10|Clown (+10%), [using Clown] +10|Comedian (+10%), [using Comedian] +10|Contortionist (+10%), [using Contortionist] +10|Dance (+10%), [using Dance] +10|Escapology (+10%), [using Escapology] +10|Fire Eating (+10%), [using Fire Eating] +10|Jest (+10%), [using Jest] +10|Juggle (+10%), [using Juggle] +10|Mime (+10%), [using Mime] +10|Mimic (+10%), [using Mimic] +10|Musicianship (+10%), [using Musicianship] +10|Palmistry (+10%), [using Palmistry] +10|Sing (+10%), [using Sing] +10|Story Telling (+10%), [using Story Telling] +10|Strongman (+10%), [using Strongman] +10|Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|Fel} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Construct, attempt to construct (@{selected|Dex}) ?{Modifiers|None, |Boat Building (+10%), [using Boat Building] +10|Carpentry (+10%), [using Carpentry] +10|Engineering (+20%), [using Engineering] +20|Mining (+10%), [using Mining] +10|Smithing (+10%), [using Smithing] +10|Stoneworking (+10%), [using Stoneworking] +10|Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|Dex} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Disease, attempt to resist disease (@{selected|T} * 10) ?{Modifiers|None, |Immunity To Disease (+10%), [using Immunity To Disease] +10|Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|T} * 10 ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Estimate, attempt to estimate (@{selected|Int}) ?{Modifiers|None, |Evaluate (+10%), [using Evaluate] +10|Follow Trail (+10%), [using Follow Trail] +10|Super Numerate (+20%), [using Super Numerate] +20|Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|Int} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Fall, fall resulted in a loss of [[{[[ceil(?{Distance fallen in yards|1})]] [yard(s) fallen] - ( [[1d6]] [D6 roll]?{Do you possess the Acrobatics skill?|No, |Yes, + 2 [Acrobatics]}),0}k1]]W. | Fear, attempt to resist fear (@{selected|Cl}) ?{Modifiers|None, |Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|Cl} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Frenzy, attempt to resist frenzy (@{selected|Cl}) ?{Modifiers|None, |Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|Cl} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Gossip, attempt to gossip (@{selected|Fel}) ?{Modifiers|None, |Acting (+15%), [using Acting] +15|Charm (+10%), [using Charm] +10|Comedian (+15%), [using Comedian] +15|Public Speaking, [using Public Speaking (affects @{selected|Ld} people)]|Seduction (+10%), [using Seduction] +10|Story Telling (+10%), [using Story Telling] +10|Wit (+10%), [using Wit] +10|Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|Fel} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Hatred, attempt to resist hatred (@{selected|Cl}) ?{Modifiers|None, |Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|Cl} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Hide, attempt to hide (@{selected|I} + @{selected|Cl} - ?{Input target's I Characteristic|10}) ?{Modifiers|None, |Shadowing (+10%), [using Shadowing] +10|Customize, + [a modifier of] ?{Customize|0} } ?{Do you possess the appropriate Concealment and/or Silent Move skill(s) (Rural or Urban) for the environment?|No, |Only Concealment,?{Movement|Keeping still,[while keeping still within Concealment] +20|Moving cautiously,[while moving cautiously through Concealment] +5}|Only Silent Move,[using Silent Move] +10|I have both,?{Movement|Keeping still,[while using Silent Move and keeping still within Concealment] +30|Moving cautiously,[while using Silent Move to move cautiously through Concealment] +15}} was [[ 1t[[[{[[{[[floor((floor(@{selected|I} + @{selected|Cl} - ?{Input target's I Characteristic|10}) ?{Modifiers|None, |Shadowing (+10%), [using Shadowing] +10|Customize, + [a modifier of] ?{Customize|0} } ?{Do you possess the appropriate Concealment and/or Silent Move skill(s) (Rural or Urban ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Hypnotism, attempt to resist hypnotism (@{selected|WP}) ?{Modifiers|None, |Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|WP} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Interrogate, attempt to resist interrogation (@{selected|WP}) ?{Modifiers|None, |Subject to Torture, [by a skilled Torturer] -10|Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|WP} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Jump, jump resulted in a loss of [[{[[ceil(?{Distance jumped in yards|1})]] [yard(s) jumped] - ( [[1d6]] [D6 roll]?{Do you possess the Acrobatics skill?|No, |Yes, + 2 [Acrobatics]}),0}k1]]W. | Leap, ?{Leap|Running, running leap sees them traveling up to [[{@{selected|M} [M]*2?{Do you possess the Acrobatics skill?|No, |Yes, + 2 [Acrobatics]} - ( [[d6]] [1D6 roll] ),1}k1]]|Standing, standing leap sees them traveling up to [[{@{selected|M} [M]?{Do you possess the Acrobatics skill?|No, |Yes, + 2 [Acrobatics]} - ( [[2d6]] [2D6 roll] ),1}k1]]} yard(s). | Listen, attempt to listen to a ?{Noise|Normal,normal noise] (60)|Soft,soft noise] (30)|Loud,loud noise (100)} ?{Modifiers|None, |Acute Hearing (+10%), [using Acute Hearing] +10|Customize, + [a modifier of] ?{Customize|0} } ?{Does the target possess the appropriate Silent Move skill (Rural or Urban) for the environment?|No, |Yes,[opposed by Silent Move] -10} was [[ 1t[[[{[[{[[floor((floor(100)} ?{Modifiers|None, |Acute Hearing (+10%), [using Acute Hearing] +10|Customize, + [a modifier of] ?{Customize|0} } ?{Does the target possess the appropriate Silent Move skill (Rural or Urban ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Loyalty, attempt be loyal (@{selected|Ld}) ?{Modifiers|None, |Being bribed, [while being bribed] -20|Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|Ld} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Magic, attempt to resist magic (@{selected|WP}) ?{Modifiers|None, |Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|WP} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Observe, attempt to observe (@{selected|I}) ?{Modifiers|None, |Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|I} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Pick Lock, attempt to lock pick (@{selected|Dex} - ?{Lock Rating|10}) ?{Modifiers|Unskilled, [without Pick Lock] -30|Pick Lock, ?{Pick Lock|Basic (+10%), [using basic Pick Lock] +10|Locksmith (+20%), [using skilled Pick Lock] +20|Master Locksmith (+30%), [using mastered Pick Lock] +30}|Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|Dex} - ?{Lock Rating|10} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Pick Pocket, attempt to pickpocket (@{selected|Dex} - 30) ?{Modifiers|None, |Pick Pocket (+30%), [using Pick Pocket] +30|Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|Dex} - 30 ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Poison, attempt to resist poison (@{selected|T} * 10) ?{Modifiers|None, |Immunity To Poison (+10%), [using Immunity To Poison] +10|Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|T} * 10 ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Problem Solving, attempt to problem solve (@{selected|Int}) ?{Modifiers|None, |Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|Int} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Rapid Search, attempt at a rapid search (@{selected|I}) ?{Modifiers|None, |Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|I} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Reaction, attempt to react (@{selected|I}) ?{Modifiers|None, |Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|I} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Risk, attempt at a risk (?{Risk|50}) was [[ 1t[[[{[[{[[floor((floor(?{Risk}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Search, attempt to search (@{selected|I}) ?{Modifiers|None, |Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|I} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Strength, attempt at strength (@{selected|S} * 10) ?{Modifiers|None, |Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|S} * 10 ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Stupidity, attempt to resist stupidity (@{selected|Int}) ?{Modifiers|None, |Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|Int} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Terror, attempt to resist terror (@{selected|Cl}) ?{Modifiers|None, |Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|Cl} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] | Understand Language, attempt to understand language (@{selected|Int}) ?{Modifiers|None, |Linguistics (+10%), [using Linguistics] +10|Customize, + [a modifier of] ?{Customize|0} } was [[ 1t[[[{[[{[[floor((floor(@{selected|Int} ?{Modifiers}) - d100)/29.99)+1]],-2}kh1]],2}kl1]]] ]] }}} However, I'm in the early stages of starting a new game and would really like to try and integrate these tests into the players character sheets. I'm hoping that I can do this by creating an Ability for each test and seperating the code for that test from the macro above so tha5t when the player clicks on that specific test it just runs the macro that rolls that test.  In effect it would do exactly what the global macro does, but without the opening query as to which type or test you wish to make. I thought it would be pretty simple, but I spent several hours uesterday trying to seperate the code for an 'Animosity Test' and despite it being one of the simpler version i couldn't get it to work how I wanted it too. Pretty sure if I can get one working the I'll be able to replicate it for the rest. What I'm looking for is something that does exactly what the macro shown does, but for each individual test at the click of a button.  The output looks like the examples below.