User:NtCarlson/Sandbox: Difference between revisions

Jump to navigation Jump to search
Cleaned up section titles
(Some additions to spell DRS section)
(Cleaned up section titles)
 
(10 intermediate revisions by the same user not shown)
Line 13: Line 13:
|-
|-
|<code>WeaponDamage()</code>
|<code>WeaponDamage()</code>
| rowspan="3" |Attack damage
| rowspan="3" |'''Weapon rider'''
| rowspan="3" |The basic, well-behaved damage bonuses are implemented with this function. The bonus will apply to ''only'' the triggering attack and nothing else.
| rowspan="3" |The basic, well-behaved damage bonuses are implemented with this function. The bonus will apply to ''only'' the triggering attack and nothing else.
| rowspan="3" |{{DamageText|2|Acid}} from {{RarityItem|Caustic Band}}
| rowspan="3" |{{DamageText|2|Acid}} from {{RarityItem|Caustic Band}}
Line 22: Line 22:
|-
|-
|<code>DamageBonus()</code>
|<code>DamageBonus()</code>
|Damage rider
|'''Damage rider'''
|Damage bonuses using this function will add their damage to each independent damage instance. When combined with effects that use <code>DealDamage()</code>, a single attack can create numerous independent damage instances so <code>DamageBonus()</code> effects can potentially apply their damage many times per attack.
|Damage bonuses using this function will add their damage to each independent damage instance. When combined with effects that use <code>DealDamage()</code>, a single attack can create numerous independent damage instances so <code>DamageBonus()</code> effects can potentially apply their damage many times per attack.
|{{DamageText|2|Radiant}} from {{RarityItem|Callous Glow Ring}}
|{{DamageText|2|Radiant}} from {{RarityItem|Callous Glow Ring}}
|-
|-
|<code>DealDamage()</code>
|<code>DealDamage()</code>
|Damage rider source ('''DRS''')
|'''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. <code>DealDamage()</code> creates a separate damage instance that can be independently boosted by applicable <code>DamageBonus()</code> sources. In certain scenarios, '''DRS''' effects can trigger each other, creating far more damage instances than might be expected.
|This function is used by all damaging attacks, spells, and conditions to deal their damage, but some damage bonuses also use it. <code>DealDamage()</code> creates a separate damage instance that can be independently boosted by applicable <code>DamageBonus()</code> sources. In certain scenarios, '''DRS''' effects can trigger each other, creating far more damage instances than might be expected.
|{{DamageText|1d8|Physical}} from {{SAI|Colossus Slayer}}
|{{DamageText|1d8|Physical}} from {{SAI|Colossus Slayer}}
|}
|}
The interaction between the different types of damage bonuses can be summarized as follows:
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.
* '''Weapon rider''' 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 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 {{SAI|Sneak Attack}} a {{Cond|Burning}} target with the {{RarityItem|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.
* The number of damage instances can grow exponentially with the number of '''damage rider sources'''. For example, if you {{SAI|Sneak Attack}} a {{Cond|Burning}} target with the {{RarityItem|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. If you add {{SAI|Phalar Aluve: Shriek}}, this will increase to 8 '''DRS''' instances since Shriek will be triggered by each of the 4 preceding instances.


==<code>DamageBonus()</code> ==
== Weapon riders ==
This is a comprehensive list of all the damage riders in the game that use <code>DamageBonus()</code> which can be acquired by the player. There are other <code>DamageBonus()</code> 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.
This category of damage increasing abilities applies only to your weapon (or unarmed) attack damage and nothing else.
One weapon attack will apply each '''weapon rider''' exactly once.
Unlike the two other classes of damage boosts, they are very well-behaved and won't interact with other damage boosts to produce unexpected results.
 
'''Weapon riders''' are far too numerous it exhaustively list. Instead, here is a small sample of damage boosts of this category:
* +10 damage from Great Weapon Master
* Bonus damage from {{Cond|Arcane Synergy}}
* {{DamageText|1d4|Fire}} damage from a fire-dipped weapon
If a damage boost is not listed in one of the sections below, assume that it is a '''weapon rider''' by default.
 
== Damage riders ==
Unlike '''weapon riders''', '''damage riders''' can "ride" on damage sources other than weapon or unarmed damage.
This makes them more flexible and potentially abusable than basic '''weapon riders'''.
In particular, when combined with one or more '''damage rider source''' effects, a '''damage rider''' can potentially apply multiple times to a single attack, effectively multiplying their provided damage bonus.
 
This is a comprehensive list of all the '''damage riders''' in the game which can be acquired by the player. There are other '''damage riders''' 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.
If a damage type is not specified, the damage bonus will inherit the type from whatever damage source it is applied to.
{| class="wikitable"
{| class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"
|+ <code>DamageBonus()</code> sources
|+ '''Damage riders'''
!Source
!Source
! Damage Bonus
! Damage Bonus
Line 176: Line 191:
|}
|}
<references>
<references>
<ref name="universal">These '''damage riders''' are universal. They will apply to any damage source, even damage '''detached''' from an attack or spell.</ref>
<ref name="universal">These '''damage riders''' are '''universal''' (see below).</ref>
<ref name="spellmight">Prior to Patch 4, this worked with ''any'' direct damage spell. More testing is needed to see what it works with after Patch 4.</ref>
<ref name="spellmight">Prior to Patch 4, this worked with ''any'' direct damage spell. More testing is needed to see what it works with after Patch 4.</ref>
<ref name="shadow-cloaked">The Shadow-Cloaked Ring boosts both weapon and unarmed damage, but weapon damage is boosted using <code>CharacterWeaponDamage()</code>.</ref>
<ref name="shadow-cloaked">The Shadow-Cloaked Ring boosts both weapon and unarmed damage, but weapon damage is boosted using <code>CharacterWeaponDamage()</code>.</ref>
Line 182: Line 197:
</references>
</references>


== <code>DealDamage()</code>==
The top 5 '''damage riders''' in the above list are '''universal'''. They will apply to any damage instance, even ones '''detached''' from a spell or attack. All the other '''damage riders''' involve conditions like <code>IsSpell()</code> or <code>IsMeleeAttack()</code> so any damage instance that is not a part of a spell or weapon attack cannot be boosted by these non-'''universal damage riders'''. Status effect damage like {{Cond|Simple Toxin}} is an example of damage '''detached''' from any attack or spell that can only be boosted by '''universal damage riders'''. See below for a more detailed discussion of '''detached''' damage instances.
 
== Damage rider sources ==
Damage bonus implemented with <code>DealDamage()</code> (i.e. '''Damage rider sources''') are the underlying cause for much of the unintuitive damage mechanics in Baldur's Gate 3.
 
All attacks or damaging spells are implemented using <code>DealDamage()</code>, so any damage bonus implemented using that same function will behave somewhat like an independent attack or spell.
Importantly, this means that '''damage rider sources''' can potentially trigger each other causing an exponential explosion in the number of damage instances (with the right combination of '''DRS''' effects).
As previously stated, adding '''DRS''' effects to an attack will also multiple the effectiveness of '''damage riders'''.
 
=== Exponential behavior when combining DRS effects ===


=== Attached vs detached instances ===
=== Attached vs detached instances ===
There are two sub-categories of <code>DealDamage()</code> instances: '''attached''' and '''detached'''.
There are two sub-categories of '''DRS''' effects that determine how they interact with '''damage riders''': '''attached''' and '''detached'''.
*A <code>DealDamage()</code> 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 '''DRS''' effect '''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''' <code>DealDamage()</code> instance will appear separately in the damage log, not grouped with the triggering attack. '''DRS''' effects wind up detached because they call <code>DealDamage()</code> indirectly. For example:
*A '''detached''' instance will appear separately in the damage log, not grouped with the triggering attack. '''DRS''' effects wind up detached because they call <code>DealDamage()</code> indirectly. For example:
**When standing in a Burning surface, the {{RarityItem|Amulet of Elemental Torment}} will effectively add a {{DamageText|1d4|Fire}} '''DRS'''. The amulet's effect doesn't call <code>DealDamage()</code> directly, but instead calls <code>ApplyStatus(BURNING)</code>. On application, the {{Cond|Burning}} status effect calls <code>DealDamage()</code> immediately.
**When standing in a Burning surface, the {{RarityItem|Amulet of Elemental Torment}} will effectively add a {{DamageText|1d4|Fire}} '''DRS'''. The amulet's effect doesn't call <code>DealDamage()</code> directly, but instead calls <code>ApplyStatus(BURNING)</code>. On application, the {{Cond|Burning}} status effect calls <code>DealDamage()</code> immediately.
**To apply its {{DamageText|1d4|Thunder}} damage, the {{RarityItem|Punch-Drunk Bastard}} calls <code>CreateExplosion()</code> which then calls <code>DealDamage()</code>.
**To apply its {{DamageText|1d4|Thunder}} damage, the {{RarityItem|Punch-Drunk Bastard}} calls <code>CreateExplosion()</code> which then calls <code>DealDamage()</code>.
The practical difference between '''attached''' and '''detached''' '''DRS''' sources is that some '''damage rider''' effects will not apply to '''detached''' sources. For example, the {{DamageText|1d4|Fire}} damage instance from the Amulet of Elemental Torment is detached from the spell cast and thus will not get boosted by '''damage riders''' like {{RarityItem|Potent Robe}} or {{SAI|Elemental Affinity: Damage}} which explicitly apply only to spell/cantrip attacks. It will, however, be boosted by more '''universal''' damage riders like {{Cond|Arcane Charge}}.
The practical difference between '''attached''' and '''detached''' '''DRS''' sources is that some '''damage rider''' effects will not apply to '''detached''' sources. For example, the {{DamageText|1d4|Fire}} damage instance from the Amulet of Elemental Torment is detached from the spell cast and thus will not get boosted by '''damage riders''' like the [[Potent Robe]] or [[Elemental Affinity: Damage]] which explicitly apply only to spell/cantrip attacks. It will, however, be boosted by more '''universal''' damage riders like [[Arcane Charge (Condition)|Arcane Charge]].


=== Additional DRS sources from class features ===
=== DRS effects from class features ===
This is a list of class features that provide additional <code>DealDamage()</code> instances.
This is a list of class features that provide additional '''damage rider sources''' to attacks or spells.
{| class="wikitable" style="text-align:center;"
{| class="wikitable mw-collapsible mw-collapsed" style="width: 100%; text-align:center;"
|+Extra <code>DealDamage()</code> sources from class features
|+Extra '''damage rider sources''' from class features
!Feature
!Feature
!Class
!Class
Line 215: Line 239:
| style="text-align:left;" |  
| style="text-align:left;" |  
Also applies to all other Smite variants.
Also applies to all other Smite variants.
|-
|{{nowrap|{{SAI|Combat Inspiration}}}}<ref name="ci"/>
|Level 3<br>{{nowrap|{{Class|College of Valour|noparent=yes}}}}
|'''1d6''', '''1d8''', or '''1d10'''
|Consumes {{resource|bi}}
| style="text-align:left;" |
Bard must apply the buff to another character. The damage type is inherited from the weapon.
|-
|-
|{{nowrap|{{SAI|Colossus Slayer}}}}
|{{nowrap|{{SAI|Colossus Slayer}}}}
Line 257: Line 288:
<references>
<references>
<ref name="once-per-turn">If you attack outside of turn-based mode (for example, when initiating combat), the once-per-turn limitation is ignored.</ref>
<ref name="once-per-turn">If you attack outside of turn-based mode (for example, when initiating combat), the once-per-turn limitation is ignored.</ref>
<ref name="ci">{{SAI|Combat Inspiration}} currently has a bug that may prevent reapplying the buff after it has been used. Refer to [[Combat Inspiration#Notes|Notes]] for details.</ref>
</references>
</references>


=== Additional DRS sources attached to ordinary weapon attacks ===
=== DRS effects from weapons ===
This is a list of weapons that can get bonus '''attached''' <code>DealDamage()</code> instances with ordinary attacks. Since these damage instances are attached to a weapon attack, they will be boosted by applicable <code>DamageBonus()</code> sources.
This is a list of weapons that can get bonus '''attached''' '''damage rider sources''' with ordinary attacks. Since these damage instances are attached to a weapon attack, they will be boosted by applicable '''damage riders'''.
{| class="wikitable"
{| class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"
|+Extra '''attached''' <code>DealDamage()</code> sources for ordinary weapon attacks
|+Extra '''attached''' '''damage rider sources''' on ordinary weapon attacks
!Source
!Source
!Damage Bonus
!Damage Bonus
Line 314: Line 346:
|[[Proficiency Bonus]] {{DamageType|Necrotic}}
|[[Proficiency Bonus]] {{DamageType|Necrotic}}
|Requires and consumes a [[Reaction (Resource)|reaction]]; only applies while equipped in the main hand
|Requires and consumes a [[Reaction (Resource)|reaction]]; only applies while equipped in the main hand
|}
|}This is a list of weapons that can trigger bonus '''detached''' '''damage rider sources''' with ordinary attacks. Weapon attack related '''damage riders''' will not apply to these extra damage instances since they are not directly attached to a weapon attack. Only the '''universal''' '''damage riders''' will apply.
 
{| class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"
=== Additional detached DRS sources triggered by ordinary weapon attacks ===
|+Extra '''detached''' '''damage rider''' '''sources''' from ordinary weapon attacks
This is a list of weapons that can get bonus '''detached''' <code>DealDamage()</code> instances with ordinary attacks. Weapon attack related <code>DamageBonus()</code> sources will not apply to these extra damage instances since they are not directly attached to a weapon attack. Only the '''universal''' <code>DamageBonus()</code> sources will apply.
{| class="wikitable"
|+Extra '''detached''' <code>DealDamage()</code> sources from ordinary weapon attacks
!Source
!Source
!Damage Bonus
!Damage Bonus
Line 337: Line 366:
|}
|}


=== Additional DRS sources attached to weapon actions ===
=== DRS effects from weapon actions ===
This is a list of <code>DealDamage()</code> sources from special [[Weapon actions]]. These sources are inherently more limited by nature of being once-per-short-rest actions.
This is a list of '''damage rider sources''' from special [[Weapon actions]]. These sources are inherently more limited by nature of being once-per-short-rest actions.
{| class="wikitable"
{| class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"
|+Extra <code>DealDamage()</code> sources from once-per-short-rest Weapon Actions
|+Extra '''damage rider sources''' from once-per-short-rest Weapon Actions
!Source
!Source


Line 392: Line 421:
|}
|}


=== Additional DRS sources that can apply to spells ===
=== DRS effects for spells ===
There are a limited number of DRS effects that work with spells or cantrips, particularly '''attached''' effects. However, many spells have built in ways of dealing multiple damage instances. For example:
There are a limited number of '''DRS''' effects that work with spells or cantrips, particularly '''attached''' effects. However, many spells have built in ways of dealing multiple damage instances. For example:
* Multi-hit spells like {{SAI|Magic Missile}} or {{SAI|Scorching Ray}} deal separate damage instances for each projectile.
* Multi-hit spells like {{SAI|Magic Missile}} or {{SAI|Scorching Ray}} deal separate damage instances for each projectile.
* Spells with multiple damage types like {{SAI|Ice Knife}} or {{SAI|Flame Strike}} deal separate damage instances for each damage type.
* Spells with multiple damage types like {{SAI|Ice Knife}} or {{SAI|Flame Strike}} deal separate damage instances for each damage type.


Below is a list of '''attached''' DRS sources that work with spells.
Below is a list of '''attached''' '''DRS''' effects that work with spells.
{| class="wikitable"
{| class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"
|+Extra '''attached''' <code>DealDamage()</code> sources that work with spells
|+Extra '''attached''' '''damage rider sources''' that work with spells
!Source
!Source
!Damage Bonus
!Damage Bonus
Line 425: Line 454:
|}
|}
In Patch 3, {{SAI|Sneak Attack}} could apply to attack roll spells, but this was changed in Patch 4.
In Patch 3, {{SAI|Sneak Attack}} could apply to attack roll spells, but this was changed in Patch 4.
Below is a list of '''DRS''' effects that work with spells, but create '''detached''' damage instances.
Again, the only way to boost these damage instances is with the '''universal damage riders'''.
{| class="wikitable mw-collapsible mw-collapsed" style="width: 100%;"
|+Extra '''detached''' '''damage rider sources''' that work with spells
!Source
!Damage Bonus
!Notes
|-
|{{nowrap|{{RarityItem|Amulet of Elemental Torment}}}}
|{{DamageText|1d4|Fire}} or {{DamageText|1d4|Acid}}
|The wearer must be standing in a [[Fire Surface]] or in [[Caustic Brine]]. Spell damage will inflict {{Cond|Burning}} or {{Cond|Caustic Brine}} respectively which will immediately apply the first tick of '''1d4''' damage.
|-
|{{nowrap|{{Cond|Gaping Wounds}}}}
|{{DamageText|2|Piercing}}
|Does not work with spells or abilities that use a {{Saving throw}} rather than an {{Attack roll}}.
|}


== Glossary ==
== Glossary ==
Line 430: Line 476:


* '''Attached''': A damage instance attached to an attack or spell in the damage log.
* '''Attached''': A damage instance attached to an attack or spell in the damage log.
* '''Attack damage''': A damage bonus implemented with <code>WeaponDamage()</code> or similar functions. These bonuses are well-behaved and will only ever apply once per attack.
* '''Damage rider''': A damage bonus implemented with <code>DamageBonus()</code>. These bonuses can potentially apply many times in a single attack since they boost each independent damage instance.
* '''Damage rider''': A damage bonus implemented with <code>DamageBonus()</code>. 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 <code>DealDamage()</code>. These bonuses create an independent damage instance instead of adding damage to an existing instance.
* '''Damage rider source''': A damage bonus implemented with <code>DealDamage()</code>. These bonuses create an independent damage instance instead of adding damage to an existing instance.
Line 436: Line 481:
* '''DRS''': See '''damage rider source'''
* '''DRS''': See '''damage rider source'''
* '''Universal damage rider''': A '''damage rider''' that doesn't have conditions like <code>IsSpell()</code> and can boost even '''detached''' damage instances.
* '''Universal damage rider''': A '''damage rider''' that doesn't have conditions like <code>IsSpell()</code> and can boost even '''detached''' damage instances.
* '''Weapon rider''': A damage bonus implemented with <code>WeaponDamage()</code> or similar functions. These bonuses are well-behaved and will only ever apply once per attack.

Navigation menu