Skip to content

Update and Improve Elemental Ailment Calculation#61

Merged
LocalIdentity merged 5 commits into
PathOfBuildingCommunity:masterfrom
Quotae:ele-ailments-calctab
Dec 15, 2019
Merged

Update and Improve Elemental Ailment Calculation#61
LocalIdentity merged 5 commits into
PathOfBuildingCommunity:masterfrom
Quotae:ele-ailments-calctab

Conversation

@Quotae
Copy link
Copy Markdown
Contributor

@Quotae Quotae commented Dec 13, 2019

  • Moves Shock and Freeze calculations to its own box in the Calcs tab
  • Adds calculation for total increased effect of Shock and Freeze
  • Adds similar calculations for Chill(total increased effect and duration mod)
  • Shock and Chill calculations updated to their 3.9.0 threshold of about ~0.4% of enemy life
  • Freeze calculation updated to account for Freeze Effect
  • Updated the default Shock value to 15% in a couple of places (Namely when the player is Shocked and the "Is Enemy Shocked?" tooltip)

image

(Also, as you can see in the ModParser change, the "EnemyFreezeEffect" mod has been misspelled in PoB as "EnemyFreezeEffech" for a long time and it didn't matter because that mod wasn't actually used anywhere)

Quotae and others added 3 commits December 12, 2019 18:32
Adds support for Ghost Shrouds; mod parsing, config option, and override.
- Moves Shock and Freeze calculations to its own Calc box
- Adds calculation for total increased effect of Shock and Freeze
- Adds similar calculations for Chill(total increased effect and duration mod)
- Shock and Chill calculations updated to their 3.9.0 threshold of about ~0.4% of enemy life
- Freeze calculation updated to include Freeze Effect
- Updated the default Shock value to 15% in a couple of places (Namely when the player is Shocked and the "Is Enemy Shocked?" tooltip)
@LocalIdentity LocalIdentity requested review from LocalIdentity and removed request for LocalIdentity December 14, 2019 21:18
Copy link
Copy Markdown
Contributor

@NickRyder NickRyder left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for looking into this!

I believe all your formulas are currently incorrect, so please revise them - and I'll take a look afterwards.

Comment thread Modules/CalcSections-3_0.lua Outdated
Comment on lines +797 to +799
{ label = "Inc. Freeze Effect", flag = "freeze", { format = "{0:output:FreezeEffectMod}%",
{ label = "Player modifiers", modName = "EnemyFreezeEffect", cfg = "skill" },
{ label = "Enemy modifiers", modName = "SelfFreezeEffect", enemy = true },
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Freeze Effect currently has no impact on the game, as confirmed by MarkGGG here:
https://www.reddit.com/r/pathofexile/comments/6t25ie/increased_effect_of_nondamaging_ailments_on/

Comment thread Modules/CalcOffence-3_0.lua Outdated
combineStat("ShockEffectMod", "AVERAGE")
combineStat("FreezeChance", "AVERAGE")
combineStat("FreezeDurationMod", "AVERAGE")
combineStat("FreezeEffectMod", "AVERAGE")
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment thread Modules/CalcOffence-3_0.lua Outdated
if baseFreezeVal > 0 then
skillFlags.freeze = true
skillFlags.chill = true
output.FreezeEffectMod = skillModList:Sum("INC", cfg, "EnemyFreezeEffect")
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment thread Modules/CalcOffence-3_0.lua Outdated
output.ShockEffectMod = skillModList:Sum("INC", cfg, "EnemyShockEffect")
if breakdown then
t_insert(breakdown.ShockDPS, s_format("For shock to apply, target must have no more than %d life.", baseVal * 20 * output.ShockDurationMod))
t_insert(breakdown.ShockDPS, s_format("For shock to apply, target must have no more than %d life.", baseVal * 250 * output.ShockDurationMod * (1 + output.ShockEffectMod / 100)))
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This formula is incorrect:

.05 = (1+increased_effect/100) * 1/2(damage_dealt/ailment_threshold)^(.4)

which implies

ailment_threshold = -((100 + increased_effect)^(5/2) damage_dealt)/(100 sqrt(10))

Also please update the wording to indicated

  • minimum shock of 5%,
  • target must have no more than %d ailment threshold

Comment thread Modules/CalcOffence-3_0.lua Outdated
output.ChillDurationMod = 1 + skillModList:Sum("INC", cfg, "EnemyChillDuration") / 100
if breakdown then
t_insert(breakdown.FreezeDPS, s_format("For freeze to apply, target must have no more than %d life.", baseVal * 20 * output.FreezeDurationMod))
t_insert(breakdown.FreezeDPS, s_format("For freeze to apply, target must have no more than %d life.", baseFreezeVal * 20 * output.FreezeDurationMod * (1 + output.FreezeEffectMod / 100)))
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The freeze formula did not change this patch:

freeze_duration =  (1+freezeDuration/100)*6*(damage/ailment_threshold)

minimal freeze is .3 seconds.

.3=  (1+freezeDuration/100)*6*(damage/ailment_threshold)

Please solve for damage appropriately here and update the text to indicate the length of minimal freeze and the fact its out of ailment_threshold and not life.

Comment thread Modules/CalcOffence-3_0.lua Outdated
if breakdown then
t_insert(breakdown.FreezeDPS, s_format("For freeze to apply, target must have no more than %d life.", baseVal * 20 * output.FreezeDurationMod))
t_insert(breakdown.FreezeDPS, s_format("For freeze to apply, target must have no more than %d life.", baseFreezeVal * 20 * output.FreezeDurationMod * (1 + output.FreezeEffectMod / 100)))
t_insert(breakdown.ChillDPS, s_format("For chill to apply, target must have no more than %d life.", baseChillVal * 250 * output.ChillDurationMod * (1 + output.ChillEffectMod / 100)))
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is incorrect - please reference the shock comment above

@NickRyder
Copy link
Copy Markdown
Contributor

NickRyder commented Dec 14, 2019

Also generically it should be noted that this is the life needed to get ailments on the average hit. This is not equivalent to the average life needed to get your ailment over all your hits. If you damage distribution is pretty narrow this distinction is not particularly important, but for builds with large damage distributions (like change to deal double damage, crit, lightning damage) these numbers will be very different (if you roll high on all of those you will freeze an opponent with much less life than displayed).

Learned that Effect of Freeze does nothing because it's an on/off state, not something that can be scaled/increased. Removed the inc. freeze effect display and also fixed calculation for highest life total you can freeze.
Updated the calculations to use the actual equations rather than simplified ones. Also added information to the tooltips that indicate that the minimum Chill/Shock that will be applied and for how long.
@Quotae
Copy link
Copy Markdown
Contributor Author

Quotae commented Dec 15, 2019

Alright, I updated all the calculations and made it so the tooltips mention that the minimums are 5% for 2 seconds(0.3 seconds for Freeze). Also changed "life" to "ailment threshold".


Also, I did try to add a note explaining what Ailment Threshold is, but I couldn't get it to fit into the tooltip properly. Here's what it looked like before I removed it(tooltip wasn't final):

image

As you can see, the note goes down a bit into the "Player modifiers" label on the table. I tried a few things but all of them had caveats:

  • Putting the note to the side instead of below (made the tooltip way too big)
  • Give the table an empty label (it still puts a colon there with no words)
  • Using a table with no space for a label in the first place (just makes the note collide with the top of the table instead of the label on it)

I couldn't figure out any way of just adding an extra blank line or something so that it has more space, so I just removed it. If anyone knows how to do that, it's pretty simple to add the note back in.

output.ShockEffectMod = skillModList:Sum("INC", cfg, "EnemyShockEffect")
if breakdown then
t_insert(breakdown.ShockDPS, s_format("For shock to apply, target must have no more than %d life.", baseVal * 20 * output.ShockDurationMod))
t_insert(breakdown.ShockDPS, s_format("For the minimum 5%% Shock to apply for 2 seconds, target must have no more than %d Ailment Threshold.", (((100 + output.ShockEffectMod)^(2.5)) * baseVal) / (100 * m_sqrt(10))))
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The duration of the shock should be affected by output.ShockDurationMod above, or left out.

if breakdown then
t_insert(breakdown.FreezeDPS, s_format("For freeze to apply, target must have no more than %d life.", baseVal * 20 * output.FreezeDurationMod))
t_insert(breakdown.FreezeDPS, s_format("For freeze to apply for the minimum of 0.3 seconds, target must have no more than %d Ailment Threshold.", baseFreezeVal * 20 * output.FreezeDurationMod))
t_insert(breakdown.ChillDPS, s_format("For the minimum 5%% Chill to apply for 2 seconds, target must have no more than %d Ailment Threshold.", (((100 + output.ChillEffectMod)^(2.5)) * baseChillVal) / (100 * m_sqrt(10))))
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duration should like wise be affected by output.ChillDurationMod

@NickRyder
Copy link
Copy Markdown
Contributor

Looking much better! thanks for tending to these.

As far as Ailment Threshold goes we should probably see if there is any data in the ggpk to be more accurate, but you can leave it without an explanation for now.

A few small nits about incorrect duration numbers, and then looking good!

@LocalIdentity LocalIdentity merged commit 5b1b0c4 into PathOfBuildingCommunity:master Dec 15, 2019
@Quotae Quotae deleted the ele-ailments-calctab branch December 16, 2019 21:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants