Skip to content

Instantly share code, notes, and snippets.

!script{{
--#title|Chaos Bolt
--#leftsub|Range: 120 ft
--=spellLevel|?{What Level|1|2|3|4|5|6|7|8|9}
--#rightsub|Cast at level [$spellLevel]
-->AttackBranch|
--X|
--:AttackBranch|
--=Atk|1d20 + @{Amalda Gamwich|spell_attack_bonus}
@nolivo
nolivo / Teleport Pad
Created January 27, 2023 16:19
Teleport Pad
This image is for use with the teleport script video shown here - https://www.youtube.com/watch?v=h-VZu4smv6o
//this code assigns ALL macros to ALL players
//to run it, enter !globalAssign in the Roll20 chat window
on("ready",function(){
on("chat:message",function(msg){
if(msg.type=="api" && msg.content.indexOf("!globalAssign")==0){
var macroList = findObjs({type:"macro"});
_.each(macroList,function(macro){
macro.set({visibleto:"all"});
SUMMONING WILDFIRE SPIRIT
&{template:dmg} {{rname=Summon Aggie}} {{range=10ft}} {{damage=1}} {{dmg1flag=1}} {{dmg1=[[2d6]]}} {{dmg1type=Fire}}{{save=1}} {{saveattr=Dexterity}} {{savedc=@{Ahlrush|spell_save_dc}}} {{charname=Ahlrush}}
FLAME SEED
&{template:atkdmg} {{mod=[[@{Ahlrush|spell_attack_bonus}]]}} {{rname=Flame Seed}} {{r1=[[1d20+@{Ahlrush|spell_attack_bonus}]]}} {{always=1}} {{r2=[[1d20+@{Ahlrush|spell_attack_bonus}]]}} {{attack=1}} {{range=60 ft}} {{damage=1}} {{dmg1flag=1}} {{dmg1=[[1d6+@{Ahlrush|pb}]]}} {{dmg1type=Fire}} {{crit1=[[1d6]]}} {{desc=A pulse of fire}}
FIERY TELEPORTATION
&{template:dmg} {{rname=Fiery Teleportation}} {{range=5ft}} {{damage=1}} {{dmg1flag=1}} {{dmg1=[[1d6+@{Ahlrush|pb}]]}} {{dmg1type=Fire}}{{save=1}} {{saveattr=Dexterity}} {{savedc=@{Ahlrush|spell_save_dc}}} {{charname=Ahlrush}}{{desc=The spirit and each willing creature of your choice within 5 feet of it teleport up to 15 feet to unoccupied spaces you can see.}}
ENHANCED BOND
The command buttons
/w @{character_name} [Unwillng](~InfernalConduitUnwilling) [Willing](~InfernalConduitWilling)
Infernal Conduit Unwilling
&{template:atkdmg} {{mod=[[@{pb}+@{charisma_mod}]]}} {{rname=Infernal Conduit}} {{r1=[[1d20+@{pb}+@{charisma_mod}]]}} {{always=1}} {{r2=[[1d20+@{pb}+@{charisma_mod}]]}}{{attack=1}} {{range=Touch}} {{damage=1}} {{dmg1flag=1}} {{dmg1=[[?{How Many Dice|1}d10]]}} {{dmg1type=Necrotic}} {{crit1=crit1}} {{crit1=[[?{How Many Dice|1}d10]]}} {{desc=@{character_name} heals this same amount of HP as she drains life from her foe!}}
Infernal Conduit Willing
&{template:dmg} {{rname=Infernal Conduit}} {{range=Touch}} {{damage=1}} {{dmg1flag=1}} {{dmg1=[[?{How Many Dice|1}d10]]}} {{dmg1type=Necrotic}} {{desc=@{character_name} sacrifices $[[0]] HP and @{target|character_name} recovers $[[0]] HP}}
Forked Tongue
&{template:default}{{name=Healing Potion}}{{?{action type|bonus,?{Potion|Regular, **Healing Potion Used:** [[2d4+2]]|Greater, **Greater Healing Potion Used:** [[4d4+4]]|Superior, **Superior Healing Potion Used:** [[8d4+8]]|Supreme, **Supreme Healing Potion Used:** [[10d4+20]]}|full,?{Potion|Regular, **Healing Potion Used:** [[10]]|Greater, **Greater Healing Potion Used:** [[20]]|Superior, **Superior Healing Potion Used:** [[40]]|Supreme, **Supreme Healing Potion Used:** [[60]]}}}}
@nolivo
nolivo / In Between Power Card
Created January 19, 2022 02:26
This powercard is used to emulate the In Between Game
!power {{
--emote|@{selected|token_name} tries their luck at the ‘In Between’ table
--name|In Between
--Rules|Center die must be between the other two.^^Tie=loss^^If outside dice match automatic loss.
--Wager|[[ [$bet] ?{How Much?|5} + 0d0]]gp
--!blurb|**Roll the Bones!!!**
--Rolls|[[ [$r1] 1d20 ]] • [[ [$r2] 1d20 ]] • [[ [$r3] 1d20 ]]
--?? $r1 == $r3 ?? Loser|Outer dice match. Automatic loss. skiptTo*5|EndofCard
--?? $r1 > $r3 ?? skipTo*1|bigsmall
--?? $r3 > $r1 ?? skipTo*2|smallbig
@nolivo
nolivo / SmartAOE_Shatter
Last active January 21, 2023 08:38
The shatter spell for D&D 5e, which requires the use of the SmartAOE script.
!smartaoe {{
--title|Shatter
--leftsub|Slot level ?{Cast at what level?|2|3|4|5|6|7|8|9}
--rightsub|DC @{selected|spell_save_dc} CON
--titlecardbackground|linear-gradient(blue, cyan)
--oddrowbackground|#00ccff
--evenrowbackground|#edfcfc
--oddrowfontcolor|#000000
--tablebgcolor|#edfcfc
on("ready",function(){
on("chat:message",function(msg){
if(msg.type=="api" && msg.content.indexOf("!ouija")==0){
let args = msg.content.split("--");
let commandText = args[1].trim().toLowerCase();
let params = commandText.split("|");
let command = params[0];
let commandValue = params[1];
let ouijaPage = findObjs({type:"page",name:"ouija"})[0];
on("ready",function(){
on("chat:message",function(msg){
if(msg.type=="api" && msg.content.indexOf("!gatherRumors")==0){
var args = msg.content.split("--");
var PC = args[1].trim();
var NPC = args[2].trim();
var checkType = args[3].trim().toLowerCase();
var npcToken = getObj("graphic",NPC);
var pcSheet = getObj("character",PC);