weirdgloop / osrs-dps-calc

Web-based DPS calculator for Old School RuneScape
GNU General Public License v3.0
25 stars 25 forks source link

Adding blood moon set effect #380

Closed DavidOStewart closed 3 weeks ago

DavidOStewart commented 4 weeks ago

The blood moon set effect can be calculated as a modifier of the players attack speed, based on the players hit chance. Calculations will be shown in expanded form here and then simplified at the end with code blocks supplied:

Chance first hit lands: hitChance Chance first hit and does proc: hitChance * 1/3 Chance first hit lands and does not proc: hitChance * 2/3

For the second hit, we can only trigger the set effect if the first attack hit + did not trigger the set effect.

Chance independent second hit lands: hitChance Chance independent second hit lands and procs: hitChance * 1/3 Chance second hit lands and does proc = chance first hit lands and does not proc chance independent second hit lands and procs = `(hitChance 2/3) (hitChance 1/3)=hitChance^2 * 2 / 9`

For the formulas below, I'll call this likelihood of triggering per attack as procChance to evaluate the effect of the proc on average ticks attack.

Overall attack speed is ((1 - procChance) * normal aspd ) + (procChance * (aspd - 1)), which simplifies down to just normal aspd - procChance.

With perfect accuracy, this drops the average ticks/attack with dual macs from 4 down to 3.444..., as we have a 55.5...% chance of landing a proc every attack.

LlemonDuck commented 3 weeks ago

This breaks the TTK distribution and violates the expected contract that getAttackSpeed returns an integer. We also need getAttackSpeed to continue returning integers, but that's not a primary concern here.

We have had some other discussions in the wiki discord around why this doesn't work in our particular case, but tl;dr we don't compute anything using means so these "just multiply by x" things don't work for this calculator.

I have a branch that will account for the blood moon set fully and its performance has been getting better; it will probably be merged soon. Gonna close this for now.

LlemonDuck commented 3 weeks ago

By the way I've ended up using this after all in https://github.com/weirdgloop/osrs-dps-calc/commit/48f8880c14bfefb741882793b50570b08f3a56ba, although I believe your procChance formula was missing the first hit term.

This still isn't merged to live or even staging, but it will be included once some other related things are ready as well.

Thanks!