|
11 | 11 | using static GW2EIEvtcParser.EncounterLogic.EncounterLogicTimeUtils;
|
12 | 12 | using static GW2EIEvtcParser.EncounterLogic.EncounterImages;
|
13 | 13 | using System.Collections;
|
| 14 | +using GW2EIEvtcParser.Extensions; |
14 | 15 |
|
15 | 16 | namespace GW2EIEvtcParser.EncounterLogic
|
16 | 17 | {
|
@@ -246,6 +247,39 @@ internal override FightData.EncounterStartStatus GetEncounterStartStatus(CombatD
|
246 | 247 | return FightData.EncounterStartStatus.Normal;
|
247 | 248 | }
|
248 | 249 |
|
| 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 | + |
249 | 283 | internal override void ComputeNPCCombatReplayActors(NPC target, ParsedEvtcLog log, CombatReplay replay)
|
250 | 284 | {
|
251 | 285 | IReadOnlyList<AbstractCastEvent> cls = target.GetCastEvents(log, log.FightData.FightStart, log.FightData.FightEnd);
|
|
0 commit comments