Entity Classes¶
Deadlock demos contain hundreds of entity classes. This page documents the most important ones for data analysis. Use the CLI to discover all classes in a specific demo:
boon-cli classes match.dem --filter Citadel
Player Entities¶
Player data is split across two entity types linked by an entity handle.
CCitadelPlayerController¶
The player’s controller — holds identity, stats, and game-level data. There is one per player in the match.
Key fields:
Field |
Type |
Description |
|---|---|---|
|
String |
Display name |
|
U64 |
Steam ID |
|
U64 |
Team number (see Teams) |
|
I64 |
Starting lane |
|
U32 |
Entity handle to the player’s pawn |
|
U64 |
Hero ID (see Heroes) |
|
Bool |
Alive status |
|
I64 |
Kill count |
|
I64 |
Death count |
|
I64 |
Assist count |
|
I64 |
Player level |
|
I64 |
Gold net worth |
|
I64 |
Ability power net worth |
|
I64 |
Total hero damage dealt |
|
I64 |
Total hero healing |
|
I64 |
Total objective damage |
|
I64 |
Total self healing |
|
I64 |
Last hit count |
|
I64 |
Deny count |
|
I64 |
Current kill streak |
|
F32 |
Health regen rate |
|
Bool |
Has rebirth item |
|
Bool |
Has rejuvenator item |
|
Bool |
Ultimate ability trained |
|
F32 |
Ultimate cooldown start |
|
F32 |
Ultimate cooldown end |
CCitadelPlayerPawn¶
The player’s pawn — represents the physical character in the game world. Holds position, health, and combat state.
Key fields:
Field |
Type |
Description |
|---|---|---|
|
F32 |
X position |
|
F32 |
Y position |
|
F32 |
Z position |
|
QAngle |
Camera angles (pitch, yaw, roll) |
|
I64 |
Current health |
|
I64 |
Maximum health |
|
I64 |
Life state (0 = alive, 1 = dying, 2 = dead) |
|
F32 |
Time of death |
|
F32 |
Time of last spawn |
|
F32 |
Respawn timer |
|
Bool |
In a regen zone |
|
I64 |
Current souls |
|
I64 |
Spent souls |
|
I64 |
Hero ID |
|
I64 |
Hero build ID |
|
F32 |
In-combat timer start |
|
F32 |
In-combat timer end |
|
F32 |
Last damage taken/dealt |
|
F32 |
Player damage dealt start |
|
F32 |
Player damage dealt end |
|
F32 |
Player damage taken start |
|
F32 |
Player damage taken end |
|
F32 |
Minimap reveal time |
Controller-to-Pawn Link¶
The controller’s m_hPawn field is an entity handle. To find the corresponding
pawn, mask the lower 15 bits to get the entity index:
pawn_entity_index = m_hPawn & 0x7FFF
This is how the player_ticks property joins data from both entity types into a single
DataFrame row.
World State¶
CCitadelGameRulesProxy¶
The game rules entity — tracks global match state. There is exactly one per demo.
Key fields:
Field |
Type |
Description |
|---|---|---|
|
Bool |
Whether the game is paused |
|
F32 |
Next midboss spawn time |
|
U64 |
Match ID |
Other Entity Classes¶
These are commonly present in demos but not currently exposed through the Python API:
Class |
Description |
|---|---|
|
Destructible environment objects (crates, boxes) |
|
Minimap state and visibility |
|
Team-level aggregated data |
|
Individual hero abilities |
|
Purchasable items |
|
In-flight projectiles |
|
Non-player characters (creeps, bosses) |
|
World root entity |
Use the CLI’s entities and send-tables commands to explore the full set of
classes and their fields in any demo.