Boss HP
To determine the boss's baseline HP, you calculate the total party damage throughput (TPT) per second, times the desired duration of the fight in seconds. A typical boss fight is 3 minutes, so 180 seconds is the starting point.
To get this TPT number, we first need to get the throughput of each party member. I'll use a running example to create a typical boss for a fight against a classic 5 player, level 60, dungeon ready team. No movement or adds. The boss hits the Tank hard and has high HP.
Total melee throughput will include white damage and yellow damage, adjusted by gear stat modifiers and our friction modifiers above.
Example Party
Tank, Healer, 2 Melee DPS, and 1 Ranged DPS/physical (we'll not factor in spell power just yet for simplicity). Here are our primary damage stats:
| Member | Weapon DPS (DR) | Weapon DPS Offhand (DR) | AP |
|---|---|---|---|
| Tank | 58.4 | — | 187.5 |
| Healer | — | — | 75 |
| Melee DPS #1 | 58.4 | 29.2 | 300 |
| Melee DPS #2 | 58.4 | 29.2 | 300 |
| Ranged DPS/phys | 58.4 | — | 300 |
Calculating Total Party Throughput (TPT)
The average damage output of a character using passive (automatic) weapon attacks only. This is the average Weapon DPS (taking into account level, quality, handedness, and dual-wielding) combined with the AP Bonus DPS (Attack Power ÷ 14), being sure to use the "dungeon ready" gear adjusted value for AP (Adjusted AP = AP × 1.25).
Tank
Our tank needs to keep the offhand free for a shield, so we can use this simple formula:
Ranged DPS (Physical)
For this example we can consider the bow in the same medium weapon size category as a sword, so similar formula, but higher AP than a tank:
Melee DPS ×2
Keeping in mind the additional offhand damage for dual wielding (50% of Main hand), since our DPS is the same but halved, we just apply a 1.5× modifier to the formula:
Next, apply the ability modifier to our white damage values above. This is a static modifier to represent active damage done through the party member's ability rotation: Tank 1.4×, Melee DPS and Ranged DPS (Physical) 2.0×.
Tank
Ranged DPS (Physical)
Melee DPS ×2
The last step is adding level friction from missed attacks and glancing blows (again, we'll skip spell resistance for now).
Tank
For Tank and Melee DPS, we'll apply both Miss and Glance modifiers.
Ranged DPS (Physical)
Our Ranged DPS doesn't have to worry about Glance modifiers.
Melee DPS ×2
We can finally add up our damage to get our total party throughput, being sure to double our Melee DPS since we have 2 in the party.
Now that we know our TPT, we just multiply that by 180 seconds, the desired duration of our fight, to determine the baseline hitpoints of our typical boss:
Calculation Summary
| Step | Evaluation | Calculation Logic |
|---|---|---|
| 1 | Weapon Rarity | Apply weapon rarity modifier to base dps, e.g. 1.25× for a Rare (Blue) weapon |
| 2 | Handedness | Apply 1.3× to DPS if weapon is 2-handed |
| 3 | Base White DPS | (Weapon DPS) + (AP ÷ 14) |
| 3 | Dual Wielding | If dual wielding, apply a 1.5× modifier to account for offhand damage |
| 3 | Yellow Damage | Apply Rotation Multiplier, e.g. 2.0× for DPS |
| 4 | Level Friction | Apply Miss (0.91) and Glance (0.88) modifiers if applicable |
| 5 | TPT Calculation | ∑(Effective DPS of all 5 members) |
| 6 | Boss HP | TPT × Desired Duration (e.g. 180s) |
Boss Swing Damage & DPS
Boss damage is inversely connected to the health of the Boss's primary target, the Tank. A general rule of thumb is that the Tank can take about 3 normal Boss hits before a knockout. If the Boss has a 2 second swing interval, the Tank's time-to-defeat (Tank TTD), without healing, is about 6 seconds. Fortunately, this 6 second panic window is also just enough time for the Healer to cast their 3.5 second big heal immediately after the Tank takes a big hit, and start casting the next one.
To calculate the Tank's Effective Health Pool (EHP), the raw damage a Tank can take considering their HP and damage reduction from Armor. Again, we'll use our level 60, dungeon-ready Tank stats to demonstrate:
If the tank can only take 3 hits, then we just divide our Effective Health Pool by 3:
If the boss swings at a standard, slow dungeon pacing of a 2.0 second weapon speed, its baseline weapon dps formula becomes:
Boss Level Scaling and Level Friction
To baseline the difficulty of a boss fight, the boss will be generated at level +3 relative to the party. This level difference imposes penalties on player stats to increase difficulty (i.e. "add friction"). Increasing Miss%, Dodge%, Parry%, Spell Resistance, and Glancing Blow add friction via offense suppression (Player vs. Boss), while decreasing Dodge % and Shield Block % add friction via defense suppression (Boss vs. Player). See the reference table for comprehensive scaling rules.
Offense Suppression (Player vs. Boss)
To summarize offense suppression against a boss that is Level +3:
- Miss %: Physical (Melee and Ranged physical) attacks have a 9% chance to miss.
- Dodge %: Physical attacks have a 6.5% chance to be dodged.
- Parry %: Physical attacks from a direct stand-off have a 6.5% chance to be parried.
- Glancing Blow: Tanks/Melee DPS have a 40% chance for any hit to do only 70% damage.
- Spell Resistance: DPS Ranged spells have a 17% chance to fail, fully resisted by the boss.
Note how the higher inherent fail rate of Casters (17%) is balanced against the constant output suppression of Melee (40% Glance), stabilizing total party throughput.
Given the percentages, we can use the following formulas to determine friction coefficients:
Defense Suppression (Boss vs. Player)
Defense suppression uses a flat 0.6% reduction per level difference on defense stats rather than a coefficient. We'll apply this to Dodge % which is based on player level and gear quality, and Shield Block % which is based on shield quality.
- Dodge %: −(ΔL 3 × 0.6%) = 1.8%
- Shield Block %: −(ΔL 3 × 0.6%) = 1.8%
Using a Level 60, dungeon ready Tank with Rare gear and a Rare shield as an example, defense suppression for a Level +3 boss would look like:
Dodge %: (11% Base Dodge + 5% Gear Bonus) − (ΔL 3 × 0.6%) = 16% − 1.8% = 14.2%
Shield Block %: 15% Block from Rare Shield − (ΔL 3 × 0.6%) = 15% − 1.8% = 13.2%
So the complete reduction formulas would be:
Boss Miss
There is a fixed 5% chance every swing the Boss will miss the target, very straightforward.
Boss Crit
There is also a fixed 5% chance that the boss will effectively double raw swing damage with a critical hit. If we're dealing with the same level 60, dungeon ready tank, that looks like:
Boss Cleave
50% of all generated White and Yellow physical damage is applied to any non-targeted player within the active Cleave Zone, i.e. within 3 squares directly in front of Boss's facing direction (a 180-degree frontal cone). This is a passive damage effect intended to force Melee DPS to manage their position, keeping a safe distance away from this forward melee danger zone.
Distance check formula:
Cleave damage is calculated based on Boss's raw swing damage (before Tank mitigation). Secondary targets roll their own dodge/parry/armor checks against the cleave swing.
Single-Roll Attack Table (Boss)
To simplify the logic, we'll essentially make a 100 sided dice roll for every Boss swing to determine a miss, player dodge, shield block, crit, or standard hit. The ranges vary based on the target's Dodge and Block values and are determined as follows:
| Outcome | Bracket Width | Roll Threshold | Threshold Value Key |
|---|---|---|---|
| Miss | 5% (fixed) | R < T₁ | T₁ = 5 |
| Dodge | Dodge%target | T₁ ≤ R < T₂ | T₂ = T₁ + Dodge%target |
| Parry | Parry%target | T₂ ≤ R < T₃ | T₃ = T₂ + Parry%target |
| Block | Block%target | T₃ ≤ R < T₄ | T₄ = T₃ + Block%target |
| Critical | 5% (fixed) | T₄ ≤ R < T₅ | T₅ = T₄ + 5 |
| Standard | Remaining Balance | T₅ ≤ R ≤ 100 | — |
Single-Roll Attack Sample Reference
Vs. Level 60 Dungeon Ready Tank with a Dungeon Ready Shield
| Outcome | Bracket Width | Roll Threshold |
|---|---|---|
| Miss | 5% | R < 5 |
| Dodge | 16% − 1.8% Friction = 14.2% | 5 ≤ R < 19.2 |
| Parry | 16% − 1.8% Friction = 14.2% | 19.2 ≤ R < 33.4 |
| Block | 15% − 1.8% Friction = 13.2% | 33.4 ≤ R < 46.6 |
| Critical | 5% | 46.6 ≤ R < 51.6 |
| Standard | 48.4% Remaining | 51.6 ≤ R ≤ 100 |
Threat
Threat is a hidden stat kept by enemies (including the Boss) for every player in the party during an encounter, directly converting damage and/or healing done by the player into a threat value. The player with the highest threat becomes the enemy's target.
Direct Conversion Rates
Every point of damage and effective healing are converted to threat points, but are weighted differently to create tactical tension in the gameplay.
Additional Rules for Healing
- Effective Healing only includes health points that actively regenerate HP, not overheal amounts.
- Unlike damage, threat generated by healing is spread evenly among all active enemies in an encounter as there is no specific enemy target, the healer is (hopefully) only healing party members.
Tank Threat Multiplier
It is the Tank's objective to maintain threat at all costs to avoid having the Boss make short work of their squishier teammates. To compensate for lower raw damage output than DPS, the Tank applies a passive threat multiplier to keep up.
We'll start with a multiplier of 1.4×. This can be adjusted later or potentially scaled by level slightly (with a variance of 1.3× to 1.5×) depending on simulation behavior.
Threat Pull Thresholds
If a party member "pulls" threat away from the current target by taking the lead in their threat score (aka. "pulling aggro"), the enemy doesn't immediately pivot. The party member must surpass the lead by a buffer amount. This avoids twitchy behavior as threat meters may quickly swap back and forth for the lead spot.
Melee and Ranged have separate buffer multipliers to simulate some difference in threat pull based on distance from the enemy (in this case Healing is considered Ranged along with Ranged DPS).
Threat Crisis Protocol
The threat value is additive from the time the fight begins, a 1-to-1 reflection of damage and 0.5-to-1 reflection of healing. If a DPS player quickly pulls ahead of the Tank with some lucky RNG, it could be mathematically impossible for the Tank to catch up. In a live game, Tank's can use a Taunt ability to instantly jump their threat value to that of the highest existing player threat. And DPS can use threat suppression or Fade abilities to reduce their own threat down by a given percentage.
For the simulation, if the DPS is consistently pulling ahead, then we have a balance problem where their damage output should be adjusted to /most of the time/ falling under the threshold for bypassing Tank threat. But in response to those lucky crit roll moments, we'll introduce a protocol to properly capture this "crisis" scenario in the data as follows:
The Boss immediately switches target to the rogue DPS and executes a single standard swing against them, doing massive damage given the target's lower armor rating that the Healer has to deal with.
The Tank is instantly restored to the top of the threat meters.
In a real fight, the Tank loses a swing opportunity because they have to cast a taunt ability. We simulate this by resetting the Tank's attack timer.
With the Tank missing a swing, DPS Threat will be reduced for 3 seconds to avoid immediately pulling ahead again.
Note this is not a standard protocol and is a best attempt at simulating a very organic, challenging moment players face. The output should be closely reviewed to ensure stabilization of the outcome.