Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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: AnimationAdvanced, AnimationOverrides, AppearanceCleared, AscendedUnit, AttackIndicators, AttackSpeedBounds, BalanceResult, BalanceVote, BalanceVoteAnswer, BalanceVoteRefused, BotKick, BounceMissile, CampCleared, CampMarker, CampOpened, CampTimer, CancelTargeting, CapturePointChanged, CapturePointValue, ChampionDied, ChampionRemoved, ChampionStats, CharacterPreload, ChatAllowance, ContextEmote, CreateFollower, CursorRings, DeathTimer, EffectAddedGroup, EffectCounter, EffectCountGroup, EffectRemovedGroup, EffectReplacedGroup, EmitterPause, EnterTeamSight, FadeSounds, FloatingTextOnMap, FogSet, FollowerMaster, ForceDeath, GameOptions, GroundAttackMode, HealthBar, HoverIndicator, HoverTarget, InhibitorDied, InventorySlot, InventorySnapshot, InventorySnapshotOnMap, ItemCharges, ItemSubstitution, ItemUsed, LeaveTeamSight, LevelCap, MapProp, MapPropChanged, MarkerMoved, MatchStarted, MinimapIcon, MinionKillCount, MissileCourse, MissileLaunched, MissileRetarget, MissileSpeed, MusicCue, NavigationFlags, ParticleEnterTeamSight, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RegionMoved, ResourceDisplay, ResourceKindChanged, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, ShopEnabled, ShopUndo, ShopUndoCount, Shutdown, Situation, SoftReconnect, SoundPlayed, SpawnBot, SpawnMarker, SpawnTurret, SpellCharge, SpellCharges, SpellCostChanged, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, SpellRangeChanged, SpellRankLimits, SpellSlotChanged, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, SpellToggled, StatisticIncremented, StreamChunk, StreamChunkRange, StreamMetadata, StreamRequest, SubstitutionCleared, SurrenderAllowed, SwapItems, SystemMessage, TeamChanged, TeamScore, ThemeMusic, TipEvent, TipShown, UiHighlight, UnitDiedOnMap, UnitText, UseObject, VictoryDance, VoiceCommand, VoiceOverride, ZoomReport.

0.8.13.26–0.9.22.13

Client builds from 0.8.13.26 up to, not including, 0.9.22.14. Patch notes: V0.8.13.26.

Build checkedPassedFailedSkippedCommitDate
0.8.13.268062e341b12026-11-04

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: AfkWarning, BotDebug, CameraLockSet, CloseShop, DeathHistory, Exit, FadeMinions, FadeRemoved, FadeTo, FogToggled, GameSpeed, GreyscaleWhenDead, HudDisabled, HudHighlightToggled, HudHighlighted, InputLock, InputLockToggled, JoinSide, LoadingProgress, MinimapHighlighted, MissileHits, MissileReport, MoveCamera, NexusIdle, NexusSkin, ObjectiveHidden, ObjectiveReplaced, ObjectiveShown, Paused, PlayerDisconnected, Replication, Resumed, Roster, SeatChampion, SeatLoadProgress, SeatName, ShopHighlighted, SideTextHidden, SideTextRefreshed, SideTextShown, SpellNameChanged, SpellNumbers, SpellTargetingChanged, SurrenderStatus, SurrenderVote, SurrenderVoteCalled, TransientAck, TutorialChatLine, TutorialPopup, TutorialPopupClosed, UnitHighlightRemoved, UnitHighlighted, VoiceEvent, VoiceEventDone, VolumeMuted, WaypointAck, WaypointGroup, WaypointGroupAtSpeed, WorldEvent.

Every message of this range (98)

0.9.22.14–0.9.22.15

Client builds from 0.9.22.14 up to, not including, 0.9.22.16. Patch notes: V0.9.22.14.

Build checkedPassedFailedSkippedCommitDate
0.9.22.14905a00b64a2026-11-04

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: FadeMinions, GreyscaleWhenDead, HudDisabled, HudHighlightToggled, HudHighlighted, InputLock, MinimapHighlighted, MissileHits, NexusIdle, NexusSkin, ObjectiveHidden, ObjectiveReplaced, ObjectiveShown, ShopHighlighted, SideTextHidden, SideTextRefreshed, SideTextShown, SpellNameChanged, SpellNumbers, SurrenderStatus, SurrenderVote, SurrenderVoteCalled, TutorialChatLine, VoiceEventDone, VolumeMuted, WorldEvent.

Every message of this range (132)
MessageCommand
AfkWarning146
Announcement66
AppearancePopped91
AppearancePushed90
Attack53
AttackFrom54
Autocast40
BotDebug105
BotState107
BotTargets106
BuildingDied73
BuyItem41
Camera59
CameraAck110
CameraBehaviour94
CameraLock60
CameraLockSet128
CastSpell35
ChainTargets103
CharacterSelected15
Chat0
ClientEvent108
ClientFinished17
ClientReady16
ClientVersion67
ClockConvergence76
ClockReply75
ClockSync74
CloseShop147
CooldownSet33
CreateChampion6
CreateNeutral7
CreateTurret8
Damage23
DeathHistory112
DestroyMissile102
EffectAdded37
EffectCount80
EffectRemoved39
EffectReplaced38
EmotePlayed11
EnterLocalSight57
EnterSight55
Exit115
ExperienceGained28
FaceDirection93
FacePosition93
FadeRemoved138
FadeTo137
FloatingText30
FogToggled126
GameEnded14
GameSpeed136
GoldGained27
GoldRedirect89
InhibitorState65
InputLocksFlipped124
InputLockToggled125
ItemAdded42
JoinSide100
KillParticle22
LeaveLocalSight58
LeaveSight56
LevelUp47
LoadingProgress113
Loadout83
MapPing25
MatchIdentity111
MissileReport63
MissileState63
MoveCamera131
MovementBounds127
MoveOrder20
ParticlesCreated21
Path77
PathWithSpeed78
Paused134
PingPlaced26
PlayAnimation9
PlayEmote10
PlayerDisconnected116
QueryStatus3
QueryStatusAnswer4
Reconnected118
ReconnectedInMatch117
RegionAdded86
RegionAttached85
RegionRemoved84
Register0
Registered0
RemoveItem43
RemoveItemAnswer44
Replication129
Respawned72
Resumed135
ResyncEnded119
Revived71
Roster103
SeatChampion101
SeatLoadProgress114
SeatName102
SelectObject61
SpawnEnd12
SpawnFromBarracks49
SpawnPet32
SpawnStart5
SpawnUnit87
SpellCastAnswer36
SpellCooldown33
SpellTargetingChanged133
SpellUpgraded19
StartGame13
StatTick64
StopAnimation88
StopAttack48
SwapItemsAnswer46
TargetHeldChampion70
TargetUnit69
TransientAck130
TutorialPopup144
TutorialPopupClosed145
UnitDied34
UnitHighlighted142
UnitHighlightRemoved143
UnitSpoke30
UnitStopped24
UpgradeSpell18
VersionSync68
VoiceEvent132
WaypointAck120
WaypointGroup121
WaypointGroupAtSpeed122

Against 0.8.13.26–0.9.22.13

Where a build from 0.9.22.14 up to, not including, 0.9.22.16 differs from one from 0.8.13.26 up to, not including, 0.9.22.14. Anything not named here is the same in both.

Transport

In 0.9.22.14–0.9.22.15, not in 0.8.13.26–0.9.22.13

MessageSent byCommandWhat it does
AfkWarningserver146 on eventsWarn the player that they seem to be away, in a popup with one button that only closes it
BotDebugserver105 on eventsWhat a server sends describing what a bot is thinking
CameraLockSetserver128 on eventsLock the camera to the champion or free it
CloseShopserver147 on eventsClose a client’s shop
DeathHistoryserver112 on eventsSay what led to a death, so the client can lay it out
Exitclient115 on requestsWhat a client sends as it leaves
FadeRemovedserver138 on eventsUndo a fade on a unit
FadeToserver137 on eventsFade a unit towards an opacity over time
FogToggledserver126 on eventsTurn the drawing of the fog of war off where it is on, or on where it is off
GameSpeedserver136 on eventsSet how fast the game’s clock runs
InputLockToggledserver125 on eventsTurn kinds of input off where they are on, or on where they are off
InputLocksFlippedclient124 on requestsWhat a client sends after flipping kinds of its own input, off where they were on and on where they were off: as a camera move a script drives starts and ends, and at other moments of its own
JoinSideclient100 on rosterAsk for a seat on one of the two sides while the match is being put together
LoadingProgressclient113 on requestsWhat a client sends while a match loads, saying how far it has got
MissileReportclient63 on requestsReport where a missile that flies straight is and where it is going
MoveCameraserver131 on eventsCarry a client’s view from one place to another
MovementBoundsserver127 on eventsSet a circle that a client keeps its view or its champion’s orders within
Pausedserver134 on eventsPut the match on hold
PlayerDisconnectedserver116 on eventsWhat a server sends as a player’s client drops out
Reconnectedserver118 on eventsSay a client has reconnected
ReconnectedInMatchclient117 on requestsWhat a client sends right after the server answers its registration
Replicationserver129 on transientSay what has changed about units a client can see
Resumedserver135 on eventsTake the match off hold
ResyncEndedserver119 on eventsEnd the resynchronising a client began on its own Reconnected, after which it takes spawns again as they come
Rosterserver103 on rosterLay out both sides and who is on them, while the match is being put together
SeatChampionserver101 on rosterSay which champion a seat is playing, while the match is being put together
SeatLoadProgressserver114 on transientTell everyone how far one seat has got through loading, and how it is holding up
SeatNameserver102 on rosterSay what a seat is called, while the match is being put together
SpellTargetingChangedserver133 on eventsChange how a spell already in a unit’s slot is aimed
TargetHeldChampionserver70 on eventsMark that a unit is attacking a champion, or to take the mark away
TransientAckclient130 on requestsSay a batch of changes arrived, naming which batch
TutorialPopupserver144 on eventsOpen the tutorial’s popup: a caption, this text and a single button, which a client answers with TutorialPopupClosed
TutorialPopupClosedclient145 on requestsWhat a client sends as its player presses the button of the tutorial’s popup (TutorialPopup)
UnitHighlightRemovedserver143 on eventsTake away the light UnitHighlighted put on a unit
UnitHighlightedserver142 on eventsOutline a unit with a pulsing light, as a tutorial does, until UnitHighlightRemoved
VoiceEventserver132 on eventsPlay a voice event
WaypointAckclient120 on requestsWhat a client sends once it has taken in a group of movements, naming which group
WaypointGroupserver121 on transientMove units
WaypointGroupAtSpeedserver122 on eventsMove units along paths of its own choosing, stating how each one travels rather than leaving it to the receiving end

In 0.8.13.26–0.9.22.13, not in 0.9.22.14–0.9.22.15

MessageSent byCommand it had
PlaceTurretserver55 on events
ValueGroup0server49 on events
ValueGroup1server50 on events
ValueGroup2server51 on events
ValueGroup3server52 on events

Commands

These differ only in their command. Each row is a run of commands moved by the same amount:

Laid out differently

  • Attack
    • Its command is 57 in 0.8.13.26–0.9.22.13 and 53 in 0.9.22.14–0.9.22.15.
    • slot is in 0.9.22.14–0.9.22.15 (u8), after missile, and not in 0.8.13.26–0.9.22.13.
  • AttackFrom (vectors: one-on-0-9-22-14)
    • Its command is 58 in 0.8.13.26–0.9.22.13 and 54 in 0.9.22.14–0.9.22.15.
    • slot is in 0.9.22.14–0.9.22.15 (u8), after missile, and not in 0.8.13.26–0.9.22.13.
  • Chat
    • speaker is in 0.9.22.14–0.9.22.15 (u32) at the start, and not in 0.8.13.26–0.9.22.13.
    • audience is in 0.9.22.14–0.9.22.15 (u32), after speaker, and not in 0.8.13.26–0.9.22.13.
    • textLength is in 0.9.22.14–0.9.22.15 (u32), after audience, and not in 0.8.13.26–0.9.22.13.
    • text is text, ended by a zero byte in 0.8.13.26–0.9.22.13 and text, sized by textLength in 0.9.22.14–0.9.22.15.
    • terminator is in 0.9.22.14–0.9.22.15 (bytes, 1), after text, and not in 0.8.13.26–0.9.22.13.
  • ClientEvent (vectors: buff-on-0-9-22-14, consumable-bought-on-0-9-22-14, critical-strike-on-0-9-22-14, damage-dealt-on-0-9-22-14, damage-taken-on-0-9-22-14, death-assist-on-0-9-22-14, died-on-0-9-22-14, gold-earned-on-0-9-22-14, gold-spent-on-0-9-22-14, heal-cast-on-0-9-22-14, heal-on-0-9-22-14, killing-spree-on-0-9-22-14, one-on-0-9-22-14)
    • Its command is 110 in 0.8.13.26–0.9.22.13 and 108 in 0.9.22.14–0.9.22.15.
    • event takes 55 playerLeft, 56 playerReconnected, 62 itemBought in 0.9.22.14–0.9.22.15 and not in 0.8.13.26–0.9.22.13.
    • value is in 0.9.22.14–0.9.22.15 (u32), after spent, and not in 0.8.13.26–0.9.22.13.
    • heal.unused is in 0.9.22.14–0.9.22.15 (u32), after heal.parentScript, and not in 0.8.13.26–0.9.22.13.
    • heal.unusedToo is in 0.9.22.14–0.9.22.15 (u32), after heal.unused, and not in 0.8.13.26–0.9.22.13.
    • effect.unused is in 0.9.22.14–0.9.22.15 (u32), after effect.parentScript, and not in 0.8.13.26–0.9.22.13.
    • effect.unusedToo is in 0.9.22.14–0.9.22.15 (u32), after effect.unused, and not in 0.8.13.26–0.9.22.13.
    • assist.share is in 0.9.22.14–0.9.22.15 (f32), after assist.magical, and not in 0.8.13.26–0.9.22.13.
    • assist.gold is in 0.9.22.14–0.9.22.15 (f32), after assist.share, and not in 0.8.13.26–0.9.22.13.
    • kill is in 0.9.22.14–0.9.22.15 (record), after assist.gold, and not in 0.8.13.26–0.9.22.13.
  • CooldownSet
    • token is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
    • clientByte is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
  • CreateChampion
    • skillLevel is in 0.9.22.14–0.9.22.15 (u8), after node, and not in 0.8.13.26–0.9.22.13.
    • bot is in 0.9.22.14–0.9.22.15 (u8), after side, and not in 0.8.13.26–0.9.22.13.
    • skin is in 0.9.22.14–0.9.22.15 (i32), after bot, and not in 0.8.13.26–0.9.22.13.
    • asset is text, ended by a zero byte in 0.8.13.26–0.9.22.13 and text, 128 bytes in 0.9.22.14–0.9.22.15.
    • flag is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
  • CreateNeutral
    • campAtX is in 0.9.22.14–0.9.22.15 (f32), after atZ, and not in 0.8.13.26–0.9.22.13.
    • campAtY is in 0.9.22.14–0.9.22.15 (f32), after campAtX, and not in 0.8.13.26–0.9.22.13.
    • campAtZ is in 0.9.22.14–0.9.22.15 (f32), after campAtY, and not in 0.8.13.26–0.9.22.13.
  • CreateTurret (vectors: one-on-0-9-22-14)
    • atX is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
    • atY is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
    • atZ is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
    • asset is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
  • Damage
    • how is in 0.9.22.14–0.9.22.15 (1-byte bits) at the start, and not in 0.8.13.26–0.9.22.13.
    • result is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
  • EffectAdded
    • runningFor is in 0.9.22.14–0.9.22.15 (f32), after effect, and not in 0.8.13.26–0.9.22.13.
  • InhibitorState (vectors: down-on-0-9-22-14)
    • Its command is 69 in 0.8.13.26–0.9.22.13 and 65 in 0.9.22.14–0.9.22.15.
    • duration is u32 in 0.8.13.26–0.9.22.13 and i32 in 0.9.22.14–0.9.22.15.
  • Loadout (vectors: one-on-0-9-22-14)
    • Its command is 86 in 0.8.13.26–0.9.22.13 and 83 in 0.9.22.14–0.9.22.15.
    • runes is 8 × u32 in 0.8.13.26–0.9.22.13 and 30 × u32 in 0.9.22.14–0.9.22.15.
  • MapPing
    • target is in 0.9.22.14–0.9.22.15 (u32), after z, and not in 0.8.13.26–0.9.22.13.
    • clientId is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
  • MissileState (vectors: one-on-0-9-22-14)
    • Its command is 67 in 0.8.13.26–0.9.22.13 and 63 in 0.9.22.14–0.9.22.15.
    • keptX is in 0.9.22.14–0.9.22.15 (f32), after atZ, and not in 0.8.13.26–0.9.22.13.
    • keptY is in 0.9.22.14–0.9.22.15 (f32), after keptX, and not in 0.8.13.26–0.9.22.13.
    • keptZ is in 0.9.22.14–0.9.22.15 (f32), after keptY, and not in 0.8.13.26–0.9.22.13.
    • directionX is in 0.9.22.14–0.9.22.15 (f32), after keptZ, and not in 0.8.13.26–0.9.22.13.
    • directionY is in 0.9.22.14–0.9.22.15 (f32), after directionX, and not in 0.8.13.26–0.9.22.13.
    • directionZ is in 0.9.22.14–0.9.22.15 (f32), after directionY, and not in 0.8.13.26–0.9.22.13.
    • how is in 0.9.22.14–0.9.22.15 (1-byte bits), after directionZ, and not in 0.8.13.26–0.9.22.13.
  • ParticlesCreated (vectors: one-on-0-9-22-14)
    • groupCount is in 0.9.22.14–0.9.22.15 (u8) at the start, and not in 0.8.13.26–0.9.22.13.
    • groups is in 0.9.22.14–0.9.22.15 (count in groupCount × ParticleGroup), after groupCount, and not in 0.8.13.26–0.9.22.13.
    • particle is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
    • flags is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
    • unknown is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
    • boundTo is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
    • effect is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
    • unknownB is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
    • atX is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
    • atY is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
    • atZ is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
    • target is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
    • unknownC is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
  • PlayAnimation (vectors: one-on-0-9-22-14)
    • flags has locked at bit 6 in 0.9.22.14–0.9.22.15, and not in 0.8.13.26–0.9.22.13.
    • flags has fadeAtEnd at bit 7 in 0.9.22.14–0.9.22.15, and not in 0.8.13.26–0.9.22.13.
    • flags.unused is at bit 6, 26 bits wide, in 0.8.13.26–0.9.22.13 and at bit 8, 24 bits wide, in 0.9.22.14–0.9.22.15.
  • RegionAdded
    • Its command is 89 in 0.8.13.26–0.9.22.13 and 86 in 0.9.22.14–0.9.22.15.
    • otherExtra is in 0.9.22.14–0.9.22.15 (u32), after extra, and not in 0.8.13.26–0.9.22.13.
  • RegionAttached
    • Its command is 88 in 0.8.13.26–0.9.22.13 and 85 in 0.9.22.14–0.9.22.15.
    • otherExtra is in 0.9.22.14–0.9.22.15 (u32), after extra, and not in 0.8.13.26–0.9.22.13.
  • SpawnFromBarracks (vectors: one-on-0-9-22-14)
    • Its command is 53 in 0.8.13.26–0.9.22.13 and 49 in 0.9.22.14–0.9.22.15.
    • unread is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
  • SpawnUnit (vectors: one-on-0-9-22-14)
    • Its command is 90 in 0.8.13.26–0.9.22.13 and 87 in 0.9.22.14–0.9.22.15.
    • team is u32 in 0.8.13.26–0.9.22.13 and 4-byte bits in 0.9.22.14–0.9.22.15.
    • team has team at bit 0 in 0.9.22.14–0.9.22.15, and not in 0.8.13.26–0.9.22.13.
    • team has unused at bit 9 in 0.9.22.14–0.9.22.15, and not in 0.8.13.26–0.9.22.13.
    • flags is in 0.9.22.14–0.9.22.15 (1-byte bits), after team, and not in 0.8.13.26–0.9.22.13.
  • SpellCooldown
    • unread is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
  • StopAttack
    • how is in 0.9.22.14–0.9.22.15 (1-byte bits) at the start, and not in 0.8.13.26–0.9.22.13.
    • keepAnimating is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
    • forceCast is in 0.8.13.26–0.9.22.13 and not in 0.9.22.14–0.9.22.15.
  • UnitStopped (vectors: one-on-0-9-22-14)
    • syncId is in 0.9.22.14–0.9.22.15 (i32), after facingZ, and not in 0.8.13.26–0.9.22.13.
  • VersionSync
    • Its command is 72 in 0.8.13.26–0.9.22.13 and 68 in 0.9.22.14–0.9.22.15.
    • map is in 0.9.22.14–0.9.22.15 (i32), after agreement, and not in 0.8.13.26–0.9.22.13.
    • seats is in 0.9.22.14–0.9.22.15 (12 × Seat), after map, and not in 0.8.13.26–0.9.22.13.
    • build is text, ended by a zero byte in 0.8.13.26–0.9.22.13 and text, 256 bytes in 0.9.22.14–0.9.22.15.

Chapters

  • In the objects chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: No region id stands for no region.
  • In the objects chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A client acts on that Registered alone and ignores every other, so it pairs no other player’s player id with a client id.
  • In the objects chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A client given a create message for a net id it already holds stops.
  • In the objects chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: Map 1 holds the six Barracks names, HQ_T1, HQ_T2, the six spawn points named __P_Order_Spawn_Barracks__ and __P_Chaos_Spawn_Barracks__ with C01, L01 or R01, and the shops OrderShop01 and ChaosShop, whose identifier is 4279618595.
  • In the objects chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: CreateTurret creates a turret of its own at the place its body gives, rather than naming one the map holds.
  • In the ordering chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A client compares no numbers on movements: it takes every path as it arrives, whatever syncId it carries.
  • In the ordering chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A client sends a view report again until a server answers with its number.
  • In the space chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A champion is created facing +z, whatever its map’s table of spawn positions says, and so is a monster.
  • In the space chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A client loads the map its own settings name, map 1 where they name none, and has data for map 1 alone, Summoner’s Rift.
  • In the time chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A client’s match clock starts at 0 as the client finishes loading, and runs on the client’s own timer from then; a ClockSync sets it wherever it stands.
  • In the values chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A cast’s slot also takes 64, for a basic attack.
  • In the values chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A champion’s own book ends at slot 22.
  • In the values chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A champion’s inventory ends at slot 14, and holds neither a trinket nor an item for recalling.
  • In the data chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: The client has map 1 alone.
  • In the data chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A name’s opening says what the object is: Turret a turret, Barracks an inhibitor, HQ_ a nexus.
  • In the data chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A champion begins on its side’s spawn point itself, or at (6000, 0, 6000) on a map with none.
  • In the data chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: No map adds items of its own, and there are no figures for a whole mode.
  • In the joining chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A client whose command line holds no double quote ends.
  • In the joining chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A client waits for the answer naming its own player id as long as it takes, and offers its player no choice.
  • In the joining chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: VersionSync names neither the map nor anyone at the match: a client loads the map its own configuration names (see The client’s data).
  • In the vision chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: EnterSight states nothing but the unit it names, and only marks that unit as in view.
  • In the vision chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: LeaveLocalSight takes a unit out of what one client alone can see, and leaves it held.
  • In the vision chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: GoldGained shows floating gold only for the client’s own champion.
  • In the movement chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A client reads nothing of EnterSight.
  • In the movement chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A movement with no points empties the unit’s path.
  • In the movement chapter, a passage holds for 0.9.22.14–0.9.22.15 and not 0.8.13.26–0.9.22.13: A server moves the champion by answering the MoveOrder with a WaypointGroup, and the client returns that group’s syncId in a WaypointAck (see Ordering).
  • In the replication chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A server grants gold with GoldGained.
  • In the match chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: StatTick asks every unit’s stats to advance by that span.
  • In the match chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: A client whose connection drops, while loading or in play, shows its player that it was disconnected, and neither connects again nor leaves.
  • In the combat chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: Result 0 of Damage is a notice a client shows for only one in every thirty it receives, and result 5 a miss, shown for its player’s own unit.
  • In the effects chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: ParticlesCreated starts one particle, named by the message’s own id.
  • In the shop chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: An item’s own data says whether it can be bought.
  • In the shop chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: Opening the shop sends nothing either.
  • In the shop chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: For an item built from others, a client asks only where a slot is free or holds one of its parts, and where the champion’s gold covers what remains after the parts it holds.
  • In the communication chapter, a passage holds for 0.9.22.14–0.9.22.15 and not 0.8.13.26–0.9.22.13: VoiceEvent carries only the event’s name and asks for no answer.
  • In the interface chapter, a passage holds for 0.8.13.26–0.9.22.13 and not 0.9.22.14–0.9.22.15: No message locks a client’s input, in either direction.
  • In the interface chapter, a passage holds for 0.9.22.14–0.9.22.15 and not 0.8.13.26–0.9.22.13: A server locks and unlocks input with InputLockToggled alone.

Only notes

These read the same on the wire, and only their notes change. What each says in 0.9.22.14–0.9.22.15:

  • Autocast, slot: “The slot cast by itself, from -1 to 44. A client takes a value outside that range as it stands. What -1 does is not recorded.”, where 0.8.13.26–0.9.22.13 has “The slot cast by itself, from -1 to 22. A client takes a value outside that range as it stands. What -1 does is not recorded.”
  • CastSpell, how.slot: “Which slot is being cast from, from 0 to 44. A client still sends a larger slot, its low seven bits only.”, where 0.8.13.26–0.9.22.13 has “Which slot is being cast from, from 0 to 22. A client still sends a larger slot, its low seven bits only.”
  • ExperienceGained, unit: “The unit granted it, a champion. A client fails for any other unit it holds, and does nothing for a unit it does not know.”, where 0.8.13.26–0.9.22.13 has “The unit granted it, one with a mind, such as a champion or a minion. A client does nothing for a unit it does not know.”
  • ItemAdded, its layout: “There is no charges field: a client takes an item’s charges from the item’s own data. A client applies it only to a champion’s item slots.”, where 0.8.13.26–0.9.22.13 has “There is no charges field: a client takes an item’s charges from the item’s own data. A server sends it to units nobody is buying for.”
  • ItemAdded, slot: “The slot it went to, 0 to 36. A larger value than 36 has no defined effect.”, where 0.8.13.26–0.9.22.13 has “The slot it went to, 0 to 14. A larger value than 14 has no defined effect.”
  • PingPlaced, its layout: “Where target is a unit it holds, of a kind that takes notices, a client shows a notice for it, but not again for the next ping on the same target; it keeps the last target of each side apart. The header names the champion that placed the ping, as source does.”, where 0.8.13.26–0.9.22.13 has “A client marks atX and atZ on each of its two map views, and only while it shows a map. The header can carry zero.”
  • PingPlaced, atY: “Its height, in world units. A client does not use it to place the ping.”, where 0.8.13.26–0.9.22.13 has “A client reads nothing here.”
  • PingPlaced, target: “The unit pinged, or zero where a place was pinged instead.”, where 0.8.13.26–0.9.22.13 has “A client reads nothing here.”
  • PingPlaced, source: “The unit that placed it.”, where 0.8.13.26–0.9.22.13 has “A client reads nothing here.”
  • RemoveItemAnswer, slot: “Which slot, 0 to 36. A larger value than 36 has no defined effect.”, where 0.8.13.26–0.9.22.13 has “Which slot, 0 to 14. A larger value than 14 has no defined effect.”
  • SwapItemsAnswer, from: “The slot the item left, 0 to 36. A client swaps the two slots named whatever their values, so a server keeps both within range.”, where 0.8.13.26–0.9.22.13 has “The slot the item left, 0 to 14. A client swaps the two slots named whatever their values, so a server keeps both within range.”
  • SwapItemsAnswer, to: “The slot it went to, 0 to 36. A client swaps the two slots named whatever their values, so a server keeps both within range.”, where 0.8.13.26–0.9.22.13 has “The slot it went to, 0 to 14. A client swaps the two slots named whatever their values, so a server keeps both within range.”
  • UnitDied, its layout: “A client does nothing for a unit already dead. Otherwise it stops the unit’s cast and attack and, where killer is nonzero, puts the unit down for stayDown, whether or not it knows killer, and shows what that kind of unit shows for a kill, for a minion only where killer is on another side.”, where 0.8.13.26–0.9.22.13 has “A client does nothing more for a unit already dead, or where killer is zero. Otherwise, whether or not it knows killer, it puts the unit down for stayDown: dead, with no health, its movement, cast and attack stopped. For a minion whose killer, or the killer’s owner, is the player’s own champion, it then shows a kill notice.”

0.9.22.16–0.9.25.20

Client builds from 0.9.22.16 up to, not including, 0.9.25.21. Patch notes: V0.9.22.16, V0.9.22.18.

Build checkedPassedFailedSkippedCommitDate
0.9.22.16905e96264e2026-11-04
0.9.22.18905e82b3212026-11-04

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: FadeMinions, GreyscaleWhenDead, HudDisabled, HudHighlightToggled, MinimapHighlighted, NexusIdle, NexusSkin, SpellNameChanged, SpellNumbers, TutorialChatLine, VoiceEventDone, VolumeMuted, WorldEvent.

Every message of this range (148)
MessageCommand
AfkWarning146
Announcement66
AppearancePopped91
AppearancePushed90
Attack53
AttackFrom54
Autocast40
BotDebug105
BotState107
BotTargets106
BuildingDied73
BuyItem41
Camera59
CameraAck110
CameraBehaviour94
CameraLock60
CameraLockSet128
CastSpell35
ChainTargets103
CharacterSelected15
Chat0
ClientEvent108
ClientFinished17
ClientReady16
ClientVersion67
ClockConvergence76
ClockReply75
ClockSync74
CloseShop147
CooldownSet33
CreateChampion6
CreateNeutral7
CreateTurret8
Damage23
DeathHistory112
DestroyMissile102
EffectAdded37
EffectCount80
EffectRemoved39
EffectReplaced38
EmotePlayed11
EnterLocalSight57
EnterSight55
Exit115
ExperienceGained28
FaceDirection93
FacePosition93
FadeRemoved138
FadeTo137
FloatingText30
FogToggled126
GameEnded14
GameSpeed136
GoldGained27
GoldRedirect89
HudHighlighted157
InhibitorState65
InputLock149
InputLockChanged148
InputLocksFlipped124
InputLockToggled125
ItemAdded42
JoinSide100
KillParticle22
LeaveLocalSight58
LeaveSight56
LevelUp47
LoadingProgress113
Loadout83
MapPing25
MatchIdentity111
MissileHits163
MissileReport63
MissileState63
MoveCamera131
MovementBounds127
MoveOrder20
ObjectiveHidden152
ObjectiveReplaced153
ObjectiveShown151
ParticlesCreated21
Path77
PathWithSpeed78
Paused134
PingPlaced26
PlayAnimation9
PlayEmote10
PlayerDisconnected116
QueryStatus3
QueryStatusAnswer4
Reconnected118
ReconnectedInMatch117
RegionAdded86
RegionAttached85
RegionRemoved84
Register0
Registered0
RemoveItem43
RemoveItemAnswer44
Replication129
Respawned72
Resumed135
ResyncEnded119
Revived71
Roster103
SeatChampion101
SeatLoadProgress114
SeatName102
SelectObject61
ShopHighlighted158
SideTextHidden155
SideTextRefreshed156
SideTextShown154
SpawnEnd12
SpawnFromBarracks49
SpawnPet32
SpawnStart5
SpawnUnit87
SpellCastAnswer36
SpellCooldown33
SpellTargetingChanged133
SpellUpgraded19
StartGame13
StatTick64
StopAnimation88
StopAttack48
SurrenderFailed161
SurrenderStatus162
SurrenderVote159
SurrenderVoteCalled160
SwapItemsAnswer46
TargetHeldChampion70
TargetUnit69
TransientAck130
TutorialPopup144
TutorialPopupClosed145
TutorialShopOpened150
UnitDied34
UnitHighlighted142
UnitHighlightRemoved143
UnitSpoke30
UnitStopped24
UpgradeSpell18
VersionSync68
VoiceEvent132
WaypointAck120
WaypointGroup121
WaypointGroupAtSpeed122

Against 0.9.22.14–0.9.22.15

Where a build from 0.9.22.16 up to, not including, 0.9.25.21 differs from one from 0.9.22.14 up to, not including, 0.9.22.16. Anything not named here is the same in both.

In 0.9.22.16–0.9.25.20, not in 0.9.22.14–0.9.22.15

MessageSent byCommandWhat it does
HudHighlightedserver157 on eventsLight up part of the screen, as a tutorial does
InputLockserver149 on eventsLock or unlock a kind of input on a client
InputLockChangedclient148 on requestsWhat a client sends after locking or unlocking kinds of its own input
MissileHitsserver163 on eventsSay which units a missile struck
ObjectiveHiddenserver152 on eventsHide the objective panel
ObjectiveReplacedserver153 on eventsReplace the text of the objective panel, showing the panel if it is hidden
ObjectiveShownserver151 on eventsShow the objective panel with a text
ShopHighlightedserver158 on eventsMake a shop element blink once, as a tutorial does
SideTextHiddenserver155 on eventsClose the box of text SideTextShown opened
SideTextRefreshedserver156 on eventsChange the text in the box SideTextShown opened, in place
SideTextShownserver154 on eventsShow a box of text at the right edge of the screen
SurrenderFailedserver161 on eventsWhat a server sends when a surrender vote fails, to say how long until another can be called
SurrenderStatusserver162 on eventsTell a side where its surrender vote stands
SurrenderVoteclient159 on requestsVote on surrendering
SurrenderVoteCalledserver160 on eventsOpen a surrender vote, or to report one already open
TutorialShopOpenedclient150 on requestsWhat a client sends as its player opens the shop

Laid out differently

  • ClientEvent (vectors: buff-on-0-9-22-16, consumable-bought-on-0-9-22-16, critical-strike-on-0-9-22-16, damage-dealt-on-0-9-22-16, damage-taken-on-0-9-22-16, death-assist-on-0-9-22-16, died-on-0-9-22-16, gold-earned-on-0-9-22-16, gold-spent-on-0-9-22-16, heal-cast-on-0-9-22-16, heal-on-0-9-22-16, item-bought-on-0-9-22-16, killing-spree-on-0-9-22-16, one-on-0-9-22-16)
    • event takes 63 surrenderVoteStarted, 64 surrenderVoteCast, 65 surrenderAlreadyVoted, 66 surrenderCountdown, 67 surrenderFailed, 68 surrenderTooEarly, 69 surrenderAgreed, 70 surrenderVoteSpam, 71 minionsSpawned, 72 welcome, 73 startNoticeTwo in 0.9.22.16–0.9.25.20 and not in 0.9.22.14–0.9.22.15.
    • value is present when event = 20 in 0.9.22.14–0.9.22.15, and present when event = 20 or 62 in 0.9.22.16–0.9.25.20.
  • DeathHistory (vectors: one-on-0-9-22-16)
    • entries[].event takes 66 surrenderCountdown, 71 minionsSpawned, 72 welcome, 73 startNoticeTwo in 0.9.22.16–0.9.25.20 and not in 0.9.22.14–0.9.22.15.
    • entries[].value is present when event = 20 in 0.9.22.14–0.9.22.15, and present when event = 20 or 62 in 0.9.22.16–0.9.25.20.
  • MissileReport
    • unknownAX is in 0.9.22.16–0.9.25.20 (f32), after atZ, and not in 0.9.22.14–0.9.22.15.
    • unknownAY is in 0.9.22.16–0.9.25.20 (f32), after unknownAX, and not in 0.9.22.14–0.9.22.15.
    • unknownAZ is in 0.9.22.16–0.9.25.20 (f32), after unknownAY, and not in 0.9.22.14–0.9.22.15.
    • travelX is in 0.9.22.16–0.9.25.20 (f32), after unknownAZ, and not in 0.9.22.14–0.9.22.15.
    • travelY is in 0.9.22.16–0.9.25.20 (f32), after travelX, and not in 0.9.22.14–0.9.22.15.
    • travelZ is in 0.9.22.16–0.9.25.20 (f32), after travelY, and not in 0.9.22.14–0.9.22.15.
    • velocityX is in 0.9.22.16–0.9.25.20 (f32), after travelZ, and not in 0.9.22.14–0.9.22.15.
    • velocityY is in 0.9.22.16–0.9.25.20 (f32), after velocityX, and not in 0.9.22.14–0.9.22.15.
    • velocityZ is in 0.9.22.16–0.9.25.20 (f32), after velocityY, and not in 0.9.22.14–0.9.22.15.
    • endX is in 0.9.22.16–0.9.25.20 (f32), after velocityZ, and not in 0.9.22.14–0.9.22.15.
    • endY is in 0.9.22.16–0.9.25.20 (f32), after endX, and not in 0.9.22.14–0.9.22.15.
    • endZ is in 0.9.22.16–0.9.25.20 (f32), after endY, and not in 0.9.22.14–0.9.22.15.
    • targetX is in 0.9.22.16–0.9.25.20 (f32), after endZ, and not in 0.9.22.14–0.9.22.15.
    • targetY is in 0.9.22.16–0.9.25.20 (f32), after targetX, and not in 0.9.22.14–0.9.22.15.
    • targetZ is in 0.9.22.16–0.9.25.20 (f32), after targetY, and not in 0.9.22.14–0.9.22.15.
    • cast is bytes, 128 in 0.9.22.14–0.9.22.15 and bytes, sized by remaining in 0.9.22.16–0.9.25.20.
    • keptX is in 0.9.22.14–0.9.22.15 and not in 0.9.22.16–0.9.25.20.
    • keptY is in 0.9.22.14–0.9.22.15 and not in 0.9.22.16–0.9.25.20.
    • keptZ is in 0.9.22.14–0.9.22.15 and not in 0.9.22.16–0.9.25.20.
    • directionX is in 0.9.22.14–0.9.22.15 and not in 0.9.22.16–0.9.25.20.
    • directionY is in 0.9.22.14–0.9.22.15 and not in 0.9.22.16–0.9.25.20.
    • directionZ is in 0.9.22.14–0.9.22.15 and not in 0.9.22.16–0.9.25.20.
  • MissileState
    • casterAtX is in 0.9.22.16–0.9.25.20 (f32), after atZ, and not in 0.9.22.14–0.9.22.15.
    • casterAtY is in 0.9.22.16–0.9.25.20 (f32), after casterAtX, and not in 0.9.22.14–0.9.22.15.
    • casterAtZ is in 0.9.22.16–0.9.25.20 (f32), after casterAtY, and not in 0.9.22.14–0.9.22.15.
    • facingX is in 0.9.22.16–0.9.25.20 (f32), after casterAtZ, and not in 0.9.22.14–0.9.22.15.
    • facingY is in 0.9.22.16–0.9.25.20 (f32), after facingX, and not in 0.9.22.14–0.9.22.15.
    • facingZ is in 0.9.22.16–0.9.25.20 (f32), after facingY, and not in 0.9.22.14–0.9.22.15.
    • velocityX is in 0.9.22.16–0.9.25.20 (f32), after facingZ, and not in 0.9.22.14–0.9.22.15.
    • velocityY is in 0.9.22.16–0.9.25.20 (f32), after velocityX, and not in 0.9.22.14–0.9.22.15.
    • velocityZ is in 0.9.22.16–0.9.25.20 (f32), after velocityY, and not in 0.9.22.14–0.9.22.15.
    • endX is in 0.9.22.16–0.9.25.20 (f32), after velocityZ, and not in 0.9.22.14–0.9.22.15.
    • endY is in 0.9.22.16–0.9.25.20 (f32), after endX, and not in 0.9.22.14–0.9.22.15.
    • endZ is in 0.9.22.16–0.9.25.20 (f32), after endY, and not in 0.9.22.14–0.9.22.15.
    • unitAtX is in 0.9.22.16–0.9.25.20 (f32), after endZ, and not in 0.9.22.14–0.9.22.15.
    • unitAtY is in 0.9.22.16–0.9.25.20 (f32), after unitAtX, and not in 0.9.22.14–0.9.22.15.
    • unitAtZ is in 0.9.22.16–0.9.25.20 (f32), after unitAtY, and not in 0.9.22.14–0.9.22.15.
    • how names bit 0 flag in 0.9.22.14–0.9.22.15 and bounced in 0.9.22.16–0.9.25.20.
    • keptX is in 0.9.22.14–0.9.22.15 and not in 0.9.22.16–0.9.25.20.
    • keptY is in 0.9.22.14–0.9.22.15 and not in 0.9.22.16–0.9.25.20.
    • keptZ is in 0.9.22.14–0.9.22.15 and not in 0.9.22.16–0.9.25.20.
    • directionX is in 0.9.22.14–0.9.22.15 and not in 0.9.22.16–0.9.25.20.
    • directionY is in 0.9.22.14–0.9.22.15 and not in 0.9.22.16–0.9.25.20.
    • directionZ is in 0.9.22.14–0.9.22.15 and not in 0.9.22.16–0.9.25.20.

Chapters

  • In the votes chapter, a passage holds for 0.9.22.14–0.9.22.15 and not 0.9.22.16–0.9.25.20: There is no surrender vote: a client sends and takes no message about one.
  • In the votes chapter, a passage holds for 0.9.22.16–0.9.25.20 and not 0.9.22.14–0.9.22.15: A client has no panel for the vote.
  • In the interface chapter, a passage holds for 0.9.22.14–0.9.22.15 and not 0.9.22.16–0.9.25.20: A server locks and unlocks input with InputLockToggled alone.
  • In the interface chapter, a passage holds for 0.9.22.16–0.9.25.20 and not 0.9.22.14–0.9.22.15: A client locks and unlocks its own input too, and tells the server each time: InputLocksFlipped for the locks it flipped, as when a camera move a script drives starts and ends, and InputLockChanged for the locks it set or cleared.

Only notes

These read the same on the wire, and only their notes change. What each says in 0.9.22.16–0.9.25.20:

  • TutorialPopup, text: “A key into the client’s own text for the popup’s body. The text ends at its first zero byte, which falls within the field.”, where 0.9.22.14–0.9.22.15 has “A key into the client’s own text for the popup’s body. A client copies the whole field first, so the text ends at a zero byte within it.”

0.9.25.21–0.9.25.23

Client builds from 0.9.25.21 up to, not including, 0.9.25.24. Patch notes: V0.9.25.21.

Build checkedPassedFailedSkippedCommitDate
0.9.25.211004d82cfce2026-11-04

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: FadeMinions, GreyscaleWhenDead, HudDisabled, NexusIdle, NexusSkin, SpellNameChanged, WorldEvent.

Every message of this range (153)
MessageCommand
AfkWarning146
Announcement66
AppearancePopped91
AppearancePushed90
Attack53
AttackFrom54
Autocast40
BotDebug105
BotState107
BotTargets106
BuildingDied73
BuyItem41
Camera59
CameraAck110
CameraBehaviour94
CameraLock60
CameraLockSet128
CastSpell35
ChainTargets103
CharacterSelected15
Chat0
ClientEvent108
ClientFinished17
ClientReady16
ClientVersion67
ClockConvergence76
ClockReply75
ClockSync74
CloseShop147
CooldownSet33
CreateChampion6
CreateNeutral7
CreateTurret8
Damage23
DeathHistory112
DestroyMissile102
EffectAdded37
EffectCount80
EffectRemoved39
EffectReplaced38
EmotePlayed11
EnterLocalSight57
EnterSight55
Exit115
ExperienceGained28
FaceDirection93
FacePosition93
FadeRemoved138
FadeTo137
FloatingText30
FogToggled126
GameEnded14
GameSpeed136
GoldGained27
GoldRedirect89
HudHighlighted157
HudHighlightToggled166
InhibitorState65
InputLock149
InputLockChanged148
InputLocksFlipped124
InputLockToggled125
ItemAdded42
JoinSide100
KillParticle22
LeaveLocalSight58
LeaveSight56
LevelUp47
LoadingProgress113
Loadout83
MapPing25
MatchIdentity111
MinimapHighlighted165
MissileHits163
MissileReport63
MissileState63
MoveCamera131
MovementBounds127
MoveOrder20
ObjectiveHidden152
ObjectiveReplaced153
ObjectiveShown151
ParticlesCreated21
Path77
PathWithSpeed78
Paused134
PingPlaced26
PlayAnimation9
PlayEmote10
PlayerDisconnected116
QueryStatus3
QueryStatusAnswer4
Reconnected118
ReconnectedInMatch117
RegionAdded86
RegionAttached85
RegionRemoved84
Register0
Registered0
RemoveItem43
RemoveItemAnswer44
Replication129
Respawned72
Resumed135
ResyncEnded119
Revived71
Roster103
SeatChampion101
SeatLoadProgress114
SeatName102
SelectObject61
ShopHighlighted158
SideTextHidden155
SideTextRefreshed156
SideTextShown154
SpawnEnd12
SpawnFromBarracks49
SpawnPet32
SpawnStart5
SpawnUnit87
SpellCastAnswer36
SpellCooldown33
SpellNumbers168
SpellTargetingChanged133
SpellUpgraded19
StartGame13
StatTick64
StopAnimation88
StopAttack48
SurrenderStatus162
SurrenderVote159
SurrenderVoteCalled160
SwapItemsAnswer46
TargetHeldChampion70
TargetUnit69
TransientAck130
TutorialChatLine167
TutorialPopup144
TutorialPopupClosed145
TutorialShopOpened150
UnitDied34
UnitHighlighted142
UnitHighlightRemoved143
UnitSpoke30
UnitStopped24
UpgradeSpell18
VersionSync68
VoiceEvent132
VoiceEventDone164
VolumeMuted169
WaypointAck120
WaypointGroup121
WaypointGroupAtSpeed122

Against 0.9.22.16–0.9.25.20

Where a build from 0.9.25.21 up to, not including, 0.9.25.24 differs from one from 0.9.22.16 up to, not including, 0.9.25.21. Anything not named here is the same in both.

In 0.9.25.21–0.9.25.23, not in 0.9.22.16–0.9.25.20

MessageSent byCommandWhat it does
HudHighlightToggledserver166 on eventsLight up part of the screen, or to put it out
MinimapHighlightedserver165 on eventsMake part of the minimap blink, as a tutorial does
SpellNumbersserver168 on eventsFill in the numbers a client shows beside a unit’s spells
TutorialChatLineserver167 on eventsPut a line of the client’s own text in its chat, as a line from the game
VoiceEventDoneclient164 on requestsWhat a client sends once a voice event (VoiceEvent) that asked for it has played
VolumeMutedserver169 on eventsMute or unmute one kind of sound

In 0.9.22.16–0.9.25.20, not in 0.9.25.21–0.9.25.23

MessageSent byCommand it had
SurrenderFailedserver161 on events

Laid out differently

Chapters

  • In the communication chapter, a passage holds for 0.9.22.16–0.9.25.20 and not 0.9.25.21–0.9.25.23: VoiceEvent carries only the event’s name and asks for no answer.
  • In the votes chapter, a passage holds for 0.9.22.16–0.9.25.20 and not 0.9.25.21–0.9.25.23: A client has no panel for the vote.
  • In the votes chapter, a passage holds for 0.9.25.21–0.9.25.23 and not 0.9.22.16–0.9.25.20: SurrenderVoteCalled shows the caller’s vote to that side and, where it says the vote opens, opens the vote’s panel for that side.

Only notes

These read the same on the wire, and only their notes change. What each says in 0.9.25.21–0.9.25.23:

  • ShopHighlighted, element: “A shop element blinks once, where the shop window is open. Element 0 is the buy button, 1 the sell button, 2 the shop item number names, 3 the item second names within the category number names, and 4 the recommended item number names. A larger value than 4 has no defined effect.”, where 0.9.22.16–0.9.25.20 has “A shop element blinks once, where the shop window is open. Element 0 is the buy button, 1 the sell button, 2 the shop item number names, and 3 the item second names within the category number names. A client fails for any larger value.”

0.9.25.24–0.9.25.35

Client builds from 0.9.25.24 up to, not including, 0.9.25.36. Patch notes: V0.9.25.24.

Build checkedPassedFailedSkippedCommitDate
0.9.25.241004186b1bf2026-11-04

Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: FadeMinions, GreyscaleWhenDead, HudDisabled, NexusIdle, NexusSkin, SpellNameChanged.

Every message of this range (154)
MessageCommand
AfkWarning146
Announcement66
AppearancePopped91
AppearancePushed90
Attack53
AttackFrom54
Autocast40
BotDebug105
BotState107
BotTargets106
BuildingDied73
BuyItem41
Camera59
CameraAck110
CameraBehaviour94
CameraLock60
CameraLockSet128
CastSpell35
ChainTargets103
CharacterSelected15
Chat0
ClientEvent108
ClientFinished17
ClientReady16
ClientVersion67
ClockConvergence76
ClockReply75
ClockSync74
CloseShop147
CooldownSet33
CreateChampion6
CreateNeutral7
CreateTurret8
Damage23
DeathHistory112
DestroyMissile102
EffectAdded37
EffectCount80
EffectRemoved39
EffectReplaced38
EmotePlayed11
EnterLocalSight57
EnterSight55
Exit115
ExperienceGained28
FaceDirection93
FacePosition93
FadeRemoved138
FadeTo137
FloatingText30
FogToggled126
GameEnded14
GameSpeed136
GoldGained27
GoldRedirect89
HudHighlighted157
HudHighlightToggled166
InhibitorState65
InputLock149
InputLockChanged148
InputLocksFlipped124
InputLockToggled125
ItemAdded42
JoinSide100
KillParticle22
LeaveLocalSight58
LeaveSight56
LevelUp47
LoadingProgress113
Loadout83
MapPing25
MatchIdentity111
MinimapHighlighted165
MissileHits163
MissileReport63
MissileState63
MoveCamera131
MovementBounds127
MoveOrder20
ObjectiveHidden152
ObjectiveReplaced153
ObjectiveShown151
ParticlesCreated21
Path77
PathWithSpeed78
Paused134
PingPlaced26
PlayAnimation9
PlayEmote10
PlayerDisconnected116
QueryStatus3
QueryStatusAnswer4
Reconnected118
ReconnectedInMatch117
RegionAdded86
RegionAttached85
RegionRemoved84
Register0
Registered0
RemoveItem43
RemoveItemAnswer44
Replication129
Respawned72
Resumed135
ResyncEnded119
Revived71
Roster103
SeatChampion101
SeatLoadProgress114
SeatName102
SelectObject61
ShopHighlighted158
SideTextHidden155
SideTextRefreshed156
SideTextShown154
SpawnEnd12
SpawnFromBarracks49
SpawnPet32
SpawnStart5
SpawnUnit87
SpellCastAnswer36
SpellCooldown33
SpellNumbers168
SpellTargetingChanged133
SpellUpgraded19
StartGame13
StatTick64
StopAnimation88
StopAttack48
SurrenderStatus162
SurrenderVote159
SurrenderVoteCalled160
SwapItemsAnswer46
TargetHeldChampion70
TargetUnit69
TransientAck130
TutorialChatLine167
TutorialPopup144
TutorialPopupClosed145
TutorialShopOpened150
UnitDied34
UnitHighlighted142
UnitHighlightRemoved143
UnitSpoke30
UnitStopped24
UpgradeSpell18
VersionSync68
VoiceEvent132
VoiceEventDone164
VolumeMuted169
WaypointAck120
WaypointGroup121
WaypointGroupAtSpeed122
WorldEvent170

Against 0.9.25.21–0.9.25.23

Where a build from 0.9.25.24 up to, not including, 0.9.25.36 differs from one from 0.9.25.21 up to, not including, 0.9.25.24. Anything not named here is the same in both.

In 0.9.25.24–0.9.25.35, not in 0.9.25.21–0.9.25.23

MessageSent byCommandWhat it does
WorldEventserver170 on eventsSay something happened that the whole match is told about

Laid out differently

  • Camera
    • lookAtX is in 0.9.25.24–0.9.25.35 (f32) at the start, and not in 0.9.25.21–0.9.25.23.
    • lookAtY is in 0.9.25.24–0.9.25.35 (f32), after lookAtX, and not in 0.9.25.21–0.9.25.23.
    • lookAtZ is in 0.9.25.24–0.9.25.35 (f32), after lookAtY, and not in 0.9.25.21–0.9.25.23.
    • atX is in 0.9.25.21–0.9.25.23 and not in 0.9.25.24–0.9.25.35.
    • atY is in 0.9.25.21–0.9.25.23 and not in 0.9.25.24–0.9.25.35.
    • atZ is in 0.9.25.21–0.9.25.23 and not in 0.9.25.24–0.9.25.35.
    • facingX is in 0.9.25.21–0.9.25.23 and not in 0.9.25.24–0.9.25.35.
    • facingY is in 0.9.25.21–0.9.25.23 and not in 0.9.25.24–0.9.25.35.
    • facingZ is in 0.9.25.21–0.9.25.23 and not in 0.9.25.24–0.9.25.35.
  • Damage
    • how names bit 7 sound in 0.9.25.21–0.9.25.23 and unused in 0.9.25.24–0.9.25.35.

Chapters

  • In the transport chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client asks for 7 channels.
  • In the objects chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A region id of 0 names no region: given a RegionAdded carrying 0, a client gives the region an id of its own, its own node in the top byte and a count below it, which no message from a server can name.
  • In the objects chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: Registration pairs each player id with a client id: a server answers a client’s Register with one Registered for every seat.
  • In the objects chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A bot’s champion carries 4294967295.
  • In the objects chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client that still holds the earlier object gives the net id to the new one, so messages naming it reach the new object, and removing either leaves the id naming neither.
  • In the objects chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: Every object a map places carries the identifier its name gives, turrets, navigation points and props among them.
  • In the objects chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: | Map | Holds | | –– | ———————————————————————————————————————————————————————————————————————————–– | | 1, 2 | the six Barracks names, HQ_T1, HQ_T2, orderShop01, chaosShop01, the six spawn points named __P_…, and turrets named Turret_T1_… and Turret_T2_…, Turret_OrderTurretShrine and Turret_ChaosTurretShrine among them | | 3 | Barracks_T1_C1, Barracks_T2_C1, HQ_T1, HQ_T2, OrderShop01, ChaosShop01, ____P_Chaos_Spawn_Barracks__C01, and turrets, Turret_T1_C_08 among them |
  • In the objects chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: CreateTurret gives a net id to a turret the map already holds, matched by name.
  • In the objects chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: CreateTurret matches a turret’s name without regard to case, and does nothing where the map holds no turret of that name.
  • In the objects chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client removes a nexus about 4 seconds after BuildingDied names it, and can fail as it does.
  • In the objects chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client sends a WaypointGroup’s WaypointAck before it reads any path, whatever units the paths name.
  • In the ordering chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A server can instead send Replication reliably on the events channel.
  • In the ordering chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: WaypointGroup, WaypointGroupAtSpeed, Path, PathWithSpeed, EnterSight, and UnitStopped and SpellCastAnswer where they carry one, share one count per unit, from -1.
  • In the ordering chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: Nothing answers a view report: a client sends its latest report again, twice the round trip time plus 1/30 of a second apart, for as long as the match runs.
  • In the ordering chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client also answers each Path and PathWithSpeed, taken or not, with a WaypointAck carrying its syncId.
  • In the space chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A champion faces as its map’s table of spawn positions says (see CreateChampion).
  • In the space chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client has data for maps 1, 2 and 3.
  • In the time chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client’s match clock does not run until the first ClockSync arrives, which sets it.
  • In the time chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: GameSpeed sets the pace of the match clock, and a hold sets the pace to 0 until play resumes.
  • In the time chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client runs no clock but the match clock, and takes whatever speed GameSpeed gives.
  • In the time chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A GameSpeed that arrives during a hold sets the match clock running again at once.
  • In the values chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A cast’s slot also takes 64 to 70, for a basic attack.
  • In the values chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A champion’s own book ends at slot 44.
  • In the values chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A champion’s inventory ends at slot 36, and a player sees and uses only slots 0 to 5.
  • In the data chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: The client has maps 1, 2 and 3.
  • In the data chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: CreateTurret names a building by its name alone, compared without regard to case, and one naming no building does nothing.
  • In the data chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A name’s opening says what the object is, the first match winning and a minion spawner’s tested before Barracks: Turret a turret, Barracks an inhibitor, HQ_ a nexus.
  • In the data chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A champion begins at its side’s spawn point moved by an offset from DATA/Characters/HeroSpawnOffsets.inibin, read from the section Order<n> or Chaos<n> under the keys Pos<i> and Facing<i>, where i is one more than CreateChampion’s spawn index.
  • In the data chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: Map 3 alone adds an Items.inibin.
  • In the joining chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: Any whitespace separates the words of the fourth argument.
  • In the joining chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client waits 30 seconds for the answer naming its own player id.
  • In the joining chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: VersionSync names the map to load and everyone at the match.
  • In the joining chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client writes zero where its player id goes in LoadingProgress.
  • In the joining chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A server MUST put the seat’s player id in SeatLoadProgress: the loading screen shows a seat’s card from the VersionSync seat with that id.
  • In the joining chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client answers a batch as soon as it arrives, within the run or not, and never answers one naming a unit it does not hold.
  • In the joining chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client whose connection drops before play begins ends rather than connecting again.
  • In the vision chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: EnterSight states where the unit stands or which path it walks, and nothing of its looks, shields, health or resource.
  • In the vision chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: GoldGained naming the client’s own champion, with an amount above 0 and a source the client holds, shows the gold over the source.
  • In the vision chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: Any other GoldGained shows the gold gained or lost over the unit it names, whichever unit that is.
  • In the vision chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: LevelUp shows its effect over any unit the client can see.
  • In the movement chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A unit coming into sight while standing carries its place and facing in EnterSight instead.
  • In the movement chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A sending end MUST NOT send a movement with no points; a receiving end refuses it.
  • In the movement chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client reads nothing after a refused movement in its group, and still answers the group.
  • In the movement chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client takes a WaypointGroup or a WaypointGroupAtSpeed on channels 2, 3 and 4 alike.
  • In the movement chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client sends the WaypointAck before reading any movement in the group, and lists no units in it.
  • In the replication chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: The groups follow in the order 0 to 4, and nothing gives a group’s length: each value is four bytes, so a group takes four bytes for its set of values and four for each bit that set has set.
  • In the replication chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A value that says yes or no is an integer, 1 for yes and 0 for no.
  • In the replication chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A prop answers to no table, and a client takes nothing a batch carries for one.
  • In the replication chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: The building table is the same on every map.
  • In the replication chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: Each row also gives the type a value is written in.
  • In the replication chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: ## A champion | Group | Bits | Value | Type | | —– | –––– | ———————————————————————————————–– | —– | | 0 | 0 | Experience | float | | 0 | 1 | Gold in hand | float | | 0 | 2 to 3 | Which slots can be cast from: the champion’s own, then the second set | u32 | | 0 | 4 to 7 | What the spell in slots 0 to 3 costs | float | | 0 | 8 to 11 | What the spell in slots 41 to 44 costs | float | | 0 | 12 to 13 | What the spell in slots 0 and 1 of the second set costs | float | | 1 | 0 to 1 | Health and resource as they stand | float | | 1 | 2 to 3 | Health and resource at their greatest | float | | 1 | 4 | What the champion is doing, as a set of bits | u32 | | 1 | 5 to 8 | Whether it is proof against spells, proof against all harm, targetable, and proof against strikes | u32 | | 2 | 0 to 1 | Whether it is proof against strikes, then against spells, as group 1 bits 8 and 5 | u32 | | 2 | 2 | Damage it deals by striking | float | | 2 | 3 | Damage its spells deal before modifiers | float | | 2 | 4 | How often it turns a blow aside | float | | 2 | 5 | Its size | float | | 2 | 6 | How often it strikes critically | float | | 2 | 7 to 8 | Armour and spell resistance | float | | 2 | 9 to 10 | How fast health and resource return | float | | 2 | 11 | How fast it moves | float | | 2 | 12 | How far it strikes from | float | | 2 | 13 to 14 | Flat and percent modifiers on the damage it strikes with | float | | 2 | 15 to 16 | Flat and percent modifiers on its spells’ damage | float | | 2 | 17 to 18 | Flat and percent reduction of the spell damage it takes | float | | 2 | 19 | A multiplier on how fast it strikes | float | | 2 | 20 | A flat addition to how far it casts | float | | 2 | 21 | A modifier on its cooldowns | float | | 3 | 0 to 1 | A percent and a flat addition to how far it sees | float | | 3 | 2 | Level | u32 | ## A turret | Group | Bits | Value | Type | | —– | –––– | –––––––––––––––––––––––––––– | —– | | 1 | 0 | Damage it deals by striking | float | | 1 | 1 to 2 | Armour and spell resistance | float | | 1 | 3 | How fast it moves | float | | 1 | 4 | A multiplier on how fast it strikes | float | | 1 | 5 | Its size | float | | 1 | 6 to 7 | Flat and percent modifiers on the damage it strikes with | float | | 1 | 8 to 9 | Flat and percent modifiers on its spells’ damage | float | | 1 | 10 to 11 | How fast health and resource return | float | | 1 | 12 to 13 | Health as it stands, then at its greatest | float | | 3 | 0 to 1 | A percent and a flat addition to how far it sees | float | ## A minion, and a unit belonging to no side | Group | Bits | Value | Type | | —– | –––– | ———————————————————————————————–– | —– | | 1 | 0 to 1 | Health as it stands, then at its greatest | float | | 1 | 2 to 3 | Whether it is proof against strikes, then against spells | u32 | | 1 | 4 | What the unit is doing, as a set of bits | u32 | | 1 | 5 to 8 | Whether it is proof against spells, proof against all harm, targetable, and proof against strikes | u32 | | 1 | 9 | Damage it deals by striking | float | | 1 | 10 to 11 | Armour and spell resistance | float | | 1 | 12 | How fast it moves | float | | 1 | 13 | A multiplier on how fast it strikes | float | | 1 | 14 | Its size | float | | 1 | 15 to 16 | Flat and percent modifiers on the damage it strikes with | float | | 1 | 17 to 18 | Flat and percent modifiers on its spells’ damage | float | | 1 | 19 to 20 | How fast health and resource return | float | | 3 | 0 to 1 | A percent and a flat addition to how far it sees | float | ## A building Inhibitors, nexuses and the buildings minions come from share one table.
  • In the replication chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A server grants experience with ExperienceGained and gold with GoldGained.
  • In the match chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client shows the speed GameSpeed sets over its champion.
  • In the match chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: The speed GameSpeed sets takes effect at once: sent during a hold, it ends the hold, and a Resumed after it changes nothing.
  • In the match chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: No unit advances for StatTick.
  • In the match chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client reads nothing from Paused.
  • In the match chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client reads nothing from Resumed.
  • In the match chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client also leaves as one abandoning as its player declines to reconnect or cancels a reconnection under way, and as its player dismisses the notice that it was dropped for being away.
  • In the match chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client shows a notice in chat for PlayerDisconnected.
  • In the match chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client started again for a match in progress knows nothing of it, and joins as at the start: a server takes it through Joining a match from registering to StartGame, with a spawn run that states the field as it stands, and a ClockSync.
  • In the match chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client sends ReconnectedInMatch on every connection it makes, the first included, with a byte that is 0 where the match is in play and 1 otherwise.
  • In the match chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client dropped during play connects again only where its player agrees: for the reason 0 it asks, and on a yes connects again, showing that it is reconnecting until it is back or its player cancels.
  • In the match chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client gives up on a connection where a reliable message it sent goes unacknowledged for 30 seconds, while loading and in play alike.
  • In the combat chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client moves the attacker to the place AttackFrom gives only where it stands more than 400 units from it.
  • In the combat chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: Damage shows a figure for the results that carry one, normal and critical; zero is the result that shows the unit as invulnerable, not a plain hit.
  • In the combat chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: Of the other results of Damage, 1 shows nothing, 2 a dodge and 5 a miss; 3 is critical, and 4 and any above 5 are normal.
  • In the combat chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: TargetHeldChampion marks a unit as attacking the client’s own champion: a client sets the mark only where the message names that champion, and clears it for any other.
  • In the combat chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A server MUST NOT send BuildingDied for the nexus: a client removes the nexus some 4 seconds later while still using it, and fails.
  • In the spells chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A command its player types sends UpgradeSpell without checking anything.
  • In the spells chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: Only a missile that flies straight acts on MissileHits.
  • In the effects chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: ParticlesCreated starts sets of particles, each named by its own id.
  • In the shop chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: Opening the shop sends TutorialShopOpened, in any match, except while the shop is locked.
  • In the shop chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client asks only while the shop is not locked, with the champion dead or near a shop of its side.
  • In the shop chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A message that locks other input along with the shop stops the shop opening, but leaves an open shop open and its key on.
  • In the communication chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: Where a VoiceEvent asks for an answer, a client sends VoiceEventDone once it has played the event.
  • In the communication chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client never answers a VoiceEvent it cannot play.
  • In the votes chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client takes SurrenderVoteCalled whenever it arrives, its own champion on the field or not.
  • In the interface chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client sends no Camera while its camera is locked: a server that needs a client’s view reports frees its camera with CameraLockSet.
  • In the interface chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: Camera names one point, the one the view looks at, in place of where the view sits and which way it faces.
  • In the interface chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client ignores CameraLockSet that arrives while it holds its camera itself, and answers nothing.
  • In the interface chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.21–0.9.25.23: A client keeps every lock a message sets or clears, and later input obeys them, but it acts on a lock at once only where the message’s mask is exactly one of 1, 4, 8, 16, 32 or 128.

Only notes

These read the same on the wire, and only their notes change. What each says in 0.9.25.24–0.9.25.35:

  • ClientEvent, event: “Which event, from 0 to 73, and so which fields follow. A value above 73 has no defined effect.”, where 0.9.25.21–0.9.25.23 has “Which event, from 0 to 70, and so which fields follow.”
  • DeathHistory, entries[].event: “Which event, from 0 to 73, and so which fields follow.”, where 0.9.25.21–0.9.25.23 has “Which event, from 0 to 70, and so which fields follow.”

0.9.25.36–1.0.0.24

Client builds from 0.9.25.36 up to, not including, 1.0.0.25. Patch notes: V0.9.25.34.

Build checkedPassedFailedSkippedCommitDate
0.9.25.3610042d10e672026-11-04
Every message of this range (158)
MessageCommand
AfkWarning145
Announcement66
AppearancePopped91
AppearancePushed90
Attack53
AttackFrom54
Autocast40
BotDebug105
BotState107
BotTargets106
BuildingDied73
BuyItem41
Camera59
CameraAck110
CameraBehaviour94
CameraLock60
CameraLockSet127
CastSpell35
ChainTargets103
CharacterSelected15
Chat0
ClientEvent108
ClientFinished17
ClientReady16
ClientVersion67
ClockConvergence76
ClockReply75
ClockSync74
CloseShop146
CooldownSet33
CreateChampion6
CreateNeutral7
CreateTurret8
Damage23
DeathHistory112
DestroyMissile102
EffectAdded37
EffectCount80
EffectRemoved39
EffectReplaced38
EmotePlayed11
EnterLocalSight57
EnterSight55
Exit115
ExperienceGained28
FaceDirection93
FacePosition93
FadeMinions174
FadeRemoved137
FadeTo136
FloatingText30
FogToggled125
GameEnded14
GameSpeed135
GoldGained27
GoldRedirect89
GreyscaleWhenDead170
HudDisabled171
HudHighlighted155
HudHighlightToggled164
InhibitorState65
InputLock147
InputLockToggled124
ItemAdded42
JoinSide100
KillParticle22
LeaveLocalSight58
LeaveSight56
LevelUp47
LoadingProgress113
Loadout83
MapPing25
MatchIdentity111
MinimapHighlighted163
MissileHits161
MissileReport63
MissileState63
MoveCamera130
MovementBounds126
MoveOrder20
NexusIdle173
NexusSkin169
ObjectiveHidden150
ObjectiveReplaced151
ObjectiveShown149
ParticlesCreated21
Path77
PathWithSpeed78
Paused133
PingPlaced26
PlayAnimation9
PlayEmote10
PlayerDisconnected116
QueryStatus3
QueryStatusAnswer4
Reconnected118
ReconnectedInMatch117
RegionAdded86
RegionAttached85
RegionRemoved84
Register0
Registered0
RemoveItem43
RemoveItemAnswer44
Replication128
Respawned72
Resumed134
ResyncEnded119
Revived71
Roster103
SeatChampion101
SeatLoadProgress114
SeatName102
SelectObject61
ShopHighlighted156
SideTextHidden153
SideTextRefreshed154
SideTextShown152
SpawnEnd12
SpawnFromBarracks49
SpawnPet32
SpawnStart5
SpawnUnit87
SpellCastAnswer36
SpellCooldown33
SpellNameChanged172
SpellNumbers166
SpellTargetingChanged132
SpellUpgraded19
StartGame13
StatTick64
StopAnimation88
StopAttack48
SurrenderStatus160
SurrenderVote157
SurrenderVoteCalled158
SwapItemsAnswer46
TargetHeldChampion70
TargetUnit69
TransientAck129
TutorialChatLine165
TutorialPopup143
TutorialPopupClosed144
TutorialShopOpened148
UnitDied34
UnitHighlighted141
UnitHighlightRemoved142
UnitSpoke30
UnitStopped24
UpgradeSpell18
VersionSync68
VoiceEvent131
VoiceEventDone162
VolumeMuted167
WaypointAck120
WaypointGroup121
WaypointGroupAtSpeed122
WorldEvent168

Against 0.9.25.24–0.9.25.35

Where a build from 0.9.25.36 up to, not including, 1.0.0.25 differs from one from 0.9.25.24 up to, not including, 0.9.25.36. Anything not named here is the same in both.

In 0.9.25.36–1.0.0.24, not in 0.9.25.24–0.9.25.35

MessageSent byCommandWhat it does
FadeMinionsserver174 on eventsFade one side’s minions
GreyscaleWhenDeadserver170 on eventsSay whether a client draws the world without colour while its champion is down
HudDisabledserver171 on eventsTake down a client’s interface as the match ends
NexusIdleserver173 on eventsPut each nexus into its idle particles
NexusSkinserver169 on eventsChange how one side’s nexus looks
SpellNameChangedserver172 on eventsPut another spell into a slot of a unit’s that already holds one

In 0.9.25.24–0.9.25.35, not in 0.9.25.36–1.0.0.24

MessageSent byCommand it had
InputLockChangedclient148 on requests
InputLocksFlippedclient124 on requests

Commands

These differ only in their command. Each row is a run of commands moved by the same amount:

Laid out differently

  • AppearancePushed
    • overrideSpells is in 0.9.25.36–1.0.0.24 (u8), after entry, and not in 0.9.25.24–0.9.25.35.

Chapters

  • In the objects chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: A region id of 0 names no region: given a RegionAdded carrying 0, a client gives the region an id of its own, its own node in the top byte and a count below it, which no message from a server can name.
  • In the objects chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: Registration pairs each player id with a client id: a server answers a client’s Register with one Registered for every seat.
  • In the objects chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: A bot’s champion carries 4294967295.
  • In the objects chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: | Map | Holds | | –– | ———————————————————————————————————————————————————————————————————————————–– | | 1, 2 | the six Barracks names, HQ_T1, HQ_T2, orderShop01, chaosShop01, the six spawn points named __P_…, and turrets named Turret_T1_… and Turret_T2_…, Turret_OrderTurretShrine and Turret_ChaosTurretShrine among them | | 3 | Barracks_T1_C1, Barracks_T2_C1, HQ_T1, HQ_T2, OrderShop01, ChaosShop01, ____P_Chaos_Spawn_Barracks__C01, and turrets, Turret_T1_C_08 among them |
  • In the objects chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: A new SpawnPet for an owner removes that owner’s pet before it.
  • In the objects chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: A client removes a nexus about 4 seconds after BuildingDied names it, and can fail as it does.
  • In the ordering chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: Nothing answers a view report: a client sends its latest report again, twice the round trip time plus 1/30 of a second apart, for as long as the match runs.
  • In the space chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: A client has data for maps 1, 2 and 3.
  • In the time chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: A GameSpeed that arrives during a hold sets the match clock running again at once.
  • In the time chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: A client takes that moment from its own match clock, once, as its game loop runs.
  • In the values chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: A champion’s own book ends at slot 44.
  • In the data chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: A path carries its points as they lie in the world, and takes no origin from the ground.
  • In the data chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: The client has maps 1, 2 and 3.
  • In the data chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: Each object’s file is .sco as text or .SCB as binary, and gives its name on its Name= line.
  • In the data chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: A name’s opening says what the object is, the first match winning and a minion spawner’s tested before Barracks: Turret a turret, Barracks an inhibitor, HQ_ a nexus.
  • In the joining chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: A server MUST put the seat’s player id in SeatLoadProgress: the loading screen shows a seat’s card from the VersionSync seat with that id.
  • In the vision chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: LevelUp shows its effect over any unit the client can see.
  • In the replication chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: ## A champion | Group | Bits | Value | Type | | —– | –––– | ———————————————————————————————–– | —– | | 0 | 0 | Experience | float | | 0 | 1 | Gold in hand | float | | 0 | 2 to 3 | Which slots can be cast from: the champion’s own, then the second set | u32 | | 0 | 4 to 7 | What the spell in slots 0 to 3 costs | float | | 0 | 8 to 11 | What the spell in slots 41 to 44 costs | float | | 0 | 12 to 13 | What the spell in slots 0 and 1 of the second set costs | float | | 1 | 0 to 1 | Health and resource as they stand | float | | 1 | 2 to 3 | Health and resource at their greatest | float | | 1 | 4 | What the champion is doing, as a set of bits | u32 | | 1 | 5 to 8 | Whether it is proof against spells, proof against all harm, targetable, and proof against strikes | u32 | | 2 | 0 to 1 | Whether it is proof against strikes, then against spells, as group 1 bits 8 and 5 | u32 | | 2 | 2 | Damage it deals by striking | float | | 2 | 3 | Damage its spells deal before modifiers | float | | 2 | 4 | How often it turns a blow aside | float | | 2 | 5 | Its size | float | | 2 | 6 | How often it strikes critically | float | | 2 | 7 to 8 | Armour and spell resistance | float | | 2 | 9 to 10 | How fast health and resource return | float | | 2 | 11 | How fast it moves | float | | 2 | 12 | How far it strikes from | float | | 2 | 13 to 14 | Flat and percent modifiers on the damage it strikes with | float | | 2 | 15 to 16 | Flat and percent modifiers on its spells’ damage | float | | 2 | 17 to 18 | Flat and percent reduction of the spell damage it takes | float | | 2 | 19 | A multiplier on how fast it strikes | float | | 2 | 20 | A flat addition to how far it casts | float | | 2 | 21 | A modifier on its cooldowns | float | | 3 | 0 to 1 | A percent and a flat addition to how far it sees | float | | 3 | 2 | Level | u32 | ## A turret | Group | Bits | Value | Type | | —– | –––– | –––––––––––––––––––––––––––– | —– | | 1 | 0 | Damage it deals by striking | float | | 1 | 1 to 2 | Armour and spell resistance | float | | 1 | 3 | How fast it moves | float | | 1 | 4 | A multiplier on how fast it strikes | float | | 1 | 5 | Its size | float | | 1 | 6 to 7 | Flat and percent modifiers on the damage it strikes with | float | | 1 | 8 to 9 | Flat and percent modifiers on its spells’ damage | float | | 1 | 10 to 11 | How fast health and resource return | float | | 1 | 12 to 13 | Health as it stands, then at its greatest | float | | 3 | 0 to 1 | A percent and a flat addition to how far it sees | float | ## A minion, and a unit belonging to no side | Group | Bits | Value | Type | | —– | –––– | ———————————————————————————————–– | —– | | 1 | 0 to 1 | Health as it stands, then at its greatest | float | | 1 | 2 to 3 | Whether it is proof against strikes, then against spells | u32 | | 1 | 4 | What the unit is doing, as a set of bits | u32 | | 1 | 5 to 8 | Whether it is proof against spells, proof against all harm, targetable, and proof against strikes | u32 | | 1 | 9 | Damage it deals by striking | float | | 1 | 10 to 11 | Armour and spell resistance | float | | 1 | 12 | How fast it moves | float | | 1 | 13 | A multiplier on how fast it strikes | float | | 1 | 14 | Its size | float | | 1 | 15 to 16 | Flat and percent modifiers on the damage it strikes with | float | | 1 | 17 to 18 | Flat and percent modifiers on its spells’ damage | float | | 1 | 19 to 20 | How fast health and resource return | float | | 3 | 0 to 1 | A percent and a flat addition to how far it sees | float | ## A building Inhibitors, nexuses and the buildings minions come from share one table.
  • In the match chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: No unit advances for StatTick.
  • In the match chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: A client that receives GameEnded while still loading takes it as in play: it records the result and sends ClientFinished.
  • In the combat chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: A server MUST NOT send BuildingDied for the nexus: a client removes the nexus some 4 seconds later while still using it, and fails.
  • In the spells chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: A client still casts from a casting record whose length disagrees with its count of targets.
  • In the votes chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: A client takes SurrenderVoteCalled whenever it arrives, its own champion on the field or not.
  • In the interface chapter, a passage holds for 0.9.25.24–0.9.25.35 and not 0.9.25.36–1.0.0.24: A client locks and unlocks its own input too, and tells the server each time: InputLocksFlipped for the locks it flipped, as when a camera move a script drives starts and ends, and InputLockChanged for the locks it set or cleared.

Only notes

These read the same on the wire, and only their notes change. What each says in 0.9.25.36–1.0.0.24:

  • BuildingDied, its layout: no note, where 0.9.25.24–0.9.25.35 has “A server sends it for no nexus. A client takes a building it names away four seconds later, and a nexus it takes away leaves the client failing at its next game event. An inhibitor stays: a client plays its destruction and raises a game event carrying attacker. A nexus falls with GameEnded.”
  • BuildingDied, attacker: “The unit that destroyed it. A client reads nothing here.”, where 0.9.25.24–0.9.25.35 has “The unit that destroyed it. Only an inhibitor reads it; a client reads nothing here for any other building.”
  • ChainTargets, its layout: “Where the client already holds the missile, the missile takes the list; otherwise the list waits for the caster’s next chain missile.”, where 0.9.25.24–0.9.25.35 has “Where the client already holds the missile, the missile takes the list, and so does the caster’s current cast; otherwise the list waits for the caster’s next chain missile.”
  • ChainTargets, count: “How many of the slots are used, 0 to 32; 0 clears every target the client holds, and a count below zero names no targets and clears nothing. A count above 32 has no defined effect.”, where 0.9.25.24–0.9.25.35 has “How many of the slots are used, 0 to 32; 0 or less leaves the targets the client holds as they are. A client sets no bound, and more than 32 has no defined effect.”
  • ChainTargets, targets: “Always 32 slots; those past count have no effect. A slot naming a unit the client does not know is left empty.”, where 0.9.25.24–0.9.25.35 has “Always 32 slots; those past count have no effect.”