Units
How a server puts objects on the field and takes them away: champions, minions, neutral monsters, turrets, pets, markers and props. What a unit then does is in Movement, Combat and Spells, and what it is worth in Replication.
Every object is named by a net id, and Objects and identifiers says what removes each kind of object.
Creating
Each kind of object has its own message:
- a champion,
CreateChampion, which, carrying the client’s own client id, also makes that champion the client’s own; a bot’s champion, the sameCreateChampionnaming no client, orSpawnBot; - a minion sent out from a side’s barracks,
SpawnFromBarracks, and a unit like one, such as a ward,SpawnUnit; - a monster of no side,
CreateNeutral; a pet,SpawnPet; - a turret,
CreateTurret(The client’s data says how it names one), and a turret of the server’s choosing,SpawnTurret; - an object that follows a unit,
CreateFollower, and a change to what it follows,FollowerMaster; - an unseen marker,
SpawnMarker, which other messages can name andMarkerMovedmoves; - a prop, a thing that stands on the map and is looked at,
MapProp, and a change to one,MapPropChanged.
In 1.0.0.138–3.1.0.0
Several of these arrive on their own or inside the
EnterSightthat brings the unit into view (see Vision): a client takes either.
CharacterPreload has a client load a character’s art ahead of need.
Changing and removing
TeamChanged moves a unit to another side, and ChampionRemoved takes a
champion out of the world. A unit’s death is in Combat.
Bots
A server can tell a client what a bot is thinking (BotDebug), weighing
(BotTargets) or doing (BotState). None of them changes what a player sees.
Messages
Each message of this system in this book, with each layout it has across the book’s patches and every note its definition carries. A layout is the message’s body, after the header its channel’s family puts in front (see Messages).
CreateChampion
What a server sends to put a champion on the field. The header carries zero or names the object this is about; a client accepts either.
In 1.0.0.130–1.0.0.137
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 79 |
| 1.0.0.132–1.0.0.137 | 80 |
The champion takes the id in champion, not the header’s; a client first removes any object holding that id. For the client’s own seat, name also becomes its own player’s name. A client drops the message while its map’s navigation data is unloaded, as early in a reconnection.
| Field | Type | What it is |
|---|---|---|
| champion | u32 | The name the champion answers to, so later messages can name it. |
| clientId | u32 | The client id of the player the champion belongs to, or 4294967295 where it belongs to none, as a bot’s does. A client takes the champion carrying its own client id as its own. |
| node | u8 | Which network node the object belongs to, in a field of its own. |
| skillLevel | u8 | It has no effect. |
| side | u8 | Nonzero for side 100, zero for side 200. |
| bot | u8 | Nonzero where a bot plays the seat; its shown name is then the client’s own bot name for asset, and name has no effect. |
| rank | u8 | It has no effect. |
| spawnIndex | u8 | Where the champion first stands and faces. From 0 to 5, its side’s base position plus the offset the map sets for the side’s head count (players and bots) and this index plus one, facing as the map sets for them. A client works out the head count itself, counting SpawnStart’s bots in it. From 6 up, the base position itself, facing along +X. Movement or sight data replaces it. |
| skin | i32 | Which look it wears. |
| name | text, 128 bytes | What the seat holding it is called. Written out in full and padded with zero bytes to the width above. |
| asset | text, 40 bytes | The name the client loads its art and sound under, written and padded as above. |
Vectors (2)
In 1.0.0.138–1.0.0.142
Command 82 on events, sent by the server, reliable.
The champion takes the id in champion, not the header’s; a client first removes any object holding that id. For the client’s own seat, name also becomes its own player’s name. A client drops the message while its map’s navigation data is unloaded, as early in a reconnection. It arrives on its own and also inside EnterSight.
| Field | Type | What it is |
|---|---|---|
| champion | u32 | The name the champion answers to, so later messages can name it. |
| clientId | u32 | The client id of the player the champion belongs to, or 4294967295 where it belongs to none, as a bot’s does. A client takes the champion carrying its own client id as its own. |
| node | u8 | Which network node the object belongs to, in a field of its own. |
| skillLevel | u8 | It has no effect. |
| side | u8 | Nonzero for side 100, zero for side 200. |
| bot | u8 | Nonzero where a bot plays the seat; its shown name is then the client’s own bot name for asset, and name has no effect. |
| rank | u8 | It has no effect. |
| spawnIndex | u8 | Where the champion first stands and faces. From 0 to 5, its side’s base position plus the offset the map sets for the side’s head count (players and bots) and this index plus one, facing as the map sets for them. A client works out the head count itself, counting SpawnStart’s bots in it. From 6 up, the base position itself, facing along +X. Movement or sight data replaces it. |
| skin | i32 | Which look it wears. |
| name | text, 128 bytes | What the seat holding it is called. Written out in full and padded with zero bytes to the width above. |
| asset | text, 40 bytes | The name the client loads its art and sound under, written and padded as above. |
Vectors (1)
In 1.0.0.143–1.0.0.146
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.143 | 82 |
| 1.0.0.144–1.0.0.146 | 76 |
The champion takes the id in champion, not the header’s; a client first removes any object holding that id. For the client’s own seat, name also becomes its own player’s name. A client drops the message while its map’s navigation data is unloaded, as early in a reconnection. It arrives on its own and also inside EnterSight.
| Field | Type | What it is |
|---|---|---|
| champion | u32 | The name the champion answers to, so later messages can name it. |
| clientId | u32 | The client id of the player the champion belongs to, or 4294967295 where it belongs to none, as a bot’s does. A client takes the champion carrying its own client id as its own. |
| node | u8 | Which network node the object belongs to, in a field of its own. |
| skillLevel | u8 | It has no effect. |
| side | u8 | Nonzero for side 100, zero for side 200. |
| bot | u8 | Nonzero where a bot plays the seat; its shown name is then the client’s own bot name for asset, and name has no effect. |
| rank | u8 | It has no effect. |
| spawnIndex | u8 | Where the champion first stands and faces. From 0 to 5, its side’s base position plus the offset the map sets for the side’s head count (players and bots) and this index plus one, facing as the map sets for them. A client works out the head count itself, counting SpawnStart’s bots in it. From 6 up, the base position itself, facing along +X. Movement or sight data replaces it. |
| skin | i32 | Which look it wears. |
| name | text, 128 bytes | What the seat holding it is called. Written out in full and padded with zero bytes to the width above. |
| asset | text, 40 bytes | The name the client loads its art and sound under, written and padded as above. |
| stayDown | f32 | How long it stays down, in seconds, where it is already down. |
| downFor | f32 | How long it has already been down, in seconds. |
| how | 4-byte bits | |
| how.down | bit 0 to 2 | 0 alive; 1 dead but acting on (the state a champion that keeps acting after death is in), where stayDown and downFor have no effect; 2 down, having been down for downFor with stayDown left. A client takes 3 to 7 as 0. |
| how.unused | bit 3 to 31 | Unused; a server writes zero. |
Vectors (2)
In 1.0.0.147–3.1.0.0
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.147–1.0.0.149 | 76 |
| 1.0.0.150–3.1.0.0 | 73 |
The champion takes the id in champion, not the header’s; a client first removes any object holding that id. For the client’s own seat, name also becomes its own player’s name. A client drops the message while its map’s navigation data is unloaded, as early in a reconnection. It arrives on its own and also inside EnterSight.
| Field | Type | What it is |
|---|---|---|
| champion | u32 | The name the champion answers to, so later messages can name it. |
| clientId | u32 | The client id of the player the champion belongs to, or 4294967295 where it belongs to none, as a bot’s does. A client takes the champion carrying its own client id as its own. |
| node | u8 | Which network node the object belongs to, in a field of its own. |
| skillLevel | u8 | It has no effect. |
| side | u8 | Nonzero for side 100, zero for side 200. |
| bot | u8 | Nonzero where a bot plays the seat; its shown name is then the client’s own bot name for asset, and name has no effect. |
| rank | u8 | It has no effect. |
| spawnIndex | u8 | Where the champion first stands and faces. From 0 to 5, its side’s base position plus the offset the map sets for the side’s head count (players and bots) and this index plus one, facing as the map sets for them. A client works out the head count itself, counting SpawnStart’s bots in it. From 6 up, the base position itself, facing along +X. Movement or sight data replaces it. |
| skin | i32 | Which look it wears. |
| name | text, 128 bytes | What the seat holding it is called. Written out in full and padded with zero bytes to the width above. |
| asset | text, 40 bytes | The name the client loads its art and sound under, written and padded as above. |
| stayDown | f32 | How long it stays down, in seconds, where it is already down. |
| downFor | f32 | How long it has already been down, in seconds. |
| how | 1-byte bits | |
| how.down | bit 0 to 2 | 0 alive; 1 dead but acting on (the state a champion that keeps acting after death is in), where stayDown and downFor have no effect; 2 down, having been down for downFor with stayDown left. A client takes 3 to 7 as 0. |
| how.unused | bit 3 to 7 | Unused; a server writes zero. |
Vectors (2)
SpawnBot
What a server sends to create a champion played by a bot. The header names no object: a server writes zero.
In 1.0.0.130–1.0.0.131
Command 216 on events, sent by the server, reliable.
A client deletes no object first: where one already holds the id, both answer to it.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The id the bot’s champion takes. |
| node | u8 | The network node it belongs to. |
| x | f32 | Where it appears, in world units. |
| y | f32 | Its height, in world units. |
| z | f32 | Where it appears, in world units. |
| rank | u8 | The bot’s rank. |
| sides | 4-byte bits | Its side. |
| sides.side | bit 0 to 8 | Its side: 100, 200 or 300. |
| sides.unused | bit 9 to 31 | Unused; a server writes zero. |
| skin | i32 | Which skin. |
| name | text, 64 bytes | The name shown for it. The text ends at its first zero byte, which falls within the field. |
| character | text, 64 bytes | The champion’s character name, which is also its unique name. |
Vectors (1)
In 1.0.0.132–1.0.0.138
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.132–1.0.0.134 | 217 |
| 1.0.0.135 | 219 |
| 1.0.0.136–1.0.0.137 | 217 |
| 1.0.0.138 | 219 |
A client first deletes any object it holds under the same id.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The id the bot’s champion takes. |
| node | u8 | The network node it belongs to. |
| x | f32 | Where it appears, in world units. |
| y | f32 | Its height, in world units. |
| z | f32 | Where it appears, in world units. |
| rank | u8 | The bot’s rank. |
| sides | 4-byte bits | Its side. |
| sides.side | bit 0 to 8 | Its side: 100, 200 or 300. |
| sides.unused | bit 9 to 31 | Unused; a server writes zero. |
| skin | i32 | Which skin. |
| name | text, 64 bytes | The name shown for it. The text ends at its first zero byte, which falls within the field. |
| character | text, 64 bytes | The champion’s character name, which is also its unique name. |
Vectors (4)
one-on-1-0-0-134, one-on-1-0-0-135, one-on-1-0-0-136, one-on-1-0-0-138
In 1.0.0.139–1.0.0.140
Command 218 on events, sent by the server, reliable.
A client deletes no object first: where one already holds the id, both answer to it.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The id the bot’s champion takes. |
| node | u8 | The network node it belongs to. |
| x | f32 | Where it appears, in world units. |
| y | f32 | Its height, in world units. |
| z | f32 | Where it appears, in world units. |
| rank | u8 | The bot’s rank. |
| sides | 4-byte bits | Its side. |
| sides.side | bit 0 to 8 | Its side: 100, 200 or 300. |
| sides.unused | bit 9 to 31 | Unused; a server writes zero. |
| skin | i32 | Which skin. |
| name | text, 64 bytes | The name shown for it. The text ends at its first zero byte, which falls within the field. |
| character | text, 64 bytes | The champion’s character name, which is also its unique name. |
Vectors (1)
In 1.0.0.141–1.0.0.146
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.141–1.0.0.143 | 220 |
| 1.0.0.144–1.0.0.146 | 207 |
A client first deletes any object it holds under the same id.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The id the bot’s champion takes. |
| node | u8 | The network node it belongs to. |
| x | f32 | Where it appears, in world units. |
| y | f32 | Its height, in world units. |
| z | f32 | Where it appears, in world units. |
| rank | u8 | The bot’s rank. |
| sides | 4-byte bits | Its side. |
| sides.side | bit 0 to 8 | Its side: 100, 200 or 300. |
| sides.unused | bit 9 to 31 | Unused; a server writes zero. |
| skin | i32 | Which skin. |
| name | text, 64 bytes | The name shown for it. The text ends at its first zero byte, which falls within the field. |
| character | text, 64 bytes | The champion’s character name, which is also its unique name. |
Vectors (2)
In 1.0.0.147–3.1.0.0
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.147–1.0.0.149 | 207 |
| 1.0.0.150–3.1.0.0 | 204 |
A client first deletes any object it holds under the same id.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The id the bot’s champion takes. |
| node | u8 | The network node it belongs to. |
| x | f32 | Where it appears, in world units. |
| y | f32 | Its height, in world units. |
| z | f32 | Where it appears, in world units. |
| rank | u8 | The bot’s rank. |
| sides | 2-byte bits | Its side. |
| sides.side | bit 0 to 8 | Its side: 100, 200 or 300. |
| sides.unused | bit 9 to 15 | Unused; a server writes zero. |
| skin | i32 | Which skin. |
| name | text, 64 bytes | The name shown for it. The text ends at its first zero byte, which falls within the field. |
| character | text, 64 bytes | The champion’s character name, which is also its unique name. |
Vectors (2)
SpawnFromBarracks
What a server sends to put a unit on the field from the place its side sends them out of.
In 1.0.0.130–1.0.0.142
Command 3 on events, sent by the server, reliable.
It arrives on its own and also inside EnterSight. The header names the barracks sending the unit out: only a barracks acts on the message, and unit names the new unit.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The name the unit answers to, so later messages can name it. |
| node | u8 | Which network node the unit belongs to, in a field of its own rather than as part of the name that follows. |
| wave | u8 | Which run of units it belongs to. |
| kind | u8 | What sort of unit it is. |
| damageBonus | i16 | What is added to the damage it deals. |
| healthBonus | i16 | What is added to the health it holds. |
Vectors (1)
In 1.0.0.143–3.1.0.0
Command 3 on events, sent by the server, reliable.
It arrives on its own and also inside EnterSight. The header names the unit this is about.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The name the unit answers to, so later messages can name it. |
| node | u8 | Which network node the unit belongs to, in a field of its own rather than as part of the name that follows. |
| barracks | u32 | The place it came out of, by the identifier its name gives as Objects and identifiers works it out. On map 1 that is a spawn point such as __P_Order_Spawn_Barracks__C01, not the inhibitor named Barracks_T1_C1: named by the inhibitor, a client creates nothing. |
| wave | u8 | Which run of units it belongs to. |
| kind | u8 | What sort of unit it is. |
| damageBonus | i16 | What is added to the damage it deals. |
| healthBonus | i16 | What is added to the health it holds. |
SpawnUnit
What a server sends to put a minion-like unit on the field, such as a ward.
In 1.0.0.130–1.0.0.139
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 128 |
| 1.0.0.132–1.0.0.137 | 129 |
| 1.0.0.138–1.0.0.139 | 131 |
A client deletes any object holding the new unit’s id first, and does nothing more where it cannot make the unit. clone, where nonzero, is copied, state and inventory. The header names the unit that put it there.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The name the new unit answers to. |
| node | u8 | Which network node the unit belongs to. |
| atX | f32 | Where it stands, along one ground axis, in world units. |
| atY | f32 | Where it stands, in height, in world units. |
| atZ | f32 | Where it stands, along the other ground axis, in world units. |
| skin | i32 | Which look it wears. |
| clone | u32 | The unit it copies, or zero. |
| team | 4-byte bits | |
| team.team | bit 0 to 8 | Which side, as a team number. |
| team.unused | bit 9 to 31 | Unused; a server writes zero. |
| flags | 1-byte bits | |
| flags.ignoreCollision | bit 0 | Set where it does not block the way. |
| flags.ward | bit 1 | Set where it is a ward. |
| flags.bot | bit 2 | Set where it is driven by the client’s own decisions. |
| flags.targetable | bit 3 | Set where the unit can be aimed at. |
| flags.unused | bit 4 to 7 | Unused; a server writes zero. |
| targetableToTeam | u32 | Read, then overwritten; a client keeps nothing of it. |
| visibilitySize | f32 | How large it counts as for sight, in world units. |
| name | text, 64 bytes | Its name, padded with zero bytes. |
| asset | text, 64 bytes | The name the client loads its art under, padded with zero bytes. |
Vectors (3)
In 1.0.0.140
Command 131 on events, sent by the server, reliable.
A client deletes no object first: where one already holds the new unit’s id, both answer to it. It does nothing more where it cannot make the unit. clone, where nonzero, is copied, state and inventory. The header names no object a client reads: a server names the unit that put it there.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The name the new unit answers to. |
| node | u8 | Which network node the unit belongs to. |
| atX | f32 | Where it stands, along one ground axis, in world units. |
| atY | f32 | Where it stands, in height, in world units. |
| atZ | f32 | Where it stands, along the other ground axis, in world units. |
| skin | i32 | Which look it wears. |
| clone | u32 | The unit it copies, or zero. |
| team | 4-byte bits | |
| team.team | bit 0 to 8 | Which side, as a team number. |
| team.unused | bit 9 to 31 | Unused; a server writes zero. |
| flags | 1-byte bits | |
| flags.ignoreCollision | bit 0 | Set where it does not block the way. It takes effect only where bot is clear. |
| flags.ward | bit 1 | Set where it is a ward. |
| flags.laneMinion | bit 2 | Unused here; a client reads nothing in this bit. |
| flags.bot | bit 3 | Set where it is driven by the client’s own decisions. |
| flags.targetable | bit 4 | Set where the unit can be aimed at. |
| flags.unused | bit 5 to 7 | Unused; a server writes zero. |
| targetableToTeam | u32 | Read, then overwritten; a client keeps nothing of it. |
| visibilitySize | f32 | How large it counts as for sight, in world units. |
| name | text, 64 bytes | Its name, padded with zero bytes. |
| asset | text, 64 bytes | The name the client loads its art under, padded with zero bytes. |
Vectors (1)
In 1.0.0.141–1.0.0.142
Command 131 on events, sent by the server, reliable.
A client deletes any object holding the new unit’s id first, and does nothing more where it cannot make the unit. clone, where nonzero, is copied, state and inventory. The header names the unit that put it there.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The name the new unit answers to. |
| node | u8 | Which network node the unit belongs to. |
| atX | f32 | Where it stands, along one ground axis, in world units. |
| atY | f32 | Where it stands, in height, in world units. |
| atZ | f32 | Where it stands, along the other ground axis, in world units. |
| skin | i32 | Which look it wears. |
| clone | u32 | The unit it copies, or zero. |
| team | 4-byte bits | |
| team.team | bit 0 to 8 | Which side, as a team number. |
| team.unused | bit 9 to 31 | Unused; a server writes zero. |
| flags | 1-byte bits | |
| flags.ignoreCollision | bit 0 | Set where it does not block the way. |
| flags.ward | bit 1 | Set where it is a ward. |
| flags.laneMinion | bit 2 | Set where it is a lane minion. |
| flags.bot | bit 3 | Set where it is driven by the client’s own decisions. |
| flags.targetable | bit 4 | Set where the unit can be aimed at. |
| flags.unused | bit 5 to 7 | Unused; a server writes zero. |
| targetableToTeam | u32 | Read, then overwritten; a client keeps nothing of it. |
| visibilitySize | f32 | How large it counts as for sight, in world units. |
| name | text, 64 bytes | Its name, padded with zero bytes. |
| asset | text, 64 bytes | The name the client loads its art under, padded with zero bytes. |
Vectors (1)
In 1.0.0.143–1.0.0.146
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.143 | 131 |
| 1.0.0.144–1.0.0.146 | 125 |
A client deletes any object holding the new unit’s id first, and does nothing more where it cannot make the unit. clone, where nonzero, is copied, state and inventory. The header names the unit that put it there.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The name the new unit answers to. |
| node | u8 | Which network node the unit belongs to. |
| atX | f32 | Where it stands, along one ground axis, in world units. |
| atY | f32 | Where it stands, in height, in world units. |
| atZ | f32 | Where it stands, along the other ground axis, in world units. |
| skin | i32 | Which look it wears. |
| clone | u32 | The unit it copies, or zero. |
| team | 4-byte bits | |
| team.team | bit 0 to 8 | Which side, as a team number. |
| team.unused | bit 9 to 31 | Unused; a server writes zero. |
| flags | 1-byte bits | |
| flags.ignoreCollision | bit 0 | Set where it does not block the way. |
| flags.ward | bit 1 | Set where it is a ward. |
| flags.laneMinion | bit 2 | Set where it is a lane minion. |
| flags.bot | bit 3 | Set where it is driven by the client’s own decisions. |
| flags.unused | bit 4 to 7 | Unused; a server writes zero. |
| targetableToTeam | u32 | Which sides can aim at it, as a set of bits. |
| visibilitySize | f32 | How large it counts as for sight, in world units. |
| name | text, 64 bytes | Its name, padded with zero bytes. |
| asset | text, 64 bytes | The name the client loads its art under, padded with zero bytes. |
Vectors (2)
In 1.0.0.147–3.1.0.0
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.147–1.0.0.149 | 125 |
| 1.0.0.150–3.1.0.0 | 122 |
A client deletes any object holding the new unit’s id first, and does nothing more where it cannot make the unit. clone, where nonzero, is copied, state and inventory. The header names the unit that put it there.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The name the new unit answers to. |
| node | u8 | Which network node the unit belongs to. |
| atX | f32 | Where it stands, along one ground axis, in world units. |
| atY | f32 | Where it stands, in height, in world units. |
| atZ | f32 | Where it stands, along the other ground axis, in world units. |
| skin | i32 | Which look it wears. |
| clone | u32 | The unit it copies, or zero. |
| flags | 2-byte bits | What sort of unit it is. |
| flags.team | bit 0 to 8 | Which side, as a team number. |
| flags.ignoreCollision | bit 9 | Set where it does not block the way. |
| flags.ward | bit 10 | Set where it is a ward. |
| flags.laneMinion | bit 11 | Set where it is a lane minion. |
| flags.bot | bit 12 | Set where it is driven by the client’s own decisions. |
| flags.unused | bit 13 to 15 | Unused; a server writes zero. |
| targetableToTeam | u32 | Which sides can aim at it, as a set of bits. |
| visibilitySize | f32 | How large it counts as for sight, in world units. |
| name | text, 64 bytes | Its name, padded with zero bytes. |
| asset | text, 64 bytes | The name the client loads its art under, padded with zero bytes. |
Vectors (2)
CreateNeutral
What a server sends to put a unit that belongs to no side on the field. The header names the unit this is about.
In 1.0.0.130–1.0.0.137
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 102 |
| 1.0.0.132–1.0.0.137 | 103 |
The monster faces from where it stands toward the facing point, or along +Z where the two are the same. A client drops the message while its map’s navigation data is unloaded.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The name the unit answers to, so later messages can name it. |
| node | u8 | Which network node the object belongs to, in a field of its own. |
| atX | f32 | Where the unit stands, along one ground axis, in world units. |
| atY | f32 | Where the unit stands, in height, in world units. |
| atZ | f32 | Where the unit stands, along the other ground axis, in world units. |
| campAtX | f32 | Where the camp it belongs to sits, along one ground axis, in world units. |
| campAtY | f32 | Where the camp it belongs to sits, in height, in world units. |
| campAtZ | f32 | Where the camp it belongs to sits, along the other ground axis, in world units. |
| facingX | f32 | A point the unit faces toward, along one ground axis, in world units. |
| facingY | f32 | That point, in height. |
| facingZ | f32 | That point, along the other ground axis. |
| name | text, 64 bytes | What this unit is called, so a client can tell one from another. Written out in full and padded with zero bytes to the width above. |
| asset | text, 64 bytes | The name the client loads its art and sound under, written and padded as above. |
| uniqueName | text, 64 bytes | A further name the unit answers to, written and padded as above. |
| campIcon | text, 64 bytes | The name of the icon the minimap shows at the camp, written in full and padded with zero bytes to the width above; empty shows none. A client uses it only where it creates the camp. |
| side | u32 | The side it belongs to, or zero where it belongs to none. |
| damageBonus | i32 | What is added to the damage it deals. |
| healthBonus | i32 | What is added to the health it holds. |
| roaming | u32 | How the monster wanders. It has no effect. Values: 0 inactive, 1 hostile, 2 fleeing. |
| camp | u32 | Which camp the unit belongs to. A client adds the unit to that camp where a CampMarker has placed it first, and to no camp otherwise. |
Vectors (2)
In 1.0.0.138–1.0.0.143
Command 105 on events, sent by the server, reliable.
The monster faces from where it stands toward the facing point, or along +Z where the two are the same. A client drops the message while its map’s navigation data is unloaded. A server sends it only inside EnterSight, and the channel and delivery given here are those of the message carrying it.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The name the unit answers to, so later messages can name it. |
| node | u8 | Which network node the object belongs to, in a field of its own. |
| atX | f32 | Where the unit stands, along one ground axis, in world units. |
| atY | f32 | Where the unit stands, in height, in world units. |
| atZ | f32 | Where the unit stands, along the other ground axis, in world units. |
| campAtX | f32 | Where the camp it belongs to sits, along one ground axis, in world units. |
| campAtY | f32 | Where the camp it belongs to sits, in height, in world units. |
| campAtZ | f32 | Where the camp it belongs to sits, along the other ground axis, in world units. |
| facingX | f32 | A point the unit faces toward, along one ground axis, in world units. |
| facingY | f32 | That point, in height. |
| facingZ | f32 | That point, along the other ground axis. |
| name | text, 64 bytes | What this unit is called, so a client can tell one from another. Written out in full and padded with zero bytes to the width above. |
| asset | text, 64 bytes | The name the client loads its art and sound under, written and padded as above. |
| uniqueName | text, 64 bytes | A further name the unit answers to, written and padded as above. |
| campIcon | text, 64 bytes | The name of the icon the minimap shows at the camp, written in full and padded with zero bytes to the width above; empty shows none. A client uses it only where it creates the camp. |
| side | u32 | The side it belongs to, or zero where it belongs to none. |
| damageBonus | i32 | What is added to the damage it deals. |
| healthBonus | i32 | What is added to the health it holds. |
| roaming | u32 | How the monster wanders. It has no effect. Values: 0 inactive, 1 hostile, 2 fleeing. |
| camp | u32 | Which camp the unit belongs to. Where the client does not know the camp, it creates it at the unit’s own position (atX, atY, atZ), with campIcon, effectSide and revealEvent, and adds the unit to it. Where it knows the camp, a nonzero effectSide changes the camp’s side. |
| effectSide | u32 | The side that gains what killing it grants. |
| revealEvent | i32 | What makes the unit known to a side that cannot see it. |
Vectors (1)
In 1.0.0.144–3.1.0.0
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.144–1.0.0.149 | 99 |
| 1.0.0.150–3.1.0.0 | 96 |
The monster faces from where it stands toward the facing point, or along +Z where the two are the same. A client drops the message while its map’s navigation data is unloaded. A server sends it only inside EnterSight, and the channel and delivery given here are those of the message carrying it.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The name the unit answers to, so later messages can name it. |
| node | u8 | Which network node the object belongs to, in a field of its own. |
| atX | f32 | Where the unit stands, along one ground axis, in world units. |
| atY | f32 | Where the unit stands, in height, in world units. |
| atZ | f32 | Where the unit stands, along the other ground axis, in world units. |
| campAtX | f32 | Where the camp it belongs to sits, along one ground axis, in world units. |
| campAtY | f32 | Where the camp it belongs to sits, in height, in world units. |
| campAtZ | f32 | Where the camp it belongs to sits, along the other ground axis, in world units. |
| facingX | f32 | A point the unit faces toward, along one ground axis, in world units. |
| facingY | f32 | That point, in height. |
| facingZ | f32 | That point, along the other ground axis. |
| name | text, 64 bytes | What this unit is called, so a client can tell one from another. Written out in full and padded with zero bytes to the width above. |
| asset | text, 64 bytes | The name the client loads its art and sound under, written and padded as above. |
| uniqueName | text, 64 bytes | A further name the unit answers to, written and padded as above. |
| campIcon | text, 64 bytes | The name of the icon the minimap shows at the camp, written in full and padded with zero bytes to the width above; empty shows none. A client uses it only where it creates the camp. |
| side | u32 | The side it belongs to, or zero where it belongs to none. |
| damageBonus | i32 | What is added to the damage it deals. |
| healthBonus | i32 | What is added to the health it holds. |
| roaming | u32 | How the monster wanders. It has no effect. Values: 0 inactive, 1 hostile, 2 fleeing. |
| camp | u32 | Which camp the unit belongs to. A client adds the unit to that camp where a CampMarker has placed it first, and to no camp otherwise. |
| effectSide | u32 | The side that gains what killing it grants. |
| revealEvent | i32 | What makes the unit known to a side that cannot see it. |
Vectors (2)
SpawnPet
What a server sends to put a pet on the field.
In 1.0.0.130–1.0.0.137
Command 60 on events, sent by the server, reliable.
The header names the owner, and a client handles the message only where it holds that unit. It kills the owner’s earlier pet if that lives, then makes the pet under pet and node, replacing its script with script, gives it the owner’s seat, and takes it as the owner’s pet. It deletes no object first; where one already holds pet, both answer to it. duration has no effect. The header names the pet. A server sends it to clients watching a match.
| Field | Type | What it is |
|---|---|---|
| pet | u32 | The name the new pet answers to. |
| node | u8 | Which network node it belongs to. |
| atX | f32 | Where it stands, along one ground axis, in world units. |
| atY | f32 | In height, in world units. |
| atZ | f32 | Along the other ground axis, in world units. |
| spellLevel | i32 | The level of the spell that summoned it, plus one. A client uses it only where the owner is on its own side. |
| duration | f32 | How long it lasts, in seconds. A client reads nothing of it. |
| damageBonus | i32 | What is added to the damage it deals. |
| healthBonus | i32 | What is added to its health. |
| name | text, 128 bytes | Its name, padded with zero bytes. |
| asset | text, 32 bytes | The name the client loads its art under, padded with zero bytes. |
| skin | i32 | Which look it wears. |
| effect | text, 64 bytes | An effect it carries, padded with zero bytes. A client uses it only where the owner is on its own side. |
| clone | u32 | The unit it copies, or zero. |
| flags | 1-byte bits | How it behaves. |
| flags.copyInventory | bit 0 | Set where it copies its owner’s items. |
| flags.clearOwnerTarget | bit 1 | Set where its owner’s target is cleared. |
| flags.unused | bit 2 to 7 | Unused; a server writes zero. |
| script | text, 32 bytes | The script that drives it, padded with zero bytes. |
| minimapIcon | u8 | Set where it shows on the minimap. Any nonzero value sets it. |
In 1.0.0.138–1.0.0.142
Command 60 on events, sent by the server, reliable.
A client spawns nothing where it does not know the owner; kills the owner’s earlier pet if it lives; makes the pet, replacing its script with script; gives it the owner’s seat; and registers it under the header’s id and node. It deletes no object first; where one already holds the header’s id, both answer to it. duration has no effect. The header names the pet. A server sends it to clients watching a match.
| Field | Type | What it is |
|---|---|---|
| owner | u32 | The unit it belongs to. |
| node | u8 | Which network node it belongs to. |
| atX | f32 | Where it stands, along one ground axis, in world units. |
| atY | f32 | In height, in world units. |
| atZ | f32 | Along the other ground axis, in world units. |
| spellLevel | i32 | The level of the spell that summoned it, plus one. A client uses it only where the owner belongs to its own network node, so only for its own units and never while watching a match. |
| duration | f32 | How long it lasts, in seconds. A client reads nothing of it. |
| damageBonus | i32 | What is added to the damage it deals. |
| healthBonus | i32 | What is added to its health. |
| name | text, 128 bytes | Its name, padded with zero bytes. |
| asset | text, 32 bytes | The name the client loads its art under, padded with zero bytes. |
| skin | i32 | Which look it wears. |
| effect | text, 64 bytes | An effect it carries, padded with zero bytes. A client uses it only where the owner belongs to its own network node, as for spellLevel. |
| clone | u32 | The unit it copies, or zero. |
| flags | 1-byte bits | How it behaves. |
| flags.copyInventory | bit 0 | Set to tie the pet to the unit clone names. A client ties it to clone whatever this bit says, so the bit adds nothing. |
| flags.clearOwnerTarget | bit 1 | Set where its owner’s target is cleared. |
| flags.unused | bit 2 to 7 | Unused; a server writes zero. |
| script | text, 32 bytes | The script that drives it, padded with zero bytes. |
| minimapIcon | u8 | Set where it shows on the minimap. Any nonzero value sets it. |
Vectors (1)
In 1.0.0.143
Command 60 on events, sent by the server, reliable.
A client deletes any object holding the header’s id; spawns nothing where it does not know the owner; kills the owner’s earlier pet if it lives; makes the pet, replacing its script with script; gives it the owner’s seat; and registers it under the header’s id and node. duration has no effect. The header names the pet. A server sends it to clients watching a match.
| Field | Type | What it is |
|---|---|---|
| owner | u32 | The unit it belongs to. |
| node | u8 | Which network node it belongs to. |
| atX | f32 | Where it stands, along one ground axis, in world units. |
| atY | f32 | In height, in world units. |
| atZ | f32 | Along the other ground axis, in world units. |
| spellLevel | i32 | The level of the spell that summoned it, plus one. A client uses it only where the owner is on its own side. |
| duration | f32 | How long it lasts, in seconds. A client reads nothing of it. |
| damageBonus | i32 | What is added to the damage it deals. |
| healthBonus | i32 | What is added to its health. |
| name | text, 128 bytes | Its name, padded with zero bytes. |
| asset | text, 32 bytes | The name the client loads its art under, padded with zero bytes. |
| skin | i32 | Which look it wears. |
| effect | text, 64 bytes | An effect it carries, padded with zero bytes. A client uses it only where the owner is on its own side. |
| clone | u32 | The unit it copies, or zero. |
| flags | 1-byte bits | How it behaves. |
| flags.copyInventory | bit 0 | Set where it copies its owner’s items. |
| flags.clearOwnerTarget | bit 1 | Set where its owner’s target is cleared. |
| flags.unused | bit 2 to 7 | Unused; a server writes zero. |
| script | text, 32 bytes | The script that drives it, padded with zero bytes. |
| minimapIcon | u8 | Set where it shows on the minimap. Any nonzero value sets it. |
Vectors (1)
In 1.0.0.144–1.0.0.146
Command 57 on events, sent by the server, reliable.
A client deletes any object holding the header’s id; spawns nothing where it does not know the owner; kills the owner’s earlier pet if it lives; makes the pet, replacing its script with script; gives it the owner’s seat, its gold going to the owner; and registers it under the header’s id and node. spellLevel, duration and effect have no effect. The header names the pet. A server sends it to clients watching a match.
| Field | Type | What it is |
|---|---|---|
| owner | u32 | The unit it belongs to. |
| node | u8 | Which network node it belongs to. |
| atX | f32 | Where it stands, along one ground axis, in world units. |
| atY | f32 | In height, in world units. |
| atZ | f32 | Along the other ground axis, in world units. |
| spellLevel | i32 | The level of the spell that summoned it, plus one. |
| duration | f32 | How long it lasts, in seconds. |
| damageBonus | i32 | What is added to the damage it deals. |
| healthBonus | i32 | What is added to its health. |
| name | text, 128 bytes | Its name, padded with zero bytes. |
| asset | text, 32 bytes | The name the client loads its art under, padded with zero bytes. |
| skin | i32 | Which look it wears. |
| effect | text, 64 bytes | An effect it carries, padded with zero bytes. |
| clone | u32 | The unit it copies, or zero. |
| flags | 1-byte bits | How it behaves. |
| flags.copyInventory | bit 0 | Set where it copies its owner’s items. |
| flags.clearOwnerTarget | bit 1 | Set where its owner’s target is cleared. |
| flags.unused | bit 2 to 7 | Unused; a server writes zero. |
| script | text, 32 bytes | The script that drives it, padded with zero bytes. |
| minimapIcon | u8 | Set where it shows on the minimap. Any nonzero value sets it. |
Vectors (1)
In 1.0.0.147–3.1.0.0
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.147–1.0.0.149 | 57 |
| 1.0.0.150–3.1.0.0 | 54 |
A client deletes any object holding the header’s id; spawns nothing where it does not know the owner; kills the owner’s earlier pet if it lives; makes the pet, replacing its script with script; gives it the owner’s seat, its gold going to the owner; and registers it under the header’s id and node. spellLevel, duration and effect have no effect. The header names the pet. A server sends it to clients watching a match.
| Field | Type | What it is |
|---|---|---|
| owner | u32 | The unit it belongs to. |
| node | u8 | Which network node it belongs to. |
| atX | f32 | Where it stands, along one ground axis, in world units. |
| atY | f32 | In height, in world units. |
| atZ | f32 | Along the other ground axis, in world units. |
| spellLevel | i32 | The level of the spell that summoned it, plus one. |
| duration | f32 | How long it lasts, in seconds. |
| damageBonus | i32 | What is added to the damage it deals. |
| healthBonus | i32 | What is added to its health. |
| name | text, 128 bytes | Its name, padded with zero bytes. |
| asset | text, 32 bytes | The name the client loads its art under, padded with zero bytes. |
| skin | i32 | Which look it wears. |
| effect | text, 64 bytes | An effect it carries, padded with zero bytes. |
| clone | u32 | The unit it copies, or zero. |
| flags | 1-byte bits | How it behaves. |
| flags.copyInventory | bit 0 | Set where it copies its owner’s items. |
| flags.clearOwnerTarget | bit 1 | Set where its owner’s target is cleared. |
| flags.minimapIcon | bit 2 | Set where it shows on the minimap. |
| flags.unused | bit 3 to 7 | Unused; a server writes zero. |
| script | text, 32 bytes | The script that drives it, padded with zero bytes. |
Vectors (1)
CreateTurret
What a server sends to put a turret on the field. The header names the unit this is about.
In 1.0.0.130–1.0.0.137
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 165 |
| 1.0.0.132–1.0.0.134 | 166 |
| 1.0.0.135 | 168 |
| 1.0.0.136–1.0.0.137 | 166 |
A client matches name exactly against the map’s turrets. With no match it only removes any object holding the id; a matched turret missing or dead is rebuilt before it takes the id.
| Field | Type | What it is |
|---|---|---|
| turret | u32 | The name the turret answers to, so later messages can name it. |
| node | u8 | Which network node the object belongs to, in a field of its own. |
| name | text, 64 bytes | What this turret is called, so a client can tell one from another. Written out in full and padded with zero bytes to the width above. |
| state | 1-byte bits | |
| state.targetable | bit 0 | Set where the turret can be aimed at. |
| state.unused | bit 1 to 7 | Unused; a server writes zero. |
| targetableToTeam | u32 | Read, then overwritten; a client keeps nothing of it. |
Vectors (4)
one-on-1-0-0-131, one-on-1-0-0-134, one-on-1-0-0-135, one-on-1-0-0-136
In 1.0.0.138
Command 168 on events, sent by the server, reliable.
A client matches name exactly against the map’s turrets. With no match it only removes any object holding the id; a matched turret missing or dead is rebuilt before it takes the id. A server sends it only inside EnterSight, and the channel and delivery given here are those of the message carrying it.
| Field | Type | What it is |
|---|---|---|
| turret | u32 | The name the turret answers to, so later messages can name it. |
| node | u8 | Which network node the object belongs to, in a field of its own. |
| name | text, 64 bytes | What this turret is called, so a client can tell one from another. Written out in full and padded with zero bytes to the width above. |
| state | 1-byte bits | |
| state.targetable | bit 0 | Set where the turret can be aimed at. |
| state.unused | bit 1 to 7 | Unused; a server writes zero. |
| targetableToTeam | u32 | Read, then overwritten; a client keeps nothing of it. |
Vectors (1)
In 1.0.0.139–1.0.0.142
Command 167 on events, sent by the server, reliable.
A client matches name exactly against the map’s turrets; a matched turret missing or dead is rebuilt before it takes the id. A server names one of the map’s turrets: with no match, or on a map with none, a client fails. A server sends it only inside EnterSight, and the channel and delivery given here are those of the message carrying it.
| Field | Type | What it is |
|---|---|---|
| turret | u32 | The name the turret answers to, so later messages can name it. |
| node | u8 | Which network node the object belongs to, in a field of its own. |
| name | text, 64 bytes | What this turret is called, so a client can tell one from another. Written out in full and padded with zero bytes to the width above. |
| state | 1-byte bits | |
| state.targetable | bit 0 | Set where the turret can be aimed at. |
| state.unused | bit 1 to 7 | Unused; a server writes zero. |
| targetableToTeam | u32 | Read, then overwritten; a client keeps nothing of it. |
Vectors (1)
In 1.0.0.143–3.1.0.0
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.143 | 167 |
| 1.0.0.144–1.0.0.149 | 157 |
| 1.0.0.150–3.1.0.0 | 154 |
A client matches name exactly against the map’s turrets. With no match it only removes any object holding the id; a matched turret missing or dead is rebuilt before it takes the id. A server sends it only inside EnterSight, and the channel and delivery given here are those of the message carrying it.
| Field | Type | What it is |
|---|---|---|
| turret | u32 | The name the turret answers to, so later messages can name it. |
| node | u8 | Which network node the object belongs to, in a field of its own. |
| name | text, 64 bytes | What this turret is called, so a client can tell one from another. Written out in full and padded with zero bytes to the width above. |
Vectors (3)
CreateFollower
What a server sends to put an object on the field that follows a unit. The header names the unit followed.
In 1.0.0.144–3.1.0.0
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.144–1.0.0.149 | 241 |
| 1.0.0.150–3.1.0.0 | 238 |
| Field | Type | What it is |
|---|---|---|
| follower | u32 | The name the new object answers to. |
| node | u8 | Which network node it belongs to. |
| skin | i32 | Which look it wears. |
| name | text, 64 bytes | Its name, padded with zero bytes. |
| asset | text, 64 bytes | The name the client loads its art under, padded with zero bytes. |
Vectors (2)
FollowerMaster
What a server sends to change which unit a following object follows. The header names the follower.
In 1.0.0.145–3.1.0.0
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.145–1.0.0.149 | 242 |
| 1.0.0.150–3.1.0.0 | 239 |
| Field | Type | What it is |
|---|---|---|
| master | u32 | The unit it now follows; one no unit answers to leaves it following none. |
Vectors (2)
MapProp
What a server sends to place a prop on the map: a thing that stands there and is looked at rather than one that acts. The header carries zero or names the object this is about, and a client accepts either.
In 1.0.0.130–1.0.0.138
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 217 |
| 1.0.0.132–1.0.0.134 | 218 |
| 1.0.0.135 | 220 |
| 1.0.0.136–1.0.0.137 | 218 |
| 1.0.0.138 | 220 |
A client takes the prop’s id from prop, not from the header. A scenery prop is turned by pitch, then yaw, then roll, each about the fixed world axes; none is negated or wrapped. An active prop only turns about the up axis, to face the ground direction its x and z give, and faces +z where both are zero.
| Field | Type | What it is |
|---|---|---|
| prop | u32 | The name the prop answers to, so later messages can name it. |
| node | u8 | Which network node the object belongs to. It is a field of its own, not the leading byte of the name beside it. |
| atX | f32 | Where the prop stands, along one ground axis, in world units. |
| atY | f32 | Where the prop stands, in height, in world units. |
| atZ | f32 | Where the prop stands, along the other ground axis, in world units. |
| rotationX | f32 | For scenery, the pitch in degrees: a turn about the x axis, positive turning +y toward +z. For an active prop, x of the direction it faces. |
| rotationY | f32 | For scenery, the yaw in degrees: a turn about the up axis, positive turning +z toward +x, so yaw 0 faces +z and 90 faces +x. For an active prop, y of its facing, which does not turn it. |
| rotationZ | f32 | For scenery, the roll in degrees: a turn about the z axis, positive turning +x toward +y. For an active prop, z of the direction it faces. |
| offsetX | f32 | What is added to where it stands, along one ground axis, in world units. |
| offsetY | f32 | What is added to where it stands, in height, in world units. |
| offsetZ | f32 | What is added to where it stands, along the other ground axis, in world units. |
| side | 4-byte bits | The side the prop belongs to. A server sends 300, the neutral side. |
| side.side | bit 0 to 8 | The prop’s side. |
| side.unused | bit 9 to 31 | Unused; a server writes zero. |
| skillLevel | u8 | Unused; a server writes zero. |
| rank | u8 | How far it is advanced. |
| kind | u8 | What sort of prop it is; a client makes nothing for any other value. A client first deletes any object holding the prop’s id, whatever the kind. Values: 0 active, 1 scenery. |
| name | text, 64 bytes | What this prop is called, so a client can tell one from another. Written out in full and padded with zero bytes to the width above. |
| asset | text, 64 bytes | The name the client loads its art and sound under, written and padded as above. |
In 1.0.0.139–1.0.0.140
Command 219 on events, sent by the server, reliable.
A client takes the prop’s id from prop, not from the header. A scenery prop is turned by pitch, then yaw, then roll, each about the fixed world axes; none is negated or wrapped. An active prop only turns about the up axis, to face the ground direction its x and z give, and faces +z where both are zero.
| Field | Type | What it is |
|---|---|---|
| prop | u32 | The name the prop answers to, so later messages can name it. |
| node | u8 | Which network node the object belongs to. It is a field of its own, not the leading byte of the name beside it. |
| atX | f32 | Where the prop stands, along one ground axis, in world units. |
| atY | f32 | Where the prop stands, in height, in world units. |
| atZ | f32 | Where the prop stands, along the other ground axis, in world units. |
| rotationX | f32 | For scenery, the pitch in degrees: a turn about the x axis, positive turning +y toward +z. For an active prop, x of the direction it faces. |
| rotationY | f32 | For scenery, the yaw in degrees: a turn about the up axis, positive turning +z toward +x, so yaw 0 faces +z and 90 faces +x. For an active prop, y of its facing, which does not turn it. |
| rotationZ | f32 | For scenery, the roll in degrees: a turn about the z axis, positive turning +x toward +y. For an active prop, z of the direction it faces. |
| offsetX | f32 | What is added to where it stands, along one ground axis, in world units. |
| offsetY | f32 | What is added to where it stands, in height, in world units. |
| offsetZ | f32 | What is added to where it stands, along the other ground axis, in world units. |
| side | 4-byte bits | The side the prop belongs to. A server sends 300, the neutral side. |
| side.side | bit 0 to 8 | The prop’s side. |
| side.unused | bit 9 to 31 | Unused; a server writes zero. |
| skillLevel | u8 | Unused; a server writes zero. |
| rank | u8 | How far it is advanced. |
| kind | u8 | What sort of prop it is; a client makes nothing for any other value. It deletes no object first: where one already holds the prop’s id, both stay. Values: 0 active, 1 scenery. |
| name | text, 64 bytes | What this prop is called, so a client can tell one from another. Written out in full and padded with zero bytes to the width above. |
| asset | text, 64 bytes | The name the client loads its art and sound under, written and padded as above. |
Vectors (1)
In 1.0.0.141–1.0.0.146
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.141–1.0.0.143 | 221 |
| 1.0.0.144–1.0.0.146 | 208 |
A client takes the prop’s id from prop, not from the header. A scenery prop is turned by pitch, then yaw, then roll, each about the fixed world axes; none is negated or wrapped. An active prop only turns about the up axis, to face the ground direction its x and z give, and faces +z where both are zero.
| Field | Type | What it is |
|---|---|---|
| prop | u32 | The name the prop answers to, so later messages can name it. |
| node | u8 | Which network node the object belongs to. It is a field of its own, not the leading byte of the name beside it. |
| atX | f32 | Where the prop stands, along one ground axis, in world units. |
| atY | f32 | Where the prop stands, in height, in world units. |
| atZ | f32 | Where the prop stands, along the other ground axis, in world units. |
| rotationX | f32 | For scenery, the pitch in degrees: a turn about the x axis, positive turning +y toward +z. For an active prop, x of the direction it faces. |
| rotationY | f32 | For scenery, the yaw in degrees: a turn about the up axis, positive turning +z toward +x, so yaw 0 faces +z and 90 faces +x. For an active prop, y of its facing, which does not turn it. |
| rotationZ | f32 | For scenery, the roll in degrees: a turn about the z axis, positive turning +x toward +y. For an active prop, z of the direction it faces. |
| offsetX | f32 | What is added to where it stands, along one ground axis, in world units. |
| offsetY | f32 | What is added to where it stands, in height, in world units. |
| offsetZ | f32 | What is added to where it stands, along the other ground axis, in world units. |
| side | 4-byte bits | The side the prop belongs to. A server sends 300, the neutral side. |
| side.side | bit 0 to 8 | The prop’s side. |
| side.unused | bit 9 to 31 | Unused; a server writes zero. |
| skillLevel | u8 | Unused; a server writes zero. |
| rank | u8 | How far it is advanced. |
| kind | u8 | What sort of prop it is; a client makes nothing for any other value. A client first deletes any object holding the prop’s id, whatever the kind. Values: 0 active, 1 scenery. |
| name | text, 64 bytes | What this prop is called, so a client can tell one from another. Written out in full and padded with zero bytes to the width above. |
| asset | text, 64 bytes | The name the client loads its art and sound under, written and padded as above. |
Vectors (2)
In 1.0.0.147–3.1.0.0
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.147–1.0.0.149 | 208 |
| 1.0.0.150–3.1.0.0 | 205 |
A client takes the prop’s id from prop, not from the header. A scenery prop is turned by pitch, then yaw, then roll, each about the fixed world axes; none is negated or wrapped. An active prop only turns about the up axis, to face the ground direction its x and z give, and faces +z where both are zero.
| Field | Type | What it is |
|---|---|---|
| prop | u32 | The name the prop answers to, so later messages can name it. |
| node | u8 | Which network node the object belongs to. It is a field of its own, not the leading byte of the name beside it. |
| atX | f32 | Where the prop stands, along one ground axis, in world units. |
| atY | f32 | Where the prop stands, in height, in world units. |
| atZ | f32 | Where the prop stands, along the other ground axis, in world units. |
| rotationX | f32 | For scenery, the pitch in degrees: a turn about the x axis, positive turning +y toward +z. For an active prop, x of the direction it faces. |
| rotationY | f32 | For scenery, the yaw in degrees: a turn about the up axis, positive turning +z toward +x, so yaw 0 faces +z and 90 faces +x. For an active prop, y of its facing, which does not turn it. |
| rotationZ | f32 | For scenery, the roll in degrees: a turn about the z axis, positive turning +x toward +y. For an active prop, z of the direction it faces. |
| offsetX | f32 | What is added to where it stands, along one ground axis, in world units. |
| offsetY | f32 | What is added to where it stands, in height, in world units. |
| offsetZ | f32 | What is added to where it stands, along the other ground axis, in world units. |
| side | 2-byte bits | The side the prop belongs to. A server sends 300, the neutral side. |
| side.side | bit 0 to 8 | The prop’s side. |
| side.unused | bit 9 to 15 | Unused; a server writes zero. |
| skillLevel | u8 | Unused; a server writes zero. |
| rank | u8 | How far it is advanced. |
| kind | u8 | What sort of prop it is; a client makes nothing for any other value. A client first deletes any object holding the prop’s id, whatever the kind. Values: 0 active, 1 scenery. |
| name | text, 64 bytes | What this prop is called, so a client can tell one from another. Written out in full and padded with zero bytes to the width above. |
| asset | text, 64 bytes | The name the client loads its art and sound under, written and padded as above. |
Vectors (2)
MapPropChanged
What a server sends to change something about a prop already on the map. The kind of change is named inside it, and the fields around the kind keep one layout whatever it is. The header names no object: it carries zero.
In 1.0.0.130–1.0.0.138
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 218 |
| 1.0.0.132–1.0.0.134 | 219 |
| 1.0.0.135 | 221 |
| 1.0.0.136–1.0.0.137 | 219 |
| 1.0.0.138 | 221 |
| Field | Type | What it is |
|---|---|---|
| name | text, 64 bytes | A name: an animation’s, a particle’s or a look’s, by the change below. The name ends at its first zero byte; the bytes after it carry no meaning. |
| first | f32 | For animate, when the animation starts, in seconds of match time. |
| second | f32 | For animate, how long the animation runs, in seconds. |
| prop | u32 | The object changed. |
| value | u32 | A value the change uses: for animate, the animation’s flags; for linkEffect, the particle effect value; for look, the look’s number. |
| change | u8 | What changes. A client does nothing for any other value, nor where prop names no prop it holds. Values: 0 animate, 1 linkEffect, 2 look. |
| option | u8 | For animate, nonzero to remove the prop after the animation; for linkEffect, zero. |
| effect | u8 | For linkEffect, which of the prop’s effect values to drive. |
| point | u8 | For linkEffect, which capture point drives it. |
In 1.0.0.139–1.0.0.140
Command 220 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| name | text, 64 bytes | A name: an animation’s or a particle’s, by the change below. The name ends at its first zero byte; the bytes after it carry no meaning. |
| first | f32 | For animate, when the animation starts, in seconds of match time. |
| second | f32 | For animate, how long the animation runs, in seconds. |
| prop | u32 | The object changed. |
| value | u32 | A value the change uses: for animate, the animation’s flags; for linkEffect, the particle effect value. |
| change | u8 | What changes. A client acts only on 0 and 1, and does nothing for any other value, nor where prop names no prop it holds. Values: 0 animate, 1 linkEffect, 2 look. |
| option | u8 | For linkEffect, zero: a client refuses the change otherwise. It has no effect for animate. |
| effect | u8 | For linkEffect, which of the prop’s effect values to drive. |
| point | u8 | For linkEffect, which capture point drives it. |
Vectors (1)
In 1.0.0.141–3.1.0.0
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.141–1.0.0.143 | 222 |
| 1.0.0.144–1.0.0.149 | 209 |
| 1.0.0.150–3.1.0.0 | 206 |
| Field | Type | What it is |
|---|---|---|
| name | text, 64 bytes | A name: an animation’s, a particle’s or a look’s, by the change below. The name ends at its first zero byte; the bytes after it carry no meaning. |
| first | f32 | For animate, when the animation starts, in seconds of match time. |
| second | f32 | For animate, how long the animation runs, in seconds. |
| prop | u32 | The object changed. |
| value | u32 | A value the change uses: for animate, the animation’s flags; for linkEffect, the particle effect value; for look, the look’s number. |
| change | u8 | What changes. A client does nothing for any other value, nor where prop names no prop it holds. Values: 0 animate, 1 linkEffect, 2 look. |
| option | u8 | For animate, nonzero to remove the prop after the animation; for linkEffect, zero. |
| effect | u8 | For linkEffect, which of the prop’s effect values to drive. |
| point | u8 | For linkEffect, which capture point drives it. |
Vectors (3)
animate-on-1-0-0-143, animate-on-1-0-0-149, animate-on-1-0-0-154
TeamChanged
What a server sends to move a unit to another side. The header names the unit.
In every range of this book
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 224 |
| 1.0.0.132–1.0.0.134 | 225 |
| 1.0.0.135 | 227 |
| 1.0.0.136–1.0.0.137 | 225 |
| 1.0.0.138 | 227 |
| 1.0.0.139–1.0.0.140 | 226 |
| 1.0.0.141–1.0.0.143 | 228 |
| 1.0.0.144–1.0.0.149 | 215 |
| 1.0.0.150–3.1.0.0 | 212 |
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit. |
| side | u32 | Its new side. |
BotDebug
What a server sends describing what a bot is thinking. It changes nothing a client shows. The header names the unit.
In every range of this book
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.143 | 21 |
| 1.0.0.144–3.1.0.0 | 19 |
| Field | Type | What it is |
|---|---|---|
| name | text, 64 bytes | The bot’s name. |
| strategy | text, 64 bytes | Its strategy. |
| behaviour | text, 64 bytes | Its behaviour. |
| task | text, 64 bytes | Its task. |
| state1 | text, 64 bytes | A line of its state. |
| state2 | text, 64 bytes | A line of its state. |
| state3 | text, 64 bytes | A line of its state. |
Vectors (1)
BotTargets
What a server sends naming the units a bot is weighing. It changes nothing a client shows. The header names the unit.
In every range of this book
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 108 |
| 1.0.0.132–1.0.0.137 | 109 |
| 1.0.0.138–1.0.0.143 | 111 |
| 1.0.0.144–1.0.0.149 | 105 |
| 1.0.0.150–3.1.0.0 | 102 |
| Field | Type | What it is |
|---|---|---|
| targets | 5 × u32 | Five units. |
Vectors (5)
one-on-1-0-0-131, one-on-1-0-0-136, one-on-1-0-0-143, one-on-1-0-0-149, one-on-1-0-0-154
BotState
What a server sends naming a bot’s state. It changes nothing a client shows. The header names the unit.
In every range of this book
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 179 |
| 1.0.0.132–1.0.0.134 | 180 |
| 1.0.0.135 | 182 |
| 1.0.0.136–1.0.0.137 | 180 |
| 1.0.0.138 | 182 |
| 1.0.0.139–1.0.0.143 | 181 |
| 1.0.0.144–1.0.0.149 | 170 |
| 1.0.0.150–3.1.0.0 | 167 |
| Field | Type | What it is |
|---|---|---|
| state | i32 | The state. |
TargetableChanged
What a server sends to change whether a unit can be aimed at, and by which sides. The header names the unit.
In 1.0.0.130–1.0.0.142
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.130–1.0.0.131 | 243 |
| 1.0.0.132–1.0.0.134 | 244 |
| 1.0.0.135 | 241 |
| 1.0.0.136–1.0.0.137 | 239 |
| 1.0.0.138 | 241 |
| 1.0.0.139–1.0.0.140 | 240 |
| 1.0.0.141–1.0.0.142 | 242 |
| Field | Type | What it is |
|---|---|---|
| targetable | u8 | Nonzero where the unit can be aimed at. |
| targetableToTeam | u32 | Which sides can aim at it, as a set of bits, kept as it stands. |