-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix Explosive Arrow Full DPS #5432
Conversation
This relates to #2486 (though I'm still unclear exactly how). |
I think explosiveArrowFunc() would be a more reasonable name no need for weirdness |
Good call. This should also work for Barrage Support now, which fixes #2486. |
You have some conflict you need to fix @AnSq. |
|
||
local barrageProjectiles = nil | ||
if skillModList:Flag(nil, "SequentialProjectiles") and not skillModList:Flag(nil, "OneShotProj") and not skillModList:Flag(nil,"NoAdditionalProjectiles") and not skillModList:Flag(nil, "TriggeredBySnipe") then | ||
barrageProjectiles = skillModList:Sum("BASE", skillCfg, "ProjectileCount") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
barrageProjectiles = skillModList:Sum("BASE", skillCfg, "ProjectileCount") | |
barrageProjectiles = skillModList:Sum("BASE", activeSkill.skillCfg, "ProjectileCount") |
Without specifying the config properly, you're missing some projectiles.
Fixes #2486
Description of the problem being solved:
When "Include in Full DPS" is checked for Explosive Arrow, currently PoB doesn't give it any special treatment and simply takes the "Average Damage" (of an explosion) times Attack Rate (the rate that you apply fuses) to get DPS. The correct calculation is Average Damage times Explosion Rate. This change implements a calculation for Explosion Rate, shown as "Hit Rate" in PoB.
The time between explosions (HitTime) is either the skill duration, or the time it take to reach the fuse limit, whichever is lower. The time to max fuses is:
The calculation is done in
explosiveArrowFunc()
, which lives on the skill itself and kinda looks like a preFunc, but it needs access to information that's not available to the preFuncs. I also pulled the Maximum Sustainable Fuses calculation into this new function.Screenshots
Link to a build that showcases this PR:
This is the build used in the above screenshots: https://pobb.in/m4qGXNAjPT89