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);