View Full Version : Research: Divine Strike Raw Damage Formula
Danical
06-09-2015, 05:26 PM
I went through all my logs and got output for my Divine Strike casts. Then I ran a linear regression on the data. From there it was just algebra. I'm not entirely sure if the outcome margin rounds or truncates. Either way, the raw damage from 1615 is pretty poor given the wild variability.
15 + trunc(0.5 * ((outcome_margin / 2) + (0 to (outcome_margin / 2))))
https://dl.dropboxusercontent.com/u/355799/1615_regression.png
Whirlin
06-09-2015, 07:09 PM
data makes me happy
Riltus
06-09-2015, 09:47 PM
I went through all my logs and got output for my Divine Strike casts. Then I ran a linear regression on the data. From there it was just algebra. I'm not entirely sure if the outcome margin rounds or truncates. Either way, the raw damage from 1615 is pretty poor given the wild variability.
15 + trunc(0.5 * ((outcome_margin / 2) + (0 to (outcome_margin / 2))))
https://dl.dropboxusercontent.com/u/355799/1615_regression.png
Should this be something like:
15 + trunc(DF 0.250 * outcome_margin) + (DF 0.250 * random) where random is 0 to outcome_margin or
15 + trunc(DF 0.250 * (outcome_margin + random))??
Example:
200 success margin
15 + (0.25 * 200) + rand[(0.25 * (0 to 200)]
15 + 50 + (0 to 50) = raw damage (min 65, max 105, avg 90)
Mark
Danical
06-09-2015, 10:52 PM
Should this be something like:
15 + trunc(DF 0.250 * outcome_margin) + (DF 0.250 * random) where random is 0 to outcome_margin or
15 + trunc(DF 0.250 * (outcome_margin + random))??
Example:
200 success margin
15 + (0.25 * 200) + rand[(0.25 * (0 to 200)]
15 + 50 + (0 to 50) = raw damage (min 65, max 105, avg 90)
Mark
Should be max of 115, correct?
;e ubound = 79; lbound = (ubound * 0.5).round; df = 0.5; base = 15; dstrike = StringProc.new("#{base} + (#{df} * rand(#{lbound}..#{ubound})).round"); data = Array.new; 1000.times { data.push(dstrike.call) }; echo data.min; echo data.max;
[exec1: 35]
[exec1: 55]
;e ubound = 200; lbound = (ubound * 0.5).round; df = 0.5; base = 15; dstrike = StringProc.new("#{base} + (#{df} * rand(#{lbound}..#{ubound})).round"); data = Array.new; 1000.times { data.push(dstrike.call)}; echo data.min; echo data.max;
[exec1: 65]
[exec1: 115]
This matches the lowest and highest data points in my data set for an outcome_margin of 79.
Whatever is easiest to read for the layperson is best.
Riltus
06-09-2015, 11:01 PM
Should be max of 115, correct?
;e ubound = 79; lbound = (ubound * 0.5).round; df = 0.5; base = 15; dstrike = StringProc.new("#{base} + (#{df} * rand(#{lbound}..#{ubound})).round"); data = Array.new; 1000.times { data.push(dstrike.call) }; echo data.min; echo data.max;
[exec1: 35]
[exec1: 55]
;e ubound = 200; lbound = (ubound * 0.5).round; df = 0.5; base = 15; dstrike = StringProc.new("#{base} + (#{df} * rand(#{lbound}..#{ubound})).round"); data = Array.new; 1000.times { data.push(dstrike.call)}; echo data.min; echo data.max;
[exec1: 65]
[exec1: 115]
This matches the lowest and highest data points in my data set for an outcome_margin of 79.
Whatever is easiest to read for the layperson is best.
Correct, that should be 115.
Anyway, great work!
Mark
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.