Combat Mechanics
Steps applied in order to every damaging hit.
| Step | Description |
|---|---|
| 1 | Base damage: formula-specific (see Damage Formulas below) |
| 2 | Variance: ×0.9–1.1 random |
| 3 | Backstab: +10% (+25% with Improved Backstab) plus 1 flat, when the attacker is behind the target |
| 4 | Level difference: ±2% per level, max ±20% |
| 5 | Slayer reduction: −(Slayer level × 10%) |
| 6 | Enrage: players deal 33% more damage below 50% HP. Monsters deal 50–75% more damage below 10% HP. Non-spell skills only |
| 7 | Physical mitigation: damage − ⌈damage × clamp(defense × 0.0005, 0, 0.9)⌉ (max 90%) |
| 8 | Crit: 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.
Determines the base damage for step 1 of the pipeline.
| Category | Kind | Formula |
|---|---|---|
| Physical | normal | STR×1.0 + all equipment |
| Physical | ranger_melee | STR×1.0 + all equip minus bow slot bonus |
| Physical | rogue_melee | STR×1.0 + main-hand dmg + ⌊off-hand dmg × 0.5⌋ + other equip |
| Physical | rogue_melee_merc | STR×1.0 + main-hand dmg + off-hand dmg + other equip |
| Ranged | ranged_player | STR×1.0 + bow + armour + DEX×1.5 minus melee slot bonus |
| Ranged | ranged_player_frontal | STR×1.0 + DEX×1.5 + all equip including melee weapons (unlike ranged_player) |
| Ranged | ranged_merc | STR×1.0 + bow + melee weapon + other equip + DEX×1.5 |
| Poison | poison_rogue | rogue_melee component + DEX×2.5 |
| Magic | magic_spell | INT×1.5 + wand magic stat + other magic equip |
| Magic | magic_weapon | INT×1.5 + STR×1.0 + equipment, physical and magic components mitigated separately |
| Magic | magic_weapon_ranger | Like magic_weapon, but the physical component excludes the bow's flat damage bonus |
| Special | manaburn | Current Rage or Mana × 2 (bypasses all mitigation and resist) |
| Monster | monster_melee | baseDamage(level), scales with monster level |
| Monster | monster_magic | baseMagicDamage(level), scales with monster level |
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 type | Mitigation stat |
|---|---|
| Physical | Defense |
| Magic | Magic Resist |
| Fire | Fire Resist |
| Cold | Cold Resist |
| Disease | Disease Resist |
| Poison | Poison 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
| Modifier | Effect |
|---|---|
| Moving target | Resist chance −0.25, damage +10% |
| Backstab | Resist chance ×0.8 |
| Manaburn | Bypasses all mitigation and resist |
| Bypasses Debuff Immunity | Resist chance −0.30 |
| Boss/elite + large speed debuff | Forced resist regardless of roll |
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.
| Kind | Formula Applied |
|---|---|
| player_ranger | base × min(WIS×3 × 0.004, 5.0), Ranger bonus |
| player_other | base × min(WIS × 0.004, 5.0), non-Ranger |
| merc | base × min(WIS × 0.004, 5.0), Ranger mercs do not receive the 3× multiplier |
| none | No bonus (monster, NPC, non-merc pet) |
How WIS (or Player Level) scales buff field values.
Per-Field WIS Multipliers
| Buff Field | WIS Scaling |
|---|---|
| Max Health | base + WIS×2 |
| Defense | base + WIS×0.15 |
| Magic Resist | base + WIS×0.15 |
| Ward | base + WIS×2 |
| Damage Shield | base + WIS×0.75 |
| Elemental Resists | base + 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
| Source | Condition |
|---|---|
| player_wis | Player non-Ranger (target_buff + area_buff) |
| player_ranger_wis | Player Ranger (target_buff only, area_buff uses player_wis) |
| player_wis_con_avg | Area buff + is_mercenary_skill |
| merc_wis | Mercenary pets |
| none | Monster/NPC (bonusAttribute = 0) |
Attribute Dispatch
| Debuff type | Attribute used |
|---|---|
| Melee debuffs (reduce physical defense) | STR |
| Poison and disease debuffs | DEX |
| All other debuffs (magic, fire, cold, untagged) | INT |
Per-Field Scaling
| Field | Scaling |
|---|---|
| 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.
How attack interval and haste interact per caster model.
Interval Formulas
| Model | Caster | Interval |
|---|---|---|
| player_auto | Player auto-attacks | castTime + clamp(delay×(1−haste)/25, 0.25, 2.0) |
| player_spell | Player spell auto-attacks | castTime×(1−spellHaste) + 0.75s |
| companion | Companions and familiars | castTime + cooldown |
| merc_auto | Merc auto-attacks | castTime + cooldown×(1−haste) |
| merc_spell | Merc spells | castTime×(1−spellHaste) + cooldown |
| monster | All monster and NPC attacks | Non-spell: castTime + cooldown×(1−haste) Spell: castTime + cooldown |
Haste Effects
| Model | Regular haste | Spell haste |
|---|---|---|
| player_auto | Reduces the delay term (min: 0.25 s, max: 2.0 s, cap: 80%). | No effect |
| player_spell | No effect | Reduces cast time (cap: 50%). Refractory (0.75s) unaffected. |
| companion | No effect | No effect |
| merc_auto | Reduces cooldown | No effect |
| merc_spell | No effect | Reduces cast time (cap: 50%). Cooldown unaffected. |
| monster | Reduces cooldown for non-spell attacks. Spell attack cooldowns are unaffected by haste | No effect |
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 Resist | Result of one cast |
|---|---|
| 0 | All 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.