Friday, August 8, 2014

Game Design (X): Balancing monster defenses, resistances

One of my favorite innovations in 4E is the fact that, unlike previous iterations of the game, there are well defined formulas for combat math, and they are nicely laid out in the DMG for DMs and players to see. This is great for making informed decisions regarding character building or combat tactics, but there is a flaw in the plan: some very relevant stats are left out of the fun. It’s straightforward to find out when you have a good AC, or how much damage it takes to kill a monster of your level, but once you need to know whether you should take an attack power that targets Fortitude or Will or which flavor to choose for an Armor of Resistance, you are out of luck. In today’s article, I will discuss how the contents of a Monster Manual can affect character effectiveness, and suggest ways to make this influence more consistent, predictable, and transparent to the players.

The problem

There are two problem areas: defenses and damage types. I will address them in order. The issue with defenses lies in a lack of definition of their relative importance - looking at the DMG tables, one can’t tell that there’s any difference in expected values between Fortitude, Reflex, and Will. It turns out that, although the values for average defenses are well known, there are no useful guidelines regarding which defenses should be stronger or weaker for a given set of monsters. The DM guide actually suggests deriving this from the monster Ability scores, which are mostly useless stats with arbitrary values to begin with. For practical purposes, defense generation using this method can be modeled as a random process. If this randomness resulted in an even distribution across different defenses, it would all work out just fine, and I wouldn’t be writing this. Unfortunately, when we look at the data, monsters have a tendency to be big, dumb brutes (regardless of whether they are actual Brutes), and as a consequence, average defenses skew heavily towards strong Fortitudes and weak Wills. This means that a player character picking an attack power that targets Fortitude will be at a significant disadvantage (equivalent to roughly a -2 penalty to hit!) compared to an attack power that was otherwise identical but targeted Will instead. This is a huge difference, and one that isn’t documented anywhere on the PHB or the DMG - you’ll only find it by checking the stats of monsters in your Monster Manual (or, for that matter, in your adventures), and averaging them out.

Conversely, the defenses targeted by monster powers don’t seem to follow any rules other than what feels right to the designer in each case. One would expect AC to be the target for most attacks, with Fortitude, Reflex and Will taking an even share of the rest. However, this is only true in part: AC seems to be the predominant defense, with Fortitude and Reflex showing in similar numbers, but Will tends to be underrepresented.

Similar issues arise when we look at damage types: the types resisted by monsters (or that they are vulnerable to) and the types used by monster attacks are chosen on a case-by-case basis. And, again, this results in highly skewed numbers. For most damage types, resistances and vulnerabilities only show up in small numbers, but there are a few major outliers: there are a lot of monsters that are resistant or immune to Poison and Necrotic (and, to a lesser degree, Fire), or vulnerable to Radiant damage. This is mostly due to the Undead effect: Undead represent a very important portion of the monster population, and are almost universally resistant to Poison and Necrotic damage, and vulnerable to Radiant. Thus, we can conclude that player powers using Radiant damage will have a significant advantage over the rest, whereas Poison and Necrotic powers are severely crippled. Once again, this is an undocumented feature. As for the damage types used in monster attacks, there is a predominance of Fire, Necrotic, Poison and Psychic damage, relative to other types. That said, this is a far less relevant issue than the previous ones, as it only comes into play in the relatively rare scenarios where player characters have resistances.

What should be done

With the above points in mind, I have defined some requirements that a fixed system should have:

  • A predictable distribution of defense values and resistances/vulnerabilities for monsters. This distribution should be known to players and DMs, so that they can properly evaluate each defense or damage type.
  • A method to generate this distribution in newly-designed monsters.
  • A low-effort method to retrofit current monsters to use this distribution.
  • Equivalency between defenses and between damage types. I strongly believe that Fortitude, Reflex, and Will values for monsters should have similar values, on average. Likewise, each damage type should be, on average, equally useful in damaging monsters.
  • Monster stats should make sense and meet player expectations.

On the other hand, I have given up on some related issues, as I think they harder to solve, and not relevant enough to be worth the effort:

  • Balanced distribution of damage types in monster attacks
  • Balanced distribution of targeted defenses in monster attacks

Fixing monster defenses

I should start by clarifying that, when I talk about monster defenses, I refer to fortitude, reflex, and will. AC works properly under the current rules, and will need no further tweaking on my part. With that said, “just” fixing fortitude, reflex and will is a daunting task, as it involves adjusting stats for all of the thousands of monsters out there. The only realistic way to achieve this is by generating these stats from simple rules derived from some monster property, such as race or role. Here, I monster role becomes the natural fit for defense generation, since it is already used for other basic stats such as AC, hit bonuses, or damage.

For simplicity’s sake, we’ll assume that all monster roles show up in similar numbers. This is not entirely accurate, as Artillery and Lurker monsters are underrepresented, appearing only half as often as other monster roles in the monster manuals. Nevertheless, I consider this a good enough approximation for now - and I will try, at some point in the future, to study this role disparity  and maybe try to address it too.

Anyway, the new defense generation guidelines work as follows: for each of Fortitude, Reflex, and Will, a monster role can have an “average” score (the defense value suggested by the DMG tables), a “strong” score (equal to the average score + 1) or a “weak” score (equal to the average score -1). In order for all defenses to be roughly balanced, each defense will have as many roles with “strong” scores as with “weak” scores. I suggest the following values:

  • Soldier: Strong Fortitude, Average Reflex, Average Will
  • Brute: Strong Fortitude, Weak Reflex, Average Will
  • Skirmisher: Weak Fortitude, Strong Reflex , Average Will
  • Controller : Average Fortitude, Weak Reflex, Strong Will
  • Lurker: Average Fortitude, Strong Reflex , Weak Will
  • Artillery: Weak Fortitude, Average Reflex, Average Will

I included AC values to give a better view of each role’s relative defenses. If we organize the scores by defense rather than by role, they look as follows:

  • Fortitude:
    • Strong for Soldiers, Brutes
    • Weak for Skirmishers, Artillery
  • Reflex:
    • Strong for Skirmishers, Lurkers
    • Weak for Brutes, Controllers
  • Will
    • Strong for Controllers
    • Weak for Lurkers

Note that, although each defense has equivalent scores on average, some show different degrees of variance. In particular, Will has a single Strong and Weak role (rather than 2 of each, like the other roles). This lets me give the Soldier role above-average defenses (with no weak score), and the Artillery role below-average defenses (with no strong score).

These values should provide a good baseline that can be applied to all existing monsters, or be used when designing new ones. As an option to add some variety, I suggest applying a +1 modifier and a -1 modifier to any two defenses (other than AC) to each individual monster, as the designer or DM sees appropriate.

Fixing monster resistances

Under the current rules, damage types are unbalanced because certain large groups of monsters get built-in resistances or vulnerabilities. Removing these resistances/vulnerabilities is not a very compelling option: on the one hand, they add a good deal of flavor and variety to monsters and, on the other, there is little point in having a damage type system unless we embrace resistances and vulnerabilities in monsters. The solution, then, is to go the opposite route, with a caveat. We will add many new group-wide resistances and vulnerabilities, but ensuring that for every damage type that is resisted by a monster group, there is another monster group of comparable size that is vulnerable to it (and vice versa). The result should be a system where damage types are relevant more often, but without having types that are clearly stronger or weaker than the rest.

We use the following assumptions as a starting point:

  • Most Undead monsters are vulnerable to Radiant damage, resistant to Necrotic damage, and immune to Poison. About 15% of monsters in the game are Undead.
  • Many monsters are resistant to Fire damage, including Devils and Fire-based monsters.

We decided to apply the following changes:

  • To streamline monster design, we implement resistance/vulnerability guidelines. Whenever the majority of a monster group tends to have a resistance or vulnerability, we make an explicit rule stating that all monsters of the group should have that trait. Hence:
    • Undead monsters have Vulnerable Radiant
    • Devil and Tiefling monsters have Resist Fire
    • Ooze monsters have Resist Acid
  • To balance damage types, we change some current resistance/vulnerability guidelines, and add some new ones as well:
    • Undead and Construct monsters have Resist Poison (instead of immunity)
    • Fey, Plant, and Swarm monsters have Vulnerable Poison
    • Aberrant, Immortal, Blind and Plant monsters have Resist Radiant
    • Shadow monsters have Vulnerable Radiant, Resist Necrotic
    • Undead monsters that are not of Shadow origin no longer have Resist Necrotic
    • Immortal monsters have Vulnerable Necrotic
    • Fire monsters have Resist Fire (in some cases instead of immunity), Vulnerable Cold
    • Cold monsters have Resist Cold
    • Cold and Plant monsters have Vulnerable Fire
    • Water monsters have Resist Acid
    • Construct monsters have Vulnerable Acid
  • Finally, we add a few resistances/vulnerabilities for flavor purposes
    • Aberrant monsters have Vulnerable Psychic
    • Construct, Plant and Eladrin monsters have Resist Psychic
    • Dwarf monsters have Resist Poison

If our proposed rules for resistances and vulnerabilities are used, these are resistances/vulnerabilities with no damage limit. Otherwise, add a resist/vulnerable value appropriate to the monster’s level (e.g. 5 per tier).

Our balancing takes into account the number of monsters of each type currently in the Compendium. You can check out the numbers we used in this spreadsheet. It is not really possible to achieve a perfect match between monster types and damage types without introducing some awkward flavor, so a few damage types still have a predominance of resisting monsters or vulnerable monsters. In particular, Poison slightly weaker than average, while Radiant leans on the stronger side. However, this effect is much smaller than with the previous rules, and not as one-sided - Poison becomes very useful against some fairly common monster types, whereas Radiant loses a lot of effectiveness against many foes.

To be honest, my ideal system for damage types would involve cutting the number of types by half or so, but that would take even more effort, and destroy any semblance of backward compatibility.

With our suggested changes, the resistances and vulnerabilities for each damage type end up as follows:

  • Poison -  R: Construct, Undead, Dwarf; V: Fey, Plant, Swarm
  • Radiant - R: Aberrant, Immortal, Blind; V:Undead, Shadow
  • Psychic - R: Construct, Plant, Eladrin; V: Aberrant
  • Necrotic - R: Shadow; V: Immortal
  • Fire - R: Fire, Devil, Tiefling; V: Plant, Cold
  • Acid - R: Ooze, Water; V: Construct
  • Cold - R: Cold, V: Fire
  • Lightning, Thunder, Force - no group-wide resistances or vulnerabilities.

Or, organized by monster type:

  • Undead - R: Poison; V: Radiant
  • Fey - V: Poison
  • Immortal - R: Radiant; V: Necrotic
  • Shadow - R: Necrotic; V: Radiant
  • Aberrant - R: Radiant; V: Psychic
  • Devil - R: Fire
  • Construct - R: Poison, Psychic; V: Acid
  • Blind - R: Radiant
  • Fire - R: Fire; V: Cold
  • Cold - R: Cold; V: Fire
  • Ooze - R: Acid
  • Plant - R: Radiant, Psychic; V: Poison, Fire
  • Water - R: Acid
  • Tiefling - R: Fire
  • Eladrin - R: Psychic
  • Dwarf - R: Poison

A note on Variable Resistance

A monster mechanic that is very relevant to the topic at hand but hasn’t been considered so far is the trait shared by all Demon monsters, Variable Resistance. The wording on this ability is rather ambiguous, and depending on your interpretation, Variable Resistance can vary in effectiveness between a minor, situational boost, to an almost permanent resistance for the five elemental damage types. I suggest using a new wording for this ability that makes it less ambiguous and a bit weaker, so that it can be considered as neutral for the purposes of damage type balance. 

Variable Resistance - At-Will - Free Action
Trigger: The character takes damage of one or more elemental damage types (elemental damage types are acid, cold, fire, lightning, thunder).
Effect: Choose one of the triggering damage types at random. After the damage is resolved, and until the end of the encounter, the character and all allies with this ability gain Resist against that damage type, and Vulnerable against another elemental damage type chosen at random. This effect ends when the monster or an ally use Variable Resistance again.

Note: A character with this ability must use it whenever it triggers. If the ability would trigger simultaneously for several allied characters, only one of them chosen at random can use it.

Read More......

Saturday, April 5, 2014

Game Design (IX): Resistances and Vulnerabilities

A wizard casting an elemental protection spell on his allies. An skeleton shrugging off an assassin’s poisoned blade. A walking tree consumed by a fireball. Resistances, vulnerabilities and mechanics that care about types of damage in general are a great way to add flavor and variety to a game. On top of that, they open up some neat tactics and interactions: casting elemental bursts centered on top of a conveniently surrounded fighter with an Armor of Resistance, figuring out how to make the most of a few Acid Flasks when fighting a band or trolls, moving a tiefling character into flaming terrain…

And yet, not all is well with the way 4E handles these elemental rules. Figuring out attacks with multiple energy types against characters with many resistances or vulnerabilities is far from intuitive, and too favourable for the multicolored attack powers. Mundane attacks are left out of the fun, due to the lack of a way to define physical resistance. And attacks that deliver damage in multiple small packages (such as ongoing damage, or sustainable zones) are excessively affected by both resistances and vulnerabilities, which tend to make them harmless or overpowered, respectively. And don’t get me started about the unholy mess that is the immunity definition.

Veteran readers will remember that I dealt with most of these issues in a past post. Today’s installment follows the same principles, but  proposing a full redefinition for these rules (rather than a mere patch to be used with the existing books). This way, we get cleaner and more balanced mechanics, and open up some new design space, at the cost of requiring very minor tweaks to work with existing monsters and player material.

To summarize, these are the main issues that I want the new rules to deal with:

  • Remove scenarios where resistances/vulnerabilities become either too good, or irrelevant.
  • Simplify interaction between multiple resistances/vulnerabilities and multiple damage types.
  • Change balance of multiple resistances/vulnerabilities so that having attacks with multiple damage types is not always the best strategy.
  • Allow resistances/vulnerabilities to scale automatically with level
  • Enable resistances/vulnerabilities for physical damage.
  • Clarify Immunity rules.
  • Balance Insubstantial rules.

The new rules are described below.

Character Traits

Resistance

A character with Resistance takes reduced damage from attacks or effects with a certain Damage Type. A Resistance always includes the Damage Type to which it applies. Optionally, a Resistance can also include a numeric Limit for the damage it can mitigate, and a Condition that must be met to apply the resistance.

A Resistance works as follows: for each attack, if the Condition is met (or there is no Condition), damage of the specified Damage Type is reduced either by half or by the Limit, whichever value is lowest. In addition, a character can also apply a Resistance against environmental effects that deal damage but are not attacks; against such effects, damage of the specified Damage Type is reduced by the Limit or, if the Resistance has no Limit, the damage is completely negated.

From the above definition, we have four possible ways to specify a Resistance:

  • Resist Damage_Type
  • Resist Damage_Type (Condition)
  • Resist Damage_Type (Limit)
  • Resist Damage_Type (Limit) (Condition)

Designer’s Note: The way Resistances work against environmental effects is different from how they apply against attacks (or, for that matter, how Vulnerabilities work against environmental effects). The purpose of this rule is to allow creatures with elemental resistance to survive in areas of elemental hazard.

Examples of resistances:

  • Resist Fire
  • Resist Physical (No Advantage)
  • Resist Poison 5
  • Resist All 5 (Not Silvered)

The elements of a resistance are described as follows:

  • Damage Type: The damage type against which the resistance is applied. This must be a valid damage type, or “all” if the resistance applies to all damage regardless of type.
  • Limit: The maximum amount of damage that can be mitigated by this resistance. This is a number, usually a multiple of 5. If no limit is specified, the resistance always mitigates half of the damage dealt from an attack (or, if the damage is not dealt by an attack, all of the damage). Note that a resistance can never mitigate more than half the damage from an attack, regardless of its limit.
  • Condition: A resistance with a condition only applies against damage that meets that condition. The most common types of conditions are:
    • No Advantage: Damage from an attack without Combat Advantage
    • Critical: Damage from a critical hit.
    • Ongoing: Ongoing damage.
    • Not Silvered: Damage from an attack not using a Silvered weapon or implement.
    • Not Epic: Damage from an attacker of level lower than 21.
    • Not Paragon: Damage from an attacker of level lower than 11.

Vulnerability

A character with Vulnerability takes 50% extra damage from attacks or effects with a certain Damage Type. A Vulnerability always includes the damage type to which it applies. Optionally, a Vulnerability can also include a numeric Limit for the damage it can add, and a Condition that must be met to apply the Vulnerability.

A Vulnerability works as follows: for each attack, if the Condition is met (or there is no Condition), damage of the specified Damage Type is increased either by half or by the Limit, whichever value is lowest. In addition, Vulnerabilities also apply for environmental effects that deal damage but are not attacks, increasing damage of the specified Damage Type either by half or by the Limit, whichever value is lowest.

From the above definition, we have four possible ways to specify a Vulnerability:

  • Vulnerable Damage_Type
  • Vulnerable Damage_Type (Condition)
  • Vulnerable Damage_Type (Limit)
  • Vulnerable Damage_Type (Limit) (Condition)

Examples of vulnerabilities:

  • Vulnerable Fire
  • Vulnerable Cold (Advantage)
  • Vulnerable Poison 5
  • Vulnerable All 5 (Critical)

The elements of a Vulnerability are described as follows:

  • Damage Type: The damage type against which the Vulnerability is applied. This must be a valid damage type, or “all” if the Vulnerability applies to all damage regardless of type.
  • Limit: The maximum amount of damage that can be added by this Vulnerability. This is a number, usually a multiple of 5. If no limit is specified, the resistance always adds half of the damage dealt from a source. Note that a Vulnerability can never add more than half the damage from an given source, regardless of its limit.
  • Condition: A Vulnerability with a condition only applies against damage that meets that condition. The most common types of conditions are:
    • Advantage: Damage from an attack with Combat Advantage
    • Critical: Damage from a critical hit.
    • Ongoing: Ongoing damage.
    • Silvered: Damage from an attack using a Silvered weapon or implement.
    • Epic: Damage from an attacker of level 21 or higher .
    • Paragon: Damage from an attacker of level 11 or higher.

Resistance reduction

A character with Resistance Reduction can partially ignore enemy resistances against a certain Damage Type when attacking. A Resistance Reduction always includes the Damage Type to which it applies, and a Value for the amount of resistance that can be reduced. Resolve attacks with Resistance Reduction as follows.

  • If the defending character has no Resistance for the Damage Type of the Resistance Reduction, nothing happens. The attack resolves as normal.
  • If the defending character has Resistance for the Damage Type of the Resistance Reduction, and the Resistance has no Limit, the defending character becomes Vulnerable against that Damage Type. This vulnerability has a Limit equal to the Value of the Resistance Reduction.
  • If the defending character has Resistance for the Damage Type of the Resistance Reduction, and the Resistance has a Limit, the defending character becomes Vulnerable against that Damage Type. This vulnerability has a Limit equal to either the Value of the Resistance Reduction, or the Limit of the Resistance, whichever is lower.

Damage Immunity

A character with a Damage Immunity ignores damage from attacks or effects with a certain Damage Type. A Damage Immunity always includes the Damage Type to which it applies.

The elements of a Damage Immunity are described as follows:

  • Damage Type: The damage type to which the Immunity is applied. This must be a valid damage type. Note that “all” is NOT a valid type for a damage immunity.

Example of damage immunity:

  • Damage Immune: Poison

Condition Immunity

A character with a Condition Immunity ignores a negative condition. A Condition Immunity always includes the Character Condition to which it applies. Optionally, it can also include an activation Condition that must be met to apply the Immunity.

The elements of a Condition Immunity are described as follows:

  • Character Condition: The character condition against which the immunity is applied. This can be a condition from the list defined here. In addition, this can also have as a value “forced movement”, in which case it makes the character immune against push, pull and slide effects .
  • Condition: The immunity only applies against attacks or effects that meet the specified condition.

Example of condition immunity:

  • Condition Immune: Stunned
  • Condition Immune: Forced Movement (no burst/blast)

Nondamage Immunity

A character with Nondamage Immunity ignores all effects other than damage from attacks with a certain keyword. A Nondamage Immunity includes the Keyword to which it applies.

The elements of a Nondamage Immunity are described as follows:

  • Keyword: The keyword against which the immunity is applied. Attack keywords include damage type keywords, and others such as Fear, Charm, or Gaze.

Example of nondamage immunity:

  • Nondamage Immune: Poison
  • Nondamage Immune: Charm

Damage Trigger

A character with a Damage Trigger generates a special effect when receiving damage of a certain Damage Type. A Damage Trigger always includes the Damage Type which triggers it. . Unless otherwise stated, a Damage Trigger is applied after the attack or effect causing the damage is fully resolved. Damage Triggers are mandatory, and require no action to resolve.

The elements of a Damage Immunity are described as follows:

  • Damage Type: The damage type which triggers the Damage Trigger.

Example of damage trigger:

  • Damage Trigger Cold: The character is slowed until its end of its text turn.

Designer’s Note: Damage Trigger is intended to cover all previously existing Vulnerabilities that had an effect other than adding damage, e.g. Vulnerable Cold: Slowed until end of turn. Now Vulnerabilities will be limited to extra damage, and other effects will be treated as Damage Triggers.

Insubstantial

A character with Insubstantial gains the following abilities:

  • Resist physical
  • Resist non-physical (no Advantage)
  • Vulnerable all (Advantage)

Example: A creature with insubstantial would take damage as follows:

  • Physical or non-physical, no Advantage: Reduce by half
  • Physical, with Advantage: normal damage
  • Non-physical, with Advantage: Increase by half

Swarm

A character with Swarm gains the following abilities:

  • Resist all (no burst/blast)
  • Vulnerable all (burst/blast)
  • Vulnerable Poison
  • Condition Immune: Forced Movement (no burst/blast)

Example: A creature with Swarm would take damage as follows:

  • non-Poison, not a burst or blast: Reduce by half
  • Poison, not a burst or blast: normal damage
  • Any type, burst or blast: increase by half

Regiment

A character with Regiment gains the following abilities:

  • Resist all (no burst/blast)
  • Vulnerable all (burst/blast)
  • Vulnerable Psychic
  • Condition Immune: Forced Movement (no burst/blast)

Designer’s Note: Regiment is a new keyword, intended to provide swarm-like rules for huge groups of humanoid monsters. It should allow DMs to use lower level humanoids as opponents to Paragon or Epic parties, without needing to resort to Minions.

 

 

Resistances, Vulnerabilities and Immunities in combat

The base rules for Resistances, Vulnerabilities and Immunities (described above, under Character Traits) can be directly applied on most combat scenarios. However, some clarification is needed when using creatures with multiple Resistances and Vulnerabilities, or when resolving attacks with multiple damage types. This section provides guidelines for these special cases.

Default damage type: Physical Damage

When an attack or effect deals damage without specifying a damage type, that damage has the physical damage type.

An attack or effect with multiple damage types can also have physical as one of its damage types. In that case, “physical” must be explicitly listed among the damage types for that source.

Physical damage works like other damage types for the purpose of resistances, vulnerabilities, and other effects, with one important exception: whenever an ability or effect allows a player to “choose a damage type”, that player cannot choose physical damage as an option. If the ability or effect allows to “choose a damage type, including physical”, then physical becomes a valid option.

Choosing between multiple Resistances or multiple Vulnerabilities

If a creature has multiple Resistances or multiple Vulnerabilities that can apply against the same damage type, proceed as follows:

  • Discard Resistances or Vulnerabilities whose Condition is not met.
  • Of the remaining Resistances, if there is one that has no Limit, choose that one. Otherwise, choose the one with the highest Limit. If multiple Resistances are tied (with no Limit, or with the highest limit), you can choose any one of them.
  • Of the remaining Vulnerabilities, if there is one that has no Limit, choose that one. Otherwise, choose the one with the highest Limit. If multiple Vulnerabilities are tied (with no Limit, or with the highest limit), you can choose any one of them.

Example: An attack without Advantage deals 27 Fire to a creature that has the following resitances

  • Resist Fire (Advantage)
  • Resist 10 Fire
  • Resist 5 All

Of these, we discard the first one because its condition is not met. From the remaining ones, the Resist 10 Fire has the highest Limit, so we choose that one. The damage is reduced by 10 (since the Limit is lower than half of 27). If the attack had Advantage, no resistance would be discarded, and we would choose the first one, Resist Fire (Advantage), which has no Limit. The damage would then be reduced by 13.

Simultaneously Applying Resistances and Vulnerabilities

If a creature has both a Resistance and a Vulnerability that can apply against the same damage type, proceed as follows:

  • Calculate the damage mitigated by the Resistance, using the original damage as reference.
  • Calculate the damage added by the Vulnerability, using the original damage as reference.
  • The final damage is equal to the original damage, minus the damage mitigated by Resistance, plus the damage added by the Vulnerability.

If a creature has both an Immunity and a Vulnerability that can apply against the same damage type, the Immunity prevails, and the creature receives no damage of that type.

Example: An attack deals 17 Fire damage to a creature with Resist Fire, and Vulnerable 5 Fire. The Resistance mitigates 8 damage (half of 17), and the Vulnerability adds 5 damage (since the Limit of 5 is lower than half the original damage). The total final damage is 17-8+5=14 Fire damage.

  • Note that when applying a Resistance and a Vulnerability without Limits, or a Resistance and a Vulnerability with the same Limits, the final damage will be equal to the original damage.

Resolving attacks with multiple damage types

If a creature receives damage with multiple damage types, proceed as follows:

  • Make a list of all damage types for that damage source.
  • To calculate the damage added from Vulnerabilities, choose the two damage types in the list for which the creature has the highest Vulnerabilities. For each of these damage types, calculate the damage added by its corresponding Vulnerability. The total added damage is equal to the sum of the damages added by these two Vulnerabilities, divided by two.
  • To calculate damage mitigation from Resistances, choose the two damage types in the list for which the creature has the highest Resistances. As a special case, if the creature has Damage Immunity against a damage type in the list, treat it as a Resistance that mitigates damage equal to 100% of the original damage. For each of these damage types, calculate the damage mitigated by its corresponding Resistance. The total mitigation is equal to the sum of the damages mitigated by these two Resistances, divided by two.
  • The final damage is equal to the original damage, minus the damage mitigated by Resistances, plus the damage added by the Vulnerabilities.

Example 1: An attack deals 17 Fire and Cold damage to a creature with Resist Fire, and Vulnerable 5 Cold. For the Vulnerability calculation, we choose Cold (+5 damage) and Fire (+0 damage) as types, for a total of (5+0)/2=2 added damage. For the Resistance calculation, we choose Fire (8 damage) and Cold (0 damage), for a total of (8+0)/2= 4 mitigated damage. The total final damage is 17-4+2=15 damage.

Example 2: An attack deals 17 Fire, Cold and Acid damage to a creature with Damage Immune: Fire, Vulnerable 5 Cold, and Vulnerable Acid. For the Vulnerability calculation, we choose Cold (+5 damage) and Acid (+8 damage) as types, for a total of (5+8)/2=6 added damage. For the Resistance calculation, we choose Fire (17 damage) and Cold (0 damage), for a total of (17+0)/2= 8 mitigated damage. The total final damage is 17-8+6=15 damage.

Example 3:: An attack deals 17 Fire and Cold damage to a creature with Resist Fire, and Resist All 5. For the Resistance calculation, we choose Fire (8 damage) and Cold (5 damage, from Resist All 5), for a total of (8+5)/2=6 mitigated damage.

Changing the damage type of an attack

When an effect allows a character to change the damage type of an attack, resolve it as follows, depending on the text of the effect:

  • The attack gains (damage type) as an additional damage type: Add the new damage type to the list of types the attack previously had. If the attack had no explicit damage type (i.e. it dealt physical damage), the attack now has the new type and physical as its damage types.
  • The attack becomes (damage type) instead of its previous damage types: Replace all the previous damage types with the new type.

Designer’s note: By default, most game effects should add damage types rather than replace. Items like Flaming Swords should be adjusted to read as adding a new type, and replacement should be reserved to truly exceptional cases.

Adding extra damage to an attack

When an effect adds extra damage to a character’s attack, resolve it as follows depending on whether the extra damage is of a specific damage type:

  • If no damage type is indicated for the extra damage, simply add this extra damage to the damage of the original attack. The attack’s damage types remain unaffected.
  • If the extra damage has one or more damage types, add these types to the types of the original attack, and the extra damage to the damage of the original attack.
Read More......