Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

Tim's Baldur's Gate 3 Dice Roller Mod (ScriptCards) for D&D 5E by Roll20

1764995392

Edited 1765045046
Hi All, This is the new version of my Baldur's Gate 3 Dice Roller Mod for D&amp;D 5E by Roll20. This Mod requires ScriptCards to be installed in your game. What Does it Do? This Mod rolls dice using a BG3 themed template. It will roll Skill Checks, Savings Throws and Stat Checks. It takes into account several class traits such as Reliable Talent, Jack of All Trades and others, as well as taking into account current selected global modifiers. Easy copy and paste link. What's New? On the surface, not much has changed, although much of the script is different. Changes people might notice are that the selection of the skill/save/stat checks are now chat buttons rather than a drop-down popup menu. With the new code comes more reliability and bug fixes, as well as a switch to using Roll20 as the image host for everything but the Dice Sets, as Github has limited the amount of hot-linking of image files. Installation 1. Create a new character in your game journal named&nbsp;ScriptCards_TemplateMule, exactly as shown. Obviously, if you've already created this character for another ScriptCards Mod, you can skip this step. 2. Create a new attribute(macro) on the player's character sheet, name it whatever you like and place the code below these instructions into it. I suggest putting the Mod on individual character sheets as token actions rather than using the Mod as a game-wide Macro since the token needs to be selected for everything to work anyway. 3. Run the Macro the first time and it will install the template information to the Template Mule. Any subsequent runs of the Macro will just run the Macro. Don't worry too much about messing up the install, the Mod will let you know if it needs something to install. Code Below: !scriptcard {{ --/|Script Name : Balder's Gate 3 Die Roller for D&amp;D 2014 Character sheet for Roll20 --/|Version : 2.0.1 --/|Author : Timothy Beasley --/|Description : This script rolls a D20(or two in the case of advantage/disadvantage) in the style of Baldur's Gate 3. --/| It adds the appropriate modifiers as per the selected token's associated character sheet. It includes many --/| passive modifiers; proficiency bonus and expertise, as well as class traits; Jack-of-All-Traits and Reliable Talent. --/| It will also detect any checked Skill or Save global modifiers on the sheet and add them to the roll. --/| --/|Installation: This script is for the 2014 edition of the official D&amp;D 5E Character Sheet by Roll20 and requires the --/| installation of the ScriptCards MOD using a pro account with API access. --/| To install the Mod, first create a character named ScriptCards_TemplateMule exactly as shown. --/| Run the script the first time and it will install the Baldurs' Gate Theme the Mod uses. --/| Run the script any subsequent time to roll a check. --/| CHECK FOR EXISTANCE OF ScriptCards_TemplateMule --&amp;TemplateMuleID|@{ScriptCards_TemplateMule|character_id} --?"[*[&amp;TemplateMuleID]:character_name]" -eq ""|[ --&gt;InstallFormat| --#title|ERROR: Template Mule Missing --+|[c]Please make sure you've created a character called[/c] --+|[c][b]ScriptCards_TemplateMule[/b][/c] --+|[c]in your game journal.[/c] --+|[c]It has to be exactly this name and is case sensitive.[/c] --X| --]| --/| GET STYLE ABILITY ON TEMPLATE MULE CHARACTER AND CHECK IF FIRST RUN --~IsTemplate|system;findability;ScriptCards_TemplateMule;baldursgate3 --?"[&amp;IsTemplate]" -eq "AbilityNotFound"|[ --&gt;InstallFormat| --#title|Baldur's Gate 3 Dice Roller Installation --+|[c][b]First Run Detected!!![/b][/c] --+|[c][b]Installing Baldur's Gate 3 Dice Roller[/b][/c] --&amp;BG3|boxcode::{div style='background-image: url(&amp;quot;<a href="https://files.d20.io/images/460075805/u9YRFIMGQGwVty9z0VqBVQ/original.png&amp;quot" rel="nofollow">https://files.d20.io/images/460075805/u9YRFIMGQGwVty9z0VqBVQ/original.png&amp;quot</a>;) ; background-size: 298px auto ; width: 120% ; background-position: center top; background-repeat: no-repeat ; background-color: #0e0906 ; display: block ; text-align: center ; color: Silver ; font-size: 14px ; font-family: &amp;quot;AlegreyaSans&amp;quot; , serif ; white-space: pre-wrap ; font-style: normal ; position: relative ; left: -40px ; border-left: 1em solid #0e0906 ;'}||titlecode::{div style='width: 100% ; margin: 0.3em 0em 0em 0em ; font-size: 28px ; font-family: &amp;quot;Alegreya&amp;quot; , serif ; color: Silver ; display: block ; font-weight: normal ; font-style: normal ; text-align: center ; vertical-align: top ; position: relative ; top: 10px'}||textcode::{/div}{div}{div style='font-family: &amp;quot;Alegreya Sans&amp;quot;, &amp;quot;Trebuchet MS&amp;quot;, Helvetica, Arial, sans-serif ; font-weight: normal; vertical-align: top ; display: block; margin: 0em 0em 0em 0em;'}||buttonwrapper::{div style='display: inline-block ;'}||buttonstyle::style='background-color: transparent ; display: inline-flex ; color: silver ; text-align: center ; vertical-align: middle ; border: none ;'||footer:: --!ob:StyleSaveResult:[&amp;TemplateMuleID]:baldursgate3:0|[&amp;BG3] --+|[br] --+|[c][b]...Script Installed![/b][/c] --+|[br] --+|[c][b]Run the Dice Roller Again to Make a Roll![/b][/c] --@sc-reloadtemplates| --X| --]| --:RestartMod| --#sourceToken|@{selected|token_id} --&amp;diceSound| --/|Formatting --#debug|0 --#reentrant|BG3- @{selected|character_id} --#overridetemplate|baldursgate3 --&amp;CharName|[*S:character_name] --&amp;FontType|Alegreya --&amp;CharID|[*S:character_id] --&amp;diceColor|[*S:dice_set] --?"[&amp;diceColor]" -eq "undefined"|[ --&amp;diceColor|Default --!a:[&amp;CharID]|!dice_set:Default --]| --/|STRING CACHING --&amp;PB|[*S:pb] --&amp;StrengthURL|[img width=60 height=60]<a href="https://files.d20.io/images/460075818/ao80Fa1WuxKKoPWk0Hi4fw/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075818/ao80Fa1WuxKKoPWk0Hi4fw/original.webp[/img]</a> --&amp;DexterityURL|[img width=60 height=60]<a href="https://files.d20.io/images/460075790/pjgpjsR-Gz0FcpnjOTkTkQ/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075790/pjgpjsR-Gz0FcpnjOTkTkQ/original.webp[/img]</a> --&amp;ConstitutionURL|[img width=60 height=60]<a href="https://files.d20.io/images/460075788/PFjTtVCbqdr9d-v74qd-Hw/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075788/PFjTtVCbqdr9d-v74qd-Hw/original.webp[/img]</a> --&amp;IntelligenceURL|[img width=60 height=60]<a href="https://files.d20.io/images/460075799/frPTyMqSJN1UWpvKctlk0g/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075799/frPTyMqSJN1UWpvKctlk0g/original.webp[/img]</a> --&amp;WisdomURL|[img width=60 height=60]<a href="https://files.d20.io/images/460075821/oNnu-sOWjacKMeSbe8UNyg/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075821/oNnu-sOWjacKMeSbe8UNyg/original.webp[/img]</a> --&amp;CharismaURL|[img width=60 height=60]<a href="https://files.d20.io/images/460075787/8RLmb5wH1HfTaH8SybPIyg/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075787/8RLmb5wH1HfTaH8SybPIyg/original.webp[/img]</a> --&amp;ProficiencyURL|[img width=60 height=60]<a href="https://files.d20.io/images/460075810/uWy46PETne7Aa34FUUkVnA/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075810/uWy46PETne7Aa34FUUkVnA/original.webp[/img]</a> --&amp;ExpertiseURL|[img width=60 height=60]<a href="https://files.d20.io/images/460075789/VPM1M8UyRJPs5sCI44-CaA/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075789/VPM1M8UyRJPs5sCI44-CaA/original.webp[/img]</a> --&amp;JackOfAllTradesURL|[img width=60 height=60]<a href="https://files.d20.io/images/460075800/h0gOqj5Vl-ruDMLQ62-oTg/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075800/h0gOqj5Vl-ruDMLQ62-oTg/original.webp[/img]</a> --&amp;ReliableTalentURL|[img width=60 height=60]<a href="https://files.d20.io/images/460075811/Q3RcL5k5fgmOoyGfvdRNiQ/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075811/Q3RcL5k5fgmOoyGfvdRNiQ/original.webp[/img]</a> --&amp;AlertURL|[img width=60 height=60]<a href="https://files.d20.io/images/460075820/ANaTswKbGJ-4U9tFBRYJNQ/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075820/ANaTswKbGJ-4U9tFBRYJNQ/original.webp[/img]</a> --&amp;RemarkableAthleteURL|[img width=60 height=60]<a href="https://files.d20.io/images/460075813/LKg-6stfgZN-8vGFhZz9rg/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075813/LKg-6stfgZN-8vGFhZz9rg/original.webp[/img]</a> --&amp;SilverTongueURL|[img width=60 height=60]<a href="https://files.d20.io/images/460075817/3j3o3vFvsoKFH3DE9sjfmw/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075817/3j3o3vFvsoKFH3DE9sjfmw/original.webp[/img]</a> --&amp;DieSelector|[img]<a href="https://files.d20.io/images/460656223/XLRUeWfJ2aYXrCoSUuQpLg/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460656223/XLRUeWfJ2aYXrCoSUuQpLg/original.webp[/img]</a> --&amp;Button_BG|style="background-image: url(<a href="https://files.d20.io/images/460304036/HsGsAzMkzFuTneaxThlDeA/original.webp" rel="nofollow">https://files.d20.io/images/460304036/HsGsAzMkzFuTneaxThlDeA/original.webp</a>); width: 100px !important; height: 26px !important; background-repeat: no-repeat; background-size: 100px 26px ; background-position: center ; display: flex; align-items: center; justify-content: center; vertical-align: middle; padding: 0; margin: 0; text-shadow: 0 0 4px #000, 0 0 8px rgba(0,0,0,0.95); white-space: nowrap; max-width: 100px ;" --&amp;ButtonADV_BG|style="background-image: url(<a href="https://files.d20.io/images/460304040/MUxM17gj_Ce6e69srWKhXw/original.webp" rel="nofollow">https://files.d20.io/images/460304040/MUxM17gj_Ce6e69srWKhXw/original.webp</a>); width: 35px !important;height: 26px !important; background-repeat: no-repeat; background-size: 35px 26px ; background-position: center ; display: flex; align-items: center; justify-content: center; vertical-align: middle; padding: 0 3px 0 0; margin: 0; text-shadow: 0 0 4px #000, 0 0 8px rgba(0,0,0,0.95);" --&amp;ButtonDADV_BG|style="background-image: url(<a href="https://files.d20.io/images/460304037/O8JvSGQt0Q-Fb5SLRAHA3A/original.webp" rel="nofollow">https://files.d20.io/images/460304037/O8JvSGQt0Q-Fb5SLRAHA3A/original.webp</a>); width: 35px !important;height: 26px !important; background-repeat: no-repeat; background-size: 35px 26px ; background-position: center ; display: flex; align-items: center; justify-content: center; vertical-align: middle; padding: 0 0 0 3px; margin: 0; text-shadow: 0 0 4px #000, 0 0 8px rgba(0,0,0,0.95);" --&amp;Bonus_Background|width=100% style="background-image: url(<a href="https://files.d20.io/images/460075830/cXYQIMFGFpzFzco0pWv4bQ/original.webp" rel="nofollow">https://files.d20.io/images/460075830/cXYQIMFGFpzFzco0pWv4bQ/original.webp</a>) ; background-repeat: no-repeat ; background-size: 80px ; background-position: center ; display: inline-block ; margin-left: auto ; margin-right: auto ; margin-top: 45px ; width: 75px ;" --&amp;DieFormat|width=100% height=115 style="display: inline-block ; margin-left: auto ; margin-right: auto ; margin-top: 45px ; width: 100% ; height: 65px ;" --&amp;DoubleDieFormat|width=100% height=115 style="display: inline-block ; margin-left: auto ; margin-right: auto ; margin-top: 45px ; width: 100% ; height: 65px ;" --&amp;DieTotalFormat|width=80 height=80 style="display: inline-block ; margin-left: auto ; margin-right: auto ; margin-top: 20px ; width: 80px ; height: 90px ;" --&gt;SelectRoll| --X| --:InstallFormat| --#titleFontFace|"Alegreya", Georgia, "Times New Roman", serif; --#titleFontLineHeight|2em --#titleFontSize|1.2em --#LineHeight|150% --#titleFontColor|rgb(212, 175, 55) --#titleCardBackgroundImage|linear-gradient(180deg, rgb(60,10,10) 0%, rgb(20,5,5) 100%); --#bodyFontFace|"Alegreya", Georgia, "Times New Roman", serif; --#evenRowBackground|rgb(55, 55, 65) --#oddRowBackground|rgb(35, 35, 45) --#evenRowFontColor|rgb(210, 200, 180) --#oddRowFontColor|rgb(210, 200, 180) --&lt;| --:SelectRoll| --#title| --#Whisper|self --#emoteText|[&amp;CharName]'s Roll --#emoteBackground|rgb(30, 35, 45) --#emoteFontColor|rgb(212,175,55) --/| GET LIST OF TRAITS FROM CHAR SHEET(SEPARATED BY ;) --~|array;fromrepeatingsection;TraitsArray;[&amp;CharID];repeating_traits;name --~TraitsData|array;stringify;TraitsArray --~|array;define;SkillArray;acrobatics_bonus;animal_handling_bonus;arcana_bonus;athletics_bonus;deception_bonus;history_bonus;insight_bonus;intimidation_bonus;investigation_bonus;medicine_bonus;nature_bonus;perception_bonus;performance_bonus;persuasion_bonus;religion_bonus;sleight_of_hand_bonus;stealth;survival_bonus --~|array;define;SaveArray;strength_save_bonus;dexterity_save_bonus;constitution_save_bonus;intelligence_save_bonus;wisdom_save_bonus;charisma_save_bonus --~|array;define;StatArray;strength_mod;dexterity_mod;constitution_mod;intelligence_mod;wisdom_mod;charisma_mod --&amp;RollPick|[t style="text-align: center ; width: 100% ; display: flex ; background-color: #0e0906 ; "][tr][td][t style="position: relative ; left: 70px ; "][tr][td width=56px [&amp;ButtonDADV_BG]][rbutton][b]D[/b]::PrepareRoll;initiative_bonus_disadvantage[/rbutton][/td][td [&amp;Button_BG]][rbutton][b]Initiative[/b]::PrepareRoll;initiative_bonus_normal[/rbutton][/td][td width=56px [&amp;ButtonADV_BG]][rbutton][b]A[/b]::PrepareRoll;initiative_bonus_advantage[/rbutton][/td][/tr][/t][/td][td][t][tr][td][rbutton][&amp;DieSelector]::ChangeDice[/rbutton][/td][/tr][/t][/td][/tr][/t] --&amp;RollPick|+[t width=100%][tr][td [&amp;Button_BG]][rbutton][b]Skills[/b]::SkillRoll;skill[/rbutton][/td][/tr][tr][td [&amp;Button_BG]][rbutton][b]Saves[/b]::SkillRoll;save[/rbutton][/td][/tr][tr][td [&amp;Button_BG]][rbutton][b]Stats[/b]::SkillRoll;stat[/rbutton][/td][/tr][/t] --+|[&amp;RollPick] --X| --:SkillRoll| --&amp;RollType|[&amp;reentryval] --#Whisper|self --#emoteText|[&amp;CharName]'s [&amp;RollType(totitlecase)]s --&amp;ButtonsPerRow|2 --&amp;ButtonsCounter|0 --?"[&amp;RollType]" -eq "skill"|[ --&amp;ButtonTitle|Skill Check --&amp;SkillCategoryArray|SkillArray --]| --?"[&amp;RollType]" -eq "save"|[ --&amp;ButtonTitle|Savings Throw --&amp;SkillCategoryArray|SaveArray --]| --?"[&amp;RollType]" -eq "stat"|[ --&amp;ButtonTitle|Ability Check --&amp;SkillCategoryArray|StatArray --]| --&amp;RollName|[&amp;CharName]'s [&amp;ButtonTitle] --&amp;SkillOutput|[t width=100% style="position: relative ; left: -12px ; "][tr] --%SkillLoop|foreach;[&amp;SkillCategoryArray] --?"[&amp;RollType]" -eq "save"|&amp;SkillName;[&amp;SkillLoop(replace,_save_bonus,)] --?"[&amp;RollType]" -eq "skill"|&amp;SkillName;[&amp;SkillLoop(replace,_bonus,)] --?"[&amp;RollType]" -eq "stat"|&amp;SkillName;[&amp;SkillLoop(replace,_mod,)] --?"[&amp;SkillName]" -eq "animal_handling"|&amp;SkillName;Anml Hndlng --?"[&amp;SkillName]" -eq "sleight_of_hand"|&amp;SkillName;Slght of Hnd --&amp;SkillName|[&amp;SkillName(replaceall,_,&amp;nbsp;)] --&amp;SkillName|[&amp;SkillName(totitlecase)] --?[= [&amp;ButtonsCounter] % [&amp;ButtonsPerRow] ] -eq 0|&amp;SkillOutput;+[/tr][tr] --&amp;SkillOutput|+[td title="Disadvantage" [&amp;ButtonDADV_BG]][rbutton][b]D[/b]::PrepareRoll;[&amp;SkillLoop]_disadvantage[/rbutton][/td][td [&amp;Button_BG]][rbutton][b][&amp;SkillName][/b]::PrepareRoll;[&amp;SkillLoop]_normal[/rbutton][/td][td title="Advantage" [&amp;ButtonADV_BG]][rbutton][b]A[/b]::PrepareRoll;[&amp;SkillLoop]_advantage[/rbutton][/td] --&amp;ButtonsCounter|[= [&amp;ButtonsCounter] + 1 ] --%| --&amp;SkillOutput|+[/t] --+|[&amp;SkillOutput] --X| --:PrepareRoll| --#Whisper| --&amp;SkillType|[&amp;reentryval] --?"[&amp;SkillType]" -inc "advantage"|=SkillRoll;2d20kh1 --?"[&amp;SkillType]" -inc "normal"|=SkillRoll;1d20 --?"[&amp;SkillType]" -inc "disadvantage"|=SkillRoll;2d20kl1 --&amp;FinalRoll|[$SkillRoll.Raw] --&amp;SkillType|[&amp;SkillType(replace,_normal,)] --&amp;SkillType|[&amp;SkillType(replace,_advantage,)] --&amp;SkillType|[&amp;SkillType(replace,_disadvantage,)] --?"[&amp;SkillType]" -eq "initiative_bonus"|[ --#emoteText|[*S:character_name] Initiative Check --]|[ --#emoteText|[&amp;RollName] --]| --=SkillBonus|[*S:[&amp;SkillType]] --c[&amp;SkillType]|strength_save_bonus:&amp;SkillMod;Strength|athletics_bonus:&amp;SkillMod;Strength|strength_mod:&amp;SkillMod;Strength|stealth_bonus:&amp;SkillMod;Dexterity|sleight_of_hand_bonus:&amp;SkillMod;Dexterity|dexterity_save_bonus:&amp;SkillMod;Dexterity|acrobatics_bonus:&amp;SkillMod;Dexterity|dexterity_mod:&amp;SkillMod;Dexterity|initiative_bonus:&amp;SkillMod;Dexterity|constitution_save_bonus:&amp;SkillMod;Constitution|constitution_mod:&amp;SkillMod;Constitution|arcana_bonus:&amp;SkillMod;Intelligence|intelligence_save_bonus:&amp;SkillMod;Intelligence|religion_bonus:&amp;SkillMod;Intelligence|history_bonus:&amp;SkillMod;Intelligence|investigation_bonus:&amp;SkillMod;Intelligence|nature_bonus:&amp;SkillMod;Intelligence|intelligence_mod:&amp;SkillMod;Intelligence|animal_handling_bonus:&amp;SkillMod;Wisdom|wisdom_save_bonus:&amp;SkillMod;Wisdom|perception_bonus:&amp;SkillMod;Wisdom|insight_bonus:&amp;SkillMod;Wisdom|survival_bonus:&amp;SkillMod;Wisdom|medicine_bonus:&amp;SkillMod;Wisdom|wisdom_mod:&amp;SkillMod;Wisdom|deception_bonus:&amp;SkillMod;Charisma|intimidation_bonus:&amp;SkillMod;Charisma|performance_bonus:&amp;SkillMod;Charisma|charisma_save_bonus:&amp;SkillMod;Charisma|persuasion_bonus:&amp;SkillMod;Charisma|charisma_mod:&amp;SkillMod;Charisma --&amp;SkillLow|[*S:[&amp;SkillMod(tolowercase)]_mod] --#parameterDelimiter|$$$ --?"[&amp;SkillLow]" -ge 0|&amp;PlusMinus$$$&amp;plus; --?"[&amp;SkillLow]" -ne ""|&amp;AbilityBonus$$$ [br][&amp;PlusMinus] [&amp;SkillLow][br][&amp;[&amp;SkillMod]URL][br][#8f6239][&amp;SkillMod][br]Bonus[/#] --#parameterDelimiter|; --?";strength;dexterity;constitution;intelligence;wisdom;charisma;" -inc "[&amp;SkillType]"|MakeRoll --?"[&amp;SkillType]" -inc "initiative"|&amp;ProfType;[&amp;SkillType]|&amp;ProfType;[&amp;SkillType(replace,_bonus,_prof)] --?"[&amp;ProfType]" -inc "_prof"|&amp;ProficiencyAttr;[*S:[&amp;ProfType]]|&amp;ProficiencyAttr;0 --&amp;ExpertiseTypeAttr|[&amp;SkillType(replace,_bonus,_type)] --?"[&amp;SkillType]" -ninc "initiative"|[ --?"[&amp;ProficiencyAttr]" -inc "pb"|&amp;ProfBonus; [br]+ [&amp;PB][&amp;ProficiencyURL][#8f6239]Proficiency Bonus[/#] --?"[&amp;SkillType]" -inc "_save"|MakeRoll --?"[*S:[&amp;ExpertiseTypeAttr]]" -eq "2"|&amp;ExpertBonus; [br]+ [&amp;PB][br][&amp;ExpertiseURL][br][#8f6239]Expertise[br]Bonus[/#] --]| --:MakeRoll| --?"[&amp;SkillType]" -eq ""|[ --#title|Skill Check --]|[ --&amp;SkillTitle|[&amp;SkillType(replace,_mod,)] --&amp;SkillTitle|[&amp;SkillTitle(replace,_bonus,)] --&amp;SkillTitle|[&amp;SkillTitle(replace,_, )] --#title|[&amp;SkillTitle(totitlecase)] Check --]| --?"[&amp;SkillType]" -inc "save"|&gt;GetGlobalModifiers;repeating_savemod;GlobalModHash|&gt;GetGlobalModifiers;repeating_skillmod;GlobalModHash --&amp;LiveGlobalMsg| --=LiveGlobalTotal| --~|array;fromkeys;GlobalModKeys;GlobalModHash --?[@GlobalModKeys(length)] -gt 0|[ --&amp;LiveGlobalMsg|[t width=100%][tr] --%ModifierName|foreach;GlobalModKeys --=LiveGlobalTotal|[$LiveGlobalTotal] + [:GlobalModHash("[&amp;ModifierName]")] --?"[&amp;ModifierName]" -eqi "guidance"|&amp;GlobalURL;[img width=40]<a href="https://files.d20.io/images/460075797/iU9KDUeq3RsW6GArlTNbAQ/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075797/iU9KDUeq3RsW6GArlTNbAQ/original.webp[/img]</a> --?"[&amp;ModifierName]" -eqi "bless"|&amp;GlobalURL;[img width=40]<a href="https://files.d20.io/images/460075828/2l6zrhvt93XuGzjHZYWhvg/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075828/2l6zrhvt93XuGzjHZYWhvg/original.webp[/img]</a> --?"[&amp;ModifierName]" -eqi "bardic inspiration"|&amp;GlobalURL;[img width=40]<a href="https://files.d20.io/images/460075822/uM3hBrC8PqxIrNYdQpFGFw/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075822/uM3hBrC8PqxIrNYdQpFGFw/original.webp[/img]</a> --?"[&amp;ModifierName]" -inc "pass" -or "[&amp;ModifierName]" -inc "trace"|&amp;GlobalURL;[img width=40]<a href="https://files.d20.io/images/460075808/5_l5IPwTL4vpTUwM3XAzrQ/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075808/5_l5IPwTL4vpTUwM3XAzrQ/original.webp[/img]</a> --?"[&amp;ModifierName]" -inc "friends" -or "[&amp;ModifierName]" -inc "emboldening"|&amp;GlobalURL;[img width=40]<a href="https://files.d20.io/images/461150581/Zph-XSYGBX1bJEWtXtmy8w/original.webp[/img]" rel="nofollow">https://files.d20.io/images/461150581/Zph-XSYGBX1bJEWtXtmy8w/original.webp[/img]</a> --?"[&amp;ModifierName]" -inc "enhance"|&amp;GlobalURL;[img width=40]<a href="https://files.d20.io/images/461157768/0FJwLSKSJqjb13PUUJZZtw/original.webp[/img]" rel="nofollow">https://files.d20.io/images/461157768/0FJwLSKSJqjb13PUUJZZtw/original.webp[/img]</a> --?"[&amp;ModifierName]" -inc "genius" -or "[&amp;ModifierName]" -inc "flash"|&amp;GlobalURL;[img width=40]<a href="https://files.d20.io/images/461160393/6i4oIMX4alSCI19HEvYeng/original.webp[/img]" rel="nofollow">https://files.d20.io/images/461160393/6i4oIMX4alSCI19HEvYeng/original.webp[/img]</a> --?"[&amp;ModifierName]" -inc "bend" -or "[&amp;ModifierName]" -inc "luck"|&amp;GlobalURL;[img width=40]<a href="https://files.d20.io/images/461161641/fKk4iPQu1KllSPIsNVxwOA/original.webp[/img]" rel="nofollow">https://files.d20.io/images/461161641/fKk4iPQu1KllSPIsNVxwOA/original.webp[/img]</a> --?";guidance;bless;bardic inspiration;pass without trace;friends;enhance;emboldening;flash;genius;bend;luck;" -ninc "[&amp;ModifierName]"|&amp;GlobalURL;[img width=40]<a href="https://files.d20.io/images/460075798/cM1Se3JXPLhLYwtZ1dVoaA/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075798/cM1Se3JXPLhLYwtZ1dVoaA/original.webp[/img]</a> --&amp;LiveGlobalMsg|+[td width=80]+ [:GlobalModHash("[&amp;ModifierName]")][br][&amp;GlobalURL][br][#8f6239][&amp;ModifierName][/#][/td] --%| --&amp;LiveGlobalMsg|+[/tr][/t] --]| --?"[&amp;TraitsData]" -inc "Remarkable Athlete"|=RemAth;[&amp;PB] / 2 {CEIL}|=RemAth;0 --?"[&amp;TraitsData]" -inc "Alert" -and "[&amp;SkillType]" -eq "initiative_bonus"|[ --=Alert|5 --&amp;AlertBonus|[&amp;AlertURL][br][#8f6239]Alert[br]Bonus[/#] --&amp;AlertMarker|[ALERT] --]| --&gt;CalculateJoATBonus|[&amp;SkillType];[&amp;ProfType] --&gt;ApplySilverTongue| --&gt;ApplyReliableTalent| --?[$RemAth] -ne 0 -and "[&amp;ProficiencyAttr]" -ninc "pb" -and ";Strength;Dexterity;Constitution;" -inc "[&amp;SkillMod]" -and "[&amp;SkillType]" -ninc "_save" -or "[&amp;SkillType]" -eq "initiative"|&amp;RemAthBonus; [br]+ [$RemAth][&amp;RemarkableAthleteURL][br][#8f6239]Remarkable[br]Athlete[/#] --=RollTotal|[&amp;FinalRoll] [ROLL] + [$SkillBonus] [BONUSES] + [$LiveGlobalTotal] [GLOBALMODS] + [&amp;JoATVal] + [$Alert] [&amp;AlertMarker] [$RemAth] --?"[&amp;SkillType]" -eq "initiative_bonus"|[ --~|turnorder;replacetoken;@{selected|token_id};[$RollTotal] --]| --&amp;SkillRollURL|[img width=60 height=60]<a href="https://github.com/VirulentArc/Resources/blob/main/d20/bg3/Dice_Sets/[&amp;diceColor]/d20_[$SkillRoll.Raw].webp?raw=true#.png[/img]" rel="nofollow">https://github.com/VirulentArc/Resources/blob/main/d20/bg3/Dice_Sets/[&amp;diceColor]/d20_[$SkillRoll.Raw].webp?raw=true#.png[/img]</a> --&amp;SkillRollTotalURL|[img width=80 height=80]<a href="https://github.com/VirulentArc/Resources/blob/main/d20/bg3/Dice_Sets/[&amp;diceColor]/d20_[$RollTotal.Raw].webp?raw=true#.png[/img]" rel="nofollow">https://github.com/VirulentArc/Resources/blob/main/d20/bg3/Dice_Sets/[&amp;diceColor]/d20_[$RollTotal.Raw].webp?raw=true#.png[/img]</a> --&amp;SkillRollKeptURL|[img width=60 height=60]<a href="https://github.com/VirulentArc/Resources/blob/main/d20/bg3/Dice_Sets/[&amp;diceColor]/d20_[$SkillRoll.KeptDice(1)].webp?raw=true#.png[/img]" rel="nofollow">https://github.com/VirulentArc/Resources/blob/main/d20/bg3/Dice_Sets/[&amp;diceColor]/d20_[$SkillRoll.KeptDice(1)].webp?raw=true#.png[/img]</a> --&amp;SkillRollDroppedURL|[img width=60 height=60]<a href="https://github.com/VirulentArc/Resources/blob/main/d20/bg3/Dice_Sets/[&amp;diceColor]/d20_[$SkillRoll.DroppedDice(1)].webp?raw=true#.png[/img]" rel="nofollow">https://github.com/VirulentArc/Resources/blob/main/d20/bg3/Dice_Sets/[&amp;diceColor]/d20_[$SkillRoll.DroppedDice(1)].webp?raw=true#.png[/img]</a> --&amp;BottomFrame|[img width=300]<a href="https://files.d20.io/images/460075795/kK6CTXF5GFllNJICXWuL1g/original.webp[/img]" rel="nofollow">https://files.d20.io/images/460075795/kK6CTXF5GFllNJICXWuL1g/original.webp[/img]</a> --#parameterDelimiter|$$$ --?"[&amp;AbilityBonus]" -inc "Bonus"|&amp;TDA$$$[td [&amp;Bonus_Background]] --?"[&amp;AbilityBonus]" -inc "Bonus"|&amp;TDAC$$$[/td] --?"[&amp;ProfBonus]" -inc "Bonus"|&amp;TDP$$$[td [&amp;Bonus_Background]] --?"[&amp;ProfBonus]" -inc "Bonus"|&amp;TDPC$$$[/td] --?"[&amp;ExpertBonus]" -inc "Bonus"|&amp;TDE$$$[td [&amp;Bonus_Background]] --?"[&amp;ExpertBonus]" -inc "Bonus"|&amp;TDEC$$$[/td] --?"[&amp;ReliableTalentBonus]" -inc "Talent"|&amp;TDR$$$[td [&amp;Bonus_Background]] --?"[&amp;ReliableTalentBonus]" -inc "Talent"|&amp;TDRC$$$[/td] --?"[&amp;AlertBonus]" -inc "Bonus"|&amp;TDAL$$$[td [&amp;Bonus_Background]] --?"[&amp;AlertBonus]" -inc "Bonus"|&amp;TDALC$$$[/td] --?"[&amp;RemAthBonus]" -inc "Athlete"|&amp;TDRA$$$[td [&amp;Bonus_Background]] --?"[&amp;RemAthBonus]" -inc "Athlete"|&amp;TDRAC$$$[/td] --?"[&amp;SilverTongueBonus]" -inc "Tongue"|&amp;TDS$$$[td [&amp;Bonus_Background]] --?"[&amp;SilverTongueBonus]" -inc "Tongue"|&amp;TDSC$$$[/td] --?"[&amp;JackBonus]" -inc "J-o-A-T"|&amp;TDJ$$$[td [&amp;Bonus_Background]] --?"[&amp;JackBonus]" -inc "J-o-A-T"|&amp;TDJC$$$[/td] --#parameterDelimiter|; --?"[&amp;diceSound]" -ne ""|[ --a|[&amp;diceSound] --]| --?[$SkillRoll.Total] -eq 20|[ --&amp;RollOutput|CRITICAL[br]SUCCESS --&amp;RollStyle|style="color: #FFFAE4; text-shadow: 0 0 4px #FFD700, 0 0 8px #FFA500;" --]|[ --&amp;RollOutput|ROLL[br]TOTAL --&amp;RollStyle| --]| --?[$SkillRoll.Total] -eq 1|[ --&amp;RollOutput|CRITICAL[br]FAILURE --&amp;RollStyle|style="color: #e8325f; text-shadow: 0 0 4px #FF0000, 0 0 8px #B22222;" --]| --?"[$SkillRoll.RollText]" -eq "1d20"|[ --+|[c][t width=100% height=60][tr][td [&amp;DieFormat]][&amp;SkillRollURL][/td][/tr][/t][/c][c][t width=100% height=80 title="[$RollTotal.Text]"][tr][td [&amp;DieTotalFormat]][&amp;SkillRollTotalURL][/td][/tr][tr][td [&amp;RollStyle]][F:[&amp;FontType]:30][&amp;RollOutput][/F][/td][/tr][/t][/c][c][F:[&amp;FontType]:14][t width=100%][tr][&amp;TDA][&amp;AbilityBonus][&amp;TDAC][&amp;TDP][&amp;ProfBonus][&amp;TDPC][&amp;TDE][&amp;ExpertBonus][&amp;TDEC][&amp;TDR][&amp;ReliableTalentBonus][&amp;TDRC][&amp;TDAL][&amp;AlertBonus][&amp;TDALC][&amp;TDRA][&amp;RemAthBonus][&amp;TDRAC][&amp;TDS][&amp;SilverTongueBonus][&amp;TDSC][&amp;TDJ][&amp;JackBonus][&amp;TDJC][/t][/F][/c][c][&amp;LiveGlobalMsg][/c][c][t width=100%][tr][td][&amp;BottomFrame][/td][/tr][/t][/c] --]|[ --+|[c][t width=100% height=60][tr][td [&amp;DoubleDieFormat]][&amp;SkillRollKeptURL]&amp;nbsp;&amp;nbsp;[&amp;SkillRollDroppedURL][/td][/tr][/t][/c][c][t width=100% height=80 title="[$RollTotal.Text]"][tr][td [&amp;DieTotalFormat]][&amp;SkillRollTotalURL][/td][/tr][tr][td [&amp;RollStyle]][F:[&amp;FontType]:30][&amp;RollOutput][/F][/td][/tr][/t][/c][c][F:[&amp;FontType]:14][t width=100%][tr][&amp;TDA][&amp;AbilityBonus][&amp;TDAC][&amp;TDP][&amp;ProfBonus][&amp;TDPC][&amp;TDE][&amp;ExpertBonus][&amp;TDEC][&amp;TDR][&amp;ReliableTalentBonus][&amp;TDRC][&amp;TDAL][&amp;AlertBonus][&amp;TDALC][&amp;TDRA][&amp;RemAthBonus][&amp;TDRAC][&amp;TDS][&amp;SilverTongueBonus][&amp;TDSC][&amp;TDJ][&amp;JackBonus][&amp;TDJC][/t][/F][/c][c][&amp;LiveGlobalMsg][/c][c][t width=100%][tr][td][&amp;BottomFrame][/td][/tr][/t][/c] --]| --X| --:CalculateJoATBonus| --&amp;JoATVal| --&amp;JackBonus| --?"[&amp;TraitsData]" -inc "Jack of All Trades" -and "[%1%]" -ninc "_save"|[ --=Jack_Bonus|[*S:jack_bonus] --?"[%1%]" -inc "_mod"|&amp;JoATVal;[$Jack_Bonus] [JoAT] --?"[%1%]" -eq "initiative_bonus" -or "[%1%]" -inc "_mod" -or "[*S:[%2%]]" -eq 0 -and "[$Jack_Bonus]X" -ne "X"|&amp;JackBonus; [br]+ [$Jack_Bonus][br][&amp;JackOfAllTradesURL][br][#8f6239]J-o-A-T[br]Bonus[/#] --]| --&lt;| --:ApplySilverTongue| --?"[&amp;TraitsData]" -inc "Silver Tongue" -and "[$SkillRoll]" -lt "10" -and ";persuasion;deception;" -inc "[&amp;SkillType]"|[ --&amp;SilverTongueBonus| [br]10[br][&amp;SilverTongueURL][br][#8f6239]Silver[br]Tongue[/#] --&amp;FinalRoll|10 --]| --&lt;| --:ApplyReliableTalent| --?"[&amp;TraitsData]" -inc "Reliable Talent" -and "[&amp;ProficiencyAttr]" -ne "0" -and "[&amp;SkillType]" -ninc "_save" -and "[&amp;SkillType]" -ne "initiative_bonus"|[ --?"[$SkillRoll.RollText]" -eq "1d20" -and "[$SkillRoll]" -lt "10"|[ --&amp;ReliableTalentBonus| [br]10[br][&amp;ReliableTalentURL][br][#8f6239]Reliable[br]Talent[/#] --&amp;FinalRoll|10 --]| --?"[$SkillRoll.RollText]" -eq "2d20kh1" -and "[$SkillRoll.KeptDice(1)]" -lt "10" -and "[$SkillRoll.DroppedDice(1)]" -lt "10"|[ --&amp;ReliableTalentBonus| [br]10[br][&amp;ReliableTalentURL][br][#8f6239]Reliable[br]Talent[/#] --&amp;FinalRoll|10 --]| --?"[$SkillRoll.RollText]" -eq "2d20kl1" -and "[$SkillRoll.KeptDice(1)]" -lt "10" -or "[$SkillRoll.DroppedDice(1)]" -lt "10"|[ --&amp;ReliableTalentBonus| [br]10[br][&amp;ReliableTalentURL][br][#8f6239]Reliable[br]Talent[/#] --&amp;FinalRoll|10 --]| --]| --&lt;| --:GetGlobalModifiers|GlobalRepeatingSectionName;HashName --?"[%1%]" -eq "repeating_savemod"|&amp;_ggmPrefix;global_save|&amp;_ggmPrefix;global_skill --~|hash;set;[%2%] --Rfirst|[*S:character_id];[%1%] --?"[*R:[&amp;_ggmPrefix]_active_flag]" -eq "NoRepeatingAttributeLoaded"|ENDGGM --:_ggmLoop| --?"[*R:[&amp;_ggmPrefix]_active_flag]" -eq "1"|[ --=_ggmTmpRoll|[*R:[&amp;_ggmPrefix]_roll] --h:[%2%]("[*R:[&amp;_ggmPrefix]_name]")|[$_ggmTmpRoll.Total] --]| --Rnext| --?"[*R:global_save_name]" -ne "NoRepeatingAttributeLoaded"|_ggmLoop --:ENDGGM| --&lt;| --:ChangeDice| --#title|Choose Dice Set --#whisper|self --#emoteState|0 --~|array;define;DiceSets;Default;Dragon_Flame;Behir_Blue;Illithid_Purple;Shining_Honour;Dark_Urge;Underdark;Blue_Crystal;Nebula;Eilistraee;Rosymorn;Steampunk;Dark_Justicar;Blue_Silk;Clouds;Happy_Face;Wyvern_Black;Wyvern_Green;Purple_Hearts;Dwarven_Stone;Golden_Skull;Rose;Sapphire;Ruby;Psychic_Power;Classic_Gold;Classic_Silver;Classic_White;Druid;Paladin;Pink_Gold;Shield;Loviatar --&amp;DicePerRow|3 --&amp;DieCounter|1 --&amp;AllDice|[br][br][t width=100% style="position: relative ; left: -12px ; "][tr] --%loop|foreach;DiceSets --~DiceTitle|string;replaceall;_; ;[&amp;loop] --&amp;AllDice|+[td][rbutton][img width=80 height=80]<a href="https://github.com/VirulentArc/Resources/blob/main/d20/bg3/Dice_Sets/[&amp;loop]/d20_10.webp?raw=true#.png[/img]::WriteDice;[&amp;loop][/rbutton][br][&amp;DiceTitle][/td]" rel="nofollow">https://github.com/VirulentArc/Resources/blob/main/d20/bg3/Dice_Sets/[&amp;loop]/d20_10.webp?raw=true#.png[/img]::WriteDice;[&amp;loop][/rbutton][br][&amp;DiceTitle][/td]</a> --?[= [&amp;DieCounter] % [&amp;DicePerRow] ] -eq 0|&amp;AllDice;+[/tr][tr] --&amp;DieCounter|[= [&amp;DieCounter] + 1 ] --%| --&amp;AllDice|+[/tr][/t] --+|[&amp;AllDice] --X| --:WriteDice| --!a:[&amp;CharID]|!dice_set:[&amp;reentryval] --~DiceR|string;replaceall;_; ;[&amp;reentryval] --+|[c][t width=100% height=60][tr][td [&amp;DieFormat]][img width=60]<a href="https://github.com/VirulentArc/Resources/blob/main/d20/bg3/Dice_Sets/[&amp;reentryval]/d20_10.webp?raw=true#.png[/img][/td][/tr][/t][/c][c][t" rel="nofollow">https://github.com/VirulentArc/Resources/blob/main/d20/bg3/Dice_Sets/[&amp;reentryval]/d20_10.webp?raw=true#.png[/img][/td][/tr][/t][/c][c][t</a> width=100% height=80][tr][td [&amp;DieTotalFormat]][img width=80]<a href="https://github.com/VirulentArc/Resources/blob/main/d20/bg3/Dice_Sets/[&amp;reentryval]/d20_20.webp?raw=true#.png[/img][/td][/tr][tr][td][F:[&amp;FontType]:30][&amp;RollOutput][/F][/td][/tr][/t][/c][c][t" rel="nofollow">https://github.com/VirulentArc/Resources/blob/main/d20/bg3/Dice_Sets/[&amp;reentryval]/d20_20.webp?raw=true#.png[/img][/td][/tr][tr][td][F:[&amp;FontType]:30][&amp;RollOutput][/F][/td][/tr][/t][/c][c][t</a> width=100%][tr][td][&amp;BottomFrame][/td][/tr][/t][/c][br][br][br][F:[&amp;FontType]:30][c][t width=100%][tr][td]Dice Set changed to[br][br][&amp;DiceR]![/td][/tr][/t][/c][/F] --+|[t width=100%][tr][td [&amp;Button_BG]][rbutton][b]Restart[/b]::RestartMod[/rbutton][/td][/tr][/t] --X| }} Check out my profile for my other Mods
Update to 2.0.1 With some feedback from the Discord server(thanks Si), I fixed a bug with the display of the modifier number. Previously, if you rolled twice or more from the same card it would continually add + every time, ie. ++1 etc. Also, for overall uniformity, a bonus of 0 will show up as +0. Also added a button to restart the Mod once the player has chosen a Dice Set.
Very cool! Love the aesthetic. Easy to install too.&nbsp;
1765069794
keithcurtis
Forum Champion
Marketplace Creator
API Scripter
What an amazing project!
Thanks Fellas!
1765232179

Edited 1765232299
first - woah, that's awesome. thanks for making it! I do have some questions: so when it rolls, there is 2 dice images. Top and Bottom - what does the top one mean, if the bottom is the roll total? Also, if I need them to roll, a disadvantage with perception, how do they turn it on and roll with disadvantage? when I click on the D/A it rolls the initiative - I assumed D/A was the toggle for disadvantage/advantage I have no rogues in my party but reliable talent shows even though that is turned off in the sheet as well. ------- how do I add or can you add a dice roll sfx to the script?
The top die would be your actual roll and the bottom die the roll total. There's D and A, disadvantage and advantage, for every roll. I'll have to look into reliable talent showing up when it shouldn't, that's definitely not intented. Is it happening for every skill or just initiative? You can't add SFX to the chat window, unfortunately. Gifs are the only animations you can have and they are too limited to make anything decent. You can add a sound from your jukebox, though. Find&nbsp; --&amp;diceSound| and add the name of your sound from your jukebox. --&amp;diceSound|nameofsoundhere