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: 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) |
| 7 | Physical mitigation: damage − ⌈damage × clamp(defense × 0.0005, 0, 0.9)⌉ (max 90%) |
| 8 | Crit: ×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.
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.
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
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.
| 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 | +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-Time | base × (1 + min(WIS×0.004, 3.0)) |
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.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.
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 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 Resist | Behaviour |
|---|---|
| None | Fully cleansable: all stacks removed in one cast |
| Partial | One stack always removed. Each remaining stack has an independent chance to resist |
| Full | Cannot 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.