Skip to content

Combat Log

Normalizes combat-log data from both Source 1 and Source 2 ingestion paths into a unified entry shape.

See also: Using the Combat Log, How Proto Parsing Works


Generated API

gem.combatlog.CombatLogProcessor

CombatLogProcessor

python
class CombatLogProcessor

Parses and dispatches combat log entries.

Source: src/gem/combatlog.py:171

Methods

on_combat_log_entry

Signature: def CombatLogProcessor.on_combat_log_entry(self, handler: CombatLogHandler) -> None

Register a handler to receive decoded CombatLogEntry objects.

Source: src/gem/combatlog.py:181

process_rune_pickup

Signature: def CombatLogProcessor.process_rune_pickup(self, player_slot: int, rune_type: int, tick: int = 0) -> None

Emit a PICKUP_RUNE CombatLogEntry from a CDOTAUserMsg_ChatEvent.

Source: src/gem/combatlog.py:189

process_s1_event

Signature: def CombatLogProcessor.process_s1_event(self, game_event: Any, name_table: Any, tick: int = 0) -> None

Parse a dota_combatlog S1 game event and emit a CombatLogEntry.

Source: src/gem/combatlog.py:214

process_s2_bulk

Signature: def CombatLogProcessor.process_s2_bulk(self, msg: Any, name_table: Any, tick: int = 0) -> None

Parse a CDOTAUserMsg_CombatLogBulkData and emit CombatLogEntry per entry.

Source: src/gem/combatlog.py:259

process_s2_entry

Signature: def CombatLogProcessor.process_s2_entry(self, msg: Any, name_table: Any, tick: int = 0) -> None

Parse a CMsgDOTACombatLogEntry and emit a CombatLogEntry.

Source: src/gem/combatlog.py:271

gem.combatlog.CombatLogEntry

CombatLogEntry

python
class CombatLogEntry

One decoded combat log entry.

Source: src/gem/combatlog.py:95

Dataclass fields

NameTypeDefault
tickint-
log_typestr-
attacker_namestr''
target_namestr''
inflictor_namestr''
valueint0
attacker_is_heroboolFalse
target_is_heroboolFalse
attacker_is_illusionboolFalse
target_is_illusionboolFalse
ability_levelint0
gold_reasonint0
xp_reasonint0
value_namestr''
damage_typestr''
stun_durationfloat0.0