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.
CharacterPreload has a client load a character’s art ahead of need.
In 1.0.0.25–1.0.0.60
A client acts on a
CreateChampionor aCreateNeutralwhenever it arrives, beforeCharacterSelectedas after.
In 1.0.0.96
A client drops a
CreateChampionor aCreateNeutralthat arrives before it has loaded the map’s ground grid, which it loads while loading the match.
In 1.0.0.126
A client acts on a
CreateChampionor aCreateNeutralwhenever it arrives. Once it has reconnected, it drops aSpawnFromBarracks,SpawnUnitorCreateNeutralfor an object it already holds.A client builds a prop from the character its
MapPropnames, loading that character from its own files when it has not already, and fails soon after the prop comes near what it draws where it cannot load it. A server MUST name inMapProponly characters the client can load.
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.25–1.0.0.57
Command 6 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.
| 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 and nobody holds it. A client only keeps it; the shown name is name as sent. |
| 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, 40 bytes | What the seat holding it is called. Written out in full and padded with zero bytes to the width above. |
| asset | text, 128 bytes | The champion it is: the name the client loads its art and sound under, written and padded as above. |
In 1.0.0.58–1.0.0.62
Command 6 on events, sent by the server, reliable.
The champion takes the id in champion, not the header’s; a client deletes no object holding that id first. For the client’s own seat, name also becomes its own player’s name.
| 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 and nobody holds it. A client only keeps it; the shown name is name as sent. |
| 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 and this index plus one, facing as the map sets for them. A client works out the head count itself. From 6 up, the base position itself, facing along +X. Movement or sight data replaces it. |
| skin | i32 | Which look it wears. |
| name | text, 40 bytes | What the seat holding it is called. Written out in full and padded with zero bytes to the width above. |
| asset | text, 128 bytes | The champion it is: the name the client loads its art and sound under, written and padded as above. |
Vectors (1)
In 1.0.0.63–1.0.0.104
Command 6 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.
| 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 and nobody holds it; its shown name is then the client’s own bot name for asset, and name 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, 40 bytes | What the seat holding it is called. Written out in full and padded with zero bytes to the width above. |
| asset | text, 128 bytes | The champion it is: the name the client loads its art and sound under, written and padded as above. |
Vectors (2)
In 1.0.0.105–1.0.0.127
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.105–1.0.0.109 | 6 |
| 1.0.0.110–1.0.0.116 | 75 |
| 1.0.0.117–1.0.0.118 | 76 |
| 1.0.0.119–1.0.0.123 | 77 |
| 1.0.0.124–1.0.0.127 | 79 |
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 and nobody holds it; 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, 40 bytes | What the seat holding it is called. Written out in full and padded with zero bytes to the width above. |
| asset | text, 128 bytes | The champion it is: the name the client loads its art and sound under, written and padded as above. |
In 1.0.0.128–1.0.0.129
Command 79 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.
| 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. |
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.110–1.0.0.121
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.110 | 205 |
| 1.0.0.111–1.0.0.116 | 206 |
| 1.0.0.117–1.0.0.118 | 207 |
| 1.0.0.119–1.0.0.121 | 208 |
| 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. |
| side | u32 | Its side: 100, 200 or 300, taken whole. |
| 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-110, one-on-1-0-0-116, one-on-1-0-0-117, one-on-1-0-0-121
In 1.0.0.122–1.0.0.123
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.122 | 208 |
| 1.0.0.123 | 209 |
| 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. |
| flags | 1-byte bits | How the champion is loaded. |
| flags.nameIsCharacter | bit 0 | Set to load the champion under name rather than character. |
| flags.unused | bit 1 to 7 | 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.124–1.0.0.125
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.124 | 214 |
| 1.0.0.125 | 215 |
| 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.126–1.0.0.129
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)
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.25–1.0.0.73
Command 49 on events, sent by the server, reliable.
The header names the barracks, and a client handles the message only where it holds that barracks; the new unit’s id is in 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, from 0 to 3; any other value has no defined effect. |
| 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.74–1.0.0.81
Command 50 on events, sent by the server, reliable.
| 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, from 0 to 3; a client spawns nothing for any other value. |
| damageBonus | i16 | What is added to the damage it deals. |
| healthBonus | i16 | What is added to the health it holds. |
Vectors (2)
In 1.0.0.82–1.0.0.96
Command 53 on events, sent by the server, reliable.
| 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, from 0 to 3; any other value has no defined effect. |
| 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.97–1.0.0.125
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.97–1.0.0.102 | 54 |
| 1.0.0.103–1.0.0.106 | 55 |
| 1.0.0.107–1.0.0.109 | 56 |
| 1.0.0.110–1.0.0.125 | 3 |
| 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, from 0 to 3; a client spawns nothing for any other value. |
| damageBonus | i16 | What is added to the damage it deals. |
| healthBonus | i16 | What is added to the health it holds. |
Vectors (4)
one-on-1-0-0-99, one-on-1-0-0-106, one-on-1-0-0-109, one-on-1-0-0-110
In 1.0.0.126–1.0.0.127
Command 3 on events, sent by the server, reliable.
The header names the barracks the unit comes out of, and a client ignores the message under any other header; the new unit’s id is unit. A client deletes no object first. While resynchronising, it drops a message naming an id it holds, or with kind above 4.
| 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, from 0 to 3; a client spawns nothing for any other value. |
| 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.128–1.0.0.129
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. |
SpawnUnit
What a server sends to put a minion-like unit on the field, such as a ward.
In 1.0.0.25–1.0.0.57
Command 87 on events, sent by the server, reliable.
A client gives the new unit its id and node, deleting nothing first. Where clone names a unit it holds, a client only links the new unit to it as a clone and copies nothing of it; zero or an unknown id leaves no link. 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. |
| 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. |
| clone | u32 | The unit the new unit is linked to as a clone, 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.unused | bit 1 to 7 | Unused; a server writes zero. |
In 1.0.0.58–1.0.0.62
Command 87 on events, sent by the server, reliable.
A client gives the new unit its id and node, deleting nothing first, and fails where it cannot make the unit. Where clone names a unit it holds, a client links the new unit to it as a clone and copies its current state: health, resource, their maxima and its other stats; zero or an unknown id leaves no link. The header names the unit that put it there; a client reads nothing of it.
| 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. |
| 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. |
| clone | u32 | The unit the new unit is linked to as a clone and 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.unused | bit 1 to 7 | Unused; a server writes zero. |
Vectors (1)
In 1.0.0.63–1.0.0.86
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.63–1.0.0.73 | 93 |
| 1.0.0.74–1.0.0.81 | 94 |
| 1.0.0.82–1.0.0.86 | 98 |
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. |
| 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. |
| 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.unused | bit 1 to 7 | Unused; a server writes zero. |
Vectors (4)
one-on-1-0-0-72, one-on-1-0-0-75, one-on-1-0-0-81, one-on-1-0-0-86
In 1.0.0.87–1.0.0.96
Command 98 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 the unit that put it there; a client reads nothing of it.
| 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. |
| 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. |
| 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.unused | bit 1 to 7 | Unused; a server writes zero. |
Vectors (1)
In 1.0.0.97–1.0.0.119
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.97–1.0.0.102 | 99 |
| 1.0.0.103–1.0.0.106 | 100 |
| 1.0.0.107–1.0.0.108 | 101 |
| 1.0.0.109 | 102 |
| 1.0.0.110 | 121 |
| 1.0.0.111–1.0.0.116 | 122 |
| 1.0.0.117–1.0.0.118 | 123 |
| 1.0.0.119 | 124 |
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. |
| 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. |
| 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.unused | bit 1 to 7 | Unused; a server writes zero. |
In 1.0.0.120–1.0.0.121
Command 124 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. |
| 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. |
| 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.unused | bit 2 to 7 | Unused; a server writes zero. |
Vectors (1)
In 1.0.0.122–1.0.0.123
Command 124 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.nameIsAsset | bit 2 | Set to load the unit’s art under name rather than asset. |
| flags.unused | bit 3 to 7 | Unused; a server writes zero. |
| 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.124
Command 128 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.bot | bit 2 | Set where it is driven by the client’s own decisions. |
| flags.unused | bit 3 to 7 | Unused; a server writes zero. |
| 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.125–1.0.0.128
Command 128 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. While resynchronising, it drops a SpawnUnit naming an id it holds, or with an empty asset. It does nothing more where it cannot make the unit. clone, where nonzero, is copied, state and inventory.
| 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. |
| visibilitySize | f32 | How large it counts as for sight, in world units. |
| 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.unused | bit 3 to 7 | Unused; a server writes zero. |
| 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.129
Command 128 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.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. |
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.25–1.0.0.57
Command 7 on events, sent by the server, reliable.
A client leaves the monster facing as it was made. A client adds damageBonus to the damage the unit deals twice over.
| 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. |
| 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. |
| 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, three times over: the unit’s maximum and current health both end at its base health plus three times this, and not below 0. |
| 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 no camp of that number exists yet, a client makes one at the unit’s own position, not at campAt, and adds the unit to it. |
In 1.0.0.58–1.0.0.62
Command 7 on events, sent by the server, reliable.
A client leaves the monster facing as it was made. A client adds damageBonus to the damage the unit deals twice over.
| 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. |
| 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. |
| 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. A client makes the unit with health and maximum health of its base health plus this, then adds this to the maximum twice more, so the maximum ends at base health plus three times this, and not below 0; it lowers current health only where it is above that maximum. |
| 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 no camp of that number exists yet, a client makes one at the unit’s own position, not at campAt, and adds the unit to it. |
Vectors (1)
In 1.0.0.63–1.0.0.102
Command 7 on events, sent by the server, reliable.
A client leaves the monster facing as it was made, and drops the message while its map’s navigation data is unloaded. A client adds damageBonus to the damage the unit deals, and healthBonus to its maximum health, twice over, keeping that maximum at zero or above, and sets its health to the new maximum.
| 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. |
| 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. |
| 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; where no camp has that number, it makes one at the unit’s own position and adds the unit to it. |
Vectors (2)
In 1.0.0.103
Command 7 on events, sent by the server, reliable.
A client leaves the monster facing as it was made, and 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. |
| 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. |
| 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. |
| extra | u16 | Kept with the camp; a client does nothing more with it. A server writes zero. |
Vectors (1)
In 1.0.0.104–1.0.0.123
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.104–1.0.0.109 | 7 |
| 1.0.0.110–1.0.0.116 | 97 |
| 1.0.0.117–1.0.0.118 | 98 |
| 1.0.0.119–1.0.0.123 | 99 |
The monster faces from where it stands toward the facing point, or along +Z where the two are the same, and 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. |
| 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. |
| extra | u16 | Kept with the camp; a client does nothing more with it. A server writes zero. |
In 1.0.0.124–1.0.0.127
Command 102 on events, sent by the server, reliable.
The body ends after camp. The monster faces from where it stands toward the facing point, or along +Z where the two are the same, and 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 | A name the client gives the camp it sets up for the unit where it holds no camp of that number yet; it has no effect where the camp already exists. What the client shows by it is not recorded. |
| 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 (1)
In 1.0.0.128–1.0.0.129
Command 102 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.
| 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. |
SpawnPet
What a server sends to put a pet on the field.
In 1.0.0.25–1.0.0.57
Command 32 on events, sent by the server, reliable.
The header names the owner, and every client that holds that unit handles the message. A client kills the owner’s earlier pet if that lives, then makes the pet under pet and node with the owner’s side, as the owner’s pet. It deletes no object first; where one already holds pet, both answer to it.
| Field | Type | What it is |
|---|---|---|
| pet | u32 | The id the pet answers to, which a client gives it together with node. The header names the owner. |
| 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. |
| 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, 32 bytes | Its name, padded with zero bytes. |
| asset | text, 32 bytes | The name the client loads its art under, padded with zero bytes. |
| 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. |
| clone | u32 | The unit it copies, or zero. For a minion-like pet, a client only links the pet to that unit, where it holds it, and copies nothing of it. |
In 1.0.0.58–1.0.0.74
Command 32 on events, sent by the server, reliable.
The header names the owner, and every client that holds that unit handles the message. A client kills the owner’s earlier pet if that lives, then makes the pet under pet and node with the owner’s side, as the owner’s pet. It deletes no object first; where one already holds pet, both answer to it.
| Field | Type | What it is |
|---|---|---|
| pet | u32 | The id the pet answers to, which a client gives it together with node. The header names the owner. |
| 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. |
| 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, 32 bytes | Its name, padded with zero bytes. |
| asset | text, 32 bytes | The name the client loads its art under, padded with zero bytes. |
| 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. |
| clone | u32 | The unit it copies, or zero. Where a client holds that unit, it links the pet to it and copies its current state: health, resource, their maxima and its other stats; otherwise nothing is linked or copied. |
Vectors (1)
In 1.0.0.75–1.0.0.82
Command 32 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 with the owner’s side and sight, as the owner’s pet. It deletes no object first; where one already holds pet, both answer to it. The header names the pet. A server sends it to clients watching a match.
| Field | Type | What it is |
|---|---|---|
| pet | u32 | The id the pet answers to, which a client gives it together with node. The header names the owner. |
| 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. |
| 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, 32 bytes | Its name, padded with zero bytes. |
| asset | text, 32 bytes | The name the client loads its art under, padded with zero bytes. |
| 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. |
| 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.unused | bit 1 to 7 | Unused; a server writes zero. |
Vectors (2)
In 1.0.0.83–1.0.0.86
Command 32 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 with the owner’s side and sight, as the owner’s pet. It deletes no object first; where one already holds pet, both answer to it. The header names the pet. A server sends it to clients watching a match.
| Field | Type | What it is |
|---|---|---|
| pet | u32 | The id the pet answers to, which a client gives it together with node. The header names the owner. |
| 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. |
| 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, 32 bytes | Its name, padded with zero bytes. |
| asset | text, 32 bytes | The name the client loads its art under, padded with zero bytes. |
| 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. |
| 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.unused | bit 1 to 7 | Unused; a server writes zero. |
| script | text, 32 bytes | The script that drives it, padded with zero bytes. |
Vectors (1)
In 1.0.0.87–1.0.0.107
Command 32 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 with the owner’s side and sight, as the owner’s pet. It deletes no object first; where one already holds pet, both answer to it.
| Field | Type | What it is |
|---|---|---|
| pet | u32 | The id the pet answers to, which a client gives it together with node. The header names the owner. |
| 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. |
| 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, 32 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. |
| 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.unused | bit 1 to 7 | Unused; a server writes zero. |
| script | text, 32 bytes | The script that drives it, padded with zero bytes. |
Vectors (1)
In 1.0.0.108–1.0.0.124
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.108–1.0.0.109 | 32 |
| 1.0.0.110–1.0.0.116 | 57 |
| 1.0.0.117–1.0.0.118 | 58 |
| 1.0.0.119–1.0.0.123 | 59 |
| 1.0.0.124 | 60 |
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 with the owner’s side and sight, as the owner’s pet. It deletes no object first; where one already holds pet, both answer to it. The header names the pet. A server sends it to clients watching a match.
| Field | Type | What it is |
|---|---|---|
| pet | u32 | The id the pet answers to, which a client gives it together with node. The header names the owner. |
| 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. |
| 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, 32 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. |
| 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; a client acts on it only where the owner is its own champion. |
| flags.unused | bit 2 to 7 | Unused; a server writes zero. |
| script | text, 32 bytes | The script that drives it, padded with zero bytes. |
Vectors (5)
one-on-1-0-0-109, one-on-1-0-0-116, one-on-1-0-0-117, one-on-1-0-0-123, one-on-1-0-0-124
In 1.0.0.125–1.0.0.127
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 with the owner’s side and sight, as the owner’s pet. It deletes no object first; where one already holds pet, both answer to it.
| Field | Type | What it is |
|---|---|---|
| pet | u32 | The id the pet answers to, which a client gives it together with node. The header names the owner. |
| 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. |
| 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, 32 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. |
| 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; a client acts on it only where the owner is its own champion. |
| 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 | Not zero, where the owner is a champion, to class the pet with its owner for display. What that changes on screen is not recorded. |
Vectors (1)
In 1.0.0.128
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 with the owner’s side and sight, as the owner’s pet. It deletes no object first; where one already holds pet, both answer to it. 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 node is its own. |
| 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, 32 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 node is its own. |
| 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.129
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. |
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.25–1.0.0.109
Command 8 on events, sent by the server, reliable.
A client matches name against the map’s turrets, ignoring case. With no match it does nothing; a matched turret takes the id and node, and one missing or dead is not rebuilt.
| 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 (2)
In 1.0.0.110–1.0.0.128
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.110 | 156 |
| 1.0.0.111–1.0.0.116 | 157 |
| 1.0.0.117–1.0.0.118 | 158 |
| 1.0.0.119–1.0.0.123 | 159 |
| 1.0.0.124 | 163 |
| 1.0.0.125 | 164 |
| 1.0.0.126–1.0.0.128 | 165 |
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. |
In 1.0.0.129
Command 165 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.
| 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. |
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.110–1.0.0.121
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.110 | 206 |
| 1.0.0.111–1.0.0.116 | 207 |
| 1.0.0.117–1.0.0.118 | 208 |
| 1.0.0.119–1.0.0.121 | 209 |
A client takes the prop’s id from prop, not from the header, and makes every prop a level prop.
| 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. |
| 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 of the character the client loads the prop’s art and sound under, written and padded as above. |
| 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. |
| unused | u8 | Unused; a client reads nothing here. |
| skillLevel | u8 | The prop’s skill level. |
Vectors (4)
one-on-1-0-0-110, one-on-1-0-0-116, one-on-1-0-0-117, one-on-1-0-0-121
In 1.0.0.122–1.0.0.123
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.122 | 209 |
| 1.0.0.123 | 210 |
A client takes the prop’s id from prop, not from the header, and makes every prop a level prop.
| 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. |
| 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. |
| unused | u8 | Unused; a client reads nothing here. |
| skillLevel | u8 | The prop’s skill level. |
| flags | 1-byte bits | How the prop is loaded. |
| flags.nameIsAsset | bit 0 | Set to load the prop’s art under name rather than asset. |
| flags.unused | bit 1 to 7 | Unused; a server writes zero. |
| 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 of the character the client loads the prop’s art and sound under, written and padded as above. |
Vectors (2)
In 1.0.0.124–1.0.0.125
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.124 | 215 |
| 1.0.0.125 | 216 |
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 | A vector’s part along one ground axis, used for either kind. What this carries is not recorded. |
| 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 | A vector’s part along the other ground axis, used for either kind. What this carries is not recorded. |
| offsetX | f32 | A second vector’s part along one ground axis, used only where kind is 1. What this carries is not recorded. |
| offsetY | f32 | A second vector’s part in height, used only where kind is 1. What this carries is not recorded. |
| offsetZ | f32 | A second vector’s part along the other ground axis, used only where kind is 1. What this carries is not recorded. |
| 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 of the character the client loads the prop’s art and sound under, written and padded as above. |
Vectors (2)
In 1.0.0.126–1.0.0.127
Command 217 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 | A vector’s part along one ground axis, used for either kind. What this carries is not recorded. |
| 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 | A vector’s part along the other ground axis, used for either kind. What this carries is not recorded. |
| offsetX | f32 | A second vector’s part along one ground axis, used only where kind is 1. What this carries is not recorded. |
| offsetY | f32 | A second vector’s part in height, used only where kind is 1. What this carries is not recorded. |
| offsetZ | f32 | A second vector’s part along the other ground axis, used only where kind is 1. What this carries is not recorded. |
| 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 deletes no object first: where one already holds the prop’s id, both answer to it. 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 of the character the client loads the prop’s art and sound under, written and padded as above. |
Vectors (1)
In 1.0.0.128–1.0.0.129
Command 217 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. 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. |
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.110–1.0.0.123
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.110 | 207 |
| 1.0.0.111–1.0.0.116 | 208 |
| 1.0.0.117–1.0.0.118 | 209 |
| 1.0.0.119–1.0.0.122 | 210 |
| 1.0.0.123 | 211 |
A client ignores the message for a prop it does not know. Whatever the change, it then reads the same bytes again as grouped effects: where the ninth byte of name is not zero, it adds that many effects from the bytes after it, so a name of nine or more characters adds effects besides.
| Field | Type | What it is |
|---|---|---|
| change | u8 | What changes. A client ignores any other value. Values: 0 apply, 1 linkEffect. |
| prop | u32 | The object changed. |
| name | text, 64 bytes | What is applied, for apply; written and padded with zero bytes. |
| option | u8 | 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.124–1.0.0.125
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.124 | 216 |
| 1.0.0.125 | 217 |
| Field | Type | What it is |
|---|---|---|
| name | text, 64 bytes | The name of the animation, for animate; a client reads it for no other change. The name ends at its first zero byte, and 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 (2)
In 1.0.0.126–1.0.0.127
Command 218 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| name | text, 64 bytes | The name of the animation, for animate; a client reads it for no other change. The name ends at its first zero byte, and 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 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 reads it for no other change. |
| 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.128–1.0.0.129
Command 218 on events, sent by the server, reliable.
| 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. |
TeamChanged
What a server sends to move a unit to another side. The header names the unit.
In 1.0.0.110–1.0.0.127
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 1.0.0.110 | 212 |
| 1.0.0.111–1.0.0.116 | 213 |
| 1.0.0.117–1.0.0.118 | 214 |
| 1.0.0.119–1.0.0.122 | 215 |
| 1.0.0.123 | 216 |
| 1.0.0.124 | 222 |
| 1.0.0.125 | 223 |
| 1.0.0.126–1.0.0.127 | 224 |
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit. A client ignores the message where it does not hold it. |
| side | u32 | Its new side. |
In 1.0.0.128–1.0.0.129
Command 224 on events, sent by the server, reliable.
| 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.25–1.0.0.62 | 105 |
| 1.0.0.63–1.0.0.73 | 108 |
| 1.0.0.74–1.0.0.81 | 109 |
| 1.0.0.82–1.0.0.96 | 113 |
| 1.0.0.97–1.0.0.102 | 114 |
| 1.0.0.103–1.0.0.106 | 116 |
| 1.0.0.107–1.0.0.108 | 117 |
| 1.0.0.109 | 118 |
| 1.0.0.110–1.0.0.129 | 21 |
| 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. |
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.25–1.0.0.62 | 106 |
| 1.0.0.63–1.0.0.73 | 109 |
| 1.0.0.74–1.0.0.81 | 110 |
| 1.0.0.82–1.0.0.96 | 114 |
| 1.0.0.97–1.0.0.102 | 115 |
| 1.0.0.103–1.0.0.106 | 117 |
| 1.0.0.107–1.0.0.108 | 118 |
| 1.0.0.109 | 119 |
| 1.0.0.110 | 102 |
| 1.0.0.111–1.0.0.116 | 103 |
| 1.0.0.117–1.0.0.118 | 104 |
| 1.0.0.119–1.0.0.123 | 105 |
| 1.0.0.124–1.0.0.129 | 108 |
| Field | Type | What it is |
|---|---|---|
| targets | 5 × u32 | Five units. |
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.25–1.0.0.62 | 107 |
| 1.0.0.63–1.0.0.73 | 110 |
| 1.0.0.74–1.0.0.81 | 111 |
| 1.0.0.82–1.0.0.96 | 115 |
| 1.0.0.97–1.0.0.102 | 116 |
| 1.0.0.103–1.0.0.106 | 118 |
| 1.0.0.107–1.0.0.108 | 119 |
| 1.0.0.109 | 120 |
| 1.0.0.110 | 170 |
| 1.0.0.111–1.0.0.116 | 171 |
| 1.0.0.117–1.0.0.118 | 172 |
| 1.0.0.119–1.0.0.123 | 173 |
| 1.0.0.124 | 177 |
| 1.0.0.125 | 178 |
| 1.0.0.126–1.0.0.129 | 179 |
| 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.129
Command 243 on events, sent by the server, reliable.
| 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. |