Skip to content

Commit 3480c21

Browse files
committed
[Analytics] Added LogNPCUpdateEvent and StatResetEvent
1 parent fdbe323 commit 3480c21

File tree

3 files changed

+47
-4
lines changed

3 files changed

+47
-4
lines changed

EVTCAnalytics/Events/LogEvents.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using GW2Scratch.EVTCAnalytics.Model.Agents;
2+
13
namespace GW2Scratch.EVTCAnalytics.Events
24
{
35
/// <summary>
@@ -25,4 +27,38 @@ public class RateHealthEvent(long time, ulong tickRate) : Event(time)
2527
/// </summary>
2628
public ulong TickRate { get; } = tickRate;
2729
}
30+
31+
/// <summary>
32+
/// Arcdps stats reset event.
33+
/// </summary>
34+
/// <param name="time"></param>
35+
/// <param name="specieId"></param>
36+
public class StatResetEvent(long time, ulong specieId) : Event(time)
37+
{
38+
/// <summary>
39+
/// Specie ID of the Agent that triggered the reset.
40+
/// </summary>
41+
public ulong SpecieId { get; } = specieId;
42+
}
43+
44+
/// <summary>
45+
/// Log boss agent changed event.
46+
/// </summary>
47+
public class LogNPCUpdateEvent(long time, ulong specieId, Agent agent, int timestamp) : Event(time)
48+
{
49+
/// <summary>
50+
/// Specie ID of the Agent triggering the update.
51+
/// </summary>
52+
public ulong SpecieId { get; } = specieId;
53+
54+
/// <summary>
55+
/// The Agent that triggered the update.
56+
/// </summary>
57+
public Agent Agent { get; } = agent;
58+
59+
/// <summary>
60+
/// Server unix timestamp of the update.
61+
/// </summary>
62+
public int Timestamp { get; } = timestamp;
63+
}
2864
}

EVTCAnalytics/Parsing/CombatItemFilters.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using GW2Scratch.EVTCAnalytics.Events;
2+
using GW2Scratch.EVTCAnalytics.Model.Skills;
23
using GW2Scratch.EVTCAnalytics.Parsed.Enums;
34
using System;
45
using System.Collections.Generic;
@@ -263,6 +264,8 @@ private static IEnumerable<StateChange> GetDirectStateChangesForEventType(Type e
263264

264265
if (eventType == typeof(RewardEvent)) return [StateChange.Reward];
265266
if (eventType == typeof(RateHealthEvent)) return [StateChange.TickRate];
267+
if (eventType == typeof(StatResetEvent)) return [StateChange.StatReset];
268+
if (eventType == typeof(LogNPCUpdateEvent)) return [StateChange.LogNPCUpdate];
266269

267270
if (eventType == typeof(CrowdControlEvent)) return [];
268271

@@ -342,6 +345,8 @@ private static bool IsDirectBuffDamage(Type eventType)
342345

343346
if (eventType == typeof(RewardEvent)) return false;
344347
if (eventType == typeof(RateHealthEvent)) return false;
348+
if (eventType == typeof(StatResetEvent)) return false;
349+
if (eventType == typeof(LogNPCUpdateEvent)) return false;
345350

346351
if (eventType == typeof(SkillCastEvent)) return false;
347352
if (eventType == typeof(EndSkillCastEvent)) return false;
@@ -417,6 +422,8 @@ private static bool IsDirectSkillCast(Type eventType)
417422

418423
if (eventType == typeof(RewardEvent)) return false;
419424
if (eventType == typeof(RateHealthEvent)) return false;
425+
if (eventType == typeof(StatResetEvent)) return false;
426+
if (eventType == typeof(LogNPCUpdateEvent)) return false;
420427

421428
if (eventType == typeof(SkillCastEvent)) return false;
422429
if (eventType == typeof(EndSkillCastEvent)) return true;
@@ -492,6 +499,8 @@ private static IEnumerable<Result> GetDirectPhysicalResultsForEventType(Type eve
492499

493500
if (eventType == typeof(RewardEvent)) return [];
494501
if (eventType == typeof(RateHealthEvent)) return [];
502+
if (eventType == typeof(StatResetEvent)) return [];
503+
if (eventType == typeof(LogNPCUpdateEvent)) return [];
495504

496505
if (eventType == typeof(SkillCastEvent)) return [];
497506
if (eventType == typeof(EndSkillCastEvent)) return [];

EVTCAnalytics/Processing/LogProcessor.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1122,8 +1122,7 @@ static WeaponSet WeaponSetFromId(long id)
11221122
var barrierFraction = item.DstAgent / 10000f;
11231123
return new BarrierUpdateEvent(item.Time, GetAgentByAddress(item.SrcAgent), barrierFraction);
11241124
case StateChange.StatReset:
1125-
// Should not appear in logs
1126-
return new UnknownEvent(item.Time, item);
1125+
return new StatResetEvent(item.Time, item.SrcAgent);
11271126
case StateChange.Extension:
11281127
return new UnknownExtensionEvent(item.Time, item);
11291128
case StateChange.ApiDelayed:
@@ -1195,8 +1194,7 @@ static WeaponSet WeaponSetFromId(long id)
11951194
return new EffectEvent(item.Time, master, effect, aroundAgent, position, orientation, zOrientationOnly, duration);
11961195
}
11971196
case StateChange.LogNPCUpdate:
1198-
// TODO: implement
1199-
return new UnknownEvent(item.Time, item);
1197+
return new LogNPCUpdateEvent(item.Time, item.SrcAgent, GetAgentByAddress(item.DstAgent), item.Value);
12001198
case StateChange.IdleEvent:
12011199
return new UnknownEvent(item.Time, item);
12021200
case StateChange.ExtensionCombat:

0 commit comments

Comments
 (0)