-
Notifications
You must be signed in to change notification settings - Fork 96
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
feat: Effective healing and absorptions #192
base: master
Are you sure you want to change the base?
Conversation
3e33f5a
to
15cd99d
Compare
It is functional, even though the I'm marking this a ready for review/merge, and I'll try to account for overshielding if I find a solution later |
let player = data.Combatant[i]; | ||
let effective = parseInt(player.healed) - parseInt(player.overHeal); | ||
// Inject the calculated effective healing into the player data, while we're at it | ||
player.effective_healing = effective; |
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.
IMO actually, the term 'effective healing' should not be a main metric to compare between healers within party. I'm not saying including absorbs & shields is bad, but excluding overheals are.
Let's imagine a full party with WHM & AST that both healers are never talked & both doing almost max effort they can normally do.
On next raidwide AoE, someone needed to heal this or we all gonna die. WHM prepares Plenary Indulgence
+ Afflatus Rapture
both has no casting, AST prepares Stellar Explosion
+ Horoscope Helios
also almost instant both are.
So the AoE came, that two healers activates their skills in same time. who achieved lower Overheals, who made more Effective Heals? if WHM's 100ms faster, can we blame AST as 'they did nothing'? no.
(I made WHM & AST as example as they're what I main, but if we think of SGE, my friends are shouting 'I should do a heal to fill my MP', despite I can't know their truth as I never been SGE.)
Overheal is the problem of Negotiation in most cases, it doesn't mean they're underskilled.
and as Effective Healing excludes Overheal completely, so we need to think more on this topic.
ps: Ikegami already adds their shield on their gauge in naïve and implictly.
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.
I believe the overhealing generated for this kind of specific moments would even out over the course of a fight, but I haven't healed in raids so I might be wrong.
I agree that overhealing is a normal part of healing, and you can't compare healers based this metric. Likewise,hps alone is not a good indicator of healer performance.
I think it's up to the user to understand and combine several metrics to evaluate performance (And in that case, more available metrics is better).
Plus, we already provide the overhealing %, so it's just a quick math for the user to calculate effective healing himself.
I wouldn't add it to the default columns, but I don't see the harm in having them available if someone wants them.
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.
Providing effective/absorbed value is absolutely does not matter, and it should be, but using it as single main metric (so removing instead of adding overheal) would be problematic as it hides before decision.
Actual solution should be create 'unified healing gauge' as like other overlays do, but this is quite a headache for current codebase...
We would just add this for now & replace with this somewhen soon as possible.
share/lib/config.js
Outdated
effective_pct: { | ||
v: (_, players, encounter) => { | ||
// Calculated and injected during Data.update() | ||
return Math.round(_.effective_healing / encounter.rhealing_effective * 100) |
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.
'calculateMax' exists for preventing render functions from require whole encounter data. if there's additional column which requires whole encounter access, please move into Data.get()
.
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.
Just to clarify, you mean I should calculate that value in Data.get()
and and store it directly in the player object ?
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.
yes, I would prefer that way, but it's ok to keep if current approach is better (sorry, i'm confused of my old current codebase)
15cd99d
to
4548195
Compare
4548195
to
1c83e15
Compare
A bit hacking for my taste, but it works.
I've tried to avoid recalculating
rhealing_effective
andrabsorb_healing
for each row, so it's calculated once on each update instead.As always, only FR and EN are properly localized.
For #191
I haven't tested it in-game yet, I'd hold until merging (I'm not sure how it will work with partially absorbed shields)