User:NtCarlson/Sandbox
Damage Mechanics
Overview
Under the hood, superficially similar damage bonuses can be implemented in very different ways. For example, the Callous Glow Ring and the Caustic Band are both rings that give 2 bonus damage. However, their damage bonuses are implemented using two different functions and wind up behaving quite differently. Understanding how these different functions work will help explain the oftentimes unintuitive damage mechanics in Baldur's Gate 3.
Below is a breakdown of the different functions used to apply damage bonus effects.
Function | Term | Comment | Example |
---|---|---|---|
WeaponDamage()
|
Attack damage | The basic, well-behaved damage bonuses are implemented with this function. The bonus will apply to only the triggering attack and nothing else. | 2Acid from Caustic Band |
CharacterWeaponDamage()
| |||
CharacterUnarmedDamage()
| |||
DamageBonus()
|
Damage rider | Damage bonuses using this function will add their damage to each independent damage instance. When combined with effects that use DealDamage() , a single attack can create numerous independent damage instances so DamageBonus() effects can potentially apply their damage many times per attack.
|
2Radiant from Callous Glow Ring |
DealDamage()
|
Damage rider source (DRS) | This function is used by all damaging attacks, spells, and conditions to deal their damage, but some damage bonuses also use it. DealDamage() creates a separate damage instance that can be independently boosted by applicable DamageBonus() sources. In certain scenarios, DRS effects can trigger each other, creating far more damage instances than might be expected.
|
1d8Physical from |
The interaction between the different types of damage bonuses can be summarized as follows:
- Attack damage bonuses do exactly what they say -- nothing more, nothing less.
- The effect of damage riders is multiplicative with the number of independent damage instances. An attack with 2 extra damage instances from damage rider source effects will apply any damage riders 3 times.
- The number of damage instances can grow exponentially with the number of damage rider sources. For example, if you target with the Firestoker, you will create 4 independent damage instances: the base attack, the sneak attack, Burned Alive triggered by the base attack, and Burned Alive triggered by the sneak attack. a
DamageBonus()
This is a comprehensive list of all the damage riders in the game that use DamageBonus()
which can be acquired by the player. There are other DamageBonus()
effects exclusive to certain enemies or attached to items not available in the game (outside of cheats). These effects are excluded from the list below.
If a damage type is not specified, the damage bonus will inherit the type from whatever damage source it is applied to.
Source | Damage Bonus | Conditions |
---|---|---|
Rhapsody | 1, 2, or 3 | Kill 3 creatures with the weapon to unlock the max bonus; resets each Long Rest[1] |
Proficiency Bonus | Target is threatened | |
Callous Glow Ring | 2Radiant | Target is illuminated (i.e. not Obscured) |
1Lightning | Have at least 1 Lightning Charge | |
1d10Necrotic | Available only to Astarion after ascending at the end of The Pale Elf | |
Spellmight Gloves | 1d8 | Spell with an attack roll[2] |
Charisma modifier Force | ||
Intelligence modifier | Evocation spell | |
Wisdom modifier | Cleric cantrip | |
Potent Robe | Charisma modifier | Any cantrip |
Necklace of Elemental Augmentation | Spellcasting Ability Modifier | Elemental cantrip |
Charisma modifier | Spell/cantrip whose elemental type corresponds to the chosen draconic ancestry | |
Ring of Absolute Force | 1Thunder | Applies only to Thunder damage |
Mourning Frost | 1Cold | Applies only to Cold damage |
Armour of the Sporekeeper | 1Necrotic | Applies only to Necrotic damage |
Poisoner's Robe | 1d4Poison | Poison spell |
Number of Heat charges | Requires and consumes Heat charges, applies only to Fire damage | |
Markoheshkir | Proficiency Bonus | Elemental spell damage with the corresponding variant of Kereska's Favour active |
1d8Necrotic | Spellcaster attacks Curse target | |
1d6Necrotic | Spellcaster attacks Hex target | |
1d4Psychic | Attack while Overloaded With Synaptic Power is active | |
Boots of Psionic Movement | 1d4Psychic | Next melee attack after Githyanki | as a
Ring of Elemental Infusion | 1d4 elemental | Next weapon attack after using an elemental spell/cantrip |
Cloak of Elemental Absorption | 1d4 elemental | Next weapon attack after using Absorb Elements |
Shadow-Cloaked Ring | 1d4 | Unarmed attack[3] |
Dolor Amarus | 7 | Critical Hit[4] |
Vicious Battleaxe | 7 | Critical Hit[4] |
Harmonic Dueller | Charisma modifier | Melee attack while Mellow Harmony is active |
Titanstring Bow | Strength modifier | Ranged weapon attack |
Scabby Pugilist Circlet | 2 | Unarmed or weapon attack with 2+ enemies within 3m |
The Undead Bane | 1d6Slashing | Melee attack against a Fiend or Undead |
Hammer of the Just | 1d6Bludgeoning | Melee attack against a Fiend or Undead |
- ↑ The damage bonus is not attached to the weapon. You will keep the Scarlet Remittance buff even after unequipping the dagger.
- ↑ Prior to Patch 4, this worked with any direct damage spell. More testing is needed to see what it works with after Patch 4.
- ↑ The Shadow-Cloaked Ring boosts both weapon and unarmed damage, but weapon damage is boosted using
CharacterWeaponDamage()
. - ↑ 4.0 4.1 The damage bonus applies to any Critical Hit, not just those made with this weapon.
DealDamage()
Attached vs detached instances
There are two sub-categories of DealDamage()
instances: attached and detached.
- A
DealDamage()
instance attached to an attack or spell will be grouped and indented under a heading like "X used Main Hand Attack" or "X cast Fire Ball". Most DRS effects will be attached to the triggering attack. - A detached
DealDamage()
instance will appear separately in the damage log, not grouped with the triggering attack. DRS effects wind up detached because they callDealDamage()
indirectly. For example:- When standing in a Burning surface, the Amulet of Elemental Torment will effectively add a 1d4Fire DRS. The amulet's effect doesn't call
DealDamage()
directly, but instead callsApplyStatus(BURNING)
. On application, the status effect callsDealDamage()
immediately. - To apply its 1d4Thunder damage, the Punch-Drunk Bastard calls
CreateExplosion()
which then callsDealDamage()
.
- When standing in a Burning surface, the Amulet of Elemental Torment will effectively add a 1d4Fire DRS. The amulet's effect doesn't call
The practical difference between attached and detached DRS sources is that some damage rider effects will not apply to detached sources. For example, the 1d4Fire damage instance from the Amulet of Elemental Torment is detached from the spell cast and thus will not get boosted by damage riders like Potent Robe or which explicitly apply only to spell/cantrip attacks. It will, however, be boosted by more universal damage riders like .
Additional DRS sources attached to ordinary weapon attacks
This is a list of weapons that can get bonus attached DealDamage()
instances with ordinary attacks. Since these damage instances are attached to a weapon attack, they will be boosted by applicable DamageBonus()
sources.
Source | Damage Bonus | Conditions |
---|---|---|
Assassin's Touch | 1d4Necrotic | Target is or |
Deep Delver | 1d4Piercing | Target is Shattered. Deep Delver inflicts Shattered on hit. |
Dragon's Grasp | 1d4Slashing | Target is |
Exterminator's Axe | 1d6Fire | Target is a plant, Myconid, or is size small or less |
Firestoker | 1d4Piercing | Target is |
Shortsword of First Blood | 1d8Piercing | Target must have 100% hit points |
Blooded Greataxe | 1d4Slashing | Wielder has 50% hit points or less |
Rat Bat | 1d6Piercing | Unlisted effect; always applies |
Render of Mind and Body | 1d8Psychic | Attack with Advantage |
Sword of Life Stealing | 10Necrotic | Attack is a Critical hit |
Crimson Mischief | 7Piercing damage. | Attack with Advantage while equipped in the main hand |
Duellist's Prerogative | Proficiency Bonus Necrotic | Requires and consumes a reaction; only applies while equipped in the main hand |
Additional detached DRS sources triggered by ordinary weapon attacks
This is a list of weapons that can get bonus detached DealDamage()
instances with ordinary attacks. Weapon attack related DamageBonus()
sources will not apply to these extra damage instances since they are not directly attached to a weapon attack. Only the universal DamageBonus()
sources will apply.
Source | Damage Bonus | Notes |
---|---|---|
Loviatar's Scourge: Willing Whip | 1d6Necrotic | Hits everything in a 2m radius including the wielder |
Punch-Drunk Bastard | 1d4Thunder | Must be . Hits everything in a 3m radius excluding the wielder. |
Nyrulna: Zephyr Connection | 3d4Thunder | Must be thrown. Hits everything in a 6m radius including the wielder. |
Additional DRS sources attached to weapon actions
This is a list of DealDamage()
sources from special Weapon actions. These sources are inherently more limited by nature of being once-per-short-rest actions.
Source | Damage Bonus | Notes |
---|---|---|
Strength modifier Slashing | Bonus applies to all melee attacks for the rest of the turn, including melee spells | |
Hoppy: Revitalising Strike | Proficiency Bonus Necrotic | Also heals you 1d6hit points |
Very Heavy Greataxe: Gargantuan Cleave | 1d6Slashing | Hits up to 3 targets like a normal cleave but inflicts on the wielder |
Soulbreaker Greatsword: Soulbreaker | 4Psychic | Can also | the target (Constitution saving throw)
Silver Sword of the Astral Plane: Soulbreaker | 4Psychic | Can also | the target (Constitution saving throw)
Moonlight Glaive: Moonlight Butterflies | ||
Justiciar's Scimitar: Shadowsoaked Blow | ||
The Undead Bane: Profane Scourge | ||
Hellfire Greataxe: Hellflame Cleave | ||
The Sacred Star: Dawnburst Strike | Proficiency Bonus Radiant | |
Balduran's Giantslayer: Topple the Big Folk | 2d6Slashing | Target must have size Large or greater. Also adds your Proficiency Bonus to the base attack damage |
Glossary
There is not necessarily any community consensus regarding the following terms and they may only make sense within the context of this article.
- Attached: A damage instance attached to an attack or spell in the damage log.
- Attack damage: A damage bonus implemented with
WeaponDamage()
or similar functions. These bonuses are well-behaved and will only ever apply once per attack. - Damage rider: A damage bonus implemented with
DamageBonus()
. These bonuses can potentially apply many times in a single attack since they boost each independent damage instance. - Damage rider source: A damage bonus implemented with
DealDamage()
. These bonuses create an independent damage instance instead of adding damage to an existing instance. - Detached: A damage instance not grouped with the triggering attack or spell in the damage log.
- DRS: See damage rider source
- Universal damage rider: A damage rider that doesn't have conditions like
IsSpell()
and can boost even detached damage instances.