DPS Formulas
Every formula used in the calculator, in order of application. Based on the OSRS Wiki DPS documentation.
1. Effective Level
// Wiki order: base → potion (additive) → prayer (floor) → style + 8 → void (floor) effectiveLevel = FLOOR(FLOOR((baseLvl + potionBoost) × prayerMult) + styleBonus + 8) × voidMult)
Potion boosts (additive): Super Combat = 5 + FLOOR(lvl × 0.15); Ranging = 4 + FLOOR(lvl × 0.10); Magic = 4 + FLOOR(lvl × 0.10); Overload = 5 + FLOOR(lvl × 0.15); Smelling Salts = 11 + FLOOR(lvl × 0.16).
Prayer multipliers (str): Piety = 1.23; Chivalry = 1.18; Ult Str = 1.15; Rigour = 1.23; Eagle Eye = 1.15.
Prayer multipliers (atk): Piety = 1.20; Chivalry = 1.15; Rigour = 1.20; Augury = 1.25.
Style bonus (str): Aggressive = +3; Controlled = +1; others = +0.
Style bonus (atk): Accurate = +3; Controlled = +1; others = +0.
Void multipliers (str): Melee void = 1.10; Ranged void = 1.10, Elite ranged = 1.125; Mage void = 1.00, Elite mage = 1.025.
2. Equipment Strength
equipStr = SUM(gear[slot].mstr) // or .rstr for ranged, .mdmg for magic
Pact G6: +FLOOR(STR_level × 0.20) added to melee strength.
Pact G7: +FLOOR(Prayer_level × 0.50) added to melee strength.
3. Base Max Hit
// Melee & Ranged: maxHit = FLOOR(0.5 + effLvl × (equipStr + 64) / 640) // Powered Staff — each has unique base damage using visible magic level: // Shadow: FLOOR(magic / 3) + 1 // Sang / Lithic: FLOOR(magic / 3) - 1 // Trident Swamp: FLOOR(magic / 3) - 2 // Trident Seas: FLOOR(magic / 3) - 5 // Then: maxHit = FLOOR(baseDmg × (1 + mdmg% / 100)) // Standard Spells (e.g. Fire Surge base = 24): maxHit = FLOOR(spellBase × (1 + mdmg% / 100))
Shadow passive: Triples ALL equipment magic attack + magic damage % before calculation. Magic damage capped at 100%.
4. Multiplier Chain
Applied in order, each FLOOR'd after multiplication:
- Slayer Helm (i) / V's Helm: Melee ×7/6 (16.67%), Ranged/Magic ×1.15 (15%), on task only
- Style Pacts (GA/HA/FA): ×1.01
- Crossbow Mastery (K8): ×1.70
- Halberd Distance (J4): ×(1 + 0.04 × FLOOR(dist/3))
- Twisted Bow: ×MIN(250, MAX(0, 250 + FLOOR(3M/10) - FLOOR(M/200) - 100)) / 100
- Shadowflame Quadrant: ×1.40
- Osmumten's Fang: ×0.85 (reduced max hit, compensated by double roll + min hit)
- Arclight vs Demons: ×1.70
- Devil's Element: ×1.30 (elemental weakness)
Note: Void Knight bonus (1.10/1.125) is applied inside the effective level, not as a chain multiplier.
Shadow 3x is applied to equipment magic dmg% before max hit calc (not as a chain multiplier).
Flat modifiers after chain: H4 = +5 melee str; F8 = -8 powered staff max hit.
5. Attack Roll
attackRoll = (effAtkLvl + 8) × (equipAtk + 64) × (1 + pactAcc% / 100) // Pact accuracy: CA = +15%, F1 = +35%, H1 = 5% + 5%/tile
Void accuracy: ×1.10 applied to roll. Slayer helm: ×7/6 applied to roll.
TBow accuracy scaling: ×MIN(140, MAX(0, 140 + FLOOR(3M/10) - FLOOR(M/200) - 10)) / 100
6. Defence Roll
// Melee/Ranged: defRoll = (defLevel + 9) × (defBonus + 64) // Magic attacks: use target's magicLevel instead of defLevel defRoll = (magicLevel + 9) × (magicDefBonus + 64)
7. Accuracy
if (atkRoll > defRoll): accuracy = 1 - (defRoll + 2) / (2 × (atkRoll + 1)) else: accuracy = atkRoll / (2 × (defRoll + 1))
Double accuracy roll (N7 crossbow, Drygore): accuracy = 1 - (1 - acc)²
Fang exact double roll: A>D: 1-(D+2)(2D+3)/((A+1)²×6) | A≤D: A(4A+5)/(6(A+1)(D+1))
8. Attack Speed
speed = weapon.attackSpeed if (rapid style): speed -= 1 // Pacts: F7 (spell -2t), F8 (powered staff -3t), J2 (light melee -1t), K4 (bow -1t), K8 (xbow -2t) speed = MAX(1, speed)
9. DPS Calculation
// Standard: DPS = (maxHit / 2 × accuracy) / (speed × 0.6) // Always-max (N6 crossbow): DPS = (maxHit × accuracy) / (speed × 0.6) // Scythe: hits depend on target size (1×1=1, 2×2=2, 3×3+=3 hits) // hit1 = full max, hit2 = FLOOR(max/2), hit3 = FLOOR(max/4) DPS = DPS_hit1 + DPS_hit2 + DPS_hit3 // for 3×3+ targets // Fang: min hit raised, average = (max + FLOOR(max × 3/20)) / 2 fangMin = FLOOR(maxHit × 3 / 20) DPS = ((maxHit + fangMin) / 2 × accuracy) / (speed × 0.6) // Tecpatl double hit: DPS = standardDPS × 2
10. Bonus Hit DPS
// D2 Swift Strikes (light melee): bonusDPS = FLOOR(maxHit × 0.40) / 2 × accuracy / interval // D3 Blindside Blows (heavy melee): bonusDPS = 0.15 × maxHit × accuracy / interval
11. Echo Cascade
echoRate = B2(+25% ranged) + K10(+5% all) + E2(+15% xbow) // Without cascade: echoDPS = baseDPS × echoRate // With K3 (cascade 4x): echoDPS = baseDPS × echoRate × (1 + p/2 + p/4 + p/8) // E1 (bow echo never miss): echo accuracy = 100%
12. Weapon Passives
Fang of the Hound: 5% chance Flames of Cerberus proc (bonus fire hit).
Drygore Blowpipe: Double accuracy roll. 25% chance burn DoT (3-tick fire).
King's Barrage: 2 bolts per attack (each at halved max), freeze.
Nature's Recurve: 50% chance heal 10% damage (no DPS effect).
Flask of Fervour: +1.5 flat DPS.
Sources: OSRS Wiki — Damage per second, OSRS Wiki — Combat. Pact modifiers are DP-league specific.