This bug appears to be accurate. I have a Biofield Laser Satellite. With a Rare T-Bone Steak, stats are: Damage Add: +858.6% Crit Damage: +1150.5% Crit Chance: +192.7% Multicrit: +7 Average Damage: 78.8M With Meat Mallet, stats are: Damage Add: +1028.6% Crit Damage: +1150.5% Crit Chance: +132.7% Multicrit: +7 Average Damage: 64.3M Of course, this does not make sense. Not unless having a Crit Chance higher than 100% somehow contributes to damage, which is the second point that DerpMinh is raising. Does 200% Crit Chance guarantee 2 crits, with respectfully higher chances of +3, +4, etc. crits? Same for 300%, except with 3 crits? Please explain!
Hi @Doomsnail, welcome on board! @DerpMinh sorry your question got somehow lost on my radar.. Dang, the wordpress code plugin doesn't work in the forum. As this is a question that was asked a few times now (and it is not clear how this calculation is done), I will sum it up in a blog post! Just a sec...
WOW that is super awesome! I've never seen a dev release the actual formula. So, it looks like a higher crit chance increases the probability of compounding crits (up to the multicrit number). Am I drawing the correct conclusion, or am I way off? Gotta say I am impressed by your forum interaction, Andy.
Yes, you are right! That's exactly how it works. Also, I converted my previous answer into a blog post, so that the code formatting is a bit nicer. Here it is.
It would still be nice if the average damage calculation actually showed average damage. As it is, it seems to show numbers that are higher than possible when crit chance exceeds 100%. IE: A tower with 1 multicrit and 200% crit chance, the average damage will be more than the maximum the tower can crit for. It's actually really common for your carry tower to have an average damage that's higher than it's highest recorded crit.
I just checked the code and you are completely right about it. There is a flaw in the average damage calculation. For every possible multicrit I do right now: damage += averageBaseDamage * _critDamage * critChance; Which obviously only is correct if crit chance is within [0, 1]. I fixed this now: damage += averageBaseDamage * _critDamage * Math.min(1.0, critChance); Thanks for the hint :-)