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 3.01.0.1 up to, not including, 4.1.0.171, in 15 ranges. Every build in a range is held to the same facts.
| Patch | From | Up to | Patch notes | Builds checked |
|---|---|---|---|---|
| 3.01 | 3.01.0.1 | 3.02.0.30 | V3.01 | 1 |
| 3.02 | 3.02.0.30 | 3.03.0.198 | V3.02 | 1 |
| 3.03 | 3.03.0.198 | 3.04.0.78 | V3.03 | 1 |
| 3.04 | 3.04.0.78 | 3.5.0.68 | V3.04 | 1 |
| 3.5 | 3.5.0.68 | 3.6.0.388 | V3.5 | 1 |
| 3.6 | 3.6.0.388 | 3.7.0.328 | V3.6 | 1 |
| 3.7 | 3.7.0.328 | 3.8.0.226 | V3.7 | 1 |
| 3.8 | 3.8.0.226 | 3.9.0.491 | V3.8 | 1 |
| 3.9 | 3.9.0.491 | 3.10.0.237 | V3.9 | 1 |
| 3.10 | 3.10.0.237 | 3.11.0.306 | V3.10 | 1 |
| 3.11 | 3.11.0.306 | 3.12.0.251 | V3.11 | 1 |
| 3.12 | 3.12.0.251 | 3.13.0.399 | V3.12 | 1 |
| 3.13 | 3.13.0.399 | 3.14.0.700 | V3.13 | 1 |
| 3.14 | 3.14.0.700 | 3.15.0.244 | V3.14 | 1 |
| 3.15 | 3.15.0.244 | 4.1.0.171 | V3.15 | 1 |
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.
- UDP moves datagrams.
- ENet turns datagrams into ordered, acknowledged deliveries on numbered channels.
- A cipher covers each channel payload.
- 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.
In 3.01–3.02
Stock ENet 1.2.5 serves a client once its transmission unit is clamped (see below). The header and the commands are the release’s own.
In 3.03–3.15
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 3.01–3.02
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.
| Field | Type | Present when | What it is |
|---|---|---|---|
| sessionId | bytes, 4 | The four bytes the client put in its connect command, carried unchanged on every packet. A client drops a packet carrying any other four. | |
| peer | 2-byte bits | ||
| peer.peerId | bit 0 to 14 | 32767 marks an unassigned peer, which is what a connecting client sends. A server gives the client peer 0. | |
| peer.sentTimeFlag | bit 15 | Set when the header carries a sent time. | |
| sentTime | u16, big-endian | peer.sentTimeFlag set | Milliseconds since the connection opened. |
| Constant | Value | Stock ENet | What it is |
|---|---|---|---|
| maximumPeerId | 32767 | 32767 | Follows from the peer id occupying fifteen bits. |
| maximumTransmissionUnit | 996 | 4096 | A client asks for 1400 in its connect command, and takes no datagram larger than 996 bytes. |
| minimumDatagram | 8 | 8 | A client discards any datagram shorter than this many bytes. |
In 3.03–3.15
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.
| Field | Type | Present when | What it is |
|---|---|---|---|
| sessionId | u8 | The value the client supplied when it connected, carried on every packet. | |
| peer | 1-byte bits | ||
| peer.peerId | bit 0 to 6 | 127 marks an unassigned peer, which is what a connecting client sends. | |
| peer.sentTimeFlag | bit 7 | Set when the header carries a sent time. | |
| sentTime | u16, big-endian | peer.sentTimeFlag set | Milliseconds since the connection opened. |
| Constant | Value | Stock ENet | What it is |
|---|---|---|---|
| maximumPeerId | 127 | 32767 | Follows from the peer id occupying seven bits. |
| maximumTransmissionUnit | 996 | 4096 | A client asks for 1400 in its connect command, and takes no datagram larger than 996 bytes. |
| minimumDatagram | 4 | 2 | A 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.
In 3.01–3.12
A client asks for 7 channels.
In 3.03–3.15
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.
In 3.13–3.15
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.
In 3.01–3.10
An argument longer than sixteen characters holds the key in base64, and the key is the first sixteen bytes it decodes to. An argument of sixteen characters or fewer is the key as it stands.
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 3.01–3.12
| Channel | Name | Family |
|---|---|---|
| 0 | registration | registration |
| 1 | requests | game |
| 2 | clock | game |
| 3 | events | game |
| 4 | transient | game |
| 5 | chat | session |
| 6 | roster | session |
In 3.13–3.15
| Channel | Name | Family |
|---|---|---|
| 0 | registration | registration |
| 1 | requests | game |
| 2 | clock | game |
| 3 | events | game |
| 4 | transient | game |
| 5 | chat | session |
| 7 | roster | session |
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.
In 3.01–3.10
A client unwraps a container on any channel.
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
In 3.13–3.15
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.
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 3.01–3.5
The game family:
| Field | Type | What it is |
|---|---|---|
| command | u8 | 255 introduces a container of several messages rather than a message of its own, which Messages describes. |
| netId | u32 | A 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. |
The session family:
| Field | Type | What it is |
|---|---|---|
| command | u8 |
The registration family:
| Field | Type | What it is |
|---|---|---|
| command | u8 |
In 3.6–3.15
The game family:
| Field | Type | Present when | What it is |
|---|---|---|---|
| command | u8 | 254 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. | |
| netId | u32 | A 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. | |
| extendedCommand | u16 | command = 254 | Identifiers here start above the range a single byte holds. |
The session family:
| Field | Type | What it is |
|---|---|---|
| command | u8 |
The registration family:
| Field | Type | What it is |
|---|---|---|
| command | u8 |
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
| Identifier | Width | Formed | No one |
|---|---|---|---|
| Player id | 64 bits, signed | the player’s account; a client is given its own when started | -1, every bit set |
| Client id | 32 bits, unsigned | chosen by the server for each player at registration, counting from 0 | 4294967295 |
| Seat | a place in a side list | the order of a side’s player ids in Roster | an empty place |
| Net id | 32 bits, unsigned | chosen by the server for what it creates; worked out from a name for what a map holds | 0 |
| Node | 8 bits, unsigned | the owning client’s client id plus 1, or 0 for an object no client owns | 0 |
| Region id | 32 bits, unsigned | chosen by the server for each region, and carried by RegionAdded | see below |
| Name hash | 32 bits, unsigned | worked out from the name of a spell, an effect, a particle or a bone | 0 |
A field’s own definition gives its exact type. Where a field carries one of these, it carries it whole, at the width above.
In 3.10
A region id of 0 names no region: given a
RegionAddedcarrying 0, a client gives the region an id of its own, its own node in the top byte and a count below it, which no message from a server can name.
A server MUST give each player a client id from 0 to 252.
In 3.01–3.10
A client takes a client id only from 0 to 252, and leaves on any other.
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.
In 3.01–3.10
A client acts on that
Registeredalone and ignores every other, so it pairs no other player’s player id with a client id.
In 3.10
A server MUST send that
Registeredbefore any create message, because a client given a create message before it has its own client id stops.
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 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:
| Name | Identifier |
|---|---|
Barracks_T1_C1 | 0xFF4A20F1 |
Barracks_T1_L1 | 0xFFD23C3E |
Barracks_T1_R1 | 0xFF9303E1 |
Barracks_T2_C1 | 0xFFFF8F1F |
Barracks_T2_L1 | 0xFF6793D0 |
Barracks_T2_R1 | 0xFF26AC0F |
__P_Order_Spawn_Barracks__C01 | 0xFFB77171 |
__P_Order_Spawn_Barracks__L01 | 0xFFEB364C |
__P_Order_Spawn_Barracks__R01 | 0xFF53B836 |
__P_Chaos_Spawn_Barracks__C01 | 0xFFBA00E8 |
__P_Chaos_Spawn_Barracks__L01 | 0xFFE647D5 |
__P_Chaos_Spawn_Barracks__R01 | 0xFF5EC9AF |
____P_Chaos_Spawn_Barracks__C01 | 0xFF707D61 |
ChaosShop01 | 0xFF3A98D9 |
chaosShop01 | 0xFFA6170E |
HQ_T1 | 0xFFF97DB5 |
HQ_T2 | 0xFFF02C0F |
OrderShop01 | 0xFF8C490C |
orderShop01 | 0xFF10C6DB |
In 3.01–3.10
Every object a map places carries the identifier its name gives, turrets, navigation points and props among them.
In 3.01–3.10
A name holding
_Destroyedor_FBgives no identifier.
In 3.10
Map Holds 1 the six Barracksnames, the six spawn points named__P_…,HQ_T1,HQ_T2,orderShop01,chaosShop018 orderShop01,chaosShop0110 Barracks_T1_L1,Barracks_T1_R1,Barracks_T2_L1,Barracks_T2_R1, theL01andR01spawn points of both sides,HQ_T1,HQ_T2,orderShop01,chaosShop0112 Barracks_T1_C1,Barracks_T2_C1, theC01spawn points of both sides named____P_…,HQ_T1,HQ_T2,OrderShop01,ChaosShop01
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.
In 3.10
CreateTurretfirst removes any object holding its net id. It matches a turret’s name exactly, case included, and the name it carries is the building’s name followed by a two-character suffix. A name no turret has does nothing.
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.
Leaving a client’s sight removes nothing: LeaveSight and LeaveTeamSight
hide an object, and it is held as before.
In 3.01–3.10
A client removes a region once its lifetime reaches 0, so a region given a lifetime of 0 does not last.
RegionRemoved for a region a client does not hold does nothing.
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.
The stage of SoftReconnect that marks is 0.
In 3.01–3.10
A client reads only the two lowest bits of the stage: a stage with both clear marks, and any other removes.
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:
CreateFollowerdoes nothing where the unit it follows is not held.- A
Replicationbatch skips the units a client does not hold, and goes unanswered (see Ordering). SoundPlayednaming 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.
In 3.10–3.15
A
WaypointGrouporWaypointGroupAtSpeedpath for a unit not yet held is applied once an object takes that net id, and itsWaypointAckis sent as usual. A server SHOULD send the creating message first.
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.
In 3.01–3.10
A byte from 128 to 255 enters the hash as its value less 256, worked in 32 bits, rather than as itself.
| Name | Number |
|---|---|
SummonerFlash | 0x06496EA8 |
RegenerationPotion | 0x0E75DC7E |
EzrealMysticShotMissile | 0x05FE9CE5 |
global_ss_flash.troy | 0x0058E369 |
L_HAND | 0x0725E844 |
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.
| Family | Carried by | Counted | A client takes a statement |
|---|---|---|---|
| Replication | Replication | per unit and per group of values, from 0 | whose number is greater than the last taken for that unit and group, with no wrapping: 0 is never taken |
| View | Camera, from a client | per 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 sends | A client answers |
|---|---|
QueryStatusAnswer | nothing; it asks again with QueryStatus until told the server is ready |
WaypointGroup, WaypointGroupAtSpeed | WaypointAck for each group, taken or not, naming the units in it that carried a token (see Movement) |
Replication | TransientAck, where every unit the batch names is held |
ClockSync | ClockReply (see Time) |
In 3.01–3.10
A client also answers each
PathandPathWithSpeed, taken or not, with aWaypointAckcarrying itssyncId.
In 3.01–3.10
That answer lists no units but leaves its count of units unset, so a server MUST NOT rely on the count.
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
EnterSightcarries is a pair along the ground, x and z. UnitStopped,MissileState, a particle’s facing and a view’s direction inCameracarry x, y and z.FaceDirectioncarries x, y and z, and turns the unit to face along them.
In 3.01–3.10
FaceDirectionturns the unit along x and z alone, and leaves it as it is where both are 0.
In 3.01–3.10
FaceDirectionturns the unit at once where bit 0 of its flags is clear, and toward that direction at its own pace where it is set.
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.
In 3.10–3.15
The maps a client has data for include these:
mapMap Origin of its paths 1 Summoner’s Rift 6991, 7223 8 The Crystal Scar 6947, 6609 10 The Twisted Treeline 7708, 7227 12 The Howling Abyss 6560, 6309
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:
Pausedcarries the time left in a hold as a whole number of seconds.- A stream’s chunk and key frame intervals (
StreamMetadata) are in milliseconds.
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.
A client takes the round trip ClockConvergence reports into its allowance
for lateness.
In 3.01–3.10
Each
ClockConvergencesets a client’s allowance to 0.8 times what it was plus 0.1 times the round trip it reports.
In 3.01–3.10
The allowance starts at 0, and nothing but
ClockConvergencechanges it: a client that has had none takesClockSyncas it stands. A server SHOULD sendClockConvergence, or eachClockSyncsets a client’s clock behind by the time it took to arrive.
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.
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.
In 3.01–3.10
GameSpeedsets the pace of the match clock, and a hold sets the pace to 0 until play resumes. A server that runs a match at other than normal speed MUST sendGameSpeedwith that speed, or a client’s match clock runs apart from its own.
In 3.01–3.10
A
GameSpeedthat arrives during a hold takes effect as play resumes.
In 3.10
A client holds the speed
GameSpeedgives to between 0 and 10 times normal.
A client shows the match’s time counted from the moment on the match clock at which the match began.
In 3.01–3.10
MatchStartedgives that moment. Until it arrives, a client takes the match clock’s reading as its game loop runs, and aMatchStartedarriving later replaces it. While the match clock is before that moment, a client shows a negative time.
Moments on the match clock include:
- when a monster arrives (
CreateNeutral’sspawnAt, 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.
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:
| Slot | Holds |
|---|---|
| 0 to 3 | the champion’s spells; 3 is its ultimate |
| 4 on | the spell of the item in the inventory slot four below, for each such slot |
| after those | spells 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.
In 3.10–3.15
A cast’s slot also takes 64 to 72 for a basic attack and 73 to 81 for a critical one.
In 3.10
Of those, 64 is the champion’s basic attack and 73 its critical attack; the rest are its other basic and critical attacks.
A server MUST NOT name a champion book slot beyond the book’s last slot.
In 3.10
A champion’s own book ends at slot 59. A client ignores an
Autocastnaming a slot above 59, and applies aSpellInSlotor aSpellCostChangednaming one while reporting it as an error. A server MUST NOT name a champion book slot above 59.
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.
In 3.01–3.10
A client asks to swap only slots 0 to 5 (
SwapItems).
In 3.01–3.10
A champion’s inventory ends at slot 37. A client ignores a
RemoveItemAnswer,InventorySlot,ItemAdded,ItemUsedorItemChargesnaming a slot above 37. A server MUST NOT name an inventory slot above 37.
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 3.10–3.15
The client has maps 1, 8, 10 and 12, and no map 11.
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 3.01–3.10
A word a name holds anywhere says what the object is, not only its opening, the first match winning: a minion spawner’s
Spawn_Barracksis tested beforeBarracks, which makes an inhibitor, andHQ_makes a nexus andTurreta turret.
Each object’s file is .sco as text or .SCB as binary, and gives its name
on its Name= line.
CreateTurret names a building by its name with _A after it.
In 3.10–3.15
A
CreateTurretnaming no building does nothing.
In 3.10
CreateTurretcompares names exactly, case included.
Objects and spawn points. A champion begins at its side’s spawn point,
__Spawn_T1 for Order and __Spawn_T2 for Chaos.
In 3.01–3.10
The spawn points, the navigation points and the marker of the level’s size are scene objects, listed in
room.dsclike the buildings.
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 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.
The ground. A client walks units on LEVELS/Map1/AIPath.aimesh_ngrid, a
binary grid. Its layout is unspecified.
In 3.01–3.10
The grid’s name is the map’s own,
AIPath.aimeshwith_ngridafter it: no setting of the mode chooses it.
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.
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 3.10
Most champions’ spells and attacks are in
DATA/Spells/<Spell>.inibinwith all other spells, and some champions’ inDATA/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.
In 3.01–3.10
Any whitespace separates the words of the fourth argument. A client whose command line holds no double quote takes the command line it saved on an earlier run instead, and one holding
.repanywhere plays a replay rather than connecting.
In 3.10
Whitespace separates a client’s arguments, and double quotes group words into one. A client given fewer than four arguments ends, unless its one argument names a replay.
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 3.10–3.15
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.
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.
In 3.01–3.10
A client stops asking once an answer says the server is ready, and a query it sends after that answer needs none.
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 3.10–3.15
A client loads only where
VersionSyncsetsagreement.buildMatches. With it clear, the client shows its player its own version text beside the one the message carries, and ends.
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.
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.
In 3.10–3.15
A client writes all ones where its player id goes in
LoadingProgress.
In 3.10
The loading screen picks the card a
SeatLoadProgressupdates by the client id it carries, not by its player id.
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.
The spawn run
Once a character is settled, a client sends CharacterSelected, once.
In 3.10–3.15
Until it sends
CharacterSelected, a client drops every message butVersionSync,QueryStatusAnswer,MatchIdentity,SeatLoadProgressandGameEnded, 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 beforeCharacterSelectedarrives.
A server answers with SpawnStart, states everything on the field as play
opens, and closes the run with SpawnEnd. A run carries:
- for each seat,
CreateChampionfollowed byLoadout; - for each turret, a
CreateTurretand aReplicationbatch of its values; - for each inhibitor and nexus, an
EnterSight, and aReplicationbatch on a map whose buildings replicate (see Replication); - a
RegionAddedfor each region, and aMapPropfor each prop; - at a server’s choice, an
EnterLocalSightfor any of those units.
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 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.
In 3.01–3.10
A client answers a batch as soon as it arrives, within the run or not, and never answers one naming a unit it does not hold.
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).
In 3.01–3.10
A client sends
ClientReadyas soon asSpawnEndarrives, andStartGamealone moves it into play.
In 3.10
A client whose connection drops before play begins ends rather than connecting again once it knows its own client id, and connects again before then.
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.
In every range of this book
Command 0 on registration, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| leading | bytes, 3 | Arbitrary; it carries no meaning. |
| clientId | u32 | A client writes zero here. |
| playerId | i64 | Who the sender claims to be. The proof is what settles the claim. |
| version | u32 | 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. |
| proof | i64 | The player id enciphered with the 16-byte key; a plain copy where the client has no key. |
| trailing | bytes, 4 | Arbitrary; it carries no meaning. |
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.
In every range of this book
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.
| Field | Type | What it is |
|---|---|---|
| leading | bytes, 3 | Unused; a server writes zero. |
| clientId | u32 | 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). |
| playerId | i64 | Who occupies that seat. |
| version | u32 | The 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. |
| proof | bytes, 8 | The 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. |
| trailing | bytes, 4 | Unused; a server writes zero. |
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.
QueryStatusAnswer
What a server returns when asked whether it is ready. The header names no object: a server writes zero.
In every range of this book
Command 136 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| ready | u8 | Whether 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 (2)
ClientVersion
What a client sends to state which build it is. The header names no object: it carries zero.
In every range of this book
Command 189 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| clientId | u32 | The client id of the client reporting. |
| text | text, 256 bytes | The build, as text. The text ends at a zero byte. |
Vectors (2)
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.
In 3.01–3.03
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.
| Field | Type | What it is |
|---|---|---|
| agreement | 1-byte bits | |
| agreement.buildMatches | bit 0 | Set where the client’s build is one the server serves. |
| agreement.reportsToFile | bit 1 | Set to have a client also write its reports to a file of its own. |
| agreement.matched | bit 2 | Set where the match was put together rather than made by hand. |
| agreement.unused | bit 3 to 7 | Unused; a server writes zero. |
| map | i32 | Which map to load. Space keys the path origins by the same maps. |
| seats | 12 × Seat | Every place at the match, held or empty. |
| build | text, 256 bytes | Which build the server serves. Written out in full and padded with zero bytes to the width above. |
| mode | text, 128 bytes | Which way the match is played, written and padded as above. |
| teamName | text, 25 bytes | What one side is called where it plays as a standing team, written and padded as above. |
| teamTag | text, 7 bytes | The short form of that name, written and padded as above. |
| otherTeamName | text, 25 bytes | What the other side is called, under the same terms. |
| otherTeamTag | text, 7 bytes | The short form of that one. |
| metricsHost | text, 1024 bytes | Where a client reports figures about the match, written and padded as above. |
| metricsPath | text, 1024 bytes | What it asks for there, written and padded as above. |
| metricsPort | u16 | Which port it reaches that at. |
| tip | i8 | Which note the client shows before play. |
| tipColour | i8 | Which colouring it shows it in. |
| tipDuration | i8 | Which 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. |
| tipFlags | 1-byte bits | How the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them. |
| tipFlags.enabled | bit 0 | Set 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.replay | bit 1 | Of no effect; a client clears it, with enabled, while playing a replay. |
| tipFlags.loadingScreen | bit 2 | Set to show the note on the loading screen. |
| tipFlags.inGame | bit 3 | Set to show the note during play, in a box on the screen. |
| tipFlags.cycle | bit 4 | Set to have the box during play show every note in turn. |
| tipFlags.unused | bit 5 to 7 | Unused; a server writes zero. |
Vectors (1)
In 3.04–3.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.
| Field | Type | What it is |
|---|---|---|
| agreement | 1-byte bits | |
| agreement.buildMatches | bit 0 | Set where the client’s build is one the server serves. |
| agreement.reportsToFile | bit 1 | Set to have a client also write its reports to a file of its own. |
| agreement.matched | bit 2 | Set where the match was put together rather than made by hand. |
| agreement.reportingReady | bit 3 | Set where the reporting settings below are to be used. |
| agreement.unused | bit 4 to 7 | Unused; a server writes zero. |
| map | i32 | Which map to load. Space keys the path origins by the same maps. |
| seats | 12 × Seat | Every place at the match, held or empty. |
| build | text, 256 bytes | Which build the server serves. Written out in full and padded with zero bytes to the width above. |
| mode | text, 128 bytes | Which way the match is played, written and padded as above. |
| teamName | text, 25 bytes | What one side is called where it plays as a standing team, written and padded as above. |
| teamTag | text, 7 bytes | The short form of that name, written and padded as above. |
| otherTeamName | text, 25 bytes | What the other side is called, under the same terms. |
| otherTeamTag | text, 7 bytes | The short form of that one. |
| metricsHost | text, 256 bytes | Where a client reports figures about the match, written and padded as above. |
| metricsPath | text, 256 bytes | What it asks for there, written and padded as above. |
| metricsPort | u16 | Which port it reaches that at. |
| reportingHost | text, 256 bytes | Where a client reports how the match went, written and padded as above. |
| reportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| reportingPort | u16 | Which port it reaches that at. |
| altReportingHost | text, 256 bytes | A second, test place to report to, written and padded as above. |
| altReportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| altReportingPort | u16 | Which port it reaches that at. |
| tip | i8 | Which note the client shows before play. |
| tipColour | i8 | Which colouring it shows it in. |
| tipDuration | i8 | Which 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. |
| tipFlags | 1-byte bits | How the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them. |
| tipFlags.enabled | bit 0 | Set 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.replay | bit 1 | Of no effect; a client clears it, with enabled, while playing a replay. |
| tipFlags.loadingScreen | bit 2 | Set to show the note on the loading screen. |
| tipFlags.inGame | bit 3 | Set to show the note during play, in a box on the screen. |
| tipFlags.cycle | bit 4 | Set to have the box during play show every note in turn. |
| tipFlags.unused | bit 5 to 7 | Unused; a server writes zero. |
Vectors (1)
In 3.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.
| Field | Type | What it is |
|---|---|---|
| agreement | 1-byte bits | |
| agreement.buildMatches | bit 0 | Set where the client’s build is one the server serves. |
| agreement.reportsToFile | bit 1 | Set to have a client also write its reports to a file of its own. |
| agreement.matched | bit 2 | Set where the match was put together rather than made by hand. |
| agreement.reportingReady | bit 3 | Set where the reporting settings below are to be used. |
| agreement.unused | bit 4 to 7 | Unused; a server writes zero. |
| map | i32 | Which map to load. Space keys the path origins by the same maps. |
| seats | 12 × Seat | Every place at the match, held or empty. |
| build | text, 256 bytes | Which build the server serves. Written out in full and padded with zero bytes to the width above. |
| mode | text, 128 bytes | Which way the match is played, written and padded as above. |
| teamName | text, 97 bytes | What one side is called where it plays as a standing team, written and padded as above. |
| teamTag | text, 25 bytes | The short form of that name, written and padded as above. |
| otherTeamName | text, 97 bytes | What the other side is called, under the same terms. |
| otherTeamTag | text, 25 bytes | The short form of that one. |
| metricsHost | text, 256 bytes | Where a client reports figures about the match, written and padded as above. |
| metricsPath | text, 256 bytes | What it asks for there, written and padded as above. |
| metricsPort | u16 | Which port it reaches that at. |
| reportingHost | text, 256 bytes | Where a client reports how the match went, written and padded as above. |
| reportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| reportingPort | u16 | Which port it reaches that at. |
| altReportingHost | text, 256 bytes | A second, test place to report to, written and padded as above. |
| altReportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| altReportingPort | u16 | Which port it reaches that at. |
| tip | i8 | Which note the client shows before play. |
| tipColour | i8 | Which colouring it shows it in. |
| tipDuration | i8 | Which 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. |
| tipFlags | 1-byte bits | How the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them. |
| tipFlags.enabled | bit 0 | Set 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.replay | bit 1 | Of no effect; a client clears it, with enabled, while playing a replay. |
| tipFlags.loadingScreen | bit 2 | Set to show the note on the loading screen. |
| tipFlags.inGame | bit 3 | Set to show the note during play, in a box on the screen. |
| tipFlags.cycle | bit 4 | Set to have the box during play show every note in turn. |
| tipFlags.unused | bit 5 to 7 | Unused; a server writes zero. |
| features | 4-byte bits | Which parts of the match are turned on, one bit each. |
| features.altUnitDisplay | bit 0 | Shows units’ health and experience bars and their character display from another set of the client’s data. |
| features.balanceVoteCommands | bit 1 | The chat commands /equalize and /noequalize. |
| features.keyboardDisplay | bit 2 | Shows the match on a keyboard that has a display of its own. |
| features.menuBack | bit 3 | Turns on the client’s newer options and menus. |
| features.unused | bit 4 to 31 | Unused; a server writes zero. |
Vectors (1)
In 3.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.
| Field | Type | What it is |
|---|---|---|
| agreement | 1-byte bits | |
| agreement.buildMatches | bit 0 | Set where the client’s build is one the server serves. |
| agreement.reportsToFile | bit 1 | Set to have a client also write its reports to a file of its own. |
| agreement.matched | bit 2 | Set where the match was put together rather than made by hand. |
| agreement.reportingReady | bit 3 | Set where the reporting settings below are to be used. |
| agreement.unused | bit 4 to 7 | Unused; a server writes zero. |
| map | i32 | Which map to load. Space keys the path origins by the same maps. |
| seats | 12 × Seat | Every place at the match, held or empty. |
| build | text, 256 bytes | Which build the server serves. Written out in full and padded with zero bytes to the width above. |
| mode | text, 128 bytes | Which way the match is played, written and padded as above. |
| teamName | text, 97 bytes | What one side is called where it plays as a standing team, written and padded as above. |
| teamTag | text, 25 bytes | The short form of that name, written and padded as above. |
| otherTeamName | text, 97 bytes | What the other side is called, under the same terms. |
| otherTeamTag | text, 25 bytes | The short form of that one. |
| metricsHost | text, 256 bytes | Where a client reports figures about the match, written and padded as above. |
| metricsPath | text, 256 bytes | What it asks for there, written and padded as above. |
| metricsPort | u16 | Which port it reaches that at. |
| reportingHost | text, 256 bytes | Where a client reports how the match went, written and padded as above. |
| reportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| reportingPort | u16 | Which port it reaches that at. |
| altReportingHost | text, 256 bytes | A second, test place to report to, written and padded as above. |
| altReportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| altReportingPort | u16 | Which port it reaches that at. |
| tip | i8 | Which note the client shows before play. |
| tipColour | i8 | Which colouring it shows it in. |
| tipDuration | i8 | Which 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. |
| tipFlags | 1-byte bits | How the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them. |
| tipFlags.enabled | bit 0 | Set 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.replay | bit 1 | Of no effect; a client clears it, with enabled, while playing a replay. |
| tipFlags.loadingScreen | bit 2 | Set to show the note on the loading screen. |
| tipFlags.inGame | bit 3 | Set to show the note during play, in a box on the screen. |
| tipFlags.cycle | bit 4 | Set to have the box during play show every note in turn. |
| tipFlags.unused | bit 5 to 7 | Unused; a server writes zero. |
| features | 4-byte bits | Which parts of the match are turned on, one bit each. |
| features.altUnitDisplay | bit 0 | Shows units’ health and experience bars and their character display from another set of the client’s data. |
| features.balanceVoteCommands | bit 1 | The chat commands /equalize and /noequalize. |
| features.keyboardDisplay | bit 2 | Shows the match on a keyboard that has a display of its own. |
| features.menuBack | bit 3 | Turns on the client’s newer options and menus. |
| features.wallJumps | bit 4 | Has no effect; a server writes zero. |
| features.audioBackend | bit 5 | Which sound system the client uses; which setting picks which is not recorded. |
| features.unused | bit 6 to 31 | Unused; a server writes zero. |
Vectors (1)
In 3.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.
| Field | Type | What it is |
|---|---|---|
| agreement | 1-byte bits | |
| agreement.buildMatches | bit 0 | Set where the client’s build is one the server serves. |
| agreement.reportsToFile | bit 1 | Set to have a client also write its reports to a file of its own. |
| agreement.matched | bit 2 | Set where the match was put together rather than made by hand. |
| agreement.reportingReady | bit 3 | Set where the reporting settings below are to be used. |
| agreement.cosmetic | bit 4 | Set to turn on an optional cosmetic effect. |
| agreement.unused | bit 5 to 7 | Unused; a server writes zero. |
| map | i32 | Which map to load. Space keys the path origins by the same maps. |
| seats | 12 × Seat | Every place at the match, held or empty. |
| build | text, 256 bytes | Which build the server serves. Written out in full and padded with zero bytes to the width above. |
| mode | text, 128 bytes | Which way the match is played, written and padded as above. |
| teamName | text, 97 bytes | What one side is called where it plays as a standing team, written and padded as above. |
| teamTag | text, 25 bytes | The short form of that name, written and padded as above. |
| otherTeamName | text, 97 bytes | What the other side is called, under the same terms. |
| otherTeamTag | text, 25 bytes | The short form of that one. |
| metricsHost | text, 256 bytes | Where a client reports figures about the match, written and padded as above. |
| metricsPath | text, 256 bytes | What it asks for there, written and padded as above. |
| metricsPort | u16 | Which port it reaches that at. |
| reportingHost | text, 256 bytes | Where a client reports how the match went, written and padded as above. |
| reportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| reportingPort | u16 | Which port it reaches that at. |
| altReportingHost | text, 256 bytes | A second, test place to report to, written and padded as above. |
| altReportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| altReportingPort | u16 | Which port it reaches that at. |
| tip | i8 | Which note the client shows before play. |
| tipColour | i8 | Which colouring it shows it in. |
| tipDuration | i8 | Which 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. |
| tipFlags | 1-byte bits | How the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them. |
| tipFlags.enabled | bit 0 | Set 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.replay | bit 1 | Of no effect; a client clears it, with enabled, while playing a replay. |
| tipFlags.loadingScreen | bit 2 | Set to show the note on the loading screen. |
| tipFlags.inGame | bit 3 | Set to show the note during play, in a box on the screen. |
| tipFlags.cycle | bit 4 | Set to have the box during play show every note in turn. |
| tipFlags.unused | bit 5 to 7 | Unused; a server writes zero. |
| features | 4-byte bits | Which parts of the match are turned on, one bit each. |
| features.altUnitDisplay | bit 0 | Shows units’ health and experience bars and their character display from another set of the client’s data. |
| features.balanceVoteCommands | bit 1 | The chat commands /equalize and /noequalize. |
| features.keyboardDisplay | bit 2 | Shows the match on a keyboard that has a display of its own. |
| features.menuBack | bit 3 | Turns on the client’s newer options and menus. |
| features.wallJumps | bit 4 | Has no effect; a server writes zero. |
| features.audioBackend | bit 5 | Which sound system the client uses; which setting picks which is not recorded. |
| features.animatedCursors | bit 6 | Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame. |
| features.unused | bit 7 to 31 | Unused; a server writes zero. |
Vectors (1)
In 3.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.
| Field | Type | What it is |
|---|---|---|
| agreement | 1-byte bits | |
| agreement.buildMatches | bit 0 | Set where the client’s build is one the server serves. |
| agreement.reportsToFile | bit 1 | Set to have a client also write its reports to a file of its own. |
| agreement.matched | bit 2 | Set where the match was put together rather than made by hand. |
| agreement.reportingReady | bit 3 | Set where the reporting settings below are to be used. |
| agreement.cosmetic | bit 4 | Set to turn on an optional cosmetic effect. |
| agreement.unused | bit 5 to 7 | Unused; a server writes zero. |
| map | i32 | Which map to load. Space keys the path origins by the same maps. |
| seats | 12 × Seat | Every place at the match, held or empty. |
| build | text, 256 bytes | Which build the server serves. Written out in full and padded with zero bytes to the width above. |
| mode | text, 128 bytes | Which way the match is played, written and padded as above. |
| teamName | text, 97 bytes | What one side is called where it plays as a standing team, written and padded as above. |
| teamTag | text, 25 bytes | The short form of that name, written and padded as above. |
| otherTeamName | text, 97 bytes | What the other side is called, under the same terms. |
| otherTeamTag | text, 25 bytes | The short form of that one. |
| metricsHost | text, 256 bytes | Where a client reports figures about the match, written and padded as above. |
| metricsPath | text, 256 bytes | What it asks for there, written and padded as above. |
| metricsPort | u16 | Which port it reaches that at. |
| reportingHost | text, 256 bytes | Where a client reports how the match went, written and padded as above. |
| reportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| reportingPort | u16 | Which port it reaches that at. |
| altReportingHost | text, 256 bytes | A second, test place to report to, written and padded as above. |
| altReportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| altReportingPort | u16 | Which port it reaches that at. |
| tip | i8 | Which note the client shows before play. |
| tipColour | i8 | Which colouring it shows it in. |
| tipDuration | i8 | Which 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. |
| tipFlags | 1-byte bits | How the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them. |
| tipFlags.enabled | bit 0 | Set 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.replay | bit 1 | Of no effect; a client clears it, with enabled, while playing a replay. |
| tipFlags.loadingScreen | bit 2 | Set to show the note on the loading screen. |
| tipFlags.inGame | bit 3 | Set to show the note during play, in a box on the screen. |
| tipFlags.cycle | bit 4 | Set to have the box during play show every note in turn. |
| tipFlags.unused | bit 5 to 7 | Unused; a server writes zero. |
| features | 4-byte bits | Which parts of the match are turned on, one bit each. |
| features.altUnitDisplay | bit 0 | Shows units’ health and experience bars and their character display from another set of the client’s data. |
| features.balanceVoteCommands | bit 1 | The chat commands /equalize and /noequalize. |
| features.menuBack | bit 2 | With 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.missileWarning | bit 3 | A 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.audioBackend | bit 4 | Which sound system the client uses; which setting picks which is not recorded. |
| features.animatedCursors | bit 5 | Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame. |
| features.altControls | bit 6 | Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded. |
| features.shopUndo | bit 7 | The shop’s undo; clear, it is never enabled. |
| features.skillshotOutline | bit 8 | While aiming a line spell, the units it would hit are outlined. |
| features.unused | bit 9 to 31 | Unused; a server writes zero. |
Vectors (1)
In 3.10
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.
| Field | Type | What it is |
|---|---|---|
| agreement | 1-byte bits | |
| agreement.buildMatches | bit 0 | Set where the client’s build is one the server serves. |
| agreement.reportsToFile | bit 1 | Set to have a client also write its reports to a file of its own. |
| agreement.matched | bit 2 | Set where the match was put together rather than made by hand. |
| agreement.reportingReady | bit 3 | Set where the reporting settings below are to be used. |
| agreement.unused | bit 4 to 7 | Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings. |
| map | i32 | Which map to load. Space keys the path origins by the same maps. |
| seats | 12 × Seat | Every place at the match, held or empty. |
| build | text, 256 bytes | Which build the server serves. Written out in full and padded with zero bytes to the width above. |
| mode | text, 128 bytes | Which way the match is played, written and padded as above. |
| teamName | text, 97 bytes | What one side is called where it plays as a standing team, written and padded as above. |
| teamTag | text, 25 bytes | The short form of that name, written and padded as above. |
| otherTeamName | text, 97 bytes | What the other side is called, under the same terms. |
| otherTeamTag | text, 25 bytes | The short form of that one. |
| metricsHost | text, 256 bytes | Where a client reports figures about the match, written and padded as above. |
| metricsPath | text, 256 bytes | What it asks for there, written and padded as above. |
| metricsPort | u16 | Which port it reaches that at. |
| reportingHost | text, 256 bytes | Where a client reports how the match went, written and padded as above. |
| reportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| reportingPort | u16 | Which port it reaches that at. |
| altReportingHost | text, 256 bytes | A second, test place to report to, written and padded as above. |
| altReportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| altReportingPort | u16 | Which port it reaches that at. |
| tip | i8 | Which note the client shows before play. |
| tipColour | i8 | Which colouring it shows it in. |
| tipDuration | i8 | Which 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. |
| tipFlags | 1-byte bits | How the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them. |
| tipFlags.enabled | bit 0 | Set 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.replay | bit 1 | Of no effect; a client clears it, with enabled, while playing a replay. |
| tipFlags.loadingScreen | bit 2 | Set to show the note on the loading screen. |
| tipFlags.inGame | bit 3 | Set to show the note during play, in a box on the screen. |
| tipFlags.cycle | bit 4 | Set to have the box during play show every note in turn. |
| tipFlags.unused | bit 5 to 7 | Unused; a server writes zero. |
| features | 4-byte bits | Which parts of the match are turned on, one bit each. |
| features.altUnitDisplay | bit 0 | Shows units’ health and experience bars and their character display from another set of the client’s data. |
| features.balanceVoteCommands | bit 1 | The chat commands /equalize and /noequalize. |
| features.menuBack | bit 2 | With 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.missileWarning | bit 3 | A 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.audioBackend | bit 4 | Which sound system the client uses; which setting picks which is not recorded. |
| features.animatedCursors | bit 5 | Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame. |
| features.altControls | bit 6 | Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded. |
| features.shopUndo | bit 7 | The shop’s undo; clear, it is never enabled. |
| features.skillshotOutline | bit 8 | While aiming a line spell, the units it would hit are outlined. |
| features.unused | bit 9 to 31 | Unused; a server writes zero. |
Vectors (1)
In 3.11
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.
| Field | Type | What it is |
|---|---|---|
| agreement | 1-byte bits | |
| agreement.buildMatches | bit 0 | Set where the client’s build is one the server serves. |
| agreement.reportsToFile | bit 1 | Set to have a client also write its reports to a file of its own. |
| agreement.matched | bit 2 | Set where the match was put together rather than made by hand. |
| agreement.reportingReady | bit 3 | Set where the reporting settings below are to be used. |
| agreement.unused | bit 4 to 7 | Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings. |
| map | i32 | Which map to load. Space keys the path origins by the same maps. |
| seats | 12 × Seat | Every place at the match, held or empty. |
| build | text, 256 bytes | Which build the server serves. Written out in full and padded with zero bytes to the width above. |
| mode | text, 128 bytes | Which way the match is played, written and padded as above. |
| teamName | text, 97 bytes | What one side is called where it plays as a standing team, written and padded as above. |
| teamTag | text, 25 bytes | The short form of that name, written and padded as above. |
| otherTeamName | text, 97 bytes | What the other side is called, under the same terms. |
| otherTeamTag | text, 25 bytes | The short form of that one. |
| metricsHost | text, 256 bytes | Where a client reports figures about the match, written and padded as above. |
| metricsPath | text, 256 bytes | What it asks for there, written and padded as above. |
| metricsPort | u16 | Which port it reaches that at. |
| reportingHost | text, 256 bytes | Where a client reports how the match went, written and padded as above. |
| reportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| reportingPort | u16 | Which port it reaches that at. |
| altReportingHost | text, 256 bytes | A second, test place to report to, written and padded as above. |
| altReportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| altReportingPort | u16 | Which port it reaches that at. |
| tip | i8 | Which note the client shows before play. |
| tipColour | i8 | Which colouring it shows it in. |
| tipDuration | i8 | Which 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. |
| tipFlags | 1-byte bits | How the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them. |
| tipFlags.enabled | bit 0 | Set 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.replay | bit 1 | Of no effect; a client clears it, with enabled, while playing a replay. |
| tipFlags.loadingScreen | bit 2 | Set to show the note on the loading screen. |
| tipFlags.inGame | bit 3 | Set to show the note during play, in a box on the screen. |
| tipFlags.cycle | bit 4 | Set to have the box during play show every note in turn. |
| tipFlags.unused | bit 5 to 7 | Unused; a server writes zero. |
| features | 4-byte bits | Which parts of the match are turned on, one bit each. |
| features.altUnitDisplay | bit 0 | Shows units’ health and experience bars and their character display from another set of the client’s data. |
| features.balanceVoteCommands | bit 1 | The chat commands /equalize and /noequalize. |
| features.menuBack | bit 2 | With 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.menuBack2 | bit 3 | Of use only with menuBack. |
| features.missileWarning | bit 4 | A 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.audioBackend | bit 5 | Which sound system the client uses; which setting picks which is not recorded. |
| features.animatedCursors | bit 6 | Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame. |
| features.altControls | bit 7 | Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded. |
| features.shopUndo | bit 8 | The shop’s undo; clear, it is never enabled. |
| features.skillshotOutline | bit 9 | While aiming a line spell, the units it would hit are outlined. |
| features.bit10 | bit 10 | Has no effect. |
| features.championIndicator | bit 11 | The mark over the player’s champion, where their own setting also asks for it. |
| features.unused | bit 12 to 31 | Unused; a server writes zero. |
Vectors (1)
In 3.12
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.
| Field | Type | What it is |
|---|---|---|
| agreement | 1-byte bits | |
| agreement.buildMatches | bit 0 | Set where the client’s build is one the server serves. |
| agreement.reportsToFile | bit 1 | Set to have a client also write its reports to a file of its own. |
| agreement.matched | bit 2 | Set where the match was put together rather than made by hand. |
| agreement.reportingReady | bit 3 | Set where the reporting settings below are to be used. |
| agreement.unused | bit 4 to 7 | Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings. |
| map | i32 | Which map to load. Space keys the path origins by the same maps. |
| seats | 12 × Seat | Every place at the match, held or empty. |
| build | text, 256 bytes | Which build the server serves. Written out in full and padded with zero bytes to the width above. |
| mode | text, 128 bytes | Which way the match is played, written and padded as above. |
| teamName | text, 97 bytes | What one side is called where it plays as a standing team, written and padded as above. |
| teamTag | text, 25 bytes | The short form of that name, written and padded as above. |
| otherTeamName | text, 97 bytes | What the other side is called, under the same terms. |
| otherTeamTag | text, 25 bytes | The short form of that one. |
| metricsHost | text, 256 bytes | Where a client reports figures about the match, written and padded as above. |
| metricsPath | text, 256 bytes | What it asks for there, written and padded as above. |
| metricsPort | u16 | Which port it reaches that at. |
| reportingHost | text, 256 bytes | Where a client reports how the match went, written and padded as above. |
| reportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| reportingPort | u16 | Which port it reaches that at. |
| altReportingHost | text, 256 bytes | A second, test place to report to, written and padded as above. |
| altReportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| altReportingPort | u16 | Which port it reaches that at. |
| tip | i8 | Which note the client shows before play. |
| tipColour | i8 | Which colouring it shows it in. |
| tipDuration | i8 | Which 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. |
| tipFlags | 1-byte bits | How the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them. |
| tipFlags.enabled | bit 0 | Set 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.replay | bit 1 | Of no effect; a client clears it, with enabled, while playing a replay. |
| tipFlags.loadingScreen | bit 2 | Set to show the note on the loading screen. |
| tipFlags.inGame | bit 3 | Set to show the note during play, in a box on the screen. |
| tipFlags.cycle | bit 4 | Set to have the box during play show every note in turn. |
| tipFlags.unused | bit 5 to 7 | Unused; a server writes zero. |
| features | 4-byte bits | Which parts of the match are turned on, one bit each. |
| features.altUnitDisplay | bit 0 | Shows units’ health and experience bars and their character display from another set of the client’s data. |
| features.balanceVoteCommands | bit 1 | The chat commands /equalize and /noequalize. |
| features.menuBack | bit 2 | With 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.menuBack2 | bit 3 | Of use only with menuBack. |
| features.missileWarning | bit 4 | A 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.audioBackend | bit 5 | Which sound system the client uses; which setting picks which is not recorded. |
| features.animatedCursors | bit 6 | Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame. |
| features.altControls | bit 7 | Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded. |
| features.shopUndo | bit 8 | The shop’s undo; clear, it is never enabled. |
| features.skillshotOutline | bit 9 | While aiming a line spell, the units it would hit are outlined. |
| features.championIndicator | bit 10 | The mark over the player’s champion, where their own setting also asks for it. |
| features.altBounty | bit 11 | Another 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.waveOrder | bit 12 | Changes the order of the kinds of minion within a wave. |
| features.unused | bit 13 to 31 | Unused; a server writes zero. |
Vectors (1)
In 3.13
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.
| Field | Type | What it is |
|---|---|---|
| agreement | 1-byte bits | |
| agreement.buildMatches | bit 0 | Set where the client’s build is one the server serves. |
| agreement.reportsToFile | bit 1 | Set to have a client also write its reports to a file of its own. |
| agreement.matched | bit 2 | Set where the match was put together rather than made by hand. |
| agreement.reportingReady | bit 3 | Set where the reporting settings below are to be used. |
| agreement.unused | bit 4 to 7 | Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings. |
| map | i32 | Which map to load. Space keys the path origins by the same maps. |
| seats | 12 × Seat | Every place at the match, held or empty. |
| build | text, 256 bytes | Which build the server serves. Written out in full and padded with zero bytes to the width above. |
| mode | text, 128 bytes | Which way the match is played, written and padded as above. |
| teamName | text, 97 bytes | What one side is called where it plays as a standing team, written and padded as above. |
| teamTag | text, 25 bytes | The short form of that name, written and padded as above. |
| otherTeamName | text, 97 bytes | What the other side is called, under the same terms. |
| otherTeamTag | text, 25 bytes | The short form of that one. |
| metricsHost | text, 256 bytes | Where a client reports figures about the match, written and padded as above. |
| metricsPath | text, 256 bytes | What it asks for there, written and padded as above. |
| metricsPort | u16 | Which port it reaches that at. |
| reportingHost | text, 256 bytes | Where a client reports how the match went, written and padded as above. |
| reportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| reportingPort | u16 | Which port it reaches that at. |
| altReportingHost | text, 256 bytes | A second, test place to report to, written and padded as above. |
| altReportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| altReportingPort | u16 | Which port it reaches that at. |
| tip | i8 | Which note the client shows before play. |
| tipColour | i8 | Which colouring it shows it in. |
| tipDuration | i8 | Which 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. |
| tipFlags | 1-byte bits | How the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them. |
| tipFlags.enabled | bit 0 | Set 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.replay | bit 1 | Of no effect; a client clears it, with enabled, while playing a replay. |
| tipFlags.loadingScreen | bit 2 | Set to show the note on the loading screen. |
| tipFlags.inGame | bit 3 | Set to show the note during play, in a box on the screen. |
| tipFlags.cycle | bit 4 | Set to have the box during play show every note in turn. |
| tipFlags.unused | bit 5 to 7 | Unused; a server writes zero. |
| features | 4-byte bits | Which parts of the match are turned on, one bit each. |
| features.altUnitDisplay | bit 0 | Shows units’ health and experience bars and their character display from another set of the client’s data. |
| features.balanceVoteCommands | bit 1 | The chat commands /equalize and /noequalize. |
| features.menuBack | bit 2 | With 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.menuBack2 | bit 3 | Of use only with menuBack. |
| features.quickChat | bit 4 | Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear. |
| features.missileWarning | bit 5 | A 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.audioBackend | bit 6 | Which sound system the client uses; which setting picks which is not recorded. |
| features.animatedCursors | bit 7 | Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame. |
| features.altControls | bit 8 | Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded. |
| features.shopUndo | bit 9 | The shop’s undo; clear, it is never enabled. |
| features.skillshotOutline | bit 10 | While aiming a line spell, the units it would hit are outlined. |
| features.championIndicator | bit 11 | The mark over the player’s champion, where their own setting also asks for it. |
| features.altBounty | bit 12 | Another 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.waveOrder | bit 13 | Changes the order of the kinds of minion within a wave. |
| features.turretRange | bit 14 | Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn. |
| features.unused | bit 15 to 31 | Unused; a server writes zero. |
| disabledItems | 64 × u32 | Items nobody can buy in this match, one place each. A place holds zero where nothing is barred. |
Vectors (1)
In 3.14
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.
| Field | Type | What it is |
|---|---|---|
| agreement | 1-byte bits | |
| agreement.buildMatches | bit 0 | Set where the client’s build is one the server serves. |
| agreement.reportsToFile | bit 1 | Set to have a client also write its reports to a file of its own. |
| agreement.matched | bit 2 | Set where the match was put together rather than made by hand. |
| agreement.reportingReady | bit 3 | Set where the reporting settings below are to be used. |
| agreement.unused | bit 4 to 7 | Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings. |
| map | i32 | Which map to load. Space keys the path origins by the same maps. |
| seats | 12 × Seat | Every place at the match, held or empty. |
| build | text, 256 bytes | Which build the server serves. Written out in full and padded with zero bytes to the width above. |
| mode | text, 128 bytes | Which way the match is played, written and padded as above. |
| variants | 2 × string | The variations the match is played under, one place each. A place stands empty where none applies. |
| variantCount | u8 | How many of the places above are filled. |
| teamName | text, 97 bytes | What one side is called where it plays as a standing team, written and padded as above. |
| teamTag | text, 25 bytes | The short form of that name, written and padded as above. |
| otherTeamName | text, 97 bytes | What the other side is called, under the same terms. |
| otherTeamTag | text, 25 bytes | The short form of that one. |
| metricsHost | text, 256 bytes | Where a client reports figures about the match, written and padded as above. |
| metricsPath | text, 256 bytes | What it asks for there, written and padded as above. |
| metricsPort | u16 | Which port it reaches that at. |
| reportingHost | text, 256 bytes | Where a client reports how the match went, written and padded as above. |
| reportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| reportingPort | u16 | Which port it reaches that at. |
| altReportingHost | text, 256 bytes | A second, test place to report to, written and padded as above. |
| altReportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| altReportingPort | u16 | Which port it reaches that at. |
| tip | i8 | Which note the client shows before play. |
| tipColour | i8 | Which colouring it shows it in. |
| tipDuration | i8 | Which 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. |
| tipFlags | 1-byte bits | How the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them. |
| tipFlags.enabled | bit 0 | Set 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.replay | bit 1 | Of no effect; a client clears it, with enabled, while playing a replay. |
| tipFlags.loadingScreen | bit 2 | Set to show the note on the loading screen. |
| tipFlags.inGame | bit 3 | Set to show the note during play, in a box on the screen. |
| tipFlags.cycle | bit 4 | Set to have the box during play show every note in turn. |
| tipFlags.unused | bit 5 to 7 | Unused; a server writes zero. |
| features | 4-byte bits | Which parts of the match are turned on, one bit each. |
| features.altUnitDisplay | bit 0 | Shows units’ health and experience bars and their character display from another set of the client’s data. |
| features.balanceVoteCommands | bit 1 | The chat commands /equalize and /noequalize. |
| features.menuBack | bit 2 | With 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.menuBack2 | bit 3 | Of use only with menuBack. |
| features.quickChat | bit 4 | Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear. |
| features.missileWarning | bit 5 | A 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.audioBackend | bit 6 | Which sound system the client uses; which setting picks which is not recorded. |
| features.animatedCursors | bit 7 | Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame. |
| features.altControls | bit 8 | Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded. |
| features.shopUndo | bit 9 | The shop’s undo; clear, it is never enabled. |
| features.skillshotOutline | bit 10 | While aiming a line spell, the units it would hit are outlined. |
| features.championIndicator | bit 11 | The mark over the player’s champion, where their own setting also asks for it. |
| features.altBounty | bit 12 | Another 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.waveOrder | bit 13 | Changes the order of the kinds of minion within a wave. |
| features.turretRange | bit 14 | Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn. |
| features.bit14 | bit 15 | Unused; a server writes zero. |
| features.skinParticles | bit 16 | Skin-specific particle effects for units in a skin other than the first. |
| features.bit16 | bit 17 | Unused; a server writes zero. |
| features.hardwareMetrics | bit 18 | A report of hardware and frame rate at the end of the match. |
| features.unused | bit 19 to 31 | Unused; a server writes zero. |
| disabledItems | 64 × u32 | Items nobody can buy in this match, one place each. A place holds zero where nothing is barred. |
Vectors (1)
In 3.15
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.
| Field | Type | What it is |
|---|---|---|
| agreement | 1-byte bits | |
| agreement.buildMatches | bit 0 | Set where the client’s build is one the server serves. |
| agreement.reportsToFile | bit 1 | Set to have a client also write its reports to a file of its own. |
| agreement.matched | bit 2 | Set where the match was put together rather than made by hand. |
| agreement.reportingReady | bit 3 | Set where the reporting settings below are to be used. |
| agreement.unused | bit 4 to 7 | Unused; a server writes zero. A client takes the scripted voice-over setting from its own settings. |
| map | i32 | Which map to load. Space keys the path origins by the same maps. |
| seats | 12 × Seat | Every place at the match, held or empty. |
| build | text, 256 bytes | Which build the server serves. Written out in full and padded with zero bytes to the width above. |
| mode | text, 128 bytes | Which way the match is played, written and padded as above. |
| variants | 2 × string | The variations the match is played under, one place each. A place stands empty where none applies. |
| variantCount | u8 | How many of the places above are filled. |
| teamName | text, 97 bytes | What one side is called where it plays as a standing team, written and padded as above. |
| teamTag | text, 25 bytes | The short form of that name, written and padded as above. |
| otherTeamName | text, 97 bytes | What the other side is called, under the same terms. |
| otherTeamTag | text, 25 bytes | The short form of that one. |
| metricsHost | text, 256 bytes | Where a client reports figures about the match, written and padded as above. |
| metricsPath | text, 256 bytes | What it asks for there, written and padded as above. |
| metricsPort | u16 | Which port it reaches that at. |
| reportingHost | text, 256 bytes | Where a client reports how the match went, written and padded as above. |
| reportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| reportingPort | u16 | Which port it reaches that at. |
| altReportingHost | text, 256 bytes | A second, test place to report to, written and padded as above. |
| altReportingPath | text, 256 bytes | What it asks for there, written and padded as above. |
| altReportingPort | u16 | Which port it reaches that at. |
| tip | i8 | Which note the client shows before play. |
| tipColour | i8 | Which colouring it shows it in. |
| tipDuration | i8 | Which 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. |
| tipFlags | 1-byte bits | How the note is shown. A client sends these four bytes back in ClientReady, as it has corrected them. |
| tipFlags.enabled | bit 0 | Set 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.replay | bit 1 | Of no effect; a client clears it, with enabled, while playing a replay. |
| tipFlags.loadingScreen | bit 2 | Set to show the note on the loading screen. |
| tipFlags.inGame | bit 3 | Set to show the note during play, in a box on the screen. |
| tipFlags.cycle | bit 4 | Set to have the box during play show every note in turn. |
| tipFlags.unused | bit 5 to 7 | Unused; a server writes zero. |
| features | 4-byte bits | Which parts of the match are turned on, one bit each. |
| features.balanceVoteCommands | bit 0 | The chat commands /equalize and /noequalize. |
| features.menuBack | bit 1 | With 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.menuBack2 | bit 2 | Of use only with menuBack. |
| features.quickChat | bit 3 | Quick chat: its keys and its panel. A client given it fails while loading. A server sends it clear. |
| features.missileWarning | bit 4 | A 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.audioBackend | bit 5 | Which sound system the client uses; which setting picks which is not recorded. |
| features.animatedCursors | bit 6 | Cursors of several frames move on a frame every 0.15 seconds of play; clear, they show their first frame. |
| features.altControls | bit 7 | Some mouse commands are taken by the time since the click before; what that changes on screen is not recorded. |
| features.shopUndo | bit 8 | The shop’s undo; clear, it is never enabled. |
| features.skillshotOutline | bit 9 | While aiming a line spell, the units it would hit are outlined. |
| features.championIndicator | bit 10 | The mark over the player’s champion, where their own setting also asks for it. |
| features.altBounty | bit 11 | Another 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.waveOrder | bit 12 | Changes the order of the kinds of minion within a wave. |
| features.turretRange | bit 13 | Enemy turrets’ ranges, where the player’s setting also asks for them; clear, they are never drawn. |
| features.bit14 | bit 14 | Unused; a server writes zero. |
| features.skinParticles | bit 15 | Skin-specific particle effects for units in a skin other than the first. |
| features.bit16 | bit 16 | Unused; a server writes zero. |
| features.hardwareMetrics | bit 17 | A report of hardware and frame rate at the end of the match. |
| features.unused | bit 18 to 31 | Unused; a server writes zero. |
| disabledItems | 64 × u32 | Items nobody can buy in this match, one place each. A place holds zero where nothing is barred. |
JoinSide
What a client sends to ask for a seat on one of the two sides while the match is being put together.
In every range of this book
Command 100 on roster, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| clientId | u32 | The client id of the client asking. |
| side | u32 | The side it asks for. |
Roster
What a server sends to lay out both sides and who is on them, while the match is being put together.
In every range of this book
Command 103 on roster, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| sideRoom | u32 | How many seats the first side has room for. |
| otherSideRoom | u32 | How many the other has room for. |
| side | 24 × i64 | The 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. |
| otherSide | 24 × i64 | The players on the other, under the same reading and its own count. |
| sideTaken | u32 | How many of the leading places on the first side carry a player. |
| otherSideTaken | u32 | How many on the other. |
SeatName
What a server sends to say what a seat is called, while the match is being put together.
In every range of this book
Command 102 on roster, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| player | i64 | The player this is about. It has a player identifier’s width. |
| skin | i32 | Which look the seat’s champion wears. |
| nameLength | u32 | How many bytes the name below occupies, counting the byte that ends it. |
| name | text, sized by nameLength minus 1 | What the seat is called. It is not padded. |
| terminator | bytes, 1 | A zero byte closing the text, which the length above counts. |
SeatChampion
What a server sends to say which champion a seat is playing, while the match is being put together.
In every range of this book
Command 101 on roster, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| player | i64 | The player this is about. It has a player identifier’s width. |
| skin | i32 | Which look the champion wears. |
| assetLength | u32 | How many bytes the name below occupies, counting the byte that ends it. |
| asset | text, sized by assetLength minus 1 | The name the client loads the champion’s art and sound under. It is not padded. |
| terminator | bytes, 1 | A zero byte closing the text, which the length above counts. |
LoadingProgress
What a client sends while a match loads, saying how far it has got. The header names no object: it carries zero.
In every range of this book
Command 22 on requests, sent by the client, unreliable.
| Field | Type | What it is |
|---|---|---|
| clientId | u32 | The client id of the client reporting. |
| playerId | i64 | Who is reporting. A client sends every bit set, which names nobody. |
| percent | f32 | How far loading has got, from zero to one hundred. |
| eta | f32 | How long the client expects still to take, in seconds. |
| status | 4-byte bits | |
| status.count | bit 0 to 15 | It rises with each report, not always by one. |
| status.ping | bit 16 to 30 | Round trip time the client measures, in milliseconds. |
| status.loaded | bit 31 | Set in every report whose progress stands at one hundred, and in no other. |
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.
In every range of this book
Command 149 on transient, sent by the server, unreliable.
| Field | Type | What it is |
|---|---|---|
| clientId | u32 | The client id this is about. |
| player | i64 | Who occupies it. |
| progress | f32 | How far through loading it is, from zero to one hundred. |
| secondsLeft | f32 | How much longer it is expected to take, in seconds. |
| status | 4-byte bits | |
| status.count | bit 0 to 15 | It rises with each report, not always by one. |
| status.ping | bit 16 to 30 | Round trip time the client measures, in milliseconds. |
| status.loaded | bit 31 | Set in every report whose progress stands at one hundred, and in no other. |
Vectors (1)
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.
In every range of this book
Command 97 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| botsOnOneSide | u8 | How 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). |
| botsOnTheOther | u8 | The other. It shares the reading above. |
SpawnEnd
What a server sends to close the run of units it opened with. The header names no object: a server writes zero.
StartGame
What a server sends to begin play. The header names no object: it carries zero.
In 3.01–3.04
Command 91 on events, sent by the server, reliable.
A client past spawning ignores it.
| Field | Type | What it is |
|---|---|---|
| rules | 1-byte bits | |
| rules.pausing | bit 0 | Set where holding the match is allowed. |
| rules.unused | bit 1 to 7 | Unused; a server writes zero. |
Vectors (1)
In 3.5
Command 91 on events, sent by the server, reliable.
A client past spawning ignores it.
| Field | Type | What it is |
|---|---|---|
| rules | 1-byte bits | |
| rules.pausing | bit 0 | Set where holding the match is allowed. |
| rules.unused | bit 1 to 7 | Unused; a server writes zero. |
| features | 4-byte bits | Which optional features the match turns on. A client takes them from the first StartGame only. |
| features.altUnitDisplay | bit 0 | Shows units’ health and experience bars and their character display from another set of the client’s data. |
| features.balanceVoteCommands | bit 1 | The chat commands /equalize and /noequalize. |
| features.unused | bit 2 to 31 | Unused; a server writes zero. |
Vectors (1)
In 3.6–3.15
Command 91 on events, sent by the server, reliable.
A client past spawning ignores it.
| Field | Type | What it is |
|---|---|---|
| rules | 1-byte bits | |
| rules.pausing | bit 0 | Set where holding the match is allowed. |
| rules.unused | bit 1 to 7 | Unused; a server writes zero. |
Vectors (1)
ClientReady
What a client sends once it has loaded and is ready to play. The header names no object: it carries zero.
In every range of this book
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.
| Field | Type | What it is |
|---|---|---|
| maskedStatus | u32 | It varies from client to client; a server ignores it. |
| mask | u32 | A random value the client picks to mask the one above. |
| tipChosen | u8 | Which tip the client is set to show. |
| tipColour | u8 | How it is coloured. |
| tipDuration | u8 | How long it stays, as an entry among the display times in the client’s own settings rather than a length of time. |
| settings | 1-byte bits | |
| settings.tips | bit 0 | Set while tips are wanted at all. |
| settings.reporting | bit 1 | Set while the client reports on itself. |
| settings.loadingTips | bit 2 | Set while tips are wanted while loading. |
| settings.playingTips | bit 3 | Set while tips are wanted during play. |
| settings.debug | bit 4 | Set while the client runs in a debugging state. |
| settings.unused | bit 5 to 7 | A client returns them as the server sent them. |
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.
In every range of this book
Command 190 on requests, sent by the client, reliable.
No body.
Vectors (1)
MatchIdentity
What a server sends to tell a client which match this is and what its player is called. The header carries zero.
In every range of this book
Command 146 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| game | i64 | The match’s identifier. |
| platform | text, 32 bytes | Which platform the match belongs to, written and padded as above. |
| name | text, 128 bytes | The player’s name, padded with zero bytes. |
Vectors (1)
MatchStarted
What a server sends to set when the match began. The header names no object: it carries zero.
In every range of this book
Command 194 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| startedAt | f32 | When the match began, as a moment on the match clock, in seconds. |
Vectors (2)
GameOptions
What a client sends when a setting that a server needs to know about changes. The header names the sender’s champion.
In every range of this book
Command 70 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| options | 1-byte bits | |
| options.autoAttack | bit 0 | Set while the client attacks without being told to. |
| options.unused | bit 1 to 7 | Always clear: a client writes the whole byte as 0 or 1. |
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.
In every range of this book
Command 221 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| kind | u8 | What the data is for. |
| length | u16 | How many bytes of data follow; at most 1024. |
| data | bytes, sized by length | Data for a module of the client’s own, which the message only carries. |
Vectors (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.
In every range of this book
Command 223 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| kind | u8 | What the data is for. |
| length | u16 | How many bytes of data follow; at most 1024. |
| data | bytes, sized by length | Data for a module of the client’s own, which the message only carries. |
Vectors (1)
StatsRequest
What a client sends about itself. The header names the sender’s champion.
Units
How a server puts objects on the field and takes them away: champions, minions, neutral monsters, turrets, pets, markers and props. What a unit then does is in Movement, Combat and Spells, and what it is worth in Replication.
Every object is named by a net id, and Objects and identifiers says what removes each kind of object.
Creating
Each kind of object has its own message:
- a champion,
CreateChampion, which, carrying the client’s own client id, also makes that champion the client’s own; a bot’s champion, the sameCreateChampionnaming no client, orSpawnBot; - a minion sent out from a side’s barracks,
SpawnFromBarracks, and a unit like one, such as a ward,SpawnUnit; - a monster of no side,
CreateNeutral; a pet,SpawnPet; - a turret,
CreateTurret(The client’s data says how it names one), and a turret of the server’s choosing,SpawnTurret; - an object that follows a unit,
CreateFollower, and a change to what it follows,FollowerMaster; - an unseen marker,
SpawnMarker, which other messages can name andMarkerMovedmoves; - a prop, a thing that stands on the map and is looked at,
MapProp, and a change to one,MapPropChanged.
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 3.10–3.15
A client drops a
CreateChampionor aCreateNeutralthat arrives before it sendsCharacterSelected, reconnecting included. A server MUST send them after it receivesCharacterSelected.
In 3.10
A client drops a
CreateChampionor aCreateNeutralthat arrives before it has loaded the map’s ground grid.
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.
In 3.10
A client leaves the match when
ChampionRemovednames its own champion. A server MUST NOT sendChampionRemovedfor a client’s own champion.
Bots
A server can tell a client what a bot is thinking (BotDebug), weighing
(BotTargets) or doing (BotState). None of them changes what a player sees.
Messages
Each message of this system in this book, with each layout it has across the book’s patches and every note its definition carries. A layout is the message’s body, after the header its channel’s family puts in front (see Messages).
CreateChampion
What a server sends to put a champion on the field. The header carries zero or names the object this is about; a client accepts either.
In 3.01–3.9
Command 75 on events, sent by the server, reliable.
The champion takes the id in champion, not the header’s; a client first removes any object holding that id. For the client’s own seat, name also becomes its own player’s name. A client drops the message while its map’s navigation data is unloaded, as early in a reconnection. It arrives on its own and also inside EnterSight.
| Field | Type | What it is |
|---|---|---|
| champion | u32 | The name the champion answers to, so later messages can name it. |
| clientId | u32 | The client id of the player the champion belongs to, or 4294967295 where it belongs to none, as a bot’s does. A client takes the champion carrying its own client id as its own. |
| node | u8 | Which network node the object belongs to, in a field of its own. |
| skillLevel | u8 | It has no effect. |
| side | u8 | Nonzero for side 100, zero for side 200. |
| bot | u8 | Nonzero where a bot plays the seat; its shown name is then the client’s own bot name for asset, and name has no effect. |
| rank | u8 | It has no effect. |
| spawnIndex | u8 | Where the champion first stands and faces. From 0 to 5, its side’s base position plus the offset the map sets for the side’s head count (players and bots) and this index plus one, facing as the map sets for them. A client works out the head count itself, counting SpawnStart’s bots in it. From 6 up, the base position itself, facing along +X. Movement or sight data replaces it. |
| skin | i32 | Which look it wears. |
| name | text, 128 bytes | What the seat holding it is called. Written out in full and padded with zero bytes to the width above. |
| asset | text, 40 bytes | The name the client loads its art and sound under, written and padded as above. |
| stayDown | f32 | How long it stays down, in seconds, where it is already down. |
| downFor | f32 | How long it has already been down, in seconds. |
| how | 1-byte bits | |
| how.down | bit 0 to 2 | 0 alive; 1 dead but acting on (the state a champion that keeps acting after death is in), where stayDown and downFor have no effect; 2 down, having been down for downFor with stayDown left. A client takes 3 to 7 as 0. |
| how.unused | bit 3 to 7 | Unused; a server writes zero. |
Vectors (1)
In 3.10–3.15
Command 75 on events, sent by the server, reliable.
The champion takes the id in champion, not the header’s; a client first removes any object holding that id. For the client’s own seat, name also becomes its own player’s name. A client drops the message while its map’s navigation data is unloaded, as early in a reconnection. It arrives on its own and also inside EnterSight.
| Field | Type | What it is |
|---|---|---|
| champion | u32 | The name the champion answers to, so later messages can name it. |
| clientId | u32 | The client id of the player the champion belongs to, or 4294967295 where it belongs to none, as a bot’s does. A client takes the champion carrying its own client id as its own. |
| node | u8 | Which network node the object belongs to, in a field of its own. |
| skillLevel | u8 | It has no effect. |
| side | u8 | Nonzero for side 100, zero for side 200. |
| bot | u8 | Nonzero where a bot plays the seat; its shown name is then the client’s own bot name for asset, and name has no effect. |
| rank | u8 | It has no effect. |
| spawnIndex | u8 | Where the champion first stands and faces. From 0 to 5, its side’s base position plus the offset the map sets for the side’s head count (players and bots) and this index plus one, facing as the map sets for them. A client works out the head count itself, counting SpawnStart’s bots in it. From 6 up, the base position itself, facing along +X. Movement or sight data replaces it. |
| skin | i32 | Which look it wears. |
| name | text, 128 bytes | What the seat holding it is called. Written out in full and padded with zero bytes to the width above. |
| asset | text, 40 bytes | The name the client loads its art and sound under, written and padded as above. |
| stayDown | f32 | How long it stays down, in seconds, where it is already down. |
| downFor | f32 | How long it has already been down, in seconds. |
| how | 1-byte bits | |
| how.down | bit 0 to 2 | 0 alive; 1 dead but acting on (the state a champion that keeps acting after death is in), where stayDown and downFor have no effect; 2 down, having been down for downFor with stayDown left. A client takes 3 to 7 as 0. |
| how.swap | bit 3 | Set where the champion replaces another. Of no effect otherwise. |
| how.unused | bit 4 to 7 | Unused; a server writes zero. |
SpawnBot
What a server sends to create a champion played by a bot. The header names no object: a server writes zero.
In every range of this book
Command 207 on events, sent by the server, reliable.
A client first deletes any object it holds under the same id.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The id the bot’s champion takes. |
| node | u8 | The network node it belongs to. |
| x | f32 | Where it appears, in world units. |
| y | f32 | Its height, in world units. |
| z | f32 | Where it appears, in world units. |
| rank | u8 | The bot’s rank. |
| sides | 2-byte bits | Its side. |
| sides.side | bit 0 to 8 | Its side: 100, 200 or 300. |
| sides.unused | bit 9 to 15 | Unused; a server writes zero. |
| skin | i32 | Which skin. |
| name | text, 64 bytes | The name shown for it. The text ends at its first zero byte, which falls within the field. |
| character | text, 64 bytes | The champion’s character name, which is also its unique name. |
Vectors (1)
SpawnFromBarracks
What a server sends to put a unit on the field from the place its side sends them out of.
In 3.01–3.13
Command 3 on events, sent by the server, reliable.
It arrives on its own and also inside EnterSight. The header names the unit this is about.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The name the unit answers to, so later messages can name it. |
| node | u8 | Which network node the unit belongs to, in a field of its own rather than as part of the name that follows. |
| barracks | u32 | The place it came out of, by the identifier its name gives as Objects and identifiers works it out. On map 1 that is a spawn point such as __P_Order_Spawn_Barracks__C01, not the inhibitor named Barracks_T1_C1: named by the inhibitor, a client creates nothing. |
| wave | u8 | Which run of units it belongs to. |
| kind | u8 | What sort of unit it is. |
| damageBonus | i16 | What is added to the damage it deals. |
| healthBonus | i16 | What is added to the health it holds. |
Vectors (1)
In 3.14–3.15
Command 3 on events, sent by the server, reliable.
It arrives on its own and also inside EnterSight. The header names the unit this is about.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The name the unit answers to, so later messages can name it. |
| node | u8 | Which network node the unit belongs to, in a field of its own rather than as part of the name that follows. |
| barracks | u32 | The place it came out of, by the identifier its name gives as Objects and identifiers works it out. On map 1 that is a spawn point such as __P_Order_Spawn_Barracks__C01, not the inhibitor named Barracks_T1_C1: named by the inhibitor, a client creates nothing. |
| wave | u8 | Which run of units it belongs to. |
| kind | u8 | What sort of unit it is. |
| damageBonus | i16 | What is added to the damage it deals. |
| healthBonus | i16 | What is added to the health it holds. |
| level | u8 | The level it starts at. |
SpawnUnit
What a server sends to put a minion-like unit on the field, such as a ward.
In 3.01–3.10
Command 124 on events, sent by the server, reliable.
A client deletes any object holding the new unit’s id first, and does nothing more where it cannot make the unit. clone, where nonzero, is copied, state and inventory. The header names the unit that put it there.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The name the new unit answers to. |
| node | u8 | Which network node the unit belongs to. |
| atX | f32 | Where it stands, along one ground axis, in world units. |
| atY | f32 | Where it stands, in height, in world units. |
| atZ | f32 | Where it stands, along the other ground axis, in world units. |
| skin | i32 | Which look it wears. |
| clone | u32 | The unit it copies, or zero. |
| flags | 2-byte bits | What sort of unit it is. |
| flags.team | bit 0 to 8 | Which side, as a team number. |
| flags.ignoreCollision | bit 9 | Set where it does not block the way. |
| flags.ward | bit 10 | Set where it is a ward. |
| flags.laneMinion | bit 11 | Set where it is a lane minion. |
| flags.bot | bit 12 | Set where it is driven by the client’s own decisions. |
| flags.unused | bit 13 to 15 | Unused; a server writes zero. |
| targetableToTeam | u32 | Which sides can aim at it, as a set of bits. |
| visibilitySize | f32 | How large it counts as for sight, in world units. |
| name | text, 64 bytes | Its name, padded with zero bytes. |
| asset | text, 64 bytes | The name the client loads its art under, padded with zero bytes. |
Vectors (1)
In 3.11
Command 124 on events, sent by the server, reliable.
A client deletes any object holding the new unit’s id first, and does nothing more where it cannot make the unit. clone, where nonzero, is copied, state and inventory. The header names the unit that put it there.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The name the new unit answers to. |
| node | u8 | Which network node the unit belongs to. |
| atX | f32 | Where it stands, along one ground axis, in world units. |
| atY | f32 | Where it stands, in height, in world units. |
| atZ | f32 | Where it stands, along the other ground axis, in world units. |
| skin | i32 | Which look it wears. |
| clone | u32 | The unit it copies, or zero. |
| flags | 2-byte bits | What sort of unit it is. |
| flags.team | bit 0 to 8 | Which side, as a team number. |
| flags.ignoreCollision | bit 9 | Set where it does not block the way. |
| flags.ward | bit 10 | Set where it is a ward. |
| flags.laneMinion | bit 11 | Set where it is a lane minion. |
| flags.bot | bit 12 | Set where it is driven by the client’s own decisions. |
| flags.unused | bit 13 to 15 | Unused; a server writes zero. |
| targetableToTeam | u32 | Which sides can aim at it, as a set of bits. |
| visibilitySize | f32 | How large it counts as for sight, in world units. |
| name | text, 64 bytes | Its name, padded with zero bytes. |
| asset | text, 64 bytes | The name the client loads its art under, padded with zero bytes. |
| level | u16 | The level it starts at. |
Vectors (1)
In 3.12–3.15
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. The header names the unit that put it there.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The name the new unit answers to. |
| owner | u32 | The unit that owns it. |
| node | u8 | Which network node the unit belongs to. |
| atX | f32 | Where it stands, along one ground axis, in world units. |
| atY | f32 | Where it stands, in height, in world units. |
| atZ | f32 | Where it stands, along the other ground axis, in world units. |
| skin | i32 | Which look it wears. |
| clone | u32 | The unit it copies, or zero. |
| flags | 2-byte bits | What sort of unit it is. |
| flags.team | bit 0 to 8 | Which side, as a team number. |
| flags.ignoreCollision | bit 9 | Set where it does not block the way. |
| flags.ward | bit 10 | Set where it is a ward. |
| flags.laneMinion | bit 11 | Set where it is a lane minion. |
| flags.bot | bit 12 | Set where it is driven by the client’s own decisions. |
| flags.unused | bit 13 to 15 | Unused; a server writes zero. |
| targetableToTeam | u32 | Which sides can aim at it, as a set of bits. |
| visibilitySize | f32 | How large it counts as for sight, in world units. |
| name | text, 64 bytes | Its name, padded with zero bytes. |
| asset | text, 64 bytes | The name the client loads its art under, padded with zero bytes. |
| level | u16 | The level it starts at. |
Vectors (1)
CreateNeutral
What a server sends to put a unit that belongs to no side on the field. The header names the unit this is about.
In 3.01–3.10
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.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The name the unit answers to, so later messages can name it. |
| node | u8 | Which network node the object belongs to, in a field of its own. |
| atX | f32 | Where the unit stands, along one ground axis, in world units. |
| atY | f32 | Where the unit stands, in height, in world units. |
| atZ | f32 | Where the unit stands, along the other ground axis, in world units. |
| campAtX | f32 | Where the camp it belongs to sits, along one ground axis, in world units. |
| campAtY | f32 | Where the camp it belongs to sits, in height, in world units. |
| campAtZ | f32 | Where the camp it belongs to sits, along the other ground axis, in world units. |
| facingX | f32 | A point the unit faces toward, along one ground axis, in world units. |
| facingY | f32 | That point, in height. |
| facingZ | f32 | That point, along the other ground axis. |
| name | text, 64 bytes | What this unit is called, so a client can tell one from another. Written out in full and padded with zero bytes to the width above. |
| asset | text, 64 bytes | The name the client loads its art and sound under, written and padded as above. |
| uniqueName | text, 64 bytes | A further name the unit answers to, written and padded as above. |
| campIcon | text, 64 bytes | The name of the icon the minimap shows at the camp, written in full and padded with zero bytes to the width above; empty shows none. A client uses it only where it creates the camp. |
| side | u32 | The side it belongs to, or zero where it belongs to none. |
| damageBonus | i32 | What is added to the damage it deals. |
| healthBonus | i32 | What is added to the health it holds. |
| roaming | u32 | How the monster wanders. It has no effect. Values: 0 inactive, 1 hostile, 2 fleeing. |
| camp | u32 | Which camp the unit belongs to. A client adds the unit to that camp where a CampMarker has placed it first, and to no camp otherwise. |
| effectSide | u32 | The side that gains what killing it grants. |
| revealEvent | i32 | What makes the unit known to a side that cannot see it. |
Vectors (1)
In 3.11–3.15
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.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The name the unit answers to, so later messages can name it. |
| node | u8 | Which network node the object belongs to, in a field of its own. |
| atX | f32 | Where the unit stands, along one ground axis, in world units. |
| atY | f32 | Where the unit stands, in height, in world units. |
| atZ | f32 | Where the unit stands, along the other ground axis, in world units. |
| campAtX | f32 | Where the camp it belongs to sits, along one ground axis, in world units. |
| campAtY | f32 | Where the camp it belongs to sits, in height, in world units. |
| campAtZ | f32 | Where the camp it belongs to sits, along the other ground axis, in world units. |
| facingX | f32 | A point the unit faces toward, along one ground axis, in world units. |
| facingY | f32 | That point, in height. |
| facingZ | f32 | That point, along the other ground axis. |
| name | text, 64 bytes | What this unit is called, so a client can tell one from another. Written out in full and padded with zero bytes to the width above. |
| asset | text, 64 bytes | The name the client loads its art and sound under, written and padded as above. |
| uniqueName | text, 64 bytes | A further name the unit answers to, written and padded as above. |
| campIcon | text, 64 bytes | The name of the icon the minimap shows at the camp, written in full and padded with zero bytes to the width above; empty shows none. A client uses it only where it creates the camp. |
| side | u32 | The side it belongs to, or zero where it belongs to none. |
| damageBonus | i32 | What is added to the damage it deals. |
| healthBonus | i32 | What is added to the health it holds. |
| roaming | u32 | How the monster wanders. It has no effect. Values: 0 inactive, 1 hostile, 2 fleeing. |
| camp | u32 | Which camp the unit belongs to. A client adds the unit to that camp where a CampMarker has placed it first, and to no camp otherwise. |
| effectSide | u32 | The side that gains what killing it grants. |
| revealEvent | i32 | What makes the unit known to a side that cannot see it. |
| level | i32 | The level it starts at. |
Vectors (1)
SpawnPet
What a server sends to put a pet on the field.
In 3.01–3.11
Command 54 on events, sent by the server, reliable.
A client deletes any object holding the header’s id; spawns nothing where it does not know the owner; kills the owner’s earlier pet if it lives; makes the pet, replacing its script with script; gives it the owner’s seat, its gold going to the owner; and registers it under the header’s id and node. spellLevel, duration and effect have no effect. The header names the pet. A server sends it to clients watching a match.
| Field | Type | What it is |
|---|---|---|
| owner | u32 | The unit it belongs to. |
| node | u8 | Which network node it belongs to. |
| atX | f32 | Where it stands, along one ground axis, in world units. |
| atY | f32 | In height, in world units. |
| atZ | f32 | Along the other ground axis, in world units. |
| spellLevel | i32 | The level of the spell that summoned it, plus one. |
| duration | f32 | How long it lasts, in seconds. |
| damageBonus | i32 | What is added to the damage it deals. |
| healthBonus | i32 | What is added to its health. |
| name | text, 128 bytes | Its name, padded with zero bytes. |
| asset | text, 32 bytes | The name the client loads its art under, padded with zero bytes. |
| skin | i32 | Which look it wears. |
| effect | text, 64 bytes | An effect it carries, padded with zero bytes. |
| clone | u32 | The unit it copies, or zero. |
| flags | 1-byte bits | How it behaves. |
| flags.copyInventory | bit 0 | Set where it copies its owner’s items. |
| flags.clearOwnerTarget | bit 1 | Set where its owner’s target is cleared. |
| flags.minimapIcon | bit 2 | Set where it shows on the minimap. |
| flags.unused | bit 3 to 7 | Unused; a server writes zero. |
| script | text, 32 bytes | The script that drives it, padded with zero bytes. |
Vectors (2)
In 3.12–3.15
Command 54 on events, sent by the server, reliable.
A client deletes any object holding the header’s id; spawns nothing where it does not know the owner; kills the owner’s earlier pet if it lives; makes the pet, replacing its script with script; gives it the owner’s seat, its gold going to the owner; and registers it under the header’s id and node. spellLevel, duration and effect have no effect. The header names the pet. A server sends it to clients watching a match.
| Field | Type | What it is |
|---|---|---|
| owner | u32 | The unit it belongs to. |
| node | u8 | Which network node it belongs to. |
| atX | f32 | Where it stands, along one ground axis, in world units. |
| atY | f32 | In height, in world units. |
| atZ | f32 | Along the other ground axis, in world units. |
| spellLevel | i32 | The level of the spell that summoned it, plus one. |
| duration | f32 | How long it lasts, in seconds. |
| side | u32 | Which side. |
| damageBonus | i32 | What is added to the damage it deals. |
| healthBonus | i32 | What is added to its health. |
| name | text, 128 bytes | Its name, padded with zero bytes. |
| asset | text, 32 bytes | The name the client loads its art under, padded with zero bytes. |
| skin | i32 | Which look it wears. |
| effect | text, 64 bytes | An effect it carries, padded with zero bytes. |
| clone | u32 | The unit it copies, or zero. |
| flags | 1-byte bits | How it behaves. |
| flags.copyInventory | bit 0 | Set where it copies its owner’s items. |
| flags.clearOwnerTarget | bit 1 | Set where its owner’s target is cleared. |
| flags.minimapIcon | bit 2 | Set where it shows on the minimap. |
| flags.unused | bit 3 to 7 | Unused; a server writes zero. |
| script | text, 32 bytes | The script that drives it, padded with zero bytes. |
CreateTurret
What a server sends to put a turret on the field. The header names the unit this is about.
In every range of this book
Command 157 on events, sent by the server, reliable.
A client matches name exactly against the map’s turrets. With no match it only removes any object holding the id; a matched turret missing or dead is rebuilt before it takes the id. A server sends it only inside EnterSight, and the channel and delivery given here are those of the message carrying it.
| Field | Type | What it is |
|---|---|---|
| turret | u32 | The name the turret answers to, so later messages can name it. |
| node | u8 | Which network node the object belongs to, in a field of its own. |
| name | text, 64 bytes | What this turret is called, so a client can tell one from another. Written out in full and padded with zero bytes to the width above. |
Vectors (1)
CreateFollower
What a server sends to put an object on the field that follows a unit. The header names the unit followed.
In every range of this book
Command 241 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| follower | u32 | The name the new object answers to. |
| node | u8 | Which network node it belongs to. |
| skin | i32 | Which look it wears. |
| name | text, 64 bytes | Its name, padded with zero bytes. |
| asset | text, 64 bytes | The name the client loads its art under, padded with zero bytes. |
Vectors (2)
FollowerMaster
What a server sends to change which unit a following object follows. The header names the follower.
In every range of this book
Command 242 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| master | u32 | The unit it now follows; one no unit answers to leaves it following none. |
Vectors (2)
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.
In 3.6–3.15
Command 256 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The id the marker takes. |
| node | u8 | The network node it belongs to. |
| x | f32 | Where it stands, in world units. |
| y | f32 | Its height, in world units. |
| z | f32 | Where it stands, in world units. |
Vectors (2)
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.
In 3.11–3.14
Command 276 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| fromX | f32 | Where it starts, in world units. |
| fromZ | f32 | Where it starts, in world units. |
| toX | f32 | Where it goes, in world units. |
| toZ | f32 | Where it goes, in world units. |
| speed | f32 | How fast it goes, in world units a second. Below zero it jumps to the goal; zero leaves it at the start. |
Vectors (2)
In 3.15
Command 276 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| fromX | f32 | Where it starts, in world units. |
| fromZ | f32 | Where it starts, in world units. |
| toX | f32 | Where it goes, in world units. |
| toZ | f32 | Where it goes, in world units. |
| speed | f32 | How fast it goes, in world units a second. Below zero it jumps to the goal; zero leaves it at the start. |
| faceGoal | u8 | One to turn it the way it moves, zero not to. |
MapProp
What a server sends to place a prop on the map: a thing that stands there and is looked at rather than one that acts. The header carries zero or names the object this is about, and a client accepts either.
In 3.01–3.02
Command 208 on events, sent by the server, reliable.
A client takes the prop’s id from prop, not from the header. A scenery prop is turned by pitch, then yaw, then roll, each about the fixed world axes; none is negated or wrapped. An active prop only turns about the up axis, to face the ground direction its x and z give, and faces +z where both are zero.
| Field | Type | What it is |
|---|---|---|
| prop | u32 | The name the prop answers to, so later messages can name it. |
| node | u8 | Which network node the object belongs to. It is a field of its own, not the leading byte of the name beside it. |
| atX | f32 | Where the prop stands, along one ground axis, in world units. |
| atY | f32 | Where the prop stands, in height, in world units. |
| atZ | f32 | Where the prop stands, along the other ground axis, in world units. |
| rotationX | f32 | For scenery, the pitch in degrees: a turn about the x axis, positive turning +y toward +z. For an active prop, x of the direction it faces. |
| rotationY | f32 | For scenery, the yaw in degrees: a turn about the up axis, positive turning +z toward +x, so yaw 0 faces +z and 90 faces +x. For an active prop, y of its facing, which does not turn it. |
| rotationZ | f32 | For scenery, the roll in degrees: a turn about the z axis, positive turning +x toward +y. For an active prop, z of the direction it faces. |
| offsetX | f32 | What is added to where it stands, along one ground axis, in world units. |
| offsetY | f32 | What is added to where it stands, in height, in world units. |
| offsetZ | f32 | What is added to where it stands, along the other ground axis, in world units. |
| side | 2-byte bits | The side the prop belongs to. A server sends 300, the neutral side. |
| side.side | bit 0 to 8 | The prop’s side. |
| side.unused | bit 9 to 15 | Unused; a server writes zero. |
| skillLevel | u8 | Unused; a server writes zero. |
| rank | u8 | How far it is advanced. |
| kind | u8 | What sort of prop it is; a client makes nothing for any other value. A client first deletes any object holding the prop’s id, whatever the kind. Values: 0 active, 1 scenery. |
| name | text, 64 bytes | What this prop is called, so a client can tell one from another. Written out in full and padded with zero bytes to the width above. |
| asset | text, 64 bytes | The name the client loads its art and sound under, written and padded as above. |
Vectors (1)
In 3.03–3.12
Command 208 on events, sent by the server, reliable.
A client takes the prop’s id from prop, not from the header. A scenery prop is turned by pitch, then yaw, then roll, each about the fixed world axes; none is negated or wrapped. An active prop only turns about the up axis, to face the ground direction its x and z give, and faces +z where both are zero.
| Field | Type | What it is |
|---|---|---|
| prop | u32 | The name the prop answers to, so later messages can name it. |
| node | u8 | Which network node the object belongs to. It is a field of its own, not the leading byte of the name beside it. |
| skin | i32 | Which look the prop wears. |
| atX | f32 | Where the prop stands, along one ground axis, in world units. |
| atY | f32 | Where the prop stands, in height, in world units. |
| atZ | f32 | Where the prop stands, along the other ground axis, in world units. |
| rotationX | f32 | For scenery, the pitch in degrees: a turn about the x axis, positive turning +y toward +z. For an active prop, x of the direction it faces. |
| rotationY | f32 | For scenery, the yaw in degrees: a turn about the up axis, positive turning +z toward +x, so yaw 0 faces +z and 90 faces +x. For an active prop, y of its facing, which does not turn it. |
| rotationZ | f32 | For scenery, the roll in degrees: a turn about the z axis, positive turning +x toward +y. For an active prop, z of the direction it faces. |
| offsetX | f32 | What is added to where it stands, along one ground axis, in world units. |
| offsetY | f32 | What is added to where it stands, in height, in world units. |
| offsetZ | f32 | What is added to where it stands, along the other ground axis, in world units. |
| side | 2-byte bits | The side the prop belongs to. A server sends 300, the neutral side. |
| side.side | bit 0 to 8 | The prop’s side. |
| side.unused | bit 9 to 15 | Unused; a server writes zero. |
| skillLevel | u8 | Unused; a server writes zero. |
| rank | u8 | How far it is advanced. |
| kind | u8 | What sort of prop it is; a client makes nothing for any other value. A client first deletes any object holding the prop’s id, whatever the kind. Values: 0 active, 1 scenery. |
| name | text, 64 bytes | What this prop is called, so a client can tell one from another. Written out in full and padded with zero bytes to the width above. |
| asset | text, 64 bytes | The name the client loads its art and sound under, written and padded as above. |
Vectors (1)
In 3.13–3.15
Command 208 on events, sent by the server, reliable.
A client takes the prop’s id from prop, not from the header. A scenery prop is turned by pitch, then yaw, then roll, each about the fixed world axes; none is negated or wrapped. An active prop only turns about the up axis, to face the ground direction its x and z give, and faces +z where both are zero.
| Field | Type | What it is |
|---|---|---|
| prop | u32 | The name the prop answers to, so later messages can name it. |
| node | u8 | Which network node the object belongs to. It is a field of its own, not the leading byte of the name beside it. |
| skin | i32 | Which look the prop wears. |
| atX | f32 | Where the prop stands, along one ground axis, in world units. |
| atY | f32 | Where the prop stands, in height, in world units. |
| atZ | f32 | Where the prop stands, along the other ground axis, in world units. |
| rotationX | f32 | For scenery, the pitch in degrees: a turn about the x axis, positive turning +y toward +z. For an active prop, x of the direction it faces. |
| rotationY | f32 | For scenery, the yaw in degrees: a turn about the up axis, positive turning +z toward +x, so yaw 0 faces +z and 90 faces +x. For an active prop, y of its facing, which does not turn it. |
| rotationZ | f32 | For scenery, the roll in degrees: a turn about the z axis, positive turning +x toward +y. For an active prop, z of the direction it faces. |
| offsetX | f32 | What is added to where it stands, along one ground axis, in world units. |
| offsetY | f32 | What is added to where it stands, in height, in world units. |
| offsetZ | f32 | What is added to where it stands, along the other ground axis, in world units. |
| scaleX | f32 | What its drawn size is scaled by, along one ground axis. |
| scaleY | f32 | What its drawn size is scaled by, in height. |
| scaleZ | f32 | What its drawn size is scaled by, along the other ground axis. |
| side | 2-byte bits | The side the prop belongs to. A server sends 300, the neutral side. |
| side.side | bit 0 to 8 | The prop’s side. |
| side.unused | bit 9 to 15 | Unused; a server writes zero. |
| skillLevel | u8 | Unused; a server writes zero. |
| rank | u8 | How far it is advanced. |
| kind | u8 | What sort of prop it is; a client makes nothing for any other value. A client first deletes any object holding the prop’s id, whatever the kind. Values: 0 active, 1 scenery. |
| name | text, 64 bytes | What this prop is called, so a client can tell one from another. Written out in full and padded with zero bytes to the width above. |
| asset | text, 64 bytes | The name the client loads its art and sound under, written and padded as above. |
Vectors (1)
MapPropChanged
What a server sends to change something about a prop already on the map. The kind of change is named inside it, and the fields around the kind keep one layout whatever it is. The header names no object: it carries zero.
In every range of this book
Command 209 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| name | text, 64 bytes | A name: an animation’s, a particle’s or a look’s, by the change below. The name ends at its first zero byte; the bytes after it carry no meaning. |
| first | f32 | For animate, when the animation starts, in seconds of match time. |
| second | f32 | For animate, how long the animation runs, in seconds. |
| prop | u32 | The object changed. |
| value | u32 | A value the change uses: for animate, the animation’s flags; for linkEffect, the particle effect value; for look, the look’s number. |
| change | u8 | What changes. A client does nothing for any other value, nor where prop names no prop it holds. Values: 0 animate, 1 linkEffect, 2 look. |
| option | u8 | For animate, nonzero to remove the prop after the animation; for linkEffect, zero. |
| effect | u8 | For linkEffect, which of the prop’s effect values to drive. |
| point | u8 | For linkEffect, which capture point drives it. |
Vectors (1)
TeamChanged
What a server sends to move a unit to another side. The header names the unit.
In every range of this book
Command 215 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit. |
| side | u32 | Its new side. |
Vectors (2)
ChampionRemoved
What a server sends to take a champion out of the world. It carries nothing of its own. The header names the champion.
BotDebug
What a server sends describing what a bot is thinking. It changes nothing a client shows. The header names the unit.
In every range of this book
Command 19 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| name | text, 64 bytes | The bot’s name. |
| strategy | text, 64 bytes | Its strategy. |
| behaviour | text, 64 bytes | Its behaviour. |
| task | text, 64 bytes | Its task. |
| state1 | text, 64 bytes | A line of its state. |
| state2 | text, 64 bytes | A line of its state. |
| state3 | text, 64 bytes | A line of its state. |
BotTargets
What a server sends naming the units a bot is weighing. It changes nothing a client shows. The header names the unit.
In every range of this book
Command 104 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| targets | 5 × u32 | Five units. |
BotState
What a server sends naming a bot’s state. It changes nothing a client shows. The header names the unit.
In every range of this book
Command 170 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| state | i32 | The state. |
Vectors (1)
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.
In 3.10
EnterSightstates the unit’s shields and looks and, for a champion or a minion, where it stands or which path it walks, and nothing of its health or resource. A client reads every part of the body whatever its length, so a server MUST NOT end one early. For an inhibitor or a nexus it reads nothing after the messages carried.
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.
In 3.10
EnterLocalSightstates the unit’s maximum health beside its health, and nothing of its resource. It can carry whole messages asEnterSightdoes.
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.
In 3.10–3.15
LeaveLocalSighttakes a unit out of what one client alone can see, and leaves it held.
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.
A client makes only circular regions.
Drawing the fog
FogSet and FogToggled change how a client draws its fog of war.
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.
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.
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:
ShopEnabledchanges the shop only for the client’s own champion.
In 3.01–3.10
GoldGainednaming the client’s own champion, with an amount above 0 and a source the client holds, shows the gold over the source.
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.
In 3.10–3.15
GoldGainedshows floating gold only for the client’s own champion.
In 3.10
Where the source of a
GoldGainedcannot show text, the gold shows over the client’s own champion.
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.
In 3.01–3.10
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.
| Field | Type | Present when | What it is |
|---|---|---|---|
| carried | 2-byte bits | ||
| carried.size | bit 0 to 10 | How many bytes the messages below occupy in total. | |
| carried.unused | bit 11 to 15 | Unused; a server writes zero. | |
| messages | sized by carried.size × CarriedMessage | Whole messages of the same family, each behind its own length, that a client acts on as though they had arrived on their own. | |
| itemCount | u8 | How many items the unit holds. | |
| items | count in itemCount × HeldItem | The items themselves. | |
| view | record | remaining set | Everything else a client needs to draw the unit. A server sends this message without it too, ending after the items. |
| view.hasShields | u8 | Whether the three figures below follow. A zero leaves them out. Values: 0 no, 1 yes. | |
| view.magicShield | f32 | hasShields set | How much of the unit’s shielding turns aside one sort of damage. |
| view.physicalShield | f32 | hasShields set | How much turns aside the other. |
| view.shield | f32 | hasShields set | How much turns aside either. |
| view.appearanceCount | u32 | How many layers of look follow. | |
| view.appearance | count in appearanceCount × Appearance | What the unit looks like, laid on in order. | |
| view.movementState | record | remaining set | Where the unit is and what it is doing on the ground. A server also sends this message ending before it. |
| view.movementState.movementKind | u8 | What 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.syncId | u32 | The name this statement of movement answers to. | |
| view.movementState.movement | Movement | movementKind = 2 | Where the unit is going. Movement says how a path is read. |
| view.movementState.movementAtSpeed | MovementAtSpeed | movementKind = 1 | Where the unit is going, and how a server makes it travel. WaypointGroupAtSpeed carries the same shape. |
| view.movementState.atX | f32 | movementKind = 3 | Where the unit stands, along one ground axis, in world units. |
| view.movementState.atZ | f32 | movementKind = 3 | Where it stands, along the other, in world units. |
| view.movementState.facingX | f32 | movementKind = 3 | Which way it faces, along one ground axis. |
| view.movementState.facingZ | f32 | movementKind = 3 | Which way it faces, along the other. |
In 3.11–3.15
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.
| Field | Type | Present when | What it is |
|---|---|---|---|
| carried | 2-byte bits | ||
| carried.size | bit 0 to 10 | How many bytes the messages below occupy in total. | |
| carried.unused | bit 11 to 15 | Unused; a server writes zero. | |
| messages | sized by carried.size × CarriedMessage | Whole messages of the same family, each behind its own length, that a client acts on as though they had arrived on their own. | |
| itemCount | u8 | How many items the unit holds. | |
| items | count in itemCount × HeldItem | The items themselves. | |
| view | record | remaining set | Everything else a client needs to draw the unit. A server sends this message without it too, ending after the items. |
| view.hasShields | u8 | Whether the three figures below follow. A zero leaves them out. Values: 0 no, 1 yes. | |
| view.magicShield | f32 | hasShields set | How much of the unit’s shielding turns aside one sort of damage. |
| view.physicalShield | f32 | hasShields set | How much turns aside the other. |
| view.shield | f32 | hasShields set | How much turns aside either. |
| view.appearanceCount | u32 | How many layers of look follow. | |
| view.appearance | count in appearanceCount × Appearance | What the unit looks like, laid on in order. | |
| view.lookingAt | u32 | What the unit is turned towards, or zero where it is turned towards a place instead. | |
| view.lookKind | u8 | What sort of thing it is turned towards. | |
| view.lookX | f32 | Which way the unit is turned, along one ground axis. The three together are a direction rather than a place. | |
| view.lookY | f32 | Which way it is turned, in height. | |
| view.lookZ | f32 | Which way it is turned, along the other ground axis. | |
| view.movementState | record | remaining set | Where the unit is and what it is doing on the ground. A server also sends this message ending before it. |
| view.movementState.movementKind | u8 | What 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.syncId | u32 | The name this statement of movement answers to. | |
| view.movementState.movement | Movement | movementKind = 2 | Where the unit is going. Movement says how a path is read. |
| view.movementState.movementAtSpeed | MovementAtSpeed | movementKind = 1 | Where the unit is going, and how a server makes it travel. WaypointGroupAtSpeed carries the same shape. |
| view.movementState.atX | f32 | movementKind = 3 | Where the unit stands, along one ground axis, in world units. |
| view.movementState.atZ | f32 | movementKind = 3 | Where it stands, along the other, in world units. |
| view.movementState.facingX | f32 | movementKind = 3 | Which way it faces, along one ground axis. |
| view.movementState.facingZ | f32 | movementKind = 3 | Which way it faces, along the other. |
Vectors (5)
a-fifth-on-3-11, a-fourth-on-3-11, a-third-on-3-11, another-on-3-11, one-on-3-11
EnterLocalSight
What a server sends when a unit comes into what one client can see. The header names the unit this is about.
In every range of this book
Command 174 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| carried | 2-byte bits | ||
| carried.size | bit 0 to 10 | How many bytes the messages below occupy in total. | |
| carried.unused | bit 11 to 15 | Unused; a server writes zero. | |
| messages | sized by carried.size × CarriedMessage | Whole messages of the same family, each behind its own length, that a client acts on as though they had arrived on their own. | |
| vitals | record | remaining set | The unit’s health. A server sends this message without it too, ending after the carried messages. |
| vitals.maxHealth | f32 | What the unit’s health tops out at. | |
| vitals.health | f32 | What its health stands at. |
Vectors (4)
another-on-3-11, one-on-3-11, ending-early-on-3-15, one-on-3-15
EnterTeamSight
What a server sends when a unit comes into the view of a whole side. The header names the object this is about.
In every range of this book
Command 224 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| side | u8 | Which side the unit came into or out of the view of. |
Vectors (3)
LeaveSight
What a server sends when a unit passes out of what a side can see. The header names the unit this is about.
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.
In every range of this book
Command 225 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| side | u8 | Which side the unit came into or out of the view of. |
Vectors (3)
ParticleEnterTeamSight
What a server sends as a particle comes into what one side can see. The header carries zero.
In every range of this book
Command 226 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| particle | u32 | The particle. |
| team | u8 | Which side, by an index. |
Vectors (2)
ParticleLeaveTeamSight
What a server sends as a particle passes out of what one side can see. The header carries zero.
In every range of this book
Command 227 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| particle | u32 | The particle. |
| team | u8 | Which side, by an index. |
Vectors (2)
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.
RegionAdded
What a server sends to place a region on the ground. The header names no object: a server writes zero.
In every range of this book
Command 119 on events, sent by the server, reliable.
A region grants sight, blocks the way, or grows cover.
| Field | Type | What it is |
|---|---|---|
| kind | u32 | What sort of region it is. Where it is 2, the region belongs to the client clientId names; what other values mean is not recorded. |
| clientId | u32 | The client the region belongs to where kind is 2. A client takes 4294967294 as 4294967295, no client. |
| sightRadius | f32 | How far the region shows the map around it, in world units. Zero takes a default radius. |
| atX | f32 | Where it stands, along one ground axis, in world units. |
| atY | f32 | Its height, in world units. |
| atZ | f32 | Where it stands, along the other ground axis, in world units. |
| lifetime | f32 | How long it lasts, in seconds. A client counts it down and removes the region once it reaches zero or less. Whether one that starts at zero or less is kept is not recorded. |
| marker | u32 | The region’s id, which RegionRemoved names; 4294967295 has the client pick one of its own. A region sent again with the same id, kind and radius changes the one held rather than adding another. |
| does | 4-byte bits | What the region does. |
| does.flag | bit 0 | What this changes on a client is not recorded. |
| does.unused | bit 1 to 31 | Unused; a server writes zero. |
Vectors (1)
RegionAttached
What a server sends to place a region that follows a unit, showing the map around it until it runs out or the unit is gone.
In every range of this book
Command 35 on events, sent by the server, reliable.
A region matching one the client holds in view, sightRadius, the first three bits of does, marker, sightFrom and unit only gives that one the new lifetime.
| Field | Type | What it is |
|---|---|---|
| kind | u32 | What sort of region it is. Where it is 2, the region belongs to the client clientId names; what other values mean is not recorded. |
| clientId | u32 | The client the region belongs to where kind is 2. A client takes 4294967294 as 4294967295, no client. |
| sightRadius | f32 | How far the region shows the map around it, in world units. Zero takes the unit’s own sight radius, or a default where it has none. |
| unit | u32 | The unit the region follows. A client takes the region even where it does not hold the unit. |
| atX | f32 | Where it stands, along one ground axis, in world units. |
| atY | f32 | Its height, in world units. |
| atZ | f32 | Where it stands, along the other ground axis, in world units. |
| lifetime | f32 | How long it lasts, in seconds. A client counts it down and removes the region once it reaches zero or less. Whether one that starts at zero or less is kept is not recorded. |
| marker | u32 | The region’s id, which RegionRemoved names; 4294967295 has the client pick one of its own. A region sent again with the same id, kind and radius changes the one held rather than adding another. |
| does | 4-byte bits | What the region does. |
| does.flag | bit 0 | What this changes on a client is not recorded. |
| does.unused | bit 1 to 31 | Unused; a server writes zero. |
Vectors (1)
RegionRemoved
What a server sends to take away a region RegionAdded or RegionAttached placed. The header names no object: a server writes zero.
In every range of this book
Command 50 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| region | u32 | The region to take away, by the name RegionAdded gave it. |
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.
In every range of this book
Command 171 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| state | 1-byte bits | Whether the fog is drawn. |
| state.drawn | bit 0 | Set to draw the fog, clear to draw the map with no darkening. |
| state.unused | bit 1 to 7 | Unused; a server writes zero. |
Vectors (1)
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.
In every range of this book
Command 126 on events, sent by the server, reliable.
No body.
Vectors (1)
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.
In 3.10
A champion or minion coming into sight while standing carries its place and facing in
EnterSightinstead. Other units carry no place there.
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.
In 3.01–3.10
A client reads nothing after a refused movement in its group, and still answers the group.
In 3.10
A client reads the points of a movement whose unit it does not hold, and keeps them for when the unit appears (see Objects and identifiers).
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.
In 3.10
A client takes a
WaypointGroupor aWaypointGroupAtSpeedon channels 2, 3 and 4 alike.
Marking the ground
NavigationFlags marks the ground within circles.
In 3.10
A server MAY send
NavigationFlags. Once the map’s ground grid is loaded, a client replaces the circles it holds with those it carries, and answers with itssyncId; before then it takes nothing and does not answer.
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.
In every range of this book
Command 99 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| syncId | u32 | Names this statement of movement. |
| movementCount | u16 | How many units follow. |
| movements | count in movementCount × MovementAtSpeed | What each unit is told to do. |
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.
In every range of this book
Command 118 on requests, sent by the client, unsequenced.
It lists the units the group asked it to relocate.
| Field | Type | What it is |
|---|---|---|
| syncId | u32 | Which group is being acknowledged, as the group named itself. |
| relocationCount | u8 | How many relocations follow. |
| relocations | count in relocationCount × record | |
| relocations[].unit | u32 | The unit the token belonged to. |
| relocations[].token | u8 | The token that arrived with it. |
MoveOrder
What a client sends to tell a server what it wants a unit to do. The header names the sender’s champion.
In every range of this book
Command 113 on requests, sent by the client, reliable.
The path it carries is what the client would take; where the unit actually goes is whatever the server answers with.
| Field | Type | What it is |
|---|---|---|
| kind | u8 | What is being asked for. Values: 2 moveToPosition, 3 attack, 10 stop. |
| targetX | f32 | Where the order points, along one ground axis. Carried in world units rather than in the units a path uses. |
| targetZ | f32 | Where the order points, along the other. |
| target | u32 | The network object the order is aimed at, or zero where it is aimed at open ground. |
| movement | Movement |
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.
In every range of this book
Command 96 on transient, sent by the server, unreliable.
| Field | Type | What it is |
|---|---|---|
| syncId | u32 | Names this group. A client returns it to say the group arrived. |
| movementCount | u16 | How many units the group moves. |
| movements | count in movementCount × Movement |
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.
In every range of this book
Command 64 on events, sent by the server, reliable.
A client fails on the first of these in a match: it stops, marking no circle and sending no answer.
| Field | Type | What it is |
|---|---|---|
| count | u16 | The count of circles that follow. |
| syncId | i32 | A number naming this marking. |
| circles | count in count × record | The circles. |
| circles[].x | f32 | The circle’s centre, along one ground axis, in world units. |
| circles[].z | f32 | The circle’s centre, along the other ground axis, in world units. |
| circles[].radius | f32 | Its radius, in world units. A circle of radius 1000 or more marks nothing. |
| circles[].flags | u32 | The flags to add to each cell. Only the low 16 bits take effect. |
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.
In 3.8–3.15
Command 262 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The sender’s champion. |
| node | u8 | Where in the stroke this point falls. Values: 0 start, 1 update, 2 end. |
| x | f32 | Where the cursor points on the ground, along one axis, in world units. |
| y | f32 | Its height, in world units. |
| z | f32 | Where the cursor points on the ground, along the other axis, in world units. |
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.
In 3.8–3.11
Command 261 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | It has no effect. |
| mode | u8 | Zero to turn drawing off, any other value to turn it on. |
Vectors (2)
In 3.12–3.15
Command 261 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | It has no effect. |
| mode | u8 | Zero to turn drawing off, any other value to turn it on. |
| interval | f32 | Seconds between repeats of a held right click. |
FaceDirection
What a server sends to turn a unit to face a direction. The header names the unit acting.
In every range of this book
Command 79 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| towardX | f32 | The direction faced, along one ground axis. |
| towardY | f32 | The direction faced, in height. |
| towardZ | f32 | The direction faced, along the other ground axis. |
| how | 1-byte bits | |
| how.turnOverTime | bit 0 | Set 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.unused | bit 1 to 7 | Unused; a server writes zero. |
| turnTime | f32 | How long the turn takes, in seconds. |
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.
In 3.01–3.11
Command 79 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| directionX | f32 | Which way the unit now faces, as a direction of length one, along one ground axis. |
| directionY | f32 | Which way the unit now faces, as a direction of length one, in height. |
| directionZ | f32 | Which way the unit now faces, as a direction of length one, along the other ground axis. |
| unused | u8 | A client writes zero. |
| unknown | f32 | A client never writes these bytes, so they carry whatever it held there; a server ignores them. |
Vectors (1)
In 3.12–3.14
Command 79 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| directionX | f32 | Which way the unit now faces, as a direction of length one, along one ground axis. |
| directionY | f32 | Which way the unit now faces, as a direction of length one, in height. |
| directionZ | f32 | Which way the unit now faces, as a direction of length one, along the other ground axis. |
| unused | u8 | A client writes zero. |
| unknown | bytes, 4 | A client leaves these four bytes unwritten; a server ignores them. |
Vectors (1)
In 3.15
Command 79 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| directionX | f32 | Which way the unit now faces, as a direction of length one, along one ground axis. |
| directionY | f32 | Which way the unit now faces, as a direction of length one, in height. |
| directionZ | f32 | Which way the unit now faces, as a direction of length one, along the other ground axis. |
| unused | u8 | A client writes zero. |
| unknown | f32 | A client writes 0.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.
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.
| Field | Type | What it is |
|---|---|---|
| x | f32 | The circle’s centre, in world units. |
| y | f32 | The centre’s height, in world units. |
| z | f32 | The circle’s centre, in world units. |
| radius | f32 | The circle’s radius, in world units. Zero lifts the bounds; a negative radius counts as zero. |
| flags | 1-byte bits | What else the circle holds. |
| flags.camera | bit 0 | Set to keep the camera within the circle too. Clear leaves the camera as it was, bound or not. |
| flags.unused | bit 1 to 7 | Unused; a server writes zero. |
Path
What a server sends to set a unit walking along a path, facing the way it walks. The header names the unit.
In every range of this book
Command 185 on events, sent by the server, reliable.
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).
| Field | Type | What it is |
|---|---|---|
| syncId | i32 | The unit’s movement count. |
| points | to the end × record | The path’s points, to the end of the message. A client takes the ground’s height for each. |
| points[].x | f32 | A point on the path, in world units. |
| points[].z | f32 | A point on the path, in world units. |
Vectors (1)
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.
In every range of this book
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.
| Field | Type | What it is |
|---|---|---|
| syncId | i32 | The unit’s movement count. |
| speed | f32 | The speed to move at, in world units a second. |
| gravity | f32 | The arc’s gravity, for a leap, in units of 150 world units a second squared. Zero or less moves the unit flat. |
| arcX | f32 | Where the arc begins, in world units. |
| arcZ | f32 | Where the arc begins, in world units. |
| facing | u8 | Which way the unit faces as it moves. Values: 0 along, 1 keep. |
| follow | u32 | A unit to follow, or zero for none. |
| followDistance | f32 | How near to keep to it, in world units. It takes effect only where follow is not zero. |
| backOff | f32 | How far to fall back from it, in world units. It takes effect only where follow is not zero. |
| travelTime | f32 | How long the move takes, in seconds. It takes effect only where follow is not zero. |
| points | to the end × record | The path’s points, to the end of the message. A client takes the ground’s height for each. |
| points[].x | f32 | A point on the path, in world units. |
| points[].z | f32 | A point on the path, in world units. |
Vectors (1)
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.
In 3.10
Command 271 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit to turn; a client ignores the header, and the message where it does not hold the unit. |
| kind | u8 | What 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. |
| x | f32 | Where to look, along one ground axis, in world units. |
| y | f32 | Where to look, in height, in world units. |
| z | f32 | Where to look, along the other ground axis, in world units. |
| target | u32 | The network object being looked at, where one is named. |
Vectors (1)
In 3.11–3.15
Command 271 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| kind | u8 | What 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. |
| x | f32 | Where to look, along one ground axis, in world units. |
| y | f32 | Where to look, in height, in world units. |
| z | f32 | Where to look, along the other ground axis, in world units. |
| target | u32 | The network object being looked at, where one is named. |
UnitStopped
What a server sends to stop a unit where it stands. The header names the unit.
In every range of this book
Command 48 on events, sent by the server, reliable.
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.
| Field | Type | What it is |
|---|---|---|
| x | f32 | Where the unit stands, in world units; a client keeps this height rather than the ground’s. |
| y | f32 | Its height, in world units. |
| z | f32 | Where it stands, in world units. |
| facingX | f32 | The way it faces. |
| facingY | f32 | The way it faces. |
| facingZ | f32 | The way it faces. |
| syncId | i32 | The unit’s movement count. |
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.
In 3.10–3.15
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.
In 3.01–3.10
The building table is the same on every map.
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.
In 3.10–3.15
Each row also gives the shape a sending end writes the value in.
In 3.10
A champion
Group Bits Value Shape 0 0 Gold in hand measured 0 1 Gold earned in all measured 0 2 to 3 Which of the champion’s slots can be cast from, as a set of bits over two words counted 0 4 Points held for evolving a spell counted 0 5 Which spells have evolved, as a set of bits counted 0 6 to 25 What the spell in one slot costs, slots 0 to 3 first measured 1 0 to 3 What the champion is doing, and whether it is proof against spells, all harm and strikes counted 1 4 Damage it deals by striking measured 1 5 Damage its spells deal before modifiers measured 1 6 How often it turns a blow aside measured 1 7 How often it strikes critically measured 1 8 Armour measured 1 9 Spell resistance measured 1 10 to 11 How fast health and resource return measured 1 12 How far it strikes from measured 1 13 to 16 Flat and percent modifiers on the damage it strikes with, then on its spells’ damage measured 1 17 to 18 Flat and percent reduction of the spell damage it takes measured 1 19 A multiplier on how fast it strikes measured 1 20 A flat addition to how far from the champion an aimed spell’s point is allowed to land measured 1 21 A modifier on its cooldowns measured 1 22 When its passive’s cooldown ends, as a moment on the match clock measured 1 23 How long its passive’s cooldown lasts in all measured 1 24 to 25 How much armour it cuts through, flat then as the share left standing measured 1 26 to 27 How much spell resistance it cuts through, flat then as the share left standing measured 1 28 Life steal measured 1 29 Spell vamp measured 1 30 Crowd-control reduction measured 3 0 to 1 Health and resource as they stand measured 3 2 to 3 Health and resource at their greatest measured 3 4 Experience measured 3 5 to 9 Lifetime, and how far the champion sees measured 3 10 How fast it moves measured 3 11 to 12 Its size, and how wide a path it needs measured 3 13 Level counted 3 14 to 16 Kills taken from no side, and whether anything is allowed to aim at it counted A turret
Group Bits Value Shape 1 0 to 1 Health as it stands, then at its greatest measured 1 2 to 5 What the turret is doing, and whether it is proof against spells, all harm and strikes counted 1 6 Damage it deals by striking measured 1 7 to 8 Armour and spell resistance measured 1 9 A multiplier on how fast it strikes measured 1 10 to 13 Flat and percent modifiers on the damage it strikes with, then on its spells’ damage measured 1 14 How fast health returns measured 3 0 to 1 How far it sees measured 3 2 How fast it moves measured 3 3 Its size measured 5 0 to 1 Whether anything is allowed to aim at it, and which side is counted A minion, and a unit belonging to no side
Both answer to one table.
Group Bits Value Shape 1 0 to 1 Health as it stands, then at its greatest measured 1 2 to 4 How long it lives, as it stands and at its greatest, and the count of that measured 1 5 to 6 Resource at its greatest, then as it stands measured 1 7 to 10 What the unit is doing, and whether it is proof against spells, all harm and strikes counted 1 11 Damage it deals by striking measured 1 12 to 13 Armour and spell resistance measured 1 14 A multiplier on how fast it strikes measured 1 15 to 18 Flat and percent modifiers on the damage it strikes with, then on its spells’ damage measured 1 19 to 20 How fast health and resource return measured 1 21 A value whose meaning is not recorded measured 1 22 to 23 Flat and percent reduction of the spell damage it takes measured 3 0 to 1 How far it sees measured 3 2 How fast it moves measured 3 3 Its size measured 3 4 to 5 Whether anything is allowed to aim at it, and which side is counted For some units the two resource values travel as group 3 bits 0 and 1 instead: the rest of group 1 moves down two bits and the rest of group 3 up two. Which units do is not recorded.
A building
Group Bits Value Shape 1 0 Health as it stands measured 1 1 Whether the building is proof against harm counted 5 0 to 1 Whether anything is allowed to aim at it, and which side is counted A prop
A server need not replicate a prop’s values. Where it does, they follow the table below.
Group Bits Value Shape 1 0 to 1 Health as it stands, then at its greatest measured 1 2 Whether the prop is proof against harm counted 3 0 to 1 How far it sees measured 3 2 How fast it moves measured 3 3 Its size measured 3 4 to 5 Whether anything is allowed to aim at it, and which side is counted
Values stated outside a batch
Besides its batches, a server states some values with messages of their own.
In 3.10–3.15
A server grants experience with
ExperienceGainedand gold withGoldGained.
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.
In every range of this book
Command 196 on transient, sent by the server, unreliable.
| Field | Type | What it is |
|---|---|---|
| syncId | u32 | Names this batch of changes. Replication says which batches a client takes values from. |
| unitCount | u8 | How many units follow. |
| units | count in unitCount × Replication |
Vectors (3)
TransientAck
What a client sends to say a batch of changes arrived, naming which batch. The header names no object: it carries zero.
In every range of this book
Command 168 on requests, sent by the client, unsequenced.
It is sent for a batch whose values the client dropped as well as for one it took.
| Field | Type | What it is |
|---|---|---|
| syncId | u32 | Which batch is being acknowledged, as the batch named itself. |
Vectors (2)
GoldGained
What a server sends to show a unit gaining gold. The header names the unit whose death earned the gold, as source does.
In every range of this book
Command 34 on events, sent by the server, reliable.
It grants the unit gold.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit granted it. |
| source | u32 | What it came from, or zero where nothing did. |
| amount | f32 | How much. |
ExperienceGained
What a server sends to say a unit gained experience. The header names no object: a server writes zero.
In 3.01–3.14
Command 16 on events, sent by the server, reliable.
Where the unit is the client’s own champion below its highest level, a client also shows the amount on its experience display.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit granted it. |
| amount | f32 | How much. |
Vectors (3)
In 3.15
Command 16 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit granted it. |
| amount | f32 | How much. |
GoldRedirect
What a server sends to send the gold a unit earns to another. The header names the unit.
In every range of this book
Command 7 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| target | u32 | The unit that receives the gold. |
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.
In 3.01–3.10
Command 62 on events, sent by the server, reliable.
A client applies it only to a champion, and ignores it for any other unit.
| Field | Type | What it is |
|---|---|---|
| level | u8 | The level now reached. |
| pointsToSpend | u8 | How many spell points are left unspent. |
Vectors (1)
In 3.11–3.15
Command 62 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| level | u8 | The level now reached. |
| pointsToSpend | u8 | How many spell points are left unspent. |
ChampionStats
What a server sends to set a champion’s tallies for the scoreboard. The header names the champion.
In every range of this book
Command 69 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| size | u32 | The 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. |
| values | bytes, sized by size minus 4 | 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. |
ShieldAdded
What a server sends to add to a unit’s shield. The header names the unit.
In every range of this book
Command 101 on events, sent by the server, reliable.
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.
| Field | Type | What it is |
|---|---|---|
| flags | 1-byte bits | Which shield. |
| flags.physical | bit 0 | Set where the shield turns aside physical damage. |
| flags.magical | bit 1 | Set where it turns aside magical damage. Both set means either. |
| flags.noFade | bit 2 | Set where the shield does not fade. |
| flags.unused | bit 3 to 7 | Unused; a server writes zero. |
| amount | f32 | How much is added. |
HealthBar
What a server sends about a unit’s health bar. The header names the unit.
In every range of this book
Command 206 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| flags | 1-byte bits | What changes. | |
| flags.show | bit 0 | Set to show the bar, clear to hide it. | |
| flags.changeType | bit 1 | Set where the bar’s type changes; the type and side below apply only then. | |
| flags.unused | bit 2 to 7 | Unused; a server writes zero. | |
| barType | u8 | flags.changeType set | Which 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. |
| side | i32 | flags.changeType set | The side that sees the change, or 0 for every side. |
Vectors (2)
ResourceDisplay
What a server sends to change how a unit’s resource bar is shown. The header names the unit.
In every range of this book
Command 147 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unused | u32 | Unused; its bytes carry no meaning. The header names the unit. |
| state | i32 | Which 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 (2)
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.
In 3.11
Command 275 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| kind | u8 | The kind. A client knows 0 to 10, and takes any higher value as none. Values: 0 mana, 1 energy, 2 none, 3 shield, 4 battleFury, 5 dragonFury, 6 rage, 7 heat. |
Vectors (1)
In 3.12–3.14
Command 275 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| kind | u8 | The kind. Values: 0 mana, 1 energy, 2 none, 3 shield, 4 battleFury, 5 dragonFury, 6 rage, 7 heat, 8 ferocity, 9 bloodWell, 10 other. |
Vectors (1)
In 3.15
Command 275 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| kind | u8 | The 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. |
Vectors (1)
LevelCap
What a server sends its player’s champion to set the highest level it can reach. The header names the champion.
In 3.10–3.15
Command 274 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| cap | u8 | The highest level; zero restores the usual 18. |
ScoreAdded
What a server sends to add to a player’s score. The header names no object: a server writes zero.
In every range of this book
Command 217 on events, sent by the server, reliable.
A client ignores the message where player names no champion it holds.
| Field | Type | What it is |
|---|---|---|
| champion | u32 | The champion whose score it is. |
| category | u8 | Which part of the score. Values: 0 offense, 1 defense, 2 combat, 3 objective. |
| event | u8 | What earned it. |
| flags | 1-byte bits | How it is shown. |
| flags.callout | bit 0 | Set where the client announces it. |
| flags.unused | bit 1 to 7 | Unused; a server writes zero. |
| points | f32 | How much is added. |
Vectors (1)
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.
In every range of this book
Command 218 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| champion | u32 | The champion. |
| statistic | u8 | Which 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 (2)
GoldEarned
What a server sends about gold a champion earned. The header carries zero.
In every range of this book
Command 228 on events, sent by the server, reliable.
A server sends it to clients watching a match. It credits the champion with the gold.
| Field | Type | What it is |
|---|---|---|
| owner | u32 | The champion credited. |
| amount | f32 | How much gold. 0.95 is what a champion earns for each step it stands still. |
Vectors (2)
GoldSourcesLog
What a server sends to carry a text to a client. It changes nothing a client shows. The header carries zero.
In 3.14–3.15
Command 282 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| length | u32 | How many bytes of text follow. Zero, or a value above 2147483647, carries no text. |
| text | text, sized by length | The text, with no terminating zero. A client looks each word up in its own text and writes the result a line at a time. |
MultikillCount
What a server sends a client watching a match to state a champion’s run of kills. The header carries zero.
In 3.11–3.15
Command 277 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| owner | u32 | The champion. |
| count | u8 | How many kills in the run. |
StatTick
What a server sends to advance every unit’s stats by a span of time. The header carries zero.
In every range of this book
Command 39 on events, sent by the server, reliable.
A client takes it and changes nothing it shows.
| Field | Type | What it is |
|---|---|---|
| seconds | f32 | The span, in seconds. |
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.
A client shows the speed GameSpeed sets over its champion. A client changes
nothing it shows for StatTick.
Sent during a hold, GameSpeed takes effect as the match resumes.
In 3.10
No unit advances for
StatTick.
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).
A client names no one in Pause or Resume.
A server holds the match with Paused.
Paused carries how long the hold can last, in seconds.
A client begins a hold only where the time Paused carries is above zero and
the match is not already held.
A client shows a tournament’s hold, crediting the seat that asked, where the message says it is one.
In 3.10
A client shows nothing for any other hold. A tournament’s hold also shows a box with the time left and locks input, and only such a hold locks it.
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.
In 3.10
A client announces who resumed the match even where it was not held.
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.
A client that receives GameEnded while still loading leaves at once.
In 3.10
A client sends
ClientFinishedevery timeGameEndedarrives in play, and not while playing a replay.
VictoryDance sets units moving as winners or losers do. It ends nothing.
In 3.01–3.10
A client moves no neutral unit for
VictoryDance.
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 3.01–3.10
A client also leaves as one abandoning as its player declines to reconnect or cancels a reconnection under way, and as its player dismisses the notice that it was dropped for being away.
The action of BotKick that means leave is 4.
A server tells the others that a player’s client dropped with
PlayerDisconnected.
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.
In 3.01–3.10
A client dropped during play connects again at once by itself, for any reason but the one that means its player was away, and shows its player that it is reconnecting while it does. Where its settings turn this off, it asks its player for the reason 0 whether to connect again, and for any other shows that the reconnection failed.
A client sends
ReconnectedInMatchas the connection is made, without waiting for the registration answer.
In 3.10–3.15
A server MUST NOT send
SpawnStartto a client coming back from a drop: it returns the client to spawning, from which only anotherStartGamebrings it back into play.
In 3.10–3.15
Reconnectedannounces 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.
In 3.10
A client sends
ReconnectedInMatchonly where the match is in play.
Staying connected
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 3.01–3.10
Where its last
Cameragoes unacknowledged, a client sends it again without its view moving, once more than twice the round trip has passed.
Once loading is done, a client gives up on a connection where a reliable message it sent goes unacknowledged for 15 seconds.
Before loading is done, a client waits 60 seconds for an acknowledgement rather than 15.
In 3.10–3.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.
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.
In every range of this book
Command 193 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| elapsed | f32 | How long the match has run, in seconds. |
Vectors (2)
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.
In 3.01–3.11
Command 8 on clock, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| value | u32 | The client id the sender holds, as it sends in clientId in Camera and CameraLock. |
| serverSaid | f32 | What the server last said the clock stood at, in seconds. |
| clientSaid | f32 | What the client’s own clock reads, in seconds, just after it set itself from that statement: elapsed plus its smoothed estimate of the delay. |
| check | bytes, 32 | Thirty-two bytes every client of this build sends alike; a server ignores them. |
Vectors (3)
In 3.12–3.15
Command 8 on clock, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| serverSaid | f32 | What the server last said the clock stood at, in seconds. |
| clientSaid | f32 | What the client’s own clock stood at when that statement arrived, in seconds. |
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.
In every range of this book
Command 18 on events, sent by the server, reliable.
Sent while paused, it takes effect on resuming.
| Field | Type | What it is |
|---|---|---|
| speed | f32 | How fast, 1 being normal. A client keeps it between 0 and 10. |
Resumed
What a server sends to take the match off hold. The header names a champion: that of the player who resumed the match.
In every range of this book
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.
| Field | Type | What it is |
|---|---|---|
| clientId | u32 | 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. |
| how | 1-byte bits | |
| how.afterCountdown | bit 0 | Set where the match starts again after a countdown rather than at once. |
| how.unused | bit 1 to 7 | Unused; a server writes zero. |
Pause
What a client sends to hold a match. The header names no object: it carries zero.
In every range of this book
Command 161 on requests, sent by the client, reliable.
A client sends the same values in every Pause, as each field states.
| Field | Type | What it is |
|---|---|---|
| clientId | u32 | A client writes 4294967295, the client id of no client. |
| timeLeft | i32 | A client sends zero. |
| how | 1-byte bits | |
| how.tournament | bit 0 | A client sends it clear. |
| how.unused | bit 1 to 7 | Unused; a client writes zero. |
Vectors (1)
Resume
What a client sends to start a paused match again. The header names no object: it carries zero.
In every range of this book
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.
| Field | Type | What it is |
|---|---|---|
| clientId | u32 | A client writes 4294967295, the client id of no client. |
| how | 1-byte bits | |
| how.delayed | bit 0 | A client sends it clear. |
| how.unused | bit 1 to 7 | A client leaves these bits unwritten; they carry no meaning, and a server ignores them. |
Paused
What a server sends to put the match on hold. The header names no object: it carries zero.
In every range of this book
Command 161 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| clientId | u32 | The client id of the client that asked for the hold; it applies only to a tournament’s hold. |
| timeLeft | i32 | The hold time left, in seconds, for any hold. A hold begins only where it is above zero and the match is not already held. |
| how | 1-byte bits | |
| how.tournament | bit 0 | Set 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.unused | bit 1 to 7 | Unused; a server writes zero. |
Vectors (1)
GameEnded
What a server sends to end the match and say which side won. The header names no object: it carries zero.
In 3.01–3.11
Command 198 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.
| Field | Type | What it is |
|---|---|---|
| result | 1-byte bits | |
| result.side100Won | bit 0 | Set where side 100 won, clear where side 200 did. |
| result.unused | bit 1 to 7 | Unused; a server writes zero. |
Vectors (1)
In 3.12–3.15
Command 198 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.
| Field | Type | What it is |
|---|---|---|
| result | 1-byte bits | |
| result.side100Won | bit 0 | Set where side 100 won, clear where side 200 did. |
| result.surrendered | bit 1 | Set aside for a match ended by surrender. It has no effect. |
| result.unused | bit 2 to 7 | Unused; a server writes zero. |
Vectors (1)
ClientFinished
What a client sends when it has finished with the match.
In every range of this book
Command 141 on requests, sent by the client, reliable.
It is sent once, at the end.
No body.
Vectors (1)
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.
In every range of this book
Command 197 on events, sent by the server, reliable.
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.
| Field | Type | What it is |
|---|---|---|
| orderWon | u8 | Nonzero where side 100 won, zero where side 200 won. |
Vectors (1)
Exit
What a client sends as it leaves. It carries nothing of its own.
In every range of this book
Command 143 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)
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.
In every range of this book
Command 229 on events, sent by the server, reliable.
No body.
Vectors (1)
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.
In every range of this book
Command 222 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| action | u8 | What to do. A client acts on 4 only. Values: 4 leave. |
Vectors (1)
PlayerDisconnected
What a server sends as a player’s client drops out. The header carries zero.
In every range of this book
Command 152 on events, sent by the server, reliable.
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.
| Field | Type | What it is |
|---|---|---|
| champion | u32 | The player’s champion. |
| flags | 1-byte bits | Who is told. |
| flags.toEnemies | bit 0 | Set 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.unused | bit 1 to 7 | Unused; a server writes zero. |
Vectors (2)
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.
In every range of this book
Command 239 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| stage | 1-byte bits | Which half of the pair. |
| stage.stage | bit 0 to 1 | 0 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.unused | bit 2 to 7 | Unused; a server writes zero. |
Vectors (1)
ReconnectedInMatch
What a client sends right after the server answers its registration. The header carries zero.
In every range of this book
Command 156 on requests, sent by the client, reliable.
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 (1)
Reconnected
What a server sends to say a client has reconnected. The header carries zero.
In every range of this book
Command 15 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| client | u32 | The client, by the seat it occupies. |
ClockConvergence
What a server sends about how its clock and a client’s are being brought together. The header carries zero.
In every range of this book
Command 117 on clock, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| clientTime | f32 | The client’s clock, in seconds, as the client reported it. |
| roundTrip | f32 | The round trip time the server measures, in seconds. |
Vectors (2)
Empty
A message with no body. The header carries zero.
Unhandled286
A message that changes nothing a client shows. The header carries zero.
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.
After StopAttack, a client clears the unit’s attack whatever the message’s
flags ask besides.
In 3.01–3.10
A client moves the attacker to the place
AttackFromgives only where it stands more than 400 units from it.
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.
How long a swing takes comes from the champion’s data and its attack speed.
In 3.01–3.10
A client ignores an
Attackwhose target it does not hold.
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 3.01–3.10
Of the other results of
Damage, 1 shows nothing, 2 a dodge and 5 a miss; 3 is critical, and 4 and any above 5 are normal.
A client never walks its champion into range by itself: a server sends the
WaypointGroup that takes it there.
In 3.01–3.10
A swing starts later by the timing byte of its
Attackless 128, in hundredths of a second.
The health bar moves as replication states the health.
In 3.10–3.15
Each
Attackplays one swing, cutting off any swing still under way.TargetUnitandTargetHeldChampionare not needed for a swing to show. The health bar moves only as replication states the unit’s health, andStopAttackbreaks a swing off before it lets go.
TargetUnit draws a unit’s targeting beam at what it is attacking.
In 3.01–3.10
TargetHeldChampionmarks a unit as attacking the client’s own champion: a client sets the mark only where the message names that champion, and clears it for any other. A client takes it apart fromTargetUnit.
Any unit takes TargetUnit, whatever it is attacking.
In 3.10
A client sets the mark of
TargetHeldChampiononly for a unit on the other side.
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 3.10–3.15
A client shows nothing at all for
Damageunless 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.
A client ignores UnitDied or ChampionDied naming a unit already dead, and
puts a unit down only where a killer is named.
In 3.01–3.10
A killer a client does not hold still puts the unit down.
In 3.01–3.10
A death that credits no killer still stops the unit’s cast and attack.
Either UnitDied or ChampionDied can leave the unit standing as a husk
rather than dead, without its death animation or death screen.
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 3.10
A client honours
GreyscaleWhenDeadwhatever its display settings, and restores colour at once as it clears.
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.
In 3.10
RevivedandRespawnedeach place the champion where they say and restore its health and mana.Respawnedalso acts on a living champion, first stopping its movement, cast and attack.
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.
In 3.10
As a unit changes side, a client sends
UseObjectnaming it for every unit it holds that targets it, whether or not it can be used, and clears that target.
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.
In every range of this book
Command 12 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| target | u32 | The unit swung at. A client throws the swing at it. |
| timing | u8 | A 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. |
| missile | u32 | The name the missile this swing throws will answer to. |
| slot | u8 | Which of the unit’s attacks this is. |
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.
In every range of this book
Command 26 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| target | u32 | The unit swung at. A client throws the swing at it. |
| timing | u8 | A 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. |
| missile | u32 | The name the missile this swing throws will answer to. Zero for a swing that throws none. |
| slot | u8 | Which of the unit’s attacks this is. |
| fromX | f32 | Where the swinging unit stands, along one ground axis, in world units. |
| fromZ | f32 | Where it stands, along the other, in world units. |
StopAttack
What a server sends to break off an attack a unit is making. The header names the unit acting.
In 3.01–3.7
Command 51 on events, sent by the server, reliable.
Whatever the flags, a client then clears the unit’s attack.
| Field | Type | What it is |
|---|---|---|
| how | 1-byte bits | |
| how.keepAnimating | bit 0 | Set to let the attack’s animation play on after the stop. |
| how.forceCast | bit 1 | Set to make the attack land first where it has not already. |
| how.forceStop | bit 2 | Set 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.summonerSpell | bit 3 | Set where the slot stopped is a summoner spell’s. |
| how.destroyMissile | bit 4 | Set to destroy the attack’s missile, where it has one. |
| how.unused | bit 5 to 7 | Unused; a server writes zero. |
Vectors (1)
In 3.8–3.15
Command 51 on events, sent by the server, reliable.
Whatever the flags, a client then clears the unit’s attack.
| Field | Type | What it is |
|---|---|---|
| missile | u32 | The missile the attack would have thrown, where there is one. |
| how | 1-byte bits | |
| how.keepAnimating | bit 0 | Set to let the attack’s animation play on after the stop. |
| how.forceCast | bit 1 | Set to make the attack land first where it has not already. |
| how.forceStop | bit 2 | Set 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.summonerSpell | bit 3 | Set where the slot stopped is a summoner spell’s. |
| how.destroyMissile | bit 4 | Set to destroy the missile named in missile, where it exists; forced, after the attack landed, the spell’s cooldown is also refunded. |
| how.unused | bit 5 to 7 | Unused; a server writes zero. |
Vectors (2)
Damage
What a server sends to say one unit hurt another. The header names the unit hurt, as target does.
In every range of this book
Command 100 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.
| Field | Type | What it is |
|---|---|---|
| how | 1-byte bits | |
| how.result | bit 0 to 2 | How 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.unused1 | bit 3 | Unused; a server writes zero. |
| how.kind | bit 4 to 5 | What sort of damage it is, which sets how a client colours the figure: 0 red, 1 purple and 2 white. |
| how.unused | bit 6 to 7 | Unused; a server writes zero. |
| target | u32 | The unit hurt. |
| source | u32 | The 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. |
| amount | f32 | How much. |
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.
In every range of this book
Command 105 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| target | u32 | The unit being attacked, or zero where it is attacking nothing. |
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.
In every range of this book
Command 192 on events, sent by the server, reliable.
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.
| Field | Type | What it is |
|---|---|---|
| target | u32 | The champion being attacked. |
Vectors (2)
HoverTarget
What a server sends to set the unit a unit’s hover indicator points at. The header names the unit.
In every range of this book
Command 245 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| target | u32 | The unit pointed at. |
Vectors (2)
HoverIndicator
What a server sends to turn a unit’s hover indicator on or off. The header names the unit.
In every range of this book
Command 246 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| enabled | u8 | 0 turns it off; any other value on. |
Vectors (2)
AttackIndicators
What a server sends to show or hide a unit’s attack indicators. The header names the unit.
In 3.6–3.15
Command 258 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit. |
| show | u8 | Whether the indicator shows. |
| minimap | u8 | Whether it shows on the minimap. |
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.
In 3.6–3.7
Command 257 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| champion | u32 | The champion. |
| mode | u32 | Which clicks attack the ground. A client tells no other nonzero value apart. Values: 0 off, 1 move, 2 select. |
Vectors (1)
In 3.8–3.11
Command 257 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| champion | u32 | The champion. |
| mode | u8 | Which clicks attack the ground. Values: 0 off, 1 move, 2 select, 3 moveAndSelect, 4 attackMove, 5 atCursor. |
Vectors (1)
In 3.12–3.15
Command 257 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| champion | u32 | The champion. |
| mode | u8 | Which clicks attack the ground. A client takes 3 as 2, and does nothing different for any other value. Values: 0 off, 1 move, 2 select. |
Vectors (1)
UnitDied
What a server sends to say a unit died, to everyone who can see it. The header names the unit this is about.
In every range of this book
Command 158 on events, sent by the server, reliable.
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.
| Field | Type | What it is |
|---|---|---|
| killer | u32 | The unit credited with the death. |
| damageType | u32 | Unused; a server writes zero. |
| damageSource | u32 | Unused; a server writes zero. |
| stayDown | f32 | How long the unit stays down, in seconds. |
| how | 1-byte bits | |
| how.standing | bit 0 | Set 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.unused | bit 1 to 7 | Unused; a server writes zero. |
| kind | u8 | Which kill a client announces for killer: zero a neutral monster’s, nonzero a minion’s. |
Vectors (1)
ChampionDied
What a server sends to say a champion died. The header names the unit this is about.
In every range of this book
Command 93 on events, sent by the server, reliable.
A client ignores it where killer is zero or the champion is already dead.
| Field | Type | What it is |
|---|---|---|
| killer | u32 | The unit credited with the death. Where it names the champion that died, a client still plays the death. |
| damageType | u32 | The kind of the killing blow. A client shows nothing for it. Values: 0 physical, 1 magic, 2 true, 3 mixed. |
| damageSource | u32 | Where 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. |
| stayDown | f32 | How long the champion stays down, in seconds. A client counts its respawn timer down from it. |
| how | 1-byte bits | |
| how.zombie | bit 0 | Set to leave the champion standing in a zombie state rather than dead: no death animation and no death screen. |
| how.unused | bit 1 to 7 | Unused; a server writes zero. |
| kind | u8 | It has no effect in this message. |
BuildingDied
What a server sends when a building is destroyed. The header names the unit this is about.
In every range of this book
Command 137 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| attacker | u32 | The unit that destroyed it. |
| lastChampion | u32 | The last champion to have harmed it. |
Vectors (3)
InhibitorDied
What a server sends when an inhibitor is destroyed. The header names the inhibitor.
In 3.01–3.03
Command 138 on events, sent by the server, reliable.
A client counts one more inhibitor down for the inhibitor’s side and announces it. Only an inhibitor takes it.
| Field | Type | What it is |
|---|---|---|
| attacker | u32 | A client reads it and does nothing with it. |
Vectors (1)
ForceDeath
What a server sends to put a unit into its death. The header names the unit.
In every range of this book
Command 27 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| duration | f32 | How long it stays down, in seconds. |
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.
In 3.12–3.15
Command 279 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| stayDown | f32 | How long it stays down, in seconds. |
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.
In every range of this book
Command 169 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| state | 1-byte bits | |
| state.enabled | bit 0 | 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. |
| state.unused | bit 1 to 7 | Unused; a server writes zero. |
Vectors (1)
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.
In 3.01
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.
| Field | Type | Present when | What it is |
|---|---|---|---|
| killer | u32 | The unit credited with the death. | |
| span | f32 | The time the entries below cover, in seconds. | |
| sourceType | u8 | What sort of source the killer was. | |
| blobLength | u32 | How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries. | |
| entryCount | u32 | How many entries follow. | |
| entries | count in entryCount × record | What happened to the unit before it died, packed one after another. | |
| entries[].time | f32 | When it happened, in match seconds. | |
| entries[].count | u16 | How many times. | |
| entries[].event | u8 | Which event, from 0 to 123, and so which fields follow. Values: 0 removed, 1 died, 3 championDied, 5 championKill, 7 singleKill, 8 doubleKill, 14 damageTaken, 15 damageDealt, 22 goldSpent, 23 goldEarned, 24 consumableBought, 25 criticalStrike, 28 inhibitorKilled, 29 inhibitorDied, 30 inhibitorRespawningSoon, 32 turretKilled, 33 turretDied, 34 minionKilled, 35 minionDenied, 36 monsterKilled, 37 largeMonsterKilled, 38 nexusKilled, 39 nexusDied, 40 heal, 41 healCast, 42 buff, 43 killingSpree, 50 killDuringSpree, 57 doubleKillDuringSpree, 58 tripleKillDuringSpree, 59 quadraKillDuringSpree, 62 deathAssist, 63 playerQuit, 64 playerLeft, 65 playerReconnected, 76 itemBought, 77 itemCallout, 78 itemChanged, 88 minionsSpawned, 89 welcome, 90 startNoticeTwo, 91 startNoticeThree, 95 scoreboardOpened, 116 dragonKilled, 117 dragonKilledWatched, 118 baronKilled, 119 baronKilledWatched, 120 spiderKilled, 121 spiderKilledWatched, 122 altarCaptured, 123 altarCapturedWatched. | |
| entries[].source | u32 | The unit that did it. | |
| entries[].target | u32 | The unit it was done to. | |
| entries[].stage | u8 | event = 4 | A client reads it and shows nothing for it; a server writes zero. |
| entries[].damage | record | event = 14 or 15 | How much harm, and from what. |
| entries[].damage.physical | f32 | Physical damage. | |
| entries[].damage.magical | f32 | Magical damage. | |
| entries[].damage.true | f32 | True damage. | |
| entries[].damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| entries[].damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].damage.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].spent | u32 | event = 22 | How much gold, as shown. |
| entries[].value | u32 | event = 24 or 76 or 78 or 122 or 123 | What it carries is not recorded for this range; a client does not show it. |
| entries[].critical | f32 | event = 25 | The critical strike’s damage, as shown. |
| entries[].spree | u32 | event = 43 | How many kills in a row, as shown. |
| entries[].earned | record | event = 23 | Gold earned. |
| entries[].earned.gold | f32 | How much gold, as shown. | |
| entries[].heal | record | event = 40 or 41 | How much health, and from what. |
| entries[].heal.amount | f32 | How much health, as shown. | |
| entries[].heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| entries[].heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].effect | record | event = 42 | The effect, and where it came from. |
| entries[].effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| entries[].effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].effect.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].assist | record | event = 62 | What one unit did toward a death. |
| entries[].assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| entries[].assist.physical | f32 | Physical damage it dealt. | |
| entries[].assist.magical | f32 | Magical damage it dealt. | |
| entries[].assist.true | f32 | True damage it dealt. | |
| entries[].assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].kill | record | event = 1 | The reward, and who shared it. |
| entries[].kill.gold | f32 | The gold the kill gave. | |
| entries[].kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| entries[].kill.assists | 12 × u32 | The units that helped, then zeros. | |
| entries[].monster | record | event = 116 or 117 or 118 or 119 or 120 or 121 | Who took the monster. |
| entries[].monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| entries[].monster.skin | i32 | Which look the killer wears. | |
| entries[].callout | record | event = 77 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| entries[].callout.item | u32 | The item, shown by name and number. | |
| entries[].callout.quantity | u32 | How many, shown as two digits. | |
| entries[].callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| entries[].callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| entries[].callout.side | u32 | The side of the player who pointed it out. |
Vectors (1)
In 3.02–3.03
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.
| Field | Type | Present when | What it is |
|---|---|---|---|
| killer | u32 | The unit credited with the death. | |
| span | f32 | The time the entries below cover, in seconds. | |
| sourceType | u8 | What sort of source the killer was. | |
| blobLength | u32 | How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries. | |
| entryCount | u32 | How many entries follow. | |
| entries | count in entryCount × record | What happened to the unit before it died, packed one after another. | |
| entries[].time | f32 | When it happened, in match seconds. | |
| entries[].count | u16 | How many times. | |
| entries[].event | u8 | Which event, from 0 to 132, and so which fields follow. Values: 0 removed, 1 died, 3 championDied, 5 championKill, 7 singleKill, 8 doubleKill, 14 damageTaken, 15 damageDealt, 22 goldSpent, 23 goldEarned, 24 consumableBought, 25 criticalStrike, 28 inhibitorKilled, 29 inhibitorDied, 30 inhibitorRespawningSoon, 32 turretKilled, 33 turretDied, 34 minionKilled, 35 minionDenied, 36 monsterKilled, 37 largeMonsterKilled, 38 nexusKilled, 39 nexusDied, 40 heal, 41 healCast, 42 buff, 43 killingSpree, 50 killDuringSpree, 57 doubleKillDuringSpree, 58 tripleKillDuringSpree, 59 quadraKillDuringSpree, 62 deathAssist, 63 playerQuit, 64 playerLeft, 65 playerReconnected, 76 itemBought, 77 itemCallout, 78 itemChanged, 97 minionsSpawned, 98 welcome, 99 startNoticeTwo, 100 startNoticeThree, 104 scoreboardOpened, 125 dragonKilled, 126 dragonKilledWatched, 127 baronKilled, 128 baronKilledWatched, 129 spiderKilled, 130 spiderKilledWatched, 131 altarCaptured, 132 altarCapturedWatched. | |
| entries[].source | u32 | The unit that did it. | |
| entries[].target | u32 | The unit it was done to. | |
| entries[].stage | u8 | event = 4 | A client reads it and shows nothing for it; a server writes zero. |
| entries[].damage | record | event = 14 or 15 | How much harm, and from what. |
| entries[].damage.physical | f32 | Physical damage. | |
| entries[].damage.magical | f32 | Magical damage. | |
| entries[].damage.true | f32 | True damage. | |
| entries[].damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| entries[].damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].damage.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].spent | u32 | event = 22 | How much gold, as shown. |
| entries[].value | u32 | event = 24 or 76 or 78 or 131 or 132 | What it carries is not recorded for this range; a client does not show it. |
| entries[].critical | f32 | event = 25 | The critical strike’s damage, as shown. |
| entries[].spree | u32 | event = 43 | How many kills in a row, as shown. |
| entries[].earned | record | event = 23 | Gold earned. |
| entries[].earned.gold | f32 | How much gold, as shown. | |
| entries[].heal | record | event = 40 or 41 | How much health, and from what. |
| entries[].heal.amount | f32 | How much health, as shown. | |
| entries[].heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| entries[].heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].effect | record | event = 42 | The effect, and where it came from. |
| entries[].effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| entries[].effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].effect.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].assist | record | event = 62 | What one unit did toward a death. |
| entries[].assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| entries[].assist.physical | f32 | Physical damage it dealt. | |
| entries[].assist.magical | f32 | Magical damage it dealt. | |
| entries[].assist.true | f32 | True damage it dealt. | |
| entries[].assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].kill | record | event = 1 | The reward, and who shared it. |
| entries[].kill.gold | f32 | The gold the kill gave. | |
| entries[].kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| entries[].kill.assists | 12 × u32 | The units that helped, then zeros. | |
| entries[].monster | record | event = 125 or 126 or 127 or 128 or 129 or 130 | Who took the monster. |
| entries[].monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| entries[].monster.skin | i32 | Which look the killer wears. | |
| entries[].callout | record | event = 77 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| entries[].callout.item | u32 | The item, shown by name and number. | |
| entries[].callout.quantity | u32 | How many, shown as two digits. | |
| entries[].callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| entries[].callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| entries[].callout.side | u32 | The side of the player who pointed it out. |
Vectors (1)
In 3.04–3.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.
| Field | Type | Present when | What it is |
|---|---|---|---|
| killer | u32 | The unit credited with the death. | |
| span | f32 | The time the entries below cover, in seconds. | |
| sourceType | u8 | What sort of source the killer was. | |
| blobLength | u32 | How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries. | |
| entryCount | u32 | How many entries follow. | |
| entries | count in entryCount × record | What happened to the unit before it died, packed one after another. | |
| entries[].time | f32 | When it happened, in match seconds. | |
| entries[].count | u16 | How many times. | |
| entries[].event | u8 | Which event, from 0 to 135, 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 killingSpree, 51 killDuringSpree, 58 doubleKillDuringSpree, 59 tripleKillDuringSpree, 60 quadraKillDuringSpree, 63 deathAssist, 64 playerQuit, 65 playerLeft, 66 playerReconnected, 77 itemBought, 78 itemCallout, 79 itemChanged, 98 minionsSpawned, 99 welcome, 100 startNoticeTwo, 101 startNoticeThree, 105 scoreboardOpened, 126 dragonKilled, 127 dragonKilledWatched, 128 baronKilled, 129 baronKilledWatched, 130 spiderKilled, 131 spiderKilledWatched, 132 altarCaptured, 133 altarCapturedWatched, 134 wardPlaced, 135 wardKilled. | |
| entries[].source | u32 | The unit that did it. | |
| entries[].target | u32 | The unit it was done to. | |
| entries[].stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| entries[].damage | record | event = 15 or 16 | How much harm, and from what. |
| entries[].damage.physical | f32 | Physical damage. | |
| entries[].damage.magical | f32 | Magical damage. | |
| entries[].damage.true | f32 | True damage. | |
| entries[].damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| entries[].damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].damage.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].spent | u32 | event = 23 | How much gold, as shown. |
| entries[].value | u32 | event = 25 or 77 or 79 or 132 or 133 | What it carries is not recorded for this range; a client does not show it. |
| entries[].critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| entries[].spree | u32 | event = 44 | How many kills in a row, as shown. |
| entries[].earned | record | event = 24 | Gold earned. |
| entries[].earned.gold | f32 | How much gold, as shown. | |
| entries[].heal | record | event = 41 or 42 | How much health, and from what. |
| entries[].heal.amount | f32 | How much health, as shown. | |
| entries[].heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| entries[].heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].effect | record | event = 43 | The effect, and where it came from. |
| entries[].effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| entries[].effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].effect.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].assist | record | event = 63 | What one unit did toward a death. |
| entries[].assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| entries[].assist.physical | f32 | Physical damage it dealt. | |
| entries[].assist.magical | f32 | Magical damage it dealt. | |
| entries[].assist.true | f32 | True damage it dealt. | |
| entries[].assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].kill | record | event = 1 or 2 or 34 or 126 or 127 or 128 or 129 or 130 or 131 | The reward, and who shared it. |
| entries[].kill.gold | f32 | The gold the kill gave. | |
| entries[].kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| entries[].kill.assists | 12 × u32 | The units that helped, then zeros. | |
| entries[].monster | record | event = 126 or 127 or 128 or 129 or 130 or 131 | Who took the monster. |
| entries[].monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| entries[].monster.skin | i32 | Which look the killer wears. | |
| entries[].callout | record | event = 78 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| entries[].callout.item | u32 | The item, shown by name and number. | |
| entries[].callout.quantity | u32 | How many, shown as two digits. | |
| entries[].callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| entries[].callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| entries[].callout.side | u32 | The side of the player who pointed it out. |
Vectors (1)
In 3.6–3.7
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.
| Field | Type | Present when | What it is |
|---|---|---|---|
| killer | u32 | The unit credited with the death. | |
| span | f32 | The time the entries below cover, in seconds. | |
| sourceType | u8 | What sort of source the killer was. | |
| blobLength | u32 | How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries. | |
| entryCount | u32 | How many entries follow. | |
| entries | count in entryCount × record | What happened to the unit before it died, packed one after another. | |
| entries[].time | f32 | When it happened, in match seconds. | |
| entries[].count | u16 | How many times. | |
| entries[].event | u8 | Which event, from 0 to 138, 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 101 minionsSpawned, 102 welcome, 103 startNoticeTwo, 104 startNoticeThree, 108 scoreboardOpened, 129 dragonKilled, 130 dragonKilledWatched, 131 baronKilled, 132 baronKilledWatched, 133 spiderKilled, 134 spiderKilledWatched, 135 altarCaptured, 136 altarCapturedWatched, 137 wardPlaced, 138 wardKilled. | |
| entries[].source | u32 | The unit that did it. | |
| entries[].target | u32 | The unit it was done to. | |
| entries[].stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| entries[].damage | record | event = 15 or 16 | How much harm, and from what. |
| entries[].damage.physical | f32 | Physical damage. | |
| entries[].damage.magical | f32 | Magical damage. | |
| entries[].damage.true | f32 | True damage. | |
| entries[].damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| entries[].damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].damage.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].spent | u32 | event = 23 | How much gold, as shown. |
| entries[].value | u32 | event = 25 or 78 or 79 or 80 or 82 or 135 or 136 | What it carries is not recorded for this range; a client does not show it. |
| entries[].critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| entries[].spree | u32 | event = 45 | How many kills in a row, as shown. |
| entries[].earned | record | event = 24 | Gold earned. |
| entries[].earned.gold | f32 | How much gold, as shown. | |
| entries[].earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal | record | event = 41 or 42 | How much health, and from what. |
| entries[].heal.amount | f32 | How much health, as shown. | |
| entries[].heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| entries[].heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].effect | record | event = 43 or 44 | The effect, and where it came from. |
| entries[].effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| entries[].effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].effect.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].extra | bytes, 8 | event = 44 | What it carries is not recorded for this range; a server writes zero. |
| entries[].assist | record | event = 64 | What one unit did toward a death. |
| entries[].assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| entries[].assist.physical | f32 | Physical damage it dealt. | |
| entries[].assist.magical | f32 | Magical damage it dealt. | |
| entries[].assist.true | f32 | True damage it dealt. | |
| entries[].assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].kill | record | event = 1 or 2 or 34 or 37 or 129 or 130 or 131 or 132 or 133 or 134 | The reward, and who shared it. |
| entries[].kill.gold | f32 | The gold the kill gave. | |
| entries[].kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| entries[].kill.assists | 12 × u32 | The units that helped, then zeros. | |
| entries[].monster | record | event = 37 or 129 or 130 or 131 or 132 or 133 or 134 | Who took the monster. |
| entries[].monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| entries[].monster.skin | i32 | Which look the killer wears. | |
| entries[].monster.side | u32 | The side that took it. | |
| entries[].callout | record | event = 81 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| entries[].callout.item | u32 | The item, shown by name and number. | |
| entries[].callout.quantity | u32 | How many, shown as two digits. | |
| entries[].callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| entries[].callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| entries[].callout.side | u32 | The side of the player who pointed it out. |
Vectors (1)
In 3.8
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.
| Field | Type | Present when | What it is |
|---|---|---|---|
| killer | u32 | The unit credited with the death. | |
| span | f32 | The time the entries below cover, in seconds. | |
| sourceType | u8 | What sort of source the killer was. | |
| blobLength | u32 | How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries. | |
| entryCount | u32 | How many entries follow. | |
| entries | count in entryCount × record | What happened to the unit before it died, packed one after another. | |
| entries[].time | f32 | When it happened, in match seconds. | |
| entries[].count | u16 | How many times. | |
| entries[].event | u8 | Which event, from 0 to 140, 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 101 minionsSpawned, 102 welcome, 103 startNoticeTwo, 104 startNoticeThree, 108 scoreboardOpened, 131 dragonKilled, 132 dragonKilledWatched, 133 baronKilled, 134 baronKilledWatched, 135 spiderKilled, 136 spiderKilledWatched, 137 altarCaptured, 138 altarCapturedWatched, 139 wardPlaced, 140 wardKilled. | |
| entries[].source | u32 | The unit that did it. | |
| entries[].target | u32 | The unit it was done to. | |
| entries[].stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| entries[].damage | record | event = 15 or 16 | How much harm, and from what. |
| entries[].damage.physical | f32 | Physical damage. | |
| entries[].damage.magical | f32 | Magical damage. | |
| entries[].damage.true | f32 | True damage. | |
| entries[].damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| entries[].damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].damage.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].spent | u32 | event = 23 | How much gold, as shown. |
| entries[].value | u32 | event = 25 or 78 or 79 or 80 or 82 or 137 or 138 | What it carries is not recorded for this range; a client does not show it. |
| entries[].critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| entries[].spree | u32 | event = 45 | How many kills in a row, as shown. |
| entries[].earned | record | event = 24 | Gold earned. |
| entries[].earned.gold | f32 | How much gold, as shown. | |
| entries[].earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal | record | event = 41 or 42 | How much health, and from what. |
| entries[].heal.amount | f32 | How much health, as shown. | |
| entries[].heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| entries[].heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].effect | record | event = 43 or 44 | The effect, and where it came from. |
| entries[].effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| entries[].effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].effect.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].extra | bytes, 8 | event = 44 | What it carries is not recorded for this range; a server writes zero. |
| entries[].assist | record | event = 64 | What one unit did toward a death. |
| entries[].assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| entries[].assist.physical | f32 | Physical damage it dealt. | |
| entries[].assist.magical | f32 | Magical damage it dealt. | |
| entries[].assist.true | f32 | True damage it dealt. | |
| entries[].assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].kill | record | event = 1 or 2 or 34 or 37 or 131 or 132 or 133 or 134 or 135 or 136 | The reward, and who shared it. |
| entries[].kill.gold | f32 | The gold the kill gave. | |
| entries[].kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| entries[].kill.assists | 12 × u32 | The units that helped, then zeros. | |
| entries[].monster | record | event = 37 or 131 or 132 or 133 or 134 or 135 or 136 | Who took the monster. |
| entries[].monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| entries[].monster.skin | i32 | Which look the killer wears. | |
| entries[].monster.side | u32 | The side that took it. | |
| entries[].callout | record | event = 81 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| entries[].callout.item | u32 | The item, shown by name and number. | |
| entries[].callout.quantity | u32 | How many, shown as two digits. | |
| entries[].callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| entries[].callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| entries[].callout.side | u32 | The side of the player who pointed it out. |
Vectors (1)
In 3.9
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.
| Field | Type | Present when | What it is |
|---|---|---|---|
| killer | u32 | The unit credited with the death. | |
| span | f32 | The time the entries below cover, in seconds. | |
| sourceType | u8 | What sort of source the killer was. | |
| blobLength | u32 | How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries. | |
| entryCount | u32 | How many entries follow. | |
| entries | count in entryCount × record | What happened to the unit before it died, packed one after another. | |
| entries[].time | f32 | When it happened, in match seconds. | |
| entries[].count | u16 | How many times. | |
| entries[].event | u8 | Which event, from 0 to 141, 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 83 undoChanged, 102 minionsSpawned, 103 welcome, 104 startNoticeTwo, 105 startNoticeThree, 109 scoreboardOpened, 132 dragonKilled, 133 dragonKilledWatched, 134 baronKilled, 135 baronKilledWatched, 136 spiderKilled, 137 spiderKilledWatched, 138 altarCaptured, 139 altarCapturedWatched, 140 wardPlaced, 141 wardKilled. | |
| entries[].source | u32 | The unit that did it. | |
| entries[].target | u32 | The unit it was done to. | |
| entries[].stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| entries[].damage | record | event = 15 or 16 | How much harm, and from what. |
| entries[].damage.physical | f32 | Physical damage. | |
| entries[].damage.magical | f32 | Magical damage. | |
| entries[].damage.true | f32 | True damage. | |
| entries[].damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].damage.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].spent | u32 | event = 23 | How much gold, as shown. |
| entries[].value | u32 | event = 25 or 78 or 79 or 80 or 82 or 83 or 138 or 139 | What it carries is not recorded for this range; a client does not show it. |
| entries[].critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| entries[].spree | u32 | event = 45 | How many kills in a row, as shown. |
| entries[].earned | record | event = 24 | Gold earned. |
| entries[].earned.gold | f32 | How much gold, as shown. | |
| entries[].earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal | record | event = 41 or 42 | How much health, and from what. |
| entries[].heal.amount | f32 | How much health, as shown. | |
| entries[].heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].effect | record | event = 43 or 44 | The effect, and where it came from. |
| entries[].effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].effect.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].extra | bytes, 8 | event = 44 | What it carries is not recorded for this range; a server writes zero. |
| entries[].assist | record | event = 64 | What one unit did toward a death. |
| entries[].assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| entries[].assist.physical | f32 | Physical damage it dealt. | |
| entries[].assist.magical | f32 | Magical damage it dealt. | |
| entries[].assist.true | f32 | True damage it dealt. | |
| entries[].assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].kill | record | event = 1 or 2 or 34 or 37 or 132 or 133 or 134 or 135 or 136 or 137 | The reward, and who shared it. |
| entries[].kill.gold | f32 | The gold the kill gave. | |
| entries[].kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| entries[].kill.assists | 12 × u32 | The units that helped, then zeros. | |
| entries[].monster | record | event = 37 or 132 or 133 or 134 or 135 or 136 or 137 | Who took the monster. |
| entries[].monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| entries[].monster.skin | i32 | Which look the killer wears. | |
| entries[].monster.side | u32 | The side that took it. | |
| entries[].callout | record | event = 81 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| entries[].callout.item | u32 | The item, shown by name and number. | |
| entries[].callout.quantity | u32 | How many, shown as two digits. | |
| entries[].callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| entries[].callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| entries[].callout.side | u32 | The side of the player who pointed it out. |
Vectors (1)
In 3.10
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.
| Field | Type | Present when | What it is |
|---|---|---|---|
| killer | u32 | The unit credited with the death. | |
| span | f32 | The time the entries below cover, in seconds. | |
| sourceType | u8 | What sort of source the killer was. | |
| blobLength | u32 | How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries. | |
| entryCount | u32 | How many entries follow. | |
| entries | count in entryCount × record | What happened to the unit before it died, packed one after another. | |
| entries[].time | f32 | When it happened, in match seconds. | |
| entries[].count | u16 | How many times. | |
| entries[].event | u8 | Which event, from 0 to 141, 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 83 undoChanged, 102 minionsSpawned, 103 welcome, 104 startNoticeTwo, 105 startNoticeThree, 109 scoreboardOpened, 132 dragonKilled, 133 dragonKilledWatched, 134 baronKilled, 135 baronKilledWatched, 136 spiderKilled, 137 spiderKilledWatched, 138 altarCaptured, 139 altarCapturedWatched, 140 wardPlaced, 141 wardKilled. | |
| entries[].source | u32 | The unit that did it. | |
| entries[].target | u32 | The unit it was done to. | |
| entries[].stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| entries[].damage | record | event = 15 or 16 | How much harm, and from what. |
| entries[].damage.physical | f32 | Physical damage. | |
| entries[].damage.magical | f32 | Magical damage. | |
| entries[].damage.true | f32 | True damage. | |
| entries[].damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].damage.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].spent | u32 | event = 23 | How much gold, as shown. |
| entries[].value | u32 | event = 25 or 78 or 79 or 80 or 82 or 83 or 138 or 139 | What it carries is not recorded for this range; a client does not show it. |
| entries[].critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| entries[].spree | u32 | event = 45 | How many kills in a row, as shown. |
| entries[].earned | record | event = 24 | Gold earned. |
| entries[].earned.gold | f32 | How much gold, as shown. | |
| entries[].earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal | record | event = 41 or 42 | How much health, and from what. |
| entries[].heal.amount | f32 | How much health, as shown. | |
| entries[].heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].effect | record | event = 43 or 44 | The effect, and where it came from. |
| entries[].effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].effect.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].extra | bytes, 8 | event = 44 | What it carries is not recorded for this range; a server writes zero. |
| entries[].assist | record | event = 64 | What one unit did toward a death. |
| entries[].assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| entries[].assist.physical | f32 | Physical damage it dealt. | |
| entries[].assist.magical | f32 | Magical damage it dealt. | |
| entries[].assist.true | f32 | True damage it dealt. | |
| entries[].assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].kill | record | event = 1 or 2 or 34 or 37 or 132 or 133 or 134 or 135 or 136 or 137 | The reward, and who shared it. |
| entries[].kill.gold | f32 | The gold the kill gave. | |
| entries[].kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| entries[].kill.assists | 12 × u32 | The units that helped, then zeros. | |
| entries[].monster | record | event = 37 or 132 or 133 or 134 or 135 or 136 or 137 | Who took the monster. |
| entries[].monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| entries[].monster.skin | i32 | Which look the killer wears. | |
| entries[].monster.side | u32 | The side that took it. | |
| entries[].callout | record | event = 81 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| entries[].callout.item | u32 | The item, shown by name and number. | |
| entries[].callout.quantity | u32 | How many, shown as two digits. | |
| entries[].callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| entries[].callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| entries[].callout.side | u32 | The side of the player who pointed it out. |
Vectors (1)
In 3.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.
| Field | Type | Present when | What it is |
|---|---|---|---|
| killer | u32 | The unit credited with the death. | |
| span | f32 | The time the entries below cover, in seconds. | |
| sourceType | u8 | What sort of source the killer was. | |
| blobLength | u32 | How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries. | |
| entryCount | u32 | How many entries follow. | |
| entries | count in entryCount × record | What happened to the unit before it died, packed one after another. | |
| entries[].time | f32 | When it happened, in match seconds. | |
| entries[].count | u16 | How many times. | |
| entries[].event | u8 | Which event, from 0 to 144, and so which fields follow. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 7 championKillUnseen, 9 singleKill, 10 doubleKill, 16 damageTaken, 17 damageDealt, 24 goldSpent, 25 goldEarned, 26 consumableBought, 27 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 nexusKilled, 43 nexusDied, 44 heal, 45 healCast, 46 buff, 47 crowdControl, 48 killingSpree, 55 killDuringSpree, 62 doubleKillDuringSpree, 63 tripleKillDuringSpree, 64 quadraKillDuringSpree, 67 deathAssist, 68 playerQuit, 69 playerLeft, 70 playerReconnected, 81 itemBought, 82 itemSold, 83 itemRemoved, 84 itemCallout, 85 itemChanged, 86 undoChanged, 105 minionsSpawned, 106 welcome, 107 startNoticeTwo, 108 startNoticeThree, 112 scoreboardOpened, 135 dragonKilled, 136 dragonKilledWatched, 137 baronKilled, 138 baronKilledWatched, 139 spiderKilled, 140 spiderKilledWatched, 141 altarCaptured, 142 altarCapturedWatched, 143 wardPlaced, 144 wardKilled. | |
| entries[].source | u32 | The unit that did it. | |
| entries[].target | u32 | The unit it was done to. | |
| entries[].stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| entries[].damage | record | event = 16 or 17 | How much harm, and from what. |
| entries[].damage.physical | f32 | Physical damage. | |
| entries[].damage.magical | f32 | Magical damage. | |
| entries[].damage.true | f32 | True damage. | |
| entries[].damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].damage.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].spent | u32 | event = 24 | How much gold, as shown. |
| entries[].value | u32 | event = 26 or 81 or 82 or 83 or 85 or 86 or 141 or 142 | What it carries is not recorded for this range; a client does not show it. |
| entries[].critical | f32 | event = 27 | The critical strike’s damage, as shown. |
| entries[].spree | u32 | event = 48 | How many kills in a row, as shown. |
| entries[].earned | record | event = 25 | Gold earned. |
| entries[].earned.gold | f32 | How much gold, as shown. | |
| entries[].earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal | record | event = 44 or 45 | How much health, and from what. |
| entries[].heal.amount | f32 | How much health, as shown. | |
| entries[].heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].effect | record | event = 46 or 47 | The effect, and where it came from. |
| entries[].effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].effect.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].extra | bytes, 8 | event = 47 | What it carries is not recorded for this range; a server writes zero. |
| entries[].assist | record | event = 67 | What one unit did toward a death. |
| entries[].assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| entries[].assist.physical | f32 | Physical damage it dealt. | |
| entries[].assist.magical | f32 | Magical damage it dealt. | |
| entries[].assist.true | f32 | True damage it dealt. | |
| entries[].assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].kill | record | event = 1 or 2 or 36 or 37 or 40 or 135 or 136 or 137 or 138 or 139 or 140 | The reward, and who shared it. |
| entries[].kill.gold | f32 | The gold the kill gave. | |
| entries[].kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| entries[].kill.assists | 12 × u32 | The units that helped, then zeros. | |
| entries[].monster | record | event = 40 or 135 or 136 or 137 or 138 or 139 or 140 | Who took the monster. |
| entries[].monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| entries[].monster.skin | i32 | Which look the killer wears. | |
| entries[].monster.side | u32 | The side that took it. | |
| entries[].callout | record | event = 84 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| entries[].callout.item | u32 | The item, shown by name and number. | |
| entries[].callout.quantity | u32 | How many, shown as two digits. | |
| entries[].callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| entries[].callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| entries[].callout.side | u32 | The side of the player who pointed it out. |
Vectors (1)
In 3.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.
| Field | Type | Present when | What it is |
|---|---|---|---|
| killer | u32 | The unit credited with the death. | |
| span | f32 | The time the entries below cover, in seconds. | |
| sourceType | u8 | What sort of source the killer was. | |
| blobLength | u32 | How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries. | |
| entryCount | u32 | How many entries follow. | |
| entries | count in entryCount × record | What happened to the unit before it died, packed one after another. | |
| entries[].time | f32 | When it happened, in match seconds. | |
| entries[].count | u16 | How many times. | |
| entries[].event | u8 | Which event, from 0 to 148, and so which fields follow. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 7 championKillUnseen, 9 singleKill, 10 doubleKill, 16 damageTaken, 17 damageDealt, 24 goldSpent, 25 goldEarned, 26 consumableBought, 27 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 nexusKilled, 43 nexusDied, 44 heal, 45 healCast, 46 buff, 47 crowdControl, 48 killingSpree, 55 killDuringSpree, 62 doubleKillDuringSpree, 63 tripleKillDuringSpree, 64 quadraKillDuringSpree, 67 deathAssist, 68 playerQuit, 69 playerLeft, 70 playerReconnected, 85 itemBought, 86 itemSold, 87 itemRemoved, 88 itemCallout, 89 itemChanged, 90 undoChanged, 109 minionsSpawned, 110 welcome, 111 startNoticeTwo, 112 startNoticeThree, 116 scoreboardOpened, 139 dragonKilled, 140 dragonKilledWatched, 141 baronKilled, 142 baronKilledWatched, 143 spiderKilled, 144 spiderKilledWatched, 145 altarCaptured, 146 altarCapturedWatched, 147 wardPlaced, 148 wardKilled. | |
| entries[].source | u32 | The unit that did it. | |
| entries[].target | u32 | The unit it was done to. | |
| entries[].stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| entries[].damage | record | event = 16 or 17 | How much harm, and from what. |
| entries[].damage.physical | f32 | Physical damage. | |
| entries[].damage.magical | f32 | Magical damage. | |
| entries[].damage.true | f32 | True damage. | |
| entries[].damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].damage.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].spent | u32 | event = 24 | How much gold, as shown. |
| entries[].value | u32 | event = 26 or 85 or 86 or 87 or 89 or 90 or 145 or 146 | What it carries is not recorded for this range; a client does not show it. |
| entries[].critical | f32 | event = 27 | The critical strike’s damage, as shown. |
| entries[].spree | u32 | event = 48 | How many kills in a row, as shown. |
| entries[].earned | record | event = 25 | Gold earned. |
| entries[].earned.gold | f32 | How much gold, as shown. | |
| entries[].earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal | record | event = 44 or 45 | How much health, and from what. |
| entries[].heal.amount | f32 | How much health, as shown. | |
| entries[].heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].effect | record | event = 46 or 47 | The effect, and where it came from. |
| entries[].effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].effect.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].extra | bytes, 8 | event = 47 | What it carries is not recorded for this range; a server writes zero. |
| entries[].assist | record | event = 67 | What one unit did toward a death. |
| entries[].assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| entries[].assist.physical | f32 | Physical damage it dealt. | |
| entries[].assist.magical | f32 | Magical damage it dealt. | |
| entries[].assist.true | f32 | True damage it dealt. | |
| entries[].assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].kill | record | event = 1 or 2 or 36 or 37 or 38 or 40 or 139 or 140 or 141 or 142 or 143 or 144 | The reward, and who shared it. |
| entries[].kill.gold | f32 | The gold the kill gave. | |
| entries[].kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| entries[].kill.assists | 12 × u32 | The units that helped, then zeros. | |
| entries[].monster | record | event = 40 or 139 or 140 or 141 or 142 or 143 or 144 | Who took the monster. |
| entries[].monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| entries[].monster.skin | i32 | Which look the killer wears. | |
| entries[].monster.side | u32 | The side that took it. | |
| entries[].callout | record | event = 88 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| entries[].callout.item | u32 | The item, shown by name and number. | |
| entries[].callout.quantity | u32 | How many, shown as two digits. | |
| entries[].callout.first | bytes, 24 | As 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.second | bytes, 24 | As 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.side | u32 | The side of the player who pointed it out. |
Vectors (1)
In 3.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.
| Field | Type | Present when | What it is |
|---|---|---|---|
| killer | u32 | The unit credited with the death. | |
| span | f32 | The time the entries below cover, in seconds. | |
| sourceType | u8 | What sort of source the killer was. | |
| blobLength | u32 | How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries. | |
| entryCount | u32 | How many entries follow. | |
| entries | count in entryCount × record | What happened to the unit before it died, packed one after another. | |
| entries[].time | f32 | When it happened, in match seconds. | |
| entries[].count | u16 | How many times. | |
| entries[].event | u8 | Which event, from 0 to 151, 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, 110 minionsSpawned, 111 welcome, 112 startNoticeTwo, 113 startNoticeThree, 117 scoreboardOpened, 140 dragonKilled, 141 dragonKilledWatched, 142 dragonStolen, 143 baronKilled, 144 baronKilledWatched, 145 baronStolen, 146 spiderKilled, 147 spiderKilledWatched, 148 altarCaptured, 149 altarCapturedWatched, 150 wardPlaced, 151 wardKilled. | |
| entries[].source | u32 | The unit that did it. | |
| entries[].target | u32 | The unit it was done to. | |
| entries[].stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| entries[].damage | record | event = 15 or 16 | How much harm, and from what. |
| entries[].damage.physical | f32 | Physical damage. | |
| entries[].damage.magical | f32 | Magical damage. | |
| entries[].damage.true | f32 | True damage. | |
| entries[].damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].damage.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].spent | u32 | event = 23 | How much gold, as shown. |
| entries[].value | u32 | event = 25 or 86 or 87 or 88 or 90 or 91 or 148 or 149 | What it carries is not recorded for this range; a client does not show it. |
| entries[].critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| entries[].spree | u32 | event = 49 | How many kills in a row, as shown. |
| entries[].earned | record | event = 24 | Gold earned. |
| entries[].earned.gold | f32 | How much gold, as shown. | |
| entries[].earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal | record | event = 45 or 46 | How much health, and from what. |
| entries[].heal.amount | f32 | How much health, as shown. | |
| entries[].heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].effect | record | event = 47 or 48 | The effect, and where it came from. |
| entries[].effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].effect.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].extra | bytes, 8 | event = 48 | What it carries is not recorded for this range; a server writes zero. |
| entries[].assist | record | event = 68 | What one unit did toward a death. |
| entries[].assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| entries[].assist.physical | f32 | Physical damage it dealt. | |
| entries[].assist.magical | f32 | Magical damage it dealt. | |
| entries[].assist.true | f32 | True damage it dealt. | |
| entries[].assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].kill | record | event = 1 or 2 or 35 or 36 or 37 or 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 | The reward, and who shared it. |
| entries[].kill.gold | f32 | The gold the kill gave. | |
| entries[].kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| entries[].kill.assists | 12 × u32 | The units that helped, then zeros. | |
| entries[].monster | record | event = 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 | Who took the monster. |
| entries[].monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| entries[].monster.skin | i32 | Which look the killer wears. | |
| entries[].monster.side | u32 | The side that took it. | |
| entries[].callout | record | event = 89 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| entries[].callout.item | u32 | The item, shown by name and number. | |
| entries[].callout.quantity | u32 | How many, shown as two digits. | |
| entries[].callout.first | bytes, 24 | As 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.second | bytes, 24 | As 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.side | u32 | The side of the player who pointed it out. |
Vectors (1)
In 3.14
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.
| Field | Type | Present when | What it is |
|---|---|---|---|
| killer | u32 | The unit credited with the death. | |
| span | f32 | The time the entries below cover, in seconds. | |
| sourceType | u8 | What sort of source the killer was. | |
| blobLength | u32 | How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries. | |
| entryCount | u32 | How many entries follow. | |
| entries | count in entryCount × record | What happened to the unit before it died, packed one after another. | |
| entries[].time | f32 | When it happened, in match seconds. | |
| entries[].count | u16 | How many times. | |
| entries[].event | u8 | Which event, from 0 to 152, 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, 141 dragonKilled, 142 dragonKilledWatched, 143 dragonStolen, 144 baronKilled, 145 baronKilledWatched, 146 baronStolen, 147 spiderKilled, 148 spiderKilledWatched, 149 altarCaptured, 150 altarCapturedWatched, 151 wardPlaced, 152 wardKilled. | |
| entries[].source | u32 | The unit that did it. | |
| entries[].target | u32 | The unit it was done to. | |
| entries[].stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| entries[].damage | record | event = 15 or 16 | How much harm, and from what. |
| entries[].damage.physical | f32 | Physical damage. | |
| entries[].damage.magical | f32 | Magical damage. | |
| entries[].damage.true | f32 | True damage. | |
| entries[].damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].damage.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].spent | u32 | event = 23 | How much gold, as shown. |
| entries[].value | u32 | event = 25 or 86 or 87 or 88 or 90 or 91 or 149 or 150 | What it carries is not recorded for this range; a client does not show it. |
| entries[].critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| entries[].spree | u32 | event = 49 | How many kills in a row, as shown. |
| entries[].earned | record | event = 24 | Gold earned. |
| entries[].earned.gold | f32 | How much gold, as shown. | |
| entries[].earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].earned.subDetail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal | record | event = 45 or 46 | How much health, and from what. |
| entries[].heal.amount | f32 | How much health, as shown. | |
| entries[].heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].effect | record | event = 47 or 48 | The effect, and where it came from. |
| entries[].effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].effect.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].extra | bytes, 8 | event = 48 | What it carries is not recorded for this range; a server writes zero. |
| entries[].assist | record | event = 68 | What one unit did toward a death. |
| entries[].assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| entries[].assist.physical | f32 | Physical damage it dealt. | |
| entries[].assist.magical | f32 | Magical damage it dealt. | |
| entries[].assist.true | f32 | True damage it dealt. | |
| entries[].assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].kill | record | event = 1 or 2 or 35 or 36 or 37 or 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 | The reward, and who shared it. |
| entries[].kill.gold | f32 | The gold the kill gave. | |
| entries[].kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| entries[].kill.assists | 12 × u32 | The units that helped, then zeros. | |
| entries[].monster | record | event = 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 | Who took the monster. |
| entries[].monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| entries[].monster.skin | i32 | Which look the killer wears. | |
| entries[].monster.side | u32 | The side that took it. | |
| entries[].callout | record | event = 89 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| entries[].callout.item | u32 | The item, shown by name and number. | |
| entries[].callout.quantity | u32 | How many, shown as two digits. | |
| entries[].callout.first | bytes, 24 | As 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.second | bytes, 24 | As 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.side | u32 | The side of the player who pointed it out. | |
| entries[].substitution | record | event = 92 | An item the shop shows another in place of. |
| entries[].substitution.enabled | u8 | Nonzero to show the substitute in place of the original from now on; zero to stop. | |
| entries[].substitution.original | u32 | The item replaced. | |
| entries[].substitution.substitute | u32 | The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original. |
Vectors (1)
In 3.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.
| Field | Type | Present when | What it is |
|---|---|---|---|
| killer | u32 | The unit credited with the death. | |
| span | f32 | The time the entries below cover, in seconds. | |
| sourceType | u8 | What sort of source the killer was. | |
| blobLength | u32 | How many bytes the entries below take together. A client reads exactly that many; zero, or a value above 2147483647, carries no entries. | |
| entryCount | u32 | How many entries follow. | |
| entries | count in entryCount × record | What happened to the unit before it died, packed one after another. | |
| entries[].time | f32 | When it happened, in match seconds. | |
| entries[].count | u16 | How many times. | |
| entries[].event | u8 | Which event, from 0 to 154, 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[].source | u32 | The unit that did it. | |
| entries[].target | u32 | The unit it was done to. | |
| entries[].stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| entries[].damage | record | event = 15 or 16 | How much harm, and from what. |
| entries[].damage.physical | f32 | Physical damage. | |
| entries[].damage.magical | f32 | Magical damage. | |
| entries[].damage.true | f32 | True damage. | |
| entries[].damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].damage.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].spent | u32 | event = 23 | How much gold, as shown. |
| entries[].value | u32 | event = 25 or 86 or 87 or 88 or 90 or 91 or 151 or 152 | What it carries is not recorded for this range; a client does not show it. |
| entries[].critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| entries[].spree | u32 | event = 49 | How many kills in a row, as shown. |
| entries[].earned | record | event = 24 | Gold earned. |
| entries[].earned.gold | f32 | How much gold, as shown. | |
| entries[].earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].earned.subDetail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal | record | event = 45 or 46 | How much health, and from what. |
| entries[].heal.amount | f32 | How much health, as shown. | |
| entries[].heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].heal.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].effect | record | event = 47 or 48 | The effect, and where it came from. |
| entries[].effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| entries[].effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| entries[].effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| entries[].effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].effect.parent | 2-byte bits | Where the spell or effect came from. | |
| entries[].effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| entries[].effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| entries[].effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| entries[].effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| entries[].extra | bytes, 8 | event = 48 | What it carries is not recorded for this range; a server writes zero. |
| entries[].assist | record | event = 68 | What one unit did toward a death. |
| entries[].assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| entries[].assist.physical | f32 | Physical damage it dealt. | |
| entries[].assist.magical | f32 | Magical damage it dealt. | |
| entries[].assist.true | f32 | True damage it dealt. | |
| entries[].assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| entries[].kill | record | 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 | The reward, and who shared it. |
| entries[].kill.gold | f32 | The gold the kill gave. | |
| entries[].kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| entries[].kill.assists | 12 × u32 | The units that helped, then zeros. | |
| entries[].monster | record | event = 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 | Who took the monster. |
| entries[].monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| entries[].monster.skin | i32 | Which look the killer wears. | |
| entries[].monster.side | u32 | The side that took it. | |
| entries[].callout | record | event = 89 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| entries[].callout.item | u32 | The item, shown by name and number. | |
| entries[].callout.quantity | u32 | How many, shown as two digits. | |
| entries[].callout.first | bytes, 24 | As 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.second | bytes, 24 | As 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.side | u32 | The side of the player who pointed it out. | |
| entries[].substitution | record | event = 92 | An item the shop shows another in place of. |
| entries[].substitution.enabled | u8 | Nonzero to show the substitute in place of the original from now on; zero to stop. | |
| entries[].substitution.original | u32 | The item replaced. | |
| entries[].substitution.substitute | u32 | The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original. |
Vectors (1)
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.
In every range of this book
Command 42 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| state | 2-byte bits | |
| state.duration | bit 0 to 14 | How long the state lasts, in seconds; zero where alive is set. |
| state.alive | bit 15 | Set while the inhibitor stands, with duration zero; clear while a state lasts the duration given. |
Revived
What a server sends to put a champion back on the field. The header names the unit this is about.
In 3.01–3.8
Command 46 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| atX | f32 | Where it returns, along one ground axis, in world units. |
| atY | f32 | Where it returns, in height, in world units. A client places it there as given. |
| atZ | f32 | Where it returns, along the other ground axis, in world units. |
| resource | f32 | What its spendable resource stands at on return. |
Vectors (1)
In 3.9–3.15
Command 46 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| atX | f32 | Where it returns, along one ground axis, in world units. |
| atZ | f32 | Where it returns, along the other, in world units. |
| resource | f32 | What its spendable resource stands at on return. |
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.
In 3.01–3.8
Command 73 on events, sent by the server, reliable.
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.
| Field | Type | What it is |
|---|---|---|
| x | f32 | Where it comes back, along one ground axis, in world units. |
| y | f32 | Where it comes back, in height, in world units. A client places it there as given. |
| z | f32 | Where it comes back, along the other ground axis, in world units. |
| resource | f32 | Its resource, such as mana, once back. |
Vectors (1)
In 3.9–3.15
Command 73 on events, sent by the server, reliable.
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.
| Field | Type | What it is |
|---|---|---|
| x | f32 | Where it comes back, in world units. |
| z | f32 | Where it comes back, in world units. |
| resource | f32 | Its resource, such as mana, once back. |
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.
In every range of this book
Command 57 on requests, sent by the client, reliable.
A client also sends it as a unit its champion is attacking changes side (TeamChanged), whether usable or not.
| Field | Type | What it is |
|---|---|---|
| target | u32 | The unit to use. |
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.
A client casts nothing for a casting record whose length disagrees with its count of targets.
The casting record names the spell by the hash of its name, and a client casts nothing for a spell it has not loaded.
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.
A client spends the point as it sends UpgradeSpell. LevelUp states the
champion’s level and its points.
In 3.10–3.15
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
SpellUpgradedorLevelUp.
In 3.10
A client also sends
UpgradeSpellfor a point of a separate kind the champion holds, and spends no spell point for it.
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.
In every range of this book
Command 154 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| how | 1-byte bits | |
| how.slot | bit 0 to 5 | Which slot is being cast from. A client sends 0, 1 or 2, for the champion’s first three spells. |
| how.summonerSpell | bit 6 | Set where the slot is a summoner spell’s. |
| how.clicked | bit 7 | Set where the cast began with a click on the spell’s button rather than its key. |
| x | f32 | A point on the ground the cast is described by, along one axis, in world units. |
| z | f32 | The same point, along the other axis, in world units. |
| endX | f32 | The 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. |
| endZ | f32 | The second point, along the other axis, in world units. |
| target | u32 | The 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 (1)
SpellCastAnswer
What a server sends to say a unit is casting a spell. The header names the unit casting, as the casting inside does.
In every range of this book
Command 181 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| syncId | u32 | It settles whether a client brings the caster’s position in line for this cast, and nothing else. |
| how | 1-byte bits | |
| how.endCharge | bit 0 | 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. |
| how.unused | bit 1 to 7 | Unused; a server writes zero. |
| cast | SpellCast | The casting. |
Vectors (4)
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.
In 3.01–3.11
Command 133 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| which | 1-byte bits | |
| which.slot | bit 0 to 5 | Which slot. |
| which.summonerSpell | bit 6 | Set where the slot counts among the summoner slots, so that 0 and 1 name those two. |
| which.speakWhenReady | bit 7 | Set where the champion says something once the wait is over; a client does so for its own champion’s fourth slot. |
| timeLeft | f32 | How long is left, in seconds. |
Vectors (1)
In 3.12–3.13
Command 133 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| which | 1-byte bits | |
| which.slot | bit 0 to 5 | Which slot. |
| which.summonerSpell | bit 6 | Set where the slot counts among the summoner slots, so that 0 and 1 name those two. |
| which.unused | bit 7 | Unused; a server writes zero. |
| timeLeft | f32 | How long is left, in seconds. |
Vectors (1)
In 3.14–3.15
Command 133 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| which | 1-byte bits | |
| which.slot | bit 0 to 5 | Which slot. |
| which.summonerSpell | bit 6 | Set where the slot counts among the summoner slots, so that 0 and 1 name those two. |
| which.unused | bit 7 | Unused; a server writes zero. |
| timeLeft | f32 | How long is left, in seconds. |
| outOf | f32 | The 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 (1)
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.
In 3.8–3.15
Command 263 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| summonerSpell | u8 | Whether the slot is a summoner slot rather than one of the unit’s own. Values: 0 no, 1 yes. |
| slot | u32 | Which slot. |
| charges | i32 | How many uses are left. |
| mostCharges | i32 | How 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. |
| rechargeFor | f32 | How long the next use has been coming back, in seconds. |
| rechargeTime | f32 | How long a use takes to come back, in seconds. |
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.
In every range of this book
Command 230 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| flags | 1-byte bits | Which spell, and whether the charge ends. |
| flags.slot | bit 0 to 5 | The spell’s slot. |
| flags.summonerSpell | bit 6 | Set where the slot is a summoner spell’s. |
| flags.end | bit 7 | Set as the charge ends, clear for an update. |
| x | f32 | Where the cursor points on the ground, in world units. |
| y | f32 | Its height, in world units. |
| z | f32 | Where the cursor points on the ground, in world units. |
Vectors (1)
CancelTargeting
What a server sends to end a spell’s targeting on a client. The header names the unit.
In every range of this book
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.
| Field | Type | What it is |
|---|---|---|
| which | 1-byte bits | Which spell. |
| which.slot | bit 0 to 5 | Which slot. |
| which.summonerSpell | bit 6 | Set where the slot is a summoner slot. |
| which.unused | bit 7 | Unused; a server writes zero. |
Vectors (1)
Autocast
What a server sends to set which spells a unit casts by itself. The header names the unit.
In every range of this book
Command 31 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| slot | i8 | The slot cast by itself, from 0 to 62; any other value leaves it unset. |
| criticalSlot | i8 | The slot cast by itself on a critical strike, under the same terms. |
UpgradeSpell
What a client sends to put a point into a spell. The header names the sender’s champion.
In every range of this book
Command 56 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| slot | u8 | Which slot is being raised. |
| how | 1-byte bits | |
| how.evolve | bit 0 | Set where the player spends an evolution point on the slot rather than levelling it. |
| how.unused | bit 1 to 7 | Always clear. |
SpellUpgraded
What a server sends to confirm a unit’s spell went up a level. The header names the unit this is about.
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.
| Field | Type | What it is |
|---|---|---|
| slot | u8 | Which slot. |
| level | u8 | The level the spell now stands at. |
| pointsLeft | u8 | How many spell points are left unspent. |
SpellLevel
What a server sends to set the level of one of a unit’s spells. The header names the unit this is about.
In every range of this book
Command 90 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| slot | u32 | Which slot. A client raises that slot’s level by one, to at most 6. |
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.
In 3.10–3.15
Command 273 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| maxRanks | 4 × u8 | Each spell’s highest rank. |
| levels | 24 × u8 | Six 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. |
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.
In every range of this book
Command 111 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit whose slot this is. |
| spell | u32 | Which spell, by the number its name gives, as Objects and identifiers works it out. |
| slot | u8 | Which slot. |
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.
In 3.01–3.7
Command 23 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| which | 1-byte bits | ||
| which.slot | bit 0 to 5 | Which slot. A champion’s own spells count from 0. | |
| which.summonerSlots | bit 6 | Set where slot names a summoner spell’s slot, clear for the unit’s own spells; every kind obeys it. | |
| which.unused | bit 7 | Unused; a server writes zero. | |
| kind | u8 | What changes. A client does nothing for any other value. Values: 0 targeting, 1 name, 2 range, 3 icon, 4 offsetTargets. | |
| name | text, ended by a zero byte | kind = 1 | The name the client loads the spell under, ended by a zero byte. A client shows the named spell’s icon in the slot. |
| targeting | u8 | kind = 0 | How the spell is aimed. |
| range | f32 | kind = 2 | How far the spell is cast, in world units. |
| icon | u8 | kind = 3 | Which icon the spell shows. |
| targetCount | u8 | kind = 4 | How many units follow. |
| targets | count in targetCount × u32 | kind = 4 | The units the spell is cast from. |
Vectors (6)
icon-on-3-7, name-on-3-7, offset-targets-on-3-7, one-on-3-7, range-on-3-7, targeting-on-3-7
In 3.8–3.15
Command 23 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| which | 1-byte bits | ||
| which.slot | bit 0 to 5 | Which slot. A champion’s own spells count from 0. | |
| which.summonerSlots | bit 6 | Set where slot names a summoner spell’s slot, clear for the unit’s own spells; every kind obeys it. | |
| which.unused | bit 7 | Unused; a server writes zero. | |
| kind | u8 | What changes. A client does nothing for any other value. Values: 0 targeting, 1 name, 2 range, 3 maxRange, 4 shownRange, 5 icon, 6 offsetTargets. | |
| name | text, ended by a zero byte | kind = 1 | The name the client loads the spell under, ended by a zero byte. A client shows the named spell’s icon in the slot. |
| targeting | u8 | kind = 0 | How the spell is aimed. |
| range | f32 | kind = 2 | How far the spell is cast, in world units. |
| maxRange | f32 | kind = 3 | The farthest the spell’s cast range can grow to, in world units. |
| shownRange | f32 | kind = 4 | The range its range indicator shows, in world units. |
| icon | u8 | kind = 5 | Which icon the spell shows. |
| targetCount | u8 | kind = 6 | How many units follow. |
| targets | count in targetCount × u32 | kind = 6 | The units the spell is cast from. |
SpellToggled
What a server sends to turn one of a unit’s spells on or off. The header names the unit this is about.
In 3.13–3.15
Command 280 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| slot | u32 | Which of the champion’s own spells, 0 to 62; a client ignores any other value. Summoner spells are never toggled by it. |
| state | u8 | Nonzero to toggle the spell on, zero off. |
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.
In 3.01–3.14
Command 127 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| entryCount | u16 | How many sets of numbers follow. |
| entries | count in entryCount × record | The sets themselves. |
| entries[].unit | u32 | The unit whose spell this is. |
| entries[].slot | u8 | Which slot. |
| entries[].values | 5 × f32 | The numbers themselves, one place each. |
Vectors (3)
In 3.15
Command 127 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| entryCount | u16 | How many sets of numbers follow. |
| entries | count in entryCount × record | The sets themselves. |
| entries[].unit | u32 | The unit whose spell this is. |
| entries[].slot | u8 | Which slot. |
| entries[].values | 5 × f32 | The numbers themselves, one place each. |
| entries[].hidden | 5 × u8 | Which of those places the other side is not shown, one for each. |
Vectors (3)
SpellCostChanged
What a server sends to change what a spell costs the player it is sent to. The header names that player’s champion.
In 3.7
Command 260 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| costType | u32 | How the amount applies. Values: 0 flat, 1 multiplier. |
| slot | i32 | Which spell slot. |
| amount | f32 | The amount. |
Vectors (1)
In 3.8–3.15
Command 260 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| costType | u8 | How the amount applies. Values: 0 flat, 1 multiplier. |
| slot | i32 | Which spell slot. |
| amount | f32 | The amount. |
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.
In 3.9–3.15
Command 264 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| radius | f32 | The ring’s radius, in world units. Zero or less draws neither ring. |
| secondRadius | f32 | A second ring’s radius, in world units, drawn where above zero. |
MissileState
What a server sends to say where a missile is and what it is doing.
In 3.01–3.8
Command 58 on events, sent by the server, reliable.
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.
| Field | Type | What it is |
|---|---|---|
| atX | f32 | Where the missile is, along one ground axis, in world units. |
| atY | f32 | Where the missile is, in height, in world units. |
| atZ | f32 | Where the missile is, along the other ground axis, in world units. |
| casterAtX | f32 | Where the unit that threw it stood when it left, along one ground axis, in world units. |
| casterAtY | f32 | Where the unit that threw it stood when it left, in height, in world units. |
| casterAtZ | f32 | Where the unit that threw it stood when it left, along the other ground axis, in world units. |
| facingX | f32 | Which way the missile points, along one ground axis. |
| facingY | f32 | Which way the missile points, in height. |
| facingZ | f32 | Which way the missile points, along the other ground axis. |
| velocityX | f32 | How fast the missile travels, along one ground axis, in world units a second. |
| velocityY | f32 | How fast the missile travels, in height, in world units a second. |
| velocityZ | f32 | How fast the missile travels, along the other ground axis, in world units a second. |
| startX | f32 | Where the missile began, along one ground axis, in world units. |
| startY | f32 | Where the missile began, in height, in world units. |
| startZ | f32 | Where the missile began, along the other ground axis, in world units. |
| endX | f32 | Where the missile is bound for, along one ground axis, in world units. |
| endY | f32 | Where the missile is bound for, in height, in world units. |
| endZ | f32 | Where the missile is bound for, along the other ground axis, in world units. |
| unitAtX | f32 | Where to place the casting unit, along one ground axis, in world units, unless the casting itself places it. |
| unitAtY | f32 | Its height, in world units. |
| unitAtZ | f32 | Where to place the casting unit, along the other ground axis, in world units. |
| age | f32 | How long the missile has existed, in seconds. |
| speed | f32 | How fast the missile travels, in world units a second. |
| lifeSpent | f32 | How much of its life is gone, as a part of one. |
| how | 1-byte bits | |
| how.bounced | bit 0 | 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. |
| how.unused | bit 1 to 7 | Unused; a server writes zero. |
| cast | SpellCast | The casting that threw it. |
Vectors (2)
In 3.9–3.15
Command 58 on events, sent by the server, reliable.
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.
| Field | Type | What it is |
|---|---|---|
| atX | f32 | Where the missile is, along one ground axis, in world units. |
| atY | f32 | Where the missile is, in height, in world units. |
| atZ | f32 | Where the missile is, along the other ground axis, in world units. |
| casterAtX | f32 | Where the unit that threw it stood when it left, along one ground axis, in world units. |
| casterAtY | f32 | Where the unit that threw it stood when it left, in height, in world units. |
| casterAtZ | f32 | Where the unit that threw it stood when it left, along the other ground axis, in world units. |
| facingX | f32 | Which way the missile points, along one ground axis. |
| facingY | f32 | Which way the missile points, in height. |
| facingZ | f32 | Which way the missile points, along the other ground axis. |
| velocityX | f32 | How fast the missile travels, along one ground axis, in world units a second. |
| velocityY | f32 | How fast the missile travels, in height, in world units a second. |
| velocityZ | f32 | How fast the missile travels, along the other ground axis, in world units a second. |
| startX | f32 | Where the missile began, along one ground axis, in world units. |
| startY | f32 | Where the missile began, in height, in world units. |
| startZ | f32 | Where the missile began, along the other ground axis, in world units. |
| endX | f32 | Where the missile is bound for, along one ground axis, in world units. |
| endY | f32 | Where the missile is bound for, in height, in world units. |
| endZ | f32 | Where the missile is bound for, along the other ground axis, in world units. |
| unitAtX | f32 | Where to place the casting unit, along one ground axis, in world units, unless the casting itself places it. |
| unitAtY | f32 | Its height, in world units. |
| unitAtZ | f32 | Where to place the casting unit, along the other ground axis, in world units. |
| age | f32 | How long the missile has existed, in seconds. |
| speed | f32 | How fast the missile travels, in world units a second. |
| lifeSpent | f32 | How much of its life is gone, as a part of one. |
| speedChange | f32 | What is added to that speed over the time below, in world units a second. |
| speedChangeTime | f32 | When 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. |
| how | 1-byte bits | |
| how.bounced | bit 0 | 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. |
| how.unused | bit 1 to 7 | Unused; a server writes zero. |
| cast | SpellCast | The casting that threw it. |
Vectors (3)
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.
In every range of this book
Command 109 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| missile | u32 | The missile, by the name the swing or cast that prepared it gave it. |
MissileRetarget
What a server sends to change what a missile flies at. The header names the missile.
In every range of this book
Command 238 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| target | u32 | The unit it now flies at, or a name no unit answers to for none. |
| x | f32 | Where it now flies to, along one ground axis, in world units. |
| y | f32 | In height, in world units. |
| z | f32 | Along the other ground axis, in world units. |
Vectors (2)
MissileSpeed
What a server sends to change how fast a missile flies. The header names the missile.
In 3.9–3.15
Command 269 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| speed | f32 | The new speed, in world units a second. |
| delay | f32 | How long before it applies, in seconds. |
MissileHits
What a server sends to say which units a missile struck. The header names the missile.
In every range of this book
Command 37 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| count | u16 | How many units follow. A client reads it as signed, so a count above 32767 carries none. |
| targets | count in count × u32 | The units struck, in order. |
Vectors (2)
DestroyMissile
What a server sends to be rid of a missile a client is drawing. The header names the missile.
BounceMissile
What a server sends as a missile bounces on to another unit. The header names the missile.
In 3.14–3.15
Command 281 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| target | u32 | The unit it now flies at. |
| fromX | f32 | Where it bounces from, along one ground axis, in world units. |
| fromY | f32 | Where it bounces from, in height, in world units. |
| fromZ | f32 | Where it bounces from, along the other ground axis, in world units. |
ChainTargets
What a server sends to name the units a chain missile will strike in turn. The header names the missile.
In every range of this book
Command 107 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.
| Field | Type | What it is |
|---|---|---|
| count | i32 | How many of the slots are used, 0 to 32. |
| caster | u32 | The unit casting the missile. |
| targets | 32 × u32 | Always 32 slots; those past count have no effect. |
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.
In every range of this book
Command 59 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unused | u8 | Unused; a server writes zero. |
| fromX | f32 | Where the missile starts, in world units, along one ground axis. |
| fromY | f32 | Where the missile starts, in world units, in height. |
| fromZ | f32 | Where the missile starts, in world units, along the other ground axis. |
| velocityX | f32 | How fast it travels, in world units a second, along one ground axis. |
| velocityY | f32 | How fast it travels, in world units a second, in height. |
| velocityZ | f32 | How fast it travels, in world units a second, along the other ground axis. |
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.
In 3.01–3.8
Command 58 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| atX | f32 | Where the missile is, in world units, along one ground axis. |
| atY | f32 | Where the missile is, in world units, in height. |
| atZ | f32 | Where the missile is, in world units, along the other ground axis. |
| unknownAX | f32 | What this holds is not recorded. |
| unknownAY | f32 | What this holds is not recorded. |
| unknownAZ | f32 | What this holds is not recorded. |
| travelX | f32 | Its end less its start, in world units, along one ground axis. |
| travelY | f32 | Its end less its start, in world units, in height. |
| travelZ | f32 | Its end less its start, in world units, along the other ground axis. |
| velocityX | f32 | How fast it travels, in world units a second, along one ground axis. |
| velocityY | f32 | How fast it travels, in world units a second, in height. |
| velocityZ | f32 | How fast it travels, in world units a second, along the other ground axis. |
| unknownBX | f32 | What this holds is not recorded. |
| unknownBY | f32 | What this holds is not recorded. |
| unknownBZ | f32 | What this holds is not recorded. |
| endX | f32 | Where it ends, in world units, along one ground axis. |
| endY | f32 | Where it ends, in world units, in height. |
| endZ | f32 | Where it ends, in world units, along the other ground axis. |
| targetX | f32 | Where its target is, or the point it aims at, in world units, along one ground axis. |
| targetY | f32 | Where its target is, or the point it aims at, in world units, in height. |
| targetZ | f32 | Where its target is, or the point it aims at, in world units, along the other ground axis. |
| age | f32 | How long since it was launched, in seconds. |
| speed | f32 | How fast it travels, in world units a second. |
| unset | bytes, 4 | A client writes nothing in particular here. |
| flag | u8 | Zero or one; what it means is not recorded. |
| cast | bytes, sized by remaining | A description of the cast the missile belongs to, at most 512 bytes. |
Vectors (1)
In 3.9–3.15
Command 58 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| atX | f32 | Where the missile is, in world units, along one ground axis. |
| atY | f32 | Where the missile is, in world units, in height. |
| atZ | f32 | Where the missile is, in world units, along the other ground axis. |
| unknownAX | f32 | What this holds is not recorded. |
| unknownAY | f32 | What this holds is not recorded. |
| unknownAZ | f32 | What this holds is not recorded. |
| travelX | f32 | Its end less its start, in world units, along one ground axis. |
| travelY | f32 | Its end less its start, in world units, in height. |
| travelZ | f32 | Its end less its start, in world units, along the other ground axis. |
| velocityX | f32 | How fast it travels, in world units a second, along one ground axis. |
| velocityY | f32 | How fast it travels, in world units a second, in height. |
| velocityZ | f32 | How fast it travels, in world units a second, along the other ground axis. |
| unknownBX | f32 | What this holds is not recorded. |
| unknownBY | f32 | What this holds is not recorded. |
| unknownBZ | f32 | What this holds is not recorded. |
| endX | f32 | Where it ends, in world units, along one ground axis. |
| endY | f32 | Where it ends, in world units, in height. |
| endZ | f32 | Where it ends, in world units, along the other ground axis. |
| targetX | f32 | Where its target is, or the point it aims at, in world units, along one ground axis. |
| targetY | f32 | Where its target is, or the point it aims at, in world units, in height. |
| targetZ | f32 | Where its target is, or the point it aims at, in world units, along the other ground axis. |
| age | f32 | How long since it was launched, in seconds. |
| speed | f32 | How fast it travels, in world units a second. |
| unset | bytes, 4 | A client writes nothing in particular here. |
| unknownC | f32 | What this holds is not recorded; a server ignores it. |
| unknownD | f32 | What this holds is not recorded; a server ignores it. |
| flag | u8 | Zero or one; what it means is not recorded. |
| cast | bytes, sized by remaining | A description of the cast the missile belongs to, at most 512 bytes. |
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.
In 3.02–3.04
A client takes
EmitterPauseas aChatAllowance, the first four bytes of the group’s name standing as the lines left. A server MUST NOT sendEmitterPause.
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:
- play, stop, pause and advance a unit’s animations (
PlayAnimation,StopAnimation,PauseAnimation,AnimationAdvanced); - fade a unit or a side’s minions (
FadeTo,FadeRemoved,FadeMinions); - set how each nexus looks (
NexusIdle,NexusSkin); - tint a side’s screens (
ScreenTint); - change the voice a unit speaks with (
VoiceOverride).
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.
In every range of this book
Command 183 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| slot | u8 | Which of the unit’s effect slots it sits in. |
| kind | u8 | What sort of effect it is. |
| count | u8 | How many of it are stacked there. |
| hidden | u8 | Whether the client keeps it off the unit’s display. Values: 0 shown, 1 hidden. |
| effect | u32 | Which effect, by the number its name gives, as Objects and identifiers works it out. |
| package | u32 | Which set of art and sound the client draws it with. |
| runningFor | f32 | How long it has already run, in seconds. |
| lasts | f32 | How long it runs in total, in seconds. |
| caster | u32 | The unit that put it there. |
Vectors (3)
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.
In every range of this book
Command 47 on events, sent by the server, reliable.
It puts a lasting effect in the slot, keeping the slot rather than taking the old one off first.
| Field | Type | What it is |
|---|---|---|
| slot | u8 | Which of the unit’s effect slots. |
| runningFor | f32 | How long the effect has already run, in seconds. |
| lasts | f32 | How long it runs in total, in seconds. |
| caster | u32 | The unit that put it there. |
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.
In every range of this book
Command 28 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| slot | u8 | Which slot. |
| count | u8 | How many are stacked there now. |
| timeLeft | f32 | How long it has left to run, in seconds. With runningFor it adds up to the whole run the effect was added with. |
| runningFor | f32 | How long it has already run, in seconds. |
| caster | u32 | The unit that put it there. |
EffectRemoved
What a server sends to take a lasting effect off a unit. The header names the unit this is about.
In every range of this book
Command 123 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| slot | u8 | Which slot it sat in. |
| effect | u32 | Which effect, by the number its name gives, as Objects and identifiers works it out. |
| timeLeft | f32 | How long the effect had left to run when it was taken off, in seconds. |
Vectors (1)
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.
In every range of this book
Command 103 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| kind | u8 | What sort of effect it is. |
| effect | u32 | Which effect, by the number its name gives. |
| package | u32 | Which set of art and sound the client draws it with. |
| runningFor | f32 | How long it has already run, in seconds. |
| lasts | f32 | How long it runs in total, in seconds. |
| count | u8 | How many units follow. |
| entries | count in count × record | The units, one place each. |
| entries[].unit | u32 | The unit carrying the effect. |
| entries[].caster | u32 | The unit that put it there. |
| entries[].slot | u8 | Which of the unit’s effect slots it sits in. |
| entries[].stacks | u8 | How many are stacked there. |
| entries[].hidden | u8 | Whether the client keeps it off the unit’s display. |
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.
In every range of this book
Command 30 on events, sent by the server, reliable.
It replaces one effect with another on each unit.
| Field | Type | What it is |
|---|---|---|
| runningFor | f32 | How long the effect has already run, in seconds. |
| lasts | f32 | How long it runs in total, in seconds. |
| count | u8 | How many units follow. |
| entries | count in count × record | The units, one place each. |
| entries[].unit | u32 | The unit carrying the effect. |
| entries[].caster | u32 | The unit that put it there. |
| entries[].slot | u8 | Which of the unit’s effect slots. |
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.
In every range of this book
Command 191 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| lasts | f32 | How long the effect runs in total, in seconds. |
| runningFor | f32 | How long it has already run, in seconds. |
| count | u8 | How many units follow. |
| entries | count in count × record | The units, one place each. |
| entries[].unit | u32 | The unit carrying the effect. |
| entries[].caster | u32 | The unit that put it there. |
| entries[].slot | u8 | Which of the unit’s effect slots it sits in. |
| entries[].stacks | u8 | How many are stacked there now. |
Vectors (2)
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.
In every range of this book
Command 148 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| effect | u32 | Which effect, by the number its name gives. |
| count | u8 | How many units follow. |
| entries | count in count × record | The units, one place each. |
| entries[].unit | u32 | The unit carrying the effect. |
| entries[].slot | u8 | Which slot it sat in. |
| entries[].timeLeft | f32 | How long it had left to run, in seconds. |
Vectors (2)
EffectCounter
What a server sends to set the number an effect shows on its icon. The header names the unit carrying the effect.
In 3.9–3.15
Command 265 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| slot | u8 | Which of the unit’s effect slots. |
| counter | i32 | The number. |
ParticlesCreated
What a server sends to start drawing sets of particles. The header names no object: it carries zero.
In every range of this book
Command 135 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| groupCount | u8 | How many sets follow. |
| groups | count in groupCount × ParticleGroup | The sets themselves. |
Vectors (5)
one-on-3-8, one-on-3-11, a-third-on-3-15, another-on-3-15, one-on-3-15
KillParticle
What a server sends to stop a particle a client is drawing.
In every range of this book
Command 55 on events, sent by the server, reliable.
The header names the particle.
| Field | Type | What it is |
|---|---|---|
| particle | u32 | The particle to stop. |
EmitterPause
What a server sends to pause or resume a named group of particle emitters. The header carries no object this acts on.
In every range of this book
Command 248 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| group | text, 256 bytes | The group’s name, padded with zero bytes. |
| operation | u32 | Nonzero to pause the emission, zero to resume it. |
| groupOperation | u8 | What 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 (1)
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.
In every range of this book
Command 210 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit: a champion, minion, turret or other unit. |
| slot | u8 | Which of the effects’ inputs to drive. |
| point | u8 | Which point, for source 0. It has no effect unless source is 0. |
| source | u8 | What drives it. Any other value drives it from nothing. Values: 0 capturePoint, 1 resource, 2 resourceSmoothed. |
Vectors (1)
AppearancePushed
What a server sends to lay a new look over a unit’s own. The header names the unit.
In 3.01–3.5
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.
| Field | Type | What it is |
|---|---|---|
| entry | u32 | Names this look, so that AppearancePopped can name it. |
| how | 1-byte bits | What the look changes. |
| how.overrideSpells | bit 0 | Set where the unit’s spells change with it. |
| how.modelOnly | bit 1 | Set where only the model changes. |
| how.unused | bit 2 to 7 | Unused; a server writes zero. |
| asset | text, ended by a zero byte | The name the client loads it under, ended by a zero byte. The name and its zero byte take at most 64 bytes. |
Vectors (1)
In 3.6–3.11
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.
| Field | Type | What it is |
|---|---|---|
| entry | u32 | Names this look, so that AppearancePopped can name it. |
| how | 1-byte bits | What the look changes. |
| how.overrideSpells | bit 0 | Set where the unit’s spells change with it. |
| how.modelOnly | bit 1 | Set where only the model changes. |
| how.unused | bit 2 to 7 | Unused; a server writes zero. |
| skin | i32 | Which look; -1 keeps the unit’s own skin. |
| asset | text, ended by a zero byte | The name the client loads it under, ended by a zero byte. The name and its zero byte take at most 64 bytes. |
Vectors (1)
In 3.12–3.15
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.
| Field | Type | What it is |
|---|---|---|
| entry | u32 | Names this look, so that AppearancePopped can name it. |
| how | 1-byte bits | What the look changes. |
| how.overrideSpells | bit 0 | Set where the unit’s spells change with it. |
| how.modelOnly | bit 1 | Set where only the model changes. |
| how.replacePackage | bit 2 | Set where its art and sound change with it. |
| how.unused | bit 3 to 7 | Unused; a server writes zero. |
| skin | i32 | Which look; -1 keeps the unit’s own skin. |
| asset | text, ended by a zero byte | The name the client loads it under, ended by a zero byte. The name and its zero byte take at most 64 bytes. |
Vectors (2)
AppearancePopped
What a server sends to take a look AppearancePushed laid over a unit away. The header names the unit.
In every range of this book
Command 102 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| entry | u32 | The look, by the name AppearancePushed gave it. |
AppearanceCleared
What a server sends to take every look laid over a unit away. The header names the unit.
In every range of this book
Command 200 on events, sent by the server, reliable.
No body.
Vectors (2)
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.
In every range of this book
Command 106 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| pairCount | u8 | How many pairs follow. |
| pairs | count in pairCount × AnimationOverride | Each pair naming what is replaced and what replaces it. |
PlayAnimation
What a server sends to make a unit play an animation. The header names the unit.
In 3.01–3.6
Command 176 on events, sent by the server, reliable.
A unit playing a locked animation ignores the message. A client stops any emote playing first, and plays at normal speed.
| Field | Type | What it is |
|---|---|---|
| flags | 4-byte bits | How the animation plays. |
| flags.loop | bit 0 | Set to loop it. |
| flags.holdLastFrame | bit 1 | Set to hold its last frame once it ends. |
| flags.queue | bit 2 | Set to play it once the animation playing ends, rather than now. |
| flags.queueLast | bit 3 | Set to play it after every animation already waiting. |
| flags.replaceable | bit 4 | Set to let the next animation queued after it start at once. |
| flags.locked | bit 5 | Set where the unit ignores this message while the animation plays. |
| flags.noBlend | bit 6 | Set to switch to it at once rather than blend in. |
| flags.lockedFromIdle | bit 7 | Set where idle animations cannot fade it out. |
| flags.reserved | bit 8 | What it does is not recorded for this range; a server writes zero. |
| flags.unused | bit 9 to 31 | Unused; a server writes zero. |
| scaleTime | f32 | Where above zero, how many seconds the animation is stretched or squeezed to last. |
| startProgress | f32 | Where above zero, how far into the animation it starts, as a fraction from 0 to 1. |
| animation | text, ended by a zero byte | The 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)
In 3.7–3.14
Command 176 on events, sent by the server, reliable.
A client ignores scaleTime and startProgress, and plays at normal speed from the start. A unit holding a locked animation ignores the message. An animated building plays at normal speed, and keepEmotes has no effect on it.
| Field | Type | What it is |
|---|---|---|
| flags | 4-byte bits | How the animation plays. |
| flags.locked | bit 0 | Set where no other animation can fade this one out. |
| flags.lockedFromIdle | bit 1 | Set where idle animations cannot fade it out. It has no effect where locked is set. |
| flags.noBlend | bit 2 | Set to switch to it at once rather than blend in. |
| flags.holdLastFrame | bit 3 | Where a non-looping animation ends, it stays on its last frame. Whether an animation loops comes from the animation’s own data. |
| flags.keepEmotes | bit 4 | Set to let an emote playing go on; clear stops it. |
| flags.unused | bit 5 to 31 | Unused; a server writes zero. |
| scaleTime | f32 | A scale on how long it plays. A client ignores it. |
| startProgress | f32 | How far into the animation it starts. A client ignores it. |
| animation | text, ended by a zero byte | The 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 (2)
In 3.15
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.
| Field | Type | What it is |
|---|---|---|
| flags | 4-byte bits | How the animation plays. |
| flags.locked | bit 0 | Set where no other animation can fade this one out. |
| flags.lockedFromIdle | bit 1 | Set where idle animations cannot fade it out. It has no effect where locked is set. |
| flags.noBlend | bit 2 | Set to switch to it at once rather than blend in. |
| flags.holdLastFrame | bit 3 | Where a non-looping animation ends, it stays on its last frame. Whether an animation loops comes from the animation’s own data. |
| flags.keepEmotes | bit 4 | Set to let an emote playing go on; clear stops it. |
| flags.unused | bit 5 to 31 | Unused; a server writes zero. |
| scaleTime | f32 | A scale on how long it plays. |
| startProgress | f32 | How far into the animation it starts. |
| animation | text, ended by a zero byte | The 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 (2)
StopAnimation
What a server sends to stop an animation a unit is playing. The header names the unit.
In every range of this book
Command 40 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| flags | 1-byte bits | How it stops. |
| flags.fade | bit 0 | Set where the animation fades out. |
| flags.ignoreLock | bit 1 | Set where a lock on the animation is ignored. |
| flags.stopAll | bit 2 | Set where every animation stops when the name below is empty. |
| flags.unused | bit 3 to 7 | Unused; a server writes zero. |
| animation | text, ended by a zero byte | The animation’s name, ended by a zero byte, or empty. |
PauseAnimation
What a server sends to pause or resume a unit’s animation. The header names the unit.
In every range of this book
Command 112 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| state | 1-byte bits | Whether to pause. |
| state.paused | bit 0 | Set to pause, clear to resume. |
| state.unused | bit 1 to 7 | Unused; a server writes zero. |
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.
In 3.6–3.15
Command 259 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| seconds | f32 | How far forward, in seconds. |
| animation | text, 64 bytes | The animation’s name. It ends at its first zero byte. |
FadeTo
What a server sends to fade a unit towards an opacity over time. The header names the unit.
In every range of this book
Command 178 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| fade | i16 | Names this fade, so that FadeRemoved can name it. |
| time | f32 | How long the fade takes, in seconds. |
| target | f32 | The opacity it fades to, from 0 for unseen to 1 for solid. |
Vectors (2)
FadeRemoved
What a server sends to undo a fade on a unit. The header names the unit.
In every range of this book
Command 49 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| fade | i16 | The fade, by the name FadeTo gave it. |
FadeMinions
What a server sends to fade one side’s minions. The header carries zero.
In every range of this book
Command 203 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| side | u8 | Which side, or zero for both. |
| amount | f32 | The opacity they fade to, from 0 for unseen to 1 for solid. |
| time | f32 | How long the fade takes, in seconds. |
Vectors (2)
NexusIdle
What a server sends to put each nexus into its idle particles. The header carries zero.
NexusSkin
What a server sends to change how one side’s nexus looks. The header carries zero.
In every range of this book
Command 115 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| side | u8 | Which side. |
| skin | u32 | Which look. |
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.
In every range of this book
Command 219 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| fadeIn | u8 | 1 brings a tint in, and the colour and weight below follow; 0 takes it away, and they do not. | |
| time | f32 | How long the change takes, in seconds. | |
| side | i32 | Which side sees it. | |
| colour | u32 | fadeIn set | The tint, as blue, green, red and opacity bytes. |
| weight | f32 | fadeIn set | How strongly it applies at most. |
Vectors (4)
VoiceOverride
What a server sends to change or reset the voice a unit speaks with. The header names the unit.
In every range of this book
Command 150 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| flags | 1-byte bits | Whether to reset. | |
| flags.reset | bit 0 | Set where the unit returns to its own voice; no name follows. | |
| flags.unused | bit 1 to 7 | Unused; a server writes zero. | |
| voice | text, ended by a zero byte | flags.reset = 0 | The voice’s name, ended by a zero byte. |
Vectors (2)
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.
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.
In 3.10–3.15
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.
In 3.01–3.10
A client asks for an item not built from others only where a slot is free or holds the same item below its stack limit.
In 3.01–3.10
A client asks only while the shop is not locked, with the champion dead or near a shop of its side.
A client never asks for an item a player holds only one of and holds already.
In 3.10–3.15
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 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).
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.
A purchase a server never answers still plays the sound of buying.
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.
In 3.01–3.10
A message that locks other input along with the shop stops the shop opening, but leaves an open shop open and its key on.
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.
In every range of this book
Command 41 on events, sent by the server, reliable.
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.
| Field | Type | What it is |
|---|---|---|
| runes | 30 × u32 | The runes set before the match, thirty places in runs of nine, nine, nine and three. A place holds zero where nothing was set. |
| summoners | 2 × u32 | The spells in the champion’s summoner slots, by the numbers their names give. |
| choices | 80 × Choice | The choices made alongside them, one place each, and how far each was taken. A place stands empty where nothing was chosen. |
| level | u8 | The player’s account level. |
| wardSkin | u8 | What the champion’s wards look like. |
ItemSubstitution
What a server sends to have one item stand in for another in a champion’s inventory. The header names the champion.
In 3.14–3.15
Command 284 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| original | u32 | The item replaced. |
| substitute | u32 | The item standing in for it. |
SubstitutionCleared
What a server sends to undo an ItemSubstitution, so the shop shows the item itself again. The header names the champion.
In 3.14–3.15
Command 285 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| item | u32 | The item whose substitute is undone. Zero does nothing. |
BuyItem
What a client sends to buy an item from the shop. The header names the sender’s champion.
In every range of this book
Command 130 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| item | u32 | Which item, by the number the client knows it as. |
Vectors (2)
RemoveItem
What a client sends to be rid of an item. The header names the sender’s champion.
In every range of this book
Command 9 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| which | 1-byte bits | |
| which.slot | bit 0 to 6 | Which slot. |
| which.sell | bit 7 | Set to sell the item, clear to throw it away. A client always sends it set. |
SwapItems
What a client sends to move an item from one slot to another. The header names the sender’s champion.
In every range of this book
Command 32 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| from | u8 | The slot the item leaves, which a 4.17 client sends only from 0 to 9. |
| to | u8 | The slot it goes to, never the one from names; a 4.17 client sends only 0 to 9. |
TutorialShopOpened
What a client sends as its player opens the shop. It carries nothing of its own. The header carries zero.
In every range of this book
Command 92 on requests, sent by the client, reliable.
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.
ShopEnabled
What a server sends to say whether a champion can use the shop. The header names the champion.
In every range of this book
Command 240 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| flags | 1-byte bits | Whether it can be used. |
| flags.enabled | bit 0 | Set where the shop can be used. |
| flags.unused | bit 1 to 7 | Unused; a server writes zero. |
Vectors (1)
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.
In 3.01–3.5
Command 110 on events, sent by the server, reliable.
A server sends it to units nobody is buying for.
| Field | Type | What it is |
|---|---|---|
| item | u32 | Which item, by the number the client knows it as. |
| slot | u8 | The slot it went to. A client rejects the message from 38 up. |
| inSlot | u8 | How many of the item the slot holds; zero leaves the slot as it was. The slot’s charges come from the item’s own data. |
| how | 1-byte bits | |
| how.unused | bit 0 to 5 | Unused; a server writes zero. |
| how.announce | bit 6 | Set 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.unused7 | bit 7 | Unused; a server writes zero. |
Vectors (1)
In 3.6–3.15
Command 110 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.
| Field | Type | What it is |
|---|---|---|
| item | u32 | Which item, by the number the client knows it as. |
| slot | u8 | The slot it went to. A client rejects the message from 40 up. |
| inSlot | u8 | How many of it are in that slot now. |
| charges | u8 | How many uses it carries. |
| how | 1-byte bits | |
| how.unused | bit 0 to 5 | Unused; a server writes zero. |
| how.announce | bit 6 | Set 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.unused7 | bit 7 | Unused; a server writes zero. |
RemoveItemAnswer
What a server sends to confirm an item left a slot. The header names the unit this is about.
In 3.01–3.8
Command 11 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| slot | u8 | Which slot, 0 to 37. For a higher one a client does nothing at all; for 0 to 37 it updates the slot and tells its screens the inventory changed, whatever left is. |
| left | u8 | How 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)
In 3.9–3.15
Command 11 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| which | 1-byte bits | |
| which.slot | bit 0 to 6 | Which slot. A client changes nothing from 40 up. |
| which.notify | bit 7 | Set to have a client tell its screens the inventory changed; clear still updates the slot, quietly. |
| left | u8 | How 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. |
SwapItemsAnswer
What a server sends to confirm an item moved between slots. The header names the unit this is about.
In every range of this book
Command 61 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| from | u8 | The slot the item left. |
| to | u8 | The slot it went to. |
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.
In every range of this book
Command 82 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| item | u32 | The item. It has no effect where count is zero. |
| slot | u8 | Which slot, 0 to 39. A client ignores the message from 40 up. |
| count | u8 | How many. Zero leaves the slot empty. |
| charges | u8 | Its charges. |
InventorySnapshot
What a server sends to state a unit’s whole inventory at once, with each slot’s cooldown. The header names the unit.
In 3.9–3.10
Command 268 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| items | 8 × record | Eight places, one per slot. |
| items[].item | u32 | The item, or zero for an empty slot. |
| items[].slot | u8 | Which slot. |
| items[].inSlot | u8 | How many are in the slot. |
| items[].charges | u8 | How many charges it holds. |
Vectors (1)
In 3.11–3.13
Command 268 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| items | 8 × record | Eight places, one per slot. |
| items[].item | u32 | The item, or zero for an empty slot. |
| items[].slot | u8 | Which slot. |
| items[].inSlot | u8 | How many are in the slot. |
| items[].charges | u8 | How many charges it holds. |
| cooldowns | 8 × f32 | One per slot. A client applies a slot’s wait only where the slot holds an item and the value is not -1. |
Vectors (1)
In 3.14–3.15
Command 268 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| items | 9 × record | Nine places, one per slot. |
| items[].item | u32 | The item, or zero for an empty slot. |
| items[].slot | u8 | Which slot. |
| items[].inSlot | u8 | How many are in the slot. |
| items[].charges | u8 | How many charges it holds. |
| cooldowns | 9 × f32 | One per slot. A client applies a slot’s wait only where the slot holds an item and the value is not -1. |
Vectors (1)
ItemCharges
What a server sends to set how many charges an item holds. The header names the unit.
In 3.6–3.15
Command 253 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| slot | u8 | Which slot. |
| charges | u8 | How many charges. |
Vectors (2)
ItemUsed
What a server sends after an item in a unit’s inventory is used. The header names the unit.
In every range of this book
Command 159 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| slot | u8 | Which slot. |
| left | u8 | How many are left in it; zero empties the slot. |
| charges | u8 | How many charges it holds. |
Vectors (2)
ShopUndoCount
What a server sends to say how many purchases a champion can still undo. The header names the champion.
In 3.9–3.15
Command 267 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| undo | u8 | How many steps can be undone. |
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.
CloseShop
What a server sends to close a client’s shop. The header carries zero.
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.
In 3.01–3.10
A client places a camp where the first of its monsters is created (
CreateNeutral).
In 3.01–3.10
CampClearedsets no time for the camp to fill again: a client keeps the state it gives for the camp.
In 3.10
CampOpenedalso places a camp the client does not know yet, where the message says. A client announces a campCampClearedempties where the message’s flag says to.
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 3.01–3.10
A client acts on
TeamScoreonce its game screen is up, whatever the mode.
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.
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).
CampOpened
What a server sends to open a camp of units that belong to no side. The header names no object: it carries zero.
In every range of this book
Command 233 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| atX | f32 | Where the camp sits, along one ground axis, in world units. |
| atY | f32 | Where it sits, in height, in world units. |
| atZ | f32 | Where it sits, along the other ground axis, in world units. |
| campIcon | text, 64 bytes | The name of the icon the minimap shows at the camp, written in full and padded with zero bytes to the width above; empty shows none. A client uses it only where it creates the camp. |
| camp | u8 | Which camp. |
Vectors (3)
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.
In 3.01–3.11
Command 195 on events, sent by the server, reliable.
A client marks the camp empty, even one that had just filled.
| Field | Type | What it is |
|---|---|---|
| killer | u32 | The 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. |
| camp | u32 | Which camp. A client ignores a camp it does not know, but for the timer. |
| does | 1-byte bits | |
| does.speak | bit 0 | Set to have the client play the line for a camp revealed or a buff taken, to the client’s own side. |
| does.unused | bit 1 to 7 | Unused; a server writes zero. |
Vectors (1)
In 3.12–3.15
Command 195 on events, sent by the server, reliable.
A client marks the camp empty, even one that had just filled.
| Field | Type | What it is |
|---|---|---|
| killer | u32 | The 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. |
| camp | u32 | Which camp. A client ignores a camp it does not know, but for the timer. |
| does | 1-byte bits | |
| does.speak | bit 0 | Set to have the client play the line for a camp revealed or a buff taken, to the client’s own side. |
| does.firstSide | bit 1 | Unused; a server writes zero. |
| does.unused | bit 2 to 7 | Unused; a server writes zero. |
Vectors (1)
CampTimer
What a server sends a client watching a match to set when a camp is next due. The header carries zero.
In 3.11–3.15
Command 278 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| timer | i32 | Which camp’s timer, by a number a name gives. |
| expires | f32 | When it is due, in match seconds. |
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.
In 3.01–3.6
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.
| Field | Type | What it is |
|---|---|---|
| point | u8 | Which point, 0 to 254; a match of five points uses 0 to 4. |
| unit | u32 | The 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. |
| resourceKind | u8 | The 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 ferocity, 9 other. |
| side | i32 | The side attacking the point. It has no effect on a binding. |
| change | u8 | What 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)
In 3.7–3.10
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.
| Field | Type | What it is |
|---|---|---|
| point | u8 | Which point, 0 to 254; a match of five points uses 0 to 4. |
| unit | u32 | The 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. |
| resourceKind | u8 | The 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 ferocity, 9 bloodWell, 10 other. |
| side | i32 | The side attacking the point. It has no effect on a binding. |
| change | u8 | What 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)
In 3.11
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.
| Field | Type | What it is |
|---|---|---|
| point | u8 | Which point, 0 to 254; a match of five points uses 0 to 4. |
| unit | u32 | The 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. |
| resourceKind | u8 | The 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 10, and takes any higher value as none. Values: 0 mana, 1 energy, 2 none, 3 shield, 4 battleFury, 5 dragonFury, 6 rage, 7 heat. |
| side | i32 | The side attacking the point. It has no effect on a binding. |
| change | u8 | What 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)
In 3.12–3.14
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.
| Field | Type | What it is |
|---|---|---|
| point | u8 | Which point, 0 to 254; a match of five points uses 0 to 4. |
| unit | u32 | The 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. |
| resourceKind | u8 | The 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 ferocity, 9 bloodWell, 10 other. |
| side | i32 | The side attacking the point. It has no effect on a binding. |
| change | u8 | What 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)
In 3.15
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.
| Field | Type | What it is |
|---|---|---|
| point | u8 | Which point, 0 to 254; a match of five points uses 0 to 4. |
| unit | u32 | The 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. |
| resourceKind | u8 | The 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. |
| side | i32 | The side attacking the point. It has no effect on a binding. |
| change | u8 | What 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)
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.
In every range of this book
Command 212 on events, sent by the server, reliable.
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.
| Field | Type | What it is |
|---|---|---|
| side | i32 | Which side, 100 or 200. A client ignores any other. |
| score | i32 | The score it now stands at: the whole of it, not a change. |
Vectors (1)
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.
In every range of this book
Command 213 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| action | u8 | What happened. A client ignores any other value. Values: 0 owned, 1 chosen. |
| point | u8 | Which point. |
| side | i32 | The side holding it, 100 or 200. It takes effect only where action is owned. |
| clientId | u32 | The client id of the player who chose it. It takes effect only where action is chosen. |
| x | f32 | Where the point stands, in world units. It takes effect only where action is owned. |
| y | f32 | Its height, in world units. It takes effect only where action is owned. |
| z | f32 | Where the point stands, in world units. It takes effect only where action is owned. |
Vectors (1)
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.
In 3.01
Command 68 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 123, and so which fields follow. Values: 0 removed, 1 died, 3 championDied, 5 championKill, 7 singleKill, 8 doubleKill, 14 damageTaken, 15 damageDealt, 22 goldSpent, 23 goldEarned, 24 consumableBought, 25 criticalStrike, 28 inhibitorKilled, 29 inhibitorDied, 30 inhibitorRespawningSoon, 32 turretKilled, 33 turretDied, 34 minionKilled, 35 minionDenied, 36 monsterKilled, 37 largeMonsterKilled, 38 nexusKilled, 39 nexusDied, 40 heal, 41 healCast, 42 buff, 43 killingSpree, 50 killDuringSpree, 57 doubleKillDuringSpree, 58 tripleKillDuringSpree, 59 quadraKillDuringSpree, 62 deathAssist, 63 playerQuit, 64 playerLeft, 65 playerReconnected, 76 itemBought, 77 itemCallout, 78 itemChanged, 88 minionsSpawned, 89 welcome, 90 startNoticeTwo, 91 startNoticeThree, 95 scoreboardOpened, 116 dragonKilled, 117 dragonKilledWatched, 118 baronKilled, 119 baronKilledWatched, 120 spiderKilled, 121 spiderKilledWatched, 122 altarCaptured, 123 altarCapturedWatched. | |
| source | u32 | The unit the thing is credited to, or zero where none is. | |
| subject | u32 | The unit the thing happened to, or zero where none is named. | |
| stage | u8 | event = 4 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 14 or 15 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 22 | How much gold, as shown. |
| value | u32 | event = 24 or 76 or 78 or 122 or 123 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 25 | The critical strike’s damage, as shown. |
| spree | u32 | event = 43 | How many kills in a row, as shown. |
| earned | record | event = 23 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| heal | record | event = 40 or 41 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 42 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| assist | record | event = 62 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 116 or 117 or 118 or 119 or 120 or 121 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| callout | record | event = 77 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.side | u32 | The side of the player who pointed it out. |
Vectors (25)
altar-captured-on-3-01, altar-captured-watched-on-3-01, baron-killed-on-3-01, baron-killed-watched-on-3-01, buff-on-3-01, consumable-bought-on-3-01, critical-strike-on-3-01, damage-dealt-on-3-01, damage-taken-on-3-01, death-assist-on-3-01, died-on-3-01, dragon-killed-on-3-01, dragon-killed-watched-on-3-01, gold-earned-on-3-01, gold-spent-on-3-01, heal-cast-on-3-01, heal-on-3-01, item-bought-on-3-01, item-callout-on-3-01, item-changed-on-3-01, killing-spree-on-3-01, one-on-3-01, removed-on-3-01, spider-killed-on-3-01, spider-killed-watched-on-3-01
In 3.02–3.03
Command 68 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 132, and so which fields follow. Values: 0 removed, 1 died, 3 championDied, 5 championKill, 7 singleKill, 8 doubleKill, 14 damageTaken, 15 damageDealt, 22 goldSpent, 23 goldEarned, 24 consumableBought, 25 criticalStrike, 28 inhibitorKilled, 29 inhibitorDied, 30 inhibitorRespawningSoon, 32 turretKilled, 33 turretDied, 34 minionKilled, 35 minionDenied, 36 monsterKilled, 37 largeMonsterKilled, 38 nexusKilled, 39 nexusDied, 40 heal, 41 healCast, 42 buff, 43 killingSpree, 50 killDuringSpree, 57 doubleKillDuringSpree, 58 tripleKillDuringSpree, 59 quadraKillDuringSpree, 62 deathAssist, 63 playerQuit, 64 playerLeft, 65 playerReconnected, 76 itemBought, 77 itemCallout, 78 itemChanged, 97 minionsSpawned, 98 welcome, 99 startNoticeTwo, 100 startNoticeThree, 104 scoreboardOpened, 125 dragonKilled, 126 dragonKilledWatched, 127 baronKilled, 128 baronKilledWatched, 129 spiderKilled, 130 spiderKilledWatched, 131 altarCaptured, 132 altarCapturedWatched. | |
| source | u32 | The unit the thing is credited to, or zero where none is. | |
| subject | u32 | The unit the thing happened to, or zero where none is named. | |
| stage | u8 | event = 4 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 14 or 15 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 22 | How much gold, as shown. |
| value | u32 | event = 24 or 76 or 78 or 131 or 132 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 25 | The critical strike’s damage, as shown. |
| spree | u32 | event = 43 | How many kills in a row, as shown. |
| earned | record | event = 23 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| heal | record | event = 40 or 41 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 42 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| assist | record | event = 62 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 125 or 126 or 127 or 128 or 129 or 130 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| callout | record | event = 77 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.side | u32 | The side of the player who pointed it out. |
Vectors (25)
altar-captured-on-3-03, altar-captured-watched-on-3-03, baron-killed-on-3-03, baron-killed-watched-on-3-03, buff-on-3-03, consumable-bought-on-3-03, critical-strike-on-3-03, damage-dealt-on-3-03, damage-taken-on-3-03, death-assist-on-3-03, died-on-3-03, dragon-killed-on-3-03, dragon-killed-watched-on-3-03, gold-earned-on-3-03, gold-spent-on-3-03, heal-cast-on-3-03, heal-on-3-03, item-bought-on-3-03, item-callout-on-3-03, item-changed-on-3-03, killing-spree-on-3-03, one-on-3-03, removed-on-3-03, spider-killed-on-3-03, spider-killed-watched-on-3-03
In 3.04–3.5
Command 68 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 135, 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 killingSpree, 51 killDuringSpree, 58 doubleKillDuringSpree, 59 tripleKillDuringSpree, 60 quadraKillDuringSpree, 63 deathAssist, 64 playerQuit, 65 playerLeft, 66 playerReconnected, 77 itemBought, 78 itemCallout, 79 itemChanged, 98 minionsSpawned, 99 welcome, 100 startNoticeTwo, 101 startNoticeThree, 105 scoreboardOpened, 126 dragonKilled, 127 dragonKilledWatched, 128 baronKilled, 129 baronKilledWatched, 130 spiderKilled, 131 spiderKilledWatched, 132 altarCaptured, 133 altarCapturedWatched, 134 wardPlaced, 135 wardKilled. | |
| source | u32 | The unit the thing is credited to, or zero where none is. | |
| subject | u32 | The unit the thing happened to, or zero where none is named. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 15 or 16 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 23 | How much gold, as shown. |
| value | u32 | event = 25 or 77 or 79 or 132 or 133 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| spree | u32 | event = 44 | How many kills in a row, as shown. |
| earned | record | event = 24 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| heal | record | event = 41 or 42 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 43 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| assist | record | event = 63 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 34 or 126 or 127 or 128 or 129 or 130 or 131 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 126 or 127 or 128 or 129 or 130 or 131 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| callout | record | event = 78 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.side | u32 | The side of the player who pointed it out. |
Vectors (27)
altar-captured-on-3-5, altar-captured-watched-on-3-5, baron-killed-on-3-5, baron-killed-watched-on-3-5, buff-on-3-5, consumable-bought-on-3-5, critical-strike-on-3-5, damage-dealt-on-3-5, damage-taken-on-3-5, death-assist-on-3-5, died-on-3-5, dragon-killed-on-3-5, dragon-killed-watched-on-3-5, gold-earned-on-3-5, gold-spent-on-3-5, heal-cast-on-3-5, heal-on-3-5, item-bought-on-3-5, item-callout-on-3-5, item-changed-on-3-5, killing-spree-on-3-5, one-on-3-5, removed-on-3-5, spawned-on-3-5, spider-killed-on-3-5, spider-killed-watched-on-3-5, turret-died-on-3-5
In 3.6–3.7
Command 68 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 138, 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 101 minionsSpawned, 102 welcome, 103 startNoticeTwo, 104 startNoticeThree, 108 scoreboardOpened, 129 dragonKilled, 130 dragonKilledWatched, 131 baronKilled, 132 baronKilledWatched, 133 spiderKilled, 134 spiderKilledWatched, 135 altarCaptured, 136 altarCapturedWatched, 137 wardPlaced, 138 wardKilled. | |
| source | u32 | The unit the thing is credited to, or zero where none is. | |
| subject | u32 | The unit the thing happened to, or zero where none is named. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 15 or 16 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 23 | How much gold, as shown. |
| value | u32 | event = 25 or 78 or 79 or 80 or 82 or 135 or 136 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| spree | u32 | event = 45 | How many kills in a row, as shown. |
| earned | record | event = 24 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 41 or 42 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 43 or 44 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 44 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 64 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 34 or 37 or 129 or 130 or 131 or 132 or 133 or 134 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 37 or 129 or 130 or 131 or 132 or 133 or 134 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 81 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.side | u32 | The side of the player who pointed it out. |
Vectors (31)
altar-captured-on-3-7, altar-captured-watched-on-3-7, baron-killed-on-3-7, baron-killed-watched-on-3-7, buff-on-3-7, consumable-bought-on-3-7, critical-strike-on-3-7, crowd-control-on-3-7, damage-dealt-on-3-7, damage-taken-on-3-7, death-assist-on-3-7, died-on-3-7, dragon-killed-on-3-7, dragon-killed-watched-on-3-7, gold-earned-on-3-7, gold-spent-on-3-7, heal-cast-on-3-7, heal-on-3-7, item-bought-on-3-7, item-callout-on-3-7, item-changed-on-3-7, item-removed-on-3-7, item-sold-on-3-7, killing-spree-on-3-7, monster-killed-on-3-7, one-on-3-7, removed-on-3-7, spawned-on-3-7, spider-killed-on-3-7, spider-killed-watched-on-3-7, turret-died-on-3-7
In 3.8
Command 68 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 140, 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 101 minionsSpawned, 102 welcome, 103 startNoticeTwo, 104 startNoticeThree, 108 scoreboardOpened, 131 dragonKilled, 132 dragonKilledWatched, 133 baronKilled, 134 baronKilledWatched, 135 spiderKilled, 136 spiderKilledWatched, 137 altarCaptured, 138 altarCapturedWatched, 139 wardPlaced, 140 wardKilled. | |
| source | u32 | The unit the thing is credited to, or zero where none is. | |
| subject | u32 | The unit the thing happened to, or zero where none is named. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 15 or 16 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 23 | How much gold, as shown. |
| value | u32 | event = 25 or 78 or 79 or 80 or 82 or 137 or 138 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| spree | u32 | event = 45 | How many kills in a row, as shown. |
| earned | record | event = 24 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 41 or 42 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 43 or 44 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 44 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 64 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 34 or 37 or 131 or 132 or 133 or 134 or 135 or 136 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 37 or 131 or 132 or 133 or 134 or 135 or 136 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 81 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.side | u32 | The side of the player who pointed it out. |
Vectors (31)
altar-captured-on-3-8, altar-captured-watched-on-3-8, baron-killed-on-3-8, baron-killed-watched-on-3-8, buff-on-3-8, consumable-bought-on-3-8, critical-strike-on-3-8, crowd-control-on-3-8, damage-dealt-on-3-8, damage-taken-on-3-8, death-assist-on-3-8, died-on-3-8, dragon-killed-on-3-8, dragon-killed-watched-on-3-8, gold-earned-on-3-8, gold-spent-on-3-8, heal-cast-on-3-8, heal-on-3-8, item-bought-on-3-8, item-callout-on-3-8, item-changed-on-3-8, item-removed-on-3-8, item-sold-on-3-8, killing-spree-on-3-8, monster-killed-on-3-8, one-on-3-8, removed-on-3-8, spawned-on-3-8, spider-killed-on-3-8, spider-killed-watched-on-3-8, turret-died-on-3-8
In 3.9
Command 68 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 141, 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 83 undoChanged, 102 minionsSpawned, 103 welcome, 104 startNoticeTwo, 105 startNoticeThree, 109 scoreboardOpened, 132 dragonKilled, 133 dragonKilledWatched, 134 baronKilled, 135 baronKilledWatched, 136 spiderKilled, 137 spiderKilledWatched, 138 altarCaptured, 139 altarCapturedWatched, 140 wardPlaced, 141 wardKilled. | |
| source | u32 | The unit the thing is credited to, or zero where none is. | |
| subject | u32 | The unit the thing happened to, or zero where none is named. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 15 or 16 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack, 5 cheat. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 23 | How much gold, as shown. |
| value | u32 | event = 25 or 78 or 79 or 80 or 82 or 83 or 138 or 139 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| spree | u32 | event = 45 | How many kills in a row, as shown. |
| earned | record | event = 24 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 41 or 42 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack, 5 cheat. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 43 or 44 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack, 5 cheat. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 44 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 64 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 34 or 37 or 132 or 133 or 134 or 135 or 136 or 137 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 37 or 132 or 133 or 134 or 135 or 136 or 137 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 81 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.side | u32 | The side of the player who pointed it out. |
Vectors (32)
altar-captured-on-3-9, altar-captured-watched-on-3-9, baron-killed-on-3-9, baron-killed-watched-on-3-9, buff-on-3-9, consumable-bought-on-3-9, critical-strike-on-3-9, crowd-control-on-3-9, damage-dealt-on-3-9, damage-taken-on-3-9, death-assist-on-3-9, died-on-3-9, dragon-killed-on-3-9, dragon-killed-watched-on-3-9, gold-earned-on-3-9, gold-spent-on-3-9, heal-cast-on-3-9, heal-on-3-9, item-bought-on-3-9, item-callout-on-3-9, item-changed-on-3-9, item-removed-on-3-9, item-sold-on-3-9, killing-spree-on-3-9, monster-killed-on-3-9, one-on-3-9, removed-on-3-9, spawned-on-3-9, spider-killed-on-3-9, spider-killed-watched-on-3-9, turret-died-on-3-9, undo-changed-on-3-9
In 3.10
Command 68 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 141, 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 83 undoChanged, 102 minionsSpawned, 103 welcome, 104 startNoticeTwo, 105 startNoticeThree, 109 scoreboardOpened, 132 dragonKilled, 133 dragonKilledWatched, 134 baronKilled, 135 baronKilledWatched, 136 spiderKilled, 137 spiderKilledWatched, 138 altarCaptured, 139 altarCapturedWatched, 140 wardPlaced, 141 wardKilled. | |
| source | u32 | The unit the thing is credited to, or zero where none is. | |
| subject | u32 | The unit the thing happened to, or zero where none is named. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 15 or 16 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 23 | How much gold, as shown. |
| value | u32 | event = 25 or 78 or 79 or 80 or 82 or 83 or 138 or 139 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| spree | u32 | event = 45 | How many kills in a row, as shown. |
| earned | record | event = 24 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 41 or 42 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 43 or 44 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 44 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 64 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 34 or 37 or 132 or 133 or 134 or 135 or 136 or 137 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 37 or 132 or 133 or 134 or 135 or 136 or 137 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 81 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.side | u32 | The side of the player who pointed it out. |
Vectors (32)
altar-captured-on-3-10, altar-captured-watched-on-3-10, baron-killed-on-3-10, baron-killed-watched-on-3-10, buff-on-3-10, consumable-bought-on-3-10, critical-strike-on-3-10, crowd-control-on-3-10, damage-dealt-on-3-10, damage-taken-on-3-10, death-assist-on-3-10, died-on-3-10, dragon-killed-on-3-10, dragon-killed-watched-on-3-10, gold-earned-on-3-10, gold-spent-on-3-10, heal-cast-on-3-10, heal-on-3-10, item-bought-on-3-10, item-callout-on-3-10, item-changed-on-3-10, item-removed-on-3-10, item-sold-on-3-10, killing-spree-on-3-10, monster-killed-on-3-10, one-on-3-10, removed-on-3-10, spawned-on-3-10, spider-killed-on-3-10, spider-killed-watched-on-3-10, turret-died-on-3-10, undo-changed-on-3-10
In 3.11
Command 68 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 144, and so which fields follow. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 7 championKillUnseen, 9 singleKill, 10 doubleKill, 16 damageTaken, 17 damageDealt, 24 goldSpent, 25 goldEarned, 26 consumableBought, 27 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 nexusKilled, 43 nexusDied, 44 heal, 45 healCast, 46 buff, 47 crowdControl, 48 killingSpree, 55 killDuringSpree, 62 doubleKillDuringSpree, 63 tripleKillDuringSpree, 64 quadraKillDuringSpree, 67 deathAssist, 68 playerQuit, 69 playerLeft, 70 playerReconnected, 81 itemBought, 82 itemSold, 83 itemRemoved, 84 itemCallout, 85 itemChanged, 86 undoChanged, 105 minionsSpawned, 106 welcome, 107 startNoticeTwo, 108 startNoticeThree, 112 scoreboardOpened, 135 dragonKilled, 136 dragonKilledWatched, 137 baronKilled, 138 baronKilledWatched, 139 spiderKilled, 140 spiderKilledWatched, 141 altarCaptured, 142 altarCapturedWatched, 143 wardPlaced, 144 wardKilled. | |
| source | u32 | The unit the thing is credited to, or zero where none is. | |
| subject | u32 | The unit the thing happened to, or zero where none is named. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 16 or 17 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 24 | How much gold, as shown. |
| value | u32 | event = 26 or 81 or 82 or 83 or 85 or 86 or 141 or 142 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 27 | The critical strike’s damage, as shown. |
| spree | u32 | event = 48 | How many kills in a row, as shown. |
| earned | record | event = 25 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 44 or 45 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 46 or 47 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 47 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 67 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 36 or 37 or 40 or 135 or 136 or 137 or 138 or 139 or 140 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 40 or 135 or 136 or 137 or 138 or 139 or 140 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 84 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.side | u32 | The side of the player who pointed it out. |
Vectors (33)
altar-captured-on-3-11, altar-captured-watched-on-3-11, baron-killed-on-3-11, baron-killed-watched-on-3-11, buff-on-3-11, consumable-bought-on-3-11, critical-strike-on-3-11, crowd-control-on-3-11, damage-dealt-on-3-11, damage-taken-on-3-11, death-assist-on-3-11, died-on-3-11, dragon-killed-on-3-11, dragon-killed-watched-on-3-11, gold-earned-on-3-11, gold-spent-on-3-11, heal-cast-on-3-11, heal-on-3-11, item-bought-on-3-11, item-callout-on-3-11, item-changed-on-3-11, item-removed-on-3-11, item-sold-on-3-11, killing-spree-on-3-11, monster-killed-on-3-11, one-on-3-11, removed-on-3-11, spawned-on-3-11, spider-killed-on-3-11, spider-killed-watched-on-3-11, turret-damaged-on-3-11, turret-died-on-3-11, undo-changed-on-3-11
In 3.12
Command 68 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 148, and so which fields follow. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 7 championKillUnseen, 9 singleKill, 10 doubleKill, 16 damageTaken, 17 damageDealt, 24 goldSpent, 25 goldEarned, 26 consumableBought, 27 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 nexusKilled, 43 nexusDied, 44 heal, 45 healCast, 46 buff, 47 crowdControl, 48 killingSpree, 55 killDuringSpree, 62 doubleKillDuringSpree, 63 tripleKillDuringSpree, 64 quadraKillDuringSpree, 67 deathAssist, 68 playerQuit, 69 playerLeft, 70 playerReconnected, 85 itemBought, 86 itemSold, 87 itemRemoved, 88 itemCallout, 89 itemChanged, 90 undoChanged, 109 minionsSpawned, 110 welcome, 111 startNoticeTwo, 112 startNoticeThree, 116 scoreboardOpened, 139 dragonKilled, 140 dragonKilledWatched, 141 baronKilled, 142 baronKilledWatched, 143 spiderKilled, 144 spiderKilledWatched, 145 altarCaptured, 146 altarCapturedWatched, 147 wardPlaced, 148 wardKilled. | |
| source | u32 | The unit the thing is credited to, or zero where none is. | |
| subject | u32 | The unit the thing happened to, or zero where none is named. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 16 or 17 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 24 | How much gold, as shown. |
| value | u32 | event = 26 or 85 or 86 or 87 or 89 or 90 or 145 or 146 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 27 | The critical strike’s damage, as shown. |
| spree | u32 | event = 48 | How many kills in a row, as shown. |
| earned | record | event = 25 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 44 or 45 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 46 or 47 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 47 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 67 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 36 or 37 or 38 or 40 or 139 or 140 or 141 or 142 or 143 or 144 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 40 or 139 or 140 or 141 or 142 or 143 or 144 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 88 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 24 | As 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.second | bytes, 24 | As 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.side | u32 | The side of the player who pointed it out. |
Vectors (34)
altar-captured-on-3-12, altar-captured-watched-on-3-12, baron-killed-on-3-12, baron-killed-watched-on-3-12, buff-on-3-12, consumable-bought-on-3-12, critical-strike-on-3-12, crowd-control-on-3-12, damage-dealt-on-3-12, damage-taken-on-3-12, death-assist-on-3-12, died-on-3-12, dragon-killed-on-3-12, dragon-killed-watched-on-3-12, gold-earned-on-3-12, gold-spent-on-3-12, heal-cast-on-3-12, heal-on-3-12, item-bought-on-3-12, item-callout-on-3-12, item-changed-on-3-12, item-removed-on-3-12, item-sold-on-3-12, killing-spree-on-3-12, minion-killed-on-3-12, monster-killed-on-3-12, one-on-3-12, removed-on-3-12, spawned-on-3-12, spider-killed-on-3-12, spider-killed-watched-on-3-12, turret-damaged-on-3-12, turret-died-on-3-12, undo-changed-on-3-12
In 3.13
Command 68 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 151, 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, 110 minionsSpawned, 111 welcome, 112 startNoticeTwo, 113 startNoticeThree, 117 scoreboardOpened, 140 dragonKilled, 141 dragonKilledWatched, 142 dragonStolen, 143 baronKilled, 144 baronKilledWatched, 145 baronStolen, 146 spiderKilled, 147 spiderKilledWatched, 148 altarCaptured, 149 altarCapturedWatched, 150 wardPlaced, 151 wardKilled. | |
| source | u32 | The unit the thing is credited to, or zero where none is. | |
| subject | u32 | The unit the thing happened to, or zero where none is named. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 15 or 16 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 23 | How much gold, as shown. |
| value | u32 | event = 25 or 86 or 87 or 88 or 90 or 91 or 148 or 149 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| spree | u32 | event = 49 | How many kills in a row, as shown. |
| earned | record | event = 24 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 45 or 46 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 47 or 48 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 48 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 68 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 35 or 36 or 37 or 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 89 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 24 | As 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.second | bytes, 24 | As 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.side | u32 | The side of the player who pointed it out. |
Vectors (36)
altar-captured-on-3-13, altar-captured-watched-on-3-13, baron-killed-on-3-13, baron-killed-watched-on-3-13, baron-stolen-on-3-13, buff-on-3-13, consumable-bought-on-3-13, critical-strike-on-3-13, crowd-control-on-3-13, damage-dealt-on-3-13, damage-taken-on-3-13, death-assist-on-3-13, died-on-3-13, dragon-killed-on-3-13, dragon-killed-watched-on-3-13, dragon-stolen-on-3-13, gold-earned-on-3-13, gold-spent-on-3-13, heal-cast-on-3-13, heal-on-3-13, item-bought-on-3-13, item-callout-on-3-13, item-changed-on-3-13, item-removed-on-3-13, item-sold-on-3-13, killing-spree-on-3-13, minion-killed-on-3-13, monster-killed-on-3-13, one-on-3-13, removed-on-3-13, spawned-on-3-13, spider-killed-on-3-13, spider-killed-watched-on-3-13, turret-damaged-on-3-13, turret-died-on-3-13, undo-changed-on-3-13
In 3.14
Command 68 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 152, 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, 141 dragonKilled, 142 dragonKilledWatched, 143 dragonStolen, 144 baronKilled, 145 baronKilledWatched, 146 baronStolen, 147 spiderKilled, 148 spiderKilledWatched, 149 altarCaptured, 150 altarCapturedWatched, 151 wardPlaced, 152 wardKilled. | |
| source | u32 | The unit the thing is credited to, or zero where none is. | |
| subject | u32 | The unit the thing happened to, or zero where none is named. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 15 or 16 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 23 | How much gold, as shown. |
| value | u32 | event = 25 or 86 or 87 or 88 or 90 or 91 or 149 or 150 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| spree | u32 | event = 49 | How many kills in a row, as shown. |
| earned | record | event = 24 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| earned.subDetail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 45 or 46 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 47 or 48 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 48 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 68 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 35 or 36 or 37 or 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 89 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 24 | As 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.second | bytes, 24 | As 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.side | u32 | The side of the player who pointed it out. | |
| substitution | record | event = 92 | An item the shop shows another in place of. |
| substitution.enabled | u8 | Nonzero to show the substitute in place of the original from now on; zero to stop. | |
| substitution.original | u32 | The item replaced. | |
| substitution.substitute | u32 | The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original. |
Vectors (37)
altar-captured-on-3-14, altar-captured-watched-on-3-14, baron-killed-on-3-14, baron-killed-watched-on-3-14, baron-stolen-on-3-14, buff-on-3-14, consumable-bought-on-3-14, critical-strike-on-3-14, crowd-control-on-3-14, damage-dealt-on-3-14, damage-taken-on-3-14, death-assist-on-3-14, died-on-3-14, dragon-killed-on-3-14, dragon-killed-watched-on-3-14, dragon-stolen-on-3-14, gold-earned-on-3-14, gold-spent-on-3-14, heal-cast-on-3-14, heal-on-3-14, item-bought-on-3-14, item-callout-on-3-14, item-changed-on-3-14, item-removed-on-3-14, item-sold-on-3-14, item-substituted-on-3-14, killing-spree-on-3-14, minion-killed-on-3-14, monster-killed-on-3-14, one-on-3-14, removed-on-3-14, spawned-on-3-14, spider-killed-on-3-14, spider-killed-watched-on-3-14, turret-damaged-on-3-14, turret-died-on-3-14, undo-changed-on-3-14
In 3.15
Command 68 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 154, 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. | |
| source | u32 | The unit the thing is credited to, or zero where none is. | |
| subject | u32 | The unit the thing happened to, or zero where none is named. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 15 or 16 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 23 | How much gold, as shown. |
| value | u32 | event = 25 or 86 or 87 or 88 or 90 or 91 or 151 or 152 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| spree | u32 | event = 49 | How many kills in a row, as shown. |
| earned | record | event = 24 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| earned.subDetail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 45 or 46 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 47 or 48 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 48 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 68 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | 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 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 89 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 24 | As 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.second | bytes, 24 | As 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.side | u32 | The side of the player who pointed it out. | |
| substitution | record | event = 92 | An item the shop shows another in place of. |
| substitution.enabled | u8 | Nonzero to show the substitute in place of the original from now on; zero to stop. | |
| substitution.original | u32 | The item replaced. | |
| substitution.substitute | u32 | The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original. |
Vectors (37)
altar-captured-on-3-15, altar-captured-watched-on-3-15, baron-killed-on-3-15, baron-killed-watched-on-3-15, baron-stolen-on-3-15, buff-on-3-15, consumable-bought-on-3-15, critical-strike-on-3-15, crowd-control-on-3-15, damage-dealt-on-3-15, damage-taken-on-3-15, death-assist-on-3-15, died-on-3-15, dragon-killed-on-3-15, dragon-killed-watched-on-3-15, dragon-stolen-on-3-15, gold-earned-on-3-15, gold-spent-on-3-15, heal-cast-on-3-15, heal-on-3-15, item-bought-on-3-15, item-callout-on-3-15, item-changed-on-3-15, item-removed-on-3-15, item-sold-on-3-15, item-substituted-on-3-15, killing-spree-on-3-15, minion-killed-on-3-15, monster-killed-on-3-15, one-on-3-15, removed-on-3-15, spawned-on-3-15, spider-killed-on-3-15, spider-killed-watched-on-3-15, turret-damaged-on-3-15, turret-died-on-3-15, undo-changed-on-3-15
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.
In 3.01
Command 163 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 123, and so which fields follow. Values: 0 removed, 1 died, 3 championDied, 5 championKill, 7 singleKill, 8 doubleKill, 14 damageTaken, 15 damageDealt, 22 goldSpent, 23 goldEarned, 24 consumableBought, 25 criticalStrike, 28 inhibitorKilled, 29 inhibitorDied, 30 inhibitorRespawningSoon, 32 turretKilled, 33 turretDied, 34 minionKilled, 35 minionDenied, 36 monsterKilled, 37 largeMonsterKilled, 38 nexusKilled, 39 nexusDied, 40 heal, 41 healCast, 42 buff, 43 killingSpree, 50 killDuringSpree, 57 doubleKillDuringSpree, 58 tripleKillDuringSpree, 59 quadraKillDuringSpree, 62 deathAssist, 63 playerQuit, 64 playerLeft, 65 playerReconnected, 76 itemBought, 77 itemCallout, 78 itemChanged, 88 minionsSpawned, 89 welcome, 90 startNoticeTwo, 91 startNoticeThree, 95 scoreboardOpened, 116 dragonKilled, 117 dragonKilledWatched, 118 baronKilled, 119 baronKilledWatched, 120 spiderKilled, 121 spiderKilledWatched, 122 altarCaptured, 123 altarCapturedWatched. | |
| subject | u32 | The unit the event is about. | |
| stage | u8 | event = 4 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 14 or 15 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 22 | How much gold, as shown. |
| value | u32 | event = 24 or 76 or 78 or 122 or 123 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 25 | The critical strike’s damage, as shown. |
| spree | u32 | event = 43 | How many kills in a row, as shown. |
| earned | record | event = 23 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| heal | record | event = 40 or 41 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 42 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| assist | record | event = 62 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 116 or 117 or 118 or 119 or 120 or 121 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| callout | record | event = 77 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.side | u32 | The side of the player who pointed it out. |
Vectors (25)
altar-captured-on-3-01, altar-captured-watched-on-3-01, baron-killed-on-3-01, baron-killed-watched-on-3-01, buff-on-3-01, consumable-bought-on-3-01, critical-strike-on-3-01, damage-dealt-on-3-01, damage-taken-on-3-01, death-assist-on-3-01, died-on-3-01, dragon-killed-on-3-01, dragon-killed-watched-on-3-01, gold-earned-on-3-01, gold-spent-on-3-01, heal-cast-on-3-01, heal-on-3-01, item-bought-on-3-01, item-callout-on-3-01, item-changed-on-3-01, killing-spree-on-3-01, one-on-3-01, removed-on-3-01, spider-killed-on-3-01, spider-killed-watched-on-3-01
In 3.02–3.03
Command 163 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 132, and so which fields follow. Values: 0 removed, 1 died, 3 championDied, 5 championKill, 7 singleKill, 8 doubleKill, 14 damageTaken, 15 damageDealt, 22 goldSpent, 23 goldEarned, 24 consumableBought, 25 criticalStrike, 28 inhibitorKilled, 29 inhibitorDied, 30 inhibitorRespawningSoon, 32 turretKilled, 33 turretDied, 34 minionKilled, 35 minionDenied, 36 monsterKilled, 37 largeMonsterKilled, 38 nexusKilled, 39 nexusDied, 40 heal, 41 healCast, 42 buff, 43 killingSpree, 50 killDuringSpree, 57 doubleKillDuringSpree, 58 tripleKillDuringSpree, 59 quadraKillDuringSpree, 62 deathAssist, 63 playerQuit, 64 playerLeft, 65 playerReconnected, 76 itemBought, 77 itemCallout, 78 itemChanged, 97 minionsSpawned, 98 welcome, 99 startNoticeTwo, 100 startNoticeThree, 104 scoreboardOpened, 125 dragonKilled, 126 dragonKilledWatched, 127 baronKilled, 128 baronKilledWatched, 129 spiderKilled, 130 spiderKilledWatched, 131 altarCaptured, 132 altarCapturedWatched. | |
| subject | u32 | The unit the event is about. | |
| stage | u8 | event = 4 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 14 or 15 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 22 | How much gold, as shown. |
| value | u32 | event = 24 or 76 or 78 or 131 or 132 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 25 | The critical strike’s damage, as shown. |
| spree | u32 | event = 43 | How many kills in a row, as shown. |
| earned | record | event = 23 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| heal | record | event = 40 or 41 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 42 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| assist | record | event = 62 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 125 or 126 or 127 or 128 or 129 or 130 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| callout | record | event = 77 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.side | u32 | The side of the player who pointed it out. |
Vectors (25)
altar-captured-on-3-03, altar-captured-watched-on-3-03, baron-killed-on-3-03, baron-killed-watched-on-3-03, buff-on-3-03, consumable-bought-on-3-03, critical-strike-on-3-03, damage-dealt-on-3-03, damage-taken-on-3-03, death-assist-on-3-03, died-on-3-03, dragon-killed-on-3-03, dragon-killed-watched-on-3-03, gold-earned-on-3-03, gold-spent-on-3-03, heal-cast-on-3-03, heal-on-3-03, item-bought-on-3-03, item-callout-on-3-03, item-changed-on-3-03, killing-spree-on-3-03, one-on-3-03, removed-on-3-03, spider-killed-on-3-03, spider-killed-watched-on-3-03
In 3.04–3.5
Command 163 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 135, 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 killingSpree, 51 killDuringSpree, 58 doubleKillDuringSpree, 59 tripleKillDuringSpree, 60 quadraKillDuringSpree, 63 deathAssist, 64 playerQuit, 65 playerLeft, 66 playerReconnected, 77 itemBought, 78 itemCallout, 79 itemChanged, 98 minionsSpawned, 99 welcome, 100 startNoticeTwo, 101 startNoticeThree, 105 scoreboardOpened, 126 dragonKilled, 127 dragonKilledWatched, 128 baronKilled, 129 baronKilledWatched, 130 spiderKilled, 131 spiderKilledWatched, 132 altarCaptured, 133 altarCapturedWatched, 134 wardPlaced, 135 wardKilled. | |
| subject | u32 | The unit the event is about. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 15 or 16 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 23 | How much gold, as shown. |
| value | u32 | event = 25 or 77 or 79 or 132 or 133 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| spree | u32 | event = 44 | How many kills in a row, as shown. |
| earned | record | event = 24 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| heal | record | event = 41 or 42 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 43 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| assist | record | event = 63 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 34 or 126 or 127 or 128 or 129 or 130 or 131 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 126 or 127 or 128 or 129 or 130 or 131 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| callout | record | event = 78 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.side | u32 | The side of the player who pointed it out. |
Vectors (27)
altar-captured-on-3-5, altar-captured-watched-on-3-5, baron-killed-on-3-5, baron-killed-watched-on-3-5, buff-on-3-5, consumable-bought-on-3-5, critical-strike-on-3-5, damage-dealt-on-3-5, damage-taken-on-3-5, death-assist-on-3-5, died-on-3-5, dragon-killed-on-3-5, dragon-killed-watched-on-3-5, gold-earned-on-3-5, gold-spent-on-3-5, heal-cast-on-3-5, heal-on-3-5, item-bought-on-3-5, item-callout-on-3-5, item-changed-on-3-5, killing-spree-on-3-5, one-on-3-5, removed-on-3-5, spawned-on-3-5, spider-killed-on-3-5, spider-killed-watched-on-3-5, turret-died-on-3-5
In 3.6–3.7
Command 163 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 138, 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 101 minionsSpawned, 102 welcome, 103 startNoticeTwo, 104 startNoticeThree, 108 scoreboardOpened, 129 dragonKilled, 130 dragonKilledWatched, 131 baronKilled, 132 baronKilledWatched, 133 spiderKilled, 134 spiderKilledWatched, 135 altarCaptured, 136 altarCapturedWatched, 137 wardPlaced, 138 wardKilled. | |
| subject | u32 | The unit the event is about. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 15 or 16 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 23 | How much gold, as shown. |
| value | u32 | event = 25 or 78 or 79 or 80 or 82 or 135 or 136 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| spree | u32 | event = 45 | How many kills in a row, as shown. |
| earned | record | event = 24 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 41 or 42 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 43 or 44 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 44 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 64 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 34 or 37 or 129 or 130 or 131 or 132 or 133 or 134 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 37 or 129 or 130 or 131 or 132 or 133 or 134 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 81 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.side | u32 | The side of the player who pointed it out. |
Vectors (31)
altar-captured-on-3-7, altar-captured-watched-on-3-7, baron-killed-on-3-7, baron-killed-watched-on-3-7, buff-on-3-7, consumable-bought-on-3-7, critical-strike-on-3-7, crowd-control-on-3-7, damage-dealt-on-3-7, damage-taken-on-3-7, death-assist-on-3-7, died-on-3-7, dragon-killed-on-3-7, dragon-killed-watched-on-3-7, gold-earned-on-3-7, gold-spent-on-3-7, heal-cast-on-3-7, heal-on-3-7, item-bought-on-3-7, item-callout-on-3-7, item-changed-on-3-7, item-removed-on-3-7, item-sold-on-3-7, killing-spree-on-3-7, monster-killed-on-3-7, one-on-3-7, removed-on-3-7, spawned-on-3-7, spider-killed-on-3-7, spider-killed-watched-on-3-7, turret-died-on-3-7
In 3.8
Command 163 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 140, 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 101 minionsSpawned, 102 welcome, 103 startNoticeTwo, 104 startNoticeThree, 108 scoreboardOpened, 131 dragonKilled, 132 dragonKilledWatched, 133 baronKilled, 134 baronKilledWatched, 135 spiderKilled, 136 spiderKilledWatched, 137 altarCaptured, 138 altarCapturedWatched, 139 wardPlaced, 140 wardKilled. | |
| subject | u32 | The unit the event is about. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 15 or 16 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 23 | How much gold, as shown. |
| value | u32 | event = 25 or 78 or 79 or 80 or 82 or 137 or 138 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| spree | u32 | event = 45 | How many kills in a row, as shown. |
| earned | record | event = 24 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 41 or 42 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 43 or 44 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 44 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 64 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 34 or 37 or 131 or 132 or 133 or 134 or 135 or 136 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 37 or 131 or 132 or 133 or 134 or 135 or 136 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 81 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.side | u32 | The side of the player who pointed it out. |
Vectors (31)
altar-captured-on-3-8, altar-captured-watched-on-3-8, baron-killed-on-3-8, baron-killed-watched-on-3-8, buff-on-3-8, consumable-bought-on-3-8, critical-strike-on-3-8, crowd-control-on-3-8, damage-dealt-on-3-8, damage-taken-on-3-8, death-assist-on-3-8, died-on-3-8, dragon-killed-on-3-8, dragon-killed-watched-on-3-8, gold-earned-on-3-8, gold-spent-on-3-8, heal-cast-on-3-8, heal-on-3-8, item-bought-on-3-8, item-callout-on-3-8, item-changed-on-3-8, item-removed-on-3-8, item-sold-on-3-8, killing-spree-on-3-8, monster-killed-on-3-8, one-on-3-8, removed-on-3-8, spawned-on-3-8, spider-killed-on-3-8, spider-killed-watched-on-3-8, turret-died-on-3-8
In 3.9
Command 163 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 141, 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 83 undoChanged, 102 minionsSpawned, 103 welcome, 104 startNoticeTwo, 105 startNoticeThree, 109 scoreboardOpened, 132 dragonKilled, 133 dragonKilledWatched, 134 baronKilled, 135 baronKilledWatched, 136 spiderKilled, 137 spiderKilledWatched, 138 altarCaptured, 139 altarCapturedWatched, 140 wardPlaced, 141 wardKilled. | |
| subject | u32 | The unit the event is about. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 15 or 16 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack, 5 cheat. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 23 | How much gold, as shown. |
| value | u32 | event = 25 or 78 or 79 or 80 or 82 or 83 or 138 or 139 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| spree | u32 | event = 45 | How many kills in a row, as shown. |
| earned | record | event = 24 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 41 or 42 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack, 5 cheat. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 43 or 44 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 item, 2 buff, 3 passive, 4 basicAttack, 5 cheat. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 44 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 64 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 34 or 37 or 132 or 133 or 134 or 135 or 136 or 137 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 37 or 132 or 133 or 134 or 135 or 136 or 137 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 81 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.side | u32 | The side of the player who pointed it out. |
Vectors (32)
altar-captured-on-3-9, altar-captured-watched-on-3-9, baron-killed-on-3-9, baron-killed-watched-on-3-9, buff-on-3-9, consumable-bought-on-3-9, critical-strike-on-3-9, crowd-control-on-3-9, damage-dealt-on-3-9, damage-taken-on-3-9, death-assist-on-3-9, died-on-3-9, dragon-killed-on-3-9, dragon-killed-watched-on-3-9, gold-earned-on-3-9, gold-spent-on-3-9, heal-cast-on-3-9, heal-on-3-9, item-bought-on-3-9, item-callout-on-3-9, item-changed-on-3-9, item-removed-on-3-9, item-sold-on-3-9, killing-spree-on-3-9, monster-killed-on-3-9, one-on-3-9, removed-on-3-9, spawned-on-3-9, spider-killed-on-3-9, spider-killed-watched-on-3-9, turret-died-on-3-9, undo-changed-on-3-9
In 3.10
Command 163 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 141, 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 83 undoChanged, 102 minionsSpawned, 103 welcome, 104 startNoticeTwo, 105 startNoticeThree, 109 scoreboardOpened, 132 dragonKilled, 133 dragonKilledWatched, 134 baronKilled, 135 baronKilledWatched, 136 spiderKilled, 137 spiderKilledWatched, 138 altarCaptured, 139 altarCapturedWatched, 140 wardPlaced, 141 wardKilled. | |
| subject | u32 | The unit the event is about. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 15 or 16 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 23 | How much gold, as shown. |
| value | u32 | event = 25 or 78 or 79 or 80 or 82 or 83 or 138 or 139 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| spree | u32 | event = 45 | How many kills in a row, as shown. |
| earned | record | event = 24 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 41 or 42 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 43 or 44 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 44 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 64 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 34 or 37 or 132 or 133 or 134 or 135 or 136 or 137 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 37 or 132 or 133 or 134 or 135 or 136 or 137 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 81 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.side | u32 | The side of the player who pointed it out. |
Vectors (32)
altar-captured-on-3-10, altar-captured-watched-on-3-10, baron-killed-on-3-10, baron-killed-watched-on-3-10, buff-on-3-10, consumable-bought-on-3-10, critical-strike-on-3-10, crowd-control-on-3-10, damage-dealt-on-3-10, damage-taken-on-3-10, death-assist-on-3-10, died-on-3-10, dragon-killed-on-3-10, dragon-killed-watched-on-3-10, gold-earned-on-3-10, gold-spent-on-3-10, heal-cast-on-3-10, heal-on-3-10, item-bought-on-3-10, item-callout-on-3-10, item-changed-on-3-10, item-removed-on-3-10, item-sold-on-3-10, killing-spree-on-3-10, monster-killed-on-3-10, one-on-3-10, removed-on-3-10, spawned-on-3-10, spider-killed-on-3-10, spider-killed-watched-on-3-10, turret-died-on-3-10, undo-changed-on-3-10
In 3.11
Command 163 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 144, and so which fields follow. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 7 championKillUnseen, 9 singleKill, 10 doubleKill, 16 damageTaken, 17 damageDealt, 24 goldSpent, 25 goldEarned, 26 consumableBought, 27 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 nexusKilled, 43 nexusDied, 44 heal, 45 healCast, 46 buff, 47 crowdControl, 48 killingSpree, 55 killDuringSpree, 62 doubleKillDuringSpree, 63 tripleKillDuringSpree, 64 quadraKillDuringSpree, 67 deathAssist, 68 playerQuit, 69 playerLeft, 70 playerReconnected, 81 itemBought, 82 itemSold, 83 itemRemoved, 84 itemCallout, 85 itemChanged, 86 undoChanged, 105 minionsSpawned, 106 welcome, 107 startNoticeTwo, 108 startNoticeThree, 112 scoreboardOpened, 135 dragonKilled, 136 dragonKilledWatched, 137 baronKilled, 138 baronKilledWatched, 139 spiderKilled, 140 spiderKilledWatched, 141 altarCaptured, 142 altarCapturedWatched, 143 wardPlaced, 144 wardKilled. | |
| subject | u32 | The unit the event is about. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 16 or 17 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 24 | How much gold, as shown. |
| value | u32 | event = 26 or 81 or 82 or 83 or 85 or 86 or 141 or 142 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 27 | The critical strike’s damage, as shown. |
| spree | u32 | event = 48 | How many kills in a row, as shown. |
| earned | record | event = 25 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 44 or 45 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 46 or 47 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 47 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 67 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 36 or 37 or 40 or 135 or 136 or 137 or 138 or 139 or 140 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 40 or 135 or 136 or 137 or 138 or 139 or 140 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 84 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.second | bytes, 28 | As a client lays a short text out: four bytes it ignores, up to fifteen characters ended by a zero byte in the next sixteen, the length as a u32, then 15 as a u32. | |
| callout.side | u32 | The side of the player who pointed it out. |
Vectors (33)
altar-captured-on-3-11, altar-captured-watched-on-3-11, baron-killed-on-3-11, baron-killed-watched-on-3-11, buff-on-3-11, consumable-bought-on-3-11, critical-strike-on-3-11, crowd-control-on-3-11, damage-dealt-on-3-11, damage-taken-on-3-11, death-assist-on-3-11, died-on-3-11, dragon-killed-on-3-11, dragon-killed-watched-on-3-11, gold-earned-on-3-11, gold-spent-on-3-11, heal-cast-on-3-11, heal-on-3-11, item-bought-on-3-11, item-callout-on-3-11, item-changed-on-3-11, item-removed-on-3-11, item-sold-on-3-11, killing-spree-on-3-11, monster-killed-on-3-11, one-on-3-11, removed-on-3-11, spawned-on-3-11, spider-killed-on-3-11, spider-killed-watched-on-3-11, turret-damaged-on-3-11, turret-died-on-3-11, undo-changed-on-3-11
In 3.12
Command 163 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 148, and so which fields follow. Values: 0 removed, 1 spawned, 2 died, 4 championDied, 6 championKill, 7 championKillUnseen, 9 singleKill, 10 doubleKill, 16 damageTaken, 17 damageDealt, 24 goldSpent, 25 goldEarned, 26 consumableBought, 27 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 nexusKilled, 43 nexusDied, 44 heal, 45 healCast, 46 buff, 47 crowdControl, 48 killingSpree, 55 killDuringSpree, 62 doubleKillDuringSpree, 63 tripleKillDuringSpree, 64 quadraKillDuringSpree, 67 deathAssist, 68 playerQuit, 69 playerLeft, 70 playerReconnected, 85 itemBought, 86 itemSold, 87 itemRemoved, 88 itemCallout, 89 itemChanged, 90 undoChanged, 109 minionsSpawned, 110 welcome, 111 startNoticeTwo, 112 startNoticeThree, 116 scoreboardOpened, 139 dragonKilled, 140 dragonKilledWatched, 141 baronKilled, 142 baronKilledWatched, 143 spiderKilled, 144 spiderKilledWatched, 145 altarCaptured, 146 altarCapturedWatched, 147 wardPlaced, 148 wardKilled. | |
| subject | u32 | The unit the event is about. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 16 or 17 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 24 | How much gold, as shown. |
| value | u32 | event = 26 or 85 or 86 or 87 or 89 or 90 or 145 or 146 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 27 | The critical strike’s damage, as shown. |
| spree | u32 | event = 48 | How many kills in a row, as shown. |
| earned | record | event = 25 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 44 or 45 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 46 or 47 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 47 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 67 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 36 or 37 or 38 or 40 or 139 or 140 or 141 or 142 or 143 or 144 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 40 or 139 or 140 or 141 or 142 or 143 or 144 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 88 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 24 | As 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.second | bytes, 24 | As 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.side | u32 | The side of the player who pointed it out. |
Vectors (34)
altar-captured-on-3-12, altar-captured-watched-on-3-12, baron-killed-on-3-12, baron-killed-watched-on-3-12, buff-on-3-12, consumable-bought-on-3-12, critical-strike-on-3-12, crowd-control-on-3-12, damage-dealt-on-3-12, damage-taken-on-3-12, death-assist-on-3-12, died-on-3-12, dragon-killed-on-3-12, dragon-killed-watched-on-3-12, gold-earned-on-3-12, gold-spent-on-3-12, heal-cast-on-3-12, heal-on-3-12, item-bought-on-3-12, item-callout-on-3-12, item-changed-on-3-12, item-removed-on-3-12, item-sold-on-3-12, killing-spree-on-3-12, minion-killed-on-3-12, monster-killed-on-3-12, one-on-3-12, removed-on-3-12, spawned-on-3-12, spider-killed-on-3-12, spider-killed-watched-on-3-12, turret-damaged-on-3-12, turret-died-on-3-12, undo-changed-on-3-12
In 3.13
Command 163 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 151, 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, 110 minionsSpawned, 111 welcome, 112 startNoticeTwo, 113 startNoticeThree, 117 scoreboardOpened, 140 dragonKilled, 141 dragonKilledWatched, 142 dragonStolen, 143 baronKilled, 144 baronKilledWatched, 145 baronStolen, 146 spiderKilled, 147 spiderKilledWatched, 148 altarCaptured, 149 altarCapturedWatched, 150 wardPlaced, 151 wardKilled. | |
| subject | u32 | The unit the event is about. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 15 or 16 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 23 | How much gold, as shown. |
| value | u32 | event = 25 or 86 or 87 or 88 or 90 or 91 or 148 or 149 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| spree | u32 | event = 49 | How many kills in a row, as shown. |
| earned | record | event = 24 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 45 or 46 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 47 or 48 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 48 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 68 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 35 or 36 or 37 or 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 89 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 24 | As 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.second | bytes, 24 | As 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.side | u32 | The side of the player who pointed it out. |
Vectors (36)
altar-captured-on-3-13, altar-captured-watched-on-3-13, baron-killed-on-3-13, baron-killed-watched-on-3-13, baron-stolen-on-3-13, buff-on-3-13, consumable-bought-on-3-13, critical-strike-on-3-13, crowd-control-on-3-13, damage-dealt-on-3-13, damage-taken-on-3-13, death-assist-on-3-13, died-on-3-13, dragon-killed-on-3-13, dragon-killed-watched-on-3-13, dragon-stolen-on-3-13, gold-earned-on-3-13, gold-spent-on-3-13, heal-cast-on-3-13, heal-on-3-13, item-bought-on-3-13, item-callout-on-3-13, item-changed-on-3-13, item-removed-on-3-13, item-sold-on-3-13, killing-spree-on-3-13, minion-killed-on-3-13, monster-killed-on-3-13, one-on-3-13, removed-on-3-13, spawned-on-3-13, spider-killed-on-3-13, spider-killed-watched-on-3-13, turret-damaged-on-3-13, turret-died-on-3-13, undo-changed-on-3-13
In 3.14
Command 163 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 152, 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, 141 dragonKilled, 142 dragonKilledWatched, 143 dragonStolen, 144 baronKilled, 145 baronKilledWatched, 146 baronStolen, 147 spiderKilled, 148 spiderKilledWatched, 149 altarCaptured, 150 altarCapturedWatched, 151 wardPlaced, 152 wardKilled. | |
| subject | u32 | The unit the event is about. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 15 or 16 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 23 | How much gold, as shown. |
| value | u32 | event = 25 or 86 or 87 or 88 or 90 or 91 or 149 or 150 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| spree | u32 | event = 49 | How many kills in a row, as shown. |
| earned | record | event = 24 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| earned.subDetail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 45 or 46 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 47 or 48 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 48 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 68 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | event = 1 or 2 or 35 or 36 or 37 or 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 89 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 24 | As 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.second | bytes, 24 | As 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.side | u32 | The side of the player who pointed it out. | |
| substitution | record | event = 92 | An item the shop shows another in place of. |
| substitution.enabled | u8 | Nonzero to show the substitute in place of the original from now on; zero to stop. | |
| substitution.original | u32 | The item replaced. | |
| substitution.substitute | u32 | The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original. |
Vectors (37)
altar-captured-on-3-14, altar-captured-watched-on-3-14, baron-killed-on-3-14, baron-killed-watched-on-3-14, baron-stolen-on-3-14, buff-on-3-14, consumable-bought-on-3-14, critical-strike-on-3-14, crowd-control-on-3-14, damage-dealt-on-3-14, damage-taken-on-3-14, death-assist-on-3-14, died-on-3-14, dragon-killed-on-3-14, dragon-killed-watched-on-3-14, dragon-stolen-on-3-14, gold-earned-on-3-14, gold-spent-on-3-14, heal-cast-on-3-14, heal-on-3-14, item-bought-on-3-14, item-callout-on-3-14, item-changed-on-3-14, item-removed-on-3-14, item-sold-on-3-14, item-substituted-on-3-14, killing-spree-on-3-14, minion-killed-on-3-14, monster-killed-on-3-14, one-on-3-14, removed-on-3-14, spawned-on-3-14, spider-killed-on-3-14, spider-killed-watched-on-3-14, turret-damaged-on-3-14, turret-died-on-3-14, undo-changed-on-3-14
In 3.15
Command 163 on events, sent by the server, reliable.
| Field | Type | Present when | What it is |
|---|---|---|---|
| event | u8 | Which event, from 0 to 154, 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. | |
| subject | u32 | The unit the event is about. | |
| stage | u8 | event = 5 | A client reads it and shows nothing for it; a server writes zero. |
| damage | record | event = 15 or 16 | How much harm, and from what. |
| damage.physical | f32 | Physical damage. | |
| damage.magical | f32 | Magical damage. | |
| damage.true | f32 | True damage. | |
| damage.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| damage.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| damage.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| damage.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| damage.parent | 2-byte bits | Where the spell or effect came from. | |
| damage.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| damage.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| damage.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| damage.parent.unused | bit 15 | Unused; a server writes zero. | |
| spent | u32 | event = 23 | How much gold, as shown. |
| value | u32 | event = 25 or 86 or 87 or 88 or 90 or 91 or 151 or 152 | What it carries is not recorded for this range; a client does not show it. |
| critical | f32 | event = 26 | The critical strike’s damage, as shown. |
| spree | u32 | event = 49 | How many kills in a row, as shown. |
| earned | record | event = 24 | Gold earned. |
| earned.gold | f32 | How much gold, as shown. | |
| earned.detail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| earned.subDetail | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal | record | event = 45 or 46 | How much health, and from what. |
| heal.amount | f32 | How much health, as shown. | |
| heal.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| heal.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| heal.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| heal.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| heal.parent | 2-byte bits | Where the spell or effect came from. | |
| heal.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| heal.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| heal.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| heal.parent.unused | bit 15 | Unused; a server writes zero. | |
| effect | record | event = 47 or 48 | The effect, and where it came from. |
| effect.sourceKind | u8 | What sort of source it was. Values: 0 spell, 1 named, 2 script, 3 passive, 4 basicAttack, 5 cheat. | |
| effect.script | u32 | The spell or effect, by the number its name gives, shown by name. | |
| effect.parentScript | u32 | The spell or effect it came from, by the number its name gives, shown by name. | |
| effect.parentCaster | u32 | What it carries is not recorded for this range; a server writes zero. | |
| effect.parent | 2-byte bits | Where the spell or effect came from. | |
| effect.parent.source | bit 0 to 3 | What sort of source the parent spell or effect is, numbered as sourceKind is. | |
| effect.parent.side | bit 4 to 7 | What it means is not recorded for this range; a server writes zero. | |
| effect.parent.category | bit 8 to 11 | A 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.spellLevel | bit 12 to 14 | The rank of the spell, as shown. | |
| effect.parent.unused | bit 15 | Unused; a server writes zero. | |
| extra | bytes, 8 | event = 48 | What it carries is not recorded for this range; a server writes zero. |
| assist | record | event = 68 | What one unit did toward a death. |
| assist.lastHit | f32 | When it last dealt damage, in match seconds. | |
| assist.physical | f32 | Physical damage it dealt. | |
| assist.magical | f32 | Magical damage it dealt. | |
| assist.true | f32 | True damage it dealt. | |
| assist.share | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.gold | f32 | What it carries is not recorded for this range; a server writes zero. | |
| assist.credited | u32 | What it carries is not recorded for this range; a server writes zero. | |
| kill | record | 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 | The reward, and who shared it. |
| kill.gold | f32 | The gold the kill gave. | |
| kill.assistCount | u32 | How many of the twelve places below name a unit. | |
| kill.assists | 12 × u32 | The units that helped, then zeros. | |
| monster | record | event = 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 | Who took the monster. |
| monster.skinHash | u32 | The number the name of the killer’s look gives. | |
| monster.skin | i32 | Which look the killer wears. | |
| monster.side | u32 | The side that took it. | |
| callout | record | event = 89 | The item a player pointed out, shown as the second name followed by the first in brackets. |
| callout.item | u32 | The item, shown by name and number. | |
| callout.quantity | u32 | How many, shown as two digits. | |
| callout.first | bytes, 24 | As 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.second | bytes, 24 | As 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.side | u32 | The side of the player who pointed it out. | |
| substitution | record | event = 92 | An item the shop shows another in place of. |
| substitution.enabled | u8 | Nonzero to show the substitute in place of the original from now on; zero to stop. | |
| substitution.original | u32 | The item replaced. | |
| substitution.substitute | u32 | The item shown in its place. A client reads it only where enabled is nonzero; a server otherwise repeats original. |
Vectors (37)
altar-captured-on-3-15, altar-captured-watched-on-3-15, baron-killed-on-3-15, baron-killed-watched-on-3-15, baron-stolen-on-3-15, buff-on-3-15, consumable-bought-on-3-15, critical-strike-on-3-15, crowd-control-on-3-15, damage-dealt-on-3-15, damage-taken-on-3-15, death-assist-on-3-15, died-on-3-15, dragon-killed-on-3-15, dragon-killed-watched-on-3-15, dragon-stolen-on-3-15, gold-earned-on-3-15, gold-spent-on-3-15, heal-cast-on-3-15, heal-on-3-15, item-bought-on-3-15, item-callout-on-3-15, item-changed-on-3-15, item-removed-on-3-15, item-sold-on-3-15, item-substituted-on-3-15, killing-spree-on-3-15, minion-killed-on-3-15, monster-killed-on-3-15, one-on-3-15, removed-on-3-15, spawned-on-3-15, spider-killed-on-3-15, spider-killed-watched-on-3-15, turret-damaged-on-3-15, turret-died-on-3-15, undo-changed-on-3-15
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 3.10–3.15
A client shows how many lines
ChatAllowanceleaves 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 3.10–3.15
A client shows no ping its server marks as throttled, and notes in its own chat that the player is pinging too often.
VoiceCommandandContextEmotechange 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).
In 3.10
A client never answers a
VoiceEventfor a voice tied to a unit. Any other it answers withVoiceEventDoneonce it has played it, where it asks for an answer, and at once where it cannot play it, whether it asks or not.
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.
In 3.01
Command 104 on chat, sent by either side, reliable.
| Field | Type | What it is |
|---|---|---|
| clientId | u32 | The client id of the sender. |
| netId | u32 | The 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. |
| localized | u8 | Whether 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. |
| audience | i32 | Who the message reaches. Values: 0 everyone, 1 team. |
| textLength | u32 | The length of the text, counted in bytes and excluding the byte that ends it. A client shows the text to its first zero byte. |
| text | text, sized by textLength | The line, at most 127 characters. |
| terminator | bytes, 1 | A zero byte closing the text. |
Vectors (1)
In 3.02–3.15
Command 104 on chat, sent by either side, reliable.
| Field | Type | What it is |
|---|---|---|
| clientId | u32 | The client id of the sender. |
| netId | u32 | The 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. |
| localized | u8 | Whether 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. |
| audience | i32 | Who the message reaches. Values: 0 everyone, 1 team. |
| paramsLength | u32 | How many bytes of the run that follows carry meaning. |
| textLength | u32 | 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. |
| params | bytes, 32 | Thirty 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. |
| text | text, sized by textLength | The text, textLength bytes of it. |
| terminator | bytes, 1 | A zero byte closing the text. |
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.
In every range of this book
Command 247 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| source | u32 | The unit the line is credited to, or zero where none is. |
| text | text, 512 bytes | The line itself. Written out in full and padded with zero bytes to the width above. |
Vectors (2)
ChatAllowance
What a server sends to limit a player’s chat, showing how many lines they have left. The header carries zero.
In 3.02–3.15
Command 249 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| linesLeft | i32 | How many lines are left. A client shows this number as sent. |
Vectors (1)
MapPing
What a client sends to mark a point on the map for the others. The header names no object: it carries zero.
In every range of this book
Command 86 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| x | f32 | Where on the map, along one ground axis, in world units. |
| z | f32 | Where on the map, along the other ground axis, in world units. |
| target | u32 | A network object the mark is on, or zero where it is on open ground. |
| kind | u8 | Which 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. |
PingPlaced
What a server sends to show a ping on the map to everyone meant to see it.
In every range of this book
Command 63 on events, sent by the server, reliable.
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.
| Field | Type | What it is |
|---|---|---|
| atX | f32 | Where the ping sits, along one ground axis, in world units. |
| atZ | f32 | Where it sits, along the other, in world units. |
| target | u32 | The unit pinged, or zero where a place was pinged instead. |
| source | u32 | The unit that placed it. |
| how | 1-byte bits | |
| how.category | bit 0 to 3 | Which sort of ping. |
| how.playSound | bit 4 | Set where the client plays a sound for it. |
| how.showInChat | bit 5 | Set where the client writes a line about it. |
| how.throttled | bit 6 | Set 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.speak | bit 7 | Set where the unit says something about it. |
PlayEmote
What a client sends to play an emote. The header names the sender’s champion.
In every range of this book
Command 71 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| emote | u8 | Which emote, by the number the client knows it as. Its four emote keys send 3, 1, 0 and 2, the numbers EmotePlayed plays. |
EmotePlayed
What a server sends to say a unit played an emote. The header names the champion playing the emote.
In every range of this book
Command 65 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| emote | u8 | 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. |
VoiceCommand
What a server sends about a voice command a champion gave. The header names the champion.
In every range of this book
Command 67 on events, sent by the server, reliable.
A client accepts it on a champion only, and it has no effect.
| Field | Type | What it is |
|---|---|---|
| padding1 | u16 | Padding before call. Unused; a server writes zero. |
| padding2 | u8 | Padding before call. Unused; a server writes zero. |
| call | u32 | Which call. |
| target | u32 | The unit the call is about. |
| flags | 1-byte bits | How it is shown. |
| flags.highlight | bit 0 | Set where the player’s icon is highlighted. |
| flags.ping | bit 1 | Set where it marks a ping. |
| flags.unused | bit 2 to 7 | Unused; a server writes zero. |
| padding3 | u16 | Padding after flags. Unused; a server writes zero. |
| padding4 | u8 | Padding after flags. Unused; a server writes zero. |
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.
In every range of this book
Command 243 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| emote | u8 | Which emote. |
| parameter | u32 | A hashed parameter. |
| flags | u8 | Flags with no meaning given. |
Vectors (1)
SoundPlayed
What a server sends to play a sound once. The header carries zero.
In every range of this book
Command 66 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| sound | text, 1024 bytes | The sound event’s name. The text ends at its first zero byte, which falls within the field. |
| owner | u32 | The object to play it at, where a client knows one by this id; otherwise, or for zero, the sound has no place. |
VoiceEvent
What a server sends to play a voice event. The header carries zero.
In every range of this book
Command 121 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| folder | text, 64 bytes | The event’s folder. It has no effect where kind is 1. |
| event | text, 64 bytes | The event’s name; for kind 1, the conversation’s. |
| callback | u8 | For 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. |
| kind | u8 | What sort of event. A client does nothing for any other value. Values: 0 general, 1 champion. |
| handle | u32 | For kind 0, a number a client returns in VoiceEventDone; for kind 1, the champion. |
Vectors (1)
VoiceEventDone
What a client sends once a voice event (VoiceEvent) that asked for it has played. The header carries zero.
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.
| Field | Type | What it is |
|---|---|---|
| handle | u32 | The number the VoiceEvent carried. |
MusicCue
What a server sends to drive the music a client plays.
In 3.01–3.5
Command 220 on events, sent by the server, reliable.
The header names the champion of the player it is sent to.
| Field | Type | What it is |
|---|---|---|
| cue | u8 | What to do. A client takes any other value and does nothing. Values: 0 prepare, 1 begin, 2 end. |
| event | u32 | Which cue or event. |
Vectors (1)
In 3.6–3.15
Command 220 on events, sent by the server, reliable.
The header names the champion of the player it is sent to.
| Field | Type | What it is |
|---|---|---|
| cue | u8 | What to do. A client takes any other value and does nothing. Values: 0 prepare, 1 begin, 2 end, 3 changeState. |
| event | u32 | Which cue or event. |
| parameter | u32 | Which state, where the state changes. |
Vectors (3)
VolumeMuted
What a server sends to mute or unmute one kind of sound. The header carries zero.
In every range of this book
Command 38 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| category | u8 | Which kind. A client ignores the message from 7 up. Values: 0 all, 1 music, 2 effects, 3 announcer, 4 unitResponses, 5 environment, 6 mainEffects. |
| state | 1-byte bits | Whether it is muted. |
| state.muted | bit 0 | Set to mute, clear to unmute. |
| state.unused | bit 1 to 7 | Unused; a server writes zero. |
FadeSounds
What a server sends to fade a client’s sound effects out. The header carries zero.
In every range of this book
Command 94 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| time | f32 | How long the sounds take to fade; the unit is not recorded. |
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.
In 3.01–3.11
Command 24 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | A value the client takes from the unit that speaks; what it names is not recorded. |
| unknown | f32 | A client writes 1073741824. |
| unknownToo | u32 | A client writes zero. |
| kind | u8 | A client writes zero. |
| unused | u8 | A client writes zero. |
| unusedToo | u32 | A client writes zero. |
| text | text, ended by a zero byte | What the unit says, ended by a zero byte; the two take at most 1024 bytes. |
Vectors (1)
In 3.12–3.14
Command 24 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | A value the client takes from the unit that speaks; what it names is not recorded. |
| unknown | u32 | A client writes 1073741824. |
| unknownToo | u32 | A client writes zero. |
| kind | u8 | A client writes zero. |
| unused | u8 | A client writes zero. |
| unusedToo | u32 | A client writes zero. |
| text | text, ended by a zero byte | What the unit says, ended by a zero byte; the two take at most 1024 bytes. |
Vectors (1)
In 3.15
Command 24 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| unknown | u32 | A client writes 1073741824. |
| unknownToo | u32 | A client writes zero. |
| kind | u8 | A client writes zero. |
| unused | u8 | A client writes zero. |
| unusedToo | u32 | A client writes zero. |
| length | u32 | The text’s length in bytes, counting its zero byte; at most 1024. |
| text | text, sized by length | What the unit says. |
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.
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 3.10–3.15
Where the version answer’s features turn the commands on, a client also sends
BalanceVoteRefused, a vote against, as its player types/noequalize.
In 3.10
BalanceVoteopens the panel where it says the vote opens. A client takes/equalizeonly where the version answer’s features turn the commands on, and sends noBalanceVoteRefusedin the tutorial.
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.
In every range of this book
Command 201 on events, sent by the server, reliable.
A client ignores it unless its menu and its own champion both exist.
| Field | Type | What it is |
|---|---|---|
| how | 1-byte bits | |
| how.countAsYes | bit 0 | Applies only where side is the client’s own: set shows caller voting yes, clear voting no, opening the menu or not. |
| how.openTheMenu | bit 1 | 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. |
| how.unused | bit 2 to 7 | Unused; a server writes zero. |
| caller | u32 | The unit that called the vote. |
| inFavour | u8 | How many have voted for. |
| against | u8 | How many have voted against. |
| seats | u8 | How many seats can vote. |
| side | u32 | Which side is voting. |
| closesIn | f32 | How long the vote stays open, in seconds. |
Vectors (1)
SurrenderVote
What a client sends to vote on surrendering. The header names no object: it carries zero.
In every range of this book
Command 164 on requests, sent by the client, reliable.
It answers a call to surrender.
| Field | Type | What it is |
|---|---|---|
| how | 1-byte bits | |
| how.inFavour | bit 0 | Set where the answer is yes. A client sends it clear. |
| how.unused | bit 1 to 7 | Always clear. |
Vectors (1)
SurrenderStatus
What a server sends to tell a side where its surrender vote stands. The header names no object: it carries zero.
In every range of this book
Command 165 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| reason | u8 | Why the vote stands where it does. |
| inFavour | u8 | How many voted for. |
| against | u8 | How many voted against. |
| side | u32 | Which side. |
Vectors (1)
SurrenderAllowed
What a server sends to say whether a champion’s player can call a surrender vote. The header names the champion.
In 3.9–3.15
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.
| Field | Type | What it is |
|---|---|---|
| flags | 1-byte bits | Whether it is allowed. |
| flags.allowed | bit 0 | Set where a vote can be called. |
| flags.unused | bit 1 to 7 | Unused; a server writes zero. |
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.
In 3.02–3.15
Command 250 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| flags | 1-byte bits | This vote. |
| flags.inFavour | bit 0 | Set where this voter voted for. |
| flags.first | bit 1 | Set where this vote opens a new vote. |
| flags.unused | bit 2 to 7 | Unused; a server writes zero. |
| voter | u32 | The voter’s champion. |
| inFavour | u8 | How many voted for. |
| against | u8 | How many voted against. |
| voters | u8 | How many can vote. It applies only on the first vote. |
| side | i32 | The voting side. |
| closesIn | f32 | Seconds until the vote closes. It applies only on the first vote. |
| gold | f32 | Gold the losing side would be given. |
| experience | i32 | Experience it would be given. |
| turrets | i32 | Turrets it would be given. |
Vectors (1)
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.
In every range of this book
Command 251 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| vote | 1-byte bits | The answer. |
| vote.inFavour | bit 0 | Set for yes, clear for no. |
| vote.unused | bit 1 to 7 | Unused; a client writes zero. |
Vectors (1)
BalanceResult
What a server sends when a vote on evening out a match ends, or cannot be held. The header carries zero.
In 3.02–3.15
Command 252 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| result | u8 | What came of it. Values: 0 failed, 1 notYet, 2 notAheadInGold, 3 notAheadInLevels, 4 tooSoon, 5 alreadyVoted, 6 agreed. |
| inFavour | u8 | How many voted for. |
| against | u8 | How many voted against. |
| side | i32 | The side that voted. |
| gold | f32 | Gold given. |
| experience | i32 | Experience given. |
| turrets | i32 | Turrets given. |
Vectors (1)
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.
In 3.5–3.15
Command 250 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| flags | u8 | Zero: a vote against. |
| voter | u32 | Zero. |
| unset | 23 × u8 | The rest of BalanceVote’s layout. Unused; its bytes carry no meaning. |
Vectors (1)
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 3.01–3.10
A client sends no
Camerawhile its camera is locked: a server that needs a client’s view reports frees its camera withCameraLockSet.
In 3.10
A client ignores
CameraLockSetthat arrives while it holds its camera itself, and answers nothing.
Input
A server locks or unlocks kinds of input, such as movement, spells or the
shop, with InputLock or InputLockToggled.
In 3.01–3.10
A client keeps every lock a message sets or clears, and later input obeys them, but it acts on a lock at once only where the message’s mask is exactly one of 1, 4, 8, 16, 32 or 128.
In 3.10
A watching client ignores
InputLock.
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.
In every range of this book
Command 45 on requests, sent by the client, unreliable.
| Field | Type | What it is |
|---|---|---|
| positionX | f32 | |
| positionY | f32 | |
| positionZ | f32 | |
| directionX | f32 | |
| directionY | f32 | |
| directionZ | f32 | |
| clientId | u32 | The client id of the client the view belongs to. |
| syncId | u8 | Names this report, counting up as the view moves. A client sends the report again until a server returns the name. |
SelectObject
What a client sends as the object it has selected changes. The header names no object: it carries zero.
In every range of this book
Command 175 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| clientId | u32 | The client id of the client selecting: the one its Registered gave it. Zero is a client id like any other rather than an absence. |
| selected | u32 | The network object now selected, or zero where none is. |
Vectors (1)
CameraLock
What a client sends as it locks its view to a unit or releases it. The header names no object: it carries zero.
In every range of this book
Command 129 on requests, sent by the client, reliable.
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.
| Field | Type | What it is |
|---|---|---|
| state | 1-byte bits | |
| state.locked | bit 0 | Set while the view follows a unit. |
| state.unused | bit 1 to 7 | Unused; a client writes zero. |
| clientId | u32 | The client id of the client locking. Zero is a client id like any other rather than an absence. |
Vectors (1)
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.
In every range of this book
Command 36 on events, sent by the server, reliable.
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.
| Field | Type | What it is |
|---|---|---|
| how | 1-byte bits | |
| how.fromWhereItIs | bit 0 | Set to start from where the camera stands, fromX, fromY and fromZ having no effect; clear to start from them. |
| how.unused1 | bit 1 | Unused; a server writes zero. |
| how.unused | bit 2 to 7 | Unused; a server writes zero. |
| fromX | f32 | Where the view starts, along one ground axis, in world units. |
| fromY | f32 | Where the view starts, in height, in world units. |
| fromZ | f32 | Where the view starts, along the other ground axis, in world units. |
| toX | f32 | Where the view ends, along one ground axis, in world units. |
| toY | f32 | Where the view ends, in height, in world units. |
| toZ | f32 | Where the view ends, along the other ground axis, in world units. |
| travelTime | f32 | How long the view takes to get there, in seconds. The view moves at an even speed over the distance along the ground. |
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.
In every range of this book
Command 120 on events, sent by the server, reliable.
A client ignores the message while something of its own holds the camera. It sends no CameraLock while playing a replay.
| Field | Type | What it is |
|---|---|---|
| state | 1-byte bits | Whether the camera is locked. |
| state.locked | bit 0 | Set to lock the camera, clear to free it. |
| state.unused | bit 1 to 7 | Unused; a server writes zero. |
Vectors (1)
CameraBehaviour
What a server sends to set a point a champion’s player’s view keeps to. The header names the champion.
In every range of this book
Command 114 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| x | f32 | Along one ground axis, in world units. |
| y | f32 | In height, in world units. |
| z | f32 | Along the other ground axis, in world units. |
InputLock
What a server sends to lock or unlock a kind of input on a client. The header carries zero.
In every range of this book
Command 132 on events, sent by the server, reliable.
A client ignores it while playing a replay.
| Field | Type | What it is |
|---|---|---|
| category | u32 | Which input, as a set of bits. Values: 1 cameraLocking, 2 movement, 4 abilities, 8 summonerSpells, 16 shop, 32 chat, 64 minimapMovement, 128 cameraMovement. |
| state | 1-byte bits | Whether to lock. |
| state.locked | bit 0 | Set to lock, clear to unlock. |
| state.unused | bit 1 to 7 | Unused; a server writes zero. |
Vectors (2)
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.
In every range of this book
Command 155 on events, sent by the server, reliable.
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.
| Field | Type | What it is |
|---|---|---|
| locks | u32 | Each lock set flips. Values: 1 cameraLock, 2 movement, 4 spells, 8 summonerSpells, 16 shop, 32 chat, 64 minimapMovement, 128 cameraMovement. |
Vectors (1)
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.
In every range of this book
Command 216 on events, sent by the server, reliable.
A client does nothing unless unit is a unit it holds that can be attacked.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit this is about. |
| changeIcon | u8 | 1 to replace the unit’s minimap icon with icon; 0 leaves it, and icon has no effect. |
| icon | text, 64 bytes | The name the client loads the mark under. Written out in full and padded with zero bytes to the width above. |
| changeBorder | u8 | 1 to replace the unit’s ring with border, and what it does with borderScript; 0 leaves both, and neither has any effect. |
| border | text, 64 bytes | The name the client loads the ring around the mark under, written and padded as above. |
Vectors (1)
FloatingText
What a server sends to show text floating over a unit. The header names the unit.
In 3.01–3.14
Command 24 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unused | u32 | Unused; a server writes zero. |
| delay | f32 | Unused; a server writes 2. |
| slot | i32 | Where 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. |
| error | u8 | Nonzero has a client ignore the whole message. |
| colour | u8 | The text’s colour on the debugging display; it has no effect for slot 0. |
| style | u32 | Which style of floating text. |
| text | text, ended by a zero byte | The text, ended by a zero byte; the two take at most 1024 bytes. |
Vectors (2)
In 3.15
Command 24 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| delay | f32 | Unused; a server writes 2. |
| slot | i32 | Where 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. |
| error | u8 | Nonzero has a client ignore the whole message. |
| colour | u8 | The text’s colour on the debugging display; it has no effect for slot 0. |
| style | u32 | Which style of floating text. |
| length | u32 | The text’s length in bytes, counting its zero byte. |
| text | text, sized by length | The text. |
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.
In 3.01
Command 25 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit to float it over: one that can be damaged. |
| style | u8 | How the line looks, from 0 to 24. A client shows debug lines to nobody. Values: 0 invulnerable, 1 special, 2 heal, 3 manaHeal, 4 manaDamage, 5 dodge, 6 physicalCritical, 7 experience, 8 gold, 9 level, 10 disable, 11 questReceived, 12 questComplete, 13 score, 14 physicalDamage, 15 magicDamage, 16 trueDamage, 17 enemyPhysicalDamage, 18 enemyMagicDamage, 19 enemyTrueDamage, 20 enemyPhysicalCritical, 21 countdown, 22 damage, 23 critical, 24 debug. |
| number | i32 | A number put into the text where it asks for one. |
| text | text, 128 bytes | A key into the client’s own text. The text ends at its first zero byte, which falls within the field. |
Vectors (1)
In 3.02–3.8
Command 25 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit to float it over: one that can be damaged. |
| style | u8 | How 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 physicalCritical, 7 experience, 8 gold, 9 level, 10 disable, 11 questReceived, 12 questComplete, 13 score, 14 physicalDamage, 15 magicDamage, 16 trueDamage, 17 enemyPhysicalDamage, 18 enemyMagicDamage, 19 enemyTrueDamage, 20 enemyPhysicalCritical, 21 countdown, 22 onMyWay, 23 damage, 24 critical, 25 debug. |
| number | i32 | A number put into the text where it asks for one. |
| text | text, 128 bytes | A key into the client’s own text. The text ends at its first zero byte, which falls within the field. |
Vectors (1)
In 3.9–3.11
Command 25 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit to float it over: one that can be damaged. |
| style | u8 | How the line looks, from 0 to 26. A client shows debug lines to nobody. Values: 0 invulnerable, 1 special, 2 heal, 3 manaHeal, 4 manaDamage, 5 dodge, 6 physicalCritical, 7 experience, 8 gold, 9 level, 10 disable, 11 questReceived, 12 questComplete, 13 score, 14 physicalDamage, 15 magicDamage, 16 trueDamage, 17 enemyPhysicalDamage, 18 enemyMagicDamage, 19 enemyTrueDamage, 20 enemyPhysicalCritical, 21 countdown, 22 onMyWay, 24 damage, 25 critical, 26 debug. |
| number | i32 | A number put into the text where it asks for one. |
| text | text, 128 bytes | A key into the client’s own text. The text ends at its first zero byte, which falls within the field. |
Vectors (1)
In 3.12–3.15
Command 25 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit to float it over: one that can be damaged. |
| style | u8 | How the line looks, from 0 to 27. A client shows debug lines to nobody. Values: 0 invulnerable, 1 special, 2 heal, 3 manaHeal, 4 manaDamage, 5 dodge, 6 physicalCritical, 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 enemyPhysicalCritical, 22 countdown, 23 onMyWay, 24 absorbed, 25 damage, 26 critical, 27 debug. |
| number | i32 | A number put into the text where it asks for one. |
| text | text, 128 bytes | A key into the client’s own text. The text ends at its first zero byte, which falls within the field. |
Vectors (1)
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.
In every range of this book
Command 184 on events, sent by the server, reliable.
No body.
Vectors (1)
HudDisabled
What a server sends to take down a client’s interface as the match ends. The header names no object: it carries zero.
In every range of this book
Command 188 on events, sent by the server, reliable.
No body.
Vectors (1)
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.
In every range of this book
Command 43 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| syncId | u8 | The name the report carried. A client sends the report again until this comes back. |
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.
In 3.10
HudHighlightedlights elements 0 to 8 for part 0 and element 0 alone for part 2. A client lights nothing for any other part.
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
In 3.10
A client is in the tutorial where
VersionSyncnames the mode TUTORIAL and a setting of its own turns the tutorial on, whatever the map.
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.
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).
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.
In 3.01
Command 60 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| part | u8 | Which part of the screen. A client ignores any other value. Values: 0 hud, 1 shop, 2 minimap. |
| element | u8 | What 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. |
| number | u8 | Which 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. |
| second | u8 | For the shop’s element 3, which item within the category; a client reads nothing here otherwise. |
Vectors (1)
In 3.02–3.15
Command 60 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| part | u8 | Which part of the screen. A client ignores any other value. Values: 0 hud, 2 minimap. |
| element | u8 | What 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. |
| number | u8 | Which 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. |
| unused | u8 | Unused; a server writes zero. |
HudHighlightToggled
What a server sends to light up part of the screen, or to put it out. The header carries zero.
In 3.01
Command 78 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| part | u8 | Which part of the screen. A client ignores any other value. Values: 1 hud, 2 shop, 3 minimap. |
| element | u8 | What to light up, as in HudHighlighted. A value beyond those named does nothing. |
| number | u8 | Which slot, as in HudHighlighted. |
| second | u8 | For the shop’s element 3, which item within the category; a client reads nothing here otherwise. |
| state | 1-byte bits | Whether it is lit. |
| state.on | bit 0 | Set to light it up, clear to put it out. |
| state.unused | bit 1 to 7 | Unused; a server writes zero. |
Vectors (1)
In 3.02–3.15
Command 78 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| part | u8 | Which part of the screen. A client ignores any other value. Values: 1 hud, 3 minimap. |
| element | u8 | What to light up, as in HudHighlighted. A value beyond those named does nothing. |
| number | u8 | Which slot, as in HudHighlighted. |
| unused | u8 | Unused; a server writes zero. |
| state | 1-byte bits | Whether it is lit. |
| state.on | bit 0 | Set to light it up, clear to put it out. |
| state.unused | bit 1 to 7 | Unused; a server writes zero. |
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.
In every range of this book
Command 202 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| action | u8 | What to do. A client takes 2 to 14 and does nothing, and ignores the message from 15 up. Values: 0 show, 1 remove. |
| element | u8 | Which 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 (1)
UnitHighlighted
What a server sends to outline a unit with a pulsing light, as a tutorial does, until UnitHighlightRemoved. The header carries zero.
In every range of this book
Command 88 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit: one that can be damaged. |
UnitHighlightRemoved
What a server sends to take away the light UnitHighlighted put on a unit. The header carries zero.
In every range of this book
Command 180 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit. Where it has no light, nothing happens. |
Vectors (1)
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.
In every range of this book
Command 84 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| body | text, 128 bytes | What the note says. Written out in full and padded with zero bytes to the width above. |
| heading | text, 128 bytes | What the note is headed with, written and padded as above. |
| image | text, 128 bytes | The name the client loads a picture for the note under, written and padded as above. |
| what | u8 | What the client does with the note. |
| tip | u32 | The name this note answers to, so a later message can name it. |
TipEvent
What a client sends about a tip it has shown or dismissed.
In every range of this book
Command 108 on requests, sent by the client, reliable.
The header names the sender’s champion.
| Field | Type | What it is |
|---|---|---|
| what | u8 | What happened to the tip. Values: 0 clicked, 1 closed. |
| tip | u32 | Which tip, as TipShown named it. |
QuestUpdated
What a server sends to add a quest to the quest tracker, complete it or remove it. The header carries zero.
In 3.01–3.10
Command 140 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| text | text, 128 bytes | A key into the client’s own text for the quest. It applies to activate only. |
| icon | text, 128 bytes | The quest’s icon. It applies to activate only. |
| tooltip | text, 128 bytes | A key into the client’s own text for its tooltip. It applies to activate only. |
| kind | u8 | Which tracker it goes in. A tracker that is full holds a new quest back until it has room. Values: 0 primary, 1 secondary. |
| action | u8 | What to do. A client ignores any other value. Values: 0 activate, 1 complete, 2 remove. |
| flags | 1-byte bits | What a flag means depends on action. |
| flags.first | bit 0 | For activate, set to have the client report the pointer passing over the quest (QuestEvent); for complete, set where the quest succeeded. |
| flags.unused | bit 1 to 7 | Unused; a server writes zero. |
| quest | i32 | The quest’s number, which QuestEvent returns. |
Vectors (1)
In 3.11
Command 140 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| text | text, 128 bytes | A key into the client’s own text for the quest. It applies to activate only. |
| icon | text, 128 bytes | The quest’s icon. It applies to activate only. |
| tooltip | text, 128 bytes | A key into the client’s own text for its tooltip. It applies to activate only. |
| kind | u8 | Which 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. |
| action | u8 | What to do. A client ignores any other value. Values: 0 activate, 1 complete, 2 remove. |
| flags | 1-byte bits | What a flag means depends on action. |
| flags.first | bit 0 | For activate, set to have the client report the pointer passing over the quest (QuestEvent); for complete, set where the quest succeeded. |
| flags.unused | bit 1 to 7 | Unused; a server writes zero. |
| quest | i32 | The quest’s number, which QuestEvent returns. |
Vectors (1)
In 3.12–3.13
Command 140 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| text | text, 128 bytes | A key into the client’s own text for the quest. It applies to activate only. |
| icon | text, 128 bytes | The quest’s icon. It applies to activate only. |
| tooltip | text, 128 bytes | A key into the client’s own text for its tooltip. It applies to activate only. |
| kind | u8 | Which tracker it goes in. A tracker that is full holds a new quest back until it has room. Values: 0 primary, 1 secondary. |
| action | u8 | What to do. A client ignores any other value. Values: 0 activate, 1 complete, 2 remove. |
| flags | 1-byte bits | What a flag means depends on action. |
| flags.first | bit 0 | For activate, set to have the client report the pointer passing over the quest (QuestEvent); for complete, set where the quest succeeded. |
| flags.unused | bit 1 to 7 | Unused; a server writes zero. |
| quest | i32 | The quest’s number, which QuestEvent returns. |
Vectors (1)
In 3.14–3.15
Command 140 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| text | text, 128 bytes | A key into the client’s own text for the quest. It applies to activate only. |
| icon | text, 128 bytes | The quest’s icon. It applies to activate only. |
| tooltip | text, 128 bytes | A key into the client’s own text for its tooltip. It applies to activate only. |
| kind | u8 | Which tracker it goes in. A tracker that is full holds a new quest back until it has room. Values: 0 primary, 1 secondary. |
| action | u8 | What to do. A client ignores any other value. Values: 0 activate, 1 complete, 2 remove. |
| flags | 1-byte bits | What a flag means depends on action. |
| flags.first | bit 0 | For activate, set to have the client report the pointer passing over the quest (QuestEvent); for complete, set where the quest succeeded. |
| flags.second | bit 1 | Unused; a server writes zero. |
| flags.unused | bit 2 to 7 | Unused; a server writes zero. |
| quest | i32 | The quest’s number, which QuestEvent returns. |
Vectors (2)
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.
In every range of this book
Command 205 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| event | u8 | What 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. |
| quest | i32 | The quest’s number, as QuestUpdated gave it. |
Vectors (2)
ObjectiveShown
What a server sends to show the objective panel with a text. The header carries zero.
In every range of this book
Command 53 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| text | text, 128 bytes | The objective. The text ends at its first zero byte, which falls within the field. |
ObjectiveReplaced
What a server sends to replace the text of the objective panel, showing the panel if it is hidden. The header carries zero.
In every range of this book
Command 13 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| text | text, 128 bytes | The objective. The text ends at its first zero byte, which falls within the field. |
ObjectiveHidden
What a server sends to hide the objective panel. It carries nothing of its own. The header carries zero.
In every range of this book
Command 162 on events, sent by the server, reliable.
No body.
Vectors (1)
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.
In every range of this book
Command 160 on events, sent by the server, reliable.
A client also sizes the panel to the text and shows it. The box sits halfway down the screen.
| Field | Type | What it is |
|---|---|---|
| text | text, 128 bytes | A 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 (1)
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.
In every range of this book
Command 177 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| text | text, 128 bytes | A 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 (1)
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.
In every range of this book
Command 167 on events, sent by the server, reliable.
No body.
Vectors (1)
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.
In every range of this book
Command 2 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| text | text, 128 bytes | A 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. |
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.
In every range of this book
Command 179 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| text | text, 128 bytes | A 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 (1)
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.
In every range of this book
Command 204 on requests, sent by the client, reliable.
A client also sends it as its player closes a tip in the tutorial.
No body.
Vectors (1)
Watching a match
How a client is started to watch a match rather than play in it, and how the match reaches it.
In 3.01–3.10
A watching client takes the match over HTTP from a spectator service, not over a game connection.
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.
In 3.01–3.10
The word is followed by the spectator service’s address, with no port of its own, the key, a match number and a platform name; there is no player number. A key is deciphered under the low 32 bits of the match number, written out as a signed decimal.
In 3.01–3.10
The word
replaystarts a watching client asspectatordoes.
In 3.10
A player’s key is never base64: one longer than 16 characters is cut to its first 16.
The order of the stream
-
A client answered on registration sends
StreamRequest. -
A server sends
StreamMetadata, within 30 seconds: until it arrives the client waits. -
A server sends
StreamChunkRange, with the match’s end left at zero while it runs. -
A server sends the chunks, each cut into
StreamChunkfragments 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.
-
As the match ends, a server sends
StreamChunkRangeagain 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.
In 3.01–3.10
A watching client asks the spectator service for the match under
/observer-mode/rest/consumer/, each request naming the platform and the match number:getGameMetaDatafor the match’s metadata,getLastChunkInfofor how far the match has come, andgetGameDataChunkandgetKeyFramefor a chunk or a key frame by number. It gives up on the metadata after a time, fetches the chunks of setting up, then catches up to the last chunk on offer and waits there for the next. Key frames arrive compressed. The metadata givesgameKey.gameId,gameEndedandchunkTimeInterval; the last chunk’s information giveschunkId,nextChunkId,availableSince,nextAvailableChunk,endStartupChunkIdandendGameChunkId.
In 3.01–3.10
A watching client first asks the service for its version, and ends by asking it to stop. The metadata also gives
keyFrameTimeInterval, a whole multiple ofchunkTimeInterval, andclientAddedLag; the last chunk’s information also giveskeyFrameId.
In 3.10
A client takes the key frame to fetch from
keyFrameId, and chunks arrive compressed too. The metadata request carries a further number where the service’s version is 1.56 or later, andgetLastChunkInfocarries one too. The metadata also givesclientBackFetchingEnabledandclientBackFetchingFreq.
What a chunk holds
A chunk is the messages a server sent the players of the match, one record after another.
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.
In 3.10
A client whose own build differs from the one
VersionSyncnames asks its player whether to go on, and leaves where the player declines.
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.
In 3.12–3.15
Command 235 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| unused | u32 | Unused; a server writes zero. |
| text | text, sized by remaining | A JSON object with integer members chunkTimeInterval and keyFrameTimeInterval, in milliseconds, to the end of the message. A server sends both. |
Vectors (1)
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.
In 3.12–3.15
Command 236 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| startGameChunk | u32 | The chunk the match proper begins with. |
| endGameChunk | u32 | The match’s last chunk, or zero while it runs. |
Vectors (2)
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.
In 3.12–3.15
Command 237 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| chunk | u32 | The 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. |
| fragments | u32 | How many fragments the chunk is cut into. |
| index | u32 | This fragment’s place, from 0. |
| kind | u8 | What the chunk is. Values: 1 ordinary, 2 keyFrame, 3 endOfStartup, 4 gameStart, 5 startup. |
| size | u32 | The whole chunk’s size in bytes. |
| duration | u32 | Seconds 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. |
| nextChunk | u32 | For 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. |
| data | bytes, sized by remaining | This fragment’s bytes of the chunk, to the end of the message. |
Vectors (2)
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.
In every range of this book
Command 234 on requests, sent by the client, reliable.
| Field | Type | What it is |
|---|---|---|
| wantsMetadata | u8 | One: the client wants StreamMetadata. |
| jumpToLatest | u8 | One 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). |
| fromChunk | u32 | The first chunk wanted: one past the highest the client holds, 1 at first. |
| fromKeyFrame | u32 | The first key frame wanted: one past the latest the client holds, 1 at first. |
Vectors (1)
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.
In every range of this book
| Field | Type | What it is |
|---|---|---|
| fromLength | u32 | How many bytes the name below occupies, where it is from 1 to 2147483647. |
| from | text, sized by fromLength | The name of what is replaced. It is not padded and carries nothing closing it. |
| toLength | u32 | How many bytes the name below occupies, where it is from 1 to 2147483647. |
| to | text, sized by toLength | The 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.
In 3.01–3.5
| Field | Type | What it is |
|---|---|---|
| assetSize | u32 | How many bytes the name below occupies. |
| asset | text, sized by assetSize | The name the client loads this layer’s art under. It is not padded, and it carries no terminator. |
| how | 1-byte bits | |
| how.overrideSpells | bit 0 | Set where this layer replaces the unit’s spells as well as its art. |
| how.modelOnly | bit 1 | Set where it replaces the shape alone. |
| how.unused | bit 2 to 7 | Unused; a server writes zero. |
| layer | u32 | The name this layer answers to, so a later message can take it off. |
In 3.6–3.15
| Field | Type | What it is |
|---|---|---|
| assetSize | u32 | How many bytes the name below occupies. |
| asset | text, sized by assetSize | The name the client loads this layer’s art under. It is not padded, and it carries no terminator. |
| skin | u32 | Which look within that art. |
| how | 1-byte bits | |
| how.overrideSpells | bit 0 | Set where this layer replaces the unit’s spells as well as its art. |
| how.modelOnly | bit 1 | Set where it replaces the shape alone. |
| how.unused | bit 2 to 7 | Unused; a server writes zero. |
| layer | u32 | The 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.
In every range of this book
| Field | Type | What it is |
|---|---|---|
| size | u16 | How many bytes the message occupies. |
| body | bytes, sized by size | The 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.
In every range of this book
| Field | Type | What it is |
|---|---|---|
| choice | u32 | Which choice, by the number the client knows it as. Zero where the place stands empty. |
| rank | u8 | How far it was taken. |
HeldItem
One item a unit holds, as it is stated when the unit first comes into sight.
In every range of this book
| Field | Type | What it is |
|---|---|---|
| slot | u8 | Which slot it sits in. |
| inSlot | u8 | How many of it are in that slot. |
| charges | u8 | How many uses it carries. |
| item | u32 | Which 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.
In every range of this book
| Field | Type | Present when | What it is |
|---|---|---|---|
| header | 1-byte bits | ||
| header.hasTeleportToken | bit 0 | Set where a token sits beside the unit. A client sends it clear, so a token travels only from a server. | |
| header.pointCount | bit 1 to 7 | How 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. | |
| path | record | Everything the movement carries beyond its first byte. | |
| path.unit | u32 | The unit the path belongs to. | |
| path.teleportToken | u8 | header.hasTeleportToken set | Tells one relocation from another. Movement says what a receiving end does with it. |
| path.flags | bits, count in header.pointCount minus 1 | One 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.xIsStep | bit 0 | Set where this point states its first coordinate as a step. | |
| path.flags.zIsStep | bit 1 | Set where this point states its second coordinate as a step. | |
| path.firstX | i16 | The first point, along one ground axis, in the units Movement gives. | |
| path.firstZ | i16 | The first point, along the other. | |
| path.steps | count in header.pointCount minus 1 × record | ||
| path.steps[].xStep | i8 | flags[step].xIsStep set | Added to the first coordinate of the point before, as that point resolved. |
| path.steps[].xWhole | i16 | flags[step].xIsStep = 0 | The first coordinate, stated without reference to the point before. |
| path.steps[].zStep | i8 | flags[step].zIsStep set | Added to the second coordinate of the point before, as that point resolved. |
| path.steps[].zWhole | i16 | flags[step].zIsStep = 0 | The 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.
In every range of this book
| Field | Type | Present when | What it is |
|---|---|---|---|
| header | 1-byte bits | ||
| header.hasTeleportToken | bit 0 | Set where a token sits beside the unit. A client sends it clear, so a token travels only from a server. | |
| header.pointCount | bit 1 to 7 | How 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. | |
| path | record | Everything the movement carries beyond its first byte. | |
| path.unit | u32 | The unit the path belongs to. | |
| path.teleportToken | u8 | header.hasTeleportToken set | Tells one relocation from another, as in the compact shape (see Movement). |
| path.terms | SpeedParams | How the unit is made to travel. | |
| path.flags | bits, count in header.pointCount minus 1 | One 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.xIsStep | bit 0 | Set where this point states its first coordinate as a step. | |
| path.flags.zIsStep | bit 1 | Set where this point states its second coordinate as a step. | |
| path.firstX | i16 | The first point, along one ground axis, in the units Movement gives. | |
| path.firstZ | i16 | The first point, along the other. | |
| path.steps | count in header.pointCount minus 1 × record | ||
| path.steps[].xStep | i8 | flags[step].xIsStep set | Added to the first coordinate of the point before, as that point resolved. |
| path.steps[].xWhole | i16 | flags[step].xIsStep = 0 | The first coordinate, stated without reference to the point before. |
| path.steps[].zStep | i8 | flags[step].zIsStep set | Added to the second coordinate of the point before, as that point resolved. |
| path.steps[].zWhole | i16 | flags[step].zIsStep = 0 | The 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.
In 3.01–3.9
| Field | Type | What it is |
|---|---|---|
| target | u32 | The unit the particle is aimed at, or zero. |
| particle | u32 | The name this particle answers to, so later messages can name it. |
| boundTo | u32 | The unit the particle hangs off, or zero. Where it names a unit the client does not hold, the particle waits until it does, unless the group’s flags say otherwise. |
| settingsFrom | u32 | A unit the particle takes its variants from, which is how a skin picks its own version. Where it is zero, unknown or boundTo, boundTo’s are used. |
| atX | i16 | Where the particle sits, along one ground axis. Carried in the units a path uses rather than in world units. |
| atY | f32 | Where it sits, in height, in world units. |
| atZ | i16 | Where it sits, along the other ground axis. It shares the reading of the first. |
| towardX | i16 | Where the particle is aimed, along one ground axis, in the form of the first pair above. |
| towardY | f32 | Where it is aimed, in height, in world units. |
| towardZ | i16 | Where it is aimed, along the other ground axis. |
| ownerX | i16 | Where the unit that made it stood, along one ground axis, in the form of the first pair above. |
| ownerY | f32 | Where that unit stood, in height, in world units. |
| ownerZ | i16 | Where that unit stood, along the other ground axis. |
| facingX | f32 | Which way the particle faces, along one ground axis. |
| facingY | f32 | Which way it faces, in height. |
| facingZ | f32 | Which way it faces, along the other ground axis. |
| runningFor | f32 | How far into its run the particle already is, in seconds. |
In 3.10–3.13
| Field | Type | What it is |
|---|---|---|
| target | u32 | The unit the particle is aimed at, or zero. |
| particle | u32 | The name this particle answers to, so later messages can name it. |
| boundTo | u32 | The unit the particle hangs off, or zero. Where it names a unit the client does not hold, the particle waits until it does, unless the group’s flags say otherwise. |
| settingsFrom | u32 | A unit the particle takes its variants from, which is how a skin picks its own version. Where it is zero, unknown or boundTo, boundTo’s are used. |
| atX | i16 | Where the particle sits, along one ground axis. Carried in the units a path uses rather than in world units. |
| atY | f32 | Where it sits, in height, in world units. |
| atZ | i16 | Where it sits, along the other ground axis. It shares the reading of the first. |
| towardX | i16 | Where the particle is aimed, along one ground axis, in the form of the first pair above. |
| towardY | f32 | Where it is aimed, in height, in world units. |
| towardZ | i16 | Where it is aimed, along the other ground axis. |
| ownerX | i16 | Where the unit that made it stood, along one ground axis, in the form of the first pair above. |
| ownerY | f32 | Where that unit stood, in height, in world units. |
| ownerZ | i16 | Where that unit stood, along the other ground axis. |
| facingX | f32 | Which way the particle faces, along one ground axis. |
| facingY | f32 | Which way it faces, in height. |
| facingZ | f32 | Which way it faces, along the other ground axis. |
| runningFor | f32 | How far into its run the particle already is, in seconds. |
| scale | f32 | What the particle’s drawn size is scaled by. |
Vectors (1)
In 3.14–3.15
| Field | Type | What it is |
|---|---|---|
| target | u32 | The unit the particle is aimed at, or zero. |
| particle | u32 | The name this particle answers to, so later messages can name it. |
| caster | u32 | The unit that made the particle, or zero. |
| boundTo | u32 | The unit the particle hangs off, or zero. |
| settingsFrom | u32 | A 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. |
| atX | i16 | Where the particle sits, along one ground axis. Carried in the units a path uses rather than in world units. |
| atY | f32 | Where it sits, in height, in world units. |
| atZ | i16 | Where it sits, along the other ground axis. It shares the reading of the first. |
| towardX | i16 | Where the particle is aimed, along one ground axis, in the form of the first pair above. |
| towardY | f32 | Where it is aimed, in height, in world units. |
| towardZ | i16 | Where it is aimed, along the other ground axis. |
| ownerX | i16 | Where the unit that made it stood, along one ground axis, in the form of the first pair above. |
| ownerY | f32 | Where that unit stood, in height, in world units. |
| ownerZ | i16 | Where that unit stood, along the other ground axis. |
| facingX | f32 | Which way the particle faces, along one ground axis. |
| facingY | f32 | Which way it faces, in height. |
| facingZ | f32 | Which way it faces, along the other ground axis. |
| runningFor | f32 | How far into its run the particle already is, in seconds. |
| scale | f32 | What 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.
In every range of this book
| Field | Type | What it is |
|---|---|---|
| package | u32 | Which set of art and sound the client draws them with. |
| particle | u32 | Which particle, by the number its name gives, as Objects and identifiers works it out. |
| flags | u16 | How 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. |
| targetBone | u32 | Where on the unit aimed at they hang, by the number the name of that place gives, as Objects and identifiers works it out. |
| bone | u32 | Where on the unit that made them they hang, by the same reading. |
| particleCount | u8 | How many particles follow. |
| particles | count in particleCount × Particle | The 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.
In 3.01–3.03
| Field | Type | Present when | What it is |
|---|---|---|---|
| present | 1-byte bits | ||
| present.group0 | bit 0 | Set where this group’s values follow. | |
| present.group1 | bit 1 | Set where this group’s values follow. | |
| present.group2 | bit 2 | Set where this group’s values follow. | |
| present.group3 | bit 3 | Set where this group’s values follow. | |
| present.group4 | bit 4 | Set where this group’s values follow. They come after every other group’s, whatever the flags. A server sends it clear. | |
| present.group5 | bit 5 | Set where this group’s values follow. They come before group 4’s. | |
| present.unused | bit 6 to 7 | Unused; a server writes zero. A presence byte with no group set is valid. | |
| unit | u32 | The unit whose values these are. | |
| group0 | record | present.group0 set | The values of group 0, where the flag says they follow. |
| group0.which | u32 | Says which of the group’s values follow, one bit each, lowest first. | |
| group0.values | count in the bits set in which × bytes | The values themselves, four bytes each, in the order the bits above name them. | |
| group1 | record | present.group1 set | The values of group 1, where the flag says they follow. |
| group1.which | u32 | Says which of the group’s values follow, one bit each, lowest first. | |
| group1.values | count in the bits set in which × bytes | The values themselves, four bytes each, in the order the bits above name them. | |
| group2 | record | present.group2 set | The values of group 2, where the flag says they follow. |
| group2.which | u32 | Says which of the group’s values follow, one bit each, lowest first. | |
| group2.values | count in the bits set in which × bytes | The values themselves, four bytes each, in the order the bits above name them. | |
| group3 | record | present.group3 set | The values of group 3, where the flag says they follow. |
| group3.which | u32 | Says which of the group’s values follow, one bit each, lowest first. | |
| group3.values | count in the bits set in which × bytes | The values themselves, four bytes each, in the order the bits above name them. | |
| group5 | record | present.group5 set | The values of group 5, where the flag says they follow. |
| group5.which | u32 | Says which of the group’s values follow, one bit each, lowest first. | |
| group5.values | count in the bits set in which × bytes | The values themselves, four bytes each, in the order the bits above name them. | |
| group4 | record | present.group4 set | The values of group 4, where the flag says they follow. A server sends its flag clear. |
| group4.which | u32 | Says which of the group’s values follow, one bit each, lowest first. | |
| group4.values | count in the bits set in which × bytes | The values themselves, four bytes each, in the order the bits above name them. |
In 3.04–3.15
| Field | Type | Present when | What it is |
|---|---|---|---|
| present | 1-byte bits | ||
| present.group0 | bit 0 | Set where this group’s values follow. | |
| present.group1 | bit 1 | Set where this group’s values follow. | |
| present.group2 | bit 2 | Set where this group’s values follow. | |
| present.group3 | bit 3 | Set where this group’s values follow. | |
| present.group4 | bit 4 | Set where this group’s values follow. They come after every other group’s, whatever the flags. A server sends it clear. | |
| present.group5 | bit 5 | Set where this group’s values follow. They come before group 4’s. | |
| present.unused | bit 6 to 7 | Unused; a server writes zero. A presence byte with no group set is valid. | |
| unit | u32 | The unit whose values these are. | |
| group0 | record | present.group0 set | The values of group 0, where the flag says they follow. |
| group0.which | u32 | Says which of the group’s values the run below holds, one bit each, lowest first. | |
| group0.length | u8 | How many bytes the run below holds. | |
| group0.values | bytes, sized by length | The 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. | |
| group1 | record | present.group1 set | The values of group 1, where the flag says they follow. |
| group1.which | u32 | Says which of the group’s values the run below holds, one bit each, lowest first. | |
| group1.length | u8 | How many bytes the run below holds. | |
| group1.values | bytes, sized by length | The 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. | |
| group2 | record | present.group2 set | The values of group 2, where the flag says they follow. |
| group2.which | u32 | Says which of the group’s values the run below holds, one bit each, lowest first. | |
| group2.length | u8 | How many bytes the run below holds. | |
| group2.values | bytes, sized by length | The 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. | |
| group3 | record | present.group3 set | The values of group 3, where the flag says they follow. |
| group3.which | u32 | Says which of the group’s values the run below holds, one bit each, lowest first. | |
| group3.length | u8 | How many bytes the run below holds. | |
| group3.values | bytes, sized by length | The 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. | |
| group5 | record | present.group5 set | The values of group 5, where the flag says they follow. |
| group5.which | u32 | Says which of the group’s values the run below holds, one bit each, lowest first. | |
| group5.length | u8 | How many bytes the run below holds. | |
| group5.values | bytes, sized by length | The 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. | |
| group4 | record | present.group4 set | The 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.which | u32 | Says which of the group’s values the run below holds, one bit each, lowest first. | |
| group4.length | u8 | How many bytes the run below holds. What comes next starts after this many bytes, whatever the values inside take. | |
| group4.values | bytes, sized by length | The 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.
In every range of this book
| Field | Type | What it is |
|---|---|---|
| player | i64 | Which player holds the place, or a negative number where it stands empty. It has a player identifier’s width. |
| level | u16 | The level the seat holder has reached across matches. A 4.17 client does not draw it on the loading screen. |
| summoner | u32 | The 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. |
| otherSummoner | u32 | The spell in the other. |
| flags | u8 | How 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. |
| side | u32 | The side the seat is on, or zero where it stands empty. |
| botName | text, 64 bytes | What 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. |
| botAsset | text, 64 bytes | The name the client loads art for it under where nobody holds it, written and padded as above. |
| standing | text, 16 bytes | What 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. |
| botSkin | i32 | Which look it wears where nobody holds it. |
| botDifficulty | i32 | How 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. |
| icon | i32 | Which profile icon the client shows on the seat’s loading-screen card; a negative number, or one with no art, shows icon 0’s. |
| allyBadge | u8 | The 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. |
| enemyBadge | u8 | The 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.
In every range of this book
| Field | Type | What it is |
|---|---|---|
| speed | f32 | How fast the unit travels along the path, in world units a second, standing in for its own pace. |
| gravity | f32 | How sharply the unit arcs through the air along the way. Zero where it keeps to the ground. |
| fromX | f32 | Where 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. |
| fromZ | f32 | Where it starts, along the other. |
| keepFacing | u8 | 0 to face the way the unit travels, 1 to keep its facing. Values: 0 faceTheWayItGoes, 1 holdItsFacing. |
| follows | u32 | The unit this one is made to follow, or zero where it follows none. |
| followDistance | f32 | How far from that unit it is made to stay, in world units. |
| followBackDistance | f32 | How far behind that unit it is made to stay, in world units. |
| followTime | f32 | Seconds 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.
In 3.01–3.7
| Field | Type | What it is |
|---|---|---|
| size | u16 | How many bytes the casting takes, this field included. Where it differs from the bytes the casting takes, a client gives the cast no spell. |
| spell | u32 | Which spell, by the number its name gives, as Objects and identifiers works it out. |
| cast | u32 | The name this casting answers to, so later messages can name it. |
| level | u8 | The rank the spell stands at, counting from 1: a spell at its first rank carries 1. |
| attackSpeed | f32 | What the caster’s attack rhythm is scaled by while this runs. |
| caster | u32 | The unit casting. |
| chainOwner | u32 | The unit the casting is credited to, where a chain of casts leads back to another. |
| targetX | f32 | Where the casting is aimed, along one ground axis, in world units. |
| targetY | f32 | Where the casting is aimed, in height, in world units. |
| targetZ | f32 | Where the casting is aimed, along the other ground axis, in world units. |
| targetEndX | f32 | Where the casting stops being aimed, for a spell that sweeps, along one ground axis, in world units. |
| targetEndY | f32 | Where the casting stops being aimed, for a spell that sweeps, in height, in world units. |
| targetEndZ | f32 | Where the casting stops being aimed, for a spell that sweeps, along the other ground axis, in world units. |
| hitCount | u8 | How many units the casting names as hit. |
| hits | count in hitCount × SpellHit | |
| castTime | f32 | How long the casting takes before it takes effect, in seconds. |
| extraCastTime | f32 | What is added to that, in seconds. |
| totalTime | f32 | How long the whole casting runs, in seconds. |
| cooldown | f32 | How long until the spell can be cast again, in seconds. |
| startedAt | f32 | When the casting began, in seconds. |
| how | 1-byte bits | |
| how.basicAttack | bit 0 | Set where the casting is the caster’s own swing rather than a spell. |
| how.secondBasicAttack | bit 1 | Set where the swing is the second of a pair. |
| how.forced | bit 2 | Set where the casting was not asked for by whoever holds the caster. |
| how.overrideCastPosition | bit 3 | Set where the aim above replaces the one the caster would have used. |
| how.clicked | bit 4 | Set where a click on the spell’s own button started the casting. A client does nothing with it. |
| how.unused | bit 5 to 7 | Unused; a server writes zero. |
| slot | u8 | Which of the caster’s slots the spell sits in. |
| cost | f32 | What the casting spends from the caster’s resource. |
| launchX | f32 | Where what the casting throws leaves from, along one ground axis, in world units. |
| launchY | f32 | Where what the casting throws leaves from, in height, in world units. |
| launchZ | f32 | Where what the casting throws leaves from, along the other ground axis, in world units. |
In 3.8–3.10
| Field | Type | What it is |
|---|---|---|
| size | u16 | How many bytes the casting takes, this field included. Where it differs from the bytes the casting takes, a client gives the cast no spell. |
| spell | u32 | Which spell, by the number its name gives, as Objects and identifiers works it out. |
| cast | u32 | The name this casting answers to, so later messages can name it. |
| level | u8 | The rank the spell stands at, counting from 1: a spell at its first rank carries 1. |
| attackSpeed | f32 | What the caster’s attack rhythm is scaled by while this runs. |
| caster | u32 | The unit casting. |
| chainOwner | u32 | The unit the casting is credited to, where a chain of casts leads back to another. |
| targetX | f32 | Where the casting is aimed, along one ground axis, in world units. |
| targetY | f32 | Where the casting is aimed, in height, in world units. |
| targetZ | f32 | Where the casting is aimed, along the other ground axis, in world units. |
| targetEndX | f32 | Where the casting stops being aimed, for a spell that sweeps, along one ground axis, in world units. |
| targetEndY | f32 | Where the casting stops being aimed, for a spell that sweeps, in height, in world units. |
| targetEndZ | f32 | Where the casting stops being aimed, for a spell that sweeps, along the other ground axis, in world units. |
| hitCount | u8 | How many units the casting names as hit. |
| hits | count in hitCount × SpellHit | |
| castTime | f32 | How long the casting takes before it takes effect, in seconds. |
| extraCastTime | f32 | What is added to that, in seconds. |
| totalTime | f32 | How long the whole casting runs, in seconds. |
| cooldown | f32 | How long until the spell can be cast again, in seconds. |
| startedAt | f32 | When the casting began, in seconds. |
| how | 1-byte bits | |
| how.basicAttack | bit 0 | Set where the casting is the caster’s own swing rather than a spell. |
| how.secondBasicAttack | bit 1 | Set where the swing is the second of a pair. |
| how.forced | bit 2 | Set where the casting was not asked for by whoever holds the caster. |
| how.overrideCastPosition | bit 3 | Set where the aim above replaces the one the caster would have used. |
| how.clicked | bit 4 | Set where a click on the spell’s own button started the casting. A client does nothing with it. |
| how.unused | bit 5 to 7 | Unused; a server writes zero. |
| slot | u8 | Which of the caster’s slots the spell sits in. |
| cost | f32 | What the casting spends from the caster’s resource. |
| launchX | f32 | Where what the casting throws leaves from, along one ground axis, in world units. |
| launchY | f32 | Where what the casting throws leaves from, in height, in world units. |
| launchZ | f32 | Where what the casting throws leaves from, along the other ground axis, in world units. |
| ammoUsed | i32 | How many charges the casting spends. |
| ammoRecharge | f32 | How long until a spent charge returns, in seconds. |
| applyRecharge | u8 | Where it is not zero, a client sets the slot’s recharge timer from ammoRecharge, where that is longer than what remains. |
In 3.11–3.12
| Field | Type | What it is |
|---|---|---|
| size | u16 | How many bytes the casting takes, this field included. Where it differs from the bytes the casting takes, a client gives the cast no spell. |
| spell | u32 | Which spell, by the number its name gives, as Objects and identifiers works it out. |
| cast | u32 | The name this casting answers to, so later messages can name it. |
| level | u8 | The rank the spell stands at, counting from 1: a spell at its first rank carries 1. |
| attackSpeed | f32 | What the caster’s attack rhythm is scaled by while this runs. |
| caster | u32 | The unit casting. |
| chainOwner | u32 | The unit the casting is credited to, where a chain of casts leads back to another. |
| package | u32 | Which set of art and sound the client draws it with. |
| targetX | f32 | Where the casting is aimed, along one ground axis, in world units. |
| targetY | f32 | Where the casting is aimed, in height, in world units. |
| targetZ | f32 | Where the casting is aimed, along the other ground axis, in world units. |
| targetEndX | f32 | Where the casting stops being aimed, for a spell that sweeps, along one ground axis, in world units. |
| targetEndY | f32 | Where the casting stops being aimed, for a spell that sweeps, in height, in world units. |
| targetEndZ | f32 | Where the casting stops being aimed, for a spell that sweeps, along the other ground axis, in world units. |
| hitCount | u8 | How many units the casting names as hit. |
| hits | count in hitCount × SpellHit | |
| castTime | f32 | How long the casting takes before it takes effect, in seconds. |
| extraCastTime | f32 | What is added to that, in seconds. |
| totalTime | f32 | How long the whole casting runs, in seconds. |
| cooldown | f32 | How long until the spell can be cast again, in seconds. |
| startedAt | f32 | When the casting began, in seconds. |
| how | 1-byte bits | |
| how.basicAttack | bit 0 | Set where the casting is the caster’s own swing rather than a spell. |
| how.secondBasicAttack | bit 1 | Set where the swing is the second of a pair. |
| how.forced | bit 2 | Set where the casting was not asked for by whoever holds the caster. |
| how.overrideCastPosition | bit 3 | Set where the aim above replaces the one the caster would have used. |
| how.clicked | bit 4 | Set where a click on the spell’s own button started the casting. A client does nothing with it. |
| how.unused | bit 5 to 7 | Unused; a server writes zero. |
| slot | u8 | Which of the caster’s slots the spell sits in. |
| cost | f32 | What the casting spends from the caster’s resource. |
| launchX | f32 | Where what the casting throws leaves from, along one ground axis, in world units. |
| launchY | f32 | Where what the casting throws leaves from, in height, in world units. |
| launchZ | f32 | Where what the casting throws leaves from, along the other ground axis, in world units. |
| ammoUsed | i32 | How many charges the casting spends. |
| ammoRecharge | f32 | How long until a spent charge returns, in seconds. |
In 3.13–3.15
| Field | Type | What it is |
|---|---|---|
| size | u16 | How many bytes the casting takes, this field included. Where it differs from the bytes the casting takes, a client gives the cast no spell. |
| spell | u32 | Which spell, by the number its name gives, as Objects and identifiers works it out. |
| cast | u32 | The name this casting answers to, so later messages can name it. |
| level | u8 | The rank the spell stands at, counting from 1: a spell at its first rank carries 1. |
| attackSpeed | f32 | What the caster’s attack rhythm is scaled by while this runs. |
| caster | u32 | The unit casting. |
| chainOwner | u32 | The unit the casting is credited to, where a chain of casts leads back to another. |
| package | u32 | Which set of art and sound the client draws it with. |
| missile | u32 | The name the missile this casting throws will answer to, or zero where it throws none. |
| targetX | f32 | Where the casting is aimed, along one ground axis, in world units. |
| targetY | f32 | Where the casting is aimed, in height, in world units. |
| targetZ | f32 | Where the casting is aimed, along the other ground axis, in world units. |
| targetEndX | f32 | Where the casting stops being aimed, for a spell that sweeps, along one ground axis, in world units. |
| targetEndY | f32 | Where the casting stops being aimed, for a spell that sweeps, in height, in world units. |
| targetEndZ | f32 | Where the casting stops being aimed, for a spell that sweeps, along the other ground axis, in world units. |
| hitCount | u8 | How many units the casting names as hit. |
| hits | count in hitCount × SpellHit | The units the casting hits, each a unit then a one-byte result; a 4.17 client takes at most 32. |
| castTime | f32 | How long the casting takes before it takes effect, in seconds. |
| extraCastTime | f32 | What is added to that, in seconds. |
| totalTime | f32 | How long the whole casting runs, in seconds. |
| cooldown | f32 | How long until the spell can be cast again, in seconds. |
| startedAt | f32 | When the casting began, in seconds. |
| how | 1-byte bits | |
| how.basicAttack | bit 0 | Set where the casting is the caster’s own swing rather than a spell. |
| how.secondBasicAttack | bit 1 | Set where the swing is the second of a pair. |
| how.forced | bit 2 | Set where the casting was not asked for by whoever holds the caster. |
| how.overrideCastPosition | bit 3 | Set where the aim above replaces the one the caster would have used. |
| how.clicked | bit 4 | Set where a click on the spell’s own button started the casting. A client does nothing with it. |
| how.unused | bit 5 to 7 | Unused; a server writes zero. |
| slot | u8 | Which of the caster’s slots the spell sits in. |
| cost | f32 | What the casting spends from the caster’s resource. |
| launchX | f32 | Where what the casting throws leaves from, along one ground axis, in world units. |
| launchY | f32 | Where what the casting throws leaves from, in height, in world units. |
| launchZ | f32 | Where what the casting throws leaves from, along the other ground axis, in world units. |
| ammoUsed | i32 | How many charges the casting spends. |
| ammoRecharge | f32 | How long until a spent charge returns, in seconds. |
SpellHit
One unit a casting names as hit, and how it was hit.
In every range of this book
| Field | Type | What it is |
|---|---|---|
| unit | u32 | The unit hit. |
| atX | f32 | Where the hit is, along one ground axis, in world units. A client gives it to the missile it makes for this hit. |
| atY | f32 | Where the hit is, in height, in world units. A client gives it to the missile it makes for this hit. |
| atZ | f32 | Where the hit is, along the other ground axis, in world units. A client gives it to the missile it makes for this hit. |
| result | u8 | How the hit landed. |
Vectors (1)
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: AscendedUnit, AttackSpeedBounds, CampMarker, CapturePointValue, CharacterPreload, CooldownSet, FloatingTextOnMap, InputLockChanged, InputLocksFlipped, InventorySnapshotOnMap, MinimapHighlighted, MinionKillCount, PlaceTurret, RegionMoved, ResyncEnded, ShopHighlighted, Situation, SpawnTurret, SpellIconChanged, SpellNameChanged, SpellOffsetTargetChanged, SpellRangeChanged, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, SpellTargetingChanged, SurrenderFailed, ThemeMusic, UnitDiedOnMap, ZoomReport.
3.01
Client builds from 3.01.0.1 up to, not including, 3.02.0.30. Patch notes: V3.01.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 3.01.0.1 | 11 | 0 | 3 | 3651b56 | 2026-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: AnimationAdvanced, AttackIndicators, BalanceResult, BalanceVote, BounceMissile, CampTimer, ChampionRemoved, ChatAllowance, CursorRings, DeathTimer, EffectCounter, GroundAttackMode, InventorySnapshot, ItemCharges, LevelCap, MarkerMoved, MissileSpeed, ResourceKindChanged, ShopUndo, ShopUndoCount, SpawnMarker, SpellCharges, SpellCostChanged, SpellRankLimits, SpellToggled, StreamChunk, StreamChunkRange, StreamMetadata, SurrenderAllowed.
Every message of this range (230)
3.02
Client builds from 3.02.0.30 up to, not including, 3.03.0.198. Patch notes: V3.02.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 3.02.0.30 | 11 | 0 | 3 | 3651b56 | 2026-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: AnimationAdvanced, AttackIndicators, BounceMissile, CampTimer, ChampionRemoved, CursorRings, DeathTimer, EffectCounter, GroundAttackMode, InventorySnapshot, ItemCharges, LevelCap, MarkerMoved, MissileSpeed, ResourceKindChanged, ShopUndo, ShopUndoCount, SpawnMarker, SpellCharges, SpellCostChanged, SpellRankLimits, SpellToggled, StreamChunk, StreamChunkRange, StreamMetadata, SurrenderAllowed.
Every message of this range (233)
Against 3.01
Where a build from 3.02.0.30 up to, not including, 3.03.0.198 differs from one from 3.01.0.1 up to, not including, 3.02.0.30. Anything not named here is the same in both.
In 3.02, not in 3.01
| Message | Sent by | Command | What it does |
|---|---|---|---|
BalanceResult | server | 252 on events | What a server sends when a vote on evening out a match ends, or cannot be held |
BalanceVote | server | 250 on events | 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 |
ChatAllowance | server | 249 on events | Limit a player’s chat, showing how many lines they have left |
Laid out differently
ChatparamsLengthis in 3.02 (u32), afteraudience, and not in 3.01.paramsis in 3.02 (bytes, 32), aftertextLength, and not in 3.01.
ClientEventeventtakes 97 minionsSpawned, 98 welcome, 99 startNoticeTwo, 100 startNoticeThree, 104 scoreboardOpened, 125 dragonKilled, 126 dragonKilledWatched, 127 baronKilled, 128 baronKilledWatched, 129 spiderKilled, 130 spiderKilledWatched, 131 altarCaptured, 132 altarCapturedWatched in 3.02 and not in 3.01.eventtakes 88 minionsSpawned, 89 welcome, 90 startNoticeTwo, 91 startNoticeThree, 95 scoreboardOpened, 116 dragonKilled, 117 dragonKilledWatched, 118 baronKilled, 119 baronKilledWatched, 120 spiderKilled, 121 spiderKilledWatched, 122 altarCaptured, 123 altarCapturedWatched in 3.01 and not in 3.02.valueis present when event = 24 or 76 or 78 or 122 or 123 in 3.01, and present when event = 24 or 76 or 78 or 131 or 132 in 3.02.monsteris present when event = 116 or 117 or 118 or 119 or 120 or 121 in 3.01, and present when event = 125 or 126 or 127 or 128 or 129 or 130 in 3.02.
DeathHistoryentries[].eventtakes 97 minionsSpawned, 98 welcome, 99 startNoticeTwo, 100 startNoticeThree, 104 scoreboardOpened, 125 dragonKilled, 126 dragonKilledWatched, 127 baronKilled, 128 baronKilledWatched, 129 spiderKilled, 130 spiderKilledWatched, 131 altarCaptured, 132 altarCapturedWatched in 3.02 and not in 3.01.entries[].eventtakes 88 minionsSpawned, 89 welcome, 90 startNoticeTwo, 91 startNoticeThree, 95 scoreboardOpened, 116 dragonKilled, 117 dragonKilledWatched, 118 baronKilled, 119 baronKilledWatched, 120 spiderKilled, 121 spiderKilledWatched, 122 altarCaptured, 123 altarCapturedWatched in 3.01 and not in 3.02.entries[].valueis present when event = 24 or 76 or 78 or 122 or 123 in 3.01, and present when event = 24 or 76 or 78 or 131 or 132 in 3.02.entries[].monsteris present when event = 116 or 117 or 118 or 119 or 120 or 121 in 3.01, and present when event = 125 or 126 or 127 or 128 or 129 or 130 in 3.02.
HudHighlightToggledparttakes 2 shop in 3.01 and not in 3.02.unusedis in 3.02 (u8), afternumber, and not in 3.01.secondis in 3.01 and not in 3.02.
HudHighlightedparttakes 1 shop in 3.01 and not in 3.02.unusedis in 3.02 (u8), afternumber, and not in 3.01.secondis in 3.01 and not in 3.02.
UnitTextstyletakes 22 onMyWay, 23 damage, 24 critical, 25 debug in 3.02 and not in 3.01.styletakes 22 damage, 23 critical, 24 debug in 3.01 and not in 3.02.
WorldEventeventtakes 97 minionsSpawned, 98 welcome, 99 startNoticeTwo, 100 startNoticeThree, 104 scoreboardOpened, 125 dragonKilled, 126 dragonKilledWatched, 127 baronKilled, 128 baronKilledWatched, 129 spiderKilled, 130 spiderKilledWatched, 131 altarCaptured, 132 altarCapturedWatched in 3.02 and not in 3.01.eventtakes 88 minionsSpawned, 89 welcome, 90 startNoticeTwo, 91 startNoticeThree, 95 scoreboardOpened, 116 dragonKilled, 117 dragonKilledWatched, 118 baronKilled, 119 baronKilledWatched, 120 spiderKilled, 121 spiderKilledWatched, 122 altarCaptured, 123 altarCapturedWatched in 3.01 and not in 3.02.valueis present when event = 24 or 76 or 78 or 122 or 123 in 3.01, and present when event = 24 or 76 or 78 or 131 or 132 in 3.02.monsteris present when event = 116 or 117 or 118 or 119 or 120 or 121 in 3.01, and present when event = 125 or 126 or 127 or 128 or 129 or 130 in 3.02.
Chapters
- In the effects chapter, a passage holds for 3.02 and not 3.01: A client takes
EmitterPauseas aChatAllowance, the first four bytes of the group’s name standing as the lines left.
3.03
Client builds from 3.03.0.198 up to, not including, 3.04.0.78. Patch notes: V3.03.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 3.03.0.198 | 11 | 0 | 3 | 8610a16 | 2026-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: AnimationAdvanced, AttackIndicators, BounceMissile, CampTimer, ChampionRemoved, CursorRings, DeathTimer, EffectCounter, GroundAttackMode, InventorySnapshot, ItemCharges, LevelCap, MarkerMoved, MissileSpeed, ResourceKindChanged, ShopUndo, ShopUndoCount, SpawnMarker, SpellCharges, SpellCostChanged, SpellRankLimits, SpellToggled, StreamChunk, StreamChunkRange, StreamMetadata, SurrenderAllowed.
Every message of this range (233)
Against 3.02
Where a build from 3.03.0.198 up to, not including, 3.04.0.78 differs from one from 3.02.0.30 up to, not including, 3.03.0.198. Anything not named here is the same in both.
Transport
- The packet header differ: see protocol.json.
Laid out differently
MapPropskinis in 3.03 (i32), afternode, and not in 3.02.
Chapters
- In the transport chapter, a passage holds for 3.02 and not 3.03: Stock ENet 1.2.5 serves a client once its transmission unit is clamped (see below).
- In the transport chapter, a passage holds for 3.03 and not 3.02: The rest of this chapter says what a client does not accept from stock ENet.
- In the transport chapter, a passage holds for 3.03 and not 3.02: A client’s connect command takes ENet’s layout, except that two of its fields carry one byte of meaning each.
3.04
Client builds from 3.04.0.78 up to, not including, 3.5.0.68. Patch notes: V3.04.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 3.04.0.78 | 11 | 0 | 3 | 2c82be9 | 2026-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: AnimationAdvanced, AttackIndicators, BounceMissile, CampTimer, ChampionRemoved, CursorRings, DeathTimer, EffectCounter, GroundAttackMode, InhibitorDied, InventorySnapshot, ItemCharges, LevelCap, MarkerMoved, MissileSpeed, ResourceKindChanged, ShopUndo, ShopUndoCount, SpawnMarker, SpellCharges, SpellCostChanged, SpellRankLimits, SpellToggled, StreamChunk, StreamChunkRange, StreamMetadata, SurrenderAllowed.
Every message of this range (232)
Against 3.03
Where a build from 3.04.0.78 up to, not including, 3.5.0.68 differs from one from 3.03.0.198 up to, not including, 3.04.0.78. Anything not named here is the same in both.
In 3.03, not in 3.04
| Message | Sent by | Command it had |
|---|---|---|
InhibitorDied | server | 138 on events |
Laid out differently
ClientEventeventtakes 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 killingSpree, 51 killDuringSpree, 58 doubleKillDuringSpree, 59 tripleKillDuringSpree, 60 quadraKillDuringSpree, 63 deathAssist, 64 playerQuit, 65 playerLeft, 66 playerReconnected, 77 itemBought, 78 itemCallout, 79 itemChanged, 98 minionsSpawned, 99 welcome, 100 startNoticeTwo, 101 startNoticeThree, 105 scoreboardOpened, 126 dragonKilled, 127 dragonKilledWatched, 128 baronKilled, 129 baronKilledWatched, 130 spiderKilled, 131 spiderKilledWatched, 132 altarCaptured, 133 altarCapturedWatched, 134 wardPlaced, 135 wardKilled in 3.04 and not in 3.03.eventtakes 1 died, 3 championDied, 5 championKill, 7 singleKill, 8 doubleKill, 14 damageTaken, 15 damageDealt, 22 goldSpent, 23 goldEarned, 24 consumableBought, 25 criticalStrike, 28 inhibitorKilled, 29 inhibitorDied, 30 inhibitorRespawningSoon, 32 turretKilled, 33 turretDied, 34 minionKilled, 35 minionDenied, 36 monsterKilled, 37 largeMonsterKilled, 38 nexusKilled, 39 nexusDied, 40 heal, 41 healCast, 42 buff, 43 killingSpree, 50 killDuringSpree, 57 doubleKillDuringSpree, 58 tripleKillDuringSpree, 59 quadraKillDuringSpree, 62 deathAssist, 63 playerQuit, 64 playerLeft, 65 playerReconnected, 76 itemBought, 77 itemCallout, 78 itemChanged, 97 minionsSpawned, 98 welcome, 99 startNoticeTwo, 100 startNoticeThree, 104 scoreboardOpened, 125 dragonKilled, 126 dragonKilledWatched, 127 baronKilled, 128 baronKilledWatched, 129 spiderKilled, 130 spiderKilledWatched, 131 altarCaptured, 132 altarCapturedWatched in 3.03 and not in 3.04.stageis present when event = 4 in 3.03, and present when event = 5 in 3.04.damageis present when event = 14 or 15 in 3.03, and present when event = 15 or 16 in 3.04.spentis present when event = 22 in 3.03, and present when event = 23 in 3.04.valueis present when event = 24 or 76 or 78 or 131 or 132 in 3.03, and present when event = 25 or 77 or 79 or 132 or 133 in 3.04.criticalis present when event = 25 in 3.03, and present when event = 26 in 3.04.spreeis present when event = 43 in 3.03, and present when event = 44 in 3.04.earnedis present when event = 23 in 3.03, and present when event = 24 in 3.04.healis present when event = 40 or 41 in 3.03, and present when event = 41 or 42 in 3.04.effectis present when event = 42 in 3.03, and present when event = 43 in 3.04.assistis present when event = 62 in 3.03, and present when event = 63 in 3.04.killis present when event = 1 in 3.03, and present when event = 1 or 2 or 34 or 126 or 127 or 128 or 129 or 130 or 131 in 3.04.monsteris present when event = 125 or 126 or 127 or 128 or 129 or 130 in 3.03, and present when event = 126 or 127 or 128 or 129 or 130 or 131 in 3.04.calloutis present when event = 77 in 3.03, and present when event = 78 in 3.04.
DeathHistoryentries[].eventtakes 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 killingSpree, 51 killDuringSpree, 58 doubleKillDuringSpree, 59 tripleKillDuringSpree, 60 quadraKillDuringSpree, 63 deathAssist, 64 playerQuit, 65 playerLeft, 66 playerReconnected, 77 itemBought, 78 itemCallout, 79 itemChanged, 98 minionsSpawned, 99 welcome, 100 startNoticeTwo, 101 startNoticeThree, 105 scoreboardOpened, 126 dragonKilled, 127 dragonKilledWatched, 128 baronKilled, 129 baronKilledWatched, 130 spiderKilled, 131 spiderKilledWatched, 132 altarCaptured, 133 altarCapturedWatched, 134 wardPlaced, 135 wardKilled in 3.04 and not in 3.03.entries[].eventtakes 1 died, 3 championDied, 5 championKill, 7 singleKill, 8 doubleKill, 14 damageTaken, 15 damageDealt, 22 goldSpent, 23 goldEarned, 24 consumableBought, 25 criticalStrike, 28 inhibitorKilled, 29 inhibitorDied, 30 inhibitorRespawningSoon, 32 turretKilled, 33 turretDied, 34 minionKilled, 35 minionDenied, 36 monsterKilled, 37 largeMonsterKilled, 38 nexusKilled, 39 nexusDied, 40 heal, 41 healCast, 42 buff, 43 killingSpree, 50 killDuringSpree, 57 doubleKillDuringSpree, 58 tripleKillDuringSpree, 59 quadraKillDuringSpree, 62 deathAssist, 63 playerQuit, 64 playerLeft, 65 playerReconnected, 76 itemBought, 77 itemCallout, 78 itemChanged, 97 minionsSpawned, 98 welcome, 99 startNoticeTwo, 100 startNoticeThree, 104 scoreboardOpened, 125 dragonKilled, 126 dragonKilledWatched, 127 baronKilled, 128 baronKilledWatched, 129 spiderKilled, 130 spiderKilledWatched, 131 altarCaptured, 132 altarCapturedWatched in 3.03 and not in 3.04.entries[].stageis present when event = 4 in 3.03, and present when event = 5 in 3.04.entries[].damageis present when event = 14 or 15 in 3.03, and present when event = 15 or 16 in 3.04.entries[].spentis present when event = 22 in 3.03, and present when event = 23 in 3.04.entries[].valueis present when event = 24 or 76 or 78 or 131 or 132 in 3.03, and present when event = 25 or 77 or 79 or 132 or 133 in 3.04.entries[].criticalis present when event = 25 in 3.03, and present when event = 26 in 3.04.entries[].spreeis present when event = 43 in 3.03, and present when event = 44 in 3.04.entries[].earnedis present when event = 23 in 3.03, and present when event = 24 in 3.04.entries[].healis present when event = 40 or 41 in 3.03, and present when event = 41 or 42 in 3.04.entries[].effectis present when event = 42 in 3.03, and present when event = 43 in 3.04.entries[].assistis present when event = 62 in 3.03, and present when event = 63 in 3.04.entries[].killis present when event = 1 in 3.03, and present when event = 1 or 2 or 34 or 126 or 127 or 128 or 129 or 130 or 131 in 3.04.entries[].monsteris present when event = 125 or 126 or 127 or 128 or 129 or 130 in 3.03, and present when event = 126 or 127 or 128 or 129 or 130 or 131 in 3.04.entries[].calloutis present when event = 77 in 3.03, and present when event = 78 in 3.04.
VersionSyncagreementhasreportingReadyat bit 3 in 3.04, and not in 3.03.agreement.unusedis at bit 3, 5 bits wide, in 3.03 and at bit 4, 4 bits wide, in 3.04.metricsHostis text, 1024 bytes in 3.03 and text, 256 bytes in 3.04.metricsPathis text, 1024 bytes in 3.03 and text, 256 bytes in 3.04.reportingHostis in 3.04 (text, 256 bytes), aftermetricsPort, and not in 3.03.reportingPathis in 3.04 (text, 256 bytes), afterreportingHost, and not in 3.03.reportingPortis in 3.04 (u16), afterreportingPath, and not in 3.03.altReportingHostis in 3.04 (text, 256 bytes), afterreportingPort, and not in 3.03.altReportingPathis in 3.04 (text, 256 bytes), afteraltReportingHost, and not in 3.03.altReportingPortis in 3.04 (u16), afteraltReportingPath, and not in 3.03.
WorldEventeventtakes 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, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 killingSpree, 51 killDuringSpree, 58 doubleKillDuringSpree, 59 tripleKillDuringSpree, 60 quadraKillDuringSpree, 63 deathAssist, 64 playerQuit, 65 playerLeft, 66 playerReconnected, 77 itemBought, 78 itemCallout, 79 itemChanged, 98 minionsSpawned, 99 welcome, 100 startNoticeTwo, 101 startNoticeThree, 105 scoreboardOpened, 126 dragonKilled, 127 dragonKilledWatched, 128 baronKilled, 129 baronKilledWatched, 130 spiderKilled, 131 spiderKilledWatched, 132 altarCaptured, 133 altarCapturedWatched, 134 wardPlaced, 135 wardKilled in 3.04 and not in 3.03.eventtakes 1 died, 3 championDied, 5 championKill, 7 singleKill, 8 doubleKill, 14 damageTaken, 15 damageDealt, 22 goldSpent, 23 goldEarned, 24 consumableBought, 25 criticalStrike, 28 inhibitorKilled, 29 inhibitorDied, 30 inhibitorRespawningSoon, 32 turretKilled, 33 turretDied, 34 minionKilled, 35 minionDenied, 36 monsterKilled, 37 largeMonsterKilled, 38 nexusKilled, 39 nexusDied, 40 heal, 41 healCast, 42 buff, 43 killingSpree, 50 killDuringSpree, 57 doubleKillDuringSpree, 58 tripleKillDuringSpree, 59 quadraKillDuringSpree, 62 deathAssist, 63 playerQuit, 64 playerLeft, 65 playerReconnected, 76 itemBought, 77 itemCallout, 78 itemChanged, 97 minionsSpawned, 98 welcome, 99 startNoticeTwo, 100 startNoticeThree, 104 scoreboardOpened, 125 dragonKilled, 126 dragonKilledWatched, 127 baronKilled, 128 baronKilledWatched, 129 spiderKilled, 130 spiderKilledWatched, 131 altarCaptured, 132 altarCapturedWatched in 3.03 and not in 3.04.stageis present when event = 4 in 3.03, and present when event = 5 in 3.04.damageis present when event = 14 or 15 in 3.03, and present when event = 15 or 16 in 3.04.spentis present when event = 22 in 3.03, and present when event = 23 in 3.04.valueis present when event = 24 or 76 or 78 or 131 or 132 in 3.03, and present when event = 25 or 77 or 79 or 132 or 133 in 3.04.criticalis present when event = 25 in 3.03, and present when event = 26 in 3.04.spreeis present when event = 43 in 3.03, and present when event = 44 in 3.04.earnedis present when event = 23 in 3.03, and present when event = 24 in 3.04.healis present when event = 40 or 41 in 3.03, and present when event = 41 or 42 in 3.04.effectis present when event = 42 in 3.03, and present when event = 43 in 3.04.assistis present when event = 62 in 3.03, and present when event = 63 in 3.04.killis present when event = 1 in 3.03, and present when event = 1 or 2 or 34 or 126 or 127 or 128 or 129 or 130 or 131 in 3.04.monsteris present when event = 125 or 126 or 127 or 128 or 129 or 130 in 3.03, and present when event = 126 or 127 or 128 or 129 or 130 or 131 in 3.04.calloutis present when event = 77 in 3.03, and present when event = 78 in 3.04.
Structs
Replicationgroup0.lengthis in 3.04 (u8), aftergroup0.which, and not in 3.03.group0.valuesis count in the bits set in which × bytes in 3.03 and bytes, sized by length in 3.04.group1.lengthis in 3.04 (u8), aftergroup1.which, and not in 3.03.group1.valuesis count in the bits set in which × bytes in 3.03 and bytes, sized by length in 3.04.group2.lengthis in 3.04 (u8), aftergroup2.which, and not in 3.03.group2.valuesis count in the bits set in which × bytes in 3.03 and bytes, sized by length in 3.04.group3.lengthis in 3.04 (u8), aftergroup3.which, and not in 3.03.group3.valuesis count in the bits set in which × bytes in 3.03 and bytes, sized by length in 3.04.group5.lengthis in 3.04 (u8), aftergroup5.which, and not in 3.03.group5.valuesis count in the bits set in which × bytes in 3.03 and bytes, sized by length in 3.04.group4.lengthis in 3.04 (u8), aftergroup4.which, and not in 3.03.group4.valuesis count in the bits set in which × bytes in 3.03 and bytes, sized by length in 3.04.
3.5
Client builds from 3.5.0.68 up to, not including, 3.6.0.388. Patch notes: V3.5.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 3.5.0.68 | 11 | 0 | 3 | ea13481 | 2026-10-21 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AnimationAdvanced, AttackIndicators, BounceMissile, CampTimer, ChampionRemoved, CursorRings, DeathTimer, EffectCounter, GroundAttackMode, InhibitorDied, InventorySnapshot, ItemCharges, LevelCap, MarkerMoved, MissileSpeed, ResourceKindChanged, ShopUndo, ShopUndoCount, SpawnMarker, SpellCharges, SpellCostChanged, SpellRankLimits, SpellToggled, StreamChunk, StreamChunkRange, StreamMetadata, SurrenderAllowed.
Every message of this range (233)
Against 3.04
Where a build from 3.5.0.68 up to, not including, 3.6.0.388 differs from one from 3.04.0.78 up to, not including, 3.5.0.68. Anything not named here is the same in both.
In 3.5, not in 3.04
| Message | Sent by | Command | What it does |
|---|---|---|---|
BalanceVoteRefused | client | 250 on requests | 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 |
Laid out differently
StartGame(vectors: one-on-3-5)featuresis in 3.5 (4-byte bits), afterrules, and not in 3.04.
Chapters
- In the effects chapter, a passage holds for 3.04 and not 3.5: A client takes
EmitterPauseas aChatAllowance, the first four bytes of the group’s name standing as the lines left.
3.6
Client builds from 3.6.0.388 up to, not including, 3.7.0.328. Patch notes: V3.6.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 3.6.0.388 | 11 | 0 | 3 | a33f31f | 2026-10-21 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: BounceMissile, CampTimer, ChampionRemoved, CursorRings, DeathTimer, EffectCounter, InhibitorDied, InventorySnapshot, LevelCap, MarkerMoved, MissileSpeed, ResourceKindChanged, ShopUndo, ShopUndoCount, SpellCharges, SpellCostChanged, SpellRankLimits, SpellToggled, StreamChunk, StreamChunkRange, StreamMetadata, SurrenderAllowed.
Every message of this range (238)
Against 3.5
Where a build from 3.6.0.388 up to, not including, 3.7.0.328 differs from one from 3.5.0.68 up to, not including, 3.6.0.388. Anything not named here is the same in both.
Transport
- The families differ: see families.json.
In 3.6, not in 3.5
| Message | Sent by | Command | What it does |
|---|---|---|---|
AnimationAdvanced | server | 259 on events | Move an animation a unit is playing forward at once |
AttackIndicators | server | 258 on events | Show or hide a unit’s attack indicators |
GroundAttackMode | server | 257 on events | Make a champion’s clicks attack the ground |
ItemCharges | server | 253 on events | Set how many charges an item holds |
SpawnMarker | server | 256 on events | Create an unseen object at a place, which other messages can then name |
Laid out differently
AppearancePushedskinis in 3.6 (i32), afterhow, and not in 3.5.
ClientEventeventtakes 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 101 minionsSpawned, 102 welcome, 103 startNoticeTwo, 104 startNoticeThree, 108 scoreboardOpened, 129 dragonKilled, 130 dragonKilledWatched, 131 baronKilled, 132 baronKilledWatched, 133 spiderKilled, 134 spiderKilledWatched, 135 altarCaptured, 136 altarCapturedWatched, 137 wardPlaced, 138 wardKilled in 3.6 and not in 3.5.eventtakes 44 killingSpree, 51 killDuringSpree, 58 doubleKillDuringSpree, 59 tripleKillDuringSpree, 60 quadraKillDuringSpree, 63 deathAssist, 64 playerQuit, 65 playerLeft, 66 playerReconnected, 77 itemBought, 78 itemCallout, 79 itemChanged, 98 minionsSpawned, 99 welcome, 100 startNoticeTwo, 101 startNoticeThree, 105 scoreboardOpened, 126 dragonKilled, 127 dragonKilledWatched, 128 baronKilled, 129 baronKilledWatched, 130 spiderKilled, 131 spiderKilledWatched, 132 altarCaptured, 133 altarCapturedWatched, 134 wardPlaced, 135 wardKilled in 3.5 and not in 3.6.valueis present when event = 25 or 77 or 79 or 132 or 133 in 3.5, and present when event = 25 or 78 or 79 or 80 or 82 or 135 or 136 in 3.6.spreeis present when event = 44 in 3.5, and present when event = 45 in 3.6.earned.detailis in 3.6 (u32), afterearned.gold, and not in 3.5.effectis present when event = 43 in 3.5, and present when event = 43 or 44 in 3.6.extrais in 3.6 (bytes, 8), aftereffect.parent, and not in 3.5.assistis present when event = 63 in 3.5, and present when event = 64 in 3.6.killis present when event = 1 or 2 or 34 or 126 or 127 or 128 or 129 or 130 or 131 in 3.5, and present when event = 1 or 2 or 34 or 37 or 129 or 130 or 131 or 132 or 133 or 134 in 3.6.monsteris present when event = 126 or 127 or 128 or 129 or 130 or 131 in 3.5, and present when event = 37 or 129 or 130 or 131 or 132 or 133 or 134 in 3.6.monster.sideis in 3.6 (u32), aftermonster.skin, and not in 3.5.calloutis present when event = 78 in 3.5, and present when event = 81 in 3.6.
DeathHistoryentries[].eventtakes 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 101 minionsSpawned, 102 welcome, 103 startNoticeTwo, 104 startNoticeThree, 108 scoreboardOpened, 129 dragonKilled, 130 dragonKilledWatched, 131 baronKilled, 132 baronKilledWatched, 133 spiderKilled, 134 spiderKilledWatched, 135 altarCaptured, 136 altarCapturedWatched, 137 wardPlaced, 138 wardKilled in 3.6 and not in 3.5.entries[].eventtakes 44 killingSpree, 51 killDuringSpree, 58 doubleKillDuringSpree, 59 tripleKillDuringSpree, 60 quadraKillDuringSpree, 63 deathAssist, 64 playerQuit, 65 playerLeft, 66 playerReconnected, 77 itemBought, 78 itemCallout, 79 itemChanged, 98 minionsSpawned, 99 welcome, 100 startNoticeTwo, 101 startNoticeThree, 105 scoreboardOpened, 126 dragonKilled, 127 dragonKilledWatched, 128 baronKilled, 129 baronKilledWatched, 130 spiderKilled, 131 spiderKilledWatched, 132 altarCaptured, 133 altarCapturedWatched, 134 wardPlaced, 135 wardKilled in 3.5 and not in 3.6.entries[].valueis present when event = 25 or 77 or 79 or 132 or 133 in 3.5, and present when event = 25 or 78 or 79 or 80 or 82 or 135 or 136 in 3.6.entries[].spreeis present when event = 44 in 3.5, and present when event = 45 in 3.6.entries[].earned.detailis in 3.6 (u32), afterentries[].earned.gold, and not in 3.5.entries[].effectis present when event = 43 in 3.5, and present when event = 43 or 44 in 3.6.entries[].extrais in 3.6 (bytes, 8), afterentries[].effect.parent, and not in 3.5.entries[].assistis present when event = 63 in 3.5, and present when event = 64 in 3.6.entries[].killis present when event = 1 or 2 or 34 or 126 or 127 or 128 or 129 or 130 or 131 in 3.5, and present when event = 1 or 2 or 34 or 37 or 129 or 130 or 131 or 132 or 133 or 134 in 3.6.entries[].monsteris present when event = 126 or 127 or 128 or 129 or 130 or 131 in 3.5, and present when event = 37 or 129 or 130 or 131 or 132 or 133 or 134 in 3.6.entries[].monster.sideis in 3.6 (u32), afterentries[].monster.skin, and not in 3.5.entries[].calloutis present when event = 78 in 3.5, and present when event = 81 in 3.6.
ItemAddedchargesis in 3.6 (u8), afterinSlot, and not in 3.5.
MusicCuecuetakes 3 changeState in 3.6 and not in 3.5.parameteris in 3.6 (u32), afterevent, and not in 3.5.
StartGame(vectors: one-on-3-6)featuresis in 3.5 and not in 3.6.
VersionSync(vectors: one-on-3-6)teamNameis text, 25 bytes in 3.5 and text, 97 bytes in 3.6.teamTagis text, 7 bytes in 3.5 and text, 25 bytes in 3.6.otherTeamNameis text, 25 bytes in 3.5 and text, 97 bytes in 3.6.otherTeamTagis text, 7 bytes in 3.5 and text, 25 bytes in 3.6.featuresis in 3.6 (4-byte bits), aftertipFlags, and not in 3.5.
WorldEventeventtakes 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 101 minionsSpawned, 102 welcome, 103 startNoticeTwo, 104 startNoticeThree, 108 scoreboardOpened, 129 dragonKilled, 130 dragonKilledWatched, 131 baronKilled, 132 baronKilledWatched, 133 spiderKilled, 134 spiderKilledWatched, 135 altarCaptured, 136 altarCapturedWatched, 137 wardPlaced, 138 wardKilled in 3.6 and not in 3.5.eventtakes 44 killingSpree, 51 killDuringSpree, 58 doubleKillDuringSpree, 59 tripleKillDuringSpree, 60 quadraKillDuringSpree, 63 deathAssist, 64 playerQuit, 65 playerLeft, 66 playerReconnected, 77 itemBought, 78 itemCallout, 79 itemChanged, 98 minionsSpawned, 99 welcome, 100 startNoticeTwo, 101 startNoticeThree, 105 scoreboardOpened, 126 dragonKilled, 127 dragonKilledWatched, 128 baronKilled, 129 baronKilledWatched, 130 spiderKilled, 131 spiderKilledWatched, 132 altarCaptured, 133 altarCapturedWatched, 134 wardPlaced, 135 wardKilled in 3.5 and not in 3.6.valueis present when event = 25 or 77 or 79 or 132 or 133 in 3.5, and present when event = 25 or 78 or 79 or 80 or 82 or 135 or 136 in 3.6.spreeis present when event = 44 in 3.5, and present when event = 45 in 3.6.earned.detailis in 3.6 (u32), afterearned.gold, and not in 3.5.effectis present when event = 43 in 3.5, and present when event = 43 or 44 in 3.6.extrais in 3.6 (bytes, 8), aftereffect.parent, and not in 3.5.assistis present when event = 63 in 3.5, and present when event = 64 in 3.6.killis present when event = 1 or 2 or 34 or 126 or 127 or 128 or 129 or 130 or 131 in 3.5, and present when event = 1 or 2 or 34 or 37 or 129 or 130 or 131 or 132 or 133 or 134 in 3.6.monsteris present when event = 126 or 127 or 128 or 129 or 130 or 131 in 3.5, and present when event = 37 or 129 or 130 or 131 or 132 or 133 or 134 in 3.6.monster.sideis in 3.6 (u32), aftermonster.skin, and not in 3.5.calloutis present when event = 78 in 3.5, and present when event = 81 in 3.6.
Structs
Appearanceskinis in 3.6 (u32), afterasset, and not in 3.5.
3.7
Client builds from 3.7.0.328 up to, not including, 3.8.0.226. Patch notes: V3.7.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 3.7.0.328 | 11 | 0 | 3 | 0cebaee | 2026-10-21 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: BounceMissile, CampTimer, ChampionRemoved, CursorRings, DeathTimer, EffectCounter, InhibitorDied, InventorySnapshot, LevelCap, MarkerMoved, MissileSpeed, ResourceKindChanged, ShopUndo, ShopUndoCount, SpellCharges, SpellRankLimits, SpellToggled, StreamChunk, StreamChunkRange, StreamMetadata, SurrenderAllowed.
Every message of this range (239)
Against 3.6
Where a build from 3.7.0.328 up to, not including, 3.8.0.226 differs from one from 3.6.0.388 up to, not including, 3.7.0.328. Anything not named here is the same in both.
In 3.7, not in 3.6
| Message | Sent by | Command | What it does |
|---|---|---|---|
SpellCostChanged | server | 260 on events | Change what a spell costs the player it is sent to |
Laid out differently
CapturePointChangedresourceKindtakes 9 bloodWell, 10 other in 3.7 and not in 3.6.resourceKindtakes 9 other in 3.6 and not in 3.7.
PlayAnimationflagsnames bit 4replaceablein 3.6 andkeepEmotesin 3.7.flags.lockedis at bit 5 in 3.6 and at bit 0 in 3.7.flags.lockedFromIdleis at bit 7 in 3.6 and at bit 1 in 3.7.flags.noBlendis at bit 6 in 3.6 and at bit 2 in 3.7.flags.holdLastFrameis at bit 1 in 3.6 and at bit 3 in 3.7.flags.unusedis at bit 9, 23 bits wide, in 3.6 and at bit 5, 27 bits wide, in 3.7.flagshasloopat bit 0 in 3.6, and not in 3.7.flagshasqueueat bit 2 in 3.6, and not in 3.7.flagshasqueueLastat bit 3 in 3.6, and not in 3.7.flagshasreservedat bit 8 in 3.6, and not in 3.7.
VersionSync(vectors: one-on-3-7)featureshaswallJumpsat bit 4 in 3.7, and not in 3.6.featureshasaudioBackendat bit 5 in 3.7, and not in 3.6.features.unusedis at bit 4, 28 bits wide, in 3.6 and at bit 6, 26 bits wide, in 3.7.
3.8
Client builds from 3.8.0.226 up to, not including, 3.9.0.491. Patch notes: V3.8.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 3.8.0.226 | 11 | 0 | 3 | 8cc9d22 | 2026-10-21 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: BounceMissile, CampTimer, ChampionRemoved, CursorRings, DeathTimer, EffectCounter, InhibitorDied, InventorySnapshot, LevelCap, MarkerMoved, MissileSpeed, ResourceKindChanged, ShopUndo, ShopUndoCount, SpellRankLimits, SpellToggled, StreamChunk, StreamChunkRange, StreamMetadata, SurrenderAllowed.
Every message of this range (242)
Against 3.7
Where a build from 3.8.0.226 up to, not including, 3.9.0.491 differs from one from 3.7.0.328 up to, not including, 3.8.0.226. Anything not named here is the same in both.
In 3.8, not in 3.7
| Message | Sent by | Command | What it does |
|---|---|---|---|
DrawPath | client | 262 on requests | What a client sends as its player draws a path with the right mouse button, once a server has turned drawing on (DrawPathMode) |
DrawPathMode | server | 261 on events | What a server sends its player’s champion to have the player draw paths with the mouse |
SpellCharges | server | 263 on events | Say how many uses one of a unit’s spells has left and when the next returns |
Laid out differently
ClientEvent(vectors: altar-captured-on-3-8, altar-captured-watched-on-3-8, baron-killed-on-3-8, baron-killed-watched-on-3-8, buff-on-3-8, consumable-bought-on-3-8, critical-strike-on-3-8, crowd-control-on-3-8, damage-dealt-on-3-8, damage-taken-on-3-8, death-assist-on-3-8, died-on-3-8, dragon-killed-on-3-8, dragon-killed-watched-on-3-8, gold-earned-on-3-8, gold-spent-on-3-8, heal-cast-on-3-8, heal-on-3-8, item-bought-on-3-8, item-callout-on-3-8, item-changed-on-3-8, item-removed-on-3-8, item-sold-on-3-8, killing-spree-on-3-8, monster-killed-on-3-8, one-on-3-8, removed-on-3-8, spawned-on-3-8, spider-killed-on-3-8, spider-killed-watched-on-3-8, turret-died-on-3-8)eventtakes 131 dragonKilled, 132 dragonKilledWatched, 133 baronKilled, 134 baronKilledWatched, 135 spiderKilled, 136 spiderKilledWatched, 137 altarCaptured, 138 altarCapturedWatched, 139 wardPlaced, 140 wardKilled in 3.8 and not in 3.7.eventtakes 129 dragonKilled, 130 dragonKilledWatched, 131 baronKilled, 132 baronKilledWatched, 133 spiderKilled, 134 spiderKilledWatched, 135 altarCaptured, 136 altarCapturedWatched, 137 wardPlaced, 138 wardKilled in 3.7 and not in 3.8.valueis present when event = 25 or 78 or 79 or 80 or 82 or 135 or 136 in 3.7, and present when event = 25 or 78 or 79 or 80 or 82 or 137 or 138 in 3.8.killis present when event = 1 or 2 or 34 or 37 or 129 or 130 or 131 or 132 or 133 or 134 in 3.7, and present when event = 1 or 2 or 34 or 37 or 131 or 132 or 133 or 134 or 135 or 136 in 3.8.monsteris present when event = 37 or 129 or 130 or 131 or 132 or 133 or 134 in 3.7, and present when event = 37 or 131 or 132 or 133 or 134 or 135 or 136 in 3.8.
DeathHistory(vectors: one-on-3-8)entries[].eventtakes 131 dragonKilled, 132 dragonKilledWatched, 133 baronKilled, 134 baronKilledWatched, 135 spiderKilled, 136 spiderKilledWatched, 137 altarCaptured, 138 altarCapturedWatched, 139 wardPlaced, 140 wardKilled in 3.8 and not in 3.7.entries[].eventtakes 129 dragonKilled, 130 dragonKilledWatched, 131 baronKilled, 132 baronKilledWatched, 133 spiderKilled, 134 spiderKilledWatched, 135 altarCaptured, 136 altarCapturedWatched, 137 wardPlaced, 138 wardKilled in 3.7 and not in 3.8.entries[].valueis present when event = 25 or 78 or 79 or 80 or 82 or 135 or 136 in 3.7, and present when event = 25 or 78 or 79 or 80 or 82 or 137 or 138 in 3.8.entries[].killis present when event = 1 or 2 or 34 or 37 or 129 or 130 or 131 or 132 or 133 or 134 in 3.7, and present when event = 1 or 2 or 34 or 37 or 131 or 132 or 133 or 134 or 135 or 136 in 3.8.entries[].monsteris present when event = 37 or 129 or 130 or 131 or 132 or 133 or 134 in 3.7, and present when event = 37 or 131 or 132 or 133 or 134 or 135 or 136 in 3.8.
GroundAttackModemodeis u32 in 3.7 and u8 in 3.8.modetakes 3 moveAndSelect, 4 attackMove, 5 atCursor in 3.8 and not in 3.7.
SpellCostChangedcostTypeis u32 in 3.7 and u8 in 3.8.
SpellSlotChangedkindtakes 3 maxRange, 4 shownRange, 5 icon, 6 offsetTargets in 3.8 and not in 3.7.kindtakes 3 icon, 4 offsetTargets in 3.7 and not in 3.8.maxRangeis in 3.8 (f32), afterrange, and not in 3.7.shownRangeis in 3.8 (f32), aftermaxRange, and not in 3.7.iconis present when kind = 3 in 3.7, and present when kind = 5 in 3.8.targetCountis present when kind = 4 in 3.7, and present when kind = 6 in 3.8.targetsis present when kind = 4 in 3.7, and present when kind = 6 in 3.8.
StopAttack(vectors: one-on-3-8)missileis in 3.8 (u32) at the start, and not in 3.7.
VersionSync(vectors: one-on-3-8)agreementhascosmeticat bit 4 in 3.8, and not in 3.7.agreement.unusedis at bit 4, 4 bits wide, in 3.7 and at bit 5, 3 bits wide, in 3.8.featureshasanimatedCursorsat bit 6 in 3.8, and not in 3.7.features.unusedis at bit 6, 26 bits wide, in 3.7 and at bit 7, 25 bits wide, in 3.8.
WorldEvent(vectors: altar-captured-on-3-8, altar-captured-watched-on-3-8, baron-killed-on-3-8, baron-killed-watched-on-3-8, buff-on-3-8, consumable-bought-on-3-8, critical-strike-on-3-8, crowd-control-on-3-8, damage-dealt-on-3-8, damage-taken-on-3-8, death-assist-on-3-8, died-on-3-8, dragon-killed-on-3-8, dragon-killed-watched-on-3-8, gold-earned-on-3-8, gold-spent-on-3-8, heal-cast-on-3-8, heal-on-3-8, item-bought-on-3-8, item-callout-on-3-8, item-changed-on-3-8, item-removed-on-3-8, item-sold-on-3-8, killing-spree-on-3-8, monster-killed-on-3-8, one-on-3-8, removed-on-3-8, spawned-on-3-8, spider-killed-on-3-8, spider-killed-watched-on-3-8, turret-died-on-3-8)eventtakes 131 dragonKilled, 132 dragonKilledWatched, 133 baronKilled, 134 baronKilledWatched, 135 spiderKilled, 136 spiderKilledWatched, 137 altarCaptured, 138 altarCapturedWatched, 139 wardPlaced, 140 wardKilled in 3.8 and not in 3.7.eventtakes 129 dragonKilled, 130 dragonKilledWatched, 131 baronKilled, 132 baronKilledWatched, 133 spiderKilled, 134 spiderKilledWatched, 135 altarCaptured, 136 altarCapturedWatched, 137 wardPlaced, 138 wardKilled in 3.7 and not in 3.8.valueis present when event = 25 or 78 or 79 or 80 or 82 or 135 or 136 in 3.7, and present when event = 25 or 78 or 79 or 80 or 82 or 137 or 138 in 3.8.killis present when event = 1 or 2 or 34 or 37 or 129 or 130 or 131 or 132 or 133 or 134 in 3.7, and present when event = 1 or 2 or 34 or 37 or 131 or 132 or 133 or 134 or 135 or 136 in 3.8.monsteris present when event = 37 or 129 or 130 or 131 or 132 or 133 or 134 in 3.7, and present when event = 37 or 131 or 132 or 133 or 134 or 135 or 136 in 3.8.
Structs
SpellCastammoUsedis in 3.8 (i32), afterlaunchZ, and not in 3.7.ammoRechargeis in 3.8 (f32), afterammoUsed, and not in 3.7.applyRechargeis in 3.8 (u8), afterammoRecharge, and not in 3.7.
3.9
Client builds from 3.9.0.491 up to, not including, 3.10.0.237. Patch notes: V3.9.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 3.9.0.491 | 11 | 0 | 3 | 8cc9d22 | 2026-10-21 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: BounceMissile, CampTimer, ChampionRemoved, DeathTimer, InhibitorDied, LevelCap, MarkerMoved, ResourceKindChanged, SpellRankLimits, SpellToggled, StreamChunk, StreamChunkRange, StreamMetadata.
Every message of this range (249)
Against 3.8
Where a build from 3.9.0.491 up to, not including, 3.10.0.237 differs from one from 3.8.0.226 up to, not including, 3.9.0.491. Anything not named here is the same in both.
In 3.9, not in 3.8
| Message | Sent by | Command | What it does |
|---|---|---|---|
CursorRings | server | 264 on events | What a server sends its player’s champion to draw rings around the cursor while no spell is being aimed |
EffectCounter | server | 265 on events | Set the number an effect shows on its icon |
InventorySnapshot | server | 268 on events | State a unit’s whole inventory at once, with each slot’s cooldown |
MissileSpeed | server | 269 on events | Change how fast a missile flies |
ShopUndo | client | 266 on requests | What a client sends as its player presses the shop’s undo button |
ShopUndoCount | server | 267 on events | Say how many purchases a champion can still undo |
SurrenderAllowed | server | 270 on events | Say whether a champion’s player can call a surrender vote |
Laid out differently
ClientEvent(vectors: altar-captured-on-3-9, altar-captured-watched-on-3-9, baron-killed-on-3-9, baron-killed-watched-on-3-9, buff-on-3-9, consumable-bought-on-3-9, critical-strike-on-3-9, crowd-control-on-3-9, damage-dealt-on-3-9, damage-taken-on-3-9, death-assist-on-3-9, died-on-3-9, dragon-killed-on-3-9, dragon-killed-watched-on-3-9, gold-earned-on-3-9, gold-spent-on-3-9, heal-cast-on-3-9, heal-on-3-9, item-bought-on-3-9, item-callout-on-3-9, item-changed-on-3-9, item-removed-on-3-9, item-sold-on-3-9, killing-spree-on-3-9, monster-killed-on-3-9, one-on-3-9, removed-on-3-9, spawned-on-3-9, spider-killed-on-3-9, spider-killed-watched-on-3-9, turret-died-on-3-9, undo-changed-on-3-9)eventtakes 83 undoChanged, 102 minionsSpawned, 103 welcome, 104 startNoticeTwo, 105 startNoticeThree, 109 scoreboardOpened, 132 dragonKilled, 133 dragonKilledWatched, 134 baronKilled, 135 baronKilledWatched, 136 spiderKilled, 137 spiderKilledWatched, 138 altarCaptured, 139 altarCapturedWatched, 140 wardPlaced, 141 wardKilled in 3.9 and not in 3.8.eventtakes 101 minionsSpawned, 102 welcome, 103 startNoticeTwo, 104 startNoticeThree, 108 scoreboardOpened, 131 dragonKilled, 132 dragonKilledWatched, 133 baronKilled, 134 baronKilledWatched, 135 spiderKilled, 136 spiderKilledWatched, 137 altarCaptured, 138 altarCapturedWatched, 139 wardPlaced, 140 wardKilled in 3.8 and not in 3.9.damage.sourceKindtakes 5 cheat in 3.9 and not in 3.8.valueis present when event = 25 or 78 or 79 or 80 or 82 or 137 or 138 in 3.8, and present when event = 25 or 78 or 79 or 80 or 82 or 83 or 138 or 139 in 3.9.heal.sourceKindtakes 5 cheat in 3.9 and not in 3.8.effect.sourceKindtakes 5 cheat in 3.9 and not in 3.8.killis present when event = 1 or 2 or 34 or 37 or 131 or 132 or 133 or 134 or 135 or 136 in 3.8, and present when event = 1 or 2 or 34 or 37 or 132 or 133 or 134 or 135 or 136 or 137 in 3.9.monsteris present when event = 37 or 131 or 132 or 133 or 134 or 135 or 136 in 3.8, and present when event = 37 or 132 or 133 or 134 or 135 or 136 or 137 in 3.9.
DeathHistory(vectors: one-on-3-9)entries[].eventtakes 83 undoChanged, 102 minionsSpawned, 103 welcome, 104 startNoticeTwo, 105 startNoticeThree, 109 scoreboardOpened, 132 dragonKilled, 133 dragonKilledWatched, 134 baronKilled, 135 baronKilledWatched, 136 spiderKilled, 137 spiderKilledWatched, 138 altarCaptured, 139 altarCapturedWatched, 140 wardPlaced, 141 wardKilled in 3.9 and not in 3.8.entries[].eventtakes 101 minionsSpawned, 102 welcome, 103 startNoticeTwo, 104 startNoticeThree, 108 scoreboardOpened, 131 dragonKilled, 132 dragonKilledWatched, 133 baronKilled, 134 baronKilledWatched, 135 spiderKilled, 136 spiderKilledWatched, 137 altarCaptured, 138 altarCapturedWatched, 139 wardPlaced, 140 wardKilled in 3.8 and not in 3.9.entries[].damage.sourceKindtakes 5 cheat in 3.9 and not in 3.8.entries[].valueis present when event = 25 or 78 or 79 or 80 or 82 or 137 or 138 in 3.8, and present when event = 25 or 78 or 79 or 80 or 82 or 83 or 138 or 139 in 3.9.entries[].heal.sourceKindtakes 5 cheat in 3.9 and not in 3.8.entries[].effect.sourceKindtakes 5 cheat in 3.9 and not in 3.8.entries[].killis present when event = 1 or 2 or 34 or 37 or 131 or 132 or 133 or 134 or 135 or 136 in 3.8, and present when event = 1 or 2 or 34 or 37 or 132 or 133 or 134 or 135 or 136 or 137 in 3.9.entries[].monsteris present when event = 37 or 131 or 132 or 133 or 134 or 135 or 136 in 3.8, and present when event = 37 or 132 or 133 or 134 or 135 or 136 or 137 in 3.9.
MissileReportunknownCis in 3.9 (f32), afterunset, and not in 3.8.unknownDis in 3.9 (f32), afterunknownC, and not in 3.8.
MissileStatespeedChangeis in 3.9 (f32), afterlifeSpent, and not in 3.8.speedChangeTimeis in 3.9 (f32), afterspeedChange, and not in 3.8.
RemoveItemAnswerwhichis in 3.9 (1-byte bits) at the start, and not in 3.8.slotis in 3.8 and not in 3.9.
Respawnedyis in 3.8 and not in 3.9.
RevivedatYis in 3.8 and not in 3.9.
UnitTextstyletakes 24 damage, 25 critical, 26 debug in 3.9 and not in 3.8.styletakes 23 damage, 24 critical, 25 debug in 3.8 and not in 3.9.
VersionSync(vectors: one-on-3-9)features.menuBackis at bit 3 in 3.8 and at bit 2 in 3.9.featureshasmissileWarningat bit 3 in 3.9, and not in 3.8.features.audioBackendis at bit 5 in 3.8 and at bit 4 in 3.9.features.animatedCursorsis at bit 6 in 3.8 and at bit 5 in 3.9.featureshasaltControlsat bit 6 in 3.9, and not in 3.8.featureshasshopUndoat bit 7 in 3.9, and not in 3.8.featureshasskillshotOutlineat bit 8 in 3.9, and not in 3.8.features.unusedis at bit 7, 25 bits wide, in 3.8 and at bit 9, 23 bits wide, in 3.9.featureshaskeyboardDisplayat bit 2 in 3.8, and not in 3.9.featureshaswallJumpsat bit 4 in 3.8, and not in 3.9.
WorldEvent(vectors: altar-captured-on-3-9, altar-captured-watched-on-3-9, baron-killed-on-3-9, baron-killed-watched-on-3-9, buff-on-3-9, consumable-bought-on-3-9, critical-strike-on-3-9, crowd-control-on-3-9, damage-dealt-on-3-9, damage-taken-on-3-9, death-assist-on-3-9, died-on-3-9, dragon-killed-on-3-9, dragon-killed-watched-on-3-9, gold-earned-on-3-9, gold-spent-on-3-9, heal-cast-on-3-9, heal-on-3-9, item-bought-on-3-9, item-callout-on-3-9, item-changed-on-3-9, item-removed-on-3-9, item-sold-on-3-9, killing-spree-on-3-9, monster-killed-on-3-9, one-on-3-9, removed-on-3-9, spawned-on-3-9, spider-killed-on-3-9, spider-killed-watched-on-3-9, turret-died-on-3-9, undo-changed-on-3-9)eventtakes 83 undoChanged, 102 minionsSpawned, 103 welcome, 104 startNoticeTwo, 105 startNoticeThree, 109 scoreboardOpened, 132 dragonKilled, 133 dragonKilledWatched, 134 baronKilled, 135 baronKilledWatched, 136 spiderKilled, 137 spiderKilledWatched, 138 altarCaptured, 139 altarCapturedWatched, 140 wardPlaced, 141 wardKilled in 3.9 and not in 3.8.eventtakes 101 minionsSpawned, 102 welcome, 103 startNoticeTwo, 104 startNoticeThree, 108 scoreboardOpened, 131 dragonKilled, 132 dragonKilledWatched, 133 baronKilled, 134 baronKilledWatched, 135 spiderKilled, 136 spiderKilledWatched, 137 altarCaptured, 138 altarCapturedWatched, 139 wardPlaced, 140 wardKilled in 3.8 and not in 3.9.damage.sourceKindtakes 5 cheat in 3.9 and not in 3.8.valueis present when event = 25 or 78 or 79 or 80 or 82 or 137 or 138 in 3.8, and present when event = 25 or 78 or 79 or 80 or 82 or 83 or 138 or 139 in 3.9.heal.sourceKindtakes 5 cheat in 3.9 and not in 3.8.effect.sourceKindtakes 5 cheat in 3.9 and not in 3.8.killis present when event = 1 or 2 or 34 or 37 or 131 or 132 or 133 or 134 or 135 or 136 in 3.8, and present when event = 1 or 2 or 34 or 37 or 132 or 133 or 134 or 135 or 136 or 137 in 3.9.monsteris present when event = 37 or 131 or 132 or 133 or 134 or 135 or 136 in 3.8, and present when event = 37 or 132 or 133 or 134 or 135 or 136 or 137 in 3.9.
3.10
Client builds from 3.10.0.237 up to, not including, 3.11.0.306. Patch notes: V3.10.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 3.10.0.237 | 11 | 0 | 3 | d08ebb0 | 2026-10-21 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: BounceMissile, CampTimer, DeathTimer, InhibitorDied, MarkerMoved, ResourceKindChanged, SpellToggled, StreamChunk, StreamChunkRange, StreamMetadata.
Every message of this range (253)
Against 3.9
Where a build from 3.10.0.237 up to, not including, 3.11.0.306 differs from one from 3.9.0.491 up to, not including, 3.10.0.237. Anything not named here is the same in both.
In 3.10, not in 3.9
| Message | Sent by | Command | What it does |
|---|---|---|---|
ChampionRemoved | server | 272 on events | Take a champion out of the world |
LevelCap | server | 274 on events | What a server sends its player’s champion to set the highest level it can reach |
SpellRankLimits | server | 273 on events | What a server sends its player’s champion to set how far each spell can be raised, and at which levels |
UnitLookAt | server | 271 on events | Turn a unit toward something |
Laid out differently
ClientEvent(vectors: altar-captured-on-3-10, altar-captured-watched-on-3-10, baron-killed-on-3-10, baron-killed-watched-on-3-10, buff-on-3-10, consumable-bought-on-3-10, critical-strike-on-3-10, crowd-control-on-3-10, damage-dealt-on-3-10, damage-taken-on-3-10, death-assist-on-3-10, died-on-3-10, dragon-killed-on-3-10, dragon-killed-watched-on-3-10, gold-earned-on-3-10, gold-spent-on-3-10, heal-cast-on-3-10, heal-on-3-10, item-bought-on-3-10, item-callout-on-3-10, item-changed-on-3-10, item-removed-on-3-10, item-sold-on-3-10, killing-spree-on-3-10, monster-killed-on-3-10, one-on-3-10, removed-on-3-10, spawned-on-3-10, spider-killed-on-3-10, spider-killed-watched-on-3-10, turret-died-on-3-10, undo-changed-on-3-10)damage.sourceKindtakes 1 named, 2 script in 3.10 and not in 3.9.damage.sourceKindtakes 1 item, 2 buff in 3.9 and not in 3.10.heal.sourceKindtakes 1 named, 2 script in 3.10 and not in 3.9.heal.sourceKindtakes 1 item, 2 buff in 3.9 and not in 3.10.effect.sourceKindtakes 1 named, 2 script in 3.10 and not in 3.9.effect.sourceKindtakes 1 item, 2 buff in 3.9 and not in 3.10.
CreateChampionhowhasswapat bit 3 in 3.10, and not in 3.9.how.unusedis at bit 3, 5 bits wide, in 3.9 and at bit 4, 4 bits wide, in 3.10.
DeathHistory(vectors: one-on-3-10)entries[].damage.sourceKindtakes 1 named, 2 script in 3.10 and not in 3.9.entries[].damage.sourceKindtakes 1 item, 2 buff in 3.9 and not in 3.10.entries[].heal.sourceKindtakes 1 named, 2 script in 3.10 and not in 3.9.entries[].heal.sourceKindtakes 1 item, 2 buff in 3.9 and not in 3.10.entries[].effect.sourceKindtakes 1 named, 2 script in 3.10 and not in 3.9.entries[].effect.sourceKindtakes 1 item, 2 buff in 3.9 and not in 3.10.
VersionSync(vectors: one-on-3-10)agreement.unusedis at bit 5, 3 bits wide, in 3.9 and at bit 4, 4 bits wide, in 3.10.agreementhascosmeticat bit 4 in 3.9, and not in 3.10.
WorldEvent(vectors: altar-captured-on-3-10, altar-captured-watched-on-3-10, baron-killed-on-3-10, baron-killed-watched-on-3-10, buff-on-3-10, consumable-bought-on-3-10, critical-strike-on-3-10, crowd-control-on-3-10, damage-dealt-on-3-10, damage-taken-on-3-10, death-assist-on-3-10, died-on-3-10, dragon-killed-on-3-10, dragon-killed-watched-on-3-10, gold-earned-on-3-10, gold-spent-on-3-10, heal-cast-on-3-10, heal-on-3-10, item-bought-on-3-10, item-callout-on-3-10, item-changed-on-3-10, item-removed-on-3-10, item-sold-on-3-10, killing-spree-on-3-10, monster-killed-on-3-10, one-on-3-10, removed-on-3-10, spawned-on-3-10, spider-killed-on-3-10, spider-killed-watched-on-3-10, turret-died-on-3-10, undo-changed-on-3-10)damage.sourceKindtakes 1 named, 2 script in 3.10 and not in 3.9.damage.sourceKindtakes 1 item, 2 buff in 3.9 and not in 3.10.heal.sourceKindtakes 1 named, 2 script in 3.10 and not in 3.9.heal.sourceKindtakes 1 item, 2 buff in 3.9 and not in 3.10.effect.sourceKindtakes 1 named, 2 script in 3.10 and not in 3.9.effect.sourceKindtakes 1 item, 2 buff in 3.9 and not in 3.10.
Structs
Particlescaleis in 3.10 (f32), afterrunningFor, and not in 3.9.
Chapters
- In the objects chapter, a passage holds for 3.10 and not 3.9: A region id of 0 names no region: given a
RegionAddedcarrying 0, a client gives the region an id of its own, its own node in the top byte and a count below it, which no message from a server can name. - In the objects chapter, a passage holds for 3.10 and not 3.9: A server MUST send that
Registeredbefore any create message, because a client given a create message before it has its own client id stops. - In the objects chapter, a passage holds for 3.10 and not 3.9: | Map | Holds | | — | ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– | | 1 | the six
Barracksnames, the six spawn points named__P_…,HQ_T1,HQ_T2,orderShop01,chaosShop01| | 8 |orderShop01,chaosShop01| | 10 |Barracks_T1_L1,Barracks_T1_R1,Barracks_T2_L1,Barracks_T2_R1, theL01andR01spawn points of both sides,HQ_T1,HQ_T2,orderShop01,chaosShop01| | 12 |Barracks_T1_C1,Barracks_T2_C1, theC01spawn points of both sides named____P_…,HQ_T1,HQ_T2,OrderShop01,ChaosShop01| - In the objects chapter, a passage holds for 3.10 and not 3.9:
CreateTurretfirst removes any object holding its net id. - In the objects chapter, a passage holds for 3.10 and not 3.9: A
WaypointGrouporWaypointGroupAtSpeedpath for a unit not yet held is applied once an object takes that net id, and itsWaypointAckis sent as usual. - In the space chapter, a passage holds for 3.10 and not 3.9: The maps a client has data for include these: |
map| Map | Origin of its paths | | —– | –––––––––– | —————–– | | 1 | Summoner’s Rift | 6991, 7223 | | 8 | The Crystal Scar | 6947, 6609 | | 10 | The Twisted Treeline | 7708, 7227 | | 12 | The Howling Abyss | 6560, 6309 | - In the time chapter, a passage holds for 3.10 and not 3.9: A client holds the speed
GameSpeedgives to between 0 and 10 times normal. - In the values chapter, a passage holds for 3.10 and not 3.9: A cast’s slot also takes 64 to 72 for a basic attack and 73 to 81 for a critical one.
- In the values chapter, a passage holds for 3.10 and not 3.9: Of those, 64 is the champion’s basic attack and 73 its critical attack; the rest are its other basic and critical attacks.
- In the values chapter, a passage holds for 3.10 and not 3.9: A champion’s own book ends at slot 59.
- In the data chapter, a passage holds for 3.10 and not 3.9: The client has maps 1, 8, 10 and 12, and no map 11.
- In the data chapter, a passage holds for 3.10 and not 3.9: A
CreateTurretnaming no building does nothing. - In the data chapter, a passage holds for 3.10 and not 3.9:
CreateTurretcompares names exactly, case included. - In the data chapter, a passage holds for 3.10 and not 3.9: Most champions’ spells and attacks are in
DATA/Spells/<Spell>.inibinwith all other spells, and some champions’ inDATA/Characters/<Champion>/Spells/<Spell>.inibin. - In the joining chapter, a passage holds for 3.10 and not 3.9: Whitespace separates a client’s arguments, and double quotes group words into one.
- In the joining chapter, a passage holds for 3.10 and not 3.9: 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 3.10 and not 3.9: A client loads only where
VersionSyncsetsagreement.buildMatches. - In the joining chapter, a passage holds for 3.10 and not 3.9: A client writes all ones where its player id goes in
LoadingProgress. - In the joining chapter, a passage holds for 3.10 and not 3.9: The loading screen picks the card a
SeatLoadProgressupdates by the client id it carries, not by its player id. - In the joining chapter, a passage holds for 3.10 and not 3.9: Until it sends
CharacterSelected, a client drops every message butVersionSync,QueryStatusAnswer,MatchIdentity,SeatLoadProgressandGameEnded, apart from what arrives on the registration and roster channels, and keeps nothing it drops for later. - In the joining chapter, a passage holds for 3.10 and not 3.9: A client whose connection drops before play begins ends rather than connecting again once it knows its own client id, and connects again before then.
- In the units chapter, a passage holds for 3.10 and not 3.9: A client drops a
CreateChampionor aCreateNeutralthat arrives before it sendsCharacterSelected, reconnecting included. - In the units chapter, a passage holds for 3.10 and not 3.9: A client drops a
CreateChampionor aCreateNeutralthat arrives before it has loaded the map’s ground grid. - In the units chapter, a passage holds for 3.10 and not 3.9: A client leaves the match when
ChampionRemovednames its own champion. - In the vision chapter, a passage holds for 3.10 and not 3.9:
EnterSightstates the unit’s shields and looks and, for a champion or a minion, where it stands or which path it walks, and nothing of its health or resource. - In the vision chapter, a passage holds for 3.10 and not 3.9:
EnterLocalSightstates the unit’s maximum health beside its health, and nothing of its resource. - In the vision chapter, a passage holds for 3.10 and not 3.9:
LeaveLocalSighttakes a unit out of what one client alone can see, and leaves it held. - In the vision chapter, a passage holds for 3.10 and not 3.9:
GoldGainedshows floating gold only for the client’s own champion. - In the vision chapter, a passage holds for 3.10 and not 3.9: Where the source of a
GoldGainedcannot show text, the gold shows over the client’s own champion. - In the movement chapter, a passage holds for 3.10 and not 3.9: A champion or minion coming into sight while standing carries its place and facing in
EnterSightinstead. - In the movement chapter, a passage holds for 3.10 and not 3.9: A client reads the points of a movement whose unit it does not hold, and keeps them for when the unit appears (see Objects and identifiers).
- In the movement chapter, a passage holds for 3.10 and not 3.9: A client takes a
WaypointGroupor aWaypointGroupAtSpeedon channels 2, 3 and 4 alike. - In the movement chapter, a passage holds for 3.10 and not 3.9: A server MAY send
NavigationFlags. - In the replication chapter, a passage holds for 3.10 and not 3.9: 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.
- In the replication chapter, a passage holds for 3.10 and not 3.9: Each row also gives the shape a sending end writes the value in.
- In the replication chapter, a passage holds for 3.10 and not 3.9: ## A champion | Group | Bits | Value | Shape | | —– | –––– | –––––––––––––––––––––––––––––––––––––––––––– | –––– | | 0 | 0 | Gold in hand | measured | | 0 | 1 | Gold earned in all | measured | | 0 | 2 to 3 | Which of the champion’s slots can be cast from, as a set of bits over two words | counted | | 0 | 4 | Points held for evolving a spell | counted | | 0 | 5 | Which spells have evolved, as a set of bits | counted | | 0 | 6 to 25 | What the spell in one slot costs, slots 0 to 3 first | measured | | 1 | 0 to 3 | What the champion is doing, and whether it is proof against spells, all harm and strikes | counted | | 1 | 4 | Damage it deals by striking | measured | | 1 | 5 | Damage its spells deal before modifiers | measured | | 1 | 6 | How often it turns a blow aside | measured | | 1 | 7 | How often it strikes critically | measured | | 1 | 8 | Armour | measured | | 1 | 9 | Spell resistance | measured | | 1 | 10 to 11 | How fast health and resource return | measured | | 1 | 12 | How far it strikes from | measured | | 1 | 13 to 16 | Flat and percent modifiers on the damage it strikes with, then on its spells’ damage | measured | | 1 | 17 to 18 | Flat and percent reduction of the spell damage it takes | measured | | 1 | 19 | A multiplier on how fast it strikes | measured | | 1 | 20 | A flat addition to how far from the champion an aimed spell’s point is allowed to land | measured | | 1 | 21 | A modifier on its cooldowns | measured | | 1 | 22 | When its passive’s cooldown ends, as a moment on the match clock | measured | | 1 | 23 | How long its passive’s cooldown lasts in all | measured | | 1 | 24 to 25 | How much armour it cuts through, flat then as the share left standing | measured | | 1 | 26 to 27 | How much spell resistance it cuts through, flat then as the share left standing | measured | | 1 | 28 | Life steal | measured | | 1 | 29 | Spell vamp | measured | | 1 | 30 | Crowd-control reduction | measured | | 3 | 0 to 1 | Health and resource as they stand | measured | | 3 | 2 to 3 | Health and resource at their greatest | measured | | 3 | 4 | Experience | measured | | 3 | 5 to 9 | Lifetime, and how far the champion sees | measured | | 3 | 10 | How fast it moves | measured | | 3 | 11 to 12 | Its size, and how wide a path it needs | measured | | 3 | 13 | Level | counted | | 3 | 14 to 16 | Kills taken from no side, and whether anything is allowed to aim at it | counted | ## A turret | Group | Bits | Value | Shape | | —– | –––– | ––––––––––––––––––––––––––––––––––––––––––– | –––– | | 1 | 0 to 1 | Health as it stands, then at its greatest | measured | | 1 | 2 to 5 | What the turret is doing, and whether it is proof against spells, all harm and strikes | counted | | 1 | 6 | Damage it deals by striking | measured | | 1 | 7 to 8 | Armour and spell resistance | measured | | 1 | 9 | A multiplier on how fast it strikes | measured | | 1 | 10 to 13 | Flat and percent modifiers on the damage it strikes with, then on its spells’ damage | measured | | 1 | 14 | How fast health returns | measured | | 3 | 0 to 1 | How far it sees | measured | | 3 | 2 | How fast it moves | measured | | 3 | 3 | Its size | measured | | 5 | 0 to 1 | Whether anything is allowed to aim at it, and which side is | counted | ## A minion, and a unit belonging to no side Both answer to one table.
- In the replication chapter, a passage holds for 3.10 and not 3.9: A server grants experience with
ExperienceGainedand gold withGoldGained. - In the match chapter, a passage holds for 3.10 and not 3.9: No unit advances for
StatTick. - In the match chapter, a passage holds for 3.10 and not 3.9: A client shows nothing for any other hold.
- In the match chapter, a passage holds for 3.10 and not 3.9: A client announces who resumed the match even where it was not held.
- In the match chapter, a passage holds for 3.10 and not 3.9: A client sends
ClientFinishedevery timeGameEndedarrives in play, and not while playing a replay. - In the match chapter, a passage holds for 3.10 and not 3.9: A server MUST NOT send
SpawnStartto a client coming back from a drop: it returns the client to spawning, from which only anotherStartGamebrings it back into play. - In the match chapter, a passage holds for 3.10 and not 3.9:
Reconnectedannounces that another player came back. - In the match chapter, a passage holds for 3.10 and not 3.9: A client sends
ReconnectedInMatchonly where the match is in play. - In the match chapter, a passage holds for 3.10 and not 3.9: 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 the combat chapter, a passage holds for 3.10 and not 3.9: Each
Attackplays one swing, cutting off any swing still under way. - In the combat chapter, a passage holds for 3.10 and not 3.9: A client sets the mark of
TargetHeldChampiononly for a unit on the other side. - In the combat chapter, a passage holds for 3.10 and not 3.9: A client shows nothing at all for
Damageunless it holds both the unit hurt and the unit dealing it. - In the combat chapter, a passage holds for 3.10 and not 3.9: A client honours
GreyscaleWhenDeadwhatever its display settings, and restores colour at once as it clears. - In the combat chapter, a passage holds for 3.10 and not 3.9:
RevivedandRespawnedeach place the champion where they say and restore its health and mana. - In the combat chapter, a passage holds for 3.10 and not 3.9: As a unit changes side, a client sends
UseObjectnaming it for every unit it holds that targets it, whether or not it can be used, and clears that target. - In the spells chapter, a passage holds for 3.10 and not 3.9: 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 spells chapter, a passage holds for 3.10 and not 3.9: A client also sends
UpgradeSpellfor a point of a separate kind the champion holds, and spends no spell point for it. - In the shop chapter, a passage holds for 3.10 and not 3.9: Opening the shop sends nothing, except in the tutorial, where it sends
TutorialShopOpened. - In the shop chapter, a passage holds for 3.10 and not 3.9: 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.
- In the objectives chapter, a passage holds for 3.10 and not 3.9:
CampOpenedalso places a camp the client does not know yet, where the message says. - In the communication chapter, a passage holds for 3.10 and not 3.9: A client shows how many lines
ChatAllowanceleaves its player. - In the communication chapter, a passage holds for 3.10 and not 3.9: 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 communication chapter, a passage holds for 3.10 and not 3.9: A client never answers a
VoiceEventfor a voice tied to a unit. - In the votes chapter, a passage holds for 3.10 and not 3.9: 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 votes chapter, a passage holds for 3.10 and not 3.9:
BalanceVoteopens the panel where it says the vote opens. - In the interface chapter, a passage holds for 3.10 and not 3.9: A client ignores
CameraLockSetthat arrives while it holds its camera itself, and answers nothing. - In the interface chapter, a passage holds for 3.10 and not 3.9: A watching client ignores
InputLock. - In the guidance chapter, a passage holds for 3.10 and not 3.9:
HudHighlightedlights elements 0 to 8 for part 0 and element 0 alone for part 2. - In the guidance chapter, a passage holds for 3.10 and not 3.9: A client is in the tutorial where
VersionSyncnames the mode TUTORIAL and a setting of its own turns the tutorial on, whatever the map. - In the spectating chapter, a passage holds for 3.10 and not 3.9: A player’s key is never base64: one longer than 16 characters is cut to its first 16.
- In the spectating chapter, a passage holds for 3.10 and not 3.9: A client takes the key frame to fetch from
keyFrameId, and chunks arrive compressed too. - In the spectating chapter, a passage holds for 3.10 and not 3.9: A client whose own build differs from the one
VersionSyncnames asks its player whether to go on, and leaves where the player declines.
3.11
Client builds from 3.11.0.306 up to, not including, 3.12.0.251. Patch notes: V3.11.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 3.11.0.306 | 11 | 0 | 3 | ee92bba | 2026-10-21 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: BounceMissile, DeathTimer, InhibitorDied, SpellToggled, StreamChunk, StreamChunkRange, StreamMetadata.
Every message of this range (257)
Against 3.10
Where a build from 3.11.0.306 up to, not including, 3.12.0.251 differs from one from 3.10.0.237 up to, not including, 3.11.0.306. Anything not named here is the same in both.
In 3.11, not in 3.10
| Message | Sent by | Command | What it does |
|---|---|---|---|
CampTimer | server | 278 on events | What a server sends a client watching a match to set when a camp is next due |
MarkerMoved | server | 276 on events | Move a marker (SpawnMarker) from one place toward another |
MultikillCount | server | 277 on events | What a server sends a client watching a match to state a champion’s run of kills |
ResourceKindChanged | server | 275 on events | Change what sort of resource a unit has, which its bar’s colours and art follow |
Laid out differently
CapturePointChanged(vectors: none-on-3-11)resourceKindtakes 8 ferocity, 9 bloodWell, 10 other in 3.10 and not in 3.11.
ClientEvent(vectors: altar-captured-on-3-11, altar-captured-watched-on-3-11, baron-killed-on-3-11, baron-killed-watched-on-3-11, buff-on-3-11, consumable-bought-on-3-11, critical-strike-on-3-11, crowd-control-on-3-11, damage-dealt-on-3-11, damage-taken-on-3-11, death-assist-on-3-11, died-on-3-11, dragon-killed-on-3-11, dragon-killed-watched-on-3-11, gold-earned-on-3-11, gold-spent-on-3-11, heal-cast-on-3-11, heal-on-3-11, item-bought-on-3-11, item-callout-on-3-11, item-changed-on-3-11, item-removed-on-3-11, item-sold-on-3-11, killing-spree-on-3-11, monster-killed-on-3-11, one-on-3-11, removed-on-3-11, spawned-on-3-11, spider-killed-on-3-11, spider-killed-watched-on-3-11, turret-damaged-on-3-11, turret-died-on-3-11, undo-changed-on-3-11)eventtakes 7 championKillUnseen, 9 singleKill, 10 doubleKill, 16 damageTaken, 17 damageDealt, 24 goldSpent, 25 goldEarned, 26 consumableBought, 27 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 nexusKilled, 43 nexusDied, 44 heal, 45 healCast, 46 buff, 47 crowdControl, 48 killingSpree, 55 killDuringSpree, 62 doubleKillDuringSpree, 63 tripleKillDuringSpree, 64 quadraKillDuringSpree, 67 deathAssist, 68 playerQuit, 69 playerLeft, 70 playerReconnected, 81 itemBought, 82 itemSold, 83 itemRemoved, 84 itemCallout, 85 itemChanged, 86 undoChanged, 105 minionsSpawned, 106 welcome, 107 startNoticeTwo, 108 startNoticeThree, 112 scoreboardOpened, 135 dragonKilled, 136 dragonKilledWatched, 137 baronKilled, 138 baronKilledWatched, 139 spiderKilled, 140 spiderKilledWatched, 141 altarCaptured, 142 altarCapturedWatched, 143 wardPlaced, 144 wardKilled in 3.11 and not in 3.10.eventtakes 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 29 inhibitorKilled, 30 inhibitorDied, 31 inhibitorRespawningSoon, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 83 undoChanged, 102 minionsSpawned, 103 welcome, 104 startNoticeTwo, 105 startNoticeThree, 109 scoreboardOpened, 132 dragonKilled, 133 dragonKilledWatched, 134 baronKilled, 135 baronKilledWatched, 136 spiderKilled, 137 spiderKilledWatched, 138 altarCaptured, 139 altarCapturedWatched, 140 wardPlaced, 141 wardKilled in 3.10 and not in 3.11.damageis present when event = 15 or 16 in 3.10, and present when event = 16 or 17 in 3.11.spentis present when event = 23 in 3.10, and present when event = 24 in 3.11.valueis present when event = 25 or 78 or 79 or 80 or 82 or 83 or 138 or 139 in 3.10, and present when event = 26 or 81 or 82 or 83 or 85 or 86 or 141 or 142 in 3.11.criticalis present when event = 26 in 3.10, and present when event = 27 in 3.11.spreeis present when event = 45 in 3.10, and present when event = 48 in 3.11.earnedis present when event = 24 in 3.10, and present when event = 25 in 3.11.healis present when event = 41 or 42 in 3.10, and present when event = 44 or 45 in 3.11.effectis present when event = 43 or 44 in 3.10, and present when event = 46 or 47 in 3.11.extrais present when event = 44 in 3.10, and present when event = 47 in 3.11.assistis present when event = 64 in 3.10, and present when event = 67 in 3.11.killis present when event = 1 or 2 or 34 or 37 or 132 or 133 or 134 or 135 or 136 or 137 in 3.10, and present when event = 1 or 2 or 36 or 37 or 40 or 135 or 136 or 137 or 138 or 139 or 140 in 3.11.monsteris present when event = 37 or 132 or 133 or 134 or 135 or 136 or 137 in 3.10, and present when event = 40 or 135 or 136 or 137 or 138 or 139 or 140 in 3.11.calloutis present when event = 81 in 3.10, and present when event = 84 in 3.11.
CreateNeutral(vectors: inactive-on-3-11)levelis in 3.11 (i32), afterrevealEvent, and not in 3.10.
DeathHistory(vectors: one-on-3-11)entries[].eventtakes 7 championKillUnseen, 9 singleKill, 10 doubleKill, 16 damageTaken, 17 damageDealt, 24 goldSpent, 25 goldEarned, 26 consumableBought, 27 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 nexusKilled, 43 nexusDied, 44 heal, 45 healCast, 46 buff, 47 crowdControl, 48 killingSpree, 55 killDuringSpree, 62 doubleKillDuringSpree, 63 tripleKillDuringSpree, 64 quadraKillDuringSpree, 67 deathAssist, 68 playerQuit, 69 playerLeft, 70 playerReconnected, 81 itemBought, 82 itemSold, 83 itemRemoved, 84 itemCallout, 85 itemChanged, 86 undoChanged, 105 minionsSpawned, 106 welcome, 107 startNoticeTwo, 108 startNoticeThree, 112 scoreboardOpened, 135 dragonKilled, 136 dragonKilledWatched, 137 baronKilled, 138 baronKilledWatched, 139 spiderKilled, 140 spiderKilledWatched, 141 altarCaptured, 142 altarCapturedWatched, 143 wardPlaced, 144 wardKilled in 3.11 and not in 3.10.entries[].eventtakes 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 29 inhibitorKilled, 30 inhibitorDied, 31 inhibitorRespawningSoon, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 83 undoChanged, 102 minionsSpawned, 103 welcome, 104 startNoticeTwo, 105 startNoticeThree, 109 scoreboardOpened, 132 dragonKilled, 133 dragonKilledWatched, 134 baronKilled, 135 baronKilledWatched, 136 spiderKilled, 137 spiderKilledWatched, 138 altarCaptured, 139 altarCapturedWatched, 140 wardPlaced, 141 wardKilled in 3.10 and not in 3.11.entries[].damageis present when event = 15 or 16 in 3.10, and present when event = 16 or 17 in 3.11.entries[].spentis present when event = 23 in 3.10, and present when event = 24 in 3.11.entries[].valueis present when event = 25 or 78 or 79 or 80 or 82 or 83 or 138 or 139 in 3.10, and present when event = 26 or 81 or 82 or 83 or 85 or 86 or 141 or 142 in 3.11.entries[].criticalis present when event = 26 in 3.10, and present when event = 27 in 3.11.entries[].spreeis present when event = 45 in 3.10, and present when event = 48 in 3.11.entries[].earnedis present when event = 24 in 3.10, and present when event = 25 in 3.11.entries[].healis present when event = 41 or 42 in 3.10, and present when event = 44 or 45 in 3.11.entries[].effectis present when event = 43 or 44 in 3.10, and present when event = 46 or 47 in 3.11.entries[].extrais present when event = 44 in 3.10, and present when event = 47 in 3.11.entries[].assistis present when event = 64 in 3.10, and present when event = 67 in 3.11.entries[].killis present when event = 1 or 2 or 34 or 37 or 132 or 133 or 134 or 135 or 136 or 137 in 3.10, and present when event = 1 or 2 or 36 or 37 or 40 or 135 or 136 or 137 or 138 or 139 or 140 in 3.11.entries[].monsteris present when event = 37 or 132 or 133 or 134 or 135 or 136 or 137 in 3.10, and present when event = 40 or 135 or 136 or 137 or 138 or 139 or 140 in 3.11.entries[].calloutis present when event = 81 in 3.10, and present when event = 84 in 3.11.
EnterSight(vectors: a-fifth-on-3-11, a-fourth-on-3-11, a-third-on-3-11, another-on-3-11, one-on-3-11)view.lookingAtis in 3.11 (u32), afterview.appearance, and not in 3.10.view.lookKindis in 3.11 (u8), afterview.lookingAt, and not in 3.10.view.lookXis in 3.11 (f32), afterview.lookKind, and not in 3.10.view.lookYis in 3.11 (f32), afterview.lookX, and not in 3.10.view.lookZis in 3.11 (f32), afterview.lookY, and not in 3.10.
InventorySnapshot(vectors: one-on-3-11)cooldownsis in 3.11 (8 × f32), afteritems[].charges, and not in 3.10.
QuestUpdated(vectors: one-on-3-11)kindtakes 2 objective in 3.11 and not in 3.10.
SpawnUnit(vectors: one-on-3-11)levelis in 3.11 (u16), afterasset, and not in 3.10.
UnitLookAtunitis in 3.10 and not in 3.11.
VersionSync(vectors: one-on-3-11)featureshasmenuBack2at bit 3 in 3.11, and not in 3.10.features.missileWarningis at bit 3 in 3.10 and at bit 4 in 3.11.features.audioBackendis at bit 4 in 3.10 and at bit 5 in 3.11.features.animatedCursorsis at bit 5 in 3.10 and at bit 6 in 3.11.features.altControlsis at bit 6 in 3.10 and at bit 7 in 3.11.features.shopUndois at bit 7 in 3.10 and at bit 8 in 3.11.features.skillshotOutlineis at bit 8 in 3.10 and at bit 9 in 3.11.featureshasbit10at bit 10 in 3.11, and not in 3.10.featureshaschampionIndicatorat bit 11 in 3.11, and not in 3.10.features.unusedis at bit 9, 23 bits wide, in 3.10 and at bit 12, 20 bits wide, in 3.11.
WorldEvent(vectors: altar-captured-on-3-11, altar-captured-watched-on-3-11, baron-killed-on-3-11, baron-killed-watched-on-3-11, buff-on-3-11, consumable-bought-on-3-11, critical-strike-on-3-11, crowd-control-on-3-11, damage-dealt-on-3-11, damage-taken-on-3-11, death-assist-on-3-11, died-on-3-11, dragon-killed-on-3-11, dragon-killed-watched-on-3-11, gold-earned-on-3-11, gold-spent-on-3-11, heal-cast-on-3-11, heal-on-3-11, item-bought-on-3-11, item-callout-on-3-11, item-changed-on-3-11, item-removed-on-3-11, item-sold-on-3-11, killing-spree-on-3-11, monster-killed-on-3-11, one-on-3-11, removed-on-3-11, spawned-on-3-11, spider-killed-on-3-11, spider-killed-watched-on-3-11, turret-damaged-on-3-11, turret-died-on-3-11, undo-changed-on-3-11)eventtakes 7 championKillUnseen, 9 singleKill, 10 doubleKill, 16 damageTaken, 17 damageDealt, 24 goldSpent, 25 goldEarned, 26 consumableBought, 27 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 nexusKilled, 43 nexusDied, 44 heal, 45 healCast, 46 buff, 47 crowdControl, 48 killingSpree, 55 killDuringSpree, 62 doubleKillDuringSpree, 63 tripleKillDuringSpree, 64 quadraKillDuringSpree, 67 deathAssist, 68 playerQuit, 69 playerLeft, 70 playerReconnected, 81 itemBought, 82 itemSold, 83 itemRemoved, 84 itemCallout, 85 itemChanged, 86 undoChanged, 105 minionsSpawned, 106 welcome, 107 startNoticeTwo, 108 startNoticeThree, 112 scoreboardOpened, 135 dragonKilled, 136 dragonKilledWatched, 137 baronKilled, 138 baronKilledWatched, 139 spiderKilled, 140 spiderKilledWatched, 141 altarCaptured, 142 altarCapturedWatched, 143 wardPlaced, 144 wardKilled in 3.11 and not in 3.10.eventtakes 8 singleKill, 9 doubleKill, 15 damageTaken, 16 damageDealt, 23 goldSpent, 24 goldEarned, 25 consumableBought, 26 criticalStrike, 29 inhibitorKilled, 30 inhibitorDied, 31 inhibitorRespawningSoon, 33 turretKilled, 34 turretDied, 35 minionKilled, 36 minionDenied, 37 monsterKilled, 38 largeMonsterKilled, 39 nexusKilled, 40 nexusDied, 41 heal, 42 healCast, 43 buff, 44 crowdControl, 45 killingSpree, 52 killDuringSpree, 59 doubleKillDuringSpree, 60 tripleKillDuringSpree, 61 quadraKillDuringSpree, 64 deathAssist, 65 playerQuit, 66 playerLeft, 67 playerReconnected, 78 itemBought, 79 itemSold, 80 itemRemoved, 81 itemCallout, 82 itemChanged, 83 undoChanged, 102 minionsSpawned, 103 welcome, 104 startNoticeTwo, 105 startNoticeThree, 109 scoreboardOpened, 132 dragonKilled, 133 dragonKilledWatched, 134 baronKilled, 135 baronKilledWatched, 136 spiderKilled, 137 spiderKilledWatched, 138 altarCaptured, 139 altarCapturedWatched, 140 wardPlaced, 141 wardKilled in 3.10 and not in 3.11.damageis present when event = 15 or 16 in 3.10, and present when event = 16 or 17 in 3.11.spentis present when event = 23 in 3.10, and present when event = 24 in 3.11.valueis present when event = 25 or 78 or 79 or 80 or 82 or 83 or 138 or 139 in 3.10, and present when event = 26 or 81 or 82 or 83 or 85 or 86 or 141 or 142 in 3.11.criticalis present when event = 26 in 3.10, and present when event = 27 in 3.11.spreeis present when event = 45 in 3.10, and present when event = 48 in 3.11.earnedis present when event = 24 in 3.10, and present when event = 25 in 3.11.healis present when event = 41 or 42 in 3.10, and present when event = 44 or 45 in 3.11.effectis present when event = 43 or 44 in 3.10, and present when event = 46 or 47 in 3.11.extrais present when event = 44 in 3.10, and present when event = 47 in 3.11.assistis present when event = 64 in 3.10, and present when event = 67 in 3.11.killis present when event = 1 or 2 or 34 or 37 or 132 or 133 or 134 or 135 or 136 or 137 in 3.10, and present when event = 1 or 2 or 36 or 37 or 40 or 135 or 136 or 137 or 138 or 139 or 140 in 3.11.monsteris present when event = 37 or 132 or 133 or 134 or 135 or 136 or 137 in 3.10, and present when event = 40 or 135 or 136 or 137 or 138 or 139 or 140 in 3.11.calloutis present when event = 81 in 3.10, and present when event = 84 in 3.11.
Structs
SpellCastpackageis in 3.11 (u32), afterchainOwner, and not in 3.10.applyRechargeis in 3.10 and not in 3.11.
Chapters
- In the transport chapter, a passage holds for 3.10 and not 3.11: An argument longer than sixteen characters holds the key in base64, and the key is the first sixteen bytes it decodes to.
- In the messages chapter, a passage holds for 3.10 and not 3.11: A client unwraps a container on any channel.
- In the objects chapter, a passage holds for 3.10 and not 3.11: A region id of 0 names no region: given a
RegionAddedcarrying 0, a client gives the region an id of its own, its own node in the top byte and a count below it, which no message from a server can name. - In the objects chapter, a passage holds for 3.10 and not 3.11: A client takes a client id only from 0 to 252, and leaves on any other.
- In the objects chapter, a passage holds for 3.10 and not 3.11: A client acts on that
Registeredalone and ignores every other, so it pairs no other player’s player id with a client id. - In the objects chapter, a passage holds for 3.10 and not 3.11: A server MUST send that
Registeredbefore any create message, because a client given a create message before it has its own client id stops. - In the objects chapter, a passage holds for 3.10 and not 3.11: Every object a map places carries the identifier its name gives, turrets, navigation points and props among them.
- In the objects chapter, a passage holds for 3.10 and not 3.11: A name holding
_Destroyedor_FBgives no identifier. - In the objects chapter, a passage holds for 3.10 and not 3.11: | Map | Holds | | — | ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– | | 1 | the six
Barracksnames, the six spawn points named__P_…,HQ_T1,HQ_T2,orderShop01,chaosShop01| | 8 |orderShop01,chaosShop01| | 10 |Barracks_T1_L1,Barracks_T1_R1,Barracks_T2_L1,Barracks_T2_R1, theL01andR01spawn points of both sides,HQ_T1,HQ_T2,orderShop01,chaosShop01| | 12 |Barracks_T1_C1,Barracks_T2_C1, theC01spawn points of both sides named____P_…,HQ_T1,HQ_T2,OrderShop01,ChaosShop01| - In the objects chapter, a passage holds for 3.10 and not 3.11:
CreateTurretfirst removes any object holding its net id. - In the objects chapter, a passage holds for 3.10 and not 3.11: A client removes a region once its lifetime reaches 0, so a region given a lifetime of 0 does not last.
- In the objects chapter, a passage holds for 3.10 and not 3.11: A client reads only the two lowest bits of the stage: a stage with both clear marks, and any other removes.
- In the objects chapter, a passage holds for 3.10 and not 3.11: A byte from 128 to 255 enters the hash as its value less 256, worked in 32 bits, rather than as itself.
- In the ordering chapter, a passage holds for 3.10 and not 3.11: A client also answers each
PathandPathWithSpeed, taken or not, with aWaypointAckcarrying itssyncId. - In the ordering chapter, a passage holds for 3.10 and not 3.11: That answer lists no units but leaves its count of units unset, so a server MUST NOT rely on the count.
- In the space chapter, a passage holds for 3.10 and not 3.11:
FaceDirectionturns the unit along x and z alone, and leaves it as it is where both are 0. - In the space chapter, a passage holds for 3.10 and not 3.11:
FaceDirectionturns the unit at once where bit 0 of its flags is clear, and toward that direction at its own pace where it is set. - In the time chapter, a passage holds for 3.10 and not 3.11: Each
ClockConvergencesets a client’s allowance to 0.8 times what it was plus 0.1 times the round trip it reports. - In the time chapter, a passage holds for 3.10 and not 3.11: The allowance starts at 0, and nothing but
ClockConvergencechanges it: a client that has had none takesClockSyncas it stands. - In the time chapter, a passage holds for 3.10 and not 3.11:
GameSpeedsets the pace of the match clock, and a hold sets the pace to 0 until play resumes. - In the time chapter, a passage holds for 3.10 and not 3.11: A
GameSpeedthat arrives during a hold takes effect as play resumes. - In the time chapter, a passage holds for 3.10 and not 3.11: A client holds the speed
GameSpeedgives to between 0 and 10 times normal. - In the time chapter, a passage holds for 3.10 and not 3.11:
MatchStartedgives that moment. - In the values chapter, a passage holds for 3.10 and not 3.11: Of those, 64 is the champion’s basic attack and 73 its critical attack; the rest are its other basic and critical attacks.
- In the values chapter, a passage holds for 3.10 and not 3.11: A champion’s own book ends at slot 59.
- In the values chapter, a passage holds for 3.10 and not 3.11: A client asks to swap only slots 0 to 5 (
SwapItems). - In the values chapter, a passage holds for 3.10 and not 3.11: A champion’s inventory ends at slot 37.
- In the data chapter, a passage holds for 3.10 and not 3.11: A word a name holds anywhere says what the object is, not only its opening, the first match winning: a minion spawner’s
Spawn_Barracksis tested beforeBarracks, which makes an inhibitor, andHQ_makes a nexus andTurreta turret. - In the data chapter, a passage holds for 3.10 and not 3.11:
CreateTurretcompares names exactly, case included. - In the data chapter, a passage holds for 3.10 and not 3.11: The spawn points, the navigation points and the marker of the level’s size are scene objects, listed in
room.dsclike the buildings. - In the data chapter, a passage holds for 3.10 and not 3.11: The grid’s name is the map’s own,
AIPath.aimeshwith_ngridafter it: no setting of the mode chooses it. - In the data chapter, a passage holds for 3.10 and not 3.11: Most champions’ spells and attacks are in
DATA/Spells/<Spell>.inibinwith all other spells, and some champions’ inDATA/Characters/<Champion>/Spells/<Spell>.inibin. - In the joining chapter, a passage holds for 3.10 and not 3.11: Any whitespace separates the words of the fourth argument.
- In the joining chapter, a passage holds for 3.10 and not 3.11: Whitespace separates a client’s arguments, and double quotes group words into one.
- In the joining chapter, a passage holds for 3.10 and not 3.11: A client stops asking once an answer says the server is ready, and a query it sends after that answer needs none.
- In the joining chapter, a passage holds for 3.10 and not 3.11: The loading screen picks the card a
SeatLoadProgressupdates by the client id it carries, not by its player id. - In the joining chapter, a passage holds for 3.10 and not 3.11: A client answers a batch as soon as it arrives, within the run or not, and never answers one naming a unit it does not hold.
- In the joining chapter, a passage holds for 3.10 and not 3.11: A client sends
ClientReadyas soon asSpawnEndarrives, andStartGamealone moves it into play. - In the joining chapter, a passage holds for 3.10 and not 3.11: A client whose connection drops before play begins ends rather than connecting again once it knows its own client id, and connects again before then.
- In the units chapter, a passage holds for 3.10 and not 3.11: A client drops a
CreateChampionor aCreateNeutralthat arrives before it has loaded the map’s ground grid. - In the units chapter, a passage holds for 3.10 and not 3.11: A client leaves the match when
ChampionRemovednames its own champion. - In the vision chapter, a passage holds for 3.10 and not 3.11:
EnterSightstates the unit’s shields and looks and, for a champion or a minion, where it stands or which path it walks, and nothing of its health or resource. - In the vision chapter, a passage holds for 3.10 and not 3.11:
EnterLocalSightstates the unit’s maximum health beside its health, and nothing of its resource. - In the vision chapter, a passage holds for 3.10 and not 3.11:
GoldGainednaming the client’s own champion, with an amount above 0 and a source the client holds, shows the gold over the source. - In the vision chapter, a passage holds for 3.10 and not 3.11: Where the source of a
GoldGainedcannot show text, the gold shows over the client’s own champion. - In the movement chapter, a passage holds for 3.10 and not 3.11: A champion or minion coming into sight while standing carries its place and facing in
EnterSightinstead. - In the movement chapter, a passage holds for 3.10 and not 3.11: A client reads nothing after a refused movement in its group, and still answers the group.
- In the movement chapter, a passage holds for 3.10 and not 3.11: A client reads the points of a movement whose unit it does not hold, and keeps them for when the unit appears (see Objects and identifiers).
- In the movement chapter, a passage holds for 3.10 and not 3.11: A client takes a
WaypointGroupor aWaypointGroupAtSpeedon channels 2, 3 and 4 alike. - In the movement chapter, a passage holds for 3.10 and not 3.11: A server MAY send
NavigationFlags. - In the replication chapter, a passage holds for 3.10 and not 3.11: The building table is the same on every map.
- In the replication chapter, a passage holds for 3.10 and not 3.11: ## A champion | Group | Bits | Value | Shape | | —– | –––– | –––––––––––––––––––––––––––––––––––––––––––– | –––– | | 0 | 0 | Gold in hand | measured | | 0 | 1 | Gold earned in all | measured | | 0 | 2 to 3 | Which of the champion’s slots can be cast from, as a set of bits over two words | counted | | 0 | 4 | Points held for evolving a spell | counted | | 0 | 5 | Which spells have evolved, as a set of bits | counted | | 0 | 6 to 25 | What the spell in one slot costs, slots 0 to 3 first | measured | | 1 | 0 to 3 | What the champion is doing, and whether it is proof against spells, all harm and strikes | counted | | 1 | 4 | Damage it deals by striking | measured | | 1 | 5 | Damage its spells deal before modifiers | measured | | 1 | 6 | How often it turns a blow aside | measured | | 1 | 7 | How often it strikes critically | measured | | 1 | 8 | Armour | measured | | 1 | 9 | Spell resistance | measured | | 1 | 10 to 11 | How fast health and resource return | measured | | 1 | 12 | How far it strikes from | measured | | 1 | 13 to 16 | Flat and percent modifiers on the damage it strikes with, then on its spells’ damage | measured | | 1 | 17 to 18 | Flat and percent reduction of the spell damage it takes | measured | | 1 | 19 | A multiplier on how fast it strikes | measured | | 1 | 20 | A flat addition to how far from the champion an aimed spell’s point is allowed to land | measured | | 1 | 21 | A modifier on its cooldowns | measured | | 1 | 22 | When its passive’s cooldown ends, as a moment on the match clock | measured | | 1 | 23 | How long its passive’s cooldown lasts in all | measured | | 1 | 24 to 25 | How much armour it cuts through, flat then as the share left standing | measured | | 1 | 26 to 27 | How much spell resistance it cuts through, flat then as the share left standing | measured | | 1 | 28 | Life steal | measured | | 1 | 29 | Spell vamp | measured | | 1 | 30 | Crowd-control reduction | measured | | 3 | 0 to 1 | Health and resource as they stand | measured | | 3 | 2 to 3 | Health and resource at their greatest | measured | | 3 | 4 | Experience | measured | | 3 | 5 to 9 | Lifetime, and how far the champion sees | measured | | 3 | 10 | How fast it moves | measured | | 3 | 11 to 12 | Its size, and how wide a path it needs | measured | | 3 | 13 | Level | counted | | 3 | 14 to 16 | Kills taken from no side, and whether anything is allowed to aim at it | counted | ## A turret | Group | Bits | Value | Shape | | —– | –––– | ––––––––––––––––––––––––––––––––––––––––––– | –––– | | 1 | 0 to 1 | Health as it stands, then at its greatest | measured | | 1 | 2 to 5 | What the turret is doing, and whether it is proof against spells, all harm and strikes | counted | | 1 | 6 | Damage it deals by striking | measured | | 1 | 7 to 8 | Armour and spell resistance | measured | | 1 | 9 | A multiplier on how fast it strikes | measured | | 1 | 10 to 13 | Flat and percent modifiers on the damage it strikes with, then on its spells’ damage | measured | | 1 | 14 | How fast health returns | measured | | 3 | 0 to 1 | How far it sees | measured | | 3 | 2 | How fast it moves | measured | | 3 | 3 | Its size | measured | | 5 | 0 to 1 | Whether anything is allowed to aim at it, and which side is | counted | ## A minion, and a unit belonging to no side Both answer to one table.
- In the match chapter, a passage holds for 3.10 and not 3.11: No unit advances for
StatTick. - In the match chapter, a passage holds for 3.10 and not 3.11: A client shows nothing for any other hold.
- In the match chapter, a passage holds for 3.10 and not 3.11: A client announces who resumed the match even where it was not held.
- In the match chapter, a passage holds for 3.10 and not 3.11: A client sends
ClientFinishedevery timeGameEndedarrives in play, and not while playing a replay. - In the match chapter, a passage holds for 3.10 and not 3.11: A client moves no neutral unit for
VictoryDance. - In the match chapter, a passage holds for 3.10 and not 3.11: A client also leaves as one abandoning as its player declines to reconnect or cancels a reconnection under way, and as its player dismisses the notice that it was dropped for being away.
- In the match chapter, a passage holds for 3.10 and not 3.11: A client dropped during play connects again at once by itself, for any reason but the one that means its player was away, and shows its player that it is reconnecting while it does.
- In the match chapter, a passage holds for 3.10 and not 3.11: A client sends
ReconnectedInMatchonly where the match is in play. - In the match chapter, a passage holds for 3.10 and not 3.11: Where its last
Cameragoes unacknowledged, a client sends it again without its view moving, once more than twice the round trip has passed. - In the combat chapter, a passage holds for 3.10 and not 3.11: A client moves the attacker to the place
AttackFromgives only where it stands more than 400 units from it. - In the combat chapter, a passage holds for 3.10 and not 3.11: A client ignores an
Attackwhose target it does not hold. - In the combat chapter, a passage holds for 3.10 and not 3.11: Of the other results of
Damage, 1 shows nothing, 2 a dodge and 5 a miss; 3 is critical, and 4 and any above 5 are normal. - In the combat chapter, a passage holds for 3.10 and not 3.11: A swing starts later by the timing byte of its
Attackless 128, in hundredths of a second. - In the combat chapter, a passage holds for 3.10 and not 3.11:
TargetHeldChampionmarks a unit as attacking the client’s own champion: a client sets the mark only where the message names that champion, and clears it for any other. - In the combat chapter, a passage holds for 3.10 and not 3.11: A client sets the mark of
TargetHeldChampiononly for a unit on the other side. - In the combat chapter, a passage holds for 3.10 and not 3.11: A killer a client does not hold still puts the unit down.
- In the combat chapter, a passage holds for 3.10 and not 3.11: A death that credits no killer still stops the unit’s cast and attack.
- In the combat chapter, a passage holds for 3.10 and not 3.11: A client honours
GreyscaleWhenDeadwhatever its display settings, and restores colour at once as it clears. - In the combat chapter, a passage holds for 3.10 and not 3.11:
RevivedandRespawnedeach place the champion where they say and restore its health and mana. - In the combat chapter, a passage holds for 3.10 and not 3.11: As a unit changes side, a client sends
UseObjectnaming it for every unit it holds that targets it, whether or not it can be used, and clears that target. - In the spells chapter, a passage holds for 3.10 and not 3.11: A client also sends
UpgradeSpellfor a point of a separate kind the champion holds, and spends no spell point for it. - In the shop chapter, a passage holds for 3.10 and not 3.11: A client asks for an item not built from others only where a slot is free or holds the same item below its stack limit.
- In the shop chapter, a passage holds for 3.10 and not 3.11: A client asks only while the shop is not locked, with the champion dead or near a shop of its side.
- In the shop chapter, a passage holds for 3.10 and not 3.11: A message that locks other input along with the shop stops the shop opening, but leaves an open shop open and its key on.
- In the objectives chapter, a passage holds for 3.10 and not 3.11: A client places a camp where the first of its monsters is created (
CreateNeutral). - In the objectives chapter, a passage holds for 3.10 and not 3.11:
CampClearedsets no time for the camp to fill again: a client keeps the state it gives for the camp. - In the objectives chapter, a passage holds for 3.10 and not 3.11:
CampOpenedalso places a camp the client does not know yet, where the message says. - In the objectives chapter, a passage holds for 3.10 and not 3.11: A client acts on
TeamScoreonce its game screen is up, whatever the mode. - In the communication chapter, a passage holds for 3.10 and not 3.11: A client never answers a
VoiceEventfor a voice tied to a unit. - In the votes chapter, a passage holds for 3.10 and not 3.11:
BalanceVoteopens the panel where it says the vote opens. - In the interface chapter, a passage holds for 3.10 and not 3.11: A client sends no
Camerawhile its camera is locked: a server that needs a client’s view reports frees its camera withCameraLockSet. - In the interface chapter, a passage holds for 3.10 and not 3.11: A client ignores
CameraLockSetthat arrives while it holds its camera itself, and answers nothing. - In the interface chapter, a passage holds for 3.10 and not 3.11: A client keeps every lock a message sets or clears, and later input obeys them, but it acts on a lock at once only where the message’s mask is exactly one of 1, 4, 8, 16, 32 or 128.
- In the interface chapter, a passage holds for 3.10 and not 3.11: A watching client ignores
InputLock. - In the guidance chapter, a passage holds for 3.10 and not 3.11:
HudHighlightedlights elements 0 to 8 for part 0 and element 0 alone for part 2. - In the guidance chapter, a passage holds for 3.10 and not 3.11: A client is in the tutorial where
VersionSyncnames the mode TUTORIAL and a setting of its own turns the tutorial on, whatever the map. - In the spectating chapter, a passage holds for 3.10 and not 3.11: A watching client takes the match over HTTP from a spectator service, not over a game connection.
- In the spectating chapter, a passage holds for 3.10 and not 3.11: The word is followed by the spectator service’s address, with no port of its own, the key, a match number and a platform name; there is no player number.
- In the spectating chapter, a passage holds for 3.10 and not 3.11: The word
replaystarts a watching client asspectatordoes. - In the spectating chapter, a passage holds for 3.10 and not 3.11: A player’s key is never base64: one longer than 16 characters is cut to its first 16.
- In the spectating chapter, a passage holds for 3.10 and not 3.11: A watching client asks the spectator service for the match under
/observer-mode/rest/consumer/, each request naming the platform and the match number:getGameMetaDatafor the match’s metadata,getLastChunkInfofor how far the match has come, andgetGameDataChunkandgetKeyFramefor a chunk or a key frame by number. - In the spectating chapter, a passage holds for 3.10 and not 3.11: A watching client first asks the service for its version, and ends by asking it to stop.
- In the spectating chapter, a passage holds for 3.10 and not 3.11: A client takes the key frame to fetch from
keyFrameId, and chunks arrive compressed too. - In the spectating chapter, a passage holds for 3.10 and not 3.11: A client whose own build differs from the one
VersionSyncnames asks its player whether to go on, and leaves where the player declines.
Only notes
These read the same on the wire, and only their notes change. What each says in 3.11:
LevelUp, its layout: no note, where 3.10 has “A client applies it only to a champion, and ignores it for any other unit.”
3.12
Client builds from 3.12.0.251 up to, not including, 3.13.0.399. Patch notes: V3.12.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 3.12.0.251 | 11 | 0 | 3 | 545f334 | 2026-10-21 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: BounceMissile, InhibitorDied, SpellToggled.
Every message of this range (262)
Against 3.11
Where a build from 3.12.0.251 up to, not including, 3.13.0.399 differs from one from 3.11.0.306 up to, not including, 3.12.0.251. Anything not named here is the same in both.
In 3.12, not in 3.11
| Message | Sent by | Command | What it does |
|---|---|---|---|
DeathTimer | server | 279 on events | Set how long a champion stays down |
Empty | server | 0 on events | A message with no body |
StreamChunk | server | 237 on events | What a server streaming a match sends to carry one fragment of a chunk or key frame of recorded messages (see spec/spectating.md) |
StreamChunkRange | server | 236 on events | What a server streaming a match sends to say where the match proper begins in its chunks, and, once known, where it ends |
StreamMetadata | server | 235 on events | 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 |
Laid out differently
AppearancePushedhowhasreplacePackageat bit 2 in 3.12, and not in 3.11.how.unusedis at bit 2, 6 bits wide, in 3.11 and at bit 3, 5 bits wide, in 3.12.
CampCleareddoeshasfirstSideat bit 1 in 3.12, and not in 3.11.does.unusedis at bit 1, 7 bits wide, in 3.11 and at bit 2, 6 bits wide, in 3.12.
CapturePointChanged(vectors: none-on-3-12)resourceKindtakes 8 ferocity, 9 bloodWell, 10 other in 3.12 and not in 3.11.
ClientEvent(vectors: altar-captured-on-3-12, altar-captured-watched-on-3-12, baron-killed-on-3-12, baron-killed-watched-on-3-12, buff-on-3-12, consumable-bought-on-3-12, critical-strike-on-3-12, crowd-control-on-3-12, damage-dealt-on-3-12, damage-taken-on-3-12, death-assist-on-3-12, died-on-3-12, dragon-killed-on-3-12, dragon-killed-watched-on-3-12, gold-earned-on-3-12, gold-spent-on-3-12, heal-cast-on-3-12, heal-on-3-12, item-bought-on-3-12, item-callout-on-3-12, item-changed-on-3-12, item-removed-on-3-12, item-sold-on-3-12, killing-spree-on-3-12, minion-killed-on-3-12, monster-killed-on-3-12, one-on-3-12, removed-on-3-12, spawned-on-3-12, spider-killed-on-3-12, spider-killed-watched-on-3-12, turret-damaged-on-3-12, turret-died-on-3-12, undo-changed-on-3-12)eventtakes 85 itemBought, 86 itemSold, 87 itemRemoved, 88 itemCallout, 89 itemChanged, 90 undoChanged, 109 minionsSpawned, 110 welcome, 111 startNoticeTwo, 112 startNoticeThree, 116 scoreboardOpened, 139 dragonKilled, 140 dragonKilledWatched, 141 baronKilled, 142 baronKilledWatched, 143 spiderKilled, 144 spiderKilledWatched, 145 altarCaptured, 146 altarCapturedWatched, 147 wardPlaced, 148 wardKilled in 3.12 and not in 3.11.eventtakes 81 itemBought, 82 itemSold, 83 itemRemoved, 84 itemCallout, 85 itemChanged, 86 undoChanged, 105 minionsSpawned, 106 welcome, 107 startNoticeTwo, 108 startNoticeThree, 112 scoreboardOpened, 135 dragonKilled, 136 dragonKilledWatched, 137 baronKilled, 138 baronKilledWatched, 139 spiderKilled, 140 spiderKilledWatched, 141 altarCaptured, 142 altarCapturedWatched, 143 wardPlaced, 144 wardKilled in 3.11 and not in 3.12.valueis present when event = 26 or 81 or 82 or 83 or 85 or 86 or 141 or 142 in 3.11, and present when event = 26 or 85 or 86 or 87 or 89 or 90 or 145 or 146 in 3.12.killis present when event = 1 or 2 or 36 or 37 or 40 or 135 or 136 or 137 or 138 or 139 or 140 in 3.11, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 139 or 140 or 141 or 142 or 143 or 144 in 3.12.monsteris present when event = 40 or 135 or 136 or 137 or 138 or 139 or 140 in 3.11, and present when event = 40 or 139 or 140 or 141 or 142 or 143 or 144 in 3.12.calloutis present when event = 84 in 3.11, and present when event = 88 in 3.12.callout.firstis bytes, 28 in 3.11 and bytes, 24 in 3.12.callout.secondis bytes, 28 in 3.11 and bytes, 24 in 3.12.
ClockReplyvalueis in 3.11 and not in 3.12.checkis in 3.11 and not in 3.12.
DeathHistory(vectors: one-on-3-12)entries[].eventtakes 85 itemBought, 86 itemSold, 87 itemRemoved, 88 itemCallout, 89 itemChanged, 90 undoChanged, 109 minionsSpawned, 110 welcome, 111 startNoticeTwo, 112 startNoticeThree, 116 scoreboardOpened, 139 dragonKilled, 140 dragonKilledWatched, 141 baronKilled, 142 baronKilledWatched, 143 spiderKilled, 144 spiderKilledWatched, 145 altarCaptured, 146 altarCapturedWatched, 147 wardPlaced, 148 wardKilled in 3.12 and not in 3.11.entries[].eventtakes 81 itemBought, 82 itemSold, 83 itemRemoved, 84 itemCallout, 85 itemChanged, 86 undoChanged, 105 minionsSpawned, 106 welcome, 107 startNoticeTwo, 108 startNoticeThree, 112 scoreboardOpened, 135 dragonKilled, 136 dragonKilledWatched, 137 baronKilled, 138 baronKilledWatched, 139 spiderKilled, 140 spiderKilledWatched, 141 altarCaptured, 142 altarCapturedWatched, 143 wardPlaced, 144 wardKilled in 3.11 and not in 3.12.entries[].valueis present when event = 26 or 81 or 82 or 83 or 85 or 86 or 141 or 142 in 3.11, and present when event = 26 or 85 or 86 or 87 or 89 or 90 or 145 or 146 in 3.12.entries[].killis present when event = 1 or 2 or 36 or 37 or 40 or 135 or 136 or 137 or 138 or 139 or 140 in 3.11, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 139 or 140 or 141 or 142 or 143 or 144 in 3.12.entries[].monsteris present when event = 40 or 135 or 136 or 137 or 138 or 139 or 140 in 3.11, and present when event = 40 or 139 or 140 or 141 or 142 or 143 or 144 in 3.12.entries[].calloutis present when event = 84 in 3.11, and present when event = 88 in 3.12.entries[].callout.firstis bytes, 28 in 3.11 and bytes, 24 in 3.12.entries[].callout.secondis bytes, 28 in 3.11 and bytes, 24 in 3.12.
DrawPathModeintervalis in 3.12 (f32), aftermode, and not in 3.11.
FacePosition(vectors: one-on-3-12)unknownis f32 in 3.11 and bytes, 4 in 3.12.
GameEndedresulthassurrenderedat bit 1 in 3.12, and not in 3.11.result.unusedis at bit 1, 7 bits wide, in 3.11 and at bit 2, 6 bits wide, in 3.12.
GroundAttackMode(vectors: off-on-3-12)modetakes 3 moveAndSelect, 4 attackMove, 5 atCursor in 3.11 and not in 3.12.
QuestUpdated(vectors: primary-on-3-12)kindtakes 2 objective in 3.11 and not in 3.12.
ResourceKindChanged(vectors: energy-on-3-12)kindtakes 8 ferocity, 9 bloodWell, 10 other in 3.12 and not in 3.11.
SpawnPetsideis in 3.12 (u32), afterduration, and not in 3.11.
SpawnUnit(vectors: one-on-3-12)owneris in 3.12 (u32), afterunit, and not in 3.11.
SpellCooldownwhichnames bit 7speakWhenReadyin 3.11 andunusedin 3.12.
UnitSpokeunknownis f32 in 3.11 and u32 in 3.12.
UnitText(vectors: level-on-3-12)styletakes 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 enemyPhysicalCritical, 22 countdown, 23 onMyWay, 24 absorbed, 25 damage, 26 critical, 27 debug in 3.12 and not in 3.11.styletakes 7 experience, 8 gold, 9 level, 10 disable, 11 questReceived, 12 questComplete, 13 score, 14 physicalDamage, 15 magicDamage, 16 trueDamage, 17 enemyPhysicalDamage, 18 enemyMagicDamage, 19 enemyTrueDamage, 20 enemyPhysicalCritical, 21 countdown, 22 onMyWay, 24 damage, 25 critical, 26 debug in 3.11 and not in 3.12.
VersionSync(vectors: one-on-3-12)features.championIndicatoris at bit 11 in 3.11 and at bit 10 in 3.12.featureshasaltBountyat bit 11 in 3.12, and not in 3.11.featureshaswaveOrderat bit 12 in 3.12, and not in 3.11.features.unusedis at bit 12, 20 bits wide, in 3.11 and at bit 13, 19 bits wide, in 3.12.featureshasbit10at bit 10 in 3.11, and not in 3.12.
WorldEvent(vectors: altar-captured-on-3-12, altar-captured-watched-on-3-12, baron-killed-on-3-12, baron-killed-watched-on-3-12, buff-on-3-12, consumable-bought-on-3-12, critical-strike-on-3-12, crowd-control-on-3-12, damage-dealt-on-3-12, damage-taken-on-3-12, death-assist-on-3-12, died-on-3-12, dragon-killed-on-3-12, dragon-killed-watched-on-3-12, gold-earned-on-3-12, gold-spent-on-3-12, heal-cast-on-3-12, heal-on-3-12, item-bought-on-3-12, item-callout-on-3-12, item-changed-on-3-12, item-removed-on-3-12, item-sold-on-3-12, killing-spree-on-3-12, minion-killed-on-3-12, monster-killed-on-3-12, one-on-3-12, removed-on-3-12, spawned-on-3-12, spider-killed-on-3-12, spider-killed-watched-on-3-12, turret-damaged-on-3-12, turret-died-on-3-12, undo-changed-on-3-12)eventtakes 85 itemBought, 86 itemSold, 87 itemRemoved, 88 itemCallout, 89 itemChanged, 90 undoChanged, 109 minionsSpawned, 110 welcome, 111 startNoticeTwo, 112 startNoticeThree, 116 scoreboardOpened, 139 dragonKilled, 140 dragonKilledWatched, 141 baronKilled, 142 baronKilledWatched, 143 spiderKilled, 144 spiderKilledWatched, 145 altarCaptured, 146 altarCapturedWatched, 147 wardPlaced, 148 wardKilled in 3.12 and not in 3.11.eventtakes 81 itemBought, 82 itemSold, 83 itemRemoved, 84 itemCallout, 85 itemChanged, 86 undoChanged, 105 minionsSpawned, 106 welcome, 107 startNoticeTwo, 108 startNoticeThree, 112 scoreboardOpened, 135 dragonKilled, 136 dragonKilledWatched, 137 baronKilled, 138 baronKilledWatched, 139 spiderKilled, 140 spiderKilledWatched, 141 altarCaptured, 142 altarCapturedWatched, 143 wardPlaced, 144 wardKilled in 3.11 and not in 3.12.valueis present when event = 26 or 81 or 82 or 83 or 85 or 86 or 141 or 142 in 3.11, and present when event = 26 or 85 or 86 or 87 or 89 or 90 or 145 or 146 in 3.12.killis present when event = 1 or 2 or 36 or 37 or 40 or 135 or 136 or 137 or 138 or 139 or 140 in 3.11, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 139 or 140 or 141 or 142 or 143 or 144 in 3.12.monsteris present when event = 40 or 135 or 136 or 137 or 138 or 139 or 140 in 3.11, and present when event = 40 or 139 or 140 or 141 or 142 or 143 or 144 in 3.12.calloutis present when event = 84 in 3.11, and present when event = 88 in 3.12.callout.firstis bytes, 28 in 3.11 and bytes, 24 in 3.12.callout.secondis bytes, 28 in 3.11 and bytes, 24 in 3.12.
3.13
Client builds from 3.13.0.399 up to, not including, 3.14.0.700. Patch notes: V3.13.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 3.13.0.399 | 11 | 0 | 3 | 545f334 | 2026-10-21 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: BounceMissile, InhibitorDied.
Every message of this range (263)
Against 3.12
Where a build from 3.13.0.399 up to, not including, 3.14.0.700 differs from one from 3.12.0.251 up to, not including, 3.13.0.399. Anything not named here is the same in both.
Transport
- Channel roster is 6 in the session family in 3.12, and 7 in the session family in 3.13.
In 3.13, not in 3.12
| Message | Sent by | Command | What it does |
|---|---|---|---|
SpellToggled | server | 280 on events | Turn one of a unit’s spells on or off |
Laid out differently
ClientEvent(vectors: altar-captured-on-3-13, altar-captured-watched-on-3-13, baron-killed-on-3-13, baron-killed-watched-on-3-13, baron-stolen-on-3-13, buff-on-3-13, consumable-bought-on-3-13, critical-strike-on-3-13, crowd-control-on-3-13, damage-dealt-on-3-13, damage-taken-on-3-13, death-assist-on-3-13, died-on-3-13, dragon-killed-on-3-13, dragon-killed-watched-on-3-13, dragon-stolen-on-3-13, gold-earned-on-3-13, gold-spent-on-3-13, heal-cast-on-3-13, heal-on-3-13, item-bought-on-3-13, item-callout-on-3-13, item-changed-on-3-13, item-removed-on-3-13, item-sold-on-3-13, killing-spree-on-3-13, minion-killed-on-3-13, monster-killed-on-3-13, one-on-3-13, removed-on-3-13, spawned-on-3-13, spider-killed-on-3-13, spider-killed-watched-on-3-13, turret-damaged-on-3-13, turret-died-on-3-13, undo-changed-on-3-13)eventtakes 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, 110 minionsSpawned, 111 welcome, 112 startNoticeTwo, 113 startNoticeThree, 117 scoreboardOpened, 140 dragonKilled, 141 dragonKilledWatched, 142 dragonStolen, 143 baronKilled, 144 baronKilledWatched, 145 baronStolen, 146 spiderKilled, 147 spiderKilledWatched, 148 altarCaptured, 149 altarCapturedWatched, 150 wardPlaced, 151 wardKilled in 3.13 and not in 3.12.eventtakes 7 championKillUnseen, 9 singleKill, 10 doubleKill, 16 damageTaken, 17 damageDealt, 24 goldSpent, 25 goldEarned, 26 consumableBought, 27 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 nexusKilled, 43 nexusDied, 44 heal, 45 healCast, 46 buff, 47 crowdControl, 48 killingSpree, 55 killDuringSpree, 62 doubleKillDuringSpree, 63 tripleKillDuringSpree, 64 quadraKillDuringSpree, 67 deathAssist, 68 playerQuit, 69 playerLeft, 70 playerReconnected, 85 itemBought, 86 itemSold, 87 itemRemoved, 88 itemCallout, 89 itemChanged, 90 undoChanged, 109 minionsSpawned, 110 welcome, 111 startNoticeTwo, 112 startNoticeThree, 116 scoreboardOpened, 139 dragonKilled, 140 dragonKilledWatched, 141 baronKilled, 142 baronKilledWatched, 143 spiderKilled, 144 spiderKilledWatched, 145 altarCaptured, 146 altarCapturedWatched, 147 wardPlaced, 148 wardKilled in 3.12 and not in 3.13.damageis present when event = 16 or 17 in 3.12, and present when event = 15 or 16 in 3.13.spentis present when event = 24 in 3.12, and present when event = 23 in 3.13.valueis present when event = 26 or 85 or 86 or 87 or 89 or 90 or 145 or 146 in 3.12, and present when event = 25 or 86 or 87 or 88 or 90 or 91 or 148 or 149 in 3.13.criticalis present when event = 27 in 3.12, and present when event = 26 in 3.13.spreeis present when event = 48 in 3.12, and present when event = 49 in 3.13.earnedis present when event = 25 in 3.12, and present when event = 24 in 3.13.healis present when event = 44 or 45 in 3.12, and present when event = 45 or 46 in 3.13.effectis present when event = 46 or 47 in 3.12, and present when event = 47 or 48 in 3.13.extrais present when event = 47 in 3.12, and present when event = 48 in 3.13.assistis present when event = 67 in 3.12, and present when event = 68 in 3.13.killis present when event = 1 or 2 or 36 or 37 or 38 or 40 or 139 or 140 or 141 or 142 or 143 or 144 in 3.12, and present when event = 1 or 2 or 35 or 36 or 37 or 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 in 3.13.monsteris present when event = 40 or 139 or 140 or 141 or 142 or 143 or 144 in 3.12, and present when event = 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 in 3.13.calloutis present when event = 88 in 3.12, and present when event = 89 in 3.13.
DeathHistory(vectors: one-on-3-13)entries[].eventtakes 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, 110 minionsSpawned, 111 welcome, 112 startNoticeTwo, 113 startNoticeThree, 117 scoreboardOpened, 140 dragonKilled, 141 dragonKilledWatched, 142 dragonStolen, 143 baronKilled, 144 baronKilledWatched, 145 baronStolen, 146 spiderKilled, 147 spiderKilledWatched, 148 altarCaptured, 149 altarCapturedWatched, 150 wardPlaced, 151 wardKilled in 3.13 and not in 3.12.entries[].eventtakes 7 championKillUnseen, 9 singleKill, 10 doubleKill, 16 damageTaken, 17 damageDealt, 24 goldSpent, 25 goldEarned, 26 consumableBought, 27 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 nexusKilled, 43 nexusDied, 44 heal, 45 healCast, 46 buff, 47 crowdControl, 48 killingSpree, 55 killDuringSpree, 62 doubleKillDuringSpree, 63 tripleKillDuringSpree, 64 quadraKillDuringSpree, 67 deathAssist, 68 playerQuit, 69 playerLeft, 70 playerReconnected, 85 itemBought, 86 itemSold, 87 itemRemoved, 88 itemCallout, 89 itemChanged, 90 undoChanged, 109 minionsSpawned, 110 welcome, 111 startNoticeTwo, 112 startNoticeThree, 116 scoreboardOpened, 139 dragonKilled, 140 dragonKilledWatched, 141 baronKilled, 142 baronKilledWatched, 143 spiderKilled, 144 spiderKilledWatched, 145 altarCaptured, 146 altarCapturedWatched, 147 wardPlaced, 148 wardKilled in 3.12 and not in 3.13.entries[].damageis present when event = 16 or 17 in 3.12, and present when event = 15 or 16 in 3.13.entries[].spentis present when event = 24 in 3.12, and present when event = 23 in 3.13.entries[].valueis present when event = 26 or 85 or 86 or 87 or 89 or 90 or 145 or 146 in 3.12, and present when event = 25 or 86 or 87 or 88 or 90 or 91 or 148 or 149 in 3.13.entries[].criticalis present when event = 27 in 3.12, and present when event = 26 in 3.13.entries[].spreeis present when event = 48 in 3.12, and present when event = 49 in 3.13.entries[].earnedis present when event = 25 in 3.12, and present when event = 24 in 3.13.entries[].healis present when event = 44 or 45 in 3.12, and present when event = 45 or 46 in 3.13.entries[].effectis present when event = 46 or 47 in 3.12, and present when event = 47 or 48 in 3.13.entries[].extrais present when event = 47 in 3.12, and present when event = 48 in 3.13.entries[].assistis present when event = 67 in 3.12, and present when event = 68 in 3.13.entries[].killis present when event = 1 or 2 or 36 or 37 or 38 or 40 or 139 or 140 or 141 or 142 or 143 or 144 in 3.12, and present when event = 1 or 2 or 35 or 36 or 37 or 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 in 3.13.entries[].monsteris present when event = 40 or 139 or 140 or 141 or 142 or 143 or 144 in 3.12, and present when event = 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 in 3.13.entries[].calloutis present when event = 88 in 3.12, and present when event = 89 in 3.13.
MapPropscaleXis in 3.13 (f32), afteroffsetZ, and not in 3.12.scaleYis in 3.13 (f32), afterscaleX, and not in 3.12.scaleZis in 3.13 (f32), afterscaleY, and not in 3.12.
VersionSync(vectors: one-on-3-13)featureshasquickChatat bit 4 in 3.13, and not in 3.12.features.missileWarningis at bit 4 in 3.12 and at bit 5 in 3.13.features.audioBackendis at bit 5 in 3.12 and at bit 6 in 3.13.features.animatedCursorsis at bit 6 in 3.12 and at bit 7 in 3.13.features.altControlsis at bit 7 in 3.12 and at bit 8 in 3.13.features.shopUndois at bit 8 in 3.12 and at bit 9 in 3.13.features.skillshotOutlineis at bit 9 in 3.12 and at bit 10 in 3.13.features.championIndicatoris at bit 10 in 3.12 and at bit 11 in 3.13.features.altBountyis at bit 11 in 3.12 and at bit 12 in 3.13.features.waveOrderis at bit 12 in 3.12 and at bit 13 in 3.13.featureshasturretRangeat bit 14 in 3.13, and not in 3.12.features.unusedis at bit 13, 19 bits wide, in 3.12 and at bit 15, 17 bits wide, in 3.13.disabledItemsis in 3.13 (64 × u32), afterfeatures, and not in 3.12.
WorldEvent(vectors: altar-captured-on-3-13, altar-captured-watched-on-3-13, baron-killed-on-3-13, baron-killed-watched-on-3-13, baron-stolen-on-3-13, buff-on-3-13, consumable-bought-on-3-13, critical-strike-on-3-13, crowd-control-on-3-13, damage-dealt-on-3-13, damage-taken-on-3-13, death-assist-on-3-13, died-on-3-13, dragon-killed-on-3-13, dragon-killed-watched-on-3-13, dragon-stolen-on-3-13, gold-earned-on-3-13, gold-spent-on-3-13, heal-cast-on-3-13, heal-on-3-13, item-bought-on-3-13, item-callout-on-3-13, item-changed-on-3-13, item-removed-on-3-13, item-sold-on-3-13, killing-spree-on-3-13, minion-killed-on-3-13, monster-killed-on-3-13, one-on-3-13, removed-on-3-13, spawned-on-3-13, spider-killed-on-3-13, spider-killed-watched-on-3-13, turret-damaged-on-3-13, turret-died-on-3-13, undo-changed-on-3-13)eventtakes 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, 110 minionsSpawned, 111 welcome, 112 startNoticeTwo, 113 startNoticeThree, 117 scoreboardOpened, 140 dragonKilled, 141 dragonKilledWatched, 142 dragonStolen, 143 baronKilled, 144 baronKilledWatched, 145 baronStolen, 146 spiderKilled, 147 spiderKilledWatched, 148 altarCaptured, 149 altarCapturedWatched, 150 wardPlaced, 151 wardKilled in 3.13 and not in 3.12.eventtakes 7 championKillUnseen, 9 singleKill, 10 doubleKill, 16 damageTaken, 17 damageDealt, 24 goldSpent, 25 goldEarned, 26 consumableBought, 27 criticalStrike, 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 nexusKilled, 43 nexusDied, 44 heal, 45 healCast, 46 buff, 47 crowdControl, 48 killingSpree, 55 killDuringSpree, 62 doubleKillDuringSpree, 63 tripleKillDuringSpree, 64 quadraKillDuringSpree, 67 deathAssist, 68 playerQuit, 69 playerLeft, 70 playerReconnected, 85 itemBought, 86 itemSold, 87 itemRemoved, 88 itemCallout, 89 itemChanged, 90 undoChanged, 109 minionsSpawned, 110 welcome, 111 startNoticeTwo, 112 startNoticeThree, 116 scoreboardOpened, 139 dragonKilled, 140 dragonKilledWatched, 141 baronKilled, 142 baronKilledWatched, 143 spiderKilled, 144 spiderKilledWatched, 145 altarCaptured, 146 altarCapturedWatched, 147 wardPlaced, 148 wardKilled in 3.12 and not in 3.13.damageis present when event = 16 or 17 in 3.12, and present when event = 15 or 16 in 3.13.spentis present when event = 24 in 3.12, and present when event = 23 in 3.13.valueis present when event = 26 or 85 or 86 or 87 or 89 or 90 or 145 or 146 in 3.12, and present when event = 25 or 86 or 87 or 88 or 90 or 91 or 148 or 149 in 3.13.criticalis present when event = 27 in 3.12, and present when event = 26 in 3.13.spreeis present when event = 48 in 3.12, and present when event = 49 in 3.13.earnedis present when event = 25 in 3.12, and present when event = 24 in 3.13.healis present when event = 44 or 45 in 3.12, and present when event = 45 or 46 in 3.13.effectis present when event = 46 or 47 in 3.12, and present when event = 47 or 48 in 3.13.extrais present when event = 47 in 3.12, and present when event = 48 in 3.13.assistis present when event = 67 in 3.12, and present when event = 68 in 3.13.killis present when event = 1 or 2 or 36 or 37 or 38 or 40 or 139 or 140 or 141 or 142 or 143 or 144 in 3.12, and present when event = 1 or 2 or 35 or 36 or 37 or 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 in 3.13.monsteris present when event = 40 or 139 or 140 or 141 or 142 or 143 or 144 in 3.12, and present when event = 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 in 3.13.calloutis present when event = 88 in 3.12, and present when event = 89 in 3.13.
Structs
SpellCastmissileis in 3.13 (u32), afterpackage, and not in 3.12.
Chapters
3.14
Client builds from 3.14.0.700 up to, not including, 3.15.0.244. Patch notes: V3.14.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 3.14.0.700 | 11 | 0 | 3 | 545f334 | 2026-10-21 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: InhibitorDied.
Every message of this range (268)
Against 3.13
Where a build from 3.14.0.700 up to, not including, 3.15.0.244 differs from one from 3.13.0.399 up to, not including, 3.14.0.700. Anything not named here is the same in both.
In 3.14, not in 3.13
| Message | Sent by | Command | What it does |
|---|---|---|---|
BounceMissile | server | 281 on events | What a server sends as a missile bounces on to another unit |
GoldSourcesLog | server | 282 on events | Carry a text to a client |
ItemSubstitution | server | 284 on events | Have one item stand in for another in a champion’s inventory |
SubstitutionCleared | server | 285 on events | Undo an ItemSubstitution, so the shop shows the item itself again |
Unhandled286 | server | 286 on events | A message that changes nothing a client shows |
Laid out differently
ClientEvent(vectors: altar-captured-on-3-14, altar-captured-watched-on-3-14, baron-killed-on-3-14, baron-killed-watched-on-3-14, baron-stolen-on-3-14, buff-on-3-14, consumable-bought-on-3-14, critical-strike-on-3-14, crowd-control-on-3-14, damage-dealt-on-3-14, damage-taken-on-3-14, death-assist-on-3-14, died-on-3-14, dragon-killed-on-3-14, dragon-killed-watched-on-3-14, dragon-stolen-on-3-14, gold-earned-on-3-14, gold-spent-on-3-14, heal-cast-on-3-14, heal-on-3-14, item-bought-on-3-14, item-callout-on-3-14, item-changed-on-3-14, item-removed-on-3-14, item-sold-on-3-14, item-substituted-on-3-14, killing-spree-on-3-14, minion-killed-on-3-14, monster-killed-on-3-14, one-on-3-14, removed-on-3-14, spawned-on-3-14, spider-killed-on-3-14, spider-killed-watched-on-3-14, turret-damaged-on-3-14, turret-died-on-3-14, undo-changed-on-3-14)eventtakes 92 itemSubstituted, 111 minionsSpawned, 112 welcome, 113 startNoticeTwo, 114 startNoticeThree, 118 scoreboardOpened, 141 dragonKilled, 142 dragonKilledWatched, 143 dragonStolen, 144 baronKilled, 145 baronKilledWatched, 146 baronStolen, 147 spiderKilled, 148 spiderKilledWatched, 149 altarCaptured, 150 altarCapturedWatched, 151 wardPlaced, 152 wardKilled in 3.14 and not in 3.13.eventtakes 110 minionsSpawned, 111 welcome, 112 startNoticeTwo, 113 startNoticeThree, 117 scoreboardOpened, 140 dragonKilled, 141 dragonKilledWatched, 142 dragonStolen, 143 baronKilled, 144 baronKilledWatched, 145 baronStolen, 146 spiderKilled, 147 spiderKilledWatched, 148 altarCaptured, 149 altarCapturedWatched, 150 wardPlaced, 151 wardKilled in 3.13 and not in 3.14.valueis present when event = 25 or 86 or 87 or 88 or 90 or 91 or 148 or 149 in 3.13, and present when event = 25 or 86 or 87 or 88 or 90 or 91 or 149 or 150 in 3.14.earned.subDetailis in 3.14 (u32), afterearned.detail, and not in 3.13.killis present when event = 1 or 2 or 35 or 36 or 37 or 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 in 3.13, and present when event = 1 or 2 or 35 or 36 or 37 or 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 in 3.14.monsteris present when event = 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 in 3.13, and present when event = 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 in 3.14.substitutionis in 3.14 (record), aftercallout.side, and not in 3.13.
DeathHistory(vectors: one-on-3-14)entries[].eventtakes 92 itemSubstituted, 111 minionsSpawned, 112 welcome, 113 startNoticeTwo, 114 startNoticeThree, 118 scoreboardOpened, 141 dragonKilled, 142 dragonKilledWatched, 143 dragonStolen, 144 baronKilled, 145 baronKilledWatched, 146 baronStolen, 147 spiderKilled, 148 spiderKilledWatched, 149 altarCaptured, 150 altarCapturedWatched, 151 wardPlaced, 152 wardKilled in 3.14 and not in 3.13.entries[].eventtakes 110 minionsSpawned, 111 welcome, 112 startNoticeTwo, 113 startNoticeThree, 117 scoreboardOpened, 140 dragonKilled, 141 dragonKilledWatched, 142 dragonStolen, 143 baronKilled, 144 baronKilledWatched, 145 baronStolen, 146 spiderKilled, 147 spiderKilledWatched, 148 altarCaptured, 149 altarCapturedWatched, 150 wardPlaced, 151 wardKilled in 3.13 and not in 3.14.entries[].valueis present when event = 25 or 86 or 87 or 88 or 90 or 91 or 148 or 149 in 3.13, and present when event = 25 or 86 or 87 or 88 or 90 or 91 or 149 or 150 in 3.14.entries[].earned.subDetailis in 3.14 (u32), afterentries[].earned.detail, and not in 3.13.entries[].killis present when event = 1 or 2 or 35 or 36 or 37 or 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 in 3.13, and present when event = 1 or 2 or 35 or 36 or 37 or 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 in 3.14.entries[].monsteris present when event = 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 in 3.13, and present when event = 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 in 3.14.entries[].substitutionis in 3.14 (record), afterentries[].callout.side, and not in 3.13.
InventorySnapshot(vectors: one-on-3-14)itemsis 8 × record in 3.13 and 9 × record in 3.14.cooldownsis 8 × f32 in 3.13 and 9 × f32 in 3.14.
QuestUpdatedflagshassecondat bit 1 in 3.14, and not in 3.13.flags.unusedis at bit 1, 7 bits wide, in 3.13 and at bit 2, 6 bits wide, in 3.14.
SpawnFromBarrackslevelis in 3.14 (u8), afterhealthBonus, and not in 3.13.
SpellCooldownoutOfis in 3.14 (f32), aftertimeLeft, and not in 3.13.
VersionSync(vectors: one-on-3-14)variantsis in 3.14 (2 × string), aftermode, and not in 3.13.variantCountis in 3.14 (u8), aftervariants, and not in 3.13.featureshasbit14at bit 15 in 3.14, and not in 3.13.featureshasskinParticlesat bit 16 in 3.14, and not in 3.13.featureshasbit16at bit 17 in 3.14, and not in 3.13.featureshashardwareMetricsat bit 18 in 3.14, and not in 3.13.features.unusedis at bit 15, 17 bits wide, in 3.13 and at bit 19, 13 bits wide, in 3.14.
WorldEvent(vectors: altar-captured-on-3-14, altar-captured-watched-on-3-14, baron-killed-on-3-14, baron-killed-watched-on-3-14, baron-stolen-on-3-14, buff-on-3-14, consumable-bought-on-3-14, critical-strike-on-3-14, crowd-control-on-3-14, damage-dealt-on-3-14, damage-taken-on-3-14, death-assist-on-3-14, died-on-3-14, dragon-killed-on-3-14, dragon-killed-watched-on-3-14, dragon-stolen-on-3-14, gold-earned-on-3-14, gold-spent-on-3-14, heal-cast-on-3-14, heal-on-3-14, item-bought-on-3-14, item-callout-on-3-14, item-changed-on-3-14, item-removed-on-3-14, item-sold-on-3-14, item-substituted-on-3-14, killing-spree-on-3-14, minion-killed-on-3-14, monster-killed-on-3-14, one-on-3-14, removed-on-3-14, spawned-on-3-14, spider-killed-on-3-14, spider-killed-watched-on-3-14, turret-damaged-on-3-14, turret-died-on-3-14, undo-changed-on-3-14)eventtakes 92 itemSubstituted, 111 minionsSpawned, 112 welcome, 113 startNoticeTwo, 114 startNoticeThree, 118 scoreboardOpened, 141 dragonKilled, 142 dragonKilledWatched, 143 dragonStolen, 144 baronKilled, 145 baronKilledWatched, 146 baronStolen, 147 spiderKilled, 148 spiderKilledWatched, 149 altarCaptured, 150 altarCapturedWatched, 151 wardPlaced, 152 wardKilled in 3.14 and not in 3.13.eventtakes 110 minionsSpawned, 111 welcome, 112 startNoticeTwo, 113 startNoticeThree, 117 scoreboardOpened, 140 dragonKilled, 141 dragonKilledWatched, 142 dragonStolen, 143 baronKilled, 144 baronKilledWatched, 145 baronStolen, 146 spiderKilled, 147 spiderKilledWatched, 148 altarCaptured, 149 altarCapturedWatched, 150 wardPlaced, 151 wardKilled in 3.13 and not in 3.14.valueis present when event = 25 or 86 or 87 or 88 or 90 or 91 or 148 or 149 in 3.13, and present when event = 25 or 86 or 87 or 88 or 90 or 91 or 149 or 150 in 3.14.earned.subDetailis in 3.14 (u32), afterearned.detail, and not in 3.13.killis present when event = 1 or 2 or 35 or 36 or 37 or 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 in 3.13, and present when event = 1 or 2 or 35 or 36 or 37 or 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 in 3.14.monsteris present when event = 39 or 140 or 141 or 142 or 143 or 144 or 145 or 146 or 147 in 3.13, and present when event = 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 in 3.14.substitutionis in 3.14 (record), aftercallout.side, and not in 3.13.
Structs
Particlecasteris in 3.14 (u32), afterparticle, and not in 3.13.
3.15
Client builds from 3.15.0.244 up to, not including, 4.1.0.171. Patch notes: V3.15.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 3.15.0.244 | 11 | 0 | 3 | 545f334 | 2026-10-21 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: InhibitorDied.
Every message of this range (268)
Against 3.14
Where a build from 3.15.0.244 up to, not including, 4.1.0.171 differs from one from 3.14.0.700 up to, not including, 3.15.0.244. Anything not named here is the same in both.
Laid out differently
CapturePointChanged(vectors: one-on-3-15)resourceKindtakes 10 wind, 11 other in 3.15 and not in 3.14.resourceKindtakes 10 other in 3.14 and not in 3.15.
ClientEvent(vectors: altar-captured-on-3-15, altar-captured-watched-on-3-15, baron-killed-on-3-15, baron-killed-watched-on-3-15, baron-stolen-on-3-15, buff-on-3-15, consumable-bought-on-3-15, critical-strike-on-3-15, crowd-control-on-3-15, damage-dealt-on-3-15, damage-taken-on-3-15, death-assist-on-3-15, died-on-3-15, dragon-killed-on-3-15, dragon-killed-watched-on-3-15, dragon-stolen-on-3-15, gold-earned-on-3-15, gold-spent-on-3-15, heal-cast-on-3-15, heal-on-3-15, item-bought-on-3-15, item-callout-on-3-15, item-changed-on-3-15, item-removed-on-3-15, item-sold-on-3-15, item-substituted-on-3-15, killing-spree-on-3-15, minion-killed-on-3-15, monster-killed-on-3-15, one-on-3-15, removed-on-3-15, spawned-on-3-15, spider-killed-on-3-15, spider-killed-watched-on-3-15, turret-damaged-on-3-15, turret-died-on-3-15, undo-changed-on-3-15)eventtakes 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 3.15 and not in 3.14.eventtakes 141 dragonKilled, 142 dragonKilledWatched, 143 dragonStolen, 144 baronKilled, 145 baronKilledWatched, 146 baronStolen, 147 spiderKilled, 148 spiderKilledWatched, 149 altarCaptured, 150 altarCapturedWatched, 151 wardPlaced, 152 wardKilled in 3.14 and not in 3.15.valueis present when event = 25 or 86 or 87 or 88 or 90 or 91 or 149 or 150 in 3.14, and present when event = 25 or 86 or 87 or 88 or 90 or 91 or 151 or 152 in 3.15.killis present when event = 1 or 2 or 35 or 36 or 37 or 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 in 3.14, and 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 3.15.monsteris present when event = 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 in 3.14, and present when event = 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 in 3.15.
DeathHistory(vectors: one-on-3-15)entries[].eventtakes 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 3.15 and not in 3.14.entries[].eventtakes 141 dragonKilled, 142 dragonKilledWatched, 143 dragonStolen, 144 baronKilled, 145 baronKilledWatched, 146 baronStolen, 147 spiderKilled, 148 spiderKilledWatched, 149 altarCaptured, 150 altarCapturedWatched, 151 wardPlaced, 152 wardKilled in 3.14 and not in 3.15.entries[].valueis present when event = 25 or 86 or 87 or 88 or 90 or 91 or 149 or 150 in 3.14, and present when event = 25 or 86 or 87 or 88 or 90 or 91 or 151 or 152 in 3.15.entries[].killis present when event = 1 or 2 or 35 or 36 or 37 or 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 in 3.14, and 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 3.15.entries[].monsteris present when event = 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 in 3.14, and present when event = 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 in 3.15.
FacePositionunknownis bytes, 4 in 3.14 and f32 in 3.15.
FloatingTextlengthis in 3.15 (u32), afterstyle, and not in 3.14.textis text, ended by a zero byte in 3.14 and text, sized by length in 3.15.unusedis in 3.14 and not in 3.15.
MarkerMovedfaceGoalis in 3.15 (u8), afterspeed, and not in 3.14.
ResourceKindChanged(vectors: energy-on-3-15)kindtakes 10 wind, 11 other in 3.15 and not in 3.14.kindtakes 10 other in 3.14 and not in 3.15.
SpellNumbers(vectors: a-third-on-3-15, another-on-3-15, one-on-3-15)entries[].hiddenis in 3.15 (5 × u8), afterentries[].values, and not in 3.14.
UnitSpokelengthis in 3.15 (u32), afterunusedToo, and not in 3.14.textis text, ended by a zero byte in 3.14 and text, sized by length in 3.15.unitis in 3.14 and not in 3.15.
VersionSyncfeatures.balanceVoteCommandsis at bit 1 in 3.14 and at bit 0 in 3.15.features.menuBackis at bit 2 in 3.14 and at bit 1 in 3.15.features.menuBack2is at bit 3 in 3.14 and at bit 2 in 3.15.features.quickChatis at bit 4 in 3.14 and at bit 3 in 3.15.features.missileWarningis at bit 5 in 3.14 and at bit 4 in 3.15.features.audioBackendis at bit 6 in 3.14 and at bit 5 in 3.15.features.animatedCursorsis at bit 7 in 3.14 and at bit 6 in 3.15.features.altControlsis at bit 8 in 3.14 and at bit 7 in 3.15.features.shopUndois at bit 9 in 3.14 and at bit 8 in 3.15.features.skillshotOutlineis at bit 10 in 3.14 and at bit 9 in 3.15.features.championIndicatoris at bit 11 in 3.14 and at bit 10 in 3.15.features.altBountyis at bit 12 in 3.14 and at bit 11 in 3.15.features.waveOrderis at bit 13 in 3.14 and at bit 12 in 3.15.features.turretRangeis at bit 14 in 3.14 and at bit 13 in 3.15.features.bit14is at bit 15 in 3.14 and at bit 14 in 3.15.features.skinParticlesis at bit 16 in 3.14 and at bit 15 in 3.15.features.bit16is at bit 17 in 3.14 and at bit 16 in 3.15.features.hardwareMetricsis at bit 18 in 3.14 and at bit 17 in 3.15.features.unusedis at bit 19, 13 bits wide, in 3.14 and at bit 18, 14 bits wide, in 3.15.featureshasaltUnitDisplayat bit 0 in 3.14, and not in 3.15.
WorldEvent(vectors: altar-captured-on-3-15, altar-captured-watched-on-3-15, baron-killed-on-3-15, baron-killed-watched-on-3-15, baron-stolen-on-3-15, buff-on-3-15, consumable-bought-on-3-15, critical-strike-on-3-15, crowd-control-on-3-15, damage-dealt-on-3-15, damage-taken-on-3-15, death-assist-on-3-15, died-on-3-15, dragon-killed-on-3-15, dragon-killed-watched-on-3-15, dragon-stolen-on-3-15, gold-earned-on-3-15, gold-spent-on-3-15, heal-cast-on-3-15, heal-on-3-15, item-bought-on-3-15, item-callout-on-3-15, item-changed-on-3-15, item-removed-on-3-15, item-sold-on-3-15, item-substituted-on-3-15, killing-spree-on-3-15, minion-killed-on-3-15, monster-killed-on-3-15, one-on-3-15, removed-on-3-15, spawned-on-3-15, spider-killed-on-3-15, spider-killed-watched-on-3-15, turret-damaged-on-3-15, turret-died-on-3-15, undo-changed-on-3-15)eventtakes 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 3.15 and not in 3.14.eventtakes 141 dragonKilled, 142 dragonKilledWatched, 143 dragonStolen, 144 baronKilled, 145 baronKilledWatched, 146 baronStolen, 147 spiderKilled, 148 spiderKilledWatched, 149 altarCaptured, 150 altarCapturedWatched, 151 wardPlaced, 152 wardKilled in 3.14 and not in 3.15.valueis present when event = 25 or 86 or 87 or 88 or 90 or 91 or 149 or 150 in 3.14, and present when event = 25 or 86 or 87 or 88 or 90 or 91 or 151 or 152 in 3.15.killis present when event = 1 or 2 or 35 or 36 or 37 or 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 in 3.14, and 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 3.15.monsteris present when event = 39 or 141 or 142 or 143 or 144 or 145 or 146 or 147 or 148 in 3.14, and present when event = 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 in 3.15.
Only notes
These read the same on the wire, and only their notes change. What each says in 3.15:
ExperienceGained, its layout: no note, where 3.14 has “Where the unit is the client’s own champion below its highest level, a client also shows the amount on its experience display.”PlayAnimation, its layout: “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.”, where 3.14 has “A client ignores scaleTime and startProgress, and plays at normal speed from the start. A unit holding a locked animation ignores the message. An animated building plays at normal speed, and keepEmotes has no effect on it.”PlayAnimation,scaleTime: “A scale on how long it plays.”, where 3.14 has “A scale on how long it plays. A client ignores it.”PlayAnimation,startProgress: “How far into the animation it starts.”, where 3.14 has “How far into the animation it starts. A client ignores it.”
Index of messages
| Message | Sent by | System | Ranges |
|---|---|---|---|
AfkWarning | server | interface | 3.01–3.15 |
AnimationAdvanced | server | effects | 3.6–3.15 |
AnimationOverrides | server | effects | 3.01–3.15 |
AppearanceCleared | server | effects | 3.01–3.15 |
AppearancePopped | server | effects | 3.01–3.15 |
AppearancePushed | server | effects | 3.01–3.15 |
Attack | server | combat | 3.01–3.15 |
AttackFrom | server | combat | 3.01–3.15 |
AttackIndicators | server | combat | 3.6–3.15 |
Autocast | server | spells | 3.01–3.15 |
BalanceResult | server | votes | 3.02–3.15 |
BalanceVote | server | votes | 3.02–3.15 |
BalanceVoteAnswer | client | votes | 3.01–3.15 |
BalanceVoteRefused | client | votes | 3.5–3.15 |
BotDebug | server | units | 3.01–3.15 |
BotKick | server | match | 3.01–3.15 |
BotState | server | units | 3.01–3.15 |
BotTargets | server | units | 3.01–3.15 |
BounceMissile | server | spells | 3.14–3.15 |
BuildingDied | server | combat | 3.01–3.15 |
BuyItem | client | shop | 3.01–3.15 |
Camera | client | interface | 3.01–3.15 |
CameraAck | server | interface | 3.01–3.15 |
CameraBehaviour | server | interface | 3.01–3.15 |
CameraLock | client | interface | 3.01–3.15 |
CameraLockSet | server | interface | 3.01–3.15 |
CampCleared | server | objectives | 3.01–3.15 |
CampOpened | server | objectives | 3.01–3.15 |
CampTimer | server | objectives | 3.11–3.15 |
CancelTargeting | server | spells | 3.01–3.15 |
CapturePointChanged | server | objectives | 3.01–3.15 |
CastSpell | client | spells | 3.01–3.15 |
ChainTargets | server | spells | 3.01–3.15 |
ChampionDied | server | combat | 3.01–3.15 |
ChampionRemoved | server | units | 3.10–3.15 |
ChampionStats | server | replication | 3.01–3.15 |
CharacterSelected | client | joining | 3.01–3.15 |
Chat | both | communication | 3.01–3.15 |
ChatAllowance | server | communication | 3.02–3.15 |
ClientEvent | server | objectives | 3.01–3.15 |
ClientFinished | client | match | 3.01–3.15 |
ClientReady | client | joining | 3.01–3.15 |
ClientVersion | client | joining | 3.01–3.15 |
ClockConvergence | server | match | 3.01–3.15 |
ClockReply | client | match | 3.01–3.15 |
ClockSync | server | match | 3.01–3.15 |
CloseShop | server | shop | 3.01–3.15 |
ContextEmote | server | communication | 3.01–3.15 |
CreateChampion | server | units | 3.01–3.15 |
CreateFollower | server | units | 3.01–3.15 |
CreateNeutral | server | units | 3.01–3.15 |
CreateTurret | server | units | 3.01–3.15 |
CursorRings | server | spells | 3.9–3.15 |
Damage | server | combat | 3.01–3.15 |
DeathHistory | server | combat | 3.01–3.15 |
DeathTimer | server | combat | 3.12–3.15 |
DestroyMissile | server | spells | 3.01–3.15 |
DrawPath | client | movement | 3.8–3.15 |
DrawPathMode | server | movement | 3.8–3.15 |
EffectAdded | server | effects | 3.01–3.15 |
EffectAddedGroup | server | effects | 3.01–3.15 |
EffectCount | server | effects | 3.01–3.15 |
EffectCounter | server | effects | 3.9–3.15 |
EffectCountGroup | server | effects | 3.01–3.15 |
EffectRemoved | server | effects | 3.01–3.15 |
EffectRemovedGroup | server | effects | 3.01–3.15 |
EffectReplaced | server | effects | 3.01–3.15 |
EffectReplacedGroup | server | effects | 3.01–3.15 |
EmitterPause | server | effects | 3.01–3.15 |
EmotePlayed | server | communication | 3.01–3.15 |
Empty | server | match | 3.12–3.15 |
EnterLocalSight | server | vision | 3.01–3.15 |
EnterSight | server | vision | 3.01–3.15 |
EnterTeamSight | server | vision | 3.01–3.15 |
Exit | client | match | 3.01–3.15 |
ExperienceGained | server | replication | 3.01–3.15 |
FaceDirection | server | movement | 3.01–3.15 |
FacePosition | client | movement | 3.01–3.15 |
FadeMinions | server | effects | 3.01–3.15 |
FadeRemoved | server | effects | 3.01–3.15 |
FadeSounds | server | communication | 3.01–3.15 |
FadeTo | server | effects | 3.01–3.15 |
FloatingText | server | interface | 3.01–3.15 |
FogSet | server | vision | 3.01–3.15 |
FogToggled | server | vision | 3.01–3.15 |
FollowerMaster | server | units | 3.01–3.15 |
ForceDeath | server | combat | 3.01–3.15 |
GameEnded | server | match | 3.01–3.15 |
GameOptions | client | joining | 3.01–3.15 |
GameSpeed | server | match | 3.01–3.15 |
GoldEarned | server | replication | 3.01–3.15 |
GoldGained | server | replication | 3.01–3.15 |
GoldRedirect | server | replication | 3.01–3.15 |
GoldSourcesLog | server | replication | 3.14–3.15 |
GreyscaleWhenDead | server | combat | 3.01–3.15 |
GroundAttackMode | server | combat | 3.6–3.15 |
HealthBar | server | replication | 3.01–3.15 |
HoverIndicator | server | combat | 3.01–3.15 |
HoverTarget | server | combat | 3.01–3.15 |
HudDisabled | server | interface | 3.01–3.15 |
HudHighlighted | server | guidance | 3.01–3.15 |
HudHighlightToggled | server | guidance | 3.01–3.15 |
InhibitorDied | server | combat | 3.01–3.03 |
InhibitorState | server | combat | 3.01–3.15 |
InputLock | server | interface | 3.01–3.15 |
InputLockToggled | server | interface | 3.01–3.15 |
InventorySlot | server | shop | 3.01–3.15 |
InventorySnapshot | server | shop | 3.9–3.15 |
ItemAdded | server | shop | 3.01–3.15 |
ItemCharges | server | shop | 3.6–3.15 |
ItemSubstitution | server | shop | 3.14–3.15 |
ItemUsed | server | shop | 3.01–3.15 |
JoinSide | client | joining | 3.01–3.15 |
KillParticle | server | effects | 3.01–3.15 |
LeaveLocalSight | server | vision | 3.01–3.15 |
LeaveSight | server | vision | 3.01–3.15 |
LeaveTeamSight | server | vision | 3.01–3.15 |
LevelCap | server | replication | 3.10–3.15 |
LevelUp | server | replication | 3.01–3.15 |
LoadingProgress | client | joining | 3.01–3.15 |
Loadout | server | shop | 3.01–3.15 |
MapPing | client | communication | 3.01–3.15 |
MapProp | server | units | 3.01–3.15 |
MapPropChanged | server | units | 3.01–3.15 |
MarkerMoved | server | units | 3.11–3.15 |
MatchIdentity | server | joining | 3.01–3.15 |
MatchStarted | server | joining | 3.01–3.15 |
MinimapIcon | server | interface | 3.01–3.15 |
MissileCourse | server | spells | 3.01–3.15 |
MissileHits | server | spells | 3.01–3.15 |
MissileLaunched | server | spells | 3.01–3.15 |
MissileReport | client | spells | 3.01–3.15 |
MissileRetarget | server | spells | 3.01–3.15 |
MissileSpeed | server | spells | 3.9–3.15 |
MissileState | server | spells | 3.01–3.15 |
ModuleData | server | joining | 3.01–3.15 |
ModulePacket | client | joining | 3.01–3.15 |
MoveCamera | server | interface | 3.01–3.15 |
MovementBounds | server | movement | 3.01–3.15 |
MoveOrder | client | movement | 3.01–3.15 |
MultikillCount | server | replication | 3.11–3.15 |
MusicCue | server | communication | 3.01–3.15 |
NavigationFlags | server | movement | 3.01–3.15 |
NexusIdle | server | effects | 3.01–3.15 |
NexusSkin | server | effects | 3.01–3.15 |
ObjectiveHidden | server | guidance | 3.01–3.15 |
ObjectiveReplaced | server | guidance | 3.01–3.15 |
ObjectiveShown | server | guidance | 3.01–3.15 |
ParticleEnterTeamSight | server | vision | 3.01–3.15 |
ParticleLeaveTeamSight | server | vision | 3.01–3.15 |
ParticlesCreated | server | effects | 3.01–3.15 |
ParticleSource | server | effects | 3.01–3.15 |
Path | server | movement | 3.01–3.15 |
PathWithSpeed | server | movement | 3.01–3.15 |
Pause | client | match | 3.01–3.15 |
PauseAnimation | server | effects | 3.01–3.15 |
Paused | server | match | 3.01–3.15 |
PingPlaced | server | communication | 3.01–3.15 |
PlayAnimation | server | effects | 3.01–3.15 |
PlayEmote | client | communication | 3.01–3.15 |
PlayerDisconnected | server | match | 3.01–3.15 |
QueryStatus | client | joining | 3.01–3.15 |
QueryStatusAnswer | server | joining | 3.01–3.15 |
QuestEvent | client | guidance | 3.01–3.15 |
QuestUpdated | server | guidance | 3.01–3.15 |
Reconnected | server | match | 3.01–3.15 |
ReconnectedInMatch | client | match | 3.01–3.15 |
RegionAdded | server | vision | 3.01–3.15 |
RegionAttached | server | vision | 3.01–3.15 |
RegionRemoved | server | vision | 3.01–3.15 |
Register | client | joining | 3.01–3.15 |
Registered | server | joining | 3.01–3.15 |
RemoveItem | client | shop | 3.01–3.15 |
RemoveItemAnswer | server | shop | 3.01–3.15 |
Replication | server | replication | 3.01–3.15 |
ResourceDisplay | server | replication | 3.01–3.15 |
ResourceKindChanged | server | replication | 3.11–3.15 |
Respawned | server | combat | 3.01–3.15 |
RespawnPoint | server | objectives | 3.01–3.15 |
Resume | client | match | 3.01–3.15 |
Resumed | server | match | 3.01–3.15 |
Revived | server | combat | 3.01–3.15 |
Roster | server | joining | 3.01–3.15 |
ScoreAdded | server | replication | 3.01–3.15 |
ScreenTint | server | effects | 3.01–3.15 |
SeatChampion | server | joining | 3.01–3.15 |
SeatLoadProgress | server | joining | 3.01–3.15 |
SeatName | server | joining | 3.01–3.15 |
SelectObject | client | interface | 3.01–3.15 |
ShieldAdded | server | replication | 3.01–3.15 |
ShopEnabled | server | shop | 3.01–3.15 |
ShopUndo | client | shop | 3.9–3.15 |
ShopUndoCount | server | shop | 3.9–3.15 |
Shutdown | server | match | 3.01–3.15 |
SideTextHidden | server | guidance | 3.01–3.15 |
SideTextRefreshed | server | guidance | 3.01–3.15 |
SideTextShown | server | guidance | 3.01–3.15 |
SoftReconnect | server | match | 3.01–3.15 |
SoundPlayed | server | communication | 3.01–3.15 |
SpawnBot | server | units | 3.01–3.15 |
SpawnEnd | server | joining | 3.01–3.15 |
SpawnFromBarracks | server | units | 3.01–3.15 |
SpawnMarker | server | units | 3.6–3.15 |
SpawnPet | server | units | 3.01–3.15 |
SpawnStart | server | joining | 3.01–3.15 |
SpawnUnit | server | units | 3.01–3.15 |
SpellCastAnswer | server | spells | 3.01–3.15 |
SpellCharge | client | spells | 3.01–3.15 |
SpellCharges | server | spells | 3.8–3.15 |
SpellCooldown | server | spells | 3.01–3.15 |
SpellCostChanged | server | spells | 3.7–3.15 |
SpellInSlot | server | spells | 3.01–3.15 |
SpellLevel | server | spells | 3.01–3.15 |
SpellNumbers | server | spells | 3.01–3.15 |
SpellRankLimits | server | spells | 3.10–3.15 |
SpellSlotChanged | server | spells | 3.01–3.15 |
SpellToggled | server | spells | 3.13–3.15 |
SpellUpgraded | server | spells | 3.01–3.15 |
StartGame | server | joining | 3.01–3.15 |
StatisticIncremented | server | replication | 3.01–3.15 |
StatsRequest | client | joining | 3.01–3.15 |
StatTick | server | replication | 3.01–3.15 |
StopAnimation | server | effects | 3.01–3.15 |
StopAttack | server | combat | 3.01–3.15 |
StreamChunk | server | spectating | 3.12–3.15 |
StreamChunkRange | server | spectating | 3.12–3.15 |
StreamMetadata | server | spectating | 3.12–3.15 |
StreamRequest | client | spectating | 3.01–3.15 |
SubstitutionCleared | server | shop | 3.14–3.15 |
SurrenderAllowed | server | votes | 3.9–3.15 |
SurrenderStatus | server | votes | 3.01–3.15 |
SurrenderVote | client | votes | 3.01–3.15 |
SurrenderVoteCalled | server | votes | 3.01–3.15 |
SwapItems | client | shop | 3.01–3.15 |
SwapItemsAnswer | server | shop | 3.01–3.15 |
SystemMessage | server | communication | 3.01–3.15 |
TargetHeldChampion | server | combat | 3.01–3.15 |
TargetUnit | server | combat | 3.01–3.15 |
TeamChanged | server | units | 3.01–3.15 |
TeamScore | server | objectives | 3.01–3.15 |
TipEvent | client | guidance | 3.01–3.15 |
TipShown | server | guidance | 3.01–3.15 |
TransientAck | client | replication | 3.01–3.15 |
TutorialChatLine | server | guidance | 3.01–3.15 |
TutorialPopup | server | guidance | 3.01–3.15 |
TutorialPopupClosed | client | guidance | 3.01–3.15 |
TutorialShopOpened | client | shop | 3.01–3.15 |
UiHighlight | server | guidance | 3.01–3.15 |
Unhandled286 | server | match | 3.14–3.15 |
UnitDied | server | combat | 3.01–3.15 |
UnitHighlighted | server | guidance | 3.01–3.15 |
UnitHighlightRemoved | server | guidance | 3.01–3.15 |
UnitLookAt | server | movement | 3.10–3.15 |
UnitSpoke | client | communication | 3.01–3.15 |
UnitStopped | server | movement | 3.01–3.15 |
UnitText | server | interface | 3.01–3.15 |
UpgradeSpell | client | spells | 3.01–3.15 |
UseObject | client | combat | 3.01–3.15 |
VersionSync | server | joining | 3.01–3.15 |
VictoryDance | server | match | 3.01–3.15 |
VoiceCommand | server | communication | 3.01–3.15 |
VoiceEvent | server | communication | 3.01–3.15 |
VoiceEventDone | client | communication | 3.01–3.15 |
VoiceOverride | server | effects | 3.01–3.15 |
VolumeMuted | server | communication | 3.01–3.15 |
WaypointAck | client | movement | 3.01–3.15 |
WaypointGroup | server | movement | 3.01–3.15 |
WaypointGroupAtSpeed | server | movement | 3.01–3.15 |
WorldEvent | server | objectives | 3.01–3.15 |