Skip to content
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

Add secondary targets #925

Merged
merged 5 commits into from
Aug 30, 2024
Merged

Add secondary targets #925

merged 5 commits into from
Aug 30, 2024

Conversation

Zerthox
Copy link
Contributor

@Zerthox Zerthox commented Aug 26, 2024

This adds some "progress-blocking" split phase DPS targets as secondary targets to the main phase (akin to Kaineng Overlook).

Fractals:

  • Knights at MAMA (3 targets)
  • Echos at Siax (8 targets)
  • Anomalies at Skorvald (8 targets)
  • Archdiviner & Gladiator at Arkk (2 targets)
  • Incarnations at Eparch (5 targets)

Raids:

  • Split Guardians at Vale Guardian (6 targets)
  • Souls at Gorseval (8 targets)
  • Kernan, Knuckles & Karde at Sabetha (3 targets)
  • Guldhem at Samarog (2 targets)
  • Hands at Adina (10 targets)

@Zerthox
Copy link
Contributor Author

Zerthox commented Aug 26, 2024

One open question would be whether we should be merging "duplicate" targets, for example the 2 instances of Red/Green/Blue Guardian at Vale Guardian or Guldhem at Samarog.

And Hands at Adina would technically be progress-blocking DPS targets as well, but can spawn as non-blocking targets during the final phase. Not sure how we should handle that.

@Linkaaaaa
Copy link
Contributor

Linkaaaaa commented Aug 26, 2024

Number them like we do for Tormented Deads, Anomalies and others

https://github.com/baaron4/GW2-Elite-Insights-Parser/blob/master/GW2EIEvtcParser/EncounterLogic/Raids/W5/SoullessHorror.cs#L127-L132

Maybe could make this slice of code an API since we do this for multiple encounters, don't know where to locate it though.

@EliphasNUIT
Copy link
Collaborator

From the code the only agents that would need renaming would be the Gorseval ones, others are already renamed with numbers or cardinal positions.

@EliphasNUIT
Copy link
Collaborator

For Adina, you could do a
phases[0].AddSecondaryTargets(splitPhase.Targets) in GetPhases

@Zerthox
Copy link
Contributor Author

Zerthox commented Aug 28, 2024

That would mean they only get added to the main phase when phases are being computed, right? Is it fine to have different behavior for the main phase targets depending on whether other phases are computed?

@EliphasNUIT
Copy link
Collaborator

You are right, in that case something like
var firstBelow25 = log.CombatData.GetHealthUpdateEvents(adina).FirstOrDefault(x => x.HPPercent <= 25)
var mandatoryHandMaxTime = firstBelow25 ? firstBelow25.Time : log.FightData.FightEnd
phases[0].addSecondaryTargets(Targets.Where(x => isHand && x.FirstAware <= mandatoryHandMaxTime));

@Zerthox
Copy link
Contributor Author

Zerthox commented Aug 28, 2024

Health check is a bit problematic since Adina can easily go below 25% before the 3rd split starts. In the log I am testing with she gains Determined nearly 1s after a < 25% HP update. And Bladesworn Slashes can hit for like 250k, good timing on one could push her below 24% going into the split.

Technically we could check < 23% as the Phase 4 Hands are not supposed to spawn before 20%. Alternatively I could try to do it based on Determined applies instead. They are needed for phase computation below anyway, only need to move it up.

@Zerthox
Copy link
Contributor Author

Zerthox commented Aug 28, 2024

Should I add the "optional" hands as secondary targets to Phase 4?

Edit: added it for now, can be removed if it's not wanted.

@EliphasNUIT
Copy link
Collaborator

EliphasNUIT commented Aug 28, 2024

Determined check could fail on late start logs though and add actual P4 hands as secondary targets to the main phase.
If last Determined event is an apply, use log.FightData.FightEnd, if last determined event is a remove, us event.Time. That should be more robust and logStart agnostic.
Edit: also use log.FightData.FightEnd if no determined event at all.

@Zerthox
Copy link
Contributor Author

Zerthox commented Aug 29, 2024

We can go back to checking <23% health if thats more robust?

@EliphasNUIT
Copy link
Collaborator

No, a buff based system will always be more robust, we only care for hands during determined periods, with how the fight works, we only want hands from before last determined remove or everything (if no remove or last determined event is an apply, aka log ended during split phase)

@EliphasNUIT
Copy link
Collaborator

Thanks!

@EliphasNUIT EliphasNUIT merged commit 121fd74 into baaron4:master Aug 30, 2024
@Zerthox Zerthox deleted the targets branch August 30, 2024 21:56
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