Mangouste, I took a crack at your Shaan RPG roller. Got the basic part down, but the optional substitutions/additions are proving difficult. Was going to use Colin's suggestion of an Information request, but the problem is that you don't see any of the output before the Information request is triggered. You could have it say "The roll failed, do you want to...etc", but the player wouldn't see any of the formatted rolls ahead of time to make an informed decision. So, at least here is something that can do the basic rolls. I added some conditional formatting to some of the labels in the comparison section of the card, to make it clear what skill you are rolling against. I also did everything in English to help me keep it straight, but figured you could do a find/replace in a text editor pretty easily. I created 4 attributes "Spirit", "Soul", and "Body" on a character sheet, and am referencing those by name. The card queries for which domain to roll against as well as the skill and object modifiers, then rolls and compares to a target number determined by the respective attribute value. !scriptcards {{
--:FORMATTING|
--#title|Shaan Roller
--#evenRowBackground|#abceed
--#oddRowBackground|#eeeeee
--#noMinMaxHilight|1
--:USER INPUT|
--&RollType|?{What Domain are you rolling against?|Spirit,Spirit|Soul,Soul|Body,Body}
--=SkillMod|?{Enter Skill Bonus|3}
--=ObjectMod|?{Enter Object Bonus|2}
--=TotalMod|[$SkillMod]+[$ObjectMod]
--#leftsub|Skill Bonus: [$SkillMod]
--#rightsub|Object Mod: [$ObjectMod]
--:INITIALIZE ROLL & STRING VARIABLES|
--=Spirit|@{selected|Spirit}
--=Soul|@{selected|Soul}
--=Body|@{selected|Body}
--=SpiritRoll|1d10
--=SoulRoll|1d10
--=BodyRoll|1d10
--=BaseRoll|[$[&RollType]Roll]
--&Yellow|FEF68E
--&Blue|1C6EA4
--&Red|990000
--&Green|007700
--DISPLAY ATRIBUTES & ROLLS|
--+Current Attributes|
--+|[c][b][#[&Yellow]]Spirit[/#] [$Spirit.Total] _____ [#[&Blue]]Soul [/#][$Soul.Total] _____ [#[&Red]]Body [/#][$Body.Total][/b][/c]
--+Rolls|
--+|[c][#[&Yellow]][b]Spirit[/b][/#] [$SpiritRoll] - [#[&Blue]][b]Soul[/b] [/#][$SoulRoll] - [#[&Red]][b]Body[/b] [/#][$BodyRoll][/c]
--:COMPARE|
--+Compare Roll vs. Target|
--=Target|[$[&RollType]]
--?[&RollType] -inc Spirit|>CompareRoll;[$BaseRoll];[$Target];[&Yellow]
--?[&RollType] -inc Soul|>CompareRoll;[$BaseRoll];[$Target];[&Blue]
--?[&RollType] -inc Body|>CompareRoll;[$BaseRoll];[$Target];[&Red]
--X|
--:PROCEDURES|
--:CompareRoll| accepts roll(1), target(2), and color(3) as parameters
--+|[c][b][#[%3%]] [&RollType][/#] [$BaseRoll] vs. Target [$Target][/b][/c]
--?[%1%] -le [%2%]|>Success|>Failure
--<|
--:Success|
--+Result|
--+|[c][#[&Green]][b]~~~Success!~~~[/b][/#][/c]
--=HitScore|[$BaseRoll][Roll] + [$SkillMod][Skill] + [$ObjectMod][Object]
--+Hit Score|[$HitScore]
--<|
--:Failure|
--+Result|
--+|[c][#[&Red]][b]~~~Failure!~~~[/b][/#][/c]
--<|
}} Example output (kept skill & object bonuses the same for all). Also, as mentioned above, I am currently unable to disable the highlighted min/max rolls due to Roll20 weirdness, so the examples below are highlighted even though the card tells it not to.