Jump to content
Dante Unbound: Share Bug Reports and Feedback Here! ×
  • 0

Maths for Condition Overload


hortiSquash

Question

I want to get the average bonus from Condition Overload but i'm kinda stuck

 

I have the probability of each status with basic probabilities

{\displaystyle P(A\mid B)={\frac {P(A\cap B)}{P(B)}},}

= Status proportion x Status chance

 

On top of that i'm applying a Binomial Distribution to get the chances to have at least one success (being this status' proc) over 6 seconds with the attack speed of the weapon. (6 seconds being the proc duration)

 

And then I apply the 120% from Condition Overload

 

With a 25% status melee weapon with 1.0 attack speed as an example i'm getting that

unknown.png

 

I'm less than confident in my maths, anyone willing to help or tell me i'm wrong somewhere?

Link to comment
Share on other sites

14 answers to this question

Recommended Posts

7 hours ago, hortiSquash said:

https://en.wikipedia.org/wiki/Binomial_distribution#Conditional_binomials

Is that what you meant? Because its pretty much the same as normal Binomial Distribution

As for the Kronecker deltas I'm not gonna lie but its been a long time since i've last done this stuff, i kinda forgot it. If you're doing it by hand i'm interested in your results, even for 100% status. It would permit me to check what im doing

Had a quick look at the conditional binomial thing. It's pretty unfamiliar to me, but I hope you have luck with it!

Unfortunately, my attempts to get an analytic version failed (the Kronecker deltas just became too complicated!) Instead I typed up a quick notebook on Mathematica (I believe they do a free trial if you don't have it)

The Mathematica notebook (.nb) file can be found here: https://drive.google.com/file/d/1zV1ggHqctTdvPwXsWVmH3PVFwogJMRlg/view?usp=sharing

If you have Mathematica, you can use this notebook file to input values for your total damage, and damage of each particular damage type. It will then tell you the expected number of unique statuses after 1 hit, 2 hits, 3 hits, up to 7 hits. Note: Mathematica is a bit weird, to get it to read a line you have to press shift+enter, not just enter. Also, since I defined all the functions at the bottom of the file, to make it work you should input all your numbers and then evaluate the whole notebook twice. (You can click on "evaluation" in the status bar at the top and then click "evaluate notebook" to do this quickly)

If you don't have / want Mathematica, I also made a pdf that might be useful at least to understand the logic: https://drive.google.com/file/d/1Ebb-hudJonmGtKmTUzi8pOMNR6Ev5BUA/view?usp=sharing

But this is not really meant to walk you through the actual derivation, just my checking and re-checking that the results are within expectations. 

To fully understand how I wrote the functions, I drew a probability tree and then formed the expectation value by multiplying the number of unique status effects [hence why you see the DeleteCases to remove the hits that don't produce statuses and the CountDistinct to keep only unique ones] produced in a specific branch by the product of probabilities in that branch, then summed over all the branches in the tree. 

This means that in the case of 6 damage types and 7 hits, there are 7^7 terms to sum up, so I definitely think letting the computer handle this was the right move :)

Anyway, it should be possible to do something similar in Excel / google sheets, but I haven't used those in years. Let me know if you have any questions about this, I'm not sure if it will actually be useful for you...

EDIT: Also, none of this takes into account forced procs from stances, or the fact that statuses decay after a certain duration.

Link to comment
Share on other sites

Attack speed doesn't equate to hits per second. Two weapons with the same attack speed can hit at different rates. The attack animations are different for different weapon types. And some weapons will do multiple hits per attack.

If you're trying to maximize CO, you'll likely be using your guns (and perhaps sentinel) to apply statuses. Kuva nukor or ignis wraith for example. 

If we just look at the math. Left column is your 25% base SC, divided over your 3 elements based on their damage proportions. Your 2nd column is the probability that it will proc at least once over a 6 second window.

I suspect you also need to account for the proc duration. Assuming these are for slash/puncture/impact, slash and puncture last 6 secs, whereas impact only lasts 1 sec. I think you might have to break it down much futher and describe every possible scenario. At the moment, the math is for "at least 1 status proc in 6 hits", I'm just not sure it goes far enough to cover all possible scenarios. 

Link to comment
Share on other sites

Also remember that if you use Weeping Wounds, your Status Chance will skyrocket once you get up to higher combo counts.  And since Condition Overload adds 120% per unique status type, your damage distribution will also affect how likely it is for you to have a large variety of different status effects, further increasing your damage.

Link to comment
Share on other sites

Most combos will also auto-apply some status effects occasionally. Moreover, depending on the damage type, your combination may yield two instances of the same status for two procs, for example, or two different instances for different procs, which will also have some influence, so you really cannot use simple binomial approximation. I think, you underestimate the average by a large margin, depending on weapon,  stance, and damage types. Another issue with the model is that it should be time-dependent due to duration of status effects. So, overall, the math is considerably more complex. Binomial distribution is a very rough approximation again due to the influence of time and conditional probabilities accounting for other effects (weapons, passive or active powers, weeping wounds, etc.). The overall comprehensive model is going to be way more complex.

Link to comment
Share on other sites

Please note that when playing with Condition Overload, the key reason is to replace Primed Pressure Point for a higher multiplier on base damage.

Let's take something like the Dual Kamas Prime, which has a base Status Chance of 25% and a total damage (without Crit) of 160.

Pressure Point adds a generoud 165% melee damage, bringing the total damage per hit up to 424.

Condition Overload doesn't add any base melee damage, but adds 120% per Status Type affecting the target, which only needs 2 different Status Types, such as Slash and Viral, to be active on the enemy for it to add 240% melee damage, which is obviously higher.

Your question is about how much this actually helps from any normal situation, because in any normal situation an enemy won't have Status effects on them. This means that to get your damage you need at minimum 2 Status Procs from the weapon to inflict the status and gain your damage. Because it's kind of true that with only 25% base Status Chance, as the Dual Kamas Prime has, this doesn't seem like much of a chance, right?

With only 25% base status chance, an attack speed of 1.17 attacks per second, this means it'll take on average 4-5 seconds of attacking to inflict the relevant Status Types and actually ramp your damage up.

This is where combinations and other mods actually come into effect.

For example the Stance, Carving Mantis, turns your basic attacks into multiple hits per button press and multiplies their damage. The base combo alone has 6 attacks, but hits 7 times, and it specifically guarantees a Bleed proc on the very first attack, the Blocking combo hits 4 times in the first button press, and then does 2 on the second with a guaranteed Impact and Bleed, immediately giving you the boost to damage from your Condition Overload.

Another is basic attack speed boosting with mods like Primed Fury, which shortens an attack combo from 3.9 seconds (the first combo on Carving Mantis) down to more like 2.5 seconds, reducing the time needed to create the relevant procs.

We have basic Status Chance boosting mods, that add on an amount of Status Chance to the base, so putting on two of the 60% Status Chance mods would give us 120% Status chance for an extra 30%, meaning 55% Status Chance overall, reducing our number of hits required to proc our two Status types by half.

And finally we have the advanced ones, like Weeping Wounds, that scales with the Combo Counter. Like the other mods it'll add on Status chance to the base from the percentage boost it gives, which is 40% per Combo Level. At 12x Combo, those Dual Kamas Prime will have a 135% Status Chance, plus more if you have the earlier mentioned Status Chance mods (those would still only add 30%, so you end up with 165% total Status Chance). This reduces the number of hits to inflict our two Status types down to 1-2 at most, with the average hit inflicting both in the same hit.

So those Dual Kamas Prime, using this mod, would typically ramp up to the full Combo Count quite quickly, and at that point the very first hit of the basic combo would inflict both Status types you need for the damage boost of Condition Overload, maybe even more than that, boosting the damage considerably.

As other people in this thread have pointed out, there's also one more, known as Condition Overload 'spoofing', where you use another weapon to apply the Status types from range first, to as many enemies at once, meaning you can then go to town with your multipliers primed on the enemies before hand.

This is why the Kuva Nukor is currently massively meta. It's able to chain Status effects, usually a base of 3 types, if not more, to enemies very, very quickly due to the rate of fire a Beam weapon has. Doing this means that up to a dozen enemies can be primed for Condition Overload with a base boost of 360% damage on every hit.

To sum up...

Yeah, the difference between the base math and what's practically capable with a simple-sounding mod like Condition Overload is entirely based on other factors that this game has in abundance.

I mean, heck, one of the things that people overlook on melee is Range, because they're going from enemy to enemy and think they'll always be able to manage their enemies one at a time, but when facing a horde (which you do fairly often) range on melee is a radial function, so 1m of extra range is actually a massive extra area of attack in the cone-of-effect in front of you or circle around you.

If you want a little more detail on the Dual Kamas Prime, for example:

Spoiler

Put on a build of Carving Mantis, Condition Overload, use the scaling mods Weeping Wounds, Blood Rush and Gladiator Rush (extra combo duration), Organ Shatter for Crit Damage, Primed Fury for Attack Speed. Primed Fever Strike and North Wind give you Viral for the multiplier on Health when you proc it.

With this build you ramp up to 12x combo and now have a base damage of 568 on the hit without Crit. You have a 135% Status Chance, and your Critical stats are 152% Crit Chance and 3.8x Crit Damage, bringing your damage per hit up to an average of 2985.4 damage per hit.

Carving Mantis, as I said, gives you a default of a Bleed proc on the first attack, meaning that even if your 135% Status doesn't proc two status effects, you will have at least bleed on there, bringing every hit up to 6567.9 per hit.

But if you use the Block Combo, or the Block-Forward combo, you will have either hit 4 times, proc'ing a guaranteed 4 Statuses, or you will have hit twice with a guaranteed Impact proc on top of your Bleed or Viral you hit with on the weapon. That would mean that you suddenly have 3 Status types, for 13732.9 Damage per hit, or you'll have 4 types for 17315.3 damage.

The point being that you sacrifice that initial damage to an enemy for far, far crazier damage overall to the enemies that you don't already one-hit.

And, thanks to modding, that crazier damage can actually be incredibly reliable, even though the calculations around the base hit and status chance seem really erratic.

Link to comment
Share on other sites

For the higher level answers you're looking for, it'd be better to travel to the Wiki and make a discussion page. It's more likely the people who are well versed in math will be able to help with your equation.

Edit: Also, there's a YouTuber named x3lp that gets into the deeper mathematics of things like this. You might be able to get help from him, or he might even have a spreadsheet that does such probabilities.

Link to comment
Share on other sites

I am well aware that stances, garanteed procs, and using other weapons to proc status all help but it makes it impossible to do the maths anymore. All im searching for is approximate both the lower and upper bounds and let the spreadsheet user guess the rest depending on his own usage.

 

Also thanks i forgot all statuses dont last 6s, some do way less, gonna fix that.

 

il y a 20 minutes, ShichiseitenYasha a dit :

For the higher level answers you're looking for, it'd be better to travel to the Wiki and make a discussion page. It's more likely the people who are well versed in math will be able to help with your equation.

 

Edit: Also, there's a YouTuber named x3lp that gets into the deeper mathematics of things like this. You might be able to get help from him, or he might even have a spreadsheet that does such probabilities.

Thanks will check that :)

Link to comment
Share on other sites

7 hours ago, hortiSquash said:

Binomial Distribution

Yes, if you think about it as each hit has two possibilities: either it causes a unique status proc or it does not.

Unfortunately, those probabilities change depending on if a particular proc is already active. As you already discovered, this means you have a binomial distribution of conditional probabilities [Hence the formula you showed]. This is generally much harder to work with. I'm sure somebody out there has worked out the details of a conditional binomial distribution, but it's not my field and I'm not interested enough to jump down a rabbit hole that might not have a bottom ;)

What I would try instead is to consider that you have K damage types and N hits from your melee weapon. This gives you a K+1-nomial distribution (K+1 because you also have a possibility to cause no proc at all) with N iterations (i.e.: N events at each stage in the probability tree), but at least now the probabilities in the tree are all fixed (i.e.: non-conditional)! This converts the problem eventually into the question:

"If I have N different numbers that can all range from 0 to K, what is the total number of unique numbers, not including zeroes?" (i.e.: in my notation zero means no proc)

The answer is easy if you have the N numbers in front of you, but you have to write them with placeholders [example: i1, i2, ..., iN] since you will eventually need to sum over these numbers along with the associated product of probabilities p_i1, p_i2, ..., p_iN. 

The question can be answered quite quickly for N = 1 and N = 2 (written in terms of N and Kronecker deltas), but N = 3 and beyond are tricky (at least for me!). I looked at it for ~30 minutes and didn't get a correct result yet. My hope is that once I get N=3 the pattern will become clear and we can get the result for all N by induction. The hard part is you need to account for pairs but then also cancel that accounting when either number is zero. (If status chance was exactly 100%, it would be much easier!)

I'll give it another go tomorrow to see if I can make some progress, let me know if you have any luck! And thanks for the fun problem, a real headscratcher :)

Link to comment
Share on other sites

Il y a 7 heures, Sevek7 a dit :

this means you have a binomial distribution of conditional probabilities [Hence the formula you showed]. This is generally much harder to work with. I'm sure somebody out there has worked out the details of a conditional binomial distribution, but it's not my field and I'm not interested enough to jump down a rabbit hole that might not have a bottom ;)

https://en.wikipedia.org/wiki/Binomial_distribution#Conditional_binomials

Is that what you meant? Because its pretty much the same as normal Binomial Distribution

As for the Kronecker deltas I'm not gonna lie but its been a long time since i've last done this stuff, i kinda forgot it. If you're doing it by hand i'm interested in your results, even for 100% status. It would permit me to check what im doing

Link to comment
Share on other sites

Il y a 1 heure, Sevek7 a dit :

The Mathematica notebook (.nb) file can be found here: https://drive.google.com/file/d/1zV1ggHqctTdvPwXsWVmH3PVFwogJMRlg/view?usp=sharing

If you have Mathematica, you can use this notebook file to input values for your total damage, and damage of each particular damage type. It will then tell you the expected number of unique statuses after 1 hit, 2 hits, 3 hits, up to 7 hits. Note: Mathematica is a bit weird, to get it to read a line you have to press shift+enter, not just enter. Also, since I defined all the functions at the bottom of the file, to make it work you should input all your numbers and then evaluate the whole notebook twice. (You can click on "evaluation" in the status bar at the top and then click "evaluate notebook" to do this quickly)

To fully understand how I wrote the functions, I drew a probability tree and then formed the expectation value by multiplying the number of unique status effects [hence why you see the DeleteCases to remove the hits that don't produce statuses and the CountDistinct to keep only unique ones] produced in a specific branch by the product of probabilities in that branch, then summed over all the branches in the tree. 

This means that in the case of 6 damage types and 7 hits, there are 7^7 terms to sum up, so I definitely think letting the computer handle this was the right move :)

Glad i had mathematica already. And crap, we dont have the same results. I'm consistently getting 2-3% higher than you. 😑

Are you 100% certain of your work?

I like my method more because its way simpler and take into account more damage types and the status duration, and at this point i can just use a correction coefficient to fix the 2-3% and call it a day

But if yours is exact it kinda changes the whole balance

Link to comment
Share on other sites

26 minutes ago, hortiSquash said:

Glad i had mathematica already. And crap, we dont have the same results. I'm consistently getting 2-3% higher than you. 😑

Are you 100% certain of your work?

I like my method more because its way simpler and take into account more damage types and the status duration, and at this point i can just use a correction coefficient to fix the 2-3% and call it a day

But if yours is exact it kinda changes the whole balance

Hmm interesting! Mine is based on the (K+1)-Nomial distribution where K is the number of damage types (so we get +1 from the chance of no status effect). 

Yours that is based on conditional binomial distribution should in principle give the same results, assuming we've both done everything correctly!

Mine certainly gives the correct result for the limiting case of 1 damage type and 1-2 hits (confirmed this by hand). Beyond that, I checked the code for specific situations and it always gave me what I expected. It's possible I made a typo somewhere that crops up in the more complicated cases, and wouldn't surprise me at all! 

So, short answer is I'm pretty confident, but long answer is that I do have a tendency to make a lot of typos...

Link to comment
Share on other sites

Il y a 23 heures, Sevek7 a dit :

Hmm interesting! Mine is based on the (K+1)-Nomial distribution where K is the number of damage types (so we get +1 from the chance of no status effect). 

Yours that is based on conditional binomial distribution should in principle give the same results, assuming we've both done everything correctly!

Mine certainly gives the correct result for the limiting case of 1 damage type and 1-2 hits (confirmed this by hand). Beyond that, I checked the code for specific situations and it always gave me what I expected. It's possible I made a typo somewhere that crops up in the more complicated cases, and wouldn't surprise me at all! 

Nevermind, I redid it all to be dependent of hits and not seconds, and I'm getting the exact same results as you do. 

(same damage proportion and status chance)

https://imgur.com/a/TtEg9yL

 

Didn't use the first 3 lines because the body statuses are 4 times more likely to proc, and I accounted for that.

On the right part, I replaced hits by attack speed weighted by the status duration (displayed on the left). This is the part where i'm the least confident in. The rest has been double checked by your method.

The condition overload part uses the Seconds column, not the Hits one by the way.

 

Last part to check and we are finally done

 

PS: good job in making a double binomial distribution by hand

Link to comment
Share on other sites

1 hour ago, hortiSquash said:

Nevermind, I redid it all to be dependent of hits and not seconds, and I'm getting the exact same results as you do. 

Nice! Glad to see we're getting the same results :)

1 hour ago, hortiSquash said:

the body statuses are 4 times more likely to proc,

This used to be the case, but I don't think it is anymore. I believe in the recent status rework they made all status effects weighted purely by damage proportion. The Wiki might have more up-to-date information on that.

1 hour ago, hortiSquash said:

Last part to check and we are finally done

Good luck! My interest in the problem is basically over now. It was a fun problem to solve and I had a good time :)

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...