Roll20: Player Controlled Condition Macros

Sometimes, your players will cast spells or use an ability that targets one or more creatures. As a GM, you’re probably already juggling many balls as you handle the encounter. Remembering which of the scores of kobolds you’ve sent after the PC’s is under the effect of a Hex or Bane, which one has a Hunter’s Mark on it, or which of the PC’s is Blessed, can sometimes get confusing. And as discussed previously, using the UI to add status effects can sometimes be a little slow when you’re trying to keep the encounter moving along. Using Roll20 macros with the Token Mod API script, can take some of those balls from you and place them in your players hands.

This is similar to the Conditions Macro I’ve shared before, and requires a Roll20 Pro Account, since it uses an API script.

Once you’re added the TokenMod API script to your game, you’ll need to give your players the option to target tokens using the script. Near the bottom of the script’s page, just below the link to Aaron’s Patreon Page (Aaron Meadows created the TokenMod and other API scripts, so if you have a couple of bucks and use his scripts, please help support him!), you’ll find User Customization Options – Players can use –ids. Check this box!

Image 1: TokenMod API

Once you’ve got that done, it’s time to start creating your Macros. So far, I’ve set up two types of Macros for the Player Controlled Conditions (or Tags, as I call them in my macros); Group conditions for spells like Bane and Bless, and single conditions for spells like Hex and Hunter’s Mark.

In Roll20, we’ll click on the gear in the menu on the right, and click the +Add button to create a new macro.

Image 2: Add Macro

Let’s start with the Bless spell. I’ll be creating three Macros for this. The first one will let the player target three creatures to be Blessed by the spell as cast at first level.

Now this is one of those macros that will break if I open it again. So I have a copy of it in my Notes on my PC so I can quickly make changes, and copy it back in if I need to.

Image 3: Bless Macro



Name: I’ve named the Macro “PC-Bless”.


  1. I’ve started it with an emote, which will show up in the chat as “So-and-so has blessed you…”
  2. It then outputs the spell description, using a Roll20 template (5e’s npcaction template in this case).  I’ve also included the part about casting at Higher levels.
  3. And I’ve told token mod to prompt the player to select three tokens on the screen to bless, and to add the blue, and the angel-outfit status markers.
  4. Finally, I’ve added a button to allow them to select additional creatures if they cast it at a higher level.

I select show as token action, so it appears in the player’s token menu, and made it visible to the player who has access to that spell.

And then before I click Save Changes, I COPY the text inside the Actions box and save it to a text file on my computer, so I have it in case I need to make changes.




Remember, opening the macro after it’s been saved will turn this:

[Additional Creature(s)?](!

Into this

[Additional Creature(s)?](!


When the player selects their token, the token menu in the upper left hand side of the screen now includes the macro PC-Bless.

Image 4: PC Bless

When they click the Macro, it will prompt them to select three tokens on the screen.

Image 5: Select Tokens

Upon selecting the third token, the script adds the status markers, and outputs the Bless effects into chat, along with a button to quickly add additional targets if cast at a higher level.

Image 6: Blessed Orcs

Clicking the Additional Creatures button allows the player to select additional tokens to bless, just as in image 5. It does not send anything to the chat, so the button is right there for multiple uses, if cast at higher levels.

Image 7: Additional Creatures Macro

The macro for the additional creatures, I’ve named “y-Tagged-Add-Bless” (as mentioned in an earlier post, I add the letter “y”to the front of Macros I want to keep at or near the bottom of my macro list).

In Actions, I’m telling tokenmod to allow the player to select an additional token, and add the status markers to it. I’m not showing it as a token action, but it should be made visible to the player who will be using it.

You can name the macros whatever you like, but remember that in the original macro (Image 3), the macro is creating a button to call for the second macro: [Additional Creature(s)?](!
#y-Tagged-Add-Bless). If you change the name of the second macro, make sure the button in the first is calling for it by the right name.

For bless, I’m using a blue marker, and the angel-outfit. You can use what you’d like. The available status markers in Roll20 are shown below.





I’ve also created these macros for bane, just by replacing the word Bless with Bane, changing out the spell description, and changing the status markers to red and death-zone.

For spells like Hunter’s Mark, and Hex, the macro is a little simpler. The initial macro consists of two buttons that will appear in chat.

Image 8: Hex

When the player clicks the token action macro button in the upper left hand corner of the window, it outputs two buttons to chat. For Hex, it’s Hex and Move Hex. 

Image 9: Hex Macro


I’ve named it PC-Hex, and I show it as a Token Action, and make it visible to the players who have the Hex Spell in their spellbooks.















Image 10: Hex


The first button calls for the Hex macro. I’ve named it y-Tagged-Hex.

In the Actions, I’ve added an emote that the player has hexed someone, and then included the spell description in the npcaction template.

Then I’ve told tokenmod to allow the player to select a token, and set the purple and the interdiction markers on the targeted token, as shown in Image 5 above.

In the future, I plan on creating token markers for hex that will show the ability that is being hexed, but for now this will do.

The Hex spell indicates that if the target drops to 0 HP before the spell ends, the player can switch the Hex to a new target. Using the second button Move Hex, will allow them to move it by selecting the first (now dead) target, and then selecting a second target.









Image 11: Hex Moved

Here’s the macro for Move Hex:

Image 12: Move Hex Macro


Here, I’ve named it y-Move-Hex, and I’ve told tokenmod to allow the player to select one target to remove the status markers from by placing a “-” in front of the status name. It then allows the player to select a new target, and adds the markers to that token.

These macros can be adapted to a great many of the spells and features in Dungeons and Dragons. Including things like Guidance and Bardic Inspiration, to help you remember and keep track of who has it, and you can use the Remove Conditions macro shown in the previous post to quickly remove it (and any) conditions or tags when the effect ends, or if (in some cases) the target makes their saving throw and is not affected by the spell or effect.

Using macros like this not only lets the player get the feeling that they are actively using their spell on the targets, but also takes some of the bookkeeping off the GM’s plate, and should allow playing out encounters to run a little more smoothly.


The text for the discussed macros can be found below.





Name: PC-Bless


/em has blessed you…

&{template:npcaction} {{name=Tagged: Blessed}} {{description=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. }}

!token-mod –ids @{target|1|token_id} @{target|2|token_id} @{target|3|token_id} –set statusmarkers|blue|angel-outfit

[Additional Creature(s)? ](!

Additional Blessings

Name: y-Tagged-Add-Bless


!token-mod –ids @{target|1|token_id} –set statusmarkers|blue|angel-outfit


Name: PC-Bane


/em has cast Bane…

&{template:npcaction} {{name=Tagged: Bane}} {{description= 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 subtract 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. }}

!token-mod –ids @{target|1|token_id} @{target|2|token_id} @{target|3|token_id} –set statusmarkers|red|death-zone

[Additional Creature(s)? ](!

Additional Banes

Name: y-Tagged-Add-Bane


!token-mod –ids @{target|1|token_id} –set statusmarkers|red|death-zone

Hex Buttons

Name: PC-Hex


#y-Tagged-Hex) [Move Hex](!


Name: y-Tagged-Hex


/em has hexed you…
&{template:npcaction} {{name=Tagged: Hexed}} {{description= You place a curse on a creature that you can see within range. Until the spell ends, you deal an extra 1d6 necrotic 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.
!token-mod –ids @{target|1|token_id} –set statusmarkers|purple|interdiction

Move Hex

Name: y-Move-Hex


!token-mod –ids @{target|1|token_id} –set statusmarkers|-purple|-interdiction

!token-mod –ids @{target|2|token_id} –set statusmarkers|purple|interdiction

Hunter’s Mark Buttons

Name: PC-Hunters-Mark


[Hunter’s Mark](!#
#y-Tagged-Hunters-Mark) [Move Hunter’s Mark](!


Name: y-Tagged-Hunters-Mark


/em has marked you as their quarry…

&{template:npcaction} {{name=Condition: Hunter’s Mark}} {{description= 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, and 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.}}

!token-mod –ids @{target|1|token_id} –set statusmarkers|red|black-flag

Move Hunter’s Mark

Name: y-Move-Hunters-Mark


!token-mod –ids @{target|1|token_id} –set statusmarkers|-red|-black-flag

!token-mod –ids @{target|2|token_id} –set statusmarkers|red|black-flag





Like it? Share it! Facebooktwittergoogle_plusredditpinterestlinkedinmail

Dead Macro

My Dead Macro

In my last post about Roll20 Conditions, I set up some nice buttons to instantly add status markers to a token, and put the effects of a condition in the chat. But what about death?

I’ve set up a macro for when a creature is dead. I have the button set up in my macro bar, and when someone or something dies, it does the killing for me. It uses the TokenMod API to add the status markers, and it includes a little random death message by selecting it from a Rollable Table. I’ve added the Macro to my Quick Bar, rather than to the Conditions Macro, so that Death comes with one click, rather than two.

Because I think I’m funny, I’ve also set up a rollable table with different ways of telling the players that something has died, and I’ve added some bubbling blood effects so that blood spurts out of the selected token.

Image 1: A miner. A dead miner.

The Dead macro consists of four lines. The first uses the rollable table called is-dead to select a message. The next two set the skull and dead status markers on the token, and the fourth uses the Roll20 fx to create bubbling blood on the token. Again, I think I’m funny. The Dead macro is below.

@{selected|token_name} [[1t[is-dead]]]
!token-mod –set statusmarkers|!skull
!token-mod –set statusmarkers|!dead
/fx bubbling-blood @{selected|token_id}

A much simpler macro could be used without relying on a rollable table for cute messages by simply making the first line in the macro read:

@{selected|token_name} is dead.

It can also be used without the TokenMod lines so that you have just a chat message pop up stating that something is dead, but the main purpose of the macro is to quickly add the status markers so that you and the players know which tokens are no longer living. You can also remove the line that adds the bubbling blood effect, if you wish.

In the image below, you can see my Dead Macro, and my is-dead Rollable Table. I’ve added table items with messages of death, and fans of Monty Python’s Flying Circus may recognize them from the Dead Parrot Sketch.

Image 2: Dead macro with Rollable Table

To set up a Rollable Table, you can go to the Roll20 Collection tab where you set up your macros. Towards the bottom, you’ll see an area for Rollable Tables. Click +Add, and the table will come up. I’ve named my table “is-dead”. When you click +Add Item, a window pops up, where you can add whatever message of ill-will you wish. Save each one, and add as many as you’d like.

In the Dead Macro, the command @{selected|token_name} produces the token’s name, and the command [[1t[<RollableTableName>]]] will tell Roll20 to roll once on the table you choose, and will produce a random message from that table.



Like it? Share it! Facebooktwittergoogle_plusredditpinterestlinkedinmail

Roll20 Condition Macros

Condition Macros

In my Dungeons and Dragons games on Roll20, I’m using a macro which allows me to click on a token, and set a Condition by clicking just two buttons, which saves the time of looking up what effects the Condition has on a particular character, NPC, or creature.

The macro can be used with any subscription level, though the example below uses an API script.  The API scripts are available if you have a Pro subscription, but you can still easily use this macro without it. This macro uses the API script “TokenMod”, which will automatically add the a status marker to the token, indicating the Condition.  But this macro is still handy, as it will still put the condition in the chat for all to see. If you don’t have access to the API scripts, you’ll just need to remove the line that refers to TokenMod in the individual macros for each condition.

Image 1  is what you’ll see on the Roll20 GM screen when the macros are set up. The Conditions macro is included in my macro Quick Bar at the bottom of the screen. When I click it, it brings the list of conditions up in the chat window. I’ve set it so that only I can see the list by starting the macro with “/w gm”. This tells the chat to only show me (the GM) the macro output in chat.

Image 1: GM Screen with Quick Bar at the bottom, and the Conditions macro in the chat.

Macro Setup

Image 2: Roll20 Collection List

In Roll20, in the menu on the upper right hand of the screen, you select the Collection button, which will bring up the list of Macros, Decks, and Rollable Tables you’ve set up for your games. When you click the +Add button, it brings up an empty macro. You’ll be making a number of macros for this, and while it can be a little time consuming to set up, believe me when I say it’s going to save you plenty of time in your games.

The Conditions Macro

The first macro to set up will be the “Conditions” macro. This is the macro that outputs the individual macro buttons in the chat for you to select from.

In order for it to work, it needs to be one continuous paragraph with no line breaks. In the name field, I’ve named it “Conditions”. What this macro does is call up the list of buttons in the chat, and connects each button to another macro.

Each button in the macro is formated like this: ” [<Button Name>](!&#13;#<Macro>) “.  [<Button Name>] makes the button in the chat, and pressing it tells the (!&#13;#<Macro>) command to activate that macro.

Image 3: The Conditions Macro

And in the Macro menu in the Roll20 settings, I’ve checked “In Bar”, so that I have it ready to go in the Quick Bar at the bottom of my Roll20 screen, as shown in the image 1 above.

Image 4: Macro checked to be added to Quick Bar

If you want to copy and paste the conditions macro, here it is:

/w gm  Conditions: [Blinded](!&#13;#y-Condition-Blinded) [Charmed](!&#13;#y-Condition-Charmed) [Deafened](!&#13;#y-Condition-Deafened) [Dying](!&#13;#y-Condition-Dying)  [Frightened](!&#13;#y-Condition-Frightened) [Grappled](!&#13;#y-Condition-Grappled)[Incapacitated](!&#13;#y-Condition-Incapacitated) [Invisible](!&#13;#y-Condition-Invisible) [Paralyzed](!&#13;#y-Condition-Paralyzed) [Petrified](!&#13;#y-Condition-Petrified) [Poisoned](!&#13;#y-Condition-Poisoned) [Restrained](!&#13;#y-Condition-Restrained)  [Stunned](!&#13;#y-Condition-Stunned) [Unconscious](!&#13;#y-Condition-Unconscious) [Remove Conditions](!&#13;#Remove-Conditions)

Once you’ve typed or copied this into the macro, it’s important that you never, ever, open it again. When you open the macro, it reformats and inserts line breaks, which breaks the macro. You can just fix it by backspacing it so that it’s one continuous paragraph again, or just copy and paste it from the original source again.

The Remove Conditions Macro automatically removes the Status Marker icon(s) from the selected token. If you’re not using the TokenMod API, you don’t need to leave it in the macro.

The Condition Macros

I’ve named each macro “y-Condition-<Condition>”, as shown above in the Conditions macro. I’ve added that “y” so that the condition macros are lower on my list of macros in the Collection list. Once I’ve created them, I shouldn’t need to see them or open them again. I’ve left Remove Conditions without the “y”, because I like to have it higher in my collection. It’s a personal decision, and you can set it up another way if you wish.

The description includes the text of what the condition does to the affected character or NPC. Using the The token-mod API automatically gives the token the status marker icon I’ve chosen for the condition, which allows anyone watching the screen to see which tokens are affected. In the example below, I’ve selected a miner, and poisoned him by clicking the Poisoned button in the chat window. Remember to select the token you wish to give a condition to.

You can see the message in the chat window that tells everyone who has been affected by the condition, and below that, the effects of the condition.

Image 5: Output from using the Poisoned Condition on a Miner. Why did you poison that poor miner?

The code for Condition-Poisoned is shown below. It consists of three lines. The first is the message that the token has been affected. The second outputs the condition itself. The third uses token-mod to set the status marker for the condition. The full list of Condition Macros will be listed below at the end of this post, for easy cut and paste.

Note: if you are not using the token-mod API, you should delete the line in the macro that refers to it. 

@{selected|token_name} has been poisoned! {selected|token_id}&{template:npcaction} {{name=Condition: Poisoned!}} {{description= You are poisoned! You have disadvantage on ability checks and attack rolls!}} @{selected|charname_output}

!token-mod –set statusmarkers|!drink-me

Here’s how it looks when you create the macro in Roll20:

Image 6: The Condition Poisoned macro

The macro above, with the TokenMod API, uses the “drink-me” status marker for poison. That’s my choice, and you can change that to any available status marker. Here’s a list by Bryan W. of all of the available status markers in Roll20 (more can be purchased or added through API scripts, though I haven’t done that at this time). Here’s the list without clicking:

Image 7: Status Guide by Byran W

Remove Conditions Macro

If you’re using the TokenMod API, when a condition ends, you can click the Remove-Conditions button (either in in the chat, or by adding it to the Quick Bar), and it will automatically remove the status marker(s) using token-mod. Even though it’s in my Conditions Macro, I like to leave Remove Conditions in my Quick Bar, because it will remove all the status markers on the selected token, regardless if they were added by the Conditions Macro, or manually added. I use status markers for plenty of things, and the ability to quickly remove them is nice.

The Remove-Conditions macro is:

!token-mod –set statusmarkers|=blue|-blue

Conditions List for Copy/Paste into your Macros

Remember to edit out the line starting with !token-mod if you’re not using the TokenMod API


Name: y-Condition-Blinded


@{selected|token_name} is blinded!
{selected|token_id}&{template:npcaction} {{name=Condition: Blinded!}} {{description= You are blinded! You cannot see and automatically fail any ability check that requires sight. You have disadvantage on attack rolls. Attack rolls against you have advantage!}}
!token-mod –set statusmarkers|!bleeding-eye


Name: y-Condition-Blinded


@{selected|token_name} has been charmed!
{selected|token_id}&{template:npcaction} {{name=Condition: Charmed!}} {{description= Charmer has advantage on any ability check to interact socially with you. You cannot attack your charmer or traget with harmful abilities or magic.}} @{selected|charname_output}
!token-mod –set statusmarkers|!chained-heart


Name: y-Condition-Deafened


@{selected|token_name} is deafened!
{selected|token_id}&{template:npcaction} {{name=Condition: Deafened!}} {{description= You cannot hear and automatically fail any ability check that requires hearing!}} @{selected|charname_output}
!token-mod –set statusmarkers|!screaming



Name: y-Condition-Dying


@{selected|token_name} is dying!
{selected|token_id}&{template:npcaction} {{name=Condition: Dying!}} {{description= You are dying! You suffer from the unconscious condition, and need to start making Death saving throws!

On your next turns, you must roll a 1d20.

20 = Regain 1 hp
10-19 = Success
2-9 = Failure
1 = Two failures.

Taking damage gives you a failure. A Critical Hit gives you two failures.
Three successes means you are stablized.
Three failures means you are dead!!

The gods be with you… }} @{selected|charname_output}
!token-mod –set statusmarkers|!death-zone



Name: y-Condition-Frightened


@{selected|token_name} is frightened!
{selected|token_id}&{template:npcaction} {{name=Condition: Frightened!!}} {{description= While the source of your fear is in line of sight, you have disadvantage on attack and ability rolls. You cannot willingly move closer to the source of your fear.}} @{selected|charname_output}
!token-mod –set statusmarkers|!tread


Name: y-Condition-Grappled


@{selected|token_name} has been grappled!
{selected|token_id}&{template:npcaction} {{name=Condition: Grappled!!}} {{description= Your speed is reduced to sero and you cannot benefit from any bonus to speed. The condition ends if the grappler is incapacitated or if you are removed from reach of the grappler or grappling effect.}} @{selected|charname_output}
!token-mod –set statusmarkers|!padlock


Name: y-Condition-Incapacitated


@{selected|token_name} is incapacitated!
{selected|token_id}&{template:npcaction} {{name=Condition: Incapacitated!}} {{description= You are incapacitated!
You cannot take actions or reactions!}} @{selected|charname_output}
!token-mod –set statusmarkers|!back-pain


Name: y-Condition-Invisible


@{selected|token_name} is invisible!
{selected|token_id}&{template:npcaction} {{name=Condition: Invisible!}} {{description= You are invisible! You cannot be seen without the aid of magic or special senses. Your location can be detected by noise or tracks left behind. You have advantage on attack rolls. Attack rolls against you have disadvantage. }} @{selected|charname_output}
!token-mod –set statusmarkers|!half-haze


Name: y-Condition-Paralyzed


@{selected|token_name} is paralyzed!

{selected|token_id}&{template:npcaction} {{name=Condition: Paralyzed!}} {{description= You are paralyzed! You automatically fail strength and dexterity saving throws. Attack rolls have advantage against you. Any attack within 5 ft. is a Critical Hit! You cannot move or speak.}} @{selected|charname_output}
!token-mod –set statusmarkers|!archery-target


Name: y-Condition-Petrified


@{selected|token_name} has been petrified!
{selected|token_id}&{template:npcaction} {{name=Condition: Petrified!}} {{description= You are petrified! You automatically fail strength and dexterity saving throws. You have resistance to all damage! Attack rolls against you have advantage. You cannot move or speak, and are unaware of your surroundings.}} @{selected|charname_output}
!token-mod –set statusmarkers|!aura


Name: y-Condition-Restrained


@{selected|token_name} is restrained!
{selected|token_id}&{template:npcaction} {{name=Condition: Restrained!}} {{description= You are restrained! You have disadvantage on your dexterity saving throws. You have disadvantage on attack rolls. Attack rolls against you have advanatge! Your speed is zero and you cannot benefit from any bonus.}} @{selected|charname_output}
!token-mod –set statusmarkers|!fishing-net


Name: y-Condition-Stunned


@{selected|token_name} is stunned!
{selected|token_id}&{template:npcaction} {{name=Condition: Stunned!}} {{description= You are Stunned! You automatically fail Strength and Dexterity saving throws. You cannot make take actions or reactions. You can speak only falteringly, and cannot move. Attack rolls against you have advantage!}} @{selected|charname_output}
!token-mod –set statusmarkers|!broken-shield


Name: y-Condition-Unconscious


@{selected|token_name} is unconscious!
{selected|token_id}&{template:npcaction} {{name=Condition: Unconscious!}} {{description= You are unconscious! You drop everything and go prone. You automatically fail strength and dexterity saving throws. Attack rolls have advantage against you. If your attacker is within 5 ft., they score a Critical Hit! You cannot move or speak.}} @{selected|charname_output}
!token-mod –set statusmarkers|!sleepy




Like it? Share it! Facebooktwittergoogle_plusredditpinterestlinkedinmail