diff --git a/EVTCAnalytics/Events/UnknownEvent.cs b/EVTCAnalytics/Events/UnknownEvent.cs index 2b859c37..a63ff3a8 100644 --- a/EVTCAnalytics/Events/UnknownEvent.cs +++ b/EVTCAnalytics/Events/UnknownEvent.cs @@ -13,4 +13,9 @@ public class UnknownEvent(long time, object eventData) : Event(time) /// public object EventData { get; } = eventData; } + + /// + /// An from an extension (an addon for arcdps) which is not recognized or implemented yet. + /// + public class UnknownExtensionEvent(long time, object eventData) : UnknownEvent(time, eventData); } \ No newline at end of file diff --git a/EVTCAnalytics/Parsing/CombatItemFilters.cs b/EVTCAnalytics/Parsing/CombatItemFilters.cs index d927e1d8..a541ac35 100644 --- a/EVTCAnalytics/Parsing/CombatItemFilters.cs +++ b/EVTCAnalytics/Parsing/CombatItemFilters.cs @@ -279,6 +279,7 @@ private static IEnumerable GetDirectStateChangesForEventType(Type e // so we need to return all of them. Debug.Assert(Enum.GetUnderlyingType(typeof(StateChange)) == typeof(byte)); if (eventType == typeof(UnknownEvent)) return Enumerable.Range(0, 256).Select(x => (StateChange) x); + if (eventType == typeof(UnknownExtensionEvent)) return [StateChange.Extension]; throw new ArgumentException($"Event type {eventType} is not supported."); } @@ -353,6 +354,7 @@ private static bool IsDirectBuffDamage(Type eventType) // The unknown event can come from anything if (eventType == typeof(UnknownEvent)) return true; + if (eventType == typeof(UnknownExtensionEvent)) return false; throw new ArgumentException($"Event type {eventType} is not supported."); } @@ -427,6 +429,7 @@ private static bool IsDirectSkillCast(Type eventType) // The unknown event can come from anything if (eventType == typeof(UnknownEvent)) return true; + if (eventType == typeof(UnknownExtensionEvent)) return false; throw new ArgumentException($"Event type {eventType} is not supported."); } @@ -503,6 +506,7 @@ private static IEnumerable GetDirectPhysicalResultsForEventType(Type eve // so we need to return all of them. Debug.Assert(Enum.GetUnderlyingType(typeof(Result)) == typeof(byte)); if (eventType == typeof(UnknownEvent)) return Enumerable.Range(0, 256).Select(x => (Result) x); + if (eventType == typeof(UnknownExtensionEvent)) return []; throw new ArgumentException($"Event type {eventType} is not supported."); } diff --git a/EVTCAnalytics/Processing/LogProcessor.cs b/EVTCAnalytics/Processing/LogProcessor.cs index f680eba5..62696b91 100644 --- a/EVTCAnalytics/Processing/LogProcessor.cs +++ b/EVTCAnalytics/Processing/LogProcessor.cs @@ -1120,8 +1120,7 @@ static WeaponSet WeaponSetFromId(long id) // Should not appear in logs return new UnknownEvent(item.Time, item); case StateChange.Extension: - // TODO: Implement - return new UnknownEvent(item.Time, item); + return new UnknownExtensionEvent(item.Time, item); case StateChange.ApiDelayed: // Should not appear in logs return new UnknownEvent(item.Time, item);