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

Scritpcard API Working and Sharing.

1621204897
David M.
Pro
API Scripter
Groovy!
David M Thank you!  I will check it out.
1621291781

Edited 1621567271
Page Assets Report 1.1 Here is a handy little tool to report out on the various tokens on a page.  If you click on the token name, it will ping and center the associated token on the map.   Update (5.20.21) Version 1.1:  Added ability to filter assets by range from selected token (in units).The code is fairly simple, so you could easily customize it to your desire.  Included below is the ScriptCard Page Asset code and an associated PingToken API Function I kind of rewrote based on code I saw posted in other forums.   This script demonstrates: Reentry functionality and [rbutton] Page attributes Array functions on tokens Using html table syntax to improve output Subroutines Calling APIs Loops Displaying images Page Assets ScriptCard: !script{{ --:|___Page Assets_1.1 --/|neat trick, you can default rentry vals by assigning them before you ever make a call --&reentryval|10 --:TOP| --#reentrant|PageAssets --#title|Page Assets Report --#titleCardBackground|#03038a --#oddRowBackground|#FFFFFF --#evenRowBackground|#FFFFFF --#buttonbackground|#FFFFFF --#buttontextcolor|#0905f2 --#buttonbordercolor|#FFFFFF --#bodyFontSize|10px --#sourceToken|@{selected|token_id} --#hidecard|0 --#whisper|self --#debug|0 --#activepage|[*C:playerpageid] --#leftsub|[*P:name] --#rightsub|[*P:width] x [*P:height] --=Rng|[&reentryval] --&tbl| --&tblCharacters| --&tblNPCs| --&tblMapItems| --&tblGMTokens| --&tblOther| --&tStyle|style = "width:100%;padding:1px;border-spacing:0px;border-collapse:collapse;text-shadow: 0px 0px 0px black;border:0px dashed black;" --&trStyle1|style="border-top:1px dashed black;" --&trStyle2|style="border:0px dashed black;" --&tdStyle1|style="width:30%;text-align:left;background-color:#FFFFFF;font-size:80%" --&tdStyle2|style="width:30%;text-align:center;background-color:#FFFFFF;font-size:80%" --&tdStyle3|style="width:40%;text-align:right;background-color:#FFFFFF;font-size:80%" --~TokenCnt|array;pagetokens;alltokens;@{selected|token_id} --/|Loop through all of the tokens in "alltokens" --~TokenId|array;getfirst;alltokens --?[&TokenId] -eq ArrayError|ENDLOOP --:LOOPCHECK| --/|Skip this token if it is out of the defined range -->IS_TOKEN_IN_RANGE|@{selected|token_id};[&TokenId];[$Rng] --?[&IN_RANGE] -eq 0|CONTINUE --&CharId|[*[&TokenId]:t-represents] --&tname|[*[&TokenId]:t-name] --~len|string;length;[&tname] --/+debug|[img width=25 height=25][*[&TokenId]:t-imgsrc][/img] [&tname] ([$len]) [*[&TokenId]:t-layer] [*[&TokenId]:t-represents] --?[$len.Total] -gt 0|SKIP1 --&tname|Blank --:SKIP1| --&IsDrawingType|Drawing --?[*[&TokenId]:t-isdrawing] -eq true|SKIP2 --&IsDrawingType|Token --:SKIP2| --/|Round Width and Height to reduce number of potential numbers after decimal point --=Width|[*[&TokenId]:t-width] \ 1 --=Height|[*[&TokenId]:t-height] \ 1 --&Row|[tr [&trStyle1]] [td [&tdStyle1]] [img width=25 height=25][*[&TokenId]:t-imgsrc][/img] [/td] [td [&tdStyle2]] [rbutton][&tname]::FIND_TOKEN;[&TokenId][/rbutton] [/td] [td [&tdStyle3]] [*[&TokenId]:t-layer] [/td] [/tr] [tr [&trStyle2]] [td [&tdStyle1]] [$Width.Total]   x   [$Height.Total]&nbsp([$DIST.Total]) [/td] [td [&tdStyle2]] [&IsDrawingType] [/td] [td [&tdStyle3]] [&TokenId] [/td] [/tr] --/| Test to see what kind of token we are looking at --/?"[*[&CharId]:PlayerCharacter]" -eq "1"|ISCHARACTER --?"[*[&TokenId]:t-represents]" -inc "-" -and "[*[&TokenId]:NPC]" -ne "1"|ISCHARACTER --?"[*[&TokenId]:NPC]" -eq "1"|ISNPC --?"[*[&TokenId]:t-layer]" -eq "gmlayer"|ISGMTOKEN --?"[*[&TokenId]:t-layer]" -eq "map"|ISMAPTOKEN -->ISOTHER| --/: Types of Tokens to Group and report on (Character, NPC, Map Item, ...) --/: Track for all tokens (Name, TokenId, Layer, _subtype, imgsrc, represents, isdrawing, ) --:ISCHARACTER| --&tblCharacters|+ [&Row] -->CONTINUE| --:ISNPC| --&tblNPCs|+ [&Row] -->CONTINUE| --:ISGMTOKEN| --&tblGMTokens|+ [&Row] -->CONTINUE| --:ISMAPTOKEN| --&tblMapItems|+ [&Row] -->CONTINUE| --:ISOTHER| --&tblOther|+ [&Row] -->CONTINUE| --:CONTINUE| --~TokenId|array;getnext;alltokens --?[&TokenId] -ne ArrayError|LOOPCHECK --:ENDLOOP| -->SECTION_HEADER|Range From Selected Token ([$Rng.Total] units) --/| Ranges: 1, 3, 5, 10, 25, 50, 100, All --+|[c][rbutton]1::TOP;1[/rbutton]  [rbutton]3::TOP;3[/rbutton]  [rbutton]5::TOP;5[/rbutton]  [rbutton]10::TOP;10[/rbutton]  [rbutton]25::TOP;25[/rbutton]  [rbutton]50::TOP;50[/rbutton]  [rbutton]100::TOP;100[/rbutton]  [rbutton]All::TOP;1000[/rbutton][/c] -->SECTION_HEADER|Legend --&tblLegend|[tr [&trStyle1]] [td [&tdStyle1]][b] Image [/b][/td] [td [&tdStyle2]][b] Name(Click to find) [/b][/td] [td [&tdStyle3]][b] Layer [/td] [/b][/tr] [tr [&trStyle2]] [td [&tdStyle1]][b] Size (Range)[/b][/td] [td [&tdStyle2]][b] Token/Drawing [/b][/td] [td [&tdStyle3]][b] Token-Id [/td] [/b][/tr] --+| [t [&tStyle]] [&tblLegend] [/t] -->SECTION_HEADER|Characters --+tStyle --+| [t [&tStyle]] [&tblCharacters] [/t] -->SECTION_HEADER|NPCs --+|[t [&tStyle]] [&tblNPCs][/t] -->SECTION_HEADER|GM Tokens --+|[t [&tStyle]] [&tblGMTokens][/t] -->SECTION_HEADER|Map Items --+|[t [&tStyle]] [&tblMapItems][/t] -->SECTION_HEADER|Other --+|[t [&tStyle]] [&tblOther][/t] --X| --<| --:FIND_TOKEN|TokenId --#hidecard|1 --@ping-token|_[&reentryval] _[&SendingPlayerID] --X| --<| --:SECTION_HEADER|Title --&hdrT|style="width:100%;padding:1px;border-spacing:0px;border-collapse:collapse;text-shadow: 0px 0px 1px black;border: 0px solid black;" --&hdrTR|style="border:0px solid black;" --&hdrTD|style="width:100%;background-color:#d8d8e6;font-size:110%;font-weight:bold;text-align:center" --+|[t [&hdrT]] [tr [&hdrTR]] [td [&hdrTD]] [c] [%1%] [/c] [/td] [/tr] [/t] --<| --:IS_TOKEN_IN_RANGE|Anchor Token, Checked Token, Range (in units) --&AnchorToken|[%1%] --&TestToken|[%2%] --=Range|[%3%] --&IN_RANGE|0 --/:CHECK DISTANCE IN UNITS.| --~DIST|euclideandistance;[&AnchorToken];[&TestToken] --?[$DIST] -gt [$Range]|&IN_RANGE;0|&IN_RANGE;1 --<|Return }} Ping-Token API Script: Required for the Ping/Find Token logic to work on('ready', () => { const getGM = (gmid) => { if (gmid === 'API'){ log('Player is API'); findObjs({type:'player'}) .forEach(p=>{ log('PlayerInfo: ' + p.id + "," + p.get("_type") + "," + p.get("_d20userid") + "," + p.get("_displayname")); if(playerIsGM(p.id)){ gmid = p.id; }}); } else { log('Player is gm'); } return gmid; } on('chat:message', (msg) => { if ('api' === msg.type && /^!ping-token\b/i.test(msg.content)) { // Used by SelectManager to preserve selected token when nesting APIs if('API' === msg.playerid) msg.selected = getSelected(); log('msg.content:' + msg.content); log('msg.playerid:' + msg.playerid); const gm = playerIsGM(msg.playerid); // Returns GM_ID if msg.playerid is API const gmid = getGM(msg.playerid); log('gm/gmid:' + gm + '/' + gmid); // const pname = getObj('player', msg.playerid).get('_displayname'); const args = msg.content.split("--"); log('args:' + args); const token_id = (args[1] || '').trim(); const player_id = (args[2] || '').trim(); log('token_id:' + token_id); log('player_id:' + player_id); if (token_id) { const t = getObj('graphic',token_id); if (t) { if (player_id){ log('Sending Ping! to Player' + t.get("left")+ ", " + t.get("top") + ", " + t.get("_pageid") + ", " + player_id); sendPing(t.get("left"), t.get("top"), t.get("_pageid"), player_id, true, player_id); const p = getObj('player', player_id); sendChat('PingToken', `/w gm Player <code>${p.get("_displayname")}</code> pinging token <code>${t.get("name")}</code>.`); } else { log('Sending Ping to GM' + t.get("left")+ ", " + t.get("top") + ", " + t.get("_pageid") + ", " + gmid); sendPing(t.get("left"), t.get("top"), t.get("_pageid"), gmid, true, gmid); } } else { sendChat('PingToken', `/w gm No tokens with token_id <code>${token_id}</code> and owned by you found on your current page.`); } } else { sendChat('PingToken', `/w gm Please use the format <code>!ping-token --token_id</code>.`); } } }); log("-=> Ping Token Loaded (!ping-token) [Last Edited May 17th 2021] <=-"); });
This interface really needs a like  option.  The ability to acknowledge work without derailing a conversation is helpful.
1621380477

Edited 1621465799
Kurt J.
Pro
API Scripter
5E Lightning Bolt (Easily changeable for other line-based spells) NOTE: This requires v1.2.8+ of ScriptCards and uses AlterBars to apply damage. NOTE 2: Updated on 5/19/2021 to fix a bug in the saving throw roll This script requires a selected token and a target token. The token can be a non-creature token if you want to create one for spell targeting. The script will calculate a line between the two tokens and determine which squares are impacted by the spell and apply damage to the tokens hit taking resistance, vulnerability, and immunity into account. The script can easily be updated for other line-based spells by changing the variables near the top of the script, including spellName, spellDamageDice, spellDamageDieType, damageType, and saveType. You can alter the list of spell levels the player can select from by changing the SpellLevel roll query. The code contains routines for both AlterBars and TokenMod to apply damage, but I couldn't figure out how to get Token-Mod to stop at 0 when modifying the bars, so I am using AlterBars. :) Demo: In this example, the Orcs are normal, the Gorgon is immune to lightning damage, Henrietts (the unicorn) is resistant, and Fred the Lion is vulnerable. I tried to include lots of comments in the code to detail what is happening as well. !script {{ --/|Lightning Bolt script. Can be changed to other line-based spells by updating these parameters: --&spellName|Lightning Bolt --/|Note: because the spell will be cast at a min level of 3, we use 5 here to get the total dice (5+3=8) --&spellL0DamageDice|5 --/|Prompt for the spell level. Update this to account for the minimum level of the spell --=SpellLevel|?{Spell Slot Level?|3|4|5|6|7|8|9} --&spellDamageDieType|6 --&damageType|lightning --&saveType|dexterity --/|Source Token is the caster, and target token is the "end of the line". Can be a non-creature (no represents) token. --#sourcetoken|@{selected|token_id} --#targettoken|@{target|token_id} --/|Get all of the tokens on the page so we can cache their positions --~|array;pagetokens;alltokens;@{target|token_id} --#leftsub|Save DC @{selected|spell_save_dc} --#rightsub|Slot Level: [$SpellLevel] --#title|[&spellName] --/|Calculate damage based on spell slot. --=DamageDice|[$SpellLevel.Total] + [&spellL0DamageDice] --=Damage|[$DamageDice.Total]d[&spellDamageDieType] --=HalfDamage|[$Damage.Total] \ 2 --=DoubleDamage|[$Damage.Total] * 2 --=QuarterDamage|[$Damage.Total] \ 4 --/|Since we want to be able to hover over a roll and see the dice details, output the rolled damage at the --/|top of the card. If all critters make their save, the half damage roll won't contain the details. --+|[c][b]Damage Roll: [/b][$Damage][/c] --+|  --/|Create an array to hold the tokens that are intersected by the line. --~|array;define;tokensHit; --/|Call the "checkForTokenHits" subroutine. The passed parameter will be the per-space VFX. Leave blank for none. -->checkForTokenHits|burn-frost --/|The first item in the array will be a blank dummy item, so remove it. --~|array;removeat;tokensHit;0 --/|Loop through the tokensHit tokens and roll saves for each one and apply damage --~tokenid|array;getfirst;tokensHit --?[&tokenid] -eq ArrayError|endOutput --:loopDisplay| --=SaveRoll|1d20 + [*[&tokenid]:[&saveType]_save_bonus] --/|Compare the save roll to the save DC and either apply full or half damage --?"[*[&tokenid]:npc_immunities]" -inc "[&damageType]"|Immune --?"[*[&tokenid]:npc_resistances]" -inc "[&damageType]"|Resistant --?"[*[&tokenid]:npc_vulnerabilities]" -inc "[&damageType]"|Vulnerable --?[$SaveRoll.Total] -lt @{selected|spell_save_dc}|>ApplyDamageAlterbars;[&tokenid];3;-[$Damage.Total]|>ApplyDamageAlterbars;[&tokenid];3;-[$HalfDamage.Total] --?[$SaveRoll.Total] -ge @{selected|spell_save_dc}|madeSave --/|Here are various damage applications if the creature is immune, resistant, or vulnerable. In some cases, we will reuse output lines, --/|for example, a resistant creature that fails its save will jump to "madeSave", since that is the correct damage amount. (half), while --/|a vulnerable creature that makes its save will jump to "FailedSave" since that will be normal damage. --/|Output a line for a failed saving throw (we will also jump here for a vulnerable creature that MAKES its save) --:FailedSave| --+[*[&tokenid]:t-name]:|Save [$SaveRoll] [r][$Damage] [&damageType][/r] --^afterSave| --:Immune| --+[*[&tokenid]:t-name]:|is not effected by the spell! --^afterSave| --:Resistant| --?[$SaveRoll.Total] -lt @{selected|spell_save_dc}|>ApplyDamageAlterbars;[&tokenid];3;-[$HalfDamage.Total]|>ApplyDamageAlterbars;[&tokenid];3;-[$QuarterDamage.Total] --?[$SaveRoll.Total] -lt @{selected|spell_save_dc}|madeSave --+[*[&tokenid]:t-name]:|Save [$SaveRoll] [r][$QuarterDamage] [&damageType][/r] --^afterSave| --:Vulnerable| --?[$SaveRoll.Total] -lt @{selected|spell_save_dc}|>ApplyDamageAlterbars;[&tokenid];3;-[$DoubleDamage.Total]|>ApplyDamageAlterbars;[&tokenid];3;-[$Damage.Total] --?[$SaveRoll.Total] -ge @{selected|spell_save_dc}|FailedSave --+[*[&tokenid]:t-name]:|Save [$SaveRoll] [r][$DoubleDamage] [&damageType][/r] --^afterSave| --/|Output a line for a successful saving throw --:madeSave| --+[*[&tokenid]:t-name]:|Save [$SaveRoll] [r][$HalfDamage] [&damageType][/r] --:afterSave| --~tokenid|array;getnext;tokensHit --?[&tokenid] -ne ArrayError|loopDisplay --:endOutput| --X| --:ApplyDamageTokenmod|Parameters are tokenid;bar#;amount --@token-mod|_ignore-selected _ids [%1%] _set bar[%2%]_value|[%3%] --<| --:ApplyDamageAlterbars|Parameters are tokenid;bar#;amount --@alter|_target|[%1%] _bar|[%2%] _amount|-[%3%] _show|none --<| --:checkForTokenHits|Y as %1% for VFX -->createTokenLookup| --=X1|[*S:t-left] \ 70 --=Y1|[*S:t-top] \ 70 --=X2|[*T:t-left] \ 70 --=Y2|[*T:t-top] \ 70 --?[$X1] -lt [$X2]|=SX;1|=SX;-1 --?[$Y1] -lt [$Y2]|=SY;1|=SY;-1 --=DX|[$X2] - [$X1] {ABS} --=DY|[$Y2] - [$Y1] {ABS} --=ERR|[$DX] - [$DY] --=Y|[$Y1.Total] --=X|[$X1.Total] --%L|1;50 -->checkTokens|[$X];[$Y] --/|IF we passed a visual effect specifier in %1%, create a point VFX in the square --?"X[%1%]X" -ne "XX" |[ --=VX|[$X] * 70 + 35 --=VY|[$Y] * 70 + 35 --vpoint|[$VX] [$VY] [%1%] --]| --?[$X.Total] -eq [$X2.Total] -and [$Y.Total] -eq [$Y2.Total]|%! --=E2|[$ERR.Total] * 2 --=NDY|[$DY] {NEGATE} --?[$E2] -gt [$NDY]|[ --=ERR|[$ERR] - [$DY] --=X|[$X] + [$SX] --]| --?[$E2] -lt [$DX]|[ --=ERR|[$ERR] + [$DX] --=Y|[$Y] + [$SY] --]| --%| --/|Remove the caster from the list of hit tokens --~|array;remove;tokensHit;@{selected|token_id} --<| --/|Reads the variables created by createTokenLookup to find any tokens that occupy a given space. --:checkTokens|x;y --?"X[&tok[%1%]-[%2%]]X" -ne "XX"|[ --~split|string;split;!;[&tok[%1%]-[%2%]] --%P|1;[$splitCount.Total];1 --=var|split[&P] --?"X[&[$var.RollText]]X" -eq "XX"|% --~exists|array;indexof;tokensHit;[&[$var.RollText]] --?[&exists] -ne ArrayError|skipAdd --?[&[$var.RollText]] -eq ArrayError|skipAdd --~|array;add;tokensHit;[&[$var.RollText]] --:skipAdd| --%| --<| --/|Creates a series of string variables with names like 'tok12-15' which represent the various squares that are --/|occupied by tokens on the page. Handle 1x1, 2x2, and 3x3 tokens by simply adding extra squares in the appropriate --/|pattern around the center point location. The result is that if there are two tokens at 12,15, the tok12-15 string --/|will contain something like "-asln34njfn2nafd!-sdnfklaserfs" (IDs separated by exclamation points) that we can use to --/|quickly evaluate hits by essentially asking "what is in square 12x15" by just reading the variable. --:createTokenLookup| --~tokenid|array;getfirst;alltokens --:tokenSetupLoop| --?[&tokenid] -eq ArrayError|endSetupLoop --=tLeft|[*[&tokenid]:t-left] - 1 \ 70 --=tTop|[*[&tokenid]:t-top] - 1 \ 70 --=tWidth|[*[&tokenid]:t-width] --?[$tWidth] -eq 70|[ --&tok[$tLeft]-[$tTop]|+[&tokenid]! --/+[*[&tokenid]:character_name]|At [$tLeft],[$tTop] : [&tok[$tLeft.Total]-[$tTop.Total]] --]| --?[$tWidth] -eq 140|[ --=NX|[$tLeft] + 1 --=NY|[$tTop] + 1 --&tok[$tLeft]-[$tTop]|+[&tokenid]! --&tok[$tLeft]-[$NY]|+[&tokenid]! --&tok[$NX]-[$tTop]|+[&tokenid]! --&tok[$NX]-[$NY]|+[&tokenid]! --]| --?[$tWidth] -eq 210|[ --=PX|[$tLeft] - 1 --=PY|[$tTop] - 1 --=NX|[$tLeft] + 1 --=NY|[$tTop] + 1 --&tok[$tLeft]-[$tTop]|+[&tokenid]! --&tok[$PX]-[$PY]|+[&tokenid]! --&tok[$tLeft]-[$PY]|+[&tokenid]! --&tok[$NX]-[$PY]|+[&tokenid]! --&tok[$PX]-[$tTop]|+[&tokenid]! --&tok[$NX]-[$tTop]|+[&tokenid]! --&tok[$PX]-[$NY]|+[&tokenid]! --&tok[$tLeft]-[$NY]|+[&tokenid]! --&tok[$NX]-[$NY]|+[&tokenid]! --]| --~tokenid|array;getnext;alltokens --^tokenSetupLoop| --:endSetupLoop| --<| }}
1621398595

Edited 1621568213
Mark Token Scriptcards .&nbsp; I'm posting at the request of @Craven a set of scripts I use to set and clear status markers on tokens.&nbsp; These are incorporated in my larger suite of Macros and NPC/DM Tool Suite I plan to release soon.&nbsp; There are actually 3 scripts: Mark Token - Select predefined status marker and output descriptive text Unmark Token - Unmark previously established status markers, one at a time Clear Token - Clears all status markers on a token Requirements: ScriptCards 1.2.3 API TokenMod API (Make sure to turn on the "Players can IDs" option.&nbsp; You can access a toggle option to this setting with the !token-mod --help command. You will probably need to edit the list of StatusMarker associations as this is based on some third party Roll20 marketplace status markers I purchased.&nbsp; Just edit where I define&nbsp; arySM in each of the scripts below to include the StatusMarkers IDs that you use in your games.&nbsp; Use !token-mod --help to get a list of markers available.&nbsp;&nbsp; Mark Token Code !script {{ --/|___Mark_Token_3.1_____ --#reentrant|MarkToken --#title|Set Condition/Status --#titleCardBackground|#932729 --#whisper|self --#oddRowBackground|#FFFFFF --#evenRowBackground|#FFFFFF --#buttonbackground|#FFFFFF --#buttontextcolor|#0905f2 --#buttonbordercolor|#FFFFFF --#debug|0 --&amp;TokenId|@{selected|token_id} --&amp;tStyle|style="width:100%;padding:1px;border-spacing:0px;border-collapse:collapse;text-shadow: 0px 0px 0px black;border:0px dashed black;" --&amp;trStyle1|style="border:0px dashed black;" --&amp;tdStyle1|style="width:50%;text-align:left;background-color:#FFFFFF;font-size:100%" --&amp;tdStyle2|style="width:50%;text-align:left;background-color:#FFFFFF;font-size:100%" --=Cond_Col|1 --=Stat_Col|1 --/| Initialize my defined list of StatusMarkers in pairs of values (StatusMarkerId;Name) --/| This list includes Roll20 Marketplace Markers I purchased. You will need to establish the default Status Markers for your campaigns based on your inventory of markers. --/| Use !token-mod --help to see you list /w names. Copy this list down to the Unmark and Clear scrips as well. --~|array;define;arySM;Blind::243718;Blinded;Deafened::243729;Deafened;Exhaustion_1::243735;Exhaustion 1;Exhaustion_2::243738;Exhaustion 2;Exhaustion_3::243740;Exhaustion 3;Exhaustion_4::243743;Exhaustion 4;Exhaustion_5::243746;Exhaustion 5;Exhaustion_6::243749;Exhaustion 6;Frightened::243759;Frightened;Grappled::243762;Grappled;Incapacitated::243777;Incapacitated;invisible::3443126;Invisible;Paralyzed::243784;Paralyzed;petrified::3443129;Petrified;poisoned::3443130;Poisoned;prone::3443131;Prone;restrained::3443134;Restrained;stunned::3443137;Stunned;Unconscious::243821;Unconscious;aid-1::3443140;Aid;bane::3443143;Bane;inspired::3443148;Inspired;Bless::243716;Blessed;concentrating-2::3443113;Concentrating;cursed::3443117;Cursed;dead;Dead;disarmed::3443157;Disarmed;drunk::3443120;Drunk;Size_Enlarge::243805;Enlarged;flying-1::3443122;Flying;haste::3443146;Haste;32_buffed::328632;Heroism;Hex::243768;Hexed;Stealth::243814;Stealth/Hidden;Hunters_Mark::243771;Hunters Mark;37_cursed::328637;Cursed;mirrorimage-2::3443153;Mirror Image;Rage::243799;Rage;shielded::3443155;Shielded;Size_Reduce::243807;Shrunk;sleeping::3443136;Sleeping;slowed::3443156;Slowed;strong;Strong;Wet::243829;Wet;natural-weapon::3443163;Beast Shape --~|array;define;aryConditions;Blinded;Charmed;Deafened;Exhaustion 1;Exhaustion 2;Exhaustion 3;Exhaustion 4;Exhaustion 5;Exhaustion 6;Frightened;Grappled;Incapacitated;Invisible;Paralyzed;Petrified;Poisoned;Prone;Restrained;Stunned;Unconscious --/|Run through the array of SMs and break into Condition or Status --~SM_TokenId|array;getfirst;arySM --/+Debug|SM_TokenId: [&amp;SM_TokenId] --:LOOPSTART| --?[&amp;SM_TokenId] -eq ArrayError|LOOPEND --~SM_Name|array;getnext;arySM --/+Debug|SM_Name: [&amp;SM_Name] --/| Test to see if this is a condition or status --~COND_INDEX|array;indexof;aryConditions;[&amp;SM_Name] --/+Debug|Cond_Index: [&amp;COND_INDEX] --&amp;tbl|[td [&amp;tdStyle1]][rbutton][&amp;SM_Name]::SET_STATUSMARK;[&amp;TokenId]\[&amp;SM_Name][/rbutton][/td] --?[&amp;COND_INDEX] -eq ArrayError|IS_STATUS|IS_COND --:IS_COND| --/| Are we on column 1 or 2? --?[$Cond_Col.Total] -eq 1|COND_1|COND_2 --:COND_1| --&amp;tbl|[tr [&amp;trStyle1]] [&amp;tbl] --=Cond_Col|2 --&amp;tblCond|+ [&amp;tbl] --^CONTINUE| --:COND_2| --&amp;tbl|[&amp;tbl] [/tr] --=Cond_Col|1 --&amp;tblCond|+ [&amp;tbl] --^CONTINUE| --:IS_STATUS| --?[$Stat_Col.Total] -eq 1|STAT_1|STAT_2 --:STAT_1| --&amp;tbl|[tr [&amp;trStyle1]] [&amp;tbl] --=Stat_Col|2 --&amp;tblStat|+ [&amp;tbl] --^CONTINUE| --:STAT_2| --&amp;tbl|[&amp;tbl] [/tr] --=Stat_Col|1 --&amp;tblStat|+ [&amp;tbl] --^CONTINUE| --:CONTINUE| --~SM_TokenId|array;getnext;arySM --^LOOPSTART| --:LOOPEND| --/| Complete the tables based on where we ended up? --?[$Cond_Col] -eq 1|COND_NO_BLANK_CELLS &amp;tblCond|+ [td][/td] --:COND_NO_BLANK_CELLS| --?[$Stat_Col] -eq 1|STAT_NO_BLANK_CELLS &amp;tblStat|+ [td][/td] --:STAT_NO_BLANK_CELLS| --/~LenS|string;length;[&amp;tblStat] --/+Debug2| Length Cond: [&amp;LenC] Stat: [&amp;LenS] --&amp;tblCond|[t [&amp;tStyle]] [&amp;tblCond] [/tr] [/t] --&amp;tblStat|[t [&amp;tStyle]] [&amp;tblStat] [/tr] [/t] --/~LenS|string;length;[&amp;tblStat] --/+Debug3| Length Cond: [&amp;LenC] Stat: [&amp;LenS] --&gt;SECTION_HEADER|Mark Conditions --+|[&amp;tblCond] --&gt;SECTION_HEADER|Mark Status --+|[&amp;tblStat] --X| --:SET_STATUSMARK| --~Arg|string;split;\;[&amp;reentryval] --/+Debug|[&amp;reentryval] --/+Debug|[&amp;Arg1] [&amp;Arg2] --&amp;TokenId|[&amp;Arg1] --&amp;SM|[&amp;Arg2] --#titleCardBackground|#932729 --#oddRowBackground|#CEC7B6 --#evenRowBackground|#B6AB91 --#Title|[&amp;SM] --#leftsub|[*[&amp;TokenId]:t-name] --#rightsub|Status --#hidecard|0 --C[&amp;SM]|Blinded:Blinded|Deafened:Deafened|Exhaustion 1:Exh1|Exhaustion 2:Exh2|Exhaustion 3:Exh3|Exhaustion 4:Exh4|Exhaustion 5:Exh5|Exhaustion 6:Exh6|Frightened:Frightened|Grappled:Grappled|Incapacitated:Incapacitated|Invisible:Invisible|Paralyzed:Paralyzed|Petrified:Petrified|Poisoned:Poisoned|Prone:Prone|Restrained:Restrained|Stunned:Stunned|Unconscious:Unconscious|Aid:Aid|Bane:Bane|Inspired:Inspired|Blessed:Blessed|Charmed:Charmed|Concentrating:Concentrating|Cursed:Cursed|Dead:Dead|Disarmed:Disarmed|Drunk:Drunk|Enlarged:Enlarged|Flying:Flying|Haste:Haste|Heroism:Heroism|Hexed:Hexed|Stealth/Hidden:Hidden|Hunters Mark:Hunters_Mark|Mirror Image:Mirror_Image|Rage:Rage|Shielded:Shield|Shrunk:Shrunk|Sleeping:Sleeping|Slowed:Slowed|Strong:Strong|Wet:Wet|Beast Shape:Beast --+ERROR|[b][c]Status not found![/c][/b] --:Blinded| --&amp;Marker|Blind::243718 --#rightsub|Condition --+|A [b][i]Blinded[/b][/i] creature can’t see and automatically fails any ability check that requires sight. --+|Attack rolls against the creature have **advantage**, and the creature’s attack rolls have **disadvantage**. --^MARK| --^MARK| --:Charmed| --&amp;Marker|charmed::3443111 --#rightsub|Condition --+|A [b][i]charmed[/b][/i] creature can’t attack the charmer or target the charmer with harmful abilities or magical effects. --+|The charmer has **advantage** on any ability check to interact socially with the creature. --:Deafened| --&amp;Marker|Deafened::243729 --#rightsub|Condition --+|A [b][i]deafened[/b][/i] creature can’t hear and automatically fails any ability check that requires hearing. --^MARK| --:Exh1| Future version may test for current level and auto update. Or maybe it breaks the request up into Exhaustion followed by a Level dialog --&amp;Marker|Exhaustion_1::243735 --#rightsub|Condition --#Title|Exhausted - Lvl 1 --+|**Disadvantage** on ability checks --+|Next Level: Speed havled --+|An effect that removes exhaustion reduces its level as specified in the effect’s description, with all exhaustion effects ending if a creature’s exhaustion level is reduced below 1. --+|Finishing a long rest reduces a creature’s exhaustion level by 1, provided that the creature has also ingested some food and drink. Also, being raised from the dead reduces a creature’s exhaustion level by 1 --^MARK| --:Exh2| --&amp;Marker|Exhaustion_2::243738 --#rightsub|Condition --#Title|Exhausted - Lvl 2 --+|Speed halved --+|Next Level: **Disadvantage** on attack rolls and saving throws --+|An effect that removes exhaustion reduces its level as specified in the effect’s description, with all exhaustion effects ending if a creature’s exhaustion level is reduced below 1. --+|Finishing a long rest reduces a creature’s exhaustion level by 1, provided that the creature has also ingested some food and drink. Also, being raised from the dead reduces a creature’s exhaustion level by 1 --^MARK| --:Exh3| --&amp;Marker|Exhaustion_3::243740 --#rightsub|Condition --#Title|Exhausted - Lvl 3 --+|**Disadvantage** on attack rolls and saving throws --+|Next Level: Hitpoint maximum halved --+|An effect that removes exhaustion reduces its level as specified in the effect’s description, with all exhaustion effects ending if a creature’s exhaustion level is reduced below 1. --+|Finishing a long rest reduces a creature’s exhaustion level by 1, provided that the creature has also ingested some food and drink. Also, being raised from the dead reduces a creature’s exhaustion level by 1 --^MARK| --:Exh4| --&amp;Marker|Exhaustion_4::243743 --#rightsub|Condition --#Title|Exhausted - Lvl 4 --+|Hitpoint maximum halved --+|Next Level: Speed reduced to zero (0) --+|An effect that removes exhaustion reduces its level as specified in the effect’s description, with all exhaustion effects ending if a creature’s exhaustion level is reduced below 1. --+|Finishing a long rest reduces a creature’s exhaustion level by 1, provided that the creature has also ingested some food and drink. Also, being raised from the dead reduces a creature’s exhaustion level by 1 --^MARK| --:Exh5| --&amp;Marker|Exhaustion_5::243746 --#rightsub|Condition --#Title|Exhausted - Lvl 5 --+|Speed reduced to zero (0) --+|Next Level: [b][i]**Death**[/b][/i] --+|An effect that removes exhaustion reduces its level as specified in the effect’s description, with all exhaustion effects ending if a creature’s exhaustion level is reduced below 1. --+|Finishing a long rest reduces a creature’s exhaustion level by 1, provided that the creature has also ingested some food and drink. Also, being raised from the dead reduces a creature’s exhaustion level by 1 --^MARK| --:Exh6| --&amp;Marker|Exhaustion_6::243749 --#rightsub|Condition --#Title|Exhausted - Lvl 6 (Dead) --+|**Death** --^MARK| --:Frightened| --&amp;Marker|Frightened::243759 --#rightsub|Condition --+|A [b][i]frightened[/b][/i] creature has **disadvantage** on ability checks and attack rolls while the source of its fear is within line of sight. --+|The creature can’t willingly move closer to the source of its fear. --^MARK| --:Grappled| --&amp;Marker|Grappled::243762 --#rightsub|Condition --+|A [b][i]grappled[/b][/i] creature’s speed becomes 0, and it can’t benefit from any bonus to its speed. --+|The condition ends if the grappler is [b][i]incapacitated[/b][/i] (see the condition). --+|The condition also ends if an effect removes the grappled creature from the reach of the grappler or grappling effect, such as when a creature is hurled away by the [b][i]thunderwave[/b][/i] spell. --^MARK| --:Incapacitated| --&amp;Marker|Incapacitated::243777 --#rightsub|Condition --+|An [b][i]incapacitated[/b][/i] creature can’t take **actions** or **reactions**. --^MARK| --:Invisible| --&amp;Marker|invisible::3443126 --#rightsub|Condition --+|An [b][i]invisible[/b][/i] creature is impossible to see without the aid of magic or a special sense. For the purpose of hiding, the creature is heavily obscured. The creature’s location can be detected by any noise it makes or any tracks it leaves. --+|Attack rolls agaisnt the creature have **Disadvantage**, and the creature’s attack rolls have **Advantage**. --^MARK| --:Paralyzed| --&amp;Marker|Paralyzed::243784 --#rightsub|Condition --+|A [b][i]paralyzed[/b][/i] creature is [b][i]incapacitated[/b][/i] (see the condition) and can’t move or speak. --+|The creature automatically fails **Strength** and **Dexterity** saving throws. --+|Attack rolls against the creature have **Advantage**. --+|Any attack that hits the creature is a **critical hit** if the attacker is within 5 feet of the creature. --^MARK| --:Petrified| --&amp;Marker|petrified::3443129 --#rightsub|Condition --+|A [b][i]petrified[/b][/i] creature is transformed, along with any nonmagical object it is wearing or carrying, into a solid inanimate substance (usually stone). Its weight increases by a factor of ten, and it ceases aging. --+|The creature is [b][i]incapacitated[/b][/i] (see the condition), can’t move or speak, and is unaware of its surroundings. --+|Attack rolls against the creature have **Advantage**. --+|The creature automatically fails **Strength** and **Dexterity** saving throws. --+|The creature has **Resistance** to all damage. --+|The creature is **immune** to poison and disease, although a poison or disease laready in its system is suspended, not neutralized. --^MARK| --:Poisoned| --&amp;Marker|poisoned::3443130 --#rightsub|Condition --+|A [b][i]poisoned[/b][/i] creature has **Disadvantage** on attack rolls and ability checks. --^MARK| --:Prone| --&amp;Marker|prone::3443131 --#rightsub|Condition --+|A [b][i]prone[/b][/i] creature’s only movement option is to crawl, unless it stands up and thereby ends the condition. --+|The creature has **Disadvantage** on attack rolls. --+|An attack roll against the creature has **Advantage** if the attacker is within 5 feet of the creature. Otherwise, the attack roll has **Disadvantage**. --^MARK| --:Restrained| --&amp;Marker|restrained::3443134 --#rightsub|Condition --+|A [b][i]restrained[/b][/i] creature’s speed becomes 0, and it can’t benefit from any bonus to its speed. --+|Attack rolls against the creature have **Advantage**, and the creature’s attack rolls have **Disadvantage**. --+|The creature has **Disadvantage** on **Dexterity** saving throws. --^MARK| --:Stunned| --&amp;Marker|stunned::3443137 --#rightsub|Condition --+|A [b][i]stunned[/b][/i] creature is [b][i]incapacitated[/b][/i] (see the condition), can’t move, and can speak only falteringly. --+|The creature automatically fails **Strength** and **Dexterity** saving throws. --+|Attack rolls against the creature have **Advantage** --^MARK| --:Unconscious| --&amp;Marker|Unconscious::243821 --#rightsub|Condition --+|An [b][i]unconscious[/b][/i] creature is [b][i]incapacitated[/b][/i], can’t move or speak, and is unaware of its surroundings. --+|The creature drops whatever it’s holding and falls [b][i]prone[/b][/i]. --+|The creature automatically fails **Strength** and **Dexterity** saving throws. --+|Attack rolls against the creature have **Advantage** --+|Any attack that hits the creature is a **critical hit** if the attacker is within 5 feet of the creature --^MARK| --:Aid| --&amp;Marker|aid-1::3443140 --+|**Your spell bolsters your allies with toughness and resolve.** Choose up to **three** creatures within range. Each target’s hit point maximum and current hit points increase by 5 for the duration. --+|**At Higher Levels.** When you cast this spell using a spell slot of 3rd level or higher, a target’s hit points increase by an additional 5 for each slot level above 2nd. --^MARK| --:Bane| --&amp;Marker|bane::3443143 --+|Up to three creatures of your choice that you can see within range must make **Charisma** saving throws. Whenever a target that fails this saving throw makes an attack roll or a saving throw before the spell ends, the target must roll a **d4** and [b][i]subtract[/b][/i] the number rolled from the attack roll or saving throw. --+|**At Higher Levels.** When you cast this spell using a spell slot of 2nd level or higher, you can target one additional creature for each slot level above 1st. --^MARK| --:Inspired| --&amp;Marker|inspired::3443148 --+|You can inspire others through stirring words or music. To do so, you use a bonus action on your turn to choose one creature other than yourself within 60 feet of you who can hear you. That creature gains one [b][i]Bardic Inspiration die[/b][/i], a **d6**. --+|Once within the next 10 minutes, the creature can roll the die and add the number rolled to one ability check, attack roll, or saving throw it makes. The creature can wait until after it rolls the **d20** before deciding to use the Bardic Inspiration die, but must decide before the DM says whether the roll succeeds or fails. Once the [b][i]Bardic Inspiration die[/b][/i] is rolled, it is lost. A creature can have only one [b][i]Bardic Inspiration die[/b][/i] at a time. --+|You can use this feature a number of times equal to your Charisma modifier (a minimum of once). You regain any expended uses when you finish a long rest. --+|**At Higher Levels.** Your Bardic Inspiration die changes when you reach certain levels in this class. The die becomes a d8 at 5th level, a d10 at 10th level, and a d12 at 15th level. --^MARK| --:Blessed| --&amp;Marker|Bless::243716 --+|You bless up to three creatures of your choice within range. Whenever a target makes an attack roll or a saving throw before the spell ends, the target can roll a **d4** and add the number rolled to the attack roll or saving throw. --+|**At Higher Levels.** When you cast this spell using a spell slot of 2nd level or higher, you can target one additional creature for each slot level above 1st. --^MARK| --:Concentrating| --&amp;Marker|concentrating-2::3443113 --+|Normal activity, such as moving and attacking, doesn’t interfere with concentration. The following factors can break concentration: --+| **Casting another spell that requires concentration.** You lose concentration on a spell if you cast another spell that requires concentration. You can’t concentrate on two spells at once. --+| **Taking damage.** Whenever you take damage while you are concentrating on a spell, you must make a **Constitution** saving throw to maintain your concentration. The [b][i]DC equals 10 or half the damage you take, whichever number is higher.[/b][/i] If you take damage from multiple sources, such as an arrow and a dragon’s breath, you make a separate saving throw for each source of damage. --+| **Being [b][i]incapacitated[/b][/i] or [b][i]killed[/b][/i].** You lose concentration on a spell if you are incapacitated or if you die. --^MARK| --:Cursed| --&amp;Marker|cursed::3443117 --+|[u]From the [b]Curse[/b] Spell:[/u] --+|You touch a creature, and that creature must succeed on a Wisdom saving throw or become cursed for the duration of the spell. When you cast this spell, choose the nature of the curse from the following options: --+|* Choose one ability score. While cursed, the target has disadvantage on ability checks and saving throws made with that ability score. --+|* While cursed, the target has disadvantage on attack rolls against you. --+|* While cursed, the target must make a Wisdom saving throw at the start of each of its turns. If it fails, it wastes its action that turn doing nothing. --+|* While the target is cursed, your attacks and spells deal an extra 1d8 necrotic damage to the target. --+|A remove curse spell ends this effect. At the DM's option, you may choose an alternative curse effect, but it should be no more powerful than those described above. The DM has final say on such a curse's effect. --+At Higher Levels.|If you cast this spell using a spell slot of 4th level or higher, the duration is concentration, up to 10 minutes. If you use a spell slot of 5th level or higher, the duration is 8 hours. If you use a spell slot of 7th level or higher, the duration is 24 hours. If you use a 9th level spell slot, the spell lasts until it is dispelled. Using a spell slot of 5th level or higher grants a duration that doesn't require concentration. --^MARK| --:Dead| --&amp;Marker|dead --+|When you drop to 0 hit points, you either die outright or fall unconscious, see [button]Dropping to 0 Hitpoints::<a href="https://www.dndbeyond.com/sources/basic-rules/combat#Droppingto0HitPoints[/button]" rel="nofollow">https://www.dndbeyond.com/sources/basic-rules/combat#Droppingto0HitPoints[/button]</a> for more info. --^MARK| --:Disarmed| --&amp;Marker|disarmed::3443157 --+|Whatever you were holding is now on the ground. It will take an action to retrieve the object. --^MARK| --:Drunk| --&amp;Marker|drunk::3443120 --+|You have become drunk (poisoned) for 1 hour, and must then repeat the a saving throw. --+|On a successful save after 1 hour and you have stopped drinking your are no longer drunk. --+|On a failed save after 1 hour, the character continues to drink until falling unconscious for 1d20 - [Concentration Bonus] hours, then awakens and remains drunk for 1 hour thereafter. --+|Once a character’s drunken state ends, whether after 1 hour or several hours, the drinker suffers one level of exhaustion. --^MARK| --:Enlarged| --&amp;Marker|Size_Enlarge::243805 --+|If the target is a creature, everything it is wearing and carrying changes size with it. Any item dropped by an affected creature returns to normal size at once. --+|**Enlarge.** The target’s size doubles in all dimensions, and its weight is multiplied by eight. This growth increases its size by one category, from Medium to Large, for example. If there isn’t enough room for the target to double its size, the creature or object attains the maximum possible size in the space available. Until the spell ends, the target also has advantage on Strength checks and Strength saving throws. The target’s weapons also grow to match its new size. While these weapons are enlarged, the target’s attacks with them deal 1d4 extra damage. --^MARK| --:Flying| --&amp;Marker|flying-1::3443122 --+|Flying creatures enjoy many benefits of mobility, but they must also deal with the danger of falling. If a flying creature is knocked prone, has its speed reduced to 0, or is otherwise deprived of the ability to move, the creature falls, unless it has the ability to hover or it is being held aloft by magic, such as by the fly spell. --^MARK| --:Haste| --&amp;Marker|haste::3443146 --+|Your speed is doubled, it gains a +2 bonus to AC, you have advantage on Dexterity saving throws, and you gain an additional action on each of its turns. That action can be used only to take the Attack (one weapon attack only), Dash, Disengage, Hide, or Use an Object action. --+|When the effect ends, you can’t move or take actions until after its next turn, as a wave of lethargy sweeps over you. --^MARK| --:Heroism| --&amp;Marker|32_buffed::328632 --+|A willing creature you touch is imbued with bravery. Until the spell ends, the creature is immune to being **frightened** and gains temporary hit points equal to your spellcasting ability modifier at the start of each of its turns. --+|When the spell ends, the target loses any remaining temporary hit points from this spell. --+|**At Higher Levels.** When you cast this spell using a spell slot of 2nd level or higher, you can target one additional creature for each slot level above 1st. --^MARK| --:Hexed| --&amp;Marker|Hex::243768 --+|You place a curse on a creature that you can see within range. Until the spell ends, you deal an extra **1d6** [b][i]necrotic[/b][/i] damage to the target whenever you hit it with an attack. Also, choose one ability when you cast the spell. The target has **Disadvantage** on ability checks made with the chosen ability. --+|If the target drops to 0 hit points before this spell ends, you can use a bonus action on a subsequent turn of yours to curse a new creature. --+|A remove curse cast on the target ends this spell early. --+|**At Higher Levels.** When you cast this spell using a spell slot of 3rd or 4th level, you can maintain your concentration on the spell for up to 8 hours. When you use a spell slot of 5th level or higher, you can maintain your concentration on the spell for up to 24 hours. --^MARK| --:Hidden| --&amp;Marker|Stealth::243814 --+|**Unseen Attackers and Targets:** When you attack a target that you can’t see, you have disadvantage on the attack roll. This is true whether you’re guessing the target’s location or you’re targeting a creature you can hear but not see. If the target isn’t in the location you targeted, you automatically miss, but the DM typically just says that the attack missed, not whether you guessed the target’s location correctly. --+|When a creature can’t see you, you have advantage on attack rolls against it. If you are hidden, [i]both unseen and unheard[/i], when you make an attack, you give away your location when the attack hits or misses. --^MARK| --:Hunters_Mark| --&amp;Marker|Hunters_Mark::243771 --#Title|Hunters Mark --+|You choose a creature you can see within range and mystically mark it as your quarry. Until the spell ends, you deal an extra 1d6 damage to the target whenever you hit it with a weapon attack. --+|You have advantage on any Wisdom (Perception) or Wisdom (Survival) check you make to find it. --+|If the target drops to 0 hit points before this spell ends, you can use a bonus action on a subsequent turn of yours to mark a new creature. --+|**At Higher Levels.** When you cast this spell using a spell slot of 3rd or 4th level, you can maintain your concentration on the spell for up to 8 hours. When you use a spell slot of 5th level or higher, you can maintain your concentration on the spell for up to 24 hours. --^MARK| --:Madness| --&amp;Marker|37_cursed::328637:1 --/+| !!! Future Update: Tie in to the Madness Scripts once I've consolidated them --^MARK| --:Mirror_Image| --&amp;Marker|mirrorimage-2::3443153 --+|Three illusory duplicates of yourself appear in your space. Until the spell ends, the duplicates move with you and mimic your actions, shifting position so it’s impossible to track which image is real. You can use your action to dismiss the illusory duplicates. --+|Each time a creature targets you with an attack during the spell’s duration, roll a **d20** to determine whether the attack instead targets one of your duplicates. --+|If you have three duplicates, you must roll a 6 or higher to change the attack’s target to a duplicate. With two duplicates, you must roll an 8 or higher. With one duplicate, you must roll an 11 or higher. --+|A duplicate’s AC equals 10 + your Dexterity modifier. If an attack hits a duplicate, the duplicate is destroyed. A duplicate can be destroyed only by an attack that hits it. It ignores all other damage and effects. The spell ends when all three duplicates are destroyed. --+|A creature is unaffected by this spell if it can’t see, if it relies on senses other than sight, such as blindsight, or if it can perceive illusions as false, as with truesight. --^MARK| --:Rage| --&amp;Marker|Rage::243799 --+|In battle, you fight with primal ferocity. On your turn, you can enter a rage as a bonus action. While raging, you gain the following benefits if you aren’t wearing heavy armor: --+| - You have advantage on Strength checks and Strength saving throws. --+| - When you make a melee weapon attack using Strength, you gain a bonus to the damage roll that increases as you gain levels as a barbarian, as shown in the Rage Damage column of the Barbarian table. --+| - You have resistance to bludgeoning, piercing, and slashing damage. --+|If you are able to cast spells, you can’t cast them or concentrate on them while raging. --+|Your rage lasts for 1 minute. It ends early if you are knocked unconscious or if your turn ends and you haven’t attacked a hostile creature since your last turn or taken damage since then. You can also end your rage on your turn as a bonus action. --+|Once you have raged the number of times shown for your barbarian level in the Rages column of the Barbarian table, you must finish a long rest before you can rage again. --^MARK| --:Shield| --&amp;Marker|shielded::3443155 --+|An invisible barrier of magical force appears and protects you. Until the start of your next turn, you have a +5 bonus to AC, including against the triggering attack, and you take no damage from magic missile. --^MARK| --:Shrunk| --&amp;Marker|Size_Reduce::243807 --+|If the target is a creature, everything it is wearing and carrying changes size with it. Any item dropped by an affected creature returns to normal size at once. --+|**Reduce.** The target’s size is halved in all dimensions, and its weight is reduced to one-eighth of normal. This reduction decreases its size by one category--from Medium to Small, for example. Until the spell ends, the target also has disadvantage on Strength checks and Strength saving throws. The target’s weapons also shrink to match its new size. While these weapons are reduced, the target’s attacks with them deal 1d4 less damage (this can’t reduce the damage below 1). --^MARK| --:Sleeping| --&amp;Marker|sleeping::3443136 --+|This spell sends creatures into a magical slumber. Roll 5d8; the total is how many hit points of creatures this spell can affect. Creatures within 20 feet of a point you choose within range are affected in ascending order of their current hit points (ignoring unconscious creatures). --+|Starting with the creature that has the lowest current hit points, each creature affected by this spell falls unconscious until the spell ends, the sleeper takes damage, or someone uses an action to shake or slap the sleeper awake. Subtract each creature’s hit points from the total before moving on to the creature with the next lowest hit points. A creature’s hit points must be equal to or less than the remaining total for that creature to be affected. --+|Undead and creatures immune to being charmed aren’t affected by this spell. --+|**At Higher Levels.** When you cast this spell using a spell slot of 2nd level or higher, roll an additional 2d8 for each slot level above 1st. --^MARK| --:Slowed| --&amp;Marker|slowed::3443156 --+|You alter time around up to six creatures of your choice in a 40-foot cube within range. Each target must succeed on a Wisdom saving throw or be affected by this spell for the duration. --+|An affected target’s speed is halved, it takes a −2 penalty to AC and Dexterity saving throws, and it can’t use reactions. On its turn, it can use either an action or a bonus action, not both. Regardless of the creature’s abilities or magic items, it can’t make more than one melee or ranged attack during its turn. --+|If the creature attempts to cast a spell with a casting time of 1 action, roll a d20. On an 11 or higher, the spell doesn’t take effect until the creature’s next turn, and the creature must use its action on that turn to complete the spell. If it can’t, the spell is wasted. --+|A creature affected by this spell makes another Wisdom saving throw at the end of each of its turns. On a successful save, the effect ends for it. --^MARK| --:Strong| --&amp;Marker|strong --+|The target has advantage on Strength checks, and his or her carrying capacity doubles. --^MARK| --:Wet| --&amp;Marker|Wet::243829 --+|You are drenched. You have disadvantage on saving throws to prevent ill effects of cold weather. You have advantage on saving throws associated effects or attacks dealing fire damage. --+| It will take you one hour to dry, assuming you are in dry conditions. --^MARK| --:Beast| --&amp;Marker|natural-weapon::3443163 --#Title|Beast Mode --+|You can stay in a beast shape for a number of hours equal to half your druid level (rounded down). You then revert to your normal form unless you expend another use of this feature. You can revert to your normal form earlier by using a bonus action on your turn. You automatically revert if you fall unconscious, drop to 0 hit points, or die. While you are transformed, the following rules apply: --+| Your game statistics are replaced by the statistics of the beast, but you retain your alignment, personality, and Intelligence, Wisdom, and Charisma scores. You also retain all of your skill and saving throw proficiencies, in addition to gaining those of the creature. If the creature has the same proficiency as you and the bonus in its stat block is higher than yours, use the creature’s bonus instead of yours. If the creature has any legendary or lair actions, you can’t use them. --+| When you transform, you assume the beast’s hit points and Hit Dice. When you revert to your normal form, you return to the number of hit points you had before you transformed. However, if you revert as a result of dropping to 0 hit points, any excess damage carries over to your normal form. For example, if you take 10 damage in animal form and have only 1 hit point left, you revert and take 9 damage. As long as the excess damage doesn’t reduce your normal form to 0 hit points, you aren’t knocked unconscious. --+| You can’t cast spells, and your ability to speak or take any action that requires hands is limited to the capabilities of your beast form. Transforming doesn’t break your concentration on a spell you’ve already cast, however, or prevent you from taking actions that are part of a spell, such as call lightning, that you’ve already cast. --+| You retain the benefit of any features from your class, race, or other source and can use them if the new form is physically capable of doing so. However, you can’t use any of your special senses, such as darkvision, unless your new form also has that sense. --+| You choose whether your equipment falls to the ground in your space, merges into your new form, or is worn by it. Worn equipment functions as normal, but the DM decides whether it is practical for the new form to wear a piece of equipment, based on the creature’s shape and size. Your equipment doesn’t change size or shape to match the new form, and any equipment that the new form can’t wear must either fall to the ground or merge with it. Equipment that merges with the form has no effect until you leave the form. --^MARK| --:MARK| --@token-mod|_set statusmarkers|[&amp;Marker] _ids [&amp;TokenId] _ignore-selected --/@token-mod|_set statusmarkers|[&amp;Marker] _ids [&amp;TokenId] --X| --&lt;| --:SECTION_HEADER|Title --&amp;hdrstyle_T|style="width:100%;padding:1px;border-spacing:0px;border-collapse:collapse;text-shadow: 0px 0px 0px black;border:1px solid black;" --&amp;hdrstyle_TR|style="border:0px solid black;" --&amp;hdrstyle_TD|style="width:100%;background-color:#edf7f0;font-size:110%;font-weight:bold;text-align:center" --+|[t [&amp;hdrstyle_T]][tr [&amp;hdrstyle_TR]][td [&amp;hdrstyle_TD]][c][%1%][/c][/td][/tr][/t] --&lt;| }} !script {{ --/|___UnMark_Token_3.1_____ --#reentrant|UnMarkToken --#title|Unmark Token --#titleCardBackground|#932729 --#whisper|self --#oddRowBackground|#FFFFFF --#evenRowBackground|#FFFFFF --#buttonbackground|#FFFFFF --#buttontextcolor|#0905f2 --#buttonbordercolor|#FFFFFF --#debug|0 --#hidecard|0 --&amp;TokenId|@{selected|token_id} --&amp;tStyle|style="width:100%;padding:1px;border-spacing:0px;border-collapse:collapse;text-shadow: 0px 0px 0px black;border:0px dashed black;" --&amp;trStyle1|style="border:0px dashed black;" --&amp;tdStyle1|style="width:50%;text-align:left;background-color:#FFFFFF;font-size:100%" --&amp;tdStyle2|style="width:50%;text-align:left;background-color:#FFFFFF;font-size:100%" --/| The arySM should be identicle to the one defined in the assoicated mark routine --~|array;define;arySM;Blind::243718;Blinded;Deafened::243729;Deafened;Exhaustion_1::243735;Exhaustion 1;Exhaustion_2::243738;Exhaustion 2;Exhaustion_3::243740;Exhaustion 3;Exhaustion_4::243743;Exhaustion 4;Exhaustion_5::243746;Exhaustion 5;Exhaustion_6::243749;Exhaustion 6;Frightened::243759;Frightened;Grappled::243762;Grappled;Incapacitated::243777;Incapacitated;invisible::3443126;Invisible;Paralyzed::243784;Paralyzed;petrified::3443129;Petrified;poisoned::3443130;Poisoned;prone::3443131;Prone;restrained::3443134;Restrained;stunned::3443137;Stunned;Unconscious::243821;Unconscious;aid-1::3443140;Aid;bane::3443143;Bane;inspired::3443148;Inspired;Bless::243716;Blessed;concentrating-2::3443113;Concentrating;cursed::3443117;Cursed;dead;Dead;disarmed::3443157;Disarmed;drunk::3443120;Drunk;Size_Enlarge::243805;Enlarged;flying-1::3443122;Flying;haste::3443146;Haste;32_buffed::328632;Heroism;Hex::243768;Hexed;Stealth::243814;Stealth/Hidden;Hunters_Mark::243771;Hunters Mark;37_cursed::328637;Cursed;mirrorimage-2::3443153;Mirror Image;Rage::243799;Rage;shielded::3443155;Shielded;Size_Reduce::243807;Shrunk;sleeping::3443136;Sleeping;slowed::3443156;Slowed;strong;Strong;Wet::243829;Wet;natural-weapon::3443163;Beast Shape --~|array;statusmarkers;aryToken_SM;@{selected|token_id} --/|Loop through all of the status markers on the selected token --~SMItem|array;getfirst;aryToken_SM --?[&amp;SMItem] -eq ArrayError|ENDLOOP --:LOOPCHECK| --&amp;SMItem_Name|[&amp;SMItem] --/| Attempt to locate the SM Token in my list of common status and condtion tokens --~Tokem_SM_Ndx|array;indexof;arySM;[&amp;SMItem] --?[&amp;Tokem_SM_Ndx] -eq ArrayError|NOT_FOUND --/| Found - move to next data value which should be the name and grab it --~|array;setindex;arySM;[&amp;Tokem_SM_Ndx] --~SMItem_Name|array;getnext;arySM --:NOT_FOUND| If not fond defaults to status marker id --/| The rbutton syntax doesn't like '::' in the name- messes with the parser --~SMItem|string;replace;::;^^;[&amp;SMItem] --+|[c][rbutton][&amp;SMItem_Name]::UNMARK;[&amp;TokenId]\[&amp;SMItem][/rbutton][/c] --~SMItem|array;getnext;aryToken_SM --?[&amp;SMItem] -ne ArrayError|LOOPCHECK --:ENDLOOP| --X| --:UNMARK| --#hidecard|1 --/+Debug-RV|[&amp;reentryval] --~Arg|string;split;\;[&amp;reentryval] --/+Debug-Args|[&amp;Arg1] / [&amp;Arg2] --&amp;TokenId|[&amp;Arg1] --&amp;SMItem|[&amp;Arg2] --~SMItem|string;replace;^^;::;[&amp;SMItem] --&amp;SMItem|-[&amp;SMItem] --/+Debug-SM|[&amp;SMItem] --@token-mod|_set statusmarkers|[&amp;SMItem] _ids [&amp;TokenId] _ignore-selected --X| }} !script {{ --/|___Clear_Token_SM_3.1_____ --#title|Clear Token Status markers --#titleCardBackground|#932729 --#whisper|self --#oddRowBackground|#FFFFFF --#evenRowBackground|#FFFFFF --#buttonbackground|#FFFFFF --#buttontextcolor|#0905f2 --#buttonbordercolor|#FFFFFF --#debug|0 --#hidecard|0 --&amp;TokenId|@{selected|token_id} --+|[c][u]Status Markers Removed[/u][/c] --/| The arySM should be identicle to the one defined in the assoicated mark routine --~|array;define;arySM;Blind::243718;Blinded;Deafened::243729;Deafened;Exhaustion_1::243735;Exhaustion 1;Exhaustion_2::243738;Exhaustion 2;Exhaustion_3::243740;Exhaustion 3;Exhaustion_4::243743;Exhaustion 4;Exhaustion_5::243746;Exhaustion 5;Exhaustion_6::243749;Exhaustion 6;Frightened::243759;Frightened;Grappled::243762;Grappled;Incapacitated::243777;Incapacitated;invisible::3443126;Invisible;Paralyzed::243784;Paralyzed;petrified::3443129;Petrified;poisoned::3443130;Poisoned;prone::3443131;Prone;restrained::3443134;Restrained;stunned::3443137;Stunned;Unconscious::243821;Unconscious;aid-1::3443140;Aid;bane::3443143;Bane;inspired::3443148;Inspired;Bless::243716;Blessed;concentrating-2::3443113;Concentrating;cursed::3443117;Cursed;dead;Dead;disarmed::3443157;Disarmed;drunk::3443120;Drunk;Size_Enlarge::243805;Enlarged;flying-1::3443122;Flying;haste::3443146;Haste;32_buffed::328632;Heroism;Hex::243768;Hexed;Stealth::243814;Stealth/Hidden;Hunters_Mark::243771;Hunters Mark;37_cursed::328637;Cursed;mirrorimage-2::3443153;Mirror Image;Rage::243799;Rage;shielded::3443155;Shielded;Size_Reduce::243807;Shrunk;sleeping::3443136;Sleeping;slowed::3443156;Slowed;strong;Strong;Wet::243829;Wet;natural-weapon::3443163;Beast Shape --~|array;statusmarkers;aryToken_SM;@{selected|token_id} --/|Loop through all of the status markers on the selected token --~SMItem|array;getfirst;aryToken_SM --?[&amp;SMItem] -eq ArrayError|ENDLOOP --:LOOPCHECK| --&amp;SMItem_Name|[&amp;SMItem] --/| Attempt to locate the SM Token in my list of common status and condtion tokens --~Tokem_SM_Ndx|array;indexof;arySM;[&amp;SMItem] --?[&amp;Tokem_SM_Ndx] -eq ArrayError|NOT_FOUND --/| Found - move to next data value which should be the name and grab it --~|array;setindex;arySM;[&amp;Tokem_SM_Ndx] --~SMItem_Name|array;getnext;arySM --:NOT_FOUND| If not found defaults to status marker id --+|[c][&amp;SMItem_Name][/c] --/| Use TokenMod API to remove status marker --@token-mod|_set statusmarkers|-[&amp;SMItem] _ids [&amp;TokenId] _ignore-selected --/|On to next status marker --~SMItem|array;getnext;aryToken_SM --?[&amp;SMItem] -ne ArrayError|LOOPCHECK --:ENDLOOP| --X| }}
Not sure if anyone has this problem, but when I use the function&nbsp; string;after;searchText;stringValue I get the search Text included in the return. string;before;searchText;stringValue works perfectly. Give it a try please and let me know what's happening here. !scriptcards {{ --#title|Testing 1,2,3... --#titleFontFace|georgia --#bodyFontFace|georgia --#emoteBackground|#ffffff --#titleCardBackground|#B80404 --#oddrowbackground|#F4F4F4 --#evenrowbackground|#F9EBEB --#titleFontLineHeight|35px --#bodyFontLineHeight|200px --#sourceToken|@{selected|token_id} --&amp;myString|"this side / that side" --~stringBefore|string;before;/;[&amp;myString] --~stringAfter|string;after;/;[&amp;myString] --+Before|[&amp;stringBefore] --+After|[&amp;stringAfter] }}
1621509791
David M.
Pro
API Scripter
Andy, this appears to be a bug. I tested it with Kurt's example string manipulation scriptcard he provided and got the same result. I think it was missed in his testing because the test case delimiter was a space which probably got trimmed before output. I would post this to the primary scriptcards thread so Kurt can address it.&nbsp; Also, the intent of this thread is supposed to be for sharing working scriptcards, so questions like this are best directed to the other thread.&nbsp;
Just a note to those scriptwriters making 5e OGL scripts that recall the number of spell slots remaining in a level.&nbsp; The 5E OGL character sheet specifies spells remaining yet the attributes refer to spells expended .&nbsp; This can lead to issues if the GM has scripts that treat the attribute in different ways.&nbsp; It would really be helpful if Roll20 would change it to a consistent format but absent that scriptwriters should be wary of how they treat this issue.
1621867021

Edited 1622670605
Update changes made to both 5-26-2021 My Conditional ScriptCard Macro for D&amp;D 5e and Roll20 OGL sheet. First for my Players a symbol legend. Thanks to Kirt J for the help. I am using the Marker Pack RPG Condition Markers v2. !script {{ --#title|Condition Symbols --#leftsub|Meaning of the Symbols. --#titlecardbackground|#990000 --#evenrowbackground|#B6AB91 --#oddrowbackground|#CEC7B6 --+[sm width=25px]x-blessed[/sm]|[b]Blessed[/b] --+[sm width=25px]dd-blinded[/sm]|[b]Blind[/b] --+[sm width=25px]dd-charmed[/sm]|[b]Charmed[/b] --+[sm width=25px]dd-deafened[/sm]|[b]Deafened[/b] --+[sm width=25px]dd-frightened[/sm]|[b]Frightened[/b] --+[sm width=25px]dd-grappled[/sm]|[b]Grappled[/b] --+[sm width=25px]dd-invisible[/sm]|[b]Invisible[/b] --+[sm width=25px]dd-incapacitated[/sm]|[b]Incapacitated[/b] --+[sm width=25px]dd-paralyzed[/sm]|[b]Paralyzed[/b] --+[sm width=25px]dd-petrified[/sm]|[b]Petrified[/b] --+[sm width=25px]dd-poisoned[/sm]|[b]Poisoned[/b] --+[sm width=25px]dd-prone[/sm]|[b]Prone[/b] --+[sm width=25px]x-rage[/sm]|[b]Rage[/b] --+[sm width=25px]dd-restrained[/sm]|[b]Restrained[/b] --+[sm width=25px]dd-stunned[/sm]|[b]Stunned[/b] --+[sm width=25px]dd-unconscious[/sm]|[b]Unconcious[/b] --+[sm width=25px]path-dead[/sm]|[b]Dead[/b] }} Then I made one for me the GM to set and remove the Conditions. It call to macros on a character sheet called "Conditions"&nbsp; !script {{ --#title|Condition Symbols --#leftsub|Meaning of the Symbols. --#titlecardbackground|#990000 --#evenrowbackground|#B6AB91 --#oddrowbackground|#CEC7B6 --+[sm width=25px]x-blessed[/sm]|[b]Blessed[/b] [r] [button]Set::~Conditions|SetBless[/button] [button]Remove::~Conditions|RemoveBless[/button] [/r] --+[sm width=25px]dd-blinded[/sm]|[b]Blind[/b] [r] [button]Set::~Conditions|SetBlind[/button] [button]Remove::~Conditions|RemoveBlind[/button] [/r] --+[sm width=25px]dd-charmed[/sm]|[b]Charmed[/b] [r] [button]Set::~Conditions|SetCharmed[/button] [button]Remove::~Conditions|RemoveCharmed[/button] [/r] --+[sm width=25px]dd-deafened[/sm]|[b]Deafened[/b] [r] [button]Set::~Conditions|SetCharmed[/button] [button]Remove::~Conditions|RemoveCharmed[/button] [/r] --+[sm width=25px]dd-frightened[/sm]|[b]Frightened[/b] [r] [button]Set::~Conditions|SetFrightened[/button] [button]Remove::~Conditions|RemoveFrightened[/button] [/r] --+[sm width=25px]dd-grappled[/sm]|[b]Grappled[/b] [r] [button]Set::~Conditions|SetGrappled[/button] [button]Remove::~Conditions|RemoveGrappled[/button] [/r] --+[sm width=25px]dd-invisible[/sm]|[b]Invisible[/b] [r] [button]Set::~Conditions|SetInvisible[/button] [button]Remove::~Conditions|RemoveInvisible[/button] [/r] --+[sm width=25px]dd-incapacitated[/sm]|[b]Incapacitated[/b] [r] [button]Set::~Conditions|Setincapacitated[/button] [button]Remove::~Conditions|Removeincapacitated[/button] [/r] --+[sm width=25px]dd-paralyzed[/sm]|[b]Paralyzed[/b] [r] [button]Set::~Conditions|SetParalyzed[/button] [button]Remove::~Conditions|RemoveParalyzed[/button] [/r] --+[sm width=25px]dd-petrified[/sm]|[b]Petrified[/b] [r] [button]Set::~Conditions|SetPetrified[/button] [button]Remove::~Conditions|RemovePetrified[/button] [/r] --+[sm width=25px]dd-poisoned[/sm]|[b]Poisoned[/b] [r] [button]Set::~Conditions|SetPoisoned[/button] [button]Remove::~Conditions|RemovePoisoned[/button] [/r] --+[sm width=25px]dd-prone[/sm]|[b]Prone[/b] [r] [button]Set::~Conditions|SetProne[/button] [button]Remove::~Conditions|RemoveProne[/button] [/r] --+[sm width=25px]x-rage[/sm]|[b]Rage[/b] [r] [button]Set::~Conditions|SetRage[/button] [button]Remove::~Conditions|RemoveRage[/button] [/r] --+[sm width=25px]dd-restrained[/sm]|[b]Restrained[/b] [r] [button]Set::~Conditions|SetRestrained[/button] [button]Remove::~Conditions|RemoveRestrained[/button] [/r] --+[sm width=25px]dd-stunned[/sm]|[b]Stunned[/b] [r] [button]Set::~Conditions|SetStunned[/button] [button]Remove::~Conditions|RemoveStunned[/button] [/r] --+[sm width=25px]dd-unconscious[/sm]|[b]Unconcious[/b] [r] [button]Set::~Conditions|SetUnconcious[/button] [button]Remove::~Conditions|RemoveUnconcious[/button] [/r] --+[sm width=25px]path-dead[/sm]|[b]Dead[/b] [r] [button]Set::~Conditions|SetDead[/button] [button]Remove::~Conditions|RemoveDead[/button] [/r] --+[sm width=25px]path-dying[/sm]|[b]Dying/Stable [/b] [r] [button]Set::~Conditions|SetDying[/button] [button]Remove::~Conditions|SetStabilized[/button] [/r] --+|[c][button]Clear All Markers::~Conditions|ClearAll[/button][/c] }} Sample of the macros from the character sheet. Bless is special as it ask for the 3 targets, marks them and then adds to the turn tracker the names of the targets and a 10 turn counters. My blind Macro is also special as it marks the token and turns off Vision on the token.&nbsp; Update: added the ability to check of the global save and global attack for 5e OGL sheet.&nbsp;&nbsp; SetBless !setattr --name @{selected|character_name} --modb --lvl?{Spell Slot|1}_slots_expended|-1 !act -1 10 --@{target|1|character_name} , @{target|2|character_name}, @{target|3|character_name}. Blessed !token-mod --ids @{target|1|token_id} @{target|2|token_id} @{target|3|token_id} --set statusmarkers|x-blessed !script {{ --#title|Condition Blessed --#sourceToken|@{selected|token_id} --#leftsub|@{target|1|token_name}, @{target|2|token_name}, @{target|3|token_name}. You are Blessed by the Gods. --#emoteText|@{selected|token_name} Condition set. --#titlecardbackground|#990000 --#titleFontColor|#FFFFFF --#evenrowbackground|#B6AB91 --#oddrowbackground|#CEC7B6 --#emoteBackground|#FFFFFF --#leftsub|@{target|1|character_name}, @{target|2|character_name}, @{target|3|character_name}. You are Blessed by the Gods. --#titlecardbackground|#990000 --#evenrowbackground|#B6AB91 --#oddrowbackground|#CEC7B6 --@setattr|_name @{target|1|token_name} _repeating_tohitmod_$0_global_attack_active_flag|1 _silent --@setattr|_name @{target|2|token_name} _repeating_tohitmod_$0_global_attack_active_flag|1 _silent --@setattr|_name @{target|3|token_name} _repeating_tohitmod_$0_global_attack_active_flag|1 _silent --@setattr|_name @{target|1|token_name} _repeating_savemod_$0_global_save_active_flag|1 _silent --@setattr|_name @{target|2|token_name} _repeating_savemod_$0_global_save_active_flag|1 _silent --@setattr|_name @{target|3|token_name} _repeating_savemod_$0_global_save_active_flag|1 _silent --+[sm width=25px]x-blessed[/sm]|[b]Blessed[/b] --+|You bless up to three creatures of your choice within range. Whenever a target makes an Attack roll or a saving throw before the spell ends, the target can roll a d4 and add the number rolled to the Attack roll or saving throw. At Higher Levels: When you cast this spell using a spell slot of 2nd level or higher, you can target one additional creature for each slot level above 1st. }} SetBlind !token-mod {{ --set statusmarkers|dd-blinded --off bright_vision }} !script {{ --#title|Condition Blind --#sourceToken|@{selected|token_id} --#leftsub|@{selected|token_name} --#emoteText|@{selected|token_name} Condition set. --#titlecardbackground|#990000 --#titleFontColor|#FFFFFF --#evenrowbackground|#B6AB91 --#oddrowbackground|#CEC7B6 --#emoteBackground|#FFFFFF --+[sm width=25px]dd-blinded[/sm]|[b]You are Blind[/b] --+|• A blinded creature can’t see and automatically fails any ability check that requires sight. • Attack rolls against the creature have advantage, and the creature’s attack rolls have disadvantage. }}
1621868741
David M.
Pro
API Scripter
Neat, Craven! I like your marker set, though I think the Bless marker is begging for a "Bane" companion image ;)&nbsp;
Great work Craven.&nbsp; I think I may borrow some of this.&nbsp;&nbsp;
1621878873
David M.
Pro
API Scripter
Based on a question asked on another thread, I added a 2nd option to the previously posted scriptcard for displaying passive perception of all tokens on page. This 2nd version only reports those tokens on the page with passive perception greater than or equal to a user-specified target DC. Also whispers the output to gm, FWIW.
1622065981

Edited 1630878690
5E Poison Spray V2.1 Here is a simple macro for the 5E cantrip poison spray. If you see any improvements, let me know as I am not a programmer and would like to get better. You will need the following additional scripts: Alterbars Roll20AM Version 2.0 corrects Immune, Resistant, and Vulnerability. Version 2.1 checks for distance. !scriptcards{{ --:PS| --#sourceToken|@{selected|token_id} --#targetToken|@{target|token_id} --/| &gt;&gt;&gt;&gt;&gt; Formatting &lt;&lt;&lt;&lt;&lt; --#titlecardbackgroundimage|linear-gradient(360deg, rgba(2,0,36,1) 0%, rgba(0,227,208,1) 100%); --#emoteBackground|#transparent --#titleCardBackground|#00e3d0 --#titlefontsize|1.75em --#titlefontlineheight|1.75em --#titleFontColor|white --#titlefontface|Shadows Into Light --#subtitleFontSize|12px --#subtitleFontFace|Verdana --#evenRowBackground|#B6AB91 --#evenRowFontColor|#000000 --#oddRowBackground|#CEC7B6 --#oddRowFontColor|#000000 --#title|Poison Spray --#rightsub|Ranged Spell DC = @{selected|spell_save_dc} --#leftsub|10 Feet --~HowFarAway|distance;@{selected|token_id};@{target|token_id} --=HowFar|[$HowFarAway] * 5 --?[$HowFar] -gt 10|tooFar --#emoteText| @{selected|token_name} extends their hand at @{target|token_name}. A puff of noxious gas extends from @{selected|token_name}'s palm and heads toward @{target|token_name}. --+|[img]<a href="https://media1.tenor.com/images/ce773669de2b54738b13d7d572572c3f/tenor.gif?itemid=17204222[/img]" rel="nofollow">https://media1.tenor.com/images/ce773669de2b54738b13d7d572572c3f/tenor.gif?itemid=17204222[/img]</a> --=DC|@{selected|spell_save_dc} --=SavingThrow|1d20 + @{target|constitution_save_bonus} --&gt;PlayEffects|glow-acid;beam-acid;bubbling-acid;Poison Spray --+|@{target|token_name} made a [$SavingThrow] Constitution Saving Throw. [$DC] was required. --?[$SavingThrow] -ge [$DC]|Miss --=Dice|@{selected|level} \ 5 + 1 --:RollDamage| --&amp;vuln| --?"@{target|npc_vulnerabilities}" -inc "poison"|DoubleD --?"@{target|npc_resistances}" -inc "poison"|HalfD --^gettoit| --:HalfD| --&amp;vuln| \ 2 [Resistant] --^gettoit| --:DoubleD| --&amp;vuln| * 2 [Vulnerable] --:gettoit| --=Damage| [$Dice]d12[&amp;vuln] --:Hit| --+Hit|@{target|token_name} failed their saving throw and took [$Damage] poison damage. --?"@{target|npc_immunities}" -inc "poison"|immune //Checks if target is immune if hit. --@alter|_target|@{target|token_id} _bar|1 _amount|-[$Damage] --X| --:Miss| --+Miss|@{target|token_name} succeeded their saving throw. The poison cloud had no effect. --X| --:immune| --+|@{target|token_name} is immune to poison damage. The Spell has no effect. --X| --:PlayEffects|Parameters are : source effect; target effect; line effect; sound effect --vtoken|@{selected|token_id} [%1%] --vtoken|@{target|token_id} [%2%] --vbetweentokens|@{selected|token_id} @{target|token_id} [%3%] --@roll20AM|_audio,play,nomenu|[%4%] --&lt;| --:tooFar| --+|The target is too far away. --X| }}
1622070469

Edited 1623251618
Blessed Here is how I handle the 5E level 1 spell blessed.&nbsp; If you see any improvements, please let me know as I am not a programmer. I have updated how the spell caster cast blessed based off of Kurt's Magic Missile.&nbsp; That way you just cast once, select a level, click a button and select your targets.&nbsp; No need to do it over and over again.&nbsp; It also adds a turn tracker for the spell. First thing I do is turn on the Global Save Modifier for all the PCs.&nbsp; This will be the flag for if the character is blessed or not that the attacks or saving throws will use. I use this macro for the caster: !scriptcard {{ &nbsp; --#title|Bless &nbsp; --#sourceToken|@{selected|token_id} &nbsp; --&gt;GetAndCheckSlotInformation| &nbsp; --=BlessCount|[$SlotLevel] + 2 &nbsp; --&gt;BuildAndAskTargets|[$BlessCount.Total] &nbsp; --=DisplayCount|1 &nbsp; --#leftsub|Slot level [$SlotLevel] &nbsp; --#rightsub|Ranged Attack &nbsp; --#emoteText|@{selected|character_name} uses a level [$SlotLevel.Total] spell slot to Bless [$BlessCount.Total] friends! &nbsp; --+|Blessed targets will be able to add 1d4 to their attack rolls or saving throws for the duration of the spell. &nbsp; --:BlessLoop| &nbsp; --&gt;FireMissile|[$DisplayCount.Total] &nbsp; --=DisplayCount|[$DisplayCount] + 1 &nbsp; --?[$DisplayCount] -le [$BlessCount]|BlessLoop &nbsp; --&gt;DeductSpellSlot| &nbsp; --#rightsub|Level [$SlotLevel] Left: [$SlotsRemaining] &nbsp; --X| &nbsp; --:FireMissile| &nbsp; --&amp;ThisTarget|[&amp;target[%1%]] &nbsp; --+|The [*[&amp;ThisTarget]:character_name] is Blessed. &nbsp; --@act| -1| 10| _Bless [*[&amp;ThisTarget]:character_name] &nbsp; --&gt;PlayEffects|@{selected|token_id};[&amp;ThisTarget];none;none;none;bless &nbsp; --&lt;| &nbsp; --:GetAndCheckSlotInformation| &nbsp; --=SlotLevel|?{Spell Slot Level Used?|1|2|3|4|5|6|7|8|9} &nbsp; --=SlotsTotal|0 &nbsp; --=SlotsExpended|[*S:lvl[$SlotLevel]_slots_expended] &nbsp; --?[$SlotsExpended.Total] -eq [$SlotsTotal.Total]|NoSlotsLeft &nbsp; --&lt;| &nbsp; --:NoSlotsLeft| &nbsp; --+|[*S:character_name] has no level [$SlotLevel.Total] spell slots available. &nbsp; --#emoteText|[*S:character_name] tries to cast a spell but farts in instead. &nbsp; --X|NoSlotsLeftStop &nbsp; --:DeductSpellSlot| &nbsp; --=SlotsExpended|[$SlotsExpended] - 1 &nbsp; --@setattr|_charid [*S:character_id] _lvl[$SlotLevel]_slots_expended|[$SlotsExpended] _silent &nbsp; --+|Level [$SlotLevel] Slots Left: [$SlotsExpended] &nbsp; --X|Full Stop &nbsp; --:PlayEffects|Parameters are : sourcetoken; targettoken; source effect; target effect; line effect; sound effect &nbsp; --@setattr|_charid [*[%2%]:character_id] _repeating_savemod_$0_global_save_active_flag|1 _silent &nbsp; --@token-mod| _ids [*[%2%]:character_id] _set statusmarkers|angel-outfit &nbsp; --vtoken|[%1%] [%3%] &nbsp; --vtoken|[%2%] [%4%] &nbsp; --vbetweentokens|[%1%] [%2%] [%5%] &nbsp; --@roll20AM|_audio,play,nomenu|[%6%] &nbsp; --&lt;| &nbsp; --:ApplyDamageTokenmod|Parameters are tokenid;bar#;amount &nbsp; --+|[*[&amp;ThisTarget]:token_id] &nbsp; --@token-mod|_ignore-selected _ids [%1%] _set bar[%2%]_value|[%3%] &nbsp; &nbsp;--&lt;| &nbsp; --:ApplyDamageAlterbars| &nbsp; --@alter|_target|[%1%] _bar|[%2%] _amount|[%3%] &nbsp; --&lt;| &nbsp; --:BuildAndAskTargets| &nbsp; --&amp;TargetString| &nbsp; --=targetCount|1 &nbsp; --:TargetLoop| &nbsp; --&amp;TargetString|+t;target[$targetCount.Total];Missile [$targetCount.Total] Target &nbsp; --=targetCount|[$targetCount.Total] + 1 &nbsp; --?[$targetCount.Total] -le [%1%]|&gt;AddSeparator &nbsp; --?[$targetCount.Total] -le [%1%]|TargetLoop &nbsp; --iPlease click the button below to select targets to bless.;Select [%1%] Targets|[&amp;TargetString] &nbsp; --/| &nbsp; --&lt;| &nbsp; --:AddSeparator| &nbsp; --&amp;TargetString|+|| &nbsp; --&lt;| }} This turns on the global save modifier using chatsetattr, puts a marker on the token using tokenmod, tell you to cast it additional times depending on what spell slot you used (the next times using additional cast instead of a spell slot number), and deduct a spell slot on the first cast. Saving Throws For Saving throws I use the following macro.&nbsp; I always rolls twice as I found it quicker than having to select advantage, disadvantage, or normal.&nbsp; It also does all of them at once. !scriptcard {{ &nbsp; --#title|Ability Check &nbsp; --=SavingRoll| 1d20 &nbsp; --=SavingRoll2| 1d20 &nbsp; --=Blessed|1d4 [BLESS] &nbsp; --=Bless|@{selected|repeating_savemod_$0_global_save_active_flag} &nbsp; --?[$Bless] -eq 0|NotBlessed &nbsp; --+Roll|@{selected|token_name} Rolled [$SavingRoll] and a [$SavingRoll2] and [$Blessed] for being blessed. &nbsp; --=SavingRoll| 1d20 + [$Blessed] &nbsp; --=SavingRoll2| 1d20 + [$Blessed] &nbsp; --^Blessed| &nbsp; --:NotBlessed| &nbsp; --+Roll|@{selected|token_name} Rolled [$SavingRoll] and a [$SavingRoll2]. &nbsp; --:Blessed| &nbsp; --=STR| [$SavingRoll] + @{selected|strength_save_bonus}[STR SAVE] &nbsp; --=Dex| [$SavingRoll] + @{selected|dexterity_save_bonus}[DEX] &nbsp; --=Con| [$SavingRoll] + @{selected|constitution_save_bonus} &nbsp; --=Int| [$SavingRoll] + @{selected|intelligence_save_bonus} &nbsp; --=Wis| [$SavingRoll] + @{selected|wisdom_save_bonus} &nbsp; --=Char| [$SavingRoll2] + @{selected|charisma_save_bonus} &nbsp; --=STR2| [$SavingRoll2] + @{selected|strength_save_bonus}[STR SAVE] &nbsp; --=Dex2| [$SavingRoll2] + @{selected|dexterity_save_bonus}[DEX] &nbsp; --=Con2| [$SavingRoll2] + @{selected|constitution_save_bonus} &nbsp; --=Int2| [$SavingRoll2] + @{selected|intelligence_save_bonus} &nbsp; --=Wis2| [$SavingRoll2] + @{selected|wisdom_save_bonus} &nbsp; --=Char2| [$SavingRoll2] + @{selected|charisma_save_bonus} &nbsp; --+Str|[$STR][$STR2] &nbsp; --+Dex|[$Dex][$Dex2] &nbsp; --+Con|[$Con][$Con2] &nbsp; --+Int|[$Int][$Int2] &nbsp; --+Wis|[$Wis][$Wis2] &nbsp; --+Cha|[$Char][$Char2] }} Attacks For attacks, I show the roll and bless roll separately so it is easy to tell if they rolled a 1 or a 20.&nbsp; The addition of the bless roll and attack roll happens after the Crit and Fumble checks.&nbsp; I add the following to attack macros: --?[$AttackRoll.Base] -eq 20|Crit --?[$AttackRoll.Base] -eq 1|Fumble --=AttackRoll|[$AttackRoll] + [$BlessRoll] --?[$AttackRoll.Total] -lt @{target|npc_AC}|Miss --:CheckBless| --=Bless|@{selected|repeating_savemod_$0_global_save_active_flag} --?[$Bless] -ne 0|Blessed --+|You rolled [$AttackRoll] to hit. --=BlessRoll|0 --&lt;| --:Blessed| --=BlessRoll|1d4 --+|You rolled [$AttackRoll] to hit and [$BlessRoll] from blessed. --&lt;| Clearing For clearing bless, I have the following: !scriptcards {{&nbsp; &nbsp; --#whisper|self &nbsp; --#title|Bless Remove &nbsp; --#sourceToken|@{selected|token_id} &nbsp; --#titleCardBackground|#006400 &nbsp; --@setattr|_charid [*S:character_id] _repeating_savemod_$0_global_save_active_flag|0 _silent &nbsp; --@token-mod| _ids [*S:character_id]&nbsp; _set statusmarkers|-angel-outfit &nbsp; --+|Bless is removed from @{selected|token_name} &nbsp; --X| }}
Bane Here is Bane that is very similar to bless.&nbsp; To keep it simple I changed as little as possible.&nbsp; Once again, let me know if there is anything that I can improve. !scriptcard {{&nbsp; &nbsp; --#title|Bane &nbsp; --#sourceToken|@{selected|token_id} &nbsp; --&gt;GetAndCheckSlotInformation| &nbsp; --=BlessCount|[$SlotLevel] + 2 &nbsp; --&gt;BuildAndAskTargets|[$BlessCount.Total] &nbsp; --=DisplayCount|1 &nbsp; --#leftsub|Slot level [$SlotLevel] &nbsp; --#rightsub|Ranged Debuff DC:[*S:spell_save_dc] &nbsp; --#emoteText|@{selected|character_name} uses a level [$SlotLevel.Total] spell slot to give [$BlessCount.Total] enemies bane! &nbsp; --+|Targets with Bane will have to subtract 1d4 to their attack rolls or saving throws for the duration of the spell. &nbsp; --:BlessLoop| &nbsp; --&gt;FireMissile|[$DisplayCount.Total] &nbsp; --=DisplayCount|[$DisplayCount] + 1 &nbsp; --?[$DisplayCount] -le [$BlessCount]|BlessLoop &nbsp; --&gt;DeductSpellSlot| &nbsp; --#rightsub|Level [$SlotLevel] Left: [$SlotsRemaining]&nbsp; &nbsp; --X| &nbsp; --:FireMissile| &nbsp; --&amp;ThisTarget|[&amp;target[%1%]] &nbsp; --=SavingThrow|1d20 + [*[&amp;target[%1%]]:charisma_save_bonus] &nbsp; --+|[*[&amp;ThisTarget]:character_name] made a [$SavingThrow] Charisma Saving Throw. &nbsp; --?[$SavingThrow] -lt @{selected|spell_save_dc}|Hit &nbsp; --+Miss|[*[&amp;ThisTarget]:character_name]'s charm and good looks overpowered @{selected|token_name}'s attempt to cast bane. &nbsp; --^moveOn| &nbsp; --:Hit| &nbsp; --+|The [*[&amp;ThisTarget]:character_name] has Bane. &nbsp; --&gt;PlayEffects|@{selected|token_id};[&amp;ThisTarget];none;none;none;shrink &nbsp; --:moveOn| &nbsp; --&lt;| &nbsp; --:GetAndCheckSlotInformation| &nbsp; --=SlotLevel|?{Spell Slot Level Used?|1|2|3|4|5|6|7|8|9} &nbsp; --=SlotsTotal|0 &nbsp; --=SlotsExpended|[*S:lvl[$SlotLevel]_slots_expended] &nbsp; --?[$SlotsExpended.Total] -eq [$SlotsTotal.Total]|NoSlotsLeft &nbsp; --&lt;| &nbsp; --:NoSlotsLeft| &nbsp; --+|[*S:character_name] has no level [$SlotLevel.Total] spell slots available. &nbsp; --#emoteText|[*S:character_name] tries to cast a spell but farts in instead. &nbsp; --X|NoSlotsLeftStop &nbsp; --:DeductSpellSlot| &nbsp; --=SlotsExpended|[$SlotsExpended] - 1 &nbsp; --@setattr|_charid [*S:character_id] _lvl[$SlotLevel]_slots_expended|[$SlotsExpended] _silent &nbsp; --+|Level [$SlotLevel] Slots Left: [$SlotsExpended]&nbsp; &nbsp; --X|Full Stop &nbsp; --:PlayEffects|Parameters are : sourcetoken; targettoken; source effect; target effect; line effect; sound effect &nbsp; --@token-mod| _ids [*[%2%]:character_id] _set statusmarkers|purple &nbsp; --vtoken|[%1%] [%3%] &nbsp; --vtoken|[%2%] [%4%] &nbsp; --vbetweentokens|[%1%] [%2%] [%5%] &nbsp; --@roll20AM|_audio,play,nomenu|[%6%] &nbsp; --@act| -1| 10| _Bane [*[&amp;ThisTarget]:character_name] &nbsp; --&lt;| &nbsp; --:ApplyDamageTokenmod|Parameters are tokenid;bar#;amount &nbsp; --+|[*[&amp;ThisTarget]:token_id] &nbsp; --@token-mod|_ignore-selected _ids [%1%] _set bar[%2%]_value|[%3%] &nbsp; &nbsp;--&lt;| &nbsp; --:ApplyDamageAlterbars| &nbsp; --@alter|_target|[%1%] _bar|[%2%] _amount|[%3%] &nbsp; --&lt;| &nbsp; --:BuildAndAskTargets| &nbsp; --&amp;TargetString| &nbsp; --=targetCount|1 &nbsp; --:TargetLoop| &nbsp; --&amp;TargetString|+t;target[$targetCount.Total];Missile [$targetCount.Total] Target &nbsp; --=targetCount|[$targetCount.Total] + 1 &nbsp; --?[$targetCount.Total] -le [%1%]|&gt;AddSeparator &nbsp; --?[$targetCount.Total] -le [%1%]|TargetLoop &nbsp; --iPlease click the button below to select targets to give bane.;Select [%1%] Targets|[&amp;TargetString] &nbsp; --/| &nbsp; --&lt;| &nbsp; --:AddSeparator| &nbsp; --&amp;TargetString|+|| &nbsp; --&lt;| }}
Cure Wounds Here is cure wounds for a 5e divine soul sorcerer.&nbsp; If you use this for a different class, you may need to change the charisma mod to something else.&nbsp; As always, please let me know if you see improvements. !scriptcards {{&nbsp; &nbsp; --#title|Cure Wounds &nbsp; --#sourceToken|@{selected|token_id} &nbsp; --#targetToken|@{target|token_id} &nbsp; --#emoteText|[*S:character_name] Casts Cure Wounds on [*T:character_name] &nbsp; --#titleCardBackground|#006400 &nbsp; --#evenRowBackground|#58D68D &nbsp; --#evenRowFontColor|#FF0000 &nbsp; --#oddRowBackground|#440000 &nbsp; --#oddRowFontColor|#F4D03F &nbsp; --&gt;GetAndCheckSlotInformation| &nbsp; --:CureWounds| &nbsp; --=HPRecovered|[$SlotLevel]d8 + @{selected|charisma_mod} &nbsp; --=Wounds|[*T:hp^] - [*T:hp] &nbsp; --+|[*T:character_name] has [*T:hp] out of [*T:hp^] HP &nbsp; --?[$HPRecovered] -le [$Wounds]|StillWounded &nbsp; --@setattr|_charid [*T:character_id] _hp|hp^ _silent &nbsp; --+|[*T:character_name] received [$HPRecovered] HP and is now at full health! &nbsp; --@alter|_target|@{target|token_id} _bar|1 _amount|[$Wounds] &nbsp; --&gt;DeductSpellSlot| &nbsp; --X| &nbsp; --:StillWounded| &nbsp; --+|No &nbsp; --@setattr|_charid [*S:character_id] _hp|+[$HPRecovered] _silent &nbsp; --+[*T:character_name] recovered [$HPRecovered] of [$Wounds] lost HP! &nbsp; --@alter|_target|@{target|token_id} _bar|1 _amount|[$HPRecovered] &nbsp; --&gt;DeductSpellSlot| &nbsp; --X| &nbsp; --:GetAndCheckSlotInformation| &nbsp; --=SlotLevel|?{Spell Slot Level Used?|1|2|3|4|5|6|7|8|9} &nbsp; --=SlotsTotal|0 &nbsp; --=SlotsExpended|[*S:lvl[$SlotLevel]_slots_expended] &nbsp; --?[$SlotsExpended.Total] -eq [$SlotsTotal.Total]|NoSlotsLeft &nbsp; --&lt;| &nbsp; --:DeductSpellSlot| &nbsp; --=SlotsExpended|[$SlotsExpended] - 1 &nbsp; --@setattr|_charid [*S:character_id] _lvl[$SlotLevel]_slots_expended|[$SlotsExpended] _silent &nbsp; --+|Level [$SlotLevel] Slots Left: [$SlotsExpended]&nbsp; &nbsp; --X|Full Stop &nbsp; --:NoSlotsLeft| &nbsp; --+|[*S:character_name] has no level [$SlotLevel.Total] spell slots available. &nbsp; --X|NoSlotsLeftStop }}
1622086076

Edited 1640642355
Hunters Mark Updated 12/27/21 For hunters mark, I create an Attribute on the attributes and &amp; abilities section of the character sheet called marked.&nbsp; I use the code below in block 1 for the caster.&nbsp; I use the yellow circle for hunters mark on the token.&nbsp; This will save the token_id of the marked character and is looked at when attacking similar to looking up if the character is vulnerable or immune to the attack. If they still have time left to cast it, then can use the same spell and select change target instead of a spell slot. That is done using the code below in block 2. It has been updated to remove other concentration spells that my hunter uses and to correct some bugs. Block 1 !scriptcards{{ --#reentrant|@{selected|character_id} --#emoteBackground|#transparent --#titleCardBackground|#ff8000 --#titlefontsize|1.75em --#titlefontlineheight|1.75em --#titleFontColor|white --#titlefontface|Shadows Into Light --#subtitleFontSize|12px --#subtitleFontFace|Verdana --#evenRowBackground|#B6AB91 --#evenRowFontColor|#000000 --#oddRowBackground|#CEC7B6 --#oddRowFontColor|#000000 --#whisper|self,gm --:Hunter's Mark| --#title|Hunter's Mark --#rightsub|Ranged Spell --#leftsub|90 Feet --#sourceToken|@{selected|token_id} --#targetToken|@{target|token_id} --&gt;GetAndCheckSlotInformation| --?[*S:Zephyr] -ne 0|TurnOffZeph --:Zeph| --?[*S:MagicWeapLVL] -ne 0|TurnOffMagicWeapon --:MagWeap| --?[*S:EnsStr] -ne 0|TurnOffEnsStrk --:EnsStrk| --#whisper| --#emoteText| @{selected|token_name} extends their hand at @{target|token_name}. A bullseye appears on @{target|token_name}'s forehead that only @{selected|token_name} can see. --+|[img]<a href="https://media1.tenor.com/images/eccdbc7818520d507610eef890f9e2db/tenor.gif?itemid=17546635[/img]" rel="nofollow">https://media1.tenor.com/images/eccdbc7818520d507610eef890f9e2db/tenor.gif?itemid=17546635[/img]</a> --@token-mod| _ids [*T:t-id] _set statusmarkers|yellow --&amp;Marked|[*T:t-id] --@setattr|_charid [*S:character_id] _marked|[&amp;Marked] _silent --?[$SlotLevel] -eq 0|AllDone --&gt;DeductSpellSlot| --:AllDone| --X| --:GetAndCheckSlotInformation| --+Is this a new cast or changing target?|[rbutton]New Cast::UseSpellSlot[/rbutton][rbutton]Change Target::ChangeTarget;0[/rbutton] --X| --:UseSpellSlot| --+What Spell Slot Level?|Click a button bellow to select your spell slot level. --+|[rbutton]1::knowYourLVL1;1[/rbutton][rbutton]2::knowYourLVL1;2[/rbutton][rbutton]3::knowYourLVL1;3[/rbutton][rbutton]4::knowYourLVL1;4[/rbutton][rbutton]5::knowYourLVL1;5[/rbutton][rbutton]6::knowYourLVL1;6[/rbutton][rbutton]7::knowYourLVL1;7[/rbutton][rbutton]8::knowYourLVL1;8[/rbutton][rbutton]9::knowYourLVL1;9[/rbutton] --X| --:knowYourLVL1| --=SlotLevel|[&amp;reentryval] --=SlotsTotal|0 --=SlotsExpended|[*S:lvl[$SlotLevel]_slots_expended] --?[$SlotsExpended.Raw] -eq [$SlotsTotal.Raw]|NoSlotsLeft --&lt;| --:ChangeTarget| --=SlotLevel|[&amp;reentryval] --&lt;| --:DeductSpellSlot| --?[$SlotLevel] -eq 0|NoSlot --=SlotsLeft|[$SlotsExpended] - 1 --@setattr|_charid [*S:character_id] _lvl[$SlotLevel]_slots_expended|[$SlotsLeft] _silent --+|Level [$SlotLevel] Slots Left: [$SlotsLeft] --X|Full Stop --:NoSlot| --X| --:NoSlotsLeft| --+|[*S:character_name] has no level [$SlotLevel.Total] spell slots available. --#emoteText|[*S:character_name] tries to cast a spell but farts in instead. --&gt;PlayEffects|@{selected|token_id};none;bomb-acid;none;none;Fart --X|NoSlotsLeftStop --:PlayEffects|Parameters are : sourcetoken; targettoken; source effect; target effect; line effect; sound effect --vtoken|[%1%] [%3%] --vtoken|[%2%] [%4%] --vbetweentokens|[%1%] [%2%] [%5%] --@roll20AM|_audio,play,nomenu|[%6%] --&lt;| --:TurnOffEnsStrk| --+Ensnaring Srike|@{selected|token_name} loses focus ensnaring strike. --@setattr|_charid [*S:character_id] _EnsStr|0 _silent --*|Get rid of the turn tracker for ensnaring strike. --@token-mod| _set tint_color|transparent _ids @{character_id} --&gt;EnsStrk| --:TurnOffZeph| --+Zephyr Strike|@{selected|token_name} slows down. --*|Get rid of the turn tracker for Zephyr Stike. --@setattr|_charid [*S:character_id] _Zephyr|0 _silent --@roll20AM|_audio,play,nomenu|Shrink --@token-mod| _set tint_color|transparent _ids @{character_id} --&gt;Zeph| --:TurnOffMagicWeapon| --+Magic Weapon|@{selected|token_name}'s @{selected|MagicWeapon} is no longer magical. --@setattr|_charid [*S:character_id] _MagicWeapLVL|0 _silent --@setattr|_charid [*S:character_id] _MagicWeapon|0 _silent --&gt;MagWeap| }} Block 2 --:HuntMark| --&amp;MarkDam| --?"@{target|token_id}" -inc "@{selected|marked}"|Marked --&lt;| --:Marked| --?[%1%] -eq crit|CritHM --&amp;MarkDam|+ + 1d6 [Hunters Mark] --&lt;| --:CritHM| --&amp;MarkDam|+ + 2d6 [Hunters Mark] --&lt;|
1622125060

Edited 1622125073
Justin G your first post the background of the code text is black can you fix it?&nbsp;
Fixed Craven said: Justin G your first post the background of the code text is black can you fix it?&nbsp;
1622227237

Edited 1622227457
Kurt J.
Pro
API Scripter
HealEveryone Here is a simple script I use when testing my damage spell macros. It will prompt for any token on the page (so it can get a PageID) and then proceed to set all of the tokens on that page to full health. It requires that you are using a bar with a max value to represent health, and the bar is configurable by changing the default (3) at the top of the script. Does not display any output to the chat window. Requires token-mod . !script {{ --/|Script : Heal Everyone --/|Purpose : Asks for a target token and sets every token on that page to full HP. --/|Notes : Requires a bar with a max value. Customize the "healthBar" var to the --/| bar number that you use to represent health. --/|Requires: token-mod --&amp;healthBar|3 --#hidecard|1 --~|array;pagetokens;alltokens;@{target|token_id} --~tokenid|array;getfirst;alltokens --?[&amp;tokenid] -eq ArrayError|endOutput --:loopCheck| --/|Skip targets that are not on the token layer or that don't represent creatures --?[*[&amp;tokenid]:t-layer] -ne objects|continue --?"[*[&amp;tokenid]:t-represents]" -ninc "-"|continue --&gt;SetHealthWithTokenMod|[&amp;tokenid];[&amp;healthBar];[*[&amp;tokenid]:t-bar[&amp;healthBar]_max] --:continue| --~tokenid|array;getnext;alltokens --?[&amp;tokenid] -ne ArrayError|loopCheck --X| --:SetHealthWithTokenMod|Parameters are tokenid;bar#;amount --@token-mod|_ignore-selected _ids [%1%] _set bar[%2%]_value|[%3%] --&lt;| }}
1622321021

Edited 1622322908
Global NPC Settings (D&amp;D 5e OGL Sheets only) Ever wish you could make a mass change for a campaign, changing every NPC config setting at once?&nbsp; Things like Whisper Rolls, &nbsp; Rolling for Advantage, Dex Tiebreaker.&nbsp; Here's a scriptcard that does just using the ChatSetAttr API script to perform this magic. Requirements:&nbsp; D&amp;D 5e OGL Sheets, GM Run Only and ChatSetAttr Installed. Allows for the following settings to be made on all NPCs in your campaign: Whisper Rolls: Never, Toggle, Query, Always Roll Advantage: Never, Toggle, Query, Always Automatic Damage Rolls: &nbsp; On, Off NPC Name in Rolls: Show, Hide Dex Tiebreaker: On, Off Warning:&nbsp; Running this script will kick off a batch change to every NPC in your campaign and could take a minute or two to run.&nbsp;&nbsp; !scriptcard {{ --/|======= Global Campaign NPC Settings ========== --#reentrant|CampaignNPCSettings --#title|Global Campaign NPC Settings --#titleCardBackground|#095c1f --#oddRowBackground|#BADFBB --#evenRowBackground|#BADFBB --#buttonbackground|#BADFBB --#buttontextcolor|#0905f2 --#buttonbordercolor|#BADFBB --#hidecard|0 --#bodyFontSize|12px --#buttonFontSize|12px --#whisper|gm --#debug|0 --&gt;SECTION_HEADER|Whisper Rolls --+|[c][rbutton]Never::APPLY_NPC_GLOBAL_SETTING;WR_Never[/rbutton] [rbutton]Toggle::APPLY_NPC_GLOBAL_SETTING;WR_Toggle[/rbutton] [rbutton]Query::APPLY_NPC_GLOBAL_SETTING;WR_Query[/rbutton] [rbutton]Always::APPLY_NPC_GLOBAL_SETTING;WR_Always[/rbutton] [/c] --&gt;SECTION_HEADER|Roll Queries (Advantage) --+|[c][rbutton]Never::APPLY_NPC_GLOBAL_SETTING;RA_Never[/rbutton] [rbutton]Toggle::APPLY_NPC_GLOBAL_SETTING;RA_Toggle[/rbutton] [rbutton]Query::APPLY_NPC_GLOBAL_SETTING;RA_Query[/rbutton] [rbutton]Always::APPLY_NPC_GLOBAL_SETTING;RA_Always[/rbutton] [/c] --&gt;SECTION_HEADER|Automatic Damage Rolls --+|[c][rbutton]On::APPLY_NPC_GLOBAL_SETTING;DT_On[/rbutton] [rbutton]Off::APPLY_NPC_GLOBAL_SETTING;DT_Off[/rbutton] [/c] --&gt;SECTION_HEADER|NPC Name in Rolls --+|[c][rbutton]Show::APPLY_NPC_GLOBAL_SETTING;NPCName_Show[/rbutton] [rbutton]Hide::APPLY_NPC_GLOBAL_SETTING;NPCName_Hide[/rbutton] [/c] --&gt;SECTION_HEADER|Dex Tiebreaker --+|[c][rbutton]On::APPLY_NPC_GLOBAL_SETTING;DTB_On[/rbutton] [rbutton]Off::APPLY_NPC_GLOBAL_SETTING;DTB_Off[/rbutton] [/c] --&gt;FOOTER_BUTTONS_MAIN| --X| --&lt;| --:APPLY_NPC_GLOBAL_SETTING|MODE --&amp;Mode|[&amp;reentryval] --#Title|Apply Global Setting --+|[c][b]Hang on, this may take a minute...[/b][/c] --C[&amp;Mode]|WR_Never:WR_NEVER|WR_Always:WR_ALWAYS|WR_Toggle:WR_TOGGLE|WR_Query:WR_QUERY|RA_Never:RA_NEVER|RA_Toggle:RA_TOGGLE|RA_Query:RA_QUERY|RA_Always:RA_ALWAYS|NPCName_Show:NPCNAME_SHOW|NPCName_Hide:NPCNAME_HIDE|DTB_On:DTB_ON|DTB_Off:DTB_OFF|DT_On:DT_ON|DT_Off:DT_OFF --*|Invalid Option ([&amp;Mode]) in APPLY_NPC_GLOBAL_SETTING --X| --:WR_NEVER| --#leftsub|Never Whisper Rolls --@setattr|_allgm _replace _wtype| --X| --:WR_ALWAYS| --#leftsub|Always Whisper Rolls --@setattr|_allgm _replace _wtype|'/w gm ' --X| --:WR_TOGGLE| --#leftsub|Toggle Whisper Rolls --@setattr|_allgm _replace _wtype|\at{whispertoggle} --X| --:WR_QUERY| --#leftsub|Query Whisper Rolls --@setattr|_allgm _replace _wtype|\ques{Whisper\ques\|Public Roll,\|Whisper Roll,/w gm } --X| --:RA_NEVER| --#leftsub|Never Roll Advantage --&amp;P1|{{normal=1} --&amp;P1|+} {{r2=[[0d20 --@setattr|_allgm _replace _rtype|[&amp;P1] --X| --:RA_TOGGLE| --#leftsub|Toggle Roll Advantage --@setattr|_allgm _replace _rtype|\at{advantagetoggle} --X| --:RA_QUERY| --#leftsub|Query Roll Advantage --@setattr|_allgm _replace _rtype|\at{queryadvantage} --X| --:RA_ALWAYS| --#leftsub|Always Roll Advantage --&amp;P1|{{always=1} --&amp;P1|+} {{r2=[[\at{d20} --@setattr|_allgm _replace _rtype|[&amp;P1] --X| --:NPCNAME_SHOW| --#leftsub|Show NPC Name on Roll --&amp;P1|{{charname=\at{npc_name} --&amp;P1|+} --&amp;P1|+} --&amp;P2|{{name=\at{npc_name} --&amp;P2|+} --&amp;P2|+} --@setattr|_allgm _replace _charname_output|[&amp;P1] _npc_name_flag|[&amp;P2] --X| --:NPCNAME_HIDE| --#leftsub|Hide NPC Name on Roll --@setattr|_allgm _replace _npc_name_flag|0 _charname_output|0 --X| --:DTB_ON| --#leftsub|Dex Tiebreaker On --@setattr|_allgm _replace _init_tiebreaker|\at{dexterity}/100 --X| --:DTB_OFF| --#leftsub|Dex Tiebreaker Off --@setattr|_allgm _replace _init_tiebreaker|0 --X| --:DT_ON| --#leftsub|Roll Damage Automaticaly --@setattr|_allgm _replace _dtype|full --X| --:DT_OFF| --#leftsub|Do Not Roll Damage Automaticaly --@setattr|_allgm _replace _dtype|pick --X| --&lt;| --:SECTION_HEADER|Title --&amp;hdrstyle_T|style="width:100%;padding:1px;border-spacing:0px;border-collapse:collapse;text-shadow: 0px 0px 0px black;border:1px solid black;" --&amp;hdrstyle_TR|style="border:0px solid black;" --&amp;hdrstyle_TD|style="width:100%;background-color:#edf7f0;font-size:110%;font-weight:bold;text-align:center" --+|[t [&amp;hdrstyle_T]][tr [&amp;hdrstyle_TR]][td [&amp;hdrstyle_TD]][c][%1%][/c][/td][/tr][/t] --&lt;| --:FOOTER_BUTTONS_MAIN| --/+|[r][button]NPC::~Mule|NPC-Tools[/button] [button]DM::~Mule|DM-Tools[/button][/r] --&lt;| }}
@Snow - minor issue - don't know if you caught this yet but the monster knowledge script won't test for monstrosity as it is misspelled: --?"@{target|npc_type}" -inc beast|&gt;Nature --?"@{target|npc_type}" -inc gaint|&gt;Nature --?"@{target|npc_type}" -inc monstroity|&gt;Nature --?"@{target|npc_type}" -inc plant|&gt;Nature
1622436306

Edited 1622437159
Snow
Pro
Michael C. said: @Snow - minor issue - don't know if you caught this yet but the monster knowledge script won't test for monstrosity as it is misspelled: --?"@{target|npc_type}" -inc beast|&gt;Nature --?"@{target|npc_type}" -inc gaint|&gt;Nature --?"@{target|npc_type}" -inc monstroity|&gt;Nature --?"@{target|npc_type}" -inc plant|&gt;Nature Thanks for catching that. I fixed it and also notice I misspelled Giant wrong too, which is fixed too.
Mine are not particularly good but I wanted to share...Mass Healing Word !scriptcards {{&nbsp; &nbsp; --#title|Mass Healing Word &nbsp; --#sourceToken|@{selected|token_id} &nbsp; --#emoteText|[*S:character_name] Casts Mass Healing Word&nbsp; &nbsp; --#titleCardBackground|#440000 &nbsp; --#titleCardFont|#7fff00 &nbsp; --#leftsub|3rd Level : Evocation &nbsp; --#rightsub|Bonus Action : 60' : V&nbsp; &nbsp; --#evenRowBackground|#00ffff &nbsp; --#evenRowFontColor|#000000 &nbsp; --#oddRowBackground|#006400&nbsp;&nbsp; &nbsp; --#oddRowFontColor|#ffff00 &nbsp; --#debug|1 &nbsp; --&gt;GetAndCheckSlotInformation| &nbsp; --&gt;AbilityAssign|[*S:spellcasting_ability] &nbsp; --:HPCalc| Calculate 1d4 + spellcasting ability modifier +1d4/level over 3rd &nbsp; &nbsp; --=HPCalc|[$SlotLevel] - 2 &nbsp; &nbsp; --=HPRecovered|[$HPCalc]d4 + [%1%] &nbsp; --=Count|1 &nbsp; --&gt;BuildAndAskTargets| &nbsp; --:HealLoop| &nbsp; &nbsp; --&gt;AssignTarget|[$Count] &nbsp; &nbsp; --+|[*[&amp;ThisTarget]:character_name] Is Healed for [$HPRecovered.Total] Points! &nbsp; &nbsp; --&gt;ApplyHealingTokenmod|[*[&amp;ThisTarget]:character_id];1;+[$HPRecovered] &nbsp; &nbsp; --/ApplyHealingAlterbars|[&amp;ThisTarget];1;+[$HPRecovered] &nbsp; &nbsp; --=Count|[$Count] + 1 &nbsp; &nbsp; --?[$Count] -le 6|HealLoop &nbsp; --X| --:PROCEDURES| &nbsp; --:GetAndCheckSlotInformation| &nbsp; &nbsp; --=SlotLevel|?{Spell Slot Level Used?|3|4|5|6|7|8|9} &nbsp; &nbsp; --=SlotsTotal|[*S:lvl[$SlotLevel]_slots_total] &nbsp; &nbsp; --=SlotsExpended|[*S:lvl[$SlotLevel]_slots_expended] &nbsp; &nbsp; --?[$SlotsExpended.Total] -ge [$SlotsTotal.Total]|NoSlotsLeft &nbsp; --:DeductSpellSlot| &nbsp; &nbsp; --=SlotsExpended|[$SlotsExpended] + 1 &nbsp; &nbsp; --@setattr|_charid [*S:character_id] _lvl[$SlotLevel]_slots_expended|[$SlotsExpended] _silent &nbsp; &nbsp; --=SlotsRemaining|[$SlotsTotal] - [$SlotsExpended] &nbsp; &nbsp; --+|[*S:character_name] has [$SlotsRemaining] Level [$SlotLevel] Slots Left&nbsp; &nbsp; --&lt;| &nbsp; --:NoSlotsLeft| &nbsp; &nbsp; --+|[b][*S:character_name] has no level [$SlotLevel.Total] spell slots available.[/b] &nbsp; --X|NoSlotsLeftStop &nbsp; --:AbilityAssign| &nbsp; &nbsp; --&amp;Attribute|[%1%] &nbsp; &nbsp; --?[&amp;Attribute] -inc "strength"|&gt;Strength &nbsp; &nbsp; --?[&amp;Attribute] -inc "dexterity"|&gt;Dexterity &nbsp; &nbsp; --?[&amp;Attribute] -inc "intelligence"|&gt;Intelligence &nbsp; &nbsp; --?[&amp;Attribute] -inc "wisdom"|&gt;Wisdom &nbsp; &nbsp; --?[&amp;Attribute] -inc "charisma"|&gt;Charisma &nbsp; --X| &nbsp; --:Strength| &nbsp; &nbsp; --=Mod|@{selected|strength_mod} &nbsp; --&gt;HPCalc|[$Mod] &nbsp; --:Dexterity| &nbsp; &nbsp; --=Mod|@{selected|dexterity_mod} &nbsp;--&gt;HPCalc|[$Mod] &nbsp; --:Intelligence| &nbsp; &nbsp; --=Mod|@{selected|intelligence_mod} &nbsp; --&gt;HPCalc|[$Mod] &nbsp; --:Wisdom| &nbsp; &nbsp; --=Mod|@{selected|wisdom_mod} &nbsp;--&gt;HPCalc|[$Mod] &nbsp; --:Charisma| &nbsp; &nbsp; --=Mod|@{selected|charisma_mod} &nbsp;--&gt;HPCalc|[$Mod] &nbsp;--:BuildAndAskTargets| &nbsp; &nbsp;--&amp;TargetString| &nbsp; &nbsp;--=targetCount|1 &nbsp; &nbsp;--:TargetLoop| &nbsp; &nbsp; &nbsp;--&amp;TargetString|+t;target[$targetCount.Total];target[$targetCount.Total] &nbsp; &nbsp; &nbsp;--=targetCount|[$targetCount.Total] + 1 &nbsp; &nbsp; &nbsp;--?[$targetCount.Total] -le 6|&gt;AddSeparator &nbsp; &nbsp;--?[$targetCount.Total] -le 6|TargetLoop &nbsp; &nbsp;--iPlease click the button below to select characters to heal. The same target can be selected multiple times;Select 6 Targets|[&amp;TargetString] &nbsp; --&lt;| &nbsp; --:AddSeparator| &nbsp; &nbsp; --&amp;TargetString|+|| &nbsp; --&lt;| &nbsp; --:ApplyHealingTokenmod|Parameters are tokenid;bar#;amount &nbsp; &nbsp; --@token-mod|_ignore-selected _ids [%1%] _set bar[%2%]_value|[%3%] &nbsp; --&lt;| &nbsp; --:ApplyHealingAlterbars|Parameters are tokenid;bar#;amount &nbsp; --@alter|_target|[%1%] _bar|[%2%] _amount|[%3%] &nbsp; --&lt;| --:AssignTarget| --&amp;ThisTarget|[&amp;target[%1%]] --&lt;| }}
1622870375

Edited 1623014659
Health Check 0.3 (update 6.5.21) Here's a fun one I plan to give to my players.&nbsp; They are constantly asking me how the monster they are fighting is looking on health.&nbsp; This script, once placed as a macro in their sheet, gives them the ability to check out the health condition of an enemy (or friend).&nbsp; However, it has some randomness, taking into account distance to target, and leverages their perception and medicine skill level. This is my first version, and I'm sure I'll need to play around a bit with the logic and categorization tables to get them tuned.&nbsp; They can execute this as many times as possible, my reasoning is that its a quick observation, not a true investigative check.&nbsp; They're just trying to get a sense of the target's health.&nbsp; I threw in the Perception and Medicine bonus and applied a distance table to reward skill and add randomness and variability.&nbsp; Let me know if you have any ideas out there on how to improve this?&nbsp; I'll keep posting updates here as this develops. version 0.3:&nbsp; Added card background color indicator and large target avatar image to the card. version 0.1: Initial DistanceDice Table: &nbsp;&nbsp;&nbsp;&nbsp;0-15:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Advantage &nbsp;&nbsp;&nbsp;&nbsp;15.1-30:&nbsp;&nbsp;&nbsp;&nbsp;Normal(1d20) &nbsp;&nbsp;&nbsp;&nbsp;30.1-60:&nbsp;&nbsp;&nbsp;&nbsp;1d20-1 &nbsp;&nbsp;&nbsp;&nbsp;60.1-120:&nbsp;&nbsp;&nbsp;1d20-3 &nbsp;&nbsp;&nbsp;&nbsp;120+&nbsp; &nbsp; &nbsp; &nbsp; Disadvantage &nbsp;&nbsp;&nbsp;&nbsp; Skill Check &nbsp; &nbsp; DistanceDice + (medicine_bonus + perception_bonus) / 2 Result 1-4: Total Failure&nbsp;(or Natural 1) 4.1-9: Have no idea 9.1-14: a bit of a clue 14.1-18: Have a good idea 18.1-25: Pretty solid idea 25.1+:&nbsp; Keenly aware&nbsp;(or Natural 20) I then cross reference the skill check and the target's remaining health percentage to identify one of 36 status messages (6 check scores X 6 health categories) which is returned back to the player.&nbsp; The player never sees what he rolled (but i can via the debug lines).&nbsp;&nbsp; If you look at the code, you can also see that I now use a debug subroutine (LOG) that if find useful when debugging my scripts.&nbsp; A global variable [&amp;DBUG] determines if LOG messages are sent to the GMs debug card and every LOG msg is categorized (1, 2, 3, ...).&nbsp; I find that as I develop these scripts, I start out wanting a lot of debug detail, and then I ratchet it back as the bugs are swatted.&nbsp; Just set [&amp;DBUG] to 0 if you don't want to see the LOG messages. Script: !script {{ --#title|Health Check --#reentrant|HealthStatus --#titleCardBackground|#932729 --#whisper|self --#oddRowBackground|#FFFFFF --#evenRowBackground|#FFFFFF --#buttonbackground|#FFFFFF --#buttontextcolor|#0905f2 --#buttonbordercolor|#FFFFFF --#bodyFontSize|11px --#sourceToken|@{selected|token_id} --#targetToken|@{target|token_id} --#activepage|[*S:t-_pageid] --#debug|1 --&amp;DBUG|2 --/| Purpose of this script is to allow a user to inspect a token's health status --/| based on the character's Perception and distance to target, they'll get different levels of ideas. --/| I may use the character's Medicine ability as an adder --/| First get the source and destination tokens --&amp;STokenId|@{selected|token_id} --&amp;TTokenId|@{target|token_id} --&gt;LOG|1;HC/S-T;[*[&amp;STokenId]:t-name] =&gt; [*[&amp;TTokenId]:t-name] --=TargetHP|[*[&amp;TTokenId]:t-bar1_value] --=TargetMax|[*[&amp;TTokenId]:t-bar1_max] --=TargetPct|[$TargetHP] / [$TargetMax] * 100 --/| Compute the distance between the tokens to add a difficulty rating --/| 0-15 :Advantage --/| 15.1 - 30 :Normal --/| 30.1 - 60 :-1 --/| 60.1 - 120 :-3 --/| 120+ :Disadvantage --/:CHECK DISTANCE IN ft.| --~d|euclideanlong;[&amp;STokenId];[&amp;TTokenId] --=SnapInc|[*P:snapping_increment] --~SnapInc|math;max;.1;[$SnapInc] --=Scale|[*P:scale_number] --~Scale|math;max;1;[$Scale] --=DIST|[$d] / [$SnapInc] * [$Scale] --~DIST|math;round;[$DIST] --?[$DIST] -gt 120|&amp;ChkDice;2d20kl1 --?[$DIST] -le 120|&amp;ChkDice;1d20 - 3 --?[$DIST] -le 60|&amp;ChkDice;1d20 - 1 --?[$DIST] -le 30|&amp;ChkDice;1d20 --?[$DIST] -le 15|&amp;ChkDice;2d20kh1 --&gt;LOG|2;HC-Dist;[$DIST] Dice:[&amp;ChkDice] --/| get medicine and perception skill bonuses --&amp;PerceptionBonus|[*[&amp;STokenId]:perception_bonus] --&amp;MedicineBonus|[*[&amp;STokenId]:medicine_bonus] --/| use 1/2 perception and 1/2 medicine skill as bonus to roll --=Bonus|[&amp;PerceptionBonus] + [&amp;MedicineBonus] --=Bonus|[$Bonus]/2 --&gt;LOG|2;HC-Bonus;[$Bonus] Percep:[&amp;PerceptionBonus] Medicine:[&amp;MedicineBonus] --#rightsub|Bonus:[$Bonus] --#leftsub|Dist:[$DIST]ft. --=CheckRoll|[&amp;ChkDice] + [$Bonus] --/| Results --/| F 1-4: Total Failure (or natural 1) --/| E 4.1-9: Have no idea --/| D 9.1-14: a litle bit of a clue --/| C 14.1-18: Have a good idea --/| B 18.1-25: Pretty solid idea --/| A 25.1+: Keenly aware (or natural 20) --?[$CheckRoll] -gt 25|&amp;Grade;A --?[$CheckRoll] -le 25|&amp;Grade;B --?[$CheckRoll] -le 18|&amp;Grade;C --?[$CheckRoll] -le 14|&amp;Grade;D --?[$CheckRoll] -le 9|&amp;Grade;E --?[$CheckRoll] -le 4|&amp;Grade;F --?[$CheckRoll.Base] -eq 1|&amp;Grade;F --?[$CheckRoll.Base] -eq 20|&amp;Grade;A --&gt;LOG|2;HC-Grade;[&amp;Grade] Roll:[$CheckRoll] --/|Grade F E D C B A --/|A 100% Death is close! Looks bad I have no idea Looks Healthy Looks Fit Perfect Health (100%) --/|B 75+% They are going down! Looks bad I have no idea Looks Healthy Some scratches Some scratches, but good (Less than 100%) --/|C 50+% About to croak! I have no idea I have no idea They're hurting They're hurting They've taken some damage (Less than 75%) --/|D 25+% About to croak! I have no idea I have no idea They're hurting They're hurting Bloodied (Less than 50%) --/|E 10+% About to croak! Looks Ok I have no idea More than a flesh wound Not long for this world Loosing blood fast, one more solid hit should do them in (Less than 25%) --/|F 10+% This one is strong! Looks Ok I have no idea Close to falling Death is close On death's door (Less than 10%) --?[$TargetPct] -ge 100|&amp;Health;A --?[$TargetPct] -lt 100|&amp;Health;B --?[$TargetPct] -lt 75|&amp;Health;C --?[$TargetPct] -lt 50|&amp;Health;D --?[$TargetPct] -lt 25|&amp;Health;E --?[$TargetPct] -lt 10|&amp;Health;F --&gt;LOG|2;HC-Health;[&amp;Health] HltPct:[$TargetPct] --&amp;HText_AF|Death is close. --&amp;HColor_AF|#cc0000 --&amp;HText_AE|Hard to tell. --&amp;HColor_AE|#ffffe6 --&amp;HText_AD|I have no idea. --&amp;HColor_AD|#ffffff --&amp;HText_AC|Hard to tell. --&amp;HColor_AC|#e6ffe6 --&amp;HText_AB|Looks fit to me. --&amp;HColor_AB|#b3ffb3 --&amp;HText_AA|Perfect Health (100%)! --&amp;HColor_AA|#006600 --&amp;HText_BF|They are going down soon! --&amp;HColor_BF|#ff3333 --&amp;HText_BE|Looks bad, really bad! --&amp;HColor_BE|#ff8080 --&amp;HText_BD|I have no idea. --&amp;HColor_BD|#ffffff --&amp;HText_BC|Looks Healthy. --&amp;HColor_BC|#aaff80 --&amp;HText_BB|Some scratches. --&amp;HColor_BB|#99ff66 --&amp;HText_BA|Some scratches, but good (Less than 100%) --&amp;HColor_BA|#88ff4d --&amp;HText_CF|About to croak! --&amp;HColor_CF|#cc0000 --&amp;HText_CE|I have no idea, maybe if he get's hit again we can tell. --&amp;HColor_CE|#ffffff --&amp;HText_CD|I have no idea. --&amp;HColor_CD|#ffffff --&amp;HText_CC|They're hurting! --&amp;HColor_CC|#ffffe6 --&amp;HText_CB|They're hurting! --&amp;HColor_CB|#ffffb3 --&amp;HText_CA|They've taken some damage (Less than 75%). --&amp;HColor_CA|#ffff99 --&amp;HText_DF|Still standing for sure! --&amp;HColor_DF|#ccffb3 --&amp;HText_DE|I have no idea. --&amp;HColor_DE|#ffffff --&amp;HText_DD|I have no idea. --&amp;HColor_DD|#ffffff --&amp;HText_DC|They're hurting. --&amp;HColor_DC|#ffffb3 --&amp;HText_DB|It's just a flesh wound. --&amp;HColor_DB|#ffd1b3 --&amp;HText_DA|Bloodied (Less than 50%). --&amp;HColor_DA|#cc5200 --&amp;HText_EF|Doing OK I think! --&amp;HColor_EF|#b3ffb3 --&amp;HText_EE|Looks good to me. --&amp;HColor_EE|#ccff99 --&amp;HText_ED|I have no idea. --&amp;HColor_ED|#FFFFFF --&amp;HText_EC|A little more than a flesh wound. --&amp;HColor_EC|#ffe6e6 --&amp;HText_EB|Not long for this world. --&amp;HColor_EB|#ff6666 --&amp;HText_EA|Loosing blood fast, one more solid hit should do them in (Less than 25%) --&amp;HColor_EA|#ff1a1a --&amp;HText_FF|This one is strong! --&amp;HColor_FF|#009933 --&amp;HText_FE|Looks OK to me. --&amp;HColor_FE|#ccffdd --&amp;HText_FD|I have no idea. --&amp;HColor_FD|#ffffff --&amp;HText_FC|They are going down. --&amp;HColor_FC|#ffff1a --&amp;HText_FB|Death is close, is that an arrow through their skull? --&amp;HColor_FB|#660000 --&amp;HText_FA|On death's door (Less than 10%) --&amp;HColor_FA|#cc0000 --&amp;Msg|[&amp;HText_[&amp;Health][&amp;Grade]] --#oddRowBackground|[&amp;HColor_[&amp;Health][&amp;Grade]] --#evenRowBackground|#FFFFFF --&gt;LOG|1;HC-Msg;[$CheckRoll.Text] HText_[&amp;Health][&amp;Grade] --+|[c][img width=200][*T:avatar][/img][/c] --+|[c][b][&amp;Msg][/b][/c] --X| --:LOG|debug level;hdr;msg --\|debug level is used to show more or less debug messages. 1 is high level, 2 is detailed ... --*[%1%]|[%2%]; [%3%] --?[%1%] -gt [&amp;DBUG]|LOG_EXIT --*[%2%]|[%3%] --:LOG_EXIT| --&lt;| }}
1623248708

Edited 1630185753
5E Monk Flurry of Blows with Way of the Open Fist V2.0 This is modified off of Kent's Magic Missile script.&nbsp; There are button prompts for 2 targets, attack type (regular, advantage, and disadvantage) for each target, and if you want to try and knock them back or down on a hit.&nbsp; If your monk doesn't have way of the open fist, you can just delete the --i that ask if you want to try to knock them back or down.&nbsp; It isn't the prettiest code, as I was having trouble keeping track of --&gt; and --&lt;.&nbsp; As always, please let me know if you see things that can be improved.&nbsp; Monks can move between each blow, so I would just let your monk know that the second target doesn't need to be in melee range.&nbsp; Also, all the damage is applied prior to moving on to the second target, so this will let you know if you hit or missed and if the target died, but won't tell you if you fumbled or if the target was knocked back 15 feet before the script card comes. 2.0 - Fixed some things. !scriptcard {{ --#title|Flury of Blows --#sourceToken|@{selected|token_id} --#leftsub|Ki --#rightsub|Melee Attack --&gt;GetAndCheckSlotInformation| --=BlessCount|2 --&gt;BuildAndAskTargets|[$BlessCount.Raw] --#emoteText|@{selected|character_name} uses a ki for a fury of blows to his enemy's dicks! --=DisplayCount|1 --:BlessLoop| --&gt;FireMissile|[$DisplayCount.Raw] --:AfterMissile| --=DisplayCount|[$DisplayCount] + 1 --?[$DisplayCount] -le [$BlessCount]|BlessLoop --&gt;DeductSpellSlot| --X| --:FireMissile| --&amp;ThisTarget|[&amp;target[%1%]] --&amp;DamageType|bludgeoning --iClick the button to select if you are attack normal(1d20), advantage(2d20kh1), or disadvantage(2d20kl1);Attack Type for [*[&amp;ThisTarget]:character_name]|q;AttackRoll;What kind of Attack Rollfor [*[&amp;ThisTarget]:character_name]?|1d20|2d20kh1|2d20kl1 --&amp;DamageAmount|1d4 --=AttackRoll| [&amp;AttackRoll] + [*S:dexterity_mod] [DEX] + [*S:pb] [PROF] --+|You rolled [$AttackRoll] to hit. --?[$AttackRoll.Base] -eq 20|Crit --?[$AttackRoll.Base] -eq 1|Fumble --=NPCAC|[*[&amp;ThisTarget]:npc_ac] --?[$AttackRoll.Raw] -lt [$NPCAC]|Miss --:Hit| --&gt;RollDamage|[&amp;DamageType] --:AfterDamageNorm| --&gt;PlayEffects|none;none;none;none;none;Karate --+Hit!|Your attack hit for [$Damage] [%2%] damage! --&gt;ApplyDamageTokenmod|[&amp;ThisTarget];1;-[$Damage] --&gt;OpenHand| --:AfterOPHNorm| --&gt;AfterMissile| --:Miss| --+Miss|Your attack missed! --&gt;AfterMissile| --:Fumble| --=Fumblet|[T#Fumble-Table] --+Fumble|The attack went really bad! --&gt;PlayEffects|none;none;none;none;none;Failure --+Bad Stuff| [$Fumblet.tableEntryText] --=FDamage|[&amp;DamageAmount] + [*S:dexterity_mod] [DEX] --=FCrit|[&amp;DamageAmount] + [*S:dexterity_mod] [DEX] + [&amp;DamageAmount] [CRIT] --*Possible Damage| Normal Damage is [$FDamage] and Crit Damage is [$FCrit]. --&gt;AfterMissile| --:Crit| --&gt;RollDamageSS|[&amp;AttackType];crit --:AfterDamageCrit| --&gt;PlayEffects|none;none;none;none;none;Karate --+Critical Hit|You deal [$Damage] [&amp;DamageType] damage CRITICAL HIT! --:ApplyDamageAlterbars|[&amp;ThisTarget];1;-[$ThisMissile.Raw] --&gt;OpenHand|Crit --:AfterOPHCrit| --&gt;AfterMissile| --:RollDamage| --&amp;vuln| --?"[*[&amp;ThisTarget]:npc_vulnerabilities]" -inc "[&amp;DamageType]"|DoubleD --?"[*[&amp;ThisTarget]:npc_resistances]" -inc "[&amp;DamageType]"|HalfD --?"[*[&amp;ThisTarget]:npc_immunities]" -inc "[&amp;DamageType]"|immune --^gettoit| --:HalfD| --&amp;vuln| \ 2 [Resistant] --^gettoit| --:DoubleD| --&amp;vuln| * 2 [Vulnerable] --^gettoit| --:immune| --+|[*[&amp;ThisTarget]:token_name] is immune to [&amp;DamageType] damage. --=vuln|0 --:gettoit| --?[%2%] -eq crit|CritDamage --=Damage|[&amp;DamageAmount] + [*S:dexterity_mod] [DEX][&amp;vuln] --&gt;AfterDamageNorm| --:CritDamage| --=Damage|[$DamageAmount] + [*S:dexterity_mod] [DEX] + 1d[$DamageAmount] [CRIT][&amp;vuln] --&gt;AfterDamageCrit| --:GetAndCheckSlotInformation| --=SlotsTotal|0 --=SlotsExpended|[*S:class_resource] --?[$SlotsExpended.Raw] -eq [$SlotsTotal.Raw]|NoSlotsLeft --&lt;| --:DeductSpellSlot| --=SlotsExpended|[$SlotsExpended] - 1 --@setattr|_charid [*S:character_id] _class_resource|[$SlotsExpended] _silent --+|Ki Left: [$SlotsExpended] --X|Full Stop --:NoSlotsLeft| --+|[*S:character_name] has no Ki available. --#emoteText|[*S:character_name] tries to to use Ki, but they can't find their Kis. --X|NoSlotsLeftStop --:PlayEffects|Parameters are : sourcetoken; targettoken; source effect; target effect; line effect; sound effect --@token-mod| _ids [%2%] _set statusmarkers|purple --vtoken|[%1%] [%3%] --vtoken|[%2%] [%4%] --vbetweentokens|[%1%] [%2%] [%5%] --@roll20AM|_audio,play,nomenu|[%6%] --&lt;| --:ApplyDamageTokenmod|Parameters are tokenid;bar#;amount --@token-mod|_ignore-selected _ids [%1%] _set bar[%2%]_value|-[%3%] --&lt;| --:ApplyDamageAlterbars|Parameters are tokenid;bar#;amount --@alter|_target|[%1%] _bar|[%2%] _amount|[%3%] --&lt;| --:BuildAndAskTargets| --&amp;TargetString| --=targetCount|1 --:TargetLoop| --&amp;TargetString|+t;target[$targetCount.Raw];Missile [$targetCount.Raw] Target --=targetCount|[$targetCount.Raw] + 1 --?[$targetCount.Raw] -le [%1%]|&gt;AddSeparator --?[$targetCount.Raw] -le [%1%]|TargetLoop --iPlease click the button below to select the target.;Select [%1%] Targets|[&amp;TargetString] --/| --&lt;| --:AddSeparator| --&amp;TargetString|+|| --&lt;| --:ApplyDamageTokenmod|Parameters are tokenid;bar#;amount --@token-mod| _ids [*[%2%]:character_id] _set bar[%2%]_value|[%3%] --@token-mod|_ignore-selected _ids [%1%] _set bar[%2%]_value|[%3%] --&lt;| --:OpenHand| --&amp;ifCrit|[%1%] --iYou hit target [*[&amp;ThisTarget]:character_name];Click this button to try to knock them down or back|q;maybe;Down or Back?|Down|Back|No Reaction| --?"[&amp;maybe]" -inc "Down"|Down --?"[&amp;maybe]" -inc "Back"|Back --?"[&amp;maybe]" -inc "Reaction"|noReaction --:AfterOpen| --?"[&amp;ifCrit] -inc "crit"|AfterOPHCrit --&gt;AfterOPHNorm| --:Back| --=DC|8 + [*S:wisdom_mod] + [*S:pb] --=savingThrow|1d20 + [*[&amp;ThisTarget]:strength_save_bonus] [STR] --+|[*[&amp;ThisTarget]:character_name] made a [$savingThrow] Strength saving throw against [$DC] DC. --?[$savingThrow] -ge [$DC]|missabilityS --+|[*[&amp;ThisTarget]:character_name] has been knocked back 15 ft. --&gt;AfterOpen| --:missabilityS| --+Miss|Your open hand had to affect. --&gt;AfterOpen| --:Down| --=DC|8 + [*S:wisdom_mod] + [*S:pb] --=savingThrow|1d20 + [*[&amp;ThisTarget]:dexterity_save_bonus] [DEX] --+|[*[&amp;ThisTarget]:character_name] made a [$savingThrow] Dexterity saving throw against [$DC] DC. --?[$savingThrow] -ge [$DC]|missabilityD --+|[*[&amp;ThisTarget]:character_name] has been knocked down prone. --@token-mod| _ids [*[&amp;ThisTarget]:character_id] _set statusmarkers|back-pain --&gt;AfterOpen| --:missabilityD| --+Miss|Your open hand had to affect. --&gt;AfterOpen| --:noReaction| --+|[*[&amp;ThisTarget]:character_name] has no reaction until the start of @{selected|token_name}'s next turn. --&gt;AfterOpen| }}
1623633750

Edited 1623673238
Here is Frost Fingers from Rime Of The Frostmaiden. It uses a modified Burning Hands script from Kurt.&nbsp; !script {{ --/|Burning Hands script. Can be changed to other 15' cone-based spells by updating these parameters. --/|larger cones can be defined by updating the array definitions for the diretions to include additional offsets. --/|cube shaped spells could be acocmodated in a similar way. --&amp;spellName|Frost Fingers --/|Note: because the spell will be cast at a min level of 1, we use 2 here to get the total dice (2+1=3) --&amp;spellL0DamageDice|1 --/|Prompt for the spell level. Update this to account for the minimum level of the spell --=SpellLevel|?{Spell Slot Level?|1|2|3|4|5|6|7|8|9} --&amp;spellDamageDieType|8 --&amp;damageType|cold --&amp;saveType|constitution --/|Source Token is the caster, and target token is the "end of the line". Can be a non-creature (no represents) token. --#sourcetoken|@{selected|token_id} --&gt;GetAndCheckSlotInformation| --&gt;DeductSpellSlot| --/|Get all of the tokens on the page so we can cache their positions --~|array;pagetokens;alltokens;@{selected|token_id} --#leftsub|Save DC @{selected|spell_save_dc} --#rightsub|Slot Level: [$SpellLevel] --#title|[&amp;spellName] --/|Calculate damage based on spell slot. --=DamageDice|[$SpellLevel.Total] + [&amp;spellL0DamageDice] --=Damage|[$DamageDice.Total]d[&amp;spellDamageDieType] --=HalfDamage|[$Damage.Total] \ 2 --=DoubleDamage|[$Damage.Total] * 2 --=QuarterDamage|[$Damage.Total] \ 4 --/|Since we want to be able to hover over a roll and see the dice details, output the rolled damage at the --/|top of the card. If all critters make their save, the half damage roll won't contain the details. --+|[c][b]Damage Roll: [/b][$Damage][/c] --+|&amp;nbsp; --/|Create an array to hold the tokens that are intersected by the line. --~|array;define;tokensHit; --&gt;createTokenLookup| --/|Prompt for a direction for hte cast, and define arrays that indicate the relative spaces that will be hit. --&amp;direction|?{Direction|&amp;#x2B06; (UP),U|&amp;#x2197; (UP-RIGHT),UR|&amp;#x27A1; (RIGHT),R|&amp;#x2198; (DOWN-RIGHT),DR|&amp;#x2B07; (DOWN),D|&amp;#x2199; (DOWN-LEFT),DL|&amp;#x2B05; (LEFT),L|&amp;#x2196 (UP-LEFT);,UL|} --~|array;define;U;0,-1;0,-2;-1,-2;-1,-3;0,-3;1,-3 --~|array;define;D;0,1;0,2;1,2;-1,3;0,3;1,3 --~|array;define;R;1,0;2,0;2,-1;3,-1;3,0;3,1 --~|array;define;L;-1,0;-2,0;-2,-1;-3,-1;-3,0;-3,1 --~|array;define;UR;1,-1;1,-2;1,-3;2,-1;2,-2;3,-1 --~|array;define;DR;1,1;1,2;1,3;2,1;2,2;3,1 --~|array;define;UL;-1,-1;-1,-2;-1,-3;-2,-1;-2,-2;-3,-1 --~|array;define;DL;-1,1;-1,2;-1,3;-2,1;-2,2;-3,1 --/|Call the "checkForTokenHits" subroutine. The passed parameter will be the per-space VFX. Leave blank for none. --&gt;checkForTokenHits|burn-frost --/|The first item in the array will be a blank dummy item, so remove it. --~|array;removeat;tokensHit;0 --/|Loop through the tokensHit tokens and roll saves for each one and apply damage --~tokenid|array;getfirst;tokensHit --?[&amp;tokenid] -eq ArrayError|endOutput --:loopDisplay| --=SaveRoll|1d20 + [*[&amp;tokenid]:[&amp;saveType]_save_bonus] --/|Compare the save roll to the save DC and either apply full or half damage --?"[*[&amp;tokenid]:npc_immunities]" -inc "[&amp;damageType]"|Immune --?"[*[&amp;tokenid]:npc_resistances]" -inc "[&amp;damageType]"|Resistant --?"[*[&amp;tokenid]:npc_vulnerabilities]" -inc "[&amp;damageType]"|Vulnerable --?[$SaveRoll.Total] -lt @{selected|spell_save_dc}|&gt;ApplyDamageAlterbars;[&amp;tokenid];3;-[$Damage.Total]|&gt;ApplyDamageAlterbars;[&amp;tokenid];3;-[$HalfDamage.Total] --?[$SaveRoll.Total] -ge @{selected|spell_save_dc}|madeSave --/|Here are various damage applications if the creature is immune, resistant, or vulnerable. In some cases, we will reuse output lines, --/|for example, a resistant creature that fails its save will jump to "madeSave", since that is the correct damage amount. (half), while --/|a vulnerable creature that makes its save will jump to "FailedSave" since that will be normal damage. --/|Output a line for a failed saving throw (we will also jump here for a vulnerable creature that MAKES its save) --:FailedSave| --+[*[&amp;tokenid]:t-name]:|Save [$SaveRoll] [r][$Damage] [&amp;damageType][/r] --^afterSave| --:Immune| --+[*[&amp;tokenid]:t-name]:|is not affected by the spell! --^afterSave| --:Resistant| --?[$SaveRoll.Total] -lt @{selected|spell_save_dc}|&gt;ApplyDamageAlterbars;[&amp;tokenid];3;-[$HalfDamage.Total]|&gt;ApplyDamageAlterbars;[&amp;tokenid];3;-[$QuarterDamage.Total] --?[$SaveRoll.Total] -lt @{selected|spell_save_dc}|madeSave --+[*[&amp;tokenid]:t-name]:|Save [$SaveRoll] [r][$QuarterDamage] [&amp;damageType][/r] --^afterSave| --:Vulnerable| --?[$SaveRoll.Total] -lt @{selected|spell_save_dc}|&gt;ApplyDamageAlterbars;[&amp;tokenid];3;-[$DoubleDamage.Total]|&gt;ApplyDamageAlterbars;[&amp;tokenid];3;-[$Damage.Total] --?[$SaveRoll.Total] -ge @{selected|spell_save_dc}|FailedSave --+[*[&amp;tokenid]:t-name]:|Save [$SaveRoll] [r][$DoubleDamage] [&amp;damageType][/r] --^afterSave| --/|Output a line for a successful saving throw --:madeSave| --+[*[&amp;tokenid]:t-name]:|Save [$SaveRoll] [r][$HalfDamage] [&amp;damageType][/r] --:afterSave| --~tokenid|array;getnext;tokensHit --?[&amp;tokenid] -ne ArrayError|loopDisplay --:endOutput| --X| --:ApplyDamageTokenmod|Parameters are tokenid;bar#;amount --@token-mod|_ignore-selected _ids [%1%] _set bar[%2%]_value|[%3%] --&lt;| --:ApplyDamageAlterbars|Parameters are tokenid;bar#;amount --@alter|_target|[%1%] _bar|[%2%] _amount|-[%3%] _show|none --&lt;| --:checkForTokenHits|parameter is vfx descriptor --=baseX|[*S:t-left] - 1 \ 70 --=baseY|[*S:t-top] - 1 \ 70 --~offset|array;getfirst;?{Direction} --:checkTokenLoop| --?"[&amp;offset]" -eq "ArrayError"|endCheckForTokenHits --~split|string;split;,;[&amp;offset] --=thisX|[$baseX] + [&amp;split1] --=thisY|[$baseY] + [&amp;split2] --/|IF we passed a visual effect specifier in %1%, create a point VFX in the square --?"X[%1%]X" -ne "XX" |[ --=VX|[$thisX] * 70 + 35 --=VY|[$thisY] * 70 + 35 --vpoint|[$VX] [$VY] [%1%] --]| --&gt;checkTokens|[$thisX];[$thisY] --~offset|array;getnext;?{Direction} --^checkTokenLoop| --:endCheckForTokenHits| --&lt;| --/|Reads the variables created by createTokenLookup to find any tokens that occupy a given space. --:checkTokens|x;y --?"X[&amp;tok[%1%]-[%2%]]X" -ne "XX"|[ --~split|string;split;!;[&amp;tok[%1%]-[%2%]] --%P|1;[$splitCount.Total];1 --=var|split[&amp;P] --?"X[&amp;[$var.RollText]]X" -eq "XX"|% --~exists|array;indexof;tokensHit;[&amp;[$var.RollText]] --?[&amp;exists] -ne ArrayError|skipAdd --?[&amp;[$var.RollText]] -eq ArrayError|skipAdd --~|array;add;tokensHit;[&amp;[$var.RollText]] --:skipAdd| --%| --&lt;| --/|Creates a series of string variables with names like 'tok12-15' which represent the various squares that are --/|occupied by tokens on the page. Handle 1x1, 2x2, and 3x3 tokens by simply adding extra squares in the appropriate --/|pattern around the center point location. The result is that if there are two tokens at 12,15, the tok12-15 string --/|will contain something like "-asln34njfn2nafd!-sdnfklaserfs" (IDs separated by exclamation points) that we can use to --/|quickly evaluate hits by essentially asking "what is in square 12x15" by just reading the variable. --:createTokenLookup| --~tokenid|array;getfirst;alltokens --:tokenSetupLoop| --?[&amp;tokenid] -eq ArrayError|endSetupLoop --=tLeft|[*[&amp;tokenid]:t-left] - 1 \ 70 --=tTop|[*[&amp;tokenid]:t-top] - 1 \ 70 --=tWidth|[*[&amp;tokenid]:t-width] --?[$tWidth] -eq 70|[ --&amp;tok[$tLeft]-[$tTop]|+[&amp;tokenid]! --/+[*[&amp;tokenid]:character_name]|At [$tLeft],[$tTop] : [&amp;tok[$tLeft.Total]-[$tTop.Total]] --]| --?[$tWidth] -eq 140|[ --=NX|[$tLeft] + 1 --=NY|[$tTop] + 1 --&amp;tok[$tLeft]-[$tTop]|+[&amp;tokenid]! --&amp;tok[$tLeft]-[$NY]|+[&amp;tokenid]! --&amp;tok[$NX]-[$tTop]|+[&amp;tokenid]! --&amp;tok[$NX]-[$NY]|+[&amp;tokenid]! --]| --?[$tWidth] -eq 210|[ --=PX|[$tLeft] - 1 --=PY|[$tTop] - 1 --=NX|[$tLeft] + 1 --=NY|[$tTop] + 1 --&amp;tok[$tLeft]-[$tTop]|+[&amp;tokenid]! --&amp;tok[$PX]-[$PY]|+[&amp;tokenid]! --&amp;tok[$tLeft]-[$PY]|+[&amp;tokenid]! --&amp;tok[$NX]-[$PY]|+[&amp;tokenid]! --&amp;tok[$PX]-[$tTop]|+[&amp;tokenid]! --&amp;tok[$NX]-[$tTop]|+[&amp;tokenid]! --&amp;tok[$PX]-[$NY]|+[&amp;tokenid]! --&amp;tok[$tLeft]-[$NY]|+[&amp;tokenid]! --&amp;tok[$NX]-[$NY]|+[&amp;tokenid]! --]| --~tokenid|array;getnext;alltokens --^tokenSetupLoop| --:endSetupLoop| --&lt;| --:GetAndCheckSlotInformation| --=SlotLevel|[$SpellLevel] --=SlotsTotal|[*S:lvl[$SlotLevel]_slots_total] --=SlotsExpended|[*S:lvl[$SlotLevel]_slots_expended] --?[$SlotsExpended.Total] -eq 0|NoSlotsLeft --?[$SlotsExpended.Total] -gt [$SlotsTotal.Total]|NoSlotsLeft --@roll20AM|_audio,play,nomenu|Ice Blast --&lt;| --:DeductSpellSlot| --=SlotsExpended|[$SlotsExpended] -1 --@setattr|_charid [*S:character_id] _lvl[$SlotLevel]_slots_expended|[$SlotsExpended] _silent --=SlotsRemaining|[$SlotsTotal] - 1 --+|[c][b]Level [$SpellLevel.Total] Spell Slots Left: [/b][$SlotsExpended][/c] --&lt;| --X| --:NoSlotsLeft| --+|[b][*S:character_name] has no level [$SlotLevel.Total] spell slots available.[/b] --X|NoSlotsLeftStop }} Frost Fingers - link
1624071299

Edited 1624594184
ScriptCards Format Utility for Scriptcard Writers 0.8 (updated version for Scriptcards 1.3.7) Updated 6/24/2021 version .8 Now supports version Scriptcards 1.3.7 button, oddrow, evenrow, and body background image and gradients.&nbsp;&nbsp; Cleaned up interface quite a bit Updated: 6/21/2021 version .7 Added support for building titlecard background gradients (linear, radial, conic). Here is a quick script I wrote today that enables you to play around interactively with scriptcard formatting (Colors, Fonts, Dice, Buttons, Alternating Rows, ...).&nbsp; As you make changes, the current scriptcard is updated with the new settings.&nbsp; Just hit the Reset button if things get a little out of whack.&nbsp; It leverages scriptcards Save and Load settings functions (--SSettings, --LSetttings) which means you can easily incorporate a configuration into your own scriptcards.&nbsp; Requirement: ScriptCards 1.3.7 Enjoy! !script {{ --/|This is a utility script for Scriptcard Writers to quickly --/|test out various color and font configurations. You can --/|save a desired settings so that it can loaded in other --/|scriptcards with the Lsettings scriptcard command, or you --/|can Dump out the current settings and copy them into a text editor --/| --/|SC Format Utility 0.7 - Updated 6.21.2021 --/| Compatible with version ScriptCards 1.3.6+ --/|Updated --/| * Now Utlizes scriptcards 1.3.6 functionality --/| * Toggle fields that are only one or two values (usehollowdice, emotestate) --/| * dump settings in Scriptcard format (--#TitleFontFace|...) --/| * Improve look of the main Card --/| * Add Date/Time and Timezone Settings --/| * Add other misc settings (debug, Hidetitlecard, SubtitleSeparator) --/| * Add a sample card --/| * Added new settings found in 1.3.6 (titlecardbackgroundimage, titlecardgradient, norollhighlight) --/| * Linear, Conic and Radial Gradient CSS builder for TitleBackground added --/| * Add ability to Enter Hex Color on Gradient Selector --/|Future Updates --/| * Add a collection of eye-pleaseing schemas --/| * Add a gradients cheat sheet for selecting fun gradient titlecard settings (Circular and Conic) --/| * Add ability to Enter Hex Color on Gradient Selector --#reentrant|SCFormatUtil --:RESET| --/|#titleCardBackground|#932729 --#titlecardgradient|0 --/|#titlecardbackgroundimage|url(<a href="https://s3.amazonaws.com/files.d20.io/images/229710089/fIxcDIjUWW3z2b6RZRGrCg/original.png?16242243555);background-size" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/229710089/fIxcDIjUWW3z2b6RZRGrCg/original.png?16242243555);background-size</a>: auto;background-repeat: round; --#titlecardbackgroundimage|linear-gradient(to right, black, white); --/|#titlecardbackgroundimage|radial-gradient(circle, black, white); --/|#titlecardbackgroundimage|radial-gradient(circle at top right, black, red, yellow); --/|#titlecardbackgroundimage|linear-gradient(90deg, rgba(0,0,0,1) 0%, rgba(245,74,9,1) 59%, rgba(251,255,0,0.9262079831932774) 100%); --/|#titlecardbackgroundimage|linear-gradient(90deg, rgba(0,0,0,1) 0%, rgba(245,74,9,1) 59%, rgba(251,255,0,0.9262079831932774) 100%); --/|#titlecardbackgroundimage|linear-gradient(90deg, rgba(0,0,0,1) 0%, rgba(245,74,9,1) 59%, rgba(251,255,0,0.9262079831932774) 100%); --/|#titlecardbackgroundimage|conic-gradient(red 50deg, yellow 100deg, lime 200deg, aqua, blue, magenta, red); --/|#titlecardbackgroundimage|conic-gradient(#ff8a00, #e52e71); --#titleFontSize|2.0em --#titleFontLineHeight|2.0em --#titleFontFace|Contrail One --#hideTitleCard|0 --#subtitleSeperator|&amp;nbsp;♦&amp;nbsp; --#bodyFontSize|12px --#bodyFontFace|Helvetica --#oddRowBackground|#LightBlue --#oddRowFontColor|#000000 --#evenRowBackground|#FFFFFF --#evenRowFontColor|#000000 --#buttonBackGround|Gainsboro --#buttonTextColor|#0905f2 --#buttonBorderColor|#0905f2 --#buttonFontSize|12px --#buttonFontFace|Tahoma --#diceFontColor|#1C6EA4 --#dicefontsize|3.0em --#usehollowdice|0 --#emoteBackground|#f5f5ba --#emoteText|This is emote text --#emoteState|visible --#tableBorderRadius|6px; --#tableShadow|5px 3px 3px 0px #aaa; --#debug|1 --#whisper| --#timezone|America/Chicago --Ssettings|SCFU --:TOP| --#title|SC Format Utility 0.7 --&gt;LOAD_CURRENT_SETTINGS| --#leftSub|[&amp;titlecardbackground] --#rightSub|[&amp;titlefontface] ([&amp;titlefontsize]) --&gt;SECTION_HEADER|Title Settings --+Color|[r][rbutton]Color([&amp;titlecardbackground])::CHANGE_PARAM;TitleCardBackground_ByName[/rbutton] [rbutton]#::CHANGE_PARAM;TitleCardBackground_ByHex[/rbutton][/r] --+Gradient|[r][rbutton]Basic([&amp;titlecardgradient])::TOGGLE_PARAM;titlecardgradient\0\1[/rbutton] [rbutton]Linear::GRADIENT_LINEAR;1\\[/rbutton] [rbutton]Radial::GRADIENT_RADIAL;1\\[/rbutton] [rbutton]Conic::GRADIENT_CONIC;1\\[/rbutton][/r] --+Image|[r][rbutton]Set Image::CHANGE_PARAM;titlecardbackgroundimage[/rbutton][rbutton]User Defined/Raw::CHANGE_PARAM;titlecardbackgroundimage_raw[/rbutton][/r] --+Setting|[&amp;titlecardbackgroundimage] --+|[br] --+Font|[r][rbutton]Size([&amp;titlefontsize])::CHANGE_PARAM;titleFontSize[/rbutton] [rbutton]Line Height([&amp;titlefontlineheight])::CHANGE_PARAM;titleFontLineHeight[/rbutton] [rbutton]Face([&amp;titlefontface])::CHANGE_PARAM;titleFontFace[/rbutton] [/r] --+Other|[r][rbutton]Hide Title([&amp;hidetitlecard])::TOGGLE_PARAM;hideTitleCard\0\1[/rbutton] [rbutton]Subtitle Separator([&amp;subtitleseparator])::CHANGE_PARAM;SubtitleSeparator[/rbutton][/r] --&gt;SECTION_HEADER|Table/Border Settings --+Border|[r][rbutton]Radious([&amp;tableborderradius])::CHANGE_PARAM;tableBorderRadius[/rbutton] [rbutton]Shadow([&amp;tableshadow])::CHANGE_PARAM;tableshadow[/rbutton][/r] --&gt;SECTION_HEADER|Body and Row Settings --+Font|[r][rbutton]Size([&amp;bodyfontsize])::CHANGE_PARAM;bodyFontSize[/rbutton] [rbutton]Face([&amp;bodyfontface])::CHANGE_PARAM;bodyFontFace[/rbutton] [rbutton]Roll Higlight([&amp;norollhighlight])::TOGGLE_PARAM;norollhighlight\0\1[/rbutton][/r] --+Odd Row|[r][rbutton]Back Color([&amp;oddrowbackground])::CHANGE_PARAM;oddRowBackground_ByName[/rbutton] [rbutton]#::CHANGE_PARAM;oddRowBackground_ByHex[/rbutton] [rbutton]Font Color([&amp;oddrowfontcolor])::CHANGE_PARAM;oddRowFontColor_ByName[/rbutton] [rbutton]#::CHANGE_PARAM;oddRowFontColor_ByHex[/rbutton][/r] --+Even Row|[r][rbutton]Back Color([&amp;evenrowbackground])::CHANGE_PARAM;evenRowBackground_ByName[/rbutton] [rbutton]#::CHANGE_PARAM;evenRowBackground_ByHex[/rbutton] [rbutton]Font Color([&amp;evenrowfontcolor])::CHANGE_PARAM;evenRowFontColor_ByName[/rbutton] [rbutton]#::CHANGE_PARAM;evenRowFontColor_ByHex[/rbutton][/r] --&gt;SECTION_HEADER|Button Settings --+Colors|[r][rbutton]Background([&amp;buttonbackground])::CHANGE_PARAM;buttonBackGround_ByName[/rbutton] [rbutton]#::CHANGE_PARAM;buttonBackGround_ByHex[/rbutton] [rbutton]Border([&amp;buttonbordercolor])::CHANGE_PARAM;buttonBorderColor_ByName[/rbutton] [rbutton]#::CHANGE_PARAM;buttonBorderColor_ByHex[/rbutton][/r] --+Font|[r][rbutton]Color([&amp;buttontextcolor])::CHANGE_PARAM;buttonTextColor_ByName[/rbutton] [rbutton]#::CHANGE_PARAM;buttonTextColor_ByHex[/rbutton] [rbutton]Size([&amp;buttonfontsize])::CHANGE_PARAM;buttonFontSize[/rbutton] [rbutton]Face([&amp;buttonfontface])::CHANGE_PARAM;buttonFontFace[/rbutton][/r] --&gt;SECTION_HEADER|Dice Settings --+Font|[r][rbutton]Color([&amp;dicefontcolor])::CHANGE_PARAM;diceFontColor_ByName[/rbutton] [rbutton]#::CHANGE_PARAM;diceFontColor_ByHex[/rbutton] [rbutton]Size([&amp;dicefontsize])::CHANGE_PARAM;dicefontsize[/rbutton] [rbutton]Hollow([&amp;usehollowdice])::TOGGLE_PARAM;usehollowdice\0\1[/rbutton][/r] --/| [rbutton]Hollow?::CHANGE_PARAM;usehollowdice[/rbutton][/r] --+|[c][d4]4[/d4][d6]6[/d6][d8]8[/d8][d10]10[/d10][d12]12[/d12][d20]20[/d20][/c] --&gt;SECTION_HEADER|Emote Settings --+|[r][rbutton]Color([&amp;emotebackground])::CHANGE_PARAM;emoteBackground_ByName[/rbutton] [rbutton]#::CHANGE_PARAM;emoteBackground_ByHex[/rbutton] [rbutton]State([&amp;emotestate])::TOGGLE_PARAM;emoteState\visible\off[/rbutton][/r] --&gt;SECTION_HEADER|Misc Settings --~datetime|system;date;getdatetime --+[&amp;datetime]|[r][rbutton]([&amp;timezone])::SELECT_TIME_ZONE[/rbutton][/r] --+Debug|[r][rbutton]Toggle([&amp;debug])::TOGGLE_PARAM;Debug\0\1[/rbutton][/r] --/|+Whisper|([&amp;whisper])[r][rbutton]Whisper::CHANGE_PARAM;Whisper[/rbutton][/r] --&gt;SECTION_HEADER|Settings Management --+|[c][rbutton]Save::SAVE_CURRENT_SETTINGS[/rbutton] [rbutton]Load::LOAD_SAVED_SETTINGS[/rbutton] [rbutton]List::SHOW_SAVED_SETTINGS[/rbutton] [rbutton]Dump::DUMP_CURRENT_SETTINGS[/rbutton] [rbutton]Example::EXAMPLE_CARD[/rbutton] [rbutton]&amp;#x1F504;Reset::RESET[/rbutton][/c] --&gt;SECTION_HEADER|Helpful Links --&gt;WEB_LINK|Hex Colors;<a href="https://htmlcolorcodes.com/color-picker/" rel="nofollow">https://htmlcolorcodes.com/color-picker/</a> --&amp;HexColorLink|[&amp;LINK] --&gt;WEB_LINK|Named Colors;<a href="https://htmlcolorcodes.com/color-names/" rel="nofollow">https://htmlcolorcodes.com/color-names/</a> --&amp;NamedColorLink|[&amp;LINK] --&gt;WEB_LINK|Web Fonts;<a href="https://www.w3schools.com/cssref/css_websafe_fonts.asp" rel="nofollow">https://www.w3schools.com/cssref/css_websafe_fonts.asp</a> --&amp;FontLink|[&amp;LINK] --&gt;WEB_LINK|EMOJI-Finder;<a href="https://emojifinder.com/" rel="nofollow">https://emojifinder.com/</a> --&amp;EmojiLink|[&amp;LINK] --&gt;WEB_LINK|Gradients;<a href="https://cssgradient.io/" rel="nofollow">https://cssgradient.io/</a> --&amp;GradientLink|[&amp;LINK] --+|[c][&amp;HexColorLink]&amp;nbsp;[&amp;NamedColorLink]&amp;nbsp;[&amp;FontLink]&amp;nbsp;[&amp;EmojiLink]&amp;nbsp;[&amp;GradientLink][/c] --X| --:GRADIENT_RADIAL|Step; Settings --/| This function will call itself multiple times (circular), building Circle Gradient background syntax as it does --~Arg|string;split;\;[&amp;reentryval] --&amp;Step|[&amp;Arg1] --&amp;Setting|[&amp;Arg2] --&amp;AddParam|[&amp;Arg3] --&amp;reentryval| --/|+GRADIENT_RADIAL RVs|**Step:**[&amp;Step] **Setting:**[&amp;Setting] **New Param:**[&amp;AddParam] --C[&amp;Step]|1:GR_STEP1|2:GR_STEP2|3:GR_STEP3|4:GR_STEP4|5:GR_STEP5 --:GR_STEP1|Step 1: Ask for shape (circular or ellipse) --#title|Radial Gradient --#leftsub|Step 1 --#rightsub|Shape --&amp;Setting|radial-gradient( --+setting:|[&amp;Setting][hr] --+|Select a radial shape for the gradient. Ellipses usually work best for rectangular fills. Circles work well on squares. --+|[br] --+|[c][rbutton]Circular::GRADIENT_RADIAL;2\[&amp;Setting]\circle[/rbutton][/c] --+|[br][br] --+|[c][rbutton]Ellipse (preferred)::GRADIENT_RADIAL;2\[&amp;Setting]\ellipse[/rbutton][/c] --X| --:GR_STEP2|Step 2: Ask for size (none, closest-side, farthest-side, closest-corner, farthest-corner, radius, percentage) --#title|Radial Gradient --#leftsub|Step 2 --#rightsub|Size --&amp;Setting|+ [&amp;AddParam] --+setting:|[&amp;Setting][hr] --+|Select a size for the gradient. Influences the ending shape of the gradient by taking the shape value and instructing where the gradient should end based on the center of the shape. --+|[br] --+|[c][rbutton]Closest Side::GRADIENT_RADIAL;3\[&amp;Setting]\closest-side[/rbutton][/c] --+|The gradient will end at side closest to the center of the shape. --+|[br] --+|[c][rbutton]Farthest Side::GRADIENT_RADIAL;3\[&amp;Setting]\farthest-side[/rbutton][/c] --+|The opposite of closest-side, where the gradient will end at the side furthest from the shape’s center. --+|[br] --+|[c][rbutton]Closes Corner::GRADIENT_RADIAL;3\[&amp;Setting]\closest-corner[/rbutton][/c] --+|The gradient will end at the corner that matches as the closest to the shape’s center. --+|[br] --+|[c][rbutton]Farthest Corner::GRADIENT_RADIAL;3\[&amp;Setting]\farthest-corner[/rbutton][/c] --+|The opposite of closest-corner, where the gradient ends at the corner that is located furthest from the shape’s center. --+|[br] --X| --:GR_STEP3|Step 3: Ask for position (top, left, right, center, bottom, and combinations top left, top right, center center, top center, center left ...) --#title|Radial Gradient --#leftsub|Step 3 --#rightsub|Position --&amp;Setting|+ [&amp;AddParam] at --+setting:|[&amp;Setting][hr] --+|Select a postion for center of the gradient to start from. --+|[br] --+|[c][rbutton]Left Top::GRADIENT_RADIAL;4\[&amp;Setting]\left top[/rbutton]&amp;nbsp; [rbutton]Center Top::GRADIENT_RADIAL;4\[&amp;Setting]\center top[/rbutton]&amp;nbsp; [rbutton]Right Top::GRADIENT_RADIAL;4\[&amp;Setting]\right top[/rbutton][/c] --+|[c][rbutton]Left Center::GRADIENT_RADIAL;4\[&amp;Setting]\left center[/rbutton]&amp;nbsp; [rbutton]Center Center::GRADIENT_RADIAL;4\[&amp;Setting]\center center[/rbutton]&amp;nbsp; [rbutton]Right Center::GRADIENT_RADIAL;4\[&amp;Setting]\right center[/rbutton][/c] --+|[c][rbutton]Left Bottom::GRADIENT_RADIAL;4\[&amp;Setting]\left bottom[/rbutton]&amp;nbsp; [rbutton]Center Bottom::GRADIENT_RADIAL;4\[&amp;Setting]\center bottom[/rbutton]&amp;nbsp; [rbutton]Right Bottom::GRADIENT_RADIAL;4\[&amp;Setting]\right bottom[/rbutton][/c] --+|[br] --+|You can also use percntages(HPos VPos or %Over %Down) to speficy the cente --+|[c][rbutton]15% 25%::GRADIENT_RADIAL;4\[&amp;Setting]\15% 25%[/rbutton]&amp;nbsp; [rbutton]30% 25%::GRADIENT_RADIAL;4\[&amp;Setting]\30% 25%[/rbutton]&amp;nbsp; [rbutton]50% 25%::GRADIENT_RADIAL;4\[&amp;Setting]\50% 25%[/rbutton]&amp;nbsp; [rbutton]70% 25%::GRADIENT_RADIAL;4\[&amp;Setting]\70% 25%[/rbutton]&amp;nbsp; [rbutton]85% 25%::GRADIENT_RADIAL;4\[&amp;Setting]\75% 25%[/rbutton][/c] --+|[c][rbutton]15% 50%::GRADIENT_RADIAL;4\[&amp;Setting]\15% 50%[/rbutton]&amp;nbsp; [rbutton]30% 50%::GRADIENT_RADIAL;4\[&amp;Setting]\30% 50%[/rbutton]&amp;nbsp; [rbutton]50% 50%::GRADIENT_RADIAL;4\[&amp;Setting]\50% 50%[/rbutton]&amp;nbsp; [rbutton]70% 50%::GRADIENT_RADIAL;4\[&amp;Setting]\70% 50%[/rbutton]&amp;nbsp; [rbutton]85% 50%::GRADIENT_RADIAL;4\[&amp;Setting]\75% 50%[/rbutton][/c] --+|[c][rbutton]15% 75%::GRADIENT_RADIAL;4\[&amp;Setting]\15% 75%[/rbutton]&amp;nbsp; [rbutton]30% 75%::GRADIENT_RADIAL;4\[&amp;Setting]\30% 75%[/rbutton]&amp;nbsp; [rbutton]50% 75%::GRADIENT_RADIAL;4\[&amp;Setting]\50% 75%[/rbutton]&amp;nbsp; [rbutton]70% 75%::GRADIENT_RADIAL;4\[&amp;Setting]\70% 75%[/rbutton]&amp;nbsp; [rbutton]85% 75%::GRADIENT_RADIAL;4\[&amp;Setting]\75% 75%[/rbutton][/c] --X| --:GR_STEP4|Step 4: Ask for Color List --#title|Radial Gradient --#leftsub|Step 4 --#rightsub|List of Colors (2+) --&amp;Setting|+ [&amp;AddParam], --+setting:|[&amp;Setting][hr] --+|[br] --+|Select your colors: Pick at least 2, but you can pick more to create a tri-color fade or rainbow effect. --/|Need to fool it the first time through to think we are calling it from a reentry button --&amp;reentryval|BLANK\[&amp;Setting]\RADIAL --&gt;GET_GRADIENT_COLOR| --X| --:GR_STEP5|Step 5: Done --~Setting|string;trim;[&amp;Setting] --~Len|string;length;[&amp;Setting] --=Len|[$Len.Text] - 1 --~Setting|string;left;[$Len];[&amp;Setting] --&amp;Setting|+ ) --#titlecardbackgroundimage|[&amp;Setting] --+titlecardbackgroundimage set to:|[&amp;Setting][hr] --^TOP| --+|[hr][c][rbutton]Cancel::TOP[/rbutton][/c] --X| --:GRADIENT_CONIC|Step; Settings --/| This function will call itself multiple times (circular), building Circle Gradient background syntax as it does --~Arg|string;split;\;[&amp;reentryval] --&amp;Step|[&amp;Arg1] --&amp;Setting|[&amp;Arg2] --&amp;AddParam|[&amp;Arg3] --&amp;reentryval| --C[&amp;Step]|1:GC_STEP1|2:GC_STEP2|3:GC_STEP3 --/| Step 1: Ask for At (default, at HPos% VPos%, at center, ) --:GC_STEP1|Step 1: Ask for position (top, left, right, center, bottom, and combinations top left, top right, center center, top center, center left ...) --#title|Conic Gradient --#leftsub|Step 1 --#rightsub|Center Position --&amp;Setting|conic-gradient(at --+setting:|[&amp;Setting][hr] --+|Select a postion for gradient to be centered on: --+|[br] --+|[c][rbutton]Left Top::GRADIENT_CONIC;2\[&amp;Setting]\left top[/rbutton]&amp;nbsp; [rbutton]Center Top::GRADIENT_CONIC;2\[&amp;Setting]\center top[/rbutton]&amp;nbsp; [rbutton]Right Top::GRADIENT_CONIC;2\[&amp;Setting]\right top[/rbutton][/c] --+|[c][rbutton]Left Center::GRADIENT_CONIC;2\[&amp;Setting]\left center[/rbutton]&amp;nbsp; [rbutton]Center Center::GRADIENT_CONIC;2\[&amp;Setting]\center center[/rbutton]&amp;nbsp; [rbutton]Right Center::GRADIENT_CONIC;2\[&amp;Setting]\right center[/rbutton][/c] --+|[c][rbutton]Left Bottom::GRADIENT_CONIC;2\[&amp;Setting]\left bottom[/rbutton]&amp;nbsp; [rbutton]Center Bottom::GRADIENT_CONIC;2\[&amp;Setting]\center bottom[/rbutton]&amp;nbsp; [rbutton]Right Bottom::GRADIENT_CONIC;2\[&amp;Setting]\right bottom[/rbutton][/c] --+|[br] --+|You can also use percntages(HPos VPos or %Over %Down) to speficy the cente --+|[c][rbutton]15% 25%::GRADIENT_CONIC;2\[&amp;Setting]\15% 25%[/rbutton]&amp;nbsp; [rbutton]30% 25%::GRADIENT_CONIC;2\[&amp;Setting]\30% 25%[/rbutton]&amp;nbsp; [rbutton]50% 25%::GRADIENT_CONIC;2\[&amp;Setting]\50% 25%[/rbutton]&amp;nbsp; [rbutton]70% 25%::GRADIENT_CONIC;2\[&amp;Setting]\70% 25%[/rbutton]&amp;nbsp; [rbutton]85% 25%::GRADIENT_CONIC;2\[&amp;Setting]\75% 25%[/rbutton][/c] --+|[c][rbutton]15% 50%::GRADIENT_CONIC;2\[&amp;Setting]\15% 50%[/rbutton]&amp;nbsp; [rbutton]30% 50%::GRADIENT_CONIC;2\[&amp;Setting]\30% 50%[/rbutton]&amp;nbsp; [rbutton]50% 50%::GRADIENT_CONIC;2\[&amp;Setting]\50% 50%[/rbutton]&amp;nbsp; [rbutton]70% 50%::GRADIENT_CONIC;2\[&amp;Setting]\70% 50%[/rbutton]&amp;nbsp; [rbutton]85% 50%::GRADIENT_CONIC;2\[&amp;Setting]\75% 50%[/rbutton][/c] --+|[c][rbutton]15% 75%::GRADIENT_CONIC;2\[&amp;Setting]\15% 75%[/rbutton]&amp;nbsp; [rbutton]30% 75%::GRADIENT_CONIC;2\[&amp;Setting]\30% 75%[/rbutton]&amp;nbsp; [rbutton]50% 75%::GRADIENT_CONIC;2\[&amp;Setting]\50% 75%[/rbutton]&amp;nbsp; [rbutton]70% 75%::GRADIENT_CONIC;2\[&amp;Setting]\70% 75%[/rbutton]&amp;nbsp; [rbutton]85% 75%::GRADIENT_CONIC;2\[&amp;Setting]\75% 75%[/rbutton][/c] --X| --:GC_STEP2|Ask for Color and keep asking till done --#title|CONIC Gradient --#leftsub|Step 2 --#rightsub|List of Colors (2+) --&amp;Setting|+ [&amp;AddParam], --+setting:|[&amp;Setting][hr] --+|[br] --+|Select your colors: Pick at least 2, but you can pick more to create a multi-color effect. --&amp;reentryval|BLANK\[&amp;Setting]\CONIC --&gt;GET_GRADIENT_COLOR| --/| Step 3: Done --:GC_STEP3|Step 3: Done --~Setting|string;trim;[&amp;Setting] --~Len|string;length;[&amp;Setting] --=Len|[$Len.Text] - 1 --~Setting|string;left;[$Len];[&amp;Setting] --&amp;Setting|+ ) --#titlecardbackgroundimage|[&amp;Setting] --+titlecardbackgroundimage set to:|[&amp;Setting][hr] --^TOP| --+|[hr][c][rbutton]Cancel::TOP[/rbutton][/c] --X| --:GRADIENT_LINEAR|Step; Settings --/| This function will call itself multiple times (circular), building Circle Gradient background syntax as it does --~Arg|string;split;\;[&amp;reentryval] --&amp;Step|[&amp;Arg1] --&amp;Setting|[&amp;Arg2] --&amp;AddParam|[&amp;Arg3] --&amp;reentryval| --/|+GRADIENT_LINEAR RVs|**Step:**[&amp;Step] **Setting:**[&amp;Setting] **New Param:**[&amp;AddParam] --C[&amp;Step]|1:GL_STEP1|2:GL_STEP2|3:GL_STEP3|4:GL_STEP4 --:GL_STEP1|Ask Angle or Right to Left or Top to Bottom --#title|Linear Gradient --#leftsub|Step 1 --#rightsub|Angle --&amp;Setting|linear-gradient( --+setting:|[&amp;Setting][hr] --/| Provide list of angles (0deg, 30deg, 45deg, 60deg, ... 360deg ) --&amp;tStyle|style = "width:100%;padding:1px;border-spacing:0px;border-collapse:collapse;text-shadow: 0px 0px 0px black;border:0px dashed black;" --&amp;trStyle1|style="border-bottom:1px dashed black;" --&amp;trStyle2|style="border-bottom:0px dashed black;" --&amp;tdStyle1|style="width:50%;text-align:center;background-color:#FFFFFF;font-size:100%" --&amp;tdStyle2|style="width:15%;text-align:center;background-color:#FFFFFF;font-size:100%" --+|Select the direction of the gradient fill. Left to Right works well for most ScriptCard uses. However, you can specify angled fills. --+|[br] --+|[t [&amp;tStyle]] [tr [&amp;trStyle1]] [td colspan=3 [&amp;tdStyle1]][rbutton]Left to Right::GRADIENT_LINEAR;2\[&amp;Setting]\to right[/rbutton][/td] [td colspan=3 [&amp;tdstyle1]][rbutton]Top to Bottom::GRADIENT_LINEAR;2\[&amp;Setting]\to bottom[/rbutton][/td] [/tr][tr [&amp;trStyle2]] [td [&amp;tdStyle2]][rbutton]15deg::GRADIENT_LINEAR;2\[&amp;Setting]\15deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]30deg::GRADIENT_LINEAR;2\[&amp;Setting]\30deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]45deg::GRADIENT_LINEAR;2\[&amp;Setting]\45deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]60deg::GRADIENT_LINEAR;2\[&amp;Setting]\60deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]75deg::GRADIENT_LINEAR;2\[&amp;Setting]\75deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]90deg::GRADIENT_LINEAR;2\[&amp;Setting]\90deg[/rbutton][/td] [/tr][tr [&amp;trStyle2]] [td [&amp;tdStyle2]][rbutton]105deg::GRADIENT_LINEAR;2\[&amp;Setting]\105deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]120deg::GRADIENT_LINEAR;2\[&amp;Setting]\120deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]135deg::GRADIENT_LINEAR;2\[&amp;Setting]\135deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]150deg::GRADIENT_LINEAR;2\[&amp;Setting]\150deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]165deg::GRADIENT_LINEAR;2\[&amp;Setting]\165deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]180deg::GRADIENT_LINEAR;2\[&amp;Setting]\180deg[/rbutton][/td] [/tr][tr [&amp;trStyle2]] [td [&amp;tdStyle2]][rbutton]195deg::GRADIENT_LINEAR;2\[&amp;Setting]\195deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]210deg::GRADIENT_LINEAR;2\[&amp;Setting]\210deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]225deg::GRADIENT_LINEAR;2\[&amp;Setting]\225deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]240deg::GRADIENT_LINEAR;2\[&amp;Setting]\240deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]255deg::GRADIENT_LINEAR;2\[&amp;Setting]\255deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]270deg::GRADIENT_LINEAR;2\[&amp;Setting]\270deg[/rbutton][/td] [/tr][tr [&amp;trStyle2]] [td [&amp;tdStyle2]][rbutton]285deg::GRADIENT_LINEAR;2\[&amp;Setting]\285deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]300deg::GRADIENT_LINEAR;2\[&amp;Setting]\300deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]315deg::GRADIENT_LINEAR;2\[&amp;Setting]\315deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]330deg::GRADIENT_LINEAR;2\[&amp;Setting]\330deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]345deg::GRADIENT_LINEAR;2\[&amp;Setting]\345deg[/rbutton][/td] [td [&amp;tdStyle2]][rbutton]360deg::GRADIENT_LINEAR;2\[&amp;Setting]\360deg[/rbutton][/td] [/tr][/t] --X| --:GL_STEP2|Ask for Color and keep asking till done --#title|Linear Gradient --#leftsub|Step 2 --#rightsub|List of Colors (2+) --&amp;Setting|+ [&amp;AddParam], --+setting:|[&amp;Setting][hr] --+|[br] --+|Select your colors: Pick at least 2, but you can pick more to create a tri-color fade or rainbow effect. --&amp;reentryval|BLANK\[&amp;Setting]\LINEAR --&gt;GET_GRADIENT_COLOR| --X| --:GL_STEP3|Done - Set the new paramter and go back to top --~Setting|string;trim;[&amp;Setting] --~Len|string;length;[&amp;Setting] --=Len|[$Len.Text] - 1 --~Setting|string;left;[$Len];[&amp;Setting] --&amp;Setting|+ ) --#titlecardbackgroundimage|[&amp;Setting] --+titlecardbackgroundimage set to:|[&amp;Setting][hr] --^TOP| --X| --:GET_GRADIENT_HEX_COLOR| --~Arg|string;split;\;[&amp;reentryval] --&amp;ColorFam|[&amp;Arg1] --&amp;Setting|[&amp;Arg2] --&amp;Mode|[&amp;Arg3] --I;Manually Enter Radient HEX Color|q;Clr;HEX Color (fmt: #123456)? --~Clr|string;replaceall;#;;[&amp;Clr] --&amp;Clr|#[&amp;Clr] --?[&amp;Mode] -eq LINEAR|GGHC_LINEAR --?[&amp;Mode] -eq CONIC|GGHC_RADIAL --?[&amp;Mode] -eq RADIAL|GGHC_RADIAL --:GGCH_LINEAR| --&amp;reentryval|2\[&amp;Setting]\[&amp;Clr] --^GRADIENT_LINEAR| --:GGCH_RADIAL| --&amp;reentryval|4\[&amp;Setting]\[&amp;Clr] --^GRADIENT_RADIAL| --:GGCH_CONIC| --&amp;reentryval|4\[&amp;Setting]\[&amp;Clr] --^GRADIENT_CONIC| --X| --:GET_GRADIENT_COLOR| --~Arg|string;split;\;[&amp;reentryval] --&amp;ColorFam|[&amp;Arg1] --&amp;Setting|[&amp;Arg2] --&amp;Mode|[&amp;Arg3] --&amp;reentryval| --/|+GRADIENT_LINEAR RVs|**ColorFam:**[&amp;ColorFam] **Setting:**[&amp;Setting] **Mode:**[&amp;Mode] --&gt;LOAD_COLOR_ARRAYS| --&amp;tStyle|style = "width:100%;padding:1px;border-spacing:0px;border-collapse:collapse;text-shadow: 0px 0px 0px black;border:0px dashed black;" --&amp;trStyle1|style="border-top:0px dashed black;text-align:center;" --+|[c][rbutton]Manually Enter a HEX Color (#123456)::GET_GRADIENT_HEX_COLOR;BLANK\[&amp;Setting]\[&amp;Mode][/rbutton][/c][br] --+|[c][t [&amp;tStyle]][tr [&amp;trStyle1]][td][rbutton]Red::GET_GRADIENT_COLOR;Red\[&amp;Setting]\[&amp;Mode][/rbutton][/td] [td][rbutton]Pink::GET_GRADIENT_COLOR;Pink\[&amp;Setting]\[&amp;Mode][/rbutton][/td] [td][rbutton]Orange::GET_GRADIENT_COLOR;Orange\[&amp;Setting]\[&amp;Mode][/rbutton][/td] [td][rbutton]Yellow::GET_GRADIENT_COLOR;Yellow\[&amp;Setting]\[&amp;Mode][/rbutton][/td] [td][rbutton]Purple::GET_GRADIENT_COLOR;Purple\[&amp;Setting]\[&amp;Mode][/rbutton][/td] [/tr][tr [&amp;trStyle1]] [td][rbutton]Green::GET_GRADIENT_COLOR;Green\[&amp;Setting]\[&amp;Mode][/rbutton][/td] [td][rbutton]Blue::GET_GRADIENT_COLOR;Blue\[&amp;Setting]\[&amp;Mode][/rbutton][/td] [td][rbutton]Brown::GET_GRADIENT_COLOR;Brown\[&amp;Setting]\[&amp;Mode][/rbutton][/td] [td][rbutton]White::GET_GRADIENT_COLOR;White\[&amp;Setting]\[&amp;Mode][/rbutton][/td] [td][rbutton]Gray::GET_GRADIENT_COLOR;Gray\[&amp;Setting]\[&amp;Mode][/rbutton][/td] [/tr][/t][/c] --?[&amp;ColorFam] -eq BLANK|GGC_FOOTER --&amp;tStyle|style = "width:100%;padding:1px;border-spacing:0px;border-collapse:collapse;text-shadow: 0px 0px 0px black;border:0px dashed black;" --&amp;trStyle1|style="border-top:2px dashed black;font-size:150%" --&amp;trStyle2|style="border-top:0px dashed black;font-size:100%" --&amp;Tbl|[t [&amp;tStyle]][tr [&amp;trStyle1]][td Colspan=3][c][&amp;ColorFam] Family of Colors[/c][/td][/tr] --~Clr|array;getfirst;ary[&amp;ColorFam] --:GGC_COLOR_LOOP_START| --?[&amp;Clr] -eq ArrayError|GGC_COLOR_LOOP_END --&amp;Tbl|+ [tr [&amp;trStyle2]] --?[&amp;Mode] -eq LINEAR|GGC_LINEAR --?[&amp;Mode] -eq CONIC|GGC_RADIAL --?[&amp;Mode] -eq RADIAL|GGC_RADIAL --^TOP| --:GGC_LINEAR| --&amp;Tbl|+[td style="text-align:center;background-color:[&amp;Clr];"][rbutton]Set::GRADIENT_LINEAR;2\[&amp;Setting]\[&amp;Clr][/rbutton][/td] --^GGC_CONTINUE| --:GGC_RADIAL| --&amp;Tbl|+[td style="text-align:center;background-color:[&amp;Clr];"][rbutton]Set::GRADIENT_RADIAL;4\[&amp;Setting]\[&amp;Clr][/rbutton][/td] --^GGC_CONTINUE| --:GGC_CONIC| --&amp;Tbl|+[td style="text-align:center;background-color:[&amp;Clr];"][rbutton]Set::GRADIENT_CONIC;2\[&amp;Setting]\[&amp;Clr][/rbutton][/td] --^GGC_CONTINUE| --:GGC_CONTINUE| --&amp;Tbl|+[td style="color:black;background-color:[&amp;Clr];"][c][b][&amp;Clr][/b][/c][/td] --&amp;Tbl|+[td style="color:yellow;background-color:[&amp;Clr];"][c][b][&amp;Clr][/b][/c][/td][/tr] --~Clr|array;getnext;ary[&amp;ColorFam] --^GGC_COLOR_LOOP_START| --:GGC_COLOR_LOOP_END| --&amp;Tbl|+ [/t] --+|[&amp;Tbl] --:GGC_FOOTER| --?[&amp;Mode] -eq LINEAR|GGC_LINEAR_DONE --?[&amp;Mode] -eq RADIAL|GGC_RADIAL_DONE --?[&amp;Mode] -eq CONIC|GGC_CONIC_DONE --:GGC_LINEAR_DONE| --+|[hr][c][rbutton]Done Picking Colors::GRADIENT_LINEAR;3\[&amp;Setting]\[/rbutton][rbutton]Cancel::TOP[/rbutton][/c] --X| --:GGC_RADIAL_DONE| --+|[hr][c][rbutton]Done Picking Colors::GRADIENT_RADIAL;5\[&amp;Setting]\[/rbutton][rbutton]Cancel::TOP[/rbutton][/c] --X| --:GGC_CONIC_DONE| --+|[hr][c][rbutton]Done Picking Colors::GRADIENT_CONIC;3\[&amp;Setting]\[/rbutton][rbutton]Cancel::TOP[/rbutton][/c] --X| --:TOGGLE_PARAM|PName --~Arg|string;split;\;[&amp;reentryval] --&amp;Param|[&amp;Arg1] --&amp;Val1|[&amp;Arg2] --&amp;Val2|[&amp;Arg3] --~PValue|system;readsetting;[&amp;Param] --/|*TOGGLE|[&amp;Param]([&amp;Val1]/[&amp;Val2])[&amp;PValue] --?[&amp;PValue] -eq [&amp;Val1]|&amp;PValue;[&amp;Val2]|&amp;PValue;[&amp;Val1] --#[&amp;Param]|[&amp;PValue] --+[&amp;Param] set to:|[&amp;PValue] --^TOP| --&lt;| --:CHANGE_PARAM|PName --&amp;PName|[&amp;reentryval] --~PName|string;tolowercase;[&amp;PName] --/|*PName|[&amp;PName] --?[&amp;PName] -eq titlecardbackground_byname|TCBG_N --?[&amp;PName] -eq titlecardbackground_byhex|TCBG_H --?[&amp;PName] -eq titlecardbackgroundimage|TCBGI --?[&amp;PName] -eq titlecardbackgroundimage_raw|TCBGI_RAW --?[&amp;PName] -eq titlefontsize|TFS --?[&amp;PName] -eq titlefontlineheight|TFLH --?[&amp;PName] -eq titlefontface|TFF --?[&amp;PName] -eq subtitleseparator|TSS --?[&amp;PName] -eq bodyfontsize|BFS --?[&amp;PName] -eq bodyfontface|BFF --?[&amp;PName] -eq oddrowbackground_byname|ORBG_N --?[&amp;PName] -eq oddrowfontcolor_byname|ORFC_N --?[&amp;PName] -eq evenrowbackground_byname|ERBG_N --?[&amp;PName] -eq evenrowfontcolor_byname|ERFC_N --?[&amp;PName] -eq oddrowbackground_byhex|ORBG_H --?[&amp;PName] -eq oddrowfontcolor_byhex|ORFC_H --?[&amp;PName] -eq evenrowbackground_byhex|ERBG_H --?[&amp;PName] -eq evenrowfontcolor_byhex|ERFC_H --?[&amp;PName] -eq buttonbackground_byname|BTNBG_N --?[&amp;PName] -eq buttontextcolor_byname|BTNTC_N --?[&amp;PName] -eq buttonbordercolor_byname|BTNBC_N --?[&amp;PName] -eq buttonbackground_byhex|BTNBG_H --?[&amp;PName] -eq buttontextcolor_byhex|BTNTC_H --?[&amp;PName] -eq buttonbordercolor_byhex|BTNBC_H --?[&amp;PName] -eq buttonfontsize|BTNFS --?[&amp;PName] -eq buttonfontface|BTNFF --?[&amp;PName] -eq dicefontcolor_byname|DFC_N --?[&amp;PName] -eq dicefontcolor_byhex|DFC_H --?[&amp;PName] -eq dicefontsize|DFS --?[&amp;PName] -eq usehollowdice|UHD --?[&amp;PName] -eq emotebackground_byname|EBG_N --?[&amp;PName] -eq emotebackground_byhex|EBG_H --?[&amp;PName] -eq emotestate|ES --?[&amp;PName] -eq tableborderradius|TBR --?[&amp;PName] -eq tableshadow|TS --+ERROR|Parmeter [&amp;PName] not found --^TOP| --:TCBG_N| --&gt;SET_COLOR_BY_NAME|Red;titlecardbackground --^TOP| --:TCBG_H| --I;Set Title Card Background Color|q;Param;Title Card Background Color (fmt: #123456)? --~Param|string;replaceall;#;;[&amp;Param] --#TitleCardBackground|#[&amp;Param] --+TitleCardBackground set to:|[&amp;Param] --+|[HR] --^TOP| --:TCBGI| --I;Set Title Card Background Image (URL/Gradient)|q;Param;Title Card URL? --&amp;Param|url([&amp;Param]));background-size: auto;background-repeat: round; --#titlecardbackgroundimage|[&amp;Param] --+titlecardbackgroundimage set to:|[&amp;Param] --+|[HR] --^TOP| --:TCBGI_RAW| --I;Set Title Card Background Image (URL/Gradient)|q;Param;Title Card URL or Gradient syntax? --#titlecardbackgroundimage|[&amp;Param] --+titlecardbackgroundimage set to:|[&amp;Param] --+|[HR] --^TOP| --:TFS| --I;Set Title Card Font Size|q;Param;Title Card Font Size?|12px|13px|15px|16px|18px|20px|24px|28px|30px|35px|40px|0.5em|0.8em|1.0em|1.2em|1.5em|2.0em|2.5em|3.0em|4.0em|5.0em|6.0em|8.0em|10.0em --#titlefontsize|[&amp;Param] --+TitleFontSize set to:|[&amp;Param] --+|[HR] --^TOP| --:TFLH| --I;Set Title Card Line Height|q;Param;Title Card Line Height?|12px|13px|15px|16px|18px|20px|24px|28px|30px|35px|40px|0.5em|0.8em|1.0em|1.2em|1.5em|2.0em|2.5em|3.0em|4.0em|5.0em|6.0em|8.0em|10.0em --#titlefontlineheight|[&amp;Param] --+TitleFontLineHeight set to:|[&amp;Param] --+|[HR] --^TOP| --:TFF| --I;Set Title Card Font Face|q;Param;Title Card Font Face (fmt: Font name)?|Arial|Candal|Contrail One|Patrick Hand|Shadows Into Light|Brush Script MT|Courier New|Garamond|Georgia|Helvetica|Tahoma|Times New Roman|Trebuchet MS|Verdana --#titlefontface|[&amp;Param] --+TitleFontFace set to:|[&amp;Param] --+|[HR] --^TOP| --:TSS| --I;Set Subtitle Separator Character|q;Param;Subtitle Separator Character?|☺|☻|♥|♦|♣|♠|•|○|♂|♀|♪|♫|☼|►|◄|◄►|↕|↔|─|═|⌂|■|▬|#|$|%|&amp;|Φ|Θ|Ω|∞|≈|π|σ|«» --#subtitleSeperator|&amp;nbsp;[&amp;Param]&amp;nbsp; --+SubtitleSeparator set to:|[&amp;Param] --+|[HR] --^TOP| --:BFS| --I;Set Body Font Size|q;Param;Body Font Size?|6px|7px|8px|9px|10px|11px|12px|13px|14px|15px|16px|18px|20px|24px|28px|30px|0.5em|0.8em|1.0em|1.2em|1.5em|2.0em|2.5em|3.0em|4.0em|5.0em|6.0em|8.0em|10.0em --#bodyfontsize|[&amp;Param] --+BodyFontSize set to:|[&amp;Param] --+|[HR] --^TOP| --:BFF| --I;Set Body Font Face|q;Param;Body Font Face?|Arial|Candal|Contrail One|Patrick Hand|Shadows Into Light|Brush Script MT|Courier New|Garamond|Georgia|Helvetica|Tahoma|Times New Roman|Trebuchet MS|Verdana --#bodyfontface|[&amp;Param] --+BodyFontFace set to:|[&amp;Param] --+|[HR] --^TOP| --:ORBG_N| --&gt;SET_COLOR_BY_NAME|Red;oddrowbackground --^TOP| --:ORBG_H| --I;Set Odd Row Background Color|q;Param;Odd Row Background Color (#123456)? --~Param|string;replaceall;#;;[&amp;Param] --#oddrowbackground|#[&amp;Param] --+OddRowBackground set to:|[&amp;Param] --+|[HR] --^TOP| --:ORFC_N| --&gt;SET_COLOR_BY_NAME|Red;oddrowfontcolor --^TOP| --:ORFC_H| --I;Set Odd Row Font Color|q;Param;Odd Row Font Color (#123456)? --~Param|string;replaceall;#;;[&amp;Param] --#oddrowfontcolor|#[&amp;Param] --+OddRowFontColor set to:|[&amp;Param] --+|[HR] --^TOP| --:ERBG_N| --&gt;SET_COLOR_BY_NAME|Red;evenrowbackground --^TOP| --:ERBG_H| --I;Set Even Row Background Color|q;Param;Even Row Background Color (#123456)? --~Param|string;replaceall;#;;[&amp;Param] --#evenrowbackground|#[&amp;Param] --+EvenRowBackground set to:|[&amp;Param] --+|[HR] --^TOP| --:ERFC_N| --&gt;SET_COLOR_BY_NAME|Red;evenrowfontcolor --^TOP| --:ERFC_H| --I;Set Even Row Font Color|q;Param;Even Row Font Color (#123456)? --~Param|string;replaceall;#;;[&amp;Param] --#evenrowfontcolor|#[&amp;Param] --+EvenRowFontColor set to:|[&amp;Param] --+|[HR] --^TOP| --:BTNBG_N| --&gt;SET_COLOR_BY_NAME|Red;buttonbackground --^TOP| --:BTNBG_H| --I;Set Button Background Color|q;Param;Button Background Color (#123456)? --~Param|string;replaceall;#;;[&amp;Param] --#buttonbackground|#[&amp;Param] --+ButtonBackground set to:|[&amp;Param] --+|[HR] --^TOP| --:BTNTC_N| --&gt;SET_COLOR_BY_NAME|Red;buttontextcolor --^TOP| --:BTNTC_H| --I;Set Button Text Color|q;Param;Button Text Color (#123456)? --~Param|string;replaceall;#;;[&amp;Param] --#buttontextcolor|#[&amp;Param] --+ButtonTextColor set to:|[&amp;Param] --+|[HR] --^TOP| --:BTNBC_N| --&gt;SET_COLOR_BY_NAME|Red;buttonbordercolor --^TOP| --:BTNBC_H| --I;Set Button Border Color|q;Param;Button Border Color (#123456)? --~Param|string;replaceall;#;;[&amp;Param] --#buttonbordercolor|#[&amp;Param] --+ButtonBorderColor set to:|[&amp;Param] --+|[HR] --^TOP| --:BTNFS| --I;Set Button Font Size|q;Param;Button Font Size?|6px|7px|8px|9px|10px|11px|12px|13px|14px|15px|16px|18px|20px|24px|28px|30px|0.5em|0.8em|1.0em|1.2em|1.5em|2.0em|2.5em|3.0em|4.0em|5.0em|6.0em|8.0em|10.0em --#buttonfontsize|[&amp;Param] --+ButtonFontSize set to:|[&amp;Param] --+|[HR] --^TOP| --:BTNFF| --I;Set Button Font Face|q;Param;Button Font Face (fmt: Font name)?|Arial|Candal|Contrail One|Patrick Hand|Shadows Into Light|Brush Script MT|Courier New|Garamond|Georgia|Helvetica|Tahoma|Times New Roman|Trebuchet MS|Verdana --#buttonfontface|[&amp;Param] --+ButtonFontFace set to:|[&amp;Param] --+|[HR] --^TOP| --:DFC_N| --&gt;SET_COLOR_BY_NAME|Red;dicefontcolor --^TOP| --:DFC_H| --I;Set Dice Font Color|q;Param;Dice Font Color (#123456)? --~Param|string;replaceall;#;;[&amp;Param] --#dicefontcolor|#[&amp;Param] --+DiceFontColor set to:|[&amp;Param] --+|[HR] --^TOP| --:DFS| --I;Set Dice Font Size|q;Param;Dice Font Size?|10px|15px|20px|25px|30px|35px|40px|45px|50px|55px|60px|70px|0.5em|0.8em|1.0em|1.2em|1.5em|2.0em|2.5em|3.0em|4.0em|5.0em|6.0em|8.0em|10.0em --#dicefontsize|[&amp;Param] --+DiceFontSize set to:|[&amp;Param] --+|[HR] --^TOP| --:UHD| --I;Use Hollow Dice?|q;Param;Use Hollow Dice (Yes-1/No-0)?|1|0 --#usehollowdice|[&amp;Param] --+UseHollowDice set to:|[&amp;Param] --+|[HR] --^TOP| --:EBG_N| --&gt;SET_COLOR_BY_NAME|Red;emotebackground --^TOP| --:EBG_H| --I;Set Emote Background Color|q;Param;Emote Background Color (#123456)? --~Param|string;replaceall;#;;[&amp;Param] --#emotebackground|#[&amp;Param] --+EmoteBackground set to:|[&amp;Param] --+|[HR] --^TOP| --:ES| --I;Set Emote State?|q;Param;Set Emote State (Visible/No)?|visible|off --#emotestate|[&amp;Param] --+EmoteState set to:|[&amp;Param] --+|[HR] --^TOP| --:TBR| --I;Set Table Border Radius|q;Param;Table Border Radius?|0px|1px|2px|3px|4px|5px|6px|7px|8px|10px|12px|15px|18px|20px|24px|30px|0.5em|0.8em|1.0em|1.2em|1.5em|2.0em|2.5em|3.0em|4.0em|5.0em|6.0em|8.0em|10.0em --#tableborderradius|[&amp;Param] --+TableBorderRadius set to:|[&amp;Param] --+|[HR] --^TOP| --:TS| --I;Set Table Shadow|q;Param;Table Shadow (fmt: 5px 3px 3px 0px #aaa; or h-offset v-offset blur spread #Color)? --#tableshadow|[&amp;Param] --+TableShadow set to:|[&amp;Param] --+|[HR] --^TOP| --:OTHER| --^TOP| Return to the top of the list --X| --:SHOW_SAVED_SETTINGS| --@sc-liststoredsettings| --^TOP| --:LOAD_SAVED_SETTINGS| --I;Load Saved Settings?|q;SName;Saved settings name to load? --?X[&amp;SName] -eq X|LSS_INVALID_NAME --Lsettings|[&amp;SName] --^TOP| --:LSS_INVALID_NAME| --+ERROR|Invalid Setting Name --+|[HR] --^TOP| --:SAVE_CURRENT_SETTINGS| --I;Save Current Settings Name?|q;SName;Saved settings name? --?X[&amp;SName] -eq X|SCS_INVALID_NAME --Ssettings|[&amp;SName] --^TOP| --:SCS_INVALID_NAME| --+ERROR|Invalid Setting Name --+|[HR] --^TOP| --X| --:WEB_LINK|Name; Ref --&amp;LINK|[button][%1%]::[%2%][/button] --&lt;| --:SET_COLOR_BY_NAME_REENTRY| --~Arg|string;split;\;[&amp;reentryval] --&amp;ColorFam|[&amp;Arg1] --&amp;Param|[&amp;Arg2] --&gt;SET_COLOR_BY_NAME|[&amp;ColorFam];[&amp;Param] --X| --:SET_COLOR_BY_NAME|Color_Family; Parameter being set --~Arg|string;split;\;[&amp;reentryval] --&amp;ColorFam|[%1%] --&amp;Param|[%2%] --#Title|Select Color --#leftSub|[&amp;Param] --#RightSub|[&amp;ColorFam] --&gt;LOAD_COLOR_ARRAYS| --&amp;tStyle|style = "width:100%;padding:1px;border-spacing:0px;border-collapse:collapse;text-shadow: 0px 0px 0px black;border:0px dashed black;" --&amp;trStyle1|style="border-top:0px dashed black;text-align:center;" --+|[c][t [&amp;tStyle]][tr [&amp;trStyle1]][td][rbutton]Red::SET_COLOR_BY_NAME;Red\[&amp;Param][/rbutton][/td] [td][rbutton]Pink::SET_COLOR_BY_NAME_REENTRY;Pink\[&amp;Param][/rbutton][/td] [td][rbutton]Orange::SET_COLOR_BY_NAME_REENTRY;Orange\[&amp;Param][/rbutton][/td] [td][rbutton]Yellow::SET_COLOR_BY_NAME_REENTRY;Yellow\[&amp;Param][/rbutton][/td] [td][rbutton]Purple::SET_COLOR_BY_NAME_REENTRY;Purple\[&amp;Param][/rbutton][/td] [/tr][tr [&amp;trStyle1]] [td][rbutton]Green::SET_COLOR_BY_NAME_REENTRY;Green\[&amp;Param][/rbutton][/td] [td][rbutton]Blue::SET_COLOR_BY_NAME_REENTRY;Blue\[&amp;Param][/rbutton][/td] [td][rbutton]Brown::SET_COLOR_BY_NAME_REENTRY;Brown\[&amp;Param][/rbutton][/td] [td][rbutton]White::SET_COLOR_BY_NAME_REENTRY;White\[&amp;Param][/rbutton][/td] [td][rbutton]Gray::SET_COLOR_BY_NAME_REENTRY;Gray\[&amp;Param][/rbutton][/td] [/tr][/t][/c] --&amp;tStyle|style = "width:100%;padding:1px;border-spacing:0px;border-collapse:collapse;text-shadow: 0px 0px 0px black;border:0px dashed black;" --&amp;trStyle1|style="border-top:2px dashed black;font-size:150%" --&amp;trStyle2|style="border-top:0px dashed black;font-size:100%" --&amp;Tbl|[t [&amp;tStyle]][tr [&amp;trStyle1]][td Colspan=3][c][&amp;ColorFam] Family of Colors[/c][/td][/tr] --~Clr|array;getfirst;ary[&amp;ColorFam] --:COLOR_LOOP_START| --?[&amp;Clr] -eq ArrayError|COLOR_LOOP_END --&amp;Tbl|+ [tr [&amp;trStyle2]][td style="text-align:center;background-color:[&amp;Clr];"][rbutton]Set::SET_PARAM_COLOR;[&amp;Clr]\[&amp;Param][/rbutton] [td style="color:black;background-color:[&amp;Clr];"][c][b][&amp;Clr][/b][/c][/td] [td style="color:yellow;background-color:[&amp;Clr];"][c][b][&amp;Clr][/b][/c][/td][/tr] --~Clr|array;getnext;ary[&amp;ColorFam] --^COLOR_LOOP_START| --:COLOR_LOOP_END| --&amp;Tbl|+ [/t] --+|[&amp;Tbl] --+|[hr][c][rbutton]Return::TOP[/rbutton][/c] --X| --:SET_PARAM_COLOR| --~Arg|string;split;\;[&amp;reentryval] --&amp;ColorName|[&amp;Arg1] --&amp;ParamName|[&amp;Arg2] --#[&amp;ParamName]|[&amp;ColorName] --+[&amp;ParamName] set to:|[&amp;ColorName] --+|[HR] --^TOP| --:LOAD_COLOR_ARRAYS| --~|array;define;aryRed;IndianRed;LightCoral;Salmon;DarkSalmon;LightSalmon;Crimson;Red;FireBrick;DarkRed --~|array;define;aryPink;Pink;LightPink;HotPink;DeepPink;MediumVioletRed;PaleVioletRed --~|array;define;aryOrange;LightSalmon;Coral;Tomato;OrangeRed;DarkOrange;Orange --~|array;define;aryYellow;Gold;Yellow;LightYellow;LemonChiffon;LightGoldenrodYellow;PapayaWhip;Moccasin;PeachPuff;PaleGoldenrod;Khaki;DarkKhaki --~|array;define;aryPurple;Lavender;Thistle;Plum;Violet;Orchid;Fuchsia;Magenta;MediumOrchid;MediumPurple;RebeccaPurple;BlueViolet;DarkViolet;DarkOrchid;DarkMagenta;Purple;Indigo;SlateBlue;DarkSlateBlue;MediumSlateBlue --~|array;define;aryGreen;GreenYellow;Chartreuse;LawnGreen;Lime;LimeGreen;PaleGreen;LightGreen;MediumSpringGreen;SpringGreen;MediumSeaGreen;SeaGreen;ForestGreen;Green;DarkGreen;YellowGreen;OliveDrab;Olive;DarkOliveGreen;MediumAquamarine;DarkSeaGreen;LightSeaGreen;DarkCyan;Teal --~|array;define;aryBlue;Aqua;Cyan;LightCyan;PaleTurquoise;Aquamarine;Turquoise;MediumTurquoise;DarkTurquoise;CadetBlue;SteelBlue;LightSteelBlue;PowderBlue;LightBlue;SkyBlue;LightSkyBlue;DeepSkyBlue;DodgerBlue;CornflowerBlue;MediumSlateBlue;RoyalBlue;Blue;MediumBlue;DarkBlue;Navy;MidnightBlue --~|array;define;aryBrown;Cornsilk;BlanchedAlmond;Bisque;NavajoWhite;Wheat;BurlyWood;Tan;RosyBrown;SandyBrown;Goldenrod;DarkGoldenrod;Peru;Chocolate;SaddleBrown;Sienna;Brown;Maroon --~|array;define;aryWhite;White;Snow;HoneyDew;MintCream;Azure;AliceBlue;GhostWhite;WhiteSmoke;SeaShell;Beige;OldLace;FloralWhite;Ivory;AntiqueWhite;Linen;LavenderBlush;MistyRose --~|array;define;aryGray;Gainsboro;LightGray;Silver;DarkGray;Gray;DimGray;LightSlateGray;SlateGray;DarkSlateGray;Black --&lt;| --:SELECT_TIME_ZONE| --&amp;TZUS|US/Alaska^US/Aleutian^US/Arizona^US/Central^US/East-Indiana^US/Eastern^US/Hawaii^US/Indiana-Starke^US/Michigan^US/Mountain^US/Pacific --&amp;TZAmericas|America/Adak^America/Anchorage^America/Anguilla^America/Antigua^America/Araguaina^America/Argentina/Buenos_Aires^America/Argentina/Catamarca^America/Argentina/ComodRivadavia^America/Argentina/Cordoba^America/Argentina/Jujuy^America/Argentina/La_Rioja^America/Argentina/Mendoza^America/Argentina/Rio_Gallegos^America/Argentina/Salta^America/Argentina/San_Juan^America/Argentina/San_Luis^America/Argentina/Tucuman^America/Argentina/Ushuaia^America/Aruba^America/Asuncion^America/Atikokan^America/Atka^America/Bahia^America/Bahia_Banderas^America/Barbados^America/Belem^America/Belize^America/Blanc-Sablon^America/Boa_Vista^America/Bogota^America/Boise^America/Buenos_Aires^America/Cambridge_Bay^America/Campo_Grande^America/Cancun^America/Caracas^America/Catamarca^America/Cayenne^America/Cayman^America/Chicago^America/Chihuahua^America/Coral_Harbour^America/Cordoba^America/Costa_Rica^America/Creston^America/Cuiaba^America/Curacao^America/Danmarkshavn^America/Dawson^America/Dawson_Creek^America/Denver^America/Detroit^America/Dominica^America/Edmonton^America/Eirunepe^America/El_Salvador^America/Ensenada^America/Fort_Nelson^America/Fort_Wayne^America/Fortaleza^America/Glace_Bay^America/Godthab^America/Goose_Bay^America/Grand_Turk^America/Grenada^America/Guadeloupe^America/Guatemala^America/Guayaquil^America/Guyana^America/Halifax^America/Havana^America/Hermosillo^America/Indiana/Indianapolis^America/Indiana/Knox^America/Indiana/Marengo^America/Indiana/Petersburg^America/Indiana/Tell_City^America/Indiana/Vevay^America/Indiana/Vincennes^America/Indiana/Winamac^America/Indianapolis^America/Inuvik^America/Iqaluit^America/Jamaica^America/Jujuy^America/Juneau^America/Kentucky/Louisville^America/Kentucky/Monticello^America/Knox_IN^America/Kralendijk^America/La_Paz^America/Lima^America/Los_Angeles^America/Louisville^America/Lower_Princes^America/Maceio^America/Managua^America/Manaus^America/Marigot^America/Martinique^America/Matamoros^America/Mazatlan^America/Mendoza^America/Menominee^America/Merida^America/Metlakatla^America/Mexico_City^America/Miquelon^America/Moncton^America/Monterrey^America/Montevideo^America/Montreal^America/Montserrat^America/Nassau^America/New_York^America/Nipigon^America/Nome^America/Noronha^America/North_Dakota/Beulah^America/North_Dakota/Center^America/North_Dakota/New_Salem^America/Nuuk^America/Ojinaga^America/Panama^America/Pangnirtung^America/Paramaribo^America/Phoenix^America/Port-au-Prince^America/Port_of_Spain^America/Porto_Acre^America/Porto_Velho^America/Puerto_Rico^America/Punta_Arenas^America/Rainy_River^America/Rankin_Inlet^America/Recife^America/Regina^America/Resolute^America/Rio_Branco^America/Rosario^America/Santa_Isabel^America/Santarem^America/Santiago^America/Santo_Domingo^America/Sao_Paulo^America/Scoresbysund^America/Shiprock^America/Sitka^America/St_Barthelemy^America/St_Johns^America/St_Kitts^America/St_Lucia^America/St_Thomas^America/St_Vincent^America/Swift_Current^America/Tegucigalpa^America/Thule^America/Thunder_Bay^America/Tijuana^America/Toronto^America/Tortola^America/Vancouver^America/Virgin^America/Whitehorse^America/Winnipeg^America/Yakutat^America/Yellowknife --&amp;TZAfrica|Africa/Abidjan^Africa/Accra^Africa/Addis_Ababa^Africa/Algiers^Africa/Asmara^Africa/Asmera^Africa/Bamako^Africa/Bangui^Africa/Banjul^Africa/Bissau^Africa/Blantyre^Africa/Brazzaville^Africa/Bujumbura^Africa/Cairo^Africa/Casablanca^Africa/Ceuta^Africa/Conakry^Africa/Dakar^Africa/Dar_es_Salaam^Africa/Djibouti^Africa/Douala^Africa/El_Aaiun^Africa/Freetown^Africa/Gaborone^Africa/Harare^Africa/Johannesburg^Africa/Juba^Africa/Kampala^Africa/Khartoum^Africa/Kigali^Africa/Kinshasa^Africa/Lagos^Africa/Libreville^Africa/Lome^Africa/Luanda^Africa/Lubumbashi^Africa/Lusaka^Africa/Malabo^Africa/Maputo^Africa/Maseru^Africa/Mbabane^Africa/Mogadishu^Africa/Monrovia^Africa/Nairobi^Africa/Ndjamena^Africa/Niamey^Africa/Nouakchott^Africa/Ouagadougou^Africa/Porto-Novo^Africa/Sao_Tome^Africa/Timbuktu^Africa/Tripoli^Africa/Tunis^Africa/Windhoek --&amp;TZAsia|Asia/Aden^Asia/Almaty^Asia/Amman^Asia/Anadyr^Asia/Aqtau^Asia/Aqtobe^Asia/Ashgabat^Asia/Ashkhabad^Asia/Atyrau^Asia/Baghdad^Asia/Bahrain^Asia/Baku^Asia/Bangkok^Asia/Barnaul^Asia/Beirut^Asia/Bishkek^Asia/Brunei^Asia/Calcutta^Asia/Chita^Asia/Choibalsan^Asia/Chongqing^Asia/Chungking^Asia/Colombo^Asia/Dacca^Asia/Damascus^Asia/Dhaka^Asia/Dili^Asia/Dubai^Asia/Dushanbe^Asia/Famagusta^Asia/Gaza^Asia/Harbin^Asia/Hebron^Asia/Ho_Chi_Minh^Asia/Hong_Kong^Asia/Hovd^Asia/Irkutsk^Asia/Istanbul^Asia/Jakarta^Asia/Jayapura^Asia/Jerusalem^Asia/Kabul^Asia/Kamchatka^Asia/Karachi^Asia/Kashgar^Asia/Kathmandu^Asia/Katmandu^Asia/Khandyga^Asia/Kolkata^Asia/Krasnoyarsk^Asia/Kuala_Lumpur^Asia/Kuching^Asia/Kuwait^Asia/Macao^Asia/Macau^Asia/Magadan^Asia/Makassar^Asia/Manila^Asia/Muscat^Asia/Nicosia^Asia/Novokuznetsk^Asia/Novosibirsk^Asia/Omsk^Asia/Oral^Asia/Phnom_Penh^Asia/Pontianak^Asia/Pyongyang^Asia/Qatar^Asia/Qostanay^Asia/Qyzylorda^Asia/Rangoon^Asia/Riyadh^Asia/Saigon^Asia/Sakhalin^Asia/Samarkand^Asia/Seoul^Asia/Shanghai^Asia/Singapore^Asia/Srednekolymsk^Asia/Taipei^Asia/Tashkent^Asia/Tbilisi^Asia/Tehran^Asia/Tel_Aviv^Asia/Thimbu^Asia/Thimphu^Asia/Tokyo^Asia/Tomsk^Asia/Ujung_Pandang^Asia/Ulaanbaatar^Asia/Ulan_Bator^Asia/Urumqi^Asia/Ust-Nera^Asia/Vientiane^Asia/Vladivostok^Asia/Yakutsk^Asia/Yangon^Asia/Yekaterinburg^Asia/Yerevan --&amp;TZAtlantic|Atlantic/Azores^Atlantic/Bermuda^Atlantic/Canary^Atlantic/Cape_Verde^Atlantic/Faeroe^Atlantic/Faroe^Atlantic/Jan_Mayen^Atlantic/Madeira^Atlantic/Reykjavik^Atlantic/South_Georgia^Atlantic/St_Helena^Atlantic/Stanley --&amp;TZAustrailia|Australia/ACT^Australia/Adelaide^Australia/Brisbane^Australia/Broken_Hill^Australia/Canberra^Australia/Currie^Australia/Darwin^Australia/Eucla^Australia/Hobart^Australia/LHI^Australia/Lindeman^Australia/Lord_Howe^Australia/Melbourne^Australia/North^Australia/NSW^Australia/Perth^Australia/Queensland^Australia/South^Australia/Sydney^Australia/Tasmania^Australia/Victoria^Australia/West^Australia/Yancowinna --&amp;TZEurope|Europe/Amsterdam^Europe/Andorra^Europe/Astrakhan^Europe/Athens^Europe/Belfast^Europe/Belgrade^Europe/Berlin^Europe/Bratislava^Europe/Brussels^Europe/Bucharest^Europe/Budapest^Europe/Busingen^Europe/Chisinau^Europe/Copenhagen^Europe/Dublin^Europe/Gibraltar^Europe/Guernsey^Europe/Helsinki^Europe/Isle_of_Man^Europe/Istanbul^Europe/Jersey^Europe/Kaliningrad^Europe/Kiev^Europe/Kirov^Europe/Lisbon^Europe/Ljubljana^Europe/London^Europe/Luxembourg^Europe/Madrid^Europe/Malta^Europe/Mariehamn^Europe/Minsk^Europe/Monaco^Europe/Moscow^Europe/Nicosia^Europe/Oslo^Europe/Paris^Europe/Podgorica^Europe/Prague^Europe/Riga^Europe/Rome^Europe/Samara^Europe/San_Marino^Europe/Sarajevo^Europe/Saratov^Europe/Simferopol^Europe/Skopje^Europe/Sofia^Europe/Stockholm^Europe/Tallinn^Europe/Tirane^Europe/Tiraspol^Europe/Ulyanovsk^Europe/Uzhgorod^Europe/Vaduz^Europe/Vatican^Europe/Vienna^Europe/Vilnius^Europe/Volgograd^Europe/Warsaw^Europe/Zagreb^Europe/Zaporozhye^Europe/Zurich^Factory^GB^GB-Eire --&amp;TZGeneral|Etc/GMT^Etc/GMT+1^Etc/GMT+2^Etc/GMT+3^Etc/GMT+4^Etc/GMT+5^Etc/GMT+6^Etc/GMT+7^Etc/GMT+8^Etc/GMT+9^Etc/GMT-1^Etc/GMT-10^Etc/GMT-11^Etc/GMT-12^Etc/GMT-13^Etc/GMT-14^Etc/GMT-2^Etc/GMT-3^Etc/GMT-4^Etc/GMT-5^Etc/GMT-6^Etc/GMT-7^Etc/GMT-8^Etc/GMT-9^Etc/GMT-10^Etc/GMT-11^Etc/GMT-12^Etc/GMT-13^Etc/GMT-14 --&amp;TZIndian|Indian/Antananarivo^Indian/Chagos^Indian/Christmas^Indian/Cocos^Indian/Comoro^Indian/Kerguelen^Indian/Mahe^Indian/Maldives^Indian/Mauritius^Indian/Mayotte^Indian/Reunion --&amp;TZPacific|Africa/Banjul^Africa/Bissau^Africa/Blantyre^Africa/Brazzaville^Africa/Bujumbura^Africa/Cairo^Africa/Casablanca^Africa/Ceuta^Africa/Conakry^Africa/Dakar^Africa/Dar_es_Salaam^Africa/Djibouti^Africa/Douala^Africa/El_Aaiun^Africa/Freetown^Africa/Gaborone^Africa/Harare^Africa/Johannesburg^Africa/Juba^Africa/Kampala^Africa/Khartoum^Africa/Kigali^Africa/Kinshasa^Africa/Lagos^Africa/Libreville^Africa/Lome^Africa/Luanda^Africa/Lubumbashi^Africa/Lusaka^Africa/Malabo^Africa/Maputo^Africa/Maseru^Africa/Mbabane^Africa/Mogadishu^Africa/Monrovia^Africa/Nairobi^Africa/Ndjamena^Africa/Niamey^Africa/Nouakchott^Africa/Ouagadougou^Africa/Porto-Novo^Africa/Sao_Tome^Africa/Timbuktu --I;Select Timezone Region|q;Region;Timezone Region?|General|Americas|Africa|Asia|Atlantic|Australia|Europe|Indian|Pacific --?[&amp;Region] -eq General|&amp;TZList;[&amp;TZGeneral] --?[&amp;Region] -eq US|&amp;TZList;[&amp;TZUS] --?[&amp;Region] -eq Americas|&amp;TZList;[&amp;TZAmericas] --?[&amp;Region] -eq Africa|&amp;TZList;[&amp;TZAfrica] --?[&amp;Region] -eq Atlantic|&amp;TZList;[&amp;TZAtlantic] --?[&amp;Region] -eq Austrailia|&amp;TZList;[&amp;TZAustrailia] --?[&amp;Region] -eq Europe|&amp;TZList;[&amp;TZEurope] --?[&amp;Region] -eq Indian|&amp;TZList;[&amp;TZIndian] --?[&amp;Region] -eq Pacific|&amp;TZList;[&amp;TZPacific] --~TZList|string;replaceall;^;|;[&amp;TZList] --/|*List|[&amp;TZList] --I;Select Timezone|q;TZ;Timezone?|[&amp;TZList] --#timezone|[&amp;TZ] --+TimeZone set to:|[&amp;TZ] --^TOP| --&lt;| --:EXAMPLE_CARD| --#Title|Example Card --#leftSub|Fireball!!! --#rightSub|Duck!!! --+|[c][b] === You've been Fireballed === [/b][/c] --+|[br] --+|[b][i]Fireball is cast in your general direction...[/i][/b] --+|[br] --+|A bright streak flashes from your pointing finger to a point you choose within range and then blossoms with a low roar into an explosion of flame. Each creature in a 20-foot-radius sphere centered on that point must make a Dexterity saving throw. A target takes *8d6* fire damage on a failed save, or half as much damage on a successful one. --+|[br] --=Dmg|8d6 --=HalfDmg|[$Dmg]\2 --+Save|DC16 Dexterity Saving Throw --=ST|1d20+3 --&amp;SaveMsg|OUCH!!! That hurt. Maybe next time move a little faster. ***(Saving Throw: [$ST])*** --?[$ST.Total] -lt 16|EXP_FAIL --=Dmg|[$Dmg]\2 --&amp;SaveMsg|Wow - That was was painful, but could have been worse. ***(Saving Throw: [$ST])*** --:EXP_FAIL| --+Roll|[&amp;SaveMsg] --+Damage|You take [$Dmg] in Fire Damage. --+|[hr] --+|[c][b]A bunch of dice![/b][/c] --+|[c][d4]4[/d4][d6]6[/d6][d8]8[/d8][d10]10[/d10][d12]12[/d12][d20]20[/d20][/c] --+|[hr][c][rbutton]Return::TOP[/rbutton][/c] --X| --:DUMP_CURRENT_SETTINGS| --/| Requires version 1.3.5 of scriptcards --&gt;LOAD_CURRENT_SETTINGS| --+&amp;#45;&amp;#45;&amp;#35;title&amp;#124;|[&amp;title] --+&amp;#45;&amp;#45;&amp;#35;titlecardbackground&amp;#124;|[&amp;titlecardbackground] --+&amp;#45;&amp;#45;&amp;#35;titlefontsize&amp;#124;|[&amp;titlefontsize] --+&amp;#45;&amp;#45;&amp;#35;titlefontlineheight&amp;#124;|[&amp;titlefontlineheight] --+&amp;#45;&amp;#45;&amp;#35;titlefontface&amp;#124;|[&amp;titlefontface] --+&amp;#45;&amp;#45;&amp;#35;titlecardgradient&amp;#124;|[&amp;titlecardgradient] --+&amp;#45;&amp;#45;&amp;#35;titlecardbackgroundimage&amp;#124;|[&amp;titlecardbackgroundimage] --+&amp;#45;&amp;#45;&amp;#35;norollhighlight&amp;#124;|[&amp;norollhighlight] --+&amp;#45;&amp;#45;&amp;#35;subtitleseparator&amp;#124;|[&amp;subtitleseparator] --+&amp;#45;&amp;#45;&amp;#35;hideTitleCard&amp;#124;|[&amp;hidetitlecard] --+&amp;#45;&amp;#45;&amp;#35;bodyfontsize&amp;#124;|[&amp;bodyfontsize] --+&amp;#45;&amp;#45;&amp;#35;bodyfontface&amp;#124;|[&amp;bodyfontface] --+&amp;#45;&amp;#45;&amp;#35;oddrowbackground&amp;#124;|[&amp;oddrowbackground] --+&amp;#45;&amp;#45;&amp;#35;oddrowfontcolor&amp;#124;|[&amp;oddrowfontcolor] --+&amp;#45;&amp;#45;&amp;#35;evenrowbackground&amp;#124;|[&amp;evenrowbackground] --+&amp;#45;&amp;#45;&amp;#35;evenrowfontcolor&amp;#124;|[&amp;evenrowfontcolor] --+&amp;#45;&amp;#45;&amp;#35;buttonbackground&amp;#124;|[&amp;buttonbackground] --+&amp;#45;&amp;#45;&amp;#35;buttontextcolor&amp;#124;|[&amp;buttontextcolor] --+&amp;#45;&amp;#45;&amp;#35;buttonbordercolor&amp;#124;|[&amp;buttonbordercolor] --+&amp;#45;&amp;#45;&amp;#35;buttonfontsize&amp;#124;|[&amp;buttonfontsize] --+&amp;#45;&amp;#45;&amp;#35;buttonfontface&amp;#124;|[&amp;buttonfontface] --+&amp;#45;&amp;#45;&amp;#35;dicefontcolor&amp;#124;|[&amp;dicefontcolor] --+&amp;#45;&amp;#45;&amp;#35;dicefontsize&amp;#124;|[&amp;dicefontsize] --+&amp;#45;&amp;#45;&amp;#35;usehollowdice&amp;#124;|[&amp;usehollowdice] --+&amp;#45;&amp;#45;&amp;#35;emotebackground&amp;#124;|[&amp;emotebackground] --+&amp;#45;&amp;#45;&amp;#35;emotestate&amp;#124;|[&amp;emotestate] --+&amp;#45;&amp;#45;&amp;#35;emotetext&amp;#124;|[&amp;emotetext] --+&amp;#45;&amp;#45;&amp;#35;tableborderradius&amp;#124;|[&amp;tableborderradius] --+&amp;#45;&amp;#45;&amp;#35;tableshadow&amp;#124;|[&amp;tableshadow] --+&amp;#45;&amp;#45;&amp;#35;debug&amp;#124;|[&amp;debug] --+&amp;#45;&amp;#45;&amp;#35;whisper&amp;#124;|[&amp;whisper] --&lt;| --:LOAD_CURRENT_SETTINGS| --/| Requires version 1.3.5 of scriptcards --~title|system;readsetting;title --~titlecardbackground|system;readsetting;titlecardbackground --~titlefontsize|system;readsetting;titlefontsize --~titlefontlineheight|system;readsetting;titlefontlineheight --~titlefontface|system;readsetting;titlefontface --~titlecardgradient|system;readsetting;titlecardgradient --~titlecardbackgroundimage|system;readsetting;titlecardbackgroundimage --~norollhighlight|system;readsetting;norollhighlight --~subtitleseparator|system;readsetting;subtitleSeperator --~hidetitlecard|system;readsetting;hideTitleCard --~bodyfontsize|system;readsetting;bodyfontsize --~bodyfontface|system;readsetting;bodyfontface --~oddrowbackground|system;readsetting;oddrowbackground --~oddrowfontcolor|system;readsetting;oddrowfontcolor --~evenrowbackground|system;readsetting;evenrowbackground --~evenrowfontcolor|system;readsetting;evenrowfontcolor --~buttonbackground|system;readsetting;buttonbackground --~buttontextcolor|system;readsetting;buttontextcolor --~buttonbordercolor|system;readsetting;buttonbordercolor --~buttonfontsize|system;readsetting;buttonfontsize --~buttonfontface|system;readsetting;buttonfontface --~dicefontcolor|system;readsetting;dicefontcolor --~dicefontsize|system;readsetting;dicefontsize --~usehollowdice|system;readsetting;usehollowdice --~emotebackground|system;readsetting;emotebackground --~emotetext|system;readsetting;emotetext --~emotestate|system;readsetting;emotestate --~tableborderradius|system;readsetting;tableborderradius --~tableshadow|system;readsetting;tableshadow --~debug|system;readsetting;debug --~whisper|system;readsetting;whisper --~timezone|system;readsetting;timezone --&lt;| --:SECTION_HEADER|Title --&amp;hdrstyle_T|style="width:100%;padding:10px;border-spacing:10px;border-collapse:collapse;text-shadow: 0px 0px 1px black;border: 0px solid black;" --&amp;hdrstyle_TR|style="border:5px solid LightSlateGray;" --&amp;hdrstyle_TD|style="width:100%;background-color:LightSlateGray;font-size:150%;font-weight:bold;text-align:center" --+|[t [&amp;hdrstyle_T]][tr [&amp;hdrstyle_TR]][td [&amp;hdrstyle_TD]][c][%1%][/c][/td][/tr][/t] --&lt;| }}
What do you think of putting version numbers in these (and on the link page), so it is easier to determine if improvements or updates have been added?
1624118024

Edited 1624119964
Follow up question to the formatting help in making PowerCards macros consistent with ScriptCards macros. Is there something that makes the title in PowerCards Ombre (dark up to light), where ScriptCards is a solid color? Is this configurable in ScriptCards output? Also, trying to get the look of the Title font (shadow etc) consistent between the two. Thank you ALL for the work you do! Example- -Don
Donald,&nbsp; I just saw a post from the Scripcards author (Kurt J.) on the main ScriptCards forum that indicated he was looking into adding gradient Title Colors.&nbsp;&nbsp; Donald K. said: Follow up question to the formatting help in making PowerCards macros consistent with ScriptCards macros. Is there something that makes the title in PowerCards Ombre (dark up to light), where ScriptCards is a solid color? Is this configurable in ScriptCards output? Also, trying to get the look of the Title font (shadow etc) consistent between the two. Thank you ALL for the work you do! -Don
Thank you! Will M. said: Donald,&nbsp; I just saw a post from the Scripcards author (Kurt J.) on the main ScriptCards forum that indicated he was looking into adding gradient Title Colors.&nbsp;&nbsp; Donald K. said: Follow up question to the formatting help in making PowerCards macros consistent with ScriptCards macros. Is there something that makes the title in PowerCards Ombre (dark up to light), where ScriptCards is a solid color? Is this configurable in ScriptCards output? Also, trying to get the look of the Title font (shadow etc) consistent between the two. Thank you ALL for the work you do! -Don
Dawnbringer Dawnbringer is a Magic Sword that is part of the Out of the Abyss campaign.&nbsp; It's basically a Sun Blade that can also cast Lesser Restoration. This script once setup for the player allows the player to activate Dawnbringer which puts a 15' bright and 15' dim aura around the player and adjusts the UDL settings so that their token is also emitting a combination of bright and dim light.&nbsp;&nbsp; The player can increase and decrease the amount of light based on the mechanics described for Dawnbringer.&nbsp; The player can also cast a Lesser Restoration spell which will remove a selected condition from a targeted tokens status list.&nbsp; Finally, the player can hide the Aura for the other players if it's getting in the way on the map.&nbsp;&nbsp; Requirements: Scriptcards 1.3.7 (for the blending effects)&nbsp; TokenMod - To adjust the token UDL and Aura settings Screen Shots: &nbsp; As you can see above, the lower token (Kharg) has activated Dawnbringer.&nbsp; Shaper only has normal vision, and is benefitting from the light.&nbsp; If they were fighting Drow or Duergar, you can easily see where their sunlight sensitivity kicks in.&nbsp;&nbsp; Script: !script {{ --#title|Dawnbringer --#reentrant|Dawnbringer --#leftsub| --#rightsub| --#titlecardbackground|LightYellow --#titlefontsize|1.5em --#titlefontlineheight|2.0em --#titlefontface|Contrail One --#bodyfontsize|11px --#bodyfontface|Tahoma --#oddrowbackground|#00000000 --#oddrowfontcolor|#000000 --#evenrowbackground|#00000000 --#evenrowfontcolor|#000000 --#buttonbackground|DarkRed --#buttontextcolor|White --#buttonbordercolor|#999999 --#buttonfontsize|10px --#buttonfontface|Tahoma --#dicefontcolor|#1C6EA4 --#dicefontsize|3.0em --#usehollowdice|0 --#emotebackground|#f5f5ba --#emotestate|visible --#tableborderradius| 6px; --#tableshadow| 5px 3px 3px 0px #aaa; --#bodybackgroundimage| linear-gradient( to bottom, LightYellow, Yellow, Orange, DarkOrange) --#sourcetoken|@{selected|token_id} --#debug|1 --:TOP| --#whisper|self --#emotetext| --#hidecard|0 --&amp;TokenId|@{selected|token_id} --+|[c][rbutton]Activate (Bonus Action)::ACTIVATE[/rbutton][/c] --+|[c][rbutton]Deactivate (Bonus Action)::DEACTIVATE[/rbutton][/c] --+|[br] --+|[c][rbutton]More Light (Action)::INCREASE;[&amp;TokenId][/rbutton][/c] --+|[c][rbutton]Less Light (Action)::DECREASE;[&amp;TokenId][/rbutton][/c] --+|[br] --+|[c][rbutton]Hide Aura::HIDE_FOR_ALL[/rbutton]&amp;nbsp;&amp;nbsp;[rbutton]Hide Aura for Others::HIDE_FOR_OTHERS[/rbutton][/c] --+|[c][rbutton]Show Aura::SHOW[/rbutton][/c] --+|[br] --+|[c][rbutton]Cast Lesser Restoration (Action)::LESSER_RESTORATION[/rbutton][/c] --+|[c][i]You touch a creature and can end either [b]one disease[/b] or [b]one condition[/b] afflicting it. The condition can be [b]blinded[/b], [b]deafened[/b], [b]paralyzed[/b], or [b]poisoned[/b].[/i][/c] --+|[BR] --+|[c][rbutton]Description::DESCRIPTION[/rbutton][/c] --x| --/| Drawing does these things: --/| 1) Creates an aura 15 Light and 15 dim light --/| 2) Need to adjust token light settings --:ACTIVATE|Bonus Action --#hidecard|1 --@token-mod|_on showplayers_aura1 showplayers_aura2 emits_bright_light emits_low_light _set aura1_radius|15 aura1_color|#FAFCDC aura2_radius|30 aura2_color|#FBFCEF bright_light_distance#15 low_light_distance#15 --X| --/| Donning does these things: --/| 1) Removes Aura --/| 2) Removes Token project light --:DEACTIVATE|Bonus Action --#hidecard|1 --@token-mod|_off showplayers_aura1 showplayers_aura2 emits_bright_light emits_low_light _set aura1_radius|0 aura2_radius|0 bright_light_distance#0 low_light_distance#0 --X| --:INCREASE|Action --#hidecard|1 --&amp;TokenId|[&amp;reentryval] --&amp;Radius|[*[&amp;TokenId]:t-aura1_radius] --?[&amp;Radius] -ge 30|INC_DONE --@token-mod|_set aura1_radius|+5 aura2_radius|+10 bright_light_distance|+5 low_light_distance|+5 --:INC_DONE| --X| --:DECREASE|Action --#hidecard|1 --&amp;TokenId|[&amp;reentryval] --&amp;Radius|[*[&amp;TokenId]:t-aura1_radius] --?[&amp;Radius] -le 10|DEC_DONE --@token-mod|_set aura1_radius|-5 aura2_radius|-10 bright_light_distance|-5 low_light_distance|-5 --:DEC_DONE| --X| --:HIDE_FOR_OTHERS|Action --#hidecard|1 --@token-mod|_off showplayers_aura1 showplayers_aura2 --X| --:HIDE_FOR_ALL|Action --#hidecard|1 --@token-mod|_off showplayers_aura1 showplayers_aura2 _set aura1_color|transparent aura2_color|transparent --X| --:SHOW|Action --#hidecard|1 --@token-mod|_on showplayers_aura1 showplayers_aura2 _set aura1_color|#FAFCDC aura2_color|#FBFCEF --X| --:LESSER_RESTORATION|Action --#Title|Cast Lesser Restoration --#hidecard|0 --I;Let's do some magic healing|t;Target;Target of Lesser Restoraton? --/|*Target|[&amp;Target] --&amp;tStyle|style="width:100%;padding:1px;border-spacing:0px;border-collapse:collapse;text-shadow: 0px 0px 0px black;border:0px dashed black;" --&amp;trStyle1|style="border:0px dashed black;" --&amp;tdStyle1|style="width:50%;text-align:left;background-color:#FFFFFF;font-size:100%" --&amp;tdStyle2|style="width:50%;text-align:left;background-color:#FFFFFF;font-size:100%" --&amp;HasCond|FALSE --~|array;statusmarkers;aryToken_SM;[&amp;Target] --/|Loop through all of the status markers on the targetted token --~SMItem|array;getfirst;aryToken_SM --?[&amp;SMItem] -eq ArrayError|ENDLOOP --:LOOPCHECK| --&amp;SMItem_Name|[&amp;SMItem] --/| The rbutton syntax doesn't like '::' in the name- messes with the parser --~SMItem|string;replace;::;^^;[&amp;SMItem] --~SMItem_Name|string;before;::;[&amp;SMItem_Name] --?Diseased -eq [&amp;SMItem_Name]|SHOW_CONDITION --?Blinded -eq [&amp;SMItem_Name]|SHOW_CONDITION --?Deafened -eq [&amp;SMItem_Name]|SHOW_CONDITION --?Paralyzed -eq [&amp;SMItem_Name]|SHOW_CONDITION --?Poisoned -eq [&amp;SMItem_Name]|SHOW_CONDITION --^NEXT_CONDITION| --:SHOW_CONDITION| --+|[c][rbutton][sm width=25px][&amp;SMItem_Name][/sm]&amp;nbsp;[&amp;SMItem_Name]::UNMARK;[&amp;Target]\[&amp;SMItem]\[&amp;SMItem_Name][/rbutton][/c] --&amp;HasCond|TRUE --:NEXT_CONDITION| --~SMItem|array;getnext;aryToken_SM --?[&amp;SMItem] -ne ArrayError|LOOPCHECK --:ENDLOOP| --?[&amp;HasCond] -eq TRUE|LR_DONE --#Title|Unable to Heal --+|[b][*[&amp;Target]:t-name][/b] does not appear to have a condition that can be healed by Dawnbringer. --+|[b]Dawnbringer's Lesser Restoration[/b] ability can remove one of the following: --+|&amp;nbsp;&amp;nbsp;&amp;nbsp;[b]- A disease[/b] --+|&amp;nbsp;&amp;nbsp;&amp;nbsp;[b]- Blinded[/b] --+|&amp;nbsp;&amp;nbsp;&amp;nbsp;[b]- Deafened[/b] --+|&amp;nbsp;&amp;nbsp;&amp;nbsp;[b]- Paralyzed[/b] --+|&amp;nbsp;&amp;nbsp;&amp;nbsp;[b]- Poisoned[/b] --:LR_DONE| --+|[BR] --+|[c][rbutton]Return::TOP[/rbutton][/c] --X| --:UNMARK| --#hidecard|0 --#Title|You've been Healed --#whisper| --/+Debug-RV|[&amp;reentryval] --~Arg|string;split;\;[&amp;reentryval] --&amp;TokenId|[&amp;Arg1] --&amp;SMItem|[&amp;Arg2] --&amp;SMItemName|[&amp;Arg3] --~SMItem|string;replace;^^;::;[&amp;SMItem] --&amp;SMItem|-[&amp;SMItem] --#emotetext|The power of Dawnbringer casts Lesser Restoration on [*[&amp;TokenId]:t-name] --#targettoken|[&amp;TokenId] --@token-mod|_set statusmarkers|[&amp;SMItem] _ids [&amp;TokenId] _ignore-selected --+|[j]The Sword known as Dawnbringer touches you, and a great wave of healing energy corses through your body. A kind a feminine voice speaks to you: [/j] [br] --+|[j]"[b][*[&amp;TokenId]:t-name][/b], you have been healed and are no longer [b][&amp;SMItemName][/b]. Now go forward and fight for good and the light against creatures of darkness!"[/j] --X| --:DESCRIPTION| --#hidecard|0 --+|Lost for ages in the Underdark, Dawnbringer appears to be a gilded longsword hilt. While grasping the hilt, you can use a bonus action to cause a blade of pure radiance to spring from the hilt, or cause the blade to disappear. While the blade exists, this magic longsword has the finesse property. If you are proficient with shortswords or longswords, you are proficient with Dawnbringer. --+|You gain a +2 bonus to attack and damage rolls made with this weapon, which deals radiant damage instead of slashing damage. When you hit an undead with it, that target takes an extra 1d8 radiant damage. --+|The sword's luminous blade emits bright light in a 15-foot radius and dim light for an additional 15 feet. The light is sunlight. While the blade persists, you can use an action to expand or reduce its radius of bright and dim light by 5 feet each, to a maximum of 30 feet each or a minimum of 10 feet each. --+|While holding the weapon, you can use an action to touch a creature with the blade and cast lesser restoration on that creature. Once used, this ability can't be used again until the next dawn. --+Sentience.|Dawnbringer is a sentient neutral good weapon with an Intelligence of 12, a Wisdom of 15, and a Charisma of 14. It has hearing and darkvision out to a range of 120 feet. The sword can speak, read, and understand Common, and it can communicate with its wielder telepathically. Its voice is kind and feminine. It knows every language you know while you’re attuned to it. --+Personality.|Forged by ancient sun worshipers, Dawnbringer is meant to bring light into darkness and to fight creatures of darkness. It is kind and compassionate to those in need, but fierce and destructive to its enemies. --+|Long years lost in darkness have made Dawnbringer frightened of both the dark and abandonment. It prefers that its blade always be present and shedding light in areas of darkness, and it strongly resists being parted from its wielder for any length of time. --+|[c][rbutton]Return::TOP[/rbutton][/c] --x| }}
Will M. said: Dawnbringer Sweet work, checked it out already in my sandbox, works great. Thanks for all your contributtions.
Please help make life easier. If you want your creation added to the 1st page index please add the title in bold and a permalink at the bottom of your post. Example 5e Worlds Best Fireball&nbsp; -link Thanks
Will M. said: Mark Token Scriptcards .&nbsp; I'm posting at the request of @Craven a set of scripts I use to set and clear status markers on tokens.&nbsp; These are incorporated in my larger suite of Macros and NPC/DM Tool Suite I plan to release soon.&nbsp; There are actually 3 scripts: Mark Token - Select predefined status marker and output descriptive text Unmark Token - Unmark previously established status markers, one at a time Clear Token - Clears all status markers on a token Just wanted to say thanks for sharing you script. I've taken it a little further and have added the token-mod to actually turn off vision or to chattr the global saves, attacks, and abilities on/off when either setting or clearing a marker for things like Bless, Bane, Bardic Inspiration and the like.&nbsp;
@ez2rpg - You are more than welcome, would love to see it at some point.&nbsp;&nbsp; I've been thinking it might be fun and interesting to set up a series of ongoing online sessions for us scriptwriters to show some of our work.&nbsp; Share tips and tricks and how we've leveraged ScriptCards in combination with the various other utility API scripts like TokenMod and Spawn.&nbsp; I'm not sure what the best setup would be, maybe create a new Test/Demo campaign and invite everyone in that is interested and making them co-GMs.&nbsp; Then use Discord for Audio.&nbsp; I'm not an expert on Discord, but I think it might have a screen-sharing capability too.&nbsp;&nbsp;
1625809027
GiGs
Pro
Sheet Author
API Scripter
Why are you posting this here Ivo? It's not a scriptcard script. You should post it in its own thread. (It doesn't really belong in the Roll20 Tips &amp; Tricks thread either.)
1625815239

Edited 1625816090
Ivo
Pro
Rgr, hmmmm, ill find a place for it, thought it was a mixed thread with the title scriptcard-api-working-and-sharing, it does indirectly call script cards in the OnMyTurn ability call
1625831072

Edited 1625831388
Ivo
Pro
Fix for&nbsp; Lib5E_NPC_Qualities_Summary in&nbsp; ScriptCards Library: dnd5elib version 0.0.6 As is, if Vulnerablities/Resistances/Immunities etc is null/undefined or whatever, it still displays the heading, rather than skipping the line as intended, also fixed up double output for Immune.Cond --:Lib5E_NPC_Qualities_Summary|character_id --+Type|[*[%1%]:npc_type] --?"[*[%1%]:npc_vulnerabilities]" -inc ""|_Lib5E_NPCQS_Skip1 --+Vulnerable|[*[%1%]:npc_vulnerabilities] --:_Lib5E_NPCQS_Skip1| --?"[*[%1%]:npc_resistances]" -inc ""|_Lib5E_NPCQS_Skip2 --+Resistant|[*[%1%]:npc_resistances] --:_Lib5E_NPCQS_Skip2| --?"[*[%1%]:npc_immunities]" -inc ""|_Lib5E_NPCQS_Skip3 --+Immune|[*[%1%]:npc_immunities] --:_Lib5E_NPCQS_Skip3| --?"[*[%1%]:npc_condition_immunities]" -inc ""|_Lib5E_NPCQS_Skip4 --+Cond. Immune|[*[%1%]:npc_condition_immunities] --:_Lib5E_NPCQS_Skip4| --?"[*[%1%]:npc_senses]" -inc ""|_Lib5E_NPCQS_Skip5 --+Senses|[*[%1%]:npc_senses] --:_Lib5E_NPCQS_Skip5| --&lt;|
A slight rework if anyone has any interest, works much the same with a sheet full of macros Craven said: Update changes made to both 5-26-2021 My Conditional ScriptCard Macro for D&amp;D 5e and Roll20 OGL sheet. First for my Players a symbol legend. Thanks to Kirt J for the help. I am using the Marker Pack RPG Condition Markers v2. !script {{ --#title|Condition Symbols --#leftsub|Meaning of the Symbols. --#titlecardbackground|#990000 --#evenrowbackground|#B6AB91 --#oddrowbackground|#CEC7B6 --+[sm width=25px]x-blessed[/sm]|[b]Blessed[/b] --+[sm width=25px]dd-blinded[/sm]|[b]Blind[/b] --+[sm width=25px]dd-charmed[/sm]|[b]Charmed[/b] --+[sm width=25px]dd-deafened[/sm]|[b]Deafened[/b] --+[sm width=25px]dd-frightened[/sm]|[b]Frightened[/b] --+[sm width=25px]dd-grappled[/sm]|[b]Grappled[/b] --+[sm width=25px]dd-invisible[/sm]|[b]Invisible[/b] --+[sm width=25px]dd-incapacitated[/sm]|[b]Incapacitated[/b] --+[sm width=25px]dd-paralyzed[/sm]|[b]Paralyzed[/b] --+[sm width=25px]dd-petrified[/sm]|[b]Petrified[/b] --+[sm width=25px]dd-poisoned[/sm]|[b]Poisoned[/b] --+[sm width=25px]dd-prone[/sm]|[b]Prone[/b] --+[sm width=25px]x-rage[/sm]|[b]Rage[/b] --+[sm width=25px]dd-restrained[/sm]|[b]Restrained[/b] --+[sm width=25px]dd-stunned[/sm]|[b]Stunned[/b] --+[sm width=25px]dd-unconscious[/sm]|[b]Unconcious[/b] --+[sm width=25px]path-dead[/sm]|[b]Dead[/b] }} Then I made one for me the GM to set and remove the Conditions. It call to macros on a character sheet called "Conditions"&nbsp; !script {{ --#title|Condition Symbols --#leftsub|Meaning of the Symbols. --#titlecardbackground|#990000 --#evenrowbackground|#B6AB91 --#oddrowbackground|#CEC7B6 --+[sm width=25px]x-blessed[/sm]|[b]Blessed[/b] [r] [button]Set::~Conditions|SetBless[/button] [button]Remove::~Conditions|RemoveBless[/button] [/r] --+[sm width=25px]dd-blinded[/sm]|[b]Blind[/b] [r] [button]Set::~Conditions|SetBlind[/button] [button]Remove::~Conditions|RemoveBlind[/button] [/r] --+[sm width=25px]dd-charmed[/sm]|[b]Charmed[/b] [r] [button]Set::~Conditions|SetCharmed[/button] [button]Remove::~Conditions|RemoveCharmed[/button] [/r] --+[sm width=25px]dd-deafened[/sm]|[b]Deafened[/b] [r] [button]Set::~Conditions|SetCharmed[/button] [button]Remove::~Conditions|RemoveCharmed[/button] [/r] --+[sm width=25px]dd-frightened[/sm]|[b]Frightened[/b] [r] [button]Set::~Conditions|SetFrightened[/button] [button]Remove::~Conditions|RemoveFrightened[/button] [/r] --+[sm width=25px]dd-grappled[/sm]|[b]Grappled[/b] [r] [button]Set::~Conditions|SetGrappled[/button] [button]Remove::~Conditions|RemoveGrappled[/button] [/r] --+[sm width=25px]dd-invisible[/sm]|[b]Invisible[/b] [r] [button]Set::~Conditions|SetInvisible[/button] [button]Remove::~Conditions|RemoveInvisible[/button] [/r] --+[sm width=25px]dd-incapacitated[/sm]|[b]Incapacitated[/b] [r] [button]Set::~Conditions|Setincapacitated[/button] [button]Remove::~Conditions|Removeincapacitated[/button] [/r] --+[sm width=25px]dd-paralyzed[/sm]|[b]Paralyzed[/b] [r] [button]Set::~Conditions|SetParalyzed[/button] [button]Remove::~Conditions|RemoveParalyzed[/button] [/r] --+[sm width=25px]dd-petrified[/sm]|[b]Petrified[/b] [r] [button]Set::~Conditions|SetPetrified[/button] [button]Remove::~Conditions|RemovePetrified[/button] [/r] --+[sm width=25px]dd-poisoned[/sm]|[b]Poisoned[/b] [r] [button]Set::~Conditions|SetPoisoned[/button] [button]Remove::~Conditions|RemovePoisoned[/button] [/r] --+[sm width=25px]dd-prone[/sm]|[b]Prone[/b] [r] [button]Set::~Conditions|SetProne[/button] [button]Remove::~Conditions|RemoveProne[/button] [/r] --+[sm width=25px]x-rage[/sm]|[b]Rage[/b] [r] [button]Set::~Conditions|SetRage[/button] [button]Remove::~Conditions|RemoveRage[/button] [/r] --+[sm width=25px]dd-restrained[/sm]|[b]Restrained[/b] [r] [button]Set::~Conditions|SetRestrained[/button] [button]Remove::~Conditions|RemoveRestrained[/button] [/r] --+[sm width=25px]dd-stunned[/sm]|[b]Stunned[/b] [r] [button]Set::~Conditions|SetStunned[/button] [button]Remove::~Conditions|RemoveStunned[/button] [/r] --+[sm width=25px]dd-unconscious[/sm]|[b]Unconcious[/b] [r] [button]Set::~Conditions|SetUnconcious[/button] [button]Remove::~Conditions|RemoveUnconcious[/button] [/r] --+[sm width=25px]path-dead[/sm]|[b]Dead[/b] [r] [button]Set::~Conditions|SetDead[/button] [button]Remove::~Conditions|RemoveDead[/button] [/r] --+[sm width=25px]path-dying[/sm]|[b]Dying/Stable [/b] [r] [button]Set::~Conditions|SetDying[/button] [button]Remove::~Conditions|SetStabilized[/button] [/r] --+|[c][button]Clear All Markers::~Conditions|ClearAll[/button][/c] }} Sample of the macros from the character sheet. Bless is special as it ask for the 3 targets, marks them and then adds to the turn tracker the names of the targets and a 10 turn counters. My blind Macro is also special as it marks the token and turns off Vision on the token.&nbsp; Update: added the ability to check of the global save and global attack for 5e OGL sheet.&nbsp;&nbsp; SetBless !setattr --name @{selected|character_name} --modb --lvl?{Spell Slot|1}_slots_expended|-1 !act -1 10 --@{target|1|character_name} , @{target|2|character_name}, @{target|3|character_name}. Blessed !token-mod --ids @{target|1|token_id} @{target|2|token_id} @{target|3|token_id} --set statusmarkers|x-blessed !script {{ --#title|Condition Blessed --#sourceToken|@{selected|token_id} --#leftsub|@{target|1|token_name}, @{target|2|token_name}, @{target|3|token_name}. You are Blessed by the Gods. --#emoteText|@{selected|token_name} Condition set. --#titlecardbackground|#990000 --#titleFontColor|#FFFFFF --#evenrowbackground|#B6AB91 --#oddrowbackground|#CEC7B6 --#emoteBackground|#FFFFFF --#leftsub|@{target|1|character_name}, @{target|2|character_name}, @{target|3|character_name}. You are Blessed by the Gods. --#titlecardbackground|#990000 --#evenrowbackground|#B6AB91 --#oddrowbackground|#CEC7B6 --@setattr|_name @{target|1|token_name} _repeating_tohitmod_$0_global_attack_active_flag|1 _silent --@setattr|_name @{target|2|token_name} _repeating_tohitmod_$0_global_attack_active_flag|1 _silent --@setattr|_name @{target|3|token_name} _repeating_tohitmod_$0_global_attack_active_flag|1 _silent --@setattr|_name @{target|1|token_name} _repeating_savemod_$0_global_save_active_flag|1 _silent --@setattr|_name @{target|2|token_name} _repeating_savemod_$0_global_save_active_flag|1 _silent --@setattr|_name @{target|3|token_name} _repeating_savemod_$0_global_save_active_flag|1 _silent --+[sm width=25px]x-blessed[/sm]|[b]Blessed[/b] --+|You bless up to three creatures of your choice within range. Whenever a target makes an Attack roll or a saving throw before the spell ends, the target can roll a d4 and add the number rolled to the Attack roll or saving throw. At Higher Levels: When you cast this spell using a spell slot of 2nd level or higher, you can target one additional creature for each slot level above 1st. }} SetBlind !token-mod {{ --set statusmarkers|dd-blinded --off bright_vision }} !script {{ --#title|Condition Blind --#sourceToken|@{selected|token_id} --#leftsub|@{selected|token_name} --#emoteText|@{selected|token_name} Condition set. --#titlecardbackground|#990000 --#titleFontColor|#FFFFFF --#evenrowbackground|#B6AB91 --#oddrowbackground|#CEC7B6 --#emoteBackground|#FFFFFF --+[sm width=25px]dd-blinded[/sm]|[b]You are Blind[/b] --+|• A blinded creature can’t see and automatically fails any ability check that requires sight. • Attack rolls against the creature have advantage, and the creature’s attack rolls have disadvantage. }}
Ivo said: A slight rework if anyone has any interest, works much the same with a sheet full of macros You didn't post the code only the output.&nbsp;
1626537449

Edited 1626997391
Will M. said: @ez2rpg - You are more than welcome, would love to see it at some point.&nbsp;&nbsp; I've been thinking it might be fun and interesting to set up a series of ongoing online sessions for us scriptwriters to show some of our work.&nbsp; Share tips and tricks and how we've leveraged ScriptCards in combination with the various other utility API scripts like TokenMod and Spawn.&nbsp; I'm not sure what the best setup would be, maybe create a new Test/Demo campaign and invite everyone in that is interested and making them co-GMs.&nbsp; Then use Discord for Audio.&nbsp; I'm not an expert on Discord, but I think it might have a screen-sharing capability too.&nbsp; @ Will M. &nbsp; So, for what its worth here's your script with the modifications I've made so far. I've bolded text changes and added italicized and bolded comments to explain what each change does. Would love to hear your feedback. ez2rpg&nbsp; !script {{ --/|___Mark_Token_3.1_____ --#reentrant|MarkToken --#title|Set Condition/Status --#titleCardBackground|#932729 --#oddRowBackground|#FFFFFF --#evenRowBackground|#FFFFFF --#buttonbackground|#FFFFFF --#buttontextcolor|#0905f2 --#buttonbordercolor|#FFFFFF --#debug|0 --@token-mod _config|players-can-ids|on --&amp;TokenId|@{selected|token_id} --&amp;tStyle|style="width:100%;padding:1px;border-spacing:0px;border-collapse:collapse;text-shadow: 0px 0px 0px black;border:0px dashed black;" --&amp;trStyle1|style="border:0px dashed black;" --&amp;tdStyle1|style="width:50%;text-align:left;background-color:#FFFFFF;font-size:100%" --&amp;tdStyle2|style="width:50%;text-align:left;background-color:#FFFFFF;font-size:100%" --=Cond_Col|1 --=Stat_Col|1 --/|Initialize my defined list of StatusMarkers in pairs of values (StatusMarkerId;Name) --/|This list includes Roll20 Marketplace Markers I purchased. You will need to establish the default Status Markers for your campaigns based on your inventory of markers. --/|Use !token-mod --|help to see you list /w names. Copy this list down to the Unmark and Clear scrips as well. --~|array;define;arySM ;blinded::4106672;Blinded ;charmed::4106676;Charmed ;deafened::4106679;Deafened ;exhaustion-lvl-1::4106684;Exhaustion Level 1 ;exhaustion-lvl-2::4107417;Exhaustion Level 2 ;exhaustion-lvl-3::4107418;Exhaustion Level 3 ;exhaustion-lvl-4::4107419;Exhaustion Level 4 ;exhaustion-lvl-5::4107420;Exhaustion Level 5 ;exhaustion-lvl-6::4178244;Exhaustion Level 6 ;frightened::4107424;Frightened ;grappled::4107425;Grappled ;incapacitated::4107435;Incapacitated ;invisible::4107437;Invisible ;paralyzed::4107442;Paralyzed ;petrified::4107443;Petrified ;poisoned::4107444;Poisoned ;prone::4107446;Prone ;restrained::4107451;Restrained ;stunned::4107461;Stunned ;unconscious::4107463;Unconscious ;advantage::4106665;Advantage ;armor-of-agathys::4106666;Armor of Agathys ;baned::4106667;Baned ;bardic-inspiration::4271154;Bardic Inspiration ;bladesong::4106669;Bladesong ;blessed::4106671;Blessed ;blink::4106673;Blink ;blur::4106674;Blur ;booming-blade::4106675;Booming Blade ;cold-resistance::4106677;Cold Resistance ;concentrating::4106678;Concentrating ;cover-half::4107426;Cover Half ;cover-three-quarter::4107462;Cover Three Quarter ;cursed::4178242;Cursed ;dead;Dead ;detect-magic::4217098;Detect Magic ;disadvantage::4106680;Disadvantage ;disease::4269745;Disease ;divine-favor::4106681;Divine Favor ;dodging::4106682;Dodging ;dying::4204637;Dying ;emboldening-bond::4106683;Emboldening Bond ;favored-foe::4107421;Favored Foe ;fire-resistance::4107422;Fire Resistance ;flying::4107423;Flying ;hasted::4107428;Hasted ;hexblades-curse::4107429;Hexblades Curse ;hexed::4107430;Hexed ;hunters-mark::4107431;Hunters Mark ;hypnotized::4107432;Hypnotized ;immunity::4269196;Immunity ;inspiration::4107436;Inspiration ;lightning-resistance::4107438;Lightning Resistance ;mage-armor::4107439;Mage Armor ;mirror-image::4107440;Mirror Image ;on-fire::4107441;On Fire ;poison-resistance::4107445;Poison Resistance ;raging::4107447;Raging ;readied-action::4107448;Readied Action ;reckless-attack::4201818;Reckless Attack ;resistance::4107450;Resistance ;sanctuary::4107452;Sanctuary ;shell-defense::4107455;Shell Defense ;shield-of-faith::4107456;Shield of Faith ;sleeping::4107457;Sleeping ;slowed::4107458;Slowed ;spider-climb::4198604;Spider Climb ;stabilized::4107459;Stabilized ;stealth::4107460;Stealth ;stopped::4268825;Stopped ;warding-bond::4107465;Warding Bond --~|array;define;aryConditions ;Blinded ;Charmed ;Deafened ;Exhaustion Level 1 ;Exhaustion Level 2 ;Exhaustion Level 3 ;Exhaustion Level 4 ;Exhaustion Level 5 ;Exhaustion Level 6 ;Frightened ;Grappled ;Incapacitated ;Invisible ;Paralyzed ;Petrified ;Poisoned ;Prone ;Restrained ;Stunned ;Unconscious --/|Run through the array of SMs and break into Condition or Status --~SM_TokenId|array;getfirst;arySM --/+Debug|SM_TokenId: [&amp;SM_TokenId] --:LOOPSTART| --?[&amp;SM_TokenId] -eq ArrayError|LOOPEND --~SM_Name|array;getnext;arySM --/+Debug|SM_Name: [&amp;SM_Name] --/| Test to see if this is a condition or status --~COND_INDEX|array;indexof;aryConditions;[&amp;SM_Name] --/+Debug|Cond_Index: [&amp;COND_INDEX] --&amp;tbl|[td [&amp;tdStyle1]][rbutton][&amp;SM_Name]::SET_STATUSMARK;[&amp;TokenId]\[&amp;SM_Name][/rbutton][/td] --?[&amp;COND_INDEX] -eq ArrayError|IS_STATUS|IS_COND --:IS_COND| --/| Are we on column 1 or 2? --?[$Cond_Col.Total] -eq 1|COND_1|COND_2 --:COND_1| --&amp;tbl|[tr [&amp;trStyle1]] [&amp;tbl] --=Cond_Col|2 --&amp;tblCond|+ [&amp;tbl] --^CONTINUE| --:COND_2| --&amp;tbl|[&amp;tbl] [/tr] --=Cond_Col|1 --&amp;tblCond|+ [&amp;tbl] --^CONTINUE| --:IS_STATUS| --?[$Stat_Col.Total] -eq 1|STAT_1|STAT_2 --:STAT_1| --&amp;tbl|[tr [&amp;trStyle1]] [&amp;tbl] --=Stat_Col|2 --&amp;tblStat| + [&amp;tbl] --^CONTINUE| --:STAT_2| --&amp;tbl|[&amp;tbl] [/tr] --=Stat_Col|1 --&amp;tblStat|+ [&amp;tbl] --^CONTINUE| --:CONTINUE| --~SM_TokenId|array;getnext;arySM --^LOOPSTART| --:LOOPEND| --/| Complete the tables based on where we ended up? --?[$Cond_Col] -eq 1|COND_NO_BLANK_CELLS --&amp;tblCond|+ [td][/td] --:COND_NO_BLANK_CELLS| --?[$Stat_Col] -eq 1|STAT_NO_BLANK_CELLS &amp;tblStat|+ [td][/td] --:STAT_NO_BLANK_CELLS| --/~LenS|string;length;[&amp;tblStat] --/+Debug2| Length Cond: [&amp;LenC] Stat: [&amp;LenS] --&amp;tblCond|[t [&amp;tStyle]] [&amp;tblCond] [/tr] [/t] --&amp;tblStat|[t [&amp;tStyle]] [&amp;tblStat] [/tr] [/t] --/~LenS|string;length;[&amp;tblStat] --/+Debug3| Length Cond: [&amp;LenC] Stat: [&amp;LenS] --&gt;SECTION_HEADER|Mark Conditions --+|[&amp;tblCond] --&gt;SECTION_HEADER|Mark Status --+|[&amp;tblStat] --X| --:SET_STATUSMARK| --~Arg|string;split;\;[&amp;reentryval] --/+Debug|[&amp;reentryval] --/+Debug|[&amp;Arg1] [&amp;Arg2] --&amp;TokenId|[&amp;Arg1] --&amp;SM|[&amp;Arg2] --#titleCardBackground|#932729 --#oddRowBackground|#CEC7B6 --#evenRowBackground|#B6AB91 --#Title|[&amp;SM] --#leftsub|[*[&amp;TokenId]:t-name] --#rightsub|Status --#hidecard|0 --C[&amp;SM] |Blinded:Blinded |Charmed:Charmed |Deafened:Deafened |Exhaustion Level 1:Exhaustion Level 1 |Exhaustion Level 2:Exhaustion Level 2 |Exhaustion Level 3:Exhaustion Level 3 |Exhaustion Level 4:Exhaustion Level 4 |Exhaustion Level 5:Exhaustion Level 5 |Exhaustion Level 6:Exhaustion Level 6 |Frightened:Frightened |Grappled:Grappled |Incapacitated:Incapacitated |Invisible:Invisible |Paralyzed:Paralyzed |Petrified:Petrified |Poisoned:Poisoned |Prone:Prone |Restrained:Restrained |Stunned:Stunned |Unconscious:Unconscious |Advantage:Advantage |Armor of Agathys:Armor of Agathys |Baned:Baned |Bardic Inspiration:Bardic Inspiration |Bladesong:Bladesong |Blessed:Blessed |Blink:Blink |Blur:Blur |Booming Blade:Booming Blade |Cold Resistance:Cold Resistance |Concentrating:Concentrating |Cursed:Cursed |Dead:Dead |Detect Magic:Detect Magic |Disadvantage:Disadvantage |Disease:Disease |Divine Favor:Divine Favor |Dodging:Dodging |Dying:Dying |Emboldening Bond:Emboldening Bond |Favored Foe:Favored Foe |Fire Resistance:Fire Resistance |Flying:Flying |Cover Half:Cover Half |Hasted:Hasted |Hexblades Curse:Hexblades Curse |Hexed:Hexed |Hunters Mark:Hunters Mark |Hypnotized:Hypnotized |Immunity:Immunity |Inspiration:Inspiration |Lightning Resistance:Lightning Resistance |Mage Armor:Mage Armor |Mirror Image:Mirror Image |On Fire:On Fire |Poison Resistance:Poison Resistance |Raging:Raging |Readied Action:Readied Action |Reckless Attack:Reckless Attack |Resistance:Resistance |Sanctuary:Sanctuary |Shell Defense:Shell Defense |Shield of Faith:Shield of Faith |Sleeping:Sleeping |Slowed:Slowed |Spider Climb:Spider Climb |Stabilized:Stabilized |Stealth:Stealth |Stopped:Stopped |Cover Three Quarter:Cover Three Quarter |Warding Bond:Warding Bond --+ERROR|[b][c]Status not found![/c][/b] --:Blinded| turned off sight --&amp;Marker|blinded::4106672 --#rightsub|Condition --@token-mod|_off has_bright_light_vision has_night_vision emits_bright_light emits_low_light --+[sm width=25px]blinded[/sm]|You are blind and cannot see. --+[sm width=25px]advantage[/sm]| • Attack rolls against you have advantage. --+[sm width=25px]disadvantage[/sm]| • Your attack rolls are at disadvantage. --+| • You automatically fail any ability check that requires sight. --^MARK| --:Charmed| --&amp;Marker|charmed::4106676 --#rightsub|Condition --+[sm width=25px]charmed[/sm]|You are charmed. --+| • You cannot attack your charmer or target your charmer with harmful abilities or magical effects. --+| • Your charmer has [sm width=25px]advantage[/sm] advantage on any ability check to interact socially with you. --^MARK| --:Deafened| --&amp;Marker|deafened::4106679 --#rightsub|Condition --+[sm width=25px]deafened[/sm]|You've been deafened, and can no longer hear anything. --+| • You automatically fail any ability check that requires hearing. --^MARK| --:Exhaustion Level 1| --&amp;Marker|exhaustion-lvl-1::4106684 --#rightsub|Condition --#Title|Exhaustion - Level 1 --+[sm width=25px]exhaustion-lvl-1[/sm]|You are exhausted. --+[sm width=25px]disadvantage[/sm]| • You have disadvantage on all ability checks. --+| • An effect that removes exhaustion reduces its level as specified in the effect’s description, with all exhaustion effects ending if a creature’s exhaustion level is reduced below 1. --+| • Finishing a long rest reduces a creature’s exhaustion level by 1, provided that the creature has also ingested some food and drink. Also, being raised from the dead reduces a creature’s exhaustion level by 1 --^MARK| --:Exhaustion Level 2| --&amp;Marker|exhaustion-lvl-2::4107417 --#rightsub|Condition --#Title|Exhaustion Level 2 --+[sm width=25px]exhaustion-lvl-2[/sm]|You have now reached the 2nd level of exhaustion: --+[sm width=25px]disadvantage[/sm]| • You have disadvantage on all ability checks. --+[sm width=25px]slowed[/sm]| • Your speed is now halved --+| • An effect that removes exhaustion reduces its level as specified in the effect’s description, with all exhaustion effects ending if a creature’s exhaustion level is reduced below 1. --+| • Finishing a long rest reduces a creature’s exhaustion level by 1, provided that the creature has also ingested some food and drink. Also, being raised from the dead reduces a creature’s exhaustion level by 1 --^MARK| --:Exhaustion Level 3| --&amp;Marker|exhaustion-lvl-3::4107418 --#rightsub|Condition --#Title|Exhausted Level 3 --+[sm width=25px]exhaustion-lvl-3[/sm]| • You have now reached the 3rd level of exhaustion. --+[sm width=25px]disadvantage[/sm]| • You have disadvantage on all ability checks. --+[sm width=25px]slowed[/sm]| • Your speed is now halved --+[sm width=25px]disadvantage[/sm]| • You are disadvantaged on all attack and saving throws --+| • An effect that removes exhaustion reduces its level as specified in the effect’s description, with all exhaustion effects ending if a creature’s exhaustion level is reduced below 1. --+| • Finishing a long rest reduces a creature’s exhaustion level by 1, provided that the creature has also ingested some food and drink. Also, being raised from the dead reduces a creature’s exhaustion level by 1 --^MARK| --:Exhaustion Level 4| halved the token's hp --&amp;Marker|exhaustion-lvl-4::4107419 --#rightsub|Condition --#Title|Exhaustion Level 4 --+[sm width=25px]exhaustion-lvl-4[/sm]|You have now reached the 4th level of exhaustion. --+[sm width=25px]disadvantage[/sm]| • You have disadvantage on all ability checks. --+[sm width=25px]slowed[/sm]| • Your speed is now halved --+[sm width=25px]disadvantage[/sm]| • You are disadvantaged on all attack and saving throws --+| • Your hit point maximum is now halved --@token-mod|_set bar1_max|/2 --+|An effect that removes exhaustion reduces its level as specified in the effect’s description, with all exhaustion effects ending if a creature’s exhaustion level is reduced below 1. --+|Finishing a long rest reduces a creature’s exhaustion level by 1, provided that the creature has also ingested some food and drink. Also, being raised from the dead reduces a creature’s exhaustion level by 1 --^MARK| --:Exhaustion Level 5| halved the token's hp --&amp;Marker|exhaustion-lvl-5::4107420 --#rightsub|Condition --#Title|Exhaustion Level 5 --+[sm width=25px]exhaustion-lvl-5[/sm]| • You have now reached the 5th level of exhaustion. --+[sm width=25px]disadvantage[/sm]| • You have disadvantage on all ability checks. --+[sm width=25px]slowed[/sm]| • Your speed is now halved --+[sm width=25px]disadvantage[/sm]| • You are disadvantaged on all attack and saving throws --+| • Your hit point maximum is now halved --@token-mod|_set bar1_max|/2 --+[sm width=25px]stopped[/sm]| • Your speed is now reduced to zero. --+|An effect that removes exhaustion reduces its level as specified in the effect’s description, with all exhaustion effects ending if a creature’s exhaustion level is reduced below 1. --+|Finishing a long rest reduces a creature’s exhaustion level by 1, provided that the creature has also ingested some food and drink. Also, being raised from the dead reduces a creature’s exhaustion level by 1 --^MARK| --:Exhaustion Level 6| turned off vision and set hp to 0 --&amp;Marker|exhaustion-lvl-6::4178244 --#rightsub|Condition --#Title|Exhaustion Level 6 --@token-mod|_off has_bright_light_vision has_night_vision emits_bright_light emits_low_light --@token-mod|_set bar1_current|0 --+|[c]You are [b]☠️DEAD!☠️[/b][/c] --+|[c]You know, as in[/c] --+|[c][b]☠️DEAD!☠️ ☠️DEAD!☠️[/b][/c] --+|[c]No really, you're[/c] --+|[c] [b]☠️DEAD!☠️[/b][/c] --+|[c]Unless of course some one revivifies[/c] [c]or resurrects you, because after all[/c] --+|[c][b]"Nobody dies in 5e"[/b]~ Rocco[/c] --^MARK| --:Frightened| --&amp;Marker|frightened::4107424 --#rightsub|Condition --#Title|Frightened --+[sm width=25px]frightened[/sm]| • You are frightened! --+[sm width=25px]disadvantage[/sm]| • You are disadvantaged on all ability checks and attack rolls while the source of your fear is within your line of sight. --+| • You cannot willingly move closer to the source of your fear. --^MARK| --:Grappled| --&amp;Marker|grappled::4107425 --#rightsub|Condition --#Title|Grappled --+[sm width=25px]grappled[/sm]| • You are grappled. --+[sm width=25px]stopped[/sm]| • You're speed is now zero, and you cannot benefit from any bonuses to your speed. --+|The condition ends if your grappler becomes [sm width=25px]incapacitated[/sm] incapacitated [i](see the condition)[/i]. --+|The condition also ends if an effect removes the grappled creature from the reach of the grappler or grappling effect, such as when a creature is hurled away by a ⛈️ [b][i]thunderwave[/b][/i] spell. --^MARK| --:Incapacitated| --&amp;Marker|incapacitated::4107435 --#rightsub|Condition --#Title|Incapacitated --+[sm width=25px]incapacitated[/sm]| • You are incapacitated --+|Incapacitated creatures can’t take **actions** or **reactions**. --^MARK| --:Invisible| made multi-sided tokens for PCs that side 2 has an invisible token, so I could make them invisible --&amp;Marker|invisible::4107437 --#rightsub|Condition --#Title|Invisible --@token-mod| _set currentside|2 --+[sm width=25px]invisible[/sm]|You're invisible --+| • Invisible creatures are impossible to see without the aid of magic or a special senses. --+| • For the purpose of hiding, you are heavily obscured. --+| • Your location can only be detected by the 🔊 you make or any 👣you leave. --+| • Attack rolls against you are at [sm width=25px]disadvantage[/sm] disadvantage. --+| • Your attack rolls have [sm width=25px]advantage[/sm] advantage. --^MARK| --:Paralyzed| --&amp;Marker|paralyzed::4107442 --#rightsub|Condition --#Title|Paralyzed --+[sm width=25px]paralyzed[/sm]|You're paralyzed. --+| • You are [sm width=25px]incapacitated[/sm] incapacitated [i](see the condition)[/i] --+| • You cannot move or speak. --+| • You automatically fail all strength and dexterity saving throws. --+| • All attack rolls against you have [sm width=25px]advantage[/sm] advantage. --+| • Any attack that hits you is a critical hit [i](double damage)[/i], [r]**IF** the attacker is within 5 feet of you.[/r] --^MARK| --:Petrified| tunred off vision --&amp;Marker|petrified::4107443 --#rightsub|Condition --#Title|Petrified --@token-mod|_off has_bright_light_vision has_night_vision emits_bright_light emits_low_light --+[sm width=25px]petrified[/sm]|You're petrified. --+| • You are transformed, along with any ***nonmagical*** objects you're wearing or carrying, into a solid inanimate substance *(usually stone)*. --+| • You are [sm width=25px]incapacitated[/sm] incapacitated [i](see the condition)[/i], --+| • You cannot move or speak, and you are unaware of your surroundings. --+| • Your weight increases by a factor of ten --+| • You cease to age. --+| • All attack rolls against you have [sm width=25px]advantage[/sm] advantage. --+| • You automatically fail all strength and dexterity saving throws. --+| • You have [sm width=25px]resistance[/sm] resistance to all damage. --+| • You have [sm width=25px]immunity[/sm] immunity to all poisons [sm width=25px]poisoned[/sm] and diseases [sm width=25px]disease[/sm], although a poison or disease already in your system is only suspended, not neutralized. --^MARK| --:Poisoned| --&amp;Marker|poisoned::4107444 --#rightsub|Condition --#Title|Poisoned --+[sm width=25px]poisoned[/sm]|You're poisoned. --+| • You have [sm width=25px]disadvantage[/sm] disadvantage on all attack rolls and ability checks. --^MARK| --:Prone| --&amp;Marker|prone::4107446 --#rightsub|Condition --#Title|Prone --+[sm width=25px]prone[/sm]|You're prone. --+[sm width=25px]exhaustion-lvl-4[/sm]| • Your only movement option is to crawl, every foot of movement while crawling costs 1 extra foot. So, crawling 1 foot in difficult terrain, costs 3 feet of movement. Unless, of course you stand up and thereby end the condition; doing so takes half your speed. --+[sm width=25px]disadvantage[/sm]| • You have disadvantage on all attack rolls. --+[sm width=25px]advantage[/sm]| • An attack roll against you has advantage **IF** the attacker is within 5 feet of you. --+[sm width=25px]disadvantage[/sm]| • An attack roll against you has disadvantage **IF** the attacker is more than 5 feet from you. --^MARK| --:Restrained| --&amp;Marker|restrained::4107451 --#rightsub|Condition --#Title|Restrained --+[sm width=25px]restrained[/sm]|You are restrained. --+[sm width=25px]stopped[/sm]| • Your speed becomes zero, and it cannot benefit from any bonuses. --+[sm width=25px]advantage[/sm]| • All attack rolls against you have advantage. --+[sm width=25px]disadvantage[/sm]| • Your attack rolls have Disadvantage. --+[sm width=25px]disadvantage[/sm]| • You have disadvantage on all dexterity saving throws. --^MARK| --:Stunned| --&amp;Marker|stunned::4107461 --#rightsub|Condition --#Title|Stunned --+[sm width=25px]stunned[/sm]|You are stunned. --+| • You are [sm width=25px]incapacitated[/sm] [i](see the condition)[/i]. --+[sm width=25px]stopped[/sm]| • You cannot move, and can speak only falteringly. --+[sm width=25px]advantage[/sm]| • All attack rolls against you have advantage --+| • You automatically fail all strength and dexterity saving throws. --^MARK| --:Unconscious| turned off vision --&amp;Marker|unconscious::4107463 --#rightsub|Condition --#Title|Unconscious --@token-mod|_off has_bright_light_vision has_night_vision emits_bright_light emits_low_light --+[sm width=25px]unconscious[/sm]|You are unconscious. --+[sm width=25px]incapacitated[/sm]| • You are incapacitated [i](see the condition)[/i]. --+[sm width=25px]stopped[/sm]| •You cannot move or speak, and you're unaware of your surroundings. --+[sm width=25px]prone[/sm]| • You drop whatever your holding and fall prone. --+[sm width=25px]advantage[/sm]| • All attack rolls against you have advantage --+| • Any attack that hits you is a critical hit [r]**IF** the attacker is within 5 feet of you[/r] --+| • You automatically fail all strength and dexterity saving throws. --^MARK| --:Advantage| --&amp;Marker|advantage::4106665 --#rightsub|Status --+[sm width=25px]advantage[/sm]| You have advantage on all ability throws, attack throws, and saving throws. --^MARK| --:Armor of Agathys| --&amp;Marker|armor-of-agathys::4106666 --#rightsub|Status --+[sm width=25px]armor-of-agathys[/sm]|A protective magical force surrounds you, manifesting as a spectral frost that covers you and your gear. --+| • You gain 5 temporary hit points for the duration [i](one hour).[/i] --+| • [b]IF[/b] a creature hits you with a melee attack while you have these temporary hit points, the creature takes 5 cold damage. --^MARK| --:Baned| switched on the global_save_active_flag and global_attack_active_flag. NOTE this requires that Bane be setup in the $0 position on the character's sheet --&amp;Marker|baned::4106667 --#rightsub|Status --@setattr|_sel _repeating_savemod_$0_global_save_active_flag|1 _silent --@setattr|_sel _repeating_tohitmod_$0_global_attack_active_flag|1 _silent --+[sm width=25px]baned[/sm]|You've are baned. --+| • You must roll [b]1d4[/b] and subtract the number rolled from all attack rolls or saving throws for the duration [i](for up to 1 minute)[/i] --^MARK| --:Bardic Inspiration| switched on the global_save_active_flag, global_attack_active_flag, and global_skill_active_flage. NOTE this requires that Bardic Inspiration be setup in the $1 position on the character's sheet for global saves and attacks, but $0 for global skill --&amp;Marker|bardic-inspiration::4271154 --#rightsub|Status --@setattr|_sel _repeating_savemod_$1_global_save_active_flag|1 _silent --@setattr|_sel _repeating_tohitmod_$1_global_attack_active_flag|1 _silent --@setattr|_sel _repeating_skillmod_$0_global_skill_active_flag|1 _silent --+|You've been inspired through stirring words and/or music of your bards performance. --+[sm width=25px]bardic-inspiration[/sm]|You've gained one bardic inspiration diee. --+| • Once within the next 10 minutes, you can roll the [sm width=25px]bardic-inspiration[/sm] and add the number rolled to one ability check, attack roll, or saving throw. --+| • You can wait until after you roll your **d20** before deciding to use your [sm width=25px]bardic-inspiration[/sm], but must decide before the DM says whether the roll succeeds or fails. --+| • Once you've used the [sm width=25px]bardic-inspiration[/sm] is rolled, it is gone. --+| • You can have only one [sm width=25px]bardic-inspiration[/sm] at a time. --^MARK| --:Bladesong| --&amp;Marker|bladesong::4106669 --#rightsub|Status --+|Provided that you aren’t wearing medium or Heavy Armor or using a Shield. --+| • You gain a bonus to your AC equal to your Intelligence modifier (minimum of +1). --+| • You are graced with supernatural speed, agility, and focus up to a minute. --+| • Your walking speed increases by 10 feet. --+[sm width=25px]advantage[/sm]| • You have advantage on acrobatics checks --+| • You gain a bonus to any constitution saving throw you make to maintain your [sm width=25px]concentrating[/sm] on a spell. The bonus equals your Intelligence modifier (minimum of +1). --+| • The Bladesong ends if you become [sm width=25px]incapacitated[/sm] incapacitate, you don medium or heavy [sm width=25px]mage-armor[/sm], a [sm width=25px]resistance[/sm], or if you use two hands to make an attack with a weapon. --^MARK| --:Blessed| switched on the global_save_active_flag and global_attack_active_flag. NOTE this requires that Bless be setup in the $2 position on the character's sheet --&amp;Marker|blessed::4106671 --#rightsub|Status --@setattr|_sel _repeating_savemod_$2_global_save_active_flag|1 _silent --@setattr|_sel _repeating_tohitmod_$2_global_attack_active_flag|1 _silent --+[sm width=25px]blessed[/sm]|You've been blessed by the gods! --+| • You may roll **1d4** and add the number rolled to your attack roll or saving throw for the the duration of the spell (up to 1 minute or 10 turns). --^MARK| --:Blink| puts a dark tint on token --&amp;Marker|blink::4106673 --#rightsub|Status --+[sm width=25px]blink[/sm]|You have blinked out your current plane of existence and appear in the Ethereal Plane --@token-mod|_set tint_color|#000000 --+| • At the start of your next turn, and when the spell ends if you are on the Ethereal Plane, you return to an unoccupied space of your choice that you can see within 10 feet of the space you vanished from --+| • While you are on the Ethereal Plane, you can see and hear the plane you originated from, which is cast in Shades of Gray, and you can't see anything more than 60 feet away. --+| • While you are on the Ethereal Plane, you can only affect and be affected by other creatures on the Ethereal Plane. --+| • While on the Ethereal Plane you cannot be perceived by or affected by creatures on another plane, unless they have the ability to do so. --^MARK| --:Blur| --&amp;Marker|blur::4106674 --#rightsub|Status --+[sm width=25px]blur[/sm]|Your body becomes blurred, shifting and wavering to all who can see you. --+| • For the duration (up to one minute or 10 turns), attack rolls against you are at [sm width=25px]disadvantage[/sm] unless an attacker is immune to this effect because it has blindsight or truesight. --^MARK| --:Booming Blade| --&amp;Marker|booming-blade::4106675 --#rightsub|Status --+|You brandish the weapon used in the spell's casting and make a melee Attack with it against one creature within 5 feet of you. --+|On a hit, the target suffers the weapon attack’s normal Effects and then becomes sheathed in booming energy until the start of your next turn. --+|If the target [b][i]willingly[/i][/b] moves 5 feet or more before then, it immediately takes 1d8 thunder damage, and the spell ends. --^MARK| --:Cold Resistance| --&amp;Marker|cold-resistance::4106677 --#rightsub|Status --+[sm width=25px]cold-resistance[/sm]|You gain Resistance to cold damage. --+| • You take half the damage from any cold damage, for 1 hour. --^MARK| --:Concentrating| --&amp;Marker|concentrating::4106678 --#rightsub|Status --+[sm width=25px]concentrating[/sm]|You are concentrating on a spell. --+| • You lose concentration on a spell if you cast another spell that requires concentration. --+| • Whenever you take damage while you are concentrating on a spell, you must make a constitution saving throw to maintain your concentration. The constitution saving throw DC = 10 OR half the damage you take, whichever number is higher. --+|[b]IF[/b] you take damage from multiple sources, such as an arrow and a dragon’s breath, [b]THEN[/b] you make a separate constitution saving throws for each source of damage. --+|You lose concentration on a spell if you become [sm width=25px]incapacitated[/sm] incapacitated OR if you [sm width=25px]exhaustion-lvl-6[/sm] die. --^MARK| --:Cursed| --&amp;Marker|cursed::4178242 --#rightsub|Status --+[sm width=25px]cursed[/sm]|You have been cursed. --+| • You are [sm width=25px]disadvantage[/sm] on all ability checks and saving throws made with the cursed ability score. --+| • While cursed, you are [sm width=25px]disadvantage[/sm] on attack rolls against the person who cursed you. --+| • While cursed, you must make a wisdom saving throw at the start of each of your turns. If you fail, you waste an action that turn doing nothing. --+| • A remove curse spell ends this effect. --^MARK| --:Dead| --&amp;Marker|dead --@token-mod|_off has_bright_light_vision has_night_vision emits_bright_light emits_low_light --@token-mod|_set bar1_current|0 --+|[c]You are [b]☠️DEAD!☠️[/b][/c] --+|[c]You know, as in[/c] --+|[c][b]☠️DEAD!☠️ ☠️DEAD!☠️[/b][/c] --+|[c]No really, you're[/c] --+|[c] [b]☠️DEAD!☠️[/b][/c] --+|[c]Unless of course some one revivifies[/c] [c]or resurrects you, because after all[/c] --+|[c][b]"Nobody dies in 5e"[/b][/c] --+|[r][i]~ Rocco ~[/r][/i] --^MARK| --:Detect Magic| puts a 30 foot blue aura on token --&amp;Marker|detect-magic --@token-mod|_set aura1_radius|30 --@token-mod|_set aura1_color|#00ffff --+[sm width=25px]detect-magic[/sm]|You're detecting magic --+| • For the duration, up to 10 minutes [i](100 turns)[/i] you can sense the presence of magic within 30 feet of you. --+| • [b]IF[/b] you sense magic in this way, you use your action to see a faint aura around any visible creature or object in the area that bears magic; and learn its school of magic, if any. --+| • However, while this spell can penetrate most barriers, it is blocked by: --+|[c]3 feet of wood or dirt.[/c] --+|[c]1 foot of stone[/c] --+|[c]1 inch of common metal[/c] --+|[c]or a thin sheet of lead[/c] --^MARK| --:Disadvantage| --&amp;Marker|disadvantage::4106680 --#rightsub|Status --+[sm width=25px]disadvantage[/sm]|You currently have disadvantage on all attack rolls, ability checks, and saving throws --^MARK| --:Divine Favor| switched on the global_damage_active_flag. NOTE this requires that Divine Favor be setup in the $0 position on the character's sheet --&amp;Marker|divine-favor::4106681 --#rightsub|Status --+[sm width=25px]divine-favor[/sm]|Your deity has empowered you with divine radiance --@setattr|_sel _repeating_damagemod_$0_global_damage_active_flag|1 _silent --+| • Your weapon attacks deal an extra 1d4 radiant damage on a hit, for the duration, up to 1 minute (to turns) --^MARK| --:Dodging| --&amp;Marker|dodging::4106682 --#rightsub|Status --+[sm width=25px]dodging[/sm]|Your dodging, focusing all your attention on avoiding attacks. --+[sm width=25px]disadvantage[/sm]| • Until the start of your next turn, all attack rolls against you have disadvantage [b]IF[/b] you can see the attacker. --+[sm width=25px]advantage[/sm]| • You make all dexterity saving throws with advantage. --+| • You lose this benefit if you become[sm width=25px]incapacitated[/sm] or [b]IF[/b] your movement/speed drops to 0. --^MARK| --:Dying| switch off vision and set hp to 0 --&amp;Marker|dying::4204637 --#rightsub|Status --@token-mod|_off has_bright_light_vision has_night_vision emits_bright_light emits_low_light --@token-mod|_set bar1_current|0 --+[sm width=25px]dying[/sm]|[b]You are Dying![/b] and currently are at [b]0[/b] hit points --+[sm width=25px]unconscious[/sm]|You are [b]unconscious[/b], cannot move or speak; and are currently unaware of your surroundings. . --+[smwidth=25px]incapacitated[/sm]|You are incapacitated [i](see condition)[/i] --+[sm width=25px]prone[/sm]|You are prone and have dropped whatever you were holding. --+| • You automatically fail all strength and dexterity saving throws. --+[sm width=25px]advantage[/sm]| • All attack rolls against you have advantage. --+| • [b]IF[/b] an attacker is within 5 feet of you and hits you it is a critical hit. --+| • [b]IF[/b] you take any damage while you are at [b]0[/b] hit points, you suffer a death saving throw failure. --+| • [b]IF[/b] the damage is from a critical hit, you suffer two failures instead. --+| • [b]IF[/b] the damage equals or exceeds your hit point maximum, you suffer an [b]Instant Death[/b] --+| • You must start making death saves on each of your turns until you make either: --+| • [b]3[/b] successful death saves, --+| • [b]3[/b] failing death saves, --+| • [b]OR[/b] are either healed or stabilized --^MARK| --:Emboldening Bond| --&amp;Marker|emboldening-bond::4106683 --#rightsub|Status --+[sm width=25px]emboldening-bond[/sm]|You are bonded! --+| • [b]IF[/b] you are within 30 feet of your bonded partner --+| • You can roll [b]1d4[/b] and add the number to any ability check, attack roll, or saving throws --+| • However, you can only do this once per turn. --^MARK| --:Favored Foe| --&amp;Marker|favored-foe::4107421 --#rightsub|Status --+[sm width=25px]favored-foe[/sm]|You call upon your mystical bond with Nature to mark a target, which you have hit, as your Favored Enemy for up to 1 minute [i](10 turns)[/i] --+|The first time on each of your turns that you hit the favored enemy and deal damage to it, including when you mark it, you can roll a 1d4 and add it to the damage dealt by your attack. --^MARK| --:Fire Resistance| --#rightsub|Status --&amp;Marker|fire-resistance::4107422 --+[sm width=25px]fire-resistance[/sm]|You have resistance to fire damage. --+| • You take half damage from any fire damage for 1 hour. --^MARK| --:Flying| --&amp;Marker|flying::4107423 --#rightsub|Status --+[sm width=25px]flying[/sm]|You are flying. --+|[b]IF[/b] You are --+| • knocked [sm width=25px]prone[/sm] --+| • have your movement speed [sm width=25px]stopped[/sm] --+| • or deprived of the ability to move you fall --+|[b]THEN[/b] you will take 1d6 bludgeoning damage for every 10 feet you fall. --+|[b]UNELSS[/b] you have the ability to hover or are being held aloft by magic, such as by the fly spell. --^MARK| --:Hasted| --&amp;Marker|hasted::4107428 --#rightsub|Status --+[sm width=25px]hasted[/sm]|You've been hasted; your movement speed is doubled. --+[sm width=25px]advantage[/sm]|You have advantage on all dexterity saving throws. --+[sm width=25px]resistance[/sm]|You gain a +2 bonus to AC --@token-mod| _set bar3_current|+2 _silent --+|You gain an additional action on each of your turns. That action can be used only to take --+| • an attack action [i](one weapon attack only) --+| • Dash --+| • Disengage --+| • Hide --+| • or use an object action. --+|When the effect ends, you cannot move or take actions until after its next turn, as a wave of lethargy sweeps over you. --^MARK| --:Hexblades Curse| --&amp;Marker|hexblades-curse::4107429 --#rightsub|Status --+|Until the curse ends (for up 1 minute) you gain the following benefits: --+|You gain a bonus to damage rolls against the cursed target. The bonus equals your proficiency bonus. --+|Any attack roll you make against the cursed target is a critical hit on a roll of 19 or 20 on the d20. --+|If the cursed target dies, you regain hit points equal to your warlock level + your charisma modifier (a minimum of 1 hit point) --^MARK| --:Hexed| --&amp;Marker|hexed::4107430 --#rightsub|Status --+|Until the spell ends (up to 1 hour), you deal an extra 1d6 necrotic damage to the target whenever you hit it with an Attack. --+|The target has disadvantage on ability checks made with your chosen ability. --+|If the target drops to 0 Hit Points before this spell ends, you can use a [b]Bonus Action[/b] on a subsequent turn of yours to curse a new creature. --^MARK| --:Hunters Mark| --&amp;Marker|hunters-mark::4107431 sub|Status --+|You choose a creature you can see within range and mystically mark it as your quarry. Until the spell ends, you deal an extra 1d6 damage to the target whenever you hit it with a weapon attack. --+|You have advantage on any Wisdom (Perception) or Wisdom (Survival) check you make to find it. --+|If the target drops to 0 hit points before this spell ends, you can use a bonus action on a subsequent turn of yours to mark a new creature. --+|**At Higher Levels.** When you cast this spell using a spell slot of 3rd or 4th level, you can maintain your concentration on the spell for up to 8 hours. When you use a spell slot of 5th level or higher, you can maintain your concentration on the spell for up to 24 hours. --^MARK| --:Hypnotized| --&amp;Marker|hypnotized::4107432 --#rightsub|Status --+|You are charmed for the duration (up to 1 minute). --+|While charmed by this spell, you are incapacitated and have a speed of 0 --+|The charm ends if you take any damage or if somone else uses an action to shake you out of your stupor. --^MARK| --:Inspiration| --&amp;Marker|inspiration::4107436 --#rightsub|Status --+|You can expend your inspiration whenever you make an Attack roll, saving throw, or ability check. --+| Spending your Inspiration gives you advantage on that roll. --^MARK| --:Lightning Resistance | --&amp;Marker|lightning-resistance::4107438 --#rightsub|Status --+|You gain Resistance to lightning damage for 1 hour. --^MARK| --:Mage Armor| --&amp;Marker|mage- armor::4107439 --#rightsub|Status --+|You touch a willing creature who isn’t wearing armor, and a protective magical force surrounds it until the spell ends. --+|The target’s base AC becomes 13 + its Dexterity modifier. --+|The spell ends if the target dons armor or if you dismiss the spell as an action. --^MARK| --:Mirror Image| --&amp;Marker|mirror-image::4107440 --#rightsub|Status --+|Three illusory duplicates of yourself appear in your space. Until the spell ends, the duplicates move with you and mimic your actions, shifting position so it’s impossible to track which image is real. You can use your action to dismiss the illusory duplicates. --+|Each time a creature targets you with an attack during the spell’s duration, roll a **d20** to determine whether the attack instead targets one of your duplicates. --+|If you have three duplicates, you must roll a 6 or higher to change the attack’s target to a duplicate. With two duplicates, you must roll an 8 or higher. With one duplicate, you must roll an 11 or higher. --+|A duplicate’s AC equals 10 + your Dexterity modifier. If an attack hits a duplicate, the duplicate is destroyed. A duplicate can be destroyed only by an attack that hits it. It ignores all other damage and effects. The spell ends when all three duplicates are destroyed. --+|A creature is unaffected by this spell if it can’t see, if it relies on senses other than sight, such as blindsight, or if it can perceive illusions as false, as with truesight. --^MARK| --:On Fire| --&amp;Marker|on-fire::4107441 --#rightsub|Status --+|You are on fire and will take 1d6 fire damage on each of your turns until you put it out. --+|You can end this damage by using your action to make a DC 10 Dexterity check to extinguish the flames. --^MARK| --:Poison Resistance| --&amp;Marker|poison-resistance::4107445 --#rightsub|Status --+|you gain Resistance to poison damage for 1 hour. --^MARK| --:Raging| --@{selected|token_id} --@setattr|_sel _repeating_damagemod_$0_global_damage_active_flag|1 _silent --&amp;Marker|raging::4107447 --#rightsub|Status --+|In battle, you fight with primal ferocity. On your turn, you can enter a rage as a bonus action. While raging, you gain the following benefits if you aren’t wearing heavy armor: --+| - You have advantage on Strength checks and Strength saving throws. --+| - When you make a melee weapon attack using Strength, you gain a bonus to the damage roll that increases as you gain levels as a barbarian, as shown in the Rage Damage column of the Barbarian table. --+| - You have resistance to bludgeoning, piercing, and slashing damage. --+|IF you are able to cast spells, you can’t cast them or concentrate on them while raging. --+|Your rage lasts for 1 minute. It ends early if you are knocked unconscious or if your turn ends and you haven’t attacked a hostile creature since your last turn or taken damage since then. You can also end your rage on your turn as a bonus action. --+|Once you have raged the number of times shown for your barbarian level in the Rages column of the Barbarian table, you must finish a long rest before you can rage again. --^MARK| --:Readied Action| --&amp;Marker|readied-action::4107448 --#rightsub|Status --+|First, you decide what perceivable circumstance will trigger your Reaction. --+|Then, you choose the action you will take in response to that trigger, or you choose to move up to your speed in response to it. --+|When the trigger occurs, you can either take your Reaction right after the trigger finishes or ignore the trigger. --+|**NOTE** When you ready a spell, you cast it as normal but hold its energy, which you release with your Reaction when the trigger occurs. --+|To be readied, a spell must have a Casting Time of 1 action, and holding onto the spell’s magic requires Concentration. --+|If your concen⁠tration is broken, the spell dissipates without taking Effect. --+|Finally, if your trigger never occurs you loose your readied spell slot. --^MARK| --:Reckless Attack| --&amp;Marker|reckless-attack::4201818 --#rightsub|Status --+|You throw aside all concern for Defense to Attack with fierce desperation. --+|Doing so gives you advantage on melee weapon a⁠ttack rolls using Strength during this turn, --+|but atta⁠ck rolls against you have advantage until your next turn. --^MARK| --:Resistance| --&amp;Marker|resistance::4107450 --#rightsub|Status --+|Once before the spell ends (for up to 1 minute),you can roll a d4 and add the number rolled to one saving throw of your choice. You can roll the die before or after making the saving throw. --^MARK| --:Sanctuary| --&amp;Marker|sanctuary::4107452 --#rightsub|Status --+|For 1 minute, any creature who targets you with an a⁠ttack or a harmful spell must first make a Wisdom saving throw. --+|On a failed save, the creature must choose a new target or lose the a⁠ttack or spell. --+|This spell doesn’t protect the warded creature from area Effects, such as the explosion of a Fireball. --+|IF you make an Attack, cast a spell that affects an enemy, or deal damage to another creature, this spell ends. --^MARK| --:Shell Defense| --&amp;Marker|shell-defense::4107455 --#rightsub|Status --+|You withdraw into your shell. Until you emerge, you gain a +4 bonus to your AC --+|You have advantage on Strenght and Constitution Saving Throws --+|While your in your shell, you are prone, and your speed is reduced to 0 --+|You have disadvantage on Dexterity Saving Throws, and may not take reactions. --+|The only action you can take is a [b]Bonus Action[/b] to emerge from your shell --^MARK| --:Shield of Faith| --&amp;Marker|shield-of-faith::4107456 --#rightsub|Status --+|A shimmering field appears and surrounds a creature of your choice within range, granting it a +2 bonus to AC for the Duration. --^MARK| --:Sleeping| --&amp;Marker|sleeping::4107457 --#rightsub|Status --@token-mod|_off has_bright_light_vision has_night_vision emits_bright_light emits_low_light --+|This spell sends creatures into a magical slumber. Roll 5d8; the total is how many hit points of creatures this spell can affect. Creatures within 20 feet of a point you choose within range are affected in ascending order of their current hit points (ignoring unconscious creatures). --+|Starting with the creature that has the lowest current hit points, each creature affected by this spell falls unconscious until the spell ends, the sleeper takes damage, or someone uses an action to shake or slap the sleeper awake. Subtract each creature’s hit points from the total before moving on to the creature with the next lowest hit points. A creature’s hit points must be equal to or less than the remaining total for that creature to be affected. --+|Undead and creatures immune to being charmed aren’t affected by this spell. --+|**At Higher Levels.** When you cast this spell using a spell slot of 2nd level or higher, roll an additional 2d8 for each slot level above 1st. --^MARK| --:Slowed| --&amp;Marker|slowed::4107458 --#rightsub|Status --+|Your speed is halved, you take a −2 penalty to AC and Dexterity saving throws, and you cannot use your reactions. --+|On your turn, you can use either an action or a bonus action, not both. Regardless of your abilities or magic items, you cannott make more than one melee or ranged attack during your turn. --+|If the creature attempts to cast a spell with a casting time of 1 action, roll a d20. On an 11 or higher, the spell doesn’t take effect until the creature’s next turn, and the creature must use its action on that turn to complete the spell. If it can’t, the spell is wasted. --+|A creature affected by this spell makes another Wisdom saving throw at the end of each of its turns. On a successful save, the effect ends for it. --^MARK| --:Spider Climb| --&amp;Marker|spider-climb::4198604 --#rightsub|Status --+|You gain the ability to move up, down, and across vertical surfaces and ceilings, while leaving your hands free, for the duration of the spell (up to 1 hour) --+|You also gain a climbing speed equal to your walking speed. --^MARK| --:Stabilized| --&amp;Marker|stabilized::4107459 --#rightsub|Status --&amp;Marker|-dead --@token-mod|_off has_bright_light_vision has_night_vision emits_bright_light emits_low_light --+|Stabilzed. You no longer need to make death saves. --+|You are still unconscious --+|IF you take any damage while stabilized, THEN you must start making death saves again. --+|IF you take any damage while you have 0 hit poi⁠nts, THEN you suffer a death saving throw failure. --+|IF the damage is from a critical hit, THEN you suffer two failures instead. --+|IF the damage equals or exceeds your hit point maximum, THEN you suffer Instant Death. --+|IF you are not healed, THEN you will regain 1 hit point after 1d4 hours --^MARK| --:Stealth| --&amp;Marker|stealth::4107460 --#rightsub|Status --+|While traveling at a slow pace, you can try to move stealthily, as long as you're not in the open, you can try to surprise or sneak by other creatures you encounter. --+|You have advantage on attack rolls against creatures, IF you are hidden, [b][i]both unseen and unheard[/i][/b]. --+|When you make an attack, you give away your location whether the attack hits or misses. --+|When you're hiding, there's always a chance a creature will notice you with their [b]passive Perception[/b]. --^MARK| --:Stopped| --&amp;Marker|stopped::4268825 --#rightsub|Status --^MARK| --:Cover Three Quarter | --&amp;Marker|cover-three-quarter::4107462 --#rightsub|Status --+|You have a +5 bonus to AC and Dexterity Saving Throws. --+|A target has three-quarters cover if about three-quarters of it is covered by an obstacle. The obstacle might be a portcullis, an arrow slit, or a thick tree trunk. --^MARK| --:Cover Half| --&amp;Marker|cover-half::4107426 --#rightsub|Status --+|You have a +2 bonus to AC and Dexterity Saving Throws. --+|A target has half cover if an obstacle blocks at least half of its body. The obstacle might be a low wall, a large piece of furniture, a narrow tree trunk, or a creature, whether that creature is an enemy or a friend. --^MARK| --:Warding Bond| --&amp;Marker|warding-bond::4107465 --#rightsub|Status --+|You have a +1 bonus to AC and Saving Throws, and resistance to all damage for the duration of this bond (1 hour) --+|Your bonded partner takes the same amount of damage as you do whenver you're damaged. --+|The Bond stops if you become separated by more than 60 feet from your bonded partner, or if you bonded partner drops to 0 hit points. --^MARK| --:MARK| --@token-mod|_set statusmarkers|[&amp;Marker] _ids [&amp;TokenId] _ignore-selected --/@token-mod|_set statusmarkers|[&amp;Marker] _ids [&amp;TokenId] --X| --&lt;| --:SECTION_HEADER|Title --&amp;hdrstyle_T|style="width:100%;padding:1px;border-spacing:0px;border-collapse:collapse;text-shadow: 0px 0px 0px black;border:1px solid black;" --&amp;hdrstyle_TR|style="border:0px solid black;" --&amp;hdrstyle_TD|style="width:100%;background-color:#edf7f0;font-size:110%;font-weight:bold;text-align:center" --+|[t [&amp;hdrstyle_T]][tr [&amp;hdrstyle_TR]][td [&amp;hdrstyle_TD]][c][%1%][/c][/td][/tr][/t] --&lt;| }