Character Vault
Any Concept / Any System
Your System Come To Life
Roll20 for Android
Streamlined for your Tablet
Roll20 for iPad
Streamlined for your Tablet

Personal tools

Dungeons and Dragons 3.5

From Roll20 Wiki

Jump to: navigation, search
This page is about both playing an DMing (DM and GM are the same in D&D) Version 3.5 of D&D on Roll20.

Character Sheets

The 3/3.5E character sheets:

  • D&D 3.5E | Author: Diana P.(Original), Hoyer(current maintainer)
  • D&D 3.5E Adventure Pack - sheet is for use with the Dungeons and Dragons Boxed Set Adventure game
  • D&D 3.5E The Black Company - by Ziechael use with The Black Company campaign setting.
    • Based on the DnD 3.5e sheet by Diana
The D&D 3.5E-character sheet by Diana P.


D&D 3.5E Character Sheet

The D&D 3.5E char sheet is among the oldest Roll20 sheets, originally created by Diana P. in 2014. Over the years it has been updated with features & bugfixes.

  • You can use the sheet in other language(by changing your Roll20 language)
  • The macros & tips on this page assumes for most parts the use of this sheet
  • sheet source code

General Info

Sheet updates

D&D3.5E Roll Templates

The D&D3.5 Character Sheet Template has several built-in Roll Templates.

All of the roll templates can take special flags to vary the color and appearance of the dividing line. These flags are:

Appearance Flag Color Divider Shape
abilityflag brown lettering rectangle which is pinched in at the center
basicflag grey background with white lettering no divider
initflag golden-yellow lettering narrow (1px) solid line
npcflag dark red lettering long isosceles triangle pointing to the left
pcflag dark red lettering long isosceles triangle pointing to the right
saveflag purple lettering wider (3px) solid line
skillflag green lettering isosceles triangles pointed towards the center from either side
skillcatflag teal lettering wide isosceles triangle pointing up
spellflag blue lettering a 4-pointed star-shape

Attack Template

The DnD35Attack roll template can be accessed with &{template:DnD35Attack} . This template allows up to 10 attacks to be displayed in the same template and uses the fields:

  • Name
  • subtags
  • subtags2
  • attack1 critconfirm1 fumbleroll damage1 critdmg1
  • attack2 critconfirm2 fumbleroll damage2 critdmg2
  • attack3 critconfirm3 fumbleroll damage3 critdmg3
  • ....
  • attack10 critconfirm10 fumbleroll damage10 critdmg10
  • notes

If the roll for attack# results in a critical success (and you can set a custom value such as: [[ d20cs>18 ]] ), then critconfirm# and critdmg# will display. If the roll for attack# results in a critical failure (you can set a custom value such as: [[ d20cf<2 ]] ), then fumbleroll will display.

To use this Roll Template to show multiple attacks, the fullattackflag must be set to [[ d1 ]] . You can use either {{fullattackflag= [[ d1 ]] }} or set it as a query {{fullattackflag= [[ ?{Full Attack? (hit space for full attack else hit return) |0}d1 ]] }} or {{fullattackflag= [[?{Full Attack?|No, 0d1|Yes, d1} ]] }} as in the example macro. Since the code for the fullattackflag is based on the same code that looks for critical successes, the flag only functions if it contains a roll and will only display the higher number attacks if the roll is a critical success condition. [[ d1 ]] is the simplest option, but any critical success would work. If the fullattackflag is not a critical success roll, then only attack1, critconfirm1, damage1, critdmg1, and fumbleroll will display in the attack section.

When using this template to create a large number of attacks, the total number of rolls queries in one macro must be below 100 (the limit allowed to be sent at one time) or portions of the macro may not function as expected. Source: post by Silvyre(Forum)

Initiative Template

The DnD35Initiative roll template can be accessed with &{template:DnD35Initiative} . This is a simple template consisting only of 2 row and uses the fields:

  • Name check checkroll
  • notes

This template does not have a divider between the header and contents since it does not have a header. The appearance flags set the colors for the text the same as the other templates, however.

StdRoll Template

The DnD35StdRoll roll template can be accessed with &{template:DnD35StdRoll} . This template has several sections. The first section below the header is a repeating section which will display a given key and value in columns. Words which cannot be used for the key (since they are used in other parts of the template) are: notes, subtags, subtags2, compcheck, failcheck, succeedcheck, check, checkroll, critroll, fumbleroll, initflag, skillcatflag, skillflag, saveflag, abilityflag, spellflag, pcflag, npcflag, basicflag, name.

The second section is a section coded for a comparison check. The compcheck line expects a comparison type roll [[ d20>15 ]] and will display the succeedcheck if the result is a 1 or the failcheck if the result is a 0.

The third section takes a check and checkroll and will display the critroll if the checkroll was a critical success and the fumbleroll if the checkroll was a critical failure.

As in all the templates, the last section is a generic note field.

The DnD35StdRoll template uses the fields:

  • Name
  • subtags
  • subtags2
  • key value
  • key value
  • key value
  • ....
  • compcheck succeedcheck failcheck
  • check checkroll
  • critroll fumbleroll
  • notes

Any or all of the sections can be used; if you don't put in the key word, the section will not be displayed. Note that you cannot use the check keyword by itself; you must include the checkroll as well for that section to display.

Example macros for each of these templates can be found at the bottom of the character sheet. Click on the arrow next to Roll Template to display the character sheet's roll template information.


Multiple roll templates can be combined in one macro if desired:

&{template:DnD35StdRoll} {{spellflag=true}} {{name=@{character_name} }} {{subtags=gestures and [flames]( ) as bright as a torch appear in her hand!}} {{check=The flames last for @{casterlevel} minutes and can be hurled 120 feet as a thrown weapon  }} {{checkroll= (ranged touch attack; no range penalty) or used to strike with a melee touch attack. }} {{notes= No sooner are the flames hurled than a new set appears in her hand.  Each attack reduces the remaining duration by 1 minute.  Does not function underwater. }}
&{template:DnD35Attack} {{pcflag=true}} {{fullattackflag=[[0d1]]}} {{fumbleroll=**Fumble:[[d20]]**}} {{subtags=She throws the flames. }} {{attack1=She hits touch AC [[d20 +[[?{Melee?|Yes,@{meleeattackbonus}|No,@{rangedattackbonus} }]][bab] ]]}} {{critconfirm1=Crit?:[[d20 +[[@{rangedattackbonus} +?{Melee?|No, 0 |Yes, -2}]][bab] ]]}} {{damage1=for [[1d6 +[[{@{casterlevel},5}dh1]] ]] fire damage.}} {{critdmg1=+[[1d6+[[{@{casterlevel},5}dh1]] ]] adt'l fire damage.}} 

Attribute Reference

This is a quick reference of the names of Attributes on PC and NPC Sheets which are commonly used by DMs, and would be included in your Macros.

Player Character

D&D3.5E Name Attribute Name
HP hitpoints
AC armorclass
Touch AC touchac
Flat Footed flatac
Initiative init
Fortitude Save Bonus fortitude
Fortitude Save Macro fortitudemacro
Reflex Save Bonus reflex
Reflex Save Macro reflexmacro
Will Save Bonus will
Will Save Macro willmacro
Base Attack Bonus bab
Grapple Bonus grapple
Melee Attack Bonus meleeattackbonus
Ranged Attack Bonus rangedattackbonus
Size Modifier for Attack and AC size
Size Modifier for Special Attacks specialattacksizemod
Skill X (Replace X with the name) Xmacro
Hit Dice hitdie

Creators Note: Please add more or expand the Skills.

Note that most if not all attribute names can be found by mousing over the appropriate field on the character sheet.

NPC or Monsters

Note: There are a lot less automatic Macros in the abilities of NPC Sheets. Saves are just the modifiers by default.

D&D3.5E Name Attribute Name
HP npchitpoints
Hit Dice npchitdie
Fortitude Save npcfortsave
Reflex Save npcrefsave
Will Save npcwillsave
Grapple npcgrapple

Macros and Attributes

Macros and attributes are best used when the time reduction of using the macro is greater than the time to make the macro, or set up and apply the attribute. For example, setting up a macro to roll 1d20 /r d20 is not an efficient use of a macro, but rolling 3 attacks and adding the modifier after it might be worth attributes for the modifiers and a macro for the entire process. Remember that abilities are essentially macros but are visible to and usable by everyone that can edit the character.

Also, when you use attributes, remember that the computer just replaces the call command with the "value" it represents. This value doesn't have to be a number. For example, you could have an attribute that places something after the rest of the chain and fill this macro with the weapon you are currently using and the name of that weapon would appear where that attribute is. This substitution happens first in the chain of events, so you could even put something like 1d6+5 in an attribute at the end of a damage roll and it would roll the d6 and add both the d6 roll and the 5 to the result you would have otherwise received.

See Macro Guide for general info on the Roll20 macro syntax & features.

Some common/recommended uses of macros/attributes when playing D&D 3.5 on Roll20 are: (feel free to add any not included using existing as a guide)


All players put their save value in an attribute on the corresponding character page then the DM and/or Player (depending on style of play) makes a macro that rolls the save

Example: A DM macro for rolling the Fort save of 4 players

/r 1d20+@{PC 1|Fort}} PC1
/r 1d20+@{PC 2|Fort}} PC2
/r 1d20+@{PC 3|Fort}} PC3
/r 1d20+@{PC 4|Fort}} PC4

When using the pre-set 3.5 character sheet (set by the DM in the Game Settings) you can create more advanced macros to extract key information. Using inline rolls, you can take a lot of the work out of calculating a roll, even setting the target needed with a prompt pop-up:

@{selected|character_name} performs a Fortitude check:
[[1d20 + @{selected|fortitude} + ?{Other Bonus|0}]] v DC ?{DC Target:|10}.

Returns a result of:
Ziechael performs a Fortitude check:
14 v DC 10.

Using inline cleans up the result and hides the calculations (which can still be seen when hovering your pointer over the result). The ?{...|...} acts as a prompt with the first ...'s being the question asked to the user and the second ...'s being the default but editable answer, again see Roll Queries for details.

You will note the macro started with @{selected|character_name}, this would require the user to have selected a token on the map first but works great for generalised macros, remember to use @{selected|...} for each instance of wanting to look up information from the character sheet. This can also work for @{target|...} which would prompt the user to select a target token on the map.

Ability Checks

Ability checks are simple rolls which are measured against a target number and receive bonuses from a characters stats and may be subject to other modifiers from temporary boosts or GM discretion.

Using the 3.5 character sheet you can create quick and simple macros for all abilities which when coupled with token selection (@{selected|token_name} or @{selected|character_name}) can help resolve ability checks in one step.

@{selected|character_name} performs a Strength check: 
[[1d20 + @{selected|str-mod} + ?{Other Bonus|0}]] v DC ?{DC Target:|10}.

Returns a result of:
Ziechael performs a Strength check:
17 vs 10.

With basic skills you can use this to suit any of the abilities just by changing the modifier looked at, also the text can be enhanced to be less clinical: 'Ziechael performs a feat of strength' for example?

Skill Checks

Skill checks operate in much the same way as ability checks. Have a token selected, hover over the skill on the sheet to find its 'look-up' name and use that as your modifier:

@{selected|character_name} assesses the value of an item: [[1d20 + @{selected|appraise} + ?{Other Bonus|0}]] v DC ?{DC Target:|0}.

Returns a result of:
Ziechael assesses the value of an item: 12 v DC:15.

Simply change the modifier and text to suit and simple skill checks can be generated in seconds.

Hide the Results

Sometimes an evil GM will ask a player to perform a check but doesn't want them to know if they passed or not! This can be easily replicated by adding a simple whisper into the equation:

/em Septimus searches his memory for useful information.
/w gm [[1d20 + @{selected|level} + @{selected|int-mod} + 4]] vs DC: [[?{DC?|10}]]

In the bardic knowledge check performed above the player/s will only see 'Septimus searches his memory for useful information.' in the chat box, the result of '7 vs DC:10' is then whispered to the GM so that they can decide how to mislead the failed knowledge check. Does the bard misremember, vaguely recall of just outright not know what they were hoping was in the deep recesses of their mind?


Initiative macros can directly add the initiative roll to the Turn Order Tracker by use of &{tracker} inside the roll. The token must be selected to use this feature. ex:

  [[ 1d20 + [[ @{selected|init} ]] &{tracker} ]] 

The pre-set D&D 3.5 Character Sheet Template has a built-in initiative macro which appears as a token action when the character sheet's associated token is selected. This token action cannot be removed but the macro can be modified.

The macro text for the initiative macro can be edited by pulling open (by the corner with the diagonal lines) the text box to the left of the initiative roll button on the sheet. The field itself is titled "initmacro (modify to modify initiative roll macro)" if you hover over it for a few seconds.

The numbers which appear to the right of the decimal point in the provided macro are the character's initiative value (ie dex mod + misc mod for initiative divided by 100 to get it to be to the right of the decimal point) to be used as a tie-breaker.

Attacks/attack sequences

Attributes are made to add the various values used by the attack(s) in question for both attack rolls and damage. Then a Macro(s) is written to use these values to do all the math and rolling and and the values together.

ex: attacking with a two handed weapon twice using a full attack. If Str (strength) is odd, then the .5 at the end of the damage is ignored

/me attacks twice with @{weapon}
/r 1d20+@{str}+@{enchantment}+@{attack temporary} attack 1
/r @{damage}+@{str}*1.5+@{enchantment}+@{damage temporary} damage 1
/r 1d20+@{str}+@{enchantment}+@{attack temporary} attack 2
/r @{damage}+@{str}*1.5+@{enchantment}+@{damage temporary} damage 2

Using the pre-set character sheet again can greatly increase the ease and speed of your players attacks and damage, even incorporating things like critical hits and special attacks such as a sneak attack. Again the following will require a token to be selected and a target token for the focus of the attack/damage etc. While the macro can get long and complex looking it is worth breaking down to analyse and is a great way to learn the nuances of macro building.

Attack Macro:
@{selected|token_name} attacks @{target|token_name} with their @{selected|weapon1name} rolling [[1d20]] + [[d0+@{selected|BAB}[BAB] +@{selected|weapon1stat}[Ability] +@{selected|size}[size] +@{selected|weapon1enh}[Weapon1 Enh] +@{selected|weapon1focus}[Weapon1 Focus] + ?{Flank (1=yes)|0}*2[Flank] +?{Other Att Bonus?|0} ]] (check for crit for @{selected|weapon1critmult}x damage on [[@{target|armorclass}]] or better; confirm crit = [[1d20+@{selected|BAB}[BAB] +@{selected|weapon1stat}[Ability] +@{selected|size}[size] +@{selected|weapon1enh}[Weapon1 Enh] +@{selected|weapon1focus}[Weapon1 Focus] + ?{Flank (1=yes)|0}*2[Flank] +?{Other Att Bonus?|0} ]]) against @{target|token_name}'s armor class of [[@{target|armorclass}]].

Returns a result of:
Ziechael attacks Goblin with their Long Sword rolling 14+7 (check for crit for 2x damage on 13 or better; confirm crit = 17) against Goblin's armor class of 13.

You can see how by telling the macro to take into account all of the possible modifiers to a roll and looking up the information from the character sheet the actual 'work' needed to be done by the player is minimised. A player using this attack roll would need to input any bonus' outside of the norm they may have (like being blessed for example which isn't a permanent bonus) and they would be prompted to 'tell' the macro if they have flanked the enemy or not (a great example of a query using the question to guide an answer: ?{Flank (1=yes)|0}). The rest is done by the macro including telling you if there was a critical hit or not. To make this more obvious we leave the original roll (rolling [[1d20]]) untainted by the bonuses to highlight easily whether a clean 20 was rolled. If so the player can then look at the 'check for crit' section to see if their 'threat' became a 'crit' or remained a hit as normal. You can even move the individual part of the macro around for layout purposes should you desire to see the roll to hit first and have the crit check at the end. When wanting to set a macro up for the other weapon slots you would just make the same macro but with every instance of 'weapon1' replaced with 'weapon2' through to 'weapon6'.

A similar macro can be used to determine damage (please note you need to input the weapon's damage as d4, d6, d8 etc into the 'damage' box of the weapon slot; overwriting the macro that exists there for these to work as you will use them in the lookups to allow these macros to work for any weapon), you can even tag this onto the previous macro to create one big roll out of data that can be picked as needed. I personally keep my damage separate as it can be devastating to see an attack miss that would have caused massive damage!

@{selected|token_name} hits for [[1@{selected|weapon1damage} +@{selected|weapon1damagestat}[Weapon1DamageStat] +@{selected|weapon1enh}[Weapon1 Enh] +@{selected|weapon1specialize}[Weapon1 Specialization] +?{Other Damage Bonus?|0}[Other Damage Bonus]]] damage!

Returns a result of:
Ziechael hits for 7 damage!

Again note that the macro asks the player to add any extra damage they may inflict, this can be temporary flaming weapons, racial bonus or any other damage modifier that isn't applicable to ALL damage rolls. You can even use this with a negative number to detract damage from the roll for enemies with damage reduction against certain damage types. As before, replace all 'weapon1' instances with the appropriate number for the weapon slot used for the attack that hit.

Critical damage works in much the same way but will incorporate a weapons damage multiplier for a given weapon:

@{selected|token_name} strikes mightily for [[(@{selected|weapon1critmult})@{selected|weapon1damage}]] + [[d0+(@{selected|weapon1damagestat}[Weapon1DamageStat] +@{selected|weapon1enh}[Weapon1 Enh] +@{selected|weapon1specialize}[Weapon1 Specialization])* @{selected|weapon1critmult}]] + [[d0+?{Other Damage Bonus?|0}[Other Damage Bonus]]] damage!

Returns a result of:
Ziechael strikes mightily for 12+4+0 damage!

The critical damage is set up to require some mental arithmetic to incorporate the 3.5 rules for critical hits. The multiplier only applies to base damage and doesn't multiply the weapons bonus damage or any 'other' bonus such as fire damage for a flaming sword. Again negative numbers can be used to reflect damage reductions.

Special attacks elaborate on existing macros, but apply their own special rules as needed. I personally use API-based Power Cards (require Pro level subscription) to make my special attacks look pretty but the macros used to calculate the attack, critical hit check, damage and critical damage remain the same and can be incorporated into a normal macro as with the previous examples:


[[1d20 + @{selected|BAB}[BAB] +@{selected|weapon1stat}[Ability] +@{selected|size}[size] +@{selected|weapon1enh}[Weapon1 Enh] +@{selected|weapon1focus}[Weapon1 Focus] + (?{Flank (1=yes)|0}*2)[Flank] +?{Other Att Bonus?|0} ]] vs [[d0+(?{Flat Footed? (1=No)|0}*@{target|dex-mod} + @{target|flatac})]]

Critical hit check:

[[1d20 + @{selected|BAB}[BAB] +@{selected|weapon1stat}[Ability] +@{selected|size}[size] +@{selected|weapon1enh}[Weapon1 Enh] +@{selected|weapon1focus}[Weapon1 Focus] + ?{Flank (1=yes)|0}*2[Flank] +?{Other Att Bonus?|0} ]] vs [[(d0+?{Flat Footed? (1=No)|0}*@{target|dex-mod}) + @{target|flatac}]]


[[1@{selected|weapon1damage} + (d0 +@{selected|weapon1damagestat}[Weapon1DamageStat] +@{selected|weapon1enh}[Weapon1 Enh] +@{selected|weapon1specialize}[Weapon1 Specialization]) + (d0+?{Other Damage Bonus?|0}[Other Damage Bonus])]] + [[d1*ceil(@{selected|level}/2)@{selected|weapon1damage}]]

Critical damage:

[[(@{selected|weapon1critmult}@{selected|weapon1damage}) + (d0+@{selected|weapon1damagestat}[Weapon1DamageStat] +@{selected|weapon1enh}[Weapon1 Enh] +@{selected|weapon1specialize}[Weapon1 Specialization]* @{selected|weapon1critmult}) + (d0+?{Other Damage Bonus?|0}[Other Damage Bonus])]] + [[d1*ceil(@{selected|level}/2)@{selected|weapon1damage}]]

The main change to the attack roll is that the flat footed armor class modifier has been incorporated using a query (technically this could be used in all attack rolls but adds an extra step that is easy enough to amend on the fly in game but since most sneak attacks will be against flat footed, or more accurately dex-modless, enemies it makes sense to add it in as an option). The damage uses the 'ceil' function (see dice reference) to calculate the damage multiplier based on the selected token players level. Again this is kept separate from the rest of the damage calculation as the multiplier only applies to the weapons base damage.


As with special attacks, I like to use API-based Power Cards for my spells, makes them look extra special. However the macro calculations can be extracted for general use. They can get quite complex as most spells do x amount of whatever every x levels or will generate x amount of whatever every x levels up to a maximum of x. Taking the time to really play around and familiarize yourself with the dice reference page can be a huge help in unravelling the weave.

The two main ones that teach the most lessons are "Cure Light Wounds" and "Magic Missile", some of the first spells an aspiring macro writer will encounter:

Cure Light Wounds

@{selected|token_name} heals @{target|token_name} for [[1d8+(@{selected|casterlevel},5)dh1]] hit points by divine energy. Undead are harmed for the same amount, or half the amount if a successful Will save of DC [[10+1+@{selected|wis-mod}]] is made.

Magic Missile

@{selected|token_name} shoots [[{d1*5, d1*ceil(@{selected|casterlevel}/2)}dh1}]] missiles from their fingertip dealing [[1d4+1]] damage per missile.

Notice the dh1, this tells the macro to drop the higher of two results which allows you to only produce the maximum result permitted by the spell. In the case of CLW it will only heal to a maximum of 1d8+5 even if your caster level is 6+. MM is a bit more complex as it needs to calculate an extra missile every 3 levels up to a maximum of 5. Using the ceiling of 1/2 of the caster level we can replicate the extra missile and by again using the drop highest function we can cap this at 5 missiles.

"Please note, my macros may look clunky to an advanced user but I've managed to pick these up within a couple of hours and to my mind, if it works I'm not going to keep messing with it!"

There is also a list of around 240 spell macros that can be found in this post by MusicManiac(Forum)


Some DMs find it useful to set up long description texts in a macro and put the name of the macro next to the room it is for.


/desc As You walk into the room, you all notice a few things at once. First, There is a giant pool covering half the room. Second, A rather large cave in in one corner. Finally, three lizard men are waiting for you. The Lizard men attack.

Another way of doing this is to put a token on the GM layer (a scroll token works well) in each room that has a description written out in one of the bars/bubbles (it is easiest to write out the description elsewhere, then copy/paste it into the bubble).

Then, use this macro:

/desc @{selected|bar1}

When the players get to the room, simply switch to GM layer, select the token holding the description, and hit the button for your description macro. Note there are seven places on the token you can store information. Name, Bar1, Bar1Max, etc.


Say you use the Players Roll All The Dice variant and the Roll20 built-in D&D 3.5e character sheet. Because players roll a lot more dice using this variant than normal, it's important for them to know their roll modifiers for those new rolls. As such, its useful to have a tool for your players that allows them to look up all of their roll modifiers at any time (as a macro token action accessible by all players). Likewise, you'd want the tool to tell you what all of the various NPC/monster "scores" are that oppose those rolls, so you'd needed it to calculate the simple number which a player would need to beat.

That is, you'd need something that would output something like this:

Flat-Footed AC for Bob: +4 = 14 (Subtract lost Dodge bonus)

A number of these values have "conditionals" in them. For example, for Flat-Footed AC, you lose your Dex bonus (if you had one), but keep a Dex penalty. You'd need to represent these conditions in your tool, but the only tool you normally have available is macros/abilities unless you can afford Pro level (for custom character sheets). As-is, you can't do conditional math like the following because there's no "conditional" syntax available in macros/abilities.

[[ @{selected|dexmod} < 1 ? @{selected|dexmod} : 0 ]]

That means that you'll have to use Dice Representation to display all of these modifiers and all of their innate conditionals, and display them through a GM whisper so no one but you and the GM can see that information.

/w gm Flat-Footed AC for @{selected|character_name}: +[[ @{selected|modifier} ]] = [[ @{selected|modifier} +10 ]] (Subtract lost Dodge bonus)

The following formulas allow you to create very simple inequality-based conditionals using only Dice Representation. Assume that in the formulas all ALL_CAPS variables are integers that you plan on replacing with actual integers (or attributes that are integers) when you implement them. (Note: If you replace a variable with an explicit negative number, Roll20 Order of Operations must have that negative number in parentheses.)

Greater Than or Equal To

The formula below returns a 1 for all integers MINIMUM_VALID_NUMBER or more, and returns 0 for all other integers.

[[ ( 1 - ( floor( ( MINIMUM_VALID_NUMBER - 1 - ATTRIBUTE ) / ( abs( MINIMUM_VALID_NUMBER - 1 - ATTRIBUTE ) + 0.001 ) ) + 1 ) ) ]]

The formula below returns ATTRIBUTE when it's an integer that is greater than or equal to the MINIMUM_VALID_NUMBER and will be 0 for all other integers.

[[ ATTRIBUTE * ( 1 - ( floor( ( MINIMUM_VALID_NUMBER - 1 - ATTRIBUTE ) / ( abs( MINIMUM_VALID_NUMBER - 1 - ATTRIBUTE ) + 0.001 ) ) + 1 ) ) ]]

Less Than or Equal To

The formula below returns a 1 for all integers MAXIMUM_VALID_NUMBER or less, and return 0 for all other integers. This is useful for situations where above a certain maximum you should ignore that value (such as ignoring a Dex Bonus when flatfooted but keeping a penalty).

[[ ( floor( ( MAXIMUM_VALID_NUMBER - ATTRIBUTE ) / ( abs( MAXIMUM_VALID_NUMBER - ATTRIBUTE ) + 0.001 ) ) + 1 ) ]]

The formula below returns ATTRIBUTE when it's an integer that is less than or equal to the MAXIMUM_VALID_NUMBER and will be 0 for all other integers.


Full Example In-Use

Thus, to accomplish ignoring a Dex Bonus but keeping a Dex Penalty, you can write the following default template to a macro token action visible to all players:

/w gm &{template:default} {{name=AC Roll Modifiers for @{selected|character_name} }} {{Flat-Footed=+[[ @{selected|acitembonus} + @{selected|shieldbonus} + @{selected|size} + @{selected|armorclassnaturalarmor} + @{selected|armorclassdeflectionmod} + @{selected|armorclassmiscmod} + @{selected|dexmod} * ( floor( ( (-1) - @{selected|dexmod} ) / ( abs( (-1) - @{selected|dexmod} ) + 0.001 ) ) + 1 ) ]] = [[ @{selected|acitembonus} + @{selected|shieldbonus} + @{selected|size} + @{selected|armorclassnaturalarmor} + @{selected|armorclassdeflectionmod} + @{selected|armorclassmiscmod} + @{selected|dexmod} * ( floor( ( (-1) - @{selected|dexmod} ) / ( abs( (-1) - @{selected|dexmod} ) + 0.001 ) ) + 1 ) +10 ]] (Subtract lost Dodge bonus)}}


Say you run a version of the Defense Bonus variant where immaterial armor stacks with the Defense Bonus. You can't just use the @{selected|acitembonus} attribute to determine whether the Defense Bonus applies, but if you have a custom attribute for all creatures called "Is Wearing Physical Armor?", you can make it a boolean 1 or 0 depending on whether or not that's the case.

[[ @{selected|DefenseBonus}-(@{selected|DefenseBonus}*@{selected|Is Wearing Physical Armor?}) ]]

Admittedly, the formula could be made simpler if the attribute was "Is NOT Wearing Physical Armor".

[[ @{selected|DefenseBonus}*@{selected|Is NOT Wearing Physical Armor?} ]]

However, when looking at a character's attributes list it's easier to wrap your head around the logic of a "1" affirming a positive rather than affirming a negative.


Some API codes modify or use macros. Official API forum(Forum)



  • GroupInitiative can help out greatly with rolling init for a bunc of characters
  • CombatMaster(Forum) -- API for improving various aspects of combat. Automating condition duration in combat, Initiative improvement, and more. Version of CombatMaster in API Drowdown might not always be latest version, check thread/repo for latest version. CombatMaster repo
  • Script:EncounterHelper -- Group tokens into encounters that can be shown, hidden, and reset to their initial values.
  • Script:Ammo -- simple API for tracking ammo use & recovery.


Tips relevant to Dungeon Masters.

Characters and tokens

While each group is different on what they do for characters and tokens, A few things are standard. You will want a character page for each character. The DM will likely have a long list of NPC characters and might or might not share those with the players. If the DM shares the NPC pages, they will likely use the "GM notes" section to record info the players shouldn't know. Finally, you will likely benefit from setting a default token and attaching the bars (aka: the "bubbles") to a specific attribute. Remember that no max value causes a bar not to show up though the "bubble" for its current value will still show.

See Link Token for saving tokens to char sheets, & linking token bars to char sheet stats.


Before you do ANYTHING else with a map, make sure you have the Page Setting right. Nothing is more annoying then making your map look all nice and neat and then realizing you made some critical mistake and have to start over. D&D uses squares, so make sure you are in squares. In addition, 3.5 uses the pathfinder/3.5 diagonal measurement system. Make it big to start with, making it smaller is easier than making it bigger. One unit is 5 ft (unless you really need to change it for some reason, 5 ft is best) and a 1 unit grid is best, with both grid color and background color depending on the map and the preference of both players and DM(some prefer no grid at all when playing but the grid really helps when hand drawing a map). Fog of War and Dynamic Lighting can wait until after you draw the map, but should be dealt with before your players see the map, as determined by play style and personal preference.

Now that that you have the major set up complete, a choice has to be made: hand draw in Roll20, import a drawing you make elsewhere, or use a drawing from online. If you pull a map from online or your library, you may need to align it and move it into position. Once you finish with your map, you now know how big it is. If you followed the earlier recommendation and made your space too big, after moving everything into place you now shrink it down to fit your actual map you are using (or just leave it too big to help confuse the players).

Dynamic Lighting

You can find Dungeons and Dragons 3.5 specific vision and lighting examples in the Dynamic Lighting Style Guide.

List of Sourcebooks

No books are available on Roll20, but here is list of them:

All the information on D&D 3.5 is found in the related books. The Players Handbook, Dungeon Masters Guide, and Monster Manual are the only books required to play the game.

Please note that all these books are still under copyright and "Any reproduction or unauthorized use of the material or artwork contained [inside the book] is prohibited without the express written permission of [the publisher]". Details can be found in the book in question.

Feel free to add any books that aren't on the list.

3.5 Books
Publisher Book Name Acronym ISBN Month Published
Wizards of The Coast Player's Handbook PH 0-7869-2886-7 June 2003
Wizards of The Coast Player's Handbook 2 PH2 0-7869-3918-4 May 2006
Wizards of The Coast Dungeon Master's Guide DMG 0-7869-2889-1 July 2003
Wizards of The Coast Dungeon Master's Guide 2 DMG2 0-7869-3687-8 June 2005
Wizards of The Coast Monster Manual MM 0-7869-2893-X July 2003
Wizards of The Coast Monster Manual 2 MM2 0-7869-2876-5 September 2002
Wizards of The Coast Monster Manual 3 MM3 0-7869-3430-1 September 2004
Wizards of The Coast Monster Manual 4 MM4 0-7869-3920-6 July 2006
Wizards of The Coast Monster Manual 5 MM5 978-0-7869-4115-5 July 2007
Wizards of The Coast Book of Exalted Deeds BoED 0-7869-3136-1 October 2003
Wizards of The Coast Complete Divine CD 0-7869-3272-4 May 2004
Wizards of The Coast Complete Arcane CAr 0-7869-3435-2 November 2004
Wizards of The Coast Complete Champion CC 978-0-7869-4034-9 May 2007
Wizards of The Coast Complete Mage CM 0-7869-3937-0 February 2006
Wizards of The Coast Complete Scoundrel CS 978-0-7869-4152-0 January 2007
Wizards of The Coast Complete Adventurer CAd 0-7869-3651-7 January 2005
Wizards of The Coast Complete Psionic CP 0-7869-3911-7 April 2006
Wizards of The Coast Spell Compendium SC 0-7869-3702-5 December 2005
3.0 Books
Publisher Book Name Acronym ISBN Month Published
Wizards of The Coast Book of Vile Darkness BoVD ? ?
Wizards of The Coast Deities and Demigods ? ? April 2002

See Also