Patches
What is particular to each patch this book covers: the builds it shipped, the live checks that ran on them, every message it carries, what the specification leaves unrecorded there, and how it differs from the patch before it. Where builds of two patches are held to the same facts, they share a section.
No build of this book has these, though the chapters name them, so what the chapters say of them says nothing of this book: CapturePointValue, CooldownSet, InhibitorDied, InputLockChanged, InputLocksFlipped, MinimapHighlighted, PlaceTurret, RegionAttached, ResyncEnded, ShopHighlighted, SpellIconChanged, SpellNameChanged, SpellOffsetTargetChanged, SpellRangeChanged, SpellTargetingChanged, SurrenderFailed.
4.1
Client builds from 4.1.0.171 up to, not including, 4.2.0.2718. Patch notes: V4.1.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.1.0.171 | 11 | 0 | 3 | d25f524 | 2026-10-23 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, AttackSpeedBounds, CampMarker, CharacterPreload, FloatingTextOnMap, InventorySnapshotOnMap, MinionKillCount, RegionMoved, Situation, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.
Every message of this range (267)
4.2
Client builds from 4.2.0.2718 up to, not including, 4.3.0.495. Patch notes: V4.2.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.2.0.2718 | 11 | 0 | 3 | 843692c | 2026-10-23 |
| 4.2.0.2726 | 11 | 0 | 5 | 63b6eaf | 2026-10-19 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, AttackSpeedBounds, CampMarker, CharacterPreload, FloatingTextOnMap, InventorySnapshotOnMap, MinionKillCount, RegionMoved, Situation, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.
Every message of this range (267)
Against 4.1
Where a build from 4.2.0.2718 up to, not including, 4.3.0.495 differs from one from 4.1.0.171 up to, not including, 4.2.0.2718. Anything not named here is the same in both.
Laid out differently
CampOpened(vectors: a-third-on-4-2, another-on-4-2, one-on-4-2)spawnDurationis in 4.2 (f32), aftercampIcon, and not in 4.1.proximityAnimationsis in 4.1 and not in 4.2.
CreateNeutral(vectors: inactive-on-4-2)spawnAnimationis in 4.2 (text, 64 bytes), aftercampIcon, and not in 4.1.spawnDurationis in 4.2 (f32), afterlevel, and not in 4.1.spawnElapsedis in 4.2 (f32), afterspawnDuration, and not in 4.1.proximityAnimationsis in 4.1 and not in 4.2.
VersionSync(vectors: one-on-4-2)variantsis 2 × string in 4.1 and 8 × string in 4.2.featureshaslagMetricsat bit 18 in 4.2, and not in 4.1.featureshaslogServerAddressat bit 19 in 4.2, and not in 4.1.features.unusedis at bit 18, 14 bits wide, in 4.1 and at bit 20, 12 bits wide, in 4.2.
4.3
Client builds from 4.3.0.495 up to, not including, 4.4.0.1858. Patch notes: V4.3.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.3.0.495 | 11 | 0 | 3 | aa0fd03 | 2026-10-23 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, AttackSpeedBounds, CampMarker, CharacterPreload, FloatingTextOnMap, InventorySnapshotOnMap, RegionMoved, Situation, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.
Every message of this range (268)
Against 4.2
Where a build from 4.3.0.495 up to, not including, 4.4.0.1858 differs from one from 4.2.0.2718 up to, not including, 4.3.0.495. Anything not named here is the same in both.
In 4.3, not in 4.2
| Message | Sent by | Command | What it does |
|---|---|---|---|
MinionKillCount | server | 287 on events | Add one to a champion’s count of minions killed |
Laid out differently
VersionSync(vectors: one-on-4-3)featureshasbit18at bit 18 in 4.3, and not in 4.2.features.lagMetricsis at bit 18 in 4.2 and at bit 19 in 4.3.featureshaseventReportsat bit 20 in 4.3, and not in 4.2.features.logServerAddressis at bit 19 in 4.2 and at bit 21 in 4.3.featureshasparticleOptionat bit 22 in 4.3, and not in 4.2.features.unusedis at bit 20, 12 bits wide, in 4.2 and at bit 23, 9 bits wide, in 4.3.reportingMessagesis in 4.3 (8 × u8), afterdisabledItems, and not in 4.2.
4.4
Client builds from 4.4.0.1858 up to, not including, 4.5.0.260. Patch notes: V4.4.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.4.0.1858 | 11 | 0 | 3 | d0fa7b0 | 2026-10-23 |
| 4.4.0.1885 | 11 | 0 | 5 | 63b6eaf | 2026-10-19 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, CampMarker, CharacterPreload, FloatingTextOnMap, InventorySnapshotOnMap, RegionMoved, Situation, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.
Every message of this range (269)
Against 4.3
Where a build from 4.4.0.1858 up to, not including, 4.5.0.260 differs from one from 4.3.0.495 up to, not including, 4.4.0.1858. Anything not named here is the same in both.
In 4.4, not in 4.3
| Message | Sent by | Command | What it does |
|---|---|---|---|
AttackSpeedBounds | server | 288 on events | Put a ceiling or a floor on how fast a unit attacks |
Laid out differently
CampCleared(vectors: one-on-4-4)doeshasfirstSideat bit 1 in 4.4, and not in 4.3.does.unusedis at bit 1, 7 bits wide, in 4.3 and at bit 2, 6 bits wide, in 4.4.
GameEndedresulthassurrenderedat bit 1 in 4.4, and not in 4.3.result.unusedis at bit 1, 7 bits wide, in 4.3 and at bit 2, 6 bits wide, in 4.4.
StartGamerules.unusedis at bit 2, 6 bits wide, in 4.3 and at bit 1, 7 bits wide, in 4.4.ruleshasnoticeat bit 1 in 4.3, and not in 4.4.
4.5
Client builds from 4.5.0.260 up to, not including, 4.6.0.193. Patch notes: V4.5.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.5.0.260 | 11 | 0 | 3 | 781bbd4 | 2026-10-23 |
| 4.5.0.266 | 11 | 0 | 5 | 63b6eaf | 2026-10-19 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, CampMarker, CharacterPreload, FloatingTextOnMap, InventorySnapshotOnMap, RegionMoved, Situation, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.
Every message of this range (267)
Against 4.4
Where a build from 4.5.0.260 up to, not including, 4.6.0.193 differs from one from 4.4.0.1858 up to, not including, 4.5.0.260. Anything not named here is the same in both.
In 4.4, not in 4.5
| Message | Sent by | Command it had |
|---|---|---|
ModuleData | server | 220 on events |
ModulePacket | client | 222 on requests |
Laid out differently
AppearancePushedhowhasreplacePackageat bit 2 in 4.5, and not in 4.4.how.unusedis at bit 2, 6 bits wide, in 4.4 and at bit 3, 5 bits wide, in 4.5.
ClientReadymaskedStatusis in 4.4 and not in 4.5.maskis in 4.4 and not in 4.5.
SpellLevellevelis in 4.5 (u32), afterslot, and not in 4.4.
StatsRequest(vectors: another-on-4-5, one-on-4-5)moduleOneis in 4.5 (u32) at the start, and not in 4.4.
VersionSync(vectors: one-on-4-5)featuresnames bit 15skinParticlesin 4.4 andbit15in 4.5.featureshasrecommendedPagesat bit 9 in 4.5, and not in 4.4.features.skillshotOutlineis at bit 9 in 4.4 and at bit 10 in 4.5.features.championIndicatoris at bit 10 in 4.4 and at bit 11 in 4.5.features.altBountyis at bit 11 in 4.4 and at bit 12 in 4.5.features.waveOrderis at bit 12 in 4.4 and at bit 13 in 4.5.features.turretRangeis at bit 13 in 4.4 and at bit 14 in 4.5.featureshasnetworkMetricsat bit 17 in 4.5, and not in 4.4.features.hardwareMetricsis at bit 17 in 4.4 and at bit 18 in 4.5.featureshasbit19at bit 19 in 4.5, and not in 4.4.features.lagMetricsis at bit 19 in 4.4 and at bit 20 in 4.5.features.eventReportsis at bit 20 in 4.4 and at bit 21 in 4.5.features.logServerAddressis at bit 21 in 4.4 and at bit 22 in 4.5.features.particleOptionis at bit 22 in 4.4 and at bit 23 in 4.5.features.unusedis at bit 23, 9 bits wide, in 4.4 and at bit 24, 8 bits wide, in 4.5.featureshasbit14at bit 14 in 4.4, and not in 4.5.featureshasbit18at bit 18 in 4.4, and not in 4.5.reportingMessagesis 8 × u8 in 4.4 and 10 × u8 in 4.5.
4.6
Client builds from 4.6.0.193 up to, not including, 4.7.0.296. Patch notes: V4.6.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.6.0.193 | 11 | 0 | 3 | 4f1d169 | 2026-10-22 |
| 4.6.0.204 | 11 | 0 | 5 | 63b6eaf | 2026-10-19 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, CampMarker, FloatingTextOnMap, InventorySnapshotOnMap, RegionMoved, Situation, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.
Every message of this range (268)
Against 4.5
Where a build from 4.6.0.193 up to, not including, 4.7.0.296 differs from one from 4.5.0.260 up to, not including, 4.6.0.193. Anything not named here is the same in both.
In 4.6, not in 4.5
| Message | Sent by | Command | What it does |
|---|---|---|---|
CharacterPreload | server | 137 on events | Have a character and a skin of it loaded ahead of need |
Laid out differently
ClientEvent(vectors: altar-captured-on-4-6, altar-captured-watched-on-4-6, baron-killed-on-4-6, baron-killed-watched-on-4-6, baron-stolen-on-4-6, buff-on-4-6, consumable-bought-on-4-6, critical-strike-on-4-6, crowd-control-on-4-6, damage-dealt-on-4-6, damage-taken-on-4-6, death-assist-on-4-6, died-on-4-6, dragon-killed-on-4-6, dragon-killed-watched-on-4-6, dragon-stolen-on-4-6, gold-earned-on-4-6, gold-spent-on-4-6, heal-cast-on-4-6, heal-on-4-6, item-bought-on-4-6, item-callout-on-4-6, item-changed-on-4-6, item-removed-on-4-6, item-sold-on-4-6, item-substituted-on-4-6, killing-spree-on-4-6, minion-killed-on-4-6, monster-killed-on-4-6, one-on-4-6, removed-on-4-6, spawned-on-4-6, spider-killed-on-4-6, spider-killed-watched-on-4-6, turret-damaged-on-4-6, turret-died-on-4-6, undo-changed-on-4-6)eventtakes 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemCallout, 91 itemChanged, 92 undoChanged, 93 itemSubstituted, 112 minionsSpawned, 113 welcome, 114 startNoticeTwo, 115 startNoticeThree, 119 scoreboardOpened, 144 dragonKilled, 145 dragonKilledWatched, 146 dragonStolen, 147 baronKilled, 148 baronKilledWatched, 149 baronStolen, 150 spiderKilled, 151 spiderKilledWatched, 152 altarCaptured, 153 altarCapturedWatched, 154 wardPlaced, 155 wardKilled in 4.6 and not in 4.5.eventtakes 29 inhibitorKilled, 30 inhibitorDied, 31 inhibitorRespawningSoon, 34 turretKilled, 35 turretDied, 36 turretDamaged, 37 minionKilled, 38 minionDenied, 39 monsterKilled, 40 largeMonsterKilled, 41 redBuffTaken, 42 blueBuffTaken, 43 nexusKilled, 44 nexusDied, 45 heal, 46 healCast, 47 buff, 48 crowdControl, 49 killingSpree, 56 killDuringSpree, 63 doubleKillDuringSpree, 64 tripleKillDuringSpree, 65 quadraKillDuringSpree, 68 deathAssist, 69 playerQuit, 70 playerLeft, 71 playerReconnected, 86 itemBought, 87 itemSold, 88 itemRemoved, 89 itemCallout, 90 itemChanged, 91 undoChanged, 92 itemSubstituted, 111 minionsSpawned, 112 welcome, 113 startNoticeTwo, 114 startNoticeThree, 118 scoreboardOpened, 143 dragonKilled, 144 dragonKilledWatched, 145 dragonStolen, 146 baronKilled, 147 baronKilledWatched, 148 baronStolen, 149 spiderKilled, 150 spiderKilledWatched, 151 altarCaptured, 152 altarCapturedWatched, 153 wardPlaced, 154 wardKilled in 4.5 and not in 4.6.valueis present when event = 25 or 86 or 87 or 88 or 90 or 91 or 151 or 152 in 4.5, and present when event = 25 or 87 or 88 or 89 or 91 or 92 or 152 or 153 in 4.6.spreeis present when event = 49 in 4.5, and present when event = 50 in 4.6.healis present when event = 45 or 46 in 4.5, and present when event = 46 or 47 in 4.6.effectis present when event = 47 or 48 in 4.5, and present when event = 48 or 49 in 4.6.buffis present when event = 48 in 4.5, and present when event = 49 in 4.6.assistis present when event = 68 in 4.5, and present when event = 69 in 4.6.killis present when event = 1 or 2 or 35 or 36 or 37 or 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 in 4.5, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.6.monsteris present when event = 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 in 4.5, and present when event = 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.6.calloutis present when event = 89 in 4.5, and present when event = 90 in 4.6.substitutionis present when event = 92 in 4.5, and present when event = 93 in 4.6.
DeathHistory(vectors: one-on-4-6)entries[].eventtakes 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemCallout, 91 itemChanged, 92 undoChanged, 93 itemSubstituted, 112 minionsSpawned, 113 welcome, 114 startNoticeTwo, 115 startNoticeThree, 119 scoreboardOpened, 144 dragonKilled, 145 dragonKilledWatched, 146 dragonStolen, 147 baronKilled, 148 baronKilledWatched, 149 baronStolen, 150 spiderKilled, 151 spiderKilledWatched, 152 altarCaptured, 153 altarCapturedWatched, 154 wardPlaced, 155 wardKilled in 4.6 and not in 4.5.entries[].eventtakes 29 inhibitorKilled, 30 inhibitorDied, 31 inhibitorRespawningSoon, 34 turretKilled, 35 turretDied, 36 turretDamaged, 37 minionKilled, 38 minionDenied, 39 monsterKilled, 40 largeMonsterKilled, 41 redBuffTaken, 42 blueBuffTaken, 43 nexusKilled, 44 nexusDied, 45 heal, 46 healCast, 47 buff, 48 crowdControl, 49 killingSpree, 56 killDuringSpree, 63 doubleKillDuringSpree, 64 tripleKillDuringSpree, 65 quadraKillDuringSpree, 68 deathAssist, 69 playerQuit, 70 playerLeft, 71 playerReconnected, 86 itemBought, 87 itemSold, 88 itemRemoved, 89 itemCallout, 90 itemChanged, 91 undoChanged, 92 itemSubstituted, 111 minionsSpawned, 112 welcome, 113 startNoticeTwo, 114 startNoticeThree, 118 scoreboardOpened, 143 dragonKilled, 144 dragonKilledWatched, 145 dragonStolen, 146 baronKilled, 147 baronKilledWatched, 148 baronStolen, 149 spiderKilled, 150 spiderKilledWatched, 151 altarCaptured, 152 altarCapturedWatched, 153 wardPlaced, 154 wardKilled in 4.5 and not in 4.6.entries[].valueis present when event = 25 or 86 or 87 or 88 or 90 or 91 or 151 or 152 in 4.5, and present when event = 25 or 87 or 88 or 89 or 91 or 92 or 152 or 153 in 4.6.entries[].spreeis present when event = 49 in 4.5, and present when event = 50 in 4.6.entries[].healis present when event = 45 or 46 in 4.5, and present when event = 46 or 47 in 4.6.entries[].effectis present when event = 47 or 48 in 4.5, and present when event = 48 or 49 in 4.6.entries[].buffis present when event = 48 in 4.5, and present when event = 49 in 4.6.entries[].assistis present when event = 68 in 4.5, and present when event = 69 in 4.6.entries[].killis present when event = 1 or 2 or 35 or 36 or 37 or 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 in 4.5, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.6.entries[].monsteris present when event = 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 in 4.5, and present when event = 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.6.entries[].calloutis present when event = 89 in 4.5, and present when event = 90 in 4.6.entries[].substitutionis present when event = 92 in 4.5, and present when event = 93 in 4.6.
VersionSync(vectors: one-on-4-6)reportingMessagesis 10 × u8 in 4.5 and 11 × u8 in 4.6.
WorldEvent(vectors: a-third-on-4-6, altar-captured-on-4-6, altar-captured-watched-on-4-6, another-on-4-6, baron-killed-on-4-6, baron-killed-watched-on-4-6, baron-stolen-on-4-6, buff-on-4-6, consumable-bought-on-4-6, critical-strike-on-4-6, crowd-control-on-4-6, damage-dealt-on-4-6, damage-taken-on-4-6, death-assist-on-4-6, died-on-4-6, dragon-killed-on-4-6, dragon-killed-watched-on-4-6, dragon-stolen-on-4-6, gold-earned-on-4-6, gold-spent-on-4-6, heal-cast-on-4-6, heal-on-4-6, inhibitor-died-on-4-6, item-bought-on-4-6, item-callout-on-4-6, item-changed-on-4-6, item-removed-on-4-6, item-sold-on-4-6, item-substituted-on-4-6, killing-spree-on-4-6, minion-killed-on-4-6, monster-killed-on-4-6, one-on-4-6, removed-on-4-6, spawned-on-4-6, spider-killed-on-4-6, spider-killed-watched-on-4-6, start-notice-three-on-4-6, start-notice-two-on-4-6, turret-damaged-on-4-6, turret-died-on-4-6, undo-changed-on-4-6, welcome-on-4-6)eventtakes 30 inhibitorKilled, 31 inhibitorDied, 32 inhibitorRespawningSoon, 35 turretKilled, 36 turretDied, 37 turretDamaged, 38 minionKilled, 39 minionDenied, 40 monsterKilled, 41 largeMonsterKilled, 42 redBuffTaken, 43 blueBuffTaken, 44 nexusKilled, 45 nexusDied, 46 heal, 47 healCast, 48 buff, 49 crowdControl, 50 killingSpree, 57 killDuringSpree, 64 doubleKillDuringSpree, 65 tripleKillDuringSpree, 66 quadraKillDuringSpree, 69 deathAssist, 70 playerQuit, 71 playerLeft, 72 playerReconnected, 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemCallout, 91 itemChanged, 92 undoChanged, 93 itemSubstituted, 112 minionsSpawned, 113 welcome, 114 startNoticeTwo, 115 startNoticeThree, 119 scoreboardOpened, 121 nexusCrystalStarted, 144 dragonKilled, 145 dragonKilledWatched, 146 dragonStolen, 147 baronKilled, 148 baronKilledWatched, 149 baronStolen, 150 spiderKilled, 151 spiderKilledWatched, 152 altarCaptured, 153 altarCapturedWatched, 154 wardPlaced, 155 wardKilled in 4.6 and not in 4.5.eventtakes 29 inhibitorKilled, 30 inhibitorDied, 31 inhibitorRespawningSoon, 34 turretKilled, 35 turretDied, 36 turretDamaged, 37 minionKilled, 38 minionDenied, 39 monsterKilled, 40 largeMonsterKilled, 41 redBuffTaken, 42 blueBuffTaken, 43 nexusKilled, 44 nexusDied, 45 heal, 46 healCast, 47 buff, 48 crowdControl, 49 killingSpree, 56 killDuringSpree, 63 doubleKillDuringSpree, 64 tripleKillDuringSpree, 65 quadraKillDuringSpree, 68 deathAssist, 69 playerQuit, 70 playerLeft, 71 playerReconnected, 86 itemBought, 87 itemSold, 88 itemRemoved, 89 itemCallout, 90 itemChanged, 91 undoChanged, 92 itemSubstituted, 111 minionsSpawned, 112 welcome, 113 startNoticeTwo, 114 startNoticeThree, 118 scoreboardOpened, 120 nexusCrystalStarted, 143 dragonKilled, 144 dragonKilledWatched, 145 dragonStolen, 146 baronKilled, 147 baronKilledWatched, 148 baronStolen, 149 spiderKilled, 150 spiderKilledWatched, 151 altarCaptured, 152 altarCapturedWatched, 153 wardPlaced, 154 wardKilled in 4.5 and not in 4.6.valueis present when event = 25 or 86 or 87 or 88 or 90 or 91 or 151 or 152 in 4.5, and present when event = 25 or 87 or 88 or 89 or 91 or 92 or 152 or 153 in 4.6.spreeis present when event = 49 in 4.5, and present when event = 50 in 4.6.healis present when event = 45 or 46 in 4.5, and present when event = 46 or 47 in 4.6.effectis present when event = 47 or 48 in 4.5, and present when event = 48 or 49 in 4.6.buffis present when event = 48 in 4.5, and present when event = 49 in 4.6.assistis present when event = 68 in 4.5, and present when event = 69 in 4.6.killis present when event = 1 or 2 or 35 or 36 or 37 or 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 in 4.5, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.6.monsteris present when event = 39 or 143 or 144 or 145 or 146 or 147 or 148 or 149 or 150 in 4.5, and present when event = 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.6.calloutis present when event = 89 in 4.5, and present when event = 90 in 4.6.substitutionis present when event = 92 in 4.5, and present when event = 93 in 4.6.mapis present when event = 112 or 113 or 114 or 115 or 116 in 4.5, and present when event = 113 or 114 or 115 or 116 or 117 in 4.6.inhibitorGoldis present when event = 30 in 4.5, and present when event = 31 in 4.6.inhibitorAssistCountis present when event = 30 in 4.5, and present when event = 31 in 4.6.inhibitorAssistsis present when event = 30 in 4.5, and present when event = 31 in 4.6.
4.7
Client builds from 4.7.0.296 up to, not including, 4.8.0.189. Patch notes: V4.7.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.7.0.296 | 11 | 0 | 3 | 42edced | 2026-10-22 |
| 4.7.0.298 | 11 | 0 | 5 | 63b6eaf | 2026-10-19 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, CampMarker, FloatingTextOnMap, InventorySnapshotOnMap, RegionMoved, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.
Every message of this range (269)
Against 4.6
Where a build from 4.7.0.296 up to, not including, 4.8.0.189 differs from one from 4.6.0.193 up to, not including, 4.7.0.296. Anything not named here is the same in both.
In 4.7, not in 4.6
| Message | Sent by | Command | What it does |
|---|---|---|---|
Situation | server | 289 on events | Tell a champion something has come about |
Laid out differently
InventorySnapshot(vectors: one-on-4-7)itemsis 9 × record in 4.6 and 10 × record in 4.7.cooldownsis 9 × f32 in 4.6 and 10 × f32 in 4.7.
SpellNumbersentriesis count in entryCount × record in 4.6 and count in entryCount × SpellNumberSet in 4.7.entries[].unitis in 4.6 and not in 4.7.entries[].slotis in 4.6 and not in 4.7.entries[].valuesis in 4.6 and not in 4.7.entries[].hiddenis in 4.6 and not in 4.7.
VersionSync(vectors: one-on-4-7)features.unusedis at bit 24, 8 bits wide, in 4.6 and at bit 23, 9 bits wide, in 4.7.featureshasparticleOptionat bit 23 in 4.6, and not in 4.7.
Structs
SpellNumberSetis in 4.7 and not in 4.6.
Chapters
- In the values chapter, a passage holds for 4.6 and not 4.7: A champion’s own book ends at slot 60.
- In the values chapter, a passage holds for 4.7 and not 4.6: A champion’s own book runs on to slot 62: slot 61 is using an object on the field (see
UseObject), and slot 62 the champion’s passive. - In the values chapter, a passage holds for 4.6 and not 4.7: A champion’s inventory ends at slot 38.
- In the values chapter, a passage holds for 4.7 and not 4.6: A champion’s inventory ends at slot 39.
4.8
Client builds from 4.8.0.189 up to, not including, 4.9.0.239. Patch notes: V4.8.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.8.0.189 | 11 | 0 | 3 | a6e9f3a | 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: AscendedUnit, CampMarker, FloatingTextOnMap, InventorySnapshotOnMap, RegionMoved, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.
Every message of this range (269)
Against 4.7
Where a build from 4.8.0.189 up to, not including, 4.9.0.239 differs from one from 4.7.0.296 up to, not including, 4.8.0.189. Anything not named here is the same in both.
Laid out differently
QuestUpdatedrewardis in 4.8 (text, 128 bytes), aftertooltip, and not in 4.7.flagshassecondat bit 1 in 4.8, and not in 4.7.flags.unusedis at bit 1, 7 bits wide, in 4.7 and at bit 2, 6 bits wide, in 4.8.
StatsRequestappearanceis in 4.8 (u32), aftermoduleOne, and not in 4.7.appearanceCheckis in 4.8 (u32), afterappearance, and not in 4.7.
VersionSync(vectors: one-on-4-8)featuresnames bit 15bit15in 4.7 andskinParticlesin 4.8.features.shopUndois at bit 8 in 4.7 and at bit 7 in 4.8.features.recommendedPagesis at bit 9 in 4.7 and at bit 8 in 4.8.features.skillshotOutlineis at bit 10 in 4.7 and at bit 9 in 4.8.features.championIndicatoris at bit 11 in 4.7 and at bit 10 in 4.8.features.altBountyis at bit 12 in 4.7 and at bit 11 in 4.8.features.waveOrderis at bit 13 in 4.7 and at bit 12 in 4.8.features.turretRangeis at bit 14 in 4.7 and at bit 13 in 4.8.featureshasbit14at bit 14 in 4.8, and not in 4.7.features.hardwareMetricsis at bit 18 in 4.7 and at bit 17 in 4.8.featureshasbit18at bit 18 in 4.8, and not in 4.7.features.lagMetricsis at bit 20 in 4.7 and at bit 19 in 4.8.features.eventReportsis at bit 21 in 4.7 and at bit 20 in 4.8.features.logServerAddressis at bit 22 in 4.7 and at bit 21 in 4.8.features.unusedis at bit 23, 9 bits wide, in 4.7 and at bit 22, 10 bits wide, in 4.8.featureshasaltControlsat bit 7 in 4.7, and not in 4.8.featureshasnetworkMetricsat bit 17 in 4.7, and not in 4.8.featureshasbit19at bit 19 in 4.7, and not in 4.8.reportingMessagesis 11 × u8 in 4.7 and 13 × u8 in 4.8.
4.9
Client builds from 4.9.0.239 up to, not including, 4.10.0.369. Patch notes: V4.9.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.9.0.239 | 11 | 0 | 3 | a94e534 | 2026-10-22 |
| 4.9.0.253 | 11 | 0 | 5 | 63b6eaf | 2026-10-19 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, FloatingTextOnMap, InventorySnapshotOnMap, RegionMoved, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.
Every message of this range (269)
Against 4.8
Where a build from 4.9.0.239 up to, not including, 4.10.0.369 differs from one from 4.8.0.189 up to, not including, 4.9.0.239. Anything not named here is the same in both.
In 4.9, not in 4.8
| Message | Sent by | Command | What it does |
|---|---|---|---|
CampMarker | server | 290 on events | Place a camp on the map and say how it is drawn |
In 4.8, not in 4.9
| Message | Sent by | Command it had |
|---|---|---|
FacePosition | client | 79 on requests |
Laid out differently
CampClearedtimerKindis in 4.9 (i32), afterdoes, and not in 4.8.returnsAtis in 4.9 (f32), aftertimerKind, and not in 4.8.
CampOpenedtimerKindis in 4.9 (i32), aftercamp, and not in 4.8.campIconis in 4.8 and not in 4.9.
CreateNeutral(vectors: inactive-on-4-9)spawnAtis in 4.9 (f32), afterspawnDuration, and not in 4.8.campIconis in 4.8 and not in 4.9.spawnElapsedis in 4.8 and not in 4.9.
VersionSync(vectors: one-on-4-9)featuresis 4-byte bits in 4.8 and 8-byte bits in 4.9.featuresnames bit 16bit16in 4.8 andnetworkMetricsin 4.9.features.lagMetricsis at bit 19 in 4.8 and at bit 18 in 4.9.features.eventReportsis at bit 20 in 4.8 and at bit 19 in 4.9.features.logServerAddressis at bit 21 in 4.8 and at bit 20 in 4.9.featureshasbit21at bit 21 in 4.9, and not in 4.8.featureshasbit22at bit 22 in 4.9, and not in 4.8.featureshastracerouteat bit 23 in 4.9, and not in 4.8.features.unusedis at bit 22, 10 bits wide, in 4.8 and at bit 24, 32 bits wide, in 4.9.featureshasunusedHighat bit 56 in 4.9, and not in 4.8.featureshasbit18at bit 18 in 4.8, and not in 4.9.reportingMessagesis 13 × u8 in 4.8 and 14 × u8 in 4.9.
4.10
Client builds from 4.10.0.369 up to, not including, 4.11.0.386. Patch notes: V4.10.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.10.0.369 | 11 | 0 | 3 | 2126c0c | 2026-10-22 |
| 4.10.0.379 | 11 | 0 | 5 | 63b6eaf | 2026-10-19 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AscendedUnit, FloatingTextOnMap, InventorySnapshotOnMap, MissileReport, RegionMoved, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.
Every message of this range (267)
Against 4.9
Where a build from 4.10.0.369 up to, not including, 4.11.0.386 differs from one from 4.9.0.239 up to, not including, 4.10.0.369. Anything not named here is the same in both.
In 4.9, not in 4.10
| Message | Sent by | Command it had |
|---|---|---|
MissileReport | client | 58 on requests |
UnitSpoke | client | 24 on requests |
Laid out differently
VersionSync(vectors: one-on-4-10)featuresnames bit 22bit22in 4.9 andjungleTimersin 4.10.
4.11
Client builds from 4.11.0.386 up to, not including, 4.12.0.356. Patch notes: V4.11.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.11.0.386 | 11 | 0 | 3 | 4eadc39 | 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: AscendedUnit, FloatingTextOnMap, InventorySnapshotOnMap, MissileCourse, MissileReport, SpawnTurret, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.
Every message of this range (267)
Against 4.10
Where a build from 4.11.0.386 up to, not including, 4.12.0.356 differs from one from 4.10.0.369 up to, not including, 4.11.0.386. Anything not named here is the same in both.
In 4.11, not in 4.10
| Message | Sent by | Command | What it does |
|---|---|---|---|
RegionMoved | server | 36 on events | Move a region of sight, keeping all else about it |
In 4.10, not in 4.11
| Message | Sent by | Command it had |
|---|---|---|
MissileCourse | server | 59 on events |
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
Laid out differently
CapturePointChanged- Its command is 210 in 4.10 and 211 in 4.11.
resourceKindtakes 8 gnarFury, 9 ferocity, 10 bloodWell, 11 wind, 12 other in 4.11 and not in 4.10.resourceKindtakes 8 ferocity, 9 bloodWell, 10 wind, 11 other in 4.10 and not in 4.11.
InventorySnapshotmaxCooldownsis in 4.11 (10 × f32), aftercooldowns, and not in 4.10.
MatchIdentity(vectors: one-on-4-11)- Its command is 145 in 4.10 and 146 in 4.11.
labelis in 4.11 (text, 32 bytes), aftergame, and not in 4.10.nameis in 4.10 and not in 4.11.
MusicCue- Its command is 219 in 4.10 and 220 in 4.11.
cuetakes 4 trigger in 4.11 and not in 4.10.
ObjectiveShown(vectors: one-on-4-11)- Its command is 53 in 4.10 and 54 in 4.11.
optionis in 4.11 (1-byte bits), aftertext, and not in 4.10.
ResourceKindChangedkindtakes 8 gnarFury, 9 ferocity, 10 bloodWell, 11 wind, 12 other in 4.11 and not in 4.10.kindtakes 8 ferocity, 9 bloodWell, 10 wind, 11 other in 4.10 and not in 4.11.
4.12
Client builds from 4.12.0.356 up to, not including, 4.13.0.265. Patch notes: V4.12.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.12.0.356 | 11 | 0 | 3 | 741f51d | 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: AscendedUnit, FloatingTextOnMap, InventorySnapshotOnMap, MissileCourse, MissileReport, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.
Every message of this range (268)
Against 4.11
Where a build from 4.12.0.356 up to, not including, 4.13.0.265 differs from one from 4.11.0.386 up to, not including, 4.12.0.356. Anything not named here is the same in both.
In 4.12, not in 4.11
| Message | Sent by | Command | What it does |
|---|---|---|---|
SpawnTurret | server | 291 on events | Create a turret of its own choosing |
Laid out differently
ClientEvent(vectors: altar-captured-on-4-12, altar-captured-watched-on-4-12, baron-killed-on-4-12, baron-killed-watched-on-4-12, baron-stolen-on-4-12, buff-on-4-12, consumable-bought-on-4-12, critical-strike-on-4-12, crowd-control-on-4-12, damage-dealt-on-4-12, damage-taken-on-4-12, death-assist-on-4-12, died-on-4-12, dragon-killed-on-4-12, dragon-killed-watched-on-4-12, dragon-stolen-on-4-12, gold-earned-on-4-12, gold-spent-on-4-12, heal-cast-on-4-12, heal-on-4-12, item-bought-on-4-12, item-callout-on-4-12, item-changed-on-4-12, item-removed-on-4-12, item-sold-on-4-12, item-substituted-on-4-12, killing-spree-on-4-12, minion-killed-on-4-12, monster-killed-on-4-12, one-on-4-12, removed-on-4-12, spawned-on-4-12, spider-killed-on-4-12, spider-killed-watched-on-4-12, turret-damaged-on-4-12, turret-died-on-4-12, undo-changed-on-4-12)eventtakes 145 dragonKilled, 146 dragonKilledWatched, 147 dragonStolen, 148 baronKilled, 149 baronKilledWatched, 150 baronStolen, 151 spiderKilled, 152 spiderKilledWatched, 153 altarCaptured, 154 altarCapturedWatched, 155 wardPlaced, 156 wardKilled in 4.12 and not in 4.11.eventtakes 144 dragonKilled, 145 dragonKilledWatched, 146 dragonStolen, 147 baronKilled, 148 baronKilledWatched, 149 baronStolen, 150 spiderKilled, 151 spiderKilledWatched, 152 altarCaptured, 153 altarCapturedWatched, 154 wardPlaced, 155 wardKilled in 4.11 and not in 4.12.valueis present when event = 25 or 87 or 88 or 89 or 91 or 92 or 152 or 153 in 4.11, and present when event = 25 or 87 or 88 or 89 or 91 or 92 or 153 or 154 in 4.12.killis present when event = 1 or 2 or 36 or 37 or 38 or 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.11, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152 in 4.12.monsteris present when event = 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.11, and present when event = 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152 in 4.12.
CreateNeutral(vectors: inactive-on-4-12)behaviouris in 4.12 (u8), afterspawnAt, and not in 4.11.
DeathHistory(vectors: one-on-4-12)entries[].eventtakes 145 dragonKilled, 146 dragonKilledWatched, 147 dragonStolen, 148 baronKilled, 149 baronKilledWatched, 150 baronStolen, 151 spiderKilled, 152 spiderKilledWatched, 153 altarCaptured, 154 altarCapturedWatched, 155 wardPlaced, 156 wardKilled in 4.12 and not in 4.11.entries[].eventtakes 144 dragonKilled, 145 dragonKilledWatched, 146 dragonStolen, 147 baronKilled, 148 baronKilledWatched, 149 baronStolen, 150 spiderKilled, 151 spiderKilledWatched, 152 altarCaptured, 153 altarCapturedWatched, 154 wardPlaced, 155 wardKilled in 4.11 and not in 4.12.entries[].valueis present when event = 25 or 87 or 88 or 89 or 91 or 92 or 152 or 153 in 4.11, and present when event = 25 or 87 or 88 or 89 or 91 or 92 or 153 or 154 in 4.12.entries[].killis present when event = 1 or 2 or 36 or 37 or 38 or 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.11, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152 in 4.12.entries[].monsteris present when event = 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.11, and present when event = 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152 in 4.12.
MatchIdentitynameis in 4.12 (text, 128 bytes), aftergame, and not in 4.11.labelis in 4.11 and not in 4.12.platformis in 4.11 and not in 4.12.
StatsRequestmoduleTwois in 4.12 (u32), aftermoduleOne, and not in 4.11.moduleThreeis in 4.12 (u32), aftermoduleTwo, and not in 4.11.
VersionSync(vectors: one-on-4-12)platformis in 4.12 (text, 32 bytes), aftermode, and not in 4.11.featuresnames bit 8recommendedPagesin 4.11 andbit8in 4.12.features.jungleTimersis at bit 22 in 4.11 and at bit 21 in 4.12.features.tracerouteis at bit 23 in 4.11 and at bit 22 in 4.12.features.unusedis at bit 24 in 4.11 and at bit 23 in 4.12.features.unusedHighis at bit 56, 8 bits wide, in 4.11 and at bit 55, 9 bits wide, in 4.12.featureshasbit21at bit 21 in 4.11, and not in 4.12.reportingMessagesis 14 × u8 in 4.11 and 18 × u8 in 4.12.
WorldEvent(vectors: a-third-on-4-12, altar-captured-on-4-12, altar-captured-watched-on-4-12, another-on-4-12, baron-killed-on-4-12, baron-killed-watched-on-4-12, baron-stolen-on-4-12, buff-on-4-12, consumable-bought-on-4-12, critical-strike-on-4-12, crowd-control-on-4-12, damage-dealt-on-4-12, damage-taken-on-4-12, death-assist-on-4-12, died-on-4-12, dragon-killed-on-4-12, dragon-killed-watched-on-4-12, dragon-stolen-on-4-12, gold-earned-on-4-12, gold-spent-on-4-12, heal-cast-on-4-12, heal-on-4-12, inhibitor-died-on-4-12, item-bought-on-4-12, item-callout-on-4-12, item-changed-on-4-12, item-removed-on-4-12, item-sold-on-4-12, item-substituted-on-4-12, killing-spree-on-4-12, minion-killed-on-4-12, monster-killed-on-4-12, one-on-4-12, removed-on-4-12, spawned-on-4-12, spider-killed-on-4-12, spider-killed-watched-on-4-12, start-notice-three-on-4-12, start-notice-two-on-4-12, turret-damaged-on-4-12, turret-died-on-4-12, undo-changed-on-4-12, welcome-on-4-12)eventtakes 145 dragonKilled, 146 dragonKilledWatched, 147 dragonStolen, 148 baronKilled, 149 baronKilledWatched, 150 baronStolen, 151 spiderKilled, 152 spiderKilledWatched, 153 altarCaptured, 154 altarCapturedWatched, 155 wardPlaced, 156 wardKilled in 4.12 and not in 4.11.eventtakes 144 dragonKilled, 145 dragonKilledWatched, 146 dragonStolen, 147 baronKilled, 148 baronKilledWatched, 149 baronStolen, 150 spiderKilled, 151 spiderKilledWatched, 152 altarCaptured, 153 altarCapturedWatched, 154 wardPlaced, 155 wardKilled in 4.11 and not in 4.12.valueis present when event = 25 or 87 or 88 or 89 or 91 or 92 or 152 or 153 in 4.11, and present when event = 25 or 87 or 88 or 89 or 91 or 92 or 153 or 154 in 4.12.killis present when event = 1 or 2 or 36 or 37 or 38 or 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.11, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152 in 4.12.monsteris present when event = 40 or 144 or 145 or 146 or 147 or 148 or 149 or 150 or 151 in 4.11, and present when event = 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152 in 4.12.
4.13
Client builds from 4.13.0.265 up to, not including, 4.14.0.362. Patch notes: V4.13.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.13.0.265 | 11 | 0 | 3 | 745b4d9 | 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: AscendedUnit, FloatingTextOnMap, InventorySnapshotOnMap, MissileCourse, MissileReport, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.
Every message of this range (268)
Against 4.12
Where a build from 4.13.0.265 up to, not including, 4.14.0.362 differs from one from 4.12.0.356 up to, not including, 4.13.0.265. Anything not named here is the same in both.
Laid out differently
ClientEvent(vectors: altar-captured-on-4-13, altar-captured-watched-on-4-13, baron-killed-on-4-13, baron-killed-watched-on-4-13, baron-stolen-on-4-13, buff-on-4-13, consumable-bought-on-4-13, critical-strike-on-4-13, crowd-control-on-4-13, damage-dealt-on-4-13, damage-taken-on-4-13, death-assist-on-4-13, died-on-4-13, dragon-killed-on-4-13, dragon-killed-watched-on-4-13, dragon-stolen-on-4-13, gold-earned-on-4-13, gold-spent-on-4-13, heal-cast-on-4-13, heal-on-4-13, item-bought-on-4-13, item-callout-on-4-13, item-changed-on-4-13, item-removed-on-4-13, item-sold-on-4-13, item-substituted-on-4-13, item-undone-on-4-13, killing-spree-on-4-13, minion-killed-on-4-13, monster-killed-on-4-13, one-on-4-13, removed-on-4-13, spawned-on-4-13, spider-killed-on-4-13, spider-killed-watched-on-4-13, turret-damaged-on-4-13, turret-died-on-4-13, undo-changed-on-4-13)eventtakes 90 itemUndone, 91 itemCallout, 92 itemChanged, 93 undoChanged, 94 itemSubstituted, 113 minionsSpawned, 114 welcome, 115 startNoticeTwo, 116 startNoticeThree, 120 scoreboardOpened, 146 dragonKilled, 147 dragonKilledWatched, 148 dragonStolen, 149 baronKilled, 150 baronKilledWatched, 151 baronStolen, 152 spiderKilled, 153 spiderKilledWatched, 154 altarCaptured, 155 altarCapturedWatched, 156 wardPlaced, 157 wardKilled in 4.13 and not in 4.12.eventtakes 90 itemCallout, 91 itemChanged, 92 undoChanged, 93 itemSubstituted, 112 minionsSpawned, 113 welcome, 114 startNoticeTwo, 115 startNoticeThree, 119 scoreboardOpened, 145 dragonKilled, 146 dragonKilledWatched, 147 dragonStolen, 148 baronKilled, 149 baronKilledWatched, 150 baronStolen, 151 spiderKilled, 152 spiderKilledWatched, 153 altarCaptured, 154 altarCapturedWatched, 155 wardPlaced, 156 wardKilled in 4.12 and not in 4.13.valueis present when event = 25 or 87 or 88 or 89 or 91 or 92 or 153 or 154 in 4.12, and present when event = 25 or 87 or 88 or 89 or 92 or 93 or 154 or 155 in 4.13.killis present when event = 1 or 2 or 36 or 37 or 38 or 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152 in 4.12, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13.monsteris present when event = 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152 in 4.12, and present when event = 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13.calloutis present when event = 90 in 4.12, and present when event = 91 in 4.13.substitutionis present when event = 93 in 4.12, and present when event = 94 in 4.13.undois in 4.13 (record), aftersubstitution.substitute, and not in 4.12.
ClientReadymoduleOneis in 4.13 (u32) at the start, and not in 4.12.moduleTwois in 4.13 (u32), aftersettings, and not in 4.12.moduleThreeis in 4.13 (u32), aftermoduleTwo, and not in 4.12.
DeathHistory(vectors: one-on-4-13)entries[].eventtakes 90 itemUndone, 91 itemCallout, 92 itemChanged, 93 undoChanged, 94 itemSubstituted, 113 minionsSpawned, 114 welcome, 115 startNoticeTwo, 116 startNoticeThree, 120 scoreboardOpened, 146 dragonKilled, 147 dragonKilledWatched, 148 dragonStolen, 149 baronKilled, 150 baronKilledWatched, 151 baronStolen, 152 spiderKilled, 153 spiderKilledWatched, 154 altarCaptured, 155 altarCapturedWatched, 156 wardPlaced, 157 wardKilled in 4.13 and not in 4.12.entries[].eventtakes 90 itemCallout, 91 itemChanged, 92 undoChanged, 93 itemSubstituted, 112 minionsSpawned, 113 welcome, 114 startNoticeTwo, 115 startNoticeThree, 119 scoreboardOpened, 145 dragonKilled, 146 dragonKilledWatched, 147 dragonStolen, 148 baronKilled, 149 baronKilledWatched, 150 baronStolen, 151 spiderKilled, 152 spiderKilledWatched, 153 altarCaptured, 154 altarCapturedWatched, 155 wardPlaced, 156 wardKilled in 4.12 and not in 4.13.entries[].valueis present when event = 25 or 87 or 88 or 89 or 91 or 92 or 153 or 154 in 4.12, and present when event = 25 or 87 or 88 or 89 or 92 or 93 or 154 or 155 in 4.13.entries[].killis present when event = 1 or 2 or 36 or 37 or 38 or 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152 in 4.12, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13.entries[].monsteris present when event = 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152 in 4.12, and present when event = 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13.entries[].calloutis present when event = 90 in 4.12, and present when event = 91 in 4.13.entries[].substitutionis present when event = 93 in 4.12, and present when event = 94 in 4.13.entries[].undois in 4.13 (record), afterentries[].substitution.substitute, and not in 4.12.
ObjectiveShownoptionis in 4.12 and not in 4.13.
PlayAnimationspeedis in 4.13 (f32), afterstartProgress, and not in 4.12.
ShopEnabledflagshasforceat bit 1 in 4.13, and not in 4.12.flags.unusedis at bit 1, 7 bits wide, in 4.12 and at bit 2, 6 bits wide, in 4.13.
WorldEvent(vectors: a-third-on-4-13, altar-captured-on-4-13, altar-captured-watched-on-4-13, another-on-4-13, baron-killed-on-4-13, baron-killed-watched-on-4-13, baron-stolen-on-4-13, buff-on-4-13, consumable-bought-on-4-13, critical-strike-on-4-13, crowd-control-on-4-13, damage-dealt-on-4-13, damage-taken-on-4-13, death-assist-on-4-13, died-on-4-13, dragon-killed-on-4-13, dragon-killed-watched-on-4-13, dragon-stolen-on-4-13, gold-earned-on-4-13, gold-spent-on-4-13, heal-cast-on-4-13, heal-on-4-13, inhibitor-died-on-4-13, item-bought-on-4-13, item-callout-on-4-13, item-changed-on-4-13, item-removed-on-4-13, item-sold-on-4-13, item-substituted-on-4-13, item-undone-on-4-13, killing-spree-on-4-13, minion-killed-on-4-13, monster-killed-on-4-13, one-on-4-13, removed-on-4-13, spawned-on-4-13, spider-killed-on-4-13, spider-killed-watched-on-4-13, start-notice-three-on-4-13, start-notice-two-on-4-13, turret-damaged-on-4-13, turret-died-on-4-13, undo-changed-on-4-13, welcome-on-4-13)eventtakes 90 itemUndone, 91 itemCallout, 92 itemChanged, 93 undoChanged, 94 itemSubstituted, 113 minionsSpawned, 114 welcome, 115 startNoticeTwo, 116 startNoticeThree, 120 scoreboardOpened, 122 nexusCrystalStarted, 146 dragonKilled, 147 dragonKilledWatched, 148 dragonStolen, 149 baronKilled, 150 baronKilledWatched, 151 baronStolen, 152 spiderKilled, 153 spiderKilledWatched, 154 altarCaptured, 155 altarCapturedWatched, 156 wardPlaced, 157 wardKilled in 4.13 and not in 4.12.eventtakes 90 itemCallout, 91 itemChanged, 92 undoChanged, 93 itemSubstituted, 112 minionsSpawned, 113 welcome, 114 startNoticeTwo, 115 startNoticeThree, 119 scoreboardOpened, 121 nexusCrystalStarted, 145 dragonKilled, 146 dragonKilledWatched, 147 dragonStolen, 148 baronKilled, 149 baronKilledWatched, 150 baronStolen, 151 spiderKilled, 152 spiderKilledWatched, 153 altarCaptured, 154 altarCapturedWatched, 155 wardPlaced, 156 wardKilled in 4.12 and not in 4.13.valueis present when event = 25 or 87 or 88 or 89 or 91 or 92 or 153 or 154 in 4.12, and present when event = 25 or 87 or 88 or 89 or 92 or 93 or 154 or 155 in 4.13.killis present when event = 1 or 2 or 36 or 37 or 38 or 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152 in 4.12, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13.monsteris present when event = 40 or 145 or 146 or 147 or 148 or 149 or 150 or 151 or 152 in 4.12, and present when event = 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13.calloutis present when event = 90 in 4.12, and present when event = 91 in 4.13.substitutionis present when event = 93 in 4.12, and present when event = 94 in 4.13.undois in 4.13 (record), aftersubstitution.substitute, and not in 4.12.mapis present when event = 113 or 114 or 115 or 116 or 117 in 4.12, and present when event = 114 or 115 or 116 or 117 or 118 in 4.13.
4.14
Client builds from 4.14.0.362 up to, not including, 4.15.0.238. Patch notes: V4.14.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.14.0.362 | 11 | 0 | 3 | 816573d | 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: AscendedUnit, FloatingTextOnMap, InventorySnapshotOnMap, MissileCourse, MissileReport, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.
Every message of this range (268)
Against 4.13
Where a build from 4.14.0.362 up to, not including, 4.15.0.238 differs from one from 4.13.0.265 up to, not including, 4.14.0.362. Anything not named here is the same in both.
Laid out differently
ClientEvent(vectors: altar-captured-on-4-14, altar-captured-watched-on-4-14, baron-killed-on-4-14, baron-killed-watched-on-4-14, baron-stolen-on-4-14, buff-on-4-14, consumable-bought-on-4-14, critical-strike-on-4-14, crowd-control-on-4-14, damage-dealt-on-4-14, damage-taken-on-4-14, death-assist-on-4-14, died-on-4-14, dragon-killed-on-4-14, dragon-killed-watched-on-4-14, dragon-stolen-on-4-14, gold-earned-on-4-14, gold-spent-on-4-14, heal-cast-on-4-14, heal-on-4-14, item-bought-on-4-14, item-callout-on-4-14, item-changed-on-4-14, item-removed-on-4-14, item-sold-on-4-14, item-substituted-on-4-14, item-undone-on-4-14, killing-spree-on-4-14, minion-killed-on-4-14, monster-killed-on-4-14, one-on-4-14, removed-on-4-14, spawned-on-4-14, spider-killed-on-4-14, spider-killed-watched-on-4-14, turret-damaged-on-4-14, turret-died-on-4-14, undo-changed-on-4-14)eventtakes 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 117 minionsSpawned, 118 welcome, 119 startNoticeTwo, 120 startNoticeThree, 124 scoreboardOpened, 150 dragonKilled, 151 dragonKilledWatched, 152 dragonStolen, 153 baronKilled, 154 baronKilledWatched, 155 baronStolen, 156 spiderKilled, 157 spiderKilledWatched, 158 altarCaptured, 159 altarCapturedWatched, 160 wardPlaced, 161 wardKilled in 4.14 and not in 4.13.eventtakes 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemUndone, 91 itemCallout, 92 itemChanged, 93 undoChanged, 94 itemSubstituted, 113 minionsSpawned, 114 welcome, 115 startNoticeTwo, 116 startNoticeThree, 120 scoreboardOpened, 146 dragonKilled, 147 dragonKilledWatched, 148 dragonStolen, 149 baronKilled, 150 baronKilledWatched, 151 baronStolen, 152 spiderKilled, 153 spiderKilledWatched, 154 altarCaptured, 155 altarCapturedWatched, 156 wardPlaced, 157 wardKilled in 4.13 and not in 4.14.valueis present when event = 25 or 87 or 88 or 89 or 92 or 93 or 154 or 155 in 4.13, and present when event = 25 or 91 or 92 or 93 or 96 or 97 or 158 or 159 in 4.14.killis present when event = 1 or 2 or 36 or 37 or 38 or 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.14.monsteris present when event = 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13, and present when event = 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.14.calloutis present when event = 91 in 4.13, and present when event = 95 in 4.14.substitutionis present when event = 94 in 4.13, and present when event = 98 in 4.14.undois present when event = 90 in 4.13, and present when event = 94 in 4.14.
DeathHistory(vectors: one-on-4-14)entries[].eventtakes 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 117 minionsSpawned, 118 welcome, 119 startNoticeTwo, 120 startNoticeThree, 124 scoreboardOpened, 150 dragonKilled, 151 dragonKilledWatched, 152 dragonStolen, 153 baronKilled, 154 baronKilledWatched, 155 baronStolen, 156 spiderKilled, 157 spiderKilledWatched, 158 altarCaptured, 159 altarCapturedWatched, 160 wardPlaced, 161 wardKilled in 4.14 and not in 4.13.entries[].eventtakes 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemUndone, 91 itemCallout, 92 itemChanged, 93 undoChanged, 94 itemSubstituted, 113 minionsSpawned, 114 welcome, 115 startNoticeTwo, 116 startNoticeThree, 120 scoreboardOpened, 146 dragonKilled, 147 dragonKilledWatched, 148 dragonStolen, 149 baronKilled, 150 baronKilledWatched, 151 baronStolen, 152 spiderKilled, 153 spiderKilledWatched, 154 altarCaptured, 155 altarCapturedWatched, 156 wardPlaced, 157 wardKilled in 4.13 and not in 4.14.entries[].valueis present when event = 25 or 87 or 88 or 89 or 92 or 93 or 154 or 155 in 4.13, and present when event = 25 or 91 or 92 or 93 or 96 or 97 or 158 or 159 in 4.14.entries[].killis present when event = 1 or 2 or 36 or 37 or 38 or 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.14.entries[].monsteris present when event = 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13, and present when event = 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.14.entries[].calloutis present when event = 91 in 4.13, and present when event = 95 in 4.14.entries[].substitutionis present when event = 94 in 4.13, and present when event = 98 in 4.14.entries[].undois present when event = 90 in 4.13, and present when event = 94 in 4.14.
MinimapIconborderScriptis in 4.14 (text, 64 bytes), afterborder, and not in 4.13.
StreamChunkdurationis i32 in 4.13 and u32 in 4.14.
UnitTextstyletakes 6 physicalCritical, 8 trueCritical, 9 experience, 10 gold, 11 level, 12 disable, 13 questReceived, 14 questComplete, 15 score, 16 physicalDamage, 17 magicDamage, 18 trueDamage, 19 enemyPhysicalDamage, 20 enemyMagicDamage, 21 enemyTrueDamage, 22 enemyPhysicalCritical, 23 enemyMagicCritical, 24 enemyTrueCritical, 25 countdown, 26 onMyWay, 27 absorbed, 28 debug in 4.14 and not in 4.13.styletakes 6 critical, 8 experience, 9 gold, 10 level, 11 disable, 12 questReceived, 13 questComplete, 14 score, 15 physicalDamage, 16 magicDamage, 17 trueDamage, 18 enemyPhysicalDamage, 19 enemyMagicDamage, 20 enemyTrueDamage, 21 enemyCritical, 22 countdown, 23 onMyWay, 24 absorbed, 25 debug in 4.13 and not in 4.14.
VersionSync(vectors: one-on-4-14)featureshasbit23at bit 23 in 4.14, and not in 4.13.featureshasbit24at bit 24 in 4.14, and not in 4.13.featureshasbit25at bit 25 in 4.14, and not in 4.13.featureshasclockSyncat bit 26 in 4.14, and not in 4.13.features.unusedis at bit 23 in 4.13 and at bit 27 in 4.14.features.unusedHighis at bit 55, 9 bits wide, in 4.13 and at bit 59, 5 bits wide, in 4.14.
WorldEvent(vectors: a-third-on-4-14, altar-captured-on-4-14, altar-captured-watched-on-4-14, another-on-4-14, baron-killed-on-4-14, baron-killed-watched-on-4-14, baron-stolen-on-4-14, buff-on-4-14, consumable-bought-on-4-14, critical-strike-on-4-14, crowd-control-on-4-14, damage-dealt-on-4-14, damage-taken-on-4-14, death-assist-on-4-14, died-on-4-14, dragon-killed-on-4-14, dragon-killed-watched-on-4-14, dragon-stolen-on-4-14, gold-earned-on-4-14, gold-spent-on-4-14, heal-cast-on-4-14, heal-on-4-14, inhibitor-died-on-4-14, item-bought-on-4-14, item-callout-on-4-14, item-changed-on-4-14, item-removed-on-4-14, item-sold-on-4-14, item-substituted-on-4-14, item-undone-on-4-14, killing-spree-on-4-14, minion-killed-on-4-14, monster-killed-on-4-14, one-on-4-14, removed-on-4-14, spawned-on-4-14, spider-killed-on-4-14, spider-killed-watched-on-4-14, start-notice-three-on-4-14, start-notice-two-on-4-14, turret-damaged-on-4-14, turret-died-on-4-14, undo-changed-on-4-14, welcome-on-4-14)eventtakes 91 itemBought, 92 itemSold, 93 itemRemoved, 94 itemUndone, 95 itemCallout, 96 itemChanged, 97 undoChanged, 98 itemSubstituted, 117 minionsSpawned, 118 welcome, 119 startNoticeTwo, 120 startNoticeThree, 124 scoreboardOpened, 126 nexusCrystalStarted, 150 dragonKilled, 151 dragonKilledWatched, 152 dragonStolen, 153 baronKilled, 154 baronKilledWatched, 155 baronStolen, 156 spiderKilled, 157 spiderKilledWatched, 158 altarCaptured, 159 altarCapturedWatched, 160 wardPlaced, 161 wardKilled in 4.14 and not in 4.13.eventtakes 87 itemBought, 88 itemSold, 89 itemRemoved, 90 itemUndone, 91 itemCallout, 92 itemChanged, 93 undoChanged, 94 itemSubstituted, 113 minionsSpawned, 114 welcome, 115 startNoticeTwo, 116 startNoticeThree, 120 scoreboardOpened, 122 nexusCrystalStarted, 146 dragonKilled, 147 dragonKilledWatched, 148 dragonStolen, 149 baronKilled, 150 baronKilledWatched, 151 baronStolen, 152 spiderKilled, 153 spiderKilledWatched, 154 altarCaptured, 155 altarCapturedWatched, 156 wardPlaced, 157 wardKilled in 4.13 and not in 4.14.valueis present when event = 25 or 87 or 88 or 89 or 92 or 93 or 154 or 155 in 4.13, and present when event = 25 or 91 or 92 or 93 or 96 or 97 or 158 or 159 in 4.14.killis present when event = 1 or 2 or 36 or 37 or 38 or 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.14.monsteris present when event = 40 or 146 or 147 or 148 or 149 or 150 or 151 or 152 or 153 in 4.13, and present when event = 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.14.calloutis present when event = 91 in 4.13, and present when event = 95 in 4.14.substitutionis present when event = 94 in 4.13, and present when event = 98 in 4.14.undois present when event = 90 in 4.13, and present when event = 94 in 4.14.mapis present when event = 114 or 115 or 116 or 117 or 118 in 4.13, and present when event = 118 or 119 or 120 or 121 or 122 in 4.14.
4.15
Client builds from 4.15.0.238 up to, not including, 4.16.0.238. Patch notes: V4.15.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.15.0.238 | 11 | 0 | 3 | 81c5a5a | 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: FloatingTextOnMap, InventorySnapshotOnMap, MissileCourse, MissileReport, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.
Every message of this range (269)
Against 4.14
Where a build from 4.15.0.238 up to, not including, 4.16.0.238 differs from one from 4.14.0.362 up to, not including, 4.15.0.238. Anything not named here is the same in both.
In 4.15, not in 4.14
| Message | Sent by | Command | What it does |
|---|---|---|---|
AscendedUnit | server | 292 on events | Name the unit that holds the Ascension |
Laid out differently
PathWithSpeed(vectors: along-on-4-15)facingis i8 in 4.14 and u8 in 4.15.
SpawnTurret(vectors: one-on-4-15)skinis in 4.15 (i32), aftercharacter, and not in 4.14.
VersionSync(vectors: one-on-4-15)features.animatedCursorsis at bit 6 in 4.14 and at bit 5 in 4.15.features.shopUndois at bit 7 in 4.14 and at bit 6 in 4.15.featureshasbit7at bit 7 in 4.15, and not in 4.14.features.skillshotOutlineis at bit 9 in 4.14 and at bit 8 in 4.15.features.championIndicatoris at bit 10 in 4.14 and at bit 9 in 4.15.features.altBountyis at bit 11 in 4.14 and at bit 10 in 4.15.featureshasbit11at bit 11 in 4.15, and not in 4.14.features.turretRangeis at bit 13 in 4.14 and at bit 12 in 4.15.featureshasbit13at bit 13 in 4.15, and not in 4.14.features.skinParticlesis at bit 15 in 4.14 and at bit 14 in 4.15.features.networkMetricsis at bit 16 in 4.14 and at bit 15 in 4.15.features.hardwareMetricsis at bit 17 in 4.14 and at bit 16 in 4.15.features.lagMetricsis at bit 18 in 4.14 and at bit 17 in 4.15.features.eventReportsis at bit 19 in 4.14 and at bit 18 in 4.15.features.logServerAddressis at bit 20 in 4.14 and at bit 19 in 4.15.features.jungleTimersis at bit 21 in 4.14 and at bit 20 in 4.15.features.tracerouteis at bit 22 in 4.14 and at bit 21 in 4.15.featureshasbit22at bit 22 in 4.15, and not in 4.14.features.clockSyncis at bit 26 in 4.14 and at bit 25 in 4.15.features.unusedis at bit 27 in 4.14 and at bit 26 in 4.15.features.unusedHighis at bit 59, 5 bits wide, in 4.14 and at bit 58, 6 bits wide, in 4.15.featureshasaudioBackendat bit 5 in 4.14, and not in 4.15.featureshasbit8at bit 8 in 4.14, and not in 4.15.featureshaswaveOrderat bit 12 in 4.14, and not in 4.15.featureshasbit14at bit 14 in 4.14, and not in 4.15.featureshasbit25at bit 25 in 4.14, and not in 4.15.
Only notes
These read the same on the wire, and only their notes change. What each says in 4.15:
FadeSounds,time: “How long the fade takes, in seconds.”, where 4.14 has “How long the sounds take to fade; the unit is not recorded.”
4.16
Client builds from 4.16.0.238 up to, not including, 4.17.0.233. Patch notes: V4.16.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.16.0.238 | 11 | 0 | 3 | 8be7fd9 | 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: FloatingTextOnMap, InventorySnapshotOnMap, MissileCourse, MissileReport, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, ThemeMusic, UnitDiedOnMap.
Every message of this range (269)
Against 4.15
Where a build from 4.16.0.238 up to, not including, 4.17.0.233 differs from one from 4.15.0.238 up to, not including, 4.16.0.238. Anything not named here is the same in both.
Laid out differently
ClientEvent(vectors: altar-captured-on-4-16, altar-captured-watched-on-4-16, baron-killed-on-4-16, baron-killed-watched-on-4-16, baron-stolen-on-4-16, buff-on-4-16, consumable-bought-on-4-16, critical-strike-on-4-16, crowd-control-on-4-16, damage-dealt-on-4-16, damage-taken-on-4-16, death-assist-on-4-16, died-on-4-16, dragon-killed-on-4-16, dragon-killed-watched-on-4-16, dragon-stolen-on-4-16, gold-earned-on-4-16, gold-spent-on-4-16, heal-cast-on-4-16, heal-on-4-16, item-bought-on-4-16, item-callout-on-4-16, item-changed-on-4-16, item-removed-on-4-16, item-sold-on-4-16, item-substituted-on-4-16, item-undone-on-4-16, killing-spree-on-4-16, minion-killed-on-4-16, monster-killed-on-4-16, one-on-4-16, removed-on-4-16, spawned-on-4-16, spider-killed-on-4-16, spider-killed-watched-on-4-16, turret-damaged-on-4-16, turret-died-on-4-16, undo-changed-on-4-16)eventtakes 118 minionsSpawned, 119 welcome, 120 startNoticeTwo, 121 startNoticeThree, 125 scoreboardOpened, 151 dragonKilled, 152 dragonKilledWatched, 153 dragonStolen, 154 baronKilled, 155 baronKilledWatched, 156 baronStolen, 157 spiderKilled, 158 spiderKilledWatched, 159 altarCaptured, 160 altarCapturedWatched, 161 wardPlaced, 162 wardKilled in 4.16 and not in 4.15.eventtakes 117 minionsSpawned, 118 welcome, 119 startNoticeTwo, 120 startNoticeThree, 124 scoreboardOpened, 150 dragonKilled, 151 dragonKilledWatched, 152 dragonStolen, 153 baronKilled, 154 baronKilledWatched, 155 baronStolen, 156 spiderKilled, 157 spiderKilledWatched, 158 altarCaptured, 159 altarCapturedWatched, 160 wardPlaced, 161 wardKilled in 4.15 and not in 4.16.valueis present when event = 25 or 91 or 92 or 93 or 96 or 97 or 158 or 159 in 4.15, and present when event = 25 or 91 or 92 or 93 or 96 or 97 or 159 or 160 in 4.16.killis present when event = 1 or 2 or 36 or 37 or 38 or 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.15, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158 in 4.16.monsteris present when event = 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.15, and present when event = 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158 in 4.16.undo.partsis in 4.16 (7 × u32), afterundo.item, and not in 4.15.undo.partis in 4.15 and not in 4.16.
DeathHistory(vectors: one-on-4-16)entries[].eventtakes 118 minionsSpawned, 119 welcome, 120 startNoticeTwo, 121 startNoticeThree, 125 scoreboardOpened, 151 dragonKilled, 152 dragonKilledWatched, 153 dragonStolen, 154 baronKilled, 155 baronKilledWatched, 156 baronStolen, 157 spiderKilled, 158 spiderKilledWatched, 159 altarCaptured, 160 altarCapturedWatched, 161 wardPlaced, 162 wardKilled in 4.16 and not in 4.15.entries[].eventtakes 117 minionsSpawned, 118 welcome, 119 startNoticeTwo, 120 startNoticeThree, 124 scoreboardOpened, 150 dragonKilled, 151 dragonKilledWatched, 152 dragonStolen, 153 baronKilled, 154 baronKilledWatched, 155 baronStolen, 156 spiderKilled, 157 spiderKilledWatched, 158 altarCaptured, 159 altarCapturedWatched, 160 wardPlaced, 161 wardKilled in 4.15 and not in 4.16.entries[].valueis present when event = 25 or 91 or 92 or 93 or 96 or 97 or 158 or 159 in 4.15, and present when event = 25 or 91 or 92 or 93 or 96 or 97 or 159 or 160 in 4.16.entries[].killis present when event = 1 or 2 or 36 or 37 or 38 or 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.15, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158 in 4.16.entries[].monsteris present when event = 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.15, and present when event = 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158 in 4.16.entries[].undo.partsis in 4.16 (7 × u32), afterentries[].undo.item, and not in 4.15.entries[].undo.partis in 4.15 and not in 4.16.
SpawnTurret(vectors: one-on-4-16)deathDelayis in 4.16 (f32), afterz, and not in 4.15.
VersionSync(vectors: one-on-4-16)featureshasbit26at bit 26 in 4.16, and not in 4.15.featureshasfarmBountyat bit 27 in 4.16, and not in 4.15.featureshasturretsPersistat bit 28 in 4.16, and not in 4.15.featureshasstateFlagsat bit 29 in 4.16, and not in 4.15.features.unusedis at bit 26 in 4.15 and at bit 30 in 4.16.features.unusedHighis at bit 58, 6 bits wide, in 4.15 and at bit 62, 2 bits wide, in 4.16.
WorldEvent(vectors: a-third-on-4-16, altar-captured-on-4-16, altar-captured-watched-on-4-16, another-on-4-16, baron-killed-on-4-16, baron-killed-watched-on-4-16, baron-stolen-on-4-16, buff-on-4-16, consumable-bought-on-4-16, critical-strike-on-4-16, crowd-control-on-4-16, damage-dealt-on-4-16, damage-taken-on-4-16, death-assist-on-4-16, died-on-4-16, dragon-killed-on-4-16, dragon-killed-watched-on-4-16, dragon-stolen-on-4-16, gold-earned-on-4-16, gold-spent-on-4-16, heal-cast-on-4-16, heal-on-4-16, inhibitor-died-on-4-16, item-bought-on-4-16, item-callout-on-4-16, item-changed-on-4-16, item-removed-on-4-16, item-sold-on-4-16, item-substituted-on-4-16, item-undone-on-4-16, killing-spree-on-4-16, minion-killed-on-4-16, monster-killed-on-4-16, one-on-4-16, removed-on-4-16, spawned-on-4-16, spider-killed-on-4-16, spider-killed-watched-on-4-16, start-notice-three-on-4-16, start-notice-two-on-4-16, turret-damaged-on-4-16, turret-died-on-4-16, undo-changed-on-4-16, welcome-on-4-16)eventtakes 118 minionsSpawned, 119 welcome, 120 startNoticeTwo, 121 startNoticeThree, 125 scoreboardOpened, 127 nexusCrystalStarted, 151 dragonKilled, 152 dragonKilledWatched, 153 dragonStolen, 154 baronKilled, 155 baronKilledWatched, 156 baronStolen, 157 spiderKilled, 158 spiderKilledWatched, 159 altarCaptured, 160 altarCapturedWatched, 161 wardPlaced, 162 wardKilled in 4.16 and not in 4.15.eventtakes 117 minionsSpawned, 118 welcome, 119 startNoticeTwo, 120 startNoticeThree, 124 scoreboardOpened, 126 nexusCrystalStarted, 150 dragonKilled, 151 dragonKilledWatched, 152 dragonStolen, 153 baronKilled, 154 baronKilledWatched, 155 baronStolen, 156 spiderKilled, 157 spiderKilledWatched, 158 altarCaptured, 159 altarCapturedWatched, 160 wardPlaced, 161 wardKilled in 4.15 and not in 4.16.valueis present when event = 25 or 91 or 92 or 93 or 96 or 97 or 158 or 159 in 4.15, and present when event = 25 or 91 or 92 or 93 or 96 or 97 or 159 or 160 in 4.16.killis present when event = 1 or 2 or 36 or 37 or 38 or 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.15, and present when event = 1 or 2 or 36 or 37 or 38 or 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158 in 4.16.monsteris present when event = 40 or 150 or 151 or 152 or 153 or 154 or 155 or 156 or 157 in 4.15, and present when event = 40 or 151 or 152 or 153 or 154 or 155 or 156 or 157 or 158 in 4.16.undo.partsis in 4.16 (7 × u32), afterundo.item, and not in 4.15.mapis present when event = 118 or 119 or 120 or 121 or 122 in 4.15, and present when event = 119 or 120 or 121 or 122 or 123 in 4.16.undo.partis in 4.15 and not in 4.16.
4.17
Client builds from 4.17.0.233 up to, not including, 4.18.0.271. Patch notes: V4.17.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.17.0.233 | 11 | 0 | 3 | 710df24 | 2026-10-22 |
| 4.17.0.267 | 11 | 0 | 5 | 60a7c4c | 2026-10-19 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: FloatingTextOnMap, InventorySnapshotOnMap, MissileCourse, MissileReport, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, UnitDiedOnMap.
Every message of this range (270)
Against 4.16
Where a build from 4.17.0.233 up to, not including, 4.18.0.271 differs from one from 4.16.0.238 up to, not including, 4.17.0.233. Anything not named here is the same in both.
In 4.17, not in 4.16
| Message | Sent by | Command | What it does |
|---|---|---|---|
ThemeMusic | server | 96 on events | Set a champion’s skin music |
Laid out differently
Attack(vectors: one-on-4-17)targetXis in 4.17 (f32), aftertarget, and not in 4.16.targetYis in 4.17 (f32), aftertargetX, and not in 4.16.targetZis in 4.17 (f32), aftertargetY, and not in 4.16.
AttackFrom(vectors: one-on-4-17)targetXis in 4.17 (f32), aftertarget, and not in 4.16.targetYis in 4.17 (f32), aftertargetX, and not in 4.16.targetZis in 4.17 (f32), aftertargetY, and not in 4.16.
ClientEvent(vectors: altar-captured-on-4-17, altar-captured-watched-on-4-17, baron-killed-on-4-17, baron-killed-watched-on-4-17, baron-stolen-on-4-17, buff-on-4-17, consumable-bought-on-4-17, critical-strike-on-4-17, crowd-control-on-4-17, damage-dealt-on-4-17, damage-taken-on-4-17, death-assist-on-4-17, died-on-4-17, dragon-killed-on-4-17, dragon-killed-watched-on-4-17, dragon-stolen-on-4-17, gold-earned-on-4-17, gold-spent-on-4-17, heal-cast-on-4-17, heal-on-4-17, item-bought-on-4-17, item-callout-on-4-17, item-changed-on-4-17, item-removed-on-4-17, item-sold-on-4-17, item-substituted-on-4-17, item-undone-on-4-17, killing-spree-on-4-17, minion-killed-on-4-17, monster-killed-on-4-17, one-on-4-17, removed-on-4-17, spawned-on-4-17, spider-killed-on-4-17, spider-killed-watched-on-4-17, turret-damaged-on-4-17, turret-died-on-4-17, undo-changed-on-4-17)damage.sourceKindtakes 1 item, 2 buff, 3 character, 6 unknown in 4.17 and not in 4.16.damage.sourceKindtakes 1 named, 2 script, 3 passive in 4.16 and not in 4.17.damage.sourceObjectis in 4.17 (u32), afterdamage.sourceKind, and not in 4.16.heal.sourceKindtakes 1 item, 2 buff, 3 character, 6 unknown in 4.17 and not in 4.16.heal.sourceKindtakes 1 named, 2 script, 3 passive in 4.16 and not in 4.17.heal.sourceObjectis in 4.17 (u32), afterheal.sourceKind, and not in 4.16.effect.sourceKindtakes 1 item, 2 buff, 3 character, 6 unknown in 4.17 and not in 4.16.effect.sourceKindtakes 1 named, 2 script, 3 passive in 4.16 and not in 4.17.effect.sourceObjectis in 4.17 (u32), aftereffect.sourceKind, and not in 4.16.
DeathHistory(vectors: one-on-4-17)entries[].damage.sourceKindtakes 1 item, 2 buff, 3 character, 6 unknown in 4.17 and not in 4.16.entries[].damage.sourceKindtakes 1 named, 2 script, 3 passive in 4.16 and not in 4.17.entries[].damage.sourceObjectis in 4.17 (u32), afterentries[].damage.sourceKind, and not in 4.16.entries[].heal.sourceKindtakes 1 item, 2 buff, 3 character, 6 unknown in 4.17 and not in 4.16.entries[].heal.sourceKindtakes 1 named, 2 script, 3 passive in 4.16 and not in 4.17.entries[].heal.sourceObjectis in 4.17 (u32), afterentries[].heal.sourceKind, and not in 4.16.entries[].effect.sourceKindtakes 1 item, 2 buff, 3 character, 6 unknown in 4.17 and not in 4.16.entries[].effect.sourceKindtakes 1 named, 2 script, 3 passive in 4.16 and not in 4.17.entries[].effect.sourceObjectis in 4.17 (u32), afterentries[].effect.sourceKind, and not in 4.16.blobLengthis in 4.16 and not in 4.17.
FadeRemoved(vectors: one-on-4-17)fadeis i16 in 4.16 and u16 in 4.17.
PathWithSpeed(vectors: along-on-4-17)facingis u8 in 4.16 and i8 in 4.17.
SpawnUnit(vectors: one-on-4-17)onlyVisibleTois in 4.17 (u32), afterlevel, and not in 4.16.
VersionSync(vectors: one-on-4-17)features.unusedis at bit 30, 32 bits wide, in 4.16 and at bit 30, 2 bits wide, in 4.17.features.unusedHighis at bit 62, 2 bits wide, in 4.16 and at bit 32, 32 bits wide, in 4.17.reportingMessagesis 18 × u8 in 4.16 and 19 × u8 in 4.17.
WorldEvent(vectors: a-third-on-4-17, altar-captured-on-4-17, altar-captured-watched-on-4-17, another-on-4-17, baron-killed-on-4-17, baron-killed-watched-on-4-17, baron-stolen-on-4-17, buff-on-4-17, consumable-bought-on-4-17, critical-strike-on-4-17, crowd-control-on-4-17, damage-dealt-on-4-17, damage-taken-on-4-17, death-assist-on-4-17, died-on-4-17, dragon-killed-on-4-17, dragon-killed-watched-on-4-17, dragon-stolen-on-4-17, gold-earned-on-4-17, gold-spent-on-4-17, heal-cast-on-4-17, heal-on-4-17, inhibitor-died-on-4-17, item-bought-on-4-17, item-callout-on-4-17, item-changed-on-4-17, item-removed-on-4-17, item-sold-on-4-17, item-substituted-on-4-17, item-undone-on-4-17, killing-spree-on-4-17, minion-killed-on-4-17, monster-killed-on-4-17, one-on-4-17, removed-on-4-17, spawned-on-4-17, spider-killed-on-4-17, spider-killed-watched-on-4-17, start-notice-three-on-4-17, start-notice-two-on-4-17, turret-damaged-on-4-17, turret-died-on-4-17, undo-changed-on-4-17, welcome-on-4-17)damage.sourceKindtakes 1 item, 2 buff, 3 character, 6 unknown in 4.17 and not in 4.16.damage.sourceKindtakes 1 named, 2 script, 3 passive in 4.16 and not in 4.17.damage.sourceObjectis in 4.17 (u32), afterdamage.sourceKind, and not in 4.16.heal.sourceKindtakes 1 item, 2 buff, 3 character, 6 unknown in 4.17 and not in 4.16.heal.sourceKindtakes 1 named, 2 script, 3 passive in 4.16 and not in 4.17.heal.sourceObjectis in 4.17 (u32), afterheal.sourceKind, and not in 4.16.effect.sourceKindtakes 1 item, 2 buff, 3 character, 6 unknown in 4.17 and not in 4.16.effect.sourceKindtakes 1 named, 2 script, 3 passive in 4.16 and not in 4.17.effect.sourceObjectis in 4.17 (u32), aftereffect.sourceKind, and not in 4.16.
Structs
SpellHitatXis in 4.16 and not in 4.17.atYis in 4.16 and not in 4.17.atZis in 4.16 and not in 4.17.
StreamRecordis in 4.17 and not in 4.16.
Chapters
- In the time chapter, a passage holds for 4.17 and not 4.16: The time between two of a stream’s records (
StreamRecord) is in milliseconds. - In the guidance chapter, a passage holds for 4.17 and not 4.16: A client takes
TutorialPopupin any match. - In the spectating chapter, a passage holds for 4.17 and not 4.16: Each record is a
StreamRecord, written against the one before it to save space.
4.18–4.19
Client builds from 4.18.0.271 up to, not including, 4.20.0.315. Patch notes: V4.18, V4.19.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.18.0.271 | 11 | 0 | 3 | 041bb6b | 2026-10-23 |
| 4.18.0.274 | 11 | 0 | 5 | 60a7c4c | 2026-10-19 |
| 4.18.0.279 | 11 | 0 | 5 | 60a7c4c | 2026-10-19 |
| 4.18.0.282 | 11 | 0 | 5 | 60a7c4c | 2026-10-19 |
| 4.19.0.435 | 11 | 0 | 5 | 60a7c4c | 2026-10-19 |
| 4.19.0.446 | 11 | 0 | 5 | 60a7c4c | 2026-10-19 |
| 4.19.0.452 | 11 | 0 | 5 | 60a7c4c | 2026-10-19 |
| 4.19.0.454 | 11 | 0 | 5 | 60a7c4c | 2026-10-19 |
| 4.19.0.457 | 11 | 0 | 5 | 60a7c4c | 2026-10-19 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: FloatingTextOnMap, InventorySnapshotOnMap, MissileCourse, MissileReport, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, UnitDiedOnMap.
Every message of this range (270)
Against 4.17
Where a build from 4.18.0.271 up to, not including, 4.20.0.315 differs from one from 4.17.0.233 up to, not including, 4.18.0.271. Anything not named here is the same in both.
Laid out differently
AppearancePushed(vectors: one-on-4-18)- The same fields come in another order in 4.18–4.19.
Attackstrikeis in 4.18–4.19 (Strike) at the start, and not in 4.17.targetis in 4.17 and not in 4.18–4.19.targetXis in 4.17 and not in 4.18–4.19.targetYis in 4.17 and not in 4.18–4.19.targetZis in 4.17 and not in 4.18–4.19.timingis in 4.17 and not in 4.18–4.19.missileis in 4.17 and not in 4.18–4.19.slotis in 4.17 and not in 4.18–4.19.
AttackFromstrikeis in 4.18–4.19 (Strike) at the start, and not in 4.17.targetis in 4.17 and not in 4.18–4.19.targetXis in 4.17 and not in 4.18–4.19.targetYis in 4.17 and not in 4.18–4.19.targetZis in 4.17 and not in 4.18–4.19.timingis in 4.17 and not in 4.18–4.19.missileis in 4.17 and not in 4.18–4.19.slotis in 4.17 and not in 4.18–4.19.
AttackIndicatorsshowis u8 in 4.17 and 1-byte bits in 4.18–4.19.showhasshowat bit 0 in 4.18–4.19, and not in 4.17.showhasminimapat bit 1 in 4.18–4.19, and not in 4.17.showhasunusedat bit 2 in 4.18–4.19, and not in 4.17.minimapis in 4.17 and not in 4.18–4.19.
AttackSpeedBoundsoverridesis in 4.18–4.19 (1-byte bits) at the start, and not in 4.17.useCeilingis in 4.17 and not in 4.18–4.19.useFlooris in 4.17 and not in 4.18–4.19.
BotKickactionis u8 in 4.17 and u32 in 4.18–4.19.actiontakes 5 leave in 4.18–4.19 and not in 4.17.actiontakes 4 leave in 4.17 and not in 4.18–4.19.
CampCleareddoes.unusedis at bit 2, 6 bits wide, in 4.17 and at bit 1, 7 bits wide, in 4.18–4.19.doeshasfirstSideat bit 1 in 4.17, and not in 4.18–4.19.
CancelTargetingslotis in 4.18–4.19 (u8) at the start, and not in 4.17.which.summonerSpellis at bit 6 in 4.17 and at bit 0 in 4.18–4.19.which.unusedis at bit 7, 1 bits wide, in 4.17 and at bit 1, 7 bits wide, in 4.18–4.19.whichhasslotat bit 0 in 4.17, and not in 4.18–4.19.
CapturePointChangedresourceKindtakes 7 heat, 8 gnarFury, 9 ferocity, 10 bloodWell, 11 wind, 12 other in 4.17 and not in 4.18–4.19.sideis i32 in 4.17 and u32 in 4.18–4.19.changetakes 0 bind, 1 ignored in 4.17 and not in 4.18–4.19.
CastSpellhowhasfromSummonerSlotsat bit 0 in 4.18–4.19, and not in 4.17.howhasfromHudat bit 1 in 4.18–4.19, and not in 4.17.howhasunusedat bit 2 in 4.18–4.19, and not in 4.17.howhasslotat bit 0 in 4.17, and not in 4.18–4.19.howhassummonerSpellat bit 6 in 4.17, and not in 4.18–4.19.howhasclickedat bit 7 in 4.17, and not in 4.18–4.19.slotis in 4.18–4.19 (u8), afterhow, and not in 4.17.
ChampionDieddeathis in 4.18–4.19 (Death) at the start, and not in 4.17.killeris in 4.17 and not in 4.18–4.19.damageTypeis in 4.17 and not in 4.18–4.19.damageSourceis in 4.17 and not in 4.18–4.19.stayDownis in 4.17 and not in 4.18–4.19.howis in 4.17 and not in 4.18–4.19.kindis in 4.17 and not in 4.18–4.19.
CreateChampionwhois in 4.18–4.19 (1-byte bits), afterskillLevel, and not in 4.17.deathKindis in 4.18–4.19 (u32), afterdownFor, and not in 4.17.how.swapis at bit 3 in 4.17 and at bit 0 in 4.18–4.19.howhashiddenat bit 1 in 4.18–4.19, and not in 4.17.how.unusedis at bit 4, 4 bits wide, in 4.17 and at bit 2, 6 bits wide, in 4.18–4.19.howhasdownat bit 0 in 4.17, and not in 4.18–4.19.sideis in 4.17 and not in 4.18–4.19.botis in 4.17 and not in 4.18–4.19.
CreateNeutral(vectors: still-on-4-18)roamingtakes 0 still in 4.18–4.19 and not in 4.17.roamingtakes 0 inactive in 4.17 and not in 4.18–4.19.behaviouris in 4.17 and not in 4.18–4.19.
CreateTurrethownames bit 1unusedin 4.17 andunknownin 4.18–4.19.
Damageresultis in 4.18–4.19 (u8) at the start, and not in 4.17.unusedis in 4.18–4.19 (u8), afterresult, and not in 4.17.kindis in 4.18–4.19 (u8), afterunused, and not in 4.17.howis in 4.17 and not in 4.18–4.19.
DeathHistory(vectors: one-on-4-18)causeis in 4.18–4.19 (u8) at the start, and not in 4.17.sourceTypeis in 4.17 and not in 4.18–4.19.
EmitterPausegroupOperationis u8 in 4.17 and u32 in 4.18–4.19.groupOperationtakes 1 emission, 2 restart in 4.18–4.19 and not in 4.17.groupOperationtakes 0 emission in 4.17 and not in 4.18–4.19.
EnterLocalSightcarriedis 2-byte bits in 4.17 and u16 in 4.18–4.19.carriedhassizeat bit 0 in 4.17, and not in 4.18–4.19.carriedhasunusedat bit 13 in 4.17, and not in 4.18–4.19.messagesis sized by carried.size × CarriedMessage in 4.17 and sized by carried × CarriedMessage in 4.18–4.19.
EnterSightcarriedis 2-byte bits in 4.17 and u16 in 4.18–4.19.carriedhassizeat bit 0 in 4.17, and not in 4.18–4.19.carriedhasunusedat bit 13 in 4.17, and not in 4.18–4.19.messagesis sized by carried.size × CarriedMessage in 4.17 and sized by carried × CarriedMessage in 4.18–4.19.
FaceDirection- The same fields come in another order in 4.18–4.19.
FadeRemovedfadeis u16 in 4.17 and i16 in 4.18–4.19.
GameEndedresult.unusedis at bit 2, 6 bits wide, in 4.17 and at bit 1, 7 bits wide, in 4.18–4.19.resulthassurrenderedat bit 1 in 4.17, and not in 4.18–4.19.
HudHighlighted(vectors: one-on-4-18)parttakes 1 hud, 3 minimap in 4.18–4.19 and not in 4.17.parttakes 0 hud, 2 minimap in 4.17 and not in 4.18–4.19.
InhibitorStatestateis 2-byte bits in 4.17 and u8 in 4.18–4.19.statehasdurationat bit 0 in 4.17, and not in 4.18–4.19.statehasaliveat bit 15 in 4.17, and not in 4.18–4.19.durationis in 4.18–4.19 (u16), afterstate, and not in 4.17.
ItemAddedhowhastellTheClientat bit 0 in 4.18–4.19, and not in 4.17.how.unusedis at bit 0, 6 bits wide, in 4.17 and at bit 1, 7 bits wide, in 4.18–4.19.howhasannounceat bit 6 in 4.17, and not in 4.18–4.19.howhasunused7at bit 7 in 4.17, and not in 4.18–4.19.
LoadingProgressstatus.pingis at bit 16, 15 bits wide, in 4.17 and at bit 16, 16 bits wide, in 4.18–4.19.statushasloadedat bit 31 in 4.17, and not in 4.18–4.19.stateis in 4.18–4.19 (1-byte bits), afterstatus, and not in 4.17.
LoadoutsummonersAgainis in 4.18–4.19 (2 × u32), aftersummoners, and not in 4.17.
MapPropsideis 2-byte bits in 4.17 and u16 in 4.18–4.19.sidehassideat bit 0 in 4.17, and not in 4.18–4.19.sidehasunusedat bit 9 in 4.17, and not in 4.18–4.19.kindis u8 in 4.17 and u32 in 4.18–4.19.kindtakes 0 active, 1 scenery in 4.17 and not in 4.18–4.19.
MapPropChangedstartsAtis in 4.18–4.19 (f32), aftername, and not in 4.17.lastsis in 4.18–4.19 (f32), afterstartsAt, and not in 4.17.flagsis in 4.18–4.19 (u32), afterprop, and not in 4.17.kindis in 4.18–4.19 (u32), afterflags, and not in 4.17.byteAis in 4.18–4.19 (u8), afterkind, and not in 4.17.byteBis in 4.18–4.19 (u8), afterbyteA, and not in 4.17.byteCis in 4.18–4.19 (u8), afterbyteB, and not in 4.17.firstis in 4.17 and not in 4.18–4.19.secondis in 4.17 and not in 4.18–4.19.valueis in 4.17 and not in 4.18–4.19.changeis in 4.17 and not in 4.18–4.19.optionis in 4.17 and not in 4.18–4.19.effectis in 4.17 and not in 4.18–4.19.pointis in 4.17 and not in 4.18–4.19.
MinimapIconchangeIconis u8 in 4.17 and 1-byte bits in 4.18–4.19.changeIconhaschangeat bit 0 in 4.18–4.19, and not in 4.17.changeIconhasunusedat bit 1 in 4.18–4.19, and not in 4.17.changeBorderis u8 in 4.17 and 1-byte bits in 4.18–4.19.changeBorderhaschangeat bit 0 in 4.18–4.19, and not in 4.17.changeBorderhasunusedat bit 1 in 4.18–4.19, and not in 4.17.
MoveCamerahownames bit 1unused1in 4.17 andunlockin 4.18–4.19.
ParticleSourcesourceis u8 in 4.17 and u32 in 4.18–4.19.sourcetakes 1 capturePoint, 2 resource, 3 resourceSmoothed in 4.18–4.19 and not in 4.17.sourcetakes 0 capturePoint, 1 resource, 2 resourceSmoothed in 4.17 and not in 4.18–4.19.
PathWithSpeedfacingis i8 in 4.17 and u8 in 4.18–4.19.
Pausehownames bit 0tournamentin 4.17 andunlimitedin 4.18–4.19.
Pausedhownames bit 0tournamentin 4.17 andunlimitedin 4.18–4.19.
PingPlacedcategoryis in 4.18–4.19 (u8), aftersource, and not in 4.17.doesis in 4.18–4.19 (1-byte bits), aftercategory, and not in 4.17.howis in 4.17 and not in 4.18–4.19.
PlayAnimation(vectors: one-on-4-18)flagsis 4-byte bits in 4.17 and 1-byte bits in 4.18–4.19.flags.unusedis at bit 5, 27 bits wide, in 4.17 and at bit 5, 3 bits wide, in 4.18–4.19.
QuestUpdated(vectors: primary-on-4-18)flagshassucceededat bit 2 in 4.18–4.19, and not in 4.17.flags.unusedis at bit 2, 6 bits wide, in 4.17 and at bit 3, 5 bits wide, in 4.18–4.19.
RegionAdded(vectors: circle-on-4-18)otherUnitis in 4.18–4.19 (u32), afterclientId, and not in 4.17.
RemoveItemslotis in 4.18–4.19 (u8) at the start, and not in 4.17.howis in 4.18–4.19 (1-byte bits), afterslot, and not in 4.17.whichis in 4.17 and not in 4.18–4.19.
RemoveItemAnswerslotis in 4.18–4.19 (u8) at the start, and not in 4.17.howis in 4.18–4.19 (1-byte bits), afterleft, and not in 4.17.whichis in 4.17 and not in 4.18–4.19.
Replication- The other channels it may come on change.
SeatLoadProgresscountis in 4.18–4.19 (u16), aftersecondsLeft, and not in 4.17.pingis in 4.18–4.19 (u16), aftercount, and not in 4.17.stateis in 4.18–4.19 (1-byte bits), afterping, and not in 4.17.statusis in 4.17 and not in 4.18–4.19.
SoftReconnectstageis 1-byte bits in 4.17 and u32 in 4.18–4.19.stagetakes 1 mark in 4.18–4.19 and not in 4.17.stagehasstageat bit 0 in 4.17, and not in 4.18–4.19.stagehasunusedat bit 2 in 4.17, and not in 4.18–4.19.
SpawnFromBarracks(vectors: one-on-4-18)damageBonusis i16 in 4.17 and u16 in 4.18–4.19.healthBonusis i16 in 4.17 and u16 in 4.18–4.19.
SpawnStartfirstCountis in 4.18–4.19 (u8) at the start, and not in 4.17.secondCountis in 4.18–4.19 (u8), afterfirstCount, and not in 4.17.botsOnOneSideis in 4.17 and not in 4.18–4.19.botsOnTheOtheris in 4.17 and not in 4.18–4.19.
SpawnTurret(vectors: one-on-4-18)flagsis 2-byte bits in 4.17 and 1-byte bits in 4.18–4.19.flagshasunusedLowat bit 0 in 4.18–4.19, and not in 4.17.flags.invulnerableis at bit 9 in 4.17 and at bit 1 in 4.18–4.19.flags.unusedis at bit 10 in 4.17 and at bit 2 in 4.18–4.19.flagshassideat bit 0 in 4.17, and not in 4.18–4.19.sideis in 4.18–4.19 (u16), afterflags, and not in 4.17.
SpawnUnitteamis in 4.18–4.19 (u16), afterclone, and not in 4.17.flagsis 2-byte bits in 4.17 and 1-byte bits in 4.18–4.19.flags.ignoreCollisionis at bit 9 in 4.17 and at bit 0 in 4.18–4.19.flags.wardis at bit 10 in 4.17 and at bit 1 in 4.18–4.19.flags.laneMinionis at bit 11 in 4.17 and at bit 2 in 4.18–4.19.flags.botis at bit 12 in 4.17 and at bit 3 in 4.18–4.19.flags.unusedis at bit 13, 3 bits wide, in 4.17 and at bit 4, 4 bits wide, in 4.18–4.19.flagshasteamat bit 0 in 4.17, and not in 4.18–4.19.unusedis in 4.18–4.19 (u32), afterflags, and not in 4.17.targetableToTeamis in 4.17 and not in 4.18–4.19.
SpellChargeflags.summonerSpellis at bit 6 in 4.17 and at bit 0 in 4.18–4.19.flags.endis at bit 7 in 4.17 and at bit 1 in 4.18–4.19.flagshasunusedat bit 2 in 4.18–4.19, and not in 4.17.flagshasslotat bit 0 in 4.17, and not in 4.18–4.19.slotis in 4.18–4.19 (u8), afterflags, and not in 4.17.
SpellCooldownslotis in 4.18–4.19 (u8) at the start, and not in 4.17.howis in 4.18–4.19 (1-byte bits), afterslot, and not in 4.17.whichis in 4.17 and not in 4.18–4.19.
SpellCostChanged(vectors: flat-on-4-18)costTypetakes 1 flat, 2 multiplier in 4.18–4.19 and not in 4.17.costTypetakes 0 flat, 1 multiplier in 4.17 and not in 4.18–4.19.
SpellSlotChangedslotis in 4.18–4.19 (u8) at the start, and not in 4.17.whatis in 4.18–4.19 (1-byte bits), afterslot, and not in 4.17.kindis u8 in 4.17 and u32 in 4.18–4.19.kindtakes 1 targeting, 2 name, 3 range, 4 maxRange, 5 shownRange, 6 icon, 7 targets in 4.18–4.19 and not in 4.17.kindtakes 0 targeting, 1 name, 2 range, 3 maxRange, 4 shownRange, 5 icon, 6 offsetTargets in 4.17 and not in 4.18–4.19.targetingis present when kind = 0 in 4.17, and present when kind = 1 in 4.18–4.19.nameis present when kind = 1 in 4.17, and present when kind = 2 in 4.18–4.19.rangeis present when kind = 2 in 4.17, and present when kind = 3 in 4.18–4.19.maxRangeis present when kind = 3 in 4.17, and present when kind = 4 in 4.18–4.19.shownRangeis present when kind = 4 in 4.17, and present when kind = 5 in 4.18–4.19.iconis present when kind = 5 in 4.17, and present when kind = 6 in 4.18–4.19.targetCountis present when kind = 6 in 4.17, and present when kind = 7 in 4.18–4.19.targetsis present when kind = 6 in 4.17, and present when kind = 7 in 4.18–4.19.whichis in 4.17 and not in 4.18–4.19.
SpellToggledstateis u8 in 4.17 and 1-byte bits in 4.18–4.19.statehasonat bit 0 in 4.18–4.19, and not in 4.17.statehasunusedat bit 1 in 4.18–4.19, and not in 4.17.
StopAttackhownames bit 1forceCastin 4.17 andfinishSwingin 4.18–4.19.hownames bit 2forceStopin 4.17 andforcedin 4.18–4.19.
StreamChunk(vectors: startup-on-4-18)durationis u32 in 4.17 and i32 in 4.18–4.19.
SurrenderStatusreasonis u8 in 4.17 and u32 in 4.18–4.19.sideis u32 in 4.17 and u16 in 4.18–4.19.
TeamScoresideis i32 in 4.17 and u32 in 4.18–4.19.
ThemeMusic(vectors: one-on-4-18)secondTrackis in 4.18–4.19 (u32), aftertrack, and not in 4.17.
TipEventwhattakes 0 clicked, 1 closed in 4.17 and not in 4.18–4.19.
UnitDieddeathis in 4.18–4.19 (Death) at the start, and not in 4.17.killeris in 4.17 and not in 4.18–4.19.damageTypeis in 4.17 and not in 4.18–4.19.damageSourceis in 4.17 and not in 4.18–4.19.stayDownis in 4.17 and not in 4.18–4.19.howis in 4.17 and not in 4.18–4.19.kindis in 4.17 and not in 4.18–4.19.
UnitTextstyleis u8 in 4.17 and u32 in 4.18–4.19.
VersionSync(vectors: one-on-4-18)agreementnames bit 1reportsToFilein 4.17 andlogMetricsin 4.18–4.19.tipFlagsis 1-byte bits in 4.17 and i8 in 4.18–4.19.tipFlagshasenabledat bit 0 in 4.17, and not in 4.18–4.19.tipFlagshasreplayat bit 1 in 4.17, and not in 4.18–4.19.tipFlagshasloadingScreenat bit 2 in 4.17, and not in 4.18–4.19.tipFlagshasinGameat bit 3 in 4.17, and not in 4.18–4.19.tipFlagshascycleat bit 4 in 4.17, and not in 4.18–4.19.tipFlagshasunusedat bit 5 in 4.17, and not in 4.18–4.19.featuresis 8-byte bits in 4.17 and u64 in 4.18–4.19.featureshasbalanceVoteCommandsat bit 0 in 4.17, and not in 4.18–4.19.featureshasmenuBackat bit 1 in 4.17, and not in 4.18–4.19.featureshasmenuBack2at bit 2 in 4.17, and not in 4.18–4.19.featureshasquickChatat bit 3 in 4.17, and not in 4.18–4.19.featureshasmissileWarningat bit 4 in 4.17, and not in 4.18–4.19.featureshasanimatedCursorsat bit 5 in 4.17, and not in 4.18–4.19.featureshasshopUndoat bit 6 in 4.17, and not in 4.18–4.19.featureshasbit7at bit 7 in 4.17, and not in 4.18–4.19.featureshasskillshotOutlineat bit 8 in 4.17, and not in 4.18–4.19.featureshaschampionIndicatorat bit 9 in 4.17, and not in 4.18–4.19.featureshasaltBountyat bit 10 in 4.17, and not in 4.18–4.19.featureshasbit11at bit 11 in 4.17, and not in 4.18–4.19.featureshasturretRangeat bit 12 in 4.17, and not in 4.18–4.19.featureshasbit13at bit 13 in 4.17, and not in 4.18–4.19.featureshasskinParticlesat bit 14 in 4.17, and not in 4.18–4.19.featureshasnetworkMetricsat bit 15 in 4.17, and not in 4.18–4.19.featureshashardwareMetricsat bit 16 in 4.17, and not in 4.18–4.19.featureshaslagMetricsat bit 17 in 4.17, and not in 4.18–4.19.featureshaseventReportsat bit 18 in 4.17, and not in 4.18–4.19.featureshaslogServerAddressat bit 19 in 4.17, and not in 4.18–4.19.featureshasjungleTimersat bit 20 in 4.17, and not in 4.18–4.19.featureshastracerouteat bit 21 in 4.17, and not in 4.18–4.19.featureshasbit22at bit 22 in 4.17, and not in 4.18–4.19.featureshasbit23at bit 23 in 4.17, and not in 4.18–4.19.featureshasbit24at bit 24 in 4.17, and not in 4.18–4.19.featureshasclockSyncat bit 25 in 4.17, and not in 4.18–4.19.featureshasbit26at bit 26 in 4.17, and not in 4.18–4.19.featureshasfarmBountyat bit 27 in 4.17, and not in 4.18–4.19.featureshasturretsPersistat bit 28 in 4.17, and not in 4.18–4.19.featureshasstateFlagsat bit 29 in 4.17, and not in 4.18–4.19.featureshasunusedat bit 30 in 4.17, and not in 4.18–4.19.featureshasunusedHighat bit 32 in 4.17, and not in 4.18–4.19.
VoiceCommandpadding1is in 4.17 and not in 4.18–4.19.padding2is in 4.17 and not in 4.18–4.19.padding3is in 4.17 and not in 4.18–4.19.padding4is in 4.17 and not in 4.18–4.19.
VoiceOverride(vectors: one-on-4-18)- Its layout changes in a detail.
VolumeMuted(vectors: music-on-4-18)categorytakes 7 pings in 4.18–4.19 and not in 4.17.
Structs
Deathis in 4.18–4.19 and not in 4.17.StreamRecordis in 4.17 and not in 4.18–4.19.Strikeis in 4.18–4.19 and not in 4.17.
Chapters
- In the objects chapter, a passage holds for 4.17 and not 4.18–4.19: The stage of
SoftReconnectthat marks is 0. - In the objects chapter, a passage holds for 4.18–4.19 and not 4.17: The stage of
SoftReconnectthat marks is 1. - In the space chapter, a passage holds for 4.18–4.19 and not 4.17: A client also has data for map 11, a second Summoner’s Rift, whose paths have their origin at 7358, 7412.
- In the time chapter, a passage holds for 4.17 and not 4.18–4.19: The time between two of a stream’s records (
StreamRecord) is in milliseconds. - In the time chapter, a passage holds for 4.18–4.19 and not 4.17:
MapPropChangedgives when its change begins in milliseconds of match time. - In the data chapter, a passage holds for 4.17 and not 4.18–4.19: The client has maps 1, 8, 10 and 12, and no map 11.
- In the data chapter, a passage holds for 4.18–4.19 and not 4.17: The client has maps 1, 8, 10, 11 and 12.
- In the match chapter, a passage holds for 4.17 and not 4.18–4.19: A client names no one in
PauseorResume. - In the match chapter, a passage holds for 4.18–4.19 and not 4.17: A client puts 0 in the client id of
PauseandResume, the same id as the first seat’s, so a server takes no seat from that field. - In the match chapter, a passage holds for 4.17 and not 4.18–4.19: The action of
BotKickthat means leave is 4. - In the match chapter, a passage holds for 4.18–4.19 and not 4.17: The action of
BotKickthat means leave is 5. - In the spectating chapter, a passage holds for 4.17 and not 4.18–4.19: Each record is a
StreamRecord, written against the one before it to save space.
Only notes
These read the same on the wire, and only their notes change. What each says in 4.18–4.19:
BalanceVoteAnswer,vote.unused: “Unused; a client may leave any value here, and a server ignores it.”, where 4.17 has “Unused; a client writes zero.”BalanceVoteRefused,flags: “A vote against: the lowest bit is clear. The other bits carry no meaning, and a server ignores them.”, where 4.17 has “Zero: a vote against.”CameraLock, its layout: no note, where 4.17 has “A client sends it whenever its lock changes: by the player, or as the game forces a lock or lifts one. It sends none while playing a replay.”CameraLock,state.unused: “Unused; a client may leave any value here, and a server ignores it.”, where 4.17 has “Unused; a client writes zero.”ChampionStats,values: “The figures themselves, one after another with nothing between. Which they are comes from the client’s own data for the match’s mode. In a classic match there are 76, in this order: assists, inhibitors destroyed, champion kills, consumables bought, double kills, experience (f32), own inhibitors lost, own nexus lost, own turrets lost, gold earned (f32), gold spent (f32), nexus destroyed, player id, the items in slots 0 to 6, items bought, killing sprees, largest critical strike (f32), largest killing spree, largest multikill, level, longest time alive (f32), magic damage dealt (f32), magic damage to champions (f32), magic damage taken (f32), minions killed, name (text), neutral monsters killed, monsters killed in the enemy’s jungle, monsters killed in the side’s own jungle, never entered the game, deaths, penta kills, physical damage dealt, to champions and taken (f32 each), ping, quadra kills, sight wards bought, skin, casts of spells 1 to 4, casts of summoner spells 1 and 2, epic monsters killed, side, a teammate never entered the game, time since the last disconnection (f32), time played (f32), time disconnected (f32), total damage dealt, to champions and taken (f32 each), total healing, crowd control dealt (f32), time dead (f32), units healed, triple kills, true damage dealt, to champions and taken (f32 each), turrets destroyed, unreal kills, vision wards bought, wards destroyed, wards placed, away from the keyboard, away after a failed surrender, and win (text). Every one not marked otherwise is an i32; a text is a 16-bit length and that many bytes, at most 63, with nothing to end it. ARAM, First Blood and One for All leave out the two jungle counts. The tutorial also leaves out never entered the game, sight wards bought, a teammate never entered the game, crowd control dealt, the three true damage figures, vision wards bought, wards destroyed, wards placed and away after a failed surrender. Dominion and Ascension have 75, in this order: assists, champion kills, combat score (f32), consumables bought, double kills, experience (f32), gold earned (f32), gold spent (f32), player id, the items in slots 0 to 6, items bought, killing sprees, largest critical strike (f32), largest killing spree, largest multikill, level, longest time alive (f32), magic damage dealt, to champions and taken (f32 each), minions killed, name (text), neutral monsters killed, never entered the game, node captures, node capture assists, node neutralizations, node neutralization assists, deaths, objective score (f32), penta kills, physical damage dealt, to champions and taken (f32 each), ping, quadra kills, sight wards bought, skin, casts of spells 1 to 4, casts of summoner spells 1 and 2, side, a teammate never entered the game, team objective, time since the last disconnection (f32), time played (f32), time disconnected (f32), total damage dealt, to champions and taken (f32 each), total healing, total score (f32), total score rank, crowd control dealt (f32), time dead (f32), units healed, triple kills, true damage dealt, to champions and taken (f32 each), unreal kills, victory points (f32), vision wards bought, away from the keyboard, away after a failed surrender, and win (text).”, where 4.17 has “One value per tally of the match’s mode, the tallies in ascending byte order of their names. An int takes 4 bytes, a float 4, a bool 1, a 64-bit int 8, and text a 16-bit length below 255 then that many bytes. Bytes left over have no effect. A nonzero count of champion kills marks first blood taken.”Chat,textLength: “The length of the text, counted in bytes and excluding the byte that ends it.”, where 4.17 has “The length of the text, counted in bytes and excluding the byte that ends it. A 4.17 client sends at most 255 bytes of text. A client shows the text to its first zero byte.”ClientReady, its layout: no note, where 4.17 has “The tip fields carry VersionSync’s tip bytes, each one outside its valid range negated (0 as -128), and tips cleared where any is. Playing a replay, a client sends all four as zero. The three module fields are always zero.”ClientReady,tipDuration: “How long it stays.”, where 4.17 has “How long it stays, as an entry among the display times in the client’s own settings rather than a length of time.”ClientReady,settings.unused: “Unused; a client may leave any value here, and a server ignores it.”, where 4.17 has “A client returns them as the server sent them.”EffectRemoved,timeLeft: “How long the effect had left to run when it was taken off, in seconds. An effect that ran out carries a value at or near zero, which can fall just below it.”, where 4.17 has “How long the effect had left to run when it was taken off, in seconds.”EmotePlayed,emote: “Which emote, by the number the client knows it as.”, where 4.17 has “Which emote, by the number the client knows it as. A client plays an animation on the champion for 0, 1 and 2, a different one each, and none for 3.”Exit, its layout: “The header names no object: it carries zero.”, where 4.17 has “A client sends it only as it quits by abandoning the match; a match that reaches its end sends none. The header names no object: it carries zero.”GameOptions,options.unused: “Unused; a client writes zero.”, where 4.17 has “Always clear: a client writes the whole byte as 0 or 1.”GreyscaleWhenDead,state.enabled: “Set where the world is drawn without colour.”, where 4.17 has “Set where the world is drawn without colour. Clear, it does not stop a client drawing the world without colour while its champion is down.”MissileState, its layout: “The header names the unit casting, as the casting inside does.”, where 4.17 has “Where the end lies on walkable ground, a client takes the ground’s height there for endY. Where age is not zero, it moves the missile’s trail on by age seconds. The header names the unit casting, as the casting inside does.”MissileState,how.bounced: “Set where the missile has already turned off something it struck.”, where 4.17 has “Set where the missile has bounced. It applies only where age is above zero: a client then moves the missile to its position and places it again from the caster’s position, the end and the facing.”PlayEmote,emote: “Which emote, by the number the client knows it as.”, where 4.17 has “Which emote, by the number the client knows it as. Its four emote keys send 3, 1, 0 and 2, the numbers EmotePlayed plays.”Register,version: “The build the client runs, with each part written out and run together, so 4.20.0.315 arrives as 42000315. A client always carries it, and the answer a server carries back repeats the same number.”, where 4.17 has “The build the client runs, with each part written out and run together, so 4.17.0.233 arrives as 41700233 and 4.17.0.267 as 41700267. A client always carries it, and the answer a server carries back repeats the same number.”Register,proof: “The player identifier and nothing else, enciphered under the key both ends already hold. Deciphering it and finding the identifier beside it is what shows the sender holds the key. A client enciphers the player identifier the request carries.”, where 4.17 has “The player id enciphered with the 16-byte key; a plain copy where the client has no key.”Registered,leading: “Unused; a server writes zero. It occupies the same three bytes a request uses.”, where 4.17 has “Unused; a server writes zero.”Registered,clientId: “The client id the named player holds, counted from zero. A watching client takes the champion of the player holding this client id as its own, so a server answers one with a client id no player in the streamed match holds (see Watching a match).”, where 4.17 has “The client id playerId holds. Where playerId is the client’s own, the client takes this client id as its own and goes on. A watching client takes the champion of the player holding this client id as its own, so a server answers one with a client id no player in the streamed match holds (see Watching a match).”Resume, its layout: no note, where 4.17 has “A client writes only delayed in how; the rest of the byte carries whatever it held there.”Resume,clientId: “A client writes zero; a server ignores it.”, where 4.17 has “A client writes 4294967295, the client id of no client.”Resume,how: “A client clears its lowest bit; the others vary from send to send, and a server ignores them.”, where 4.17 has noneResume,how.delayed: “Set where the match is to start again after a countdown rather than at once.”, where 4.17 has “A client sends it clear.”Resume,how.unused: “Unused; a client may leave any value here, and a server ignores it.”, where 4.17 has “A client leaves these bits unwritten; they carry no meaning, and a server ignores them.”Resumed, its layout: no note, where 4.17 has “The header has no effect. Resuming after the countdown, it keeps input locked and the pause panel open until a countdown of its own ends; resuming at once, it unlocks input and closes the panel.”Resumed,clientId: “The client id of the client that lifted the hold.”, where 4.17 has “The client id of the player who resumed the match, announced in chat in their side’s colour where their champion is known; 4294967295 announces no one.”SpellCastAnswer,syncId: “The movement sync id the cast was made against. Where it is the unit’s latest or newer, a client moves the caster to the cast’s launch point.”, where 4.17 has “It settles whether a client brings the caster’s position in line for this cast, and nothing else.”SpellCastAnswer,how.endCharge: “Set where it ends a charged cast; a client acts on it only while that spell is charging. Clear, a charged cast by the client’s own champion starts the charge display.”, where 4.17 has “Set where the cast ends a charge: a client drops the message unless the caster is charging that same spell. Clear lets a client charge a spell that charges, sending SpellCharge as it does.”StartGame, its layout: no note, where 4.17 has “A client past spawning ignores it.”SurrenderVote,how.inFavour: “Set where the answer is yes.”, where 4.17 has “Set where the answer is yes. A client sends it clear.”SurrenderVote,how.unused: “Unused; a client may leave any value here, and a server ignores it.”, where 4.17 has “Always clear.”SurrenderVoteCalled, its layout: no note, where 4.17 has “A client ignores it unless its menu and its own champion both exist.”SurrenderVoteCalled,how.countAsYes: “Set where the receiving seat is taken to have voted for.”, where 4.17 has “Applies only where side is the client’s own: set shows caller voting yes, clear voting no, opening the menu or not.”SurrenderVoteCalled,how.openTheMenu: “Set where the client shows the vote to the seat.”, where 4.17 has “Set where the vote opens: a client of side opens the vote’s panel from seats and closesIn, which have no other effect; every client is told a vote began, with caller, inFavour, against and side.”SwapItems,from: “The slot the item leaves, which a 4.20 client sends only from 0 to 5.”, where 4.17 has “The slot the item leaves, which a 4.17 client sends only from 0 to 9.”SwapItems,to: “The slot it goes to, never the one from names; a 4.20 client sends only 0 to 5.”, where 4.17 has “The slot it goes to, never the one from names; a 4.17 client sends only 0 to 9.”TipShown,heading: “What the note is headed with, written and padded as above. A server sends the label here and the value it labels in the run above.”, where 4.17 has “What the note is headed with, written and padded as above.”UpgradeSpell,how.evolve: “Set where the point changes the spell rather than raising it.”, where 4.17 has “Set where the player spends an evolution point on the slot rather than levelling it.”UpgradeSpell,how.unused: “Unused; a client may leave any value here, and a server ignores it.”, where 4.17 has “Always clear.”WaypointAck,relocationCount: “How many relocations follow. It counts every movement in the group that carried a token, whether or not the token moved anything.”, where 4.17 has “How many relocations follow.”
4.20
Client builds from 4.20.0.315 up to, not including, 4.21.0.0. Patch notes: V4.20.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 4.20.0.315 | 11 | 0 | 3 | 1bf6d51 | 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: MissileCourse, MissileReport, SpawnBot.
Every message of this range (278)
Against 4.18–4.19
Where a build from 4.20.0.315 up to, not including, 4.21.0.0 differs from one from 4.18.0.271 up to, not including, 4.20.0.315. Anything not named here is the same in both.
Transport
- The packet header differ: see protocol.json.
In 4.20, not in 4.18–4.19
| Message | Sent by | Command | What it does |
|---|---|---|---|
AnimationUnlocked | server | 303 on events | Let a unit’s locked animation be replaced again |
DragonBuffCount | server | 300 on events | Say how many dragon buffs a side holds |
FloatingTextOnMap | server | 296 on events | Float text over a unit, to the clients that can see it |
InventorySnapshotOnMap | server | 295 on events | State a unit’s whole inventory at once, with each slot’s cooldown, to the clients that can see the unit |
SpellSlotChangedForOwner | server | 293 on events | What a server sends only to the client whose unit a spell slot belongs to, to change something about the spell in it, as SpellSlotChanged does for every client |
SpellTargeterHidden | server | 298 on events | Take a spell’s targeter away |
SpellTargeterShown | server | 297 on events | Show a spell’s targeter on the client’s own champion |
UnitDiedOnMap | server | 294 on events | Say a unit died, for what the client draws on its map rather than on the field |
ZoomReport | client | 125 on requests | What a client sends when it notices it has drawn its view further out than it allows itself |
In 4.18–4.19, not in 4.20
| Message | Sent by | Command it had |
|---|---|---|
SpawnBot | server | 207 on events |
Laid out differently
ChainTargets(vectors: one-on-4-20)countis i32 in 4.18–4.19 and u32 in 4.20.targetsis 32 × u32 in 4.18–4.19 and count in count × u32 in 4.20.
ClientEvent(vectors: altar-captured-on-4-20, altar-captured-watched-on-4-20, baron-killed-on-4-20, baron-killed-watched-on-4-20, baron-stolen-on-4-20, buff-on-4-20, consumable-bought-on-4-20, critical-strike-on-4-20, crowd-control-on-4-20, damage-dealt-on-4-20, damage-taken-on-4-20, death-assist-on-4-20, died-on-4-20, dragon-killed-on-4-20, dragon-killed-watched-on-4-20, dragon-stolen-on-4-20, gold-earned-on-4-20, gold-spent-on-4-20, heal-cast-on-4-20, heal-on-4-20, item-bought-on-4-20, item-callout-on-4-20, item-changed-on-4-20, item-removed-on-4-20, item-sold-on-4-20, item-substituted-on-4-20, item-undone-on-4-20, killing-spree-on-4-20, minion-killed-on-4-20, monster-killed-on-4-20, one-on-4-20, removed-on-4-20, spawned-on-4-20, spider-killed-on-4-20, spider-killed-watched-on-4-20, turret-damaged-on-4-20, turret-died-on-4-20, undo-changed-on-4-20)damage.byParentis in 4.20 (u8), afterdamage, and not in 4.18–4.19.heal.byParentis in 4.20 (u8), afterheal, and not in 4.18–4.19.effect.byParentis in 4.20 (u8), aftereffect, and not in 4.18–4.19.
DeathHistory(vectors: one-on-4-20)entries[].damage.byParentis in 4.20 (u8), afterentries[].damage, and not in 4.18–4.19.entries[].heal.byParentis in 4.20 (u8), afterentries[].heal, and not in 4.18–4.19.entries[].effect.byParentis in 4.20 (u8), afterentries[].effect, and not in 4.18–4.19.
HealthBar(vectors: one-on-4-20)barTypeis present when flags.changeType set in 4.18–4.19, and always present in 4.20.
RegionAdded(vectors: another-on-4-20, one-on-4-20)kindtakes 0 circle in 4.18–4.19 and not in 4.20.objectis in 4.20 (u32), afterkind, and not in 4.18–4.19.doesis 4-byte bits in 4.18–4.19 and 1-byte bits in 4.20.does.unusedis at bit 3, 29 bits wide, in 4.18–4.19 and at bit 3, 5 bits wide, in 4.20.clientIdis in 4.18–4.19 and not in 4.20.otherUnitis in 4.18–4.19 and not in 4.20.
SpawnPet(vectors: one-on-4-20)flagshasstartFadedat bit 3 in 4.20, and not in 4.18–4.19.flags.unusedis at bit 3, 5 bits wide, in 4.18–4.19 and at bit 4, 4 bits wide, in 4.20.
VersionSync(vectors: one-on-4-20)reportingMessagesis 19 × u8 in 4.18–4.19 and 18 × u8 in 4.20.
WorldEvent(vectors: a-third-on-4-20, altar-captured-on-4-20, altar-captured-watched-on-4-20, another-on-4-20, baron-killed-on-4-20, baron-killed-watched-on-4-20, baron-stolen-on-4-20, buff-on-4-20, consumable-bought-on-4-20, critical-strike-on-4-20, crowd-control-on-4-20, damage-dealt-on-4-20, damage-taken-on-4-20, death-assist-on-4-20, died-on-4-20, dragon-killed-on-4-20, dragon-killed-watched-on-4-20, dragon-stolen-on-4-20, gold-earned-on-4-20, gold-spent-on-4-20, heal-cast-on-4-20, heal-on-4-20, inhibitor-died-on-4-20, item-bought-on-4-20, item-callout-on-4-20, item-changed-on-4-20, item-removed-on-4-20, item-sold-on-4-20, item-substituted-on-4-20, item-undone-on-4-20, killing-spree-on-4-20, minion-killed-on-4-20, monster-killed-on-4-20, one-on-4-20, removed-on-4-20, spawned-on-4-20, spider-killed-on-4-20, spider-killed-watched-on-4-20, start-notice-three-on-4-20, start-notice-two-on-4-20, turret-damaged-on-4-20, turret-died-on-4-20, undo-changed-on-4-20, welcome-on-4-20)damage.byParentis in 4.20 (u8), afterdamage, and not in 4.18–4.19.heal.byParentis in 4.20 (u8), afterheal, and not in 4.18–4.19.effect.byParentis in 4.20 (u8), aftereffect, and not in 4.18–4.19.
Chapters
- In the messages chapter, a passage holds for 4.18–4.19 and not 4.20: A client given the quick chat bit fails while loading.
- In the objects chapter, a passage holds for 4.18–4.19 and not 4.20:
RegionRemovedfor a region a client does not hold does nothing. - In the objects chapter, a passage holds for 4.18–4.19 and not 4.20: How each kind leaves a client’s world: | Kind | Removed | Its death | | –––––––––– | ———————————————————————————————————————————————————————————–– | ———————————————————————– | | Champion | by
ChampionRemoved, at once | kills it; it is held, and comes back | | Minion, monster, pet | by the client, once it has been dead for its death time, 4 seconds unless its character says otherwise; a newSpawnPetfor an owner removes that owner’s pet before it | starts that wait; a death naming no killer does nothing | | Turret | by the client, 1.2 seconds after its death, or after the time itsSpawnTurretgives; a lane turret is held whereVersionSync’s features keep destroyed turrets (turretsPersist) | kills it | | Inhibitor, nexus | never |BuildingDiedplays its death; it is held, and an inhibitor comes back | | Missile | byDestroyMissile, by its flight ending, or once its caster is removed | | | Particle | byKillParticle, naming it in its body, or once its effect ends | | | Follower | once the unit it follows is removed | | | Marker | only by a soft reconnect | | | Region | byRegionRemoved, once its lifetime runs out (a lifetime of 0 never does), or once the unit it follows is removed | | - In the objects chapter, a passage holds for 4.18–4.19 and not 4.20: A client fails on a
RegionMovednaming a region it does not hold, one whose lifetime has run out included, and a server MUST NOT send one. - In the time chapter, a passage holds for 4.18–4.19 and not 4.20: A client takes the round trip
ClockConvergencereports into its allowance for lateness. - In the time chapter, a passage holds for 4.18–4.19 and not 4.20: A client’s match clock does not run until the first
ClockSyncarrives, which sets it. - In the time chapter, a passage holds for 4.18–4.19 and not 4.20: ## The game clock A client also runs a game clock of its own, whose pace
GameSpeedsets, from 0 to 10 times normal, and whichClockSyncdoes not set. - In the data chapter, a passage holds for 4.18–4.19 and not 4.20: The client has maps 1, 8, 10, 11 and 12.
- In the data chapter, a passage holds for 4.18–4.19 and not 4.20: Each object’s file is
.scoas text or.SCBas binary, and gives its name on itsName=line. - In the data chapter, a passage holds for 4.18–4.19 and not 4.20:
CreateTurretnames a building by its name with_Aafter it. - In the data chapter, a passage holds for 4.18–4.19 and not 4.20: A
CreateTurretnaming no building does nothing. - In the data chapter, a passage holds for 4.18–4.19 and not 4.20: A name’s opening says what the object is:
Turreta turret,BarrackswithoutSpawnan inhibitor,HQ_a nexus. - In the data chapter, a passage holds for 4.18–4.19 and not 4.20: A champion begins at its side’s spawn point moved by an offset from
DATA/Characters/HeroSpawnOffsets.inibin, read from the sectionOrder<n>orChaos<n>under the keysPos<i>andFacing<i>, where i is one more thanCreateChampion’s spawn index. - In the data chapter, a passage holds for 4.18–4.19 and not 4.20: In the section’s name, n is how many players and bots the side has.
- In the data chapter, a passage holds for 4.18–4.19 and not 4.20:
LEVELS/Map1/Scene/MapObjects.mobholds the objects that are not buildings: each side’s spawn point, the minion spawners, navigation points, the marker of the level’s size and the props. - In the data chapter, a passage holds for 4.18–4.19 and not 4.20: The grid’s name is the one the mode’s navigation setting gives.
- In the data chapter, a passage holds for 4.18–4.19 and not 4.20: Map 1 adds
LEVELS/Map1/Items.inibinto the items, and figures for a whole mode are inDATA/Globals/, such asCLASSIC_Stats.inibinandHealthGain.inibin. - In the data chapter, a passage holds for 4.18–4.19 and not 4.20: A champion’s spells and attacks are in
DATA/Characters/<Champion>/Spells/<Spell>.inibin. - In the joining chapter, a passage holds for 4.18–4.19 and not 4.20: The first answer for a client id stands, and a later one for the same client id changes nothing.
- In the joining chapter, a passage holds for 4.18–4.19 and not 4.20: A client uses which client id stands for which player for names, sides and loading cards.
- In the joining chapter, a passage holds for 4.18–4.19 and not 4.20: A client loads only where
VersionSyncsetsagreement.buildMatches. - In the joining chapter, a passage holds for 4.18–4.19 and not 4.20: A client never compares the two otherwise: the message’s build text appears only in that notice.
- In the joining chapter, a passage holds for 4.18–4.19 and not 4.20: Every seat a player holds needs its place in
Roster, itsSeatNameand itsSeatChampion; a client shows a seat it lacks them for as an empty card. - In the joining chapter, a passage holds for 4.18–4.19 and not 4.20: ## The loading screen What a client draws while it loads comes from what it has been sent by then (see the spawn run below for what it takes before
CharacterSelected). - In the joining chapter, a passage holds for 4.18–4.19 and not 4.20: Each
SeatLoadProgressupdates the card of the seat it names, and a client draws its own card only as a server returns its own reports. - In the joining chapter, a passage holds for 4.18–4.19 and not 4.20: Between
ClientReadyandStartGamea client keeps its loading screen up with its own progress full, and sendsLoadingProgressagain about every half a second. - In the units chapter, a passage holds for 4.18–4.19 and not 4.20: A client drops a
CreateChampionor aCreateNeutralthat arrives before it sendsCharacterSelected, reconnecting included. - In the vision chapter, a passage holds for 4.18–4.19 and not 4.20: A client makes only circular regions.
- In the vision chapter, a passage holds for 4.18–4.19 and not 4.20: A client’s regions see over walls or not as the region says.
- In the vision chapter, a passage holds for 4.18–4.19 and not 4.20: A client draws its fog of war, or the map with no darkening, as
FogSetandFogToggledsay. - In the vision chapter, a passage holds for 4.18–4.19 and not 4.20:
UnitDiedOnMap,InventorySnapshotOnMap,FloatingTextOnMapandSpellSlotChangedForOwnerdo not exist, so a server sends both audiences ofUnitDied,InventorySnapshot,FloatingTextandSpellSlotChangedunder the one command each. - In the vision chapter, a passage holds for 4.20 and not 4.18–4.19: Some messages exist in more than one form, each for its own audience, laid out alike: | For every client | For the clients that can see the unit | For the unit’s own client | | —————–– | ———————————–– | ––––––––––––– | |
UnitDied|UnitDiedOnMap| | |InventorySnapshot|InventorySnapshotOnMap| | |FloatingText|FloatingTextOnMap| | |SpellSlotChanged| |SpellSlotChangedForOwner| A server sends the narrower audience as a message of its own, and sends the wider form only where every client is to know. - In the movement chapter, a passage holds for 4.18–4.19 and not 4.20: Where its player has movement prediction on, a client starts its champion toward the point it asked for, and puts it back where it was if no path arrives within 2 seconds.
- In the match chapter, a passage holds for 4.18–4.19 and not 4.20: A client shows the speed
GameSpeedsets over its champion. - In the match chapter, a passage holds for 4.18–4.19 and not 4.20: Sent during a hold,
GameSpeedtakes effect as the match resumes. - In the match chapter, a passage holds for 4.18–4.19 and not 4.20: A client puts 0 in the client id of
PauseandResume, the same id as the first seat’s, so a server takes no seat from that field. - In the match chapter, a passage holds for 4.18–4.19 and not 4.20: A client begins a hold only where the time
Pausedcarries is above zero and the match is not already held. - In the match chapter, a passage holds for 4.18–4.19 and not 4.20: A client shows a tournament’s hold, crediting the seat that asked, where the message says it is one.
- In the match chapter, a passage holds for 4.18–4.19 and not 4.20: A client that receives
GameEndedwhile still loading leaves at once. - In the match chapter, a passage holds for 4.18–4.19 and not 4.20: A client shows a notice in chat for
PlayerDisconnected. - In the match chapter, a passage holds for 4.18–4.19 and not 4.20:
Reconnectedannounces that another player came back. - In the match chapter, a passage holds for 4.18–4.19 and not 4.20: A client’s view report,
Camera, goes out as its view moves at least 200 units, at most every tenth of a second, and never while its view is locked. - In the match chapter, a passage holds for 4.18–4.19 and not 4.20: Before loading is done, a client waits 60 seconds for an acknowledgement rather than 15.
- In the match chapter, a passage holds for 4.18–4.19 and not 4.20: In play a client sends nothing on its own to show it is still there: what it sends answers what it is sent (
ClockReply,TransientAck,WaypointAck) or follows from its player, andCameragoes out only as its view moves. - In the combat chapter, a passage holds for 4.18–4.19 and not 4.20: After
StopAttack, a client clears the unit’s attack whatever the message’s flags ask besides. - In the combat chapter, a passage holds for 4.18–4.19 and not 4.20: How long a swing takes comes from the champion’s data and its attack speed.
- In the combat chapter, a passage holds for 4.18–4.19 and not 4.20:
Damageshows a figure for the results that carry one, normal and critical; zero is the result that shows the unit as invulnerable, not a plain hit. - In the combat chapter, a passage holds for 4.18–4.19 and not 4.20: A client never walks its champion into range by itself: a server sends the
WaypointGroupthat takes it there. - In the combat chapter, a passage holds for 4.18–4.19 and not 4.20: Each
Attackplays one swing, cutting off any swing still under way. - In the combat chapter, a passage holds for 4.18–4.19 and not 4.20: A melee swing carries a missile id of zero.
- In the combat chapter, a passage holds for 4.18–4.19 and not 4.20: A client shows nothing at all for
Damageunless it holds both the unit hurt and the unit dealing it. - In the combat chapter, a passage holds for 4.18–4.19 and not 4.20: A client ignores
UnitDiedorChampionDiednaming a unit already dead, and puts a unit down only where a killer is named. - In the combat chapter, a passage holds for 4.18–4.19 and not 4.20: A client ignores
ChampionDiedthat credits no killer. - In the combat chapter, a passage holds for 4.20 and not 4.18–4.19: A server also reports a death for what a client draws on its map with
UnitDiedOnMap. - In the spells chapter, a passage holds for 4.18–4.19 and not 4.20: A client casts nothing for a casting record whose length disagrees with its count of targets.
- In the spells chapter, a passage holds for 4.18–4.19 and not 4.20: The casting record names the spell by the hash of its name, and a client casts nothing for a spell it has not loaded.
- In the spells chapter, a passage holds for 4.18–4.19 and not 4.20:
SpellCastAnsweris both the answer to the client that asked and what every client sees of the cast; there is nothing else to send it. - In the spells chapter, a passage holds for 4.18–4.19 and not 4.20: A client spends the point as it sends
UpgradeSpell. - In the spells chapter, a passage holds for 4.18–4.19 and not 4.20: A client asks only where the champion has a point to spend, is of the level the slot requires, and the spell is below its highest level.
- In the shop chapter, a passage holds for 4.18–4.19 and not 4.20:
ItemAddedplaces the item and removes nothing: a server sends aRemoveItemAnswerfor each part an item built from others takes up. - In the shop chapter, a passage holds for 4.18–4.19 and not 4.20: A purchase a server never answers still plays the sound of buying.
- In the shop chapter, a passage holds for 4.18–4.19 and not 4.20: A purchase a server never answers still lists the item among recent purchases.
- In the objectives chapter, a passage holds for 4.18–4.19 and not 4.20: Everything a client shows of a capture point (who holds it, where it stands, how far it is taken) comes from the unit
CapturePointChangedbinds it to, so a server hands a point over by changing the unit’s side and moves it toward capture by changing the unit’s resource. - In the objectives chapter, a passage holds for 4.18–4.19 and not 4.20: A client acts on
RespawnPointonly where it shows the capture point panel. - In the communication chapter, a passage holds for 4.18–4.19 and not 4.20: A client shows how many lines
ChatAllowanceleaves its player. - In the communication chapter, a passage holds for 4.18–4.19 and not 4.20: A client shows no ping its server marks as throttled, and notes in its own chat that the player is pinging too often.
- In the votes chapter, a passage holds for 4.18–4.19 and not 4.20: A client ignores
SurrenderVoteCalledthat arrives before its own champion is on the field. - In the votes chapter, a passage holds for 4.18–4.19 and not 4.20: Where the version answer’s features turn the commands on, a client also sends
BalanceVoteRefused, a vote against, as its player types/noequalize. - In the interface chapter, a passage holds for 4.20 and not 4.18–4.19: A client reports a view drawn further out than it allows with
ZoomReport; a server MAY ignore it.