Entity Classes¶
Use boon-dev to list the entity classes in a demo.
Build the tool from source; see 💻 CLI.
boon-dev classes match.dem --filter Citadel
Player Entities¶
Player data is split across two entity types linked by an entity handle.
CCitadelPlayerController¶
The controller supplies player identity, counters, and match state.
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 |
|
U32 |
Entity handle to the hero pawn when recorded |
|
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 hero pawn supplies position, health, and combat state.
Key fields:
Field |
Type |
Description |
|---|---|---|
|
F32 |
X cell offset |
|
F32 |
Y cell offset |
|
F32 |
Z cell offset |
|
QAngle |
Camera angles (pitch, yaw, roll) |
|
I64 |
Current health |
|
I64 |
Maximum health |
|
I64 |
Life state (0 = alive, 1 = dying, 2 = dead, 3 = respawnable, 4 = respawning); resolve with |
|
F32 |
Time of death |
|
F32 |
Time of last spawn |
|
F32 |
Recorded respawn time |
|
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 |
Origin components are cell offsets. Combine them with cell indices for full world positions. Boon snapshot positions use full world coordinates.
Controller-to-Pawn Link¶
Controller pawn fields contain entity handles. Mask the lower 15 bits to get the entity index:
pawn_entity_index = m_hPawn & 0x7FFF
For a hero handle, use m_hHeroPawn when available.
During death, m_hPawn can identify a spectator pawn.
Stat and state queries prefer the hero pawn.
Handle serials also matter when entity indices are reused.
World State¶
CCitadelGameRulesProxy¶
The game rules entity — tracks global match state. There is exactly one for each demo.
Key fields:
Field |
Type |
Description |
|---|---|---|
|
Bool |
Whether the game is paused |
|
F32 |
Next midboss spawn time |
|
U64 |
Match ID |
Other Entity Classes¶
Some class data has Python datasets; inspect raw entities for other fields.
Class |
Description |
|---|---|
|
Destruction events in |
|
Minimap state and visibility |
|
Team-level aggregated data |
|
Ability state in |
|
Purchasable items |
|
In-flight projectiles |
|
Selected state in |
|
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.