Combat Mechanics

For interactive per-weapon and per-class DPS modelling, see the Auto-Attack DPS Simulator.
Damage Pipeline

Steps applied in order to every damaging hit.

StepDescription
1Base damage: formula-specific (see Damage Formulas below)
2Variance: ×0.9–1.1 random
3Backstab: +10% (+25% with Improved Backstab) plus 1 flat, when the attacker is behind the target
4Level difference: ±2% per level, max ±20%
5Slayer reduction: −(Slayer level × 10%)
6Enrage: damage increases by 33% (players) or 50–100% (monsters, random per hit), when the caster's HP is below 50% for players / 25% for monsters (non-spell only)
7Physical mitigation: damage − ⌈damage × clamp(defense × 0.0005, 0, 0.9)⌉ (max 90%)
8Crit: ×1.5. Radiant Aether crits deal ×3 on top (×4.5 total)

Manaburn exception: bypasses steps 7–8 entirely. Damage = current Rage or Mana × 2.

Damage Formulas

Determines the base damage for step 1 of the pipeline.

CategoryKindFormula
PhysicalnormalSTR×1.0 + all equipment
Physicalranger_meleeSTR×1.0 + all equip minus bow slot bonus
Physicalrogue_meleeSTR×1.0 + main-hand dmg + ⌊off-hand dmg × 0.5⌋ + other equip
Physicalrogue_melee_mercSTR×1.0 + main-hand dmg + off-hand dmg + other equip
Rangedranged_playerSTR×1.0 + bow + armour + DEX×1.5 minus melee slot bonus
Rangedranged_player_frontalSTR×1.0 + DEX×1.5 + all equip including melee weapons (unlike ranged_player)
Rangedranged_mercSTR×1.0 + bow + melee weapon + other equip + DEX×1.5
Poisonpoison_roguerogue_melee component + DEX×2.5
Magicmagic_spellINT×1.5 + wand magic stat + other magic equip
Magicmagic_weaponINT×1.5 + STR×1.0 + equipment, physical and magic components mitigated separately
Magicmagic_weapon_rangerLike magic_weapon, but the physical component excludes the bow's flat damage bonus
SpecialmanaburnCurrent Rage or Mana × 2 (bypasses all mitigation and resist)
Monstermonster_meleebaseDamage(level), scales with monster level
Monstermonster_magicbaseMagicDamage(level), scales with monster level
Resistance & Mitigation

Formulas for physical and magical damage reduction.

Resist Roll

P(resist) = clamp(
  resistStat × 0.0005
  + clamp((target.level − attacker.level) × 0.005, −0.1, 0.1)
  − attacker.accuracy
, 0, 0.9)

Non-physical damage types only. A successful resist fully negates the hit, with no mitigation applied. Physical attacks have no resist roll, only a miss/block roll.

Mitigation

reduction   = ⌈damage × clamp(mitigationStat × 0.0005, 0, 0.9)⌉
finalDamage = damage − reduction

Applies to all damage types when a hit lands (max 90% reduction). The mitigation stat depends on damage type:

Damage typeMitigation stat
PhysicalDefense
MagicMagic Resist
FireFire Resist
ColdCold Resist
DiseaseDisease Resist
PoisonPoison Resist

Physical Block / Miss

P(miss) = clamp(
  clamp(baseBlock + defense×0.0001 + blockBuffs, 0, 0.8)
  + clamp((target.level − attacker.level) × 0.005, −0.1, 0.1)
  − attacker.accuracy
, 0, 0.9)

Situational Modifiers

ModifierEffect
Moving targetResist chance −0.25, damage +10%
BackstabResist chance ×0.8
ManaburnBypasses all mitigation and resist
Bypasses Debuff ImmunityResist chance −0.30
Boss/elite + large speed debuffForced resist regardless of roll
Healing

WIS Heal Bonus

All classes except Ranger:

finalHeal = baseHeal + round(baseHeal × min(WIS × 0.004, 5.0))

Ranger (all heals):

finalHeal = baseHeal + round(baseHeal × min(WIS×3 × 0.004, 5.0))

Critical Heal

Applies only to skills that can target other players (shown as "Others Only" or "Self & Others" on the skill page). On crit: 90%→×2.0, 10%→×3.0.

KindFormula Applied
player_rangerbase × min(WIS×3 × 0.004, 5.0), Ranger bonus
player_otherbase × min(WIS × 0.004, 5.0), non-Ranger
mercbase × min(WIS × 0.004, 5.0), Ranger mercs do not receive the 3× multiplier
noneNo bonus (monster, NPC, non-merc pet)
Buff Scaling

How WIS (or Player Level) scales buff field values.

Per-Field WIS Multipliers

Buff FieldWIS Scaling
Max Health+WIS×2
Defense+WIS×0.15
Magic Resist+WIS×0.15
Ward+WIS×5
Damage Shield+WIS×0.75
Elemental Resists+WIS×0.15 each
Heal-over-Timebase × (1 + min(WIS×0.004, 3.0))

Attribute Source Dispatch

SourceCondition
player_wisPlayer non-Ranger (target_buff + area_buff)
player_ranger_wisPlayer Ranger (target_buff only, area_buff uses player_wis)
player_wis_con_avgArea buff + is_mercenary_skill
merc_wisMercenary pets
noneMonster/NPC (bonusAttribute = 0)
Debuff Mechanics

Attribute Dispatch

Debuff typeAttribute used
Melee debuffs (reduce physical defense)STR
Poison and disease debuffsDEX
All other debuffs (magic, fire, cold, untagged)INT

Per-Field Scaling

FieldScaling
Defense reduction−STR×0.5 (melee-type debuffs) or −INT×0.4 (all others)
Magic Resist reduction−INT×0.4
Fire Resist reduction−INT×0.4
Cold Resist reduction−INT×0.4
Disease Resist reduction−INT×0.4
Poison Resist reduction−INT×0.4
Damage reduction−INT×0.5
Magic Damage reduction−INT×0.5
DoT poison/disease+DEX×1.0, reduced by Poison Resist
DoT melee+STR×0.5, reduced by defense mitigation
DoT fire/cold/magic+INT×1.25, reduced by respective resist

DoT counter decay: 3 counters full damage, 2 → ×0.9, 1 → ×0.8.

Timing & Haste

How attack interval and haste interact per caster model.

Interval Formulas

ModelCasterInterval
player_autoPlayer auto-attackscastTime + clamp(delay×(1−haste)/25, 0.25, 2.0)
player_spellPlayer spell auto-attackscastTime×(1−spellHaste) + 0.75s
companionCompanions and familiarscastTime + cooldown
merc_autoMerc auto-attackscastTime + cooldown×(1−haste)
merc_spellMerc spellscastTime×(1−spellHaste) + cooldown
monsterAll monster and NPC attacksNon-spell: castTime + cooldown×(1−haste)
Spell: castTime + cooldown

Haste Effects

ModelRegular hasteSpell haste
player_autoReduces the delay term (min: 0.25 s, max: 2.0 s, cap: 80%).No effect
player_spellNo effectReduces cast time (cap: 50%). Refractory (0.75s) unaffected.
companionNo effectNo effect
merc_autoReduces cooldownNo effect
merc_spellNo effectReduces cast time (cap: 50%). Cooldown unaffected.
monsterReduces cooldown for non-spell attacks. Spell attack cooldowns are unaffected by hasteNo effect
Special Mechanics

Aggro

added = skillAggro + (skillAggro > 0 ? caster.maxHP : 0)
       + damage
       + round(stunChance × stunTime × 10)
       + round(fearChance × fearTime × 10)

Capped at target's current HP.

Rage Generation

Warrior and Rogue generate Rage from two sources:

  • Dealing auto-attack damage: ⌊damage × 0.25⌋ per hit, capped at the target's current HP.
  • Taking Normal-type damage: ⌊clamp(sqrt(damage) × 0.35, 1, 25)⌋ per hit. Same formula applies to Warrior/Rogue mercenary pets when they receive Normal damage.

Stun

Applies on a single roll against the skill's stun chance. Cannot apply while the target is already feared. Duration stacks: a new stun extends the existing stun end time rather than replacing it. Bear mounts have a 90% chance to resist any stun. Stunned players are dismounted.

Knockback

Applies only if neither stun nor fear took effect on the same hit. Pushes the target backward and applies a 0.25-second stun. Only applies when the level difference is less than 15. This cap is waived when the caster is a boss monster.

Ward & Mana Shield Priority

Ward absorbs first. Mana Shield absorbs any remaining damage. Ward pool size comes from the buff's WIS scaling (WIS×5).

Fear

Applies only if two independent rolls succeed: the skill's fear chance, then the target failing their fear resist roll. Duration is random between half and full fearTime. Fear resist accumulates from skills and equipment, capped at 100%. At 100% the target is immune.

Root

Fully stops movement. Unlike sleep, does not break when the target takes damage. Monsters attempt a self-break every 2 seconds: chance = magicResist / 1000, clamped between 5% and 95%. NPCs attempt a self-break every 1 second with a fixed 10% chance. Bosses and elite monsters automatically resist this debuff.

Sleep

Applied by debuff skills that reduce speed to −50 or below. Any direct damage hit or DoT tick immediately breaks the effect. Bosses and elite monsters automatically resist debuffs that reduce speed below −10. Every 6 seconds, an affected monster rolls to self-break: chance = magicResist / 1000, clamped between 5% and 95%.

Enrage

Non-spell skills only. When the caster's HP falls below 50% (monsters: 25%), their damage output increases by 33% (players) or 50–100% (monsters, random per hit).

Assassination

Skills with this mechanic can only be used when the target is below 25% HP.

Weapon On-Hit Procs

Weapons with an on-hit effect trigger it at the listed probability on auto-attacks. Rogue players also trigger their offhand weapon's proc at 50% of its listed probability. Weapon proc effects do not trigger damage shields.

Ground AoE Damage to Pets & Mercenaries

Skills that telegraph a danger zone before detonating deal half of their listed damage to your mercenaries and companions. Damage dealt to players is unaffected.

Cleanse

Cleanse removes debuff stacks from a target. Each debuff has a Cleanse Resist level:

Cleanse ResistBehaviour
NoneFully cleansable: all stacks removed in one cast
PartialOne stack always removed. Each remaining stack has an independent chance to resist
FullCannot be cleansed

Type matching: a cleanse skill only removes debuffs whose element matches (a poison cleanse only removes poison debuffs, etc.).

Dispel

When Dispel lands on a player, all active buffs are removed (except the Rest buff). On a pet, all active buffs are removed. On a monster, each buff is tested independently:

removed if Random.value > probIgnoreCleanse − bonus

bonus (single-target spell):   accuracy × 0.5
bonus (single-target scroll):  clamp(round(Mastery% ÷ 5), 1, 20) × 0.01
bonus (area dispel):           0

Mastery comes from the Scroll Mastery profession. Each Dispel rank lowers a monster's Dispel Resist by 1 percentage point. Area dispels do not get an accuracy or Scroll Mastery bonus.

Buff & Debuff Overwrite

When a buff that belongs to an overwrite group is applied, all existing buffs on the target in the same group expire immediately. No strength or level comparison is made. The overwrite is unconditional. For example, Divine Shield and Shield of Faith share the same overwrite group, so applying either one expires the other.

  • Skills without an assigned overwrite group bypass this check and can stack freely.
  • Multiple debuffs with different or no overwrite groups apply independently.
  • Exception: when a pet casts an area buff, targets that already have any buff in the same overwrite group are skipped rather than overwritten. Player-cast buffs always overwrite.
  • When multiple DoT skills are active on the same target simultaneously, each maintains its own counter stack independently.