In the heat of battle... The chamber trembles as Blair the Witch raises her staff. She casts Fireball. Fireball deals 18 fire damage to Eight enemies inside the explosion area. 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 standalone spin-off of T&T – Trinkets & Trackers, designed to make Roll20 combat faster, more visual, and easier to manage for both players and Dungeon Masters. Players can launch attacks, cast spells, apply healing, and control area effects directly from the chat. Combat Assistant handles the calculations, resistances, vulnerabilities, immunities, saving throws, damage interactions, concentration tracking for spells with active area, visual effects, and token updates behind the scenes, while keeping the action moving. How it Works When an attack, spell, healing effect, or damaging ability is rolled, Combat Assistant reads the result directly from the Roll20 chat and generates an interactive action card. Depending on the roll, the card can detect: Attack rolls. Damage and healing formulas. Damage types. Saving throw abilities and DCs. Spell ranges and areas of effect. Concentration requirements. Select the affected tokens and activate the action. Combat Assistant can then: Check whether each attack hits or misses by comparing the Attack Roll against target(s) AC. Roll the required saving throw for every target. Process each creature’s result individually. Detect resistances, vulnerabilities, and immunities. Calculate full, half, doubled, or negated damage. Apply damage, healing, or Temporary Hit Points directly. Track concentration and affected creatures. Generate a detailed combat log explaining each result. Within seconds, every target is processed and the battle continues without opening multiple character sheets or calculating each result manually. 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 to every token selected in the map. 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 R20 native saving throw for every selected target. Init: Roll R20 native initiative for every selected token and add the results to the Turn Order. Conc: Open a list with all tokens that holds concentration on an AoE spell. Every option works with both single and multiple tokens selected. 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 when an attack is rolled. 2024 Combat Assistant Rolls Initiative: Use a custom render card to roll initiative for 2024 sheet by reading the sheet modifiers. (this function check if the character has advantage/disadvantage on initiative or any other modifier before roll) 2014 Combat Assistant Rolls: Use a custom render card to roll saving throws and initiative for 2014 sheet by reading the sheet modifiers. (This function ask if the roll is normal/advantage/disadvantage) 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. [Reveal Tokens names (OFF)] [Reveal Damage Source (OFF)] Player Manual Roll: When a player-controlled token must make a saving throw, a button appears for the player to roll it. Animated and Automated Combat for Players. 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. (Player's View) Player Healing Button: When a player uses a healing spell, a single use button will appear for the player to select a target automatically heal the target. 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 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. Radius Cone, Support 15, 30, 45 and 60ft Cube Area Keep Marker Until Rolls Finish: The Area marker disappears after roll every affected token within the area when this is ON, otherwise, it disappears after you press "Roll" (except for Concentration spells). Marker Free Movement: You can freely move the area, or it snaps on Roll20's grids. Square Marker Roll20 URL: Use a Roll20 image URL to assign a custom square marker for AoE spells. The URL must begin with ( <a href="https://files.d20.io/images/" rel="nofollow">https://files.d20.io/images/</a> ...) otherwise, it will not work. Radius Marker Roll20 URL: Use a Roll20 image URL to assign a custom radius marker for AoE spells. The URL must begin with ( <a href="https://files.d20.io/images/" rel="nofollow">https://files.d20.io/images/</a> ... ) otherwise, it will not work. Marker Opacity: define marker opacity when spawns. Combat Visual Effects: Display visual effects for attacks, damage, healing, and spells. Projectile Effect Name: Assign the name of the R20 effect's name to use when a range attack is used. (as missile and rocket can't be used by scripts on roll20 for a while, you can use a custom effect with this configuration) { "additionalEmissionRatePerPixel": 0.35, "additionalSpeedPerPixel": 0.1, "alignParticles": true, "angle": -1, "angleRandom": -0.0, "duration": 12, "emissionRate": 128, "emitRateGradients": [{"factor":1, "gradient":0}, {"factor":0.2, "gradient":0.25}, {"factor":0, "gradient":1}], "emitterSize": 4, "lifeSpan": 11, "lifeSpanRandom": 0, "maxParticles": 1000, "rulerType": "line", "size": 40, "sizeRandom": 20, "speed": 0, "speedRandom": 0 } Name it ProjectileFX , as this is the default name used by the script. You can choose a different name, but you must update it in the settings. Direct Hit Effect Name: Assign the name of the R20 effect's name to use when a target receives damage from a direct impact. Area Hit Effect Name: Assign the name of the R20 effect's name to use when a target receives damage from a AoE impact. Special Features Group healing Healing do not exceed token's max HP Group Damage Spells for NPCs. For a Player-Controlled token, is easier for the script to locate the token in the map and use it as reference to spawn the marker or send a ranged attack because it will be just 1 token of that character in the map, but when an NPC, that shares the same character sheet, cast a spell it is much more complicated as they have the same name and the same sheet, so, the DM can use the button "Source" for spells or "AtkFX" for melee or ranged attacks to select which NPC cast the spell. Concentration on AoE When you cast a spell that has concentration on its description, after roll the damage, it will trigger a concentration information on that token, that token, then can use "!ca conc", to reroll the new damage and re use the "Roll" button again. Same for NPCs When a Token that holds concentration receives damage using Combat Assistant attacks a button will appear to players to roll a constitution ST to hold concentration on the spells, otherwise it will be lost. 2014 Sheet Compatibility 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 resolve it. Important!!! To use AoE markers and concentration effects with 2014 spell rolls, you must enable spell descriptions. Otherwise, the script will not be able to read the required information and perform these actions. Above the description text mark the dropdown menu as "Yes" to cast the spell with the description. Also, add the word “Concentration” at the end of the spell’s description if it requires concentration. This allows the script to detect it and apply the concentration effect to the token. This script will be soon available on one click install, meanwhile, you can have it from HERE .
You can also follow me for free on Patreon to stay up to date with future scripts and updates.