Damage System
This is a comprehensive breakdown of how the health / damage scales in EliteMobs. It should be used as a reference when designing dungeons.
It's focused on Custom Bosses, but normal Elites scale in the same way.
Before you start!
You don't need to read all of this if you just want to do quick tweaks. Skip to the "Using this data for dungeons" section to see very simplified quick maths and a series of premade recommended settings!
Scaling (in general)
EliteMobs uses an exponential scaling system where every 5 levels of difference doubles (or halves) the effective power. Boss health, player damage, and boss damage all scale exponentially so that combat feels consistent at every level range -- a level 10 player fighting a level 15 boss feels the same as a level 50 player fighting a level 55 boss.
Player power comes from two sources in a 50/50 split:
- Weapon Skill Level -- earned by killing Elite Mobs with a specific weapon type (swords, axes, bows, crossbows, tridents, hoes, maces, or spears).
- Item Level -- the elite level of the weapon or armor piece the player has equipped.
Players also have an Armor Skill that levels up passively during combat (at 1/3 the rate of weapon skills). Armor skill level grants bonus maximum health (+1 heart per level above 1) and determines the player's defensive scaling against boss damage.
Weapon Skills
EliteMobs 10 introduces a skill system where players independently level each weapon type by using it in combat. Killing an Elite Mob grants XP to the weapon skill matching the weapon held, and also to the Armor skill at a reduced rate.
The available weapon skills are:
| Skill | Weapon |
|---|---|
| Swords | All sword types |
| Axes | All axe types |
| Bows | Bow |
| Crossbows | Crossbow |
| Tridents | Trident |
| Hoes | All hoe types |
| Maces | Mace (1.21+) |
| Spears | All spear types (1.21.11+) |
| Armor | All armor pieces (leveled passively) |
Skill XP from a mob is equal to mobLevel^2, so higher-level mobs grant proportionally more XP. The maximum skill level is 100, after which a soft cap makes further progression exponentially harder.
Skill Bonuses
Each weapon skill (and the armor skill) has a set of skill bonuses -- special abilities that unlock as the player levels up. Players can select which bonuses to activate. Skill bonuses come in five types:
- Passive -- always active when equipped (e.g., flat damage increase).
- Conditional -- active only when a specific condition is met (e.g., bonus damage when target is below 30% health).
- Proc -- chance-based trigger on specific events (e.g., chance to cause bleeding on hit).
- Stacking -- builds up over consecutive actions (e.g., consecutive hits increase damage).
- Cooldown -- powerful effect with an internal cooldown (e.g., survive fatal damage once every 60 seconds).
Offensive skill bonuses from weapon skills are applied as additive damage multipliers on top of the base damage dealt to bosses. Defensive skill bonuses from the armor skill reduce incoming boss damage through various mechanics (flat reduction, dodge, damage shields, etc.).
Damage dealt by Custom Bosses
Boss damage in EliteMobs 10 uses three multiplicative layers with no pre-compensation. The system is designed so that a properly geared player survives approximately 5 hits from same-level content.
The damage formula for Custom Bosses is:
1. playerMaxHealth = 20 + (armorSkillLevel - 1) * 2
2. baseDamage = playerMaxHealth / 5.0
3. skillAdjustment = 2 ^ ((bossLevel - armorSkillLevel) / 7.5)
4. gearAdjustment = 2.0 * (1 - gearReduction)
5. scaledDamage = baseDamage * skillAdjustment * gearAdjustment
6. [explosion distance attenuation, if applicable]
7. potionMultiplier from Resistance effect
8. finalDamage = max(scaledDamage, 1) * potionMultiplier * customBossDamageMultiplier * specialMultiplier * configMultiplier
9. finalDamage = min(finalDamage, actualMaxHealth - 1)
The three layers are:
- Base damage -- how much HP per hit the player is expected to lose (
playerMaxHealth / 5). - Skill adjustment -- exponential scaling from the difference between the boss's level and the player's Armor Skill level.
- Gear adjustment -- damage-type-aware reduction based on the player's equipped armor and protection enchantments (see Gear Defense System below).
Note: Damage is capped at (player's actual max health - 1) to prevent one-shot kills. The cap uses the generic_max_health attribute, which includes all modifiers (armor skill bonus, potion effects, etc.).
playerMaxHealth
The player's maximum health is determined by their Armor Skill level. Base health is 20 (10 hearts), and each armor skill level above 1 adds 2 HP (1 heart). A player with armor skill level 50 has 118 HP (59 hearts).
baseDamage
The base damage is simply playerMaxHealth / 5.0. This is the amount of damage a properly geared, same-level player is expected to receive per hit. Unlike the old system, there is no pre-compensation -- the base value is the target damage, not an inflated raw value.
skillAdjustment
The skill adjustment uses exponential scaling to make the level difference between the boss and the player's Armor Skill meaningful:
skillAdjustment = 2 ^ ((bossLevel - armorSkillLevel) / 7.5)
Every 7.5 levels of difference doubles (or halves) the boss's effective damage. This is slightly more forgiving than the general-purpose level modifier (which doubles every 5 levels), because the gear adjustment layer already provides additional scaling.
| Level Difference | Skill Adjustment | Approximate Hits to Kill (matched gear) |
|---|---|---|
| Same level (0) | 1.0x | ~5 hits |
| +5 levels | ~1.6x | ~3 hits |
| +10 levels | ~2.5x | ~2 hits |
| +15 levels | 4.0x | ~1.25 hits |
Gear Defense System
The gear defense system replaces the old gear ramp. Instead of assuming a flat pre-compensation multiplier based on skill level, the system now reads the player's actual equipped gear and calculates a damage-type-aware gear reduction.
Damage Types
The system classifies incoming damage into five categories. The damage type determines which protection enchantments contribute to the gear score:
| Damage Type | Event Causes | Protection Enchantments Used |
|---|---|---|
| MELEE | Direct attack, sweep attack | Protection only |
| PROJECTILE | Arrows, fireballs | Protection + Projectile Protection |
| EXPLOSION | Creeper, ghast blast | Protection + Blast Protection |
| FIRE | Fire, fire tick | Protection + Fire Protection |
| OTHER | Everything else | Protection only |
Gear Score
The gear score combines armor level and enchantment bonuses into a single value that can be compared to the attacking mob's level:
gearScore = (sum of armorLevel for 4 armor slots) / 4
+ (sum of enchantBonus for all 6 slots) / 4
Armor level is determined per item:
- Elite items use their stored elite level (the level the item was created for).
- Vanilla items use a material-based lookup:
| Material | Armor Level |
|---|---|
| Leather | 1 |
| Gold | 2 |
| Chainmail | 3 |
| Iron | 4 |
| Turtle Shell | 4 |
| Diamond | 5 |
| Netherite | 7 |
Only the 4 armor slots (helmet, chestplate, leggings, boots) contribute armor level.
Enchant bonus converts protection enchantment levels into armor-level-equivalent units:
enchantBonus = (general Protection level + type-specific Protection level) * (1/3)
All 6 equipment slots (4 armor + mainhand + offhand) contribute enchant bonus. This means shields or weapons with Protection enchantments provide additional defense. The /4 normalization on the sum means that having enchants on all 6 slots gives up to 50% more enchant contribution than having them on 4 armor pieces alone.
Worked example: Lv25 matched gear + Prot IV vs Lv25 (melee)
Player: armorSkillLevel=25, maxHP = 20 + 24*2 = 68
4 elite armor pieces each at armorLevel=25, each with Protection IV
Mob: level=25, melee attack
Step 1 -- Armor level per piece: 25 (elite item, stored value)
Step 2 -- Enchant bonus per piece: Protection IV = 4 * (1/3) = 1.333
(melee damage type, so only general Protection applies)
Step 3 -- Gear score:
armorLevelSum = 25*4 = 100, /4 = 25.0
enchantBonusSum = 1.333*4 = 5.333 (no mainhand/offhand enchants), /4 = 1.333
gearScore = 25.0 + 1.333 = 26.333
Step 4 -- Gear reduction (above matching):
reduction = 0.50 + (26.333 - 25) * 0.025 = 0.533 (53.3%)
Step 5 -- Gear adjustment: 2.0 * (1 - 0.533) = 0.933
Step 6 -- Final damage: baseDamage(13.6) * skillAdj(1.0) * gearAdj(0.933) = 12.69
Hits to kill: 68 / 12.69 = 5.36, approximately 5.4 hits
Worked example: Lv1 vanilla diamond vs Lv5 skeleton (projectile)
Player: armorSkillLevel=1, maxHP = 20
Full vanilla diamond armor (no enchants), no mainhand/offhand enchants
Mob: level=5, skeleton arrow (PROJECTILE damage type)
Step 1 -- Armor level per piece: 5 (vanilla diamond from lookup table)
Step 2 -- Enchant bonus: 0 (no enchants on any piece)
Step 3 -- Gear score: (5+5+5+5)/4 + 0/4 = 5.0
Step 4 -- Gear reduction (matching): 0.50 * (5/5) = 0.50 (50%)
Step 5 -- Gear adjustment: 2.0 * (1 - 0.50) = 1.0
Step 6 -- Final damage: baseDamage(4) * skillAdj(1.447) * gearAdj(1.0) = 5.79
Hits to kill: 20 / 5.79 = 3.45, approximately 3.5 hits
If the diamond armor also had Projectile Protection IV, each piece would gain an enchant bonus of 4 * (1/3) = 1.333. The gear score would rise to 5.0 + (1.333*4)/4 = 6.333, increasing reduction to 53.3% and noticeably improving survival against arrows.
Gear Reduction Curve
The gear reduction uses a two-part linear curve that transitions at the point where gear score equals mob level:
Below matching (gearScore is less than or equal to mobLevel):
reduction = 0.50 * (gearScore / mobLevel)
Scales linearly from 0% (naked) to 50% (matching). The slope depends on mob level -- against a level 5 mob each gear level gives 10% reduction, while against a level 50 mob each gives 1%. This naturally makes low-level vanilla armor effective against low-level mobs but irrelevant against high-level ones.
Above matching (gearScore is greater than mobLevel):
reduction = 0.50 + (gearScore - mobLevel) * 0.025
Flat 2.5% per gear level above mob. Reaches the 75% hard cap at +10 gear levels above the mob.
Gear adjustment converts the reduction into a damage multiplier:
gearAdjustment = 2.0 * (1 - gearReduction)
| Gear Situation | Gear Reduction | Gear Adjustment | Hits to Kill (same skill level) |
|---|---|---|---|
| Naked (no gear) | 0% | 2.0 | ~2.5 |
| Half-matching gear | 25% | 1.5 | ~3.3 |
| Matching gear (gearScore = mobLevel) | 50% | 1.0 | ~5.0 |
| +4 levels above mob | 60% | 0.8 | ~6.25 |
| +10 levels above mob (cap) | 75% | 0.5 | ~10.0 |
Scenario Table
The following table shows expected combat outcomes across a range of scenarios:
| Scenario | Skill Adj | Gear Red | Gear Adj | Hits |
|---|---|---|---|---|
| Lv1 naked vs Lv1 | 1.0 | 0% | 2.0 | 2.5 |
| Lv1 naked vs Lv5 | 1.45 | 0% | 2.0 | ~1.7 |
| Lv1 vanilla diamond vs Lv5 | 1.45 | 50% | 1.0 | ~3.5 |
| Lv25 matched vs Lv25 | 1.0 | 50% | 1.0 | 5.0 |
| Lv25 matched+ProtIV vs Lv25 | 1.0 | 53.3% | 0.93 | 5.4 |
| Lv25 matched vs Lv30 | 1.59 | 41.7% | 1.17 | 2.7 |
| Lv25 peak gear vs Lv25 | 1.0 | 75% | 0.50 | 10.0 |
| Lv50 matched vs Lv50 | 1.0 | 50% | 1.0 | 5.0 |
Key design targets:
- 5 hits at matched level -- the core balance target. A properly geared player survives exactly 5 normal hits from a same-level elite mob, at all levels.
- 2.5 hits naked -- no gear means double damage via the 2.0 gear adjustment. Immediate incentive to equip any armor.
- Vanilla armor matters -- a level 1 player in diamond armor survives ~3.5 hits from a level 5 mob instead of ~1.7 naked.
- Enchants are meaningful but not dominant -- Protection IV on all 4 armor pieces adds ~1.33 to gear score, pushing from 50% to 53.3% reduction. Noticeable (~8% more survivability) but not game-breaking.
- Level-consistent -- matched combat at level 25 and level 50 both produce exactly 5 hits.
- Peak gear cap at 10 hits -- even with the best possible gear (+10 levels above mob), players still take meaningful damage.
potionMultiplier (Defensive)
Resistance potion effects reduce incoming damage based on the effect level:
potionMultiplier = max(0, 1.0 - (resistanceAmplifier + 1) * resistanceDamageMultiplier)
The config key is resistanceDamageMultiplierV2 in MobCombatSettings.yml (default: 0.2). This matches vanilla behavior: Resistance I = 20% reduction, Resistance V = 100% reduction (immune).
customBossDamageMultiplier
This is the damage multiplier in the Custom Boss file. Defaults to 1.
configMultiplier (Defensive)
This is the multiplier in MobCombatSettings.yml. For normalized combat, it uses normalizedDamageToPlayerMultiplier (default 1.0). For scaled combat, it uses scaledDamageToPlayerMultiplier (default 1.0). For standard mobs, it uses damageToPlayerMultiplierV2 (default 1.0).
specialMultiplier
This is a temporary damage multiplier applied by boss powers. Some boss abilities increase the boss's damage for the duration of the power. Defaults to 1.0 when no power is active.
Explosion Damage Attenuation
Creeper explosions and other blast damage (ghast fireballs) is reduced based on distance from the explosion center. The damage multiplier decreases linearly with distance from the blast, making explosions less deadly at range.
Maximum health of Custom Bosses
Boss health in EliteMobs 10 uses exponential scaling rather than linear scaling. Every 5 levels, boss health exactly doubles. This ensures that level differences feel consistent regardless of the absolute level.
The health formula for Custom Bosses is:
health = 2.1875 * 2^(bossLevel / 5) * customBossHealthMultiplier
Exponential Scaling
The base constant (2.1875) is tuned so that a level 25 boss has approximately 70 HP. Example health values:
| Boss Level | Health | +5 Levels Health |
|---|---|---|
| 1 | ~3 | ~5 (2x) |
| 5 | ~4.4 | ~8.75 (2x) |
| 10 | ~8.75 | ~17.5 (2x) |
| 25 | ~70 | ~140 (2x) |
| 50 | ~2,240 | ~4,480 (2x) |
| 100 | ~2,293,760 | ~4,587,520 (2x) |
customBossHealthMultiplier
This is the multiplier in the Custom Boss file. Defaults to 1.
Damage dealt to Custom Bosses
Player damage uses multiplicative layers of exponential and linear scaling to ensure that a same-level player always kills a same-level boss in roughly the same number of hits regardless of level. The formula separates player power into two independent axes -- weapon skill level (exponential skill adjustment) and weapon item level (linear weapon adjustment) -- so both skill investment and gear contribute to combat power.
Damage Formula
The full player-to-elite damage formula is:
formulaDamage = baseDamage * attackSpeedFactor * skillAdjustment * weaponAdjustment * cooldownOrVelocity * sweepMultiplier * potionMultiplier * enchantmentMultiplier * arrowDamageMultiplier
finalDamage = max(formulaDamage, 1) * damageModifier * combatMultiplier * critMultiplier
Each component is described below.
baseDamage
The base damage per hit is derived from the mob's normalized HP (at healthMultiplier=1.0) divided by the target number of hits to kill:
baseDamage = normalizedMobHP / 3.0
Where normalizedMobHP = 2.1875 * 2^(mobLevel / 5) (see the Maximum health of Custom Bosses section above). The constant 3.0 (TARGET_HITS_TO_KILL_MOB) means a matched player kills a standard elite in exactly 3 sword hits at any level.
Note: The healthMultiplier from the Custom Boss file multiplies actual mob HP but does NOT affect baseDamage. A boss with healthMultiplier: 2.0 has double the HP and takes 6 hits instead of 3.
attackSpeedFactor
Normalizes DPS across weapon types so that slower weapons deal proportionally more damage per swing:
attackSpeedFactor = 1.6 / actualAttackSpeed
The reference speed of 1.6 is the sword's attack speed. Examples:
| Weapon Type | Attack Speed | Factor | Effect |
|---|---|---|---|
| Sword | 1.6 | 1.0x | Baseline (3 hits) |
| Axe | 1.0 | 1.6x | Hits harder, swings slower |
| Hoe | 4.0 | 0.4x | Hits lighter, swings faster |
All weapon types deal the same DPS at matched combat -- only the damage-per-hit vs hits-per-second ratio changes. For ranged weapons (bows, crossbows, tridents), the attack speed factor is not applied (treated as 1.0); arrow velocity is used instead (see cooldownOrVelocity).
Note: Ranged-only weapons (bows, crossbows) used in melee are treated as unarmed strikes -- weapon level 0 and skill level 1, with a default attack speed of 4.0 (fist speed). This makes them very weak in melee, incentivizing players to use them at range.
skillAdjustment
Exponential scaling from the difference between the player's weapon skill level and the mob's level:
skillAdjustment = 2 ^ ((weaponSkillLevel - mobLevel) / 7.5)
Every 7.5 levels of difference doubles (or halves) player damage. This matches the defensive skill scaling rate used in boss-to-player damage, producing symmetric combat.
| Skill Difference | Skill Adjustment | Effect |
|---|---|---|
| -15 | 0.25x | Quarter damage |
| -7.5 | 0.50x | Half damage |
| 0 (matched) | 1.0x | Baseline |
| +7.5 | 2.0x | Double damage |
| +15 | 4.0x | Quadruple damage |
Unlike the general-purpose level modifier used for boss HP scaling (which is clamped), the offensive skill adjustment is not clamped in the current code. In practice, very large level differences (beyond +/-22 levels) can produce extreme values, but this is unlikely in normal gameplay because weapon skills cap at 100.
weaponAdjustment
A two-part linear curve based on the weapon's item level vs the mob's level. This mirrors the defensive gear reduction curve from the Gear Defense System.
weaponAdjustment = 0.5 + bonus
Below matching (weaponLevel is less than or equal to mobLevel):
bonus = 0.50 * (weaponLevel / mobLevel)
Scales linearly from 0 (no weapon) to 0.50 (matching). With no weapon equipped, the adjustment is 0.50 (half damage).
Above matching (weaponLevel is greater than mobLevel):
bonus = 0.50 + (weaponLevel - mobLevel) * 0.025
bonus = min(bonus, 0.75)
Flat 2.5% per weapon level above mob, capped at 0.75 bonus. Requires +10 weapon levels above mob to hit cap.
| Weapon Scenario | Bonus | Weapon Adj | Effect on Hits |
|---|---|---|---|
| Bare fists (no weapon) | 0.00 | 0.50 | 6 hits (2x slower) |
| Half-level weapon | 0.25 | 0.75 | 4 hits |
| Matching weapon (weaponLevel = mobLevel) | 0.50 | 1.00 | 3 hits (baseline) |
| +4 levels above mob | 0.60 | 1.10 | ~2.7 hits |
| +10 levels above mob (cap) | 0.75 | 1.25 | ~2.4 hits |
cooldownOrVelocity
For melee weapons, this is Minecraft's attack cooldown multiplier (0.0 to 1.0). Attacking before the cooldown resets reduces all formula damage proportionally. At full charge, cooldown = 1.0.
For ranged weapons (bows, crossbows), this is the normalized arrow velocity. Full-draw bow velocity is approximately 3.0; the value is normalized to min(velocity / 3.0, 1.0), clamped to the [0, 1] range.
sweepMultiplier
When a sword sweep hits secondary targets via ENTITY_SWEEP_ATTACK, those targets receive 25% of the primary hit damage:
sweepMultiplier = 0.25 (secondary sweep targets)
sweepMultiplier = 1.0 (primary target)
potionMultiplier (Offensive)
Strength and Weakness potion effects modify outgoing player damage:
potionMultiplier = 1.0 + strengthBonus - weaknessPenalty
Where strengthBonus = (strengthAmplifier + 1) * strengthDamageMultiplier and weaknessPenalty = (weaknessAmplifier + 1) * weaknessDamageMultiplier. Both config values default to 0.2, matching vanilla behavior (Strength I = +20% damage, Weakness I = -20% damage). Equal levels of Strength and Weakness cancel exactly. The multiplier is floored at 0.
The config keys in MobCombatSettings.yml are:
| Key | Default | Description |
|---|---|---|
strengthDamageMultiplierV2 | 0.2 | Bonus damage per Strength level |
weaknessDamageMultiplierV2 | 0.2 | Damage penalty per Weakness level |
enchantmentMultiplier
Smite and Bane of Arthropods enchantments provide a small damage bonus against their respective mob types, but only when useEliteEnchantments is disabled in ItemSettings.yml. When elite enchantments are enabled, this multiplier is always 1.0.
Only enchantment levels above vanilla maximum are counted (elite-only levels):
enchantmentMultiplier = 1.0 + eliteLevelsAboveVanillaMax * 0.025
Each elite-only enchantment level provides a 2.5% damage bonus. For example, Smite VIII on an elite weapon (vanilla max is V) contributes 3 elite levels: 1.0 + 3 * 0.025 = 1.075 (7.5% bonus against undead).
arrowDamageMultiplier
Arrows spawned by weapon skill abilities (such as Multishot, Arrow Rain, etc.) carry a damage multiplier stored in the projectile's data container. This allows skill-generated arrows to deal reduced damage compared to a standard arrow hit. For normal player-fired arrows, this multiplier is 1.0.
Thorns Damage
Thorns damage uses a separate formula based on the mob's base damage rather than the standard attack formula. Only elite-only thorns levels (levels above vanilla maximum of III) count:
eliteThornsLevel = totalThornsLevel - vanillaMaxThornsLevel (per armor piece, summed across all 4 pieces)
thornsDamage = baseDamage * eliteThornsLevel * 0.02
Each elite thorns level above vanilla max contributes 2% of the base damage. Vanilla Thorns III does not trigger elite thorns damage. For example, if all 4 armor pieces have Thorns V (2 elite levels each), the total elite thorns level is 8: baseDamage * 8 * 0.02 = 16% of the mob's base damage per proc.
damageModifier
Boss-specific weapon-type damage modifier from the Custom Boss file (damageModifiers). This allows bosses to take more or less damage from specific weapon materials (e.g., a boss that is resistant to swords but weak to axes). Defaults to 1.0 for all weapon types not explicitly configured.
combatMultiplier
Global multiplier from MobCombatSettings.yml (scaledDamageToEliteMultiplier, normalizedDamageToEliteMultiplier, or damageToEliteMobMultiplierV2 depending on the combat mode). Defaults to 1.0.
critMultiplier
Critical hits multiply final damage by 1.5x. Critical chance is determined by the player's elite gear crit chance stats.
Modifier Clamping
The general-purpose level modifier (used for boss HP scaling and standard combat) is clamped between MIN_MODIFIER = 0.125 and MAX_MODIFIER = 8.0 to prevent extreme values at very large level differences. These caps are reached at approximately +/-15 level difference.
However, the offensive and defensive skill adjustments used in the player-to-elite and elite-to-player damage formulas (calculateOffensiveSkillAdjustment and the skill adjustment in eliteToPlayerDamageFormula) are not clamped in the current code. In practice, skill levels are bounded by the max skill level (100), which naturally limits the range of these values.
Worked Examples
Example 1: Lv25 matched sword vs Lv25 elite (melee)
Player: weaponSkillLevel=25, weapon=elite sword (itemLevel=25)
Mob: level=25, healthMultiplier=1.0
Step 1 -- Base damage: mobHP(25) = 2.1875 * 2^5 = 70.0, baseDamage = 70.0/3 = 23.33
Step 2 -- Attack speed factor: sword speed=1.6, factor = 1.6/1.6 = 1.0
Step 3 -- Skill adjustment: 2^((25-25)/7.5) = 2^0 = 1.0
Step 4 -- Weapon adjustment: weaponLevel(25) == mobLevel(25), bonus=0.50, adj = 1.0
Step 5 -- Cooldown: full charge = 1.0
Step 6 -- Sweep: primary target = 1.0
formulaDamage = 23.33 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 = 23.33
Mob HP = 70.0 -> hits to kill = 70.0 / 23.33 = 3.0
Example 2: Lv25 axe vs Lv25 elite (DPS normalization)
Player: weaponSkillLevel=25, weapon=elite axe (itemLevel=25)
Mob: level=25, healthMultiplier=1.0
Step 1 -- Base damage: 23.33 (same as above)
Step 2 -- Attack speed factor: axe speed=1.0, factor = 1.6/1.0 = 1.6
Step 3 -- Skill adjustment: 1.0 (matched)
Step 4 -- Weapon adjustment: 1.0 (matched)
Step 5 -- Cooldown: full charge = 1.0
formulaDamage = 23.33 * 1.6 * 1.0 * 1.0 * 1.0 = 37.33
Hits to kill = 70.0 / 37.33 = 1.875, BUT axes swing 1.0/sec vs sword 1.6/sec
Time to kill = 1.875 / 1.0 = 1.875 sec vs 3.0 / 1.6 = 1.875 sec (equal DPS)
Example 3: Lv20 bow vs Lv25 elite with healthMultiplier=2.0 (ranged, under-leveled)
Player: weaponSkillLevel=20, weapon=elite bow (itemLevel=20)
Mob: level=25, healthMultiplier=2.0, actual HP = 70.0 * 2 = 140.0
Step 1 -- Base damage: 23.33 (from normalized HP, NOT actual HP)
Step 2 -- Attack speed factor: ranged, N/A = 1.0
Step 3 -- Skill adjustment: 2^((20-25)/7.5) = 2^(-0.667) = 0.63
Step 4 -- Weapon adjustment: weaponLevel(20) < mobLevel(25), bonus = 0.5*(20/25) = 0.4, adj = 0.9
Step 5 -- Arrow velocity: full draw = 1.0
formulaDamage = 23.33 * 1.0 * 0.63 * 0.9 * 1.0 = 13.23
Hits to kill = 140.0 / 13.23 = 10.6 hits
(Under-leveled skill AND weapon, fighting a healthMultiplier=2.0 mob)
DamageBreakdown Debug Tool
EliteMobs includes a built-in DamageBreakdown debug tool that tracks and displays every component of the damage formula in real time. When enabled for a player, it records each layer (base damage, attack speed factor, skill adjustment, weapon adjustment, cooldown, sweep, thorns, etc.) and can output:
- A full formatted breakdown showing all levels, formula components, multipliers, and the final computed damage.
- A compact one-line summary for quick in-game reference.
- An expected vs actual comparison that flags discrepancies larger than 10%, useful for diagnosing plugin conflicts or misconfigured boss files.
This is primarily a development and testing tool. Server administrators can use it to verify that combat is working as intended for specific encounters.
Skill XP Progression
Weapon and armor skills level up by earning XP from killing elite mobs. The XP system uses cubic level requirements to create smooth progression with a soft cap beyond level 100.
XP from kills: XP earned from a mob equals mobLevel^2. Higher-level mobs grant proportionally more XP.
XP to next level:
For levels 1 through 100:
xpToNextLevel = 20 * L^3
For levels above 100 (soft cap):
xpToNextLevel = 20 * L^3 * (1 + ((L - 100)^2 / 100))
The soft cap multiplier is continuous at level 100 (multiplier = 1.0) and grows quadratically beyond it. At level 150, the multiplier is approximately 26x, making further progression nearly impossible. The maximum skill level is 100 for practical purposes, though the system allows progression beyond it at exponentially increasing cost.
Additional Combat Mechanics
One-Shot Kill Prevention
EliteMobs prevents bosses from instantly killing players in a single hit. Regardless of the damage calculation result, damage is capped at (player's generic_max_health attribute - 1), ensuring players always survive with at least 1 health point. The cap uses the generic_max_health attribute rather than the current HP, so it accounts for all max-health modifiers (armor skill bonus, potion effects, etc.).
Shield Blocking
When players block with a shield, incoming damage is reduced by 80% (configured as blockingDamageReduction in MobCombatSettings). Blocking completely negates ranged projectile attacks (the projectile is removed).
Armor Skill Health Bonus
Players gain bonus maximum health based on their Armor Skill level. Each level above 1 grants +2 HP (+1 heart). This is applied as an attribute modifier and is the primary way players increase their survivability at higher levels.
Level Scaling Summary
The following table summarizes how level differences affect combat in both directions:
| Level Difference | Boss HP Modifier | Boss Damage Modifier | Difficulty |
|---|---|---|---|
| -10 (player overlevel) | 0.25x HP | ~0.4x damage | Trivial |
| -5 (player overlevel) | 0.5x HP | ~0.6x damage | Very Easy |
| 0 (same level) | 1.0x HP | 1.0x damage | Balanced |
| +5 (player underlevel) | 2.0x HP | ~1.6x damage | Challenging |
| +10 (player underlevel) | 4.0x HP | ~2.5x damage | Very Hard |
Scaled Combat
Scaled combat is an alternative combat mode designed for overworld natural elite mobs and event bosses. It makes the boss simulate being the same level as the player, so that gear and skill still matter but the mob's displayed level does not. The result is that every player, regardless of progression level, faces an equally fair fight against the same overworld mob.
How Scaled Combat Differs from Normalized Combat
EliteMobs has three combat modes:
| Mode | Used For | Level Matters? | Config Key |
|---|---|---|---|
| Standard | Basic mobs without special flags | Yes -- damage and health scale with the mob's actual level | damageToEliteMobMultiplierV2 / damageToPlayerMultiplierV2 |
| Normalized | Dungeon and regional bosses (normalizedCombat: true) | Yes -- but bosses use a separate normalized baseline for consistent dungeon balancing | normalizedDamageToEliteMultiplier / normalizedDamageToPlayerMultiplier |
| Scaled | Natural overworld elites and event bosses (scaledCombat: true or global config) | No -- the boss is simulated at the player's level | scaledDamageToEliteMultiplier / scaledDamageToPlayerMultiplier |
The key distinction: with normalized combat, a level 50 boss is harder than a level 10 boss. With scaled combat, both feel like same-level fights because the system pretends the boss is whatever level the player is.
How It Works
Damage (Boss to Player)
When a scaled-combat boss damages a player, the damage formula sets the boss's level equal to the player's armor skill level:
mobLevel = armorSkillLevel (instead of the boss's actual level)
This means the skill adjustment becomes 1.0 (since bossLevel - armorSkillLevel = 0), and damage depends entirely on the player's gear and armor skill -- not on the mob's stored level. The remaining formula (base damage, gear adjustment, potions, etc.) works exactly the same as described in the sections above.
Damage (Player to Boss)
When a player attacks a scaled-combat boss, the formula:
- Simulates the boss at the player's weapon skill level -- temporarily treats the mob as if it were the same level as the player's weapon skill.
- Runs the standard damage formula against that simulated level, producing a "damage against a same-level mob" result.
- Rescales to the boss's actual HP -- converts the formula damage from a percentage of the simulated mob's HP to the same percentage of the boss's actual HP pool.
simulatedMobLevel = playerWeaponSkillLevel
formulaDamage = playerToEliteDamageFormula(player, eliteEntity at simulatedMobLevel)
damagePercentage = formulaDamage / simulatedMobHP
actualDamage = damagePercentage * actualBossMaxHP
This means a properly geared player always kills a scaled-combat boss in the same number of hits (roughly 3 for healthMultiplier: 1.0), regardless of what level the boss is stored as.
Loot and Rewards
For scaled-combat mobs, loot rewards are based on the player's combat level instead of the mob's level. This means a high-level player killing a scaled overworld elite receives loot appropriate to their progression, while a low-level player killing the same mob receives appropriately lower-level loot.
Level Display
Scaled-combat entities display a symbol instead of a numeric level in their nameplate, since their actual level is irrelevant to the player:
- Standard scaled entities (healthMultiplier 1.0 or less): displays a sword symbol (default:
⚔) - High-threat scaled entities (healthMultiplier above 1.0): displays a skull symbol (default:
☠)
These symbols can be customized in MobCombatSettings.yml via scaledStandardLevelSymbol and scaledHighThreatLevelSymbol.
Enabling Scaled Combat
For All Natural Elites (Global Config)
In MobCombatSettings.yml:
useScaledCombatForNaturalElites: true
This is enabled by default in EliteMobs 10. When enabled, all naturally spawned elite mobs in the overworld use scaled combat automatically. Dungeon bosses using normalizedCombat are not affected by this setting.
For Individual Custom Bosses
In a Custom Boss configuration file:
scaledCombat: true
This forces a specific custom boss to use scaled combat regardless of the global setting. Useful for event bosses or custom overworld encounters that should feel equally fair for all players.
Note: If a boss has normalizedCombat: true (or is a regional/instanced boss with normalization enabled globally), normalized combat takes priority and the boss will not use scaled combat -- unless scaledCombat: true is explicitly set in the boss file, in which case scaled combat wins.
Config Keys
The following MobCombatSettings.yml keys control scaled combat behavior:
| Key | Default | Description |
|---|---|---|
useScaledCombatForNaturalElites | true | Enable scaled combat for all naturally spawned elites |
scaledDamageToEliteMultiplier | 1.0 | Global multiplier for player damage to scaled-combat bosses |
scaledDamageToPlayerMultiplier | 1.0 | Global multiplier for scaled-combat boss damage to players |
scaledStandardLevelSymbol | ⚔ | Symbol shown in nameplate for standard scaled entities |
scaledHighThreatLevelSymbol | ☠ | Symbol shown for scaled entities with healthMultiplier above 1.0 |
useRecommendedHealthScaling | true | Use EliteMobs 10 exponential health scaling for natural elites (false = legacy linear values, see below) |
When to Use Each Combat Mode
- Normalized combat (
normalizedCombat: true): For dungeons, instances, and regional bosses where you want precise control over difficulty and the boss has a fixed level that players are expected to match. - Scaled combat (
scaledCombat: trueor global setting): For overworld content, event bosses, and any encounter where players of all levels should have the same experience. - Standard combat (neither flag): For mobs where the raw level should directly determine difficulty, such as distance-scaled elites near spawn.
Legacy Health Scaling (useRecommendedHealthScaling: false)
When useRecommendedHealthScaling is set to false in MobCombatSettings.yml, natural elite mobs (not dungeon or regional bosses) use a simplified legacy formula instead of the exponential scaling:
baseDamage = level * 2
mobHealth = baseDamage * 3 (TARGET_HITS_TO_KILL_MOB)
This produces much smaller HP and damage numbers, closer to EliteMobs 9 behavior. This setting exists for backwards compatibility with servers that built integrations around older EliteMobs combat numbers. It is not recommended because it makes player progression feel flatter. This setting does not affect normalized regional boss combat.
Using this data for dungeons
NOTE: THIS ASSUMES YOU'RE USING THE normalizedCombat VALUES! Those values were specifically made for balancing dungeons more easily.
Part of a boss' difficulty is making it have the appropriate health and damage for the encounter. However, keep in mind that this is only a part of it, and that powers are just as important.
The following is presented in the correct format for the Custom Boss file.
The easy quick maths
With the exponential scaling system, healthMultiplier and damageMultiplier directly scale the base values:
-
A
healthMultiplierof 1.0 means the boss takes roughly 3 hits to kill by a same-level player. A multiplier of 2.0 doubles the health (roughly 6 hits), 0.5 halves it (roughly 1-2 hits), and so on. -
A
damageMultiplierof 1.0 means the boss kills a properly geared same-level player in roughly 5 hits. Higher multipliers make the boss deadlier, lower multipliers make it safer.
Because scaling is exponential, these hit counts stay consistent regardless of the boss level -- a level 10 boss with healthMultiplier: 2.0 takes the same number of hits as a level 80 boss with healthMultiplier: 2.0 when fought by a same-level player.
Keep in mind that players tend to prioritize weapons, and often end up with much worse armor than weapons. Unless you design very specific types of arenas with range combat, you probably don't want to deal a lot of damage per hit. Playtest your content!
Creating an average dungeon mob
With the scaling of normalizedCombat, you can apply a very minimalistic configuration:
normalizedCombat: true
healthMultiplier: 1.0 #3 hits to slay
damageMultiplier: 1.0 #survives ~5 hits
Note: since 1.0 is the default, this means you can also just not define anything.
Creating trash packs
Trash packs are numerous but not very dangerous:
normalizedCombat: true
healthMultiplier: 0.7 #2 hits to slay
damageMultiplier: 0.5 #survives ~10 hits
Creating reinforcements
Reinforcements should die very easily, but pose a danger damage-wise (these values recommended for 4+ melee entities, actual use may vary):
normalizedCombat: true
healthMultiplier: 0.25 #1 hit to slay
damageMultiplier: 0.6 #survives ~8 hits
Creating minibosses
Minibosses should hold their ground, and pose a mechanic challenge to players. It should be a test of skill that lasts for a little while, but not something extremely deadly:
normalizedCombat: true
healthMultiplier: 3.0 #10 hits to slay
damageMultiplier: 1.2 #survives ~4 hits
Creating bosses
Bosses are a real challenge, the conclusion of a buildup in a dungeon and a real test of skill with everything on the line. Encounters should be long and death should be a present threat.
normalizedCombat: true
healthMultiplier: 7.0 #23 hits to slay
damageMultiplier: 1.4 #survives ~3.5 hits
Creating World Bosses
World bosses are dangerous, but most of all they have a lot of health and summon a lot of reinforcements / have a lot of area of effect attacks. These are meant to be fought by large groups of players over the longest amount of time an elite encounter should last. They aren't very deadly, but have a lot of mechanics that can overwhelm under prepared players.
normalizedCombat: true
healthMultiplier: 40.0 #120 hits to slay
damageMultiplier: 1.5 #survives ~3 hits
These are just rough recommended values and any final values should be adjusted around the encounters themselves.