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: players deal 33% more damage below 50% HP. Monsters deal 50–75% more damage below 10% HP. Non-spell skills only
7Physical mitigation: damage − ⌈damage × clamp(defense × 0.0005, 0, 0.9)⌉ (max 90%)
8Crit: chance = attacker Critical Chance + skill crit bonus. Critical hits deal ×1.5 (Radiant Aether: ×3). Target Critical Resist reduces the crit bonus damage: multiplier = 1 + (mult − 1) × (1 − Critical Resist), so full resist makes a crit deal normal-hit damage

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. Beyond damage, the same kind of roll also decides whether a debuff or dispel lands on its target, using the resist stat that matches the effect (for example Defense for a physical debuff). This is why Accuracy helps land debuffs and dispels, not only damage.

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

Direct critical heals apply only to skills that can target other players (shown as "Others Only" or "Self & Others" on the skill page). When they crit: 90%→×2.0, 10%→×3.0. Heal-over-time ticks can also crit for ×1.5. The chance is based on the caster's Critical Chance when the buff was applied.

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 Healthbase + WIS×2
Defensebase + WIS×0.15
Magic Resistbase + WIS×0.15
Wardbase + WIS×2
Damage Shieldbase + WIS×0.75
Elemental Resistsbase + WIS×0.15 each
Heal-over-Time (<60s)base × (1 + min(WIS×0.004, 5.0))
Heal-over-Time (60s+)base + WIS×0.3

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.5, then reduced by Poison Resist
DoT melee+STR×0.5, reduced by defense mitigation
DoT fire/cold/magic+INT×1.25, reduced by the matching resist

Poison and disease damage-over-time effects add round(DEX×1.5) to the base tick. Poison Resist reduces both types. Disease Resist does not affect these damage ticks. Counter effects, critical ticks, and ward absorption apply afterward.

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

DoT critical ticks: damage-over-time ticks can crit for ×1.5. The chance is based on the caster's Critical Chance when the debuff was applied. Critical Resist reduces the bonus damage.

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 direct damage first. Mana Shield absorbs any remaining direct damage. Ward also absorbs DoT ticks before HP loss. Ward pool size comes from the buff's WIS scaling (WIS×2).

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. Players deal 33% more damage below 50% HP. Monsters deal 50–75% more damage below 10% HP, rolled separately for each hit.

Parry

Parry is a timed counter. If an eligible player is casting Parry and has the attacker selected, a single-target Normal melee hit is blocked and countered. Counterdamage is half the health damage the hit would have dealt after mitigation, ward, and mana shield, rounded and capped from 1 to 5,000. Fully absorbed hits do not trigger Parry.

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 is cast on yourself or an ally and removes harmful debuffs. It cannot be resisted and is not affected by Accuracy. A cleanse only acts on debuffs whose element matches it. For example, a fire-and-cold cleanse removes fire and cold debuffs but not poison, disease, or magic ones.

Every debuff carries 3 counters and is fully removed only when its counters reach 0. How many counters one cast removes depends on that debuff's Cleanse Resist:

Cleanse ResistResult of one cast
0All 3 counters removed at once, so the debuff is gone in a single cast
Between 0 and 100%1 counter removed for certain, then 2 more attempts that each remove another counter with a chance of (100% − Cleanse Resist)
100%Cannot be cleansed

A debuff with counters left stays on the target and can be reduced further by cleansing again. For damage-over-time debuffs, losing counters also lowers each tick of damage, to 80% of full at 2 counters and 60% at 1 counter. Nothing the caster does, Accuracy included, changes how many counters a cleanse removes.

Dispel

Dispel removes beneficial buffs from its target. Players cast it on monsters to strip their buffs, and some monsters cast it on players and their pets. Whether it removes anything, and how much, is decided in two steps.

1. Landing. The target rolls to resist the dispel using the resistance stat for the dispel's element, adjusted by the level difference between caster and target and reduced by the caster's Accuracy. Higher caster Accuracy means the target resists less often. If the target resists, nothing is removed.

2. Removal, only when the dispel lands. On a player, all buffs are removed except the Rest buff. On a pet, all buffs are removed. On a monster, each buff is tested on its own and is removed only when a random value from 0 to 1 is greater than that buff's Dispel Resist after subtracting the caster's Dispel Resist reduction:

Dispel Resist reduction
  single-target spell:   Accuracy × 0.5
  single-target scroll:  clamp(round(Mastery% ÷ 5), 1, 20) × 0.01
  area dispel:           0

The reduction is the caster's lever for stripping a monster's resistant buffs. A spell uses Accuracy, while a scroll uses the caster's Scroll Mastery rank, where each rank lowers a buff's Dispel Resist by 1 percentage point.

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.