Battle Brothers

Battle Brothers

View Stats:
turtle225 Nov 28, 2019 @ 9:26pm
Finding out which damage calculator tool is the best.
Note: Thread is old and necro'd. Original post is outdated.

TLDR exists if you don't want to read.

As regulars around here know, I've spent a lot of time playing around with both Felix's and Wall's damage calculators. My problem with them has always been a suspicion that they may not be fully accurate. So I've tried building my own calculator to test against them using my rudimentary Python knowledge. While doing research for this I also found Lord Midas's tool which is pretty much amazing. Also makes me feel like an idiot for not checking it out months ago when Abel posted it in Wall's thread.

Felix: https://bbbros.herokuapp.com/
Wall: https://wlirareddit.github.io/bb_calculator/
Lord Midas: https://www.reddit.com/r/BattleBrothers/comments/c1amwp/simulation_program_v02_release_bleed_mechanics/

These three calculators will differ because they return different fields. Felix is returning your effective hp given the setup which makes it hard to compare to other calculators and is also really not that translatable of information to how many hits you can expect to survive. Wall is returning the expected number of hits survived. Lord Midas returns the expecting number of hits until death and so does mine. Naturally you would die in one additional hit than you would survive, so if all tools are accurate than Wall's mean should be exactly one less than Lord Midas and my own.

My calculator has not been fitted with logic for perks and other modifiers. It just has the basic damage formula with headshots. But this should be enough to test the basics of the calculators to see if they are accurate. It runs 100,000 simulations and records how many hits it took to die and stores that value in a list. Then I run analytics on the list at the end.

First example:
Dagger Puncture vs 200 hp target (Orc Warrior), Puncture cannot crit.
Felix: 6.67 hits of Ehp
Wall: 6.18 hits survived on average. St. Dev of .57
Lord Midas: 7.2 hits until death on average. St. Dev of .6
Mine: 7.18 hits until death on average. St. Dev of .6

All of the calculators do fine here. But this does show the awkwardness of Felix's calculator. What does 6.67 Effective hp really mean for my survive-ability? Will I die in 6 hits, 7? It is hard to tell.

Second example.
Ancient Bladed Pike vs 100 hp, 105 helmet, 95 armor. No perks in play.
Felix: 2.6 hits of Ehp
Wall: 2.84 hits survived on average. St. Dev of .77
Lord Midas: 3.2 hits until death on average. St. Dev of .5
Mine: 3.18 hits until death on average. St. Dev of .49

Let's leave Felix aside for now. Wall's calculator shows a red flag here. It should be exactly 1 off of Lord Midas and mine and it isn't. So who is wrong? I switched the Bladed Pike to always do Min 70, Max 70 damage to find out.

Wall: 2.9 hits survived on average. St. Dev of .79. 37% Death in 3, 36% Death in 4, 27% Death in 5.
Lord Midas: 2.9 hits until death on average. St. Dev of .3 (Death% similar to mine, no exact numbers are given in his tool).
Mine: 2.91 hits until death on average. St. Dev of .28. 9% Death in 2, 91% Death in 3.

According to Wall's calculator you will never die in 2 hits and according to Lord Midas and mine you will never survive 4 hits. This should make it easy to figure out if one of us is flawed.

Damage is locked in at 70. Obvious test example is 2 headshots. 70 * 1.25 = 87.5. No idea how it rounds so we'll use logic and assume up for 88. Our hat takes 88 damage. We take 30% piercing damage. 70 * .3 = 21. We have 17 armor left so we subtract piercing damage by 1.7 -> 2, so we are at 19 now. It's a headshot. 19 * 1.5 = 28.5 -> 29. After the first attack we have 17 helmet armor left and 71 hp. I don't need to give you the math for you to see that we are dead with a second headshot coming in. Without showing you the math there is no way we are surviving 4 hits here either. Therefore we can conclude that Wall's calculator is flawed.

TLDR and Conclusion:
Felix's tool is awkward to comprehend as useful data. Wall's tool is flawed. Lord Midas's is consistent with my own basic calculator. Lord Midas's also comes with a nice gui and an incredible suite of perk and trait logic baked in. Seriously, check his tool out. It is awesome.

I am somewhat saddened in that I have spent a lot of time doing Nimble calculations and Steelbrow denouncements and more using Wall's tool and now I've convinced at least myself that it is untrustworthy. I may take the time to re-do some of my experiments with Lord Midas's tool, so stay tuned if you are interested in that stuff (but don't hold your breath, it might be awhile). Thanks for reading.
Last edited by turtle225; Jan 11, 2021 @ 5:40pm
< >
Showing 1-15 of 45 comments
Abel Nov 29, 2019 @ 3:36am 
Nice post, as usual!
Yes, I think both Wall's and felix's tools use outdated formula from when we didn't have access to the code. Lord Midas on the other hand made sure to use it and revised his tool several times. The lack of enemy presets is a bit annoying but other than that it looks flawless.
turtle225 Dec 3, 2019 @ 5:25pm 
I started fooling around with Lord Midas's calculator some more and I believe that I have found a bug. His Nimble formula appears to be off from the game.

Fatigue of Armor.
Displayed Nimble% in Game.
Nimble% in Lord Midas's Tool.
15
40%
40%
16
41%
42%
17
42%
43%
18
44%
44%
19
46%
45%
20
47%
46%
21
49%
47%
22
51%
49%
23
53%
50%
24
55%
51%
25
57%
53%

At first I thought it was just rounding differences but once you get to heavier sets it becomes clear that there is something different going on. Kind of throws a wrench into my plans of recreating my old Nimble tests.

I could do Nimble on my own calculator pretty easily. I'm not sure if in game BB uses the whole number of your displayed Nimble% or if that is just a rounded number presented to the player and the actual behind the scenes uses a decimal generated by the proper exponential Nimble formula. As in does a 42% 17 fatigue Nimble actually run something like 41.7% behind the scenes? Otherwise I could do whole numbers pretty easily and it should in theory be accurate.
Last edited by turtle225; Dec 3, 2019 @ 6:31pm
turtle225 Dec 3, 2019 @ 9:00pm 
Abel I have a question if you are reading this since you are sort of the father of the damage formula as far as I am aware. Where exactly is the Nimble reduction placed in, because I think Lord Midas has it wrong. Can you confirm for me based on what you know?

I've built my formula based on the Wiki (which I'm pretty sure you wrote) and double checked with your post on it awhile back in the forums. It looks like Nimble is applied early in the formula directly to the Regular Damage field.

In other words it is applied directly to the hp_damage_roll. So if my Bladed Pike rolls 70 and I have 40% Nimble then I immediately cut that 70 to 28 before I continue with the rest of the formula.

This is important for the formula because that means that Nimble applies before the ignore_armor and 10%_remianing_armor reduction modifiers factor in. This makes Nimble stronger than just a direct hp multiplier (as in 250 hp non-Nimble is worse than 100hp 40% Nimble).

I believe that Lord Midas is putting the Nimble reduction at the end where the headshot modifier is. Here is my evidence.

Ancient Bladed Pike vs 100 hp, 120 helmet, 95 armor, 40% Nimble.
Lord Midas: 5.7 hits until death on average. St. Dev of .5
Mine (Nimble at the end): 5.66 hits until death on average. St. Dev of .54
Mine (Nimble at the start): 6.1 hits until death on average. St. Dev of .67

Ancient Bladed Pike vs 250 hp, 120 helmet, 95 armor, no Perks in play.
Lord Midas: 5.7 hits until death on average. St. Dev of .5
Mine: 5.66 hits until death on average. St. Dev of .54

As can be seen Nimble at the start or end of the formula makes a big difference.
Wall Dec 3, 2019 @ 11:59pm 
I usually use reddit, not here. Thanks for your hard work trying to figure it out! Care to share the formulas so I can double check my code? Maybe it is a simple bug.
Abel Dec 4, 2019 @ 12:29am 
Yes, turtle, you are right. The remaining armor reduction takes place at the end (but before critical hit calculations). So, if Lord Midas' tool applies the Nimble reduction at the end then it's wrong.
The relevant code is in actor.nut, line 1456/7:
local damage = 0; damage = damage + this.Math.maxf(0.0, _hitInfo.DamageRegular * _hitInfo.DamageDirect * p.DamageReceivedDirectMult - armor * this.Const.Combat.ArmorDirectDamageMitigationMult);
Nimble modifies the DamageReceivedRegularMult variable, which itself modifies the _hitInfo.DamageRegular variable.
This also explains why Indomitable with heavy armor is so strong.

The Nimble formula is this:
fat = this.Math.min(0, fat + 15); local ret = this.Math.minf(1.0, 1.0 - 0.6 + this.Math.pow(this.Math.abs(fat), 1.23) * 0.01);
which outputs:
FAT
%
-15
0.4
-16
0.41
-17
0.423457
-18
0.438624
-19
0.455022
-20
0.472399
-21
0.4906
-22
0.509514
-23
0.529063
-24
0.549183
-25
0.569824
-26
0.590947
-27
0.612517
-28
0.634504
-29
0.656884
-30
0.679635
-31
0.702738
-32
0.726176
-33
0.749933
-34
0.773996
-35
0.798352
-36
0.82299
-37
0.847899
-38
0.87307
-39
0.898494
-40
0.924163
-41
0.950069
-42
0.976206
-43
1
Last edited by Abel; Dec 4, 2019 @ 12:57am
Abel Dec 4, 2019 @ 1:05am 
Wall, did you use the old formula, perhaps? I created a damage page[battlebrothers.fandom.com]when we got access to the code. In theory, everything should be there. The formula are in skill.nut and actor.nut.

Not sure if your formula are correct or not because I don't know what values you are using for other (numerous) variables.

Edit: your message disappeared but I'll leave my answer still.
Last edited by Abel; Dec 4, 2019 @ 1:07am
Wall Dec 4, 2019 @ 1:17am 
Originally posted by Abel:
Wall, did you use the old formula, perhaps? I created a damage page[battlebrothers.fandom.com]when we got access to the code. In theory, everything should be there. The formula are in skill.nut and actor.nut.

Not sure if your formula are correct or not because I don't know what values you are using for other (numerous) variables.

Edit: your message disappeared but I'll leave my answer still.

I will take a look on it carefully and fix the tool. Thanks!
Wall Dec 4, 2019 @ 2:51am 
Originally posted by turtle225:
...

Thanks for testing. It was a minor bug on the hit that breaks the armor. The damage mitigation value was not being applied to the formula only for that hit. It is still a little bit off compared to what you got and what the other tool gets, so I need to figure out if there is some other small typo or something.

I was not supporting the tool because I really thought no one was using it. Like I mentioned before, I prefer to use the reddit platform for game related content.

Another thing I did not know was that the bonus damage from drunkard, huge and killing frenzy were multiplicative instead of additive. I corrected it now. If you are interested in doing some tests by hand like you did here, I can check if my tool calculates it properly.

I also updated the nimble formula, I guess it changed some updates ago. I was using 1.2 instead of 1.23.

Regardless, I think that Lord Midas's tool is superior to mine in many ways. I did not implement weapon skills, bleeding and so on.
Last edited by Wall; Dec 4, 2019 @ 3:27am
turtle225 Dec 4, 2019 @ 8:23am 
Originally posted by Abel:
Yes, turtle, you are right. The remaining armor reduction takes place at the end (but before critical hit calculations). So, if Lord Midas' tool applies the Nimble reduction at the end then it's wrong.
The relevant code is in actor.nut, line 1456/7:
local damage = 0; damage = damage + this.Math.maxf(0.0, _hitInfo.DamageRegular * _hitInfo.DamageDirect * p.DamageReceivedDirectMult - armor * this.Const.Combat.ArmorDirectDamageMitigationMult);
Nimble modifies the DamageReceivedRegularMult variable, which itself modifies the _hitInfo.DamageRegular variable.
This also explains why Indomitable with heavy armor is so strong.

The Nimble formula is this:
fat = this.Math.min(0, fat + 15); local ret = this.Math.minf(1.0, 1.0 - 0.6 + this.Math.pow(this.Math.abs(fat), 1.23) * 0.01);

Thanks Abel. I'm having trouble comprehending the Nimble formula. Is that a coding language? The output was helpful and good enough for my purposes though so thank you.
turtle225 Dec 4, 2019 @ 8:34am 
Originally posted by Wall:
Regardless, I think that Lord Midas's tool is superior to mine in many ways. I did not implement weapon skills, bleeding and so on.

Hi Wall, thanks for coming by. Sorry for calling out your calculator. Lord Midas's is indeed impressive, but I like how your graphs let me see the actual % chances and LM also doesn't have armor attachments. LM also has an incorrect Nimble formula it seems.

Originally posted by Wall:
I usually use reddit, not here. Thanks for your hard work trying to figure it out! Care to share the formulas so I can double check my code? Maybe it is a simple bug.

A screenshot would probably be easier but oh well I'll try typing it out. I wrote it in Python. The - Dashes aren't really there but I need it for formatting here on Steam. I've initialized the weapon stats above this code block.

for i in range(0,100000):
-- hp = 100
-- helmet = 120
-- body = 95
-- Nimble = .4
-- count = 0 #This is how I count how many hits until death.
-- while hp > 0:
---- armor_roll = random.randint(min,max) * armormod #armormod is % vs armor
---- hp_roll = random.randint(min,max)
---- head_roll = random.randint(1,100)
---- if head_roll <= headchance: #If we get a headshot, use the following blocks.
------ helmet -= armor_roll
------ if helmet < 0: #If the helmet is destroyed, set armor damage to exact lost armor.
-------- armor_roll = armor_roll + helmet
-------- helmet = 0 #Set helmet to 0 so that it isn't negative.
------ if helmet > 0: #If helmet isn't destroyed.
-------- hp_roll = hp_roll * ignore * Nimble - (helmet * .1) #Ignore is %ignore of wep.
-------- hp_roll = hp_roll * 1.5 #Headshot applied last.
-------- hp -= hp_roll
------ else: #If helmet is destroyed use this block instead.
-------- OverflowDamage = hp_roll * (1 - ignore) * Nimble - armor_roll
-------- if OverflowDamage < 0:
---------- OverflowDamage = 0
-------- hp_roll = hp_roll * ignore * Nimble + OverflowDamage
-------- hp_roll = hp_roll * 1.5
-------- hp -= hp_roll
---- else: #If not a headshot, do the same code but without the headshot modifier.
------ #Here would be the same code without the headshot modifier.
---- count += 1 #After a roll we up the number of hits we have taken.
---- if hp <= 0: #If death, then add the hits taken to die into the list for later analysis.
------ countlist.append(count)

I'm not a programmer and as you can see I don't have any logic for most Traits or Perks, but I think I have the basic formula correct (hopefully), and this should be good enough to do Nimble and Steelbrow analysis that I want to do.

If I set the Nimble effect on the first initialization of the hp_roll instead of putting it in the middle I get the same answer. But with the way Abel described the formula it felt more appropriate to put it in the middle.

Dang that looks hideous. I should have just done a screenshot. If you guys know an image sharing site or tool that I don't have to register for then I'll post a screenshot.
Last edited by turtle225; Dec 4, 2019 @ 9:07am
Wall Dec 4, 2019 @ 10:45am 
Originally posted by turtle225:
Hi Wall, thanks for coming by. Sorry for calling out your calculator. Lord Midas's is indeed impressive, but I like how your graphs let me see the actual % chances and LM also doesn't have armor attachments.

for i in range(0,100000):
-- hp = 100
-- helmet = 120
-- body = 95
-- Nimble = .4
-- count = 0 #This is how I count how many hits until death.
-- while hp > 0:
---- armor_roll = random.randint(min,max) * armormod #armormod is % vs armor
---- hp_roll = random.randint(min,max)
---- head_roll = random.randint(1,100)
---- if head_roll <= headchance: #If we get a headshot, use the following blocks.
------ helmet -= armor_roll
------ if helmet < 0: #If the helmet is destroyed, set armor damage to exact lost armor.
-------- armor_roll = armor_roll + helmet
-------- helmet = 0 #Set helmet to 0 so that it isn't negative.
------ if helmet > 0: #If helmet isn't destroyed.
-------- hp_roll = hp_roll * ignore * Nimble - (helmet * .1) #Ignore is %ignore of wep.
-------- hp_roll = hp_roll * 1.5 #Headshot applied last.
-------- hp -= hp_roll
------ else: #If helmet is destroyed use this block instead.
-------- OverflowDamage = hp_roll * (1 - ignore) * Nimble - armor_roll
-------- if OverflowDamage < 0:
---------- OverflowDamage = 0
-------- hp_roll = hp_roll * ignore * Nimble + OverflowDamage
-------- hp_roll = hp_roll * 1.5
-------- hp -= hp_roll
---- else: #If not a headshot, do the same code but without the headshot modifier.
------ #Here would be the same code without the headshot modifier.
---- count += 1 #After a roll we up the number of hits we have taken.
---- if hp <= 0: #If death, then add the hits taken to die into the list for later analysis.
------ countlist.append(count)

Your code is concise, simple is better when it comes to coding. This is enough for what I need. Thanks!

Do not be sorry for calling it out. When I created the tool I asked people to provide feedback and say if they found any bug. This is why I added that informative graph and armor attachments. If I knew the tool was being used like this I would already have updated it with weapon skills and more graphs as well.

I will let you know when I update it in this thead. By the way, it is fine to say if there is any feature you would like my tool to have. I can see how feasible it is and incorporate in the tool if it is possible.

EDIT: I updated the overflow damage part of my code to be consistent with yours, now our values closely align for the pike scenario you described. I pushed the changes to the website.
Last edited by Wall; Dec 4, 2019 @ 11:58am
Wall Dec 4, 2019 @ 10:56am 
Originally posted by turtle225:
Originally posted by Abel:
Yes, turtle, you are right. The remaining armor reduction takes place at the end (but before critical hit calculations). So, if Lord Midas' tool applies the Nimble reduction at the end then it's wrong.
The relevant code is in actor.nut, line 1456/7:
local damage = 0; damage = damage + this.Math.maxf(0.0, _hitInfo.DamageRegular * _hitInfo.DamageDirect * p.DamageReceivedDirectMult - armor * this.Const.Combat.ArmorDirectDamageMitigationMult);
Nimble modifies the DamageReceivedRegularMult variable, which itself modifies the _hitInfo.DamageRegular variable.
This also explains why Indomitable with heavy armor is so strong.

The Nimble formula is this:
fat = this.Math.min(0, fat + 15); local ret = this.Math.minf(1.0, 1.0 - 0.6 + this.Math.pow(this.Math.abs(fat), 1.23) * 0.01);

Thanks Abel. I'm having trouble comprehending the Nimble formula. Is that a coding language? The output was helpful and good enough for my purposes though so thank you.

this.Math.min(a, b) is the minimum among two integer values.

this.Math.minf(a, b) is the minimum among two float values.

In python, the formula is equivalent to this:

fat = min(0, fat + 15)
nimble_percentage = 1.0 - 0.6 + pow(abs(fat), 1.23) * 0.01
nimble_percentage = min(1.0, nimble_percentage)

Just copy paste this into your code.
Last edited by Wall; Dec 4, 2019 @ 1:31pm
turtle225 Dec 4, 2019 @ 10:09pm 
Originally posted by Wall:
this.Math.min(a, b) is the minimum among two integer values.

this.Math.minf(a, b) is the minimum among two float values.

In python, the formula is equivalent to this:

fat = min(0, fat + 15)
nimble_percentage = 1.0 - 0.6 + pow(abs(fat), 1.23) * 0.01
nimble_percentage = min(1.0, nimble_percentage)

Just copy paste this into your code.

Thank you. That cleared up my confusion. I got it integrated now and it is working well.

Originally posted by Wall:
Do not be sorry for calling it out. When I created the tool I asked people to provide feedback and say if they found any bug. This is why I added that informative graph and armor attachments. If I knew the tool was being used like this I would already have updated it with weapon skills and more graphs as well.

The graph and armor attachments are great. What I did a while back was test a bunch of different Nimble lines with or without Bone Plates and Steelbrow against some different enemy types to see how they compared. I'd like to do it again but want to make sure the formula is nailed down.

Originally posted by Wall:
EDIT: I updated the overflow damage part of my code to be consistent with yours, now our values closely align for the pike scenario you described. I pushed the changes to the website.

Thanks!

I did a bunch of testing and found a scenario where we were very different and after like 2 hours of digging into it I found a silly oversight on my side. The way I wrote it left it possible for the -10% remaining armor calculation to turn the hp_roll negative (due to high remaining armor and a low modified hp roll from Nimble, or it would also happen from just heavy armor in general against a low penetration weapon). Since I apply a -= hp logic that meant that it was possible to gain hp from an attack which is obviously a problem. So I fixed that and now we are very close.

We aren't quite in sync though and I'm at a loss as to what it could be. I'm not fully convinced that it can be tossed out as statistical insignificance because I run a lot of trials and we often end up slightly different. On the surface they look close enough but if we dig into the %death by hit they don't line up nicely.

Here is a verbose test using Bladed Pike vs. 100Hp, 120 Helmet, 95 Armor, No Nimble.
Yours: Mean of 2.31, St. Dev of .51. Survived hits: 2: 2.26%, 3: 65%, 4: 32.5%, 5: .25%
Mine: Mean of 2.32, St. Dev of .5. Survived hits: 2: 1.39%, 3: 65.33%, 4: 33.19%, 5: .09%

Those numbers might seem close enough to be gotten by chance, but even if I repeat the rolls on each calculator the differences don't really budge, and since I run 100,000 trials there is a pretty big sample size. I'm assuming yours runs a bunch as well. Other tests are just slightly off as well.

Maybe I'm just splitting hairs at this point, but I'm pretty sure we still have a difference between us. Maybe it is close enough that it isn't worth looking into. If something jumps out to you on your side then please share but otherwise don't spend too much time on it. It's pretty close now as it is. Could be a problem on my side. After finding my mistake with the 10% armor thing I'm paranoid of my own code's trustworthiness.

Thanks again for taking the time to update your tool and helping me out.
Wall Dec 4, 2019 @ 11:42pm 
I run 200k simulations.

It really helps if you provide a specific scenario with actual numbers, then I can narrow down the causes. Something like you did with the ancient pike that always causes 70 damage.

You can also see if for these actual values your tool reports the correct results.

I did not have two separate rolls for armor base damage and health base damage, I just used the same roll on both, so that explains part of why my distribution has higher results in the boundary cases compared to yours. I just updated it to do two rolls like stated in the wiki, but we still have a little disparity (less than before though).
Last edited by Wall; Dec 5, 2019 @ 12:52am
turtle225 Dec 5, 2019 @ 11:02pm 
Originally posted by Wall:
It really helps if you provide a specific scenario with actual numbers, then I can narrow down the causes. Something like you did with the ancient pike that always causes 70 damage.

You can also see if for these actual values your tool reports the correct results.

Yeah, that's how I ended up finding my problem with the 10% armor thing.

Right now the calcs are really close.

I went one by one from 55min/55max all the way to 80min/80max with Bladed Pike vs 100hp, 120 helmet, 95 armor, 40% Nimble and I don't think I ever saw a difference of more than .3% and that appeared to be within the realm of statistical insignificance if I re-ran it on my calculator. Without weapon damage variance I feel pretty confident.

Here's an example of 70/70 and two different runs of my calculator.
Yours: Mean of 4.79, St. Dev of .42. Survived hits: 3: .79%, 4: 18.98%, 5: 80.23%
Mine(1): Mean of 4.79, St. Dev of .42. Survived hits: 3: .78%, 4: 19.07%, 5: 80.16%
Mine(2): Mean of 4.79, St. Dev of .43. Survived hits: 3: .82%, 4: 19.18%, 5: 80.01%

---

Doing normal 55/80 Bladed Pike also yields very tight results. I'm not seeing a difference of more than .3% here either in multiple runs.

Here is a normal 55/80 Bladed Pike example.
Yours: Mean: 5.1, St.D: .66. Hits: 3: .49%, 4: 15.83%, 5: 56.48%, 6: 27.17%, 7: .04%
Mine(1): Mean: 5.1, St.D: .6649. Hits: 3: .49%, 4: 15.89%, 5: 56.32%, 6: 27.25%, 7: .07%
Mine(2): Mean: 5.1, St.D: .6650. Hits: 3: .48%, 4: 16.09%, 5: 56.37%, 6: 27.01%, 7: .06%

---

Differences are larger in a 65/75 Bladed Pike scenario and I'm not sure what to make of it. Seeing differences as high as 1.64% here that is unlikely due to chance. Trial 3 I did with a million rolls.

Here is Bladed Pike at 65/75 example.
Yours: Mean: 4.84, St.D: .52. Hits: 3: .79%, 4: 20.11%, 5: 72.93%, 6: 6.17%.
Mine(1): Mean: 4.84, St.D: .534. Hits: 3: .74%, 4: 21.05%, 5: 71.29%, 6: 6.92%.
Mine(2): Mean: 4.84, St.D: .534. Hits: 3: .79%, 4: 21.03%, 5: 71.33%, 6: 6.85%
Mine(3): Mean: 4.84, St.D: .533. Hits: 3: .76%, 4: 20.99%, 5: 71.42%, 6: 6.83%

Likely a difference between us here but I'm not sure how to find it or why this example would vary while the normal 55/80 example doesn't.

---

Did some quicker tests at various damage ranges for Bladed Pike.
55/65: Biggest difference of .90%
60/70: Biggest difference of .82%
70/80: Biggest difference of 1.05%
60/80: Biggest difference of .40%
65/80: Biggest difference of .53%

None of these are as large as the 65/75 test so I decided to try and narrow that one down.

---

64/76: 1.33%
66/74: 1.40%
67/73: 1.23%
68/72: .31%
69/71: .16%

I didn't post all of the numbers, but the commonality I'm seeing in these examples is that your calculator always seems to have a higher % in the 5 hits section and mine always seems to have a higher % in the 6 hits section.

In the 68/72 example yours has a .04% chance to survive 6 and mine has a .38%.

That seemed like a good place to attack so I opened up some verbosity on my tool and found a sample case where I survived 6 hits. I double checked the math on the output by hand and it checks out, but I have the bro surviving with 0.15hp left and I'm not sure if that's ok? What is your death condition? I'm not sure how much rounding goes on behind the scenes in game.

I tried setting my death condition to be < 1 instead of <= 0 and that appeared to solve the discrepancy in the 68/72 example but it throws everything else way off so maybe I'm not on the right track.
< >
Showing 1-15 of 45 comments
Per page: 1530 50

Date Posted: Nov 28, 2019 @ 9:26pm
Posts: 45