In the battlefield... The chamber trembles as Blair the Witch raises her staff to cast a powerful Fireball . Fireball deals 18 fire damage. The DM now needs to make eight Dexterity saving throws. Okay. Enemy one succeeds. Enemy two fails. Enemy three… succeeds. Let me move that token so I remember which one it was. Four succeeded and four failed. Two of them have resistance to fire damage. I need to check which two. This resistant enemy succeeded, so that is half damage from the saving throw and then half again from resistance. Eighteen divided by two is nine. Nine divided by two is four, rounded down. I subtract four Hit Points. The other resistant enemy failed, so it takes half damage from resistance. Eighteen divided by two is nine. I subtract nine Hit Points. Three non-resistant enemies failed, so they each take eighteen damage. The other three succeeded, so they each take nine damage. Now I need to open or update six more tokens. Three minutes later... Blair is sitting on a nearby rock, quietly removing splinters from her staff while the DM finishes calculating the consequences of the most dramatic moment of her turn. Introducing Combat Assistant Combat Assistant is a lightweight standalone spin-off of [ T&T - Trinkets and Trackers ] designed to keep moments like this moving. When an attack, spell, or damaging effect is rolled, Combat Assistant reads the result directly from the chat and generates an interactive card containing the detected damage, damage type, saving throw, and DC. Select the affected tokens and press Roll . Combat Assistant will: Roll the required saving throw for every selected target. Read each target’s result individually. Detect resistances, vulnerabilities, and immunities. Calculate the correct damage for each creature. Apply that damage directly to their Hit Points. Produce a detailed narrative log explaining every saving throw, modifier, defense, and final result. Blair raises her staff. The Fireball explodes. The DM selects eight enemies and presses Roll from Combat Assistant 's Menu. Within seconds, every saving throw is resolved, every resistance is considered, and the correct damage is applied to every target. The flames fade—and combat continues. How it Works Combat Assistant reads native Roll20 attack rolls, damage rolls, healing, saving throws, and initiative directly from the chat. When a supported roll is detected, it generates an interactive menu. Select one or multiple tokens, choose how to resolve the action, and Combat Assistant handles the rest - comparing attack rolls against AC , rolling saves, checking resistances , vulnerabilities , and immunities , and applying the correct damage or healing to each target. Attack Rolls and Automatic Damage When a creature makes an attack roll and rolls its damage, a menu will appear. [2024] [2014] The DM only needs to select the target token—or multiple tokens—and choose how the attack should be resolved. The attack hits [Roll 22] against [15 AC] taking 13 Slashing damage The attack misses [Roll 13] Against [18 AC] First, Combat Assistant compares the attack roll against each target’s Armor Class. If the attack misses, no damage is applied. If the attack hits, Combat Assistant automatically applies the rolled damage while checking the target’s defenses: Resistance reduces the damage. Vulnerability increases the damage . Immunity prevents the damage entirely . The final damage is calculated separately for every selected target and applied directly to their Hit Points. [Immunity] [Resistance] What would normally require checking AC, opening character sheets, reviewing defenses, calculating damage, and updating tokens can now be resolved with a single button. About the adventure of Blair the witch and her powerful Fireball... The Combat Assistant Menu Type " !ca menu " in the chat to open the main Combat Assistant menu. From here, you can quickly perform common combat actions without opening character sheets or updating tokens individually. The menu includes four main options: DMG: Apply damage to the selected target(s) directly or against the target(s)'s AC or after a Saving Throw Roll. Heal: Restore Hit Points to the selected target(s). Save: Roll a native Roll20 saving throw for every selected target. Init: Roll R20 native initiative for every selected token and add the results to the Turn Order. Every option works with both single and multiple tokens. Select one creature to resolve an individual action, or select an entire group to handle them all at once. Combat Assistant processes each token separately, using that creature’s own statistics and defenses whenever applicable. The Combat Assistant Settings Type " !ca config " or press the Gear in the menu Chat Tracking: disable the combat menu. 2024 Combat Assistant Rolls Initiative: Use a custom render card to roll initiative for 2024 sheet by reading the sheet modifiers. 2014 Combat Assistant Rolls: Use a custom render card to roll saving throws and initiative for 2014 sheet by reading the sheet modifiers. HP, AC, Temp HP Bar : Select which token bar contains each attribute. This is necessary for NPC tokens because, if no HP or Temporary HP link is found, the script uses these bar settings to update those values. Damage Round Up : Choose whether damage is rounded up or down when halved by resistance or a successful saving throw. Read Sheet Resistances : Allow the script to detect resistances, vulnerabilities, and immunities on the character sheet and apply them automatically when calculating damage. Reveal Damage Source : This shows the source of the damage in the narrative (Ex. From Blair the witch 's Fireball ). Reveal Token names in log: This hides token names in the narrative and uses “ Target ” and “ Attacker ” instead. [Hide Tokens names ( ON )] [Reveal Damage Source ( OFF )] Player Manual Roll: Lets players roll their own saving throws when prompted. Player Attack Button: When a player rolls an attack, a single use button will appear for the player to select a target and do the attack against the target AC to deal damage. [this is optional by the way you can just turn off the option] Player Healing Button: When a player uses a healing spell, a single use button will appear for the player to select a target and automatically heal it. Target Range Check : Player Attack and Healing buttons automatically verify the distance between the source and target before executing the action. No more out-of-range attacks or accidental healing. (PLAYER VIEW) Player Token Area Mark: Casting an area spell creates a movable template of the correct size. Place it on the map and press Roll to automatically resolve saving throws and damage for every creature inside. Player Marker Square URL, Player Marker Radius URL, Player Marker Opacity: Token Marker customization. Chat Background Image URL: Change the background image used across all script menus. 2014 Sheet Compatibility For 2014 player character sheets, if they have resistance or anything else, you may need to manually add the npc_resistances , npc_vulnerabilities , and npc_immunities attributes. This allows the script to detect them and include them in damage calculations. When rolling group Saving Throws or Initiative for tokens using the 2014-character sheet, Combat Assistant will display an additional button. Select the 2014-sheet tokens and press that button to request all their rolls at once. Due to limitations with triggering the 2014 sheet’s native rolls directly through the API, the most reliable solution was to place the required chat command inside a button. It adds one extra click but still avoids rolling for every token individually. For group Saving Throws and Initiative involving both 2014 and 2024 sheets : 2024-sheet tokens roll automatically. For 2014-sheet tokens , it will list all selected 2014 tokens. Press Roll to roll for each one. The code has been submitted to the Roll20 repository, In the meantime, you can install it manually from Here