Skip to content

Commit 1c859f6

Browse files
committed
adjust final hp % on twin largos if necessary
1 parent 1192389 commit 1c859f6

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

GW2EIEvtcParser/EncounterLogic/Raids/W6/TwinLargos.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using static GW2EIEvtcParser.EncounterLogic.EncounterLogicTimeUtils;
1212
using static GW2EIEvtcParser.EncounterLogic.EncounterImages;
1313
using System.Collections;
14+
using GW2EIEvtcParser.Extensions;
1415

1516
namespace GW2EIEvtcParser.EncounterLogic
1617
{
@@ -246,6 +247,39 @@ internal override FightData.EncounterStartStatus GetEncounterStartStatus(CombatD
246247
return FightData.EncounterStartStatus.Normal;
247248
}
248249

250+
internal override void EIEvtcParse(ulong gw2Build, FightData fightData, AgentData agentData, List<CombatItem> combatData, IReadOnlyDictionary<uint, AbstractExtensionHandler> extensions)
251+
{
252+
ComputeFightTargets(agentData, combatData, extensions);
253+
// discard hp update events after determined apply
254+
AbstractSingleActor nikare = Targets.FirstOrDefault(x => x.IsSpecies(ArcDPSEnums.TargetID.Nikare));
255+
if (nikare == null)
256+
{
257+
throw new MissingKeyActorsException("Nikare not found");
258+
}
259+
var nikareHPUpdates = combatData.Where(x => x.IsStateChange == ArcDPSEnums.StateChange.HealthUpdate && x.SrcMatchesAgent(nikare.AgentItem)).ToList();
260+
if (nikareHPUpdates.Any(x => x.DstAgent != 10000 && x.DstAgent != 0))
261+
{
262+
CombatItem lastHPUpdate = nikareHPUpdates.Last();
263+
if (lastHPUpdate.DstAgent == 10000)
264+
{
265+
lastHPUpdate.OverrideSrcAgent(0);
266+
}
267+
}
268+
AbstractSingleActor kenut = Targets.FirstOrDefault(x => x.IsSpecies(ArcDPSEnums.TargetID.Kenut));
269+
if (kenut != null)
270+
{
271+
var kenutHPUpdates = combatData.Where(x => x.IsStateChange == ArcDPSEnums.StateChange.HealthUpdate && x.SrcMatchesAgent(kenut.AgentItem)).ToList();
272+
if (kenutHPUpdates.Any(x => x.DstAgent != 10000 && x.DstAgent != 0))
273+
{
274+
CombatItem lastHPUpdate = kenutHPUpdates.Last();
275+
if (lastHPUpdate.DstAgent == 10000)
276+
{
277+
lastHPUpdate.OverrideSrcAgent(0);
278+
}
279+
}
280+
}
281+
}
282+
249283
internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog log, CombatReplay replay)
250284
{
251285
IReadOnlyList<AbstractCastEvent> cls = target.GetCastEvents(log, log.FightData.FightStart, log.FightData.FightEnd);

0 commit comments

Comments
 (0)