Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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 same CreateChampion naming no client, or SpawnBot;
  • 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 and MarkerMoved moves;
  • 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 CreateChampion or a CreateNeutral whenever it arrives, before CharacterSelected as after.

In 1.0.0.96

A client drops a CreateChampion or a CreateNeutral that 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 CreateChampion or a CreateNeutral whenever it arrives. Once it has reconnected, it drops a SpawnFromBarracks, SpawnUnit or CreateNeutral for an object it already holds.

A client builds a prop from the character its MapProp names, 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 in MapProp only 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.

Definition.

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.

FieldTypeWhat it is
championu32The name the champion answers to, so later messages can name it.
clientIdu32The 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.
nodeu8Which network node the object belongs to, in a field of its own.
skillLevelu8It has no effect.
sideu8Nonzero for side 100, zero for side 200.
botu8Nonzero where a bot plays the seat and nobody holds it. A client only keeps it; the shown name is name as sent.
spawnIndexu8Where 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.
skini32Which look it wears.
nametext, 40 bytesWhat the seat holding it is called. Written out in full and padded with zero bytes to the width above.
assettext, 128 bytesThe 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.

FieldTypeWhat it is
championu32The name the champion answers to, so later messages can name it.
clientIdu32The 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.
nodeu8Which network node the object belongs to, in a field of its own.
skillLevelu8It has no effect.
sideu8Nonzero for side 100, zero for side 200.
botu8Nonzero where a bot plays the seat and nobody holds it. A client only keeps it; the shown name is name as sent.
spawnIndexu8Where 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.
skini32Which look it wears.
nametext, 40 bytesWhat the seat holding it is called. Written out in full and padded with zero bytes to the width above.
assettext, 128 bytesThe champion it is: the name the client loads its art and sound under, written and padded as above.
Vectors (1)

one-on-1-0-0-58

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.

FieldTypeWhat it is
championu32The name the champion answers to, so later messages can name it.
clientIdu32The 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.
nodeu8Which network node the object belongs to, in a field of its own.
skillLevelu8It has no effect.
sideu8Nonzero for side 100, zero for side 200.
botu8Nonzero 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.
spawnIndexu8Where 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.
skini32Which look it wears.
nametext, 40 bytesWhat the seat holding it is called. Written out in full and padded with zero bytes to the width above.
assettext, 128 bytesThe champion it is: the name the client loads its art and sound under, written and padded as above.
Vectors (2)

one-on-1-0-0-75, one-on-1-0-0-104

In 1.0.0.105–1.0.0.127

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.105–1.0.0.1096
1.0.0.110–1.0.0.11675
1.0.0.117–1.0.0.11876
1.0.0.119–1.0.0.12377
1.0.0.124–1.0.0.12779

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.

FieldTypeWhat it is
championu32The name the champion answers to, so later messages can name it.
clientIdu32The 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.
nodeu8Which network node the object belongs to, in a field of its own.
skillLevelu8It has no effect.
sideu8Nonzero for side 100, zero for side 200.
botu8Nonzero 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.
ranku8It has no effect.
spawnIndexu8Where 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.
skini32Which look it wears.
nametext, 40 bytesWhat the seat holding it is called. Written out in full and padded with zero bytes to the width above.
assettext, 128 bytesThe champion it is: the name the client loads its art and sound under, written and padded as above.
Vectors (6)

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-126, one-on-1-0-0-127

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.

FieldTypeWhat it is
championu32The name the champion answers to, so later messages can name it.
clientIdu32The 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.
nodeu8Which network node the object belongs to, in a field of its own.
skillLevelu8It has no effect.
sideu8Nonzero for side 100, zero for side 200.
botu8Nonzero where a bot plays the seat; its shown name is then the client’s own bot name for asset, and name has no effect.
ranku8It has no effect.
spawnIndexu8Where 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.
skini32Which look it wears.
nametext, 128 bytesWhat the seat holding it is called. Written out in full and padded with zero bytes to the width above.
assettext, 40 bytesThe 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.

Definition.

In 1.0.0.110–1.0.0.121

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.110205
1.0.0.111–1.0.0.116206
1.0.0.117–1.0.0.118207
1.0.0.119–1.0.0.121208
FieldTypeWhat it is
unitu32The id the bot’s champion takes.
nodeu8The network node it belongs to.
xf32Where it appears, in world units.
yf32Its height, in world units.
zf32Where it appears, in world units.
ranku8The bot’s rank.
sideu32Its side: 100, 200 or 300, taken whole.
skini32Which skin.
nametext, 64 bytesThe name shown for it. The text ends at its first zero byte, which falls within the field.
charactertext, 64 bytesThe 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:

BuildsCommand
1.0.0.122208
1.0.0.123209
FieldTypeWhat it is
unitu32The id the bot’s champion takes.
nodeu8The network node it belongs to.
xf32Where it appears, in world units.
yf32Its height, in world units.
zf32Where it appears, in world units.
ranku8The bot’s rank.
sides4-byte bitsIts side.
sides.sidebit 0 to 8Its side: 100, 200 or 300.
sides.unusedbit 9 to 31Unused; a server writes zero.
flags1-byte bitsHow the champion is loaded.
flags.nameIsCharacterbit 0Set to load the champion under name rather than character.
flags.unusedbit 1 to 7Unused; a server writes zero.
skini32Which skin.
nametext, 64 bytesThe name shown for it. The text ends at its first zero byte, which falls within the field.
charactertext, 64 bytesThe champion’s character name, which is also its unique name.
Vectors (2)

one-on-1-0-0-122, one-on-1-0-0-123

In 1.0.0.124–1.0.0.125

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.124214
1.0.0.125215
FieldTypeWhat it is
unitu32The id the bot’s champion takes.
nodeu8The network node it belongs to.
xf32Where it appears, in world units.
yf32Its height, in world units.
zf32Where it appears, in world units.
ranku8The bot’s rank.
sides4-byte bitsIts side.
sides.sidebit 0 to 8Its side: 100, 200 or 300.
sides.unusedbit 9 to 31Unused; a server writes zero.
skini32Which skin.
nametext, 64 bytesThe name shown for it. The text ends at its first zero byte, which falls within the field.
charactertext, 64 bytesThe champion’s character name, which is also its unique name.
Vectors (2)

one-on-1-0-0-124, one-on-1-0-0-125

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.

FieldTypeWhat it is
unitu32The id the bot’s champion takes.
nodeu8The network node it belongs to.
xf32Where it appears, in world units.
yf32Its height, in world units.
zf32Where it appears, in world units.
ranku8The bot’s rank.
sides4-byte bitsIts side.
sides.sidebit 0 to 8Its side: 100, 200 or 300.
sides.unusedbit 9 to 31Unused; a server writes zero.
skini32Which skin.
nametext, 64 bytesThe name shown for it. The text ends at its first zero byte, which falls within the field.
charactertext, 64 bytesThe champion’s character name, which is also its unique name.
Vectors (1)

a-bot-on-1-0-0-126

SpawnFromBarracks

What a server sends to put a unit on the field from the place its side sends them out of.

Definition.

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.

FieldTypeWhat it is
unitu32The name the unit answers to, so later messages can name it.
nodeu8Which network node the unit belongs to, in a field of its own rather than as part of the name that follows.
waveu8Which run of units it belongs to.
kindu8What sort of unit it is, from 0 to 3; any other value has no defined effect.
damageBonusi16What is added to the damage it deals.
healthBonusi16What is added to the health it holds.
Vectors (1)

one-on-1-0-0-72

In 1.0.0.74–1.0.0.81

Command 50 on events, sent by the server, reliable.

FieldTypeWhat it is
unitu32The name the unit answers to, so later messages can name it.
nodeu8Which network node the unit belongs to, in a field of its own rather than as part of the name that follows.
waveu8Which run of units it belongs to.
kindu8What sort of unit it is, from 0 to 3; a client spawns nothing for any other value.
damageBonusi16What is added to the damage it deals.
healthBonusi16What is added to the health it holds.
Vectors (2)

one-on-1-0-0-75, one-on-1-0-0-81

In 1.0.0.82–1.0.0.96

Command 53 on events, sent by the server, reliable.

FieldTypeWhat it is
unitu32The name the unit answers to, so later messages can name it.
nodeu8Which network node the unit belongs to, in a field of its own rather than as part of the name that follows.
waveu8Which run of units it belongs to.
kindu8What sort of unit it is, from 0 to 3; any other value has no defined effect.
damageBonusi16What is added to the damage it deals.
healthBonusi16What is added to the health it holds.
Vectors (1)

one-on-1-0-0-96

In 1.0.0.97–1.0.0.125

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.97–1.0.0.10254
1.0.0.103–1.0.0.10655
1.0.0.107–1.0.0.10956
1.0.0.110–1.0.0.1253
FieldTypeWhat it is
unitu32The name the unit answers to, so later messages can name it.
nodeu8Which network node the unit belongs to, in a field of its own rather than as part of the name that follows.
waveu8Which run of units it belongs to.
kindu8What sort of unit it is, from 0 to 3; a client spawns nothing for any other value.
damageBonusi16What is added to the damage it deals.
healthBonusi16What 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.

FieldTypeWhat it is
unitu32The name the unit answers to, so later messages can name it.
nodeu8Which network node the unit belongs to, in a field of its own rather than as part of the name that follows.
waveu8Which run of units it belongs to.
kindu8What sort of unit it is, from 0 to 3; a client spawns nothing for any other value.
damageBonusi16What is added to the damage it deals.
healthBonusi16What is added to the health it holds.
Vectors (1)

a-minion-on-1-0-0-126

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.

FieldTypeWhat it is
unitu32The name the unit answers to, so later messages can name it.
nodeu8Which network node the unit belongs to, in a field of its own rather than as part of the name that follows.
waveu8Which run of units it belongs to.
kindu8What sort of unit it is.
damageBonusi16What is added to the damage it deals.
healthBonusi16What 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.

Definition.

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.

FieldTypeWhat it is
unitu32The name the new unit answers to.
nodeu8Which network node the unit belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32Where it stands, in height, in world units.
atZf32Where it stands, along the other ground axis, in world units.
nametext, 64 bytesIts name, padded with zero bytes.
assettext, 64 bytesThe name the client loads its art under, padded with zero bytes.
cloneu32The unit the new unit is linked to as a clone, or zero.
team4-byte bits
team.teambit 0 to 8Which side, as a team number.
team.unusedbit 9 to 31Unused; a server writes zero.
flags1-byte bits
flags.ignoreCollisionbit 0Set where it does not block the way.
flags.unusedbit 1 to 7Unused; 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.

FieldTypeWhat it is
unitu32The name the new unit answers to.
nodeu8Which network node the unit belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32Where it stands, in height, in world units.
atZf32Where it stands, along the other ground axis, in world units.
nametext, 64 bytesIts name, padded with zero bytes.
assettext, 64 bytesThe name the client loads its art under, padded with zero bytes.
cloneu32The unit the new unit is linked to as a clone and copies, or zero.
team4-byte bits
team.teambit 0 to 8Which side, as a team number.
team.unusedbit 9 to 31Unused; a server writes zero.
flags1-byte bits
flags.ignoreCollisionbit 0Set where it does not block the way.
flags.unusedbit 1 to 7Unused; a server writes zero.
Vectors (1)

one-on-1-0-0-61

In 1.0.0.63–1.0.0.86

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.63–1.0.0.7393
1.0.0.74–1.0.0.8194
1.0.0.82–1.0.0.8698

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.

FieldTypeWhat it is
unitu32The name the new unit answers to.
nodeu8Which network node the unit belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32Where it stands, in height, in world units.
atZf32Where it stands, along the other ground axis, in world units.
nametext, 64 bytesIts name, padded with zero bytes.
assettext, 64 bytesThe name the client loads its art under, padded with zero bytes.
cloneu32The unit it copies, or zero.
team4-byte bits
team.teambit 0 to 8Which side, as a team number.
team.unusedbit 9 to 31Unused; a server writes zero.
flags1-byte bits
flags.ignoreCollisionbit 0Set where it does not block the way.
flags.unusedbit 1 to 7Unused; 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.

FieldTypeWhat it is
unitu32The name the new unit answers to.
nodeu8Which network node the unit belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32Where it stands, in height, in world units.
atZf32Where it stands, along the other ground axis, in world units.
nametext, 64 bytesIts name, padded with zero bytes.
assettext, 64 bytesThe name the client loads its art under, padded with zero bytes.
skini32Which look it wears.
cloneu32The unit it copies, or zero.
team4-byte bits
team.teambit 0 to 8Which side, as a team number.
team.unusedbit 9 to 31Unused; a server writes zero.
flags1-byte bits
flags.ignoreCollisionbit 0Set where it does not block the way.
flags.unusedbit 1 to 7Unused; a server writes zero.
Vectors (1)

one-on-1-0-0-96

In 1.0.0.97–1.0.0.119

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.97–1.0.0.10299
1.0.0.103–1.0.0.106100
1.0.0.107–1.0.0.108101
1.0.0.109102
1.0.0.110121
1.0.0.111–1.0.0.116122
1.0.0.117–1.0.0.118123
1.0.0.119124

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.

FieldTypeWhat it is
unitu32The name the new unit answers to.
nodeu8Which network node the unit belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32Where it stands, in height, in world units.
atZf32Where it stands, along the other ground axis, in world units.
nametext, 64 bytesIts name, padded with zero bytes.
assettext, 64 bytesThe name the client loads its art under, padded with zero bytes.
skini32Which look it wears.
cloneu32The unit it copies, or zero.
team4-byte bits
team.teambit 0 to 8Which side, as a team number.
team.unusedbit 9 to 31Unused; a server writes zero.
flags1-byte bits
flags.ignoreCollisionbit 0Set where it does not block the way.
flags.unusedbit 1 to 7Unused; a server writes zero.
Vectors (8)

one-on-1-0-0-99, one-on-1-0-0-106, one-on-1-0-0-108, one-on-1-0-0-109, one-on-1-0-0-110, one-on-1-0-0-116, one-on-1-0-0-117, one-on-1-0-0-119

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.

FieldTypeWhat it is
unitu32The name the new unit answers to.
nodeu8Which network node the unit belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32Where it stands, in height, in world units.
atZf32Where it stands, along the other ground axis, in world units.
nametext, 64 bytesIts name, padded with zero bytes.
assettext, 64 bytesThe name the client loads its art under, padded with zero bytes.
skini32Which look it wears.
cloneu32The unit it copies, or zero.
team4-byte bits
team.teambit 0 to 8Which side, as a team number.
team.unusedbit 9 to 31Unused; a server writes zero.
flags1-byte bits
flags.ignoreCollisionbit 0Set where it does not block the way.
flags.wardbit 1Set where it is a ward.
flags.unusedbit 2 to 7Unused; a server writes zero.
Vectors (1)

one-on-1-0-0-121

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.

FieldTypeWhat it is
unitu32The name the new unit answers to.
nodeu8Which network node the unit belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32Where it stands, in height, in world units.
atZf32Where it stands, along the other ground axis, in world units.
skini32Which look it wears.
cloneu32The unit it copies, or zero.
team4-byte bits
team.teambit 0 to 8Which side, as a team number.
team.unusedbit 9 to 31Unused; a server writes zero.
flags1-byte bits
flags.ignoreCollisionbit 0Set where it does not block the way.
flags.wardbit 1Set where it is a ward.
flags.nameIsAssetbit 2Set to load the unit’s art under name rather than asset.
flags.unusedbit 3 to 7Unused; a server writes zero.
nametext, 64 bytesIts name, padded with zero bytes.
assettext, 64 bytesThe name the client loads its art under, padded with zero bytes.
Vectors (1)

one-on-1-0-0-123

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.

FieldTypeWhat it is
unitu32The name the new unit answers to.
nodeu8Which network node the unit belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32Where it stands, in height, in world units.
atZf32Where it stands, along the other ground axis, in world units.
skini32Which look it wears.
cloneu32The unit it copies, or zero.
team4-byte bits
team.teambit 0 to 8Which side, as a team number.
team.unusedbit 9 to 31Unused; a server writes zero.
flags1-byte bits
flags.ignoreCollisionbit 0Set where it does not block the way.
flags.wardbit 1Set where it is a ward.
flags.botbit 2Set where it is driven by the client’s own decisions.
flags.unusedbit 3 to 7Unused; a server writes zero.
nametext, 64 bytesIts name, padded with zero bytes.
assettext, 64 bytesThe name the client loads its art under, padded with zero bytes.
Vectors (1)

one-on-1-0-0-124

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.

FieldTypeWhat it is
unitu32The name the new unit answers to.
nodeu8Which network node the unit belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32Where it stands, in height, in world units.
atZf32Where it stands, along the other ground axis, in world units.
skini32Which look it wears.
cloneu32The unit it copies, or zero.
team4-byte bits
team.teambit 0 to 8Which side, as a team number.
team.unusedbit 9 to 31Unused; a server writes zero.
visibilitySizef32How large it counts as for sight, in world units.
flags1-byte bits
flags.ignoreCollisionbit 0Set where it does not block the way.
flags.wardbit 1Set where it is a ward.
flags.botbit 2Set where it is driven by the client’s own decisions.
flags.unusedbit 3 to 7Unused; a server writes zero.
nametext, 64 bytesIts name, padded with zero bytes.
assettext, 64 bytesThe name the client loads its art under, padded with zero bytes.
Vectors (1)

one-on-1-0-0-128

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.

FieldTypeWhat it is
unitu32The name the new unit answers to.
nodeu8Which network node the unit belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32Where it stands, in height, in world units.
atZf32Where it stands, along the other ground axis, in world units.
skini32Which look it wears.
cloneu32The unit it copies, or zero.
team4-byte bits
team.teambit 0 to 8Which side, as a team number.
team.unusedbit 9 to 31Unused; a server writes zero.
flags1-byte bits
flags.ignoreCollisionbit 0Set where it does not block the way.
flags.wardbit 1Set where it is a ward.
flags.botbit 2Set where it is driven by the client’s own decisions.
flags.targetablebit 3Set where the unit can be aimed at.
flags.unusedbit 4 to 7Unused; a server writes zero.
targetableToTeamu32Read, then overwritten; a client keeps nothing of it.
visibilitySizef32How large it counts as for sight, in world units.
nametext, 64 bytesIts name, padded with zero bytes.
assettext, 64 bytesThe 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.

Definition.

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.

FieldTypeWhat it is
unitu32The name the unit answers to, so later messages can name it.
nodeu8Which network node the object belongs to, in a field of its own.
atXf32Where the unit stands, along one ground axis, in world units.
atYf32Where the unit stands, in height, in world units.
atZf32Where the unit stands, along the other ground axis, in world units.
campAtXf32Where the camp it belongs to sits, along one ground axis, in world units.
campAtYf32Where the camp it belongs to sits, in height, in world units.
campAtZf32Where the camp it belongs to sits, along the other ground axis, in world units.
nametext, 64 bytesWhat 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.
assettext, 64 bytesThe name the client loads its art and sound under, written and padded as above.
uniqueNametext, 64 bytesA further name the unit answers to, written and padded as above.
sideu32The side it belongs to, or zero where it belongs to none.
damageBonusi32What is added to the damage it deals.
healthBonusi32What 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.
roamingu32How the monster wanders. It has no effect. Values: 0 inactive, 1 hostile, 2 fleeing.
campu32Which 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.

FieldTypeWhat it is
unitu32The name the unit answers to, so later messages can name it.
nodeu8Which network node the object belongs to, in a field of its own.
atXf32Where the unit stands, along one ground axis, in world units.
atYf32Where the unit stands, in height, in world units.
atZf32Where the unit stands, along the other ground axis, in world units.
campAtXf32Where the camp it belongs to sits, along one ground axis, in world units.
campAtYf32Where the camp it belongs to sits, in height, in world units.
campAtZf32Where the camp it belongs to sits, along the other ground axis, in world units.
nametext, 64 bytesWhat 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.
assettext, 64 bytesThe name the client loads its art and sound under, written and padded as above.
uniqueNametext, 64 bytesA further name the unit answers to, written and padded as above.
sideu32The side it belongs to, or zero where it belongs to none.
damageBonusi32What is added to the damage it deals.
healthBonusi32What 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.
roamingu32How the monster wanders. It has no effect. Values: 0 inactive, 1 hostile, 2 fleeing.
campu32Which 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)

inactive-on-1-0-0-58

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.

FieldTypeWhat it is
unitu32The name the unit answers to, so later messages can name it.
nodeu8Which network node the object belongs to, in a field of its own.
atXf32Where the unit stands, along one ground axis, in world units.
atYf32Where the unit stands, in height, in world units.
atZf32Where the unit stands, along the other ground axis, in world units.
campAtXf32Where the camp it belongs to sits, along one ground axis, in world units.
campAtYf32Where the camp it belongs to sits, in height, in world units.
campAtZf32Where the camp it belongs to sits, along the other ground axis, in world units.
nametext, 64 bytesWhat 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.
assettext, 64 bytesThe name the client loads its art and sound under, written and padded as above.
uniqueNametext, 64 bytesA further name the unit answers to, written and padded as above.
sideu32The side it belongs to, or zero where it belongs to none.
damageBonusi32What is added to the damage it deals.
healthBonusi32What is added to the health it holds.
roamingu32How the monster wanders. It has no effect. Values: 0 inactive, 1 hostile, 2 fleeing.
campu32Which 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)

inactive-on-1-0-0-75, inactive-on-1-0-0-99

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.

FieldTypeWhat it is
unitu32The name the unit answers to, so later messages can name it.
nodeu8Which network node the object belongs to, in a field of its own.
atXf32Where the unit stands, along one ground axis, in world units.
atYf32Where the unit stands, in height, in world units.
atZf32Where the unit stands, along the other ground axis, in world units.
campAtXf32Where the camp it belongs to sits, along one ground axis, in world units.
campAtYf32Where the camp it belongs to sits, in height, in world units.
campAtZf32Where the camp it belongs to sits, along the other ground axis, in world units.
nametext, 64 bytesWhat 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.
assettext, 64 bytesThe name the client loads its art and sound under, written and padded as above.
uniqueNametext, 64 bytesA further name the unit answers to, written and padded as above.
sideu32The side it belongs to, or zero where it belongs to none.
damageBonusi32What is added to the damage it deals.
healthBonusi32What is added to the health it holds.
roamingu32How the monster wanders. It has no effect. Values: 0 inactive, 1 hostile, 2 fleeing.
campu32Which 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.
extrau16Kept with the camp; a client does nothing more with it. A server writes zero.
Vectors (1)

inactive-on-1-0-0-103

In 1.0.0.104–1.0.0.123

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.104–1.0.0.1097
1.0.0.110–1.0.0.11697
1.0.0.117–1.0.0.11898
1.0.0.119–1.0.0.12399

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.

FieldTypeWhat it is
unitu32The name the unit answers to, so later messages can name it.
nodeu8Which network node the object belongs to, in a field of its own.
atXf32Where the unit stands, along one ground axis, in world units.
atYf32Where the unit stands, in height, in world units.
atZf32Where the unit stands, along the other ground axis, in world units.
campAtXf32Where the camp it belongs to sits, along one ground axis, in world units.
campAtYf32Where the camp it belongs to sits, in height, in world units.
campAtZf32Where the camp it belongs to sits, along the other ground axis, in world units.
facingXf32A point the unit faces toward, along one ground axis, in world units.
facingYf32That point, in height.
facingZf32That point, along the other ground axis.
nametext, 64 bytesWhat 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.
assettext, 64 bytesThe name the client loads its art and sound under, written and padded as above.
uniqueNametext, 64 bytesA further name the unit answers to, written and padded as above.
sideu32The side it belongs to, or zero where it belongs to none.
damageBonusi32What is added to the damage it deals.
healthBonusi32What is added to the health it holds.
roamingu32How the monster wanders. It has no effect. Values: 0 inactive, 1 hostile, 2 fleeing.
campu32Which 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.
extrau16Kept with the camp; a client does nothing more with it. A server writes zero.
Vectors (4)

inactive-on-1-0-0-109, inactive-on-1-0-0-116, inactive-on-1-0-0-117, inactive-on-1-0-0-123

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.

FieldTypeWhat it is
unitu32The name the unit answers to, so later messages can name it.
nodeu8Which network node the object belongs to, in a field of its own.
atXf32Where the unit stands, along one ground axis, in world units.
atYf32Where the unit stands, in height, in world units.
atZf32Where the unit stands, along the other ground axis, in world units.
campAtXf32Where the camp it belongs to sits, along one ground axis, in world units.
campAtYf32Where the camp it belongs to sits, in height, in world units.
campAtZf32Where the camp it belongs to sits, along the other ground axis, in world units.
facingXf32A point the unit faces toward, along one ground axis, in world units.
facingYf32That point, in height.
facingZf32That point, along the other ground axis.
nametext, 64 bytesWhat 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.
assettext, 64 bytesThe name the client loads its art and sound under, written and padded as above.
uniqueNametext, 64 bytesA further name the unit answers to, written and padded as above.
campIcontext, 64 bytesA 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.
sideu32The side it belongs to, or zero where it belongs to none.
damageBonusi32What is added to the damage it deals.
healthBonusi32What is added to the health it holds.
roamingu32How the monster wanders. It has no effect. Values: 0 inactive, 1 hostile, 2 fleeing.
campu32Which 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)

a-monster-on-1-0-0-126

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.

FieldTypeWhat it is
unitu32The name the unit answers to, so later messages can name it.
nodeu8Which network node the object belongs to, in a field of its own.
atXf32Where the unit stands, along one ground axis, in world units.
atYf32Where the unit stands, in height, in world units.
atZf32Where the unit stands, along the other ground axis, in world units.
campAtXf32Where the camp it belongs to sits, along one ground axis, in world units.
campAtYf32Where the camp it belongs to sits, in height, in world units.
campAtZf32Where the camp it belongs to sits, along the other ground axis, in world units.
facingXf32A point the unit faces toward, along one ground axis, in world units.
facingYf32That point, in height.
facingZf32That point, along the other ground axis.
nametext, 64 bytesWhat 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.
assettext, 64 bytesThe name the client loads its art and sound under, written and padded as above.
uniqueNametext, 64 bytesA further name the unit answers to, written and padded as above.
campIcontext, 64 bytesThe 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.
sideu32The side it belongs to, or zero where it belongs to none.
damageBonusi32What is added to the damage it deals.
healthBonusi32What is added to the health it holds.
roamingu32How the monster wanders. It has no effect. Values: 0 inactive, 1 hostile, 2 fleeing.
campu32Which 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.

Definition.

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.

FieldTypeWhat it is
petu32The id the pet answers to, which a client gives it together with node. The header names the owner.
nodeu8Which network node it belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32In height, in world units.
atZf32Along the other ground axis, in world units.
spellLeveli32The level of the spell that summoned it, plus one. A client uses it only where the owner belongs to its own network node.
durationf32How long it lasts, in seconds. A client reads nothing of it.
damageBonusi32What is added to the damage it deals.
healthBonusi32What is added to its health.
nametext, 32 bytesIts name, padded with zero bytes.
assettext, 32 bytesThe name the client loads its art under, padded with zero bytes.
effecttext, 64 bytesAn effect it carries, padded with zero bytes. A client uses it only where the owner belongs to its own network node.
cloneu32The 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.

FieldTypeWhat it is
petu32The id the pet answers to, which a client gives it together with node. The header names the owner.
nodeu8Which network node it belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32In height, in world units.
atZf32Along the other ground axis, in world units.
spellLeveli32The level of the spell that summoned it, plus one. A client uses it only where the owner belongs to its own network node.
durationf32How long it lasts, in seconds. A client reads nothing of it.
damageBonusi32What is added to the damage it deals.
healthBonusi32What is added to its health.
nametext, 32 bytesIts name, padded with zero bytes.
assettext, 32 bytesThe name the client loads its art under, padded with zero bytes.
effecttext, 64 bytesAn effect it carries, padded with zero bytes. A client uses it only where the owner belongs to its own network node.
cloneu32The 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)

one-on-1-0-0-74

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.

FieldTypeWhat it is
petu32The id the pet answers to, which a client gives it together with node. The header names the owner.
nodeu8Which network node it belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32In height, in world units.
atZf32Along the other ground axis, in world units.
spellLeveli32The level of the spell that summoned it, plus one. A client uses it only where the owner belongs to its own network node.
durationf32How long it lasts, in seconds. A client reads nothing of it.
damageBonusi32What is added to the damage it deals.
healthBonusi32What is added to its health.
nametext, 32 bytesIts name, padded with zero bytes.
assettext, 32 bytesThe name the client loads its art under, padded with zero bytes.
effecttext, 64 bytesAn effect it carries, padded with zero bytes. A client uses it only where the owner belongs to its own network node.
cloneu32The unit it copies, or zero.
flags1-byte bitsHow it behaves.
flags.copyInventorybit 0Set where it copies its owner’s items.
flags.unusedbit 1 to 7Unused; a server writes zero.
Vectors (2)

one-on-1-0-0-75, one-on-1-0-0-82

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.

FieldTypeWhat it is
petu32The id the pet answers to, which a client gives it together with node. The header names the owner.
nodeu8Which network node it belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32In height, in world units.
atZf32Along the other ground axis, in world units.
spellLeveli32The level of the spell that summoned it, plus one. A client uses it only where the owner belongs to its own network node.
durationf32How long it lasts, in seconds. A client reads nothing of it.
damageBonusi32What is added to the damage it deals.
healthBonusi32What is added to its health.
nametext, 32 bytesIts name, padded with zero bytes.
assettext, 32 bytesThe name the client loads its art under, padded with zero bytes.
effecttext, 64 bytesAn effect it carries, padded with zero bytes. A client uses it only where the owner belongs to its own network node.
cloneu32The unit it copies, or zero.
flags1-byte bitsHow it behaves.
flags.copyInventorybit 0Set where it copies its owner’s items.
flags.unusedbit 1 to 7Unused; a server writes zero.
scripttext, 32 bytesThe script that drives it, padded with zero bytes.
Vectors (1)

one-on-1-0-0-86

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.

FieldTypeWhat it is
petu32The id the pet answers to, which a client gives it together with node. The header names the owner.
nodeu8Which network node it belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32In height, in world units.
atZf32Along the other ground axis, in world units.
spellLeveli32The level of the spell that summoned it, plus one. A client uses it only where the owner belongs to its own network node.
durationf32How long it lasts, in seconds. A client reads nothing of it.
damageBonusi32What is added to the damage it deals.
healthBonusi32What is added to its health.
nametext, 32 bytesIts name, padded with zero bytes.
assettext, 32 bytesThe name the client loads its art under, padded with zero bytes.
skini32Which look it wears.
effecttext, 64 bytesAn effect it carries, padded with zero bytes. A client uses it only where the owner belongs to its own network node.
cloneu32The unit it copies, or zero.
flags1-byte bitsHow it behaves.
flags.copyInventorybit 0Set where it copies its owner’s items.
flags.unusedbit 1 to 7Unused; a server writes zero.
scripttext, 32 bytesThe script that drives it, padded with zero bytes.
Vectors (1)

one-on-1-0-0-107

In 1.0.0.108–1.0.0.124

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.108–1.0.0.10932
1.0.0.110–1.0.0.11657
1.0.0.117–1.0.0.11858
1.0.0.119–1.0.0.12359
1.0.0.12460

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.

FieldTypeWhat it is
petu32The id the pet answers to, which a client gives it together with node. The header names the owner.
nodeu8Which network node it belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32In height, in world units.
atZf32Along the other ground axis, in world units.
spellLeveli32The level of the spell that summoned it, plus one. A client uses it only where the owner belongs to its own network node.
durationf32How long it lasts, in seconds. A client reads nothing of it.
damageBonusi32What is added to the damage it deals.
healthBonusi32What is added to its health.
nametext, 32 bytesIts name, padded with zero bytes.
assettext, 32 bytesThe name the client loads its art under, padded with zero bytes.
skini32Which look it wears.
effecttext, 64 bytesAn effect it carries, padded with zero bytes. A client uses it only where the owner belongs to its own network node.
cloneu32The unit it copies, or zero.
flags1-byte bitsHow it behaves.
flags.copyInventorybit 0Set where it copies its owner’s items.
flags.clearOwnerTargetbit 1Set where its owner’s target is cleared; a client acts on it only where the owner is its own champion.
flags.unusedbit 2 to 7Unused; a server writes zero.
scripttext, 32 bytesThe 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.

FieldTypeWhat it is
petu32The id the pet answers to, which a client gives it together with node. The header names the owner.
nodeu8Which network node it belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32In height, in world units.
atZf32Along the other ground axis, in world units.
spellLeveli32The level of the spell that summoned it, plus one. A client uses it only where the owner belongs to its own network node.
durationf32How long it lasts, in seconds. A client reads nothing of it.
damageBonusi32What is added to the damage it deals.
healthBonusi32What is added to its health.
nametext, 32 bytesIts name, padded with zero bytes.
assettext, 32 bytesThe name the client loads its art under, padded with zero bytes.
skini32Which look it wears.
effecttext, 64 bytesAn effect it carries, padded with zero bytes. A client uses it only where the owner belongs to its own network node.
cloneu32The unit it copies, or zero.
flags1-byte bitsHow it behaves.
flags.copyInventorybit 0Set where it copies its owner’s items.
flags.clearOwnerTargetbit 1Set where its owner’s target is cleared; a client acts on it only where the owner is its own champion.
flags.unusedbit 2 to 7Unused; a server writes zero.
scripttext, 32 bytesThe script that drives it, padded with zero bytes.
minimapIconu8Not 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)

a-decoy-on-1-0-0-126

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.

FieldTypeWhat it is
petu32The name the new pet answers to.
nodeu8Which network node it belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32In height, in world units.
atZf32Along the other ground axis, in world units.
spellLeveli32The level of the spell that summoned it, plus one. A client uses it only where node is its own.
durationf32How long it lasts, in seconds. A client reads nothing of it.
damageBonusi32What is added to the damage it deals.
healthBonusi32What is added to its health.
nametext, 32 bytesIts name, padded with zero bytes.
assettext, 32 bytesThe name the client loads its art under, padded with zero bytes.
skini32Which look it wears.
effecttext, 64 bytesAn effect it carries, padded with zero bytes. A client uses it only where node is its own.
cloneu32The unit it copies, or zero.
flags1-byte bitsHow it behaves.
flags.copyInventorybit 0Set where it copies its owner’s items.
flags.clearOwnerTargetbit 1Set where its owner’s target is cleared.
flags.unusedbit 2 to 7Unused; a server writes zero.
scripttext, 32 bytesThe script that drives it, padded with zero bytes.
minimapIconu8Set where it shows on the minimap. Any nonzero value sets it.
Vectors (1)

one-on-1-0-0-128

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.

FieldTypeWhat it is
petu32The name the new pet answers to.
nodeu8Which network node it belongs to.
atXf32Where it stands, along one ground axis, in world units.
atYf32In height, in world units.
atZf32Along the other ground axis, in world units.
spellLeveli32The level of the spell that summoned it, plus one. A client uses it only where the owner is on its own side.
durationf32How long it lasts, in seconds. A client reads nothing of it.
damageBonusi32What is added to the damage it deals.
healthBonusi32What is added to its health.
nametext, 128 bytesIts name, padded with zero bytes.
assettext, 32 bytesThe name the client loads its art under, padded with zero bytes.
skini32Which look it wears.
effecttext, 64 bytesAn effect it carries, padded with zero bytes. A client uses it only where the owner is on its own side.
cloneu32The unit it copies, or zero.
flags1-byte bitsHow it behaves.
flags.copyInventorybit 0Set where it copies its owner’s items.
flags.clearOwnerTargetbit 1Set where its owner’s target is cleared.
flags.unusedbit 2 to 7Unused; a server writes zero.
scripttext, 32 bytesThe script that drives it, padded with zero bytes.
minimapIconu8Set where it shows on the minimap. Any nonzero value sets it.
Vectors (1)

one-on-1-0-0-129

CreateTurret

What a server sends to put a turret on the field. The header names the unit this is about.

Definition.

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.

FieldTypeWhat it is
turretu32The name the turret answers to, so later messages can name it.
nodeu8Which network node the object belongs to, in a field of its own.
nametext, 64 bytesWhat 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)

one-on-1-0-0-75, one-on-1-0-0-109

In 1.0.0.110–1.0.0.128

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.110156
1.0.0.111–1.0.0.116157
1.0.0.117–1.0.0.118158
1.0.0.119–1.0.0.123159
1.0.0.124163
1.0.0.125164
1.0.0.126–1.0.0.128165

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.

FieldTypeWhat it is
turretu32The name the turret answers to, so later messages can name it.
nodeu8Which network node the object belongs to, in a field of its own.
nametext, 64 bytesWhat 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 (7)

one-on-1-0-0-110, one-on-1-0-0-116, one-on-1-0-0-117, one-on-1-0-0-123, one-on-1-0-0-124, one-on-1-0-0-125, one-on-1-0-0-128

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.

FieldTypeWhat it is
turretu32The name the turret answers to, so later messages can name it.
nodeu8Which network node the object belongs to, in a field of its own.
nametext, 64 bytesWhat 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.
state1-byte bits
state.targetablebit 0Set where the turret can be aimed at.
state.unusedbit 1 to 7Unused; a server writes zero.
targetableToTeamu32Read, 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.

Definition.

In 1.0.0.110–1.0.0.121

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.110206
1.0.0.111–1.0.0.116207
1.0.0.117–1.0.0.118208
1.0.0.119–1.0.0.121209

A client takes the prop’s id from prop, not from the header, and makes every prop a level prop.

FieldTypeWhat it is
propu32The name the prop answers to, so later messages can name it.
nodeu8Which network node the object belongs to. It is a field of its own, not the leading byte of the name beside it.
atXf32Where the prop stands, along one ground axis, in world units.
atYf32Where the prop stands, in height, in world units.
atZf32Where the prop stands, along the other ground axis, in world units.
nametext, 64 bytesWhat 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.
assettext, 64 bytesThe name of the character the client loads the prop’s art and sound under, written and padded as above.
side4-byte bitsThe side the prop belongs to. A server sends 300, the neutral side.
side.sidebit 0 to 8The prop’s side.
side.unusedbit 9 to 31Unused; a server writes zero.
unusedu8Unused; a client reads nothing here.
skillLevelu8The 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:

BuildsCommand
1.0.0.122209
1.0.0.123210

A client takes the prop’s id from prop, not from the header, and makes every prop a level prop.

FieldTypeWhat it is
propu32The name the prop answers to, so later messages can name it.
nodeu8Which network node the object belongs to. It is a field of its own, not the leading byte of the name beside it.
atXf32Where the prop stands, along one ground axis, in world units.
atYf32Where the prop stands, in height, in world units.
atZf32Where the prop stands, along the other ground axis, in world units.
side4-byte bitsThe side the prop belongs to. A server sends 300, the neutral side.
side.sidebit 0 to 8The prop’s side.
side.unusedbit 9 to 31Unused; a server writes zero.
unusedu8Unused; a client reads nothing here.
skillLevelu8The prop’s skill level.
flags1-byte bitsHow the prop is loaded.
flags.nameIsAssetbit 0Set to load the prop’s art under name rather than asset.
flags.unusedbit 1 to 7Unused; a server writes zero.
nametext, 64 bytesWhat 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.
assettext, 64 bytesThe name of the character the client loads the prop’s art and sound under, written and padded as above.
Vectors (2)

one-on-1-0-0-122, one-on-1-0-0-123

In 1.0.0.124–1.0.0.125

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.124215
1.0.0.125216

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.

FieldTypeWhat it is
propu32The name the prop answers to, so later messages can name it.
nodeu8Which network node the object belongs to. It is a field of its own, not the leading byte of the name beside it.
atXf32Where the prop stands, along one ground axis, in world units.
atYf32Where the prop stands, in height, in world units.
atZf32Where the prop stands, along the other ground axis, in world units.
rotationXf32A vector’s part along one ground axis, used for either kind. What this carries is not recorded.
rotationYf32For 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.
rotationZf32A vector’s part along the other ground axis, used for either kind. What this carries is not recorded.
offsetXf32A second vector’s part along one ground axis, used only where kind is 1. What this carries is not recorded.
offsetYf32A second vector’s part in height, used only where kind is 1. What this carries is not recorded.
offsetZf32A second vector’s part along the other ground axis, used only where kind is 1. What this carries is not recorded.
side4-byte bitsThe side the prop belongs to. A server sends 300, the neutral side.
side.sidebit 0 to 8The prop’s side.
side.unusedbit 9 to 31Unused; a server writes zero.
skillLevelu8Unused; a server writes zero.
ranku8How far it is advanced.
kindu8What 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.
nametext, 64 bytesWhat 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.
assettext, 64 bytesThe name of the character the client loads the prop’s art and sound under, written and padded as above.
Vectors (2)

active-on-1-0-0-124, active-on-1-0-0-125

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.

FieldTypeWhat it is
propu32The name the prop answers to, so later messages can name it.
nodeu8Which network node the object belongs to. It is a field of its own, not the leading byte of the name beside it.
atXf32Where the prop stands, along one ground axis, in world units.
atYf32Where the prop stands, in height, in world units.
atZf32Where the prop stands, along the other ground axis, in world units.
rotationXf32A vector’s part along one ground axis, used for either kind. What this carries is not recorded.
rotationYf32For 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.
rotationZf32A vector’s part along the other ground axis, used for either kind. What this carries is not recorded.
offsetXf32A second vector’s part along one ground axis, used only where kind is 1. What this carries is not recorded.
offsetYf32A second vector’s part in height, used only where kind is 1. What this carries is not recorded.
offsetZf32A second vector’s part along the other ground axis, used only where kind is 1. What this carries is not recorded.
side4-byte bitsThe side the prop belongs to. A server sends 300, the neutral side.
side.sidebit 0 to 8The prop’s side.
side.unusedbit 9 to 31Unused; a server writes zero.
skillLevelu8Unused; a server writes zero.
ranku8How far it is advanced.
kindu8What 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.
nametext, 64 bytesWhat 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.
assettext, 64 bytesThe name of the character the client loads the prop’s art and sound under, written and padded as above.
Vectors (1)

a-prop-on-1-0-0-126

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.

FieldTypeWhat it is
propu32The name the prop answers to, so later messages can name it.
nodeu8Which network node the object belongs to. It is a field of its own, not the leading byte of the name beside it.
atXf32Where the prop stands, along one ground axis, in world units.
atYf32Where the prop stands, in height, in world units.
atZf32Where the prop stands, along the other ground axis, in world units.
rotationXf32For 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.
rotationYf32For 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.
rotationZf32For 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.
offsetXf32What is added to where it stands, along one ground axis, in world units.
offsetYf32What is added to where it stands, in height, in world units.
offsetZf32What is added to where it stands, along the other ground axis, in world units.
side4-byte bitsThe side the prop belongs to. A server sends 300, the neutral side.
side.sidebit 0 to 8The prop’s side.
side.unusedbit 9 to 31Unused; a server writes zero.
skillLevelu8Unused; a server writes zero.
ranku8How far it is advanced.
kindu8What 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.
nametext, 64 bytesWhat 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.
assettext, 64 bytesThe 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.

Definition.

In 1.0.0.110–1.0.0.123

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.110207
1.0.0.111–1.0.0.116208
1.0.0.117–1.0.0.118209
1.0.0.119–1.0.0.122210
1.0.0.123211

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.

FieldTypeWhat it is
changeu8What changes. A client ignores any other value. Values: 0 apply, 1 linkEffect.
propu32The object changed.
nametext, 64 bytesWhat is applied, for apply; written and padded with zero bytes.
optionu8For linkEffect, zero.
effectu8For linkEffect, which of the prop’s effect values to drive.
pointu8For linkEffect, which capture point drives it.
Vectors (5)

apply-on-1-0-0-110, apply-on-1-0-0-116, apply-on-1-0-0-117, apply-on-1-0-0-122, apply-on-1-0-0-123

In 1.0.0.124–1.0.0.125

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.124216
1.0.0.125217
FieldTypeWhat it is
nametext, 64 bytesThe 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.
firstf32For animate, when the animation starts, in seconds of match time.
secondf32For animate, how long the animation runs, in seconds.
propu32The object changed.
valueu32A value the change uses: for animate, the animation’s flags; for linkEffect, the particle effect value; for look, the look’s number.
changeu8What changes. A client does nothing for any other value, nor where prop names no prop it holds. Values: 0 animate, 1 linkEffect, 2 look.
optionu8For animate, nonzero to remove the prop after the animation; for linkEffect, zero.
effectu8For linkEffect, which of the prop’s effect values to drive.
pointu8For linkEffect, which capture point drives it.
Vectors (2)

animate-on-1-0-0-124, animate-on-1-0-0-125

In 1.0.0.126–1.0.0.127

Command 218 on events, sent by the server, reliable.

FieldTypeWhat it is
nametext, 64 bytesThe 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.
firstf32For animate, when the animation starts, in seconds of match time.
secondf32For animate, how long the animation runs, in seconds.
propu32The object changed.
valueu32A value the change uses: for animate, the animation’s flags; for linkEffect, the particle effect value.
changeu8What changes. A client does nothing for any other value, nor where prop names no prop it holds. Values: 0 animate, 1 linkEffect, 2 look.
optionu8For linkEffect, zero; a client reads it for no other change.
effectu8For linkEffect, which of the prop’s effect values to drive.
pointu8For linkEffect, which capture point drives it.
Vectors (1)

an-animation-on-1-0-0-126

In 1.0.0.128–1.0.0.129

Command 218 on events, sent by the server, reliable.

FieldTypeWhat it is
nametext, 64 bytesA 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.
firstf32For animate, when the animation starts, in seconds of match time.
secondf32For animate, how long the animation runs, in seconds.
propu32The object changed.
valueu32A value the change uses: for animate, the animation’s flags; for linkEffect, the particle effect value; for look, the look’s number.
changeu8What changes. A client does nothing for any other value, nor where prop names no prop it holds. Values: 0 animate, 1 linkEffect, 2 look.
optionu8For animate, nonzero to remove the prop after the animation; for linkEffect, zero.
effectu8For linkEffect, which of the prop’s effect values to drive.
pointu8For linkEffect, which capture point drives it.

TeamChanged

What a server sends to move a unit to another side. The header names the unit.

Definition.

In 1.0.0.110–1.0.0.127

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.110212
1.0.0.111–1.0.0.116213
1.0.0.117–1.0.0.118214
1.0.0.119–1.0.0.122215
1.0.0.123216
1.0.0.124222
1.0.0.125223
1.0.0.126–1.0.0.127224
FieldTypeWhat it is
unitu32The unit. A client ignores the message where it does not hold it.
sideu32Its new side.
Vectors (8)

one-on-1-0-0-110, one-on-1-0-0-116, one-on-1-0-0-117, one-on-1-0-0-122, one-on-1-0-0-123, one-on-1-0-0-124, one-on-1-0-0-125, one-on-1-0-0-126

In 1.0.0.128–1.0.0.129

Command 224 on events, sent by the server, reliable.

FieldTypeWhat it is
unitu32The unit.
sideu32Its new side.

BotDebug

What a server sends describing what a bot is thinking. It changes nothing a client shows. The header names the unit.

Definition.

In every range of this book

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.25–1.0.0.62105
1.0.0.63–1.0.0.73108
1.0.0.74–1.0.0.81109
1.0.0.82–1.0.0.96113
1.0.0.97–1.0.0.102114
1.0.0.103–1.0.0.106116
1.0.0.107–1.0.0.108117
1.0.0.109118
1.0.0.110–1.0.0.12921
FieldTypeWhat it is
nametext, 64 bytesThe bot’s name.
strategytext, 64 bytesIts strategy.
behaviourtext, 64 bytesIts behaviour.
tasktext, 64 bytesIts task.
state1text, 64 bytesA line of its state.
state2text, 64 bytesA line of its state.
state3text, 64 bytesA line of its state.
Vectors (9)

one-on-1-0-0-61, one-on-1-0-0-72, one-on-1-0-0-75, one-on-1-0-0-81, one-on-1-0-0-96, one-on-1-0-0-99, one-on-1-0-0-106, one-on-1-0-0-108, one-on-1-0-0-109

BotTargets

What a server sends naming the units a bot is weighing. It changes nothing a client shows. The header names the unit.

Definition.

In every range of this book

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.25–1.0.0.62106
1.0.0.63–1.0.0.73109
1.0.0.74–1.0.0.81110
1.0.0.82–1.0.0.96114
1.0.0.97–1.0.0.102115
1.0.0.103–1.0.0.106117
1.0.0.107–1.0.0.108118
1.0.0.109119
1.0.0.110102
1.0.0.111–1.0.0.116103
1.0.0.117–1.0.0.118104
1.0.0.119–1.0.0.123105
1.0.0.124–1.0.0.129108
FieldTypeWhat it is
targets5 × u32Five units.
Vectors (13)

one-on-1-0-0-61, one-on-1-0-0-72, one-on-1-0-0-75, one-on-1-0-0-81, one-on-1-0-0-96, one-on-1-0-0-99, one-on-1-0-0-106, one-on-1-0-0-108, one-on-1-0-0-109, one-on-1-0-0-110, one-on-1-0-0-116, one-on-1-0-0-117, one-on-1-0-0-123

BotState

What a server sends naming a bot’s state. It changes nothing a client shows. The header names the unit.

Definition.

In every range of this book

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
1.0.0.25–1.0.0.62107
1.0.0.63–1.0.0.73110
1.0.0.74–1.0.0.81111
1.0.0.82–1.0.0.96115
1.0.0.97–1.0.0.102116
1.0.0.103–1.0.0.106118
1.0.0.107–1.0.0.108119
1.0.0.109120
1.0.0.110170
1.0.0.111–1.0.0.116171
1.0.0.117–1.0.0.118172
1.0.0.119–1.0.0.123173
1.0.0.124177
1.0.0.125178
1.0.0.126–1.0.0.129179
FieldTypeWhat it is
statei32The state.
Vectors (15)

one-on-1-0-0-61, one-on-1-0-0-72, one-on-1-0-0-75, one-on-1-0-0-81, one-on-1-0-0-96, one-on-1-0-0-99, one-on-1-0-0-106, one-on-1-0-0-108, one-on-1-0-0-109, one-on-1-0-0-110, one-on-1-0-0-116, one-on-1-0-0-117, one-on-1-0-0-123, one-on-1-0-0-124, one-on-1-0-0-125

TargetableChanged

What a server sends to change whether a unit can be aimed at, and by which sides. The header names the unit.

Definition.

In 1.0.0.129

Command 243 on events, sent by the server, reliable.

FieldTypeWhat it is
targetableu8Nonzero where the unit can be aimed at.
targetableToTeamu32Which sides can aim at it, as a set of bits, kept as it stands.