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

About this book

A wire protocol specification for League of Legends game servers: what a server sends for a client to connect, load a match and play, and what the client does with it. The chapters are meant to be enough to build a conforming server. Each builds on the ones before it, so read them in order.

A chapter holds for every client build covered, except a passage set apart and headed with ranges, which holds for those alone. What a chapter says of a message holds wherever that message has a layout: a build with no layout for a message has no such message, and nothing said of it applies there. Field layouts are not restated in prose: they live in schema/, machine readable, and each system’s chapter ends with its messages and every layout each has. Where a field’s meaning is undetermined, its note says so.

The rules of the game are out of scope: how much a spell deals, what an item costs, how fast a champion levels. A server decides those; the specification says how it tells a client the results.

Check your work against conformance/ as you go; its vectors are this specification’s measure of a conforming server.

If the specification does not answer something you need, do not guess: report it as a defect, as CONTRIBUTING.md explains.

This book covers client builds from 4.1.0.171 up to, not including, 4.21.0.0, in 19 ranges. Every build in a range is held to the same facts.

PatchFromUp toPatch notesBuilds checked
4.14.1.0.1714.2.0.2718V4.11
4.24.2.0.27184.3.0.495V4.22
4.34.3.0.4954.4.0.1858V4.31
4.44.4.0.18584.5.0.260V4.42
4.54.5.0.2604.6.0.193V4.52
4.64.6.0.1934.7.0.296V4.62
4.74.7.0.2964.8.0.189V4.72
4.84.8.0.1894.9.0.239V4.81
4.94.9.0.2394.10.0.369V4.92
4.104.10.0.3694.11.0.386V4.102
4.114.11.0.3864.12.0.356V4.111
4.124.12.0.3564.13.0.265V4.121
4.134.13.0.2654.14.0.362V4.131
4.144.14.0.3624.15.0.238V4.141
4.154.15.0.2384.16.0.238V4.151
4.164.16.0.2384.17.0.233V4.161
4.174.17.0.2334.18.0.271V4.172
4.18–4.194.18.0.2714.20.0.315V4.18, V4.199
4.204.20.0.3154.21.0.0V4.201

What the chapters say of a message says nothing of a patch that has no layout for it. A message the chapters name with a link is one this book has; one named without a link is one no build of this book has. The index of messages finds any message, and the appendix on patches gives each patch’s checks, every message it carries, and how it differs from the one before it.

Transport

A server and a client exchange messages over UDP, carried by ENet 1.2.5 with the header each range’s definitions give.

Layering

Four layers carry a message to a socket.

  1. UDP moves datagrams.
  2. ENet turns datagrams into ordered, acknowledged deliveries on numbered channels.
  3. A cipher covers each channel payload.
  4. A message occupies the deciphered payload, opening with the header its family carries, as Messages defines.

This chapter covers layers 1 to 3.

Stock ENet

This document does not restate ENet. Connection setup, acknowledgement, sequence numbers, retransmission, throttling, and fragmentation behave as ENet 1.2.5 defines them.

The rest of this chapter says what a client does not accept from stock ENet. A server built on an unmodified ENet 1.2.5 never completes a connection.

The packet header

Each range has its own header, below with the constants it is read under. A server MUST use the layout of the version it serves, because a client establishes no connection under any other layout.

Packet headers and constants

In 4.1–4.19

ENet 1.2.5 beneath; little-endian fields. Blowfish in ECB mode over 8-byte blocks, each read big-endian, under a 16-byte key given in base64. Neither end pads.

FieldTypePresent whenWhat it is
sessionIdu8The value the client supplied when it connected, carried on every packet.
peer1-byte bits
peer.peerIdbit 0 to 6127 marks an unassigned peer, which is what a connecting client sends.
peer.sentTimeFlagbit 7Set when the header carries a sent time.
sentTimeu16, big-endianpeer.sentTimeFlag setMilliseconds since the connection opened.
ConstantValueStock ENetWhat it is
maximumPeerId12732767Follows from the peer id occupying seven bits.
maximumTransmissionUnit9964096A client asks for 1400 in its connect command, and takes no datagram larger than 996 bytes.
minimumDatagram42A client discards any datagram shorter than this many bytes.

In 4.20

ENet 1.2.5 beneath; little-endian fields. Blowfish in ECB mode over 8-byte blocks, each read big-endian, under a 16-byte key given in base64. Neither end pads.

FieldTypePresent whenWhat it is
addressCheckbytes, 4A CRC-32 over the address the datagram is sent to, written big-endian. The input is ten bytes: the IPv4 address in network order, the UDP port as a little-endian u16, and 98 2e 3f 3c. The register starts at all ones; for each input byte it is shifted left eight bits with the byte placed in the low eight, then XORed with the table entry for the eight bits shifted out; the entry for a value v is v shifted left 24 bits, then eight steps of the polynomial 04c11db7, most significant bit first, with no reflection; at the end the register is inverted. A client sending to 127.0.0.1 port 5000 writes 28 68 bd eb, and to port 5001 fa 71 7c 37. A client does not check the field on what it receives, so a server may write any four bytes; a client does not connect without the field.
sessionIdu8The value the client supplied when it connected, carried on every packet. A connection whose packets carry any other value times out.
peer1-byte bits
peer.peerIdbit 0 to 6127 marks an unassigned peer, which is what a connecting client sends.
peer.sentTimeFlagbit 7Set when the header carries a sent time.
sentTimeu16, big-endianpeer.sentTimeFlag setMilliseconds since the connection opened.
ConstantValueStock ENetWhat it is
maximumPeerId12732767Follows from the peer id occupying seven bits.
maximumTransmissionUnit9964096A client asks for 1400 in its connect command, and takes no datagram larger than 996 bytes.
minimumDatagram82A client discards any datagram shorter than this many bytes.

A header built from the schema is necessary to reach a client, and not sufficient on its own. Where a field’s content is free rather than fixed, its note in the schema says so.

conformance/vectors/transport holds a header with a sent time and one without.

A client discards any datagram shorter than the minimumDatagram constant of its range. A server MUST NOT send a shorter datagram.

The connect command

A server’s verify connect MUST state the channel count, and the throttle interval, acceleration and deceleration, the connect command carried: a client abandons a connection whose verify connect states anything else.

A client’s connect command takes ENet’s layout, except that two of its fields carry one byte of meaning each. The peer id is the first of the two bytes ENet gives it, and the session id is the first of the four. The bytes after each carry nothing a server reads, and a client fills them with anything.

A server MUST take the peer id and the session id from those first bytes. The session id is then the byte every header carries, and a server that reads either field at ENet’s width answers a client that never hears it.

A client asks for 8 channels.

Maximum transmission unit

A client asks for a transmission unit of 1400 bytes, and discards any datagram whose UDP payload, packet header included, exceeds the maximumTransmissionUnit constant of its range. A server MUST NOT send a larger datagram.

That constant is below what a client asks for. A server MUST accept a connection at a transmission unit no greater than the constant, by clamping the value the client asks for. Capping its own sending without clamping the negotiated value is not sufficient, because ENet derives fragment sizes from the negotiated value and still emits datagrams above the limit.

The cipher

Whether a payload is enciphered follows from the state of the connection rather than from the channel it travels on. A connection begins with no cipher state, and the request that establishes it travels in the clear apart from one field it carries enciphered as proof. Everything after that is enciphered, on every channel and in both directions, the answer to that request included.

schema/protocol.json records which cipher, in which mode, and the shape of a block. A server MUST use that cipher; a client accepts no other. A standard implementation of Blowfish interoperates with a client.

What a server sends carries no padding. Trailing bytes that do not fill a block travel unchanged, so a payload shorter than one block travels in the clear.

What a client sends carries no padding either.

conformance/vectors/cipher covers a whole block, a payload with a tail too short to fill one, and a payload shorter than a block.

The key

Both ends hold the key before a connection opens. Nothing on the wire negotiates it, and no exchange derives it. A client receives it as a launch argument.

The argument holds the key in base64.

Registration associates the key with a connection. Register travels in the clear apart from one field enciphered under the key, and a server MUST refuse a connection whose deciphered field is not what it expects, since that field is all that shows the client holds the key. schema/messages records the exchange, as Register and Registered.

Channels

In every range of this book

ChannelNameFamily
0registrationregistration
1requestsgame
2clockgame
3eventsgame
4transientgame
5chatsession
7rostersession

Messages

A message occupies one deciphered channel payload. The payload opens with the header the message’s family carries, and the body begins where that header ends.

schema/messages holds one file per message identity, and each file records one or more revisions. A revision carries the value identifying the message, the channel it travels on, its direction, how the transport delivers it, and the fields of its body.

Families

Every channel carries one family of messages, and schema/channels.json says which. A family fixes two things: the numbering its command values are drawn from, and the header that precedes every body on it. schema/families.json records both. Two channels of one family share a numbering, so a value identifies at most one message across both, and the same value on channels of different families is two unrelated messages.

A family whose header carries no command field has one message each way on each channel it rides, read from the payload’s first byte; its revisions number that message 0.

The family, not the channel, selects the header.

A revision names the channel it travels on, and names any others in alsoOn. Those channels carry the same family, so the command value means the same message on each, and the body is byte for byte the one the revision records. What changes between them is delivery: each entry states how the transport carries the message there. A server MAY send such a message on any channel the revision names, and what it gets is the delivery stated for that channel. A client reads it the same way on every one of them, so a server MUST NOT vary the body with the channel it chooses.

The command

A revision records the value that identifies it, and the family’s header says where that value sits on the wire. That value is not a field of the message: it belongs to the header, along with anything else the family carries before a body begins.

A family can keep some values of the leading byte for framing rather than for messages, and schema/families.json lists which. Where a family names an escape, that value means the real identifier is wider than a byte and travels elsewhere in the header, which is how a family numbers more messages than a byte holds. A revision records the identifier either way, and never the escape.

Directions

A revision states whether it travels clientToServer, serverToClient, or bidirectional. Direction is part of what identifies a message, so one value serves two messages travelling opposite ways within a family. A bidirectional revision claims that value both ways.

A container of several messages

Where the game family keeps 255 for framing, that value introduces a container rather than a message: a run of several messages gathered into one payload, which a reading end unwraps and reads one by one as though each had arrived on its own. A container carries no header, so nothing in schema/messages describes one, and a reading end MUST NOT read the value that introduces it as a command.

A container is the byte 255, then a count of entries in one byte, then the entries one after another. The first entry is a length in one byte, the command in one byte, the object identifier in four bytes, and then a body whose size is the length less five. Every later entry opens with a byte of flags and size:

  • bit 0 clear: a command byte follows, and this entry carries it; bit 0 set: this entry carries the command the entry before it carried;
  • bit 1 clear: a four byte object identifier follows; bit 1 set: one signed byte follows, and this entry’s object identifier is the one before it plus that byte;
  • bits 2 to 7: the size of the body; where they read 63, the size is the next byte instead.

The body follows. Each entry, given the command and object identifier it carries as its header, is a message read as though it had arrived on its own. Where the family’s escape is 254, an entry whose command is 254 carries the wider identifier in the first two bytes of its body, so that, with the command and object identifier before it, it reads as the extended form of the header does.

Where the game family keeps 255, a server MAY send a container on the events channel. A client sends none.

Reading a body

A body begins where its family’s header ends. Fields occupy it in the order the revision lists them, each beginning where the one before it ended. A revision never restates a field its family’s header already carries, and never takes a name from it. Nothing is aligned and nothing is padded between fields. A field’s size is fixed by its type, given as a literal, carried by an earlier field, or one of the two words below.

Where a size or a count names an earlier field, it names one that has already been read and one holding an unsigned integer. It names either a whole field or one run of bits inside a field, and a run is written as the field name, a full stop, and the run name. remaining and terminated are reserved words rather than names, so no field carries either.

A field of a body names only fields of that body. A family’s header is read first, but it belongs to every message of the family rather than to this one, so nothing in a body is sized or governed by it.

What counts as an earlier field depends on what encloses the field doing the naming. An item of an array reaches the fields of the body around it. The fields of a struct reach only each other, because a struct is used wherever it occurs, so it cannot depend on what surrounds any one use.

remaining means every byte from where the field begins to the end of what encloses it: the message body, or the byte length of the struct or array the field sits inside. A field measured that way is the last one its enclosure defines, because nothing inside that enclosure can follow it.

An enclosure that states a byte length is itself an ordinary field, and fields follow it as usual. An enclosure that states none ends where the body ends, so it is the last field too, and so is any struct whose own last field is one of these.

A body ends where its last field ends, with one exception: a client accepts a Registered carrying bytes past its record, and takes no meaning from them. A sender MUST write the fields a revision lists and nothing after them.

Byte order

A revision of schema/protocol.json states the byte order that covers a version range, and every multi byte field in that range is read that way. A field that differs states its own order, which overrides the range.

The types

Integers. u8 through u64 and i8 through i64, in two’s complement. f32 and f64 are IEEE 754 binary floating point.

Bytes. A run of bytes with no interpretation. Its size is fixed, named by an earlier field, or remaining.

Strings. A run of bytes and an encoding, either utf8 or ascii. A size is a literal or the name of an earlier field. A string given one occupies that many bytes whatever its content, and the zero bytes at its end are padding rather than content, so they are dropped. A zero anywhere else belongs to the text and stays. A string sized terminated ends at the first zero byte, that byte belongs to the field, and it is the only one dropped. A string sized remaining carries every byte to the end of its enclosure, zeros included. A size counts bytes rather than characters.

Arrays. A run of one repeated shape. An array states either a count of items or a size in bytes, and never both. A count is a literal, the name of an earlier field, or remaining, which repeats to the end of the enclosure. A size in bytes repeats until those bytes are consumed, which is how a run whose length travels as a byte count is recorded.

Structs. A named group of fields, defined in schema/types and used wherever it occurs. A struct has revisions as a message does, and a message revision that holds one lies wholly within one of the struct’s revisions, which gives the layout it holds there. A struct occupies exactly the bytes its own fields occupy. Where its length travels on the wire instead, the field states a size in bytes, as a literal or as the name of an earlier field. A sending end MUST write a struct’s fields to fill that size exactly.

Bits. A field of one or more bytes divided into named runs, whose widths total exactly the bits those bytes hold. No run is wider than 32 bits. The bytes form one little endian word whatever the range’s byte order, or a big endian one where the field says so. Runs are listed from the least significant bit upward, and each reads as an unsigned integer of its own width.

Bit arrays. A run of the same group of bit runs, repeated a stated number of times. The groups follow one another from the low bits of the first byte upward, crossing byte boundaries without padding, and the field occupies as many whole bytes as the groups need. The bits above the last group are clear. A count is written as an array’s is.

Records. A group of fields named together and read one after another, with nothing between them and nothing around them. A record occupies exactly what its fields occupy. Unlike a struct it is written where it is used rather than defined in schema/types, and its fields reach the fields around it, so a record is a way of naming part of a message rather than a shape reused elsewhere.

What a field names

A size, a count, or a rule about whether a field is present names an earlier field. Five forms are written:

  • a name on its own, which is a field of the same enclosure;
  • a name, a full stop, and a run inside it, where that field is bits;
  • a name, square brackets, and a name inside them, which is the item of an earlier array standing at the same position as the item doing the naming, so that two arrays run together;
  • either of the first two inside {"field": …, "minus": N}, which is that field’s value less the literal N, and N is never larger than the value;
  • either of the first two inside {"field": …, "bitsSet": true}, which is how many bits of that field’s value are one.

Nothing else is computed.

Presence

A field states a presence rule when it occupies bytes only under a condition, and a field whose condition does not hold occupies no bytes at all. The rule names an earlier field or bit run holding an integer, and states a value it carries, or a set of values, any one of which satisfies it. Without one, any value other than zero satisfies the rule. A field its own rule left out holds no value, so a rule naming that field does not hold either.

A rule can instead name remaining, which no field is called. A field under that rule is present where the payload has bytes left at that point and absent where it has ended, so a message whose sender stops early reads as one whose later fields are absent. A sender that stops early MUST stop where a field under such a rule begins.

A rule can mark one of its sides unseen; that side’s layout is the one the field states.

A field that travels enciphered

A payload is enciphered as a whole once a connection has a cipher state, and a message says nothing about that. Before a cipher state exists, a payload can carry one field enciphered under the key both ends hold, and the field says so.

Such a field occupies whole cipher blocks, because a field filling part of one would travel half in the clear. Its recorded value is what the bytes mean once deciphered, so a reader deciphers the field alone and leaves the payload around it untouched.

Enumerated values

Where an integer field, or a run of bits inside one, takes a fixed set of values, the field lists what they mean, keyed by the value on the wire. Each entry names the value, in the same form a field name takes, and no two entries of one field share a name. A key fits the width and sign of what it names. A value with no entry has no meaning this specification states.

Revisions

A revision covers a range of client versions, from one version inclusive to another exclusive. Every revision states where it stops. Ranges of one message never overlap. A version no revision of a message covers has no such message: a client there neither sends nor takes it, and what a chapter says of it does not apply.

A revision covers no version that schema/protocol.json, schema/channels.json and schema/families.json do not all describe, because a range none of them reaches has no header, no byte order, and no channel to travel on.

Names and notes

A field name begins with a lower case letter and carries letters and digits after it. A message identity and a struct identity begin with a capital. A file is named for the identity it defines, and a message’s vectors sit in one directory named for that identity, with each capital starting a new part, lower case and joined by hyphens.

A field name is unique among the fields beside it, and an item of an array never takes the name of a field enclosing it.

Anything in schema/ carries a note wherever a fact needs words: a revision, a field, a run of bits, a value. A note states what the wire carries and what each end does. It carries no requirement keyword and says nothing changed.

How a message is delivered

A revision states whether the transport carries it reliably, unreliably, or unsequenced, which is what the message needs of the transport: a message another supersedes can be lost, and one that carries an account of what happened cannot. A server MUST send a message with the delivery its revision states.

Quick chat

Quick chat is a feature a server leaves off. A client sends a quick chat on channel 6 only where VersionSync’s features turn quick chat on. This specification records no layout for channel 6.

In 4.1–4.19

A client given the quick chat bit fails while loading. A server MUST NOT set that bit.

Vectors

Every revision carries at least one conformance vector. A message vector opens with its family’s header and is read to the end. conformance/ says how a vector is written and how to run one.

Family headers

A field present when remaining is set is present exactly where the payload has bytes left at that point.

In every range of this book

The game family:

FieldTypePresent whenWhat it is
commandu8254 means the identifier is carried in the wider field instead. 255 introduces a container of several messages rather than a message of its own, which Messages describes.
netIdu32A network object the message concerns. Which object, and whether it is the origin or the subject, is settled by each message rather than here, and some messages carry a value naming none.
extendedCommandu16command = 254Identifiers here start above the range a single byte holds.

The session family:

FieldTypeWhat it is
commandu8

The registration family:

FieldTypeWhat it is
commandu8

Objects and identifiers

How the things a match is about are named on the wire, and when an object enters and leaves a client’s world.

The identifiers

IdentifierWidthFormedNo one
Player id64 bits, signedthe player’s account; a client is given its own when started-1, every bit set
Client id32 bits, unsignedchosen by the server for each player at registration, counting from 04294967295
Seata place in a side listthe order of a side’s player ids in Rosteran empty place
Net id32 bits, unsignedchosen by the server for what it creates; worked out from a name for what a map holds0
Node8 bits, unsignedthe owning client’s client id plus 1, or 0 for an object no client owns0
Region id32 bits, unsignedchosen by the server for each region, and carried by RegionAddedsee below
Name hash32 bits, unsignedworked out from the name of a spell, an effect, a particle or a bone0

A field’s own definition gives its exact type. Where a field carries one of these, it carries it whole, at the width above.

No region id stands for no region.

A server MUST give each player a client id from 0 to 252.

How they relate

A player is known by a player id. A server answers a client’s Register with Registered, and the one carrying the client’s own player id gives the client its own client id.

Registration pairs each player id with a client id: a server answers a client’s Register with one Registered for every seat. Every later message that names a player by client id is read through that pairing.

Roster lists each side’s player ids in order, and a player’s seat is their place in that list. A client finds a seat’s client id through its player id. SeatName, SeatChampion and the VersionSync seats name a player by player id; SeatLoadProgress names both.

A champion carries the client id of the player it belongs to. The CreateChampion carrying a client’s own client id makes that champion the client’s own.

A bot’s champion carries 4294967295.

Net ids

A net id names one object in a client’s world: a unit, a missile, a particle, a marker, a prop. The header of every game message carries one, and fields naming a unit, an owner or a target carry one too.

  • A server MUST NOT give an object net id 0, which names nothing.
  • A server SHOULD NOT give an object a net id whose top byte is 0xFF, which the identifiers of what a map holds use, nor one whose top byte is any client’s client id plus 1, which a client uses for objects of its own making.
  • A server MUST NOT give a new object a net id it has given another object in the same match, except in a soft reconnect (see below).

A client that still holds the earlier object creates the new one but keeps the net id on the old one, so messages naming it reach the old object, and removing either leaves the id naming neither.

A create message carries a node beside the object’s net id.

Nothing a player sees depends on it.

Net ids of what a map holds

Some objects are on the field before any message puts them there, and no message ever does: the buildings a side defends, the shops beside them, and the spawn points a side’s minions come from. A receiving end knows them from the map it loaded, and every message naming one names it by an identifier worked out from that object’s name in the map.

The identifier is the CRC-32 of the name, with the top byte set:

identifier = crc32(name) | 0xFF000000

The name is taken byte for byte with its case kept, so OrderShop01 and orderShop01 are two names and give two identifiers. The CRC-32 is the common one: the polynomial 0x04C11DB7 read reflected, starting from 0xFFFFFFFF and finishing with every bit inverted, so the nine bytes 123456789 give 0xCBF43926.

Among the identifiers with that top byte are these:

NameIdentifier
Barracks_T1_C10xFF4A20F1
Barracks_T1_L10xFFD23C3E
Barracks_T1_R10xFF9303E1
Barracks_T2_C10xFFFF8F1F
Barracks_T2_L10xFF6793D0
Barracks_T2_R10xFF26AC0F
__P_Order_Spawn_Barracks__C010xFFB77171
__P_Order_Spawn_Barracks__L010xFFEB364C
__P_Order_Spawn_Barracks__R010xFF53B836
__P_Chaos_Spawn_Barracks__C010xFFBA00E8
__P_Chaos_Spawn_Barracks__L010xFFE647D5
__P_Chaos_Spawn_Barracks__R010xFF5EC9AF
____P_Chaos_Spawn_Barracks__C010xFF707D61
ChaosShop010xFF3A98D9
chaosShop010xFFA6170E
HQ_T10xFFF97DB5
HQ_T20xFFF02C0F
OrderShop010xFF8C490C
orderShop010xFF10C6DB
Namemap
Barracks_T1_C11, 11, 12
Barracks_T1_L11, 10, 11
Barracks_T1_R11, 10, 11
Barracks_T2_C11, 11, 12
Barracks_T2_L11, 10, 11
Barracks_T2_R11, 10, 11
__P_Order_Spawn_Barracks__C011
ChaosShop0112
chaosShop011, 8, 10, 11
HQ_T11, 10, 11, 12
HQ_T21, 10, 11, 12
OrderShop0112
orderShop011, 8, 11

The Barracks names above belong to inhibitors, whatever the name says. The minions a side sends out come from spawn points of their own, which are among the objects a map holds.

A client puts a minion on the field for a SpawnFromBarracks naming a spawn point, and creates nothing for one naming an inhibitor such as Barracks_T1_C1.

A server MUST name each object a map holds by the identifier its name gives.

CreateTurret gives a net id to a turret the map already holds, matched by name. Given to a turret that already has one, it gives it a second, and both name it.

What a client holds

A client holds an object from the message that creates it until the message, or the end of its life, that removes it. Creating messages are listed in Units. What a map holds, a client holds from the moment it loads the map.

Several creating messages can arrive inside the EnterSight that brings a unit into view.

Leaving a client’s sight removes nothing: LeaveSight and LeaveTeamSight hide an object, and it is held as before.

LeaveLocalSight hides an object too, and it is held as before.

In 4.1–4.19

RegionRemoved for a region a client does not hold does nothing.

In 4.1–4.19

How each kind leaves a client’s world:

KindRemovedIts death
Championby ChampionRemoved, at oncekills it; it is held, and comes back
Minion, monster, petby the client, once it has been dead for its death time, 4 seconds unless its character says otherwise; a new SpawnPet for an owner removes that owner’s pet before itstarts that wait; a death naming no killer does nothing
Turretby the client, 1.2 seconds after its death, or after the time its SpawnTurret gives; a lane turret is held where VersionSync’s features keep destroyed turrets (turretsPersist)kills it
Inhibitor, nexusneverBuildingDied plays its death; it is held, and an inhibitor comes back
Missileby DestroyMissile, by its flight ending, or once its caster is removed
Particleby KillParticle, naming it in its body, or once its effect ends
Followeronce the unit it follows is removed
Markeronly by a soft reconnect
Regionby RegionRemoved, once its lifetime runs out (a lifetime of 0 never does), or once the unit it follows is removed

In 4.1–4.19

A client fails on a RegionMoved naming a region it does not hold, one whose lifetime has run out included, and a server MUST NOT send one.

A soft reconnect

SoftReconnect rebuilds a client’s world without a new connection, in two halves. The first marks every unit and every object kept until a checkpoint, inhibitors aside. A create message for a marked net id replaces the marked object rather than keeping the id on it. The second removes every object still marked. In between, a server sends again each object the client is to keep. Each stage either marks or removes.

In 4.1–4.17

The stage of SoftReconnect that marks is 0.

In 4.18–4.20

The stage of SoftReconnect that marks is 1.

Messages about objects a client does not hold

A message whose header names a net id the client does not hold, or whose body names one it needs, does nothing, and the client answers nothing for it. Creating messages are the exception, and so are these:

  • CreateFollower does nothing where the unit it follows is not held.
  • A Replication batch skips the units a client does not hold, and goes unanswered (see Ordering).
  • SoundPlayed naming an owner the client does not hold plays the sound with no place.

SpawnPet takes the net id in its header for the new pet, but does nothing where the owner its body names is not held.

A WaypointGroup or WaypointGroupAtSpeed path for a unit not yet held is applied once an object takes that net id, and its WaypointAck is sent as usual. A server SHOULD send the creating message first.

EnterSight and EnterLocalSight act on the messages they carry whether or not the client holds the unit they name.

Nothing else is held back for later: a message that arrives before the message creating what it names is lost. Ordering says what that requires of a server.

A message naming its sender

A server MUST set any field naming the sender from the connection the message arrived on, and MUST NOT copy the value the message carried; otherwise one player can send messages every other client attributes to another.

Name hashes

Some things a message names are known to a client by name: a spell, an effect a unit carries, a particle, and a place on a unit that particles hang from. A message names one of these by a number worked out from its name.

The number is the ELF hash of the name with its capital letters lowered:

number = 0
for each byte b of the name, with A to Z made a to z:
    number = (number << 4) + b
    high = number & 0xF0000000
    if high != 0:
        number = number ^ (high >> 24)
    number = number & ~high

Every step is worked in 32 bits. Only A to Z change, so SummonerFlash and summonerflash give one number. A particle’s name includes its extension, so the number comes from global_ss_flash.troy and not from global_ss_flash. The nine bytes 123456789 give 0x0678AEE9.

Every byte other than A to Z is taken as it is.

NameNumber
SummonerFlash0x06496EA8
RegenerationPotion0x0E75DC7E
EzrealMysticShotMissile0x05FE9CE5
global_ss_flash.troy0x0058E369
L_HAND0x0725E844

A server MUST name each such thing by the number its name gives.

Ordering and acknowledgement

What arrives in what order, which numbers say that one statement supersedes another, and what a client answers with. A server whose messages arrive out of the order these rules expect has them ignored or lost.

Across channels

The transport delivers a channel’s reliable messages in the order they were sent, and drops an unreliable message that arrives after a later one on the same channel (see Transport). Nothing orders one channel against another.

A client acts on game messages in the order they arrive, whichever channel they arrive on, and holds none back for later but the paths Objects and identifiers names. A message that arrives before the message creating what it names is lost. So:

  • A server MUST send the message creating an object before any message naming it.
  • A server MUST NOT rely on a message on one channel arriving before a message sent later on another. Where one depends on the other, a server sends both on one reliable channel, or sends the second once the transport has acknowledged the first.

The messages creating a unit travel reliably on the events channel, while Replication and WaypointGroup travel unreliably on the transient channel, so either can overtake the message creating the unit it names. A Replication batch skips a unit the client does not hold, and goes unanswered (see below), so a server sends a newly created unit’s values again until a batch naming it is answered.

A server can instead send Replication reliably on the events channel.

Numbers that supersede

Several messages carry a syncId: a number that lets a client tell a newer statement from an older one, or a server tell which statement an answer is for. Each family keeps its own numbers, and compares them in its own way.

FamilyCarried byCountedA client takes a statement
ReplicationReplicationper unit and per group of values, from 0whose number is greater than the last taken for that unit and group, with no wrapping: 0 is never taken
ViewCamera, from a clientper client, counting up as the view moves(a client’s own report)

WaypointGroup, WaypointGroupAtSpeed, Path, PathWithSpeed, EnterSight, and UnitStopped and SpellCastAnswer where they carry one, share one count per unit, from -1. A client takes a statement whose number is equal to the unit’s or ahead of it; a number 230 or more behind counts as ahead, so the count can wrap. A group of movements carries one syncId for every unit in it. A server MUST give each statement about a unit a number equal to or ahead of the last it gave that unit.

A statement a client does not take changes nothing; what follows it still applies.

For replication, a server MUST give each batch carrying a unit a number greater than the last batch carrying that unit, and MUST NOT give one 0. A server SHOULD give every batch a number of its own, so that a TransientAck names one batch.

A client sends a view report again until a server answers with its number, twice the round trip time plus 1/30 of a second apart. A server MUST answer each view report with CameraAck, carrying its number.

What a client answers

A server sendsA client answers
QueryStatusAnswernothing; it asks again with QueryStatus until told the server is ready
WaypointGroup, WaypointGroupAtSpeedWaypointAck for each group, taken or not, naming the units in it that carried a token (see Movement)
ReplicationTransientAck, where every unit the batch names is held
ClockSyncClockReply (see Time)

A client sends these answers when it plays a match, not while it plays back a stream.

Space

How positions, distances and directions are carried, whichever system carries them, and what a map gives that nothing on the wire carries.

Units and axes

Positions and distances are in world units. The ground is the plane of x and z, and y is height. A field that carries a position on the ground carries x and z; one that carries a point in the world carries x, y and z. Where a message leaves height out, a receiving end takes it from the ground beneath.

A position travels as a 32-bit float on each axis unless its definition says otherwise. Where the paths of Movement and MovementAtSpeed are compact, they carry their points as integers measured from the map’s origin, and Movement says how those points are worked out.

Directions

A direction is carried as a vector, not as an angle:

  • A unit’s facing in the movement state EnterSight carries is a pair along the ground, x and z.
  • UnitStopped, MissileState, a particle’s facing and a view’s direction in Camera carry x, y and z.
  • FaceDirection carries x, y and z, and turns the unit to face along them.

FaceDirection turns the unit over the time it gives where its flags say so, and at once otherwise.

A champion carries no facing of its own when created.

A champion faces as its map’s table of spawn positions says (see CreateChampion).

CreateNeutral carries a point to face rather than a direction: the monster faces from where it stands toward that point, or along +z where the two are the same.

A prop of scenery carries angles instead: MapProp gives its turn as pitch, yaw and roll, in degrees, where yaw 0 faces +z and yaw 90 faces +x. For an active prop, the same three fields are a direction vector.

Maps

VersionSync names the map to load by number. A client takes a map’s buildings (see Objects and identifiers), spawn positions and path origin (see Movement) from its own data (see The client’s data), and can load only a map it has data for.

The maps a client has data for include these:

mapMapOrigin of its paths
1Summoner’s Rift6991, 7223
8The Crystal Scar6947, 6609
10The Twisted Treeline7708, 7227
12The Howling Abyss6560, 6309

In 4.18–4.20

A client also has data for map 11, a second Summoner’s Rift, whose paths have their origin at 7358, 7412.

Time

Which clocks a match runs on, and which of them each time on the wire is measured against.

How a time is carried

A time is in seconds, as a 32-bit float, unless its definition says otherwise. A field is either a moment, read against a clock, or a duration, which starts when the message arrives. Every definition says which.

Exceptions:

  • Paused carries the time left in a hold as a whole number of seconds.
  • A stream’s chunk and key frame intervals (StreamMetadata) are in milliseconds.

In 4.17

The time between two of a stream’s records (StreamRecord) is in milliseconds.

In 4.18–4.20

MapPropChanged gives when its change begins in milliseconds of match time.

The match clock

The match runs on a server’s clock, which counts seconds from 0 as play begins. ClockSync states where it stands, and a client sets its own clock to that, plus its allowance for how late the statement arrived. A client answers with ClockReply, from which a server measures the round trip. A server can report the round trip it measured with ClockConvergence.

In 4.1–4.19

A client takes the round trip ClockConvergence reports into its allowance for lateness.

A server sends ClockSync with 0 as play begins (see Joining a match), and again whenever it means a client’s clock to catch up with its own.

In 4.1–4.19

A client’s match clock does not run until the first ClockSync arrives, which sets it. After that it runs on the client’s own timer, and a later ClockSync only corrects it, however long a server leaves between them.

A client shows the match’s time counted from the moment on the match clock at which the match began.

MatchStarted gives that moment, and a client shows zero while the match clock is before it.

Moments on the match clock include:

  • when a monster arrives (CreateNeutral’s spawnAt, where it carries one);
  • when a prop’s animation starts (MapPropChanged, where it carries one);
  • when an assisting unit last dealt damage (ClientEvent);
  • when a champion’s passive comes off cooldown, where a client is told it (see Replication).

A server MUST state each of these on the clock it sends in ClockSync.

In 4.1–4.19

The game clock

A client also runs a game clock of its own, whose pace GameSpeed sets, from 0 to 10 times normal, and which ClockSync does not set. How long a unit stays dead, how long an object lives, and how long a client waits before removing a dead unit (see Objects and identifiers) run on it. A server that runs a match at other than normal speed MUST send GameSpeed with that speed, or those durations run apart from its own.

A stream’s clock

A watching client plays a stream against a clock of the stream’s own, which the stream’s records set (see Watching a match).

Sides and slots

Values many systems share: which side something is on, and how a unit’s spell, item and effect slots are numbered.

Sides

A side is 100 or 200, for the two sides that play, or 300 for what belongs to neither, such as a monster of no side. Where a field takes 0, it names no side; its note says what that means. A few fields carry a side in another form, and their notes say which.

Roster lists the players of each side, and a player’s place in that list is their seat (see Objects and identifiers).

Spell slots

A champion has two books of spells. Its own book holds these slots:

SlotHolds
0 to 3the champion’s spells; 3 is its ultimate
4 onthe spell of the item in the inventory slot four below, for each such slot
after thosespells a server places for the match’s own purposes

Its summoner book holds the two summoner spells, in slots 0 and 1.

A message that names a spell slot either carries a flag, set for the summoner book and clear for the champion’s own, or names the champion’s own book only. A cast’s description (SpellCast) carries no flag: the spell’s own data says whether it is a summoner spell.

A cast’s slot also takes 64 to 72 for a basic attack and 73 to 81 for a critical one.

A cast’s slot also takes 255, for a cast from no slot.

A server MUST NOT name a champion book slot beyond the book’s last slot.

In 4.1–4.6

A champion’s own book ends at slot 60. A client ignores an Autocast or a SpellToggled naming a slot above 60, and applies a SpellInSlot or a SpellCostChanged naming one while reporting it as an error. A server MUST NOT name a champion book slot above 60.

In 4.7–4.20

A champion’s own book runs on to slot 62: slot 61 is using an object on the field (see UseObject), and slot 62 the champion’s passive. A server MUST NOT name a champion book slot above 62.

Inventory slots

A champion’s inventory holds the six items a player sees and uses in slots 0 to 5, and further slots after them up to its last.

An item is cast from the spell slot four above its inventory slot, and moving an item moves its spell with it. A server MUST NOT name an inventory slot beyond the inventory’s last slot.

Slot 6 holds the trinket, slot 7 the item recalling uses, and slots from 8 on items held for the match’s own purposes, which nothing a player sees shows. A client asks to swap only slots 0 to 6 (SwapItems).

In 4.1–4.6

A champion’s inventory ends at slot 38. A client ignores a RemoveItemAnswer, InventorySlot, ItemAdded, ItemUsed or ItemCharges naming a slot above 38. A server MUST NOT name an inventory slot above 38.

In 4.7–4.20

A champion’s inventory ends at slot 39. A server MUST NOT name an inventory slot above 39.

Effect slots

Adding an effect to a slot replaces whatever held it, and removing one empties the slot whatever its name.

Each unit has 64 slots for the effects it carries, 0 to 63. A slot outside that range does nothing.

The client’s data

What a server needs that no message carries, and takes from the files a client installs: the buildings and spawn points of a map, the ground units walk on, and the figures of champions, items and spells. A server SHOULD take its figures from these files: a client draws a match from them, and figures from elsewhere disagree with what it shows.

What a server reads

  • The buildings of a map: the names a client knows its turrets, inhibitors and nexuses by, from which Objects and identifiers works out the identifier of each.
  • The spawn points: where each side’s champions begin.
  • The ground: the grid a map’s units walk on, which a server needs to find paths.
  • The figures: each champion’s base statistics, each item’s price and what it is built from, and each spell’s cooldowns, costs and ranges, which a server states through replication and SpellCast.

Movement takes the origin of a path from the ground.

In 4.1–4.17

The client has maps 1, 8, 10 and 12, and no map 11.

In 4.18–4.19

The client has maps 1, 8, 10, 11 and 12. Map 11’s buildings are not scene objects: its MapObjects.mob holds them, named by the same rules, with Turret_OrderTurretShrine and Turret_ChaosTurretShrine for its shrine turrets, and the client creates them from it as it does scene objects. Map 11 has no ground grid.

A client installs its files under one root, with the paths below; an install that packs them into archives keeps the same paths inside.

Buildings. LEVELS/Map1/Scene/room.dsc lists a map’s scene objects, one line each: a file name and a quality number. Each object’s own file sits beside it and gives its name. A client creates no object from a name holding _Destroyed or _FB. On map 1 the names run Turret_T<side>_<lane>_<number> for a lane turret, Barracks_T<side>_<lane>1 for an inhibitor and HQ_T<side> for a nexus, side 1 for Order and 2 for Chaos and lanes L, C and R, with a shrine turret for each side; the numbers differ between the sides, and a server MUST take the names from the files.

In 4.1–4.19

Each object’s file is .sco as text or .SCB as binary, and gives its name on its Name= line.

In 4.1–4.19

CreateTurret names a building by its name with _A after it.

In 4.1–4.19

A CreateTurret naming no building does nothing.

In 4.1–4.19

A name’s opening says what the object is: Turret a turret, Barracks without Spawn an inhibitor, HQ_ a nexus. A client creates no object the map’s object list below already holds.

Objects and spawn points. A champion begins at its side’s spawn point, __Spawn_T1 for Order and __Spawn_T2 for Chaos.

In 4.1–4.19

A champion begins at its side’s spawn point moved by an offset from DATA/Characters/HeroSpawnOffsets.inibin, read from the section Order<n> or Chaos<n> under the keys Pos<i> and Facing<i>, where i is one more than CreateChampion’s spawn index. A spawn index of 6 or more begins the champion on the spawn point itself.

In 4.1–4.19

In the section’s name, n is how many players and bots the side has. A champion begun on the spawn point itself faces along +X.

In 4.1–4.19

LEVELS/Map1/Scene/MapObjects.mob holds the objects that are not buildings: each side’s spawn point, the minion spawners, navigation points, the marker of the level’s size and the props. It opens with 16 bytes: a fixed tag, a 32-bit version (2), a 32-bit count and 4 reserved bytes. A record of 128 bytes follows for each object: its name, 62 bytes padded with zeros; a byte for its kind; a byte that lets it be placed regardless of collision; 32-bit floats for its position, rotation and scale (three each) and its bounding box (six); and a 32-bit skin.

The ground. A client walks units on LEVELS/Map1/AIPath.aimesh_ngrid, a binary grid. Its layout is unspecified.

In 4.1–4.19

The grid’s name is the one the mode’s navigation setting gives.

The figures. Each is an inibin file: a champion’s base statistics in DATA/Characters/<Champion>/<Champion>.inibin; an item, its price among its figures, in DATA/Items/<id>.inibin; and summoner, item and shared spells in DATA/Spells/<Spell>.inibin.

In 4.1–4.19

Map 1 adds LEVELS/Map1/Items.inibin to the items, and figures for a whole mode are in DATA/Globals/, such as CLASSIC_Stats.inibin and HealthGain.inibin.

In 4.1–4.19

A champion’s spells and attacks are in DATA/Characters/<Champion>/Spells/<Spell>.inibin.

Joining a match

What passes between a client and a server from connection until play begins, in order.

Starting a client

A client learns where to connect from its command line. It takes three arguments it needs nothing in, which can be empty, and then a fourth holding four words separated by single spaces: the server’s IPv4 address, its UDP port, the key (see Transport), and the player id the client registers as. The client connects to that address and port, registers as that player, and enciphers its proof under that key.

Registering

A client’s first payload is Register, on the registration channel. The note on Registered says what a server answers with: one answer for every seat.

A client knows the answer meant for it by the player id it registered as, not by the client id, and takes the client id that answer carries as its own. Every other answer tells it which client id stands for which player.

A client waits 30 seconds for the answer naming its own player id. Then it offers its player to wait another 30 seconds or to give up, and leaves on giving up.

In 4.1–4.19

The first answer for a client id stands, and a later one for the same client id changes nothing. An answer for its own player id arriving during play has a client send ReconnectedInMatch.

In 4.1–4.19

A client uses which client id stands for which player for names, sides and loading cards. It takes an answer whenever it arrives, while loading or in play, and one saying a client has dropped changes nothing it shows.

Asking whether a server is ready

A client then sends QueryStatus over and over. A server MUST answer each one with QueryStatusAnswer, at least until it has answered that it is ready. While the answers say the server is not ready, a client stays on a black screen and keeps asking. A server that needs time before a match can begin answers that it is not ready until it is.

A server MUST also answer each QueryStatus that comes after its first ready answer.

Stating a build

Once an answer says the server is ready, a client sends ClientVersion once. A server answers with VersionSync, and a client loads only where its agreement says the builds agree.

VersionSync names the map to load and everyone at the match.

In 4.1–4.19

A client loads only where VersionSync sets agreement.buildMatches. With it clear, the client shows its player its own version text beside the one the message carries, and ends.

In 4.1–4.19

A client never compares the two otherwise: the message’s build text appears only in that notice. agreement.matched changes some of what chat and the options offer, and nothing about loading. A server leaves reportsToFile and reportingReady clear, since they have a client write metrics to a file of its own and report to the addresses the message carries.

No bit of features is needed for a match to load, and a match with every bit clear has none of the features. A client’s own defaults for most of the bits are in its file DATA/CFG/defaults/GameFeatures.cfg, one key each, though not in the order of the bits. A server MAY start from those defaults, and leaves the bits that report metrics clear.

Taking a seat

Straight after VersionSync, a client sends JoinSide on the roster channel. A server answers with one Roster, then a SeatName and a SeatChampion for each seat a player holds.

In 4.1–4.19

Every seat a player holds needs its place in Roster, its SeatName and its SeatChampion; a client shows a seat it lacks them for as an empty card. A later SeatName replaces the one before it. A client whose own seat Roster leaves out knows no side for its player, and announcements meant for allies do not show.

Loading

A client reports how far loading has got with LoadingProgress, repeatedly through loading. A server answers each report with SeatLoadProgress on the transient channel, carrying the report’s figures under the seat that reported. A client goes on reporting after its progress reaches 100, until play begins.

A client waits on no other seat. SpawnStart, SpawnEnd and StartGame are what move a client on, and StartGame alone ends its loading. A server that means its players to begin together sends StartGame to none of them until every client has sent ClientReady.

A client writes all ones where its player id goes in LoadingProgress.

A server MUST put the seat’s player id in SeatLoadProgress: the loading screen shows a seat’s card from the VersionSync seat with that id.

In 4.1–4.19

The loading screen

What a client draws while it loads comes from what it has been sent by then (see the spawn run below for what it takes before CharacterSelected).

A player’s card is built from several messages. Its place on the screen is that seat’s place in the Roster, and its name is that player’s SeatName. The registration answers (Registered) pair each player with a client id, and the latest SeatLoadProgress for that client gives the card its progress and, on the client’s own card only, its ping. The first SeatLoadProgress after the player’s SeatChampion sets the card up: its portrait and the champion’s name, from that SeatChampion’s champion and skin, then everything else from the VersionSync seat whose player id the SeatLoadProgress names. A card with no SeatChampion yet shows a black portrait, and one with no registration or no SeatLoadProgress yet says it is not connected. A later SeatChampion does not change a card already set up.

In 4.1–4.19

Each SeatLoadProgress updates the card of the seat it names, and a client draws its own card only as a server returns its own reports.

From the VersionSync seat a card takes:

  • the two summoner spells, as the name hashes of the spells, each drawn as its icon, or as a plain square for zero or a hash that names no spell;
  • the profile icon, the art of icon 0 for a negative number or one with no art;
  • the standing, drawn as a frame over the card where the client’s own images have one of that name (UNRANKED and BRONZE draw nothing);
  • one badge: the ally badge for the card’s own side, otherwise the enemy badge, each drawn where it is one of the badges the client’s own data names;
  • from the flags, bit 1, which shows the skin’s older portrait art where it has one.

A seat’s level is not drawn. A seat with flags bit 0 set is a bot’s, and the client draws its card from the seat alone, needing no other message: the client’s own name for a bot of that champion (not the seat’s bot name), the champion’s portrait in the bot’s skin with the skin’s name, summoner spells the client’s own data picks for the champion, mode and difficulty, and 100%. A seat on neither side 100 nor 200 has no card.

Between the two rows, where both have a card, a client shows the two sides’ team names, each as its tag in square brackets, a space and its name, and nothing for a side whose name is empty: names Team 1 and Team 2 under tags T1 and T2 show as [T1] Team 1 and [T2] Team 2 either side of the versus emblem. A tip set in VersionSync to show on the loading screen takes their place for its duration, and then they appear. The match’s variants can give the screen a background picture of their naming; with none, it has none.

The spawn run

Once a character is settled, a client sends CharacterSelected, once.

Until it sends CharacterSelected, a client drops every message but VersionSync, QueryStatusAnswer, MatchIdentity, SeatLoadProgress and GameEnded, apart from what arrives on the registration and roster channels, and keeps nothing it drops for later. A server MUST NOT send any of the spawn run before CharacterSelected arrives.

A client can send CharacterSelected before its progress reaches 100.

A server answers with SpawnStart, states everything on the field as play opens, and closes the run with SpawnEnd. A run carries:

A turret’s CreateTurret can come on its own or inside the EnterSight that brings the turret into view.

A client takes these in any order within the run.

A run MUST carry at least SpawnStart, the CreateChampion carrying the client’s own client id, and SpawnEnd. Given only those, a client still enters play, showing its champion’s portrait, health, resource and spells. It draws the champion on the map only once an EnterSight places it there, with its name and health bar over it.

A client’s shop stays empty until its own champion’s Loadout arrives (see The shop).

A client answers each Replication batch with a TransientAck naming that batch’s syncId. It sends one answer for each batch, in the order the batches came, including a batch that repeats the syncId of the batch before it.

A client answers the batches the run carried once SpawnEnd arrives.

Starting play

A client sends ClientReady after SpawnEnd and after its answers to the run’s batches, while it is still reporting its loading. A server MUST answer with StartGame, and later sends MatchStarted, with other messages free to come between them; MatchStarted carries 0 (see Time).

A client whose connection drops before play begins ends rather than connecting again. A server follows StartGame with a ClockSync, and a client enters play once it has both. The first ClockSync carries 0.

In 4.1–4.19

Between ClientReady and StartGame a client keeps its loading screen up with its own progress full, and sends LoadingProgress again about every half a second. It waits as long as it takes: nothing in it gives up on a server that is slow to start play.

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).

Register

What a client sends first. It arrives before the connection has a cipher state, so the payload travels in the clear apart from the proof.

Definition.

In 4.1–4.17

Command 0 on registration, sent by the client, reliable.

FieldTypeWhat it is
leadingbytes, 3Arbitrary; it carries no meaning.
clientIdu32A client writes zero here.
playerIdi64Who the sender claims to be. The proof is what settles the claim.
versionu32The build the client runs, with each part written out and run together, so 4.17.0.233 arrives as 41700233 and 4.17.0.267 as 41700267. A client always carries it, and the answer a server carries back repeats the same number.
proofi64The player id enciphered with the 16-byte key; a plain copy where the client has no key.
trailingbytes, 4Arbitrary; it carries no meaning.
Vectors (1)

one-on-4-17

In 4.18–4.20

Command 0 on registration, sent by the client, reliable.

FieldTypeWhat it is
leadingbytes, 3Arbitrary; it carries no meaning.
clientIdu32A client writes zero here.
playerIdi64Who the sender claims to be. The proof is what settles the claim.
versionu32The build the client runs, with each part written out and run together, so 4.20.0.315 arrives as 42000315. A client always carries it, and the answer a server carries back repeats the same number.
proofi64The player identifier and nothing else, enciphered under the key both ends already hold. Deciphering it and finding the identifier beside it is what shows the sender holds the key. A client enciphers the player identifier the request carries.
trailingbytes, 4Arbitrary; it carries no meaning.
Vectors (1)

proof-on-4-20

Registered

What a server answers a registration with, naming a player in the match and the seat they occupy. It shares its command value with the request it answers, which travels the other way, and it is one fixed size.

Definition.

In 4.1–4.17

Command 0 on registration, sent by the server, reliable.

Straight after a request a server sends one answer for every seat, and every one of them carries that request’s build and proof back.

FieldTypeWhat it is
leadingbytes, 3Unused; a server writes zero.
clientIdu32The client id playerId holds. Where playerId is the client’s own, the client takes this client id as its own and goes on. A watching client takes the champion of the player holding this client id as its own, so a server answers one with a client id no player in the streamed match holds (see Watching a match).
playerIdi64Who occupies that seat.
versionu32The build the client said it runs. Where the answer follows a request, a server writes the number that request carried, and otherwise the build itself. A client ignores it.
proofbytes, 8The eight bytes a request fills with its proof. Where the answer follows a request, a server writes what that request carried, and otherwise zero. A client ignores them.
trailingbytes, 4Unused; a server writes zero.
Vectors (1)

one-on-4-17

In 4.18–4.20

Command 0 on registration, sent by the server, reliable.

Straight after a request a server sends one answer for every seat, and every one of them carries that request’s build and proof back.

FieldTypeWhat it is
leadingbytes, 3Unused; a server writes zero. It occupies the same three bytes a request uses.
clientIdu32The client id the named player holds, counted from zero. A watching client takes the champion of the player holding this client id as its own, so a server answers one with a client id no player in the streamed match holds (see Watching a match).
playerIdi64Who occupies that seat.
versionu32The build the client said it runs. Where the answer follows a request, a server writes the number that request carried, and otherwise the build itself. A client ignores it.
proofbytes, 8The eight bytes a request fills with its proof. Where the answer follows a request, a server writes what that request carried, and otherwise zero. A client ignores them.
trailingbytes, 4Unused; a server writes zero.
Vectors (1)

carrying-a-request-back-on-4-20

QueryStatus

What a client sends to ask a server for its state. It carries nothing of its own. The header names no object: it carries zero.

Definition.

In every range of this book

Command 20 on requests, sent by the client, reliable.

No body.

Vectors (2)

one-on-4-17, bare-on-4-20

QueryStatusAnswer

What a server returns when asked whether it is ready. The header names no object: a server writes zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10135
4.11–4.20136
FieldTypeWhat it is
readyu8Whether the server is ready. While answers say it is not, a client keeps asking and goes no further, which Joining a match sets out. Values: 0 no, 1 yes.
Vectors (5)

not-ready-on-4-10, one-on-4-10, one-on-4-17, not-ready-on-4-20, one-on-4-20

ClientVersion

What a client sends to state which build it is. The header names no object: it carries zero.

Definition.

In every range of this book

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.10188
4.11–4.20189
FieldTypeWhat it is
clientIdu32The client id of the client reporting.
texttext, 256 bytesThe build, as text. The text ends at a zero byte.
Vectors (4)

one-on-4-10, public-build-on-4-10, one-on-4-17, public-build-on-4-20

VersionSync

What a server sends once a client has said which build it runs, saying whether the two agree. The header names no object: it carries zero.

Definition.

In 4.1

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own.
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants2 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features4-byte bitsWhich parts of the match are turned on, one bit each.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way. It also has a client lower a hero’s bounty when the hero kills a minion.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.altControlsbit 7Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded.
features.shopUndobit 8The shop’s undo; clear, it is never enabled.
features.skillshotOutlinebit 9While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 10The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 11Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 12Changes the order of the kinds of minion within a wave.
features.turretRangebit 13Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit14bit 14Unused; a server writes zero.
features.skinParticlesbit 15Skin-specific particle effects for units in a skin other than the first.
features.bit16bit 16Unused; a server writes zero.
features.hardwareMetricsbit 17A report of hardware and frame rate at the end of the match.
features.unusedbit 18 to 31Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
Vectors (1)

one-on-4-1

In 4.2

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own.
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features4-byte bitsWhich parts of the match are turned on, one bit each. A client takes them from the first VersionSync alone and keeps them for the match.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way. It also has a client lower a hero’s bounty when the hero kills a minion.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.altControlsbit 7Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded.
features.shopUndobit 8The shop’s undo; clear, it is never enabled.
features.skillshotOutlinebit 9While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 10The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 11Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 12Changes the order of the kinds of minion within a wave.
features.turretRangebit 13Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit14bit 14Unused; a server writes zero.
features.skinParticlesbit 15Skin-specific particle effects for units in a skin other than the first.
features.bit16bit 16Unused; a server writes zero.
features.hardwareMetricsbit 17A report of hardware and frame rate at the end of the match.
features.lagMetricsbit 18Lag figures in the network report.
features.logServerAddressbit 19It changes nothing a client shows.
features.unusedbit 20 to 31Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
Vectors (1)

one-on-4-2

In 4.3–4.4

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features4-byte bitsWhich parts of the match are turned on, one bit each. A client takes them from the first VersionSync alone and keeps them for the match.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way. It also has a client lower a hero’s bounty when the hero kills a minion.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.altControlsbit 7Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded.
features.shopUndobit 8The shop’s undo; clear, it is never enabled.
features.skillshotOutlinebit 9While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 10The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 11Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 12Changes the order of the kinds of minion within a wave.
features.turretRangebit 13Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit14bit 14Unused; a server writes zero.
features.skinParticlesbit 15Skin-specific particle effects for units in a skin other than the first.
features.bit16bit 16Unused; a server writes zero.
features.hardwareMetricsbit 17A report of hardware and frame rate at the end of the match.
features.bit18bit 18Unused; a server writes zero.
features.lagMetricsbit 19Lag figures in the network report.
features.eventReportsbit 20Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 21It changes nothing a client shows.
features.particleOptionbit 22An extra option for drawing particles, in effect from the match’s start; what it changes on screen is not recorded.
features.unusedbit 23 to 31Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages8 × u8Which of the reports a client sends are wanted, one place each, in this order: ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-3

In 4.5

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features4-byte bitsWhich parts of the match are turned on, one bit each. A client takes them from the first VersionSync alone and keeps them for the match.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way. It also has a client lower a hero’s bounty when the hero kills a minion.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.altControlsbit 7Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded.
features.shopUndobit 8The shop’s undo; clear, it is never enabled.
features.recommendedPagesbit 9Pages of recommended items in the shop for new players.
features.skillshotOutlinebit 10While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 11The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 12Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 13Changes the order of the kinds of minion within a wave.
features.turretRangebit 14Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit15bit 15Unused; a server writes zero.
features.bit16bit 16Unused; a server writes zero.
features.networkMetricsbit 17Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 18A report of hardware and frame rate at the end of the match.
features.bit19bit 19Unused; a server writes zero.
features.lagMetricsbit 20Lag figures in the network report.
features.eventReportsbit 21Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 22It changes nothing a client shows.
features.particleOptionbit 23An extra option for drawing particles, in effect from the match’s start; what it changes on screen is not recorded.
features.unusedbit 24 to 31Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages10 × u8Which of the reports a client sends are wanted, one place each, in this order: ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-5

In 4.6

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features4-byte bitsWhich parts of the match are turned on, one bit each. A client takes them from the first VersionSync alone and keeps them for the match.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way. It also has a client lower a hero’s bounty when the hero kills a minion.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.altControlsbit 7Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded.
features.shopUndobit 8The shop’s undo; clear, it is never enabled.
features.recommendedPagesbit 9Pages of recommended items in the shop for new players.
features.skillshotOutlinebit 10While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 11The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 12Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 13Changes the order of the kinds of minion within a wave.
features.turretRangebit 14Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit15bit 15Unused; a server writes zero.
features.bit16bit 16Unused; a server writes zero.
features.networkMetricsbit 17Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 18A report of hardware and frame rate at the end of the match.
features.bit19bit 19Unused; a server writes zero.
features.lagMetricsbit 20Lag figures in the network report.
features.eventReportsbit 21Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 22It changes nothing a client shows.
features.particleOptionbit 23An extra option for drawing particles, in effect from the match’s start; what it changes on screen is not recorded.
features.unusedbit 24 to 31Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages11 × u8Which of the reports a client sends are wanted, one place each, in this order: ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-6

In 4.7

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features4-byte bitsWhich parts of the match are turned on, one bit each. A client takes them from the first VersionSync alone and keeps them for the match.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way. It also has a client lower a hero’s bounty when the hero kills a minion.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.altControlsbit 7Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded.
features.shopUndobit 8The shop’s undo; clear, it is never enabled.
features.recommendedPagesbit 9Pages of recommended items in the shop for new players.
features.skillshotOutlinebit 10While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 11The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 12Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 13Changes the order of the kinds of minion within a wave.
features.turretRangebit 14Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit15bit 15Unused; a server writes zero.
features.bit16bit 16Unused; a server writes zero.
features.networkMetricsbit 17Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 18A report of hardware and frame rate at the end of the match.
features.bit19bit 19Unused; a server writes zero.
features.lagMetricsbit 20Lag figures in the network report.
features.eventReportsbit 21Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 22It changes nothing a client shows.
features.unusedbit 23 to 31Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages11 × u8Which of the reports a client sends are wanted, one place each, in this order: ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-7

In 4.8

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features4-byte bitsWhich parts of the match are turned on, one bit each. A client takes them from the first VersionSync alone and keeps them for the match.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way. It also has a client lower a hero’s bounty when the hero kills a minion.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.shopUndobit 7The shop’s undo; clear, it is never enabled.
features.recommendedPagesbit 8Pages of recommended items in the shop for new players.
features.skillshotOutlinebit 9While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 10The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 11Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 12Changes the order of the kinds of minion within a wave.
features.turretRangebit 13Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit14bit 14Unused; a server writes zero.
features.skinParticlesbit 15Skin-specific particle effects for units in a skin other than the first.
features.bit16bit 16Unused; a server writes zero.
features.hardwareMetricsbit 17A report of hardware and frame rate at the end of the match.
features.bit18bit 18Unused; a server writes zero.
features.lagMetricsbit 19Lag figures in the network report.
features.eventReportsbit 20Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 21It changes nothing a client shows.
features.unusedbit 22 to 31Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages13 × u8Which of the reports a client sends are wanted, one place each, in this order: ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour, skin swaps, failure to connect. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-8

In 4.9

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features8-byte bitsWhich parts of the match are turned on, one bit each.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.shopUndobit 7The shop’s undo; clear, it is never enabled.
features.recommendedPagesbit 8Pages of recommended items in the shop for new players.
features.skillshotOutlinebit 9While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 10The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 11Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 12Changes the order of the kinds of minion within a wave.
features.turretRangebit 13Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit14bit 14Unused; a server writes zero.
features.skinParticlesbit 15Skin-specific particle effects for units in a skin other than the first.
features.networkMetricsbit 16Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 17A report of hardware and frame rate at the end of the match.
features.lagMetricsbit 18Lag figures in the network report.
features.eventReportsbit 19Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 20It changes nothing a client shows.
features.bit21bit 21Unused; a server writes zero.
features.bit22bit 22Unused; a server writes zero.
features.traceroutebit 23A trace of the route to the server, begun after this message and reported later, where reporting is on.
features.unusedbit 24 to 55Unused; a server writes zero.
features.unusedHighbit 56 to 63Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages14 × u8Which of the reports a client sends are wanted, one place each, in this order: ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour, skin swaps, failure to connect, traceroute. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-9

In 4.10–4.11

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

BuildsCommand
4.1083
4.1184

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features8-byte bitsWhich parts of the match are turned on, one bit each.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.shopUndobit 7The shop’s undo; clear, it is never enabled.
features.recommendedPagesbit 8Pages of recommended items in the shop for new players.
features.skillshotOutlinebit 9While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 10The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 11Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 12Changes the order of the kinds of minion within a wave.
features.turretRangebit 13Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit14bit 14Unused; a server writes zero.
features.skinParticlesbit 15Skin-specific particle effects for units in a skin other than the first.
features.networkMetricsbit 16Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 17A report of hardware and frame rate at the end of the match.
features.lagMetricsbit 18Lag figures in the network report.
features.eventReportsbit 19Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 20It changes nothing a client shows.
features.bit21bit 21Unused; a server writes zero.
features.jungleTimersbit 22Timers for the jungle camps on the screen.
features.traceroutebit 23A trace of the route to the server, begun after this message and reported later, where reporting is on.
features.unusedbit 24 to 55Unused; a server writes zero.
features.unusedHighbit 56 to 63Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages14 × u8Which of the reports a client sends are wanted, one place each, in this order: ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour, skin swaps, failure to connect, traceroute. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (2)

one-on-4-10, one-on-4-11

In 4.12–4.13

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features8-byte bitsWhich parts of the match are turned on, one bit each.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.shopUndobit 7The shop’s undo; clear, it is never enabled.
features.bit8bit 8Unused; a server writes zero.
features.skillshotOutlinebit 9While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 10The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 11Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 12Changes the order of the kinds of minion within a wave.
features.turretRangebit 13Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit14bit 14Unused; a server writes zero.
features.skinParticlesbit 15Skin-specific particle effects for units in a skin other than the first.
features.networkMetricsbit 16Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 17A report of hardware and frame rate at the end of the match.
features.lagMetricsbit 18Lag figures in the network report.
features.eventReportsbit 19Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 20It changes nothing a client shows.
features.jungleTimersbit 21Timers for the jungle camps on the screen.
features.traceroutebit 22A trace of the route to the server, begun after this message and reported later, where reporting is on.
features.unusedbit 23 to 54Unused; a server writes zero.
features.unusedHighbit 55 to 63Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages18 × u8Which of the reports a client sends are wanted, one place each, in this order: game start, game end, ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour, skin swaps, failure to connect, traceroute, network instrumentation, peer network instrumentation. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-12

In 4.14

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features8-byte bitsWhich parts of the match are turned on, one bit each.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way.
features.audioBackendbit 5Which sound system the client uses; which setting picks which is not recorded.
features.animatedCursorsbit 6Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.shopUndobit 7The shop’s undo; clear, it is never enabled.
features.bit8bit 8Unused; a server writes zero.
features.skillshotOutlinebit 9While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 10The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 11Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.waveOrderbit 12Changes the order of the kinds of minion within a wave.
features.turretRangebit 13Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit14bit 14Unused; a server writes zero.
features.skinParticlesbit 15Skin-specific particle effects for units in a skin other than the first.
features.networkMetricsbit 16Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 17A report of hardware and frame rate at the end of the match.
features.lagMetricsbit 18Lag figures in the network report.
features.eventReportsbit 19Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 20It changes nothing a client shows.
features.jungleTimersbit 21Timers for the jungle camps on the screen.
features.traceroutebit 22A trace of the route to the server, begun after this message and reported later, where reporting is on.
features.bit23bit 23Unused; a server writes zero.
features.bit24bit 24Unused; a server writes zero.
features.bit25bit 25Unused; a server writes zero.
features.clockSyncbit 26The game’s clock is nudged to keep with the system’s at normal speed; in a replay, play follows the game’s clock.
features.unusedbit 27 to 58Unused; a server writes zero.
features.unusedHighbit 59 to 63Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages18 × u8Which of the reports a client sends are wanted, one place each, in this order: game start, game end, ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour, skin swaps, failure to connect, traceroute, network instrumentation, peer network instrumentation. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-14

In 4.15

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features8-byte bitsWhich parts of the match are turned on, one bit each.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way.
features.animatedCursorsbit 5Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.shopUndobit 6The shop’s undo; clear, it is never enabled.
features.bit7bit 7Unused; a server writes zero.
features.skillshotOutlinebit 8While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 9The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 10Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.bit11bit 11Unused; a server writes zero.
features.turretRangebit 12Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit13bit 13Unused; a server writes zero.
features.skinParticlesbit 14Skin-specific particle effects for units in a skin other than the first.
features.networkMetricsbit 15Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 16A report of hardware and frame rate at the end of the match.
features.lagMetricsbit 17Lag figures in the network report.
features.eventReportsbit 18Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 19It changes nothing a client shows.
features.jungleTimersbit 20Timers for the jungle camps on the screen.
features.traceroutebit 21A trace of the route to the server, begun after this message and reported later, where reporting is on.
features.bit22bit 22Unused; a server writes zero.
features.bit23bit 23Unused; a server writes zero.
features.bit24bit 24Unused; a server writes zero.
features.clockSyncbit 25The game’s clock is nudged to keep with the system’s at normal speed; in a replay, play follows the game’s clock.
features.unusedbit 26 to 57Unused; a server writes zero.
features.unusedHighbit 58 to 63Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages18 × u8Which of the reports a client sends are wanted, one place each, in this order: game start, game end, ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour, skin swaps, failure to connect, traceroute, network instrumentation, peer network instrumentation. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-15

In 4.16

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features8-byte bitsWhich parts of the match are turned on, one bit each.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way.
features.animatedCursorsbit 5Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.shopUndobit 6The shop’s undo; clear, it is never enabled.
features.bit7bit 7Unused; a server writes zero.
features.skillshotOutlinebit 8While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 9The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 10Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.bit11bit 11Unused; a server writes zero.
features.turretRangebit 12Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit13bit 13Unused; a server writes zero.
features.skinParticlesbit 14Skin-specific particle effects for units in a skin other than the first.
features.networkMetricsbit 15Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 16A report of hardware and frame rate at the end of the match.
features.lagMetricsbit 17Lag figures in the network report.
features.eventReportsbit 18Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 19It changes nothing a client shows.
features.jungleTimersbit 20Timers for the jungle camps on the screen.
features.traceroutebit 21A trace of the route to the server, begun after this message and reported later, where reporting is on.
features.bit22bit 22Unused; a server writes zero.
features.bit23bit 23Unused; a server writes zero.
features.bit24bit 24Unused; a server writes zero.
features.clockSyncbit 25The game’s clock is nudged to keep with the system’s at normal speed; in a replay, play follows the game’s clock.
features.bit26bit 26Unused; a server writes zero.
features.farmBountybit 27Kill gold also counts assists and minion gold, and a death scales runs down rather than clearing them.
features.turretsPersistbit 28Turrets stay as objects after they are destroyed.
features.stateFlagsbit 29A unit’s can-move, can-attack, can-cast and like states are set on or off rather than counted up and down.
features.unusedbit 30 to 61Unused; a server writes zero.
features.unusedHighbit 62 to 63Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages18 × u8Which of the reports a client sends are wanted, one place each, in this order: game start, game end, ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour, skin swaps, failure to connect, traceroute, network instrumentation, peer network instrumentation. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-16

In 4.17

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.reportsToFilebit 1Set to have a client also write its reports to a file of its own, where it does not send them as event reports (features eventReports clear).
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second, test place to report to, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8Which display time to hold the note up for, applying only where tips are enabled and shown somewhere. tip, tipColour and tipDuration each select one of the notes, colourings and display times a client defines, tip counted modulo the number of notes. Where a value selects none, or the time is not above zero, a client shows no note.
tipFlags1-byte bitsHow the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them.
tipFlags.enabledbit 0Set where there is a note. A client shows the note only where this and loadingScreen or inGame are set, and shows none where tip, tipColour or tipDuration names nothing.
tipFlags.replaybit 1Of no effect; a client clears it, with enabled, while playing a replay.
tipFlags.loadingScreenbit 2Set to show the note on the loading screen.
tipFlags.inGamebit 3Set to show the note during play, in a box on the screen.
tipFlags.cyclebit 4Set to have the box during play show every note in turn.
tipFlags.unusedbit 5 to 7Unused; a server writes zero.
features8-byte bitsWhich parts of the match are turned on, one bit each.
features.balanceVoteCommandsbit 0The chat commands /equalize and /noequalize. A server sends it clear to a 4.17 client.
features.menuBackbit 1With menuBack2, a second key that closes the pause and options menu. Alone, the minimap’s showing of neutral camps follows the player’s settings rather than the minimap’s own.
features.menuBack2bit 2Of use only with menuBack.
features.quickChatbit 3Quick chat: its keys and its panel. A 4.17 client given it fails while loading. A server sends it clear to a 4.17 client.
features.missileWarningbit 4A missile coming at the client’s side, or at no one, can show before it leaves the fog where it is near for its speed and heading that way.
features.animatedCursorsbit 5Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame.
features.shopUndobit 6The shop’s undo; clear, it is never enabled. A server sends it set to a 4.17 client.
features.bit7bit 7Changes only which options the menu shows.
features.skillshotOutlinebit 8While aiming a line spell, the units it would hit are outlined.
features.championIndicatorbit 9The mark over the player’s champion, where their own setting also asks for it.
features.altBountybit 10Another reckoning of kill and assist gold: kill gold and the assist pool grow with time, a run of assists adds gold, and assists and minion gold shorten a run of deaths.
features.bit11bit 11Changes only which options the menu shows.
features.turretRangebit 12Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn.
features.bit13bit 13Changes only which options the menu shows.
features.skinParticlesbit 14Skin-specific particle effects for units in a skin other than the first.
features.networkMetricsbit 15Reports of network figures from time to time, where reporting is on (agreement’s reportingReady).
features.hardwareMetricsbit 16A report of hardware and frame rate at the end of the match.
features.lagMetricsbit 17Lag figures in the network report.
features.eventReportsbit 18Set, a client sends its reports as event reports; clear, it sends them otherwise, and agreement’s reportsToFile applies.
features.logServerAddressbit 19It changes nothing a client shows.
features.jungleTimersbit 20Timers for the jungle camps on the screen.
features.traceroutebit 21A trace of the route to the server, begun after this message and reported later, where reporting is on.
features.bit22bit 22Changes only which options the menu shows.
features.bit23bit 23Changes only which options the menu shows.
features.bit24bit 24Changes only which options the menu shows.
features.clockSyncbit 25The game’s clock is nudged to keep with the system’s at normal speed; in a replay, play follows the game’s clock.
features.bit26bit 26Changes only which options the menu shows.
features.farmBountybit 27Kill gold also counts assists and minion gold, and a death scales runs down rather than clearing them.
features.turretsPersistbit 28Turrets stay as objects after they are destroyed.
features.stateFlagsbit 29A unit’s can-move, can-attack, can-cast and like states are set on or off rather than counted up and down.
features.unusedbit 30 to 31Unused; a server writes zero.
features.unusedHighbit 32 to 63Unused; a server writes zero.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages19 × u8Which of the reports a client sends are wanted, one place each, in this order: game start, game end, ping use, chat filter, damage figures, active item figures, network figures, hardware figures, server debugging, client debugging, item shop, injected modules, suspicious behaviour, skin swaps, failure to connect, traceroute, network instrumentation, peer network instrumentation, and block builder logging. Any nonzero byte marks a report wanted. Zero has no effect.
Vectors (1)

one-on-4-17

In 4.18–4.19

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.logMetricsbit 1Set to have the client also write its figures about the match to a file of its own.
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second such place, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8How long the note shows: 1 is 10 seconds; no other value is defined. Any other value makes the note invalid; a client then clears the tips bit and returns the value negated in ClientReady, 0 as -128.
tipFlagsi8Bits from the lowest: 0 shows notes at all; 1 is only returned in ClientReady; 2 shows the note on the loading screen; 3 shows it in play; 4 cycles through every note. A note shows only where bit 0 and bit 2 or 3 are set. Bits 5 to 7 are unused. A client watching a recorded match clears bits 0 and 1.
featuresu64Which parts of the match are turned on, one bit each from the lowest: 0 balancing votes, 1 the new options menu, 3 quick chat, 4 warning of missiles from unseen ground, 5 animated cursors, 6 shop undo, 8 marking the targets of line missiles, 9 marking a champion under another’s control, 10 the alternative bounty rules, 12 turret range indicators, 14 particles named per look, 15 network figures, 16 hardware figures, 17 lag figures, 18 a newer reporting library, 19 logging the server’s address, 20 jungle timers, 21 route figures, 24 keeping a recorded match’s clock in step, 26 the active-item display, 27 the minion farming bounty, 28 keeping destroyed lane turrets in the world and 29 unshared character states. Bits 2, 7, 11, 13, 22, 23, 25 and 30 to 63 change nothing. A server sets at least one bit.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages19 × u8Which of the reports a client sends are wanted, one place each.
Vectors (1)

one-on-4-18

In 4.20

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

It also says which map to load, who is at the match, and everything else settled before play.

FieldTypeWhat it is
agreement1-byte bits
agreement.buildMatchesbit 0Set where the client’s build is one the server serves.
agreement.logMetricsbit 1Set to have the client also write its figures about the match to a file of its own.
agreement.matchedbit 2Set where the match was put together rather than made by hand.
agreement.reportingReadybit 3Set where the reporting settings below are to be used.
agreement.unusedbit 4 to 7Unused; a server writes zero.
mapi32Which map to load. Space keys the path origins by the same maps.
seats12 × SeatEvery place at the match, held or empty.
buildtext, 256 bytesWhich build the server serves. Written out in full and padded with zero bytes to the width above.
modetext, 128 bytesWhich way the match is played, written and padded as above.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
variants8 × stringThe variations the match is played under, one place each. A place stands empty where none applies.
variantCountu8How many of the places above are filled.
teamNametext, 97 bytesWhat one side is called where it plays as a standing team, written and padded as above.
teamTagtext, 25 bytesThe short form of that name, written and padded as above.
otherTeamNametext, 97 bytesWhat the other side is called, under the same terms.
otherTeamTagtext, 25 bytesThe short form of that one.
metricsHosttext, 256 bytesWhere a client reports figures about the match, written and padded as above.
metricsPathtext, 256 bytesWhat it asks for there, written and padded as above.
metricsPortu16Which port it reaches that at.
reportingHosttext, 256 bytesWhere a client reports how the match went, written and padded as above.
reportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
reportingPortu16Which port it reaches that at.
altReportingHosttext, 256 bytesA second such place, written and padded as above.
altReportingPathtext, 256 bytesWhat it asks for there, written and padded as above.
altReportingPortu16Which port it reaches that at.
tipi8Which note the client shows before play.
tipColouri8Which colouring it shows it in.
tipDurationi8How long the note shows: 1 is 10 seconds; no other value is defined. Any other value makes the note invalid; a client then clears the tips bit and returns the value negated in ClientReady, 0 as -128.
tipFlagsi8Bits from the lowest: 0 shows notes at all; 1 is only returned in ClientReady; 2 shows the note on the loading screen; 3 shows it in play; 4 cycles through every note. A note shows only where bit 0 and bit 2 or 3 are set. Bits 5 to 7 are unused. A client watching a recorded match clears bits 0 and 1.
featuresu64Which parts of the match are turned on, one bit each from the lowest: 0 balancing votes, 1 the new options menu, 2 the old options menu, 3 quick chat, 4 warning of missiles from unseen ground, 5 animated cursors, 6 shop undo, 8 marking the targets of line missiles, 9 marking a champion under another’s control, 10 the alternative bounty rules, 12 turret range indicators, 14 particles named per look, 15 network figures, 16 hardware figures, 17 lag figures, 18 a newer reporting library, 19 logging the server’s address, 20 jungle timers, 21 route figures, 24 keeping a recorded match’s clock in step, 26 the active-item display, 27 the minion farming bounty, 28 teleporting to fallen turrets, 29 unshared character states, 30 sight between any units, 31 the old outline under the pointer, 32 the new inventory display. Bits 7, 11, 13, 22, 23, 25 and 33 to 63 change nothing. A server sets at least one bit.
disabledItems64 × u32Items nobody can buy in this match, one place each. A place holds zero where nothing is barred.
reportingMessages18 × u8Which of the reports a client sends are wanted, one place each.
Vectors (1)

one-on-4-20

JoinSide

What a client sends to ask for a seat on one of the two sides while the match is being put together.

Definition.

In every range of this book

Command 100 on roster, sent by the client, reliable.

FieldTypeWhat it is
clientIdu32The client id of the client asking.
sideu32The side it asks for.
Vectors (2)

one-on-4-17, one-on-4-20

Roster

What a server sends to lay out both sides and who is on them, while the match is being put together.

Definition.

In every range of this book

Command 103 on roster, sent by the server, reliable.

FieldTypeWhat it is
sideRoomu32How many seats the first side has room for.
otherSideRoomu32How many the other has room for.
side24 × i64The players on one side, twenty four places. The count below says how many of the leading places carry a player; the rest hold zero. A place cannot be read on its own, because zero is an identifier a match gives out as well as what an unused place holds. It has a player identifier’s width.
otherSide24 × i64The players on the other, under the same reading and its own count.
sideTakenu32How many of the leading places on the first side carry a player.
otherSideTakenu32How many on the other.
Vectors (2)

one-on-4-17, one-on-4-20

SeatName

What a server sends to say what a seat is called, while the match is being put together.

Definition.

In every range of this book

Command 102 on roster, sent by the server, reliable.

FieldTypeWhat it is
playeri64The player this is about. It has a player identifier’s width.
skini32Which look the seat’s champion wears.
nameLengthu32How many bytes the name below occupies, counting the byte that ends it.
nametext, sized by nameLength minus 1What the seat is called. It is not padded.
terminatorbytes, 1A zero byte closing the text, which the length above counts.
Vectors (3)

one-on-4-17, another-on-4-20, one-on-4-20

SeatChampion

What a server sends to say which champion a seat is playing, while the match is being put together.

Definition.

In every range of this book

Command 101 on roster, sent by the server, reliable.

FieldTypeWhat it is
playeri64The player this is about. It has a player identifier’s width.
skini32Which look the champion wears.
assetLengthu32How many bytes the name below occupies, counting the byte that ends it.
assettext, sized by assetLength minus 1The name the client loads the champion’s art and sound under. It is not padded.
terminatorbytes, 1A zero byte closing the text, which the length above counts.
Vectors (3)

one-on-4-17, another-on-4-20, one-on-4-20

LoadingProgress

What a client sends while a match loads, saying how far it has got. The header names no object: it carries zero.

Definition.

In 4.1–4.17

Command 22 on requests, sent by the client, unreliable.

FieldTypeWhat it is
clientIdu32The client id of the client reporting.
playerIdi64Who is reporting. A client sends every bit set, which names nobody.
percentf32How far loading has got, from zero to one hundred.
etaf32How long the client expects still to take, in seconds.
status4-byte bits
status.countbit 0 to 15It rises with each report, not always by one.
status.pingbit 16 to 30Round trip time the client measures, in milliseconds.
status.loadedbit 31Set in every report whose progress stands at one hundred, and in no other.
Vectors (1)

one-on-4-17

In 4.18–4.20

Command 22 on requests, sent by the client, unreliable.

FieldTypeWhat it is
clientIdu32The client id of the client reporting.
playerIdi64Who is reporting. A client sends every bit set, which names nobody.
percentf32How far loading has got, from zero to one hundred.
etaf32How long the client expects still to take, in seconds.
status4-byte bits
status.countbit 0 to 15How many reports have been made.
status.pingbit 16 to 31Round trip time the client measures, in milliseconds.
state1-byte bits
state.loadedbit 0A client sets it only in reports whose progress stands at one hundred.
state.unusedbit 1 to 7Unused; a client may leave any value here, and a server ignores it.
Vectors (2)

finished-on-4-20, in-progress-on-4-20

SeatLoadProgress

What a server sends to tell everyone how far one seat has got through loading, and how it is holding up. A later report supersedes an earlier one, so losing one costs nothing. The header names no object: a server writes zero.

Definition.

In 4.1–4.17

Carried on transient, sent by the server, unreliable, under these commands:

BuildsCommand
4.1–4.10148
4.11–4.17149
FieldTypeWhat it is
clientIdu32The client id this is about.
playeri64Who occupies it.
progressf32How far through loading it is, from zero to one hundred.
secondsLeftf32How much longer it is expected to take, in seconds.
status4-byte bits
status.countbit 0 to 15It rises with each report, not always by one.
status.pingbit 16 to 30Round trip time the client measures, in milliseconds.
status.loadedbit 31Set in every report whose progress stands at one hundred, and in no other.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

Command 149 on transient, sent by the server, unreliable.

FieldTypeWhat it is
clientIdu32The client id this is about.
playeri64Who occupies it.
progressf32How far through loading it is, from zero to one hundred.
secondsLeftf32How much longer it is expected to take, in seconds.
countu16How many times this has been reported for the seat.
pingu16How long a message takes to reach the seat and come back, in milliseconds.
state1-byte bits
state.readybit 0Set where the seat has finished loading.
state.unusedbit 1 to 7Unused; a server writes zero.
Vectors (2)

another-on-4-20, one-on-4-20

SpawnStart

What a server sends to open the run of units a client is about to be told about. The header names no object: a server writes zero.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.1097
4.11–4.1798
FieldTypeWhat it is
botsOnOneSideu8How many bots play on side 100. A client adds it to that side’s head count, which picks the set of spawn positions and facings it places champions by (CreateChampion’s spawnIndex).
botsOnTheOtheru8The other. It shares the reading above.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
firstCountu8How many seats on side 100 nobody holds. Added to that side’s players, it chooses the layout of the side’s starting places.
secondCountu8The same for side 200.
Vectors (1)

one-on-4-20

SpawnEnd

What a server sends to close the run of units it opened with. The header names no object: a server writes zero.

Definition.

In every range of this book

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

No body.

Vectors (2)

one-on-4-17, one-on-4-20

StartGame

What a server sends to begin play. The header names no object: it carries zero.

Definition.

In 4.1–4.3

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

A client past spawning ignores it.

FieldTypeWhat it is
rules1-byte bits
rules.pausingbit 0Set where holding the match is allowed.
rules.noticebit 1Set to have a client show its own notice in chat and note the time the match stands at.
rules.unusedbit 2 to 7Unused; a server writes zero.
Vectors (1)

one-on-4-1

In 4.4–4.17

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

BuildsCommand
4.4–4.1091
4.11–4.1792

A client past spawning ignores it.

FieldTypeWhat it is
rules1-byte bits
rules.pausingbit 0Set where holding the match is allowed.
rules.unusedbit 1 to 7Unused; a server writes zero.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
rules1-byte bits
rules.pausingbit 0Set where holding the match is allowed.
rules.unusedbit 1 to 7Unused; a server writes zero.
Vectors (1)

one-on-4-20

ClientReady

What a client sends once it has loaded and is ready to play. The header names no object: it carries zero.

Definition.

In 4.1–4.4

Command 81 on requests, sent by the client, reliable.

The tip fields carry VersionSync’s tip bytes, each one outside its valid range negated (0 as -128), and tips cleared where any is. Playing a replay, a client sends all four as zero.

FieldTypeWhat it is
maskedStatusu32It varies from client to client; a server ignores it.
masku32A random value the client picks to mask the one above.
tipChosenu8Which tip the client is set to show.
tipColouru8How it is coloured.
tipDurationu8How long it stays, as an entry among the display times in the client’s own settings rather than a length of time.
settings1-byte bits
settings.tipsbit 0Set while tips are wanted at all.
settings.reportingbit 1Set while the client reports on itself.
settings.loadingTipsbit 2Set while tips are wanted while loading.
settings.playingTipsbit 3Set while tips are wanted during play.
settings.debugbit 4Set while the client runs in a debugging state.
settings.unusedbit 5 to 7A client returns them as the server sent them.
Vectors (1)

one-on-4-1

In 4.5–4.12

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.5–4.1081
4.11–4.1282

The tip fields carry VersionSync’s tip bytes, each one outside its valid range negated (0 as -128), and tips cleared where any is. Playing a replay, a client sends all four as zero.

FieldTypeWhat it is
tipChosenu8Which tip the client is set to show.
tipColouru8How it is coloured.
tipDurationu8How long it stays, as an entry among the display times in the client’s own settings rather than a length of time.
settings1-byte bits
settings.tipsbit 0Set while tips are wanted at all.
settings.reportingbit 1Set while the client reports on itself.
settings.loadingTipsbit 2Set while tips are wanted while loading.
settings.playingTipsbit 3Set while tips are wanted during play.
settings.debugbit 4Set while the client runs in a debugging state.
settings.unusedbit 5 to 7A client returns them as the server sent them.
Vectors (2)

one-on-4-10, one-on-4-11

In 4.13–4.17

Command 82 on requests, sent by the client, reliable.

The tip fields carry VersionSync’s tip bytes, each one outside its valid range negated (0 as -128), and tips cleared where any is. Playing a replay, a client sends all four as zero. The three module fields are always zero.

FieldTypeWhat it is
moduleOneu32One of three values a client reports about software it has detected alongside itself. A client sends zero.
tipChosenu8Which tip the client is set to show.
tipColouru8How it is coloured.
tipDurationu8How long it stays, as an entry among the display times in the client’s own settings rather than a length of time.
settings1-byte bits
settings.tipsbit 0Set while tips are wanted at all.
settings.reportingbit 1Set while the client reports on itself.
settings.loadingTipsbit 2Set while tips are wanted while loading.
settings.playingTipsbit 3Set while tips are wanted during play.
settings.debugbit 4Set while the client runs in a debugging state.
settings.unusedbit 5 to 7A client returns them as the server sent them.
moduleTwou32The second of the three. A client sends zero.
moduleThreeu32The third. A client sends zero.
Vectors (1)

one-on-4-17

In 4.18–4.20

Command 82 on requests, sent by the client, reliable.

FieldTypeWhat it is
moduleOneu32One of three values a client reports about software it has detected alongside itself. A client sends zero.
tipChosenu8Which tip the client is set to show.
tipColouru8How it is coloured.
tipDurationu8How long it stays.
settings1-byte bits
settings.tipsbit 0Set while tips are wanted at all.
settings.reportingbit 1Set while the client reports on itself.
settings.loadingTipsbit 2Set while tips are wanted while loading.
settings.playingTipsbit 3Set while tips are wanted during play.
settings.debugbit 4Set while the client runs in a debugging state.
settings.unusedbit 5 to 7Unused; a client may leave any value here, and a server ignores it.
moduleTwou32The second of the three. A client sends zero.
moduleThreeu32The third. A client sends zero.
Vectors (2)

all-clear-on-4-20, one-set-on-4-20

CharacterSelected

What a client sends once a character is settled on. It carries nothing of its own. The header names no object: it carries zero.

Definition.

In every range of this book

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.10189
4.11–4.20190

No body.

Vectors (3)

bare-on-4-10, one-on-4-17, bare-on-4-20

MatchIdentity

What a server sends to tell a client which match this is and what its player is called. The header carries zero.

Definition.

In 4.1–4.10

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

FieldTypeWhat it is
gamei64The match’s identifier.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
nametext, 128 bytesThe player’s name, padded with zero bytes.
Vectors (1)

one-on-4-10

In 4.11

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

FieldTypeWhat it is
gamei64The match’s identifier.
labeltext, 32 bytesA text a client writes to its log and keeps, ended by a zero byte within the field.
platformtext, 32 bytesWhich platform the match belongs to, written and padded as above.
Vectors (1)

one-on-4-11

In 4.12–4.20

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

FieldTypeWhat it is
gamei64The match’s identifier.
nametext, 128 bytesThe player’s name, padded with zero bytes.
Vectors (2)

one-on-4-17, one-on-4-20

MatchStarted

What a server sends to set when the match began. The header names no object: it carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10193
4.11–4.20194
FieldTypeWhat it is
startedAtf32When the match began, as a moment on the match clock, in seconds.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

GameOptions

What a client sends when a setting that a server needs to know about changes. The header names the sender’s champion.

Definition.

In 4.1–4.17

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.1070
4.11–4.1771
FieldTypeWhat it is
options1-byte bits
options.autoAttackbit 0Set while the client attacks without being told to.
options.unusedbit 1 to 7Always clear: a client writes the whole byte as 0 or 1.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

Command 71 on requests, sent by the client, reliable.

FieldTypeWhat it is
options1-byte bits
options.autoAttackbit 0Set while the client attacks without being told to.
options.unusedbit 1 to 7Unused; a client writes zero.
Vectors (1)

auto-attack-on-4-20

ModuleData

What a server sends to carry data to a module of the client’s own. A client takes it even before it is ready to play. With kind 4, or any kind other than 1 and 2, a client acts on what the data carries as on a message that had arrived. What kinds 1 and 2 do is not shown. A server need send none.

Definition.

In 4.1–4.4

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

FieldTypeWhat it is
kindu8What the data is for.
lengthu16How many bytes of data follow; at most 1024.
databytes, sized by lengthData for a module of the client’s own, which the message only carries.
Vectors (1)

one-on-4-1

ModulePacket

What a client sends to carry data from a module of its own, often a message of its own that the module has taken over. A server need do nothing with it. The header carries zero.

Definition.

In 4.1–4.4

Command 222 on requests, sent by the client, reliable.

FieldTypeWhat it is
kindu8What the data is for.
lengthu16How many bytes of data follow; at most 1024.
databytes, sized by lengthData for a module of the client’s own, which the message only carries.
Vectors (1)

one-on-4-1

StatsRequest

What a client sends about itself. The header names the sender’s champion.

Definition.

In 4.1–4.4

Command 85 on requests, sent by the client, reliable.

No body.

Vectors (2)

another-on-4-1, one-on-4-1

In 4.5–4.7

Command 85 on requests, sent by the client, reliable.

It says what the client has detected running alongside it.

FieldTypeWhat it is
moduleOneu32One of three values a client reports about software it has detected alongside itself. A client sends zero.
Vectors (2)

another-on-4-5, one-on-4-5

In 4.8–4.11

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.8–4.1085
4.1186

It says what the client has detected running alongside it, and which appearance it believes it is wearing.

FieldTypeWhat it is
moduleOneu32One of three values a client reports about software it has detected alongside itself. A client sends zero.
appearanceu32The appearance the client believes it is wearing, by the number it knows it as.
appearanceChecku32A value standing for that appearance’s content.
Vectors (4)

asking-on-4-10, one-on-4-10, asking-on-4-11, one-on-4-11

In 4.12–4.20

Command 86 on requests, sent by the client, reliable.

It says what the client has detected running alongside it, and which appearance it believes it is wearing.

FieldTypeWhat it is
moduleOneu32One of three values a client reports about software it has detected alongside itself. A client sends zero.
moduleTwou32The second of the three. A client sends zero.
moduleThreeu32The third. A client sends zero.
appearanceu32The appearance the client believes it is wearing, by the number it knows it as.
appearanceChecku32A value standing for that appearance’s content.
Vectors (2)

one-on-4-17, asking-on-4-20

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:

Several of these arrive on their own or inside the EnterSight that brings the unit into view (see Vision): a client takes either.

CharacterPreload has a client load a character’s art ahead of need.

In 4.1–4.19

A client drops a CreateChampion or a CreateNeutral that arrives before it sends CharacterSelected, reconnecting included. A server MUST send them after it receives CharacterSelected.

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 4.1–4.17

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

BuildsCommand
4.1–4.1075
4.11–4.1776

The champion takes the id in champion, not the header’s; a client first removes any object holding that id. For the client’s own seat, name also becomes its own player’s name. A client drops the message while its map’s navigation data is unloaded, as early in a reconnection. It arrives on its own and also inside EnterSight.

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.
stayDownf32How long it stays down, in seconds, where it is already down.
downForf32How long it has already been down, in seconds.
how1-byte bits
how.downbit 0 to 20 alive; 1 dead but acting on (the state a champion that keeps acting after death is in), where stayDown and downFor have no effect; 2 down, having been down for downFor with stayDown left. A client takes 3 to 7 as 0.
how.swapbit 3Set where the champion replaces another. Of no effect otherwise.
how.unusedbit 4 to 7Unused; a server writes zero.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

It arrives on its own and also inside EnterSight.

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.
skillLevelu8What level the champion’s own spells stand at.
who1-byte bits
who.sidebit 0Which of the two sides the champion is on. A server sets it.
who.botbit 1Set where nobody holds it.
who.unusedbit 2 to 7Unused; a server writes zero.
ranku8How well it plays where nobody holds it.
spawnIndexu8Which of its side’s starting places the champion begins at, counted from zero. Where a champion first stands travels in EnterSight. A server can send 0 for every champion; where a champion stands is settled by the movement or sight data that follows.
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.
stayDownf32How long it stays down, in seconds, where it is already down.
downForf32How long it has already been down, in seconds.
deathKindu32What sort of death it is already in, where it is already down.
how1-byte bits
how.swapbit 0Set where the champion replaces another; a client whose champion it is resets every script’s state.
how.hiddenbit 1Set to fade the champion’s model out at once.
how.unusedbit 2 to 7Unused; a server writes zero.
Vectors (2)

another-on-4-20, one-on-4-20

SpawnBot

What a server sends to create a champion played by a bot. The header names no object: a server writes zero.

Definition.

In 4.1–4.19

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

BuildsCommand
4.1–4.10206
4.11–4.19207

A client first deletes any object it holds under the same id.

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.
sides2-byte bitsIts side.
sides.sidebit 0 to 8Its side: 100, 200 or 300.
sides.unusedbit 9 to 15Unused; 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-4-10, one-on-4-17

SpawnFromBarracks

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

Definition.

In 4.1–4.17

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

It arrives on its own and also inside EnterSight. The header names the unit this is about.

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.
barracksu32The place it came out of, by the identifier its name gives as Objects and identifiers works it out. On map 1 that is a spawn point such as __P_Order_Spawn_Barracks__C01, not the inhibitor named Barracks_T1_C1: named by the inhibitor, a client creates nothing.
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.
levelu8The level it starts at.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

It arrives on its own and also inside EnterSight. The header names the unit this is about.

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.
barracksu32The place it came out of.
waveu8Which run of units it belongs to.
kindu8What sort of unit it is.
damageBonusu16What is added to the damage it deals.
healthBonusu16What is added to the health it holds.
levelu8The level it starts at.
Vectors (1)

one-on-4-18

SpawnUnit

What a server sends to put a minion-like unit on the field, such as a ward.

Definition.

In 4.1–4.16

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

BuildsCommand
4.1–4.10123
4.11–4.16124

A client deletes any object holding the new unit’s id first, and does nothing more where it cannot make the unit. owner is only who gets the gold the unit earns; 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.
owneru32The unit that owns it.
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.
flags2-byte bitsWhat sort of unit it is.
flags.teambit 0 to 8Which side, as a team number.
flags.ignoreCollisionbit 9Set where it does not block the way.
flags.wardbit 10Set where it is a ward.
flags.laneMinionbit 11Set where it is a lane minion.
flags.botbit 12Set where it is driven by the client’s own decisions.
flags.unusedbit 13 to 15Unused; a server writes zero.
targetableToTeamu32Which sides can aim at it, as a set of bits.
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.
levelu16The level it starts at.
Vectors (2)

one-on-4-1, one-on-4-11

In 4.17

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. owner is only who gets the gold the unit earns; clone, where nonzero, is copied, state and inventory; onlyVisibleTo, zero or unknown, restricts nothing. The header names the unit that put it there.

FieldTypeWhat it is
unitu32The name the new unit answers to.
owneru32The unit that owns it.
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.
flags2-byte bitsWhat sort of unit it is.
flags.teambit 0 to 8Which side, as a team number.
flags.ignoreCollisionbit 9Set where it does not block the way.
flags.wardbit 10Set where it is a ward.
flags.laneMinionbit 11Set where it is a lane minion.
flags.botbit 12Set where it is driven by the client’s own decisions.
flags.unusedbit 13 to 15Unused; a server writes zero.
targetableToTeamu32Which sides can aim at it, as a set of bits.
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.
levelu16The level it starts at.
onlyVisibleTou32The unit that alone can see it, or zero.
Vectors (1)

one-on-4-17

In 4.18–4.20

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. owner is only who gets the gold the unit earns; clone, where nonzero, is copied, state and inventory; onlyVisibleTo, zero or unknown, restricts nothing. The header names the unit that put it there.

FieldTypeWhat it is
unitu32The name the new unit answers to.
owneru32The unit that owns it.
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.
teamu16Which side, as a team number.
flags1-byte bitsWhat sort of unit it is.
flags.ignoreCollisionbit 0Set where it does not block the way.
flags.wardbit 1Set where it is a ward.
flags.laneMinionbit 2Set where it is a lane minion.
flags.botbit 3Set where it is driven by the client’s own decisions.
flags.unusedbit 4 to 7Unused; a server writes zero.
unusedu32Unused; a server writes zero.
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.
levelu16The level it starts at.
onlyVisibleTou32The unit that alone can see it, or zero.
Vectors (1)

one-on-4-20

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 4.1

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

The monster faces from where it stands toward the facing point, or along +Z where the two are the same. A client drops the message while its map’s navigation data is unloaded. A server sends it only inside EnterSight, and the channel and delivery given here are those of the message carrying it.

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.
proximityAnimationstext, 64 bytesThe name of a set of animations the camp plays as units come near, written and padded as above; empty means 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.
effectSideu32The side that gains what killing it grants.
revealEventi32What makes the unit known to a side that cannot see it.
leveli32The level it starts at.
Vectors (1)

inactive-on-4-1

In 4.2–4.8

Command 98 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. Its spawnAnimation plays only where named and time is left to spawn, and it cannot be targeted while it plays. A client drops the message while its map’s navigation data is unloaded. A server sends it only inside EnterSight, and the channel and delivery given here are those of the message carrying it.

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.
spawnAnimationtext, 64 bytesThe name the client loads what it does on arriving under, 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.
effectSideu32The side that gains what killing it grants.
revealEventi32What makes the unit known to a side that cannot see it.
leveli32The level it starts at.
spawnDurationf32How long its arrival takes, in seconds.
spawnElapsedf32How much of its arrival has already passed, in seconds.
Vectors (1)

inactive-on-4-2

In 4.9–4.11

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

BuildsCommand
4.9–4.1098
4.1199

The monster faces from where it stands toward the facing point, or along +Z where the two are the same. Its spawnAnimation plays only where named and time is left to spawn, and it cannot be targeted while it plays. A client drops the message while its map’s navigation data is unloaded. A server sends it only inside EnterSight, and the channel and delivery given here are those of the message carrying it.

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.
spawnAnimationtext, 64 bytesThe name the client loads what it does on arriving under, 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.
effectSideu32The side that gains what killing it grants.
revealEventi32What makes the unit known to a side that cannot see it.
leveli32The level it starts at.
spawnDurationf32How long its arrival takes, in seconds.
spawnAtf32When it arrives, as a moment on the match clock, in seconds.
Vectors (2)

inactive-on-4-9, inactive-on-4-11

In 4.12–4.17

Command 99 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. Its spawnAnimation plays only where named and time is left to spawn, and it cannot be targeted while it plays. A client drops the message while its map’s navigation data is unloaded. A server sends it only inside EnterSight, and the channel and delivery given here are those of the message carrying it.

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.
spawnAnimationtext, 64 bytesThe name the client loads what it does on arriving under, 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.
effectSideu32The side that gains what killing it grants.
revealEventi32What makes the unit known to a side that cannot see it.
leveli32The level it starts at.
spawnDurationf32How long its arrival takes, in seconds.
spawnAtf32When it arrives, as a moment on the match clock, in seconds.
behaviouru8It has no effect.
Vectors (1)

inactive-on-4-12

In 4.18–4.20

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

A server sends it only inside EnterSight, and the channel and delivery given here are those of the message carrying it.

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.
spawnAnimationtext, 64 bytesThe name the client loads what it does on arriving under, 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 it roams, which changes nothing a client shows. Values: 0 still, 1 hostile, 2 fleeing.
campu32Which camp it belongs to.
effectSideu32The side that gains what killing it grants.
revealEventi32What makes the unit known to a side that cannot see it.
leveli32The level it starts at.
spawnDurationf32How long its arrival takes, in seconds.
spawnAtf32When it arrives, as a moment on the match clock, in seconds.
Vectors (1)

still-on-4-18

SpawnPet

What a server sends to put a pet on the field.

Definition.

In 4.1–4.19

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

BuildsCommand
4.1–4.1054
4.11–4.1955

A client deletes any object holding the header’s id; spawns nothing where it does not know the owner; kills the owner’s earlier pet if it lives; makes the pet, replacing its script with script; gives it the owner’s seat, its gold going to the owner; and registers it under the header’s id and node. spellLevel, duration and effect have no effect. The header names the pet. A server sends it to clients watching a match.

FieldTypeWhat it is
owneru32The unit it belongs 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.
durationf32How long it lasts, in seconds.
sideu32Which side.
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.
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.minimapIconbit 2Set where it shows on the minimap.
flags.unusedbit 3 to 7Unused; a server writes zero.
scripttext, 32 bytesThe script that drives it, padded with zero bytes.
Vectors (3)

another-on-4-10, one-on-4-10, one-on-4-17

In 4.20

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

A client deletes any object holding the header’s id; spawns nothing where it does not know the owner; kills the owner’s earlier pet if it lives; makes the pet, replacing its script with script; gives it the owner’s seat, its gold going to the owner; and registers it under the header’s id and node. spellLevel, duration and effect have no effect. The header names the pet. A server sends it to clients watching a match.

FieldTypeWhat it is
owneru32The unit it belongs 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.
durationf32How long it lasts, in seconds.
sideu32Which side.
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.
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.minimapIconbit 2Set where it shows on the minimap, should it be a clone.
flags.startFadedbit 3Set where it starts fully faded out, as though faded to nothing at once; a later fade can bring it back.
flags.unusedbit 4 to 7Unused; a server writes zero.
scripttext, 32 bytesThe script that drives it, padded with zero bytes.
Vectors (1)

one-on-4-20

CreateTurret

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

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10156
4.11–4.17157

A client matches name exactly against the map’s turrets. With no match it only removes any object holding the id; a matched turret missing or dead is rebuilt before it takes the id. A server sends it only inside EnterSight, and the channel and delivery given here are those of the message carrying it.

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.
how1-byte bits
how.targetablebit 0It has no effect: a turret’s targetability comes by replication.
how.unusedbit 1 to 7Unused; a server writes zero.
targetableByu32Who can target the turret. A server writes the value replication carries for the turret: 8388608 not its own side, 16777216 not the other side, 25165824 nobody, 33554432 everyone, anything else both sides. A client takes the turret’s targetability from replication alone.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

A server sends it only inside EnterSight, and the channel and delivery given here are those of the message carrying it.

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.
how1-byte bitsUnused; a server writes zero.
how.targetablebit 0Unused; a server writes zero.
how.unknownbit 1 to 7Unused; a server writes zero.
targetableByu32Unused; a server writes zero.
Vectors (2)

another-on-4-20, one-on-4-20

SpawnTurret

What a server sends to create a turret of its own choosing. A client first deletes any object it holds under the same id, and does nothing more where it cannot make the character. The header carries zero.

Definition.

In 4.12–4.14

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

FieldTypeWhat it is
unitu32The id the turret takes.
owneru32The unit credited with the gold for its kills, or zero for none.
nodeu8The network node it belongs to.
nametext, 64 bytesThe turret’s object name. The text ends at its first zero byte, which falls within the field.
charactertext, 64 bytesIts character, that is, its model.
xf32Where it stands, in world units.
yf32Its height, in world units.
zf32Where it stands, in world units.
flags2-byte bitsIts side and state.
flags.sidebit 0 to 8Its side.
flags.invulnerablebit 9Set where it takes no damage.
flags.unusedbit 10 to 15Unused; a server writes zero.
Vectors (1)

one-on-4-12

In 4.15

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

FieldTypeWhat it is
unitu32The id the turret takes.
owneru32The unit credited with the gold for its kills, or zero for none.
nodeu8The network node it belongs to.
nametext, 64 bytesThe turret’s object name. The text ends at its first zero byte, which falls within the field.
charactertext, 64 bytesIts character, that is, its model.
skini32Which skin.
xf32Where it stands, in world units.
yf32Its height, in world units.
zf32Where it stands, in world units.
flags2-byte bitsIts side and state.
flags.sidebit 0 to 8Its side.
flags.invulnerablebit 9Set where it takes no damage.
flags.unusedbit 10 to 15Unused; a server writes zero.
Vectors (1)

one-on-4-15

In 4.16–4.17

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

FieldTypeWhat it is
unitu32The id the turret takes.
owneru32The unit credited with the gold for its kills, or zero for none.
nodeu8The network node it belongs to.
nametext, 64 bytesThe turret’s object name. The text ends at its first zero byte, which falls within the field.
charactertext, 64 bytesIts character, that is, its model.
skini32Which skin.
xf32Where it stands, in world units.
yf32Its height, in world units.
zf32Where it stands, in world units.
deathDelayf32Seconds after it dies before its model is changed or taken away.
flags2-byte bitsIts side and state.
flags.sidebit 0 to 8Its side.
flags.invulnerablebit 9Set where it takes no damage.
flags.unusedbit 10 to 15Unused; a server writes zero.
Vectors (1)

one-on-4-16

In 4.18–4.20

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

FieldTypeWhat it is
unitu32The id the turret takes.
owneru32The unit credited with the gold for its kills, or zero for none.
nodeu8The network node it belongs to.
nametext, 64 bytesThe turret’s object name. The text ends at its first zero byte, which falls within the field.
charactertext, 64 bytesIts character, that is, its model.
skini32Which skin.
xf32Where it stands, in world units.
yf32Its height, in world units.
zf32Where it stands, in world units.
deathDelayf32Seconds after it dies before its model is changed or taken away.
flags1-byte bitsIts side and state.
flags.unusedLowbit 0Unused; a server writes zero.
flags.invulnerablebit 1Set where it takes no damage.
flags.unusedbit 2 to 7Unused; a server writes zero.
sideu16Its side.
Vectors (1)

one-on-4-18

CreateFollower

What a server sends to put an object on the field that follows a unit. The header names the unit followed.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10240
4.11–4.20241
FieldTypeWhat it is
followeru32The name the new object answers to.
nodeu8Which network node it belongs to.
skini32Which look it wears.
nametext, 64 bytesIts name, padded with zero bytes.
assettext, 64 bytesThe name the client loads its art under, padded with zero bytes.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

FollowerMaster

What a server sends to change which unit a following object follows. The header names the follower.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10241
4.11–4.20242
FieldTypeWhat it is
masteru32The unit it now follows; one no unit answers to leaves it following none.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

SpawnMarker

What a server sends to create an unseen object at a place, which other messages can then name. A client first deletes any object it holds under the same id. The header carries zero.

Definition.

In every range of this book

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

FieldTypeWhat it is
unitu32The id the marker takes.
nodeu8The network node it belongs to.
xf32Where it stands, in world units.
yf32Its height, in world units.
zf32Where it stands, in world units.
Vectors (1)

one-on-4-20

MarkerMoved

What a server sends to move a marker (SpawnMarker) from one place toward another. The header names the marker. A client sets it at the start at once.

Definition.

In every range of this book

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

FieldTypeWhat it is
fromXf32Where it starts, in world units.
fromZf32Where it starts, in world units.
toXf32Where it goes, in world units.
toZf32Where it goes, in world units.
speedf32How fast it goes, in world units a second. Below zero it jumps to the goal; zero leaves it at the start.
faceGoalu8One to turn it the way it moves, zero not to.
Vectors (2)

one-on-4-17, one-on-4-20

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 4.1–4.17

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

BuildsCommand
4.1–4.10207
4.11–4.17208

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.
skini32Which look the prop wears.
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.
scaleXf32What its drawn size is scaled by, along one ground axis.
scaleYf32What its drawn size is scaled by, in height.
scaleZf32What its drawn size is scaled by, along the other ground axis.
side2-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 15Unused; 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.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

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.
skini32Which look the prop wears.
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.
rotationXf32An angle the prop is turned by about a ground axis, in degrees, from zero up to but not reaching 360.
rotationYf32An angle the prop is turned by about the upright axis, in degrees, from zero up to but not reaching 360.
rotationZf32An angle the prop is turned by about the other ground axis, in degrees, from zero up to but not reaching 360.
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.
scaleXf32What its drawn size is scaled by, along one ground axis.
scaleYf32What its drawn size is scaled by, in height.
scaleZf32What its drawn size is scaled by, along the other ground axis.
sideu16The side it belongs to, or zero where it belongs to none.
ranku8How far it is advanced.
skillLevelu8What level the prop’s own doings stand at.
kindu32What sort of prop it is.
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.
Vectors (2)

another-on-4-20, one-on-4-20

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 4.1–4.17

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

BuildsCommand
4.1–4.10208
4.11–4.17209
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.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
nametext, 64 bytesThe name the change loads, such as a set of movements the prop plays. Written out in full and padded with zero bytes to the width above.
startsAtf32When the change begins, in milliseconds of match time.
lastsf32How long the change runs, in seconds.
propu32The prop changed, by the name MapProp gave it.
flagsu32For kind 1, passed to the movements: 2 holds the last pose where they do not repeat. For kind 3, the look’s number. Not read for kind 2.
kindu32What sort of change it is. A client ignores any value but 1, 2 and 3, and a prop it does not know. Values: 1 animate, 2 captureEffect, 3 look.
byteAu8For kind 1, not zero to remove the prop once the movements end. For kind 2, the change applies only where it is zero.
byteBu8For kind 2, which of the prop’s particle values to drive. Otherwise unused.
byteCu8For kind 2, the capture point whose state drives it. Otherwise unused.
Vectors (2)

another-on-4-20, one-on-4-20

CharacterPreload

What a server sends to have a character and a skin of it loaded ahead of need. Nothing shows. The header carries zero.

Definition.

In 4.6–4.20

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

BuildsCommand
4.6–4.10137
4.11–4.20138
FieldTypeWhat it is
skini32Which skin.
charactertext, 64 bytesThe character’s name. It ends at its first zero byte.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

TeamChanged

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

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10214
4.11–4.20215
FieldTypeWhat it is
unitu32The unit.
sideu32Its new side.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

ChampionRemoved

What a server sends to take a champion out of the world. It carries nothing of its own. The header names the champion.

Definition.

In every range of this book

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

No body.

Vectors (2)

one-on-4-17, one-on-4-20

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

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

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 (2)

one-on-4-17, one-on-4-20

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
4.1–4.10104
4.11–4.20105
FieldTypeWhat it is
targets5 × u32Five units.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

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
4.1–4.10169
4.11–4.20170
FieldTypeWhat it is
statei32The state.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

Vision

What a client can see, and how a server tells it. A client draws what a server says it sees and nothing else: the fog of war a client draws is only a picture, and what lies inside it is whatever the server has brought into view.

Bringing a unit into view

A server brings a unit into what a client’s side can see with EnterSight.

EnterSight also states the unit’s items.

EnterSight can also carry whole messages of the game family, such as the CreateTurret or CreateNeutral that makes the unit, each taking effect as though it had arrived on its own.

EnterSight states everything a client needs to draw the unit at once: its looks, its shields, where it stands or which path it walks, and, in what follows, its health and resource. A body MAY end early where its layout marks the remaining parts as present only while bytes remain.

A client does not draw a champion that no EnterSight has placed: given only its CreateChampion, a client shows the champion’s portrait and spells and nothing on the field. One EnterSight after the CreateChampion draws it, with its name and health bar over it.

EnterLocalSight brings a unit into what one client alone can see. EnterTeamSight brings an object into the view of a whole side.

EnterLocalSight states the unit’s health.

EnterLocalSight states the unit’s resource beside its health.

Losing sight

LeaveSight and LeaveTeamSight take a unit out of the matching view, and leave it held (see Objects and identifiers). Particles come into and leave a side’s view with ParticleEnterTeamSight and ParticleLeaveTeamSight.

LeaveLocalSight takes a unit out of what one client alone can see, and leaves it held.

LeaveLocalSight naming a client’s own champion changes nothing it shows.

Regions

A region is a patch of ground with sight of its own, which can reveal hidden units within it. A server places one with RegionAdded or fastens one to a unit with RegionAttached, moves it with RegionMoved and takes it away with RegionRemoved; Objects and identifiers says how regions are named and when one ends. A region granting sight has a client clear its map’s cover over it.

In 4.1–4.19

A client makes only circular regions.

In 4.1–4.19

A client’s regions see over walls or not as the region says.

Drawing the fog

FogSet and FogToggled change how a client draws its fog of war.

In 4.1–4.19

A client draws its fog of war, or the map with no darkening, as FogSet and FogToggled say. Neither changes what the client can see.

Who is told what

A client acts on a message about whichever unit it names, its own champion or another, so what a client knows is whatever a server sends it. A server decides, message by message, which clients to tell.

In 4.1–4.19

UnitDiedOnMap, InventorySnapshotOnMap, FloatingTextOnMap and SpellSlotChangedForOwner do not exist, so a server sends both audiences of UnitDied, InventorySnapshot, FloatingText and SpellSlotChanged under the one command each.

In 4.20

Some messages exist in more than one form, each for its own audience, laid out alike:

For every clientFor the clients that can see the unitFor the unit’s own client
UnitDiedUnitDiedOnMap
InventorySnapshotInventorySnapshotOnMap
FloatingTextFloatingTextOnMap
SpellSlotChangedSpellSlotChangedForOwner

A server sends the narrower audience as a message of its own, and sends the wider form only where every client is to know.

Messages about a champion’s own state, its gold, its inventory, its spells’ levels, cooldowns and charges, and whether it can shop, are applied to the champion they name on any client that receives them, but a client shows some of them only for its own champion:

  • ShopEnabled changes the shop only for the client’s own champion.

ItemAdded and InventorySlot announce a purchase only for the client’s own champion; an ally’s purchase is called out where the message asks for it.

GoldGained shows floating gold only for the client’s own champion.

LevelUp shows its effect over any unit the client can see.

A server SHOULD send SpellCooldown, SpellCharges and GoldGained about a champion only to the client whose champion it is.

A client also acts on what it is told about a unit it holds but cannot see:

  • a particle on a hidden unit is created but not drawn until the unit comes into view, unless the particle is bound to a target the client can see;
  • floating text over a hidden unit is dropped;
  • an animation plays on a hidden unit, which comes into view part way through it.

A server SHOULD NOT send a client what its side cannot see, beyond what keeps its world consistent.

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).

EnterSight

What a server sends when a unit comes into what a side can see. The header names the unit this is about.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10185
4.11–4.17186

It states everything a client needs to draw the unit at once, and carries whole messages of the same family for anything a layout of its own cannot say.

FieldTypePresent whenWhat it is
carried2-byte bits
carried.sizebit 0 to 12How many bytes the messages below occupy in total.
carried.unusedbit 13 to 15Unused; a server writes zero.
messagessized by carried.size × CarriedMessageWhole messages of the same family, each behind its own length, that a client acts on as though they had arrived on their own.
itemCountu8How many items the unit holds.
itemscount in itemCount × HeldItemThe items themselves.
viewrecordremaining setEverything else a client needs to draw the unit. A server sends this message without it too, ending after the items.
view.hasShieldsu8Whether the three figures below follow. A zero leaves them out. Values: 0 no, 1 yes.
view.magicShieldf32hasShields setHow much of the unit’s shielding turns aside one sort of damage.
view.physicalShieldf32hasShields setHow much turns aside the other.
view.shieldf32hasShields setHow much turns aside either.
view.appearanceCountu32How many layers of look follow.
view.appearancecount in appearanceCount × AppearanceWhat the unit looks like, laid on in order.
view.lookingAtu32What the unit is turned towards, or zero where it is turned towards a place instead.
view.lookKindu8What sort of thing it is turned towards.
view.lookXf32Which way the unit is turned, along one ground axis. The three together are a direction rather than a place.
view.lookYf32Which way it is turned, in height.
view.lookZf32Which way it is turned, along the other ground axis.
view.effectStackCountu32How many effect slots have more than one stacked in them.
view.effectStackscount in effectStackCount × EffectStackThose slots and their counts.
view.isChampionu8Whether the unit is a champion. Values: 0 no, 1 yes.
view.movementStaterecordremaining setWhere the unit is and what it is doing on the ground. A server also sends this message ending before it.
view.movementState.movementKindu8What the unit is doing on the ground, and so which shape follows. A champion stated as standing, with the place and facing below, is drawn there with its name and health bar over it. One stated as moving is drawn at the first point of its path and walks the rest. Values: 0 nothing, 1 movingAtASpeed, 2 moving, 3 standing.
view.movementState.syncIdu32The name this statement of movement answers to.
view.movementState.movementMovementmovementKind = 2Where the unit is going. Movement says how a path is read.
view.movementState.movementAtSpeedMovementAtSpeedmovementKind = 1Where the unit is going, and how a server makes it travel. WaypointGroupAtSpeed carries the same shape.
view.movementState.atXf32movementKind = 3Where the unit stands, along one ground axis, in world units.
view.movementState.atZf32movementKind = 3Where it stands, along the other, in world units.
view.movementState.facingXf32movementKind = 3Which way it faces, along one ground axis.
view.movementState.facingZf32movementKind = 3Which way it faces, along the other.
Vectors (8)

a-champion-standing-on-4-10, a-champion-walking-on-4-10, ending-before-movement-on-4-10, ending-early-on-4-10, a-champion-standing-on-4-17, a-champion-walking-on-4-17, ending-before-movement-on-4-17, ending-early-on-4-17

In 4.18–4.20

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

It states everything a client needs to draw the unit at once, and carries whole messages of the same family for anything a layout of its own cannot say.

FieldTypePresent whenWhat it is
carriedu16The byte length of the messages carried below, all sixteen bits of it.
messagessized by carried × CarriedMessageWhole messages of the same family, each behind its own length, that a client acts on as though they had arrived on their own.
itemCountu8How many items the unit holds.
itemscount in itemCount × HeldItemThe items themselves.
viewrecordremaining setEverything else a client needs to draw the unit. A server sends this message without it too, ending after the items.
view.hasShieldsu8Whether the three figures below follow. A zero leaves them out, and everything after them begins twelve bytes earlier. Values: 0 no, 1 yes.
view.magicShieldf32hasShields setHow much of the unit’s shielding turns aside one sort of damage.
view.physicalShieldf32hasShields setHow much turns aside the other.
view.shieldf32hasShields setHow much turns aside either.
view.appearanceCountu32How many layers of look follow.
view.appearancecount in appearanceCount × AppearanceWhat the unit looks like, laid on in order.
view.lookingAtu32What the unit is turned towards, or zero where it is turned towards a place instead.
view.lookKindu8What sort of thing it is turned towards.
view.lookXf32Which way the unit is turned, along one ground axis. The three together are a direction rather than a place.
view.lookYf32Which way it is turned, in height.
view.lookZf32Which way it is turned, along the other ground axis.
view.effectStackCountu32How many effect slots have more than one stacked in them.
view.effectStackscount in effectStackCount × EffectStackThose slots and their counts.
view.isChampionu8Whether the unit is a champion. Values: 0 no, 1 yes.
view.movementStaterecordremaining setWhere the unit is and what it is doing on the ground. A server also sends this message ending before it.
view.movementState.movementKindu8What the unit is doing on the ground, and so which shape follows. A server sends the values for standing and moving. Values: 0 nothing, 1 movingAtASpeed, 2 moving, 3 standing.
view.movementState.syncIdu32The name this statement of movement answers to.
view.movementState.movementMovementmovementKind = 2Where the unit is going. Movement says how a path is read.
view.movementState.movementAtSpeedMovementAtSpeedmovementKind = 1Where the unit is going, and how a server makes it travel. WaypointGroupAtSpeed carries the same shape.
view.movementState.atXf32movementKind = 3Where the unit stands, along one ground axis, in world units.
view.movementState.atZf32movementKind = 3Where it stands, along the other, in world units.
view.movementState.facingXf32movementKind = 3Which way it faces, along one ground axis.
view.movementState.facingZf32movementKind = 3Which way it faces, along the other.
Vectors (5)

carrying-a-message-on-4-20, ending-before-movement-on-4-20, ending-early-on-4-20, on-a-path-on-4-20, standing-on-4-20

EnterLocalSight

What a server sends when a unit comes into what one client can see. The header names the unit this is about.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10173
4.11–4.17174
FieldTypePresent whenWhat it is
carried2-byte bits
carried.sizebit 0 to 12How many bytes the messages below occupy in total.
carried.unusedbit 13 to 15Unused; a server writes zero.
messagessized by carried.size × CarriedMessageWhole messages of the same family, each behind its own length, that a client acts on as though they had arrived on their own.
vitalsrecordremaining setThe unit’s health. A server sends this message without it too, ending after the carried messages.
vitals.maxHealthf32What the unit’s health tops out at.
vitals.healthf32What its health stands at.
Vectors (4)

ending-early-on-4-10, one-on-4-10, ending-early-on-4-17, one-on-4-17

In 4.18–4.20

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

FieldTypePresent whenWhat it is
carriedu16The byte length of the messages carried below, all sixteen bits of it.
messagessized by carried × CarriedMessageWhole messages of the same family, each behind its own length, that a client acts on as though they had arrived on their own.
vitalsrecordremaining setThe unit’s health. A server sends this message without it too, ending after the carried messages.
vitals.maxHealthf32What the unit’s health tops out at.
vitals.healthf32What its health stands at.
Vectors (3)

another-on-4-20, ending-early-on-4-20, one-on-4-20

EnterTeamSight

What a server sends when a unit comes into the view of a whole side. The header names the object this is about.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10223
4.11–4.20224
FieldTypeWhat it is
sideu8Which side the unit came into or out of the view of.
Vectors (6)

a-third-on-4-10, another-on-4-10, one-on-4-10, one-on-4-17, another-on-4-20, one-on-4-20

LeaveSight

What a server sends when a unit passes out of what a side can see. The header names the unit this is about.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1080
4.11–4.2081

No body.

Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

LeaveTeamSight

What a server sends when a unit passes out of the view of a whole side. The header names the object this is about.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10224
4.11–4.20225
FieldTypeWhat it is
sideu8Which side the unit came into or out of the view of.
Vectors (6)

a-third-on-4-10, another-on-4-10, one-on-4-10, one-on-4-17, another-on-4-20, one-on-4-20

ParticleEnterTeamSight

What a server sends as a particle comes into what one side can see. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10225
4.11–4.20226
FieldTypeWhat it is
particleu32The particle.
teamu8Which side, by an index.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

ParticleLeaveTeamSight

What a server sends as a particle passes out of what one side can see. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10226
4.11–4.20227
FieldTypeWhat it is
particleu32The particle.
teamu8Which side, by an index.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

LeaveLocalSight

What a server sends when a unit passes out of what one client can see. Sent for the receiving client’s own champion, it changes nothing the client shows. The header names the unit this is about.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1052
4.11–4.2053

No body.

Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

RegionAdded

What a server sends to place a region on the ground. The header names no object: a server writes zero.

Definition.

In 4.1–4.17

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

A region grants sight, blocks the way, or grows cover.

FieldTypeWhat it is
sideu32The side the region belongs to.
kindi32What sort of region it is. A client makes one only for 0, a circle. Values: 0 circle.
clientIdu32The client id of the client the region answers to.
unitu32The unit the region follows, or zero where it stands still.
markeru32The name the region answers to, which RegionRemoved names to take it away.
sightFromu32The unit whose sight the region grants, or zero.
atXf32Where the region sits, along one ground axis, in world units.
atZf32Where it sits, along the other, in world units.
lifetimef32How long it lasts, in seconds. A lifetime of 0 never runs out.
lineOfSightRadiusf32How far out the region’s line of sight is reckoned, in world units.
grassRadiusf32How far out it grows cover, in world units.
sizeMultiplierf32What its stated radius is scaled by.
sizeAdditivef32What is added to its stated radius after scaling, in world units.
does4-byte bits
does.lineOfSightbit 0Set where walls and terrain cut the region’s sight.
does.grantSightbit 1Set to turn on the region’s sight; sightFrom and revealHidden apply only where it is set. Where it is set, a client clears its map’s cover over the region.
does.revealHiddenbit 2Set to show hidden units within it, where grantSight is set.
does.unusedbit 3 to 31Unused; a server writes zero.
baseRadiusf32The region’s radius, in world units.
Vectors (1)

one-on-4-17

In 4.18–4.19

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

A region grants sight, blocks the way, or grows cover.

FieldTypeWhat it is
sideu32The side the region belongs to.
kindi32What sort of region it is. A client makes one only for 0, a circle. Values: 0 circle.
clientIdu32The client id of the client the region answers to.
otherUnitu32A second unit a client looks up and keeps with the region, or zero.
unitu32The unit the region follows, or zero where it stands still.
markeru32The name the region answers to, which RegionRemoved names to take it away.
sightFromu32The unit whose sight the region grants, or zero.
atXf32Where the region sits, along one ground axis, in world units.
atZf32Where it sits, along the other, in world units.
lifetimef32How long it lasts, in seconds. A lifetime of 0 never runs out.
lineOfSightRadiusf32How far out the region’s line of sight is reckoned, in world units.
grassRadiusf32How far out it grows cover, in world units.
sizeMultiplierf32What its stated radius is scaled by.
sizeAdditivef32What is added to its stated radius after scaling, in world units.
does4-byte bits
does.lineOfSightbit 0Set where walls and terrain cut the region’s sight.
does.grantSightbit 1Set to turn on the region’s sight; sightFrom and revealHidden apply only where it is set. Where it is set, a client clears its map’s cover over the region.
does.revealHiddenbit 2Set to show hidden units within it, where grantSight is set.
does.unusedbit 3 to 31Unused; a server writes zero.
baseRadiusf32The region’s radius, in world units.
Vectors (1)

circle-on-4-18

In 4.20

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

A region grants sight, blocks the way, or grows cover.

FieldTypeWhat it is
sideu32The side the region belongs to.
kindi32Unused; a client makes a circle whatever it holds. A server writes 0.
objectu32An object the region keeps hold of, or zero; it changes nothing a client shows.
unitu32The unit the region follows, or zero where it stands still.
markeru32The name the region answers to, which RegionRemoved names to take it away.
sightFromu32The unit whose sight the region grants, or zero.
atXf32Where the region sits, along one ground axis, in world units.
atZf32Where it sits, along the other, in world units.
lifetimef32How long it lasts, in seconds. A lifetime of 0 never runs out.
lineOfSightRadiusf32How far out the region’s line of sight is reckoned, in world units.
grassRadiusf32How far out it grows cover, in world units.
sizeMultiplierf32What its stated radius is scaled by.
sizeAdditivef32What is added to its stated radius after scaling, in world units.
does1-byte bitsWhat the region does, in one byte.
does.lineOfSightbit 0Set where walls and terrain cut the region’s sight.
does.grantSightbit 1Set to turn on the region’s sight; sightFrom and revealHidden apply only where it is set. Where it is set, a client clears its map’s cover over the region.
does.revealHiddenbit 2Set to show hidden units within it, where grantSight is set.
does.unusedbit 3 to 7Unused; a server writes zero.
baseRadiusf32The radius the three size figures above are applied to, in world units.
Vectors (2)

another-on-4-20, one-on-4-20

RegionMoved

What a server sends to move a region of sight, keeping all else about it. The header carries zero.

Definition.

In 4.11–4.20

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

FieldTypeWhat it is
regionu32The region, as RegionAdded named it.
xf32Where its centre now stands, in world units.
zf32Where its centre now stands, in world units.
Vectors (2)

one-on-4-17, one-on-4-20

RegionRemoved

What a server sends to take away a region RegionAdded or RegionAttached placed. The header names no object: a server writes zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1050
4.11–4.2051
FieldTypeWhat it is
regionu32The region to take away, by the name RegionAdded gave it.
Vectors (6)

a-third-on-4-10, another-on-4-10, one-on-4-10, one-on-4-17, another-on-4-20, one-on-4-20

FogSet

What a server sends to turn the drawing of the fog of war on or off. It changes only what is drawn. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10170
4.11–4.20171
FieldTypeWhat it is
state1-byte bitsWhether the fog is drawn.
state.drawnbit 0Set to draw the fog, clear to draw the map with no darkening.
state.unusedbit 1 to 7Unused; a server writes zero.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

FogToggled

What a server sends to turn the drawing of the fog of war off where it is on, or on where it is off. It changes only what is drawn: what can be seen is still what a server sends. It carries nothing of its own. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10125
4.11–4.20126

No body.

Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

Movement

A unit is moved by a path: a run of points on the ground plane, the first of which is where the unit is and the last where it is going.

Coordinates

A path names one axis of the ground plane and then the other. The height of a point is not carried, and a receiving end takes it from the ground beneath.

Movement and MovementAtSpeed are compact: a path is a run of integer points, each stated against the one before it, while positions elsewhere are world floats covering a far larger range (see Space). The two are related by an origin and a step:

encoded = truncate_toward_zero((world - origin) / 2)
world   = origin + 2 * encoded

A path resolves a position to two world units, rounded toward the origin.

Other shapes

MovementAtSpeed carries the same points as Movement with the terms of the travel stated before them, and WaypointGroupAtSpeed is what carries it. Other messages carry their points as world floats, and their definitions say so. The message carrying a movement says which shape it holds.

A unit coming into sight while standing carries its place and facing in EnterSight instead.

Resolving a path

A path is read into points by taking the first as it stands and then, for each point after it, taking each coordinate either as it stands or by adding the step to the coordinate of the point before. The point before means as that point resolved, not what the wire carried for it, which matters wherever a coordinate stated afresh is followed by one stated as a step.

conformance/vectors/algorithm records the resolution of the paths the movement vectors carry. They give decoded fields and the points they resolve to.

What a group can carry

A sending end MUST NOT send a movement with no points; a receiving end refuses it.

The origin

The origin is the midpoint of the bounds a map’s navigation data covers, truncated to a whole number on each axis. Nothing on the wire carries it. Both ends hold it before a match begins, and an end holding a different one misplaces every position it reads.

A server MUST take the origin from the map it is hosting. A server MUST NOT derive the origin from anything a client sent.

Space gives the origin of each map, keyed by the map number a server sends in VersionSync. A server hosting a map the table leaves out takes its origin from that map’s navigation data.

Relocating rather than walking

A client answers each group with one WaypointAck, listing every unit in it that carried a token, with an empty list where none did. A server MAY ignore it.

A movement whose flag says so carries a token beside the unit (see Movement). A receiving end remembers one token for each unit, beginning at zero.

A token unlike the remembered one puts the unit where the path begins rather than walking it there, but only where the unit is far enough away to warrant it: either ground axis differing by more than fifty world units, taken on its own. Fifty exactly does not, and height is not weighed.

A token the receiving end already holds changes nothing, and neither does an unfamiliar one arriving while the unit is near enough. In both the path is followed and the remembered token kept, so a token is taken up only once it has moved something.

A client leaves the flag clear in what it sends, so a token travels only from a server.

What a client asks for and what a server answers

An order from a client is a request: what a unit does is whatever the server sends back.

A client does not move its own champion on a right click by itself: the champion moves only along a path a server sends.

A server moves the champion by answering the MoveOrder with a WaypointGroup, and the client returns that group’s syncId in a WaypointAck (see Ordering).

A client sends the path it would take, with its destination beside it in world floats. A WaypointGroup carrying that path back unchanged moves the champion along it.

A server MUST send the WaypointGroup that answers a MoveOrder on the transient channel.

In 4.1–4.19

Where its player has movement prediction on, a client starts its champion toward the point it asked for, and puts it back where it was if no path arrives within 2 seconds. A path carried by WaypointGroupAtSpeed cannot be overridden by the player’s orders, so a server walks a champion with WaypointGroup.

Marking the ground

NavigationFlags marks the ground within circles.

A server MUST NOT send NavigationFlags: a client fails on the first one a match brings.

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).

WaypointGroupAtSpeed

What a server sends to move units along paths of its own choosing, stating how each one travels rather than leaving it to the receiving end. It is what carries a unit thrown, dragged, or carried along by something other than its own walking. The header names no object: it carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1099
4.11–4.20100
FieldTypeWhat it is
syncIdu32Names this statement of movement.
movementCountu16How many units follow.
movementscount in movementCount × MovementAtSpeedWhat each unit is told to do.
Vectors (10)

a-plain-dash-on-4-10, following-a-unit-on-4-10, holding-its-facing-on-4-10, one-on-4-10, through-the-air-on-4-10, one-on-4-17, a-plain-dash-on-4-20, following-a-unit-on-4-20, holding-its-facing-on-4-20, through-the-air-on-4-20

WaypointAck

What a client sends once it has taken in a group of movements, naming which group. The header names no object: it carries zero.

Definition.

In 4.1–4.17

Carried on requests, sent by the client, unsequenced, under these commands:

BuildsCommand
4.1–4.10118
4.11–4.17119

It lists the units the group asked it to relocate.

FieldTypeWhat it is
syncIdu32Which group is being acknowledged, as the group named itself.
relocationCountu8How many relocations follow.
relocationscount in relocationCount × record
relocations[].unitu32The unit the token belonged to.
relocations[].tokenu8The token that arrived with it.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

Command 119 on requests, sent by the client, unsequenced.

It lists the units the group asked it to relocate.

FieldTypeWhat it is
syncIdu32Which group is being acknowledged, as the group named itself.
relocationCountu8How many relocations follow. It counts every movement in the group that carried a token, whether or not the token moved anything.
relocationscount in relocationCount × record
relocations[].unitu32The unit the token belonged to.
relocations[].tokenu8The token that arrived with it.
Vectors (2)

no-relocations-on-4-20, one-relocation-on-4-20

MoveOrder

What a client sends to tell a server what it wants a unit to do. The header names the sender’s champion.

Definition.

In every range of this book

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.10113
4.11–4.20114

The path it carries is what the client would take; where the unit actually goes is whatever the server answers with.

FieldTypeWhat it is
kindu8What is being asked for. Values: 2 moveToPosition, 3 attack, 10 stop.
targetXf32Where the order points, along one ground axis. Carried in world units rather than in the units a path uses.
targetZf32Where the order points, along the other.
targetu32The network object the order is aimed at, or zero where it is aimed at open ground.
movementMovement
Vectors (16)

a-long-path-on-4-10, at-a-target-on-4-10, both-afresh-on-4-10, one-on-4-10, one-point-on-4-10, one-step-on-4-10, stopping-on-4-10, z-steps-on-4-10, one-on-4-17, a-long-path-on-4-20, at-a-target-on-4-20, both-afresh-on-4-20, one-point-on-4-20, one-step-on-4-20, stopping-on-4-20, z-steps-on-4-20

WaypointGroup

What a server sends to move units. It carries a number a client returns to say it has taken the group in. The header carries zero or names the object this is about, and a client accepts either.

Definition.

In every range of this book

Carried on transient, sent by the server, unreliable, under these commands:

BuildsCommand
4.1–4.1096
4.11–4.2097
FieldTypeWhat it is
syncIdu32Names this group. A client returns it to say the group arrived.
movementCountu16How many units the group moves.
movementscount in movementCount × Movement
Vectors (12)

both-afresh-on-4-10, long-path-on-4-10, one-on-4-10, one-unit-on-4-10, teleport-on-4-10, z-steps-on-4-10, one-on-4-17, both-afresh-on-4-20, long-path-on-4-20, one-unit-on-4-20, teleport-on-4-20, z-steps-on-4-20

NavigationFlags

What a server sends to mark the ground within circles, in place of the circles it marked before: each circle’s flags apply to the ground within it. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1064
4.11–4.2065

A client fails on the first of these in a match: it stops, marking no circle and sending no answer.

FieldTypeWhat it is
countu16The count of circles that follow.
syncIdi32A number naming this marking.
circlescount in count × recordThe circles.
circles[].xf32The circle’s centre, along one ground axis, in world units.
circles[].zf32The circle’s centre, along the other ground axis, in world units.
circles[].radiusf32Its radius, in world units. A circle of radius 1000 or more marks nothing.
circles[].flagsu32The flags to add to each cell. Only the low 16 bits take effect.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

DrawPath

What a client sends as its player draws a path with the right mouse button, once a server has turned drawing on (DrawPathMode). The header names the sender’s champion.

Definition.

In every range of this book

Command 262 on requests, sent by the client, reliable.

FieldTypeWhat it is
unitu32The sender’s champion.
nodeu8Where in the stroke this point falls. Values: 0 start, 1 update, 2 end.
xf32Where the cursor points on the ground, along one axis, in world units.
yf32Its height, in world units.
zf32Where the cursor points on the ground, along the other axis, in world units.
Vectors (2)

one-on-4-17, one-on-4-20

DrawPathMode

What a server sends its player’s champion to have the player draw paths with the mouse. The header names the champion. While on, each right click on the world also sends DrawPath. A client sets how often a held right click repeats a move to the interval, at least 0.1 seconds, whether on or off.

Definition.

In every range of this book

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

FieldTypeWhat it is
unitu32It has no effect.
modeu8Zero to turn drawing off, any other value to turn it on.
intervalf32Seconds between repeats of a held right click.
Vectors (2)

one-on-4-17, one-on-4-20

FaceDirection

What a server sends to turn a unit to face a direction. The header names the unit acting.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.1079
4.11–4.1780
FieldTypeWhat it is
towardXf32The direction faced, along one ground axis.
towardYf32The direction faced, in height.
towardZf32The direction faced, along the other ground axis.
how1-byte bits
how.turnOverTimebit 0Set to turn over turnTime, at least 0.0001 seconds; clear to face the direction at once, with turnTime having no effect and the usual turn rate restored.
how.unusedbit 1 to 7Unused; a server writes zero.
turnTimef32How long the turn takes, in seconds.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
how1-byte bits
how.turnOverTimebit 0Set where the turn takes the time named below rather than happening at once.
how.unusedbit 1 to 7Unused; a server writes zero.
towardXf32The direction faced, along one ground axis.
towardYf32The direction faced, in height.
towardZf32The direction faced, along the other ground axis.
turnTimef32How long the turn takes, in seconds.
Vectors (2)

another-on-4-20, one-on-4-20

FacePosition

What a client sends when a script it runs turns a unit to face a point. A server need do nothing with it. The header names the unit turned.

Definition.

In 4.1–4.8

Command 79 on requests, sent by the client, reliable.

FieldTypeWhat it is
directionXf32Which way the unit now faces, as a direction of length one, along one ground axis.
directionYf32Which way the unit now faces, as a direction of length one, in height.
directionZf32Which way the unit now faces, as a direction of length one, along the other ground axis.
unusedu8A client writes zero.
unknownf32A client writes 0.1.
Vectors (1)

one-on-4-1

MovementBounds

What a server sends to set a circle that a client keeps its view or its champion’s orders within. The header carries zero.

Definition.

In every range of this book

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

A client pulls an order to a point outside onto the circle’s edge before sending it, and drops an order at an object outside.

FieldTypeWhat it is
xf32The circle’s centre, in world units.
yf32The centre’s height, in world units.
zf32The circle’s centre, in world units.
radiusf32The circle’s radius, in world units. Zero lifts the bounds; a negative radius counts as zero.
flags1-byte bitsWhat else the circle holds.
flags.camerabit 0Set to keep the camera within the circle too. Clear leaves the camera as it was, bound or not.
flags.unusedbit 1 to 7Unused; a server writes zero.
Vectors (2)

one-on-4-17, one-on-4-20

Path

What a server sends to set a unit walking along a path, facing the way it walks. The header names the unit.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10184
4.11–4.20185

A client answers every one at once, unsequenced on the transient channel, with ten bytes: WaypointAck’s command, a net id of zero, this sync id, and one byte that is arbitrary and carries no meaning. It applies it only where the sync id is not older than the last the unit took (as UnitStopped).

FieldTypeWhat it is
syncIdi32The unit’s movement count.
pointsto the end × recordThe path’s points, to the end of the message. A client takes the ground’s height for each.
points[].xf32A point on the path, in world units.
points[].zf32A point on the path, in world units.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

PathWithSpeed

What a server sends to set a unit moving along a path at a speed of its own, perhaps in an arc. The header names the unit.

Definition.

In 4.1–4.14

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

BuildsCommand
4.1–4.10130
4.11–4.14131

A client answers every one at once, as it answers Path, whatever its sync id. It applies it only where the sync id is not older than the last the unit took (as UnitStopped). A unit can follow another unit.

FieldTypeWhat it is
syncIdi32The unit’s movement count.
speedf32The speed to move at, in world units a second.
gravityf32The arc’s gravity, for a leap, in units of 150 world units a second squared. Zero or less moves the unit flat.
arcXf32Where the arc begins, in world units.
arcZf32Where the arc begins, in world units.
facingi8Which way the unit faces as it moves. Values: 0 along, 1 keep.
followu32A unit to follow, or zero for none.
followDistancef32How near to keep to it, in world units. It takes effect only where follow is not zero.
backOfff32How far to fall back from it, in world units. It takes effect only where follow is not zero.
travelTimef32How long the move takes, in seconds. It takes effect only where follow is not zero.
pointsto the end × recordThe path’s points, to the end of the message. A client takes the ground’s height for each.
points[].xf32A point on the path, in world units.
points[].zf32A point on the path, in world units.
Vectors (2)

along-on-4-1, along-on-4-11

In 4.15–4.16

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

A client answers every one at once, as it answers Path, whatever its sync id. It applies it only where the sync id is not older than the last the unit took (as UnitStopped). A unit can follow another unit.

FieldTypeWhat it is
syncIdi32The unit’s movement count.
speedf32The speed to move at, in world units a second.
gravityf32The arc’s gravity, for a leap, in units of 150 world units a second squared. Zero or less moves the unit flat.
arcXf32Where the arc begins, in world units.
arcZf32Where the arc begins, in world units.
facingu8Which way the unit faces as it moves. Values: 0 along, 1 keep.
followu32A unit to follow, or zero for none.
followDistancef32How near to keep to it, in world units. It takes effect only where follow is not zero.
backOfff32How far to fall back from it, in world units. It takes effect only where follow is not zero.
travelTimef32How long the move takes, in seconds. It takes effect only where follow is not zero.
pointsto the end × recordThe path’s points, to the end of the message. A client takes the ground’s height for each.
points[].xf32A point on the path, in world units.
points[].zf32A point on the path, in world units.
Vectors (1)

along-on-4-15

In 4.17

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

A client answers every one at once, as it answers Path, whatever its sync id. It applies it only where the sync id is not older than the last the unit took (as UnitStopped). A unit can follow another unit.

FieldTypeWhat it is
syncIdi32The unit’s movement count.
speedf32The speed to move at, in world units a second.
gravityf32The arc’s gravity, for a leap, in units of 150 world units a second squared. Zero or less moves the unit flat.
arcXf32Where the arc begins, in world units.
arcZf32Where the arc begins, in world units.
facingi8Which way the unit faces as it moves. Values: 0 along, 1 keep.
followu32A unit to follow, or zero for none.
followDistancef32How near to keep to it, in world units. It takes effect only where follow is not zero.
backOfff32How far to fall back from it, in world units. It takes effect only where follow is not zero.
travelTimef32How long the move takes, in seconds. It takes effect only where follow is not zero.
pointsto the end × recordThe path’s points, to the end of the message. A client takes the ground’s height for each.
points[].xf32A point on the path, in world units.
points[].zf32A point on the path, in world units.
Vectors (1)

along-on-4-17

In 4.18–4.20

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

A client answers every one at once, as it answers Path, whatever its sync id. It applies it only where the sync id is not older than the last the unit took (as UnitStopped). A unit can follow another unit.

FieldTypeWhat it is
syncIdi32The unit’s movement count.
speedf32The speed to move at, in world units a second.
gravityf32The arc’s gravity, for a leap, in units of 150 world units a second squared. Zero or less moves the unit flat.
arcXf32Where the arc begins, in world units.
arcZf32Where the arc begins, in world units.
facingu8Which way the unit faces as it moves. Values: 0 along, 1 keep.
followu32A unit to follow, or zero for none.
followDistancef32How near to keep to it, in world units. It takes effect only where follow is not zero.
backOfff32How far to fall back from it, in world units. It takes effect only where follow is not zero.
travelTimef32How long the move takes, in seconds. It takes effect only where follow is not zero.
pointsto the end × recordThe path’s points, to the end of the message. A client takes the ground’s height for each.
points[].xf32A point on the path, in world units.
points[].zf32A point on the path, in world units.
Vectors (1)

one-on-4-20

UnitLookAt

What a server sends to turn a unit toward something. Its identifier is wider than a byte, so it travels behind the escape. The header names the unit acting.

Definition.

In every range of this book

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

FieldTypeWhat it is
kindu8What the unit’s model turns to look at; not which way it faces. A client ignores 3 and above, keeping what it looked at before. Values: 0 direction, 1 point, 2 unit.
xf32Where to look, along one ground axis, in world units.
yf32Where to look, in height, in world units.
zf32Where to look, along the other ground axis, in world units.
targetu32The network object being looked at, where one is named.
Vectors (2)

one-on-4-17, turning-to-a-target-on-4-20

UnitStopped

What a server sends to stop a unit where it stands. The header names the unit.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1048
4.11–4.2049

A client applies it only where its sync id is not older than the last the unit took, counting a wrap: this message, PathWithSpeed and Path share one count per unit, starting at -1.

FieldTypeWhat it is
xf32Where the unit stands, in world units; a client keeps this height rather than the ground’s.
yf32Its height, in world units.
zf32Where it stands, in world units.
facingXf32The way it faces.
facingYf32The way it faces.
facingZf32The way it faces.
syncIdi32The unit’s movement count.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

Replication

With Replication a server states what has changed about the units a client can see: for each unit, the groups of values it carries and which values of each follow. What the values are follows from the unit.

The groups follow in the order 0, 1, 2, 3, 5 and then 4: group 4 comes last, each behind the length of its run. A sending end MUST write each group’s length as the number of bytes its run takes.

Each value takes one of two shapes, and the table row naming it says which. Nothing on the wire carries a table, a field name, a width or a shape, so an end that does not already hold the table cannot read a run.

A value that counts is a thirty two bit unsigned integer, and a value with a sign travels as the same thirty two bits. It takes seven bits from each byte, lowest seven first, and the top bit of a byte is set while another byte follows. Five bytes therefore carry anything it holds.

A value that measures takes one of three forms: a single byte of 255 meaning zero; a byte of 254 followed by four bytes; or four bytes on their own. The four bytes are the measure itself, a thirty two bit float, lowest byte first. A sending end MUST write the byte of 254 before a measure whose lowest byte is 254 or 255, and MUST NOT write it before any other. A measure written plain therefore never begins with either, so its first byte says which form it takes.

What settles a reading

A run is a sequence of values with nothing between them, in the order the set bits name them, lowest first.

The bit that names a value means different things for different units. Champions, turrets, minions and units belonging to no side, and buildings each answer to a table of their own, so the same bit in the same group is one value on one unit and another on the next. A sending end MUST write the table the unit it names answers to.

Props answer to a table of their own as well.

Which table a unit answers to follows from the message that put it on the field (see Units). A building, which no message creates, answers to the building table.

A building answers to the building table of the map loaded.

Which batches a client takes

A client answers a batch with TransientAck where it holds every unit the batch names, whether or not it took the values. Ordering says which batches a client takes, and what that requires of a server.

Reading the tables

Each row gives the group and bits that name a value and what the value is.

Each row also gives the shape a sending end writes the value in.

A champion

GroupBitsValueShape
00Gold in handmeasured
01Gold earned in allmeasured
02 to 3Which of the champion’s slots can be cast from, as a set of bits over two wordscounted
04 to 5Which summoner slots can be cast from, as a set of bits over two wordscounted
06Points held for evolving a spellcounted
07Which spells have evolved, as a set of bitscounted
08 to 27What the spell in one slot costsmeasured
10 to 4What the champion is doing, and four kinds of harm it is proof againstcounted
15Damage it deals by strikingmeasured
16Damage its spells deal before modifiersmeasured
17How often it turns a blow asidemeasured
18How often it strikes criticallymeasured
19Armourmeasured
110Spell resistancemeasured
111 to 12How fast health and resource returnmeasured
113How far it strikes frommeasured
114 to 16Flat and percent modifiers on the damage it strikes with, then the flat modifier on its spells’ damagemeasured
117 to 18Flat and percent reduction of the spell damage it takesmeasured
119A multiplier on how fast it strikesmeasured
120A flat addition to how far from the champion an aimed spell’s point is allowed to landmeasured
121A modifier on its cooldownsmeasured
122When its passive’s cooldown ends, as a moment on the match clockmeasured
123How long its passive’s cooldown lasts in allmeasured
124 to 25How much armour it cuts through, flat then as the share left standingmeasured
126 to 27How much spell resistance it cuts through, flat then as the share left standingmeasured
128Life stealmeasured
129Spell vampmeasured
130Crowd-control reductionmeasured
20 to 1How much more armour and spell resistance it cuts through, as the share left standingmeasured
30 to 1Health and resource as they standmeasured
32 to 3Health and resource at their greatestmeasured
34Experiencemeasured
35 to 9Lifetime, and how far the champion seesmeasured
310How fast it movesmeasured
311 to 12Its size, and how wide a path it needsmeasured
313Levelcounted
314 to 16Kills taken from no side, and whether anything is allowed to aim at itcounted

Bit 2 holds which of slots 0 to 3 can be cast from, one bit for each slot, set as a champion learns the spell in it, and bit 4 holds which summoner spells can be cast from, as a mask in which a server sets its bits 4 and 5, one for each summoner slot. Bits 3 and 5 of the group carry zero. Sides and slots numbers the slots.

Bits 8 to 11 carry what the spells in slots 0 to 3 cost. A server sets bits 8 to 27 together and writes zero in bits 12 to 27. It leaves bits 6 and 7, and group 1 bit 31, clear.

A server writes 0x800007 in group 1 bit 0.

What a client shows from this table

A client shows, for a champion:

  • its health and resource bars, as they stand (group 3 bits 0 and 1) out of their greatest (bits 2 and 3);
  • its level (group 3 bit 13), on the portrait and over the health bar, together with the spell points that level brings;
  • its gold (group 0 bit 0);
  • in the panel under its portrait, ability power (group 1 bit 6), armour (bit 9), spell resistance (bit 10), movement speed (group 3 bit 10), and attack speed as the champion’s own base attack speed times group 1 bit 19;
  • in its panel of statistics, group 1 bit 21 as cooldown reduction, its size as a percent whatever its sign; bits 28 and 29 as life steal and spell vamp, and bit 30 as tenacity, each a fraction shown as a percent; and bits 24 and 26 as flat penetration of armour and of spell resistance.

The attack damage the panel under the portrait shows is the client’s own figure for the champion’s level, with group 1 bit 14 added to it and drawn as a bonus.

Until a champion’s first batch arrives, the panel shows figures the client holds for that champion. Once one arrives, it shows the values batches carry, and armour, spell resistance, ability power and movement speed read 0 where no batch has carried them.

Each percent penetration field carries the share of armour or spell resistance left standing, 1 where nothing is cut through. The panel shows what two of them cut through together, as 200 percent less both shares in percent: bit 25 of group 1 with bit 0 of group 2 for armour, and bit 27 of group 1 with bit 1 of group 2 for spell resistance.

A spell’s cooldown lasts its base length times one plus the modifier at bit 21, so a reduction is carried as a negative fraction and the panel shows its size.

Bit 22 sets the countdown a client shows on the champion’s passive. It is a moment on the match clock (see Time), in seconds, on the same clock as the time a ClockSync carries, and not the time left: 120 at the opening of a match starts the countdown from 2:00. Once that moment has passed, the passive shows ready. Bit 23 is how long the whole cooldown lasts, in seconds, and a client shades the passive’s icon by the time left over that length; the countdown itself follows bit 22 alone.

A turret

GroupBitsValueShape
10 to 1Resource at its greatest, then as it standsmeasured
12 to 6What the turret is doing, and four kinds of harm it is proof againstcounted
17Damage it deals by strikingmeasured
18Armourmeasured
19 to 14Spell resistance, the modifiers on its damage, and how fast health returnsmeasured
30 to 1Health as it stands, then at its greatestmeasured
32 to 3How far it seesmeasured
34How fast it movesmeasured
35Its sizemeasured
50 to 1Whether anything is allowed to aim at it, and which side iscounted

Where a server raises a turret’s health at its greatest, it raises health as it stands to the same value.

A minion, and a unit belonging to no side

Both answer to one table.

GroupBitsValueShape
10 to 1Health as it stands, then at its greatestmeasured
12 to 4How long it lives, as it stands and at its greatest, and the count of thatmeasured
15 to 6Resource at its greatest, then as it standsmeasured
17 to 11What the unit is doing, and four kinds of harm it is proof againstcounted
112Damage it deals by strikingmeasured
113 to 31Its defences and the modifiers on themmeasured
30 to 1How far it seesmeasured
32How fast it movesmeasured
33Its sizemeasured
34 to 5Whether anything is allowed to aim at it, and which side iscounted

A building

Inhibitors and nexuses, each named by the identifier Objects and identifiers gives its name. Where a server replicates a map’s buildings, it sends these two groups and nothing else. On map 8 it replicates none.

GroupBitsValueShape
10A health figuremeasured
11Whether the building is proof against harmcounted
50 to 1Whether anything is allowed to aim at it, and which side iscounted

The health figure does not follow the building’s health. A server SHOULD send an inhibitor’s as 4000 on maps 1 and 11 and 3000 on map 10, a nexus’s as 5500 on those three, and every building’s as 0 on map 12. A server SHOULD NOT change it, even as a building is destroyed. A server first names a building in the EnterSight that brings it into a side’s sight.

A prop

A server need not replicate a prop’s values. Where it does, they follow the table below.

GroupBitsValueShape
10 to 1Health as it stands, then at its greatestmeasured
12Whether the prop is proof against harmcounted
30 to 1How far it seesmeasured
32How fast it movesmeasured
33Its sizemeasured
34 to 5Whether anything is allowed to aim at it, and which side iscounted

Values stated outside a batch

Besides its batches, a server states some values with messages of their own.

A server grants experience with ExperienceGained and gold with GoldGained.

A server can send the gold a unit earns to another with GoldRedirect. A level gained is LevelUp, which on its own is enough for a client to show the new level on its champion’s portrait. A server sets a champion’s tallies for the scoreboard with ChampionStats. A server can also add to a unit’s shield (ShieldAdded), change how its health bar or resource bar is shown (HealthBar, ResourceDisplay), change the sort of resource it has (ResourceKindChanged), set the highest level a champion reaches (LevelCap), and count minions killed, scores and deeds (MinionKillCount, ScoreAdded, StatisticIncremented).

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).

Replication

What a server sends to say what has changed about units a client can see. It is the most frequent thing a server sends. The header names no object: a server writes zero.

Definition.

In every range of this book

BuildsCommandCarried
4.1–4.10195on transient, sent by the server, unreliable
4.11–4.17196on transient, sent by the server, unreliable
4.18–4.20196on transient, or on events reliable, sent by the server, unreliable
FieldTypeWhat it is
syncIdu32Names this batch of changes. Replication says which batches a client takes values from.
unitCountu8How many units follow.
unitscount in unitCount × Replication
Vectors (10)

group-four-on-4-10, one-on-4-10, group-four-on-4-17, one-on-4-17, a-later-group-on-4-20, group-four-on-4-20, on-the-events-channel-on-4-20, on-the-transient-channel-on-4-20, one-group-on-4-20, several-groups-on-4-20

TransientAck

What a client sends to say a batch of changes arrived, naming which batch. The header names no object: it carries zero.

Definition.

In every range of this book

Carried on requests, sent by the client, unsequenced, under these commands:

BuildsCommand
4.1–4.10167
4.11–4.20168

It is sent for a batch whose values the client dropped as well as for one it took.

FieldTypeWhat it is
syncIdu32Which batch is being acknowledged, as the batch named itself.
Vectors (4)

first-on-4-10, one-on-4-10, one-on-4-17, first-on-4-20

GoldGained

What a server sends to show a unit gaining gold. The header names the unit whose death earned the gold, as source does.

Definition.

In every range of this book

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

It grants the unit gold.

FieldTypeWhat it is
unitu32The unit granted it.
sourceu32What it came from, or zero where nothing did.
amountf32How much.
Vectors (3)

one-on-4-17, another-on-4-20, one-on-4-20

ExperienceGained

What a server sends to say a unit gained experience. The header names no object: a server writes zero.

Definition.

In every range of this book

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

FieldTypeWhat it is
unitu32The unit granted it.
amountf32How much.
Vectors (3)

one-on-4-17, another-on-4-20, one-on-4-20

GoldRedirect

What a server sends to send the gold a unit earns to another. The header names the unit.

Definition.

In every range of this book

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

FieldTypeWhat it is
targetu32The unit that receives the gold.
Vectors (2)

one-on-4-17, one-on-4-20

LevelUp

What a server sends when a unit gains a level. The header names the unit this is about. On its own, with no replication behind it, it is enough for a client to show the new level on the champion’s portrait and offer the unspent points.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1062
4.11–4.2063
FieldTypeWhat it is
levelu8The level now reached.
pointsToSpendu8How many spell points are left unspent.
Vectors (6)

a-third-on-4-10, another-on-4-10, one-on-4-10, one-on-4-17, another-on-4-20, one-on-4-20

ChampionStats

What a server sends to set a champion’s tallies for the scoreboard. The header names the champion.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.1069
4.11–4.1770
FieldTypeWhat it is
sizeu32The whole length of what follows the header, these four bytes included, as a whole 32-bit count. A mismatch has no effect, and does not limit what a client takes.
valuesbytes, sized by size minus 4One value per tally of the match’s mode, the tallies in ascending byte order of their names. An int takes 4 bytes, a float 4, a bool 1, a 64-bit int 8, and text a 16-bit length below 255 then that many bytes. Bytes left over have no effect. A nonzero count of champion kills marks first blood taken.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
sizeu32The whole length of what follows the header, these four bytes included, as a whole 32-bit count. A mismatch has no effect, and does not limit what a client takes.
valuesbytes, sized by size minus 4The figures themselves, one after another with nothing between. Which they are comes from the client’s own data for the match’s mode. In a classic match there are 76, in this order: assists, inhibitors destroyed, champion kills, consumables bought, double kills, experience (f32), own inhibitors lost, own nexus lost, own turrets lost, gold earned (f32), gold spent (f32), nexus destroyed, player id, the items in slots 0 to 6, items bought, killing sprees, largest critical strike (f32), largest killing spree, largest multikill, level, longest time alive (f32), magic damage dealt (f32), magic damage to champions (f32), magic damage taken (f32), minions killed, name (text), neutral monsters killed, monsters killed in the enemy’s jungle, monsters killed in the side’s own jungle, never entered the game, deaths, penta kills, physical damage dealt, to champions and taken (f32 each), ping, quadra kills, sight wards bought, skin, casts of spells 1 to 4, casts of summoner spells 1 and 2, epic monsters killed, side, a teammate never entered the game, time since the last disconnection (f32), time played (f32), time disconnected (f32), total damage dealt, to champions and taken (f32 each), total healing, crowd control dealt (f32), time dead (f32), units healed, triple kills, true damage dealt, to champions and taken (f32 each), turrets destroyed, unreal kills, vision wards bought, wards destroyed, wards placed, away from the keyboard, away after a failed surrender, and win (text). Every one not marked otherwise is an i32; a text is a 16-bit length and that many bytes, at most 63, with nothing to end it. ARAM, First Blood and One for All leave out the two jungle counts. The tutorial also leaves out never entered the game, sight wards bought, a teammate never entered the game, crowd control dealt, the three true damage figures, vision wards bought, wards destroyed, wards placed and away after a failed surrender. Dominion and Ascension have 75, in this order: assists, champion kills, combat score (f32), consumables bought, double kills, experience (f32), gold earned (f32), gold spent (f32), player id, the items in slots 0 to 6, items bought, killing sprees, largest critical strike (f32), largest killing spree, largest multikill, level, longest time alive (f32), magic damage dealt, to champions and taken (f32 each), minions killed, name (text), neutral monsters killed, never entered the game, node captures, node capture assists, node neutralizations, node neutralization assists, deaths, objective score (f32), penta kills, physical damage dealt, to champions and taken (f32 each), ping, quadra kills, sight wards bought, skin, casts of spells 1 to 4, casts of summoner spells 1 and 2, side, a teammate never entered the game, team objective, time since the last disconnection (f32), time played (f32), time disconnected (f32), total damage dealt, to champions and taken (f32 each), total healing, total score (f32), total score rank, crowd control dealt (f32), time dead (f32), units healed, triple kills, true damage dealt, to champions and taken (f32 each), unreal kills, victory points (f32), vision wards bought, away from the keyboard, away after a failed surrender, and win (text).
Vectors (2)

another-on-4-20, one-on-4-20

ShieldAdded

What a server sends to add to a unit’s shield. The header names the unit.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10101
4.11–4.20102

Both physical and magical set adds amount to the shield that takes either kind of damage; one of them, to that kind’s shield; neither, to nothing. A negative amount lowers it, and any shield left below 0.001 becomes zero. noFade clear does not restart a fade already stopped.

FieldTypeWhat it is
flags1-byte bitsWhich shield.
flags.physicalbit 0Set where the shield turns aside physical damage.
flags.magicalbit 1Set where it turns aside magical damage. Both set means either.
flags.noFadebit 2Set where the shield does not fade.
flags.unusedbit 3 to 7Unused; a server writes zero.
amountf32How much is added.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

HealthBar

What a server sends about a unit’s health bar. The header names the unit.

Definition.

In 4.1–4.19

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

BuildsCommand
4.1–4.10205
4.11–4.19206
FieldTypePresent whenWhat it is
flags1-byte bitsWhat changes.
flags.showbit 0Set to show the bar, clear to hide it.
flags.changeTypebit 1Set where the bar’s type changes; the type and side below apply only then.
flags.unusedbit 2 to 7Unused; a server writes zero.
barTypeu8flags.changeType setWhich sort of bar, applying only where changeType is set and side is the client’s player’s side or zero: 1 a unit’s, 2 a champion’s; any other value only makes sure the unit has a bar.
sidei32flags.changeType setThe side that sees the change, or 0 for every side.
Vectors (4)

another-on-4-1, one-on-4-1, another-on-4-11, one-on-4-11

In 4.20

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

FieldTypePresent whenWhat it is
flags1-byte bitsWhat changes.
flags.showbit 0Set to show the bar, clear to hide it.
flags.changeTypebit 1Set where the bar’s type changes; the type and side below apply only then.
flags.unusedbit 2 to 7Unused; a server writes zero.
barTypeu8Which sort of bar, applying only where changeType is set and side is the client’s player’s side or zero: 1 a unit’s, 2 a champion’s; any other value only makes sure the unit has a bar.
sidei32flags.changeType setThe side that sees the change, or 0 for every side.
Vectors (1)

one-on-4-20

ResourceDisplay

What a server sends to change how a unit’s resource bar is shown. The header names the unit.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10146
4.11–4.20147
FieldTypeWhat it is
unusedu32Unused; its bytes carry no meaning. The header names the unit.
statei32Which way the resource is shown; a client sets the unit’s resource bar by it, and what each value looks like depends on the unit’s own data.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

ResourceKindChanged

What a server sends to change what sort of resource a unit has, which its bar’s colours and art follow. The header names the unit.

Definition.

In 4.1–4.10

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

FieldTypeWhat it is
kindu8The kind. A client knows 0 to 11, and takes any higher value as none. Values: 0 mana, 1 energy, 2 none, 3 shield, 4 battleFury, 5 dragonFury, 6 rage, 7 heat, 8 ferocity, 9 bloodWell, 10 wind, 11 other.

In 4.11–4.20

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

FieldTypeWhat it is
kindu8The kind. Values: 0 mana, 1 energy, 2 none, 3 shield, 4 battleFury, 5 dragonFury, 6 rage, 7 heat, 8 gnarFury, 9 ferocity, 10 bloodWell, 11 wind, 12 other.
Vectors (2)

one-on-4-17, one-on-4-20

LevelCap

What a server sends its player’s champion to set the highest level it can reach. The header names the champion.

Definition.

In every range of this book

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

FieldTypeWhat it is
capu8The highest level; zero restores the usual 18.
Vectors (2)

one-on-4-17, one-on-4-20

MinionKillCount

What a server sends to add one to a champion’s count of minions killed. The header carries zero.

Definition.

In 4.3–4.20

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

FieldTypeWhat it is
championu32The champion.
Vectors (2)

one-on-4-17, one-on-4-20

ScoreAdded

What a server sends to add to a player’s score. The header names no object: a server writes zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10216
4.11–4.20217

A client ignores the message where player names no champion it holds.

FieldTypeWhat it is
championu32The champion whose score it is.
categoryu8Which part of the score. Values: 0 offense, 1 defense, 2 combat, 3 objective.
eventu8What earned it.
flags1-byte bitsHow it is shown.
flags.calloutbit 0Set where the client announces it.
flags.unusedbit 1 to 7Unused; a server writes zero.
pointsf32How much is added.
Vectors (3)

objective-on-4-1, objective-on-4-11, objective-on-4-20

StatisticIncremented

What a server sends to add one to a champion’s count of a deed, as counted for the end of a match. Nothing shows at once. A client ignores it where the id names no champion. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10217
4.11–4.20218
FieldTypeWhat it is
championu32The champion.
statisticu8Which count. A value past those named has no defined effect. Values: 0 pointCaptured, 1 pointNeutralised, 2 killWhileAttackingPoint, 3 teamObjective, 4 defendedPointNeutralised, 5 killWhileDefendingPoint, 6 timeDefendingPoint, 7 lastStand, 8 captureAssist, 9 neutraliseAssist.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

GoldEarned

What a server sends about gold a champion earned. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10227
4.11–4.20228

A server sends it to clients watching a match. It credits the champion with the gold.

FieldTypeWhat it is
owneru32The champion credited.
amountf32How much gold. 0.95 is what a champion earns for each step it stands still.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

GoldSourcesLog

What a server sends to carry a text to a client. It changes nothing a client shows. The header carries zero.

Definition.

In every range of this book

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

FieldTypeWhat it is
lengthu32How many bytes of text follow. Zero, or a value above 2147483647, carries no text.
texttext, sized by lengthThe text, with no terminating zero. A client looks each word up in its own text and writes the result a line at a time.
Vectors (2)

one-on-4-17, one-on-4-20

MultikillCount

What a server sends a client watching a match to state a champion’s run of kills. The header carries zero.

Definition.

In every range of this book

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

FieldTypeWhat it is
owneru32The champion.
countu8How many kills in the run.
Vectors (2)

one-on-4-17, one-on-4-20

StatTick

What a server sends to advance every unit’s stats by a span of time. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1039
4.11–4.2040

A client takes it and changes nothing it shows.

FieldTypeWhat it is
secondsf32The span, in seconds.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

The match

How a match runs once play has begun, apart from the field: its clock, holds, its end, and players leaving and coming back.

The clock

A server states how long the match has run with ClockSync, and a client answers on the clock channel with ClockReply. Time says how the match clock is kept, and which clock each time on the wire is measured against.

GameSpeed sets how fast the match runs. StatTick hands every unit a span of seconds.

In 4.1–4.19

A client shows the speed GameSpeed sets over its champion. A client changes nothing it shows for StatTick.

In 4.1–4.19

Sent during a hold, GameSpeed takes effect as the match resumes.

StatTick asks every unit’s stats to advance by that span.

Holding and resuming

A client asks to hold the match with Pause, and to resume it with Resume. A server MUST attribute each to the connection it arrived on (see Objects and identifiers).

In 4.1–4.17

A client names no one in Pause or Resume.

In 4.18–4.19

A client puts 0 in the client id of Pause and Resume, the same id as the first seat’s, so a server takes no seat from that field.

A server holds the match with Paused.

Paused carries how long the hold can last, in seconds.

In 4.1–4.19

A client begins a hold only where the time Paused carries is above zero and the match is not already held.

In 4.1–4.19

A client shows a tournament’s hold, crediting the seat that asked, where the message says it is one.

A server ends the hold with Resumed.

Resumed ends the hold either at once or after a countdown the client shows, during which the match stays held.

A client announces in chat who resumed the match.

Input stays locked during the countdown.

The end

A server ends the match with GameEnded, saying which side won, and takes the interface down with HudDisabled. A client shows the win or loss for its player’s side and sends ClientFinished.

In 4.1–4.19

A client that receives GameEnded while still loading leaves at once.

A client sends ClientFinished once, and not while playing a replay.

VictoryDance sets units moving as winners or losers do. It ends nothing.

VictoryDance moves every unit.

Leaving and coming back

A client leaving as one abandoning the match sends Exit: as its player quits or closes the window, as a reconnection fails, or on a server’s Shutdown, which has it leave at once. A client also leaves at once on BotKick with the action that means leave.

In 4.1–4.17

The action of BotKick that means leave is 4.

In 4.18–4.20

The action of BotKick that means leave is 5.

A server tells the others that a player’s client dropped with PlayerDisconnected.

In 4.1–4.19

A client shows a notice in chat for PlayerDisconnected.

SoftReconnect rebuilds a client’s world without a new connection, as Objects and identifiers describes.

A client started again for a match in progress knows nothing of it, and joins as at the start: a server takes it through Joining a match from registering to StartGame, with a spawn run that states the field as it stands, and a ClockSync.

A client the server drops with the reason that means its player was away shows that, and does not connect again.

A server MUST NOT send SpawnStart to a client coming back from a drop: it returns the client to spawning, from which only another StartGame brings it back into play.

In 4.1–4.19

Reconnected announces that another player came back. A client shows it for an ally, or for anyone while it watches the match, and only notes it where it names its own client.

A client dropped during play connects again by itself, registers again, and sends ReconnectedInMatch right after the registration answer; one dropped while loading leaves instead.

A client dropped during play connects again to the same address and port, and shows its player that it is reconnecting until it is back. It goes on where it was: it asks for no status and no version, loads nothing, and keeps every seat, name and identifier it held. A server answers with SoftReconnect, sending between its two stages a message creating each unit the client is to hold.

Staying connected

In 4.1–4.19

A client’s view report, Camera, goes out as its view moves at least 200 units, at most every tenth of a second, and never while its view is locked.

Once loading is done, a client gives up on a connection where a reliable message it sent goes unacknowledged for 15 seconds.

In 4.1–4.19

Before loading is done, a client waits 60 seconds for an acknowledgement rather than 15.

Where it has heard nothing for 5 seconds in play, a client shows its player that it is trying to reconnect, and clears the notice as soon as anything arrives.

In 4.1–4.19

In play a client sends nothing on its own to show it is still there: what it sends answers what it is sent (ClockReply, TransientAck, WaypointAck) or follows from its player, and Camera goes out only as its view moves.

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).

ClockSync

What a server sends to set a client’s idea of how long the match has run. The header names no object: a server writes zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10192
4.11–4.20193
FieldTypeWhat it is
elapsedf32How long the match has run, in seconds.
Vectors (5)

another-on-4-10, one-on-4-10, one-on-4-17, another-on-4-20, one-on-4-20

ClockReply

What a client sends back when a server states the match clock, carrying both readings so the server can tell how far apart they are. The header names no object: it carries zero.

Definition.

In every range of this book

Command 8 on clock, sent by the client, reliable.

FieldTypeWhat it is
serverSaidf32What the server last said the clock stood at, in seconds.
clientSaidf32What the client’s own clock stood at when that statement arrived, in seconds.
Vectors (3)

one-on-4-17, another-on-4-20, one-on-4-20

GameSpeed

What a server sends to set how fast the game’s clock runs. A client shows the new speed over its champion. The header carries zero.

Definition.

In every range of this book

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

Sent while paused, it takes effect on resuming.

FieldTypeWhat it is
speedf32How fast, 1 being normal. A client keeps it between 0 and 10.
Vectors (2)

one-on-4-17, one-on-4-20

Resumed

What a server sends to take the match off hold. The header names a champion: that of the player who resumed the match.

Definition.

In 4.1–4.17

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

The header has no effect. Resuming after the countdown, it keeps input locked and the pause panel open until a countdown of its own ends; resuming at once, it unlocks input and closes the panel.

FieldTypeWhat it is
clientIdu32The client id of the player who resumed the match, announced in chat in their side’s colour where their champion is known; 4294967295 announces no one.
how1-byte bits
how.afterCountdownbit 0Set where the match starts again after a countdown rather than at once.
how.unusedbit 1 to 7Unused; a server writes zero.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
clientIdu32The client id of the client that lifted the hold.
how1-byte bits
how.afterCountdownbit 0Set where the match starts again after a countdown rather than at once.
how.unusedbit 1 to 7Unused; a server writes zero.
Vectors (2)

another-on-4-20, one-on-4-20

Pause

What a client sends to hold a match. The header names no object: it carries zero.

Definition.

In 4.1–4.17

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.10160
4.11–4.17161

A client sends the same values in every Pause, as each field states.

FieldTypeWhat it is
clientIdu32A client writes 4294967295, the client id of no client.
timeLefti32A client sends zero.
how1-byte bits
how.tournamentbit 0A client sends it clear.
how.unusedbit 1 to 7Unused; a client writes zero.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

Command 161 on requests, sent by the client, reliable.

FieldTypeWhat it is
clientIdu32The client id of the client that asked.
timeLefti32How much holding time is left to the side that asked, in seconds.
how1-byte bits
how.unlimitedbit 0Set where the hold is not counted against a limit.
how.unusedbit 1 to 7Unused; a client may leave any value here, and a server ignores it.
Vectors (1)

holding-on-4-20

Resume

What a client sends to start a paused match again. The header names no object: it carries zero.

Definition.

In 4.1–4.17

Command 10 on requests, sent by the client, reliable.

A client writes only delayed in how; the rest of the byte carries whatever it held there.

FieldTypeWhat it is
clientIdu32A client writes 4294967295, the client id of no client.
how1-byte bits
how.delayedbit 0A client sends it clear.
how.unusedbit 1 to 7A client leaves these bits unwritten; they carry no meaning, and a server ignores them.
Vectors (1)

one-on-4-17

In 4.18–4.20

Command 10 on requests, sent by the client, reliable.

FieldTypeWhat it is
clientIdu32A client writes zero; a server ignores it.
how1-byte bitsA client clears its lowest bit; the others vary from send to send, and a server ignores them.
how.delayedbit 0Set where the match is to start again after a countdown rather than at once.
how.unusedbit 1 to 7Unused; a client may leave any value here, and a server ignores it.
Vectors (1)

starting-again-on-4-20

Paused

What a server sends to put the match on hold. The header names no object: it carries zero.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10160
4.11–4.17161
FieldTypeWhat it is
clientIdu32The client id of the client that asked for the hold; it applies only to a tournament’s hold.
timeLefti32The hold time left, in seconds, for any hold. A hold begins only where it is above zero and the match is not already held.
how1-byte bits
how.tournamentbit 0Set for a tournament’s hold: as the hold begins, a client shows its tournament display, crediting seat. A hold still needs timeLeft above zero.
how.unusedbit 1 to 7Unused; a server writes zero.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
clientIdu32The client id of the client that called the hold.
timeLefti32How long the hold can run, in seconds.
how1-byte bits
how.unlimitedbit 0Set where the hold is not counted against a limit.
how.unusedbit 1 to 7Unused; a server writes zero.
Vectors (2)

another-on-4-20, one-on-4-20

GameEnded

What a server sends to end the match and say which side won. The header names no object: it carries zero.

Definition.

In 4.1–4.3

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

Arriving while the match still loads, it counts as a win or loss for the player’s side and the client leaves at once. Otherwise the client ends the match on its screen and sends ClientFinished, except while playing a replay.

FieldTypeWhat it is
result1-byte bits
result.side100Wonbit 0Set where side 100 won, clear where side 200 did.
result.unusedbit 1 to 7Unused; a server writes zero.
Vectors (1)

one-on-4-1

In 4.4–4.17

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

BuildsCommand
4.4–4.10197
4.11–4.17198

Arriving while the match still loads, it counts as a win or loss for the player’s side and the client leaves at once. Otherwise the client ends the match on its screen and sends ClientFinished, except while playing a replay.

FieldTypeWhat it is
result1-byte bits
result.side100Wonbit 0Set where side 100 won, clear where side 200 did.
result.surrenderedbit 1Set aside for a match ended by surrender. It has no effect.
result.unusedbit 2 to 7Unused; a server writes zero.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
result1-byte bits
result.side100Wonbit 0Set where side 100 won and clear where side 200 won. A client compares the winning side with its own to show victory or defeat.
result.unusedbit 1 to 7Unused; a server writes zero.
Vectors (1)

one-on-4-20

ClientFinished

What a client sends when it has finished with the match.

Definition.

In 4.1–4.10

Command 140 on requests, sent by the client, reliable.

It is sent once, at the end.

No body.

Vectors (1)

one-on-4-10

In 4.11–4.20

Command 141 on requests, sent by the client, reliable.

It is sent once, as the end of the match is handled, and not while playing a replay. The header names no object: it carries zero.

No body.

Vectors (2)

one-on-4-17, one-on-4-20

VictoryDance

What a server sends to set units moving as winners or losers do. It ends nothing and changes nothing else on screen. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10196
4.11–4.20197

It sets every unit on a side moving as winners or losers do: a winning champion dances, a losing one stands idle, and other units play a win or loss animation where they have one.

FieldTypeWhat it is
orderWonu8Nonzero where side 100 won, zero where side 200 won.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

Exit

What a client sends as it leaves. It carries nothing of its own.

Definition.

In 4.1–4.10

Command 142 on requests, sent by the client, reliable.

A client sends it as it leaves as one abandoning the match: as its player confirms quitting or closes the window, as a reconnection fails, or on Shutdown or BotKick. The header names no object: it carries zero.

No body.

Vectors (1)

one-on-4-10

In 4.11–4.17

Command 143 on requests, sent by the client, reliable.

A client sends it only as it quits by abandoning the match; a match that reaches its end sends none. The header names no object: it carries zero.

No body.

Vectors (1)

one-on-4-17

In 4.18–4.20

Command 143 on requests, sent by the client, reliable.

The header names no object: it carries zero.

No body.

Vectors (1)

bare-on-4-20

Shutdown

What a server sends to have a client leave the match at once, as one abandoning it, sending Exit as it goes. It carries nothing of its own. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10228
4.11–4.20229

No body.

Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

BotKick

What a server sends to have a client it takes for a program rather than a player leave the match. The header carries zero.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10221
4.11–4.17222
FieldTypeWhat it is
actionu8What to do. A client acts on 4 only. Values: 4 leave.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
actionu32What to do. A client acts on 5 only. Values: 5 leave.
Vectors (1)

one-on-4-20

PlayerDisconnected

What a server sends as a player’s client drops out. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10151
4.11–4.20152

A client shows a chat notice naming the player in their side’s colour, and nothing where player names no champion it knows, names its own champion, or the match is not under way.

FieldTypeWhat it is
championu32The player’s champion.
flags1-byte bitsWho is told.
flags.toEnemiesbit 0Set to show the notice only to the other side; clear to show it only to the player’s own side. A client with no champion of its own shows it only where this is clear.
flags.unusedbit 1 to 7Unused; a server writes zero.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

SoftReconnect

What a server sends, in pairs, to rebuild a client’s world without a new connection: the first marks what the client holds, the second deletes whatever is still marked. The header carries zero.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10238
4.11–4.17239
FieldTypeWhat it is
stage1-byte bitsWhich half of the pair.
stage.stagebit 0 to 10 to mark every unit, and every object kept until a checkpoint other than an inhibitor, also clearing floating text, any screen tint and the state of neutral camps; any other value to delete whatever is still marked.
stage.unusedbit 2 to 7Unused; a server writes zero.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
stageu32Which half of the pair: 1 to mark every unit, and every object kept until a checkpoint other than an inhibitor, also clearing floating text, any screen tint and the state of neutral camps; any other value to delete whatever is still marked. Values: 1 mark.
Vectors (1)

one-on-4-20

ReconnectedInMatch

What a client sends right after the server answers its registration. The header carries zero.

Definition.

In every range of this book

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.10155
4.11–4.20156

A client sends it once it has connected again to a match it was playing. A client dropped while playing reconnects by itself; one dropped while loading leaves instead. It carries nothing of its own.

No body.

Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

Reconnected

What a server sends to say a client has reconnected. The header carries zero.

Definition.

In every range of this book

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

FieldTypeWhat it is
clientu32The client, by the seat it occupies.
Vectors (2)

one-on-4-17, one-on-4-20

ClockConvergence

What a server sends about how its clock and a client’s are being brought together. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10117
4.11–4.20118
FieldTypeWhat it is
clientTimef32The client’s clock, in seconds, as the client reported it.
roundTripf32The round trip time the server measures, in seconds.
Vectors (2)

one-on-4-11, one-on-4-20

Empty

A message with no body. The header carries zero.

Definition.

In every range of this book

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

No body.

Vectors (2)

one-on-4-17, one-on-4-20

Unhandled286

A message that changes nothing a client shows. The header carries zero.

Definition.

In every range of this book

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

No body.

Vectors (2)

one-on-4-17, one-on-4-20

Combat

Attacks, damage, death and coming back. Spells are in Spells.

Attacking

A server says a unit is swinging at another with Attack, or with AttackFrom, which also says where the swinging unit stands. StopAttack breaks an attack off. AttackSpeedBounds puts a ceiling or a floor on how fast a unit attacks.

In 4.1–4.19

After StopAttack, a client clears the unit’s attack whatever the message’s flags ask besides.

A client asks its champion to attack with a MoveOrder naming the unit (see Movement). What the player then sees is what a server sends: the champion walking into range along a WaypointGroup, a swing for each Attack, and what each Damage shows.

In 4.1–4.19

How long a swing takes comes from the champion’s data and its attack speed.

In 4.1–4.19

Damage shows a figure for the results that carry one, normal and critical; zero is the result that shows the unit as invulnerable, not a plain hit.

In 4.1–4.19

A client never walks its champion into range by itself: a server sends the WaypointGroup that takes it there.

The health bar moves as replication states the health.

In 4.1–4.19

Each Attack plays one swing, cutting off any swing still under way. TargetUnit and TargetHeldChampion are not needed for a swing to show. The health bar moves only as replication states the unit’s health, and StopAttack breaks a swing off before it lets go.

In 4.1–4.19

A melee swing carries a missile id of zero. A ranged swing carries an id no object holds, which the client gives the missile it launches itself as the swing lets go, with no further message while the attacker is in view. A swing that nothing interrupts finishes by itself.

TargetUnit draws a unit’s targeting beam at what it is attacking.

Any unit takes TargetUnit, whatever it is attacking.

That a unit is attacking a champion is TargetHeldChampion, which marks the unit’s health bar with an indicator, and clears the mark when it names no such champion. A server MUST send TargetUnit and TargetHeldChampion together.

HoverTarget and HoverIndicator set and show the unit a unit’s hover indicator points at, and AttackIndicators shows or hides a unit’s attack indicators.

A champion’s clicks can be made to attack the ground with GroundAttackMode.

Damage

A server reports damage with Damage.

In 4.1–4.19

A client shows nothing at all for Damage unless it holds both the unit hurt and the unit dealing it.

Death

A unit’s death is UnitDied, a champion’s ChampionDied, a building’s BuildingDied, and an inhibitor’s InhibitorDied. ForceDeath puts a unit into its death.

In 4.1–4.19

A client ignores UnitDied or ChampionDied naming a unit already dead, and puts a unit down only where a killer is named.

Either UnitDied or ChampionDied can leave the unit standing as a husk rather than dead, without its death animation or death screen.

In 4.1–4.19

A client ignores ChampionDied that credits no killer.

How long a champion stays down is DeathTimer. Whether a client draws the world without colour while its champion is down is GreyscaleWhenDead. What led to a death is DeathHistory, which a client lays out for its player. An inhibitor’s state, and how long it lasts, is InhibitorState.

In 4.20

A server also reports a death for what a client draws on its map with UnitDiedOnMap.

Coming back

Revived puts a champion back on the field.

A server can instead bring a dead champion back at a place of its choosing with Respawned, which keeps the champion’s level, gold and spell ranks and restores its health.

Using a unit

A client sends UseObject as its player right-clicks a unit that can be used.

A client also sends UseObject for a unit its champion is attacking, as that unit changes side.

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).

Attack

What a server sends to say a unit is swinging at another. The header names the unit acting.

Definition.

In 4.1–4.16

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

FieldTypeWhat it is
targetu32The unit swung at. A client throws the swing at it.
timingu8A shift in time: the value less 128, in hundredths of a second, from -1.28 to 1.27; 128 shifts nothing. It moves when the swing lets go and ends, and when the unit may next attack.
missileu32The name the missile this swing throws will answer to.
slotu8Which of the unit’s attacks this is.
Vectors (1)

one-on-4-16

In 4.17

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

FieldTypeWhat it is
targetu32The unit swung at.
targetXf32Where the unit swung at stands, along one ground axis, in world units. A client throws the swing at the unit named above, whatever this position says.
targetYf32Where it stands, in height, in world units.
targetZf32Where it stands, along the other ground axis, in world units.
timingu8A shift in time: the value less 128, in hundredths of a second, from -1.28 to 1.27; 128 shifts nothing. It moves when the swing lets go and ends, and when the unit may next attack.
missileu32The name the missile this swing throws will answer to.
slotu8Which of the unit’s attacks this is.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
strikeStrikeThe swing.
Vectors (2)

another-on-4-20, one-on-4-20

AttackFrom

What a server sends to say a unit is swinging at another, carrying where the swinging unit stands as well as what it swings at. The header names the unit acting.

Definition.

In 4.1–4.16

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

FieldTypeWhat it is
targetu32The unit swung at. A client throws the swing at it.
timingu8A shift in time: the value less 128, in hundredths of a second, from -1.28 to 1.27; 128 shifts nothing. It moves when the swing lets go and ends, and when the unit may next attack.
missileu32The name the missile this swing throws will answer to. Zero for a swing that throws none.
slotu8Which of the unit’s attacks this is.
fromXf32Where the swinging unit stands, along one ground axis, in world units.
fromZf32Where it stands, along the other, in world units.
Vectors (1)

one-on-4-16

In 4.17

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

FieldTypeWhat it is
targetu32The unit swung at.
targetXf32Where the unit swung at stands, along one ground axis, in world units.
targetYf32Where it stands, in height, in world units.
targetZf32Where it stands, along the other ground axis, in world units.
timingu8A shift in time: the value less 128, in hundredths of a second, from -1.28 to 1.27; 128 shifts nothing. It moves when the swing lets go and ends, and when the unit may next attack.
missileu32The name the missile this swing throws will answer to. Zero for a swing that throws none.
slotu8Which of the unit’s attacks this is.
fromXf32Where the swinging unit stands, along one ground axis, in world units.
fromZf32Where it stands, along the other, in world units.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
strikeStrikeThe swing.
fromXf32Where the swinging unit stands, along one ground axis, in world units.
fromZf32Where it stands, along the other, in world units.
Vectors (2)

another-on-4-20, one-on-4-20

StopAttack

What a server sends to break off an attack a unit is making. The header names the unit acting.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.1051
4.11–4.1752

Whatever the flags, a client then clears the unit’s attack.

FieldTypeWhat it is
missileu32The missile the attack would have thrown, where there is one.
how1-byte bits
how.keepAnimatingbit 0Set to let the attack’s animation play on after the stop.
how.forceCastbit 1Set to make the attack land first where it has not already.
how.forceStopbit 2Set to stop the attack outright; a client does so anyway where it cannot see the unit, and keepAnimating and forceCast then have no effect.
how.summonerSpellbit 3Set where the slot stopped is a summoner spell’s.
how.destroyMissilebit 4Set to destroy the missile named in missile, where it exists; forced, after the attack landed, the spell’s cooldown is also refunded.
how.unusedbit 5 to 7Unused; a server writes zero.
Vectors (1)

one-on-4-11

In 4.18–4.20

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

FieldTypeWhat it is
how1-byte bits
how.keepAnimatingbit 0Set where the unit finishes what it was doing to look at.
how.finishSwingbit 1Set where a swing not yet let go is let go before it stops.
how.forcedbit 2Set to stop what the unit is casting at once, whether or not it would otherwise stop.
how.summonerSpellbit 3Set where what is broken off came from a summoner slot.
how.destroyMissilebit 4Set where the missile named below is to go too.
how.unusedbit 5 to 7Unused; a server writes zero.
missileu32The missile the attack would have thrown, where there is one.
Vectors (1)

one-on-4-20

AttackSpeedBounds

What a server sends to put a ceiling or a floor on how fast a unit attacks. Its identifier is wider than a byte, so it travels behind the escape. The header names the unit this is about.

Definition.

In 4.4–4.17

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

FieldTypeWhat it is
useCeilingu81 to apply the ceiling below; 0 leaves the unit’s ceiling as it was.
useFlooru81 to apply the floor below; 0 leaves the unit’s floor as it was.
ceilingf32The fastest the unit can attack, in attacks a second, where the flag says to use it. A value of 0.00001 or less, -1 among them, sets no bound.
floorf32The slowest the unit can attack, in attacks a second, where the flag says to use it. A value of 0.00001 or less, -1 among them, sets no bound.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
overrides1-byte bits
overrides.ceilingbit 0Set where the ceiling below is to be used.
overrides.floorbit 1Set where the floor below is to be used.
overrides.unusedbit 2 to 7Unused; a server writes zero.
ceilingf32The fastest the unit can attack, in attacks a second, where the flag says to use it. A value of 0.00001 or less, -1 among them, sets no bound.
floorf32The slowest the unit can attack, in attacks a second, where the flag says to use it. A value of 0.00001 or less, -1 among them, sets no bound.
Vectors (1)

a-ceiling-on-4-20

Damage

What a server sends to say one unit hurt another. The header names the unit hurt, as target does.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10100
4.11–4.17101

A client shows the figure and nothing more: the health it shows for the unit is what replication carries, and this message leaves it as it was.

FieldTypeWhat it is
how1-byte bits
how.resultbit 0 to 2How the damage landed, and so what a client shows over the unit hurt. 4 shows the amount, 3 shows it as a critical strike, and 2 shows the word for a dodge in place of an amount.
how.unused1bit 3Unused; a server writes zero.
how.kindbit 4 to 5What sort of damage it is, which sets how a client colours the figure: 0 red, 1 purple and 2 white.
how.unusedbit 6 to 7Unused; a server writes zero.
targetu32The unit hurt.
sourceu32The unit dealing it. A client shows nothing, notices included, unless it holds both target and source; the figure drifts from source toward target, and a champion source has the amount added to its damage dealt.
amountf32How much.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

A client shows the figure and nothing more: the health it shows for the unit is what replication carries, and this message leaves it as it was.

FieldTypeWhat it is
resultu8How the damage landed, and so what a client shows over the unit hurt. A value of 6 shows the amount as normal does. Values: 0 invulnerable, 1 unseen, 2 dodged, 3 critical, 4 normal, 5 missed.
unusedu8Unused; a server writes zero.
kindu8What sort of damage it is, which sets how a client colours the figure. Values: 0 physical, 1 magical, 2 true, 3 mixed.
amountf32How much.
targetu32The unit hurt.
sourceu32The unit that hurt it.
Vectors (2)

another-on-4-20, one-on-4-20

TargetUnit

What a server sends to say what a unit is attacking, whatever the unit attacked is. A client takes down whatever it was drawing for that unit’s last target and draws for the new one where the target and the unit’s own settings allow. The header names the unit acting.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10105
4.11–4.20106
FieldTypeWhat it is
targetu32The unit being attacked, or zero where it is attacking nothing.
Vectors (6)

a-third-on-4-10, another-on-4-10, one-on-4-10, one-on-4-17, another-on-4-20, one-on-4-20

TargetHeldChampion

What a server sends to mark that a unit is attacking a champion, or to take the mark away. The header names the unit. TargetUnit draws the targeting beam and never touches this mark.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10191
4.11–4.20192

A client marks the unit where target is nonzero, names a champion the client holds and the unit is on the other side, drawing an indicator on the unit’s health bar unless the unit’s data turns it off; any other target clears the mark.

FieldTypeWhat it is
targetu32The champion being attacked.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

HoverTarget

What a server sends to set the unit a unit’s hover indicator points at. The header names the unit.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10244
4.11–4.20245
FieldTypeWhat it is
targetu32The unit pointed at.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

HoverIndicator

What a server sends to turn a unit’s hover indicator on or off. The header names the unit.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10245
4.11–4.20246
FieldTypeWhat it is
enabledu80 turns it off; any other value on.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

AttackIndicators

What a server sends to show or hide a unit’s attack indicators. The header names the unit.

Definition.

In 4.1–4.17

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

FieldTypeWhat it is
unitu32The unit.
showu8Whether the indicator shows.
minimapu8Whether it shows on the minimap.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
unitu32The unit. A client acts only where it is a champion.
show1-byte bitsWhere the indicators show.
show.showbit 0Set where the indicator shows.
show.minimapbit 1Set where it shows on the minimap.
show.unusedbit 2 to 7Unused; a server writes zero.
Vectors (1)

one-on-4-20

GroundAttackMode

What a server sends to make a champion’s clicks attack the ground. It changes what its own player’s clicks do; for any other champion it changes nothing a client shows. A client ignores it where the id names no champion. The header carries zero.

Definition.

In every range of this book

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

FieldTypeWhat it is
championu32The champion.
modeu8Which clicks attack the ground. Values: 0 off, 1 move, 2 select, 3 moveAndSelect, 4 attackMove, 5 atCursor.
Vectors (2)

one-on-4-17, one-on-4-20

UnitDied

What a server sends to say a unit died, to everyone who can see it. The header names the unit this is about.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10157
4.11–4.17158

Where killer names a unit it knows, a client announces the kill for that unit, then the one kind picks. Where the unit is not already dead, it cancels the unit’s cast and attack, and only where killer is nonzero puts the unit down, by stayDown and standing.

FieldTypeWhat it is
killeru32The unit credited with the death.
damageTypeu32Unused; a server writes zero.
damageSourceu32Unused; a server writes zero.
stayDownf32How long the unit stays down, in seconds.
how1-byte bits
how.standingbit 0Set to leave the unit standing as a husk rather than dead: no time of death, and for a champion no death animation and no death screen. A turret kept after death behaves so whatever this says.
how.unusedbit 1 to 7Unused; a server writes zero.
kindu8Which kill a client announces for killer: zero a neutral monster’s, nonzero a minion’s.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
deathDeathHow it died.
Vectors (1)

one-on-4-20

ChampionDied

What a server sends to say a champion died. The header names the unit this is about.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.1093
4.11–4.1794

A client ignores it where killer is zero or the champion is already dead.

FieldTypeWhat it is
killeru32The unit credited with the death. Where it names the champion that died, a client still plays the death.
damageTypeu32The kind of the killing blow. A client shows nothing for it. Values: 0 physical, 1 magic, 2 true, 3 mixed.
damageSourceu32Where the killing blow came from. A client shows nothing for it. Values: 0 raw, 1 internalRaw, 2 periodic, 3 proc, 4 reactive, 5 onDeath, 6 spell, 7 attack, 8 default, 9 areaSpell, 10 persistentSpell, 11 pet.
stayDownf32How long the champion stays down, in seconds. A client counts its respawn timer down from it.
how1-byte bits
how.zombiebit 0Set to leave the champion standing in a zombie state rather than dead: no death animation and no death screen.
how.unusedbit 1 to 7Unused; a server writes zero.
kindu8It has no effect in this message.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
deathDeathHow it died.
Vectors (1)

one-on-4-20

BuildingDied

What a server sends when a building is destroyed. The header names the unit this is about.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10136
4.11–4.20137
FieldTypeWhat it is
attackeru32The unit that destroyed it.
lastChampionu32The last champion to have harmed it.
Vectors (6)

a-third-on-4-10, another-on-4-10, one-on-4-10, one-on-4-17, another-on-4-20, one-on-4-20

ForceDeath

What a server sends to put a unit into its death. The header names the unit.

Definition.

In every range of this book

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

FieldTypeWhat it is
durationf32How long it stays down, in seconds.
Vectors (2)

one-on-4-17, one-on-4-20

DeathTimer

What a server sends to set how long a champion stays down. The header names the unit this is about. Sent about a champion that is not down, it shows nothing.

Definition.

In every range of this book

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

FieldTypeWhat it is
stayDownf32How long it stays down, in seconds.
Vectors (2)

one-on-4-17, one-on-4-20

GreyscaleWhenDead

What a server sends to say whether a client draws the world without colour while its champion is down. The header names a champion: that of the player it is sent to.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10168
4.11–4.17169
FieldTypeWhat it is
state1-byte bits
state.enabledbit 0Set where the world is drawn without colour. Clear, it does not stop a client drawing the world without colour while its champion is down.
state.unusedbit 1 to 7Unused; a server writes zero.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
state1-byte bits
state.enabledbit 0Set where the world is drawn without colour.
state.unusedbit 1 to 7Unused; a server writes zero.
Vectors (1)

one-on-4-20

DeathHistory

What a server sends to say what led to a death, so the client can lay it out. The header names the unit this is about.

Definition.

In 4.1–4.5

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

A client ignores the whole message unless it holds killer. Each entry’s size after event and source follows from event alone. An entry whose target the client does not hold is left out.

FieldTypePresent whenWhat it is
killeru32The unit credited with the death.
spanf32The time the entries below cover, in seconds.
sourceTypeu8What sort of source the killer was.
blobLengthu32How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries.
entryCountu32How many entries follow.
entriescount in entryCount × recordWhat happened to the unit before it died, packed one after another.
entries[].timef32When it happened, in match seconds.
entries[].countu16How many times.
entries[].eventu8What sort of thing, and so which fields follow. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 29 inhibitorKilled, 30 inhibitorDied, 31 inhibitorRespawningSoon, 34 turretKilled, 35 turretDied, 36 turretDamaged, 37 minionKilled, 38 minionDenied, 39 monsterKilled, 40 largeMonsterKilled, 41 redBuffTaken, 42 blueBuffTaken, 43 nexusKilled, 44 nexusDied, 45 heal, 46 healCast, 47 buff, 48 crowdControl, 49 killingSpree, 56 killDuringSpree, 63 doubleKillDuringSpree, 64 tripleKillDuringSpree, 65 quadraKillDuringSpree, 68 deathAssist, 69 playerQuit, 70 playerLeft, 71 playerReconnected, 86 itemBought, 87 itemSold, 88 itemRemoved, 89 itemCallout, 90 itemChanged, 91 undoChanged, 92 itemSubstituted, 111 minionsSpawned, 112 welcome, 113 startNoticeTwo, 114 startNoticeThree, 118 scoreboardOpened, 143 dragonKilled, 144 dragonKilledWatched, 145 dragonStolen, 146 baronKilled, 147 baronKilledWatched, 148 baronStolen, 149 spiderKilled, 150 spiderKilledWatched, 151 altarCaptured, 152 altarCapturedWatched, 153 wardPlaced, 154 wardKilled.
entries[].sourceu32The unit that did it.
entries[].targetu32The unit it was done to.
entries[].stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
entries[].damagerecordevent = 15 or 16How much harm, and from what.
entries[].damage.physicalf32Physical damage.
entries[].damage.magicalf32Magical damage.
entries[].damage.truef32True damage.
entries[].damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].damage.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].damage.parent2-byte bitsWhere the spell or effect came from.
entries[].damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].damage.parent.unusedbit 15Unused; a server writes zero.
entries[].spentu32event = 23How much gold, as shown.
entries[].valueu32event = 25 or 86 or 87 or 88 or 90 or 91 or 151 or 152What it carries is not recorded for this range; a client does not show it.
entries[].criticalf32event = 26The critical strike’s damage, as shown.
entries[].spreeu32event = 49How many kills in a row, as shown.
entries[].earnedrecordevent = 24Gold earned.
entries[].earned.goldf32How much gold, as shown.
entries[].earned.detailu32What it carries is not recorded for this range; a server writes zero.
entries[].earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
entries[].healrecordevent = 45 or 46How much health, and from what.
entries[].heal.amountf32How much health, as shown.
entries[].heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].heal.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].heal.parent2-byte bitsWhere the spell or effect came from.
entries[].heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].heal.parent.unusedbit 15Unused; a server writes zero.
entries[].effectrecordevent = 47 or 48The effect, and where it came from.
entries[].effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].effect.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].effect.parent2-byte bitsWhere the spell or effect came from.
entries[].effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].effect.parent.unusedbit 15Unused; a server writes zero.
entries[].buffrecordevent = 48What an effect of this sort carries.
entries[].buff.buffTypei32What sort of effect.
entries[].buff.durationf32How long it lasted, in seconds.
entries[].assistrecordevent = 68What one unit did toward a death.
entries[].assist.lastHitf32When it last dealt damage, in match seconds.
entries[].assist.physicalf32Physical damage it dealt.
entries[].assist.magicalf32Magical damage it dealt.
entries[].assist.truef32True damage it dealt.
entries[].assist.sharef32What it carries is not recorded for this range; a server writes zero.
entries[].assist.goldf32What it carries is not recorded for this range; a server writes zero.
entries[].assist.creditedu32What it carries is not recorded for this range; a server writes zero.
entries[].killrecordevent = 1 or 2 or 35 or 36 or 37 or 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150The reward, and who shared it.
entries[].kill.goldf32The gold the kill gave.
entries[].kill.assistCountu32How many of the twelve places below name a unit.
entries[].kill.assists12 × u32The units that helped, then zeros.
entries[].monsterrecordevent = 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150Who took the monster.
entries[].monster.skinHashu32The number the name of the killer’s look gives.
entries[].monster.skini32Which look the killer wears.
entries[].monster.sideu32The side that took it.
entries[].calloutrecordevent = 89The item a player pointed out, shown as the second name followed by the first in brackets.
entries[].callout.itemu32The item, shown by name and number.
entries[].callout.quantityu32How many, shown as two digits.
entries[].callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.sideu32The side of the player who pointed it out.
entries[].substitutionrecordevent = 92An item the shop shows another in place of.
entries[].substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
entries[].substitution.originalu32The item replaced.
entries[].substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
Vectors (1)

one-on-4-1

In 4.6–4.11

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

A client ignores the whole message unless it holds killer. Each entry’s size after event and source follows from event alone. An entry whose target the client does not hold is left out.

FieldTypePresent whenWhat it is
killeru32The unit credited with the death.
spanf32The time the entries below cover, in seconds.
sourceTypeu8What sort of source the killer was.
blobLengthu32How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries.
entryCountu32How many entries follow.
entriescount in entryCount × recordWhat happened to the unit before it died, packed one after another.
entries[].timef32When it happened, in match seconds.
entries[].countu16How many times.
entries[].eventu8What sort of thing, and so which fields follow. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemCallout, 91 itemChanged, 92 undoChanged, 93 itemSubstituted, 112 minionsSpawned, 113 welcome, 114 startNoticeTwo, 115 startNoticeThree, 119 scoreboardOpened, 144 dragonKilled, 145 dragonKilledWatched, 146 dragonStolen, 147 baronKilled, 148 baronKilledWatched, 149 baronStolen, 150 spiderKilled, 151 spiderKilledWatched, 152 altarCaptured, 153 altarCapturedWatched, 154 wardPlaced, 155 wardKilled.
entries[].sourceu32The unit that did it.
entries[].targetu32The unit it was done to.
entries[].stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
entries[].damagerecordevent = 15 or 16How much harm, and from what.
entries[].damage.physicalf32Physical damage.
entries[].damage.magicalf32Magical damage.
entries[].damage.truef32True damage.
entries[].damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].damage.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].damage.parent2-byte bitsWhere the spell or effect came from.
entries[].damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].damage.parent.unusedbit 15Unused; a server writes zero.
entries[].spentu32event = 23How much gold, as shown.
entries[].valueu32event = 25 or 87 or 88 or 89 or 91 or 92 or 152 or 153What it carries is not recorded for this range; a client does not show it.
entries[].criticalf32event = 26The critical strike’s damage, as shown.
entries[].spreeu32event = 50How many kills in a row, as shown.
entries[].earnedrecordevent = 24Gold earned.
entries[].earned.goldf32How much gold, as shown.
entries[].earned.detailu32What it carries is not recorded for this range; a server writes zero.
entries[].earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
entries[].healrecordevent = 46 or 47How much health, and from what.
entries[].heal.amountf32How much health, as shown.
entries[].heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].heal.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].heal.parent2-byte bitsWhere the spell or effect came from.
entries[].heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].heal.parent.unusedbit 15Unused; a server writes zero.
entries[].effectrecordevent = 48 or 49The effect, and where it came from.
entries[].effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].effect.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].effect.parent2-byte bitsWhere the spell or effect came from.
entries[].effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].effect.parent.unusedbit 15Unused; a server writes zero.
entries[].buffrecordevent = 49What an effect of this sort carries.
entries[].buff.buffTypei32What sort of effect.
entries[].buff.durationf32How long it lasted, in seconds.
entries[].assistrecordevent = 69What one unit did toward a death.
entries[].assist.lastHitf32When it last dealt damage, in match seconds.
entries[].assist.physicalf32Physical damage it dealt.
entries[].assist.magicalf32Magical damage it dealt.
entries[].assist.truef32True damage it dealt.
entries[].assist.sharef32What it carries is not recorded for this range; a server writes zero.
entries[].assist.goldf32What it carries is not recorded for this range; a server writes zero.
entries[].assist.creditedu32What it carries is not recorded for this range; a server writes zero.
entries[].killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151The reward, and who shared it.
entries[].kill.goldf32The gold the kill gave.
entries[].kill.assistCountu32How many of the twelve places below name a unit.
entries[].kill.assists12 × u32The units that helped, then zeros.
entries[].monsterrecordevent = 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151Who took the monster.
entries[].monster.skinHashu32The number the name of the killer’s look gives.
entries[].monster.skini32Which look the killer wears.
entries[].monster.sideu32The side that took it.
entries[].calloutrecordevent = 90The item a player pointed out, shown as the second name followed by the first in brackets.
entries[].callout.itemu32The item, shown by name and number.
entries[].callout.quantityu32How many, shown as two digits.
entries[].callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.sideu32The side of the player who pointed it out.
entries[].substitutionrecordevent = 93An item the shop shows another in place of.
entries[].substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
entries[].substitution.originalu32The item replaced.
entries[].substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
Vectors (1)

one-on-4-6

In 4.12

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

A client ignores the whole message unless it holds killer. Each entry’s size after event and source follows from event alone. An entry whose target the client does not hold is left out.

FieldTypePresent whenWhat it is
killeru32The unit credited with the death.
spanf32The time the entries below cover, in seconds.
sourceTypeu8What sort of source the killer was.
blobLengthu32How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries.
entryCountu32How many entries follow.
entriescount in entryCount × recordWhat happened to the unit before it died, packed one after another.
entries[].timef32When it happened, in match seconds.
entries[].countu16How many times.
entries[].eventu8What sort of thing, and so which fields follow. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemCallout, 91 itemChanged, 92 undoChanged, 93 itemSubstituted, 112 minionsSpawned, 113 welcome, 114 startNoticeTwo, 115 startNoticeThree, 119 scoreboardOpened, 145 dragonKilled, 146 dragonKilledWatched, 147 dragonStolen, 148 baronKilled, 149 baronKilledWatched, 150 baronStolen, 151 spiderKilled, 152 spiderKilledWatched, 153 altarCaptured, 154 altarCapturedWatched, 155 wardPlaced, 156 wardKilled.
entries[].sourceu32The unit that did it.
entries[].targetu32The unit it was done to.
entries[].stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
entries[].damagerecordevent = 15 or 16How much harm, and from what.
entries[].damage.physicalf32Physical damage.
entries[].damage.magicalf32Magical damage.
entries[].damage.truef32True damage.
entries[].damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].damage.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].damage.parent2-byte bitsWhere the spell or effect came from.
entries[].damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].damage.parent.unusedbit 15Unused; a server writes zero.
entries[].spentu32event = 23How much gold, as shown.
entries[].valueu32event = 25 or 87 or 88 or 89 or 91 or 92 or 153 or 154What it carries is not recorded for this range; a client does not show it.
entries[].criticalf32event = 26The critical strike’s damage, as shown.
entries[].spreeu32event = 50How many kills in a row, as shown.
entries[].earnedrecordevent = 24Gold earned.
entries[].earned.goldf32How much gold, as shown.
entries[].earned.detailu32What it carries is not recorded for this range; a server writes zero.
entries[].earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
entries[].healrecordevent = 46 or 47How much health, and from what.
entries[].heal.amountf32How much health, as shown.
entries[].heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].heal.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].heal.parent2-byte bitsWhere the spell or effect came from.
entries[].heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].heal.parent.unusedbit 15Unused; a server writes zero.
entries[].effectrecordevent = 48 or 49The effect, and where it came from.
entries[].effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].effect.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].effect.parent2-byte bitsWhere the spell or effect came from.
entries[].effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].effect.parent.unusedbit 15Unused; a server writes zero.
entries[].buffrecordevent = 49What an effect of this sort carries.
entries[].buff.buffTypei32What sort of effect.
entries[].buff.durationf32How long it lasted, in seconds.
entries[].assistrecordevent = 69What one unit did toward a death.
entries[].assist.lastHitf32When it last dealt damage, in match seconds.
entries[].assist.physicalf32Physical damage it dealt.
entries[].assist.magicalf32Magical damage it dealt.
entries[].assist.truef32True damage it dealt.
entries[].assist.sharef32What it carries is not recorded for this range; a server writes zero.
entries[].assist.goldf32What it carries is not recorded for this range; a server writes zero.
entries[].assist.creditedu32What it carries is not recorded for this range; a server writes zero.
entries[].killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152The reward, and who shared it.
entries[].kill.goldf32The gold the kill gave.
entries[].kill.assistCountu32How many of the twelve places below name a unit.
entries[].kill.assists12 × u32The units that helped, then zeros.
entries[].monsterrecordevent = 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152Who took the monster.
entries[].monster.skinHashu32The number the name of the killer’s look gives.
entries[].monster.skini32Which look the killer wears.
entries[].monster.sideu32The side that took it.
entries[].calloutrecordevent = 90The item a player pointed out, shown as the second name followed by the first in brackets.
entries[].callout.itemu32The item, shown by name and number.
entries[].callout.quantityu32How many, shown as two digits.
entries[].callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.sideu32The side of the player who pointed it out.
entries[].substitutionrecordevent = 93An item the shop shows another in place of.
entries[].substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
entries[].substitution.originalu32The item replaced.
entries[].substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
Vectors (1)

one-on-4-12

In 4.13

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

A client ignores the whole message unless it holds killer. Each entry’s size after event and source follows from event alone. An entry whose target the client does not hold is left out.

FieldTypePresent whenWhat it is
killeru32The unit credited with the death.
spanf32The time the entries below cover, in seconds.
sourceTypeu8What sort of source the killer was.
blobLengthu32How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries.
entryCountu32How many entries follow.
entriescount in entryCount × recordWhat happened to the unit before it died, packed one after another.
entries[].timef32When it happened, in match seconds.
entries[].countu16How many times.
entries[].eventu8What sort of thing, and so which fields follow. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemUndone, 91 itemCallout, 92 itemChanged, 93 undoChanged, 94 itemSubstituted, 113 minionsSpawned, 114 welcome, 115 startNoticeTwo, 116 startNoticeThree, 120 scoreboardOpened, 146 dragonKilled, 147 dragonKilledWatched, 148 dragonStolen, 149 baronKilled, 150 baronKilledWatched, 151 baronStolen, 152 spiderKilled, 153 spiderKilledWatched, 154 altarCaptured, 155 altarCapturedWatched, 156 wardPlaced, 157 wardKilled.
entries[].sourceu32The unit that did it.
entries[].targetu32The unit it was done to.
entries[].stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
entries[].damagerecordevent = 15 or 16How much harm, and from what.
entries[].damage.physicalf32Physical damage.
entries[].damage.magicalf32Magical damage.
entries[].damage.truef32True damage.
entries[].damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].damage.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].damage.parent2-byte bitsWhere the spell or effect came from.
entries[].damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].damage.parent.unusedbit 15Unused; a server writes zero.
entries[].spentu32event = 23How much gold, as shown.
entries[].valueu32event = 25 or 87 or 88 or 89 or 92 or 93 or 154 or 155What it carries is not recorded for this range; a client does not show it.
entries[].criticalf32event = 26The critical strike’s damage, as shown.
entries[].spreeu32event = 50How many kills in a row, as shown.
entries[].earnedrecordevent = 24Gold earned.
entries[].earned.goldf32How much gold, as shown.
entries[].earned.detailu32What it carries is not recorded for this range; a server writes zero.
entries[].earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
entries[].healrecordevent = 46 or 47How much health, and from what.
entries[].heal.amountf32How much health, as shown.
entries[].heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].heal.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].heal.parent2-byte bitsWhere the spell or effect came from.
entries[].heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].heal.parent.unusedbit 15Unused; a server writes zero.
entries[].effectrecordevent = 48 or 49The effect, and where it came from.
entries[].effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].effect.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].effect.parent2-byte bitsWhere the spell or effect came from.
entries[].effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].effect.parent.unusedbit 15Unused; a server writes zero.
entries[].buffrecordevent = 49What an effect of this sort carries.
entries[].buff.buffTypei32What sort of effect.
entries[].buff.durationf32How long it lasted, in seconds.
entries[].assistrecordevent = 69What one unit did toward a death.
entries[].assist.lastHitf32When it last dealt damage, in match seconds.
entries[].assist.physicalf32Physical damage it dealt.
entries[].assist.magicalf32Magical damage it dealt.
entries[].assist.truef32True damage it dealt.
entries[].assist.sharef32What it carries is not recorded for this range; a server writes zero.
entries[].assist.goldf32What it carries is not recorded for this range; a server writes zero.
entries[].assist.creditedu32What it carries is not recorded for this range; a server writes zero.
entries[].killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153The reward, and who shared it.
entries[].kill.goldf32The gold the kill gave.
entries[].kill.assistCountu32How many of the twelve places below name a unit.
entries[].kill.assists12 × u32The units that helped, then zeros.
entries[].monsterrecordevent = 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153Who took the monster.
entries[].monster.skinHashu32The number the name of the killer’s look gives.
entries[].monster.skini32Which look the killer wears.
entries[].monster.sideu32The side that took it.
entries[].calloutrecordevent = 91The item a player pointed out, shown as the second name followed by the first in brackets.
entries[].callout.itemu32The item, shown by name and number.
entries[].callout.quantityu32How many, shown as two digits.
entries[].callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.sideu32The side of the player who pointed it out.
entries[].substitutionrecordevent = 94An item the shop shows another in place of.
entries[].substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
entries[].substitution.originalu32The item replaced.
entries[].substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
entries[].undorecordevent = 90A purchase taken back.
entries[].undo.itemu32What it carries is not recorded for this range; a client does not show it.
entries[].undo.partu32What it carries is not recorded for this range; a client does not show it.
entries[].undo.refundf32The gold given back. A client takes it off the gold the unit is counted as having spent.
Vectors (1)

one-on-4-13

In 4.14–4.15

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

A client ignores the whole message unless it holds killer. Each entry’s size after event and source follows from event alone. An entry whose target the client does not hold is left out.

FieldTypePresent whenWhat it is
killeru32The unit credited with the death.
spanf32The time the entries below cover, in seconds.
sourceTypeu8What sort of source the killer was.
blobLengthu32How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries.
entryCountu32How many entries follow.
entriescount in entryCount × recordWhat happened to the unit before it died, packed one after another.
entries[].timef32When it happened, in match seconds.
entries[].countu16How many times.
entries[].eventu8What sort of thing, and so which fields follow. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 117 minionsSpawned, 118 welcome, 119 startNoticeTwo, 120 startNoticeThree, 124 scoreboardOpened, 150 dragonKilled, 151 dragonKilledWatched, 152 dragonStolen, 153 baronKilled, 154 baronKilledWatched, 155 baronStolen, 156 spiderKilled, 157 spiderKilledWatched, 158 altarCaptured, 159 altarCapturedWatched, 160 wardPlaced, 161 wardKilled.
entries[].sourceu32The unit that did it.
entries[].targetu32The unit it was done to.
entries[].stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
entries[].damagerecordevent = 15 or 16How much harm, and from what.
entries[].damage.physicalf32Physical damage.
entries[].damage.magicalf32Magical damage.
entries[].damage.truef32True damage.
entries[].damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].damage.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].damage.parent2-byte bitsWhere the spell or effect came from.
entries[].damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].damage.parent.unusedbit 15Unused; a server writes zero.
entries[].spentu32event = 23How much gold, as shown.
entries[].valueu32event = 25 or 91 or 92 or 93 or 96 or 97 or 158 or 159What it carries is not recorded for this range; a client does not show it.
entries[].criticalf32event = 26The critical strike’s damage, as shown.
entries[].spreeu32event = 50How many kills in a row, as shown.
entries[].earnedrecordevent = 24Gold earned.
entries[].earned.goldf32How much gold, as shown.
entries[].earned.detailu32What it carries is not recorded for this range; a server writes zero.
entries[].earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
entries[].healrecordevent = 46 or 47How much health, and from what.
entries[].heal.amountf32How much health, as shown.
entries[].heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].heal.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].heal.parent2-byte bitsWhere the spell or effect came from.
entries[].heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].heal.parent.unusedbit 15Unused; a server writes zero.
entries[].effectrecordevent = 48 or 49The effect, and where it came from.
entries[].effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].effect.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].effect.parent2-byte bitsWhere the spell or effect came from.
entries[].effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].effect.parent.unusedbit 15Unused; a server writes zero.
entries[].buffrecordevent = 49What an effect of this sort carries.
entries[].buff.buffTypei32What sort of effect.
entries[].buff.durationf32How long it lasted, in seconds.
entries[].assistrecordevent = 69What one unit did toward a death.
entries[].assist.lastHitf32When it last dealt damage, in match seconds.
entries[].assist.physicalf32Physical damage it dealt.
entries[].assist.magicalf32Magical damage it dealt.
entries[].assist.truef32True damage it dealt.
entries[].assist.sharef32What it carries is not recorded for this range; a server writes zero.
entries[].assist.goldf32What it carries is not recorded for this range; a server writes zero.
entries[].assist.creditedu32What it carries is not recorded for this range; a server writes zero.
entries[].killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157The reward, and who shared it.
entries[].kill.goldf32The gold the kill gave.
entries[].kill.assistCountu32How many of the twelve places below name a unit.
entries[].kill.assists12 × u32The units that helped, then zeros.
entries[].monsterrecordevent = 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157Who took the monster.
entries[].monster.skinHashu32The number the name of the killer’s look gives.
entries[].monster.skini32Which look the killer wears.
entries[].monster.sideu32The side that took it.
entries[].calloutrecordevent = 95The item a player pointed out, shown as the second name followed by the first in brackets.
entries[].callout.itemu32The item, shown by name and number.
entries[].callout.quantityu32How many, shown as two digits.
entries[].callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.sideu32The side of the player who pointed it out.
entries[].substitutionrecordevent = 98An item the shop shows another in place of.
entries[].substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
entries[].substitution.originalu32The item replaced.
entries[].substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
entries[].undorecordevent = 94A purchase taken back.
entries[].undo.itemu32What it carries is not recorded for this range; a client does not show it.
entries[].undo.partu32What it carries is not recorded for this range; a client does not show it.
entries[].undo.refundf32The gold given back. A client takes it off the gold the unit is counted as having spent.
Vectors (1)

one-on-4-14

In 4.16

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

A client ignores the whole message unless it holds killer. Each entry’s size after event and source follows from event alone. An entry whose target the client does not hold is left out.

FieldTypePresent whenWhat it is
killeru32The unit credited with the death.
spanf32The time the entries below cover, in seconds.
sourceTypeu8What sort of source the killer was.
blobLengthu32How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries.
entryCountu32How many entries follow.
entriescount in entryCount × recordWhat happened to the unit before it died, packed one after another.
entries[].timef32When it happened, in match seconds.
entries[].countu16How many times.
entries[].eventu8What sort of thing, and so which fields follow. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 118 minionsSpawned, 119 welcome, 120 startNoticeTwo, 121 startNoticeThree, 125 scoreboardOpened, 151 dragonKilled, 152 dragonKilledWatched, 153 dragonStolen, 154 baronKilled, 155 baronKilledWatched, 156 baronStolen, 157 spiderKilled, 158 spiderKilledWatched, 159 altarCaptured, 160 altarCapturedWatched, 161 wardPlaced, 162 wardKilled.
entries[].sourceu32The unit that did it.
entries[].targetu32The unit it was done to.
entries[].stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
entries[].damagerecordevent = 15 or 16How much harm, and from what.
entries[].damage.physicalf32Physical damage.
entries[].damage.magicalf32Magical damage.
entries[].damage.truef32True damage.
entries[].damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].damage.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].damage.parent2-byte bitsWhere the spell or effect came from.
entries[].damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].damage.parent.unusedbit 15Unused; a server writes zero.
entries[].spentu32event = 23How much gold, as shown.
entries[].valueu32event = 25 or 91 or 92 or 93 or 96 or 97 or 159 or 160What it carries is not recorded for this range; a client does not show it.
entries[].criticalf32event = 26The critical strike’s damage, as shown.
entries[].spreeu32event = 50How many kills in a row, as shown.
entries[].earnedrecordevent = 24Gold earned.
entries[].earned.goldf32How much gold, as shown.
entries[].earned.detailu32What it carries is not recorded for this range; a server writes zero.
entries[].earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
entries[].healrecordevent = 46 or 47How much health, and from what.
entries[].heal.amountf32How much health, as shown.
entries[].heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].heal.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].heal.parent2-byte bitsWhere the spell or effect came from.
entries[].heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].heal.parent.unusedbit 15Unused; a server writes zero.
entries[].effectrecordevent = 48 or 49The effect, and where it came from.
entries[].effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
entries[].effect.scriptu32The spell or effect, by the number its name gives, shown by name.
entries[].effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
entries[].effect.parent2-byte bitsWhere the spell or effect came from.
entries[].effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
entries[].effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
entries[].effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
entries[].effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].effect.parent.unusedbit 15Unused; a server writes zero.
entries[].buffrecordevent = 49What an effect of this sort carries.
entries[].buff.buffTypei32What sort of effect.
entries[].buff.durationf32How long it lasted, in seconds.
entries[].assistrecordevent = 69What one unit did toward a death.
entries[].assist.lastHitf32When it last dealt damage, in match seconds.
entries[].assist.physicalf32Physical damage it dealt.
entries[].assist.magicalf32Magical damage it dealt.
entries[].assist.truef32True damage it dealt.
entries[].assist.sharef32What it carries is not recorded for this range; a server writes zero.
entries[].assist.goldf32What it carries is not recorded for this range; a server writes zero.
entries[].assist.creditedu32What it carries is not recorded for this range; a server writes zero.
entries[].killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158The reward, and who shared it.
entries[].kill.goldf32The gold the kill gave.
entries[].kill.assistCountu32How many of the twelve places below name a unit.
entries[].kill.assists12 × u32The units that helped, then zeros.
entries[].monsterrecordevent = 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158Who took the monster.
entries[].monster.skinHashu32The number the name of the killer’s look gives.
entries[].monster.skini32Which look the killer wears.
entries[].monster.sideu32The side that took it.
entries[].calloutrecordevent = 95The item a player pointed out, shown as the second name followed by the first in brackets.
entries[].callout.itemu32The item, shown by name and number.
entries[].callout.quantityu32How many, shown as two digits.
entries[].callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.sideu32The side of the player who pointed it out.
entries[].substitutionrecordevent = 98An item the shop shows another in place of.
entries[].substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
entries[].substitution.originalu32The item replaced.
entries[].substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
entries[].undorecordevent = 94A purchase taken back.
entries[].undo.itemu32What it carries is not recorded for this range; a client does not show it.
entries[].undo.parts7 × u32What they carry is not recorded for this range; a client does not show them.
entries[].undo.refundf32The gold given back. A client takes it off the gold the unit is counted as having spent.
Vectors (1)

one-on-4-16

In 4.17

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

A client ignores the whole message unless it holds killer. Each entry’s size after event and source follows from event alone. An entry whose target the client does not hold is left out.

FieldTypePresent whenWhat it is
killeru32The unit credited with the death.
spanf32The time the entries below cover, in seconds.
sourceTypeu8What sort of source the killer was.
entryCountu32How many entries follow.
entriescount in entryCount × recordWhat happened to the unit before it died, packed one after another.
entries[].timef32When it happened, in match seconds.
entries[].countu16How many times.
entries[].eventu8What sort of thing, and so which fields follow. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 118 minionsSpawned, 119 welcome, 120 startNoticeTwo, 121 startNoticeThree, 125 scoreboardOpened, 151 dragonKilled, 152 dragonKilledWatched, 153 dragonStolen, 154 baronKilled, 155 baronKilledWatched, 156 baronStolen, 157 spiderKilled, 158 spiderKilledWatched, 159 altarCaptured, 160 altarCapturedWatched, 161 wardPlaced, 162 wardKilled.
entries[].sourceu32The unit that did it.
entries[].targetu32The unit it was done to.
entries[].stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
entries[].damagerecordevent = 15 or 16How much harm, and from what.
entries[].damage.scriptu32The spell, item or effect, by the number its name gives, shown by name.
entries[].damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
entries[].damage.sourceObjectu32The unit it came from, or zero.
entries[].damage.physicalf32Physical damage.
entries[].damage.magicalf32Magical damage.
entries[].damage.truef32True damage.
entries[].damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].damage.parentCasteru32The unit that cast that spell or effect, or zero.
entries[].damage.parent2-byte bitsWhere the spell or effect came from.
entries[].damage.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
entries[].damage.parent.sidebit 4 to 7The side of the parent’s caster.
entries[].damage.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
entries[].damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].damage.parent.unusedbit 15Unused; a server writes zero.
entries[].spentu32event = 23How much gold, as shown.
entries[].valueu32event = 25 or 91 or 92 or 93 or 96 or 97 or 159 or 160What it carries is not recorded for this range; a client does not show it.
entries[].criticalf32event = 26The critical strike’s damage, as shown.
entries[].spreeu32event = 50How many kills in a row, as shown.
entries[].earnedrecordevent = 24Gold earned.
entries[].earned.goldf32How much gold, as shown.
entries[].earned.detailu32What it carries is not recorded for this range; a server writes zero.
entries[].earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
entries[].healrecordevent = 46 or 47How much health, and from what.
entries[].heal.scriptu32The spell, item or effect, by the number its name gives, shown by name.
entries[].heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
entries[].heal.sourceObjectu32The unit it came from, or zero.
entries[].heal.amountf32How much health, as shown.
entries[].heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].heal.parentCasteru32The unit that cast that spell or effect, or zero.
entries[].heal.parent2-byte bitsWhere the spell or effect came from.
entries[].heal.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
entries[].heal.parent.sidebit 4 to 7The side of the parent’s caster.
entries[].heal.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
entries[].heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].heal.parent.unusedbit 15Unused; a server writes zero.
entries[].effectrecordevent = 48 or 49The effect, and where it came from.
entries[].effect.scriptu32The spell, item or effect, by the number its name gives, shown by name.
entries[].effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
entries[].effect.sourceObjectu32The unit it came from, or zero.
entries[].effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].effect.parentCasteru32The unit that cast that spell or effect, or zero.
entries[].effect.parent2-byte bitsWhere the spell or effect came from.
entries[].effect.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
entries[].effect.parent.sidebit 4 to 7The side of the parent’s caster.
entries[].effect.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
entries[].effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].effect.parent.unusedbit 15Unused; a server writes zero.
entries[].buffrecordevent = 49What an effect of this sort carries.
entries[].buff.buffTypei32What sort of effect.
entries[].buff.durationf32How long it lasted, in seconds.
entries[].assistrecordevent = 69What one unit did toward a death.
entries[].assist.lastHitf32When it last dealt damage, in match seconds.
entries[].assist.physicalf32Physical damage it dealt.
entries[].assist.magicalf32Magical damage it dealt.
entries[].assist.truef32True damage it dealt.
entries[].assist.sharef32What it carries is not recorded for this range; a server writes zero.
entries[].assist.goldf32What it carries is not recorded for this range; a server writes zero.
entries[].assist.creditedu32What it carries is not recorded for this range; a server writes zero.
entries[].killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158The reward, and who shared it.
entries[].kill.goldf32The gold the kill gave.
entries[].kill.assistCountu32How many of the twelve places below name a unit.
entries[].kill.assists12 × u32The units that helped, then zeros.
entries[].monsterrecordevent = 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158Who took the monster.
entries[].monster.skinHashu32The number the name of the killer’s look gives.
entries[].monster.skini32Which look the killer wears.
entries[].monster.sideu32The side that took it.
entries[].calloutrecordevent = 95The item a player pointed out, shown as the second name followed by the first in brackets.
entries[].callout.itemu32The item, shown by name and number.
entries[].callout.quantityu32How many, shown as two digits.
entries[].callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.sideu32The side of the player who pointed it out.
entries[].substitutionrecordevent = 98An item the shop shows another in place of.
entries[].substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
entries[].substitution.originalu32The item replaced.
entries[].substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
entries[].undorecordevent = 94A purchase taken back.
entries[].undo.itemu32What it carries is not recorded for this range; a client does not show it.
entries[].undo.parts7 × u32What they carry is not recorded for this range; a client does not show them.
entries[].undo.refundf32The gold given back. A client takes it off the gold the unit is counted as having spent.
Vectors (1)

one-on-4-17

In 4.18–4.19

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

FieldTypePresent whenWhat it is
causeu8What sort of thing did it.
killeru32The unit credited with it.
spanf32The time the entries below cover, in seconds.
entryCountu32How many entries follow.
entriescount in entryCount × recordWhat happened to the unit before it died, packed one after another.
entries[].timef32When it happened, in match seconds.
entries[].countu16How many times.
entries[].eventu8What sort of thing, and so which fields follow. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 118 minionsSpawned, 119 welcome, 120 startNoticeTwo, 121 startNoticeThree, 125 scoreboardOpened, 151 dragonKilled, 152 dragonKilledWatched, 153 dragonStolen, 154 baronKilled, 155 baronKilledWatched, 156 baronStolen, 157 spiderKilled, 158 spiderKilledWatched, 159 altarCaptured, 160 altarCapturedWatched, 161 wardPlaced, 162 wardKilled.
entries[].sourceu32The unit that did it.
entries[].targetu32The unit it was done to.
entries[].stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
entries[].damagerecordevent = 15 or 16How much harm, and from what.
entries[].damage.scriptu32The spell, item or effect, by the number its name gives, shown by name.
entries[].damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
entries[].damage.sourceObjectu32The unit it came from, or zero.
entries[].damage.physicalf32Physical damage.
entries[].damage.magicalf32Magical damage.
entries[].damage.truef32True damage.
entries[].damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].damage.parentCasteru32The unit that cast that spell or effect, or zero.
entries[].damage.parent2-byte bitsWhere the spell or effect came from.
entries[].damage.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
entries[].damage.parent.sidebit 4 to 7The side of the parent’s caster.
entries[].damage.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
entries[].damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].damage.parent.unusedbit 15Unused; a server writes zero.
entries[].spentu32event = 23How much gold, as shown.
entries[].valueu32event = 25 or 91 or 92 or 93 or 96 or 97 or 159 or 160What it carries is not recorded for this range; a client does not show it.
entries[].criticalf32event = 26The critical strike’s damage, as shown.
entries[].spreeu32event = 50How many kills in a row, as shown.
entries[].earnedrecordevent = 24Gold earned.
entries[].earned.goldf32How much gold, as shown.
entries[].earned.detailu32What it carries is not recorded for this range; a server writes zero.
entries[].earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
entries[].healrecordevent = 46 or 47How much health, and from what.
entries[].heal.scriptu32The spell, item or effect, by the number its name gives, shown by name.
entries[].heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
entries[].heal.sourceObjectu32The unit it came from, or zero.
entries[].heal.amountf32How much health, as shown.
entries[].heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].heal.parentCasteru32The unit that cast that spell or effect, or zero.
entries[].heal.parent2-byte bitsWhere the spell or effect came from.
entries[].heal.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
entries[].heal.parent.sidebit 4 to 7The side of the parent’s caster.
entries[].heal.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
entries[].heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].heal.parent.unusedbit 15Unused; a server writes zero.
entries[].effectrecordevent = 48 or 49The effect, and where it came from.
entries[].effect.scriptu32The spell, item or effect, by the number its name gives, shown by name.
entries[].effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
entries[].effect.sourceObjectu32The unit it came from, or zero.
entries[].effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].effect.parentCasteru32The unit that cast that spell or effect, or zero.
entries[].effect.parent2-byte bitsWhere the spell or effect came from.
entries[].effect.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
entries[].effect.parent.sidebit 4 to 7The side of the parent’s caster.
entries[].effect.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
entries[].effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].effect.parent.unusedbit 15Unused; a server writes zero.
entries[].buffrecordevent = 49What an effect of this sort carries.
entries[].buff.buffTypei32What sort of effect.
entries[].buff.durationf32How long it lasted, in seconds.
entries[].assistrecordevent = 69What one unit did toward a death.
entries[].assist.lastHitf32When it last dealt damage, in match seconds.
entries[].assist.physicalf32Physical damage it dealt.
entries[].assist.magicalf32Magical damage it dealt.
entries[].assist.truef32True damage it dealt.
entries[].assist.sharef32What it carries is not recorded for this range; a server writes zero.
entries[].assist.goldf32What it carries is not recorded for this range; a server writes zero.
entries[].assist.creditedu32What it carries is not recorded for this range; a server writes zero.
entries[].killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158The reward, and who shared it.
entries[].kill.goldf32The gold the kill gave.
entries[].kill.assistCountu32How many of the twelve places below name a unit.
entries[].kill.assists12 × u32The units that helped, then zeros.
entries[].monsterrecordevent = 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158Who took the monster.
entries[].monster.skinHashu32The number the name of the killer’s look gives.
entries[].monster.skini32Which look the killer wears.
entries[].monster.sideu32The side that took it.
entries[].calloutrecordevent = 95The item a player pointed out, shown as the second name followed by the first in brackets.
entries[].callout.itemu32The item, shown by name and number.
entries[].callout.quantityu32How many, shown as two digits.
entries[].callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.sideu32The side of the player who pointed it out.
entries[].substitutionrecordevent = 98An item the shop shows another in place of.
entries[].substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
entries[].substitution.originalu32The item replaced.
entries[].substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
entries[].undorecordevent = 94A purchase taken back.
entries[].undo.itemu32What it carries is not recorded for this range; a client does not show it.
entries[].undo.parts7 × u32What they carry is not recorded for this range; a client does not show them.
entries[].undo.refundf32The gold given back. A client takes it off the gold the unit is counted as having spent.
Vectors (1)

one-on-4-18

In 4.20

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

FieldTypePresent whenWhat it is
causeu8What sort of thing did it.
killeru32The unit credited with it.
spanf32The time the entries below cover, in seconds.
entryCountu32How many entries follow.
entriescount in entryCount × recordWhat happened to the unit before it died, packed one after another.
entries[].timef32When it happened, in match seconds.
entries[].countu16How many times.
entries[].eventu8What sort of thing, and so which fields follow. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 118 minionsSpawned, 119 welcome, 120 startNoticeTwo, 121 startNoticeThree, 125 scoreboardOpened, 151 dragonKilled, 152 dragonKilledWatched, 153 dragonStolen, 154 baronKilled, 155 baronKilledWatched, 156 baronStolen, 157 spiderKilled, 158 spiderKilledWatched, 159 altarCaptured, 160 altarCapturedWatched, 161 wardPlaced, 162 wardKilled.
entries[].sourceu32The unit that did it.
entries[].targetu32The unit it was done to.
entries[].stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
entries[].damagerecordevent = 15 or 16How much harm, and from what.
entries[].damage.byParentu8Nonzero to credit it to the parent spell and its caster rather than to the spell and its source unit; where the parent caster is unknown, a client credits the source unit.
entries[].damage.scriptu32The spell, item or effect, by the number its name gives, shown by name.
entries[].damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
entries[].damage.sourceObjectu32The unit it came from, or zero.
entries[].damage.physicalf32Physical damage.
entries[].damage.magicalf32Magical damage.
entries[].damage.truef32True damage.
entries[].damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].damage.parentCasteru32The unit that cast that spell or effect, or zero.
entries[].damage.parent2-byte bitsWhere the spell or effect came from.
entries[].damage.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
entries[].damage.parent.sidebit 4 to 7The side of the parent’s caster.
entries[].damage.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
entries[].damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].damage.parent.unusedbit 15Unused; a server writes zero.
entries[].spentu32event = 23How much gold, as shown.
entries[].valueu32event = 25 or 91 or 92 or 93 or 96 or 97 or 159 or 160What it carries is not recorded for this range; a client does not show it.
entries[].criticalf32event = 26The critical strike’s damage, as shown.
entries[].spreeu32event = 50How many kills in a row, as shown.
entries[].earnedrecordevent = 24Gold earned.
entries[].earned.goldf32How much gold, as shown.
entries[].earned.detailu32What it carries is not recorded for this range; a server writes zero.
entries[].earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
entries[].healrecordevent = 46 or 47How much health, and from what.
entries[].heal.byParentu8Nonzero to credit it to the parent spell and its caster rather than to the spell and its source unit; where the parent caster is unknown, a client credits the source unit.
entries[].heal.scriptu32The spell, item or effect, by the number its name gives, shown by name.
entries[].heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
entries[].heal.sourceObjectu32The unit it came from, or zero.
entries[].heal.amountf32How much health, as shown.
entries[].heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].heal.parentCasteru32The unit that cast that spell or effect, or zero.
entries[].heal.parent2-byte bitsWhere the spell or effect came from.
entries[].heal.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
entries[].heal.parent.sidebit 4 to 7The side of the parent’s caster.
entries[].heal.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
entries[].heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].heal.parent.unusedbit 15Unused; a server writes zero.
entries[].effectrecordevent = 48 or 49The effect, and where it came from.
entries[].effect.byParentu8Nonzero to credit it to the parent spell and its caster rather than to the spell and its source unit; where the parent caster is unknown, a client credits the source unit.
entries[].effect.scriptu32The spell, item or effect, by the number its name gives, shown by name.
entries[].effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
entries[].effect.sourceObjectu32The unit it came from, or zero.
entries[].effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
entries[].effect.parentCasteru32The unit that cast that spell or effect, or zero.
entries[].effect.parent2-byte bitsWhere the spell or effect came from.
entries[].effect.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
entries[].effect.parent.sidebit 4 to 7The side of the parent’s caster.
entries[].effect.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
entries[].effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
entries[].effect.parent.unusedbit 15Unused; a server writes zero.
entries[].buffrecordevent = 49What an effect of this sort carries.
entries[].buff.buffTypei32What sort of effect.
entries[].buff.durationf32How long it lasted, in seconds.
entries[].assistrecordevent = 69What one unit did toward a death.
entries[].assist.lastHitf32When it last dealt damage, in match seconds.
entries[].assist.physicalf32Physical damage it dealt.
entries[].assist.magicalf32Magical damage it dealt.
entries[].assist.truef32True damage it dealt.
entries[].assist.sharef32What it carries is not recorded for this range; a server writes zero.
entries[].assist.goldf32What it carries is not recorded for this range; a server writes zero.
entries[].assist.creditedu32What it carries is not recorded for this range; a server writes zero.
entries[].killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158The reward, and who shared it.
entries[].kill.goldf32The gold the kill gave.
entries[].kill.assistCountu32How many of the twelve places below name a unit.
entries[].kill.assists12 × u32The units that helped, then zeros.
entries[].monsterrecordevent = 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158Who took the monster.
entries[].monster.skinHashu32The number the name of the killer’s look gives.
entries[].monster.skini32Which look the killer wears.
entries[].monster.sideu32The side that took it.
entries[].calloutrecordevent = 95The item a player pointed out, shown as the second name followed by the first in brackets.
entries[].callout.itemu32The item, shown by name and number.
entries[].callout.quantityu32How many, shown as two digits.
entries[].callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
entries[].callout.sideu32The side of the player who pointed it out.
entries[].substitutionrecordevent = 98An item the shop shows another in place of.
entries[].substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
entries[].substitution.originalu32The item replaced.
entries[].substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
entries[].undorecordevent = 94A purchase taken back.
entries[].undo.itemu32What it carries is not recorded for this range; a client does not show it.
entries[].undo.parts7 × u32What they carry is not recorded for this range; a client does not show them.
entries[].undo.refundf32The gold given back. A client takes it off the gold the unit is counted as having spent.
Vectors (1)

one-on-4-20

InhibitorState

What a server sends to change the state of an inhibitor, and say how long the new state lasts. The header names the unit this is about.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.1042
4.11–4.1743
FieldTypeWhat it is
state2-byte bits
state.durationbit 0 to 14How long the state lasts, in seconds; zero where alive is set.
state.alivebit 15Set while the inhibitor stands, with duration zero; clear while a state lasts the duration given.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
stateu8Which state. A server sends 0 as the inhibitor falls.
durationu16Seconds the state lasts, counted down by the client. After a state of 0, the client announces once that the inhibitor returns soon, when fewer than 15 seconds remain.
Vectors (1)

one-on-4-20

UnitDiedOnMap

What a server sends to say a unit died, for what the client draws on its map rather than on the field. The header names the unit this is about.

Definition.

In 4.20

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

FieldTypeWhat it is
deathDeathHow it died.
Vectors (1)

one-on-4-20

Revived

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

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1046
4.11–4.2047
FieldTypeWhat it is
atXf32Where it returns, along one ground axis, in world units.
atZf32Where it returns, along the other, in world units.
resourcef32What its spendable resource stands at on return.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

Respawned

What a server sends to bring a dead champion back at a place. The header names the champion. A client keeps the champion’s level, experience, gold, maxima and spell ranks, and plays the coming back.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1073
4.11–4.2074

The champion comes back with full health, and for its own champion a client moves the camera onto it where the player asked for that. A client sets the champion on the nearest open ground.

FieldTypeWhat it is
xf32Where it comes back, in world units.
zf32Where it comes back, in world units.
resourcef32Its resource, such as mana, once back.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

UseObject

What a client sends to use a unit: as its player right-clicks a unit its character data makes usable by them and off its use cooldown. The header names the sender’s champion.

Definition.

In every range of this book

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.1057
4.11–4.2058

A client also sends it as a unit its champion is attacking changes side (TeamChanged), whether usable or not.

FieldTypeWhat it is
targetu32The unit to use.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

Spells

Casting, levelling spells, cooldowns, and the missiles casts send out.

Casting

A client asks to cast from one of its champion’s slots with CastSpell, at a point or at a unit. A server answers with SpellCastAnswer, which says the unit is casting and carries the whole casting: the spell, its level, its target, its timings and the missile it will send. A client shows the cast from that answer; CastSpell alone shows nothing. A server then sets how long until the slot is ready with SpellCooldown, and, for a spell with uses, how many are left with SpellCharges. A client reports a cooldown it sets by itself with CooldownSet.

Which slots a client lets its player cast from at all is a value of the champion’s that replication carries.

In 4.1–4.19

A client casts nothing for a casting record whose length disagrees with its count of targets.

In 4.1–4.19

The casting record names the spell by the hash of its name, and a client casts nothing for a spell it has not loaded.

In 4.1–4.19

SpellCastAnswer is both the answer to the client that asked and what every client sees of the cast; there is nothing else to send it. A client applies the cost and the cooldown only where the record names the caster. As the cast lets go, a client starts the slot’s cooldown from the record, where that is longer than what remains, spends the record’s cost, and launches the record’s missile itself while the caster is in view.

A cast the client takes also places the caster at the record’s launch point, unless the record says to keep it, so a server sends where the caster stands. The answer’s movement sync id is counted with the paths a unit takes (see Ordering).

A client lets its player cast from a slot only where the spell in it has a level above zero, its castable bit is set, it is off cooldown, its cost is within the champion’s mana, and the champion’s action state allows casting.

A spell held down before it is let go charges where the cast answer leaves its flags clear. While it charges, a client sends SpellCharge with the cursor’s position, and once more as the charge ends.

A server ends a spell’s aiming on a client with CancelTargeting, shows and takes away a spell’s targeter on a client’s own champion with SpellTargeterShown and SpellTargeterHidden, and sets which spells a unit casts by itself with Autocast.

Levelling

A client asks to put a point into a spell with UpgradeSpell. A server answers with SpellUpgraded, and a client shows the new level; SpellLevel sets a level outright. The spell points a champion has to spend are what LevelUp carries. A server can set how far each spell can be raised, and at which champion levels, with SpellRankLimits.

In 4.1–4.19

A client spends the point as it sends UpgradeSpell. LevelUp states the champion’s level and its points.

In 4.1–4.19

A client asks only where the champion has a point to spend, is of the level the slot requires, and the spell is below its highest level. A request a server never answers leaves the level as it was and the point spent, until the next SpellUpgraded or LevelUp.

What a slot holds

SpellInSlot puts a spell in a slot. SpellSlotChanged changes one thing about a spell already there: how it is aimed, its name, its ranges, its icon, or the units it is cast from. SpellTargetingChanged, SpellNameChanged, SpellRangeChanged, SpellIconChanged and SpellOffsetTargetChanged each change one of these alone, and SpellSlotChangedForOwner changes a slot as SpellSlotChanged does, for the owner’s client alone. SpellToggled turns a spell on or off, SpellNumbers fills in the numbers a client shows beside a unit’s spells, and SpellCostChanged changes what a spell costs. A server can also draw rings around its player’s cursor with CursorRings.

A marker has no slots. A server MUST NOT send SpellInSlot naming a marker: a client fails on it, whatever the slot.

Missiles

A missile is named by its own id. MissileState says where one is and what it is doing, with the casting that sent it; MissileLaunched says the missile a swing or a cast prepared has left the unit. A server changes what a missile flies at with MissileRetarget and how fast with MissileSpeed, says what it struck with MissileHits, and is rid of it with DestroyMissile. A missile that bounces from unit to unit does so with BounceMissile, and a server can name in advance the units a chain missile will strike with ChainTargets. MissileCourse sets where a missile starts and how fast it flies, and restarts its flight. A client reports where a missile that flies straight is, and where it is going, with MissileReport, which a server MAY ignore.

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).

CastSpell

What a client sends to cast something from a slot, at a point or at a unit. The header names the sender’s champion.

Definition.

In 4.1–4.17

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.10153
4.11–4.17154
FieldTypeWhat it is
how1-byte bits
how.slotbit 0 to 5Which slot is being cast from. A client sends 0, 1 or 2, for the champion’s first three spells.
how.summonerSpellbit 6Set where the slot is a summoner spell’s.
how.clickedbit 7Set where the cast began with a click on the spell’s button rather than its key.
xf32A point on the ground the cast is described by, along one axis, in world units.
zf32The same point, along the other axis, in world units.
endXf32The second point of what aims the spell: the same as x and z for a point or a unit; for a line dragged out, its far end, cut to the spell’s length; for a cone, its far point.
endZf32The second point, along the other axis, in world units.
targetu32The unit aimed at; for a spell that takes no aim, the caster itself, with its own position in both points. Zero only where no unit is aimed at.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

Command 154 on requests, sent by the client, reliable.

FieldTypeWhat it is
how1-byte bits
how.fromSummonerSlotsbit 0Set where the slot counts among the summoner slots rather than the unit’s own.
how.fromHudbit 1Set where the cast came from clicking the panel rather than the world.
how.unusedbit 2 to 7Unused; a client may leave any value here, and a server ignores it.
slotu8Which slot is being cast from. It names slots for a unit’s own spells and for items alike.
xf32A point on the ground the cast is described by, along one axis, in world units.
zf32The same point, along the other axis, in world units.
endXf32The second point of what aims the spell: the same as x and z for a point or a unit; for a line dragged out, its far end, cut to the spell’s length; for a cone, its far point.
endZf32The second point, along the other axis, in world units.
targetu32The network object aimed at, or zero where the cast is aimed at ground.
Vectors (3)

at-a-unit-on-4-20, from-a-spell-slot-on-4-20, from-a-summoner-slot-on-4-20

SpellCastAnswer

What a server sends to say a unit is casting a spell. The header names the unit casting, as the casting inside does.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10180
4.11–4.17181
FieldTypeWhat it is
syncIdu32It settles whether a client brings the caster’s position in line for this cast, and nothing else.
how1-byte bits
how.endChargebit 0Set where the cast ends a charge: a client drops the message unless the caster is charging that same spell. Clear lets a client charge a spell that charges, sending SpellCharge as it does.
how.unusedbit 1 to 7Unused; a server writes zero.
castSpellCastThe casting.
Vectors (3)

one-on-4-10, one-on-4-16, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
syncIdu32The movement sync id the cast was made against. Where it is the unit’s latest or newer, a client moves the caster to the cast’s launch point.
how1-byte bits
how.endChargebit 0Set where it ends a charged cast; a client acts on it only while that spell is charging. Clear, a charged cast by the client’s own champion starts the charge display.
how.unusedbit 1 to 7Unused; a server writes zero.
castSpellCastThe casting.
Vectors (2)

another-on-4-20, one-on-4-20

SpellCooldown

What a server sends to set how long until one of a unit’s spells is ready. The header names the unit this is about.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10132
4.11–4.17133
FieldTypeWhat it is
which1-byte bits
which.slotbit 0 to 5Which slot.
which.summonerSpellbit 6Set where the slot counts among the summoner slots, so that 0 and 1 name those two.
which.speakWhenReadybit 7Set where the champion says something once the wait is over; a client does so for its own champion’s fourth slot.
timeLeftf32How long is left, in seconds.
outOff32The whole cooldown the time left is shown against, taken only where above zero and above timeLeft; otherwise, as for -1, a client keeps its own, replacing it with timeLeft only where that is larger or the spell was not cooling down.
Vectors (2)

one-on-4-1, one-on-4-11

In 4.18–4.20

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

FieldTypeWhat it is
slotu8Which slot.
how1-byte bits
how.summonerSpellbit 0Set where the slot is a summoner slot rather than one of the unit’s own. It does not move the slot into the summoner range: a client puts the wait on the slot named, set or clear.
how.speakWhenReadybit 1Set where the unit says something once the wait is over.
how.unusedbit 2 to 7Unused; a server writes zero.
timeLeftf32How long is left, in seconds. A client counts down from it.
outOff32The length the client shows that remainder against, in seconds: 20 left out of 40 shows the wait half run.
Vectors (2)

another-on-4-20, one-on-4-20

SpellCharges

What a server sends to say how many uses one of a unit’s spells has left and when the next returns. The header names the unit this is about.

Definition.

In every range of this book

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

FieldTypeWhat it is
summonerSpellu8Whether the slot is a summoner slot rather than one of the unit’s own. Values: 0 no, 1 yes.
slotu32Which slot.
chargesi32How many uses are left.
mostChargesi32How many charges the slot can hold: any value below zero, -1 among them, keeps the spell’s own figure for its level; 0 has the slot use no charges; anything above zero is that many.
rechargeForf32How long the next use has been coming back, in seconds.
rechargeTimef32How long a use takes to come back, in seconds.
Vectors (3)

one-on-4-17, another-on-4-20, one-on-4-20

SpellCharge

What a client sends while its player charges a spell, and as the charge ends. A spell charges where its cast answer (SpellCastAnswer) leaves the end-of-charge flag clear. A client sends updates at the spell’s own interval, at least 0.1 seconds, where the spell has one; it ends the charge as the key is pressed again, or released where casting on release, or as the window loses focus. The header names the sender’s champion.

Definition.

In 4.1–4.17

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.10229
4.11–4.17230
FieldTypeWhat it is
flags1-byte bitsWhich spell, and whether the charge ends.
flags.slotbit 0 to 5The spell’s slot.
flags.summonerSpellbit 6Set where the slot is a summoner spell’s.
flags.endbit 7Set as the charge ends, clear for an update.
xf32Where the cursor points on the ground, in world units.
yf32Its height, in world units.
zf32Where the cursor points on the ground, in world units.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

Command 230 on requests, sent by the client, reliable.

FieldTypeWhat it is
flags1-byte bitsWhether the spell is a summoner spell’s, and whether the charge ends.
flags.summonerSpellbit 0Set where the slot is a summoner spell’s.
flags.endbit 1Set as the charge ends, clear for an update.
flags.unusedbit 2 to 7Unused; a client may leave any value here, and a server ignores it.
slotu8The spell’s slot.
xf32Where the cursor points on the ground, in world units.
yf32Its height, in world units.
zf32Where the cursor points on the ground, in world units.
Vectors (1)

one-on-4-20

CancelTargeting

What a server sends to end a spell’s targeting on a client. The header names the unit.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10133
4.11–4.17134

A client cancels the aiming only where that slot is being aimed, and otherwise does nothing. A server sends it to clients watching a match.

FieldTypeWhat it is
which1-byte bitsWhich spell.
which.slotbit 0 to 5Which slot.
which.summonerSpellbit 6Set where the slot is a summoner slot.
which.unusedbit 7Unused; a server writes zero.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

A client cancels the aiming only where that slot is being aimed, and otherwise does nothing. A server sends it to clients watching a match.

FieldTypeWhat it is
slotu8Which slot; all eight bits count.
which1-byte bitsWhich book the slot is in.
which.summonerSpellbit 0Set where the slot is a summoner slot.
which.unusedbit 1 to 7Unused; a server writes zero.
Vectors (1)

one-on-4-20

SpellTargeterShown

What a server sends to show a spell’s targeter on the client’s own champion. The header names the champion.

Definition.

In 4.20

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

FieldTypeWhat it is
sloti32Which slot’s spell, from 0 to 63. A client does nothing for any other value.
timef32How long the targeter shows, in seconds.
Vectors (1)

one-on-4-20

SpellTargeterHidden

What a server sends to take a spell’s targeter away. The header names the champion.

Definition.

In 4.20

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

FieldTypeWhat it is
sloti32Which slot’s spell, from 0 to 63. A client does nothing for any other value.
Vectors (1)

one-on-4-20

Autocast

What a server sends to set which spells a unit casts by itself. The header names the unit.

Definition.

In every range of this book

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

FieldTypeWhat it is
sloti8The slot cast by itself, from 0 to 62; any other value leaves it unset.
criticalSloti8The slot cast by itself on a critical strike, under the same terms.
Vectors (2)

one-on-4-17, one-on-4-20

UpgradeSpell

What a client sends to put a point into a spell. The header names the sender’s champion.

Definition.

In 4.1–4.17

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.1056
4.11–4.1757
FieldTypeWhat it is
slotu8Which slot is being raised.
how1-byte bits
how.evolvebit 0Set where the player spends an evolution point on the slot rather than levelling it.
how.unusedbit 1 to 7Always clear.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

Command 57 on requests, sent by the client, reliable.

FieldTypeWhat it is
slotu8Which slot is being raised.
how1-byte bits
how.evolvebit 0Set where the point changes the spell rather than raising it.
how.unusedbit 1 to 7Unused; a client may leave any value here, and a server ignores it.
Vectors (1)

a-point-on-4-20

SpellUpgraded

What a server sends to confirm a unit’s spell went up a level. The header names the unit this is about.

Definition.

In every range of this book

Command 21 on clock, sent by the server, reliable.

Arriving on the events channel instead, it raises the spell as well, and a client shows the new level either way.

FieldTypeWhat it is
slotu8Which slot.
levelu8The level the spell now stands at.
pointsLeftu8How many spell points are left unspent.
Vectors (3)

one-on-4-17, another-on-4-20, one-on-4-20

SpellLevel

What a server sends to set the level of one of a unit’s spells. The header names the unit this is about.

Definition.

In 4.1–4.4

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

FieldTypeWhat it is
slotu32Which slot. A client raises that slot’s level by one, to at most 6.
Vectors (3)

a-third-on-4-1, another-on-4-1, one-on-4-1

In 4.5–4.20

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

BuildsCommand
4.5–4.1090
4.11–4.2091
FieldTypeWhat it is
slotu32Which slot.
levelu32The level it now stands at.
Vectors (6)

a-third-on-4-10, another-on-4-10, one-on-4-10, one-on-4-17, another-on-4-20, one-on-4-20

SpellRankLimits

What a server sends its player’s champion to set how far each spell can be raised, and at which levels. The header names the champion. In the tutorial they have no effect.

Definition.

In every range of this book

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

FieldTypeWhat it is
maxRanks4 × u8Each spell’s highest rank.
levels24 × u8Six per slot, slot 0 first: the level a champion needs to raise that spell from rank 0, 1, 2, 3, 4 and 5 in turn.
Vectors (2)

one-on-4-17, one-on-4-20

SpellInSlot

What a server sends to put a spell in one of a unit’s slots. A server names in the header the unit this is about.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10111
4.11–4.20112
FieldTypeWhat it is
unitu32The unit whose slot this is.
spellu32Which spell, by the number its name gives, as Objects and identifiers works it out.
slotu8Which slot.
Vectors (6)

a-third-on-4-10, another-on-4-10, one-on-4-10, one-on-4-17, another-on-4-20, one-on-4-20

SpellSlotChanged

What a server sends to change one thing about a spell already in a unit’s slot. The kind settles what follows it. The header names the unit this is about.

Definition.

In 4.1–4.17

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

FieldTypePresent whenWhat it is
which1-byte bits
which.slotbit 0 to 5Which slot. A champion’s own spells count from 0.
which.summonerSlotsbit 6Set where slot names a summoner spell’s slot, clear for the unit’s own spells; every kind obeys it.
which.unusedbit 7Unused; a server writes zero.
kindu8What changes. A client does nothing for any other value. Values: 0 targeting, 1 name, 2 range, 3 maxRange, 4 shownRange, 5 icon, 6 offsetTargets.
nametext, ended by a zero bytekind = 1The name the client loads the spell under, ended by a zero byte. A client shows the named spell’s icon in the slot.
targetingu8kind = 0How the spell is aimed.
rangef32kind = 2How far the spell is cast, in world units.
maxRangef32kind = 3The farthest the spell’s cast range can grow to, in world units.
shownRangef32kind = 4The range its range indicator shows, in world units.
iconu8kind = 5Which icon the spell shows.
targetCountu8kind = 6How many units follow.
targetscount in targetCount × u32kind = 6The units the spell is cast from.
Vectors (7)

icon-on-4-17, max-range-on-4-17, offset-targets-on-4-17, one-on-4-17, range-on-4-17, shown-range-on-4-17, targeting-on-4-17

In 4.18–4.20

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

FieldTypePresent whenWhat it is
slotu8Which slot. A champion’s own spells count from 0.
what1-byte bits
what.summonerSpellbit 0Set where the slot is a summoner slot rather than one of the unit’s own.
what.unusedbit 1 to 7Unused; a server writes zero.
kindu32What changes, and so which shape follows. Values: 1 targeting, 2 name, 3 range, 4 maxRange, 5 shownRange, 6 icon, 7 targets.
targetingu8kind = 1How the spell is aimed.
nametext, ended by a zero bytekind = 2The name the client loads the spell under, ended by a zero byte. A client shows the named spell’s icon in the slot.
rangef32kind = 3How far the spell is cast, in world units.
maxRangef32kind = 4The farthest the spell’s cast range can grow to, in world units.
shownRangef32kind = 5The range its range indicator shows, in world units.
iconu8kind = 6Which icon the spell shows.
targetCountu8kind = 7How many units follow.
targetscount in targetCount × u32kind = 7The units the spell is cast from.
Vectors (2)

one-on-4-20, targeting-on-4-20

SpellSlotChangedForOwner

What a server sends only to the client whose unit a spell slot belongs to, to change something about the spell in it, as SpellSlotChanged does for every client. The header names the unit.

Definition.

In 4.20

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

FieldTypePresent whenWhat it is
slotu8Which slot. A champion’s own spells count from 0.
what1-byte bits
what.summonerSpellbit 0Set where the slot is a summoner slot rather than one of the unit’s own.
what.unusedbit 1 to 7Unused; a server writes zero.
kindu32What changes, and so which shape follows. Values: 1 targeting, 2 name, 3 range, 4 maxRange, 5 shownRange, 6 icon, 7 targets.
targetingu8kind = 1How the spell is aimed.
nametext, ended by a zero bytekind = 2The name the client loads the spell under, ended by a zero byte. A client shows the named spell’s icon in the slot.
rangef32kind = 3How far the spell is cast, in world units.
maxRangef32kind = 4The farthest the spell’s cast range can grow to, in world units.
shownRangef32kind = 5The range its range indicator shows, in world units.
iconu8kind = 6Which icon the spell shows.
targetCountu8kind = 7How many units follow.
targetscount in targetCount × u32kind = 7The units the spell is cast from.
Vectors (4)

kind-03-on-4-20, kind-06-on-4-20, kind-07-on-4-20, one-on-4-20

SpellToggled

What a server sends to turn one of a unit’s spells on or off. The header names the unit this is about.

Definition.

In 4.1–4.17

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

FieldTypeWhat it is
slotu32Which of the champion’s own spells, 0 to 62; a client ignores any other value. Summoner spells are never toggled by it.
stateu8Nonzero to toggle the spell on, zero off.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
slotu32Which slot.
state1-byte bits
state.onbit 0Set where the spell is now on.
state.unusedbit 1 to 7Unused; a server writes zero.
Vectors (2)

another-on-4-20, one-on-4-20

SpellNumbers

What a server sends to fill in the numbers a client shows beside a unit’s spells. The header names no object: a server writes zero.

Definition.

In 4.1–4.6

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

FieldTypeWhat it is
entryCountu16How many sets of numbers follow.
entriescount in entryCount × recordThe sets themselves.
entries[].unitu32The unit whose spell this is.
entries[].slotu8Which slot.
entries[].values5 × f32The numbers themselves, one place each.
entries[].hidden5 × u8Which of those places the other side is not shown, one for each.
Vectors (3)

a-third-on-4-1, another-on-4-1, one-on-4-1

In 4.7–4.20

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

BuildsCommand
4.7–4.10126
4.11–4.20127
FieldTypeWhat it is
entryCountu16How many sets of numbers follow.
entriescount in entryCount × SpellNumberSetThe sets themselves.
Vectors (6)

a-third-on-4-10, another-on-4-10, one-on-4-10, one-on-4-17, another-on-4-20, one-on-4-20

SpellCostChanged

What a server sends to change what a spell costs the player it is sent to. The header names that player’s champion.

Definition.

In 4.1–4.17

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

FieldTypeWhat it is
costTypeu8How the amount applies. Values: 0 flat, 1 multiplier.
sloti32Which spell slot.
amountf32The amount.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
costTypeu8How the amount applies. A client ignores any other value, 0 among them. Values: 1 flat, 2 multiplier.
sloti32Which spell slot.
amountf32The amount.
Vectors (1)

flat-on-4-18

CursorRings

What a server sends its player’s champion to draw rings around the cursor while no spell is being aimed. The header names the champion.

Definition.

In every range of this book

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

FieldTypeWhat it is
radiusf32The ring’s radius, in world units. Zero or less draws neither ring.
secondRadiusf32A second ring’s radius, in world units, drawn where above zero.
Vectors (2)

one-on-4-17, one-on-4-20

MissileState

What a server sends to say where a missile is and what it is doing.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.1058
4.11–4.1759

Where the end lies on walkable ground, a client takes the ground’s height there for endY. Where age is not zero, it moves the missile’s trail on by age seconds. The header names the unit casting, as the casting inside does.

FieldTypeWhat it is
atXf32Where the missile is, along one ground axis, in world units.
atYf32Where the missile is, in height, in world units.
atZf32Where the missile is, along the other ground axis, in world units.
casterAtXf32Where the unit that threw it stood when it left, along one ground axis, in world units.
casterAtYf32Where the unit that threw it stood when it left, in height, in world units.
casterAtZf32Where the unit that threw it stood when it left, along the other ground axis, in world units.
facingXf32Which way the missile points, along one ground axis.
facingYf32Which way the missile points, in height.
facingZf32Which way the missile points, along the other ground axis.
velocityXf32How fast the missile travels, along one ground axis, in world units a second.
velocityYf32How fast the missile travels, in height, in world units a second.
velocityZf32How fast the missile travels, along the other ground axis, in world units a second.
startXf32Where the missile began, along one ground axis, in world units.
startYf32Where the missile began, in height, in world units.
startZf32Where the missile began, along the other ground axis, in world units.
endXf32Where the missile is bound for, along one ground axis, in world units.
endYf32Where the missile is bound for, in height, in world units.
endZf32Where the missile is bound for, along the other ground axis, in world units.
unitAtXf32Where to place the casting unit, along one ground axis, in world units, unless the casting itself places it.
unitAtYf32Its height, in world units.
unitAtZf32Where to place the casting unit, along the other ground axis, in world units.
agef32How long the missile has existed, in seconds.
speedf32How fast the missile travels, in world units a second.
lifeSpentf32How much of its life is gone, as a part of one.
speedChangef32What is added to that speed over the time below, in world units a second.
speedChangeTimef32When the speed changes, in seconds from when the client creates the missile: once that much time has passed, a client adds the change to the speed, once. Where the speed never changes, a server sends the largest finite float, 340282346638528859811704183484516925440; zero or less takes effect at once.
how1-byte bits
how.bouncedbit 0Set where the missile has bounced. It applies only where age is above zero: a client then moves the missile to its position and places it again from the caster’s position, the end and the facing.
how.unusedbit 1 to 7Unused; a server writes zero.
castSpellCastThe casting that threw it.
Vectors (3)

one-on-4-10, one-on-4-16, one-on-4-17

In 4.18–4.20

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

The header names the unit casting, as the casting inside does.

FieldTypeWhat it is
atXf32Where the missile is, along one ground axis, in world units.
atYf32Where the missile is, in height, in world units.
atZf32Where the missile is, along the other ground axis, in world units.
casterAtXf32Where the unit that threw it stood when it left, along one ground axis, in world units.
casterAtYf32Where the unit that threw it stood when it left, in height, in world units.
casterAtZf32Where the unit that threw it stood when it left, along the other ground axis, in world units.
facingXf32Which way the missile points, along one ground axis.
facingYf32Which way the missile points, in height.
facingZf32Which way the missile points, along the other ground axis.
velocityXf32How fast the missile travels, along one ground axis, in world units a second.
velocityYf32How fast the missile travels, in height, in world units a second.
velocityZf32How fast the missile travels, along the other ground axis, in world units a second.
startXf32Where the missile began, along one ground axis, in world units.
startYf32Where the missile began, in height, in world units.
startZf32Where the missile began, along the other ground axis, in world units.
endXf32Where the missile is bound for, along one ground axis, in world units.
endYf32Where the missile is bound for, in height, in world units.
endZf32Where the missile is bound for, along the other ground axis, in world units.
unitAtXf32Where to place the casting unit, along one ground axis, in world units, unless the casting itself places it.
unitAtYf32Its height, in world units.
unitAtZf32Where to place the casting unit, along the other ground axis, in world units.
agef32How long the missile has existed, in seconds.
speedf32How fast the missile travels, in world units a second.
lifeSpentf32How much of its life is gone, as a part of one.
speedChangef32What is added to that speed over the time below, in world units a second.
speedChangeTimef32When the speed changes, in seconds from when the client creates the missile: once that much time has passed, a client adds the change to the speed, once. Where the speed never changes, a server sends the largest finite float, 340282346638528859811704183484516925440; zero or less takes effect at once.
how1-byte bits
how.bouncedbit 0Set where the missile has already turned off something it struck.
how.unusedbit 1 to 7Unused; a server writes zero.
castSpellCastThe casting that threw it.
Vectors (2)

another-on-4-20, one-on-4-20

MissileLaunched

What a server sends as the missile a swing or a cast prepared leaves the unit. The header names the unit swinging or casting.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10109
4.11–4.20110
FieldTypeWhat it is
missileu32The missile, by the name the swing or cast that prepared it gave it.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

MissileRetarget

What a server sends to change what a missile flies at. The header names the missile.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10237
4.11–4.20238
FieldTypeWhat it is
targetu32The unit it now flies at, or a name no unit answers to for none.
xf32Where it now flies to, along one ground axis, in world units.
yf32In height, in world units.
zf32Along the other ground axis, in world units.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

MissileSpeed

What a server sends to change how fast a missile flies. The header names the missile.

Definition.

In every range of this book

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

FieldTypeWhat it is
speedf32The new speed, in world units a second.
delayf32How long before it applies, in seconds.
Vectors (2)

one-on-4-17, one-on-4-20

MissileHits

What a server sends to say which units a missile struck. The header names the missile.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1037
4.11–4.2038
FieldTypeWhat it is
countu16How many units follow. A client reads it as signed, so a count above 32767 carries none.
targetscount in count × u32The units struck, in order.
Vectors (3)

one-on-4-11, one-on-4-18, one-on-4-20

DestroyMissile

What a server sends to be rid of a missile a client is drawing. The header names the missile.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1089
4.11–4.2090

No body.

Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

BounceMissile

What a server sends as a missile bounces on to another unit. The header names the missile.

Definition.

In every range of this book

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

FieldTypeWhat it is
targetu32The unit it now flies at.
fromXf32Where it bounces from, along one ground axis, in world units.
fromYf32Where it bounces from, in height, in world units.
fromZf32Where it bounces from, along the other ground axis, in world units.
Vectors (2)

one-on-4-17, one-on-4-20

ChainTargets

What a server sends to name the units a chain missile will strike in turn. The header names the missile.

Definition.

In 4.1–4.19

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

BuildsCommand
4.1–4.10107
4.11–4.19108

Where the client already holds the missile, the missile takes the list; otherwise the list waits for the caster’s next chain missile.

FieldTypeWhat it is
counti32How many of the slots are used, 0 to 32.
casteru32The unit casting the missile.
targets32 × u32Always 32 slots; those past count have no effect.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.20

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

Where the client already holds the missile, the missile takes the list; otherwise the list waits for the caster’s next chain missile.

FieldTypeWhat it is
countu32How many targets follow.
casteru32The unit casting the missile.
targetscount in count × u32The units the missile chains to, as many as count says.
Vectors (1)

one-on-4-20

MissileCourse

What a server sends to set where a missile starts from and how fast it travels, which restarts its flight. The header names the missile.

Definition.

In 4.1–4.10

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

FieldTypeWhat it is
unusedu8Unused; a server writes zero.
fromXf32Where the missile starts, in world units, along one ground axis.
fromYf32Where the missile starts, in world units, in height.
fromZf32Where the missile starts, in world units, along the other ground axis.
velocityXf32How fast it travels, in world units a second, along one ground axis.
velocityYf32How fast it travels, in world units a second, in height.
velocityZf32How fast it travels, in world units a second, along the other ground axis.
Vectors (1)

one-on-4-1

MissileReport

What a client sends to report where a missile that flies straight is and where it is going. A server need do nothing with it. The header names the missile.

Definition.

In 4.1–4.9

Command 58 on requests, sent by the client, reliable.

FieldTypeWhat it is
atXf32Where the missile is, in world units, along one ground axis.
atYf32Where the missile is, in world units, in height.
atZf32Where the missile is, in world units, along the other ground axis.
unknownAXf32What this holds is not recorded.
unknownAYf32What this holds is not recorded.
unknownAZf32What this holds is not recorded.
travelXf32Its end less its start, in world units, along one ground axis.
travelYf32Its end less its start, in world units, in height.
travelZf32Its end less its start, in world units, along the other ground axis.
velocityXf32How fast it travels, in world units a second, along one ground axis.
velocityYf32How fast it travels, in world units a second, in height.
velocityZf32How fast it travels, in world units a second, along the other ground axis.
unknownBXf32What this holds is not recorded.
unknownBYf32What this holds is not recorded.
unknownBZf32What this holds is not recorded.
endXf32Where it ends, in world units, along one ground axis.
endYf32Where it ends, in world units, in height.
endZf32Where it ends, in world units, along the other ground axis.
targetXf32Where its target is, or the point it aims at, in world units, along one ground axis.
targetYf32Where its target is, or the point it aims at, in world units, in height.
targetZf32Where its target is, or the point it aims at, in world units, along the other ground axis.
agef32How long since it was launched, in seconds.
speedf32How fast it travels, in world units a second.
unsetbytes, 4A client writes nothing in particular here.
unknownCf32What this holds is not recorded; a server ignores it.
unknownDf32What this holds is not recorded; a server ignores it.
flagu8Zero or one; what it means is not recorded.
castbytes, sized by remainingA description of the cast the missile belongs to, at most 512 bytes.
Vectors (1)

one-on-4-1

Effects and looks

The lasting effects units carry, the particles a client draws, and how units look and move on screen. None of this changes what a unit can do; that is replication’s to say.

Lasting effects

A lasting effect sits in one of a unit’s effect slots and shows on its icon row. A server puts one on with EffectAdded, replaces the one in a slot with EffectReplaced, restates how many are stacked with EffectCount, and takes it off with EffectRemoved. The unit carrying an effect can differ from the unit that cast it. A server can do each of these for several units at once (EffectAddedGroup, EffectReplacedGroup, EffectCountGroup, EffectRemovedGroup), and set the number an effect shows on its icon with EffectCounter.

Particles

ParticlesCreated starts a client drawing particles, and KillParticle stops one. A server can also pause or resume a named group of emitters with EmitterPause, and drive a value of a unit’s lasting particles from something that changes, such as a capture point or the unit’s resource, with ParticleSource.

ParticlesCreated starts sets of particles, each named by its own id.

Looks and animation

A server lays a new look over a unit’s own with AppearancePushed; looks stack, the newest showing, and AppearancePopped and AppearanceCleared take them away. AnimationOverrides has a unit play one set of movements wherever it would have played another.

A server can also:

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).

EffectAdded

What a server sends to put a lasting effect on a unit. The header names the unit carrying the effect, which can differ from the caster named inside.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10182
4.11–4.20183
FieldTypeWhat it is
slotu8Which of the unit’s effect slots it sits in.
kindu8What sort of effect it is.
countu8How many of it are stacked there.
hiddenu8Whether the client keeps it off the unit’s display. Values: 0 shown, 1 hidden.
effectu32Which effect, by the number its name gives, as Objects and identifiers works it out.
packageu32Which set of art and sound the client draws it with.
runningForf32How long it has already run, in seconds.
lastsf32How long it runs in total, in seconds.
casteru32The unit that put it there.
Vectors (6)

a-third-on-4-10, another-on-4-10, one-on-4-10, one-on-4-17, another-on-4-20, one-on-4-20

EffectReplaced

What a server sends about a lasting effect in a slot that already holds one. The header names the unit carrying the effect, which can differ from the caster named inside.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1047
4.11–4.2048

It puts a lasting effect in the slot, keeping the slot rather than taking the old one off first.

FieldTypeWhat it is
slotu8Which of the unit’s effect slots.
runningForf32How long the effect has already run, in seconds.
lastsf32How long it runs in total, in seconds.
casteru32The unit that put it there.
Vectors (6)

a-third-on-4-10, another-on-4-10, one-on-4-10, one-on-4-17, another-on-4-20, one-on-4-20

EffectCount

What a server sends to restate how many of a lasting effect are stacked on a unit. The header names the unit this is about.

Definition.

In every range of this book

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

FieldTypeWhat it is
slotu8Which slot.
countu8How many are stacked there now.
timeLeftf32How long it has left to run, in seconds. With runningFor it adds up to the whole run the effect was added with.
runningForf32How long it has already run, in seconds.
casteru32The unit that put it there.
Vectors (2)

one-on-4-17, one-on-4-20

EffectRemoved

What a server sends to take a lasting effect off a unit. The header names the unit this is about.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10122
4.11–4.17123
FieldTypeWhat it is
slotu8Which slot it sat in.
effectu32Which effect, by the number its name gives, as Objects and identifiers works it out.
timeLeftf32How long the effect had left to run when it was taken off, in seconds.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
slotu8Which slot it sat in.
effectu32Which effect, by the number its name gives, as Objects and identifiers works it out.
timeLeftf32How long the effect had left to run when it was taken off, in seconds. An effect that ran out carries a value at or near zero, which can fall just below it.
Vectors (2)

another-on-4-20, one-on-4-20

EffectAddedGroup

What a server sends to put one effect on several units at once. The header names no object it acts on: the units are listed below.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10103
4.11–4.20104
FieldTypeWhat it is
kindu8What sort of effect it is.
effectu32Which effect, by the number its name gives.
packageu32Which set of art and sound the client draws it with.
runningForf32How long it has already run, in seconds.
lastsf32How long it runs in total, in seconds.
countu8How many units follow.
entriescount in count × recordThe units, one place each.
entries[].unitu32The unit carrying the effect.
entries[].casteru32The unit that put it there.
entries[].slotu8Which of the unit’s effect slots it sits in.
entries[].stacksu8How many are stacked there.
entries[].hiddenu8Whether the client keeps it off the unit’s display.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

EffectReplacedGroup

What a server sends about the effect in one slot of several units at once. The header names no object it acts on: the units are listed below.

Definition.

In every range of this book

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

It replaces one effect with another on each unit.

FieldTypeWhat it is
runningForf32How long the effect has already run, in seconds.
lastsf32How long it runs in total, in seconds.
countu8How many units follow.
entriescount in count × recordThe units, one place each.
entries[].unitu32The unit carrying the effect.
entries[].casteru32The unit that put it there.
entries[].slotu8Which of the unit’s effect slots.
Vectors (2)

one-on-4-17, one-on-4-20

EffectCountGroup

What a server sends to restate how many of an effect are stacked on several units at once. The header names no object it acts on: the units are listed below.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10190
4.11–4.20191
FieldTypeWhat it is
lastsf32How long the effect runs in total, in seconds.
runningForf32How long it has already run, in seconds.
countu8How many units follow.
entriescount in count × recordThe units, one place each.
entries[].unitu32The unit carrying the effect.
entries[].casteru32The unit that put it there.
entries[].slotu8Which of the unit’s effect slots it sits in.
entries[].stacksu8How many are stacked there now.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

EffectRemovedGroup

What a server sends to take one effect off several units at once. The header names no object it acts on: the units are listed below.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10147
4.11–4.20148
FieldTypeWhat it is
effectu32Which effect, by the number its name gives.
countu8How many units follow.
entriescount in count × recordThe units, one place each.
entries[].unitu32The unit carrying the effect.
entries[].slotu8Which slot it sat in.
entries[].timeLeftf32How long it had left to run, in seconds.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

EffectCounter

What a server sends to set the number an effect shows on its icon. The header names the unit carrying the effect.

Definition.

In every range of this book

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

FieldTypeWhat it is
slotu8Which of the unit’s effect slots.
counteri32The number.
Vectors (2)

one-on-4-17, one-on-4-20

ParticlesCreated

What a server sends to start drawing sets of particles. The header names no object: it carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10134
4.11–4.20135
FieldTypeWhat it is
groupCountu8How many sets follow.
groupscount in groupCount × ParticleGroupThe sets themselves.
Vectors (6)

a-third-on-4-10, another-on-4-10, one-on-4-10, one-on-4-17, another-on-4-20, one-on-4-20

KillParticle

What a server sends to stop a particle a client is drawing.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1055
4.11–4.2056

The header names the particle.

FieldTypeWhat it is
particleu32The particle to stop.
Vectors (6)

a-third-on-4-10, another-on-4-10, one-on-4-10, one-on-4-17, another-on-4-20, one-on-4-20

EmitterPause

What a server sends to pause or resume a named group of particle emitters. The header carries no object this acts on.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10247
4.11–4.17248
FieldTypeWhat it is
grouptext, 256 bytesThe group’s name, padded with zero bytes.
operationu32Nonzero to pause the emission, zero to resume it.
groupOperationu8What to do with the group. A client acts on 0 only, pausing or resuming the group’s emission, and does nothing for any other value. Values: 0 emission.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
grouptext, 256 bytesThe group’s name, padded with zero bytes.
operationu32Nonzero to pause the emission, zero to resume it.
groupOperationu32What to do with the group. A client does nothing for any other value. Values: 1 emission, 2 restart.
Vectors (1)

emission-on-4-20

ParticleSource

What a server sends to drive a value of the lasting particle effects on a unit from something that changes. A client ignores it where the id names no unit it knows. The header carries zero.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10209
4.11–4.17210
FieldTypeWhat it is
unitu32The unit: a champion, minion, turret or other unit.
slotu8Which of the effects’ inputs to drive.
pointu8Which point, for source 0. It has no effect unless source is 0.
sourceu8What drives it. Any other value drives it from nothing. Values: 0 capturePoint, 1 resource, 2 resourceSmoothed.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
unitu32The unit: a champion, minion, turret or other unit.
slotu8Which of the effects’ inputs to drive.
pointu8Which point, for source 1. It has no effect unless source is 1.
sourceu32What drives it. Any other value drives it from nothing. Values: 1 capturePoint, 2 resource, 3 resourceSmoothed.
Vectors (1)

capture-point-on-4-20

AppearancePushed

What a server sends to lay a new look over a unit’s own. The header names the unit.

Definition.

In 4.1–4.4

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

A client stops a basic attack the unit is making first. Looks stack: the newest shows, and AppearancePopped takes away the one its entry names. An animated building instead looks for a look of the same name whose skin equals entry, adds the look under skin where it finds none, and how has no effect on it.

FieldTypeWhat it is
entryu32Names this look, so that AppearancePopped can name it.
how1-byte bitsWhat the look changes.
how.overrideSpellsbit 0Set where the unit’s spells change with it.
how.modelOnlybit 1Set where only the model changes.
how.unusedbit 2 to 7Unused; a server writes zero.
skini32Which look; -1 keeps the unit’s own skin.
assettext, ended by a zero byteThe name the client loads it under, ended by a zero byte. The name and its zero byte take at most 64 bytes.
Vectors (1)

one-on-4-1

In 4.5–4.17

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

BuildsCommand
4.5–4.10150
4.11–4.17151

A client stops a basic attack the unit is making first. Looks stack: the newest shows, and AppearancePopped takes away the one its entry names. An animated building instead looks for a look of the same name whose skin equals entry, adds the look under skin where it finds none, and how has no effect on it.

FieldTypeWhat it is
entryu32Names this look, so that AppearancePopped can name it.
how1-byte bitsWhat the look changes.
how.overrideSpellsbit 0Set where the unit’s spells change with it.
how.modelOnlybit 1Set where only the model changes.
how.replacePackagebit 2Set where its art and sound change with it.
how.unusedbit 3 to 7Unused; a server writes zero.
skini32Which look; -1 keeps the unit’s own skin.
assettext, ended by a zero byteThe name the client loads it under, ended by a zero byte. The name and its zero byte take at most 64 bytes.
Vectors (3)

another-on-4-10, one-on-4-10, one-on-4-17

In 4.18–4.20

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

A client stops a basic attack the unit is making first. Looks stack: the newest shows, and AppearancePopped takes away the one its entry names. An animated building instead looks for a look of the same name whose skin equals entry, adds the look under skin where it finds none, and how has no effect on it.

FieldTypeWhat it is
how1-byte bitsWhat the look changes.
how.overrideSpellsbit 0Set where the unit’s spells change with it.
how.modelOnlybit 1Set where only the model changes.
how.replacePackagebit 2Set where its art and sound change with it.
how.unusedbit 3 to 7Unused; a server writes zero.
entryu32Names this look, so that AppearancePopped can name it.
skini32Which look; -1 keeps the unit’s own skin.
assettext, ended by a zero byteThe name the client loads it under, ended by a zero byte. The name and its zero byte take at most 64 bytes.
Vectors (1)

one-on-4-18

AppearancePopped

What a server sends to take a look AppearancePushed laid over a unit away. The header names the unit.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10102
4.11–4.20103
FieldTypeWhat it is
entryu32The look, by the name AppearancePushed gave it.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

AppearanceCleared

What a server sends to take every look laid over a unit away. The header names the unit.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10199
4.11–4.20200

No body.

Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

AnimationOverrides

What a server sends to make a unit play one set of movements wherever it would have played another. The header names the unit this is about.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10106
4.11–4.20107
FieldTypeWhat it is
pairCountu8How many pairs follow.
pairscount in pairCount × AnimationOverrideEach pair naming what is replaced and what replaces it.
Vectors (6)

a-third-on-4-10, another-on-4-10, one-on-4-10, one-on-4-17, another-on-4-20, one-on-4-20

PlayAnimation

What a server sends to make a unit play an animation. The header names the unit.

Definition.

In 4.1–4.12

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

BuildsCommand
4.1–4.10175
4.11–4.12176

scaleTime and startProgress are applied only where above zero. A unit holding a locked animation ignores the message. An animated building plays at normal speed, and keepEmotes has no effect on it.

FieldTypeWhat it is
flags4-byte bitsHow the animation plays.
flags.lockedbit 0Set where no other animation can fade this one out.
flags.lockedFromIdlebit 1Set where idle animations cannot fade it out. It has no effect where locked is set.
flags.noBlendbit 2Set to switch to it at once rather than blend in.
flags.holdLastFramebit 3Where a non-looping animation ends, it stays on its last frame. Whether an animation loops comes from the animation’s own data.
flags.keepEmotesbit 4Set to let an emote playing go on; clear stops it.
flags.unusedbit 5 to 31Unused; a server writes zero.
scaleTimef32A scale on how long it plays.
startProgressf32How far into the animation it starts.
animationtext, ended by a zero byteThe animation’s name, ended by a zero byte, the two taking at most 64 bytes. Nothing plays for a name the unit does not have.
Vectors (4)

another-on-4-10, one-on-4-10, another-on-4-11, one-on-4-11

In 4.13–4.17

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

scaleTime and startProgress are applied only where above zero. A unit holding a locked animation ignores the message. An animated building plays at normal speed, and keepEmotes has no effect on it.

FieldTypeWhat it is
flags4-byte bitsHow the animation plays.
flags.lockedbit 0Set where no other animation can fade this one out.
flags.lockedFromIdlebit 1Set where idle animations cannot fade it out. It has no effect where locked is set.
flags.noBlendbit 2Set to switch to it at once rather than blend in.
flags.holdLastFramebit 3Where a non-looping animation ends, it stays on its last frame. Whether an animation loops comes from the animation’s own data.
flags.keepEmotesbit 4Set to let an emote playing go on; clear stops it.
flags.unusedbit 5 to 31Unused; a server writes zero.
scaleTimef32A scale on how long it plays.
startProgressf32How far into the animation it starts.
speedf32How fast it plays.
animationtext, ended by a zero byteThe animation’s name, ended by a zero byte, the two taking at most 64 bytes. Nothing plays for a name the unit does not have.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

scaleTime and startProgress are applied only where above zero. A unit holding a locked animation ignores the message. An animated building plays at normal speed, and keepEmotes has no effect on it.

FieldTypeWhat it is
flags1-byte bitsHow the animation plays.
flags.lockedbit 0Set where no other animation can fade this one out.
flags.lockedFromIdlebit 1Set where idle animations cannot fade it out. It has no effect where locked is set.
flags.noBlendbit 2Set to switch to it at once rather than blend in.
flags.holdLastFramebit 3Where a non-looping animation ends, it stays on its last frame. Whether an animation loops comes from the animation’s own data.
flags.keepEmotesbit 4Set to let an emote playing go on; clear stops it.
flags.unusedbit 5 to 7Unused; a server writes zero.
scaleTimef32A scale on how long it plays.
startProgressf32How far into the animation it starts.
speedf32How fast it plays.
animationtext, ended by a zero byteThe animation’s name, ended by a zero byte, the two taking at most 64 bytes. Nothing plays for a name the unit does not have.
Vectors (1)

one-on-4-18

StopAnimation

What a server sends to stop an animation a unit is playing. The header names the unit.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1040
4.11–4.2041
FieldTypeWhat it is
flags1-byte bitsHow it stops.
flags.fadebit 0Set where the animation fades out.
flags.ignoreLockbit 1Set where a lock on the animation is ignored.
flags.stopAllbit 2Set where every animation stops when the name below is empty.
flags.unusedbit 3 to 7Unused; a server writes zero.
animationtext, ended by a zero byteThe animation’s name, ended by a zero byte, or empty.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

PauseAnimation

What a server sends to pause or resume a unit’s animation. The header names the unit.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10112
4.11–4.20113
FieldTypeWhat it is
state1-byte bitsWhether to pause.
state.pausedbit 0Set to pause, clear to resume.
state.unusedbit 1 to 7Unused; a server writes zero.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

AnimationAdvanced

What a server sends to move an animation a unit is playing forward at once. The header names the unit. Where the unit plays no animation of that name, nothing happens.

Definition.

In every range of this book

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

FieldTypeWhat it is
secondsf32How far forward, in seconds.
animationtext, 64 bytesThe animation’s name. It ends at its first zero byte.
Vectors (2)

one-on-4-17, one-on-4-20

FadeTo

What a server sends to fade a unit towards an opacity over time. The header names the unit.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10177
4.11–4.20178
FieldTypeWhat it is
fadei16Names this fade, so that FadeRemoved can name it.
timef32How long the fade takes, in seconds.
targetf32The opacity it fades to, from 0 for unseen to 1 for solid.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

FadeRemoved

What a server sends to undo a fade on a unit. The header names the unit.

Definition.

In 4.1–4.16

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

BuildsCommand
4.1–4.1049
4.11–4.1650
FieldTypeWhat it is
fadei16The fade, by the name FadeTo gave it.
Vectors (3)

another-on-4-10, one-on-4-10, one-on-4-11

In 4.17

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

FieldTypeWhat it is
fadeu16The fade, by the name FadeTo gave it.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
fadei16The fade, by the name FadeTo gave it.
Vectors (1)

one-on-4-20

FadeMinions

What a server sends to fade one side’s minions. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10202
4.11–4.20203
FieldTypeWhat it is
sideu8Which side, or zero for both.
amountf32The opacity they fade to, from 0 for unseen to 1 for solid.
timef32How long the fade takes, in seconds.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

NexusIdle

What a server sends to put each nexus into its idle particles. The header carries zero.

Definition.

In every range of this book

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

No body.

Vectors (2)

one-on-4-17, one-on-4-20

NexusSkin

What a server sends to change how one side’s nexus looks. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10115
4.11–4.20116
FieldTypeWhat it is
sideu8Which side.
skinu32Which look.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

ScreenTint

What a server sends to tint a side’s screens, or to take a tint away. The header names no object: a server writes zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10218
4.11–4.20219
FieldTypePresent whenWhat it is
fadeInu8Nonzero brings a tint in, and the colour and weight below follow; 0 takes it away, and they do not.
timef32How long the change takes, in seconds.
sidei32Which side sees it.
colouru32fadeIn setThe tint, as blue, green, red and opacity bytes.
weightf32fadeIn setHow strongly it applies at most.
Vectors (6)

another-on-4-1, one-on-4-1, another-on-4-11, one-on-4-11, another-on-4-20, one-on-4-20

VoiceOverride

What a server sends to change or reset the voice a unit speaks with. The header names the unit.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10149
4.11–4.17150
4.18–4.20150
FieldTypePresent whenWhat it is
flags1-byte bitsWhether to reset.
flags.resetbit 0Set where the unit returns to its own voice; no name follows.
flags.unusedbit 1 to 7Unused; a server writes zero.
voicetext, ended by a zero byteflags.reset = 0The voice’s name, ended by a zero byte.
Vectors (5)

another-on-4-1, one-on-4-1, another-on-4-11, one-on-4-11, one-on-4-18

AnimationUnlocked

What a server sends to let a unit’s locked animation be replaced again. The header names the unit.

Definition.

In 4.20

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

FieldTypeWhat it is
animationtext, ended by a zero byteWhich animation, by name, ended by a zero byte; an empty name for any.
Vectors (1)

one-on-4-20

The shop

What fills the shop, what a client asks for, and what a server answers.

What fills it

A client’s catalogue of items is its own: no message sends or changes it. A client sets its shop up for its own champion, and what a match sells is settled by the client’s own data. A client filters nothing out of the shop by the champion’s level.

What a server decides is which of the client’s items a match lets a player buy, and whether the shop has a player to show them to.

A client sets its shop up from its own champion’s CreateChampion (the one carrying its own client id) and then that champion’s Loadout. Until the Loadout arrives, its shop opens empty and too big for the screen: no items, no suggested items, no builds. Given its own champion’s Loadout, it shows every item and the items it suggests for the champion. A server sends each champion’s Loadout during the spawn run.

What a match sells is settled by the client’s own data for the map, the mode and the variants named in VersionSync. The map’s data lists items that cannot be bought, with further lists for the mode and each variant; a mode with no list of its own removes nothing. Suggested items are kept per champion, and chosen by map and mode. Of what a server sends, only these change what can be bought:

Buying and selling

A client asks to buy with BuyItem, to sell or throw away an item with RemoveItem, and to swap two slots of its inventory with SwapItems. Closing the shop sends nothing.

Opening the shop sends nothing, except in the tutorial, where it sends TutorialShopOpened.

A client asks to buy only where the item is one the match sells and priced within the champion’s gold.

A client never asks for an item a player holds only one of and holds already.

A client asks only where the item’s price, after any substitution, is within the champion’s gold, and where a slot is free, unless the item can be used in the shop. For an item built from others, it asks only where the champion holds a free slot or a part of it, everything the item requires, and gold for what remains.

A client asks to buy only where shopping is allowed (ShopEnabled), with the champion near its side’s shop, dead, or allowed to shop from anywhere.

A client never places an item itself. It shows a purchase only when a server answers with ItemAdded, a sale or loss with RemoveItemAnswer, and a swap with SwapItemsAnswer. A server can also set a slot (InventorySlot), set the whole inventory (InventorySnapshot), change an item’s charges (ItemCharges), or report an item used (ItemUsed).

In 4.1–4.19

ItemAdded places the item and removes nothing: a server sends a RemoveItemAnswer for each part an item built from others takes up. Gold falls only as replication states the champion’s gold, and a purchase a server never answers places nothing and spends nothing.

In 4.1–4.19

A purchase a server never answers still plays the sound of buying.

In 4.1–4.19

A purchase a server never answers still lists the item among recent purchases.

Undo

Where VersionSync’s features set shopUndo, the shop has an undo button, which is enabled while ShopUndoCount gives the champion undos to spend. Pressing it sends ShopUndo, whatever the count.

Closing and locking

CloseShop closes the shop where it is open. A message that locks the shop alone, InputLock or InputLockToggled, closes it and turns off its key.

Any message that locks the shop closes it and turns off its key, whatever else it locks.

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).

Loadout

What a server sends to lay out everything a champion brought to the match: the runes set before it began, its summoner slots and the choices made alongside them. The header names the unit this is about.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.1041
4.11–4.1742

A client’s shop is set up by the Loadout of its own champion: until that arrives the shop opens empty, with no items, no suggested items and no builds, and is drawn at a size that does not fit the screen. A server sends one for every champion at spawning, between SpawnStart and SpawnEnd. It also says what the champion’s wards look like.

FieldTypeWhat it is
runes30 × u32The runes set before the match, thirty places in runs of nine, nine, nine and three. A place holds zero where nothing was set.
summoners2 × u32The spells in the champion’s summoner slots, by the numbers their names give.
choices80 × ChoiceThe choices made alongside them, one place each, and how far each was taken. A place stands empty where nothing was chosen.
levelu8The player’s account level.
wardSkinu8What the champion’s wards look like.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

It also says what the champion’s wards look like.

FieldTypeWhat it is
runes30 × u32The runes set before the match, thirty places in runs of nine, nine, nine and three. A place holds zero where nothing was set.
summoners2 × u32The spells in the champion’s summoner slots.
summonersAgain2 × u32The same two spells a second time. A server writes them twice, and both runs agree.
choices80 × ChoiceThe choices made alongside them, one place each, and how far each was taken. A place stands empty where nothing was chosen.
levelu8The level the champion starts at.
wardSkinu8What the champion’s wards look like.
Vectors (2)

another-on-4-20, one-on-4-20

ItemSubstitution

What a server sends to have one item stand in for another in a champion’s inventory. The header names the champion.

Definition.

In every range of this book

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

FieldTypeWhat it is
originalu32The item replaced.
substituteu32The item standing in for it.
Vectors (2)

one-on-4-17, one-on-4-20

SubstitutionCleared

What a server sends to undo an ItemSubstitution, so the shop shows the item itself again. The header names the champion.

Definition.

In every range of this book

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

FieldTypeWhat it is
itemu32The item whose substitute is undone. Zero does nothing.
Vectors (2)

one-on-4-17, one-on-4-20

BuyItem

What a client sends to buy an item from the shop. The header names the sender’s champion.

Definition.

In every range of this book

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.10129
4.11–4.20130
FieldTypeWhat it is
itemu32Which item, by the number the client knows it as.
Vectors (4)

one-item-on-4-10, one-on-4-10, one-on-4-17, one-item-on-4-20

RemoveItem

What a client sends to be rid of an item. The header names the sender’s champion.

Definition.

In 4.1–4.17

Command 9 on requests, sent by the client, reliable.

FieldTypeWhat it is
which1-byte bits
which.slotbit 0 to 6Which slot.
which.sellbit 7Set to sell the item, clear to throw it away. A client always sends it set.
Vectors (1)

one-on-4-17

In 4.18–4.20

Command 9 on requests, sent by the client, reliable.

A client sends it to sell an item or to throw one away.

FieldTypeWhat it is
slotu8Which slot the item sits in.
how1-byte bits
how.sellbit 0Set where the item is sold rather than discarded.
how.unusedbit 1 to 7Unused; a client may leave any value here, and a server ignores it.
Vectors (1)

selling-on-4-20

SwapItems

What a client sends to move an item from one slot to another. The header names the sender’s champion.

Definition.

In 4.1–4.17

Command 32 on requests, sent by the client, reliable.

FieldTypeWhat it is
fromu8The slot the item leaves, which a 4.17 client sends only from 0 to 9.
tou8The slot it goes to, never the one from names; a 4.17 client sends only 0 to 9.
Vectors (1)

one-on-4-17

In 4.18–4.20

Command 32 on requests, sent by the client, reliable.

FieldTypeWhat it is
fromu8The slot the item leaves, which a 4.20 client sends only from 0 to 5.
tou8The slot it goes to, never the one from names; a 4.20 client sends only 0 to 5.
Vectors (1)

between-slots-on-4-20

TutorialShopOpened

What a client sends as its player opens the shop. It carries nothing of its own. The header carries zero.

Definition.

In every range of this book

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.1092
4.11–4.2093

A client sends it only in the tutorial: where the version answer names the mode TUTORIAL and the map’s own data marks it as a tutorial map, as map 12’s does; elsewhere it never sends this.

No body.

Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

ShopEnabled

What a server sends to say whether a champion can use the shop. The header names the champion.

Definition.

In 4.1–4.12

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

BuildsCommand
4.1–4.10239
4.11–4.12240
FieldTypeWhat it is
flags1-byte bitsWhether it can be used.
flags.enabledbit 0Set where the shop can be used.
flags.unusedbit 1 to 7Unused; a server writes zero.
Vectors (2)

one-on-4-1, one-on-4-11

In 4.13–4.20

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

FieldTypeWhat it is
flags1-byte bitsWhether it can be used.
flags.enabledbit 0Set where the shop can be used.
flags.forcebit 1Set where it can be used wherever the champion stands.
flags.unusedbit 2 to 7Unused; a server writes zero.
Vectors (2)

one-on-4-17, one-on-4-20

ItemAdded

What a server sends to set what sits in one of a unit’s item slots. The header names the unit this is about.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10110
4.11–4.17111

It answers no request: a client clears the slot named and puts what follows in its place whether or not anything asked for it. A server sends it to units nobody is buying for.

FieldTypeWhat it is
itemu32Which item, by the number the client knows it as.
slotu8The slot it went to. A client rejects the message from 40 up.
inSlotu8How many of it are in that slot now.
chargesu8How many uses it carries.
how1-byte bits
how.unusedbit 0 to 5Unused; a server writes zero.
how.announcebit 6Set to announce the purchase: a client shows it where the unit is on its side (or it plays a replay), the item’s own data allows it, the player’s setting asks for it, and the same item was not bought in the last 5 seconds, a repeat within them restarting the wait.
how.unused7bit 7Unused; a server writes zero.
Vectors (4)

another-on-4-10, one-on-4-10, another-on-4-17, one-on-4-17

In 4.18–4.20

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

It answers no request: a client clears the slot named and puts what follows in its place whether or not anything asked for it. A server sends it to units nobody is buying for.

FieldTypeWhat it is
itemu32Which item, by the number the client knows it as.
slotu8The slot it went to. A client ignores a message naming a slot above 38.
inSlotu8How many of it are in that slot now.
chargesu8How many uses it carries.
how1-byte bits
how.tellTheClientbit 0Set to announce the purchase to allies and those watching, for items that announce, at most once per item in 5 seconds.
how.unusedbit 1 to 7Unused; a server writes zero.
Vectors (2)

another-on-4-20, one-on-4-20

RemoveItemAnswer

What a server sends to confirm an item left a slot. The header names the unit this is about.

Definition.

In 4.1–4.17

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

FieldTypeWhat it is
which1-byte bits
which.slotbit 0 to 6Which slot. A client changes nothing from 40 up.
which.notifybit 7Set to have a client tell its screens the inventory changed; clear still updates the slot, quietly.
leftu8How many are left in the slot; zero empties it, item and charges cleared. Either way a client cancels any spell or action its player had picked.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
slotu8Which slot.
leftu8How many of the item remain in it.
how1-byte bits
how.tellTheClientbit 0Set where the client is to show the change.
how.unusedbit 1 to 7Unused; a server writes zero.
Vectors (2)

another-on-4-20, one-on-4-20

SwapItemsAnswer

What a server sends to confirm an item moved between slots. The header names the unit this is about.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1061
4.11–4.2062
FieldTypeWhat it is
fromu8The slot the item left.
tou8The slot it went to.
Vectors (6)

a-third-on-4-10, another-on-4-10, one-on-4-10, one-on-4-17, another-on-4-20, one-on-4-20

InventorySlot

What a server sends to set one slot of a unit’s inventory. The header names the unit. A client empties the slot, then fills it where count is above zero, and refreshes the shop where the unit is its own champion.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1082
4.11–4.2083
FieldTypeWhat it is
itemu32The item. It has no effect where count is zero.
slotu8Which slot, 0 to 39. A client ignores the message from 40 up.
countu8How many. Zero leaves the slot empty.
chargesu8Its charges.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

InventorySnapshot

What a server sends to state a unit’s whole inventory at once, with each slot’s cooldown. The header names the unit.

Definition.

In 4.1–4.6

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

FieldTypeWhat it is
items9 × recordNine places, one per slot.
items[].itemu32The item, or zero for an empty slot.
items[].slotu8Which slot.
items[].inSlotu8How many are in the slot.
items[].chargesu8How many charges it holds.
cooldowns9 × f32One per slot. A client applies a slot’s wait only where the slot holds an item and the value is not -1.

In 4.7–4.10

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

FieldTypeWhat it is
items10 × recordTen places, one per slot.
items[].itemu32The item, or zero for an empty slot.
items[].slotu8Which slot.
items[].inSlotu8How many are in the slot.
items[].chargesu8How many charges it holds.
cooldowns10 × f32One per slot. A client applies a slot’s wait only where the slot holds an item and the value is not -1.
Vectors (1)

one-on-4-7

In 4.11–4.20

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

FieldTypeWhat it is
items10 × recordTen places, one per slot.
items[].itemu32The item, or zero for an empty slot.
items[].slotu8Which slot.
items[].inSlotu8How many are in the slot.
items[].chargesu8How many charges it holds.
cooldowns10 × f32One per slot.
maxCooldowns10 × f32One per slot.
Vectors (2)

one-on-4-17, one-on-4-20

ItemCharges

What a server sends to set how many charges an item holds. The header names the unit.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10252
4.11–4.20253
FieldTypeWhat it is
slotu8Which slot.
chargesu8How many charges.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

ItemUsed

What a server sends after an item in a unit’s inventory is used. The header names the unit.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10158
4.11–4.20159
FieldTypeWhat it is
slotu8Which slot.
leftu8How many are left in it; zero empties the slot.
chargesu8How many charges it holds.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

ShopUndoCount

What a server sends to say how many purchases a champion can still undo. The header names the champion.

Definition.

In every range of this book

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

FieldTypeWhat it is
undou8How many steps can be undone.
Vectors (2)

one-on-4-17, one-on-4-20

ShopUndo

What a client sends as its player presses the shop’s undo button. The button is there only where the version answer’s features have shopUndo set, and is enabled only while ShopUndoCount has given the champion undos to spend. It carries nothing of its own. Its identifier is wider than a byte, so it travels behind the escape. The header names the sender’s champion.

Definition.

In every range of this book

Command 266 on requests, sent by the client, reliable.

No body.

Vectors (2)

one-on-4-17, one-on-4-20

CloseShop

What a server sends to close a client’s shop. The header carries zero.

Definition.

In every range of this book

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

No body.

Vectors (2)

one-on-4-17, one-on-4-20

InventorySnapshotOnMap

What a server sends to state a unit’s whole inventory at once, with each slot’s cooldown, to the clients that can see the unit. The header names the unit.

Definition.

In 4.20

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

FieldTypeWhat it is
items10 × HeldItemTen slots, in order.
cooldowns10 × f32Each slot’s cooldown left, in the same order.
maxCooldowns10 × f32Each slot’s whole cooldown, in the same order.
Vectors (1)

one-on-4-20

Objectives

The parts of a map players compete for besides each other: neutral camps, points a side can capture and a score, and the events a match tells its clients about.

Camps

A camp is a group of units that belong to no side. A server places a camp on the map and says how it is drawn with CampMarker, opens it with CampOpened as its monsters come, and marks it empty with CampCleared. The monsters themselves are units (see Units). A server tells clients watching a match when a camp is next due with CampTimer.

CampCleared also sets when the camp fills again.

Capture points and score

On a map won on score, a server binds each capture point to a unit with CapturePointChanged, and TeamScore sets each side’s score.

In 4.1–4.19

Everything a client shows of a capture point (who holds it, where it stands, how far it is taken) comes from the unit CapturePointChanged binds it to, so a server hands a point over by changing the unit’s side and moves it toward capture by changing the unit’s resource. A client shows the points and the score on a panel it builds only where the version answer names the mode ODIN, and only once one point is known. Reaching a score ends nothing: the match ends as any match does (see The match).

Other map objectives

A server can name the unit holding the Ascension with AscendedUnit, and send RespawnPoint about points a champion returns to life at.

In 4.1–4.19

A client acts on RespawnPoint only where it shows the capture point panel.

Events

WorldEvent says something happened that the whole match is told about: the match’s welcome and its first notices, minions coming out, an inhibitor or a great monster falling, a player leaving. ClientEvent tells one client something happened that concerns a unit. Each names a sort, from one table of events, and the sort settles the rest of the message and what a client shows.

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).

CampMarker

What a server sends to place a camp on the map and say how it is drawn. Its identifier is wider than a byte, so it travels behind the escape. The header names no object: it carries zero.

Definition.

In 4.9–4.20

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

FieldTypeWhat it is
xf32Where the camp sits, along one ground axis, in world units.
yf32Where it sits, in height, in world units.
zf32Where it sits, along the other ground axis, in world units.
icontext, 64 bytesNames the mark a client draws, by a name from the game’s own data.
indexu8Tells one camp from another.
revealEventu8What makes the unit known to a side that cannot see it.
sideu8Which side the camp belongs to, where it belongs to one.
timerKindi32Which clock the client shows for it.
expiresf32When the camp is next due, in seconds.
Vectors (3)

one-on-4-17, a-side-on-4-20, no-side-on-4-20

CampOpened

What a server sends to open a camp of units that belong to no side. The header names no object: it carries zero.

Definition.

In 4.1

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

FieldTypeWhat it is
atXf32Where the camp sits, along one ground axis, in world units.
atYf32Where it sits, in height, in world units.
atZf32Where it sits, along the other ground axis, in world units.
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.
proximityAnimationstext, 64 bytesThe name of a set of animations the camp plays as units come near, written and padded as above; empty means none. A client uses it only where it creates the camp.
campu8Which camp.
Vectors (3)

a-third-on-4-1, another-on-4-1, one-on-4-1

In 4.2–4.8

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

FieldTypeWhat it is
atXf32Where the camp sits, along one ground axis, in world units.
atYf32Where it sits, in height, in world units.
atZf32Where it sits, along the other ground axis, in world units.
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.
spawnDurationf32How long until the camp next opens, in seconds.
campu8Which camp.
Vectors (3)

a-third-on-4-2, another-on-4-2, one-on-4-2

In 4.9–4.20

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

BuildsCommand
4.9–4.10232
4.11–4.20233
FieldTypeWhat it is
atXf32Where the camp sits, along one ground axis, in world units.
atYf32Where it sits, in height, in world units.
atZf32Where it sits, along the other ground axis, in world units.
spawnDurationf32How long the opening takes, in seconds.
campu8Which camp.
timerKindi32Which clock the client shows for it.
Vectors (6)

a-third-on-4-10, another-on-4-10, one-on-4-10, one-on-4-17, another-on-4-20, one-on-4-20

CampCleared

What a server sends as a camp of units that belong to no side is emptied. The header names no object: it carries zero.

Definition.

In 4.1–4.3

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

A client marks the camp empty, even one that had just filled.

FieldTypeWhat it is
killeru32The champion credited with emptying the camp, or zero for none. Where the camp has no buff side and no line of its own, a client has that champion speak a line for it, whatever speak says.
campu32Which camp. A client ignores a camp it does not know, but for the timer.
does1-byte bits
does.speakbit 0Set to have the client play the line for a camp revealed or a buff taken, to the client’s own side.
does.unusedbit 1 to 7Unused; a server writes zero.
Vectors (1)

one-on-4-1

In 4.4–4.8

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

A client marks the camp empty, even one that had just filled.

FieldTypeWhat it is
killeru32The champion credited with emptying the camp, or zero for none. Where the camp has no buff side and no line of its own, a client has that champion speak a line for it, whatever speak says.
campu32Which camp. A client ignores a camp it does not know, but for the timer.
does1-byte bits
does.speakbit 0Set to have the client play the line for a camp revealed or a buff taken, to the client’s own side.
does.firstSidebit 1Unused; a server writes zero.
does.unusedbit 2 to 7Unused; a server writes zero.
Vectors (1)

one-on-4-4

In 4.9–4.17

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

BuildsCommand
4.9–4.10194
4.11–4.17195

A client marks the camp empty, even one that had just filled.

FieldTypeWhat it is
killeru32The champion credited with emptying the camp, or zero for none. Where the camp has no buff side and no line of its own, a client has that champion speak a line for it, whatever speak says.
campu32Which camp. A client ignores a camp it does not know, but for the timer.
does1-byte bits
does.speakbit 0Set to have the client play the line for a camp revealed or a buff taken, to the client’s own side.
does.firstSidebit 1Unused; a server writes zero.
does.unusedbit 2 to 7Unused; a server writes zero.
timerKindi32Which of the client’s neutral timers to set, named by a value that is not a small number. Zero touches no timer.
returnsAtf32The game time, in seconds, when the camp fills again. The largest finite 32-bit float means now.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

A client marks the camp empty, even one that had just filled.

FieldTypeWhat it is
killeru32The unit credited with emptying it.
campu32Which camp.
timerKindi32Which clock the client shows for it.
returnsAtf32When the camp fills again, in seconds.
does1-byte bits
does.speakbit 0Set where the client says something about it. A server sets it.
does.unusedbit 1 to 7Unused; a server writes zero.
Vectors (2)

another-on-4-20, one-on-4-20

CampTimer

What a server sends a client watching a match to set when a camp is next due. The header carries zero.

Definition.

In every range of this book

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

FieldTypeWhat it is
timeri32Which camp’s timer, by a number a name gives.
expiresf32When it is due, in match seconds.
Vectors (2)

one-on-4-17, one-on-4-20

CapturePointChanged

What a server sends when something changes about a point one side can take from the other. The header names no object: it carries zero.

Definition.

In 4.1–4.10

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

A client takes this only once the match has started; one that arrives earlier is dropped. The points exist only through this message: a map brings none, and a client makes point 0 to point n when it first meets n, whatever the change. Once a client knows one point, and only where the version answer named the mode ODIN, it shows the panel of each side’s score and points held, and marks each point on the minimap. Everything shown of a point comes from the unit bound to it: its side holds the point (100 or 200; any other side leaves it neutral), its position places it, and its current resource over its maximum, where its resource kind matches the one bound, is how far the point is taken. A server hands a point over by changing that unit’s side (TeamChanged) and moves it toward capture by changing that unit’s resource.

FieldTypeWhat it is
pointu8Which point, 0 to 254; a match of five points uses 0 to 4.
unitu32The unit to bind to the point: any unit that can be attacked and that the client already holds when this arrives; otherwise the point stays unbound, neutral and empty.
resourceKindu8The kind of resource whose fill shows how far the point is taken. Where it is not the bound unit’s own kind, the point shows as not taken at all. A client knows 0 to 11, and takes any higher value as none. Values: 0 mana, 1 energy, 2 none, 3 shield, 4 battleFury, 5 dragonFury, 6 rage, 7 heat, 8 ferocity, 9 bloodWell, 10 wind, 11 other.
sidei32The side attacking the point. It has no effect on a binding.
changeu8What to do. A client acts on 0 only; it ignores any other value, after making the points up to this one. Values: 0 bind, 1 ignored.
Vectors (1)

none-on-4-1

In 4.11–4.17

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

A client takes this only once the match has started; one that arrives earlier is dropped. The points exist only through this message: a map brings none, and a client makes point 0 to point n when it first meets n, whatever the change. Once a client knows one point, and only where the version answer named the mode ODIN, it shows the panel of each side’s score and points held, and marks each point on the minimap. Everything shown of a point comes from the unit bound to it: its side holds the point (100 or 200; any other side leaves it neutral), its position places it, and its current resource over its maximum, where its resource kind matches the one bound, is how far the point is taken. A server hands a point over by changing that unit’s side (TeamChanged) and moves it toward capture by changing that unit’s resource.

FieldTypeWhat it is
pointu8Which point, 0 to 254; a match of five points uses 0 to 4.
unitu32The unit to bind to the point: any unit that can be attacked and that the client already holds when this arrives; otherwise the point stays unbound, neutral and empty.
resourceKindu8The kind of resource whose fill shows how far the point is taken. Where it is not the bound unit’s own kind, the point shows as not taken at all. Values: 0 mana, 1 energy, 2 none, 3 shield, 4 battleFury, 5 dragonFury, 6 rage, 7 heat, 8 gnarFury, 9 ferocity, 10 bloodWell, 11 wind, 12 other.
sidei32The side attacking the point. It has no effect on a binding.
changeu8What to do. A client acts on 0 only; it ignores any other value, after making the points up to this one. Values: 0 bind, 1 ignored.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
pointu8Which point.
unitu32The unit the change concerns.
resourceKindu8Which of the unit’s resources the client shows as the point’s capture progress, where change is 0. Values: 0 mana, 1 energy, 2 none, 3 shield, 4 battleFury, 5 dragonFury, 6 rage.
sideu32Unused; a server writes zero.
changeu8What sort of change it is. A client acts only on 0, and reads resourceKind only then.
Vectors (2)

another-on-4-20, one-on-4-20

TeamScore

What a server sends to set a side’s score, where a match is won on score. The header names no object: it carries zero.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10211
4.11–4.17212

A client takes this only once the match has started. It draws nothing from this message alone: the score shows on the panel that a client shows only where the version answer named the mode ODIN and a point is known (CapturePointChanged). The panel counts five points, and a score of 500 at most. A score that arrives before the panel shows is shown when it does. Reaching a score ends nothing in a client: a match ends through the messages that end any match.

FieldTypeWhat it is
sidei32Which side, 100 or 200. A client ignores any other.
scorei32The score it now stands at: the whole of it, not a change.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
sideu32Which side: 100 or 200.
scorei32The score it now stands at.
Vectors (2)

another-on-4-20, one-on-4-20

AscendedUnit

What a server sends to name the unit that holds the Ascension. A client acts on it only where its screen shows that mode’s score. The header carries zero.

Definition.

In 4.15–4.20

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

FieldTypeWhat it is
unitu32The unit, or zero for none. A champion shows as its icon in its side’s colour, any other unit as a plain mark; a client not yet knowing the id keeps looking for it.
Vectors (2)

one-on-4-17, one-on-4-20

RespawnPoint

What a server sends about the points a champion can choose to return to life at. A client acts on it only where its screen has a panel of such points. The header names no object: a server writes zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10212
4.11–4.20213
FieldTypeWhat it is
actionu8What happened. A client ignores any other value. Values: 0 owned, 1 chosen.
pointu8Which point.
sidei32The side holding it, 100 or 200. It takes effect only where action is owned.
clientIdu32The client id of the player who chose it. It takes effect only where action is chosen.
xf32Where the point stands, in world units. It takes effect only where action is owned.
yf32Its height, in world units. It takes effect only where action is owned.
zf32Where the point stands, in world units. It takes effect only where action is owned.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

WorldEvent

What a server sends to say something happened that the whole match is told about. What sort of thing is named first, and the sort settles what follows. The header names no object: it carries zero.

Definition.

In 4.1–4.5

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

FieldTypePresent whenWhat it is
eventu8What sort of thing happened, and so which shape follows. Each name says what the sort is sent alongside, and each note what a client shows for it; the text of a notice that carries a map is the one that map gives it. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 29 inhibitorKilled, 30 inhibitorDied, 31 inhibitorRespawningSoon, 34 turretKilled, 35 turretDied, 36 turretDamaged, 37 minionKilled, 38 minionDenied, 39 monsterKilled, 40 largeMonsterKilled, 41 redBuffTaken, 42 blueBuffTaken, 43 nexusKilled, 44 nexusDied, 45 heal, 46 healCast, 47 buff, 48 crowdControl, 49 killingSpree, 56 killDuringSpree, 63 doubleKillDuringSpree, 64 tripleKillDuringSpree, 65 quadraKillDuringSpree, 68 deathAssist, 69 playerQuit, 70 playerLeft, 71 playerReconnected, 86 itemBought, 87 itemSold, 88 itemRemoved, 89 itemCallout, 90 itemChanged, 91 undoChanged, 92 itemSubstituted, 111 minionsSpawned, 112 welcome, 113 startNoticeTwo, 114 startNoticeThree, 118 scoreboardOpened, 120 nexusCrystalStarted, 143 dragonKilled, 144 dragonKilledWatched, 145 dragonStolen, 146 baronKilled, 147 baronKilledWatched, 148 baronStolen, 149 spiderKilled, 150 spiderKilledWatched, 151 altarCaptured, 152 altarCapturedWatched, 153 wardPlaced, 154 wardKilled.
sourceu32The unit the thing is credited to, or zero where none is.
subjectu32The unit the thing happened to, or zero where none is named.
stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
damagerecordevent = 15 or 16How much harm, and from what.
damage.physicalf32Physical damage.
damage.magicalf32Magical damage.
damage.truef32True damage.
damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
damage.scriptu32The spell or effect, by the number its name gives, shown by name.
damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
damage.parent2-byte bitsWhere the spell or effect came from.
damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
damage.parent.unusedbit 15Unused; a server writes zero.
spentu32event = 23How much gold, as shown.
valueu32event = 25 or 86 or 87 or 88 or 90 or 91 or 151 or 152What it carries is not recorded for this range; a client does not show it.
criticalf32event = 26The critical strike’s damage, as shown.
spreeu32event = 49How many kills in a row, as shown.
earnedrecordevent = 24Gold earned.
earned.goldf32How much gold, as shown.
earned.detailu32What it carries is not recorded for this range; a server writes zero.
earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
healrecordevent = 45 or 46How much health, and from what.
heal.amountf32How much health, as shown.
heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
heal.scriptu32The spell or effect, by the number its name gives, shown by name.
heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
heal.parent2-byte bitsWhere the spell or effect came from.
heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
heal.parent.unusedbit 15Unused; a server writes zero.
effectrecordevent = 47 or 48The effect, and where it came from.
effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
effect.scriptu32The spell or effect, by the number its name gives, shown by name.
effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
effect.parent2-byte bitsWhere the spell or effect came from.
effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
effect.parent.unusedbit 15Unused; a server writes zero.
buffrecordevent = 48What an effect of this sort carries.
buff.buffTypei32What sort of effect.
buff.durationf32How long it lasted, in seconds.
assistrecordevent = 68What one unit did toward a death.
assist.lastHitf32When it last dealt damage, in match seconds.
assist.physicalf32Physical damage it dealt.
assist.magicalf32Magical damage it dealt.
assist.truef32True damage it dealt.
assist.sharef32What it carries is not recorded for this range; a server writes zero.
assist.goldf32What it carries is not recorded for this range; a server writes zero.
assist.creditedu32What it carries is not recorded for this range; a server writes zero.
killrecordevent = 1 or 2 or 35 or 36 or 37 or 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150The reward, and who shared it.
kill.goldf32The gold the kill gave.
kill.assistCountu32How many of the twelve places below name a unit.
kill.assists12 × u32The units that helped, then zeros.
monsterrecordevent = 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150Who took the monster.
monster.skinHashu32The number the name of the killer’s look gives.
monster.skini32Which look the killer wears.
monster.sideu32The side that took it.
calloutrecordevent = 89The item a player pointed out, shown as the second name followed by the first in brackets.
callout.itemu32The item, shown by name and number.
callout.quantityu32How many, shown as two digits.
callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.sideu32The side of the player who pointed it out.
substitutionrecordevent = 92An item the shop shows another in place of.
substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
substitution.originalu32The item replaced.
substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
mapu32event = 112 or 113 or 114 or 115 or 116Which map it happened on. It travels only with the sorts that carry it.
inhibitorGoldf32event = 30Gold awarded for the inhibitor. It has no effect on a client.
inhibitorAssistCountu32event = 30How many of the places below name an assister. A client names them where it is 0 to 11, and no assister from 12 up.
inhibitorAssists12 × u32event = 30Twelve places; those past inhibitorAssistCount have no effect.
Vectors (43)

a-third-on-4-1, altar-captured-on-4-1, altar-captured-watched-on-4-1, another-on-4-1, baron-killed-on-4-1, baron-killed-watched-on-4-1, baron-stolen-on-4-1, buff-on-4-1, consumable-bought-on-4-1, critical-strike-on-4-1, crowd-control-on-4-1, damage-dealt-on-4-1, damage-taken-on-4-1, death-assist-on-4-1, died-on-4-1, dragon-killed-on-4-1, dragon-killed-watched-on-4-1, dragon-stolen-on-4-1, gold-earned-on-4-1, gold-spent-on-4-1, heal-cast-on-4-1, heal-on-4-1, inhibitor-died-on-4-1, item-bought-on-4-1, item-callout-on-4-1, item-changed-on-4-1, item-removed-on-4-1, item-sold-on-4-1, item-substituted-on-4-1, killing-spree-on-4-1, minion-killed-on-4-1, monster-killed-on-4-1, one-on-4-1, removed-on-4-1, spawned-on-4-1, spider-killed-on-4-1, spider-killed-watched-on-4-1, start-notice-three-on-4-1, start-notice-two-on-4-1, turret-damaged-on-4-1, turret-died-on-4-1, undo-changed-on-4-1, welcome-on-4-1

In 4.6–4.11

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

BuildsCommand
4.6–4.1068
4.1169
FieldTypePresent whenWhat it is
eventu8What sort of thing happened, and so which shape follows. Each name says what the sort is sent alongside, and each note what a client shows for it; the text of a notice that carries a map is the one that map gives it. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemCallout, 91 itemChanged, 92 undoChanged, 93 itemSubstituted, 112 minionsSpawned, 113 welcome, 114 startNoticeTwo, 115 startNoticeThree, 119 scoreboardOpened, 121 nexusCrystalStarted, 144 dragonKilled, 145 dragonKilledWatched, 146 dragonStolen, 147 baronKilled, 148 baronKilledWatched, 149 baronStolen, 150 spiderKilled, 151 spiderKilledWatched, 152 altarCaptured, 153 altarCapturedWatched, 154 wardPlaced, 155 wardKilled.
sourceu32The unit the thing is credited to, or zero where none is.
subjectu32The unit the thing happened to, or zero where none is named.
stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
damagerecordevent = 15 or 16How much harm, and from what.
damage.physicalf32Physical damage.
damage.magicalf32Magical damage.
damage.truef32True damage.
damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
damage.scriptu32The spell or effect, by the number its name gives, shown by name.
damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
damage.parent2-byte bitsWhere the spell or effect came from.
damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
damage.parent.unusedbit 15Unused; a server writes zero.
spentu32event = 23How much gold, as shown.
valueu32event = 25 or 87 or 88 or 89 or 91 or 92 or 152 or 153What it carries is not recorded for this range; a client does not show it.
criticalf32event = 26The critical strike’s damage, as shown.
spreeu32event = 50How many kills in a row, as shown.
earnedrecordevent = 24Gold earned.
earned.goldf32How much gold, as shown.
earned.detailu32What it carries is not recorded for this range; a server writes zero.
earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
healrecordevent = 46 or 47How much health, and from what.
heal.amountf32How much health, as shown.
heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
heal.scriptu32The spell or effect, by the number its name gives, shown by name.
heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
heal.parent2-byte bitsWhere the spell or effect came from.
heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
heal.parent.unusedbit 15Unused; a server writes zero.
effectrecordevent = 48 or 49The effect, and where it came from.
effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
effect.scriptu32The spell or effect, by the number its name gives, shown by name.
effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
effect.parent2-byte bitsWhere the spell or effect came from.
effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
effect.parent.unusedbit 15Unused; a server writes zero.
buffrecordevent = 49What an effect of this sort carries.
buff.buffTypei32What sort of effect.
buff.durationf32How long it lasted, in seconds.
assistrecordevent = 69What one unit did toward a death.
assist.lastHitf32When it last dealt damage, in match seconds.
assist.physicalf32Physical damage it dealt.
assist.magicalf32Magical damage it dealt.
assist.truef32True damage it dealt.
assist.sharef32What it carries is not recorded for this range; a server writes zero.
assist.goldf32What it carries is not recorded for this range; a server writes zero.
assist.creditedu32What it carries is not recorded for this range; a server writes zero.
killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151The reward, and who shared it.
kill.goldf32The gold the kill gave.
kill.assistCountu32How many of the twelve places below name a unit.
kill.assists12 × u32The units that helped, then zeros.
monsterrecordevent = 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151Who took the monster.
monster.skinHashu32The number the name of the killer’s look gives.
monster.skini32Which look the killer wears.
monster.sideu32The side that took it.
calloutrecordevent = 90The item a player pointed out, shown as the second name followed by the first in brackets.
callout.itemu32The item, shown by name and number.
callout.quantityu32How many, shown as two digits.
callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.sideu32The side of the player who pointed it out.
substitutionrecordevent = 93An item the shop shows another in place of.
substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
substitution.originalu32The item replaced.
substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
mapu32event = 113 or 114 or 115 or 116 or 117Which map it happened on. It travels only with the sorts that carry it.
inhibitorGoldf32event = 31Gold awarded for the inhibitor. It has no effect on a client.
inhibitorAssistCountu32event = 31How many of the places below name an assister. A client names them where it is 0 to 11, and no assister from 12 up.
inhibitorAssists12 × u32event = 31Twelve places; those past inhibitorAssistCount have no effect.
Vectors (86)

a-third-on-4-6, altar-captured-on-4-6, altar-captured-watched-on-4-6, another-on-4-6, baron-killed-on-4-6, baron-killed-watched-on-4-6, baron-stolen-on-4-6, buff-on-4-6, consumable-bought-on-4-6, critical-strike-on-4-6, crowd-control-on-4-6, damage-dealt-on-4-6, damage-taken-on-4-6, death-assist-on-4-6, died-on-4-6, dragon-killed-on-4-6, dragon-killed-watched-on-4-6, dragon-stolen-on-4-6, gold-earned-on-4-6, gold-spent-on-4-6, heal-cast-on-4-6, heal-on-4-6, inhibitor-died-on-4-6, item-bought-on-4-6, item-callout-on-4-6, item-changed-on-4-6, item-removed-on-4-6, item-sold-on-4-6, item-substituted-on-4-6, killing-spree-on-4-6, minion-killed-on-4-6, monster-killed-on-4-6, one-on-4-6, removed-on-4-6, spawned-on-4-6, spider-killed-on-4-6, spider-killed-watched-on-4-6, start-notice-three-on-4-6, start-notice-two-on-4-6, turret-damaged-on-4-6, turret-died-on-4-6, undo-changed-on-4-6, welcome-on-4-6, a-third-on-4-11, altar-captured-on-4-11, altar-captured-watched-on-4-11, another-on-4-11, baron-killed-on-4-11, baron-killed-watched-on-4-11, baron-stolen-on-4-11, buff-on-4-11, consumable-bought-on-4-11, critical-strike-on-4-11, crowd-control-on-4-11, damage-dealt-on-4-11, damage-taken-on-4-11, death-assist-on-4-11, died-on-4-11, dragon-killed-on-4-11, dragon-killed-watched-on-4-11, dragon-stolen-on-4-11, gold-earned-on-4-11, gold-spent-on-4-11, heal-cast-on-4-11, heal-on-4-11, inhibitor-died-on-4-11, item-bought-on-4-11, item-callout-on-4-11, item-changed-on-4-11, item-removed-on-4-11, item-sold-on-4-11, item-substituted-on-4-11, killing-spree-on-4-11, minion-killed-on-4-11, monster-killed-on-4-11, one-on-4-11, removed-on-4-11, spawned-on-4-11, spider-killed-on-4-11, spider-killed-watched-on-4-11, start-notice-three-on-4-11, start-notice-two-on-4-11, turret-damaged-on-4-11, turret-died-on-4-11, undo-changed-on-4-11, welcome-on-4-11

In 4.12

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

FieldTypePresent whenWhat it is
eventu8What sort of thing happened, and so which shape follows. Each name says what the sort is sent alongside, and each note what a client shows for it; the text of a notice that carries a map is the one that map gives it. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemCallout, 91 itemChanged, 92 undoChanged, 93 itemSubstituted, 112 minionsSpawned, 113 welcome, 114 startNoticeTwo, 115 startNoticeThree, 119 scoreboardOpened, 121 nexusCrystalStarted, 145 dragonKilled, 146 dragonKilledWatched, 147 dragonStolen, 148 baronKilled, 149 baronKilledWatched, 150 baronStolen, 151 spiderKilled, 152 spiderKilledWatched, 153 altarCaptured, 154 altarCapturedWatched, 155 wardPlaced, 156 wardKilled.
sourceu32The unit the thing is credited to, or zero where none is.
subjectu32The unit the thing happened to, or zero where none is named.
stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
damagerecordevent = 15 or 16How much harm, and from what.
damage.physicalf32Physical damage.
damage.magicalf32Magical damage.
damage.truef32True damage.
damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
damage.scriptu32The spell or effect, by the number its name gives, shown by name.
damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
damage.parent2-byte bitsWhere the spell or effect came from.
damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
damage.parent.unusedbit 15Unused; a server writes zero.
spentu32event = 23How much gold, as shown.
valueu32event = 25 or 87 or 88 or 89 or 91 or 92 or 153 or 154What it carries is not recorded for this range; a client does not show it.
criticalf32event = 26The critical strike’s damage, as shown.
spreeu32event = 50How many kills in a row, as shown.
earnedrecordevent = 24Gold earned.
earned.goldf32How much gold, as shown.
earned.detailu32What it carries is not recorded for this range; a server writes zero.
earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
healrecordevent = 46 or 47How much health, and from what.
heal.amountf32How much health, as shown.
heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
heal.scriptu32The spell or effect, by the number its name gives, shown by name.
heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
heal.parent2-byte bitsWhere the spell or effect came from.
heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
heal.parent.unusedbit 15Unused; a server writes zero.
effectrecordevent = 48 or 49The effect, and where it came from.
effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
effect.scriptu32The spell or effect, by the number its name gives, shown by name.
effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
effect.parent2-byte bitsWhere the spell or effect came from.
effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
effect.parent.unusedbit 15Unused; a server writes zero.
buffrecordevent = 49What an effect of this sort carries.
buff.buffTypei32What sort of effect.
buff.durationf32How long it lasted, in seconds.
assistrecordevent = 69What one unit did toward a death.
assist.lastHitf32When it last dealt damage, in match seconds.
assist.physicalf32Physical damage it dealt.
assist.magicalf32Magical damage it dealt.
assist.truef32True damage it dealt.
assist.sharef32What it carries is not recorded for this range; a server writes zero.
assist.goldf32What it carries is not recorded for this range; a server writes zero.
assist.creditedu32What it carries is not recorded for this range; a server writes zero.
killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152The reward, and who shared it.
kill.goldf32The gold the kill gave.
kill.assistCountu32How many of the twelve places below name a unit.
kill.assists12 × u32The units that helped, then zeros.
monsterrecordevent = 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152Who took the monster.
monster.skinHashu32The number the name of the killer’s look gives.
monster.skini32Which look the killer wears.
monster.sideu32The side that took it.
calloutrecordevent = 90The item a player pointed out, shown as the second name followed by the first in brackets.
callout.itemu32The item, shown by name and number.
callout.quantityu32How many, shown as two digits.
callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.sideu32The side of the player who pointed it out.
substitutionrecordevent = 93An item the shop shows another in place of.
substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
substitution.originalu32The item replaced.
substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
mapu32event = 113 or 114 or 115 or 116 or 117Which map it happened on. It travels only with the sorts that carry it.
inhibitorGoldf32event = 31Gold awarded for the inhibitor. It has no effect on a client.
inhibitorAssistCountu32event = 31How many of the places below name an assister. A client names them where it is 0 to 11, and no assister from 12 up.
inhibitorAssists12 × u32event = 31Twelve places; those past inhibitorAssistCount have no effect.
Vectors (43)

a-third-on-4-12, altar-captured-on-4-12, altar-captured-watched-on-4-12, another-on-4-12, baron-killed-on-4-12, baron-killed-watched-on-4-12, baron-stolen-on-4-12, buff-on-4-12, consumable-bought-on-4-12, critical-strike-on-4-12, crowd-control-on-4-12, damage-dealt-on-4-12, damage-taken-on-4-12, death-assist-on-4-12, died-on-4-12, dragon-killed-on-4-12, dragon-killed-watched-on-4-12, dragon-stolen-on-4-12, gold-earned-on-4-12, gold-spent-on-4-12, heal-cast-on-4-12, heal-on-4-12, inhibitor-died-on-4-12, item-bought-on-4-12, item-callout-on-4-12, item-changed-on-4-12, item-removed-on-4-12, item-sold-on-4-12, item-substituted-on-4-12, killing-spree-on-4-12, minion-killed-on-4-12, monster-killed-on-4-12, one-on-4-12, removed-on-4-12, spawned-on-4-12, spider-killed-on-4-12, spider-killed-watched-on-4-12, start-notice-three-on-4-12, start-notice-two-on-4-12, turret-damaged-on-4-12, turret-died-on-4-12, undo-changed-on-4-12, welcome-on-4-12

In 4.13

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

FieldTypePresent whenWhat it is
eventu8What sort of thing happened, and so which shape follows. Each name says what the sort is sent alongside, and each note what a client shows for it; the text of a notice that carries a map is the one that map gives it. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemUndone, 91 itemCallout, 92 itemChanged, 93 undoChanged, 94 itemSubstituted, 113 minionsSpawned, 114 welcome, 115 startNoticeTwo, 116 startNoticeThree, 120 scoreboardOpened, 122 nexusCrystalStarted, 146 dragonKilled, 147 dragonKilledWatched, 148 dragonStolen, 149 baronKilled, 150 baronKilledWatched, 151 baronStolen, 152 spiderKilled, 153 spiderKilledWatched, 154 altarCaptured, 155 altarCapturedWatched, 156 wardPlaced, 157 wardKilled.
sourceu32The unit the thing is credited to, or zero where none is.
subjectu32The unit the thing happened to, or zero where none is named.
stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
damagerecordevent = 15 or 16How much harm, and from what.
damage.physicalf32Physical damage.
damage.magicalf32Magical damage.
damage.truef32True damage.
damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
damage.scriptu32The spell or effect, by the number its name gives, shown by name.
damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
damage.parent2-byte bitsWhere the spell or effect came from.
damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
damage.parent.unusedbit 15Unused; a server writes zero.
spentu32event = 23How much gold, as shown.
valueu32event = 25 or 87 or 88 or 89 or 92 or 93 or 154 or 155What it carries is not recorded for this range; a client does not show it.
criticalf32event = 26The critical strike’s damage, as shown.
spreeu32event = 50How many kills in a row, as shown.
earnedrecordevent = 24Gold earned.
earned.goldf32How much gold, as shown.
earned.detailu32What it carries is not recorded for this range; a server writes zero.
earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
healrecordevent = 46 or 47How much health, and from what.
heal.amountf32How much health, as shown.
heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
heal.scriptu32The spell or effect, by the number its name gives, shown by name.
heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
heal.parent2-byte bitsWhere the spell or effect came from.
heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
heal.parent.unusedbit 15Unused; a server writes zero.
effectrecordevent = 48 or 49The effect, and where it came from.
effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
effect.scriptu32The spell or effect, by the number its name gives, shown by name.
effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
effect.parent2-byte bitsWhere the spell or effect came from.
effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
effect.parent.unusedbit 15Unused; a server writes zero.
buffrecordevent = 49What an effect of this sort carries.
buff.buffTypei32What sort of effect.
buff.durationf32How long it lasted, in seconds.
assistrecordevent = 69What one unit did toward a death.
assist.lastHitf32When it last dealt damage, in match seconds.
assist.physicalf32Physical damage it dealt.
assist.magicalf32Magical damage it dealt.
assist.truef32True damage it dealt.
assist.sharef32What it carries is not recorded for this range; a server writes zero.
assist.goldf32What it carries is not recorded for this range; a server writes zero.
assist.creditedu32What it carries is not recorded for this range; a server writes zero.
killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153The reward, and who shared it.
kill.goldf32The gold the kill gave.
kill.assistCountu32How many of the twelve places below name a unit.
kill.assists12 × u32The units that helped, then zeros.
monsterrecordevent = 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153Who took the monster.
monster.skinHashu32The number the name of the killer’s look gives.
monster.skini32Which look the killer wears.
monster.sideu32The side that took it.
calloutrecordevent = 91The item a player pointed out, shown as the second name followed by the first in brackets.
callout.itemu32The item, shown by name and number.
callout.quantityu32How many, shown as two digits.
callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.sideu32The side of the player who pointed it out.
substitutionrecordevent = 94An item the shop shows another in place of.
substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
substitution.originalu32The item replaced.
substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
undorecordevent = 90A purchase taken back.
undo.itemu32What it carries is not recorded for this range; a client does not show it.
undo.partu32What it carries is not recorded for this range; a client does not show it.
undo.refundf32The gold given back. A client takes it off the gold the unit is counted as having spent.
mapu32event = 114 or 115 or 116 or 117 or 118Which map it happened on. It travels only with the sorts that carry it.
inhibitorGoldf32event = 31Gold awarded for the inhibitor. It has no effect on a client.
inhibitorAssistCountu32event = 31How many of the places below name an assister. A client names them where it is 0 to 11, and no assister from 12 up.
inhibitorAssists12 × u32event = 31Twelve places; those past inhibitorAssistCount have no effect.
Vectors (44)

a-third-on-4-13, altar-captured-on-4-13, altar-captured-watched-on-4-13, another-on-4-13, baron-killed-on-4-13, baron-killed-watched-on-4-13, baron-stolen-on-4-13, buff-on-4-13, consumable-bought-on-4-13, critical-strike-on-4-13, crowd-control-on-4-13, damage-dealt-on-4-13, damage-taken-on-4-13, death-assist-on-4-13, died-on-4-13, dragon-killed-on-4-13, dragon-killed-watched-on-4-13, dragon-stolen-on-4-13, gold-earned-on-4-13, gold-spent-on-4-13, heal-cast-on-4-13, heal-on-4-13, inhibitor-died-on-4-13, item-bought-on-4-13, item-callout-on-4-13, item-changed-on-4-13, item-removed-on-4-13, item-sold-on-4-13, item-substituted-on-4-13, item-undone-on-4-13, killing-spree-on-4-13, minion-killed-on-4-13, monster-killed-on-4-13, one-on-4-13, removed-on-4-13, spawned-on-4-13, spider-killed-on-4-13, spider-killed-watched-on-4-13, start-notice-three-on-4-13, start-notice-two-on-4-13, turret-damaged-on-4-13, turret-died-on-4-13, undo-changed-on-4-13, welcome-on-4-13

In 4.14–4.15

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

FieldTypePresent whenWhat it is
eventu8What sort of thing happened, and so which shape follows. Each name says what the sort is sent alongside, and each note what a client shows for it; the text of a notice that carries a map is the one that map gives it. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 117 minionsSpawned, 118 welcome, 119 startNoticeTwo, 120 startNoticeThree, 124 scoreboardOpened, 126 nexusCrystalStarted, 150 dragonKilled, 151 dragonKilledWatched, 152 dragonStolen, 153 baronKilled, 154 baronKilledWatched, 155 baronStolen, 156 spiderKilled, 157 spiderKilledWatched, 158 altarCaptured, 159 altarCapturedWatched, 160 wardPlaced, 161 wardKilled.
sourceu32The unit the thing is credited to, or zero where none is.
subjectu32The unit the thing happened to, or zero where none is named.
stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
damagerecordevent = 15 or 16How much harm, and from what.
damage.physicalf32Physical damage.
damage.magicalf32Magical damage.
damage.truef32True damage.
damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
damage.scriptu32The spell or effect, by the number its name gives, shown by name.
damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
damage.parent2-byte bitsWhere the spell or effect came from.
damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
damage.parent.unusedbit 15Unused; a server writes zero.
spentu32event = 23How much gold, as shown.
valueu32event = 25 or 91 or 92 or 93 or 96 or 97 or 158 or 159What it carries is not recorded for this range; a client does not show it.
criticalf32event = 26The critical strike’s damage, as shown.
spreeu32event = 50How many kills in a row, as shown.
earnedrecordevent = 24Gold earned.
earned.goldf32How much gold, as shown.
earned.detailu32What it carries is not recorded for this range; a server writes zero.
earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
healrecordevent = 46 or 47How much health, and from what.
heal.amountf32How much health, as shown.
heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
heal.scriptu32The spell or effect, by the number its name gives, shown by name.
heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
heal.parent2-byte bitsWhere the spell or effect came from.
heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
heal.parent.unusedbit 15Unused; a server writes zero.
effectrecordevent = 48 or 49The effect, and where it came from.
effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
effect.scriptu32The spell or effect, by the number its name gives, shown by name.
effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
effect.parent2-byte bitsWhere the spell or effect came from.
effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
effect.parent.unusedbit 15Unused; a server writes zero.
buffrecordevent = 49What an effect of this sort carries.
buff.buffTypei32What sort of effect.
buff.durationf32How long it lasted, in seconds.
assistrecordevent = 69What one unit did toward a death.
assist.lastHitf32When it last dealt damage, in match seconds.
assist.physicalf32Physical damage it dealt.
assist.magicalf32Magical damage it dealt.
assist.truef32True damage it dealt.
assist.sharef32What it carries is not recorded for this range; a server writes zero.
assist.goldf32What it carries is not recorded for this range; a server writes zero.
assist.creditedu32What it carries is not recorded for this range; a server writes zero.
killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157The reward, and who shared it.
kill.goldf32The gold the kill gave.
kill.assistCountu32How many of the twelve places below name a unit.
kill.assists12 × u32The units that helped, then zeros.
monsterrecordevent = 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157Who took the monster.
monster.skinHashu32The number the name of the killer’s look gives.
monster.skini32Which look the killer wears.
monster.sideu32The side that took it.
calloutrecordevent = 95The item a player pointed out, shown as the second name followed by the first in brackets.
callout.itemu32The item, shown by name and number.
callout.quantityu32How many, shown as two digits.
callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.sideu32The side of the player who pointed it out.
substitutionrecordevent = 98An item the shop shows another in place of.
substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
substitution.originalu32The item replaced.
substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
undorecordevent = 94A purchase taken back.
undo.itemu32What it carries is not recorded for this range; a client does not show it.
undo.partu32What it carries is not recorded for this range; a client does not show it.
undo.refundf32The gold given back. A client takes it off the gold the unit is counted as having spent.
mapu32event = 118 or 119 or 120 or 121 or 122Which map it happened on. It travels only with the sorts that carry it.
inhibitorGoldf32event = 31Gold awarded for the inhibitor. It has no effect on a client.
inhibitorAssistCountu32event = 31How many of the places below name an assister. A client names them where it is 0 to 11, and no assister from 12 up.
inhibitorAssists12 × u32event = 31Twelve places; those past inhibitorAssistCount have no effect.
Vectors (44)

a-third-on-4-14, altar-captured-on-4-14, altar-captured-watched-on-4-14, another-on-4-14, baron-killed-on-4-14, baron-killed-watched-on-4-14, baron-stolen-on-4-14, buff-on-4-14, consumable-bought-on-4-14, critical-strike-on-4-14, crowd-control-on-4-14, damage-dealt-on-4-14, damage-taken-on-4-14, death-assist-on-4-14, died-on-4-14, dragon-killed-on-4-14, dragon-killed-watched-on-4-14, dragon-stolen-on-4-14, gold-earned-on-4-14, gold-spent-on-4-14, heal-cast-on-4-14, heal-on-4-14, inhibitor-died-on-4-14, item-bought-on-4-14, item-callout-on-4-14, item-changed-on-4-14, item-removed-on-4-14, item-sold-on-4-14, item-substituted-on-4-14, item-undone-on-4-14, killing-spree-on-4-14, minion-killed-on-4-14, monster-killed-on-4-14, one-on-4-14, removed-on-4-14, spawned-on-4-14, spider-killed-on-4-14, spider-killed-watched-on-4-14, start-notice-three-on-4-14, start-notice-two-on-4-14, turret-damaged-on-4-14, turret-died-on-4-14, undo-changed-on-4-14, welcome-on-4-14

In 4.16

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

FieldTypePresent whenWhat it is
eventu8What sort of thing happened, and so which shape follows. Each name says what the sort is sent alongside, and each note what a client shows for it; the text of a notice that carries a map is the one that map gives it. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 118 minionsSpawned, 119 welcome, 120 startNoticeTwo, 121 startNoticeThree, 125 scoreboardOpened, 127 nexusCrystalStarted, 151 dragonKilled, 152 dragonKilledWatched, 153 dragonStolen, 154 baronKilled, 155 baronKilledWatched, 156 baronStolen, 157 spiderKilled, 158 spiderKilledWatched, 159 altarCaptured, 160 altarCapturedWatched, 161 wardPlaced, 162 wardKilled.
sourceu32The unit the thing is credited to, or zero where none is.
subjectu32The unit the thing happened to, or zero where none is named.
stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
damagerecordevent = 15 or 16How much harm, and from what.
damage.physicalf32Physical damage.
damage.magicalf32Magical damage.
damage.truef32True damage.
damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
damage.scriptu32The spell or effect, by the number its name gives, shown by name.
damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
damage.parent2-byte bitsWhere the spell or effect came from.
damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
damage.parent.unusedbit 15Unused; a server writes zero.
spentu32event = 23How much gold, as shown.
valueu32event = 25 or 91 or 92 or 93 or 96 or 97 or 159 or 160What it carries is not recorded for this range; a client does not show it.
criticalf32event = 26The critical strike’s damage, as shown.
spreeu32event = 50How many kills in a row, as shown.
earnedrecordevent = 24Gold earned.
earned.goldf32How much gold, as shown.
earned.detailu32What it carries is not recorded for this range; a server writes zero.
earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
healrecordevent = 46 or 47How much health, and from what.
heal.amountf32How much health, as shown.
heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
heal.scriptu32The spell or effect, by the number its name gives, shown by name.
heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
heal.parent2-byte bitsWhere the spell or effect came from.
heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
heal.parent.unusedbit 15Unused; a server writes zero.
effectrecordevent = 48 or 49The effect, and where it came from.
effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
effect.scriptu32The spell or effect, by the number its name gives, shown by name.
effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
effect.parent2-byte bitsWhere the spell or effect came from.
effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
effect.parent.unusedbit 15Unused; a server writes zero.
buffrecordevent = 49What an effect of this sort carries.
buff.buffTypei32What sort of effect.
buff.durationf32How long it lasted, in seconds.
assistrecordevent = 69What one unit did toward a death.
assist.lastHitf32When it last dealt damage, in match seconds.
assist.physicalf32Physical damage it dealt.
assist.magicalf32Magical damage it dealt.
assist.truef32True damage it dealt.
assist.sharef32What it carries is not recorded for this range; a server writes zero.
assist.goldf32What it carries is not recorded for this range; a server writes zero.
assist.creditedu32What it carries is not recorded for this range; a server writes zero.
killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158The reward, and who shared it.
kill.goldf32The gold the kill gave.
kill.assistCountu32How many of the twelve places below name a unit.
kill.assists12 × u32The units that helped, then zeros.
monsterrecordevent = 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158Who took the monster.
monster.skinHashu32The number the name of the killer’s look gives.
monster.skini32Which look the killer wears.
monster.sideu32The side that took it.
calloutrecordevent = 95The item a player pointed out, shown as the second name followed by the first in brackets.
callout.itemu32The item, shown by name and number.
callout.quantityu32How many, shown as two digits.
callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.sideu32The side of the player who pointed it out.
substitutionrecordevent = 98An item the shop shows another in place of.
substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
substitution.originalu32The item replaced.
substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
undorecordevent = 94A purchase taken back.
undo.itemu32What it carries is not recorded for this range; a client does not show it.
undo.parts7 × u32What they carry is not recorded for this range; a client does not show them.
undo.refundf32The gold given back. A client takes it off the gold the unit is counted as having spent.
mapu32event = 119 or 120 or 121 or 122 or 123Which map it happened on. It travels only with the sorts that carry it.
inhibitorGoldf32event = 31Gold awarded for the inhibitor. It has no effect on a client.
inhibitorAssistCountu32event = 31How many of the places below name an assister. A client names them where it is 0 to 11, and no assister from 12 up.
inhibitorAssists12 × u32event = 31Twelve places; those past inhibitorAssistCount have no effect.
Vectors (44)

a-third-on-4-16, altar-captured-on-4-16, altar-captured-watched-on-4-16, another-on-4-16, baron-killed-on-4-16, baron-killed-watched-on-4-16, baron-stolen-on-4-16, buff-on-4-16, consumable-bought-on-4-16, critical-strike-on-4-16, crowd-control-on-4-16, damage-dealt-on-4-16, damage-taken-on-4-16, death-assist-on-4-16, died-on-4-16, dragon-killed-on-4-16, dragon-killed-watched-on-4-16, dragon-stolen-on-4-16, gold-earned-on-4-16, gold-spent-on-4-16, heal-cast-on-4-16, heal-on-4-16, inhibitor-died-on-4-16, item-bought-on-4-16, item-callout-on-4-16, item-changed-on-4-16, item-removed-on-4-16, item-sold-on-4-16, item-substituted-on-4-16, item-undone-on-4-16, killing-spree-on-4-16, minion-killed-on-4-16, monster-killed-on-4-16, one-on-4-16, removed-on-4-16, spawned-on-4-16, spider-killed-on-4-16, spider-killed-watched-on-4-16, start-notice-three-on-4-16, start-notice-two-on-4-16, turret-damaged-on-4-16, turret-died-on-4-16, undo-changed-on-4-16, welcome-on-4-16

In 4.17–4.19

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

FieldTypePresent whenWhat it is
eventu8What sort of thing happened, and so which shape follows. Each name says what the sort is sent alongside, and each note what a client shows for it; the text of a notice that carries a map is the one that map gives it. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 118 minionsSpawned, 119 welcome, 120 startNoticeTwo, 121 startNoticeThree, 125 scoreboardOpened, 127 nexusCrystalStarted, 151 dragonKilled, 152 dragonKilledWatched, 153 dragonStolen, 154 baronKilled, 155 baronKilledWatched, 156 baronStolen, 157 spiderKilled, 158 spiderKilledWatched, 159 altarCaptured, 160 altarCapturedWatched, 161 wardPlaced, 162 wardKilled.
sourceu32The unit the thing is credited to, or zero where none is.
subjectu32The unit the thing happened to, or zero where none is named.
stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
damagerecordevent = 15 or 16How much harm, and from what.
damage.scriptu32The spell, item or effect, by the number its name gives, shown by name.
damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
damage.sourceObjectu32The unit it came from, or zero.
damage.physicalf32Physical damage.
damage.magicalf32Magical damage.
damage.truef32True damage.
damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
damage.parentCasteru32The unit that cast that spell or effect, or zero.
damage.parent2-byte bitsWhere the spell or effect came from.
damage.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
damage.parent.sidebit 4 to 7The side of the parent’s caster.
damage.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
damage.parent.unusedbit 15Unused; a server writes zero.
spentu32event = 23How much gold, as shown.
valueu32event = 25 or 91 or 92 or 93 or 96 or 97 or 159 or 160What it carries is not recorded for this range; a client does not show it.
criticalf32event = 26The critical strike’s damage, as shown.
spreeu32event = 50How many kills in a row, as shown.
earnedrecordevent = 24Gold earned.
earned.goldf32How much gold, as shown.
earned.detailu32What it carries is not recorded for this range; a server writes zero.
earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
healrecordevent = 46 or 47How much health, and from what.
heal.scriptu32The spell, item or effect, by the number its name gives, shown by name.
heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
heal.sourceObjectu32The unit it came from, or zero.
heal.amountf32How much health, as shown.
heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
heal.parentCasteru32The unit that cast that spell or effect, or zero.
heal.parent2-byte bitsWhere the spell or effect came from.
heal.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
heal.parent.sidebit 4 to 7The side of the parent’s caster.
heal.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
heal.parent.unusedbit 15Unused; a server writes zero.
effectrecordevent = 48 or 49The effect, and where it came from.
effect.scriptu32The spell, item or effect, by the number its name gives, shown by name.
effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
effect.sourceObjectu32The unit it came from, or zero.
effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
effect.parentCasteru32The unit that cast that spell or effect, or zero.
effect.parent2-byte bitsWhere the spell or effect came from.
effect.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
effect.parent.sidebit 4 to 7The side of the parent’s caster.
effect.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
effect.parent.unusedbit 15Unused; a server writes zero.
buffrecordevent = 49What an effect of this sort carries.
buff.buffTypei32What sort of effect.
buff.durationf32How long it lasted, in seconds.
assistrecordevent = 69What one unit did toward a death.
assist.lastHitf32When it last dealt damage, in match seconds.
assist.physicalf32Physical damage it dealt.
assist.magicalf32Magical damage it dealt.
assist.truef32True damage it dealt.
assist.sharef32What it carries is not recorded for this range; a server writes zero.
assist.goldf32What it carries is not recorded for this range; a server writes zero.
assist.creditedu32What it carries is not recorded for this range; a server writes zero.
killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158The reward, and who shared it.
kill.goldf32The gold the kill gave.
kill.assistCountu32How many of the twelve places below name a unit.
kill.assists12 × u32The units that helped, then zeros.
monsterrecordevent = 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158Who took the monster.
monster.skinHashu32The number the name of the killer’s look gives.
monster.skini32Which look the killer wears.
monster.sideu32The side that took it.
calloutrecordevent = 95The item a player pointed out, shown as the second name followed by the first in brackets.
callout.itemu32The item, shown by name and number.
callout.quantityu32How many, shown as two digits.
callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.sideu32The side of the player who pointed it out.
substitutionrecordevent = 98An item the shop shows another in place of.
substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
substitution.originalu32The item replaced.
substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
undorecordevent = 94A purchase taken back.
undo.itemu32What it carries is not recorded for this range; a client does not show it.
undo.parts7 × u32What they carry is not recorded for this range; a client does not show them.
undo.refundf32The gold given back. A client takes it off the gold the unit is counted as having spent.
mapu32event = 119 or 120 or 121 or 122 or 123Which map it happened on. It travels only with the sorts that carry it.
inhibitorGoldf32event = 31Gold awarded for the inhibitor. It has no effect on a client.
inhibitorAssistCountu32event = 31How many of the places below name an assister. A client names them where it is 0 to 11, and no assister from 12 up.
inhibitorAssists12 × u32event = 31Twelve places; those past inhibitorAssistCount have no effect.
Vectors (88)

a-third-on-4-17, altar-captured-on-4-17, altar-captured-watched-on-4-17, another-on-4-17, baron-killed-on-4-17, baron-killed-watched-on-4-17, baron-stolen-on-4-17, buff-on-4-17, consumable-bought-on-4-17, critical-strike-on-4-17, crowd-control-on-4-17, damage-dealt-on-4-17, damage-taken-on-4-17, death-assist-on-4-17, died-on-4-17, dragon-killed-on-4-17, dragon-killed-watched-on-4-17, dragon-stolen-on-4-17, gold-earned-on-4-17, gold-spent-on-4-17, heal-cast-on-4-17, heal-on-4-17, inhibitor-died-on-4-17, item-bought-on-4-17, item-callout-on-4-17, item-changed-on-4-17, item-removed-on-4-17, item-sold-on-4-17, item-substituted-on-4-17, item-undone-on-4-17, killing-spree-on-4-17, minion-killed-on-4-17, monster-killed-on-4-17, one-on-4-17, removed-on-4-17, spawned-on-4-17, spider-killed-on-4-17, spider-killed-watched-on-4-17, start-notice-three-on-4-17, start-notice-two-on-4-17, turret-damaged-on-4-17, turret-died-on-4-17, undo-changed-on-4-17, welcome-on-4-17, a-third-on-4-18, altar-captured-on-4-18, altar-captured-watched-on-4-18, another-on-4-18, baron-killed-on-4-18, baron-killed-watched-on-4-18, baron-stolen-on-4-18, buff-on-4-18, consumable-bought-on-4-18, critical-strike-on-4-18, crowd-control-on-4-18, damage-dealt-on-4-18, damage-taken-on-4-18, death-assist-on-4-18, died-on-4-18, dragon-killed-on-4-18, dragon-killed-watched-on-4-18, dragon-stolen-on-4-18, gold-earned-on-4-18, gold-spent-on-4-18, heal-cast-on-4-18, heal-on-4-18, inhibitor-died-on-4-18, item-bought-on-4-18, item-callout-on-4-18, item-changed-on-4-18, item-removed-on-4-18, item-sold-on-4-18, item-substituted-on-4-18, item-undone-on-4-18, killing-spree-on-4-18, minion-killed-on-4-18, monster-killed-on-4-18, one-on-4-18, removed-on-4-18, spawned-on-4-18, spider-killed-on-4-18, spider-killed-watched-on-4-18, start-notice-three-on-4-18, start-notice-two-on-4-18, turret-damaged-on-4-18, turret-died-on-4-18, undo-changed-on-4-18, welcome-on-4-18

In 4.20

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

FieldTypePresent whenWhat it is
eventu8What sort of thing happened, and so which shape follows. Each name says what the sort is sent alongside, and each note what a client shows for it; the text of a notice that carries a map is the one that map gives it. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 118 minionsSpawned, 119 welcome, 120 startNoticeTwo, 121 startNoticeThree, 125 scoreboardOpened, 127 nexusCrystalStarted, 151 dragonKilled, 152 dragonKilledWatched, 153 dragonStolen, 154 baronKilled, 155 baronKilledWatched, 156 baronStolen, 157 spiderKilled, 158 spiderKilledWatched, 159 altarCaptured, 160 altarCapturedWatched, 161 wardPlaced, 162 wardKilled.
sourceu32The unit the thing is credited to, or zero where none is.
subjectu32The unit the thing happened to, or zero where none is named.
stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
damagerecordevent = 15 or 16How much harm, and from what.
damage.byParentu8Nonzero to credit it to the parent spell and its caster rather than to the spell and its source unit; where the parent caster is unknown, a client credits the source unit.
damage.scriptu32The spell, item or effect, by the number its name gives, shown by name.
damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
damage.sourceObjectu32The unit it came from, or zero.
damage.physicalf32Physical damage.
damage.magicalf32Magical damage.
damage.truef32True damage.
damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
damage.parentCasteru32The unit that cast that spell or effect, or zero.
damage.parent2-byte bitsWhere the spell or effect came from.
damage.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
damage.parent.sidebit 4 to 7The side of the parent’s caster.
damage.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
damage.parent.unusedbit 15Unused; a server writes zero.
spentu32event = 23How much gold, as shown.
valueu32event = 25 or 91 or 92 or 93 or 96 or 97 or 159 or 160What it carries is not recorded for this range; a client does not show it.
criticalf32event = 26The critical strike’s damage, as shown.
spreeu32event = 50How many kills in a row, as shown.
earnedrecordevent = 24Gold earned.
earned.goldf32How much gold, as shown.
earned.detailu32What it carries is not recorded for this range; a server writes zero.
earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
healrecordevent = 46 or 47How much health, and from what.
heal.byParentu8Nonzero to credit it to the parent spell and its caster rather than to the spell and its source unit; where the parent caster is unknown, a client credits the source unit.
heal.scriptu32The spell, item or effect, by the number its name gives, shown by name.
heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
heal.sourceObjectu32The unit it came from, or zero.
heal.amountf32How much health, as shown.
heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
heal.parentCasteru32The unit that cast that spell or effect, or zero.
heal.parent2-byte bitsWhere the spell or effect came from.
heal.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
heal.parent.sidebit 4 to 7The side of the parent’s caster.
heal.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
heal.parent.unusedbit 15Unused; a server writes zero.
effectrecordevent = 48 or 49The effect, and where it came from.
effect.byParentu8Nonzero to credit it to the parent spell and its caster rather than to the spell and its source unit; where the parent caster is unknown, a client credits the source unit.
effect.scriptu32The spell, item or effect, by the number its name gives, shown by name.
effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
effect.sourceObjectu32The unit it came from, or zero.
effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
effect.parentCasteru32The unit that cast that spell or effect, or zero.
effect.parent2-byte bitsWhere the spell or effect came from.
effect.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
effect.parent.sidebit 4 to 7The side of the parent’s caster.
effect.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
effect.parent.unusedbit 15Unused; a server writes zero.
buffrecordevent = 49What an effect of this sort carries.
buff.buffTypei32What sort of effect.
buff.durationf32How long it lasted, in seconds.
assistrecordevent = 69What one unit did toward a death.
assist.lastHitf32When it last dealt damage, in match seconds.
assist.physicalf32Physical damage it dealt.
assist.magicalf32Magical damage it dealt.
assist.truef32True damage it dealt.
assist.sharef32What it carries is not recorded for this range; a server writes zero.
assist.goldf32What it carries is not recorded for this range; a server writes zero.
assist.creditedu32What it carries is not recorded for this range; a server writes zero.
killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158The reward, and who shared it.
kill.goldf32The gold the kill gave.
kill.assistCountu32How many of the twelve places below name a unit.
kill.assists12 × u32The units that helped, then zeros.
monsterrecordevent = 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158Who took the monster.
monster.skinHashu32The number the name of the killer’s look gives.
monster.skini32Which look the killer wears.
monster.sideu32The side that took it.
calloutrecordevent = 95The item a player pointed out, shown as the second name followed by the first in brackets.
callout.itemu32The item, shown by name and number.
callout.quantityu32How many, shown as two digits.
callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.sideu32The side of the player who pointed it out.
substitutionrecordevent = 98An item the shop shows another in place of.
substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
substitution.originalu32The item replaced.
substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
undorecordevent = 94A purchase taken back.
undo.itemu32What it carries is not recorded for this range; a client does not show it.
undo.parts7 × u32What they carry is not recorded for this range; a client does not show them.
undo.refundf32The gold given back. A client takes it off the gold the unit is counted as having spent.
mapu32event = 119 or 120 or 121 or 122 or 123Which map it happened on. It travels only with the sorts that carry it.
inhibitorGoldf32event = 31Gold awarded for the inhibitor. It has no effect on a client.
inhibitorAssistCountu32event = 31How many of the places below name an assister. A client names them where it is 0 to 11, and no assister from 12 up.
inhibitorAssists12 × u32event = 31Twelve places; those past inhibitorAssistCount have no effect.
Vectors (44)

a-third-on-4-20, altar-captured-on-4-20, altar-captured-watched-on-4-20, another-on-4-20, baron-killed-on-4-20, baron-killed-watched-on-4-20, baron-stolen-on-4-20, buff-on-4-20, consumable-bought-on-4-20, critical-strike-on-4-20, crowd-control-on-4-20, damage-dealt-on-4-20, damage-taken-on-4-20, death-assist-on-4-20, died-on-4-20, dragon-killed-on-4-20, dragon-killed-watched-on-4-20, dragon-stolen-on-4-20, gold-earned-on-4-20, gold-spent-on-4-20, heal-cast-on-4-20, heal-on-4-20, inhibitor-died-on-4-20, item-bought-on-4-20, item-callout-on-4-20, item-changed-on-4-20, item-removed-on-4-20, item-sold-on-4-20, item-substituted-on-4-20, item-undone-on-4-20, killing-spree-on-4-20, minion-killed-on-4-20, monster-killed-on-4-20, one-on-4-20, removed-on-4-20, spawned-on-4-20, spider-killed-on-4-20, spider-killed-watched-on-4-20, start-notice-three-on-4-20, start-notice-two-on-4-20, turret-damaged-on-4-20, turret-died-on-4-20, undo-changed-on-4-20, welcome-on-4-20

ClientEvent

What a server sends to tell a client something happened. The sort is named first and settles what follows; unlike WorldEvent it carries no source apart from what the sort itself carries. The header names the unit the event is about.

Definition.

In 4.1–4.5

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

FieldTypePresent whenWhat it is
eventu8What happened, and so which shape follows. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 10 tripleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 29 inhibitorKilled, 30 inhibitorDied, 31 inhibitorRespawningSoon, 34 turretKilled, 35 turretDied, 36 turretDamaged, 37 minionKilled, 38 minionDenied, 39 monsterKilled, 40 largeMonsterKilled, 41 redBuffTaken, 42 blueBuffTaken, 43 nexusKilled, 44 nexusDied, 45 heal, 46 healCast, 47 buff, 48 crowdControl, 49 killingSpree, 56 killDuringSpree, 63 doubleKillDuringSpree, 64 tripleKillDuringSpree, 65 quadraKillDuringSpree, 68 deathAssist, 69 playerQuit, 70 playerLeft, 71 playerReconnected, 86 itemBought, 87 itemSold, 88 itemRemoved, 89 itemCallout, 90 itemChanged, 91 undoChanged, 92 itemSubstituted, 111 minionsSpawned, 112 welcome, 113 startNoticeTwo, 114 startNoticeThree, 118 scoreboardOpened, 143 dragonKilled, 144 dragonKilledWatched, 145 dragonStolen, 146 baronKilled, 147 baronKilledWatched, 148 baronStolen, 149 spiderKilled, 150 spiderKilledWatched, 151 altarCaptured, 152 altarCapturedWatched, 153 wardPlaced, 154 wardKilled.
subjectu32The unit the event is about.
stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
damagerecordevent = 15 or 16How much harm, and from what.
damage.physicalf32Physical damage.
damage.magicalf32Magical damage.
damage.truef32True damage.
damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
damage.scriptu32The spell or effect, by the number its name gives, shown by name.
damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
damage.parent2-byte bitsWhere the spell or effect came from.
damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
damage.parent.unusedbit 15Unused; a server writes zero.
spentu32event = 23How much gold, as shown.
valueu32event = 25 or 86 or 87 or 88 or 90 or 91 or 151 or 152What it carries is not recorded for this range; a client does not show it.
criticalf32event = 26The critical strike’s damage, as shown.
spreeu32event = 49How many kills in a row, as shown.
earnedrecordevent = 24Gold earned.
earned.goldf32How much gold, as shown.
earned.detailu32What it carries is not recorded for this range; a server writes zero.
earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
healrecordevent = 45 or 46How much health, and from what.
heal.amountf32How much health, as shown.
heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
heal.scriptu32The spell or effect, by the number its name gives, shown by name.
heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
heal.parent2-byte bitsWhere the spell or effect came from.
heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
heal.parent.unusedbit 15Unused; a server writes zero.
effectrecordevent = 47 or 48The effect, and where it came from.
effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
effect.scriptu32The spell or effect, by the number its name gives, shown by name.
effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
effect.parent2-byte bitsWhere the spell or effect came from.
effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
effect.parent.unusedbit 15Unused; a server writes zero.
buffrecordevent = 48What an effect of this sort carries.
buff.buffTypei32What sort of effect.
buff.durationf32How long it lasted, in seconds.
assistrecordevent = 68What one unit did toward a death.
assist.lastHitf32When it last dealt damage, in match seconds.
assist.physicalf32Physical damage it dealt.
assist.magicalf32Magical damage it dealt.
assist.truef32True damage it dealt.
assist.sharef32What it carries is not recorded for this range; a server writes zero.
assist.goldf32What it carries is not recorded for this range; a server writes zero.
assist.creditedu32What it carries is not recorded for this range; a server writes zero.
killrecordevent = 1 or 2 or 35 or 36 or 37 or 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150The reward, and who shared it.
kill.goldf32The gold the kill gave.
kill.assistCountu32How many of the twelve places below name a unit.
kill.assists12 × u32The units that helped, then zeros.
monsterrecordevent = 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150Who took the monster.
monster.skinHashu32The number the name of the killer’s look gives.
monster.skini32Which look the killer wears.
monster.sideu32The side that took it.
calloutrecordevent = 89The item a player pointed out, shown as the second name followed by the first in brackets.
callout.itemu32The item, shown by name and number.
callout.quantityu32How many, shown as two digits.
callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.sideu32The side of the player who pointed it out.
substitutionrecordevent = 92An item the shop shows another in place of.
substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
substitution.originalu32The item replaced.
substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
Vectors (37)

altar-captured-on-4-1, altar-captured-watched-on-4-1, baron-killed-on-4-1, baron-killed-watched-on-4-1, baron-stolen-on-4-1, buff-on-4-1, consumable-bought-on-4-1, critical-strike-on-4-1, crowd-control-on-4-1, damage-dealt-on-4-1, damage-taken-on-4-1, death-assist-on-4-1, died-on-4-1, dragon-killed-on-4-1, dragon-killed-watched-on-4-1, dragon-stolen-on-4-1, gold-earned-on-4-1, gold-spent-on-4-1, heal-cast-on-4-1, heal-on-4-1, item-bought-on-4-1, item-callout-on-4-1, item-changed-on-4-1, item-removed-on-4-1, item-sold-on-4-1, item-substituted-on-4-1, killing-spree-on-4-1, minion-killed-on-4-1, monster-killed-on-4-1, one-on-4-1, removed-on-4-1, spawned-on-4-1, spider-killed-on-4-1, spider-killed-watched-on-4-1, turret-damaged-on-4-1, turret-died-on-4-1, undo-changed-on-4-1

In 4.6–4.11

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

BuildsCommand
4.6–4.10162
4.11163
FieldTypePresent whenWhat it is
eventu8What happened, and so which shape follows. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 10 tripleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemCallout, 91 itemChanged, 92 undoChanged, 93 itemSubstituted, 112 minionsSpawned, 113 welcome, 114 startNoticeTwo, 115 startNoticeThree, 119 scoreboardOpened, 144 dragonKilled, 145 dragonKilledWatched, 146 dragonStolen, 147 baronKilled, 148 baronKilledWatched, 149 baronStolen, 150 spiderKilled, 151 spiderKilledWatched, 152 altarCaptured, 153 altarCapturedWatched, 154 wardPlaced, 155 wardKilled.
subjectu32The unit the event is about.
stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
damagerecordevent = 15 or 16How much harm, and from what.
damage.physicalf32Physical damage.
damage.magicalf32Magical damage.
damage.truef32True damage.
damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
damage.scriptu32The spell or effect, by the number its name gives, shown by name.
damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
damage.parent2-byte bitsWhere the spell or effect came from.
damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
damage.parent.unusedbit 15Unused; a server writes zero.
spentu32event = 23How much gold, as shown.
valueu32event = 25 or 87 or 88 or 89 or 91 or 92 or 152 or 153What it carries is not recorded for this range; a client does not show it.
criticalf32event = 26The critical strike’s damage, as shown.
spreeu32event = 50How many kills in a row, as shown.
earnedrecordevent = 24Gold earned.
earned.goldf32How much gold, as shown.
earned.detailu32What it carries is not recorded for this range; a server writes zero.
earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
healrecordevent = 46 or 47How much health, and from what.
heal.amountf32How much health, as shown.
heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
heal.scriptu32The spell or effect, by the number its name gives, shown by name.
heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
heal.parent2-byte bitsWhere the spell or effect came from.
heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
heal.parent.unusedbit 15Unused; a server writes zero.
effectrecordevent = 48 or 49The effect, and where it came from.
effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
effect.scriptu32The spell or effect, by the number its name gives, shown by name.
effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
effect.parent2-byte bitsWhere the spell or effect came from.
effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
effect.parent.unusedbit 15Unused; a server writes zero.
buffrecordevent = 49What an effect of this sort carries.
buff.buffTypei32What sort of effect.
buff.durationf32How long it lasted, in seconds.
assistrecordevent = 69What one unit did toward a death.
assist.lastHitf32When it last dealt damage, in match seconds.
assist.physicalf32Physical damage it dealt.
assist.magicalf32Magical damage it dealt.
assist.truef32True damage it dealt.
assist.sharef32What it carries is not recorded for this range; a server writes zero.
assist.goldf32What it carries is not recorded for this range; a server writes zero.
assist.creditedu32What it carries is not recorded for this range; a server writes zero.
killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151The reward, and who shared it.
kill.goldf32The gold the kill gave.
kill.assistCountu32How many of the twelve places below name a unit.
kill.assists12 × u32The units that helped, then zeros.
monsterrecordevent = 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151Who took the monster.
monster.skinHashu32The number the name of the killer’s look gives.
monster.skini32Which look the killer wears.
monster.sideu32The side that took it.
calloutrecordevent = 90The item a player pointed out, shown as the second name followed by the first in brackets.
callout.itemu32The item, shown by name and number.
callout.quantityu32How many, shown as two digits.
callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.sideu32The side of the player who pointed it out.
substitutionrecordevent = 93An item the shop shows another in place of.
substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
substitution.originalu32The item replaced.
substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
Vectors (74)

altar-captured-on-4-6, altar-captured-watched-on-4-6, baron-killed-on-4-6, baron-killed-watched-on-4-6, baron-stolen-on-4-6, buff-on-4-6, consumable-bought-on-4-6, critical-strike-on-4-6, crowd-control-on-4-6, damage-dealt-on-4-6, damage-taken-on-4-6, death-assist-on-4-6, died-on-4-6, dragon-killed-on-4-6, dragon-killed-watched-on-4-6, dragon-stolen-on-4-6, gold-earned-on-4-6, gold-spent-on-4-6, heal-cast-on-4-6, heal-on-4-6, item-bought-on-4-6, item-callout-on-4-6, item-changed-on-4-6, item-removed-on-4-6, item-sold-on-4-6, item-substituted-on-4-6, killing-spree-on-4-6, minion-killed-on-4-6, monster-killed-on-4-6, one-on-4-6, removed-on-4-6, spawned-on-4-6, spider-killed-on-4-6, spider-killed-watched-on-4-6, turret-damaged-on-4-6, turret-died-on-4-6, undo-changed-on-4-6, altar-captured-on-4-11, altar-captured-watched-on-4-11, baron-killed-on-4-11, baron-killed-watched-on-4-11, baron-stolen-on-4-11, buff-on-4-11, consumable-bought-on-4-11, critical-strike-on-4-11, crowd-control-on-4-11, damage-dealt-on-4-11, damage-taken-on-4-11, death-assist-on-4-11, died-on-4-11, dragon-killed-on-4-11, dragon-killed-watched-on-4-11, dragon-stolen-on-4-11, gold-earned-on-4-11, gold-spent-on-4-11, heal-cast-on-4-11, heal-on-4-11, item-bought-on-4-11, item-callout-on-4-11, item-changed-on-4-11, item-removed-on-4-11, item-sold-on-4-11, item-substituted-on-4-11, killing-spree-on-4-11, minion-killed-on-4-11, monster-killed-on-4-11, one-on-4-11, removed-on-4-11, spawned-on-4-11, spider-killed-on-4-11, spider-killed-watched-on-4-11, turret-damaged-on-4-11, turret-died-on-4-11, undo-changed-on-4-11

In 4.12

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

FieldTypePresent whenWhat it is
eventu8What happened, and so which shape follows. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 10 tripleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemCallout, 91 itemChanged, 92 undoChanged, 93 itemSubstituted, 112 minionsSpawned, 113 welcome, 114 startNoticeTwo, 115 startNoticeThree, 119 scoreboardOpened, 145 dragonKilled, 146 dragonKilledWatched, 147 dragonStolen, 148 baronKilled, 149 baronKilledWatched, 150 baronStolen, 151 spiderKilled, 152 spiderKilledWatched, 153 altarCaptured, 154 altarCapturedWatched, 155 wardPlaced, 156 wardKilled.
subjectu32The unit the event is about.
stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
damagerecordevent = 15 or 16How much harm, and from what.
damage.physicalf32Physical damage.
damage.magicalf32Magical damage.
damage.truef32True damage.
damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
damage.scriptu32The spell or effect, by the number its name gives, shown by name.
damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
damage.parent2-byte bitsWhere the spell or effect came from.
damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
damage.parent.unusedbit 15Unused; a server writes zero.
spentu32event = 23How much gold, as shown.
valueu32event = 25 or 87 or 88 or 89 or 91 or 92 or 153 or 154What it carries is not recorded for this range; a client does not show it.
criticalf32event = 26The critical strike’s damage, as shown.
spreeu32event = 50How many kills in a row, as shown.
earnedrecordevent = 24Gold earned.
earned.goldf32How much gold, as shown.
earned.detailu32What it carries is not recorded for this range; a server writes zero.
earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
healrecordevent = 46 or 47How much health, and from what.
heal.amountf32How much health, as shown.
heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
heal.scriptu32The spell or effect, by the number its name gives, shown by name.
heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
heal.parent2-byte bitsWhere the spell or effect came from.
heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
heal.parent.unusedbit 15Unused; a server writes zero.
effectrecordevent = 48 or 49The effect, and where it came from.
effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
effect.scriptu32The spell or effect, by the number its name gives, shown by name.
effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
effect.parent2-byte bitsWhere the spell or effect came from.
effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
effect.parent.unusedbit 15Unused; a server writes zero.
buffrecordevent = 49What an effect of this sort carries.
buff.buffTypei32What sort of effect.
buff.durationf32How long it lasted, in seconds.
assistrecordevent = 69What one unit did toward a death.
assist.lastHitf32When it last dealt damage, in match seconds.
assist.physicalf32Physical damage it dealt.
assist.magicalf32Magical damage it dealt.
assist.truef32True damage it dealt.
assist.sharef32What it carries is not recorded for this range; a server writes zero.
assist.goldf32What it carries is not recorded for this range; a server writes zero.
assist.creditedu32What it carries is not recorded for this range; a server writes zero.
killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152The reward, and who shared it.
kill.goldf32The gold the kill gave.
kill.assistCountu32How many of the twelve places below name a unit.
kill.assists12 × u32The units that helped, then zeros.
monsterrecordevent = 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152Who took the monster.
monster.skinHashu32The number the name of the killer’s look gives.
monster.skini32Which look the killer wears.
monster.sideu32The side that took it.
calloutrecordevent = 90The item a player pointed out, shown as the second name followed by the first in brackets.
callout.itemu32The item, shown by name and number.
callout.quantityu32How many, shown as two digits.
callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.sideu32The side of the player who pointed it out.
substitutionrecordevent = 93An item the shop shows another in place of.
substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
substitution.originalu32The item replaced.
substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
Vectors (37)

altar-captured-on-4-12, altar-captured-watched-on-4-12, baron-killed-on-4-12, baron-killed-watched-on-4-12, baron-stolen-on-4-12, buff-on-4-12, consumable-bought-on-4-12, critical-strike-on-4-12, crowd-control-on-4-12, damage-dealt-on-4-12, damage-taken-on-4-12, death-assist-on-4-12, died-on-4-12, dragon-killed-on-4-12, dragon-killed-watched-on-4-12, dragon-stolen-on-4-12, gold-earned-on-4-12, gold-spent-on-4-12, heal-cast-on-4-12, heal-on-4-12, item-bought-on-4-12, item-callout-on-4-12, item-changed-on-4-12, item-removed-on-4-12, item-sold-on-4-12, item-substituted-on-4-12, killing-spree-on-4-12, minion-killed-on-4-12, monster-killed-on-4-12, one-on-4-12, removed-on-4-12, spawned-on-4-12, spider-killed-on-4-12, spider-killed-watched-on-4-12, turret-damaged-on-4-12, turret-died-on-4-12, undo-changed-on-4-12

In 4.13

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

FieldTypePresent whenWhat it is
eventu8What happened, and so which shape follows. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 10 tripleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemUndone, 91 itemCallout, 92 itemChanged, 93 undoChanged, 94 itemSubstituted, 113 minionsSpawned, 114 welcome, 115 startNoticeTwo, 116 startNoticeThree, 120 scoreboardOpened, 146 dragonKilled, 147 dragonKilledWatched, 148 dragonStolen, 149 baronKilled, 150 baronKilledWatched, 151 baronStolen, 152 spiderKilled, 153 spiderKilledWatched, 154 altarCaptured, 155 altarCapturedWatched, 156 wardPlaced, 157 wardKilled.
subjectu32The unit the event is about.
stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
damagerecordevent = 15 or 16How much harm, and from what.
damage.physicalf32Physical damage.
damage.magicalf32Magical damage.
damage.truef32True damage.
damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
damage.scriptu32The spell or effect, by the number its name gives, shown by name.
damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
damage.parent2-byte bitsWhere the spell or effect came from.
damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
damage.parent.unusedbit 15Unused; a server writes zero.
spentu32event = 23How much gold, as shown.
valueu32event = 25 or 87 or 88 or 89 or 92 or 93 or 154 or 155What it carries is not recorded for this range; a client does not show it.
criticalf32event = 26The critical strike’s damage, as shown.
spreeu32event = 50How many kills in a row, as shown.
earnedrecordevent = 24Gold earned.
earned.goldf32How much gold, as shown.
earned.detailu32What it carries is not recorded for this range; a server writes zero.
earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
healrecordevent = 46 or 47How much health, and from what.
heal.amountf32How much health, as shown.
heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
heal.scriptu32The spell or effect, by the number its name gives, shown by name.
heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
heal.parent2-byte bitsWhere the spell or effect came from.
heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
heal.parent.unusedbit 15Unused; a server writes zero.
effectrecordevent = 48 or 49The effect, and where it came from.
effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
effect.scriptu32The spell or effect, by the number its name gives, shown by name.
effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
effect.parent2-byte bitsWhere the spell or effect came from.
effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
effect.parent.unusedbit 15Unused; a server writes zero.
buffrecordevent = 49What an effect of this sort carries.
buff.buffTypei32What sort of effect.
buff.durationf32How long it lasted, in seconds.
assistrecordevent = 69What one unit did toward a death.
assist.lastHitf32When it last dealt damage, in match seconds.
assist.physicalf32Physical damage it dealt.
assist.magicalf32Magical damage it dealt.
assist.truef32True damage it dealt.
assist.sharef32What it carries is not recorded for this range; a server writes zero.
assist.goldf32What it carries is not recorded for this range; a server writes zero.
assist.creditedu32What it carries is not recorded for this range; a server writes zero.
killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153The reward, and who shared it.
kill.goldf32The gold the kill gave.
kill.assistCountu32How many of the twelve places below name a unit.
kill.assists12 × u32The units that helped, then zeros.
monsterrecordevent = 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153Who took the monster.
monster.skinHashu32The number the name of the killer’s look gives.
monster.skini32Which look the killer wears.
monster.sideu32The side that took it.
calloutrecordevent = 91The item a player pointed out, shown as the second name followed by the first in brackets.
callout.itemu32The item, shown by name and number.
callout.quantityu32How many, shown as two digits.
callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.sideu32The side of the player who pointed it out.
substitutionrecordevent = 94An item the shop shows another in place of.
substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
substitution.originalu32The item replaced.
substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
undorecordevent = 90A purchase taken back.
undo.itemu32What it carries is not recorded for this range; a client does not show it.
undo.partu32What it carries is not recorded for this range; a client does not show it.
undo.refundf32The gold given back. A client takes it off the gold the unit is counted as having spent.
Vectors (38)

altar-captured-on-4-13, altar-captured-watched-on-4-13, baron-killed-on-4-13, baron-killed-watched-on-4-13, baron-stolen-on-4-13, buff-on-4-13, consumable-bought-on-4-13, critical-strike-on-4-13, crowd-control-on-4-13, damage-dealt-on-4-13, damage-taken-on-4-13, death-assist-on-4-13, died-on-4-13, dragon-killed-on-4-13, dragon-killed-watched-on-4-13, dragon-stolen-on-4-13, gold-earned-on-4-13, gold-spent-on-4-13, heal-cast-on-4-13, heal-on-4-13, item-bought-on-4-13, item-callout-on-4-13, item-changed-on-4-13, item-removed-on-4-13, item-sold-on-4-13, item-substituted-on-4-13, item-undone-on-4-13, killing-spree-on-4-13, minion-killed-on-4-13, monster-killed-on-4-13, one-on-4-13, removed-on-4-13, spawned-on-4-13, spider-killed-on-4-13, spider-killed-watched-on-4-13, turret-damaged-on-4-13, turret-died-on-4-13, undo-changed-on-4-13

In 4.14–4.15

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

FieldTypePresent whenWhat it is
eventu8What happened, and so which shape follows. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 10 tripleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 117 minionsSpawned, 118 welcome, 119 startNoticeTwo, 120 startNoticeThree, 124 scoreboardOpened, 150 dragonKilled, 151 dragonKilledWatched, 152 dragonStolen, 153 baronKilled, 154 baronKilledWatched, 155 baronStolen, 156 spiderKilled, 157 spiderKilledWatched, 158 altarCaptured, 159 altarCapturedWatched, 160 wardPlaced, 161 wardKilled.
subjectu32The unit the event is about.
stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
damagerecordevent = 15 or 16How much harm, and from what.
damage.physicalf32Physical damage.
damage.magicalf32Magical damage.
damage.truef32True damage.
damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
damage.scriptu32The spell or effect, by the number its name gives, shown by name.
damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
damage.parent2-byte bitsWhere the spell or effect came from.
damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
damage.parent.unusedbit 15Unused; a server writes zero.
spentu32event = 23How much gold, as shown.
valueu32event = 25 or 91 or 92 or 93 or 96 or 97 or 158 or 159What it carries is not recorded for this range; a client does not show it.
criticalf32event = 26The critical strike’s damage, as shown.
spreeu32event = 50How many kills in a row, as shown.
earnedrecordevent = 24Gold earned.
earned.goldf32How much gold, as shown.
earned.detailu32What it carries is not recorded for this range; a server writes zero.
earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
healrecordevent = 46 or 47How much health, and from what.
heal.amountf32How much health, as shown.
heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
heal.scriptu32The spell or effect, by the number its name gives, shown by name.
heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
heal.parent2-byte bitsWhere the spell or effect came from.
heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
heal.parent.unusedbit 15Unused; a server writes zero.
effectrecordevent = 48 or 49The effect, and where it came from.
effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
effect.scriptu32The spell or effect, by the number its name gives, shown by name.
effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
effect.parent2-byte bitsWhere the spell or effect came from.
effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
effect.parent.unusedbit 15Unused; a server writes zero.
buffrecordevent = 49What an effect of this sort carries.
buff.buffTypei32What sort of effect.
buff.durationf32How long it lasted, in seconds.
assistrecordevent = 69What one unit did toward a death.
assist.lastHitf32When it last dealt damage, in match seconds.
assist.physicalf32Physical damage it dealt.
assist.magicalf32Magical damage it dealt.
assist.truef32True damage it dealt.
assist.sharef32What it carries is not recorded for this range; a server writes zero.
assist.goldf32What it carries is not recorded for this range; a server writes zero.
assist.creditedu32What it carries is not recorded for this range; a server writes zero.
killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157The reward, and who shared it.
kill.goldf32The gold the kill gave.
kill.assistCountu32How many of the twelve places below name a unit.
kill.assists12 × u32The units that helped, then zeros.
monsterrecordevent = 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157Who took the monster.
monster.skinHashu32The number the name of the killer’s look gives.
monster.skini32Which look the killer wears.
monster.sideu32The side that took it.
calloutrecordevent = 95The item a player pointed out, shown as the second name followed by the first in brackets.
callout.itemu32The item, shown by name and number.
callout.quantityu32How many, shown as two digits.
callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.sideu32The side of the player who pointed it out.
substitutionrecordevent = 98An item the shop shows another in place of.
substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
substitution.originalu32The item replaced.
substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
undorecordevent = 94A purchase taken back.
undo.itemu32What it carries is not recorded for this range; a client does not show it.
undo.partu32What it carries is not recorded for this range; a client does not show it.
undo.refundf32The gold given back. A client takes it off the gold the unit is counted as having spent.
Vectors (38)

altar-captured-on-4-14, altar-captured-watched-on-4-14, baron-killed-on-4-14, baron-killed-watched-on-4-14, baron-stolen-on-4-14, buff-on-4-14, consumable-bought-on-4-14, critical-strike-on-4-14, crowd-control-on-4-14, damage-dealt-on-4-14, damage-taken-on-4-14, death-assist-on-4-14, died-on-4-14, dragon-killed-on-4-14, dragon-killed-watched-on-4-14, dragon-stolen-on-4-14, gold-earned-on-4-14, gold-spent-on-4-14, heal-cast-on-4-14, heal-on-4-14, item-bought-on-4-14, item-callout-on-4-14, item-changed-on-4-14, item-removed-on-4-14, item-sold-on-4-14, item-substituted-on-4-14, item-undone-on-4-14, killing-spree-on-4-14, minion-killed-on-4-14, monster-killed-on-4-14, one-on-4-14, removed-on-4-14, spawned-on-4-14, spider-killed-on-4-14, spider-killed-watched-on-4-14, turret-damaged-on-4-14, turret-died-on-4-14, undo-changed-on-4-14

In 4.16

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

FieldTypePresent whenWhat it is
eventu8What happened, and so which shape follows. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 10 tripleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 118 minionsSpawned, 119 welcome, 120 startNoticeTwo, 121 startNoticeThree, 125 scoreboardOpened, 151 dragonKilled, 152 dragonKilledWatched, 153 dragonStolen, 154 baronKilled, 155 baronKilledWatched, 156 baronStolen, 157 spiderKilled, 158 spiderKilledWatched, 159 altarCaptured, 160 altarCapturedWatched, 161 wardPlaced, 162 wardKilled.
subjectu32The unit the event is about.
stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
damagerecordevent = 15 or 16How much harm, and from what.
damage.physicalf32Physical damage.
damage.magicalf32Magical damage.
damage.truef32True damage.
damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
damage.scriptu32The spell or effect, by the number its name gives, shown by name.
damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
damage.parentCasteru32What it carries is not recorded for this range; a server writes zero.
damage.parent2-byte bitsWhere the spell or effect came from.
damage.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
damage.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
damage.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
damage.parent.unusedbit 15Unused; a server writes zero.
spentu32event = 23How much gold, as shown.
valueu32event = 25 or 91 or 92 or 93 or 96 or 97 or 159 or 160What it carries is not recorded for this range; a client does not show it.
criticalf32event = 26The critical strike’s damage, as shown.
spreeu32event = 50How many kills in a row, as shown.
earnedrecordevent = 24Gold earned.
earned.goldf32How much gold, as shown.
earned.detailu32What it carries is not recorded for this range; a server writes zero.
earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
healrecordevent = 46 or 47How much health, and from what.
heal.amountf32How much health, as shown.
heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
heal.scriptu32The spell or effect, by the number its name gives, shown by name.
heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
heal.parentCasteru32What it carries is not recorded for this range; a server writes zero.
heal.parent2-byte bitsWhere the spell or effect came from.
heal.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
heal.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
heal.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
heal.parent.unusedbit 15Unused; a server writes zero.
effectrecordevent = 48 or 49The effect, and where it came from.
effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat.
effect.scriptu32The spell or effect, by the number its name gives, shown by name.
effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
effect.parentCasteru32What it carries is not recorded for this range; a server writes zero.
effect.parent2-byte bitsWhere the spell or effect came from.
effect.parent.sourcebit 0 to 3What sort of source the parent spell or effect is, numbered as sourceKind is.
effect.parent.sidebit 4 to 7What it means is not recorded for this range; a server writes zero.
effect.parent.categorybit 8 to 11A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.
effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
effect.parent.unusedbit 15Unused; a server writes zero.
buffrecordevent = 49What an effect of this sort carries.
buff.buffTypei32What sort of effect.
buff.durationf32How long it lasted, in seconds.
assistrecordevent = 69What one unit did toward a death.
assist.lastHitf32When it last dealt damage, in match seconds.
assist.physicalf32Physical damage it dealt.
assist.magicalf32Magical damage it dealt.
assist.truef32True damage it dealt.
assist.sharef32What it carries is not recorded for this range; a server writes zero.
assist.goldf32What it carries is not recorded for this range; a server writes zero.
assist.creditedu32What it carries is not recorded for this range; a server writes zero.
killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158The reward, and who shared it.
kill.goldf32The gold the kill gave.
kill.assistCountu32How many of the twelve places below name a unit.
kill.assists12 × u32The units that helped, then zeros.
monsterrecordevent = 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158Who took the monster.
monster.skinHashu32The number the name of the killer’s look gives.
monster.skini32Which look the killer wears.
monster.sideu32The side that took it.
calloutrecordevent = 95The item a player pointed out, shown as the second name followed by the first in brackets.
callout.itemu32The item, shown by name and number.
callout.quantityu32How many, shown as two digits.
callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.sideu32The side of the player who pointed it out.
substitutionrecordevent = 98An item the shop shows another in place of.
substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
substitution.originalu32The item replaced.
substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
undorecordevent = 94A purchase taken back.
undo.itemu32What it carries is not recorded for this range; a client does not show it.
undo.parts7 × u32What they carry is not recorded for this range; a client does not show them.
undo.refundf32The gold given back. A client takes it off the gold the unit is counted as having spent.
Vectors (38)

altar-captured-on-4-16, altar-captured-watched-on-4-16, baron-killed-on-4-16, baron-killed-watched-on-4-16, baron-stolen-on-4-16, buff-on-4-16, consumable-bought-on-4-16, critical-strike-on-4-16, crowd-control-on-4-16, damage-dealt-on-4-16, damage-taken-on-4-16, death-assist-on-4-16, died-on-4-16, dragon-killed-on-4-16, dragon-killed-watched-on-4-16, dragon-stolen-on-4-16, gold-earned-on-4-16, gold-spent-on-4-16, heal-cast-on-4-16, heal-on-4-16, item-bought-on-4-16, item-callout-on-4-16, item-changed-on-4-16, item-removed-on-4-16, item-sold-on-4-16, item-substituted-on-4-16, item-undone-on-4-16, killing-spree-on-4-16, minion-killed-on-4-16, monster-killed-on-4-16, one-on-4-16, removed-on-4-16, spawned-on-4-16, spider-killed-on-4-16, spider-killed-watched-on-4-16, turret-damaged-on-4-16, turret-died-on-4-16, undo-changed-on-4-16

In 4.17–4.19

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

FieldTypePresent whenWhat it is
eventu8What happened, and so which shape follows. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 10 tripleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 118 minionsSpawned, 119 welcome, 120 startNoticeTwo, 121 startNoticeThree, 125 scoreboardOpened, 151 dragonKilled, 152 dragonKilledWatched, 153 dragonStolen, 154 baronKilled, 155 baronKilledWatched, 156 baronStolen, 157 spiderKilled, 158 spiderKilledWatched, 159 altarCaptured, 160 altarCapturedWatched, 161 wardPlaced, 162 wardKilled.
subjectu32The unit the event is about.
stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
damagerecordevent = 15 or 16How much harm, and from what.
damage.scriptu32The spell, item or effect, by the number its name gives, shown by name.
damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
damage.sourceObjectu32The unit it came from, or zero.
damage.physicalf32Physical damage.
damage.magicalf32Magical damage.
damage.truef32True damage.
damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
damage.parentCasteru32The unit that cast that spell or effect, or zero.
damage.parent2-byte bitsWhere the spell or effect came from.
damage.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
damage.parent.sidebit 4 to 7The side of the parent’s caster.
damage.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
damage.parent.unusedbit 15Unused; a server writes zero.
spentu32event = 23How much gold, as shown.
valueu32event = 25 or 91 or 92 or 93 or 96 or 97 or 159 or 160What it carries is not recorded for this range; a client does not show it.
criticalf32event = 26The critical strike’s damage, as shown.
spreeu32event = 50How many kills in a row, as shown.
earnedrecordevent = 24Gold earned.
earned.goldf32How much gold, as shown.
earned.detailu32What it carries is not recorded for this range; a server writes zero.
earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
healrecordevent = 46 or 47How much health, and from what.
heal.scriptu32The spell, item or effect, by the number its name gives, shown by name.
heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
heal.sourceObjectu32The unit it came from, or zero.
heal.amountf32How much health, as shown.
heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
heal.parentCasteru32The unit that cast that spell or effect, or zero.
heal.parent2-byte bitsWhere the spell or effect came from.
heal.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
heal.parent.sidebit 4 to 7The side of the parent’s caster.
heal.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
heal.parent.unusedbit 15Unused; a server writes zero.
effectrecordevent = 48 or 49The effect, and where it came from.
effect.scriptu32The spell, item or effect, by the number its name gives, shown by name.
effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
effect.sourceObjectu32The unit it came from, or zero.
effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
effect.parentCasteru32The unit that cast that spell or effect, or zero.
effect.parent2-byte bitsWhere the spell or effect came from.
effect.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
effect.parent.sidebit 4 to 7The side of the parent’s caster.
effect.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
effect.parent.unusedbit 15Unused; a server writes zero.
buffrecordevent = 49What an effect of this sort carries.
buff.buffTypei32What sort of effect.
buff.durationf32How long it lasted, in seconds.
assistrecordevent = 69What one unit did toward a death.
assist.lastHitf32When it last dealt damage, in match seconds.
assist.physicalf32Physical damage it dealt.
assist.magicalf32Magical damage it dealt.
assist.truef32True damage it dealt.
assist.sharef32What it carries is not recorded for this range; a server writes zero.
assist.goldf32What it carries is not recorded for this range; a server writes zero.
assist.creditedu32What it carries is not recorded for this range; a server writes zero.
killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158The reward, and who shared it.
kill.goldf32The gold the kill gave.
kill.assistCountu32How many of the twelve places below name a unit.
kill.assists12 × u32The units that helped, then zeros.
monsterrecordevent = 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158Who took the monster.
monster.skinHashu32The number the name of the killer’s look gives.
monster.skini32Which look the killer wears.
monster.sideu32The side that took it.
calloutrecordevent = 95The item a player pointed out, shown as the second name followed by the first in brackets.
callout.itemu32The item, shown by name and number.
callout.quantityu32How many, shown as two digits.
callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.sideu32The side of the player who pointed it out.
substitutionrecordevent = 98An item the shop shows another in place of.
substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
substitution.originalu32The item replaced.
substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
undorecordevent = 94A purchase taken back.
undo.itemu32What it carries is not recorded for this range; a client does not show it.
undo.parts7 × u32What they carry is not recorded for this range; a client does not show them.
undo.refundf32The gold given back. A client takes it off the gold the unit is counted as having spent.
Vectors (38)

altar-captured-on-4-17, altar-captured-watched-on-4-17, baron-killed-on-4-17, baron-killed-watched-on-4-17, baron-stolen-on-4-17, buff-on-4-17, consumable-bought-on-4-17, critical-strike-on-4-17, crowd-control-on-4-17, damage-dealt-on-4-17, damage-taken-on-4-17, death-assist-on-4-17, died-on-4-17, dragon-killed-on-4-17, dragon-killed-watched-on-4-17, dragon-stolen-on-4-17, gold-earned-on-4-17, gold-spent-on-4-17, heal-cast-on-4-17, heal-on-4-17, item-bought-on-4-17, item-callout-on-4-17, item-changed-on-4-17, item-removed-on-4-17, item-sold-on-4-17, item-substituted-on-4-17, item-undone-on-4-17, killing-spree-on-4-17, minion-killed-on-4-17, monster-killed-on-4-17, one-on-4-17, removed-on-4-17, spawned-on-4-17, spider-killed-on-4-17, spider-killed-watched-on-4-17, turret-damaged-on-4-17, turret-died-on-4-17, undo-changed-on-4-17

In 4.20

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

FieldTypePresent whenWhat it is
eventu8What happened, and so which shape follows. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 8 singleKill, 9 doubleKill, 10 tripleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 118 minionsSpawned, 119 welcome, 120 startNoticeTwo, 121 startNoticeThree, 125 scoreboardOpened, 151 dragonKilled, 152 dragonKilledWatched, 153 dragonStolen, 154 baronKilled, 155 baronKilledWatched, 156 baronStolen, 157 spiderKilled, 158 spiderKilledWatched, 159 altarCaptured, 160 altarCapturedWatched, 161 wardPlaced, 162 wardKilled.
subjectu32The unit the event is about.
stageu8event = 5A client reads it and shows nothing for it; a server writes zero.
damagerecordevent = 15 or 16How much harm, and from what.
damage.byParentu8Nonzero to credit it to the parent spell and its caster rather than to the spell and its source unit; where the parent caster is unknown, a client credits the source unit.
damage.scriptu32The spell, item or effect, by the number its name gives, shown by name.
damage.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
damage.sourceObjectu32The unit it came from, or zero.
damage.physicalf32Physical damage.
damage.magicalf32Magical damage.
damage.truef32True damage.
damage.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
damage.parentCasteru32The unit that cast that spell or effect, or zero.
damage.parent2-byte bitsWhere the spell or effect came from.
damage.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
damage.parent.sidebit 4 to 7The side of the parent’s caster.
damage.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
damage.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
damage.parent.unusedbit 15Unused; a server writes zero.
spentu32event = 23How much gold, as shown.
valueu32event = 25 or 91 or 92 or 93 or 96 or 97 or 159 or 160What it carries is not recorded for this range; a client does not show it.
criticalf32event = 26The critical strike’s damage, as shown.
spreeu32event = 50How many kills in a row, as shown.
earnedrecordevent = 24Gold earned.
earned.goldf32How much gold, as shown.
earned.detailu32What it carries is not recorded for this range; a server writes zero.
earned.subDetailu32What it carries is not recorded for this range; a server writes zero.
healrecordevent = 46 or 47How much health, and from what.
heal.byParentu8Nonzero to credit it to the parent spell and its caster rather than to the spell and its source unit; where the parent caster is unknown, a client credits the source unit.
heal.scriptu32The spell, item or effect, by the number its name gives, shown by name.
heal.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
heal.sourceObjectu32The unit it came from, or zero.
heal.amountf32How much health, as shown.
heal.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
heal.parentCasteru32The unit that cast that spell or effect, or zero.
heal.parent2-byte bitsWhere the spell or effect came from.
heal.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
heal.parent.sidebit 4 to 7The side of the parent’s caster.
heal.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
heal.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
heal.parent.unusedbit 15Unused; a server writes zero.
effectrecordevent = 48 or 49The effect, and where it came from.
effect.byParentu8Nonzero to credit it to the parent spell and its caster rather than to the spell and its source unit; where the parent caster is unknown, a client credits the source unit.
effect.scriptu32The spell, item or effect, by the number its name gives, shown by name.
effect.sourceKindu8What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 character, 4 basicAttack, 5 cheat, 6 unknown.
effect.sourceObjectu32The unit it came from, or zero.
effect.parentScriptu32The spell or effect it came from, by the number its name gives, shown by name.
effect.parentCasteru32The unit that cast that spell or effect, or zero.
effect.parent2-byte bitsWhere the spell or effect came from.
effect.parent.sourcebit 0 to 3What sort of source the parent is, numbered as sourceKind is.
effect.parent.sidebit 4 to 7The side of the parent’s caster.
effect.parent.categorybit 8 to 11What sort of unit cast the parent: 0 a champion, 1 a minion, 2 a turret, 3 a pet, 4 a clone, 5 unknown. A client sums two entries where this, the source kind and the spell match.
effect.parent.spellLevelbit 12 to 14The rank of the spell, as shown.
effect.parent.unusedbit 15Unused; a server writes zero.
buffrecordevent = 49What an effect of this sort carries.
buff.buffTypei32What sort of effect.
buff.durationf32How long it lasted, in seconds.
assistrecordevent = 69What one unit did toward a death.
assist.lastHitf32When it last dealt damage, in match seconds.
assist.physicalf32Physical damage it dealt.
assist.magicalf32Magical damage it dealt.
assist.truef32True damage it dealt.
assist.sharef32What it carries is not recorded for this range; a server writes zero.
assist.goldf32What it carries is not recorded for this range; a server writes zero.
assist.creditedu32What it carries is not recorded for this range; a server writes zero.
killrecordevent = 1 or 2 or 36 or 37 or 38 or 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158The reward, and who shared it.
kill.goldf32The gold the kill gave.
kill.assistCountu32How many of the twelve places below name a unit.
kill.assists12 × u32The units that helped, then zeros.
monsterrecordevent = 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158Who took the monster.
monster.skinHashu32The number the name of the killer’s look gives.
monster.skini32Which look the killer wears.
monster.sideu32The side that took it.
calloutrecordevent = 95The item a player pointed out, shown as the second name followed by the first in brackets.
callout.itemu32The item, shown by name and number.
callout.quantityu32How many, shown as two digits.
callout.firstbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.secondbytes, 24As a client lays a short text out: up to fifteen characters ended by a zero byte in the first sixteen, the length as a u32, then 15 as a u32.
callout.sideu32The side of the player who pointed it out.
substitutionrecordevent = 98An item the shop shows another in place of.
substitution.enabledu8Nonzero to show the substitute in place of the original from now on; zero to stop.
substitution.originalu32The item replaced.
substitution.substituteu32The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original.
undorecordevent = 94A purchase taken back.
undo.itemu32What it carries is not recorded for this range; a client does not show it.
undo.parts7 × u32What they carry is not recorded for this range; a client does not show them.
undo.refundf32The gold given back. A client takes it off the gold the unit is counted as having spent.
Vectors (38)

altar-captured-on-4-20, altar-captured-watched-on-4-20, baron-killed-on-4-20, baron-killed-watched-on-4-20, baron-stolen-on-4-20, buff-on-4-20, consumable-bought-on-4-20, critical-strike-on-4-20, crowd-control-on-4-20, damage-dealt-on-4-20, damage-taken-on-4-20, death-assist-on-4-20, died-on-4-20, dragon-killed-on-4-20, dragon-killed-watched-on-4-20, dragon-stolen-on-4-20, gold-earned-on-4-20, gold-spent-on-4-20, heal-cast-on-4-20, heal-on-4-20, item-bought-on-4-20, item-callout-on-4-20, item-changed-on-4-20, item-removed-on-4-20, item-sold-on-4-20, item-substituted-on-4-20, item-undone-on-4-20, killing-spree-on-4-20, minion-killed-on-4-20, monster-killed-on-4-20, one-on-4-20, removed-on-4-20, spawned-on-4-20, spider-killed-on-4-20, spider-killed-watched-on-4-20, turret-damaged-on-4-20, turret-died-on-4-20, undo-changed-on-4-20

DragonBuffCount

What a server sends to say how many dragon buffs a side holds. The header carries zero.

Definition.

In 4.20

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

FieldTypeWhat it is
flags1-byte bits
flags.orderbit 0Set for side 100, clear for side 200.
flags.unusedbit 1 to 7Unused; a server writes zero.
counteru32Which count it sets. A client takes only 0, and drops the message otherwise.
counti32How many buffs the side holds. Both sides start at -1, which hides the counts; once either is 0 or more, a client shows both, a negative one as 0.
Vectors (1)

one-on-4-20

Communication

Chat, pings, emotes, and the sound and music a server can drive.

Chat

Players chat with Chat, which carries a line to everyone or to a side. A server puts a line of its own in a client’s chat with SystemMessage. A server can limit how many more lines a player can send with ChatAllowance.

In 4.1–4.19

A client shows how many lines ChatAllowance leaves its player.

Pings and emotes

A client marks a point on the map with MapPing, and a server shows the ping to everyone meant to see it with PingPlaced. A client asks to play an emote with PlayEmote, and a server shows it with EmotePlayed. A server can also tell clients of a voice command a champion gave (VoiceCommand) and of an emote a champion played for the moment (ContextEmote).

In 4.1–4.19

A client shows no ping its server marks as throttled, and notes in its own chat that the player is pinging too often. VoiceCommand and ContextEmote change nothing a client shows.

Sound and music

A server can play a sound once (SoundPlayed) or a voice event (VoiceEvent), which a client can report done with VoiceEventDone. A server can also set a champion’s skin music (ThemeMusic), drive the music (MusicCue), mute or unmute a kind of sound (VolumeMuted) and fade sound effects out (FadeSounds).

Where a VoiceEvent asks for an answer, a client sends VoiceEventDone once it has played the event, or at once where it cannot play it.

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).

Chat

Text one player sends the others during a match. Messages players exchange outside a match do not travel on this connection at all.

Definition.

In 4.1–4.17

Command 104 on chat, sent by either side, reliable.

FieldTypeWhat it is
clientIdu32The client id of the sender.
netIdu32The entity a receiving end attributes the text to where the seat does not name one. Where the seat names a speaker, that is what a receiving end uses instead.
localizedu8Whether the text is a phrase to show as it stands, or a key naming one the receiving end looks up and fills in from the parameters. Both ends send it clear.
audiencei32Who the message reaches. Values: 0 everyone, 1 team.
paramsLengthu32How many bytes of the run that follows carry meaning.
textLengthu32The length of the text, counted in bytes and excluding the byte that ends it. A 4.17 client sends at most 255 bytes of text. A client shows the text to its first zero byte.
paramsbytes, 32Thirty two bytes holding text that fills in a key, ended by a zero byte within them. The bytes after that zero byte carry no meaning, so two messages otherwise alike can differ in them.
texttext, sized by textLengthThe text, textLength bytes of it.
terminatorbytes, 1A zero byte closing the text.
Vectors (2)

another-on-4-17, one-on-4-17

In 4.18–4.20

Command 104 on chat, sent by either side, reliable.

FieldTypeWhat it is
clientIdu32The client id of the sender.
netIdu32The entity a receiving end attributes the text to where the seat does not name one. Where the seat names a speaker, that is what a receiving end uses instead.
localizedu8Whether the text is a phrase to show as it stands, or a key naming one the receiving end looks up and fills in from the parameters. Both ends send it clear.
audiencei32Who the message reaches. Values: 0 everyone, 1 team.
paramsLengthu32How many bytes of the run that follows carry meaning.
textLengthu32The length of the text, counted in bytes and excluding the byte that ends it.
paramsbytes, 32Thirty two bytes holding text that fills in a key, ended by a zero byte within them. The bytes after that zero byte carry no meaning, so two messages otherwise alike can differ in them.
texttext, sized by textLengthThe text, textLength bytes of it.
terminatorbytes, 1A zero byte closing the text.
Vectors (2)

everyone-on-4-20, team-on-4-20

SystemMessage

What a server sends to put a line of its own in a client’s chat. The header names no object: it carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10246
4.11–4.20247
FieldTypeWhat it is
sourceu32The unit the line is credited to, or zero where none is.
texttext, 512 bytesThe line itself. Written out in full and padded with zero bytes to the width above.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

ChatAllowance

What a server sends to limit a player’s chat, showing how many lines they have left. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10248
4.11–4.20249
FieldTypeWhat it is
linesLefti32How many lines are left. A client shows this number as sent.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

MapPing

What a client sends to mark a point on the map for the others. The header names no object: it carries zero.

Definition.

In every range of this book

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.1086
4.11–4.2087
FieldTypeWhat it is
xf32Where on the map, along one ground axis, in world units.
zf32Where on the map, along the other ground axis, in world units.
targetu32A network object the mark is on, or zero where it is on open ground.
kindu8Which mark it is. A client sends any of the seven below, and 1 where the mark shows a direction of attack. Values: 0 here, 1 attackDirection, 2 danger, 3 targetUnaccountedFor, 4 onMyWay, 5 fallBack, 6 comeHere.
Vectors (6)

on-an-object-on-4-10, one-on-4-10, open-ground-on-4-10, one-on-4-17, on-an-object-on-4-20, open-ground-on-4-20

PingPlaced

What a server sends to show a ping on the map to everyone meant to see it.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.1063
4.11–4.1764

A client drops the whole message where category is past its own list of categories. The header names the champion that placed the ping, as source does.

FieldTypeWhat it is
atXf32Where the ping sits, along one ground axis, in world units.
atZf32Where it sits, along the other, in world units.
targetu32The unit pinged, or zero where a place was pinged instead.
sourceu32The unit that placed it.
how1-byte bits
how.categorybit 0 to 3Which sort of ping.
how.playSoundbit 4Set where the client plays a sound for it.
how.showInChatbit 5Set where the client writes a line about it.
how.throttledbit 6Set where the player is pinging too often: a client places no ping, plays nothing and announces nothing, and only writes a notice in its own chat.
how.speakbit 7Set where the unit says something about it.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

The header names the champion that placed the ping, as source does.

FieldTypeWhat it is
atXf32Where the ping sits, along one ground axis, in world units.
atZf32Where it sits, along the other, in world units.
targetu32The unit pinged, or zero where a place was pinged instead.
sourceu32The unit that placed it.
categoryu8Which sort of ping, under the values MapPing’s kind takes. A server repeats the kind of the request it answers. Values: 0 here, 1 attackDirection, 2 danger, 3 targetUnaccountedFor, 4 onMyWay, 5 fallBack, 6 comeHere.
does1-byte bits
does.playSoundbit 0Set where the client plays a sound for it.
does.showInChatbit 1Set where the client writes a line about it.
does.wasThrottledbit 2Set where the sender was pinging faster than allowed.
does.speakbit 3Set where the unit says something about it.
does.unusedbit 4 to 7Unused; a server writes zero.
Vectors (2)

another-on-4-20, one-on-4-20

PlayEmote

What a client sends to play an emote. The header names the sender’s champion.

Definition.

In 4.1–4.17

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.1071
4.11–4.1772
FieldTypeWhat it is
emoteu8Which emote, by the number the client knows it as. Its four emote keys send 3, 1, 0 and 2, the numbers EmotePlayed plays.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

Command 72 on requests, sent by the client, reliable.

FieldTypeWhat it is
emoteu8Which emote, by the number the client knows it as.
Vectors (1)

one-emote-on-4-20

EmotePlayed

What a server sends to say a unit played an emote. The header names the champion playing the emote.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.1065
4.11–4.1766
FieldTypeWhat it is
emoteu8Which emote, by the number the client knows it as. A client plays an animation on the champion for 0, 1 and 2, a different one each, and none for 3.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
emoteu8Which emote, by the number the client knows it as.
Vectors (2)

another-on-4-20, one-on-4-20

VoiceCommand

What a server sends about a voice command a champion gave. The header names the champion.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.1067
4.11–4.1768

A client accepts it on a champion only, and it has no effect.

FieldTypeWhat it is
padding1u16Padding before call. Unused; a server writes zero.
padding2u8Padding before call. Unused; a server writes zero.
callu32Which call.
targetu32The unit the call is about.
flags1-byte bitsHow it is shown.
flags.highlightbit 0Set where the player’s icon is highlighted.
flags.pingbit 1Set where it marks a ping.
flags.unusedbit 2 to 7Unused; a server writes zero.
padding3u16Padding after flags. Unused; a server writes zero.
padding4u8Padding after flags. Unused; a server writes zero.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

A client accepts it on a champion only, and it has no effect.

FieldTypeWhat it is
callu32Which call.
targetu32The unit the call is about.
flags1-byte bitsHow it is shown.
flags.highlightbit 0Set where the player’s icon is highlighted.
flags.pingbit 1Set where it marks a ping.
flags.unusedbit 2 to 7Unused; a server writes zero.
Vectors (1)

one-on-4-20

ContextEmote

What a server sends about an emote a champion played for the moment. It changes nothing a client shows. The header names the champion.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10242
4.11–4.20243
FieldTypeWhat it is
emoteu8Which emote.
parameteru32A hashed parameter.
flagsu8Flags with no meaning given.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

SoundPlayed

What a server sends to play a sound once. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1066
4.11–4.2067
FieldTypeWhat it is
soundtext, 1024 bytesThe sound event’s name. The text ends at its first zero byte, which falls within the field.
owneru32The object to play it at, where a client knows one by this id; otherwise, or for zero, the sound has no place.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

VoiceEvent

What a server sends to play a voice event. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10120
4.11–4.20121
FieldTypeWhat it is
foldertext, 64 bytesThe event’s folder. It has no effect where kind is 1.
eventtext, 64 bytesThe event’s name; for kind 1, the conversation’s.
callbacku8For kind 0, nonzero asks the client to send VoiceEventDone once the event has played. A client sends it at once where it cannot play the event, whatever this holds.
kindu8What sort of event. A client does nothing for any other value. Values: 0 general, 1 champion.
handleu32For kind 0, a number a client returns in VoiceEventDone; for kind 1, the champion.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

VoiceEventDone

What a client sends once a voice event (VoiceEvent) that asked for it has played. The header carries zero.

Definition.

In every range of this book

Command 5 on requests, sent by the client, reliable.

It answers only a voice event of kind 0, and a client sends it at once where it could not play the event.

FieldTypeWhat it is
handleu32The number the VoiceEvent carried.
Vectors (2)

one-on-4-17, one-on-4-20

ThemeMusic

What a server sends to set a champion’s skin music. A client plays it only for its own champion, and does nothing where the id names no champion or the track is past the skin’s list. The header carries zero.

Definition.

In 4.17

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

FieldTypeWhat it is
championu32The champion.
tracku32Which of the skin’s music tracks, counting from zero.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
championu32The champion.
tracku32Which of the skin’s music tracks, counting from zero.
secondTracku32A second track, counting from zero, or 268435455 for none. A client takes a value past the skin’s tracks as none.
Vectors (1)

one-on-4-18

MusicCue

What a server sends to drive the music a client plays.

Definition.

In 4.1–4.10

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

The header names the champion of the player it is sent to.

FieldTypeWhat it is
cueu8What to do. A client takes any other value and does nothing. Values: 0 prepare, 1 begin, 2 end, 3 changeState.
eventu32Which cue or event.
parameteru32Which state, where the state changes.
Vectors (1)

prepare-on-4-1

In 4.11–4.20

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

The header names the champion of the player it is sent to.

FieldTypeWhat it is
cueu8What to do. Values: 0 prepare, 1 begin, 2 end, 3 changeState, 4 trigger.
eventu32Which cue or event.
parameteru32Which state, where the state changes.
Vectors (2)

one-on-4-17, one-on-4-20

VolumeMuted

What a server sends to mute or unmute one kind of sound. The header carries zero.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.1038
4.11–4.1739
FieldTypeWhat it is
categoryu8Which kind. A client ignores the message from 7 up. Values: 0 all, 1 music, 2 effects, 3 announcer, 4 unitResponses, 5 environment, 6 mainEffects.
state1-byte bitsWhether it is muted.
state.mutedbit 0Set to mute, clear to unmute.
state.unusedbit 1 to 7Unused; a server writes zero.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
categoryu8Which kind. A client ignores the message from 8 up. Values: 0 all, 1 music, 2 effects, 3 announcer, 4 unitResponses, 5 environment, 6 mainEffects, 7 pings.
state1-byte bitsWhether it is muted.
state.mutedbit 0Set to mute, clear to unmute.
state.unusedbit 1 to 7Unused; a server writes zero.
Vectors (1)

music-on-4-18

FadeSounds

What a server sends to fade a client’s sound effects out. The header carries zero.

Definition.

In 4.1–4.14

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

BuildsCommand
4.1–4.1094
4.11–4.1495
FieldTypeWhat it is
timef32How long the sounds take to fade; the unit is not recorded.
Vectors (2)

one-on-4-10, one-on-4-11

In 4.15–4.20

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

FieldTypeWhat it is
timef32How long the fade takes, in seconds.
Vectors (2)

one-on-4-17, one-on-4-20

UnitSpoke

What a client sends when a unit says something on its screen. A server need do nothing with it. The header names the unit speaking.

Definition.

In 4.1–4.9

Command 24 on requests, sent by the client, reliable.

FieldTypeWhat it is
unknownu32A client writes 1073741824.
unknownToou32A client writes zero.
kindu8A client writes zero.
unusedu8A client writes zero.
unusedToou32A client writes zero.
lengthu32The text’s length in bytes, counting its zero byte; at most 1024.
texttext, sized by lengthWhat the unit says.
Vectors (1)

one-on-4-1

Votes

Surrender votes, and a vote on evening out a match.

Surrender

A server tells a side a surrender vote has been called with SurrenderVoteCalled. A client answers with SurrenderVote, and a server tells the side where the vote stands with SurrenderStatus. SurrenderAllowed says whether a champion’s player can call a vote, turning the choice in the client’s menu on or off.

SurrenderVoteCalled shows the caller’s vote to that side and, where it says the vote opens, opens the vote’s panel for that side.

In 4.1–4.19

A client ignores SurrenderVoteCalled that arrives before its own champion is on the field.

Evening out a match

A server can hold a vote on giving the side behind gold, experience and turrets. BalanceVote opens the vote’s panel for the voting side and adds one voter with each message; a client answers with BalanceVoteAnswer from the panel or as its player types /equalize, once per vote. BalanceResult says how the vote ended, or why it could not be held.

In 4.1–4.19

Where the version answer’s features turn the commands on, a client also sends BalanceVoteRefused, a vote against, as its player types /noequalize.

BalanceVote opens the panel on the first vote.

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).

SurrenderVoteCalled

What a server sends to open a surrender vote, or to report one already open. The header names no object: it carries zero.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10200
4.11–4.17201

A client ignores it unless its menu and its own champion both exist.

FieldTypeWhat it is
how1-byte bits
how.countAsYesbit 0Applies only where side is the client’s own: set shows caller voting yes, clear voting no, opening the menu or not.
how.openTheMenubit 1Set where the vote opens: a client of side opens the vote’s panel from seats and closesIn, which have no other effect; every client is told a vote began, with caller, inFavour, against and side.
how.unusedbit 2 to 7Unused; a server writes zero.
calleru32The unit that called the vote.
inFavouru8How many have voted for.
againstu8How many have voted against.
seatsu8How many seats can vote.
sideu32Which side is voting.
closesInf32How long the vote stays open, in seconds.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
how1-byte bits
how.countAsYesbit 0Set where the receiving seat is taken to have voted for.
how.openTheMenubit 1Set where the client shows the vote to the seat.
how.unusedbit 2 to 7Unused; a server writes zero.
calleru32The unit that called the vote.
inFavouru8How many have voted for.
againstu8How many have voted against.
seatsu8How many seats can vote.
sideu32Which side is voting.
closesInf32How long the vote stays open, in seconds.
Vectors (1)

one-on-4-20

SurrenderVote

What a client sends to vote on surrendering. The header names no object: it carries zero.

Definition.

In 4.1–4.17

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.10163
4.11–4.17164

It answers a call to surrender.

FieldTypeWhat it is
how1-byte bits
how.inFavourbit 0Set where the answer is yes. A client sends it clear.
how.unusedbit 1 to 7Always clear.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

Command 164 on requests, sent by the client, reliable.

It answers a call to surrender.

FieldTypeWhat it is
how1-byte bits
how.inFavourbit 0Set where the answer is yes.
how.unusedbit 1 to 7Unused; a client may leave any value here, and a server ignores it.
Vectors (1)

in-favour-on-4-20

SurrenderStatus

What a server sends to tell a side where its surrender vote stands. The header names no object: it carries zero.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.10164
4.11–4.17165
FieldTypeWhat it is
reasonu8Why the vote stands where it does.
inFavouru8How many voted for.
againstu8How many voted against.
sideu32Which side.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
reasonu32Why the vote is where it is.
inFavouru8How many voted for.
againstu8How many voted against.
sideu16Which side.
Vectors (1)

one-on-4-20

SurrenderAllowed

What a server sends to say whether a champion’s player can call a surrender vote. The header names the champion.

Definition.

In every range of this book

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

A client turns the surrender choice in its menu on or off, and does nothing before the menu exists.

FieldTypeWhat it is
flags1-byte bitsWhether it is allowed.
flags.allowedbit 0Set where a vote can be called.
flags.unusedbit 1 to 7Unused; a server writes zero.
Vectors (2)

one-on-4-17, one-on-4-20

BalanceVote

What a server sends as a side votes on evening out a match: on the first vote it opens the vote’s panel for that side, and each message adds one voter. A client sends BalanceVoteAnswer as its player votes. A client with no champion of its own ignores it. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10249
4.11–4.20250
FieldTypeWhat it is
flags1-byte bitsThis vote.
flags.inFavourbit 0Set where this voter voted for.
flags.firstbit 1Set where this vote opens a new vote.
flags.unusedbit 2 to 7Unused; a server writes zero.
voteru32The voter’s champion.
inFavouru8How many voted for.
againstu8How many voted against.
votersu8How many can vote. It applies only on the first vote.
sidei32The voting side.
closesInf32Seconds until the vote closes. It applies only on the first vote.
goldf32Gold the losing side would be given.
experiencei32Experience it would be given.
turretsi32Turrets it would be given.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

BalanceVoteAnswer

What a client sends as its player answers a vote on evening out a match (BalanceVote), once per vote, from the vote’s panel or by typing /equalize. The header carries zero.

Definition.

In 4.1–4.17

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.10250
4.11–4.17251
FieldTypeWhat it is
vote1-byte bitsThe answer.
vote.inFavourbit 0Set for yes, clear for no.
vote.unusedbit 1 to 7Unused; a client writes zero.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

Command 251 on requests, sent by the client, reliable.

FieldTypeWhat it is
vote1-byte bitsThe answer.
vote.inFavourbit 0Set for yes, clear for no.
vote.unusedbit 1 to 7Unused; a client may leave any value here, and a server ignores it.
Vectors (1)

one-on-4-20

BalanceResult

What a server sends when a vote on evening out a match ends, or cannot be held. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10251
4.11–4.20252
FieldTypeWhat it is
resultu8What came of it. Values: 0 failed, 1 notYet, 2 notAheadInGold, 3 notAheadInLevels, 4 tooSoon, 5 alreadyVoted, 6 agreed.
inFavouru8How many voted for.
againstu8How many voted against.
sidei32The side that voted.
goldf32Gold given.
experiencei32Experience given.
turretsi32Turrets given.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

BalanceVoteRefused

What a client sends as its player types /noequalize, where the version answer’s features have bit 0 set, outside the tutorial: a vote against, laid out as BalanceVote with only its first fields filled. The header carries zero.

Definition.

In 4.1–4.17

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.10249
4.11–4.17250
FieldTypeWhat it is
flagsu8Zero: a vote against.
voteru32Zero.
unset23 × u8The rest of BalanceVote’s layout. Unused; its bytes carry no meaning.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

Command 250 on requests, sent by the client, reliable.

FieldTypeWhat it is
flagsu8A vote against: the lowest bit is clear. The other bits carry no meaning, and a server ignores them.
voteru32Zero.
unset23 × u8The rest of BalanceVote’s layout. Unused; its bytes carry no meaning.
Vectors (1)

one-on-4-20

The interface

What a client shows its player besides the field: the view and camera, input locks, the minimap and text over the screen. Tips, quests, highlights and the tutorial are in Tutorial and guidance.

The view

A client reports where its view sits and which way it faces with Camera, which a server answers (see Ordering). A client tells a server what it has selected with SelectObject, and as it locks its view to its champion or releases it with CameraLock.

A server carries a client’s view from one place to another with MoveCamera. A server can also lock or free a client’s camera with CameraLockSet, which the client answers with CameraLock except while it holds its camera itself, and set a point a player’s view keeps to with CameraBehaviour.

In 4.20

A client reports a view drawn further out than it allows with ZoomReport; a server MAY ignore it.

Input

A server locks or unlocks kinds of input, such as movement, spells or the shop, with InputLock or InputLockToggled.

The minimap and text on screen

MinimapIcon changes what a client draws for a unit on its map. A server can float text over a unit (FloatingText, UnitText), warn a player who seems to be away (AfkWarning), and take the interface down (HudDisabled).

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).

Camera

What a client sends to say where its view sits and which way it faces. Each report is sent once where a server answers it, and again and again where a server does not. The header names no object: it carries zero.

Definition.

In every range of this book

Carried on requests, sent by the client, unreliable, under these commands:

BuildsCommand
4.1–4.1045
4.11–4.2046
FieldTypeWhat it is
positionXf32
positionYf32
positionZf32
directionXf32
directionYf32
directionZf32
clientIdu32The client id of the client the view belongs to.
syncIdu8Names this report, counting up as the view moves. A client sends the report again until a server returns the name.
Vectors (4)

looking-down-on-4-10, one-on-4-10, one-on-4-17, looking-down-on-4-20

SelectObject

What a client sends as the object it has selected changes. The header names no object: it carries zero.

Definition.

In every range of this book

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.10174
4.11–4.20175
FieldTypeWhat it is
clientIdu32The client id of the client selecting: the one its Registered gave it. Zero is a client id like any other rather than an absence.
selectedu32The network object now selected, or zero where none is.
Vectors (4)

one-on-4-10, one-on-4-17, an-object-on-4-20, nothing-on-4-20

CameraLock

What a client sends as it locks its view to a unit or releases it. The header names no object: it carries zero.

Definition.

In 4.1–4.17

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.10128
4.11–4.17129

A client sends it whenever its lock changes: by the player, or as the game forces a lock or lifts one. It sends none while playing a replay.

FieldTypeWhat it is
state1-byte bits
state.lockedbit 0Set while the view follows a unit.
state.unusedbit 1 to 7Unused; a client writes zero.
clientIdu32The client id of the client locking. Zero is a client id like any other rather than an absence.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

Command 129 on requests, sent by the client, reliable.

FieldTypeWhat it is
state1-byte bits
state.lockedbit 0Set while the view follows a unit.
state.unusedbit 1 to 7Unused; a client may leave any value here, and a server ignores it.
clientIdu32The client id of the client locking. Zero is a client id like any other rather than an absence.
Vectors (2)

locked-on-4-20, released-on-4-20

MoveCamera

What a server sends to carry a client’s view from one place to another. The header names the champion of the player it is sent to.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.1036
4.11–4.1737

Where the header names a champion, only the client whose own champion it is moves its view; others take the message and do nothing. Where the header carries zero, a client moves its view to to over travelTime, how and from having no effect.

FieldTypeWhat it is
how1-byte bits
how.fromWhereItIsbit 0Set to start from where the camera stands, fromX, fromY and fromZ having no effect; clear to start from them.
how.unused1bit 1Unused; a server writes zero.
how.unusedbit 2 to 7Unused; a server writes zero.
fromXf32Where the view starts, along one ground axis, in world units.
fromYf32Where the view starts, in height, in world units.
fromZf32Where the view starts, along the other ground axis, in world units.
toXf32Where the view ends, along one ground axis, in world units.
toYf32Where the view ends, in height, in world units.
toZf32Where the view ends, along the other ground axis, in world units.
travelTimef32How long the view takes to get there, in seconds. The view moves at an even speed over the distance along the ground.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
how1-byte bits
how.fromWhereItIsbit 0Set where the view starts from where it already is rather than from the place below.
how.unlockbit 1Set where the view is left free once it arrives.
how.unusedbit 2 to 7Unused; a server writes zero.
fromXf32Where the view starts, along one ground axis, in world units.
fromYf32Where the view starts, in height, in world units.
fromZf32Where the view starts, along the other ground axis, in world units.
toXf32Where the view ends, along one ground axis, in world units.
toYf32Where the view ends, in height, in world units.
toZf32Where the view ends, along the other ground axis, in world units.
travelTimef32How long the view takes to get there, in seconds. The view moves at an even speed over the distance along the ground.
Vectors (2)

another-on-4-20, one-on-4-20

CameraLockSet

What a server sends to lock the camera to the champion or free it. A client answers with CameraLock. The header names no object: a server writes zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10119
4.11–4.20120

A client ignores the message while something of its own holds the camera. It sends no CameraLock while playing a replay.

FieldTypeWhat it is
state1-byte bitsWhether the camera is locked.
state.lockedbit 0Set to lock the camera, clear to free it.
state.unusedbit 1 to 7Unused; a server writes zero.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

CameraBehaviour

What a server sends to set a point a champion’s player’s view keeps to. The header names the champion.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10114
4.11–4.20115
FieldTypeWhat it is
xf32Along one ground axis, in world units.
yf32In height, in world units.
zf32Along the other ground axis, in world units.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

ZoomReport

What a client sends when it notices it has drawn its view further out than it allows itself. It sends one and no more, and sends none while watching a match back. The header names the sender’s champion.

Definition.

In 4.20

Command 125 on requests, sent by the client, reliable.

FieldTypeWhat it is
signalu32What was noticed. A client sends zero.
flagsu32How it was noticed. A client sends zero.
Vectors (1)

one-on-4-20

InputLock

What a server sends to lock or unlock a kind of input on a client. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10131
4.11–4.20132

A client ignores it while playing a replay.

FieldTypeWhat it is
categoryu32Which input, as a set of bits. Values: 1 cameraLocking, 2 movement, 4 abilities, 8 summonerSpells, 16 shop, 32 chat, 64 minimapMovement, 128 cameraMovement.
state1-byte bitsWhether to lock.
state.lockedbit 0Set to lock, clear to unlock.
state.unusedbit 1 to 7Unused; a server writes zero.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

InputLockToggled

What a server sends to turn kinds of input off where they are on, or on where they are off. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10154
4.11–4.20155

A client acts on the change at once only where exactly one lock is set; any other value still changes what is locked, and takes effect as the player next tries.

FieldTypeWhat it is
locksu32Each lock set flips. Values: 1 cameraLock, 2 movement, 4 spells, 8 summonerSpells, 16 shop, 32 chat, 64 minimapMovement, 128 cameraMovement.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

MinimapIcon

What a server sends to change what a client draws for a unit on its map. The header names no object: it carries zero.

Definition.

In 4.1–4.13

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

BuildsCommand
4.1–4.10215
4.11–4.13216

A client does nothing unless unit is a unit it holds that can be attacked.

FieldTypeWhat it is
unitu32The unit this is about.
changeIconu81 to replace the unit’s minimap icon with icon; 0 leaves it, and icon has no effect.
icontext, 64 bytesThe name the client loads the mark under. Written out in full and padded with zero bytes to the width above.
changeBorderu81 to replace the unit’s ring with border, and what it does with borderScript; 0 leaves both, and neither has any effect.
bordertext, 64 bytesThe name the client loads the ring around the mark under, written and padded as above.
Vectors (2)

one-on-4-10, one-on-4-11

In 4.14–4.17

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

A client does nothing unless unit is a unit it holds that can be attacked.

FieldTypeWhat it is
unitu32The unit this is about.
changeIconu81 to replace the unit’s minimap icon with icon; 0 leaves it, and icon has no effect.
icontext, 64 bytesThe name the client loads the mark under. Written out in full and padded with zero bytes to the width above.
changeBorderu81 to replace the unit’s ring with border, and what it does with borderScript; 0 leaves both, and neither has any effect.
bordertext, 64 bytesThe name the client loads the ring around the mark under, written and padded as above.
borderScripttext, 64 bytesThe name the client loads the ring’s own doings under, written and padded as above.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
unitu32The unit this is about.
changeIcon1-byte bits
changeIcon.changebit 0Set where the mark below replaces what the client draws.
changeIcon.unusedbit 1 to 7Unused; a server writes zero.
icontext, 64 bytesThe name the client loads the mark under. Written out in full and padded with zero bytes to the width above.
changeBorder1-byte bits
changeBorder.changebit 0Set where the ring below replaces what the client draws.
changeBorder.unusedbit 1 to 7Unused; a server writes zero.
bordertext, 64 bytesThe name the client loads the ring around the mark under, written and padded as above.
borderScripttext, 64 bytesThe name the client loads the ring’s own doings under, written and padded as above.
Vectors (2)

another-on-4-20, one-on-4-20

FloatingText

What a server sends to show text floating over a unit. The header names the unit.

Definition.

In every range of this book

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

FieldTypeWhat it is
delayf32Unused; a server writes 2.
sloti32Where the text goes. 0 floats it over the unit while the unit is in the client’s own view, the text looked up as a key into the client’s own text. 1 to 50 writes it, in colour, to that line of a debugging display, only where the unit is the one the player has selected. A client does nothing for any other value.
erroru8Nonzero has a client ignore the whole message.
colouru8The text’s colour on the debugging display; it has no effect for slot 0.
styleu32Which style of floating text.
lengthu32The text’s length in bytes, counting its zero byte.
texttext, sized by lengthThe text.
Vectors (2)

one-on-4-17, one-on-4-20

UnitText

What a server sends to float a line of the client’s own text over a unit, as combat text floats. A client shows it only where the unit is in its sight, and not while playing a replay. The header carries zero.

Definition.

In 4.1–4.13

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

FieldTypeWhat it is
unitu32The unit to float it over: one that can be damaged.
styleu8How the line looks, from 0 to 25. A client shows debug lines to nobody. Values: 0 invulnerable, 1 special, 2 heal, 3 manaHeal, 4 manaDamage, 5 dodge, 6 critical, 7 magicCritical, 8 experience, 9 gold, 10 level, 11 disable, 12 questReceived, 13 questComplete, 14 score, 15 physicalDamage, 16 magicDamage, 17 trueDamage, 18 enemyPhysicalDamage, 19 enemyMagicDamage, 20 enemyTrueDamage, 21 enemyCritical, 22 countdown, 23 onMyWay, 24 absorbed, 25 debug.
numberi32A number put into the text where it asks for one.
texttext, 128 bytesA key into the client’s own text. The text ends at its first zero byte, which falls within the field.
Vectors (1)

level-on-4-1

In 4.14–4.17

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

FieldTypeWhat it is
unitu32The unit to float it over: one that can be damaged.
styleu8How the line looks. Values: 0 invulnerable, 1 special, 2 heal, 3 manaHeal, 4 manaDamage, 5 dodge, 6 physicalCritical, 7 magicCritical, 8 trueCritical, 9 experience, 10 gold, 11 level, 12 disable, 13 questReceived, 14 questComplete, 15 score, 16 physicalDamage, 17 magicDamage, 18 trueDamage, 19 enemyPhysicalDamage, 20 enemyMagicDamage, 21 enemyTrueDamage, 22 enemyPhysicalCritical, 23 enemyMagicCritical, 24 enemyTrueCritical, 25 countdown, 26 onMyWay, 27 absorbed, 28 debug.
numberi32A number put into the text where it asks for one.
texttext, 128 bytesA key into the client’s own text. The text ends at its first zero byte, which falls within the field.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
unitu32The unit to float it over: one that can be damaged.
styleu32How the line looks. Values: 0 invulnerable, 1 special, 2 heal, 3 manaHeal, 4 manaDamage, 5 dodge, 6 physicalCritical, 7 magicCritical, 8 trueCritical, 9 experience, 10 gold, 11 level, 12 disable, 13 questReceived, 14 questComplete, 15 score, 16 physicalDamage, 17 magicDamage, 18 trueDamage, 19 enemyPhysicalDamage, 20 enemyMagicDamage, 21 enemyTrueDamage, 22 enemyPhysicalCritical, 23 enemyMagicCritical, 24 enemyTrueCritical, 25 countdown, 26 onMyWay, 27 absorbed, 28 debug.
numberi32A number put into the text where it asks for one.
texttext, 128 bytesA key into the client’s own text. The text ends at its first zero byte, which falls within the field.
Vectors (1)

one-on-4-20

AfkWarning

What a server sends to warn the player that they seem to be away, in a popup with one button that only closes it. It carries nothing of its own. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10183
4.11–4.20184

No body.

Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

HudDisabled

What a server sends to take down a client’s interface as the match ends. The header names no object: it carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10187
4.11–4.20188

No body.

Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

CameraAck

What a server returns for a view report, naming the report it answers. A server names in the header the champion of the player it is sent to.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1043
4.11–4.2044
FieldTypeWhat it is
syncIdu8The name the report carried. A client sends the report again until this comes back.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

FloatingTextOnMap

What a server sends to float text over a unit, to the clients that can see it. The header names the unit.

Definition.

In 4.20

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

FieldTypeWhat it is
delayf32Unused; a server writes 2.
sloti32Where the text goes. 0 floats it over the unit while the unit is in the client’s own view, the text looked up as a key into the client’s own text. 1 to 50 writes it, in colour, to that line of a debugging display, only where the unit is the one the player has selected. A client does nothing for any other value.
erroru8Nonzero has a client ignore the whole message.
colouru8The text’s colour on the debugging display; it has no effect for slot 0.
styleu32Which style of floating text.
lengthu32The text’s length in bytes, counting its zero byte.
texttext, sized by lengthThe text.
Vectors (1)

one-on-4-20

Tutorial and guidance

What a server shows a player to lead them: tips, quests, objectives and text at the side of the screen, highlights, and the tutorial.

A server tells a champion something has come about with Situation.

Highlights

A server lights up parts of the screen and units with HudHighlighted, HudHighlightToggled, UiHighlight, UnitHighlighted and UnitHighlightRemoved, and makes part of the minimap or of the shop blink with MinimapHighlighted and ShopHighlighted.

Tips, quests and objectives

A server puts a tip in front of a player with TipShown, addressed to that player’s champion, and a client reports a click on it, or the tip being closed, with TipEvent. A server can add, complete and remove quests in the quest tracker with QuestUpdated, and a client reports the pointer passing over a quest, and a click on it, with QuestEvent. A server can also show, change and hide an objective panel (ObjectiveShown, ObjectiveReplaced, ObjectiveHidden) and a box of text at the side of the screen (SideTextShown, SideTextRefreshed, SideTextHidden).

The tutorial

A client is in the tutorial where VersionSync names the mode TUTORIAL, in any case, and the data the client installs for the map turns the tutorial on. Of the maps, only map 12’s data does.

In the tutorial, a server can put lines of the client’s own text in its chat (TutorialChatLine) and open the tutorial’s popup (TutorialPopup), which the client answers with TutorialPopupClosed.

A client takes TutorialChatLine in any match.

In 4.17–4.20

A client takes TutorialPopup in any match.

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).

Situation

What a server sends to tell a champion something has come about. The header names the champion.

Definition.

In 4.7–4.20

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

FieldTypeWhat it is
situationu32What came about, by a number a name gives.
Vectors (2)

one-on-4-17, one-on-4-20

HudHighlighted

What a server sends to light up part of the screen, as a tutorial does. Only HudHighlightToggled turns it off. The header carries zero.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.1060
4.11–4.1761
FieldTypeWhat it is
partu8Which part of the screen. A client ignores any other value. Values: 0 hud, 2 minimap.
elementu8What to light up on the main controls. A client ignores any value above 8. Values: 0 spell, 1 spellUpgrade, 2 summonerSpell, 3 recall, 4 shop, 5 gold, 6 experience, 7 health, 8 mana.
numberu8Which slot, for a spell or a summoner spell; it has no effect otherwise. A client accepts any value, and a slot beyond those named has no defined effect.
unusedu8Unused; a server writes zero.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
partu8Which part of the screen. A client ignores any other value, 0 and 2 among them. Values: 1 hud, 3 minimap.
elementu8What to light up on the main controls. A client ignores any value above 8. Values: 0 spell, 1 spellUpgrade, 2 summonerSpell, 3 recall, 4 shop, 5 gold, 6 experience, 7 health, 8 mana.
numberu8Which slot, for a spell or a summoner spell; it has no effect otherwise. A client accepts any value, and a slot beyond those named has no defined effect.
unusedu8Unused; a server writes zero.
Vectors (1)

one-on-4-18

HudHighlightToggled

What a server sends to light up part of the screen, or to put it out. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1078
4.11–4.2079
FieldTypeWhat it is
partu8Which part of the screen. A client ignores any other value. Values: 1 hud, 3 minimap.
elementu8What to light up, as in HudHighlighted. A value beyond those named does nothing.
numberu8Which slot, as in HudHighlighted.
unusedu8Unused; a server writes zero.
state1-byte bitsWhether it is lit.
state.onbit 0Set to light it up, clear to put it out.
state.unusedbit 1 to 7Unused; a server writes zero.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

UiHighlight

What a server sends to place an animated highlight over one element of the screen, or to take one away. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10201
4.11–4.20202
FieldTypeWhat it is
actionu8What to do. A client takes 2 to 14 and does nothing, and ignores the message from 15 up. Values: 0 show, 1 remove.
elementu8Which element. Showing a value above 14 has no defined effect. Values: 0 minimap, 1 quests, 2 tips, 3 characterInfo, 4 effects, 5 ultimate, 6 recall, 7 shop, 8 spellPoint1, 9 gold, 10 assists, 11 passive, 12 spellPoint2, 13 spellPoint3, 14 spellPoint4.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

UnitHighlighted

What a server sends to outline a unit with a pulsing light, as a tutorial does, until UnitHighlightRemoved. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.1088
4.11–4.2089
FieldTypeWhat it is
unitu32The unit: one that can be damaged.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

UnitHighlightRemoved

What a server sends to take away the light UnitHighlighted put on a unit. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10179
4.11–4.20180
FieldTypeWhat it is
unitu32The unit. Where it has no light, nothing happens.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

TipShown

What a server sends to put a note in front of a seat. The header names the champion of the player it is sent to.

Definition.

In 4.1–4.17

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

BuildsCommand
4.1–4.1084
4.11–4.1785
FieldTypeWhat it is
bodytext, 128 bytesWhat the note says. Written out in full and padded with zero bytes to the width above.
headingtext, 128 bytesWhat the note is headed with, written and padded as above.
imagetext, 128 bytesThe name the client loads a picture for the note under, written and padded as above.
whatu8What the client does with the note.
tipu32The name this note answers to, so a later message can name it.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
bodytext, 128 bytesWhat the note says. Written out in full and padded with zero bytes to the width above.
headingtext, 128 bytesWhat the note is headed with, written and padded as above. A server sends the label here and the value it labels in the run above.
imagetext, 128 bytesThe name the client loads a picture for the note under, written and padded as above.
whatu8What the client does with the note.
tipu32The name this note answers to, so a later message can name it.
Vectors (2)

another-on-4-20, one-on-4-20

TipEvent

What a client sends about a tip it has shown or dismissed.

Definition.

In 4.1–4.17

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.10108
4.11–4.17109

The header names the sender’s champion.

FieldTypeWhat it is
whatu8What happened to the tip. Values: 0 clicked, 1 closed.
tipu32Which tip, as TipShown named it.
Vectors (2)

one-on-4-10, one-on-4-17

In 4.18–4.20

Command 109 on requests, sent by the client, reliable.

The header names the sender’s champion.

FieldTypeWhat it is
whatu8What happened to the tip.
tipu32Which tip: the value TipShown carried.
Vectors (1)

one-tip-on-4-20

QuestUpdated

What a server sends to add a quest to the quest tracker, complete it or remove it. The header carries zero.

Definition.

In 4.1–4.7

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

FieldTypeWhat it is
texttext, 128 bytesA key into the client’s own text for the quest. It applies to activate only.
icontext, 128 bytesThe quest’s icon. It applies to activate only.
tooltiptext, 128 bytesA key into the client’s own text for its tooltip. It applies to activate only.
kindu8Which tracker it goes in. A tracker that is full holds a new quest back until it has room. Values: 0 primary, 1 secondary, 2 objective.
actionu8What to do. A client ignores any other value. Values: 0 activate, 1 complete, 2 remove.
flags1-byte bitsWhat a flag means depends on action.
flags.firstbit 0For activate, set to have the client report the pointer passing over the quest (QuestEvent); for complete, set where the quest succeeded.
flags.unusedbit 1 to 7Unused; a server writes zero.
questi32The quest’s number, which QuestEvent returns.
Vectors (1)

primary-on-4-1

In 4.8–4.10

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

FieldTypeWhat it is
texttext, 128 bytesA key into the client’s own text for the quest. It applies to activate only.
icontext, 128 bytesThe quest’s icon. It applies to activate only.
tooltiptext, 128 bytesA key into the client’s own text for its tooltip. It applies to activate only.
rewardtext, 128 bytesA key into the client’s own text for its reward. It applies to activate only.
kindu8Which tracker it goes in. A tracker that is full holds a new quest back until it has room. Values: 0 primary, 1 secondary, 2 objective.
actionu8What to do. A client ignores any other value. Values: 0 activate, 1 complete, 2 remove.
flags1-byte bitsWhat a flag means depends on action.
flags.firstbit 0For activate, set to have the client report the pointer passing over the quest (QuestEvent); for complete, set where the quest succeeded.
flags.secondbit 1Unused; a server writes zero.
flags.unusedbit 2 to 7Unused; a server writes zero.
questi32The quest’s number, which QuestEvent returns.
Vectors (2)

another-on-4-10, one-on-4-10

In 4.11–4.17

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

FieldTypeWhat it is
texttext, 128 bytesA key into the client’s own text for the quest. It applies to activate only.
icontext, 128 bytesThe quest’s icon. It applies to activate only.
tooltiptext, 128 bytesA key into the client’s own text for its tooltip. It applies to activate only.
rewardtext, 128 bytesA key into the client’s own text for its reward. It applies to activate only.
kindu8Which tracker it goes in. A tracker that is full holds a new quest back until it has room. Values: 0 primary, 1 secondary, 2 objective.
actionu8What to do. A client ignores any other value. Values: 0 activate, 1 complete, 2 remove.
flags1-byte bitsWhat a flag means depends on action.
flags.firstbit 0For activate, set to have the client report the pointer passing over the quest (QuestEvent); for complete, set where the quest succeeded.
flags.secondbit 1For activate, set to show the quest arriving.
flags.unusedbit 2 to 7Unused; a server writes zero.
questi32The quest’s number, which QuestEvent returns.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
texttext, 128 bytesA key into the client’s own text for the quest. It applies to activate only.
icontext, 128 bytesThe quest’s icon. It applies to activate only.
tooltiptext, 128 bytesA key into the client’s own text for its tooltip. It applies to activate only.
rewardtext, 128 bytesA key into the client’s own text for its reward. It applies to activate only.
kindu8Which tracker it goes in. A tracker that is full holds a new quest back until it has room. Values: 0 primary, 1 secondary, 2 objective.
actionu8What to do. A client ignores any other value. Values: 0 activate, 1 complete, 2 remove.
flags1-byte bitsWhat a flag means depends on action.
flags.firstbit 0For activate, set to have the client report the pointer passing over the quest (QuestEvent).
flags.secondbit 1For activate, set to show the quest arriving.
flags.succeededbit 2For complete, set where the quest succeeded, clear where it failed; only success shows floating text.
flags.unusedbit 3 to 7Unused; a server writes zero.
questi32The quest’s number, which QuestEvent returns.
Vectors (1)

primary-on-4-18

QuestEvent

What a client sends as its player points at a quest in the tracker (QuestUpdated), stops pointing at it, or clicks it. The header names the sender’s champion.

Definition.

In every range of this book

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.10204
4.11–4.20205
FieldTypeWhat it is
eventu8What the player did. Pointing and leaving are sent only for a quest activated with its first flag set; a click at most once in three seconds. Values: 0 enter, 1 leave, 2 click.
questi32The quest’s number, as QuestUpdated gave it.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

ObjectiveShown

What a server sends to show the objective panel with a text. The header carries zero.

Definition.

In 4.1–4.10

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

FieldTypeWhat it is
texttext, 128 bytesThe objective. The text ends at its first zero byte, which falls within the field.
Vectors (1)

one-on-4-10

In 4.11–4.12

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

FieldTypeWhat it is
texttext, 128 bytesThe objective. The text ends at its first zero byte, which falls within the field.
option1-byte bitsOne option for how the text is shown.
option.onbit 0A client shows the text with an option of its own set; what that changes on screen is not recorded.
option.unusedbit 1 to 7Unused; a server writes zero.
Vectors (1)

one-on-4-11

In 4.13–4.20

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

FieldTypeWhat it is
texttext, 128 bytesThe objective. The text ends at its first zero byte, which falls within the field.
Vectors (2)

one-on-4-17, one-on-4-20

ObjectiveReplaced

What a server sends to replace the text of the objective panel, showing the panel if it is hidden. The header carries zero.

Definition.

In every range of this book

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

FieldTypeWhat it is
texttext, 128 bytesThe objective. The text ends at its first zero byte, which falls within the field.
Vectors (2)

one-on-4-17, one-on-4-20

ObjectiveHidden

What a server sends to hide the objective panel. It carries nothing of its own. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10161
4.11–4.20162

No body.

Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

SideTextShown

What a server sends to show a box of text at the right edge of the screen. The header names no object: a server writes zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10159
4.11–4.20160

The box sits halfway down the screen.

FieldTypeWhat it is
texttext, 128 bytesA key into the client’s own text, which it looks up and shows. The text ends at its first zero byte, which falls within the field.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

SideTextRefreshed

What a server sends to change the text in the box SideTextShown opened, in place. The header names no object: a server writes zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10176
4.11–4.20177
FieldTypeWhat it is
texttext, 128 bytesA key into the client’s own text, which it looks up and shows. The text ends at its first zero byte, which falls within the field.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

SideTextHidden

What a server sends to close the box of text SideTextShown opened. It carries nothing of its own. The header names no object: a server writes zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10166
4.11–4.20167

No body.

Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

TutorialChatLine

What a server sends to put a line of the client’s own text in its chat, as a line from the game. The header carries zero.

Definition.

In every range of this book

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

FieldTypeWhat it is
texttext, 128 bytesA key into the client’s own text, which it looks up and shows. The text ends at its first zero byte, which falls within the field.
Vectors (2)

one-on-4-17, one-on-4-20

TutorialPopup

What a server sends to open the tutorial’s popup: a caption, this text and a single button, which a client answers with TutorialPopupClosed. A client has one such popup; a second message replaces its text. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10178
4.11–4.20179
FieldTypeWhat it is
texttext, 128 bytesA key into the client’s own text for the popup’s body. The text ends at its first zero byte, which falls within the field.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

TutorialPopupClosed

What a client sends as its player presses the button of the tutorial’s popup (TutorialPopup). It carries nothing of its own. The header carries zero.

Definition.

In every range of this book

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.10203
4.11–4.20204

A client also sends it as its player closes a tip in the tutorial.

No body.

Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

Watching a match

How a client is started to watch a match rather than play in it, and how the match reaches it.

A client can watch a match that a server streams to it over the same connection a player uses, rather than playing in it.

What marks a watching client

Nothing on the wire does. A client watches because it was started to watch: it is given the word spectator where a player’s client is given its server’s address. Its key can be given as more than 16 characters of base64: the first 24 bytes it encodes, deciphered as Blowfish ECB under the match number written out, give the key as their first 16 bytes.

The word is followed by the address, the port, the key, a match number and a player number. The key works as a player’s does, with one difference: it can instead be given as base64, deciphered under the match number written out in decimal.

A watching client registers as a player’s client does (see Joining a match), and is answered the same way, save for the client id. A server MUST answer a watching client with a client id that no player in the streamed match holds: a watching client given a player’s client id takes that player’s champion as its own, and fails as soon as it has caught up with the stream. From then on it takes only StreamMetadata, StreamChunkRange and StreamChunk, on any channel, and drops every other message a server sends it directly, VersionSync included. Of what a player’s client sends while joining, it sends only JoinSide, once the stream’s own VersionSync has played, then GameOptions, CharacterSelected and ClientReady: no ClientVersion, no QueryStatus and no LoadingProgress.

The order of the stream

  1. A client answered on registration sends StreamRequest.

  2. A server sends StreamMetadata, within 30 seconds: until it arrives the client waits.

  3. A server sends StreamChunkRange, with the match’s end left at zero while it runs.

  4. A server sends the chunks, each cut into StreamChunk fragments sent in order and not mixed with another chunk’s. It either sends every chunk from chunk 1 upward, or joins the client late:

    • the chunks of setting up, from 1 to the last of them (the chunk of kind 3), and no chunk after it;
    • then the key frame nearest the present, the first key frame sent on the connection;
    • then the chunks from the one that key frame leads to.

    Either way it skips none after that. A client takes a key frame only where it is the first one sent and arrives before the chunk after the last chunk of setting up; otherwise it keeps it but plays on from that chunk. A server SHOULD join a client late once a match is more than a few minutes in: a client sent every chunk from 1 fails partway through a long catch-up.

  5. As the match ends, a server sends StreamChunkRange again naming its last chunk, then that chunk. Once it has arrived the client takes no more of the stream.

The stream’s chunks run for StreamMetadata’s chunkTimeInterval each and its key frames for its keyFrameTimeInterval, both in milliseconds.

What a chunk holds

A chunk is the messages a server sent the players of the match, one record after another.

In 4.17

Each record is a StreamRecord, written against the one before it to save space. A reader keeps the last record’s time, command and object, and recovers a record’s own:

  • its time, from a time difference, as the last record’s time plus that many milliseconds;
  • its command, where the record leaves it out, as the last record’s;
  • its object, from an object difference, as the last record’s object plus that signed difference.

A message is the command, the object and the body, laid out as a game message is (see Messages). A record never holds a container.

A client plays records as the stream’s clock reaches their time, records of time zero at once, and the first record with a time above zero sets its clock. It skips a record of command 0 on the events channel.

The chunks of setting up carry what a player’s client is sent from its version answer on: VersionSync first. A client holds the stream back while it loads after VersionSync, and again while it builds the world after SpawnStart, and goes on by itself afterwards.

A client whose own build differs from the one VersionSync names leaves.

A key frame is laid out as a chunk is, and holds the whole world as it stands at that point. A client joined late goes on after it from the chunk the key frame names, or, where it names none, from the chunk its number implies (see StreamChunk).

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).

StreamMetadata

What a server streaming a match to a watching client sends first, within 30 seconds of the client’s request: how long its chunks and key frames run. A client waits on it, and stops taking the stream’s messages once the last chunk has arrived. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10234
4.11–4.20235
FieldTypeWhat it is
unusedu32Unused; a server writes zero.
texttext, sized by remainingA JSON object with integer members chunkTimeInterval and keyFrameTimeInterval, in milliseconds, to the end of the message. A server sends both.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

StreamChunkRange

What a server streaming a match sends to say where the match proper begins in its chunks, and, once known, where it ends. The header carries zero.

Definition.

In every range of this book

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

BuildsCommand
4.1–4.10235
4.11–4.20236
FieldTypeWhat it is
startGameChunku32The chunk the match proper begins with.
endGameChunku32The match’s last chunk, or zero while it runs.
Vectors (4)

another-on-4-10, one-on-4-10, one-on-4-17, one-on-4-20

StreamChunk

What a server streaming a match sends to carry one fragment of a chunk or key frame of recorded messages (see Watching a match). A chunk’s facts come from its fragment 0. The fragments of a chunk come in order from 0, and the chunk is complete at index fragments − 1. A new fragment 0 drops an unfinished chunk, and a fragment with no chunk begun has no effect. The header carries zero.

Definition.

In 4.1–4.13

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

BuildsCommand
4.1–4.10236
4.11–4.13237
FieldTypeWhat it is
chunku32The chunk’s id, or the key frame’s. Chunk 0 is dropped; chunks play in order from the one a client starts at, and a missing one after it stalls the stream. Key frames count separately, from 1.
fragmentsu32How many fragments the chunk is cut into.
indexu32This fragment’s place, from 0.
kindu8What the chunk is. Values: 1 ordinary, 2 keyFrame, 3 endOfStartup, 4 gameStart, 5 startup.
sizeu32The whole chunk’s size in bytes.
durationi32Seconds the chunk covers. A client reads it only from fragment 0, and uses it only for the match’s last chunk: the match ends that many seconds after that chunk starts. A value too large holds a client that joins near the end on its loading screen.
nextChunku32For a key frame, the ordinary chunk to go on from. Where zero or less, a client takes key frame interval over chunk interval, times the key frame’s id less one, plus the start-game chunk: the one StreamChunkRange names, or the last chunk of kind 4 to arrive.
databytes, sized by remainingThis fragment’s bytes of the chunk, to the end of the message.
Vectors (2)

startup-on-4-1, startup-on-4-11

In 4.14–4.17

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

FieldTypeWhat it is
chunku32The chunk’s id, or the key frame’s. Chunk 0 is dropped; chunks play in order from the one a client starts at, and a missing one after it stalls the stream. Key frames count separately, from 1.
fragmentsu32How many fragments the chunk is cut into.
indexu32This fragment’s place, from 0.
kindu8What the chunk is. Values: 1 ordinary, 2 keyFrame, 3 endOfStartup, 4 gameStart, 5 startup.
sizeu32The whole chunk’s size in bytes.
durationu32Seconds the chunk covers. A client reads it only from fragment 0, and uses it only for the match’s last chunk: the match ends that many seconds after that chunk starts. A value too large holds a client that joins near the end on its loading screen.
nextChunku32For a key frame, the ordinary chunk to go on from. Where zero or less, a client takes key frame interval over chunk interval, times the key frame’s id less one, plus the start-game chunk: the one StreamChunkRange names, or the last chunk of kind 4 to arrive.
databytes, sized by remainingThis fragment’s bytes of the chunk, to the end of the message.
Vectors (1)

one-on-4-17

In 4.18–4.20

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

FieldTypeWhat it is
chunku32The chunk’s id, or the key frame’s. Chunk 0 is dropped; chunks play in order from the one a client starts at, and a missing one after it stalls the stream. Key frames count separately, from 1.
fragmentsu32How many fragments the chunk is cut into.
indexu32This fragment’s place, from 0.
kindu8What the chunk is. Values: 1 ordinary, 2 keyFrame, 3 endOfStartup, 4 gameStart, 5 startup.
sizeu32The whole chunk’s size in bytes.
durationi32Seconds the chunk covers. A client reads it only from fragment 0, and uses it only for the match’s last chunk: the match ends that many seconds after that chunk starts. A value too large holds a client that joins near the end on its loading screen.
nextChunku32For a key frame, the ordinary chunk to go on from. Where zero or less, a client takes key frame interval over chunk interval, times the key frame’s id less one, plus the start-game chunk: the one StreamChunkRange names, or the last chunk of kind 4 to arrive.
databytes, sized by remainingThis fragment’s bytes of the chunk, to the end of the message.
Vectors (1)

startup-on-4-18

StreamRequest

What a client watching a match streamed over its connection (see Watching a match) sends each time the server answers its registration, asking for the stream from a point. The header carries zero.

Definition.

In every range of this book

Carried on requests, sent by the client, reliable, under these commands:

BuildsCommand
4.1–4.10233
4.11–4.20234
FieldTypeWhat it is
wantsMetadatau8One: the client wants StreamMetadata.
jumpToLatestu8One where the client has no key frame yet and nothing past the end of the startup chunks: a client that can be joined late (see Watching a match).
fromChunku32The first chunk wanted: one past the highest the client holds, 1 at first.
fromKeyFrameu32The first key frame wanted: one past the latest the client holds, 1 at first.
Vectors (3)

one-on-4-10, one-on-4-17, one-on-4-20

Structs

The groups of fields messages hold, each with the layout it has across the book’s patches.

AnimationOverride

One set of movements standing in for another.

Definition.

In every range of this book

FieldTypeWhat it is
fromLengthu32How many bytes the name below occupies, where it is from 1 to 2147483647.
fromtext, sized by fromLengthThe name of what is replaced. It is not padded and carries nothing closing it.
toLengthu32How many bytes the name below occupies, where it is from 1 to 2147483647.
totext, sized by toLengthThe name of what replaces it, written as above.

Appearance

One layer of what a unit looks like. Layers are stated in the order a client lays them on.

Definition.

In every range of this book

FieldTypeWhat it is
assetSizeu32How many bytes the name below occupies.
assettext, sized by assetSizeThe name the client loads this layer’s art under. It is not padded, and it carries no terminator.
skinu32Which look within that art.
how1-byte bits
how.overrideSpellsbit 0Set where this layer replaces the unit’s spells as well as its art.
how.modelOnlybit 1Set where it replaces the shape alone.
how.replacePackagebit 2Set where it replaces the whole set of art and sound.
how.unusedbit 3 to 7Unused; a server writes zero.
layeru32The name this layer answers to, so a later message can take it off.

CarriedMessage

One whole message carried inside another, behind the count of its bytes.

Definition.

In every range of this book

FieldTypeWhat it is
sizeu16How many bytes the message occupies.
bodybytes, sized by sizeThe message itself, taking effect as though it had arrived on its own on the channel that carried the message holding it.

Choice

One choice made before the match, and how far it was taken.

Definition.

In every range of this book

FieldTypeWhat it is
choiceu32Which choice, by the number the client knows it as. Zero where the place stands empty.
ranku8How far it was taken.

Death

How a unit died: who did it, with what, and how long it stays down.

Definition.

In 4.18–4.20

FieldTypeWhat it is
how1-byte bits
how.zombiebit 0Set to leave the champion standing in a zombie state rather than dead: no death animation and no death screen.
how.unusedbit 1 to 7Unused; a server writes zero.
kindu32What sort of death this is.
killeru32The unit credited with it, or zero where nothing is.
damageTypeu8The sort of damage that finished it.
damageSourceu8Where that damage came from.
stayDownf32How long the unit stays down, in seconds.

EffectStack

How many of a lasting effect are stacked in one of a unit’s effect slots.

Definition.

In every range of this book

FieldTypeWhat it is
slotu8Which slot.
countu32How many are stacked there.

HeldItem

One item a unit holds, as it is stated when the unit first comes into sight.

Definition.

In every range of this book

FieldTypeWhat it is
slotu8Which slot it sits in.
inSlotu8How many of it are in that slot.
chargesu8How many uses it carries.
itemu32Which item, by the number the client knows it as.

Movement

What one unit is told to do, in the compact shape: a path of points on the ground plane, each after the first stated against the one before it. Other shapes of movement exist, and which one a payload holds is settled by the message carrying it rather than by anything inside the movement.

Definition.

In every range of this book

FieldTypePresent whenWhat it is
header1-byte bits
header.hasTeleportTokenbit 0Set where a token sits beside the unit. A client sends it clear, so a token travels only from a server.
header.pointCountbit 1 to 7How many points the path holds; a sending end writes at least one. A receiving end refuses a movement claiming none and takes nothing further from it.
pathrecordEverything the movement carries beyond its first byte.
path.unitu32The unit the path belongs to.
path.teleportTokenu8header.hasTeleportToken setTells one relocation from another. Movement says what a receiving end does with it.
path.flagsbits, count in header.pointCount minus 1One pair for each point after the first, in the order the points follow. Pairs run on from the low bits of the first byte, and the run reaches to the byte holding the last pair. The bits past it are clear.
path.flags.xIsStepbit 0Set where this point states its first coordinate as a step.
path.flags.zIsStepbit 1Set where this point states its second coordinate as a step.
path.firstXi16The first point, along one ground axis, in the units Movement gives.
path.firstZi16The first point, along the other.
path.stepscount in header.pointCount minus 1 × record
path.steps[].xStepi8flags[step].xIsStep setAdded to the first coordinate of the point before, as that point resolved.
path.steps[].xWholei16flags[step].xIsStep = 0The first coordinate, stated without reference to the point before.
path.steps[].zStepi8flags[step].zIsStep setAdded to the second coordinate of the point before, as that point resolved.
path.steps[].zWholei16flags[step].zIsStep = 0The second coordinate, stated without reference to the point before.

MovementAtSpeed

What one unit is told to do where a server states how it travels: the same path of points as the compact shape, with the terms of its travel stated before them.

Definition.

In every range of this book

FieldTypePresent whenWhat it is
header1-byte bits
header.hasTeleportTokenbit 0Set where a token sits beside the unit. A client sends it clear, so a token travels only from a server.
header.pointCountbit 1 to 7How many points the path holds; a sending end writes at least one. A receiving end refuses a movement claiming none and takes nothing further from it.
pathrecordEverything the movement carries beyond its first byte.
path.unitu32The unit the path belongs to.
path.teleportTokenu8header.hasTeleportToken setTells one relocation from another, as in the compact shape (see Movement).
path.termsSpeedParamsHow the unit is made to travel.
path.flagsbits, count in header.pointCount minus 1One pair for each point after the first, in the order the points follow. Pairs run on from the low bits of the first byte, and the run reaches to the byte holding the last pair. The bits past it are clear.
path.flags.xIsStepbit 0Set where this point states its first coordinate as a step.
path.flags.zIsStepbit 1Set where this point states its second coordinate as a step.
path.firstXi16The first point, along one ground axis, in the units Movement gives.
path.firstZi16The first point, along the other.
path.stepscount in header.pointCount minus 1 × record
path.steps[].xStepi8flags[step].xIsStep setAdded to the first coordinate of the point before, as that point resolved.
path.steps[].xWholei16flags[step].xIsStep = 0The first coordinate, stated without reference to the point before.
path.steps[].zStepi8flags[step].zIsStep setAdded to the second coordinate of the point before, as that point resolved.
path.steps[].zWholei16flags[step].zIsStep = 0The second coordinate, stated without reference to the point before.

Particle

One drawn particle: where it sits, what it hangs off, and how far into its run it is.

Definition.

In every range of this book

FieldTypeWhat it is
targetu32The unit the particle is aimed at, or zero.
particleu32The name this particle answers to, so later messages can name it.
casteru32The unit that made the particle, or zero.
boundTou32The unit the particle hangs off, or zero.
settingsFromu32A second unit the particle takes unit-specific settings from, where a 4.17 client knows it: its skin picks the particle’s skin-specific version where caster is zero or unknown, and, where it is not boundTo, the particle’s substitutions come from it. Zero or unknown is ignored.
atXi16Where the particle sits, along one ground axis. Carried in the units a path uses rather than in world units.
atYf32Where it sits, in height, in world units.
atZi16Where it sits, along the other ground axis. It shares the reading of the first.
towardXi16Where the particle is aimed, along one ground axis, in the form of the first pair above.
towardYf32Where it is aimed, in height, in world units.
towardZi16Where it is aimed, along the other ground axis.
ownerXi16Where the unit that made it stood, along one ground axis, in the form of the first pair above.
ownerYf32Where that unit stood, in height, in world units.
ownerZi16Where that unit stood, along the other ground axis.
facingXf32Which way the particle faces, along one ground axis.
facingYf32Which way it faces, in height.
facingZf32Which way it faces, along the other ground axis.
runningForf32How far into its run the particle already is, in seconds.
scalef32What the particle’s drawn size is scaled by.

ParticleGroup

A set of drawn particles that share the art, the sound, and the place on a unit they hang from.

Definition.

In every range of this book

FieldTypeWhat it is
packageu32Which set of art and sound the client draws them with.
particleu32Which particle, by the number its name gives, as Objects and identifiers works it out.
flagsu16How each particle of the group behaves, one bit each, on a 4.17 client: 1 kept alive, not ending by itself; 2 of no effect; 4 scaled to the bound unit’s bounding box and its effect scale (to 1 where the bound object cannot be attacked); 8 placed at the positions given rather than hung on bone and targetBone, made even where a nonzero boundTo is unknown and with an unknown target; 16 not turned to follow its direction; 32 simulated while off screen; 64 laid flat on the ground’s slope, facing as forward (+Z where facing is zero); 128 facing its target; 256 driven by the bound unit’s resource bar. Bits 9 to 15 have no effect.
targetBoneu32Where on the unit aimed at they hang, by the number the name of that place gives, as Objects and identifiers works it out.
boneu32Where on the unit that made them they hang, by the same reading.
particleCountu8How many particles follow.
particlescount in particleCount × ParticleThe particles themselves.

Replication

What has changed about one unit. A flag byte says which groups of values follow, and each group that follows says which of its values it holds and carries them as a run of bytes. The groups follow in a fixed order that is not the order of the flags: the last flag’s values come before the one before it, and the rest run in flag order. Replication says what settles the reading of a run, and records what a champion’s groups carry.

Definition.

In every range of this book

FieldTypePresent whenWhat it is
present1-byte bits
present.group0bit 0Set where this group’s values follow.
present.group1bit 1Set where this group’s values follow.
present.group2bit 2Set where this group’s values follow.
present.group3bit 3Set where this group’s values follow.
present.group4bit 4Set where this group’s values follow. They come after every other group’s, whatever the flags. A server sends it clear.
present.group5bit 5Set where this group’s values follow. They come before group 4’s.
present.unusedbit 6 to 7Unused; a server writes zero. A presence byte with no group set is valid.
unitu32The unit whose values these are.
group0recordpresent.group0 setThe values of group 0, where the flag says they follow.
group0.whichu32Says which of the group’s values the run below holds, one bit each, lowest first.
group0.lengthu8How many bytes the run below holds.
group0.valuesbytes, sized by lengthThe values themselves, one after another in the order the bits above name them, lowest first. What each one is, and which of the two shapes it takes, is settled by the kind of unit rather than by anything here. Replication says so, and records what a champion’s groups carry.
group1recordpresent.group1 setThe values of group 1, where the flag says they follow.
group1.whichu32Says which of the group’s values the run below holds, one bit each, lowest first.
group1.lengthu8How many bytes the run below holds.
group1.valuesbytes, sized by lengthThe values themselves, one after another in the order the bits above name them, lowest first. What each one is, and which of the two shapes it takes, is settled by the kind of unit rather than by anything here. Replication says so, and records what a champion’s groups carry.
group2recordpresent.group2 setThe values of group 2, where the flag says they follow.
group2.whichu32Says which of the group’s values the run below holds, one bit each, lowest first.
group2.lengthu8How many bytes the run below holds.
group2.valuesbytes, sized by lengthThe values themselves, one after another in the order the bits above name them, lowest first. What each one is, and which of the two shapes it takes, is settled by the kind of unit rather than by anything here. Replication says so, and records what a champion’s groups carry.
group3recordpresent.group3 setThe values of group 3, where the flag says they follow.
group3.whichu32Says which of the group’s values the run below holds, one bit each, lowest first.
group3.lengthu8How many bytes the run below holds.
group3.valuesbytes, sized by lengthThe values themselves, one after another in the order the bits above name them, lowest first. What each one is, and which of the two shapes it takes, is settled by the kind of unit rather than by anything here. Replication says so, and records what a champion’s groups carry.
group5recordpresent.group5 setThe values of group 5, where the flag says they follow.
group5.whichu32Says which of the group’s values the run below holds, one bit each, lowest first.
group5.lengthu8How many bytes the run below holds.
group5.valuesbytes, sized by lengthThe values themselves, one after another in the order the bits above name them, lowest first. What each one is, and which of the two shapes it takes, is settled by the kind of unit rather than by anything here. Replication says so, and records what a champion’s groups carry.
group4recordpresent.group4 setThe values of group 4, where the flag says they follow. For a 4.17 client it comes last, after group 5. A server sends its flag clear.
group4.whichu32Says which of the group’s values the run below holds, one bit each, lowest first.
group4.lengthu8How many bytes the run below holds. What comes next starts after this many bytes, whatever the values inside take.
group4.valuesbytes, sized by lengthThe values themselves, as for the other groups.

Seat

One place at the match: who holds it, what they brought, and what the client shows for them.

Definition.

In every range of this book

FieldTypeWhat it is
playeri64Which player holds the place, or a negative number where it stands empty. It has a player identifier’s width.
levelu16The level the seat holder has reached across matches. A 4.17 client does not draw it on the loading screen.
summoneru32The spell in one of the seat’s summoner slots, as the name hash of the spell; drawn as its icon on the loading screen. It has no effect on a bot’s seat.
otherSummoneru32The spell in the other.
flagsu8How the seat is treated. Two bits take effect on a 4.17 client: bit 0, set where a bot holds the seat, which the loading screen then shows from the bot fields below as already loaded; and bit 1, set to show the seat’s champion on the loading screen in its skin’s vintage art. The others have no effect.
sideu32The side the seat is on, or zero where it stands empty.
botNametext, 64 bytesWhat the seat is called where nobody holds it, written and padded as above. A 4.17 client shows its own name for a bot of the champion instead.
botAssettext, 64 bytesThe name the client loads art for it under where nobody holds it, written and padded as above.
standingtext, 16 bytesWhat the seat’s standing across matches is called, written and padded as above. A 4.17 client frames the seat’s loading-screen card with its own image of that name, where it has one; UNRANKED and BRONZE draw nothing.
botSkini32Which look it wears where nobody holds it.
botDifficultyi32How well it plays where nobody holds it: 0 beginner, 1 intermediate, 2 advanced, 3 top, 4 tutorial, 5 intro. A 4.17 client draws it nowhere and picks the bot’s summoner spells by it.
iconi32Which profile icon the client shows on the seat’s loading-screen card; a negative number, or one with no art, shows icon 0’s.
allyBadgeu8The badge a 4.17 client shows on the seat’s card to the seat’s own side (and to a client on neither side), where it is one of the badges the client’s own data names.
enemyBadgeu8The badge it shows where the ally badge is not shown and this is nonzero.

SpeedParams

How a unit is made to travel, in place of what a receiving end would otherwise choose for it.

Definition.

In every range of this book

FieldTypeWhat it is
speedf32How fast the unit travels along the path, in world units a second, standing in for its own pace.
gravityf32How sharply the unit arcs through the air along the way. Zero where it keeps to the ground.
fromXf32Where the unit starts, along one ground axis, in world units. It holds the same place the path’s first point states, and is carried whether the unit arcs or not.
fromZf32Where it starts, along the other.
keepFacingu80 to face the way the unit travels, 1 to keep its facing. Values: 0 faceTheWayItGoes, 1 holdItsFacing.
followsu32The unit this one is made to follow, or zero where it follows none.
followDistancef32How far from that unit it is made to stay, in world units.
followBackDistancef32How far behind that unit it is made to stay, in world units.
followTimef32Seconds to reach the followed unit, from when a client applies the message; it applies only where follows is nonzero. Above zero, a client sets the speed each update to the ground distance left to the followed unit (moved back by followBackDistance) over the time left, at least 0.0001 seconds, overriding speed, and keeps the last speed once the time is up; an arcing unit takes it as its first flight time. Zero or below does nothing.

SpellCast

One casting of a spell: which spell, who cast it, at what, and the timings a client plays it out with.

Definition.

In every range of this book

FieldTypeWhat it is
sizeu16How many bytes the casting takes, this field included. Where it differs from the bytes the casting takes, a client gives the cast no spell.
spellu32Which spell, by the number its name gives, as Objects and identifiers works it out.
castu32The name this casting answers to, so later messages can name it.
levelu8The rank the spell stands at, counting from 1: a spell at its first rank carries 1.
attackSpeedf32What the caster’s attack rhythm is scaled by while this runs.
casteru32The unit casting.
chainOwneru32The unit the casting is credited to, where a chain of casts leads back to another.
packageu32Which set of art and sound the client draws it with.
missileu32The name the missile this casting throws will answer to, or zero where it throws none.
targetXf32Where the casting is aimed, along one ground axis, in world units.
targetYf32Where the casting is aimed, in height, in world units.
targetZf32Where the casting is aimed, along the other ground axis, in world units.
targetEndXf32Where the casting stops being aimed, for a spell that sweeps, along one ground axis, in world units.
targetEndYf32Where the casting stops being aimed, for a spell that sweeps, in height, in world units.
targetEndZf32Where the casting stops being aimed, for a spell that sweeps, along the other ground axis, in world units.
hitCountu8How many units the casting names as hit.
hitscount in hitCount × SpellHitThe units the casting hits, each a unit then a one-byte result; a 4.17 client takes at most 32.
castTimef32How long the casting takes before it takes effect, in seconds.
extraCastTimef32What is added to that, in seconds.
totalTimef32How long the whole casting runs, in seconds.
cooldownf32How long until the spell can be cast again, in seconds.
startedAtf32When the casting began, in seconds.
how1-byte bits
how.basicAttackbit 0Set where the casting is the caster’s own swing rather than a spell.
how.secondBasicAttackbit 1Set where the swing is the second of a pair.
how.forcedbit 2Set where the casting was not asked for by whoever holds the caster.
how.overrideCastPositionbit 3Set where the aim above replaces the one the caster would have used.
how.clickedbit 4Set where a click on the spell’s own button started the casting. A client does nothing with it.
how.unusedbit 5 to 7Unused; a server writes zero.
slotu8Which of the caster’s slots the spell sits in.
costf32What the casting spends from the caster’s resource.
launchXf32Where what the casting throws leaves from, along one ground axis, in world units.
launchYf32Where what the casting throws leaves from, in height, in world units.
launchZf32Where what the casting throws leaves from, along the other ground axis, in world units.
ammoUsedi32How many charges the casting spends.
ammoRechargef32How long until a spent charge returns, in seconds.

SpellHit

One unit a casting names as hit, and how it was hit.

Definition.

In 4.1–4.16

FieldTypeWhat it is
unitu32The unit hit.
atXf32Where the hit is, along one ground axis, in world units. A client gives it to the missile it makes for this hit.
atYf32Where the hit is, in height, in world units. A client gives it to the missile it makes for this hit.
atZf32Where the hit is, along the other ground axis, in world units. A client gives it to the missile it makes for this hit.
resultu8How the hit landed.
Vectors (1)

one-on-4-16

In 4.17–4.20

FieldTypeWhat it is
unitu32The unit hit.
resultu8How the hit landed.

SpellNumberSet

The numbers a client shows beside one of a unit’s spells, and which of them it keeps from the other side.

Definition.

In 4.7–4.20

FieldTypeWhat it is
unitu32The unit whose spell this is.
slotu8Which slot.
values16 × f32The numbers themselves, one place each.
hidden16 × u8Which of those places the other side is not shown, one for each.

Strike

One swing of a unit’s own weapon: what it is aimed at, when it lands, and the missile it throws.

Definition.

In 4.18–4.20

FieldTypeWhat it is
targetu32The unit swung at. A server sends a nonzero unit.
timingu8A shift in time: the value less 128, in hundredths of a second, from -1.28 to 1.27; 128 shifts nothing. It moves when the swing lets go and ends, and when the unit may next attack.
missileu32The name the missile this swing throws will answer to.
slotu8Which of the unit’s attacks this is.
targetXf32Where the unit swung at stands, along one ground axis. Carried in the units a path uses rather than in world units, and a server sends a whole number. Movement says how the two relate.
targetYf32Where it stands, in height. Carried in world units.
targetZf32Where it stands, along the other ground axis. It shares the reading of the first.

Patches

What is particular to each patch this book covers: the builds it shipped, the live checks that ran on them, every message it carries, what the specification leaves unrecorded there, and how it differs from the patch before it. Where builds of two patches are held to the same facts, they share a section.

No build of this book has these, though the chapters name them, so what the chapters say of them says nothing of this book: CapturePointValue, CooldownSet, InhibitorDied, InputLockChanged, InputLocksFlipped, MinimapHighlighted, PlaceTurret, RegionAttached, ResyncEnded, ShopHighlighted, SpellIconChanged, SpellNameChanged, SpellOffsetTargetChanged, SpellRangeChanged, SpellTargetingChanged, SurrenderFailed.

4.1

Client builds from 4.1.0.171 up to, not including, 4.2.0.2718. Patch notes: V4.1.

Build checkedPassedFailedSkippedCommitDate
4.1.0.1711103d25f5242026-10-23

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, AttackSpeedBounds, CampMarker, CharacterPreload, FloatingTextOnMap, InventorySnapshotOnMap, MinionKillCount, RegionMoved, Situation, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.

Every message of this range (267)
MessageCommand
AfkWarning183
AnimationAdvanced259
AnimationOverrides106
AppearanceCleared199
AppearancePopped102
AppearancePushed150
Attack12
AttackFrom26
AttackIndicators258
Autocast31
BalanceResult251
BalanceVote249
BalanceVoteAnswer250
BalanceVoteRefused249
BotDebug19
BotKick221
BotState169
BotTargets104
BounceMissile281
BuildingDied136
BuyItem129
Camera45
CameraAck43
CameraBehaviour114
CameraLock128
CameraLockSet119
CampCleared194
CampOpened232
CampTimer278
CancelTargeting133
CapturePointChanged210
CastSpell153
ChainTargets107
ChampionDied93
ChampionRemoved272
ChampionStats69
CharacterSelected189
Chat104
ChatAllowance248
ClientEvent162
ClientFinished140
ClientReady81
ClientVersion188
ClockConvergence117
ClockReply8
ClockSync192
CloseShop14
ContextEmote242
CreateChampion75
CreateFollower240
CreateNeutral98
CreateTurret156
CursorRings264
Damage100
DeathHistory33
DeathTimer279
DestroyMissile89
DrawPath262
DrawPathMode261
EffectAdded182
EffectAddedGroup103
EffectCount28
EffectCounter265
EffectCountGroup190
EffectRemoved122
EffectRemovedGroup147
EffectReplaced47
EffectReplacedGroup30
EmitterPause247
EmotePlayed65
Empty0
EnterLocalSight173
EnterSight185
EnterTeamSight223
Exit142
ExperienceGained16
FaceDirection79
FacePosition79
FadeMinions202
FadeRemoved49
FadeSounds94
FadeTo177
FloatingText24
FogSet170
FogToggled125
FollowerMaster241
ForceDeath27
GameEnded197
GameOptions70
GameSpeed18
GoldEarned227
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead168
GroundAttackMode257
HealthBar205
HoverIndicator245
HoverTarget244
HudDisabled187
HudHighlighted60
HudHighlightToggled78
InhibitorState42
InputLock131
InputLockToggled154
InventorySlot82
InventorySnapshot268
ItemAdded110
ItemCharges252
ItemSubstitution284
ItemUsed158
JoinSide100
KillParticle55
LeaveLocalSight52
LeaveSight80
LeaveTeamSight224
LevelCap274
LevelUp62
LoadingProgress22
Loadout41
MapPing86
MapProp207
MapPropChanged208
MarkerMoved276
MatchIdentity145
MatchStarted193
MinimapIcon215
MissileCourse59
MissileHits37
MissileLaunched109
MissileReport58
MissileRetarget237
MissileSpeed269
MissileState58
ModuleData220
ModulePacket222
MoveCamera36
MovementBounds6
MoveOrder113
MultikillCount277
MusicCue219
NavigationFlags64
NexusIdle4
NexusSkin115
ObjectiveHidden161
ObjectiveReplaced13
ObjectiveShown53
ParticleEnterTeamSight225
ParticleLeaveTeamSight226
ParticlesCreated134
ParticleSource209
Path184
PathWithSpeed130
Pause160
PauseAnimation112
Paused160
PingPlaced63
PlayAnimation175
PlayEmote71
PlayerDisconnected151
QueryStatus20
QueryStatusAnswer135
QuestEvent204
QuestUpdated139
Reconnected15
ReconnectedInMatch155
RegionAdded35
RegionRemoved50
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication195
ResourceDisplay146
ResourceKindChanged275
Respawned73
RespawnPoint212
Resume10
Resumed10
Revived46
Roster103
ScoreAdded216
ScreenTint218
SeatChampion101
SeatLoadProgress148
SeatName102
SelectObject174
ShieldAdded101
ShopEnabled239
ShopUndo266
ShopUndoCount267
Shutdown228
SideTextHidden166
SideTextRefreshed176
SideTextShown159
SoftReconnect238
SoundPlayed66
SpawnBot206
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet54
SpawnStart97
SpawnUnit123
SpellCastAnswer180
SpellCharge229
SpellCharges263
SpellCooldown132
SpellCostChanged260
SpellInSlot111
SpellLevel90
SpellNumbers126
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame91
StatisticIncremented217
StatsRequest85
StatTick39
StopAnimation40
StopAttack51
StreamChunk236
StreamChunkRange235
StreamMetadata234
StreamRequest233
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus164
SurrenderVote163
SurrenderVoteCalled200
SwapItems32
SwapItemsAnswer61
SystemMessage246
TargetHeldChampion191
TargetUnit105
TeamChanged214
TeamScore211
TipEvent108
TipShown84
TransientAck167
TutorialChatLine2
TutorialPopup178
TutorialPopupClosed203
TutorialShopOpened92
UiHighlight201
Unhandled286286
UnitDied157
UnitHighlighted88
UnitHighlightRemoved179
UnitLookAt271
UnitSpoke24
UnitStopped48
UnitText25
UpgradeSpell56
UseObject57
VersionSync83
VictoryDance196
VoiceCommand67
VoiceEvent120
VoiceEventDone5
VoiceOverride149
VolumeMuted38
WaypointAck118
WaypointGroup96
WaypointGroupAtSpeed99
WorldEvent68

4.2

Client builds from 4.2.0.2718 up to, not including, 4.3.0.495. Patch notes: V4.2.

Build checkedPassedFailedSkippedCommitDate
4.2.0.27181103843692c2026-10-23
4.2.0.2726110563b6eaf2026-10-19

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, AttackSpeedBounds, CampMarker, CharacterPreload, FloatingTextOnMap, InventorySnapshotOnMap, MinionKillCount, RegionMoved, Situation, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.

Every message of this range (267)
MessageCommand
AfkWarning183
AnimationAdvanced259
AnimationOverrides106
AppearanceCleared199
AppearancePopped102
AppearancePushed150
Attack12
AttackFrom26
AttackIndicators258
Autocast31
BalanceResult251
BalanceVote249
BalanceVoteAnswer250
BalanceVoteRefused249
BotDebug19
BotKick221
BotState169
BotTargets104
BounceMissile281
BuildingDied136
BuyItem129
Camera45
CameraAck43
CameraBehaviour114
CameraLock128
CameraLockSet119
CampCleared194
CampOpened232
CampTimer278
CancelTargeting133
CapturePointChanged210
CastSpell153
ChainTargets107
ChampionDied93
ChampionRemoved272
ChampionStats69
CharacterSelected189
Chat104
ChatAllowance248
ClientEvent162
ClientFinished140
ClientReady81
ClientVersion188
ClockConvergence117
ClockReply8
ClockSync192
CloseShop14
ContextEmote242
CreateChampion75
CreateFollower240
CreateNeutral98
CreateTurret156
CursorRings264
Damage100
DeathHistory33
DeathTimer279
DestroyMissile89
DrawPath262
DrawPathMode261
EffectAdded182
EffectAddedGroup103
EffectCount28
EffectCounter265
EffectCountGroup190
EffectRemoved122
EffectRemovedGroup147
EffectReplaced47
EffectReplacedGroup30
EmitterPause247
EmotePlayed65
Empty0
EnterLocalSight173
EnterSight185
EnterTeamSight223
Exit142
ExperienceGained16
FaceDirection79
FacePosition79
FadeMinions202
FadeRemoved49
FadeSounds94
FadeTo177
FloatingText24
FogSet170
FogToggled125
FollowerMaster241
ForceDeath27
GameEnded197
GameOptions70
GameSpeed18
GoldEarned227
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead168
GroundAttackMode257
HealthBar205
HoverIndicator245
HoverTarget244
HudDisabled187
HudHighlighted60
HudHighlightToggled78
InhibitorState42
InputLock131
InputLockToggled154
InventorySlot82
InventorySnapshot268
ItemAdded110
ItemCharges252
ItemSubstitution284
ItemUsed158
JoinSide100
KillParticle55
LeaveLocalSight52
LeaveSight80
LeaveTeamSight224
LevelCap274
LevelUp62
LoadingProgress22
Loadout41
MapPing86
MapProp207
MapPropChanged208
MarkerMoved276
MatchIdentity145
MatchStarted193
MinimapIcon215
MissileCourse59
MissileHits37
MissileLaunched109
MissileReport58
MissileRetarget237
MissileSpeed269
MissileState58
ModuleData220
ModulePacket222
MoveCamera36
MovementBounds6
MoveOrder113
MultikillCount277
MusicCue219
NavigationFlags64
NexusIdle4
NexusSkin115
ObjectiveHidden161
ObjectiveReplaced13
ObjectiveShown53
ParticleEnterTeamSight225
ParticleLeaveTeamSight226
ParticlesCreated134
ParticleSource209
Path184
PathWithSpeed130
Pause160
PauseAnimation112
Paused160
PingPlaced63
PlayAnimation175
PlayEmote71
PlayerDisconnected151
QueryStatus20
QueryStatusAnswer135
QuestEvent204
QuestUpdated139
Reconnected15
ReconnectedInMatch155
RegionAdded35
RegionRemoved50
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication195
ResourceDisplay146
ResourceKindChanged275
Respawned73
RespawnPoint212
Resume10
Resumed10
Revived46
Roster103
ScoreAdded216
ScreenTint218
SeatChampion101
SeatLoadProgress148
SeatName102
SelectObject174
ShieldAdded101
ShopEnabled239
ShopUndo266
ShopUndoCount267
Shutdown228
SideTextHidden166
SideTextRefreshed176
SideTextShown159
SoftReconnect238
SoundPlayed66
SpawnBot206
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet54
SpawnStart97
SpawnUnit123
SpellCastAnswer180
SpellCharge229
SpellCharges263
SpellCooldown132
SpellCostChanged260
SpellInSlot111
SpellLevel90
SpellNumbers126
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame91
StatisticIncremented217
StatsRequest85
StatTick39
StopAnimation40
StopAttack51
StreamChunk236
StreamChunkRange235
StreamMetadata234
StreamRequest233
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus164
SurrenderVote163
SurrenderVoteCalled200
SwapItems32
SwapItemsAnswer61
SystemMessage246
TargetHeldChampion191
TargetUnit105
TeamChanged214
TeamScore211
TipEvent108
TipShown84
TransientAck167
TutorialChatLine2
TutorialPopup178
TutorialPopupClosed203
TutorialShopOpened92
UiHighlight201
Unhandled286286
UnitDied157
UnitHighlighted88
UnitHighlightRemoved179
UnitLookAt271
UnitSpoke24
UnitStopped48
UnitText25
UpgradeSpell56
UseObject57
VersionSync83
VictoryDance196
VoiceCommand67
VoiceEvent120
VoiceEventDone5
VoiceOverride149
VolumeMuted38
WaypointAck118
WaypointGroup96
WaypointGroupAtSpeed99
WorldEvent68

Against 4.1

Where a build from 4.2.0.2718 up to, not including, 4.3.0.495 differs from one from 4.1.0.171 up to, not including, 4.2.0.2718. Anything not named here is the same in both.

Laid out differently

  • CampOpened (vectors: a-third-on-4-2, another-on-4-2, one-on-4-2)
    • spawnDuration is in 4.2 (f32), after campIcon, and not in 4.1.
    • proximityAnimations is in 4.1 and not in 4.2.
  • CreateNeutral (vectors: inactive-on-4-2)
    • spawnAnimation is in 4.2 (text, 64 bytes), after campIcon, and not in 4.1.
    • spawnDuration is in 4.2 (f32), after level, and not in 4.1.
    • spawnElapsed is in 4.2 (f32), after spawnDuration, and not in 4.1.
    • proximityAnimations is in 4.1 and not in 4.2.
  • VersionSync (vectors: one-on-4-2)
    • variants is 2 × string in 4.1 and 8 × string in 4.2.
    • features has lagMetrics at bit 18 in 4.2, and not in 4.1.
    • features has logServerAddress at bit 19 in 4.2, and not in 4.1.
    • features.unused is at bit 18, 14 bits wide, in 4.1 and at bit 20, 12 bits wide, in 4.2.

4.3

Client builds from 4.3.0.495 up to, not including, 4.4.0.1858. Patch notes: V4.3.

Build checkedPassedFailedSkippedCommitDate
4.3.0.4951103aa0fd032026-10-23

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, AttackSpeedBounds, CampMarker, CharacterPreload, FloatingTextOnMap, InventorySnapshotOnMap, RegionMoved, Situation, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.

Every message of this range (268)
MessageCommand
AfkWarning183
AnimationAdvanced259
AnimationOverrides106
AppearanceCleared199
AppearancePopped102
AppearancePushed150
Attack12
AttackFrom26
AttackIndicators258
Autocast31
BalanceResult251
BalanceVote249
BalanceVoteAnswer250
BalanceVoteRefused249
BotDebug19
BotKick221
BotState169
BotTargets104
BounceMissile281
BuildingDied136
BuyItem129
Camera45
CameraAck43
CameraBehaviour114
CameraLock128
CameraLockSet119
CampCleared194
CampOpened232
CampTimer278
CancelTargeting133
CapturePointChanged210
CastSpell153
ChainTargets107
ChampionDied93
ChampionRemoved272
ChampionStats69
CharacterSelected189
Chat104
ChatAllowance248
ClientEvent162
ClientFinished140
ClientReady81
ClientVersion188
ClockConvergence117
ClockReply8
ClockSync192
CloseShop14
ContextEmote242
CreateChampion75
CreateFollower240
CreateNeutral98
CreateTurret156
CursorRings264
Damage100
DeathHistory33
DeathTimer279
DestroyMissile89
DrawPath262
DrawPathMode261
EffectAdded182
EffectAddedGroup103
EffectCount28
EffectCounter265
EffectCountGroup190
EffectRemoved122
EffectRemovedGroup147
EffectReplaced47
EffectReplacedGroup30
EmitterPause247
EmotePlayed65
Empty0
EnterLocalSight173
EnterSight185
EnterTeamSight223
Exit142
ExperienceGained16
FaceDirection79
FacePosition79
FadeMinions202
FadeRemoved49
FadeSounds94
FadeTo177
FloatingText24
FogSet170
FogToggled125
FollowerMaster241
ForceDeath27
GameEnded197
GameOptions70
GameSpeed18
GoldEarned227
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead168
GroundAttackMode257
HealthBar205
HoverIndicator245
HoverTarget244
HudDisabled187
HudHighlighted60
HudHighlightToggled78
InhibitorState42
InputLock131
InputLockToggled154
InventorySlot82
InventorySnapshot268
ItemAdded110
ItemCharges252
ItemSubstitution284
ItemUsed158
JoinSide100
KillParticle55
LeaveLocalSight52
LeaveSight80
LeaveTeamSight224
LevelCap274
LevelUp62
LoadingProgress22
Loadout41
MapPing86
MapProp207
MapPropChanged208
MarkerMoved276
MatchIdentity145
MatchStarted193
MinimapIcon215
MinionKillCount287
MissileCourse59
MissileHits37
MissileLaunched109
MissileReport58
MissileRetarget237
MissileSpeed269
MissileState58
ModuleData220
ModulePacket222
MoveCamera36
MovementBounds6
MoveOrder113
MultikillCount277
MusicCue219
NavigationFlags64
NexusIdle4
NexusSkin115
ObjectiveHidden161
ObjectiveReplaced13
ObjectiveShown53
ParticleEnterTeamSight225
ParticleLeaveTeamSight226
ParticlesCreated134
ParticleSource209
Path184
PathWithSpeed130
Pause160
PauseAnimation112
Paused160
PingPlaced63
PlayAnimation175
PlayEmote71
PlayerDisconnected151
QueryStatus20
QueryStatusAnswer135
QuestEvent204
QuestUpdated139
Reconnected15
ReconnectedInMatch155
RegionAdded35
RegionRemoved50
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication195
ResourceDisplay146
ResourceKindChanged275
Respawned73
RespawnPoint212
Resume10
Resumed10
Revived46
Roster103
ScoreAdded216
ScreenTint218
SeatChampion101
SeatLoadProgress148
SeatName102
SelectObject174
ShieldAdded101
ShopEnabled239
ShopUndo266
ShopUndoCount267
Shutdown228
SideTextHidden166
SideTextRefreshed176
SideTextShown159
SoftReconnect238
SoundPlayed66
SpawnBot206
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet54
SpawnStart97
SpawnUnit123
SpellCastAnswer180
SpellCharge229
SpellCharges263
SpellCooldown132
SpellCostChanged260
SpellInSlot111
SpellLevel90
SpellNumbers126
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame91
StatisticIncremented217
StatsRequest85
StatTick39
StopAnimation40
StopAttack51
StreamChunk236
StreamChunkRange235
StreamMetadata234
StreamRequest233
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus164
SurrenderVote163
SurrenderVoteCalled200
SwapItems32
SwapItemsAnswer61
SystemMessage246
TargetHeldChampion191
TargetUnit105
TeamChanged214
TeamScore211
TipEvent108
TipShown84
TransientAck167
TutorialChatLine2
TutorialPopup178
TutorialPopupClosed203
TutorialShopOpened92
UiHighlight201
Unhandled286286
UnitDied157
UnitHighlighted88
UnitHighlightRemoved179
UnitLookAt271
UnitSpoke24
UnitStopped48
UnitText25
UpgradeSpell56
UseObject57
VersionSync83
VictoryDance196
VoiceCommand67
VoiceEvent120
VoiceEventDone5
VoiceOverride149
VolumeMuted38
WaypointAck118
WaypointGroup96
WaypointGroupAtSpeed99
WorldEvent68

Against 4.2

Where a build from 4.3.0.495 up to, not including, 4.4.0.1858 differs from one from 4.2.0.2718 up to, not including, 4.3.0.495. Anything not named here is the same in both.

In 4.3, not in 4.2

MessageSent byCommandWhat it does
MinionKillCountserver287 on eventsAdd one to a champion’s count of minions killed

Laid out differently

  • VersionSync (vectors: one-on-4-3)
    • features has bit18 at bit 18 in 4.3, and not in 4.2.
    • features.lagMetrics is at bit 18 in 4.2 and at bit 19 in 4.3.
    • features has eventReports at bit 20 in 4.3, and not in 4.2.
    • features.logServerAddress is at bit 19 in 4.2 and at bit 21 in 4.3.
    • features has particleOption at bit 22 in 4.3, and not in 4.2.
    • features.unused is at bit 20, 12 bits wide, in 4.2 and at bit 23, 9 bits wide, in 4.3.
    • reportingMessages is in 4.3 (8 × u8), after disabledItems, and not in 4.2.

4.4

Client builds from 4.4.0.1858 up to, not including, 4.5.0.260. Patch notes: V4.4.

Build checkedPassedFailedSkippedCommitDate
4.4.0.18581103d0fa7b02026-10-23
4.4.0.1885110563b6eaf2026-10-19

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, CampMarker, CharacterPreload, FloatingTextOnMap, InventorySnapshotOnMap, RegionMoved, Situation, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.

Every message of this range (269)
MessageCommand
AfkWarning183
AnimationAdvanced259
AnimationOverrides106
AppearanceCleared199
AppearancePopped102
AppearancePushed150
Attack12
AttackFrom26
AttackIndicators258
AttackSpeedBounds288
Autocast31
BalanceResult251
BalanceVote249
BalanceVoteAnswer250
BalanceVoteRefused249
BotDebug19
BotKick221
BotState169
BotTargets104
BounceMissile281
BuildingDied136
BuyItem129
Camera45
CameraAck43
CameraBehaviour114
CameraLock128
CameraLockSet119
CampCleared194
CampOpened232
CampTimer278
CancelTargeting133
CapturePointChanged210
CastSpell153
ChainTargets107
ChampionDied93
ChampionRemoved272
ChampionStats69
CharacterSelected189
Chat104
ChatAllowance248
ClientEvent162
ClientFinished140
ClientReady81
ClientVersion188
ClockConvergence117
ClockReply8
ClockSync192
CloseShop14
ContextEmote242
CreateChampion75
CreateFollower240
CreateNeutral98
CreateTurret156
CursorRings264
Damage100
DeathHistory33
DeathTimer279
DestroyMissile89
DrawPath262
DrawPathMode261
EffectAdded182
EffectAddedGroup103
EffectCount28
EffectCounter265
EffectCountGroup190
EffectRemoved122
EffectRemovedGroup147
EffectReplaced47
EffectReplacedGroup30
EmitterPause247
EmotePlayed65
Empty0
EnterLocalSight173
EnterSight185
EnterTeamSight223
Exit142
ExperienceGained16
FaceDirection79
FacePosition79
FadeMinions202
FadeRemoved49
FadeSounds94
FadeTo177
FloatingText24
FogSet170
FogToggled125
FollowerMaster241
ForceDeath27
GameEnded197
GameOptions70
GameSpeed18
GoldEarned227
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead168
GroundAttackMode257
HealthBar205
HoverIndicator245
HoverTarget244
HudDisabled187
HudHighlighted60
HudHighlightToggled78
InhibitorState42
InputLock131
InputLockToggled154
InventorySlot82
InventorySnapshot268
ItemAdded110
ItemCharges252
ItemSubstitution284
ItemUsed158
JoinSide100
KillParticle55
LeaveLocalSight52
LeaveSight80
LeaveTeamSight224
LevelCap274
LevelUp62
LoadingProgress22
Loadout41
MapPing86
MapProp207
MapPropChanged208
MarkerMoved276
MatchIdentity145
MatchStarted193
MinimapIcon215
MinionKillCount287
MissileCourse59
MissileHits37
MissileLaunched109
MissileReport58
MissileRetarget237
MissileSpeed269
MissileState58
ModuleData220
ModulePacket222
MoveCamera36
MovementBounds6
MoveOrder113
MultikillCount277
MusicCue219
NavigationFlags64
NexusIdle4
NexusSkin115
ObjectiveHidden161
ObjectiveReplaced13
ObjectiveShown53
ParticleEnterTeamSight225
ParticleLeaveTeamSight226
ParticlesCreated134
ParticleSource209
Path184
PathWithSpeed130
Pause160
PauseAnimation112
Paused160
PingPlaced63
PlayAnimation175
PlayEmote71
PlayerDisconnected151
QueryStatus20
QueryStatusAnswer135
QuestEvent204
QuestUpdated139
Reconnected15
ReconnectedInMatch155
RegionAdded35
RegionRemoved50
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication195
ResourceDisplay146
ResourceKindChanged275
Respawned73
RespawnPoint212
Resume10
Resumed10
Revived46
Roster103
ScoreAdded216
ScreenTint218
SeatChampion101
SeatLoadProgress148
SeatName102
SelectObject174
ShieldAdded101
ShopEnabled239
ShopUndo266
ShopUndoCount267
Shutdown228
SideTextHidden166
SideTextRefreshed176
SideTextShown159
SoftReconnect238
SoundPlayed66
SpawnBot206
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet54
SpawnStart97
SpawnUnit123
SpellCastAnswer180
SpellCharge229
SpellCharges263
SpellCooldown132
SpellCostChanged260
SpellInSlot111
SpellLevel90
SpellNumbers126
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame91
StatisticIncremented217
StatsRequest85
StatTick39
StopAnimation40
StopAttack51
StreamChunk236
StreamChunkRange235
StreamMetadata234
StreamRequest233
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus164
SurrenderVote163
SurrenderVoteCalled200
SwapItems32
SwapItemsAnswer61
SystemMessage246
TargetHeldChampion191
TargetUnit105
TeamChanged214
TeamScore211
TipEvent108
TipShown84
TransientAck167
TutorialChatLine2
TutorialPopup178
TutorialPopupClosed203
TutorialShopOpened92
UiHighlight201
Unhandled286286
UnitDied157
UnitHighlighted88
UnitHighlightRemoved179
UnitLookAt271
UnitSpoke24
UnitStopped48
UnitText25
UpgradeSpell56
UseObject57
VersionSync83
VictoryDance196
VoiceCommand67
VoiceEvent120
VoiceEventDone5
VoiceOverride149
VolumeMuted38
WaypointAck118
WaypointGroup96
WaypointGroupAtSpeed99
WorldEvent68

Against 4.3

Where a build from 4.4.0.1858 up to, not including, 4.5.0.260 differs from one from 4.3.0.495 up to, not including, 4.4.0.1858. Anything not named here is the same in both.

In 4.4, not in 4.3

MessageSent byCommandWhat it does
AttackSpeedBoundsserver288 on eventsPut a ceiling or a floor on how fast a unit attacks

Laid out differently

  • CampCleared (vectors: one-on-4-4)
    • does has firstSide at bit 1 in 4.4, and not in 4.3.
    • does.unused is at bit 1, 7 bits wide, in 4.3 and at bit 2, 6 bits wide, in 4.4.
  • GameEnded
    • result has surrendered at bit 1 in 4.4, and not in 4.3.
    • result.unused is at bit 1, 7 bits wide, in 4.3 and at bit 2, 6 bits wide, in 4.4.
  • StartGame
    • rules.unused is at bit 2, 6 bits wide, in 4.3 and at bit 1, 7 bits wide, in 4.4.
    • rules has notice at bit 1 in 4.3, and not in 4.4.

4.5

Client builds from 4.5.0.260 up to, not including, 4.6.0.193. Patch notes: V4.5.

Build checkedPassedFailedSkippedCommitDate
4.5.0.2601103781bbd42026-10-23
4.5.0.266110563b6eaf2026-10-19

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, CampMarker, CharacterPreload, FloatingTextOnMap, InventorySnapshotOnMap, RegionMoved, Situation, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.

Every message of this range (267)
MessageCommand
AfkWarning183
AnimationAdvanced259
AnimationOverrides106
AppearanceCleared199
AppearancePopped102
AppearancePushed150
Attack12
AttackFrom26
AttackIndicators258
AttackSpeedBounds288
Autocast31
BalanceResult251
BalanceVote249
BalanceVoteAnswer250
BalanceVoteRefused249
BotDebug19
BotKick221
BotState169
BotTargets104
BounceMissile281
BuildingDied136
BuyItem129
Camera45
CameraAck43
CameraBehaviour114
CameraLock128
CameraLockSet119
CampCleared194
CampOpened232
CampTimer278
CancelTargeting133
CapturePointChanged210
CastSpell153
ChainTargets107
ChampionDied93
ChampionRemoved272
ChampionStats69
CharacterSelected189
Chat104
ChatAllowance248
ClientEvent162
ClientFinished140
ClientReady81
ClientVersion188
ClockConvergence117
ClockReply8
ClockSync192
CloseShop14
ContextEmote242
CreateChampion75
CreateFollower240
CreateNeutral98
CreateTurret156
CursorRings264
Damage100
DeathHistory33
DeathTimer279
DestroyMissile89
DrawPath262
DrawPathMode261
EffectAdded182
EffectAddedGroup103
EffectCount28
EffectCounter265
EffectCountGroup190
EffectRemoved122
EffectRemovedGroup147
EffectReplaced47
EffectReplacedGroup30
EmitterPause247
EmotePlayed65
Empty0
EnterLocalSight173
EnterSight185
EnterTeamSight223
Exit142
ExperienceGained16
FaceDirection79
FacePosition79
FadeMinions202
FadeRemoved49
FadeSounds94
FadeTo177
FloatingText24
FogSet170
FogToggled125
FollowerMaster241
ForceDeath27
GameEnded197
GameOptions70
GameSpeed18
GoldEarned227
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead168
GroundAttackMode257
HealthBar205
HoverIndicator245
HoverTarget244
HudDisabled187
HudHighlighted60
HudHighlightToggled78
InhibitorState42
InputLock131
InputLockToggled154
InventorySlot82
InventorySnapshot268
ItemAdded110
ItemCharges252
ItemSubstitution284
ItemUsed158
JoinSide100
KillParticle55
LeaveLocalSight52
LeaveSight80
LeaveTeamSight224
LevelCap274
LevelUp62
LoadingProgress22
Loadout41
MapPing86
MapProp207
MapPropChanged208
MarkerMoved276
MatchIdentity145
MatchStarted193
MinimapIcon215
MinionKillCount287
MissileCourse59
MissileHits37
MissileLaunched109
MissileReport58
MissileRetarget237
MissileSpeed269
MissileState58
MoveCamera36
MovementBounds6
MoveOrder113
MultikillCount277
MusicCue219
NavigationFlags64
NexusIdle4
NexusSkin115
ObjectiveHidden161
ObjectiveReplaced13
ObjectiveShown53
ParticleEnterTeamSight225
ParticleLeaveTeamSight226
ParticlesCreated134
ParticleSource209
Path184
PathWithSpeed130
Pause160
PauseAnimation112
Paused160
PingPlaced63
PlayAnimation175
PlayEmote71
PlayerDisconnected151
QueryStatus20
QueryStatusAnswer135
QuestEvent204
QuestUpdated139
Reconnected15
ReconnectedInMatch155
RegionAdded35
RegionRemoved50
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication195
ResourceDisplay146
ResourceKindChanged275
Respawned73
RespawnPoint212
Resume10
Resumed10
Revived46
Roster103
ScoreAdded216
ScreenTint218
SeatChampion101
SeatLoadProgress148
SeatName102
SelectObject174
ShieldAdded101
ShopEnabled239
ShopUndo266
ShopUndoCount267
Shutdown228
SideTextHidden166
SideTextRefreshed176
SideTextShown159
SoftReconnect238
SoundPlayed66
SpawnBot206
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet54
SpawnStart97
SpawnUnit123
SpellCastAnswer180
SpellCharge229
SpellCharges263
SpellCooldown132
SpellCostChanged260
SpellInSlot111
SpellLevel90
SpellNumbers126
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame91
StatisticIncremented217
StatsRequest85
StatTick39
StopAnimation40
StopAttack51
StreamChunk236
StreamChunkRange235
StreamMetadata234
StreamRequest233
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus164
SurrenderVote163
SurrenderVoteCalled200
SwapItems32
SwapItemsAnswer61
SystemMessage246
TargetHeldChampion191
TargetUnit105
TeamChanged214
TeamScore211
TipEvent108
TipShown84
TransientAck167
TutorialChatLine2
TutorialPopup178
TutorialPopupClosed203
TutorialShopOpened92
UiHighlight201
Unhandled286286
UnitDied157
UnitHighlighted88
UnitHighlightRemoved179
UnitLookAt271
UnitSpoke24
UnitStopped48
UnitText25
UpgradeSpell56
UseObject57
VersionSync83
VictoryDance196
VoiceCommand67
VoiceEvent120
VoiceEventDone5
VoiceOverride149
VolumeMuted38
WaypointAck118
WaypointGroup96
WaypointGroupAtSpeed99
WorldEvent68

Against 4.4

Where a build from 4.5.0.260 up to, not including, 4.6.0.193 differs from one from 4.4.0.1858 up to, not including, 4.5.0.260. Anything not named here is the same in both.

In 4.4, not in 4.5

MessageSent byCommand it had
ModuleDataserver220 on events
ModulePacketclient222 on requests

Laid out differently

  • AppearancePushed
    • how has replacePackage at bit 2 in 4.5, and not in 4.4.
    • how.unused is at bit 2, 6 bits wide, in 4.4 and at bit 3, 5 bits wide, in 4.5.
  • ClientReady
    • maskedStatus is in 4.4 and not in 4.5.
    • mask is in 4.4 and not in 4.5.
  • SpellLevel
    • level is in 4.5 (u32), after slot, and not in 4.4.
  • StatsRequest (vectors: another-on-4-5, one-on-4-5)
    • moduleOne is in 4.5 (u32) at the start, and not in 4.4.
  • VersionSync (vectors: one-on-4-5)
    • features names bit 15 skinParticles in 4.4 and bit15 in 4.5.
    • features has recommendedPages at bit 9 in 4.5, and not in 4.4.
    • features.skillshotOutline is at bit 9 in 4.4 and at bit 10 in 4.5.
    • features.championIndicator is at bit 10 in 4.4 and at bit 11 in 4.5.
    • features.altBounty is at bit 11 in 4.4 and at bit 12 in 4.5.
    • features.waveOrder is at bit 12 in 4.4 and at bit 13 in 4.5.
    • features.turretRange is at bit 13 in 4.4 and at bit 14 in 4.5.
    • features has networkMetrics at bit 17 in 4.5, and not in 4.4.
    • features.hardwareMetrics is at bit 17 in 4.4 and at bit 18 in 4.5.
    • features has bit19 at bit 19 in 4.5, and not in 4.4.
    • features.lagMetrics is at bit 19 in 4.4 and at bit 20 in 4.5.
    • features.eventReports is at bit 20 in 4.4 and at bit 21 in 4.5.
    • features.logServerAddress is at bit 21 in 4.4 and at bit 22 in 4.5.
    • features.particleOption is at bit 22 in 4.4 and at bit 23 in 4.5.
    • features.unused is at bit 23, 9 bits wide, in 4.4 and at bit 24, 8 bits wide, in 4.5.
    • features has bit14 at bit 14 in 4.4, and not in 4.5.
    • features has bit18 at bit 18 in 4.4, and not in 4.5.
    • reportingMessages is 8 × u8 in 4.4 and 10 × u8 in 4.5.

4.6

Client builds from 4.6.0.193 up to, not including, 4.7.0.296. Patch notes: V4.6.

Build checkedPassedFailedSkippedCommitDate
4.6.0.19311034f1d1692026-10-22
4.6.0.204110563b6eaf2026-10-19

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, CampMarker, FloatingTextOnMap, InventorySnapshotOnMap, RegionMoved, Situation, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.

Every message of this range (268)
MessageCommand
AfkWarning183
AnimationAdvanced259
AnimationOverrides106
AppearanceCleared199
AppearancePopped102
AppearancePushed150
Attack12
AttackFrom26
AttackIndicators258
AttackSpeedBounds288
Autocast31
BalanceResult251
BalanceVote249
BalanceVoteAnswer250
BalanceVoteRefused249
BotDebug19
BotKick221
BotState169
BotTargets104
BounceMissile281
BuildingDied136
BuyItem129
Camera45
CameraAck43
CameraBehaviour114
CameraLock128
CameraLockSet119
CampCleared194
CampOpened232
CampTimer278
CancelTargeting133
CapturePointChanged210
CastSpell153
ChainTargets107
ChampionDied93
ChampionRemoved272
ChampionStats69
CharacterPreload137
CharacterSelected189
Chat104
ChatAllowance248
ClientEvent162
ClientFinished140
ClientReady81
ClientVersion188
ClockConvergence117
ClockReply8
ClockSync192
CloseShop14
ContextEmote242
CreateChampion75
CreateFollower240
CreateNeutral98
CreateTurret156
CursorRings264
Damage100
DeathHistory33
DeathTimer279
DestroyMissile89
DrawPath262
DrawPathMode261
EffectAdded182
EffectAddedGroup103
EffectCount28
EffectCounter265
EffectCountGroup190
EffectRemoved122
EffectRemovedGroup147
EffectReplaced47
EffectReplacedGroup30
EmitterPause247
EmotePlayed65
Empty0
EnterLocalSight173
EnterSight185
EnterTeamSight223
Exit142
ExperienceGained16
FaceDirection79
FacePosition79
FadeMinions202
FadeRemoved49
FadeSounds94
FadeTo177
FloatingText24
FogSet170
FogToggled125
FollowerMaster241
ForceDeath27
GameEnded197
GameOptions70
GameSpeed18
GoldEarned227
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead168
GroundAttackMode257
HealthBar205
HoverIndicator245
HoverTarget244
HudDisabled187
HudHighlighted60
HudHighlightToggled78
InhibitorState42
InputLock131
InputLockToggled154
InventorySlot82
InventorySnapshot268
ItemAdded110
ItemCharges252
ItemSubstitution284
ItemUsed158
JoinSide100
KillParticle55
LeaveLocalSight52
LeaveSight80
LeaveTeamSight224
LevelCap274
LevelUp62
LoadingProgress22
Loadout41
MapPing86
MapProp207
MapPropChanged208
MarkerMoved276
MatchIdentity145
MatchStarted193
MinimapIcon215
MinionKillCount287
MissileCourse59
MissileHits37
MissileLaunched109
MissileReport58
MissileRetarget237
MissileSpeed269
MissileState58
MoveCamera36
MovementBounds6
MoveOrder113
MultikillCount277
MusicCue219
NavigationFlags64
NexusIdle4
NexusSkin115
ObjectiveHidden161
ObjectiveReplaced13
ObjectiveShown53
ParticleEnterTeamSight225
ParticleLeaveTeamSight226
ParticlesCreated134
ParticleSource209
Path184
PathWithSpeed130
Pause160
PauseAnimation112
Paused160
PingPlaced63
PlayAnimation175
PlayEmote71
PlayerDisconnected151
QueryStatus20
QueryStatusAnswer135
QuestEvent204
QuestUpdated139
Reconnected15
ReconnectedInMatch155
RegionAdded35
RegionRemoved50
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication195
ResourceDisplay146
ResourceKindChanged275
Respawned73
RespawnPoint212
Resume10
Resumed10
Revived46
Roster103
ScoreAdded216
ScreenTint218
SeatChampion101
SeatLoadProgress148
SeatName102
SelectObject174
ShieldAdded101
ShopEnabled239
ShopUndo266
ShopUndoCount267
Shutdown228
SideTextHidden166
SideTextRefreshed176
SideTextShown159
SoftReconnect238
SoundPlayed66
SpawnBot206
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet54
SpawnStart97
SpawnUnit123
SpellCastAnswer180
SpellCharge229
SpellCharges263
SpellCooldown132
SpellCostChanged260
SpellInSlot111
SpellLevel90
SpellNumbers126
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame91
StatisticIncremented217
StatsRequest85
StatTick39
StopAnimation40
StopAttack51
StreamChunk236
StreamChunkRange235
StreamMetadata234
StreamRequest233
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus164
SurrenderVote163
SurrenderVoteCalled200
SwapItems32
SwapItemsAnswer61
SystemMessage246
TargetHeldChampion191
TargetUnit105
TeamChanged214
TeamScore211
TipEvent108
TipShown84
TransientAck167
TutorialChatLine2
TutorialPopup178
TutorialPopupClosed203
TutorialShopOpened92
UiHighlight201
Unhandled286286
UnitDied157
UnitHighlighted88
UnitHighlightRemoved179
UnitLookAt271
UnitSpoke24
UnitStopped48
UnitText25
UpgradeSpell56
UseObject57
VersionSync83
VictoryDance196
VoiceCommand67
VoiceEvent120
VoiceEventDone5
VoiceOverride149
VolumeMuted38
WaypointAck118
WaypointGroup96
WaypointGroupAtSpeed99
WorldEvent68

Against 4.5

Where a build from 4.6.0.193 up to, not including, 4.7.0.296 differs from one from 4.5.0.260 up to, not including, 4.6.0.193. Anything not named here is the same in both.

In 4.6, not in 4.5

MessageSent byCommandWhat it does
CharacterPreloadserver137 on eventsHave a character and a skin of it loaded ahead of need

Laid out differently

  • ClientEvent (vectors: altar-captured-on-4-6, altar-captured-watched-on-4-6, baron-killed-on-4-6, baron-killed-watched-on-4-6, baron-stolen-on-4-6, buff-on-4-6, consumable-bought-on-4-6, critical-strike-on-4-6, crowd-control-on-4-6, damage-dealt-on-4-6, damage-taken-on-4-6, death-assist-on-4-6, died-on-4-6, dragon-killed-on-4-6, dragon-killed-watched-on-4-6, dragon-stolen-on-4-6, gold-earned-on-4-6, gold-spent-on-4-6, heal-cast-on-4-6, heal-on-4-6, item-bought-on-4-6, item-callout-on-4-6, item-changed-on-4-6, item-removed-on-4-6, item-sold-on-4-6, item-substituted-on-4-6, killing-spree-on-4-6, minion-killed-on-4-6, monster-killed-on-4-6, one-on-4-6, removed-on-4-6, spawned-on-4-6, spider-killed-on-4-6, spider-killed-watched-on-4-6, turret-damaged-on-4-6, turret-died-on-4-6, undo-changed-on-4-6)
    • event takes 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemCallout, 91 itemChanged, 92 undoChanged, 93 itemSubstituted, 112 minionsSpawned, 113 welcome, 114 startNoticeTwo, 115 startNoticeThree, 119 scoreboardOpened, 144 dragonKilled, 145 dragonKilledWatched, 146 dragonStolen, 147 baronKilled, 148 baronKilledWatched, 149 baronStolen, 150 spiderKilled, 151 spiderKilledWatched, 152 altarCaptured, 153 altarCapturedWatched, 154 wardPlaced, 155 wardKilled in 4.6 and not in 4.5.
    • event takes 29 inhibitorKilled, 30 inhibitorDied, 31 inhibitorRespawningSoon, 34 turretKilled, 35 turretDied, 36 turretDamaged, 37 minionKilled, 38 minionDenied, 39 monsterKilled, 40 largeMonsterKilled, 41 redBuffTaken, 42 blueBuffTaken, 43 nexusKilled, 44 nexusDied, 45 heal, 46 healCast, 47 buff, 48 crowdControl, 49 killingSpree, 56 killDuringSpree, 63 doubleKillDuringSpree, 64 tripleKillDuringSpree, 65 quadraKillDuringSpree, 68 deathAssist, 69 playerQuit, 70 playerLeft, 71 playerReconnected, 86 itemBought, 87 itemSold, 88 itemRemoved, 89 itemCallout, 90 itemChanged, 91 undoChanged, 92 itemSubstituted, 111 minionsSpawned, 112 welcome, 113 startNoticeTwo, 114 startNoticeThree, 118 scoreboardOpened, 143 dragonKilled, 144 dragonKilledWatched, 145 dragonStolen, 146 baronKilled, 147 baronKilledWatched, 148 baronStolen, 149 spiderKilled, 150 spiderKilledWatched, 151 altarCaptured, 152 altarCapturedWatched, 153 wardPlaced, 154 wardKilled in 4.5 and not in 4.6.
    • value is present when event = 25 or 86 or 87 or 88 or 90 or 91 or 151 or 152 in 4.5, and present when event = 25 or 87 or 88 or 89 or 91 or 92 or 152 or 153 in 4.6.
    • spree is present when event = 49 in 4.5, and present when event = 50 in 4.6.
    • heal is present when event = 45 or 46 in 4.5, and present when event = 46 or 47 in 4.6.
    • effect is present when event = 47 or 48 in 4.5, and present when event = 48 or 49 in 4.6.
    • buff is present when event = 48 in 4.5, and present when event = 49 in 4.6.
    • assist is present when event = 68 in 4.5, and present when event = 69 in 4.6.
    • kill is present when event = 1 or 2 or 35 or 36 or 37 or 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 in 4.5, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.6.
    • monster is present when event = 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 in 4.5, and present when event = 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.6.
    • callout is present when event = 89 in 4.5, and present when event = 90 in 4.6.
    • substitution is present when event = 92 in 4.5, and present when event = 93 in 4.6.
  • DeathHistory (vectors: one-on-4-6)
    • entries[].event takes 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemCallout, 91 itemChanged, 92 undoChanged, 93 itemSubstituted, 112 minionsSpawned, 113 welcome, 114 startNoticeTwo, 115 startNoticeThree, 119 scoreboardOpened, 144 dragonKilled, 145 dragonKilledWatched, 146 dragonStolen, 147 baronKilled, 148 baronKilledWatched, 149 baronStolen, 150 spiderKilled, 151 spiderKilledWatched, 152 altarCaptured, 153 altarCapturedWatched, 154 wardPlaced, 155 wardKilled in 4.6 and not in 4.5.
    • entries[].event takes 29 inhibitorKilled, 30 inhibitorDied, 31 inhibitorRespawningSoon, 34 turretKilled, 35 turretDied, 36 turretDamaged, 37 minionKilled, 38 minionDenied, 39 monsterKilled, 40 largeMonsterKilled, 41 redBuffTaken, 42 blueBuffTaken, 43 nexusKilled, 44 nexusDied, 45 heal, 46 healCast, 47 buff, 48 crowdControl, 49 killingSpree, 56 killDuringSpree, 63 doubleKillDuringSpree, 64 tripleKillDuringSpree, 65 quadraKillDuringSpree, 68 deathAssist, 69 playerQuit, 70 playerLeft, 71 playerReconnected, 86 itemBought, 87 itemSold, 88 itemRemoved, 89 itemCallout, 90 itemChanged, 91 undoChanged, 92 itemSubstituted, 111 minionsSpawned, 112 welcome, 113 startNoticeTwo, 114 startNoticeThree, 118 scoreboardOpened, 143 dragonKilled, 144 dragonKilledWatched, 145 dragonStolen, 146 baronKilled, 147 baronKilledWatched, 148 baronStolen, 149 spiderKilled, 150 spiderKilledWatched, 151 altarCaptured, 152 altarCapturedWatched, 153 wardPlaced, 154 wardKilled in 4.5 and not in 4.6.
    • entries[].value is present when event = 25 or 86 or 87 or 88 or 90 or 91 or 151 or 152 in 4.5, and present when event = 25 or 87 or 88 or 89 or 91 or 92 or 152 or 153 in 4.6.
    • entries[].spree is present when event = 49 in 4.5, and present when event = 50 in 4.6.
    • entries[].heal is present when event = 45 or 46 in 4.5, and present when event = 46 or 47 in 4.6.
    • entries[].effect is present when event = 47 or 48 in 4.5, and present when event = 48 or 49 in 4.6.
    • entries[].buff is present when event = 48 in 4.5, and present when event = 49 in 4.6.
    • entries[].assist is present when event = 68 in 4.5, and present when event = 69 in 4.6.
    • entries[].kill is present when event = 1 or 2 or 35 or 36 or 37 or 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 in 4.5, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.6.
    • entries[].monster is present when event = 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 in 4.5, and present when event = 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.6.
    • entries[].callout is present when event = 89 in 4.5, and present when event = 90 in 4.6.
    • entries[].substitution is present when event = 92 in 4.5, and present when event = 93 in 4.6.
  • VersionSync (vectors: one-on-4-6)
    • reportingMessages is 10 × u8 in 4.5 and 11 × u8 in 4.6.
  • WorldEvent (vectors: a-third-on-4-6, altar-captured-on-4-6, altar-captured-watched-on-4-6, another-on-4-6, baron-killed-on-4-6, baron-killed-watched-on-4-6, baron-stolen-on-4-6, buff-on-4-6, consumable-bought-on-4-6, critical-strike-on-4-6, crowd-control-on-4-6, damage-dealt-on-4-6, damage-taken-on-4-6, death-assist-on-4-6, died-on-4-6, dragon-killed-on-4-6, dragon-killed-watched-on-4-6, dragon-stolen-on-4-6, gold-earned-on-4-6, gold-spent-on-4-6, heal-cast-on-4-6, heal-on-4-6, inhibitor-died-on-4-6, item-bought-on-4-6, item-callout-on-4-6, item-changed-on-4-6, item-removed-on-4-6, item-sold-on-4-6, item-substituted-on-4-6, killing-spree-on-4-6, minion-killed-on-4-6, monster-killed-on-4-6, one-on-4-6, removed-on-4-6, spawned-on-4-6, spider-killed-on-4-6, spider-killed-watched-on-4-6, start-notice-three-on-4-6, start-notice-two-on-4-6, turret-damaged-on-4-6, turret-died-on-4-6, undo-changed-on-4-6, welcome-on-4-6)
    • event takes 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemCallout, 91 itemChanged, 92 undoChanged, 93 itemSubstituted, 112 minionsSpawned, 113 welcome, 114 startNoticeTwo, 115 startNoticeThree, 119 scoreboardOpened, 121 nexusCrystalStarted, 144 dragonKilled, 145 dragonKilledWatched, 146 dragonStolen, 147 baronKilled, 148 baronKilledWatched, 149 baronStolen, 150 spiderKilled, 151 spiderKilledWatched, 152 altarCaptured, 153 altarCapturedWatched, 154 wardPlaced, 155 wardKilled in 4.6 and not in 4.5.
    • event takes 29 inhibitorKilled, 30 inhibitorDied, 31 inhibitorRespawningSoon, 34 turretKilled, 35 turretDied, 36 turretDamaged, 37 minionKilled, 38 minionDenied, 39 monsterKilled, 40 largeMonsterKilled, 41 redBuffTaken, 42 blueBuffTaken, 43 nexusKilled, 44 nexusDied, 45 heal, 46 healCast, 47 buff, 48 crowdControl, 49 killingSpree, 56 killDuringSpree, 63 doubleKillDuringSpree, 64 tripleKillDuringSpree, 65 quadraKillDuringSpree, 68 deathAssist, 69 playerQuit, 70 playerLeft, 71 playerReconnected, 86 itemBought, 87 itemSold, 88 itemRemoved, 89 itemCallout, 90 itemChanged, 91 undoChanged, 92 itemSubstituted, 111 minionsSpawned, 112 welcome, 113 startNoticeTwo, 114 startNoticeThree, 118 scoreboardOpened, 120 nexusCrystalStarted, 143 dragonKilled, 144 dragonKilledWatched, 145 dragonStolen, 146 baronKilled, 147 baronKilledWatched, 148 baronStolen, 149 spiderKilled, 150 spiderKilledWatched, 151 altarCaptured, 152 altarCapturedWatched, 153 wardPlaced, 154 wardKilled in 4.5 and not in 4.6.
    • value is present when event = 25 or 86 or 87 or 88 or 90 or 91 or 151 or 152 in 4.5, and present when event = 25 or 87 or 88 or 89 or 91 or 92 or 152 or 153 in 4.6.
    • spree is present when event = 49 in 4.5, and present when event = 50 in 4.6.
    • heal is present when event = 45 or 46 in 4.5, and present when event = 46 or 47 in 4.6.
    • effect is present when event = 47 or 48 in 4.5, and present when event = 48 or 49 in 4.6.
    • buff is present when event = 48 in 4.5, and present when event = 49 in 4.6.
    • assist is present when event = 68 in 4.5, and present when event = 69 in 4.6.
    • kill is present when event = 1 or 2 or 35 or 36 or 37 or 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 in 4.5, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.6.
    • monster is present when event = 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 in 4.5, and present when event = 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.6.
    • callout is present when event = 89 in 4.5, and present when event = 90 in 4.6.
    • substitution is present when event = 92 in 4.5, and present when event = 93 in 4.6.
    • map is present when event = 112 or 113 or 114 or 115 or 116 in 4.5, and present when event = 113 or 114 or 115 or 116 or 117 in 4.6.
    • inhibitorGold is present when event = 30 in 4.5, and present when event = 31 in 4.6.
    • inhibitorAssistCount is present when event = 30 in 4.5, and present when event = 31 in 4.6.
    • inhibitorAssists is present when event = 30 in 4.5, and present when event = 31 in 4.6.

4.7

Client builds from 4.7.0.296 up to, not including, 4.8.0.189. Patch notes: V4.7.

Build checkedPassedFailedSkippedCommitDate
4.7.0.296110342edced2026-10-22
4.7.0.298110563b6eaf2026-10-19

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, CampMarker, FloatingTextOnMap, InventorySnapshotOnMap, RegionMoved, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.

Every message of this range (269)
MessageCommand
AfkWarning183
AnimationAdvanced259
AnimationOverrides106
AppearanceCleared199
AppearancePopped102
AppearancePushed150
Attack12
AttackFrom26
AttackIndicators258
AttackSpeedBounds288
Autocast31
BalanceResult251
BalanceVote249
BalanceVoteAnswer250
BalanceVoteRefused249
BotDebug19
BotKick221
BotState169
BotTargets104
BounceMissile281
BuildingDied136
BuyItem129
Camera45
CameraAck43
CameraBehaviour114
CameraLock128
CameraLockSet119
CampCleared194
CampOpened232
CampTimer278
CancelTargeting133
CapturePointChanged210
CastSpell153
ChainTargets107
ChampionDied93
ChampionRemoved272
ChampionStats69
CharacterPreload137
CharacterSelected189
Chat104
ChatAllowance248
ClientEvent162
ClientFinished140
ClientReady81
ClientVersion188
ClockConvergence117
ClockReply8
ClockSync192
CloseShop14
ContextEmote242
CreateChampion75
CreateFollower240
CreateNeutral98
CreateTurret156
CursorRings264
Damage100
DeathHistory33
DeathTimer279
DestroyMissile89
DrawPath262
DrawPathMode261
EffectAdded182
EffectAddedGroup103
EffectCount28
EffectCounter265
EffectCountGroup190
EffectRemoved122
EffectRemovedGroup147
EffectReplaced47
EffectReplacedGroup30
EmitterPause247
EmotePlayed65
Empty0
EnterLocalSight173
EnterSight185
EnterTeamSight223
Exit142
ExperienceGained16
FaceDirection79
FacePosition79
FadeMinions202
FadeRemoved49
FadeSounds94
FadeTo177
FloatingText24
FogSet170
FogToggled125
FollowerMaster241
ForceDeath27
GameEnded197
GameOptions70
GameSpeed18
GoldEarned227
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead168
GroundAttackMode257
HealthBar205
HoverIndicator245
HoverTarget244
HudDisabled187
HudHighlighted60
HudHighlightToggled78
InhibitorState42
InputLock131
InputLockToggled154
InventorySlot82
InventorySnapshot268
ItemAdded110
ItemCharges252
ItemSubstitution284
ItemUsed158
JoinSide100
KillParticle55
LeaveLocalSight52
LeaveSight80
LeaveTeamSight224
LevelCap274
LevelUp62
LoadingProgress22
Loadout41
MapPing86
MapProp207
MapPropChanged208
MarkerMoved276
MatchIdentity145
MatchStarted193
MinimapIcon215
MinionKillCount287
MissileCourse59
MissileHits37
MissileLaunched109
MissileReport58
MissileRetarget237
MissileSpeed269
MissileState58
MoveCamera36
MovementBounds6
MoveOrder113
MultikillCount277
MusicCue219
NavigationFlags64
NexusIdle4
NexusSkin115
ObjectiveHidden161
ObjectiveReplaced13
ObjectiveShown53
ParticleEnterTeamSight225
ParticleLeaveTeamSight226
ParticlesCreated134
ParticleSource209
Path184
PathWithSpeed130
Pause160
PauseAnimation112
Paused160
PingPlaced63
PlayAnimation175
PlayEmote71
PlayerDisconnected151
QueryStatus20
QueryStatusAnswer135
QuestEvent204
QuestUpdated139
Reconnected15
ReconnectedInMatch155
RegionAdded35
RegionRemoved50
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication195
ResourceDisplay146
ResourceKindChanged275
Respawned73
RespawnPoint212
Resume10
Resumed10
Revived46
Roster103
ScoreAdded216
ScreenTint218
SeatChampion101
SeatLoadProgress148
SeatName102
SelectObject174
ShieldAdded101
ShopEnabled239
ShopUndo266
ShopUndoCount267
Shutdown228
SideTextHidden166
SideTextRefreshed176
SideTextShown159
Situation289
SoftReconnect238
SoundPlayed66
SpawnBot206
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet54
SpawnStart97
SpawnUnit123
SpellCastAnswer180
SpellCharge229
SpellCharges263
SpellCooldown132
SpellCostChanged260
SpellInSlot111
SpellLevel90
SpellNumbers126
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame91
StatisticIncremented217
StatsRequest85
StatTick39
StopAnimation40
StopAttack51
StreamChunk236
StreamChunkRange235
StreamMetadata234
StreamRequest233
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus164
SurrenderVote163
SurrenderVoteCalled200
SwapItems32
SwapItemsAnswer61
SystemMessage246
TargetHeldChampion191
TargetUnit105
TeamChanged214
TeamScore211
TipEvent108
TipShown84
TransientAck167
TutorialChatLine2
TutorialPopup178
TutorialPopupClosed203
TutorialShopOpened92
UiHighlight201
Unhandled286286
UnitDied157
UnitHighlighted88
UnitHighlightRemoved179
UnitLookAt271
UnitSpoke24
UnitStopped48
UnitText25
UpgradeSpell56
UseObject57
VersionSync83
VictoryDance196
VoiceCommand67
VoiceEvent120
VoiceEventDone5
VoiceOverride149
VolumeMuted38
WaypointAck118
WaypointGroup96
WaypointGroupAtSpeed99
WorldEvent68

Against 4.6

Where a build from 4.7.0.296 up to, not including, 4.8.0.189 differs from one from 4.6.0.193 up to, not including, 4.7.0.296. Anything not named here is the same in both.

In 4.7, not in 4.6

MessageSent byCommandWhat it does
Situationserver289 on eventsTell a champion something has come about

Laid out differently

  • InventorySnapshot (vectors: one-on-4-7)
    • items is 9 × record in 4.6 and 10 × record in 4.7.
    • cooldowns is 9 × f32 in 4.6 and 10 × f32 in 4.7.
  • SpellNumbers
    • entries is count in entryCount × record in 4.6 and count in entryCount × SpellNumberSet in 4.7.
    • entries[].unit is in 4.6 and not in 4.7.
    • entries[].slot is in 4.6 and not in 4.7.
    • entries[].values is in 4.6 and not in 4.7.
    • entries[].hidden is in 4.6 and not in 4.7.
  • VersionSync (vectors: one-on-4-7)
    • features.unused is at bit 24, 8 bits wide, in 4.6 and at bit 23, 9 bits wide, in 4.7.
    • features has particleOption at bit 23 in 4.6, and not in 4.7.

Structs

Chapters

  • In the values chapter, a passage holds for 4.6 and not 4.7: A champion’s own book ends at slot 60.
  • In the values chapter, a passage holds for 4.7 and not 4.6: A champion’s own book runs on to slot 62: slot 61 is using an object on the field (see UseObject), and slot 62 the champion’s passive.
  • In the values chapter, a passage holds for 4.6 and not 4.7: A champion’s inventory ends at slot 38.
  • In the values chapter, a passage holds for 4.7 and not 4.6: A champion’s inventory ends at slot 39.

4.8

Client builds from 4.8.0.189 up to, not including, 4.9.0.239. Patch notes: V4.8.

Build checkedPassedFailedSkippedCommitDate
4.8.0.1891103a6e9f3a2026-10-22

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, CampMarker, FloatingTextOnMap, InventorySnapshotOnMap, RegionMoved, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.

Every message of this range (269)
MessageCommand
AfkWarning183
AnimationAdvanced259
AnimationOverrides106
AppearanceCleared199
AppearancePopped102
AppearancePushed150
Attack12
AttackFrom26
AttackIndicators258
AttackSpeedBounds288
Autocast31
BalanceResult251
BalanceVote249
BalanceVoteAnswer250
BalanceVoteRefused249
BotDebug19
BotKick221
BotState169
BotTargets104
BounceMissile281
BuildingDied136
BuyItem129
Camera45
CameraAck43
CameraBehaviour114
CameraLock128
CameraLockSet119
CampCleared194
CampOpened232
CampTimer278
CancelTargeting133
CapturePointChanged210
CastSpell153
ChainTargets107
ChampionDied93
ChampionRemoved272
ChampionStats69
CharacterPreload137
CharacterSelected189
Chat104
ChatAllowance248
ClientEvent162
ClientFinished140
ClientReady81
ClientVersion188
ClockConvergence117
ClockReply8
ClockSync192
CloseShop14
ContextEmote242
CreateChampion75
CreateFollower240
CreateNeutral98
CreateTurret156
CursorRings264
Damage100
DeathHistory33
DeathTimer279
DestroyMissile89
DrawPath262
DrawPathMode261
EffectAdded182
EffectAddedGroup103
EffectCount28
EffectCounter265
EffectCountGroup190
EffectRemoved122
EffectRemovedGroup147
EffectReplaced47
EffectReplacedGroup30
EmitterPause247
EmotePlayed65
Empty0
EnterLocalSight173
EnterSight185
EnterTeamSight223
Exit142
ExperienceGained16
FaceDirection79
FacePosition79
FadeMinions202
FadeRemoved49
FadeSounds94
FadeTo177
FloatingText24
FogSet170
FogToggled125
FollowerMaster241
ForceDeath27
GameEnded197
GameOptions70
GameSpeed18
GoldEarned227
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead168
GroundAttackMode257
HealthBar205
HoverIndicator245
HoverTarget244
HudDisabled187
HudHighlighted60
HudHighlightToggled78
InhibitorState42
InputLock131
InputLockToggled154
InventorySlot82
InventorySnapshot268
ItemAdded110
ItemCharges252
ItemSubstitution284
ItemUsed158
JoinSide100
KillParticle55
LeaveLocalSight52
LeaveSight80
LeaveTeamSight224
LevelCap274
LevelUp62
LoadingProgress22
Loadout41
MapPing86
MapProp207
MapPropChanged208
MarkerMoved276
MatchIdentity145
MatchStarted193
MinimapIcon215
MinionKillCount287
MissileCourse59
MissileHits37
MissileLaunched109
MissileReport58
MissileRetarget237
MissileSpeed269
MissileState58
MoveCamera36
MovementBounds6
MoveOrder113
MultikillCount277
MusicCue219
NavigationFlags64
NexusIdle4
NexusSkin115
ObjectiveHidden161
ObjectiveReplaced13
ObjectiveShown53
ParticleEnterTeamSight225
ParticleLeaveTeamSight226
ParticlesCreated134
ParticleSource209
Path184
PathWithSpeed130
Pause160
PauseAnimation112
Paused160
PingPlaced63
PlayAnimation175
PlayEmote71
PlayerDisconnected151
QueryStatus20
QueryStatusAnswer135
QuestEvent204
QuestUpdated139
Reconnected15
ReconnectedInMatch155
RegionAdded35
RegionRemoved50
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication195
ResourceDisplay146
ResourceKindChanged275
Respawned73
RespawnPoint212
Resume10
Resumed10
Revived46
Roster103
ScoreAdded216
ScreenTint218
SeatChampion101
SeatLoadProgress148
SeatName102
SelectObject174
ShieldAdded101
ShopEnabled239
ShopUndo266
ShopUndoCount267
Shutdown228
SideTextHidden166
SideTextRefreshed176
SideTextShown159
Situation289
SoftReconnect238
SoundPlayed66
SpawnBot206
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet54
SpawnStart97
SpawnUnit123
SpellCastAnswer180
SpellCharge229
SpellCharges263
SpellCooldown132
SpellCostChanged260
SpellInSlot111
SpellLevel90
SpellNumbers126
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame91
StatisticIncremented217
StatsRequest85
StatTick39
StopAnimation40
StopAttack51
StreamChunk236
StreamChunkRange235
StreamMetadata234
StreamRequest233
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus164
SurrenderVote163
SurrenderVoteCalled200
SwapItems32
SwapItemsAnswer61
SystemMessage246
TargetHeldChampion191
TargetUnit105
TeamChanged214
TeamScore211
TipEvent108
TipShown84
TransientAck167
TutorialChatLine2
TutorialPopup178
TutorialPopupClosed203
TutorialShopOpened92
UiHighlight201
Unhandled286286
UnitDied157
UnitHighlighted88
UnitHighlightRemoved179
UnitLookAt271
UnitSpoke24
UnitStopped48
UnitText25
UpgradeSpell56
UseObject57
VersionSync83
VictoryDance196
VoiceCommand67
VoiceEvent120
VoiceEventDone5
VoiceOverride149
VolumeMuted38
WaypointAck118
WaypointGroup96
WaypointGroupAtSpeed99
WorldEvent68

Against 4.7

Where a build from 4.8.0.189 up to, not including, 4.9.0.239 differs from one from 4.7.0.296 up to, not including, 4.8.0.189. Anything not named here is the same in both.

Laid out differently

  • QuestUpdated
    • reward is in 4.8 (text, 128 bytes), after tooltip, and not in 4.7.
    • flags has second at bit 1 in 4.8, and not in 4.7.
    • flags.unused is at bit 1, 7 bits wide, in 4.7 and at bit 2, 6 bits wide, in 4.8.
  • StatsRequest
    • appearance is in 4.8 (u32), after moduleOne, and not in 4.7.
    • appearanceCheck is in 4.8 (u32), after appearance, and not in 4.7.
  • VersionSync (vectors: one-on-4-8)
    • features names bit 15 bit15 in 4.7 and skinParticles in 4.8.
    • features.shopUndo is at bit 8 in 4.7 and at bit 7 in 4.8.
    • features.recommendedPages is at bit 9 in 4.7 and at bit 8 in 4.8.
    • features.skillshotOutline is at bit 10 in 4.7 and at bit 9 in 4.8.
    • features.championIndicator is at bit 11 in 4.7 and at bit 10 in 4.8.
    • features.altBounty is at bit 12 in 4.7 and at bit 11 in 4.8.
    • features.waveOrder is at bit 13 in 4.7 and at bit 12 in 4.8.
    • features.turretRange is at bit 14 in 4.7 and at bit 13 in 4.8.
    • features has bit14 at bit 14 in 4.8, and not in 4.7.
    • features.hardwareMetrics is at bit 18 in 4.7 and at bit 17 in 4.8.
    • features has bit18 at bit 18 in 4.8, and not in 4.7.
    • features.lagMetrics is at bit 20 in 4.7 and at bit 19 in 4.8.
    • features.eventReports is at bit 21 in 4.7 and at bit 20 in 4.8.
    • features.logServerAddress is at bit 22 in 4.7 and at bit 21 in 4.8.
    • features.unused is at bit 23, 9 bits wide, in 4.7 and at bit 22, 10 bits wide, in 4.8.
    • features has altControls at bit 7 in 4.7, and not in 4.8.
    • features has networkMetrics at bit 17 in 4.7, and not in 4.8.
    • features has bit19 at bit 19 in 4.7, and not in 4.8.
    • reportingMessages is 11 × u8 in 4.7 and 13 × u8 in 4.8.

4.9

Client builds from 4.9.0.239 up to, not including, 4.10.0.369. Patch notes: V4.9.

Build checkedPassedFailedSkippedCommitDate
4.9.0.2391103a94e5342026-10-22
4.9.0.253110563b6eaf2026-10-19

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, FloatingTextOnMap, InventorySnapshotOnMap, RegionMoved, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.

Every message of this range (269)
MessageCommand
AfkWarning183
AnimationAdvanced259
AnimationOverrides106
AppearanceCleared199
AppearancePopped102
AppearancePushed150
Attack12
AttackFrom26
AttackIndicators258
AttackSpeedBounds288
Autocast31
BalanceResult251
BalanceVote249
BalanceVoteAnswer250
BalanceVoteRefused249
BotDebug19
BotKick221
BotState169
BotTargets104
BounceMissile281
BuildingDied136
BuyItem129
Camera45
CameraAck43
CameraBehaviour114
CameraLock128
CameraLockSet119
CampCleared194
CampMarker290
CampOpened232
CampTimer278
CancelTargeting133
CapturePointChanged210
CastSpell153
ChainTargets107
ChampionDied93
ChampionRemoved272
ChampionStats69
CharacterPreload137
CharacterSelected189
Chat104
ChatAllowance248
ClientEvent162
ClientFinished140
ClientReady81
ClientVersion188
ClockConvergence117
ClockReply8
ClockSync192
CloseShop14
ContextEmote242
CreateChampion75
CreateFollower240
CreateNeutral98
CreateTurret156
CursorRings264
Damage100
DeathHistory33
DeathTimer279
DestroyMissile89
DrawPath262
DrawPathMode261
EffectAdded182
EffectAddedGroup103
EffectCount28
EffectCounter265
EffectCountGroup190
EffectRemoved122
EffectRemovedGroup147
EffectReplaced47
EffectReplacedGroup30
EmitterPause247
EmotePlayed65
Empty0
EnterLocalSight173
EnterSight185
EnterTeamSight223
Exit142
ExperienceGained16
FaceDirection79
FadeMinions202
FadeRemoved49
FadeSounds94
FadeTo177
FloatingText24
FogSet170
FogToggled125
FollowerMaster241
ForceDeath27
GameEnded197
GameOptions70
GameSpeed18
GoldEarned227
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead168
GroundAttackMode257
HealthBar205
HoverIndicator245
HoverTarget244
HudDisabled187
HudHighlighted60
HudHighlightToggled78
InhibitorState42
InputLock131
InputLockToggled154
InventorySlot82
InventorySnapshot268
ItemAdded110
ItemCharges252
ItemSubstitution284
ItemUsed158
JoinSide100
KillParticle55
LeaveLocalSight52
LeaveSight80
LeaveTeamSight224
LevelCap274
LevelUp62
LoadingProgress22
Loadout41
MapPing86
MapProp207
MapPropChanged208
MarkerMoved276
MatchIdentity145
MatchStarted193
MinimapIcon215
MinionKillCount287
MissileCourse59
MissileHits37
MissileLaunched109
MissileReport58
MissileRetarget237
MissileSpeed269
MissileState58
MoveCamera36
MovementBounds6
MoveOrder113
MultikillCount277
MusicCue219
NavigationFlags64
NexusIdle4
NexusSkin115
ObjectiveHidden161
ObjectiveReplaced13
ObjectiveShown53
ParticleEnterTeamSight225
ParticleLeaveTeamSight226
ParticlesCreated134
ParticleSource209
Path184
PathWithSpeed130
Pause160
PauseAnimation112
Paused160
PingPlaced63
PlayAnimation175
PlayEmote71
PlayerDisconnected151
QueryStatus20
QueryStatusAnswer135
QuestEvent204
QuestUpdated139
Reconnected15
ReconnectedInMatch155
RegionAdded35
RegionRemoved50
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication195
ResourceDisplay146
ResourceKindChanged275
Respawned73
RespawnPoint212
Resume10
Resumed10
Revived46
Roster103
ScoreAdded216
ScreenTint218
SeatChampion101
SeatLoadProgress148
SeatName102
SelectObject174
ShieldAdded101
ShopEnabled239
ShopUndo266
ShopUndoCount267
Shutdown228
SideTextHidden166
SideTextRefreshed176
SideTextShown159
Situation289
SoftReconnect238
SoundPlayed66
SpawnBot206
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet54
SpawnStart97
SpawnUnit123
SpellCastAnswer180
SpellCharge229
SpellCharges263
SpellCooldown132
SpellCostChanged260
SpellInSlot111
SpellLevel90
SpellNumbers126
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame91
StatisticIncremented217
StatsRequest85
StatTick39
StopAnimation40
StopAttack51
StreamChunk236
StreamChunkRange235
StreamMetadata234
StreamRequest233
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus164
SurrenderVote163
SurrenderVoteCalled200
SwapItems32
SwapItemsAnswer61
SystemMessage246
TargetHeldChampion191
TargetUnit105
TeamChanged214
TeamScore211
TipEvent108
TipShown84
TransientAck167
TutorialChatLine2
TutorialPopup178
TutorialPopupClosed203
TutorialShopOpened92
UiHighlight201
Unhandled286286
UnitDied157
UnitHighlighted88
UnitHighlightRemoved179
UnitLookAt271
UnitSpoke24
UnitStopped48
UnitText25
UpgradeSpell56
UseObject57
VersionSync83
VictoryDance196
VoiceCommand67
VoiceEvent120
VoiceEventDone5
VoiceOverride149
VolumeMuted38
WaypointAck118
WaypointGroup96
WaypointGroupAtSpeed99
WorldEvent68

Against 4.8

Where a build from 4.9.0.239 up to, not including, 4.10.0.369 differs from one from 4.8.0.189 up to, not including, 4.9.0.239. Anything not named here is the same in both.

In 4.9, not in 4.8

MessageSent byCommandWhat it does
CampMarkerserver290 on eventsPlace a camp on the map and say how it is drawn

In 4.8, not in 4.9

MessageSent byCommand it had
FacePositionclient79 on requests

Laid out differently

  • CampCleared
    • timerKind is in 4.9 (i32), after does, and not in 4.8.
    • returnsAt is in 4.9 (f32), after timerKind, and not in 4.8.
  • CampOpened
    • timerKind is in 4.9 (i32), after camp, and not in 4.8.
    • campIcon is in 4.8 and not in 4.9.
  • CreateNeutral (vectors: inactive-on-4-9)
    • spawnAt is in 4.9 (f32), after spawnDuration, and not in 4.8.
    • campIcon is in 4.8 and not in 4.9.
    • spawnElapsed is in 4.8 and not in 4.9.
  • VersionSync (vectors: one-on-4-9)
    • features is 4-byte bits in 4.8 and 8-byte bits in 4.9.
    • features names bit 16 bit16 in 4.8 and networkMetrics in 4.9.
    • features.lagMetrics is at bit 19 in 4.8 and at bit 18 in 4.9.
    • features.eventReports is at bit 20 in 4.8 and at bit 19 in 4.9.
    • features.logServerAddress is at bit 21 in 4.8 and at bit 20 in 4.9.
    • features has bit21 at bit 21 in 4.9, and not in 4.8.
    • features has bit22 at bit 22 in 4.9, and not in 4.8.
    • features has traceroute at bit 23 in 4.9, and not in 4.8.
    • features.unused is at bit 22, 10 bits wide, in 4.8 and at bit 24, 32 bits wide, in 4.9.
    • features has unusedHigh at bit 56 in 4.9, and not in 4.8.
    • features has bit18 at bit 18 in 4.8, and not in 4.9.
    • reportingMessages is 13 × u8 in 4.8 and 14 × u8 in 4.9.

4.10

Client builds from 4.10.0.369 up to, not including, 4.11.0.386. Patch notes: V4.10.

Build checkedPassedFailedSkippedCommitDate
4.10.0.36911032126c0c2026-10-22
4.10.0.379110563b6eaf2026-10-19

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, FloatingTextOnMap, InventorySnapshotOnMap, MissileReport, RegionMoved, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.

Every message of this range (267)
MessageCommand
AfkWarning183
AnimationAdvanced259
AnimationOverrides106
AppearanceCleared199
AppearancePopped102
AppearancePushed150
Attack12
AttackFrom26
AttackIndicators258
AttackSpeedBounds288
Autocast31
BalanceResult251
BalanceVote249
BalanceVoteAnswer250
BalanceVoteRefused249
BotDebug19
BotKick221
BotState169
BotTargets104
BounceMissile281
BuildingDied136
BuyItem129
Camera45
CameraAck43
CameraBehaviour114
CameraLock128
CameraLockSet119
CampCleared194
CampMarker290
CampOpened232
CampTimer278
CancelTargeting133
CapturePointChanged210
CastSpell153
ChainTargets107
ChampionDied93
ChampionRemoved272
ChampionStats69
CharacterPreload137
CharacterSelected189
Chat104
ChatAllowance248
ClientEvent162
ClientFinished140
ClientReady81
ClientVersion188
ClockConvergence117
ClockReply8
ClockSync192
CloseShop14
ContextEmote242
CreateChampion75
CreateFollower240
CreateNeutral98
CreateTurret156
CursorRings264
Damage100
DeathHistory33
DeathTimer279
DestroyMissile89
DrawPath262
DrawPathMode261
EffectAdded182
EffectAddedGroup103
EffectCount28
EffectCounter265
EffectCountGroup190
EffectRemoved122
EffectRemovedGroup147
EffectReplaced47
EffectReplacedGroup30
EmitterPause247
EmotePlayed65
Empty0
EnterLocalSight173
EnterSight185
EnterTeamSight223
Exit142
ExperienceGained16
FaceDirection79
FadeMinions202
FadeRemoved49
FadeSounds94
FadeTo177
FloatingText24
FogSet170
FogToggled125
FollowerMaster241
ForceDeath27
GameEnded197
GameOptions70
GameSpeed18
GoldEarned227
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead168
GroundAttackMode257
HealthBar205
HoverIndicator245
HoverTarget244
HudDisabled187
HudHighlighted60
HudHighlightToggled78
InhibitorState42
InputLock131
InputLockToggled154
InventorySlot82
InventorySnapshot268
ItemAdded110
ItemCharges252
ItemSubstitution284
ItemUsed158
JoinSide100
KillParticle55
LeaveLocalSight52
LeaveSight80
LeaveTeamSight224
LevelCap274
LevelUp62
LoadingProgress22
Loadout41
MapPing86
MapProp207
MapPropChanged208
MarkerMoved276
MatchIdentity145
MatchStarted193
MinimapIcon215
MinionKillCount287
MissileCourse59
MissileHits37
MissileLaunched109
MissileRetarget237
MissileSpeed269
MissileState58
MoveCamera36
MovementBounds6
MoveOrder113
MultikillCount277
MusicCue219
NavigationFlags64
NexusIdle4
NexusSkin115
ObjectiveHidden161
ObjectiveReplaced13
ObjectiveShown53
ParticleEnterTeamSight225
ParticleLeaveTeamSight226
ParticlesCreated134
ParticleSource209
Path184
PathWithSpeed130
Pause160
PauseAnimation112
Paused160
PingPlaced63
PlayAnimation175
PlayEmote71
PlayerDisconnected151
QueryStatus20
QueryStatusAnswer135
QuestEvent204
QuestUpdated139
Reconnected15
ReconnectedInMatch155
RegionAdded35
RegionRemoved50
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication195
ResourceDisplay146
ResourceKindChanged275
Respawned73
RespawnPoint212
Resume10
Resumed10
Revived46
Roster103
ScoreAdded216
ScreenTint218
SeatChampion101
SeatLoadProgress148
SeatName102
SelectObject174
ShieldAdded101
ShopEnabled239
ShopUndo266
ShopUndoCount267
Shutdown228
SideTextHidden166
SideTextRefreshed176
SideTextShown159
Situation289
SoftReconnect238
SoundPlayed66
SpawnBot206
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet54
SpawnStart97
SpawnUnit123
SpellCastAnswer180
SpellCharge229
SpellCharges263
SpellCooldown132
SpellCostChanged260
SpellInSlot111
SpellLevel90
SpellNumbers126
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame91
StatisticIncremented217
StatsRequest85
StatTick39
StopAnimation40
StopAttack51
StreamChunk236
StreamChunkRange235
StreamMetadata234
StreamRequest233
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus164
SurrenderVote163
SurrenderVoteCalled200
SwapItems32
SwapItemsAnswer61
SystemMessage246
TargetHeldChampion191
TargetUnit105
TeamChanged214
TeamScore211
TipEvent108
TipShown84
TransientAck167
TutorialChatLine2
TutorialPopup178
TutorialPopupClosed203
TutorialShopOpened92
UiHighlight201
Unhandled286286
UnitDied157
UnitHighlighted88
UnitHighlightRemoved179
UnitLookAt271
UnitStopped48
UnitText25
UpgradeSpell56
UseObject57
VersionSync83
VictoryDance196
VoiceCommand67
VoiceEvent120
VoiceEventDone5
VoiceOverride149
VolumeMuted38
WaypointAck118
WaypointGroup96
WaypointGroupAtSpeed99
WorldEvent68

Against 4.9

Where a build from 4.10.0.369 up to, not including, 4.11.0.386 differs from one from 4.9.0.239 up to, not including, 4.10.0.369. Anything not named here is the same in both.

In 4.9, not in 4.10

MessageSent byCommand it had
MissileReportclient58 on requests
UnitSpokeclient24 on requests

Laid out differently

4.11

Client builds from 4.11.0.386 up to, not including, 4.12.0.356. Patch notes: V4.11.

Build checkedPassedFailedSkippedCommitDate
4.11.0.38611034eadc392026-10-22

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, FloatingTextOnMap, InventorySnapshotOnMap, MissileCourse, MissileReport, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.

Every message of this range (267)
MessageCommand
AfkWarning184
AnimationAdvanced259
AnimationOverrides107
AppearanceCleared200
AppearancePopped103
AppearancePushed151
Attack12
AttackFrom26
AttackIndicators258
AttackSpeedBounds288
Autocast31
BalanceResult252
BalanceVote250
BalanceVoteAnswer251
BalanceVoteRefused250
BotDebug19
BotKick222
BotState170
BotTargets105
BounceMissile281
BuildingDied137
BuyItem130
Camera46
CameraAck44
CameraBehaviour115
CameraLock129
CameraLockSet120
CampCleared195
CampMarker290
CampOpened233
CampTimer278
CancelTargeting134
CapturePointChanged211
CastSpell154
ChainTargets108
ChampionDied94
ChampionRemoved272
ChampionStats70
CharacterPreload138
CharacterSelected190
Chat104
ChatAllowance249
ClientEvent163
ClientFinished141
ClientReady82
ClientVersion189
ClockConvergence118
ClockReply8
ClockSync193
CloseShop14
ContextEmote243
CreateChampion76
CreateFollower241
CreateNeutral99
CreateTurret157
CursorRings264
Damage101
DeathHistory33
DeathTimer279
DestroyMissile90
DrawPath262
DrawPathMode261
EffectAdded183
EffectAddedGroup104
EffectCount28
EffectCounter265
EffectCountGroup191
EffectRemoved123
EffectRemovedGroup148
EffectReplaced48
EffectReplacedGroup30
EmitterPause248
EmotePlayed66
Empty0
EnterLocalSight174
EnterSight186
EnterTeamSight224
Exit143
ExperienceGained16
FaceDirection80
FadeMinions203
FadeRemoved50
FadeSounds95
FadeTo178
FloatingText24
FogSet171
FogToggled126
FollowerMaster242
ForceDeath27
GameEnded198
GameOptions71
GameSpeed18
GoldEarned228
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead169
GroundAttackMode257
HealthBar206
HoverIndicator246
HoverTarget245
HudDisabled188
HudHighlighted61
HudHighlightToggled79
InhibitorState43
InputLock132
InputLockToggled155
InventorySlot83
InventorySnapshot268
ItemAdded111
ItemCharges253
ItemSubstitution284
ItemUsed159
JoinSide100
KillParticle56
LeaveLocalSight53
LeaveSight81
LeaveTeamSight225
LevelCap274
LevelUp63
LoadingProgress22
Loadout42
MapPing87
MapProp208
MapPropChanged209
MarkerMoved276
MatchIdentity146
MatchStarted194
MinimapIcon216
MinionKillCount287
MissileHits38
MissileLaunched110
MissileRetarget238
MissileSpeed269
MissileState59
MoveCamera37
MovementBounds6
MoveOrder114
MultikillCount277
MusicCue220
NavigationFlags65
NexusIdle4
NexusSkin116
ObjectiveHidden162
ObjectiveReplaced13
ObjectiveShown54
ParticleEnterTeamSight226
ParticleLeaveTeamSight227
ParticlesCreated135
ParticleSource210
Path185
PathWithSpeed131
Pause161
PauseAnimation113
Paused161
PingPlaced64
PlayAnimation176
PlayEmote72
PlayerDisconnected152
QueryStatus20
QueryStatusAnswer136
QuestEvent205
QuestUpdated140
Reconnected15
ReconnectedInMatch156
RegionAdded35
RegionMoved36
RegionRemoved51
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication196
ResourceDisplay147
ResourceKindChanged275
Respawned74
RespawnPoint213
Resume10
Resumed10
Revived47
Roster103
ScoreAdded217
ScreenTint219
SeatChampion101
SeatLoadProgress149
SeatName102
SelectObject175
ShieldAdded102
ShopEnabled240
ShopUndo266
ShopUndoCount267
Shutdown229
SideTextHidden167
SideTextRefreshed177
SideTextShown160
Situation289
SoftReconnect239
SoundPlayed67
SpawnBot207
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet55
SpawnStart98
SpawnUnit124
SpellCastAnswer181
SpellCharge230
SpellCharges263
SpellCooldown133
SpellCostChanged260
SpellInSlot112
SpellLevel91
SpellNumbers127
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame92
StatisticIncremented218
StatsRequest86
StatTick40
StopAnimation41
StopAttack52
StreamChunk237
StreamChunkRange236
StreamMetadata235
StreamRequest234
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus165
SurrenderVote164
SurrenderVoteCalled201
SwapItems32
SwapItemsAnswer62
SystemMessage247
TargetHeldChampion192
TargetUnit106
TeamChanged215
TeamScore212
TipEvent109
TipShown85
TransientAck168
TutorialChatLine2
TutorialPopup179
TutorialPopupClosed204
TutorialShopOpened93
UiHighlight202
Unhandled286286
UnitDied158
UnitHighlighted89
UnitHighlightRemoved180
UnitLookAt271
UnitStopped49
UnitText25
UpgradeSpell57
UseObject58
VersionSync84
VictoryDance197
VoiceCommand68
VoiceEvent121
VoiceEventDone5
VoiceOverride150
VolumeMuted39
WaypointAck119
WaypointGroup97
WaypointGroupAtSpeed100
WorldEvent69

Against 4.10

Where a build from 4.11.0.386 up to, not including, 4.12.0.356 differs from one from 4.10.0.369 up to, not including, 4.11.0.386. Anything not named here is the same in both.

In 4.11, not in 4.10

MessageSent byCommandWhat it does
RegionMovedserver36 on eventsMove a region of sight, keeping all else about it

In 4.10, not in 4.11

MessageSent byCommand it had
MissileCourseserver59 on events

Commands

These differ only in their command. Each row is a run of commands moved by the same amount:

Channel4.104.11Messages
clock117118ClockConvergence
events36–25237–253MoveCamera, MissileHits, VolumeMuted, StatTick, StopAnimation, Loadout, InhibitorState, CameraAck, Revived, EffectReplaced, UnitStopped, FadeRemoved, RegionRemoved, StopAttack, LeaveLocalSight, SpawnPet, KillParticle, MissileState, HudHighlighted, SwapItemsAnswer, LevelUp, PingPlaced, NavigationFlags, EmotePlayed, SoundPlayed, VoiceCommand, WorldEvent, ChampionStats, Respawned, CreateChampion, HudHighlightToggled, FaceDirection, LeaveSight, InventorySlot, VersionSync, TipShown, UnitHighlighted, DestroyMissile, SpellLevel, StartGame, ChampionDied, FadeSounds, SpawnStart, CreateNeutral, WaypointGroupAtSpeed, Damage, ShieldAdded, AppearancePopped, EffectAddedGroup, BotTargets, TargetUnit, AnimationOverrides, ChainTargets, MissileLaunched, ItemAdded, SpellInSlot, PauseAnimation, CameraBehaviour, NexusSkin, CameraLockSet, VoiceEvent, EffectRemoved, SpawnUnit, FogToggled, SpellNumbers, PathWithSpeed, InputLock, SpellCooldown, CancelTargeting, ParticlesCreated, QueryStatusAnswer, BuildingDied, CharacterPreload, QuestUpdated, ResourceDisplay, EffectRemovedGroup, VoiceOverride, AppearancePushed, PlayerDisconnected, InputLockToggled, CreateTurret, UnitDied, ItemUsed, SideTextShown, Paused, ObjectiveHidden, ClientEvent, SurrenderStatus, SideTextHidden, GreyscaleWhenDead, BotState, FogSet, EnterLocalSight, PlayAnimation, SideTextRefreshed, FadeTo, TutorialPopup, UnitHighlightRemoved, SpellCastAnswer, EffectAdded, AfkWarning, Path, EnterSight, HudDisabled, EffectCountGroup, TargetHeldChampion, ClockSync, MatchStarted, CampCleared, VictoryDance, GameEnded, AppearanceCleared, SurrenderVoteCalled, UiHighlight, FadeMinions, HealthBar, SpawnBot, MapProp, MapPropChanged, ParticleSource, TeamScore, RespawnPoint, TeamChanged, MinimapIcon, ScoreAdded, StatisticIncremented, ScreenTint, BotKick, EnterTeamSight, LeaveTeamSight, ParticleEnterTeamSight, ParticleLeaveTeamSight, GoldEarned, Shutdown, CampOpened, StreamMetadata, StreamChunkRange, StreamChunk, MissileRetarget, SoftReconnect, ShopEnabled, CreateFollower, FollowerMaster, ContextEmote, HoverTarget, HoverIndicator, SystemMessage, EmitterPause, ChatAllowance, BalanceVote, BalanceResult, ItemCharges
requests45–25046–251Camera, UpgradeSpell, UseObject, GameOptions, PlayEmote, ClientReady, StatsRequest, MapPing, TutorialShopOpened, TipEvent, MoveOrder, WaypointAck, CameraLock, BuyItem, ClientFinished, Exit, CastSpell, ReconnectedInMatch, Pause, SurrenderVote, TransientAck, SelectObject, ClientVersion, CharacterSelected, TutorialPopupClosed, QuestEvent, SpellCharge, StreamRequest, BalanceVoteRefused, BalanceVoteAnswer
transient96–19597–196WaypointGroup, SeatLoadProgress, Replication

Laid out differently

  • CapturePointChanged
    • Its command is 210 in 4.10 and 211 in 4.11.
    • resourceKind takes 8 gnarFury, 9 ferocity, 10 bloodWell, 11 wind, 12 other in 4.11 and not in 4.10.
    • resourceKind takes 8 ferocity, 9 bloodWell, 10 wind, 11 other in 4.10 and not in 4.11.
  • InventorySnapshot
    • maxCooldowns is in 4.11 (10 × f32), after cooldowns, and not in 4.10.
  • MatchIdentity (vectors: one-on-4-11)
    • Its command is 145 in 4.10 and 146 in 4.11.
    • label is in 4.11 (text, 32 bytes), after game, and not in 4.10.
    • name is in 4.10 and not in 4.11.
  • MusicCue
    • Its command is 219 in 4.10 and 220 in 4.11.
    • cue takes 4 trigger in 4.11 and not in 4.10.
  • ObjectiveShown (vectors: one-on-4-11)
    • Its command is 53 in 4.10 and 54 in 4.11.
    • option is in 4.11 (1-byte bits), after text, and not in 4.10.
  • ResourceKindChanged
    • kind takes 8 gnarFury, 9 ferocity, 10 bloodWell, 11 wind, 12 other in 4.11 and not in 4.10.
    • kind takes 8 ferocity, 9 bloodWell, 10 wind, 11 other in 4.10 and not in 4.11.

4.12

Client builds from 4.12.0.356 up to, not including, 4.13.0.265. Patch notes: V4.12.

Build checkedPassedFailedSkippedCommitDate
4.12.0.3561103741f51d2026-10-22

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, FloatingTextOnMap, InventorySnapshotOnMap, MissileCourse, MissileReport, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.

Every message of this range (268)
MessageCommand
AfkWarning184
AnimationAdvanced259
AnimationOverrides107
AppearanceCleared200
AppearancePopped103
AppearancePushed151
Attack12
AttackFrom26
AttackIndicators258
AttackSpeedBounds288
Autocast31
BalanceResult252
BalanceVote250
BalanceVoteAnswer251
BalanceVoteRefused250
BotDebug19
BotKick222
BotState170
BotTargets105
BounceMissile281
BuildingDied137
BuyItem130
Camera46
CameraAck44
CameraBehaviour115
CameraLock129
CameraLockSet120
CampCleared195
CampMarker290
CampOpened233
CampTimer278
CancelTargeting134
CapturePointChanged211
CastSpell154
ChainTargets108
ChampionDied94
ChampionRemoved272
ChampionStats70
CharacterPreload138
CharacterSelected190
Chat104
ChatAllowance249
ClientEvent163
ClientFinished141
ClientReady82
ClientVersion189
ClockConvergence118
ClockReply8
ClockSync193
CloseShop14
ContextEmote243
CreateChampion76
CreateFollower241
CreateNeutral99
CreateTurret157
CursorRings264
Damage101
DeathHistory33
DeathTimer279
DestroyMissile90
DrawPath262
DrawPathMode261
EffectAdded183
EffectAddedGroup104
EffectCount28
EffectCounter265
EffectCountGroup191
EffectRemoved123
EffectRemovedGroup148
EffectReplaced48
EffectReplacedGroup30
EmitterPause248
EmotePlayed66
Empty0
EnterLocalSight174
EnterSight186
EnterTeamSight224
Exit143
ExperienceGained16
FaceDirection80
FadeMinions203
FadeRemoved50
FadeSounds95
FadeTo178
FloatingText24
FogSet171
FogToggled126
FollowerMaster242
ForceDeath27
GameEnded198
GameOptions71
GameSpeed18
GoldEarned228
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead169
GroundAttackMode257
HealthBar206
HoverIndicator246
HoverTarget245
HudDisabled188
HudHighlighted61
HudHighlightToggled79
InhibitorState43
InputLock132
InputLockToggled155
InventorySlot83
InventorySnapshot268
ItemAdded111
ItemCharges253
ItemSubstitution284
ItemUsed159
JoinSide100
KillParticle56
LeaveLocalSight53
LeaveSight81
LeaveTeamSight225
LevelCap274
LevelUp63
LoadingProgress22
Loadout42
MapPing87
MapProp208
MapPropChanged209
MarkerMoved276
MatchIdentity146
MatchStarted194
MinimapIcon216
MinionKillCount287
MissileHits38
MissileLaunched110
MissileRetarget238
MissileSpeed269
MissileState59
MoveCamera37
MovementBounds6
MoveOrder114
MultikillCount277
MusicCue220
NavigationFlags65
NexusIdle4
NexusSkin116
ObjectiveHidden162
ObjectiveReplaced13
ObjectiveShown54
ParticleEnterTeamSight226
ParticleLeaveTeamSight227
ParticlesCreated135
ParticleSource210
Path185
PathWithSpeed131
Pause161
PauseAnimation113
Paused161
PingPlaced64
PlayAnimation176
PlayEmote72
PlayerDisconnected152
QueryStatus20
QueryStatusAnswer136
QuestEvent205
QuestUpdated140
Reconnected15
ReconnectedInMatch156
RegionAdded35
RegionMoved36
RegionRemoved51
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication196
ResourceDisplay147
ResourceKindChanged275
Respawned74
RespawnPoint213
Resume10
Resumed10
Revived47
Roster103
ScoreAdded217
ScreenTint219
SeatChampion101
SeatLoadProgress149
SeatName102
SelectObject175
ShieldAdded102
ShopEnabled240
ShopUndo266
ShopUndoCount267
Shutdown229
SideTextHidden167
SideTextRefreshed177
SideTextShown160
Situation289
SoftReconnect239
SoundPlayed67
SpawnBot207
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet55
SpawnStart98
SpawnTurret291
SpawnUnit124
SpellCastAnswer181
SpellCharge230
SpellCharges263
SpellCooldown133
SpellCostChanged260
SpellInSlot112
SpellLevel91
SpellNumbers127
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame92
StatisticIncremented218
StatsRequest86
StatTick40
StopAnimation41
StopAttack52
StreamChunk237
StreamChunkRange236
StreamMetadata235
StreamRequest234
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus165
SurrenderVote164
SurrenderVoteCalled201
SwapItems32
SwapItemsAnswer62
SystemMessage247
TargetHeldChampion192
TargetUnit106
TeamChanged215
TeamScore212
TipEvent109
TipShown85
TransientAck168
TutorialChatLine2
TutorialPopup179
TutorialPopupClosed204
TutorialShopOpened93
UiHighlight202
Unhandled286286
UnitDied158
UnitHighlighted89
UnitHighlightRemoved180
UnitLookAt271
UnitStopped49
UnitText25
UpgradeSpell57
UseObject58
VersionSync84
VictoryDance197
VoiceCommand68
VoiceEvent121
VoiceEventDone5
VoiceOverride150
VolumeMuted39
WaypointAck119
WaypointGroup97
WaypointGroupAtSpeed100
WorldEvent69

Against 4.11

Where a build from 4.12.0.356 up to, not including, 4.13.0.265 differs from one from 4.11.0.386 up to, not including, 4.12.0.356. Anything not named here is the same in both.

In 4.12, not in 4.11

MessageSent byCommandWhat it does
SpawnTurretserver291 on eventsCreate a turret of its own choosing

Laid out differently

4.13

Client builds from 4.13.0.265 up to, not including, 4.14.0.362. Patch notes: V4.13.

Build checkedPassedFailedSkippedCommitDate
4.13.0.2651103745b4d92026-10-22

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, FloatingTextOnMap, InventorySnapshotOnMap, MissileCourse, MissileReport, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.

Every message of this range (268)
MessageCommand
AfkWarning184
AnimationAdvanced259
AnimationOverrides107
AppearanceCleared200
AppearancePopped103
AppearancePushed151
Attack12
AttackFrom26
AttackIndicators258
AttackSpeedBounds288
Autocast31
BalanceResult252
BalanceVote250
BalanceVoteAnswer251
BalanceVoteRefused250
BotDebug19
BotKick222
BotState170
BotTargets105
BounceMissile281
BuildingDied137
BuyItem130
Camera46
CameraAck44
CameraBehaviour115
CameraLock129
CameraLockSet120
CampCleared195
CampMarker290
CampOpened233
CampTimer278
CancelTargeting134
CapturePointChanged211
CastSpell154
ChainTargets108
ChampionDied94
ChampionRemoved272
ChampionStats70
CharacterPreload138
CharacterSelected190
Chat104
ChatAllowance249
ClientEvent163
ClientFinished141
ClientReady82
ClientVersion189
ClockConvergence118
ClockReply8
ClockSync193
CloseShop14
ContextEmote243
CreateChampion76
CreateFollower241
CreateNeutral99
CreateTurret157
CursorRings264
Damage101
DeathHistory33
DeathTimer279
DestroyMissile90
DrawPath262
DrawPathMode261
EffectAdded183
EffectAddedGroup104
EffectCount28
EffectCounter265
EffectCountGroup191
EffectRemoved123
EffectRemovedGroup148
EffectReplaced48
EffectReplacedGroup30
EmitterPause248
EmotePlayed66
Empty0
EnterLocalSight174
EnterSight186
EnterTeamSight224
Exit143
ExperienceGained16
FaceDirection80
FadeMinions203
FadeRemoved50
FadeSounds95
FadeTo178
FloatingText24
FogSet171
FogToggled126
FollowerMaster242
ForceDeath27
GameEnded198
GameOptions71
GameSpeed18
GoldEarned228
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead169
GroundAttackMode257
HealthBar206
HoverIndicator246
HoverTarget245
HudDisabled188
HudHighlighted61
HudHighlightToggled79
InhibitorState43
InputLock132
InputLockToggled155
InventorySlot83
InventorySnapshot268
ItemAdded111
ItemCharges253
ItemSubstitution284
ItemUsed159
JoinSide100
KillParticle56
LeaveLocalSight53
LeaveSight81
LeaveTeamSight225
LevelCap274
LevelUp63
LoadingProgress22
Loadout42
MapPing87
MapProp208
MapPropChanged209
MarkerMoved276
MatchIdentity146
MatchStarted194
MinimapIcon216
MinionKillCount287
MissileHits38
MissileLaunched110
MissileRetarget238
MissileSpeed269
MissileState59
MoveCamera37
MovementBounds6
MoveOrder114
MultikillCount277
MusicCue220
NavigationFlags65
NexusIdle4
NexusSkin116
ObjectiveHidden162
ObjectiveReplaced13
ObjectiveShown54
ParticleEnterTeamSight226
ParticleLeaveTeamSight227
ParticlesCreated135
ParticleSource210
Path185
PathWithSpeed131
Pause161
PauseAnimation113
Paused161
PingPlaced64
PlayAnimation176
PlayEmote72
PlayerDisconnected152
QueryStatus20
QueryStatusAnswer136
QuestEvent205
QuestUpdated140
Reconnected15
ReconnectedInMatch156
RegionAdded35
RegionMoved36
RegionRemoved51
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication196
ResourceDisplay147
ResourceKindChanged275
Respawned74
RespawnPoint213
Resume10
Resumed10
Revived47
Roster103
ScoreAdded217
ScreenTint219
SeatChampion101
SeatLoadProgress149
SeatName102
SelectObject175
ShieldAdded102
ShopEnabled240
ShopUndo266
ShopUndoCount267
Shutdown229
SideTextHidden167
SideTextRefreshed177
SideTextShown160
Situation289
SoftReconnect239
SoundPlayed67
SpawnBot207
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet55
SpawnStart98
SpawnTurret291
SpawnUnit124
SpellCastAnswer181
SpellCharge230
SpellCharges263
SpellCooldown133
SpellCostChanged260
SpellInSlot112
SpellLevel91
SpellNumbers127
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame92
StatisticIncremented218
StatsRequest86
StatTick40
StopAnimation41
StopAttack52
StreamChunk237
StreamChunkRange236
StreamMetadata235
StreamRequest234
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus165
SurrenderVote164
SurrenderVoteCalled201
SwapItems32
SwapItemsAnswer62
SystemMessage247
TargetHeldChampion192
TargetUnit106
TeamChanged215
TeamScore212
TipEvent109
TipShown85
TransientAck168
TutorialChatLine2
TutorialPopup179
TutorialPopupClosed204
TutorialShopOpened93
UiHighlight202
Unhandled286286
UnitDied158
UnitHighlighted89
UnitHighlightRemoved180
UnitLookAt271
UnitStopped49
UnitText25
UpgradeSpell57
UseObject58
VersionSync84
VictoryDance197
VoiceCommand68
VoiceEvent121
VoiceEventDone5
VoiceOverride150
VolumeMuted39
WaypointAck119
WaypointGroup97
WaypointGroupAtSpeed100
WorldEvent69

Against 4.12

Where a build from 4.13.0.265 up to, not including, 4.14.0.362 differs from one from 4.12.0.356 up to, not including, 4.13.0.265. Anything not named here is the same in both.

Laid out differently

4.14

Client builds from 4.14.0.362 up to, not including, 4.15.0.238. Patch notes: V4.14.

Build checkedPassedFailedSkippedCommitDate
4.14.0.3621103816573d2026-10-22

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, FloatingTextOnMap, InventorySnapshotOnMap, MissileCourse, MissileReport, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.

Every message of this range (268)
MessageCommand
AfkWarning184
AnimationAdvanced259
AnimationOverrides107
AppearanceCleared200
AppearancePopped103
AppearancePushed151
Attack12
AttackFrom26
AttackIndicators258
AttackSpeedBounds288
Autocast31
BalanceResult252
BalanceVote250
BalanceVoteAnswer251
BalanceVoteRefused250
BotDebug19
BotKick222
BotState170
BotTargets105
BounceMissile281
BuildingDied137
BuyItem130
Camera46
CameraAck44
CameraBehaviour115
CameraLock129
CameraLockSet120
CampCleared195
CampMarker290
CampOpened233
CampTimer278
CancelTargeting134
CapturePointChanged211
CastSpell154
ChainTargets108
ChampionDied94
ChampionRemoved272
ChampionStats70
CharacterPreload138
CharacterSelected190
Chat104
ChatAllowance249
ClientEvent163
ClientFinished141
ClientReady82
ClientVersion189
ClockConvergence118
ClockReply8
ClockSync193
CloseShop14
ContextEmote243
CreateChampion76
CreateFollower241
CreateNeutral99
CreateTurret157
CursorRings264
Damage101
DeathHistory33
DeathTimer279
DestroyMissile90
DrawPath262
DrawPathMode261
EffectAdded183
EffectAddedGroup104
EffectCount28
EffectCounter265
EffectCountGroup191
EffectRemoved123
EffectRemovedGroup148
EffectReplaced48
EffectReplacedGroup30
EmitterPause248
EmotePlayed66
Empty0
EnterLocalSight174
EnterSight186
EnterTeamSight224
Exit143
ExperienceGained16
FaceDirection80
FadeMinions203
FadeRemoved50
FadeSounds95
FadeTo178
FloatingText24
FogSet171
FogToggled126
FollowerMaster242
ForceDeath27
GameEnded198
GameOptions71
GameSpeed18
GoldEarned228
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead169
GroundAttackMode257
HealthBar206
HoverIndicator246
HoverTarget245
HudDisabled188
HudHighlighted61
HudHighlightToggled79
InhibitorState43
InputLock132
InputLockToggled155
InventorySlot83
InventorySnapshot268
ItemAdded111
ItemCharges253
ItemSubstitution284
ItemUsed159
JoinSide100
KillParticle56
LeaveLocalSight53
LeaveSight81
LeaveTeamSight225
LevelCap274
LevelUp63
LoadingProgress22
Loadout42
MapPing87
MapProp208
MapPropChanged209
MarkerMoved276
MatchIdentity146
MatchStarted194
MinimapIcon216
MinionKillCount287
MissileHits38
MissileLaunched110
MissileRetarget238
MissileSpeed269
MissileState59
MoveCamera37
MovementBounds6
MoveOrder114
MultikillCount277
MusicCue220
NavigationFlags65
NexusIdle4
NexusSkin116
ObjectiveHidden162
ObjectiveReplaced13
ObjectiveShown54
ParticleEnterTeamSight226
ParticleLeaveTeamSight227
ParticlesCreated135
ParticleSource210
Path185
PathWithSpeed131
Pause161
PauseAnimation113
Paused161
PingPlaced64
PlayAnimation176
PlayEmote72
PlayerDisconnected152
QueryStatus20
QueryStatusAnswer136
QuestEvent205
QuestUpdated140
Reconnected15
ReconnectedInMatch156
RegionAdded35
RegionMoved36
RegionRemoved51
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication196
ResourceDisplay147
ResourceKindChanged275
Respawned74
RespawnPoint213
Resume10
Resumed10
Revived47
Roster103
ScoreAdded217
ScreenTint219
SeatChampion101
SeatLoadProgress149
SeatName102
SelectObject175
ShieldAdded102
ShopEnabled240
ShopUndo266
ShopUndoCount267
Shutdown229
SideTextHidden167
SideTextRefreshed177
SideTextShown160
Situation289
SoftReconnect239
SoundPlayed67
SpawnBot207
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet55
SpawnStart98
SpawnTurret291
SpawnUnit124
SpellCastAnswer181
SpellCharge230
SpellCharges263
SpellCooldown133
SpellCostChanged260
SpellInSlot112
SpellLevel91
SpellNumbers127
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame92
StatisticIncremented218
StatsRequest86
StatTick40
StopAnimation41
StopAttack52
StreamChunk237
StreamChunkRange236
StreamMetadata235
StreamRequest234
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus165
SurrenderVote164
SurrenderVoteCalled201
SwapItems32
SwapItemsAnswer62
SystemMessage247
TargetHeldChampion192
TargetUnit106
TeamChanged215
TeamScore212
TipEvent109
TipShown85
TransientAck168
TutorialChatLine2
TutorialPopup179
TutorialPopupClosed204
TutorialShopOpened93
UiHighlight202
Unhandled286286
UnitDied158
UnitHighlighted89
UnitHighlightRemoved180
UnitLookAt271
UnitStopped49
UnitText25
UpgradeSpell57
UseObject58
VersionSync84
VictoryDance197
VoiceCommand68
VoiceEvent121
VoiceEventDone5
VoiceOverride150
VolumeMuted39
WaypointAck119
WaypointGroup97
WaypointGroupAtSpeed100
WorldEvent69

Against 4.13

Where a build from 4.14.0.362 up to, not including, 4.15.0.238 differs from one from 4.13.0.265 up to, not including, 4.14.0.362. Anything not named here is the same in both.

Laid out differently

  • ClientEvent (vectors: altar-captured-on-4-14, altar-captured-watched-on-4-14, baron-killed-on-4-14, baron-killed-watched-on-4-14, baron-stolen-on-4-14, buff-on-4-14, consumable-bought-on-4-14, critical-strike-on-4-14, crowd-control-on-4-14, damage-dealt-on-4-14, damage-taken-on-4-14, death-assist-on-4-14, died-on-4-14, dragon-killed-on-4-14, dragon-killed-watched-on-4-14, dragon-stolen-on-4-14, gold-earned-on-4-14, gold-spent-on-4-14, heal-cast-on-4-14, heal-on-4-14, item-bought-on-4-14, item-callout-on-4-14, item-changed-on-4-14, item-removed-on-4-14, item-sold-on-4-14, item-substituted-on-4-14, item-undone-on-4-14, killing-spree-on-4-14, minion-killed-on-4-14, monster-killed-on-4-14, one-on-4-14, removed-on-4-14, spawned-on-4-14, spider-killed-on-4-14, spider-killed-watched-on-4-14, turret-damaged-on-4-14, turret-died-on-4-14, undo-changed-on-4-14)
    • event takes 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 117 minionsSpawned, 118 welcome, 119 startNoticeTwo, 120 startNoticeThree, 124 scoreboardOpened, 150 dragonKilled, 151 dragonKilledWatched, 152 dragonStolen, 153 baronKilled, 154 baronKilledWatched, 155 baronStolen, 156 spiderKilled, 157 spiderKilledWatched, 158 altarCaptured, 159 altarCapturedWatched, 160 wardPlaced, 161 wardKilled in 4.14 and not in 4.13.
    • event takes 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemUndone, 91 itemCallout, 92 itemChanged, 93 undoChanged, 94 itemSubstituted, 113 minionsSpawned, 114 welcome, 115 startNoticeTwo, 116 startNoticeThree, 120 scoreboardOpened, 146 dragonKilled, 147 dragonKilledWatched, 148 dragonStolen, 149 baronKilled, 150 baronKilledWatched, 151 baronStolen, 152 spiderKilled, 153 spiderKilledWatched, 154 altarCaptured, 155 altarCapturedWatched, 156 wardPlaced, 157 wardKilled in 4.13 and not in 4.14.
    • value is present when event = 25 or 87 or 88 or 89 or 92 or 93 or 154 or 155 in 4.13, and present when event = 25 or 91 or 92 or 93 or 96 or 97 or 158 or 159 in 4.14.
    • kill is present when event = 1 or 2 or 36 or 37 or 38 or 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.14.
    • monster is present when event = 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13, and present when event = 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.14.
    • callout is present when event = 91 in 4.13, and present when event = 95 in 4.14.
    • substitution is present when event = 94 in 4.13, and present when event = 98 in 4.14.
    • undo is present when event = 90 in 4.13, and present when event = 94 in 4.14.
  • DeathHistory (vectors: one-on-4-14)
    • entries[].event takes 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 117 minionsSpawned, 118 welcome, 119 startNoticeTwo, 120 startNoticeThree, 124 scoreboardOpened, 150 dragonKilled, 151 dragonKilledWatched, 152 dragonStolen, 153 baronKilled, 154 baronKilledWatched, 155 baronStolen, 156 spiderKilled, 157 spiderKilledWatched, 158 altarCaptured, 159 altarCapturedWatched, 160 wardPlaced, 161 wardKilled in 4.14 and not in 4.13.
    • entries[].event takes 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemUndone, 91 itemCallout, 92 itemChanged, 93 undoChanged, 94 itemSubstituted, 113 minionsSpawned, 114 welcome, 115 startNoticeTwo, 116 startNoticeThree, 120 scoreboardOpened, 146 dragonKilled, 147 dragonKilledWatched, 148 dragonStolen, 149 baronKilled, 150 baronKilledWatched, 151 baronStolen, 152 spiderKilled, 153 spiderKilledWatched, 154 altarCaptured, 155 altarCapturedWatched, 156 wardPlaced, 157 wardKilled in 4.13 and not in 4.14.
    • entries[].value is present when event = 25 or 87 or 88 or 89 or 92 or 93 or 154 or 155 in 4.13, and present when event = 25 or 91 or 92 or 93 or 96 or 97 or 158 or 159 in 4.14.
    • entries[].kill is present when event = 1 or 2 or 36 or 37 or 38 or 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.14.
    • entries[].monster is present when event = 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13, and present when event = 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.14.
    • entries[].callout is present when event = 91 in 4.13, and present when event = 95 in 4.14.
    • entries[].substitution is present when event = 94 in 4.13, and present when event = 98 in 4.14.
    • entries[].undo is present when event = 90 in 4.13, and present when event = 94 in 4.14.
  • MinimapIcon
    • borderScript is in 4.14 (text, 64 bytes), after border, and not in 4.13.
  • StreamChunk
    • duration is i32 in 4.13 and u32 in 4.14.
  • UnitText
    • style takes 6 physicalCritical, 8 trueCritical, 9 experience, 10 gold, 11 level, 12 disable, 13 questReceived, 14 questComplete, 15 score, 16 physicalDamage, 17 magicDamage, 18 trueDamage, 19 enemyPhysicalDamage, 20 enemyMagicDamage, 21 enemyTrueDamage, 22 enemyPhysicalCritical, 23 enemyMagicCritical, 24 enemyTrueCritical, 25 countdown, 26 onMyWay, 27 absorbed, 28 debug in 4.14 and not in 4.13.
    • style takes 6 critical, 8 experience, 9 gold, 10 level, 11 disable, 12 questReceived, 13 questComplete, 14 score, 15 physicalDamage, 16 magicDamage, 17 trueDamage, 18 enemyPhysicalDamage, 19 enemyMagicDamage, 20 enemyTrueDamage, 21 enemyCritical, 22 countdown, 23 onMyWay, 24 absorbed, 25 debug in 4.13 and not in 4.14.
  • VersionSync (vectors: one-on-4-14)
    • features has bit23 at bit 23 in 4.14, and not in 4.13.
    • features has bit24 at bit 24 in 4.14, and not in 4.13.
    • features has bit25 at bit 25 in 4.14, and not in 4.13.
    • features has clockSync at bit 26 in 4.14, and not in 4.13.
    • features.unused is at bit 23 in 4.13 and at bit 27 in 4.14.
    • features.unusedHigh is at bit 55, 9 bits wide, in 4.13 and at bit 59, 5 bits wide, in 4.14.
  • WorldEvent (vectors: a-third-on-4-14, altar-captured-on-4-14, altar-captured-watched-on-4-14, another-on-4-14, baron-killed-on-4-14, baron-killed-watched-on-4-14, baron-stolen-on-4-14, buff-on-4-14, consumable-bought-on-4-14, critical-strike-on-4-14, crowd-control-on-4-14, damage-dealt-on-4-14, damage-taken-on-4-14, death-assist-on-4-14, died-on-4-14, dragon-killed-on-4-14, dragon-killed-watched-on-4-14, dragon-stolen-on-4-14, gold-earned-on-4-14, gold-spent-on-4-14, heal-cast-on-4-14, heal-on-4-14, inhibitor-died-on-4-14, item-bought-on-4-14, item-callout-on-4-14, item-changed-on-4-14, item-removed-on-4-14, item-sold-on-4-14, item-substituted-on-4-14, item-undone-on-4-14, killing-spree-on-4-14, minion-killed-on-4-14, monster-killed-on-4-14, one-on-4-14, removed-on-4-14, spawned-on-4-14, spider-killed-on-4-14, spider-killed-watched-on-4-14, start-notice-three-on-4-14, start-notice-two-on-4-14, turret-damaged-on-4-14, turret-died-on-4-14, undo-changed-on-4-14, welcome-on-4-14)
    • event takes 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 117 minionsSpawned, 118 welcome, 119 startNoticeTwo, 120 startNoticeThree, 124 scoreboardOpened, 126 nexusCrystalStarted, 150 dragonKilled, 151 dragonKilledWatched, 152 dragonStolen, 153 baronKilled, 154 baronKilledWatched, 155 baronStolen, 156 spiderKilled, 157 spiderKilledWatched, 158 altarCaptured, 159 altarCapturedWatched, 160 wardPlaced, 161 wardKilled in 4.14 and not in 4.13.
    • event takes 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemUndone, 91 itemCallout, 92 itemChanged, 93 undoChanged, 94 itemSubstituted, 113 minionsSpawned, 114 welcome, 115 startNoticeTwo, 116 startNoticeThree, 120 scoreboardOpened, 122 nexusCrystalStarted, 146 dragonKilled, 147 dragonKilledWatched, 148 dragonStolen, 149 baronKilled, 150 baronKilledWatched, 151 baronStolen, 152 spiderKilled, 153 spiderKilledWatched, 154 altarCaptured, 155 altarCapturedWatched, 156 wardPlaced, 157 wardKilled in 4.13 and not in 4.14.
    • value is present when event = 25 or 87 or 88 or 89 or 92 or 93 or 154 or 155 in 4.13, and present when event = 25 or 91 or 92 or 93 or 96 or 97 or 158 or 159 in 4.14.
    • kill is present when event = 1 or 2 or 36 or 37 or 38 or 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.14.
    • monster is present when event = 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13, and present when event = 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.14.
    • callout is present when event = 91 in 4.13, and present when event = 95 in 4.14.
    • substitution is present when event = 94 in 4.13, and present when event = 98 in 4.14.
    • undo is present when event = 90 in 4.13, and present when event = 94 in 4.14.
    • map is present when event = 114 or 115 or 116 or 117 or 118 in 4.13, and present when event = 118 or 119 or 120 or 121 or 122 in 4.14.

4.15

Client builds from 4.15.0.238 up to, not including, 4.16.0.238. Patch notes: V4.15.

Build checkedPassedFailedSkippedCommitDate
4.15.0.238110381c5a5a2026-10-22

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: FloatingTextOnMap, InventorySnapshotOnMap, MissileCourse, MissileReport, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.

Every message of this range (269)
MessageCommand
AfkWarning184
AnimationAdvanced259
AnimationOverrides107
AppearanceCleared200
AppearancePopped103
AppearancePushed151
AscendedUnit292
Attack12
AttackFrom26
AttackIndicators258
AttackSpeedBounds288
Autocast31
BalanceResult252
BalanceVote250
BalanceVoteAnswer251
BalanceVoteRefused250
BotDebug19
BotKick222
BotState170
BotTargets105
BounceMissile281
BuildingDied137
BuyItem130
Camera46
CameraAck44
CameraBehaviour115
CameraLock129
CameraLockSet120
CampCleared195
CampMarker290
CampOpened233
CampTimer278
CancelTargeting134
CapturePointChanged211
CastSpell154
ChainTargets108
ChampionDied94
ChampionRemoved272
ChampionStats70
CharacterPreload138
CharacterSelected190
Chat104
ChatAllowance249
ClientEvent163
ClientFinished141
ClientReady82
ClientVersion189
ClockConvergence118
ClockReply8
ClockSync193
CloseShop14
ContextEmote243
CreateChampion76
CreateFollower241
CreateNeutral99
CreateTurret157
CursorRings264
Damage101
DeathHistory33
DeathTimer279
DestroyMissile90
DrawPath262
DrawPathMode261
EffectAdded183
EffectAddedGroup104
EffectCount28
EffectCounter265
EffectCountGroup191
EffectRemoved123
EffectRemovedGroup148
EffectReplaced48
EffectReplacedGroup30
EmitterPause248
EmotePlayed66
Empty0
EnterLocalSight174
EnterSight186
EnterTeamSight224
Exit143
ExperienceGained16
FaceDirection80
FadeMinions203
FadeRemoved50
FadeSounds95
FadeTo178
FloatingText24
FogSet171
FogToggled126
FollowerMaster242
ForceDeath27
GameEnded198
GameOptions71
GameSpeed18
GoldEarned228
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead169
GroundAttackMode257
HealthBar206
HoverIndicator246
HoverTarget245
HudDisabled188
HudHighlighted61
HudHighlightToggled79
InhibitorState43
InputLock132
InputLockToggled155
InventorySlot83
InventorySnapshot268
ItemAdded111
ItemCharges253
ItemSubstitution284
ItemUsed159
JoinSide100
KillParticle56
LeaveLocalSight53
LeaveSight81
LeaveTeamSight225
LevelCap274
LevelUp63
LoadingProgress22
Loadout42
MapPing87
MapProp208
MapPropChanged209
MarkerMoved276
MatchIdentity146
MatchStarted194
MinimapIcon216
MinionKillCount287
MissileHits38
MissileLaunched110
MissileRetarget238
MissileSpeed269
MissileState59
MoveCamera37
MovementBounds6
MoveOrder114
MultikillCount277
MusicCue220
NavigationFlags65
NexusIdle4
NexusSkin116
ObjectiveHidden162
ObjectiveReplaced13
ObjectiveShown54
ParticleEnterTeamSight226
ParticleLeaveTeamSight227
ParticlesCreated135
ParticleSource210
Path185
PathWithSpeed131
Pause161
PauseAnimation113
Paused161
PingPlaced64
PlayAnimation176
PlayEmote72
PlayerDisconnected152
QueryStatus20
QueryStatusAnswer136
QuestEvent205
QuestUpdated140
Reconnected15
ReconnectedInMatch156
RegionAdded35
RegionMoved36
RegionRemoved51
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication196
ResourceDisplay147
ResourceKindChanged275
Respawned74
RespawnPoint213
Resume10
Resumed10
Revived47
Roster103
ScoreAdded217
ScreenTint219
SeatChampion101
SeatLoadProgress149
SeatName102
SelectObject175
ShieldAdded102
ShopEnabled240
ShopUndo266
ShopUndoCount267
Shutdown229
SideTextHidden167
SideTextRefreshed177
SideTextShown160
Situation289
SoftReconnect239
SoundPlayed67
SpawnBot207
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet55
SpawnStart98
SpawnTurret291
SpawnUnit124
SpellCastAnswer181
SpellCharge230
SpellCharges263
SpellCooldown133
SpellCostChanged260
SpellInSlot112
SpellLevel91
SpellNumbers127
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame92
StatisticIncremented218
StatsRequest86
StatTick40
StopAnimation41
StopAttack52
StreamChunk237
StreamChunkRange236
StreamMetadata235
StreamRequest234
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus165
SurrenderVote164
SurrenderVoteCalled201
SwapItems32
SwapItemsAnswer62
SystemMessage247
TargetHeldChampion192
TargetUnit106
TeamChanged215
TeamScore212
TipEvent109
TipShown85
TransientAck168
TutorialChatLine2
TutorialPopup179
TutorialPopupClosed204
TutorialShopOpened93
UiHighlight202
Unhandled286286
UnitDied158
UnitHighlighted89
UnitHighlightRemoved180
UnitLookAt271
UnitStopped49
UnitText25
UpgradeSpell57
UseObject58
VersionSync84
VictoryDance197
VoiceCommand68
VoiceEvent121
VoiceEventDone5
VoiceOverride150
VolumeMuted39
WaypointAck119
WaypointGroup97
WaypointGroupAtSpeed100
WorldEvent69

Against 4.14

Where a build from 4.15.0.238 up to, not including, 4.16.0.238 differs from one from 4.14.0.362 up to, not including, 4.15.0.238. Anything not named here is the same in both.

In 4.15, not in 4.14

MessageSent byCommandWhat it does
AscendedUnitserver292 on eventsName the unit that holds the Ascension

Laid out differently

  • PathWithSpeed (vectors: along-on-4-15)
    • facing is i8 in 4.14 and u8 in 4.15.
  • SpawnTurret (vectors: one-on-4-15)
    • skin is in 4.15 (i32), after character, and not in 4.14.
  • VersionSync (vectors: one-on-4-15)
    • features.animatedCursors is at bit 6 in 4.14 and at bit 5 in 4.15.
    • features.shopUndo is at bit 7 in 4.14 and at bit 6 in 4.15.
    • features has bit7 at bit 7 in 4.15, and not in 4.14.
    • features.skillshotOutline is at bit 9 in 4.14 and at bit 8 in 4.15.
    • features.championIndicator is at bit 10 in 4.14 and at bit 9 in 4.15.
    • features.altBounty is at bit 11 in 4.14 and at bit 10 in 4.15.
    • features has bit11 at bit 11 in 4.15, and not in 4.14.
    • features.turretRange is at bit 13 in 4.14 and at bit 12 in 4.15.
    • features has bit13 at bit 13 in 4.15, and not in 4.14.
    • features.skinParticles is at bit 15 in 4.14 and at bit 14 in 4.15.
    • features.networkMetrics is at bit 16 in 4.14 and at bit 15 in 4.15.
    • features.hardwareMetrics is at bit 17 in 4.14 and at bit 16 in 4.15.
    • features.lagMetrics is at bit 18 in 4.14 and at bit 17 in 4.15.
    • features.eventReports is at bit 19 in 4.14 and at bit 18 in 4.15.
    • features.logServerAddress is at bit 20 in 4.14 and at bit 19 in 4.15.
    • features.jungleTimers is at bit 21 in 4.14 and at bit 20 in 4.15.
    • features.traceroute is at bit 22 in 4.14 and at bit 21 in 4.15.
    • features has bit22 at bit 22 in 4.15, and not in 4.14.
    • features.clockSync is at bit 26 in 4.14 and at bit 25 in 4.15.
    • features.unused is at bit 27 in 4.14 and at bit 26 in 4.15.
    • features.unusedHigh is at bit 59, 5 bits wide, in 4.14 and at bit 58, 6 bits wide, in 4.15.
    • features has audioBackend at bit 5 in 4.14, and not in 4.15.
    • features has bit8 at bit 8 in 4.14, and not in 4.15.
    • features has waveOrder at bit 12 in 4.14, and not in 4.15.
    • features has bit14 at bit 14 in 4.14, and not in 4.15.
    • features has bit25 at bit 25 in 4.14, and not in 4.15.

Only notes

These read the same on the wire, and only their notes change. What each says in 4.15:

  • FadeSounds, time: “How long the fade takes, in seconds.”, where 4.14 has “How long the sounds take to fade; the unit is not recorded.”

4.16

Client builds from 4.16.0.238 up to, not including, 4.17.0.233. Patch notes: V4.16.

Build checkedPassedFailedSkippedCommitDate
4.16.0.23811038be7fd92026-10-22

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: FloatingTextOnMap, InventorySnapshotOnMap, MissileCourse, MissileReport, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.

Every message of this range (269)
MessageCommand
AfkWarning184
AnimationAdvanced259
AnimationOverrides107
AppearanceCleared200
AppearancePopped103
AppearancePushed151
AscendedUnit292
Attack12
AttackFrom26
AttackIndicators258
AttackSpeedBounds288
Autocast31
BalanceResult252
BalanceVote250
BalanceVoteAnswer251
BalanceVoteRefused250
BotDebug19
BotKick222
BotState170
BotTargets105
BounceMissile281
BuildingDied137
BuyItem130
Camera46
CameraAck44
CameraBehaviour115
CameraLock129
CameraLockSet120
CampCleared195
CampMarker290
CampOpened233
CampTimer278
CancelTargeting134
CapturePointChanged211
CastSpell154
ChainTargets108
ChampionDied94
ChampionRemoved272
ChampionStats70
CharacterPreload138
CharacterSelected190
Chat104
ChatAllowance249
ClientEvent163
ClientFinished141
ClientReady82
ClientVersion189
ClockConvergence118
ClockReply8
ClockSync193
CloseShop14
ContextEmote243
CreateChampion76
CreateFollower241
CreateNeutral99
CreateTurret157
CursorRings264
Damage101
DeathHistory33
DeathTimer279
DestroyMissile90
DrawPath262
DrawPathMode261
EffectAdded183
EffectAddedGroup104
EffectCount28
EffectCounter265
EffectCountGroup191
EffectRemoved123
EffectRemovedGroup148
EffectReplaced48
EffectReplacedGroup30
EmitterPause248
EmotePlayed66
Empty0
EnterLocalSight174
EnterSight186
EnterTeamSight224
Exit143
ExperienceGained16
FaceDirection80
FadeMinions203
FadeRemoved50
FadeSounds95
FadeTo178
FloatingText24
FogSet171
FogToggled126
FollowerMaster242
ForceDeath27
GameEnded198
GameOptions71
GameSpeed18
GoldEarned228
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead169
GroundAttackMode257
HealthBar206
HoverIndicator246
HoverTarget245
HudDisabled188
HudHighlighted61
HudHighlightToggled79
InhibitorState43
InputLock132
InputLockToggled155
InventorySlot83
InventorySnapshot268
ItemAdded111
ItemCharges253
ItemSubstitution284
ItemUsed159
JoinSide100
KillParticle56
LeaveLocalSight53
LeaveSight81
LeaveTeamSight225
LevelCap274
LevelUp63
LoadingProgress22
Loadout42
MapPing87
MapProp208
MapPropChanged209
MarkerMoved276
MatchIdentity146
MatchStarted194
MinimapIcon216
MinionKillCount287
MissileHits38
MissileLaunched110
MissileRetarget238
MissileSpeed269
MissileState59
MoveCamera37
MovementBounds6
MoveOrder114
MultikillCount277
MusicCue220
NavigationFlags65
NexusIdle4
NexusSkin116
ObjectiveHidden162
ObjectiveReplaced13
ObjectiveShown54
ParticleEnterTeamSight226
ParticleLeaveTeamSight227
ParticlesCreated135
ParticleSource210
Path185
PathWithSpeed131
Pause161
PauseAnimation113
Paused161
PingPlaced64
PlayAnimation176
PlayEmote72
PlayerDisconnected152
QueryStatus20
QueryStatusAnswer136
QuestEvent205
QuestUpdated140
Reconnected15
ReconnectedInMatch156
RegionAdded35
RegionMoved36
RegionRemoved51
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication196
ResourceDisplay147
ResourceKindChanged275
Respawned74
RespawnPoint213
Resume10
Resumed10
Revived47
Roster103
ScoreAdded217
ScreenTint219
SeatChampion101
SeatLoadProgress149
SeatName102
SelectObject175
ShieldAdded102
ShopEnabled240
ShopUndo266
ShopUndoCount267
Shutdown229
SideTextHidden167
SideTextRefreshed177
SideTextShown160
Situation289
SoftReconnect239
SoundPlayed67
SpawnBot207
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet55
SpawnStart98
SpawnTurret291
SpawnUnit124
SpellCastAnswer181
SpellCharge230
SpellCharges263
SpellCooldown133
SpellCostChanged260
SpellInSlot112
SpellLevel91
SpellNumbers127
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame92
StatisticIncremented218
StatsRequest86
StatTick40
StopAnimation41
StopAttack52
StreamChunk237
StreamChunkRange236
StreamMetadata235
StreamRequest234
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus165
SurrenderVote164
SurrenderVoteCalled201
SwapItems32
SwapItemsAnswer62
SystemMessage247
TargetHeldChampion192
TargetUnit106
TeamChanged215
TeamScore212
TipEvent109
TipShown85
TransientAck168
TutorialChatLine2
TutorialPopup179
TutorialPopupClosed204
TutorialShopOpened93
UiHighlight202
Unhandled286286
UnitDied158
UnitHighlighted89
UnitHighlightRemoved180
UnitLookAt271
UnitStopped49
UnitText25
UpgradeSpell57
UseObject58
VersionSync84
VictoryDance197
VoiceCommand68
VoiceEvent121
VoiceEventDone5
VoiceOverride150
VolumeMuted39
WaypointAck119
WaypointGroup97
WaypointGroupAtSpeed100
WorldEvent69

Against 4.15

Where a build from 4.16.0.238 up to, not including, 4.17.0.233 differs from one from 4.15.0.238 up to, not including, 4.16.0.238. Anything not named here is the same in both.

Laid out differently

4.17

Client builds from 4.17.0.233 up to, not including, 4.18.0.271. Patch notes: V4.17.

Build checkedPassedFailedSkippedCommitDate
4.17.0.2331103710df242026-10-22
4.17.0.267110560a7c4c2026-10-19

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: FloatingTextOnMap, InventorySnapshotOnMap, MissileCourse, MissileReport, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, UnitDiedOnMap.

Every message of this range (270)
MessageCommand
AfkWarning184
AnimationAdvanced259
AnimationOverrides107
AppearanceCleared200
AppearancePopped103
AppearancePushed151
AscendedUnit292
Attack12
AttackFrom26
AttackIndicators258
AttackSpeedBounds288
Autocast31
BalanceResult252
BalanceVote250
BalanceVoteAnswer251
BalanceVoteRefused250
BotDebug19
BotKick222
BotState170
BotTargets105
BounceMissile281
BuildingDied137
BuyItem130
Camera46
CameraAck44
CameraBehaviour115
CameraLock129
CameraLockSet120
CampCleared195
CampMarker290
CampOpened233
CampTimer278
CancelTargeting134
CapturePointChanged211
CastSpell154
ChainTargets108
ChampionDied94
ChampionRemoved272
ChampionStats70
CharacterPreload138
CharacterSelected190
Chat104
ChatAllowance249
ClientEvent163
ClientFinished141
ClientReady82
ClientVersion189
ClockConvergence118
ClockReply8
ClockSync193
CloseShop14
ContextEmote243
CreateChampion76
CreateFollower241
CreateNeutral99
CreateTurret157
CursorRings264
Damage101
DeathHistory33
DeathTimer279
DestroyMissile90
DrawPath262
DrawPathMode261
EffectAdded183
EffectAddedGroup104
EffectCount28
EffectCounter265
EffectCountGroup191
EffectRemoved123
EffectRemovedGroup148
EffectReplaced48
EffectReplacedGroup30
EmitterPause248
EmotePlayed66
Empty0
EnterLocalSight174
EnterSight186
EnterTeamSight224
Exit143
ExperienceGained16
FaceDirection80
FadeMinions203
FadeRemoved50
FadeSounds95
FadeTo178
FloatingText24
FogSet171
FogToggled126
FollowerMaster242
ForceDeath27
GameEnded198
GameOptions71
GameSpeed18
GoldEarned228
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead169
GroundAttackMode257
HealthBar206
HoverIndicator246
HoverTarget245
HudDisabled188
HudHighlighted61
HudHighlightToggled79
InhibitorState43
InputLock132
InputLockToggled155
InventorySlot83
InventorySnapshot268
ItemAdded111
ItemCharges253
ItemSubstitution284
ItemUsed159
JoinSide100
KillParticle56
LeaveLocalSight53
LeaveSight81
LeaveTeamSight225
LevelCap274
LevelUp63
LoadingProgress22
Loadout42
MapPing87
MapProp208
MapPropChanged209
MarkerMoved276
MatchIdentity146
MatchStarted194
MinimapIcon216
MinionKillCount287
MissileHits38
MissileLaunched110
MissileRetarget238
MissileSpeed269
MissileState59
MoveCamera37
MovementBounds6
MoveOrder114
MultikillCount277
MusicCue220
NavigationFlags65
NexusIdle4
NexusSkin116
ObjectiveHidden162
ObjectiveReplaced13
ObjectiveShown54
ParticleEnterTeamSight226
ParticleLeaveTeamSight227
ParticlesCreated135
ParticleSource210
Path185
PathWithSpeed131
Pause161
PauseAnimation113
Paused161
PingPlaced64
PlayAnimation176
PlayEmote72
PlayerDisconnected152
QueryStatus20
QueryStatusAnswer136
QuestEvent205
QuestUpdated140
Reconnected15
ReconnectedInMatch156
RegionAdded35
RegionMoved36
RegionRemoved51
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication196
ResourceDisplay147
ResourceKindChanged275
Respawned74
RespawnPoint213
Resume10
Resumed10
Revived47
Roster103
ScoreAdded217
ScreenTint219
SeatChampion101
SeatLoadProgress149
SeatName102
SelectObject175
ShieldAdded102
ShopEnabled240
ShopUndo266
ShopUndoCount267
Shutdown229
SideTextHidden167
SideTextRefreshed177
SideTextShown160
Situation289
SoftReconnect239
SoundPlayed67
SpawnBot207
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet55
SpawnStart98
SpawnTurret291
SpawnUnit124
SpellCastAnswer181
SpellCharge230
SpellCharges263
SpellCooldown133
SpellCostChanged260
SpellInSlot112
SpellLevel91
SpellNumbers127
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame92
StatisticIncremented218
StatsRequest86
StatTick40
StopAnimation41
StopAttack52
StreamChunk237
StreamChunkRange236
StreamMetadata235
StreamRequest234
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus165
SurrenderVote164
SurrenderVoteCalled201
SwapItems32
SwapItemsAnswer62
SystemMessage247
TargetHeldChampion192
TargetUnit106
TeamChanged215
TeamScore212
ThemeMusic96
TipEvent109
TipShown85
TransientAck168
TutorialChatLine2
TutorialPopup179
TutorialPopupClosed204
TutorialShopOpened93
UiHighlight202
Unhandled286286
UnitDied158
UnitHighlighted89
UnitHighlightRemoved180
UnitLookAt271
UnitStopped49
UnitText25
UpgradeSpell57
UseObject58
VersionSync84
VictoryDance197
VoiceCommand68
VoiceEvent121
VoiceEventDone5
VoiceOverride150
VolumeMuted39
WaypointAck119
WaypointGroup97
WaypointGroupAtSpeed100
WorldEvent69

Against 4.16

Where a build from 4.17.0.233 up to, not including, 4.18.0.271 differs from one from 4.16.0.238 up to, not including, 4.17.0.233. Anything not named here is the same in both.

In 4.17, not in 4.16

MessageSent byCommandWhat it does
ThemeMusicserver96 on eventsSet a champion’s skin music

Laid out differently

Structs

  • SpellHit
    • atX is in 4.16 and not in 4.17.
    • atY is in 4.16 and not in 4.17.
    • atZ is in 4.16 and not in 4.17.
  • StreamRecord is in 4.17 and not in 4.16.

Chapters

  • In the time chapter, a passage holds for 4.17 and not 4.16: The time between two of a stream’s records (StreamRecord) is in milliseconds.
  • In the guidance chapter, a passage holds for 4.17 and not 4.16: A client takes TutorialPopup in any match.
  • In the spectating chapter, a passage holds for 4.17 and not 4.16: Each record is a StreamRecord, written against the one before it to save space.

4.18–4.19

Client builds from 4.18.0.271 up to, not including, 4.20.0.315. Patch notes: V4.18, V4.19.

Build checkedPassedFailedSkippedCommitDate
4.18.0.2711103041bb6b2026-10-23
4.18.0.274110560a7c4c2026-10-19
4.18.0.279110560a7c4c2026-10-19
4.18.0.282110560a7c4c2026-10-19
4.19.0.435110560a7c4c2026-10-19
4.19.0.446110560a7c4c2026-10-19
4.19.0.452110560a7c4c2026-10-19
4.19.0.454110560a7c4c2026-10-19
4.19.0.457110560a7c4c2026-10-19

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: FloatingTextOnMap, InventorySnapshotOnMap, MissileCourse, MissileReport, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, UnitDiedOnMap.

Every message of this range (270)
MessageCommand
AfkWarning184
AnimationAdvanced259
AnimationOverrides107
AppearanceCleared200
AppearancePopped103
AppearancePushed151
AscendedUnit292
Attack12
AttackFrom26
AttackIndicators258
AttackSpeedBounds288
Autocast31
BalanceResult252
BalanceVote250
BalanceVoteAnswer251
BalanceVoteRefused250
BotDebug19
BotKick222
BotState170
BotTargets105
BounceMissile281
BuildingDied137
BuyItem130
Camera46
CameraAck44
CameraBehaviour115
CameraLock129
CameraLockSet120
CampCleared195
CampMarker290
CampOpened233
CampTimer278
CancelTargeting134
CapturePointChanged211
CastSpell154
ChainTargets108
ChampionDied94
ChampionRemoved272
ChampionStats70
CharacterPreload138
CharacterSelected190
Chat104
ChatAllowance249
ClientEvent163
ClientFinished141
ClientReady82
ClientVersion189
ClockConvergence118
ClockReply8
ClockSync193
CloseShop14
ContextEmote243
CreateChampion76
CreateFollower241
CreateNeutral99
CreateTurret157
CursorRings264
Damage101
DeathHistory33
DeathTimer279
DestroyMissile90
DrawPath262
DrawPathMode261
EffectAdded183
EffectAddedGroup104
EffectCount28
EffectCounter265
EffectCountGroup191
EffectRemoved123
EffectRemovedGroup148
EffectReplaced48
EffectReplacedGroup30
EmitterPause248
EmotePlayed66
Empty0
EnterLocalSight174
EnterSight186
EnterTeamSight224
Exit143
ExperienceGained16
FaceDirection80
FadeMinions203
FadeRemoved50
FadeSounds95
FadeTo178
FloatingText24
FogSet171
FogToggled126
FollowerMaster242
ForceDeath27
GameEnded198
GameOptions71
GameSpeed18
GoldEarned228
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead169
GroundAttackMode257
HealthBar206
HoverIndicator246
HoverTarget245
HudDisabled188
HudHighlighted61
HudHighlightToggled79
InhibitorState43
InputLock132
InputLockToggled155
InventorySlot83
InventorySnapshot268
ItemAdded111
ItemCharges253
ItemSubstitution284
ItemUsed159
JoinSide100
KillParticle56
LeaveLocalSight53
LeaveSight81
LeaveTeamSight225
LevelCap274
LevelUp63
LoadingProgress22
Loadout42
MapPing87
MapProp208
MapPropChanged209
MarkerMoved276
MatchIdentity146
MatchStarted194
MinimapIcon216
MinionKillCount287
MissileHits38
MissileLaunched110
MissileRetarget238
MissileSpeed269
MissileState59
MoveCamera37
MovementBounds6
MoveOrder114
MultikillCount277
MusicCue220
NavigationFlags65
NexusIdle4
NexusSkin116
ObjectiveHidden162
ObjectiveReplaced13
ObjectiveShown54
ParticleEnterTeamSight226
ParticleLeaveTeamSight227
ParticlesCreated135
ParticleSource210
Path185
PathWithSpeed131
Pause161
PauseAnimation113
Paused161
PingPlaced64
PlayAnimation176
PlayEmote72
PlayerDisconnected152
QueryStatus20
QueryStatusAnswer136
QuestEvent205
QuestUpdated140
Reconnected15
ReconnectedInMatch156
RegionAdded35
RegionMoved36
RegionRemoved51
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication196
ResourceDisplay147
ResourceKindChanged275
Respawned74
RespawnPoint213
Resume10
Resumed10
Revived47
Roster103
ScoreAdded217
ScreenTint219
SeatChampion101
SeatLoadProgress149
SeatName102
SelectObject175
ShieldAdded102
ShopEnabled240
ShopUndo266
ShopUndoCount267
Shutdown229
SideTextHidden167
SideTextRefreshed177
SideTextShown160
Situation289
SoftReconnect239
SoundPlayed67
SpawnBot207
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet55
SpawnStart98
SpawnTurret291
SpawnUnit124
SpellCastAnswer181
SpellCharge230
SpellCharges263
SpellCooldown133
SpellCostChanged260
SpellInSlot112
SpellLevel91
SpellNumbers127
SpellRankLimits273
SpellSlotChanged23
SpellToggled280
SpellUpgraded21
StartGame92
StatisticIncremented218
StatsRequest86
StatTick40
StopAnimation41
StopAttack52
StreamChunk237
StreamChunkRange236
StreamMetadata235
StreamRequest234
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus165
SurrenderVote164
SurrenderVoteCalled201
SwapItems32
SwapItemsAnswer62
SystemMessage247
TargetHeldChampion192
TargetUnit106
TeamChanged215
TeamScore212
ThemeMusic96
TipEvent109
TipShown85
TransientAck168
TutorialChatLine2
TutorialPopup179
TutorialPopupClosed204
TutorialShopOpened93
UiHighlight202
Unhandled286286
UnitDied158
UnitHighlighted89
UnitHighlightRemoved180
UnitLookAt271
UnitStopped49
UnitText25
UpgradeSpell57
UseObject58
VersionSync84
VictoryDance197
VoiceCommand68
VoiceEvent121
VoiceEventDone5
VoiceOverride150
VolumeMuted39
WaypointAck119
WaypointGroup97
WaypointGroupAtSpeed100
WorldEvent69

Against 4.17

Where a build from 4.18.0.271 up to, not including, 4.20.0.315 differs from one from 4.17.0.233 up to, not including, 4.18.0.271. Anything not named here is the same in both.

Laid out differently

  • AppearancePushed (vectors: one-on-4-18)
    • The same fields come in another order in 4.18–4.19.
  • Attack
    • strike is in 4.18–4.19 (Strike) at the start, and not in 4.17.
    • target is in 4.17 and not in 4.18–4.19.
    • targetX is in 4.17 and not in 4.18–4.19.
    • targetY is in 4.17 and not in 4.18–4.19.
    • targetZ is in 4.17 and not in 4.18–4.19.
    • timing is in 4.17 and not in 4.18–4.19.
    • missile is in 4.17 and not in 4.18–4.19.
    • slot is in 4.17 and not in 4.18–4.19.
  • AttackFrom
    • strike is in 4.18–4.19 (Strike) at the start, and not in 4.17.
    • target is in 4.17 and not in 4.18–4.19.
    • targetX is in 4.17 and not in 4.18–4.19.
    • targetY is in 4.17 and not in 4.18–4.19.
    • targetZ is in 4.17 and not in 4.18–4.19.
    • timing is in 4.17 and not in 4.18–4.19.
    • missile is in 4.17 and not in 4.18–4.19.
    • slot is in 4.17 and not in 4.18–4.19.
  • AttackIndicators
    • show is u8 in 4.17 and 1-byte bits in 4.18–4.19.
    • show has show at bit 0 in 4.18–4.19, and not in 4.17.
    • show has minimap at bit 1 in 4.18–4.19, and not in 4.17.
    • show has unused at bit 2 in 4.18–4.19, and not in 4.17.
    • minimap is in 4.17 and not in 4.18–4.19.
  • AttackSpeedBounds
    • overrides is in 4.18–4.19 (1-byte bits) at the start, and not in 4.17.
    • useCeiling is in 4.17 and not in 4.18–4.19.
    • useFloor is in 4.17 and not in 4.18–4.19.
  • BotKick
    • action is u8 in 4.17 and u32 in 4.18–4.19.
    • action takes 5 leave in 4.18–4.19 and not in 4.17.
    • action takes 4 leave in 4.17 and not in 4.18–4.19.
  • CampCleared
    • does.unused is at bit 2, 6 bits wide, in 4.17 and at bit 1, 7 bits wide, in 4.18–4.19.
    • does has firstSide at bit 1 in 4.17, and not in 4.18–4.19.
  • CancelTargeting
    • slot is in 4.18–4.19 (u8) at the start, and not in 4.17.
    • which.summonerSpell is at bit 6 in 4.17 and at bit 0 in 4.18–4.19.
    • which.unused is at bit 7, 1 bits wide, in 4.17 and at bit 1, 7 bits wide, in 4.18–4.19.
    • which has slot at bit 0 in 4.17, and not in 4.18–4.19.
  • CapturePointChanged
    • resourceKind takes 7 heat, 8 gnarFury, 9 ferocity, 10 bloodWell, 11 wind, 12 other in 4.17 and not in 4.18–4.19.
    • side is i32 in 4.17 and u32 in 4.18–4.19.
    • change takes 0 bind, 1 ignored in 4.17 and not in 4.18–4.19.
  • CastSpell
    • how has fromSummonerSlots at bit 0 in 4.18–4.19, and not in 4.17.
    • how has fromHud at bit 1 in 4.18–4.19, and not in 4.17.
    • how has unused at bit 2 in 4.18–4.19, and not in 4.17.
    • how has slot at bit 0 in 4.17, and not in 4.18–4.19.
    • how has summonerSpell at bit 6 in 4.17, and not in 4.18–4.19.
    • how has clicked at bit 7 in 4.17, and not in 4.18–4.19.
    • slot is in 4.18–4.19 (u8), after how, and not in 4.17.
  • ChampionDied
    • death is in 4.18–4.19 (Death) at the start, and not in 4.17.
    • killer is in 4.17 and not in 4.18–4.19.
    • damageType is in 4.17 and not in 4.18–4.19.
    • damageSource is in 4.17 and not in 4.18–4.19.
    • stayDown is in 4.17 and not in 4.18–4.19.
    • how is in 4.17 and not in 4.18–4.19.
    • kind is in 4.17 and not in 4.18–4.19.
  • CreateChampion
    • who is in 4.18–4.19 (1-byte bits), after skillLevel, and not in 4.17.
    • deathKind is in 4.18–4.19 (u32), after downFor, and not in 4.17.
    • how.swap is at bit 3 in 4.17 and at bit 0 in 4.18–4.19.
    • how has hidden at bit 1 in 4.18–4.19, and not in 4.17.
    • how.unused is at bit 4, 4 bits wide, in 4.17 and at bit 2, 6 bits wide, in 4.18–4.19.
    • how has down at bit 0 in 4.17, and not in 4.18–4.19.
    • side is in 4.17 and not in 4.18–4.19.
    • bot is in 4.17 and not in 4.18–4.19.
  • CreateNeutral (vectors: still-on-4-18)
    • roaming takes 0 still in 4.18–4.19 and not in 4.17.
    • roaming takes 0 inactive in 4.17 and not in 4.18–4.19.
    • behaviour is in 4.17 and not in 4.18–4.19.
  • CreateTurret
    • how names bit 1 unused in 4.17 and unknown in 4.18–4.19.
  • Damage
    • result is in 4.18–4.19 (u8) at the start, and not in 4.17.
    • unused is in 4.18–4.19 (u8), after result, and not in 4.17.
    • kind is in 4.18–4.19 (u8), after unused, and not in 4.17.
    • how is in 4.17 and not in 4.18–4.19.
  • DeathHistory (vectors: one-on-4-18)
    • cause is in 4.18–4.19 (u8) at the start, and not in 4.17.
    • sourceType is in 4.17 and not in 4.18–4.19.
  • EmitterPause
    • groupOperation is u8 in 4.17 and u32 in 4.18–4.19.
    • groupOperation takes 1 emission, 2 restart in 4.18–4.19 and not in 4.17.
    • groupOperation takes 0 emission in 4.17 and not in 4.18–4.19.
  • EnterLocalSight
    • carried is 2-byte bits in 4.17 and u16 in 4.18–4.19.
    • carried has size at bit 0 in 4.17, and not in 4.18–4.19.
    • carried has unused at bit 13 in 4.17, and not in 4.18–4.19.
    • messages is sized by carried.size × CarriedMessage in 4.17 and sized by carried × CarriedMessage in 4.18–4.19.
  • EnterSight
    • carried is 2-byte bits in 4.17 and u16 in 4.18–4.19.
    • carried has size at bit 0 in 4.17, and not in 4.18–4.19.
    • carried has unused at bit 13 in 4.17, and not in 4.18–4.19.
    • messages is sized by carried.size × CarriedMessage in 4.17 and sized by carried × CarriedMessage in 4.18–4.19.
  • FaceDirection
    • The same fields come in another order in 4.18–4.19.
  • FadeRemoved
    • fade is u16 in 4.17 and i16 in 4.18–4.19.
  • GameEnded
    • result.unused is at bit 2, 6 bits wide, in 4.17 and at bit 1, 7 bits wide, in 4.18–4.19.
    • result has surrendered at bit 1 in 4.17, and not in 4.18–4.19.
  • HudHighlighted (vectors: one-on-4-18)
    • part takes 1 hud, 3 minimap in 4.18–4.19 and not in 4.17.
    • part takes 0 hud, 2 minimap in 4.17 and not in 4.18–4.19.
  • InhibitorState
    • state is 2-byte bits in 4.17 and u8 in 4.18–4.19.
    • state has duration at bit 0 in 4.17, and not in 4.18–4.19.
    • state has alive at bit 15 in 4.17, and not in 4.18–4.19.
    • duration is in 4.18–4.19 (u16), after state, and not in 4.17.
  • ItemAdded
    • how has tellTheClient at bit 0 in 4.18–4.19, and not in 4.17.
    • how.unused is at bit 0, 6 bits wide, in 4.17 and at bit 1, 7 bits wide, in 4.18–4.19.
    • how has announce at bit 6 in 4.17, and not in 4.18–4.19.
    • how has unused7 at bit 7 in 4.17, and not in 4.18–4.19.
  • LoadingProgress
    • status.ping is at bit 16, 15 bits wide, in 4.17 and at bit 16, 16 bits wide, in 4.18–4.19.
    • status has loaded at bit 31 in 4.17, and not in 4.18–4.19.
    • state is in 4.18–4.19 (1-byte bits), after status, and not in 4.17.
  • Loadout
    • summonersAgain is in 4.18–4.19 (2 × u32), after summoners, and not in 4.17.
  • MapProp
    • side is 2-byte bits in 4.17 and u16 in 4.18–4.19.
    • side has side at bit 0 in 4.17, and not in 4.18–4.19.
    • side has unused at bit 9 in 4.17, and not in 4.18–4.19.
    • kind is u8 in 4.17 and u32 in 4.18–4.19.
    • kind takes 0 active, 1 scenery in 4.17 and not in 4.18–4.19.
  • MapPropChanged
    • startsAt is in 4.18–4.19 (f32), after name, and not in 4.17.
    • lasts is in 4.18–4.19 (f32), after startsAt, and not in 4.17.
    • flags is in 4.18–4.19 (u32), after prop, and not in 4.17.
    • kind is in 4.18–4.19 (u32), after flags, and not in 4.17.
    • byteA is in 4.18–4.19 (u8), after kind, and not in 4.17.
    • byteB is in 4.18–4.19 (u8), after byteA, and not in 4.17.
    • byteC is in 4.18–4.19 (u8), after byteB, and not in 4.17.
    • first is in 4.17 and not in 4.18–4.19.
    • second is in 4.17 and not in 4.18–4.19.
    • value is in 4.17 and not in 4.18–4.19.
    • change is in 4.17 and not in 4.18–4.19.
    • option is in 4.17 and not in 4.18–4.19.
    • effect is in 4.17 and not in 4.18–4.19.
    • point is in 4.17 and not in 4.18–4.19.
  • MinimapIcon
    • changeIcon is u8 in 4.17 and 1-byte bits in 4.18–4.19.
    • changeIcon has change at bit 0 in 4.18–4.19, and not in 4.17.
    • changeIcon has unused at bit 1 in 4.18–4.19, and not in 4.17.
    • changeBorder is u8 in 4.17 and 1-byte bits in 4.18–4.19.
    • changeBorder has change at bit 0 in 4.18–4.19, and not in 4.17.
    • changeBorder has unused at bit 1 in 4.18–4.19, and not in 4.17.
  • MoveCamera
    • how names bit 1 unused1 in 4.17 and unlock in 4.18–4.19.
  • ParticleSource
    • source is u8 in 4.17 and u32 in 4.18–4.19.
    • source takes 1 capturePoint, 2 resource, 3 resourceSmoothed in 4.18–4.19 and not in 4.17.
    • source takes 0 capturePoint, 1 resource, 2 resourceSmoothed in 4.17 and not in 4.18–4.19.
  • PathWithSpeed
    • facing is i8 in 4.17 and u8 in 4.18–4.19.
  • Pause
    • how names bit 0 tournament in 4.17 and unlimited in 4.18–4.19.
  • Paused
    • how names bit 0 tournament in 4.17 and unlimited in 4.18–4.19.
  • PingPlaced
    • category is in 4.18–4.19 (u8), after source, and not in 4.17.
    • does is in 4.18–4.19 (1-byte bits), after category, and not in 4.17.
    • how is in 4.17 and not in 4.18–4.19.
  • PlayAnimation (vectors: one-on-4-18)
    • flags is 4-byte bits in 4.17 and 1-byte bits in 4.18–4.19.
    • flags.unused is at bit 5, 27 bits wide, in 4.17 and at bit 5, 3 bits wide, in 4.18–4.19.
  • QuestUpdated (vectors: primary-on-4-18)
    • flags has succeeded at bit 2 in 4.18–4.19, and not in 4.17.
    • flags.unused is at bit 2, 6 bits wide, in 4.17 and at bit 3, 5 bits wide, in 4.18–4.19.
  • RegionAdded (vectors: circle-on-4-18)
    • otherUnit is in 4.18–4.19 (u32), after clientId, and not in 4.17.
  • RemoveItem
    • slot is in 4.18–4.19 (u8) at the start, and not in 4.17.
    • how is in 4.18–4.19 (1-byte bits), after slot, and not in 4.17.
    • which is in 4.17 and not in 4.18–4.19.
  • RemoveItemAnswer
    • slot is in 4.18–4.19 (u8) at the start, and not in 4.17.
    • how is in 4.18–4.19 (1-byte bits), after left, and not in 4.17.
    • which is in 4.17 and not in 4.18–4.19.
  • Replication
    • The other channels it may come on change.
  • SeatLoadProgress
    • count is in 4.18–4.19 (u16), after secondsLeft, and not in 4.17.
    • ping is in 4.18–4.19 (u16), after count, and not in 4.17.
    • state is in 4.18–4.19 (1-byte bits), after ping, and not in 4.17.
    • status is in 4.17 and not in 4.18–4.19.
  • SoftReconnect
    • stage is 1-byte bits in 4.17 and u32 in 4.18–4.19.
    • stage takes 1 mark in 4.18–4.19 and not in 4.17.
    • stage has stage at bit 0 in 4.17, and not in 4.18–4.19.
    • stage has unused at bit 2 in 4.17, and not in 4.18–4.19.
  • SpawnFromBarracks (vectors: one-on-4-18)
    • damageBonus is i16 in 4.17 and u16 in 4.18–4.19.
    • healthBonus is i16 in 4.17 and u16 in 4.18–4.19.
  • SpawnStart
    • firstCount is in 4.18–4.19 (u8) at the start, and not in 4.17.
    • secondCount is in 4.18–4.19 (u8), after firstCount, and not in 4.17.
    • botsOnOneSide is in 4.17 and not in 4.18–4.19.
    • botsOnTheOther is in 4.17 and not in 4.18–4.19.
  • SpawnTurret (vectors: one-on-4-18)
    • flags is 2-byte bits in 4.17 and 1-byte bits in 4.18–4.19.
    • flags has unusedLow at bit 0 in 4.18–4.19, and not in 4.17.
    • flags.invulnerable is at bit 9 in 4.17 and at bit 1 in 4.18–4.19.
    • flags.unused is at bit 10 in 4.17 and at bit 2 in 4.18–4.19.
    • flags has side at bit 0 in 4.17, and not in 4.18–4.19.
    • side is in 4.18–4.19 (u16), after flags, and not in 4.17.
  • SpawnUnit
    • team is in 4.18–4.19 (u16), after clone, and not in 4.17.
    • flags is 2-byte bits in 4.17 and 1-byte bits in 4.18–4.19.
    • flags.ignoreCollision is at bit 9 in 4.17 and at bit 0 in 4.18–4.19.
    • flags.ward is at bit 10 in 4.17 and at bit 1 in 4.18–4.19.
    • flags.laneMinion is at bit 11 in 4.17 and at bit 2 in 4.18–4.19.
    • flags.bot is at bit 12 in 4.17 and at bit 3 in 4.18–4.19.
    • flags.unused is at bit 13, 3 bits wide, in 4.17 and at bit 4, 4 bits wide, in 4.18–4.19.
    • flags has team at bit 0 in 4.17, and not in 4.18–4.19.
    • unused is in 4.18–4.19 (u32), after flags, and not in 4.17.
    • targetableToTeam is in 4.17 and not in 4.18–4.19.
  • SpellCharge
    • flags.summonerSpell is at bit 6 in 4.17 and at bit 0 in 4.18–4.19.
    • flags.end is at bit 7 in 4.17 and at bit 1 in 4.18–4.19.
    • flags has unused at bit 2 in 4.18–4.19, and not in 4.17.
    • flags has slot at bit 0 in 4.17, and not in 4.18–4.19.
    • slot is in 4.18–4.19 (u8), after flags, and not in 4.17.
  • SpellCooldown
    • slot is in 4.18–4.19 (u8) at the start, and not in 4.17.
    • how is in 4.18–4.19 (1-byte bits), after slot, and not in 4.17.
    • which is in 4.17 and not in 4.18–4.19.
  • SpellCostChanged (vectors: flat-on-4-18)
    • costType takes 1 flat, 2 multiplier in 4.18–4.19 and not in 4.17.
    • costType takes 0 flat, 1 multiplier in 4.17 and not in 4.18–4.19.
  • SpellSlotChanged
    • slot is in 4.18–4.19 (u8) at the start, and not in 4.17.
    • what is in 4.18–4.19 (1-byte bits), after slot, and not in 4.17.
    • kind is u8 in 4.17 and u32 in 4.18–4.19.
    • kind takes 1 targeting, 2 name, 3 range, 4 maxRange, 5 shownRange, 6 icon, 7 targets in 4.18–4.19 and not in 4.17.
    • kind takes 0 targeting, 1 name, 2 range, 3 maxRange, 4 shownRange, 5 icon, 6 offsetTargets in 4.17 and not in 4.18–4.19.
    • targeting is present when kind = 0 in 4.17, and present when kind = 1 in 4.18–4.19.
    • name is present when kind = 1 in 4.17, and present when kind = 2 in 4.18–4.19.
    • range is present when kind = 2 in 4.17, and present when kind = 3 in 4.18–4.19.
    • maxRange is present when kind = 3 in 4.17, and present when kind = 4 in 4.18–4.19.
    • shownRange is present when kind = 4 in 4.17, and present when kind = 5 in 4.18–4.19.
    • icon is present when kind = 5 in 4.17, and present when kind = 6 in 4.18–4.19.
    • targetCount is present when kind = 6 in 4.17, and present when kind = 7 in 4.18–4.19.
    • targets is present when kind = 6 in 4.17, and present when kind = 7 in 4.18–4.19.
    • which is in 4.17 and not in 4.18–4.19.
  • SpellToggled
    • state is u8 in 4.17 and 1-byte bits in 4.18–4.19.
    • state has on at bit 0 in 4.18–4.19, and not in 4.17.
    • state has unused at bit 1 in 4.18–4.19, and not in 4.17.
  • StopAttack
    • how names bit 1 forceCast in 4.17 and finishSwing in 4.18–4.19.
    • how names bit 2 forceStop in 4.17 and forced in 4.18–4.19.
  • StreamChunk (vectors: startup-on-4-18)
    • duration is u32 in 4.17 and i32 in 4.18–4.19.
  • SurrenderStatus
    • reason is u8 in 4.17 and u32 in 4.18–4.19.
    • side is u32 in 4.17 and u16 in 4.18–4.19.
  • TeamScore
    • side is i32 in 4.17 and u32 in 4.18–4.19.
  • ThemeMusic (vectors: one-on-4-18)
    • secondTrack is in 4.18–4.19 (u32), after track, and not in 4.17.
  • TipEvent
    • what takes 0 clicked, 1 closed in 4.17 and not in 4.18–4.19.
  • UnitDied
    • death is in 4.18–4.19 (Death) at the start, and not in 4.17.
    • killer is in 4.17 and not in 4.18–4.19.
    • damageType is in 4.17 and not in 4.18–4.19.
    • damageSource is in 4.17 and not in 4.18–4.19.
    • stayDown is in 4.17 and not in 4.18–4.19.
    • how is in 4.17 and not in 4.18–4.19.
    • kind is in 4.17 and not in 4.18–4.19.
  • UnitText
    • style is u8 in 4.17 and u32 in 4.18–4.19.
  • VersionSync (vectors: one-on-4-18)
    • agreement names bit 1 reportsToFile in 4.17 and logMetrics in 4.18–4.19.
    • tipFlags is 1-byte bits in 4.17 and i8 in 4.18–4.19.
    • tipFlags has enabled at bit 0 in 4.17, and not in 4.18–4.19.
    • tipFlags has replay at bit 1 in 4.17, and not in 4.18–4.19.
    • tipFlags has loadingScreen at bit 2 in 4.17, and not in 4.18–4.19.
    • tipFlags has inGame at bit 3 in 4.17, and not in 4.18–4.19.
    • tipFlags has cycle at bit 4 in 4.17, and not in 4.18–4.19.
    • tipFlags has unused at bit 5 in 4.17, and not in 4.18–4.19.
    • features is 8-byte bits in 4.17 and u64 in 4.18–4.19.
    • features has balanceVoteCommands at bit 0 in 4.17, and not in 4.18–4.19.
    • features has menuBack at bit 1 in 4.17, and not in 4.18–4.19.
    • features has menuBack2 at bit 2 in 4.17, and not in 4.18–4.19.
    • features has quickChat at bit 3 in 4.17, and not in 4.18–4.19.
    • features has missileWarning at bit 4 in 4.17, and not in 4.18–4.19.
    • features has animatedCursors at bit 5 in 4.17, and not in 4.18–4.19.
    • features has shopUndo at bit 6 in 4.17, and not in 4.18–4.19.
    • features has bit7 at bit 7 in 4.17, and not in 4.18–4.19.
    • features has skillshotOutline at bit 8 in 4.17, and not in 4.18–4.19.
    • features has championIndicator at bit 9 in 4.17, and not in 4.18–4.19.
    • features has altBounty at bit 10 in 4.17, and not in 4.18–4.19.
    • features has bit11 at bit 11 in 4.17, and not in 4.18–4.19.
    • features has turretRange at bit 12 in 4.17, and not in 4.18–4.19.
    • features has bit13 at bit 13 in 4.17, and not in 4.18–4.19.
    • features has skinParticles at bit 14 in 4.17, and not in 4.18–4.19.
    • features has networkMetrics at bit 15 in 4.17, and not in 4.18–4.19.
    • features has hardwareMetrics at bit 16 in 4.17, and not in 4.18–4.19.
    • features has lagMetrics at bit 17 in 4.17, and not in 4.18–4.19.
    • features has eventReports at bit 18 in 4.17, and not in 4.18–4.19.
    • features has logServerAddress at bit 19 in 4.17, and not in 4.18–4.19.
    • features has jungleTimers at bit 20 in 4.17, and not in 4.18–4.19.
    • features has traceroute at bit 21 in 4.17, and not in 4.18–4.19.
    • features has bit22 at bit 22 in 4.17, and not in 4.18–4.19.
    • features has bit23 at bit 23 in 4.17, and not in 4.18–4.19.
    • features has bit24 at bit 24 in 4.17, and not in 4.18–4.19.
    • features has clockSync at bit 25 in 4.17, and not in 4.18–4.19.
    • features has bit26 at bit 26 in 4.17, and not in 4.18–4.19.
    • features has farmBounty at bit 27 in 4.17, and not in 4.18–4.19.
    • features has turretsPersist at bit 28 in 4.17, and not in 4.18–4.19.
    • features has stateFlags at bit 29 in 4.17, and not in 4.18–4.19.
    • features has unused at bit 30 in 4.17, and not in 4.18–4.19.
    • features has unusedHigh at bit 32 in 4.17, and not in 4.18–4.19.
  • VoiceCommand
    • padding1 is in 4.17 and not in 4.18–4.19.
    • padding2 is in 4.17 and not in 4.18–4.19.
    • padding3 is in 4.17 and not in 4.18–4.19.
    • padding4 is in 4.17 and not in 4.18–4.19.
  • VoiceOverride (vectors: one-on-4-18)
    • Its layout changes in a detail.
  • VolumeMuted (vectors: music-on-4-18)
    • category takes 7 pings in 4.18–4.19 and not in 4.17.

Structs

  • Death is in 4.18–4.19 and not in 4.17.
  • StreamRecord is in 4.17 and not in 4.18–4.19.
  • Strike is in 4.18–4.19 and not in 4.17.

Chapters

  • In the objects chapter, a passage holds for 4.17 and not 4.18–4.19: The stage of SoftReconnect that marks is 0.
  • In the objects chapter, a passage holds for 4.18–4.19 and not 4.17: The stage of SoftReconnect that marks is 1.
  • In the space chapter, a passage holds for 4.18–4.19 and not 4.17: A client also has data for map 11, a second Summoner’s Rift, whose paths have their origin at 7358, 7412.
  • In the time chapter, a passage holds for 4.17 and not 4.18–4.19: The time between two of a stream’s records (StreamRecord) is in milliseconds.
  • In the time chapter, a passage holds for 4.18–4.19 and not 4.17: MapPropChanged gives when its change begins in milliseconds of match time.
  • In the data chapter, a passage holds for 4.17 and not 4.18–4.19: The client has maps 1, 8, 10 and 12, and no map 11.
  • In the data chapter, a passage holds for 4.18–4.19 and not 4.17: The client has maps 1, 8, 10, 11 and 12.
  • In the match chapter, a passage holds for 4.17 and not 4.18–4.19: A client names no one in Pause or Resume.
  • In the match chapter, a passage holds for 4.18–4.19 and not 4.17: A client puts 0 in the client id of Pause and Resume, the same id as the first seat’s, so a server takes no seat from that field.
  • In the match chapter, a passage holds for 4.17 and not 4.18–4.19: The action of BotKick that means leave is 4.
  • In the match chapter, a passage holds for 4.18–4.19 and not 4.17: The action of BotKick that means leave is 5.
  • In the spectating chapter, a passage holds for 4.17 and not 4.18–4.19: Each record is a StreamRecord, written against the one before it to save space.

Only notes

These read the same on the wire, and only their notes change. What each says in 4.18–4.19:

  • BalanceVoteAnswer, vote.unused: “Unused; a client may leave any value here, and a server ignores it.”, where 4.17 has “Unused; a client writes zero.”
  • BalanceVoteRefused, flags: “A vote against: the lowest bit is clear. The other bits carry no meaning, and a server ignores them.”, where 4.17 has “Zero: a vote against.”
  • CameraLock, its layout: no note, where 4.17 has “A client sends it whenever its lock changes: by the player, or as the game forces a lock or lifts one. It sends none while playing a replay.”
  • CameraLock, state.unused: “Unused; a client may leave any value here, and a server ignores it.”, where 4.17 has “Unused; a client writes zero.”
  • ChampionStats, values: “The figures themselves, one after another with nothing between. Which they are comes from the client’s own data for the match’s mode. In a classic match there are 76, in this order: assists, inhibitors destroyed, champion kills, consumables bought, double kills, experience (f32), own inhibitors lost, own nexus lost, own turrets lost, gold earned (f32), gold spent (f32), nexus destroyed, player id, the items in slots 0 to 6, items bought, killing sprees, largest critical strike (f32), largest killing spree, largest multikill, level, longest time alive (f32), magic damage dealt (f32), magic damage to champions (f32), magic damage taken (f32), minions killed, name (text), neutral monsters killed, monsters killed in the enemy’s jungle, monsters killed in the side’s own jungle, never entered the game, deaths, penta kills, physical damage dealt, to champions and taken (f32 each), ping, quadra kills, sight wards bought, skin, casts of spells 1 to 4, casts of summoner spells 1 and 2, epic monsters killed, side, a teammate never entered the game, time since the last disconnection (f32), time played (f32), time disconnected (f32), total damage dealt, to champions and taken (f32 each), total healing, crowd control dealt (f32), time dead (f32), units healed, triple kills, true damage dealt, to champions and taken (f32 each), turrets destroyed, unreal kills, vision wards bought, wards destroyed, wards placed, away from the keyboard, away after a failed surrender, and win (text). Every one not marked otherwise is an i32; a text is a 16-bit length and that many bytes, at most 63, with nothing to end it. ARAM, First Blood and One for All leave out the two jungle counts. The tutorial also leaves out never entered the game, sight wards bought, a teammate never entered the game, crowd control dealt, the three true damage figures, vision wards bought, wards destroyed, wards placed and away after a failed surrender. Dominion and Ascension have 75, in this order: assists, champion kills, combat score (f32), consumables bought, double kills, experience (f32), gold earned (f32), gold spent (f32), player id, the items in slots 0 to 6, items bought, killing sprees, largest critical strike (f32), largest killing spree, largest multikill, level, longest time alive (f32), magic damage dealt, to champions and taken (f32 each), minions killed, name (text), neutral monsters killed, never entered the game, node captures, node capture assists, node neutralizations, node neutralization assists, deaths, objective score (f32), penta kills, physical damage dealt, to champions and taken (f32 each), ping, quadra kills, sight wards bought, skin, casts of spells 1 to 4, casts of summoner spells 1 and 2, side, a teammate never entered the game, team objective, time since the last disconnection (f32), time played (f32), time disconnected (f32), total damage dealt, to champions and taken (f32 each), total healing, total score (f32), total score rank, crowd control dealt (f32), time dead (f32), units healed, triple kills, true damage dealt, to champions and taken (f32 each), unreal kills, victory points (f32), vision wards bought, away from the keyboard, away after a failed surrender, and win (text).”, where 4.17 has “One value per tally of the match’s mode, the tallies in ascending byte order of their names. An int takes 4 bytes, a float 4, a bool 1, a 64-bit int 8, and text a 16-bit length below 255 then that many bytes. Bytes left over have no effect. A nonzero count of champion kills marks first blood taken.”
  • Chat, textLength: “The length of the text, counted in bytes and excluding the byte that ends it.”, where 4.17 has “The length of the text, counted in bytes and excluding the byte that ends it. A 4.17 client sends at most 255 bytes of text. A client shows the text to its first zero byte.”
  • ClientReady, its layout: no note, where 4.17 has “The tip fields carry VersionSync’s tip bytes, each one outside its valid range negated (0 as -128), and tips cleared where any is. Playing a replay, a client sends all four as zero. The three module fields are always zero.”
  • ClientReady, tipDuration: “How long it stays.”, where 4.17 has “How long it stays, as an entry among the display times in the client’s own settings rather than a length of time.”
  • ClientReady, settings.unused: “Unused; a client may leave any value here, and a server ignores it.”, where 4.17 has “A client returns them as the server sent them.”
  • EffectRemoved, timeLeft: “How long the effect had left to run when it was taken off, in seconds. An effect that ran out carries a value at or near zero, which can fall just below it.”, where 4.17 has “How long the effect had left to run when it was taken off, in seconds.”
  • EmotePlayed, emote: “Which emote, by the number the client knows it as.”, where 4.17 has “Which emote, by the number the client knows it as. A client plays an animation on the champion for 0, 1 and 2, a different one each, and none for 3.”
  • Exit, its layout: “The header names no object: it carries zero.”, where 4.17 has “A client sends it only as it quits by abandoning the match; a match that reaches its end sends none. The header names no object: it carries zero.”
  • GameOptions, options.unused: “Unused; a client writes zero.”, where 4.17 has “Always clear: a client writes the whole byte as 0 or 1.”
  • GreyscaleWhenDead, state.enabled: “Set where the world is drawn without colour.”, where 4.17 has “Set where the world is drawn without colour. Clear, it does not stop a client drawing the world without colour while its champion is down.”
  • MissileState, its layout: “The header names the unit casting, as the casting inside does.”, where 4.17 has “Where the end lies on walkable ground, a client takes the ground’s height there for endY. Where age is not zero, it moves the missile’s trail on by age seconds. The header names the unit casting, as the casting inside does.”
  • MissileState, how.bounced: “Set where the missile has already turned off something it struck.”, where 4.17 has “Set where the missile has bounced. It applies only where age is above zero: a client then moves the missile to its position and places it again from the caster’s position, the end and the facing.”
  • PlayEmote, emote: “Which emote, by the number the client knows it as.”, where 4.17 has “Which emote, by the number the client knows it as. Its four emote keys send 3, 1, 0 and 2, the numbers EmotePlayed plays.”
  • Register, version: “The build the client runs, with each part written out and run together, so 4.20.0.315 arrives as 42000315. A client always carries it, and the answer a server carries back repeats the same number.”, where 4.17 has “The build the client runs, with each part written out and run together, so 4.17.0.233 arrives as 41700233 and 4.17.0.267 as 41700267. A client always carries it, and the answer a server carries back repeats the same number.”
  • Register, proof: “The player identifier and nothing else, enciphered under the key both ends already hold. Deciphering it and finding the identifier beside it is what shows the sender holds the key. A client enciphers the player identifier the request carries.”, where 4.17 has “The player id enciphered with the 16-byte key; a plain copy where the client has no key.”
  • Registered, leading: “Unused; a server writes zero. It occupies the same three bytes a request uses.”, where 4.17 has “Unused; a server writes zero.”
  • Registered, clientId: “The client id the named player holds, counted from zero. A watching client takes the champion of the player holding this client id as its own, so a server answers one with a client id no player in the streamed match holds (see Watching a match).”, where 4.17 has “The client id playerId holds. Where playerId is the client’s own, the client takes this client id as its own and goes on. A watching client takes the champion of the player holding this client id as its own, so a server answers one with a client id no player in the streamed match holds (see Watching a match).”
  • Resume, its layout: no note, where 4.17 has “A client writes only delayed in how; the rest of the byte carries whatever it held there.”
  • Resume, clientId: “A client writes zero; a server ignores it.”, where 4.17 has “A client writes 4294967295, the client id of no client.”
  • Resume, how: “A client clears its lowest bit; the others vary from send to send, and a server ignores them.”, where 4.17 has none
  • Resume, how.delayed: “Set where the match is to start again after a countdown rather than at once.”, where 4.17 has “A client sends it clear.”
  • Resume, how.unused: “Unused; a client may leave any value here, and a server ignores it.”, where 4.17 has “A client leaves these bits unwritten; they carry no meaning, and a server ignores them.”
  • Resumed, its layout: no note, where 4.17 has “The header has no effect. Resuming after the countdown, it keeps input locked and the pause panel open until a countdown of its own ends; resuming at once, it unlocks input and closes the panel.”
  • Resumed, clientId: “The client id of the client that lifted the hold.”, where 4.17 has “The client id of the player who resumed the match, announced in chat in their side’s colour where their champion is known; 4294967295 announces no one.”
  • SpellCastAnswer, syncId: “The movement sync id the cast was made against. Where it is the unit’s latest or newer, a client moves the caster to the cast’s launch point.”, where 4.17 has “It settles whether a client brings the caster’s position in line for this cast, and nothing else.”
  • SpellCastAnswer, how.endCharge: “Set where it ends a charged cast; a client acts on it only while that spell is charging. Clear, a charged cast by the client’s own champion starts the charge display.”, where 4.17 has “Set where the cast ends a charge: a client drops the message unless the caster is charging that same spell. Clear lets a client charge a spell that charges, sending SpellCharge as it does.”
  • StartGame, its layout: no note, where 4.17 has “A client past spawning ignores it.”
  • SurrenderVote, how.inFavour: “Set where the answer is yes.”, where 4.17 has “Set where the answer is yes. A client sends it clear.”
  • SurrenderVote, how.unused: “Unused; a client may leave any value here, and a server ignores it.”, where 4.17 has “Always clear.”
  • SurrenderVoteCalled, its layout: no note, where 4.17 has “A client ignores it unless its menu and its own champion both exist.”
  • SurrenderVoteCalled, how.countAsYes: “Set where the receiving seat is taken to have voted for.”, where 4.17 has “Applies only where side is the client’s own: set shows caller voting yes, clear voting no, opening the menu or not.”
  • SurrenderVoteCalled, how.openTheMenu: “Set where the client shows the vote to the seat.”, where 4.17 has “Set where the vote opens: a client of side opens the vote’s panel from seats and closesIn, which have no other effect; every client is told a vote began, with caller, inFavour, against and side.”
  • SwapItems, from: “The slot the item leaves, which a 4.20 client sends only from 0 to 5.”, where 4.17 has “The slot the item leaves, which a 4.17 client sends only from 0 to 9.”
  • SwapItems, to: “The slot it goes to, never the one from names; a 4.20 client sends only 0 to 5.”, where 4.17 has “The slot it goes to, never the one from names; a 4.17 client sends only 0 to 9.”
  • TipShown, heading: “What the note is headed with, written and padded as above. A server sends the label here and the value it labels in the run above.”, where 4.17 has “What the note is headed with, written and padded as above.”
  • UpgradeSpell, how.evolve: “Set where the point changes the spell rather than raising it.”, where 4.17 has “Set where the player spends an evolution point on the slot rather than levelling it.”
  • UpgradeSpell, how.unused: “Unused; a client may leave any value here, and a server ignores it.”, where 4.17 has “Always clear.”
  • WaypointAck, relocationCount: “How many relocations follow. It counts every movement in the group that carried a token, whether or not the token moved anything.”, where 4.17 has “How many relocations follow.”

4.20

Client builds from 4.20.0.315 up to, not including, 4.21.0.0. Patch notes: V4.20.

Build checkedPassedFailedSkippedCommitDate
4.20.0.31511031bf6d512026-10-22

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: MissileCourse, MissileReport, SpawnBot.

Every message of this range (278)
MessageCommand
AfkWarning184
AnimationAdvanced259
AnimationOverrides107
AnimationUnlocked303
AppearanceCleared200
AppearancePopped103
AppearancePushed151
AscendedUnit292
Attack12
AttackFrom26
AttackIndicators258
AttackSpeedBounds288
Autocast31
BalanceResult252
BalanceVote250
BalanceVoteAnswer251
BalanceVoteRefused250
BotDebug19
BotKick222
BotState170
BotTargets105
BounceMissile281
BuildingDied137
BuyItem130
Camera46
CameraAck44
CameraBehaviour115
CameraLock129
CameraLockSet120
CampCleared195
CampMarker290
CampOpened233
CampTimer278
CancelTargeting134
CapturePointChanged211
CastSpell154
ChainTargets108
ChampionDied94
ChampionRemoved272
ChampionStats70
CharacterPreload138
CharacterSelected190
Chat104
ChatAllowance249
ClientEvent163
ClientFinished141
ClientReady82
ClientVersion189
ClockConvergence118
ClockReply8
ClockSync193
CloseShop14
ContextEmote243
CreateChampion76
CreateFollower241
CreateNeutral99
CreateTurret157
CursorRings264
Damage101
DeathHistory33
DeathTimer279
DestroyMissile90
DragonBuffCount300
DrawPath262
DrawPathMode261
EffectAdded183
EffectAddedGroup104
EffectCount28
EffectCounter265
EffectCountGroup191
EffectRemoved123
EffectRemovedGroup148
EffectReplaced48
EffectReplacedGroup30
EmitterPause248
EmotePlayed66
Empty0
EnterLocalSight174
EnterSight186
EnterTeamSight224
Exit143
ExperienceGained16
FaceDirection80
FadeMinions203
FadeRemoved50
FadeSounds95
FadeTo178
FloatingText24
FloatingTextOnMap296
FogSet171
FogToggled126
FollowerMaster242
ForceDeath27
GameEnded198
GameOptions71
GameSpeed18
GoldEarned228
GoldGained34
GoldRedirect7
GoldSourcesLog282
GreyscaleWhenDead169
GroundAttackMode257
HealthBar206
HoverIndicator246
HoverTarget245
HudDisabled188
HudHighlighted61
HudHighlightToggled79
InhibitorState43
InputLock132
InputLockToggled155
InventorySlot83
InventorySnapshot268
InventorySnapshotOnMap295
ItemAdded111
ItemCharges253
ItemSubstitution284
ItemUsed159
JoinSide100
KillParticle56
LeaveLocalSight53
LeaveSight81
LeaveTeamSight225
LevelCap274
LevelUp63
LoadingProgress22
Loadout42
MapPing87
MapProp208
MapPropChanged209
MarkerMoved276
MatchIdentity146
MatchStarted194
MinimapIcon216
MinionKillCount287
MissileHits38
MissileLaunched110
MissileRetarget238
MissileSpeed269
MissileState59
MoveCamera37
MovementBounds6
MoveOrder114
MultikillCount277
MusicCue220
NavigationFlags65
NexusIdle4
NexusSkin116
ObjectiveHidden162
ObjectiveReplaced13
ObjectiveShown54
ParticleEnterTeamSight226
ParticleLeaveTeamSight227
ParticlesCreated135
ParticleSource210
Path185
PathWithSpeed131
Pause161
PauseAnimation113
Paused161
PingPlaced64
PlayAnimation176
PlayEmote72
PlayerDisconnected152
QueryStatus20
QueryStatusAnswer136
QuestEvent205
QuestUpdated140
Reconnected15
ReconnectedInMatch156
RegionAdded35
RegionMoved36
RegionRemoved51
Register0
Registered0
RemoveItem9
RemoveItemAnswer11
Replication196
ResourceDisplay147
ResourceKindChanged275
Respawned74
RespawnPoint213
Resume10
Resumed10
Revived47
Roster103
ScoreAdded217
ScreenTint219
SeatChampion101
SeatLoadProgress149
SeatName102
SelectObject175
ShieldAdded102
ShopEnabled240
ShopUndo266
ShopUndoCount267
Shutdown229
SideTextHidden167
SideTextRefreshed177
SideTextShown160
Situation289
SoftReconnect239
SoundPlayed67
SpawnEnd17
SpawnFromBarracks3
SpawnMarker256
SpawnPet55
SpawnStart98
SpawnTurret291
SpawnUnit124
SpellCastAnswer181
SpellCharge230
SpellCharges263
SpellCooldown133
SpellCostChanged260
SpellInSlot112
SpellLevel91
SpellNumbers127
SpellRankLimits273
SpellSlotChanged23
SpellSlotChangedForOwner293
SpellTargeterHidden298
SpellTargeterShown297
SpellToggled280
SpellUpgraded21
StartGame92
StatisticIncremented218
StatsRequest86
StatTick40
StopAnimation41
StopAttack52
StreamChunk237
StreamChunkRange236
StreamMetadata235
StreamRequest234
SubstitutionCleared285
SurrenderAllowed270
SurrenderStatus165
SurrenderVote164
SurrenderVoteCalled201
SwapItems32
SwapItemsAnswer62
SystemMessage247
TargetHeldChampion192
TargetUnit106
TeamChanged215
TeamScore212
ThemeMusic96
TipEvent109
TipShown85
TransientAck168
TutorialChatLine2
TutorialPopup179
TutorialPopupClosed204
TutorialShopOpened93
UiHighlight202
Unhandled286286
UnitDied158
UnitDiedOnMap294
UnitHighlighted89
UnitHighlightRemoved180
UnitLookAt271
UnitStopped49
UnitText25
UpgradeSpell57
UseObject58
VersionSync84
VictoryDance197
VoiceCommand68
VoiceEvent121
VoiceEventDone5
VoiceOverride150
VolumeMuted39
WaypointAck119
WaypointGroup97
WaypointGroupAtSpeed100
WorldEvent69
ZoomReport125

Against 4.18–4.19

Where a build from 4.20.0.315 up to, not including, 4.21.0.0 differs from one from 4.18.0.271 up to, not including, 4.20.0.315. Anything not named here is the same in both.

Transport

In 4.20, not in 4.18–4.19

MessageSent byCommandWhat it does
AnimationUnlockedserver303 on eventsLet a unit’s locked animation be replaced again
DragonBuffCountserver300 on eventsSay how many dragon buffs a side holds
FloatingTextOnMapserver296 on eventsFloat text over a unit, to the clients that can see it
InventorySnapshotOnMapserver295 on eventsState a unit’s whole inventory at once, with each slot’s cooldown, to the clients that can see the unit
SpellSlotChangedForOwnerserver293 on eventsWhat a server sends only to the client whose unit a spell slot belongs to, to change something about the spell in it, as SpellSlotChanged does for every client
SpellTargeterHiddenserver298 on eventsTake a spell’s targeter away
SpellTargeterShownserver297 on eventsShow a spell’s targeter on the client’s own champion
UnitDiedOnMapserver294 on eventsSay a unit died, for what the client draws on its map rather than on the field
ZoomReportclient125 on requestsWhat a client sends when it notices it has drawn its view further out than it allows itself

In 4.18–4.19, not in 4.20

MessageSent byCommand it had
SpawnBotserver207 on events

Laid out differently

Chapters

  • In the messages chapter, a passage holds for 4.18–4.19 and not 4.20: A client given the quick chat bit fails while loading.
  • In the objects chapter, a passage holds for 4.18–4.19 and not 4.20: RegionRemoved for a region a client does not hold does nothing.
  • In the objects chapter, a passage holds for 4.18–4.19 and not 4.20: How each kind leaves a client’s world: | Kind | Removed | Its death | | –––––––––– | ———————————————————————————————————————————————————————————–– | ———————————————————————– | | Champion | by ChampionRemoved, at once | kills it; it is held, and comes back | | Minion, monster, pet | by the client, once it has been dead for its death time, 4 seconds unless its character says otherwise; a new SpawnPet for an owner removes that owner’s pet before it | starts that wait; a death naming no killer does nothing | | Turret | by the client, 1.2 seconds after its death, or after the time its SpawnTurret gives; a lane turret is held where VersionSync’s features keep destroyed turrets (turretsPersist) | kills it | | Inhibitor, nexus | never | BuildingDied plays its death; it is held, and an inhibitor comes back | | Missile | by DestroyMissile, by its flight ending, or once its caster is removed | | | Particle | by KillParticle, naming it in its body, or once its effect ends | | | Follower | once the unit it follows is removed | | | Marker | only by a soft reconnect | | | Region | by RegionRemoved, once its lifetime runs out (a lifetime of 0 never does), or once the unit it follows is removed | |
  • In the objects chapter, a passage holds for 4.18–4.19 and not 4.20: A client fails on a RegionMoved naming a region it does not hold, one whose lifetime has run out included, and a server MUST NOT send one.
  • In the time chapter, a passage holds for 4.18–4.19 and not 4.20: A client takes the round trip ClockConvergence reports into its allowance for lateness.
  • In the time chapter, a passage holds for 4.18–4.19 and not 4.20: A client’s match clock does not run until the first ClockSync arrives, which sets it.
  • In the time chapter, a passage holds for 4.18–4.19 and not 4.20: ## The game clock A client also runs a game clock of its own, whose pace GameSpeed sets, from 0 to 10 times normal, and which ClockSync does not set.
  • In the data chapter, a passage holds for 4.18–4.19 and not 4.20: The client has maps 1, 8, 10, 11 and 12.
  • In the data chapter, a passage holds for 4.18–4.19 and not 4.20: Each object’s file is .sco as text or .SCB as binary, and gives its name on its Name= line.
  • In the data chapter, a passage holds for 4.18–4.19 and not 4.20: CreateTurret names a building by its name with _A after it.
  • In the data chapter, a passage holds for 4.18–4.19 and not 4.20: A CreateTurret naming no building does nothing.
  • In the data chapter, a passage holds for 4.18–4.19 and not 4.20: A name’s opening says what the object is: Turret a turret, Barracks without Spawn an inhibitor, HQ_ a nexus.
  • In the data chapter, a passage holds for 4.18–4.19 and not 4.20: A champion begins at its side’s spawn point moved by an offset from DATA/Characters/HeroSpawnOffsets.inibin, read from the section Order<n> or Chaos<n> under the keys Pos<i> and Facing<i>, where i is one more than CreateChampion’s spawn index.
  • In the data chapter, a passage holds for 4.18–4.19 and not 4.20: In the section’s name, n is how many players and bots the side has.
  • In the data chapter, a passage holds for 4.18–4.19 and not 4.20: LEVELS/Map1/Scene/MapObjects.mob holds the objects that are not buildings: each side’s spawn point, the minion spawners, navigation points, the marker of the level’s size and the props.
  • In the data chapter, a passage holds for 4.18–4.19 and not 4.20: The grid’s name is the one the mode’s navigation setting gives.
  • In the data chapter, a passage holds for 4.18–4.19 and not 4.20: Map 1 adds LEVELS/Map1/Items.inibin to the items, and figures for a whole mode are in DATA/Globals/, such as CLASSIC_Stats.inibin and HealthGain.inibin.
  • In the data chapter, a passage holds for 4.18–4.19 and not 4.20: A champion’s spells and attacks are in DATA/Characters/<Champion>/Spells/<Spell>.inibin.
  • In the joining chapter, a passage holds for 4.18–4.19 and not 4.20: The first answer for a client id stands, and a later one for the same client id changes nothing.
  • In the joining chapter, a passage holds for 4.18–4.19 and not 4.20: A client uses which client id stands for which player for names, sides and loading cards.
  • In the joining chapter, a passage holds for 4.18–4.19 and not 4.20: A client loads only where VersionSync sets agreement.buildMatches.
  • In the joining chapter, a passage holds for 4.18–4.19 and not 4.20: A client never compares the two otherwise: the message’s build text appears only in that notice.
  • In the joining chapter, a passage holds for 4.18–4.19 and not 4.20: Every seat a player holds needs its place in Roster, its SeatName and its SeatChampion; a client shows a seat it lacks them for as an empty card.
  • In the joining chapter, a passage holds for 4.18–4.19 and not 4.20: ## The loading screen What a client draws while it loads comes from what it has been sent by then (see the spawn run below for what it takes before CharacterSelected).
  • In the joining chapter, a passage holds for 4.18–4.19 and not 4.20: Each SeatLoadProgress updates the card of the seat it names, and a client draws its own card only as a server returns its own reports.
  • In the joining chapter, a passage holds for 4.18–4.19 and not 4.20: Between ClientReady and StartGame a client keeps its loading screen up with its own progress full, and sends LoadingProgress again about every half a second.
  • In the units chapter, a passage holds for 4.18–4.19 and not 4.20: A client drops a CreateChampion or a CreateNeutral that arrives before it sends CharacterSelected, reconnecting included.
  • In the vision chapter, a passage holds for 4.18–4.19 and not 4.20: A client makes only circular regions.
  • In the vision chapter, a passage holds for 4.18–4.19 and not 4.20: A client’s regions see over walls or not as the region says.
  • In the vision chapter, a passage holds for 4.18–4.19 and not 4.20: A client draws its fog of war, or the map with no darkening, as FogSet and FogToggled say.
  • In the vision chapter, a passage holds for 4.18–4.19 and not 4.20: UnitDiedOnMap, InventorySnapshotOnMap, FloatingTextOnMap and SpellSlotChangedForOwner do not exist, so a server sends both audiences of UnitDied, InventorySnapshot, FloatingText and SpellSlotChanged under the one command each.
  • In the vision chapter, a passage holds for 4.20 and not 4.18–4.19: Some messages exist in more than one form, each for its own audience, laid out alike: | For every client | For the clients that can see the unit | For the unit’s own client | | —————–– | ———————————–– | ––––––––––––– | | UnitDied | UnitDiedOnMap | | | InventorySnapshot | InventorySnapshotOnMap | | | FloatingText | FloatingTextOnMap | | | SpellSlotChanged | | SpellSlotChangedForOwner | A server sends the narrower audience as a message of its own, and sends the wider form only where every client is to know.
  • In the movement chapter, a passage holds for 4.18–4.19 and not 4.20: Where its player has movement prediction on, a client starts its champion toward the point it asked for, and puts it back where it was if no path arrives within 2 seconds.
  • In the match chapter, a passage holds for 4.18–4.19 and not 4.20: A client shows the speed GameSpeed sets over its champion.
  • In the match chapter, a passage holds for 4.18–4.19 and not 4.20: Sent during a hold, GameSpeed takes effect as the match resumes.
  • In the match chapter, a passage holds for 4.18–4.19 and not 4.20: A client puts 0 in the client id of Pause and Resume, the same id as the first seat’s, so a server takes no seat from that field.
  • In the match chapter, a passage holds for 4.18–4.19 and not 4.20: A client begins a hold only where the time Paused carries is above zero and the match is not already held.
  • In the match chapter, a passage holds for 4.18–4.19 and not 4.20: A client shows a tournament’s hold, crediting the seat that asked, where the message says it is one.
  • In the match chapter, a passage holds for 4.18–4.19 and not 4.20: A client that receives GameEnded while still loading leaves at once.
  • In the match chapter, a passage holds for 4.18–4.19 and not 4.20: A client shows a notice in chat for PlayerDisconnected.
  • In the match chapter, a passage holds for 4.18–4.19 and not 4.20: Reconnected announces that another player came back.
  • In the match chapter, a passage holds for 4.18–4.19 and not 4.20: A client’s view report, Camera, goes out as its view moves at least 200 units, at most every tenth of a second, and never while its view is locked.
  • In the match chapter, a passage holds for 4.18–4.19 and not 4.20: Before loading is done, a client waits 60 seconds for an acknowledgement rather than 15.
  • In the match chapter, a passage holds for 4.18–4.19 and not 4.20: In play a client sends nothing on its own to show it is still there: what it sends answers what it is sent (ClockReply, TransientAck, WaypointAck) or follows from its player, and Camera goes out only as its view moves.
  • In the combat chapter, a passage holds for 4.18–4.19 and not 4.20: After StopAttack, a client clears the unit’s attack whatever the message’s flags ask besides.
  • In the combat chapter, a passage holds for 4.18–4.19 and not 4.20: How long a swing takes comes from the champion’s data and its attack speed.
  • In the combat chapter, a passage holds for 4.18–4.19 and not 4.20: Damage shows a figure for the results that carry one, normal and critical; zero is the result that shows the unit as invulnerable, not a plain hit.
  • In the combat chapter, a passage holds for 4.18–4.19 and not 4.20: A client never walks its champion into range by itself: a server sends the WaypointGroup that takes it there.
  • In the combat chapter, a passage holds for 4.18–4.19 and not 4.20: Each Attack plays one swing, cutting off any swing still under way.
  • In the combat chapter, a passage holds for 4.18–4.19 and not 4.20: A melee swing carries a missile id of zero.
  • In the combat chapter, a passage holds for 4.18–4.19 and not 4.20: A client shows nothing at all for Damage unless it holds both the unit hurt and the unit dealing it.
  • In the combat chapter, a passage holds for 4.18–4.19 and not 4.20: A client ignores UnitDied or ChampionDied naming a unit already dead, and puts a unit down only where a killer is named.
  • In the combat chapter, a passage holds for 4.18–4.19 and not 4.20: A client ignores ChampionDied that credits no killer.
  • In the combat chapter, a passage holds for 4.20 and not 4.18–4.19: A server also reports a death for what a client draws on its map with UnitDiedOnMap.
  • In the spells chapter, a passage holds for 4.18–4.19 and not 4.20: A client casts nothing for a casting record whose length disagrees with its count of targets.
  • In the spells chapter, a passage holds for 4.18–4.19 and not 4.20: The casting record names the spell by the hash of its name, and a client casts nothing for a spell it has not loaded.
  • In the spells chapter, a passage holds for 4.18–4.19 and not 4.20: SpellCastAnswer is both the answer to the client that asked and what every client sees of the cast; there is nothing else to send it.
  • In the spells chapter, a passage holds for 4.18–4.19 and not 4.20: A client spends the point as it sends UpgradeSpell.
  • In the spells chapter, a passage holds for 4.18–4.19 and not 4.20: A client asks only where the champion has a point to spend, is of the level the slot requires, and the spell is below its highest level.
  • In the shop chapter, a passage holds for 4.18–4.19 and not 4.20: ItemAdded places the item and removes nothing: a server sends a RemoveItemAnswer for each part an item built from others takes up.
  • In the shop chapter, a passage holds for 4.18–4.19 and not 4.20: A purchase a server never answers still plays the sound of buying.
  • In the shop chapter, a passage holds for 4.18–4.19 and not 4.20: A purchase a server never answers still lists the item among recent purchases.
  • In the objectives chapter, a passage holds for 4.18–4.19 and not 4.20: Everything a client shows of a capture point (who holds it, where it stands, how far it is taken) comes from the unit CapturePointChanged binds it to, so a server hands a point over by changing the unit’s side and moves it toward capture by changing the unit’s resource.
  • In the objectives chapter, a passage holds for 4.18–4.19 and not 4.20: A client acts on RespawnPoint only where it shows the capture point panel.
  • In the communication chapter, a passage holds for 4.18–4.19 and not 4.20: A client shows how many lines ChatAllowance leaves its player.
  • In the communication chapter, a passage holds for 4.18–4.19 and not 4.20: A client shows no ping its server marks as throttled, and notes in its own chat that the player is pinging too often.
  • In the votes chapter, a passage holds for 4.18–4.19 and not 4.20: A client ignores SurrenderVoteCalled that arrives before its own champion is on the field.
  • In the votes chapter, a passage holds for 4.18–4.19 and not 4.20: Where the version answer’s features turn the commands on, a client also sends BalanceVoteRefused, a vote against, as its player types /noequalize.
  • In the interface chapter, a passage holds for 4.20 and not 4.18–4.19: A client reports a view drawn further out than it allows with ZoomReport; a server MAY ignore it.

Index of messages

MessageSent bySystemRanges
AfkWarningserverinterface4.1–4.20
AnimationAdvancedservereffects4.1–4.20
AnimationOverridesservereffects4.1–4.20
AnimationUnlockedservereffects4.20
AppearanceClearedservereffects4.1–4.20
AppearancePoppedservereffects4.1–4.20
AppearancePushedservereffects4.1–4.20
AscendedUnitserverobjectives4.15–4.20
Attackservercombat4.1–4.20
AttackFromservercombat4.1–4.20
AttackIndicatorsservercombat4.1–4.20
AttackSpeedBoundsservercombat4.4–4.20
Autocastserverspells4.1–4.20
BalanceResultservervotes4.1–4.20
BalanceVoteservervotes4.1–4.20
BalanceVoteAnswerclientvotes4.1–4.20
BalanceVoteRefusedclientvotes4.1–4.20
BotDebugserverunits4.1–4.20
BotKickservermatch4.1–4.20
BotStateserverunits4.1–4.20
BotTargetsserverunits4.1–4.20
BounceMissileserverspells4.1–4.20
BuildingDiedservercombat4.1–4.20
BuyItemclientshop4.1–4.20
Cameraclientinterface4.1–4.20
CameraAckserverinterface4.1–4.20
CameraBehaviourserverinterface4.1–4.20
CameraLockclientinterface4.1–4.20
CameraLockSetserverinterface4.1–4.20
CampClearedserverobjectives4.1–4.20
CampMarkerserverobjectives4.9–4.20
CampOpenedserverobjectives4.1–4.20
CampTimerserverobjectives4.1–4.20
CancelTargetingserverspells4.1–4.20
CapturePointChangedserverobjectives4.1–4.20
CastSpellclientspells4.1–4.20
ChainTargetsserverspells4.1–4.20
ChampionDiedservercombat4.1–4.20
ChampionRemovedserverunits4.1–4.20
ChampionStatsserverreplication4.1–4.20
CharacterPreloadserverunits4.6–4.20
CharacterSelectedclientjoining4.1–4.20
Chatbothcommunication4.1–4.20
ChatAllowanceservercommunication4.1–4.20
ClientEventserverobjectives4.1–4.20
ClientFinishedclientmatch4.1–4.20
ClientReadyclientjoining4.1–4.20
ClientVersionclientjoining4.1–4.20
ClockConvergenceservermatch4.1–4.20
ClockReplyclientmatch4.1–4.20
ClockSyncservermatch4.1–4.20
CloseShopservershop4.1–4.20
ContextEmoteservercommunication4.1–4.20
CreateChampionserverunits4.1–4.20
CreateFollowerserverunits4.1–4.20
CreateNeutralserverunits4.1–4.20
CreateTurretserverunits4.1–4.20
CursorRingsserverspells4.1–4.20
Damageservercombat4.1–4.20
DeathHistoryservercombat4.1–4.20
DeathTimerservercombat4.1–4.20
DestroyMissileserverspells4.1–4.20
DragonBuffCountserverobjectives4.20
DrawPathclientmovement4.1–4.20
DrawPathModeservermovement4.1–4.20
EffectAddedservereffects4.1–4.20
EffectAddedGroupservereffects4.1–4.20
EffectCountservereffects4.1–4.20
EffectCounterservereffects4.1–4.20
EffectCountGroupservereffects4.1–4.20
EffectRemovedservereffects4.1–4.20
EffectRemovedGroupservereffects4.1–4.20
EffectReplacedservereffects4.1–4.20
EffectReplacedGroupservereffects4.1–4.20
EmitterPauseservereffects4.1–4.20
EmotePlayedservercommunication4.1–4.20
Emptyservermatch4.1–4.20
EnterLocalSightservervision4.1–4.20
EnterSightservervision4.1–4.20
EnterTeamSightservervision4.1–4.20
Exitclientmatch4.1–4.20
ExperienceGainedserverreplication4.1–4.20
FaceDirectionservermovement4.1–4.20
FacePositionclientmovement4.1–4.8
FadeMinionsservereffects4.1–4.20
FadeRemovedservereffects4.1–4.20
FadeSoundsservercommunication4.1–4.20
FadeToservereffects4.1–4.20
FloatingTextserverinterface4.1–4.20
FloatingTextOnMapserverinterface4.20
FogSetservervision4.1–4.20
FogToggledservervision4.1–4.20
FollowerMasterserverunits4.1–4.20
ForceDeathservercombat4.1–4.20
GameEndedservermatch4.1–4.20
GameOptionsclientjoining4.1–4.20
GameSpeedservermatch4.1–4.20
GoldEarnedserverreplication4.1–4.20
GoldGainedserverreplication4.1–4.20
GoldRedirectserverreplication4.1–4.20
GoldSourcesLogserverreplication4.1–4.20
GreyscaleWhenDeadservercombat4.1–4.20
GroundAttackModeservercombat4.1–4.20
HealthBarserverreplication4.1–4.20
HoverIndicatorservercombat4.1–4.20
HoverTargetservercombat4.1–4.20
HudDisabledserverinterface4.1–4.20
HudHighlightedserverguidance4.1–4.20
HudHighlightToggledserverguidance4.1–4.20
InhibitorStateservercombat4.1–4.20
InputLockserverinterface4.1–4.20
InputLockToggledserverinterface4.1–4.20
InventorySlotservershop4.1–4.20
InventorySnapshotservershop4.1–4.20
InventorySnapshotOnMapservershop4.20
ItemAddedservershop4.1–4.20
ItemChargesservershop4.1–4.20
ItemSubstitutionservershop4.1–4.20
ItemUsedservershop4.1–4.20
JoinSideclientjoining4.1–4.20
KillParticleservereffects4.1–4.20
LeaveLocalSightservervision4.1–4.20
LeaveSightservervision4.1–4.20
LeaveTeamSightservervision4.1–4.20
LevelCapserverreplication4.1–4.20
LevelUpserverreplication4.1–4.20
LoadingProgressclientjoining4.1–4.20
Loadoutservershop4.1–4.20
MapPingclientcommunication4.1–4.20
MapPropserverunits4.1–4.20
MapPropChangedserverunits4.1–4.20
MarkerMovedserverunits4.1–4.20
MatchIdentityserverjoining4.1–4.20
MatchStartedserverjoining4.1–4.20
MinimapIconserverinterface4.1–4.20
MinionKillCountserverreplication4.3–4.20
MissileCourseserverspells4.1–4.10
MissileHitsserverspells4.1–4.20
MissileLaunchedserverspells4.1–4.20
MissileReportclientspells4.1–4.9
MissileRetargetserverspells4.1–4.20
MissileSpeedserverspells4.1–4.20
MissileStateserverspells4.1–4.20
ModuleDataserverjoining4.1–4.4
ModulePacketclientjoining4.1–4.4
MoveCameraserverinterface4.1–4.20
MovementBoundsservermovement4.1–4.20
MoveOrderclientmovement4.1–4.20
MultikillCountserverreplication4.1–4.20
MusicCueservercommunication4.1–4.20
NavigationFlagsservermovement4.1–4.20
NexusIdleservereffects4.1–4.20
NexusSkinservereffects4.1–4.20
ObjectiveHiddenserverguidance4.1–4.20
ObjectiveReplacedserverguidance4.1–4.20
ObjectiveShownserverguidance4.1–4.20
ParticleEnterTeamSightservervision4.1–4.20
ParticleLeaveTeamSightservervision4.1–4.20
ParticlesCreatedservereffects4.1–4.20
ParticleSourceservereffects4.1–4.20
Pathservermovement4.1–4.20
PathWithSpeedservermovement4.1–4.20
Pauseclientmatch4.1–4.20
PauseAnimationservereffects4.1–4.20
Pausedservermatch4.1–4.20
PingPlacedservercommunication4.1–4.20
PlayAnimationservereffects4.1–4.20
PlayEmoteclientcommunication4.1–4.20
PlayerDisconnectedservermatch4.1–4.20
QueryStatusclientjoining4.1–4.20
QueryStatusAnswerserverjoining4.1–4.20
QuestEventclientguidance4.1–4.20
QuestUpdatedserverguidance4.1–4.20
Reconnectedservermatch4.1–4.20
ReconnectedInMatchclientmatch4.1–4.20
RegionAddedservervision4.1–4.20
RegionMovedservervision4.11–4.20
RegionRemovedservervision4.1–4.20
Registerclientjoining4.1–4.20
Registeredserverjoining4.1–4.20
RemoveItemclientshop4.1–4.20
RemoveItemAnswerservershop4.1–4.20
Replicationserverreplication4.1–4.20
ResourceDisplayserverreplication4.1–4.20
ResourceKindChangedserverreplication4.1–4.20
Respawnedservercombat4.1–4.20
RespawnPointserverobjectives4.1–4.20
Resumeclientmatch4.1–4.20
Resumedservermatch4.1–4.20
Revivedservercombat4.1–4.20
Rosterserverjoining4.1–4.20
ScoreAddedserverreplication4.1–4.20
ScreenTintservereffects4.1–4.20
SeatChampionserverjoining4.1–4.20
SeatLoadProgressserverjoining4.1–4.20
SeatNameserverjoining4.1–4.20
SelectObjectclientinterface4.1–4.20
ShieldAddedserverreplication4.1–4.20
ShopEnabledservershop4.1–4.20
ShopUndoclientshop4.1–4.20
ShopUndoCountservershop4.1–4.20
Shutdownservermatch4.1–4.20
SideTextHiddenserverguidance4.1–4.20
SideTextRefreshedserverguidance4.1–4.20
SideTextShownserverguidance4.1–4.20
Situationserverguidance4.7–4.20
SoftReconnectservermatch4.1–4.20
SoundPlayedservercommunication4.1–4.20
SpawnBotserverunits4.1–4.19
SpawnEndserverjoining4.1–4.20
SpawnFromBarracksserverunits4.1–4.20
SpawnMarkerserverunits4.1–4.20
SpawnPetserverunits4.1–4.20
SpawnStartserverjoining4.1–4.20
SpawnTurretserverunits4.12–4.20
SpawnUnitserverunits4.1–4.20
SpellCastAnswerserverspells4.1–4.20
SpellChargeclientspells4.1–4.20
SpellChargesserverspells4.1–4.20
SpellCooldownserverspells4.1–4.20
SpellCostChangedserverspells4.1–4.20
SpellInSlotserverspells4.1–4.20
SpellLevelserverspells4.1–4.20
SpellNumbersserverspells4.1–4.20
SpellRankLimitsserverspells4.1–4.20
SpellSlotChangedserverspells4.1–4.20
SpellSlotChangedForOwnerserverspells4.20
SpellTargeterHiddenserverspells4.20
SpellTargeterShownserverspells4.20
SpellToggledserverspells4.1–4.20
SpellUpgradedserverspells4.1–4.20
StartGameserverjoining4.1–4.20
StatisticIncrementedserverreplication4.1–4.20
StatsRequestclientjoining4.1–4.20
StatTickserverreplication4.1–4.20
StopAnimationservereffects4.1–4.20
StopAttackservercombat4.1–4.20
StreamChunkserverspectating4.1–4.20
StreamChunkRangeserverspectating4.1–4.20
StreamMetadataserverspectating4.1–4.20
StreamRequestclientspectating4.1–4.20
SubstitutionClearedservershop4.1–4.20
SurrenderAllowedservervotes4.1–4.20
SurrenderStatusservervotes4.1–4.20
SurrenderVoteclientvotes4.1–4.20
SurrenderVoteCalledservervotes4.1–4.20
SwapItemsclientshop4.1–4.20
SwapItemsAnswerservershop4.1–4.20
SystemMessageservercommunication4.1–4.20
TargetHeldChampionservercombat4.1–4.20
TargetUnitservercombat4.1–4.20
TeamChangedserverunits4.1–4.20
TeamScoreserverobjectives4.1–4.20
ThemeMusicservercommunication4.17–4.20
TipEventclientguidance4.1–4.20
TipShownserverguidance4.1–4.20
TransientAckclientreplication4.1–4.20
TutorialChatLineserverguidance4.1–4.20
TutorialPopupserverguidance4.1–4.20
TutorialPopupClosedclientguidance4.1–4.20
TutorialShopOpenedclientshop4.1–4.20
UiHighlightserverguidance4.1–4.20
Unhandled286servermatch4.1–4.20
UnitDiedservercombat4.1–4.20
UnitDiedOnMapservercombat4.20
UnitHighlightedserverguidance4.1–4.20
UnitHighlightRemovedserverguidance4.1–4.20
UnitLookAtservermovement4.1–4.20
UnitSpokeclientcommunication4.1–4.9
UnitStoppedservermovement4.1–4.20
UnitTextserverinterface4.1–4.20
UpgradeSpellclientspells4.1–4.20
UseObjectclientcombat4.1–4.20
VersionSyncserverjoining4.1–4.20
VictoryDanceservermatch4.1–4.20
VoiceCommandservercommunication4.1–4.20
VoiceEventservercommunication4.1–4.20
VoiceEventDoneclientcommunication4.1–4.20
VoiceOverrideservereffects4.1–4.20
VolumeMutedservercommunication4.1–4.20
WaypointAckclientmovement4.1–4.20
WaypointGroupservermovement4.1–4.20
WaypointGroupAtSpeedservermovement4.1–4.20
WorldEventserverobjectives4.1–4.20
ZoomReportclientinterface4.20