From e8b4668e6b716774d2d47e60dd94422f51512487 Mon Sep 17 00:00:00 2001 From: Jakub Santorek Date: Tue, 7 Apr 2026 09:09:32 +0200 Subject: [PATCH 1/3] initial cbtEvt proposal for RTApi --- RTAPI.h | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ RTAPI.hpp | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 131 insertions(+) diff --git a/RTAPI.h b/RTAPI.h index d9252c1..c819f42 100644 --- a/RTAPI.h +++ b/RTAPI.h @@ -14,6 +14,7 @@ #define EV_RTAPI_GROUP_MEMBER_JOINED "RTAPI_GROUP_MEMBER_JOINED" // Payload is RTAPI::GroupMember* #define EV_RTAPI_GROUP_MEMBER_LEFT "RTAPI_GROUP_MEMBER_LEFT" // Payload is RTAPI::GroupMember* #define EV_RTAPI_GROUP_MEMBER_UPDATED "RTAPI_GROUP_MEMBER_UPDATED" // Payload is RTAPI::GroupMember* +#define EV_RTAPI_COMBAT_EVENT "EV_RTAPI_COMBAT_EVENT" // Payload is RTAPI::CombatEvent* #include @@ -120,6 +121,70 @@ typedef struct GroupMember uint32_t IsLieutenant : 1; } GroupMember; +///---------------------------------------------------------------------------------------------------- +/// EAgentType Enumeration +///---------------------------------------------------------------------------------------------------- +enum EAgentType +{ + AT_Character, + AT_Gadget, + AT_AttackTarget +}; + +///---------------------------------------------------------------------------------------------------- +/// Agent Struct +///---------------------------------------------------------------------------------------------------- +typedef struct Agent +{ + uint32_t ID; + uint32_t SpeciesID; + EAgentType Type; + char Name[128]; + + bool IsMinion; + uint32_t OwnerID; +} Agent; + +///---------------------------------------------------------------------------------------------------- +/// ECombatEventType Enumeration +///---------------------------------------------------------------------------------------------------- +enum ECombatEventType +{ + CET_Health, + CET_Down, + CET_Death +}; + +///---------------------------------------------------------------------------------------------------- +/// Skill Struct +///---------------------------------------------------------------------------------------------------- +typedef struct Skill +{ + uint32_t ID; + char Name[128]; +} Skill; + +///---------------------------------------------------------------------------------------------------- +/// CombatEvent Struct +///---------------------------------------------------------------------------------------------------- +struct CombatEvent +{ + ECombatEventType Type; + + uint64_t Time; + + Agent* SrcAgent; + Agent* DstAgent; + Skill* Skill; + + float Value; + float ValueAlt; + + uint32_t IsConditionDamage : 1; + uint32_t IsCritical : 1; + uint32_t IsFumble : 1; +}; + ///---------------------------------------------------------------------------------------------------- /// RealTimeData Struct ///---------------------------------------------------------------------------------------------------- diff --git a/RTAPI.hpp b/RTAPI.hpp index 71d58b7..4c2d621 100644 --- a/RTAPI.hpp +++ b/RTAPI.hpp @@ -14,6 +14,7 @@ #define EV_RTAPI_GROUP_MEMBER_JOINED "RTAPI_GROUP_MEMBER_JOINED" // Payload is RTAPI::GroupMember* #define EV_RTAPI_GROUP_MEMBER_LEFT "RTAPI_GROUP_MEMBER_LEFT" // Payload is RTAPI::GroupMember* #define EV_RTAPI_GROUP_MEMBER_UPDATED "RTAPI_GROUP_MEMBER_UPDATED" // Payload is RTAPI::GroupMember* +#define EV_RTAPI_COMBAT_EVENT "EV_RTAPI_COMBAT_EVENT" // Payload is RTAPI::CombatEvent* #include @@ -125,6 +126,71 @@ namespace RTAPI uint32_t IsLieutenant : 1; }; + ///---------------------------------------------------------------------------------------------------- + /// EAgentType Enumeration + ///---------------------------------------------------------------------------------------------------- + enum class EAgentType + { + Character, + Gadget, + AttackTarget + }; + + ///---------------------------------------------------------------------------------------------------- + /// Agent Struct + ///---------------------------------------------------------------------------------------------------- + struct Agent + { + uint32_t ID; + uint32_t SpeciesID; + EAgentType Type; + char Name[128]; + + bool IsMinion; + uint32_t OwnerID; + }; + + + ///---------------------------------------------------------------------------------------------------- + /// ECombatEventType Enumeration + ///---------------------------------------------------------------------------------------------------- + enum class ECombatEventType + { + Health, + Down, + Death + }; + + ///---------------------------------------------------------------------------------------------------- + /// Skill Struct + ///---------------------------------------------------------------------------------------------------- + struct Skill + { + uint32_t ID; + char Name[128]; + }; + + ///---------------------------------------------------------------------------------------------------- + /// CombatEvent Struct + ///---------------------------------------------------------------------------------------------------- + struct CombatEvent + { + ECombatEventType Type; + + uint64_t Time; + + Agent* SrcAgent; + Agent* DstAgent; + Skill* Skill; + + float Value; + float ValueAlt; + + uint32_t IsConditionDamage : 1; + uint32_t IsCritical : 1; + uint32_t IsFumble : 1; + }; + ///---------------------------------------------------------------------------------------------------- /// RealTimeData Struct ///---------------------------------------------------------------------------------------------------- From 13545deecd4be854c609f674d204f9116bad1bbc Mon Sep 17 00:00:00 2001 From: Jakub Santorek Date: Tue, 7 Apr 2026 09:26:07 +0200 Subject: [PATCH 2/3] event name consistency --- RTAPI.h | 2 +- RTAPI.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/RTAPI.h b/RTAPI.h index c819f42..e0ab2dc 100644 --- a/RTAPI.h +++ b/RTAPI.h @@ -14,7 +14,7 @@ #define EV_RTAPI_GROUP_MEMBER_JOINED "RTAPI_GROUP_MEMBER_JOINED" // Payload is RTAPI::GroupMember* #define EV_RTAPI_GROUP_MEMBER_LEFT "RTAPI_GROUP_MEMBER_LEFT" // Payload is RTAPI::GroupMember* #define EV_RTAPI_GROUP_MEMBER_UPDATED "RTAPI_GROUP_MEMBER_UPDATED" // Payload is RTAPI::GroupMember* -#define EV_RTAPI_COMBAT_EVENT "EV_RTAPI_COMBAT_EVENT" // Payload is RTAPI::CombatEvent* +#define EV_RTAPI_COMBAT_EVENT "RTAPI_COMBAT_EVENT" // Payload is RTAPI::CombatEvent* #include diff --git a/RTAPI.hpp b/RTAPI.hpp index 4c2d621..03f2d28 100644 --- a/RTAPI.hpp +++ b/RTAPI.hpp @@ -14,7 +14,7 @@ #define EV_RTAPI_GROUP_MEMBER_JOINED "RTAPI_GROUP_MEMBER_JOINED" // Payload is RTAPI::GroupMember* #define EV_RTAPI_GROUP_MEMBER_LEFT "RTAPI_GROUP_MEMBER_LEFT" // Payload is RTAPI::GroupMember* #define EV_RTAPI_GROUP_MEMBER_UPDATED "RTAPI_GROUP_MEMBER_UPDATED" // Payload is RTAPI::GroupMember* -#define EV_RTAPI_COMBAT_EVENT "EV_RTAPI_COMBAT_EVENT" // Payload is RTAPI::CombatEvent* +#define EV_RTAPI_COMBAT_EVENT "RTAPI_COMBAT_EVENT" // Payload is RTAPI::CombatEvent* #include From 97ad4df7a3f6f8c8a796e05adf57d4ebd2d1bd2b Mon Sep 17 00:00:00 2001 From: Jakub Santorek Date: Wed, 8 Apr 2026 09:44:51 +0200 Subject: [PATCH 3/3] reordered members and added more agent flags --- RTAPI.h | 9 +++++---- RTAPI.hpp | 10 ++++++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/RTAPI.h b/RTAPI.h index e0ab2dc..e31d14f 100644 --- a/RTAPI.h +++ b/RTAPI.h @@ -141,8 +141,9 @@ typedef struct Agent EAgentType Type; char Name[128]; - bool IsMinion; - uint32_t OwnerID; + uint32_t IsMinion : 1; + uint32_t IsSelf : 1; + uint32_t OwnerID; // valid value only if IsMinion == true } Agent; ///---------------------------------------------------------------------------------------------------- @@ -169,14 +170,14 @@ typedef struct Skill ///---------------------------------------------------------------------------------------------------- struct CombatEvent { - ECombatEventType Type; - uint64_t Time; Agent* SrcAgent; Agent* DstAgent; Skill* Skill; + ECombatEventType Type; + float Value; float ValueAlt; diff --git a/RTAPI.hpp b/RTAPI.hpp index 03f2d28..0db3b1a 100644 --- a/RTAPI.hpp +++ b/RTAPI.hpp @@ -146,8 +146,9 @@ namespace RTAPI EAgentType Type; char Name[128]; - bool IsMinion; - uint32_t OwnerID; + uint32_t IsMinion : 1; + uint32_t IsSelf : 1; + uint32_t OwnerID; // valid value only if IsMinion == true }; @@ -175,13 +176,13 @@ namespace RTAPI ///---------------------------------------------------------------------------------------------------- struct CombatEvent { - ECombatEventType Type; - uint64_t Time; Agent* SrcAgent; Agent* DstAgent; Skill* Skill; + + ECombatEventType Type; float Value; float ValueAlt; @@ -200,6 +201,7 @@ namespace RTAPI uint32_t GameBuild; // Set to 0 when RTAPI is unloaded. EGameState GameState; EGameLanguage Language; + /* Instance/World Data */ ETimeOfDay TimeOfDay; uint32_t MapID;