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, AppearanceCleared, AscendedUnit, AttackIndicators, AttackSpeedBounds, BalanceResult, BalanceVote, BalanceVoteAnswer, BalanceVoteRefused, BotKick, BounceMissile, CampMarker, CampOpened, CampTimer, ChampionRemoved, CharacterPreload, ChatAllowance, ContextEmote, CreateFollower, CursorRings, DeathTimer, EffectCounter, EmitterPause, FloatingTextOnMap, FollowerMaster, GameOptions, GroundAttackMode, HoverIndicator, HoverTarget, InhibitorDied, InputLockChanged, InputLocksFlipped, InventorySnapshot, InventorySnapshotOnMap, ItemCharges, ItemSubstitution, LevelCap, MarkerMoved, MinionKillCount, MissileCourse, MissileLaunched, MissileRetarget, MissileSpeed, ParticleEnterTeamSight, PlaceTurret, RegionMoved, ResourceDisplay, ResourceKindChanged, ShopEnabled, ShopUndo, ShopUndoCount, Shutdown, Situation, SoftReconnect, SoundPlayed, SpawnMarker, SpawnTurret, SpellCharge, SpellCharges, SpellCostChanged, SpellRangeChanged, SpellRankLimits, SpellSlotChanged, SpellSlotChangedForOwner, SpellTargeterHidden, SpellTargeterShown, SpellToggled, StreamChunk, StreamChunkRange, StreamMetadata, StreamRequest, SubstitutionCleared, SurrenderAllowed, SurrenderFailed, SystemMessage, ThemeMusic, UnitDiedOnMap, VoiceCommand, ZoomReport.
1.0.0.25–1.0.0.57
Client builds from 1.0.0.25 up to, not including, 1.0.0.58. Patch notes: V1.0.0.32.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.25 | 10 | 0 | 4 | a6a384b | 2026-11-04 |
| 1.0.0.28 | 10 | 0 | 4 | 9fcd79a | 2026-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: AnimationOverrides, CampCleared, CancelTargeting, CapturePointChanged, ChampionDied, ChampionStats, EffectAddedGroup, EffectCountGroup, EffectRemovedGroup, EffectReplacedGroup, EnterTeamSight, FogSet, ForceDeath, HealthBar, InventorySlot, ItemUsed, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, SwapItems, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (159)
1.0.0.58–1.0.0.60
Client builds from 1.0.0.58 up to, not including, 1.0.0.61. Patch notes: V1.0.0.58.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.58 | 10 | 0 | 4 | fb3b94f | 2026-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: AnimationOverrides, CampCleared, CancelTargeting, CapturePointChanged, ChampionDied, ChampionStats, EffectAddedGroup, EffectCountGroup, EffectRemovedGroup, EffectReplacedGroup, EnterTeamSight, FogSet, ForceDeath, HealthBar, InventorySlot, ItemUsed, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, SwapItems, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (159)
Against 1.0.0.25–1.0.0.57
Where a build from 1.0.0.58 up to, not including, 1.0.0.61 differs from one from 1.0.0.25 up to, not including, 1.0.0.58. Anything not named here is the same in both.
Laid out differently
PlayAnimationflagshassyncPhaseat bit 8 in 1.0.0.58–1.0.0.60, and not in 1.0.0.25–1.0.0.57.flagshasnoFadeInat bit 9 in 1.0.0.58–1.0.0.60, and not in 1.0.0.25–1.0.0.57.flags.unusedis at bit 8, 24 bits wide, in 1.0.0.25–1.0.0.57 and at bit 10, 22 bits wide, in 1.0.0.58–1.0.0.60.
Chapters
- In the objects chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: A client acts on that
Registeredalone and ignores every other, so it pairs no other player’s player id with a client id. - In the objects chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: Nothing a player sees depends on it.
- In the objects chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: | Map | Holds | | –– | ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– | | 1, 2 | the six
Barracksnames,HQ_T1,HQ_T2,orderShop01,chaosShop01, the six spawn points named__P_…| | 3 |Barracks_T1_C1,Barracks_T2_C1,HQ_T1,HQ_T2,OrderShop01,ChaosShop01,____P_Chaos_Spawn_Barracks__C01| | 4 |Barracks_T1_L1,Barracks_T1_R1,Barracks_T2_L1,Barracks_T2_R1,HQ_T1,HQ_T2,OrderShop01,chaosShop01| - In the ordering chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: A client sends a view report again until a server answers with its number, twice the round trip time plus 1/30 of a second apart.
- In the space chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: A client has data for maps 1 to 4: |
map| Origin of its paths | | —– | —————–– | | 1 | 6991, 7223 | | 2 | 6991, 7223 | | 3 | 7479, 7147 | | 4 | 6710, 6696 | - In the values chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: A champion’s own book ends at slot 48.
- In the data chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: Movement takes the origin of a path from the ground.
- In the data chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: The client has maps 1, 2, 3 and 4.
- In the data chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: A word a name holds anywhere says what the object is, not only its opening, the first match winning: a minion spawner’s
Spawn_Barracksis tested beforeBarracks, which makes an inhibitor, andHQ_makes a nexus andTurreta turret. - In the data chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57:
room.dsclists each object as a.sco, but its file is a binary.SCB, holding its name within it rather than on aName=line. - In the joining chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: Every answer for its own player id, the first included, has a client send
ReconnectedInMatch, saying whether play has yet begun. - In the joining chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: The loading screen picks the card a
SeatLoadProgressupdates by the client id it carries, not by its player id. - In the joining chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: A client’s shop does not wait for
Loadout. - In the vision chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57:
LeaveLocalSightchanges nothing a client shows, whichever unit it names. - In the vision chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: A client draws its fog of war, or the map with no darkening, as
FogSetandFogToggledsay. - In the vision chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57:
LevelUpshows its effect over any champion the client can see, and does nothing for another unit. - In the replication chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: ## A champion | Group | Bits | Value | Type | | —– | –––– | —————————————————————————————————— | —– | | 0 | 0 | Experience | float | | 0 | 1 | Gold in hand | float | | 0 | 2 | Which slots can be cast from | u32 | | 0 | 3 to 6 | What the spell in slots 0 to 3 costs | float | | 0 | 7 to 14 | What the spell in slots 41 to 48 costs | float | | 0 | 15 to 16 | What the spell in slots 0 and 1 of the second set costs | float | | 1 | 0 | What the champion is doing, as a set of bits | u32 | | 1 | 1 to 3 | Whether it is proof against spells, proof against all harm, and targetable | u32 | | 1 | 4 | Whether it is proof against strikes | u32 | | 1 | 5 | Damage it deals by striking | float | | 1 | 6 | Damage its spells deal before modifiers | float | | 1 | 7 | How often it turns a blow aside | float | | 1 | 8 | How often it strikes critically | float | | 1 | 9 | Armour | float | | 1 | 10 | Spell resistance | float | | 1 | 11 to 12 | How fast health and resource return | float | | 1 | 13 | How far it strikes from | float | | 1 | 14 to 16 | Flat and percent modifiers on the damage it strikes with, then the flat modifier on its spells’ damage | float | | 1 | 17 to 18 | Flat and percent reduction of the spell damage it takes | float | | 1 | 19 | A multiplier on how fast it strikes | float | | 1 | 20 | A flat addition to how far it casts | float | | 1 | 21 | A modifier on its cooldowns | float | | 2 | 0 to 1 | Whether it is proof against strikes, then against spells, as group 1 bits 4 and 1 | u32 | | 3 | 0 to 1 | Health and resource as they stand | float | | 3 | 2 to 3 | Health and resource at their greatest | float | | 3 | 4 to 5 | A flat and a percent addition to how far it sees | float | | 3 | 6 | How fast it moves | float | | 3 | 7 | A value whose meaning is not recorded | float | | 3 | 8 | 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 | A multiplier on how fast it strikes | float | | 1 | 4 to 6 | Flat and percent modifiers on the damage it strikes with, then the flat modifier on its spells’ damage | float | | 1 | 7 | How fast health returns | float | | 1 | 8 to 9 | Health as it stands, then at its greatest | float | | 1 | 10 | What the turret is doing, as a set of bits | u32 | | 1 | 11 to 13 | Whether it is proof against spells, proof against all harm, and targetable | u32 | | 1 | 14 | Whether it is proof against strikes | u32 | | 3 | 0 to 1 | A flat and a percent addition to how far it sees | float | | 3 | 2 | How fast it moves | float | | 3 | 3 | A value whose meaning is not recorded | float | ## A minion, and a unit belonging to no side | Group | Bits | Value | Type | | —– | –––– | —————————————————————————————————— | —– | | 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 unit is doing, as a set of bits | u32 | | 1 | 5 to 7 | Whether it is proof against spells, proof against all harm, and targetable | u32 | | 1 | 8 | Whether it is proof against strikes | u32 | | 1 | 9 | Damage it deals by striking | float | | 1 | 10 to 11 | Armour and spell resistance | float | | 1 | 12 | A multiplier on how fast it strikes | float | | 1 | 13 to 15 | Flat and percent modifiers on the damage it strikes with, then the flat modifier on its spells’ damage | float | | 1 | 16 to 17 | How fast health and resource return | float | | 3 | 0 to 1 | A flat and a percent addition to how far it sees | float | | 3 | 2 | How fast it moves | float | | 3 | 3 | A value whose meaning is not recorded | float | ## A building Inhibitors, nexuses and the buildings minions come from share one table.
- In the match chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57:
StatTickasks every unit’s stats to advance by that span. - In the match chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: A client that receives
GameEndedwhile still loading leaves at once. - In the match chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: A client sends
ReconnectedInMatchright after the registration answer. - In the combat chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: A death that credits no killer still stops the unit’s cast and attack.
- In the spells chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: A client casts nothing for a casting record whose length disagrees with its count of targets.
- In the shop chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: The data of the map
VersionSyncnames lists the items that cannot be bought, and can list the only items the shop holds. - In the shop chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: A client uses the map’s list of the items the shop holds only where a setting of its own turns it on.
- In the shop chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: A purchase a server never answers still plays the sound of buying.
- In the votes chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: A client ignores
SurrenderVoteCalledthat arrives before its own champion is on the field. - In the guidance chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: A client takes
TutorialChatLinein any match. - In the guidance chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.25–1.0.0.57: A client takes
TutorialPopupin any match.
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.58–1.0.0.60:
AppearancePopped, its layout: “A client may also take away every look laid over the unit on this command; where it does, the unit is left with no look laid over it, whatever entry names.”, where 1.0.0.25–1.0.0.57 has “A client also takes away every look laid over the unit on this command, and does so before it looks for the one entry names, so the unit is left with no look laid over it.”AttackFrom,target: “The unit swung at. A client throws the swing at it, and drops the whole message where it does not know this unit.”, where 1.0.0.25–1.0.0.57 has “The unit swung at. A client throws the swing at it.”AttackFrom,fromX: “Where the swinging unit stands, along one ground axis, in world units. Where the point is on ground a unit can walk, a client drops any path the unit was following and makes the point where its movement ends, at zero speed; where the unit stands more than 400 units from it, measured along the ground alone, the client also places the unit there at once.”, where 1.0.0.25–1.0.0.57 has “Where the swinging unit stands, along one ground axis, in world units. Where the unit stands more than 400 units from this point, measured along the ground alone, a client first moves it there; nearer, the point has no effect.”Autocast,slot: “The slot cast by itself, from -1 to 48. A client takes a value outside that range as it stands. What -1 does is not recorded.”, where 1.0.0.25–1.0.0.57 has “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.”CameraLock, its layout: “A client sends it on each CameraLockSet with state as that message carried it, all eight bits included, and also as its player sets the lock, as the game forces the view free and as that forcing lifts. A forced free view is sent at once, with state zero. While it holds, a CameraLockSet or player setting is dropped; as it lifts, a client sends the state in force just before it began. Where the client’s own champion is made while the view is locked, a client sends state 1 again.”, where 1.0.0.25–1.0.0.57 has “A client sends it on each CameraLockSet with state as that message carried it, all eight bits included, and also as its player sets the lock or the game forces a lock or lifts one. While a forced lock holds, a CameraLockSet or player setting is dropped. As a forced lock begins, a client keeps the state then in force and sends it as the lock lifts; a second forced lock during the first sends its own state and keeps nothing new.”CastSpell,how.slot: “Which slot is being cast from, from 0 to 48. A client still sends a larger slot, its low seven bits only.”, where 1.0.0.25–1.0.0.57 has “Which slot is being cast from, from 0 to 44. A client still sends a larger slot, its low seven bits only.”CreateChampion, its layout: “The champion takes the id in champion, not the header’s; a client deletes no object holding that id first. For the client’s own seat, name also becomes its own player’s name.”, where 1.0.0.25–1.0.0.57 has “The champion takes the id in champion, not the header’s; a client first removes any object holding that id. For the client’s own seat, name also becomes its own player’s name.”CreateChampion,spawnIndex: “Where the champion first stands and faces. From 0 to 5, its side’s base position plus the offset the map sets for the side’s head count and this index plus one, facing as the map sets for them. A client works out the head count itself. From 6 up, the base position itself, facing along +X. Movement or sight data replaces it.”, where 1.0.0.25–1.0.0.57 has “Where the champion first stands and faces. From 0 to 5, its side’s base position plus the offset the map sets for the side’s head count (players and bots) and this index plus one, facing as the map sets for them. A client works out the head count itself, counting SpawnStart’s bots in it. From 6 up, the base position itself, facing along +X. Movement or sight data replaces it.”CreateNeutral,healthBonus: “What is added to the health it holds. A client makes the unit with health and maximum health of its base health plus this, then adds this to the maximum twice more, so the maximum ends at base health plus three times this, and not below 0; it lowers current health only where it is above that maximum.”, where 1.0.0.25–1.0.0.57 has “What is added to the health it holds, three times over: the unit’s maximum and current health both end at its base health plus three times this, and not below 0.”DeathHistory, its layout: “A client ignores the whole message where killer is zero. Each entry’s size after source follows from event alone.”, where 1.0.0.25–1.0.0.57 has “A client ignores the whole message where killer is zero; a killer it does not hold brings it down. Each entry’s size after source follows from event alone.”DeathHistory,killer: “The unit credited with the death. A client ignores the whole message where this is zero; a killer it does not hold is shown with no name.”, where 1.0.0.25–1.0.0.57 has “The unit credited with the death. A client ignores the whole message where this is zero, and fails where it does not hold this unit.”DeathHistory,sourceType: “What sort of source the killer was. A client keeps only the low 4 bits, signed: 1 names the killer as a minion, 2 as a turret, and any other value by the killer’s own name.”, where 1.0.0.25–1.0.0.57 has “What sort of source the killer was. A client keeps only the low 4 bits, signed, and acts on them only where it holds killer.”DeathHistory,entries[].damage.parent.side: “What it means is not recorded for this range. A client compares it with the target’s side, 0 for side 100 and 1 for side 200, to sort the entry into one of two groups in its death summary.”, where 1.0.0.25–1.0.0.57 has “What it means is not recorded for this range; a server writes zero.”DeathHistory,entries[].damage.parent.category: “A client sums the physical and magical damage of two damageDealt entries where this, sourceKind and both spells match, and, where this is zero, the subjects match too.”, where 1.0.0.25–1.0.0.57 has “A client sums two entries of this sort where this, the source kinds and both spells match, and, where this is zero, the subjects match too.”DeathHistory,entries[].heal.amount: “How much health; a client shows it for healCast alone.”, where 1.0.0.25–1.0.0.57 has “How much health, as shown.”DeathHistory,entries[].heal.script: “The spell or effect, by the number its name gives; a client shows it by name for healCast alone.”, where 1.0.0.25–1.0.0.57 has “The spell or effect, by the number its name gives, shown by name.”DeathHistory,entries[].heal.parentScript: “The spell or effect it came from, by the number its name gives; a client shows it by name for healCast alone.”, where 1.0.0.25–1.0.0.57 has “The spell or effect it came from, by the number its name gives, shown by name.”DeathHistory,entries[].heal.unusedToo: “What it means is not recorded for this range. A client compares its low four bits with the target’s side, as it does damage’s parent side, and takes its next four bits as a category, as it does damage’s parent category.”, where 1.0.0.25–1.0.0.57 has “Unused; a client reads nothing here.”DeathHistory,entries[].effect.script: “The spell or effect, by the number its name gives.”, where 1.0.0.25–1.0.0.57 has “The spell or effect, by the number its name gives, shown by name.”DeathHistory,entries[].effect.parentScript: “The spell or effect it came from, by the number its name gives. With parentSource, it names the group of the death summary the entry goes in.”, where 1.0.0.25–1.0.0.57 has “The spell or effect it came from, by the number its name gives, shown by name.”DeathHistory,entries[].effect.unusedToo: “What it means is not recorded for this range. A client compares its low four bits with the target’s side, as it does damage’s parent side, and takes its next four bits as a category, as it does damage’s parent category.”, where 1.0.0.25–1.0.0.57 has “Unused; a client reads nothing here.”EnterSight,view: “Everything else a client needs to draw the unit. A server sends it for a champion, a minion or another unit with a mind, which a client reads past the end of the message without it. A client ignores it for a turret, and reads nothing of it for any other unit.”, where 1.0.0.25–1.0.0.57 has “Everything else a client needs to draw the unit. A server sends it for a champion, a minion or another unit with a mind, which a client reads past the end of the message without it. For any other unit a server ends the message before it, and a client reads none of the body.”Exit, its layout: “A client sends it once, as it leaves without a result while the match runs: as its player quits from the options menu or closes the window, gives up reconnecting after the connection is lost, or dismisses the notice that it was disconnected for being away. It sends none while the match still loads, none after GameEnded, and none on Shutdown or BotKick.”, where 1.0.0.25–1.0.0.57 has “A client sends it once, as it leaves without a result: as its player confirms quitting or the window is asked to close, or as its player gives up reconnecting after the connection is lost, or loses it where reconnecting is turned off. It sends none after GameEnded, and none on Shutdown or BotKick.”FloatingText,error: “Nonzero has a client show the text on screen as a message for ten seconds, whatever slot holds, and do nothing else with the message.”, where 1.0.0.25–1.0.0.57 has “Nonzero has a client show the text on screen as a message for ten seconds, whatever slot holds, and float an error notice of its own over the unit, under the same view and settings as slot 0; it does nothing else with the message.”FloatingText,text: “The text, ended by a zero byte; the two take at most 1024 bytes. For slot 0 and for the on-screen message, a client shows a text that names a key into its own text as that key’s text, and any other text as it is.”, where 1.0.0.25–1.0.0.57 has “The text, ended by a zero byte; the two take at most 1024 bytes.”GameEnded, its layout: “A client counts a win where its own side is 100 and result is nonzero, or its side is 200 and result is zero, and a loss otherwise. Arriving while the match still loads, it records the result and the client leaves at once, sending nothing; where its own player does not yet exist, it shows an error and leaves as one abandoning the match. Once the match runs, it ends the match on its screen and sends ClientFinished, counting a win where its own player does not exist.”, where 1.0.0.25–1.0.0.57 has “A client counts a win where its own side is 100 and result is nonzero, or its side is 200 and result is zero, and a loss otherwise. It ends the match on its screen and sends ClientFinished. A client fails where its own player does not yet exist.”InhibitorState,state: “What state the inhibitor takes. For any other value a client shows nothing but keeps it as the inhibitor’s state, so a later 0 or 1 is applied even where it repeats the state before.”, where 1.0.0.25–1.0.0.57 has “What state the inhibitor takes. A client ignores any other value.”Loadout, its layout: “A client sets the champion’s two summoner slots from summoners, a zero leaving its slot as it was, and keeps the runes, the choices and level. It changes nothing in the shop.”, where 1.0.0.25–1.0.0.57 has “A client’s shop is set up by the Loadout of its own champion: until that arrives the shop opens empty, with no items, no suggested items and no builds, and is drawn at a size that does not fit the screen. A server sends one for every champion at spawning, between SpawnStart and SpawnEnd.”MissileState, its layout: “A client reads neither a speed nor a part of the missile’s life spent. Neither the ground-height rule for endY nor a trail moved on by an age is confirmed. Where the casting names a second unit the client holds, a client aims the casting at that unit’s position; it moves no unit. For a missile that flies straight, casterAt becomes its start point, end and facing are taken as sent, and its velocity is set to carry it from its position to its end at the spell’s own missile speed; for any other missile, a client keeps the velocity as sent, and casterAt, facing, end and bounced have no effect. The header names the unit casting, as the casting inside does.”, where 1.0.0.25–1.0.0.57 has “A client reads neither a speed nor a part of the missile’s life spent. Neither the ground-height rule for endY nor a trail moved on by an age is confirmed. A client places the casting’s second unit, where it holds that unit, where the thrower stood rather than with the casting unit. The header names the unit casting, as the casting inside does.”MissileState,how.bounced: “Set where the missile has bounced. For a missile that flies straight, a client then sets its end to casterAt raised by the missile’s height above the ground, so it heads back to where the thrower stood; for any other missile it has no effect.”, where 1.0.0.25–1.0.0.57 has “Set where the missile has bounced. A client tests the whole byte, so any set bit counts. For a missile it already holds that flies in a straight line, a client then starts the line again from the caster’s position, raised by the missile’s height above the ground, aiming it from where the missile now is.”SpawnPet,clone: “The unit it copies, or zero. Where a client holds that unit, it links the pet to it and copies its current state: health, resource, their maxima and its other stats; otherwise nothing is linked or copied.”, where 1.0.0.25–1.0.0.57 has “The unit it copies, or zero. For a minion-like pet, a client only links the pet to that unit, where it holds it, and copies nothing of it.”SpawnUnit, its layout: “A client gives the new unit its id and node, deleting nothing first, and fails where it cannot make the unit. Where clone names a unit it holds, a client links the new unit to it as a clone and copies its current state: health, resource, their maxima and its other stats; zero or an unknown id leaves no link. The header names the unit that put it there; a client reads nothing of it.”, where 1.0.0.25–1.0.0.57 has “A client gives the new unit its id and node, deleting nothing first. Where clone names a unit it holds, a client only links the new unit to it as a clone and copies nothing of it; zero or an unknown id leaves no link. The header names the unit that put it there.”SpawnUnit,clone: “The unit the new unit is linked to as a clone and copies, or zero.”, where 1.0.0.25–1.0.0.57 has “The unit the new unit is linked to as a clone, or zero.”SpellCastAnswer, its layout: “There is no byte for ending a charge and no sync id: the casting is the whole body. A client fails where the casting’s size is wrong, for it then casts with no spell.”, where 1.0.0.25–1.0.0.57 has “There is no byte for ending a charge and no sync id: the casting follows the header at once.”UnitStopped, its layout: “A client applies it only where its sync id is not older than the last the unit took, counting a wrap: this message, Path, PathWithSpeed, WaypointGroup and WaypointGroupAtSpeed share one count per unit, starting at -1.”, where 1.0.0.25–1.0.0.57 has “A client applies it only where its sync id is not older than the last the unit took, counting a wrap: this message, PathWithSpeed and Path share one count per unit, starting at -1.”WaypointGroupAtSpeed, its layout: “A client answers each with WaypointAck, naming this sync id, before it reads any path.”, where 1.0.0.25–1.0.0.57 has “A client answers each with WaypointAck, naming this sync id alone, before it reads any movement and whatever movementCount is.”
1.0.0.61–1.0.0.62
Client builds from 1.0.0.61 up to, not including, 1.0.0.63. Patch notes: V1.0.0.61.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.61 | 10 | 0 | 4 | aab167f | 2026-11-03 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CampCleared, CancelTargeting, CapturePointChanged, ChampionDied, EffectAddedGroup, EffectCountGroup, EffectRemovedGroup, EffectReplacedGroup, EnterTeamSight, FogSet, ForceDeath, HealthBar, InventorySlot, ItemUsed, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, SwapItems, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (161)
Against 1.0.0.58–1.0.0.60
Where a build from 1.0.0.61 up to, not including, 1.0.0.63 differs from one from 1.0.0.58 up to, not including, 1.0.0.61. Anything not named here is the same in both.
In 1.0.0.61–1.0.0.62, not in 1.0.0.58–1.0.0.60
| Message | Sent by | Command | What it does |
|---|---|---|---|
AnimationOverrides | server | 177 on events | Make a unit play one set of movements wherever it would have played another |
ChampionStats | server | 176 on events | Set a champion’s tallies for the scoreboard |
Laid out differently
AttackFromunreadis in 1.0.0.61–1.0.0.62 (bytes, 4), afterslot, and not in 1.0.0.58–1.0.0.60.
ClientEvent(vectors: buff-on-1-0-0-61, consumable-bought-on-1-0-0-61, critical-strike-on-1-0-0-61, damage-dealt-on-1-0-0-61, damage-taken-on-1-0-0-61, death-assist-on-1-0-0-61, died-on-1-0-0-61, gold-earned-on-1-0-0-61, gold-spent-on-1-0-0-61, heal-cast-on-1-0-0-61, heal-on-1-0-0-61, item-bought-on-1-0-0-61, killing-spree-on-1-0-0-61, one-on-1-0-0-61)damage.trueis in 1.0.0.61–1.0.0.62 (f32), afterdamage.magical, and not in 1.0.0.58–1.0.0.60.assist.trueis in 1.0.0.61–1.0.0.62 (f32), afterassist.magical, and not in 1.0.0.58–1.0.0.60.
DeathHistory(vectors: one-on-1-0-0-61)entries[].damage.trueis in 1.0.0.61–1.0.0.62 (f32), afterentries[].damage.magical, and not in 1.0.0.58–1.0.0.60.entries[].assist.trueis in 1.0.0.61–1.0.0.62 (f32), afterentries[].assist.magical, and not in 1.0.0.58–1.0.0.60.
EffectCount(vectors: one-on-1-0-0-61)runningForis in 1.0.0.61–1.0.0.62 (f32), aftertimeLeft, and not in 1.0.0.58–1.0.0.60.
InhibitorStatedurationis i32 in 1.0.0.58–1.0.0.60 and u32 in 1.0.0.61–1.0.0.62.
WorldEventdamage.trueis in 1.0.0.61–1.0.0.62 (f32), afterdamage.magical, and not in 1.0.0.58–1.0.0.60.assist.trueis in 1.0.0.61–1.0.0.62 (f32), afterassist.magical, and not in 1.0.0.58–1.0.0.60.
Structs
Movementheaderis 2-byte bits in 1.0.0.58–1.0.0.60 and 4-byte bits in 1.0.0.61–1.0.0.62.headerhashasTeleportTokenat bit 0 in 1.0.0.61–1.0.0.62, and not in 1.0.0.58–1.0.0.60.headerhasunusedat bit 1 in 1.0.0.61–1.0.0.62, and not in 1.0.0.58–1.0.0.60.header.pointCountis at bit 0, 16 bits wide, in 1.0.0.58–1.0.0.60 and at bit 16, 15 bits wide, in 1.0.0.61–1.0.0.62.headerhasunusedHighat bit 31 in 1.0.0.61–1.0.0.62, and not in 1.0.0.58–1.0.0.60.path.teleportTokenis in 1.0.0.61–1.0.0.62 (u8), afterpath.unit, and not in 1.0.0.58–1.0.0.60.
MovementAtSpeedheaderis 2-byte bits in 1.0.0.58–1.0.0.60 and 4-byte bits in 1.0.0.61–1.0.0.62.headerhashasTeleportTokenat bit 0 in 1.0.0.61–1.0.0.62, and not in 1.0.0.58–1.0.0.60.headerhasunusedat bit 1 in 1.0.0.61–1.0.0.62, and not in 1.0.0.58–1.0.0.60.header.pointCountis at bit 0, 16 bits wide, in 1.0.0.58–1.0.0.60 and at bit 16, 15 bits wide, in 1.0.0.61–1.0.0.62.headerhasunusedHighat bit 31 in 1.0.0.61–1.0.0.62, and not in 1.0.0.58–1.0.0.60.path.teleportTokenis in 1.0.0.61–1.0.0.62 (u8), afterpath.unit, and not in 1.0.0.58–1.0.0.60.
SpellCaststartedAtis in 1.0.0.61–1.0.0.62 (f32), aftercooldown, and not in 1.0.0.58–1.0.0.60.
Chapters
- In the messages chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62: A client unwraps no container: a payload whose command is 255 does nothing, on any channel.
- In the objects chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62: 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 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62: A client sends a
WaypointGroup’sWaypointAckbefore it reads any path, whatever units the paths name. - In the joining chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62: The loading screen picks the card a
SeatLoadProgressupdates by the client id it carries, not by its player id. - In the joining chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62: A client drops nothing for arriving before
CharacterSelected. - In the joining chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62: A client’s shop does not wait for
Loadout. - In the units chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62: A client acts on a
CreateChampionor aCreateNeutralwhenever it arrives, beforeCharacterSelectedas after. - In the vision chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62:
EnterLocalSightstates nothing of the unit. - In the vision chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62: Any other
GoldGainedshows the gold gained or lost over the unit it names, whichever unit that is. - In the vision chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62:
LevelUpshows its effect over any champion the client can see, and does nothing for another unit. - In the movement chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62: A server needs no origin.
- In the movement chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62: A path carries no flag and no token, so nothing relocates a unit: every path is walked.
- In the movement chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62: A client sends the
WaypointAckbefore reading any movement in the group, and lists no units in it. - In the replication chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62: ## A champion | Group | Bits | Value | Type | | —– | –––– | —————————————————————————————————— | —– | | 0 | 0 | Experience | float | | 0 | 1 | Gold in hand | float | | 0 | 2 | Which slots can be cast from | u32 | | 0 | 3 to 6 | What the spell in slots 0 to 3 costs | float | | 0 | 7 to 14 | What the spell in slots 41 to 48 costs | float | | 0 | 15 to 16 | What the spell in slots 0 and 1 of the second set costs | float | | 1 | 0 | What the champion is doing, as a set of bits | u32 | | 1 | 1 to 3 | Whether it is proof against spells, proof against all harm, and targetable | u32 | | 1 | 4 | Whether it is proof against strikes | u32 | | 1 | 5 | Damage it deals by striking | float | | 1 | 6 | Damage its spells deal before modifiers | float | | 1 | 7 | How often it turns a blow aside | float | | 1 | 8 | How often it strikes critically | float | | 1 | 9 | Armour | float | | 1 | 10 | Spell resistance | float | | 1 | 11 to 12 | How fast health and resource return | float | | 1 | 13 | How far it strikes from | float | | 1 | 14 to 16 | Flat and percent modifiers on the damage it strikes with, then the flat modifier on its spells’ damage | float | | 1 | 17 to 18 | Flat and percent reduction of the spell damage it takes | float | | 1 | 19 | A multiplier on how fast it strikes | float | | 1 | 20 | A flat addition to how far it casts | float | | 1 | 21 | A modifier on its cooldowns | float | | 2 | 0 to 1 | Whether it is proof against strikes, then against spells, as group 1 bits 4 and 1 | u32 | | 3 | 0 to 1 | Health and resource as they stand | float | | 3 | 2 to 3 | Health and resource at their greatest | float | | 3 | 4 to 5 | A flat and a percent addition to how far it sees | float | | 3 | 6 | How fast it moves | float | | 3 | 7 | A value whose meaning is not recorded | float | | 3 | 8 | 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 | A multiplier on how fast it strikes | float | | 1 | 4 to 6 | Flat and percent modifiers on the damage it strikes with, then the flat modifier on its spells’ damage | float | | 1 | 7 | How fast health returns | float | | 1 | 8 to 9 | Health as it stands, then at its greatest | float | | 1 | 10 | What the turret is doing, as a set of bits | u32 | | 1 | 11 to 13 | Whether it is proof against spells, proof against all harm, and targetable | u32 | | 1 | 14 | Whether it is proof against strikes | u32 | | 3 | 0 to 1 | A flat and a percent addition to how far it sees | float | | 3 | 2 | How fast it moves | float | | 3 | 3 | A value whose meaning is not recorded | float | ## A minion, and a unit belonging to no side | Group | Bits | Value | Type | | —– | –––– | —————————————————————————————————— | —– | | 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 unit is doing, as a set of bits | u32 | | 1 | 5 to 7 | Whether it is proof against spells, proof against all harm, and targetable | u32 | | 1 | 8 | Whether it is proof against strikes | u32 | | 1 | 9 | Damage it deals by striking | float | | 1 | 10 to 11 | Armour and spell resistance | float | | 1 | 12 | A multiplier on how fast it strikes | float | | 1 | 13 to 15 | Flat and percent modifiers on the damage it strikes with, then the flat modifier on its spells’ damage | float | | 1 | 16 to 17 | How fast health and resource return | float | | 3 | 0 to 1 | A flat and a percent addition to how far it sees | float | | 3 | 2 | How fast it moves | float | | 3 | 3 | A value whose meaning is not recorded | float | ## A building Inhibitors, nexuses and the buildings minions come from share one table.
- In the match chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62: A client sends
ReconnectedInMatchright after the registration answer. - In the spells chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62: A command its player types sends
UpgradeSpellwithout checking anything. - In the shop chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62: A client uses the map’s list of the items the shop holds only where a setting of its own turns it on.
- In the shop chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62: A client asks for an item a player holds only one of even where the player holds it already, and an item that can be used in the shop needs a slot as any other does.
- In the interface chapter, a passage holds for 1.0.0.58–1.0.0.60 and not 1.0.0.61–1.0.0.62: A client ignores
CameraLockSetthat arrives while it holds its camera itself, and answers nothing.
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.61–1.0.0.62:
BuildingDied,attacker: “The unit that destroyed it.”, where 1.0.0.58–1.0.0.60 has “The unit that destroyed it. A client reads nothing here.”EnterLocalSight, its layout: “It carries no other messages: the body is the unit’s health alone, always present.”, where 1.0.0.58–1.0.0.60 has “A client reads none of the body: it shows the unit and reads nothing more.”EnterLocalSight,vitals: “The unit’s health. Where a client already holds the unit, it reads these from body offset 2 whatever the carried size, so a server carries messages here only where they create the unit, and sends the vitals right after them.”, where 1.0.0.58–1.0.0.60 has “The unit’s health. A client reads nothing here.”EnterLocalSight,vitals.maxHealth: “What the unit’s health tops out at.”, where 1.0.0.58–1.0.0.60 has “A client reads nothing here.”EnterLocalSight,vitals.health: “What its health stands at. A client holds it to between zero and maxHealth.”, where 1.0.0.58–1.0.0.60 has “A client reads nothing here.”EnterSight,view: “Everything else a client needs to draw the unit. A server sends it for a champion, a minion or another unit with a mind, which a client reads past the end of the message without it, and ends the message after the items for any other unit.”, where 1.0.0.58–1.0.0.60 has “Everything else a client needs to draw the unit. A server sends it for a champion, a minion or another unit with a mind, which a client reads past the end of the message without it. A client ignores it for a turret, and reads nothing of it for any other unit.”MissileState, its layout: “A client reads neither a speed nor a part of the missile’s life spent. Neither the ground-height rule for endY nor a trail moved on by an age is confirmed. A client places the casting’s second unit, where it holds that unit, where the thrower stood rather than with the casting unit. The header names the unit casting, as the casting inside does.”, where 1.0.0.58–1.0.0.60 has “A client reads neither a speed nor a part of the missile’s life spent. Neither the ground-height rule for endY nor a trail moved on by an age is confirmed. Where the casting names a second unit the client holds, a client aims the casting at that unit’s position; it moves no unit. For a missile that flies straight, casterAt becomes its start point, end and facing are taken as sent, and its velocity is set to carry it from its position to its end at the spell’s own missile speed; for any other missile, a client keeps the velocity as sent, and casterAt, facing, end and bounced have no effect. The header names the unit casting, as the casting inside does.”MissileState,how.bounced: “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.”, where 1.0.0.58–1.0.0.60 has “Set where the missile has bounced. For a missile that flies straight, a client then sets its end to casterAt raised by the missile’s height above the ground, so it heads back to where the thrower stood; for any other missile it has no effect.”SpawnStart,count: “A single count the client keeps. What it carries is not recorded for this range; a server writes zero.”, where 1.0.0.58–1.0.0.60 has “A client reads nothing here. A server writes zero.”SpellCastAnswer, its layout: “There is no byte for ending a charge: the casting follows the sync id. A client fails where the casting’s size is wrong, for it then casts with no spell.”, where 1.0.0.58–1.0.0.60 has “There is no byte for ending a charge and no sync id: the casting is the whole body. A client fails where the casting’s size is wrong, for it then casts with no spell.”WaypointGroupAtSpeed, its layout: “A client answers each with WaypointAck, naming this sync id and listing, in order, each unit whose path carried a teleport token with that token.”, where 1.0.0.58–1.0.0.60 has “A client answers each with WaypointAck, naming this sync id, before it reads any path.”
1.0.0.63–1.0.0.69
Client builds from 1.0.0.63 up to, not including, 1.0.0.70. Patch notes: V1.0.0.63, V1.0.0.66.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.63 | 10 | 0 | 4 | 643caf8 | 2026-11-03 |
| 1.0.0.66 | 10 | 0 | 4 | 3f5aaad | 2026-11-03 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CampCleared, CancelTargeting, CapturePointChanged, ChampionDied, EffectAddedGroup, EffectCountGroup, EffectRemovedGroup, EffectReplacedGroup, EnterTeamSight, FogSet, ForceDeath, HealthBar, InventorySlot, ItemUsed, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, SwapItems, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (161)
Against 1.0.0.61–1.0.0.62
Where a build from 1.0.0.63 up to, not including, 1.0.0.70 differs from one from 1.0.0.61 up to, not including, 1.0.0.63. Anything not named here is the same in both.
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
| Channel | 1.0.0.61–1.0.0.62 | 1.0.0.63–1.0.0.69 | Messages |
|---|---|---|---|
| clock | 75–76 | 81–82 | ClockReply, ClockConvergence |
| events | 71–94 | 77–100 | Revived, Respawned, BuildingDied, ClockSync, Path, PathWithSpeed, EffectCount, Loadout, RegionRemoved, RegionAttached, RegionAdded, SpawnUnit, StopAnimation, GoldRedirect, AppearancePushed, AppearancePopped, FaceDirection, CameraBehaviour |
| events | 102–137 | 105–140 | DestroyMissile, ChainTargets, BotDebug, BotTargets, BotState, ClientEvent, CameraAck, MatchIdentity, Reconnected, ResyncEnded, WaypointGroupAtSpeed, InputLockToggled, FogToggled, MovementBounds, CameraLockSet, MoveCamera, VoiceEvent, SpellTargetingChanged, Paused, Resumed, GameSpeed, FadeTo, FadeRemoved |
| requests | 93 | 99 | FacePosition |
| requests | 113–129 | 116–132 | LoadingProgress, Exit, ReconnectedInMatch, WaypointAck, TransientAck |
| transient | 121–128 | 124–131 | WaypointGroup, Replication |
Laid out differently
DeathHistory- Its command is 112 in 1.0.0.61–1.0.0.62 and 115 in 1.0.0.63–1.0.0.69.
spanis in 1.0.0.63–1.0.0.69 (f32), afterkiller, and not in 1.0.0.61–1.0.0.62.
MoveOrdermovementis in 1.0.0.63–1.0.0.69 (record), aftertarget, and not in 1.0.0.61–1.0.0.62.
PlayerDisconnected- Its command is 116 in 1.0.0.61–1.0.0.62 and 119 in 1.0.0.63–1.0.0.69.
championis in 1.0.0.63–1.0.0.69 (u32) at the start, and not in 1.0.0.61–1.0.0.62.clientIdis in 1.0.0.61–1.0.0.62 and not in 1.0.0.63–1.0.0.69.
SeatLoadProgress- Its command is 114 in 1.0.0.61–1.0.0.62 and 117 in 1.0.0.63–1.0.0.69.
statusnames bit 0unusedLowin 1.0.0.61–1.0.0.62 andcountin 1.0.0.63–1.0.0.69.statusnames bit 31unusedHighin 1.0.0.61–1.0.0.62 andloadedin 1.0.0.63–1.0.0.69.statusTextis in 1.0.0.61–1.0.0.62 and not in 1.0.0.63–1.0.0.69.
Chapters
- In the movement chapter, a passage holds for 1.0.0.61–1.0.0.62 and not 1.0.0.63–1.0.0.69: An order carries no path: only its destination, in world floats.
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.63–1.0.0.69:
CreateChampion, its layout: “The champion takes the id in champion, not the header’s; a client first removes any object holding that id. For the client’s own seat, name also becomes its own player’s name. A client drops the message while its map’s navigation data is unloaded, as early in a reconnection.”, where 1.0.0.61–1.0.0.62 has “The champion takes the id in champion, not the header’s; a client deletes no object holding that id first. For the client’s own seat, name also becomes its own player’s name.”CreateChampion,bot: “Nonzero where a bot plays the seat and nobody holds it; its shown name is then the client’s own bot name for asset, and name has no effect.”, where 1.0.0.61–1.0.0.62 has “Nonzero where a bot plays the seat and nobody holds it. A client only keeps it; the shown name is name as sent.”CreateChampion,spawnIndex: “Where the champion first stands and faces. From 0 to 5, its side’s base position plus the offset the map sets for the side’s head count (players and bots) and this index plus one, facing as the map sets for them. A client works out the head count itself, counting SpawnStart’s bots in it. From 6 up, the base position itself, facing along +X. Movement or sight data replaces it.”, where 1.0.0.61–1.0.0.62 has “Where the champion first stands and faces. From 0 to 5, its side’s base position plus the offset the map sets for the side’s head count and this index plus one, facing as the map sets for them. A client works out the head count itself. From 6 up, the base position itself, facing along +X. Movement or sight data replaces it.”CreateNeutral, its layout: “A client leaves the monster facing as it was made, and drops the message while its map’s navigation data is unloaded. A client adds damageBonus to the damage the unit deals, and healthBonus to its maximum health, twice over, keeping that maximum at zero or above, and sets its health to the new maximum.”, where 1.0.0.61–1.0.0.62 has “A client leaves the monster facing as it was made. A client adds damageBonus to the damage the unit deals twice over.”CreateNeutral,healthBonus: “What is added to the health it holds.”, where 1.0.0.61–1.0.0.62 has “What is added to the health it holds. A client makes the unit with health and maximum health of its base health plus this, then adds this to the maximum twice more, so the maximum ends at base health plus three times this, and not below 0; it lowers current health only where it is above that maximum.”CreateNeutral,camp: “Which camp the unit belongs to. A client adds the unit to that camp where a CampMarker has placed it first; where no camp has that number, it makes one at the unit’s own position and adds the unit to it.”, where 1.0.0.61–1.0.0.62 has “Which camp the unit belongs to. Where no camp of that number exists yet, a client makes one at the unit’s own position, not at campAt, and adds the unit to it.”MissileReport, its layout: no note, where 1.0.0.61–1.0.0.62 has “A client also sends it 209 bytes long, header included, from a missile of its own. That form writes only atX to atZ, velocityX to velocityZ and the cast, and leaves every other byte unwritten.”SpellNumbers,entryCount: “How many sets of numbers follow. A client ignores the whole message where they do not all fit in it.”, where 1.0.0.61–1.0.0.62 has “How many sets of numbers follow. A client reads every set it names.”
1.0.0.70–1.0.0.71
Client builds from 1.0.0.70 up to, not including, 1.0.0.72. Patch notes: V1.0.0.70.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.70 | 10 | 0 | 4 | 04d6143 | 2026-11-03 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CampCleared, CancelTargeting, CapturePointChanged, ChampionDied, EffectAddedGroup, EffectCountGroup, EffectRemovedGroup, EffectReplacedGroup, EnterTeamSight, FogSet, ForceDeath, HealthBar, InventorySlot, ItemUsed, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (162)
Against 1.0.0.63–1.0.0.69
Where a build from 1.0.0.70 up to, not including, 1.0.0.72 differs from one from 1.0.0.63 up to, not including, 1.0.0.70. Anything not named here is the same in both.
In 1.0.0.70–1.0.0.71, not in 1.0.0.63–1.0.0.69
| Message | Sent by | Command | What it does |
|---|---|---|---|
SwapItems | client | 45 on requests | Move an item from one slot to another |
Chapters
- In the shop chapter, a passage holds for 1.0.0.63–1.0.0.69 and not 1.0.0.70–1.0.0.71: A client never asks to swap two slots: it has no
SwapItems.
1.0.0.72–1.0.0.73
Client builds from 1.0.0.72 up to, not including, 1.0.0.74. Patch notes: V1.0.0.72.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.72 | 10 | 0 | 4 | 91e5dfc | 2026-11-03 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CampCleared, CancelTargeting, CapturePointChanged, ChampionDied, EffectAddedGroup, EffectCountGroup, EffectRemovedGroup, EffectReplacedGroup, EnterTeamSight, FogSet, ForceDeath, HealthBar, InventorySlot, ItemUsed, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (162)
Against 1.0.0.70–1.0.0.71
Where a build from 1.0.0.72 up to, not including, 1.0.0.74 differs from one from 1.0.0.70 up to, not including, 1.0.0.72. Anything not named here is the same in both.
Structs
SpellCasthowhasforcedat bit 2 in 1.0.0.72–1.0.0.73, and not in 1.0.0.70–1.0.0.71.how.unusedis at bit 2, 6 bits wide, in 1.0.0.70–1.0.0.71 and at bit 3, 5 bits wide, in 1.0.0.72–1.0.0.73.
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.72–1.0.0.73:
ClientEvent,event: “Which event, from 0 to 74, and so which fields follow.”, where 1.0.0.70–1.0.0.71 has “Which event, from 0 to 73, and so which fields follow.”DeathHistory,entries[].event: “Which event, from 0 to 74, and so which fields follow.”, where 1.0.0.70–1.0.0.71 has “Which event, from 0 to 73, and so which fields follow.”WorldEvent,event: “Which event, from 0 to 74, and so which fields follow.”, where 1.0.0.70–1.0.0.71 has “Which event, from 0 to 73, and so which fields follow.”
1.0.0.74
Client builds from 1.0.0.74 up to, not including, 1.0.0.75. Patch notes: V1.0.0.74.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.74 | 10 | 0 | 4 | feab01e | 2026-11-03 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CampCleared, CancelTargeting, CapturePointChanged, ChampionDied, EffectAddedGroup, EffectCountGroup, EffectRemovedGroup, EffectReplacedGroup, EnterTeamSight, FogSet, ForceDeath, HealthBar, InventorySlot, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (163)
Against 1.0.0.72–1.0.0.73
Where a build from 1.0.0.74 up to, not including, 1.0.0.75 differs from one from 1.0.0.72 up to, not including, 1.0.0.74. Anything not named here is the same in both.
In 1.0.0.74, not in 1.0.0.72–1.0.0.73
| Message | Sent by | Command | What it does |
|---|---|---|---|
ItemUsed | server | 47 on events | What a server sends after an item in a unit’s inventory is used |
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
1.0.0.75–1.0.0.78
Client builds from 1.0.0.75 up to, not including, 1.0.0.79. Patch notes: V1.0.0.75.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.75 | 10 | 0 | 4 | cd5e97d | 2026-11-03 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CampCleared, CancelTargeting, CapturePointChanged, ChampionDied, EffectAddedGroup, EffectCountGroup, EffectRemovedGroup, EffectReplacedGroup, EnterTeamSight, FogSet, ForceDeath, HealthBar, InventorySlot, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (163)
Against 1.0.0.74
Where a build from 1.0.0.75 up to, not including, 1.0.0.79 differs from one from 1.0.0.74 up to, not including, 1.0.0.75. Anything not named here is the same in both.
Laid out differently
SpawnPet(vectors: one-on-1-0-0-75)flagsis in 1.0.0.75–1.0.0.78 (1-byte bits), afterclone, and not in 1.0.0.74.
1.0.0.79–1.0.0.80
Client builds from 1.0.0.79 up to, not including, 1.0.0.81. Patch notes: V1.0.0.79.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.79 | 10 | 0 | 4 | c26e5fb | 2026-11-03 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CampCleared, CancelTargeting, CapturePointChanged, ChampionDied, EffectAddedGroup, EffectCountGroup, EffectRemovedGroup, EffectReplacedGroup, EnterTeamSight, FogSet, ForceDeath, HealthBar, InventorySlot, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (163)
Against 1.0.0.75–1.0.0.78
Where a build from 1.0.0.79 up to, not including, 1.0.0.81 differs from one from 1.0.0.75 up to, not including, 1.0.0.79. Anything not named here is the same in both.
Transport
- The families differ: see families.json.
Laid out differently
Attacktimingis f32 in 1.0.0.75–1.0.0.78 and u8 in 1.0.0.79–1.0.0.80.
AttackFromtimingis f32 in 1.0.0.75–1.0.0.78 and u8 in 1.0.0.79–1.0.0.80.unreadis in 1.0.0.75–1.0.0.78 and not in 1.0.0.79–1.0.0.80.fromYis in 1.0.0.75–1.0.0.78 and not in 1.0.0.79–1.0.0.80.
MoveOrdermovement.path.points[].xis f32 in 1.0.0.75–1.0.0.78 and i16 in 1.0.0.79–1.0.0.80.movement.path.points[].zis f32 in 1.0.0.75–1.0.0.78 and i16 in 1.0.0.79–1.0.0.80.
WaypointAckrelocationCountis in 1.0.0.79–1.0.0.80 (u8), aftersyncId, and not in 1.0.0.75–1.0.0.78.relocationsis in 1.0.0.79–1.0.0.80 (count in relocationCount × record), afterrelocationCount, and not in 1.0.0.75–1.0.0.78.
Structs
SpellCasthowhasoverrideCastPositionat bit 3 in 1.0.0.79–1.0.0.80, and not in 1.0.0.75–1.0.0.78.howhasclickedat bit 4 in 1.0.0.79–1.0.0.80, and not in 1.0.0.75–1.0.0.78.how.unusedis at bit 3, 5 bits wide, in 1.0.0.75–1.0.0.78 and at bit 5, 3 bits wide, in 1.0.0.79–1.0.0.80.
Chapters
- In the movement chapter, a passage holds for 1.0.0.79–1.0.0.80 and not 1.0.0.75–1.0.0.78: A client answers each group with one
WaypointAck, listing every unit in it that carried a token, with an empty list where none did.
1.0.0.81
Client builds from 1.0.0.81 up to, not including, 1.0.0.82. Patch notes: V1.0.0.81.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.81 | 10 | 0 | 4 | 70a93dc | 2026-11-03 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CampCleared, CancelTargeting, CapturePointChanged, ChampionDied, EffectAddedGroup, EffectCountGroup, EffectRemovedGroup, EffectReplacedGroup, EnterTeamSight, FogSet, ForceDeath, HealthBar, InventorySlot, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (163)
Against 1.0.0.79–1.0.0.80
Where a build from 1.0.0.81 up to, not including, 1.0.0.82 differs from one from 1.0.0.79 up to, not including, 1.0.0.81. Anything not named here is the same in both.
Laid out differently
SpellCastAnswersyncIdis in 1.0.0.81 (u32) at the start, and not in 1.0.0.79–1.0.0.80.
Structs
Movementpath.points[].xis f32 in 1.0.0.79–1.0.0.80 and i16 in 1.0.0.81.path.points[].zis f32 in 1.0.0.79–1.0.0.80 and i16 in 1.0.0.81.
MovementAtSpeedpath.points[].xis f32 in 1.0.0.79–1.0.0.80 and i16 in 1.0.0.81.path.points[].zis f32 in 1.0.0.79–1.0.0.80 and i16 in 1.0.0.81.
Chapters
1.0.0.82
Client builds from 1.0.0.82 up to, not including, 1.0.0.83. Patch notes: V1.0.0.82.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.82 | 10 | 0 | 4 | 688d35d | 2026-11-03 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CampCleared, CancelTargeting, CapturePointChanged, ChampionDied, EnterTeamSight, FogSet, ForceDeath, HealthBar, InventorySlot, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (167)
Against 1.0.0.81
Where a build from 1.0.0.82 up to, not including, 1.0.0.83 differs from one from 1.0.0.81 up to, not including, 1.0.0.82. Anything not named here is the same in both.
In 1.0.0.82, not in 1.0.0.81
| Message | Sent by | Command | What it does |
|---|---|---|---|
EffectAddedGroup | server | 38 on events | Put one effect on several units at once |
EffectCountGroup | server | 91 on events | Restate how many of an effect are stacked on several units at once |
EffectRemovedGroup | server | 42 on events | Take one effect off several units at once |
EffectReplacedGroup | server | 40 on events | What a server sends about the effect in one slot of several units at once |
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
Laid out differently
FadeTo- Its command is 140 in 1.0.0.81 and 144 in 1.0.0.82.
- The same fields come in another order in 1.0.0.82.
PlayerDisconnected- Its command is 120 in 1.0.0.81 and 124 in 1.0.0.82.
clientIdis in 1.0.0.82 (u32) at the start, and not in 1.0.0.81.championis in 1.0.0.81 and not in 1.0.0.82.
1.0.0.83–1.0.0.85
Client builds from 1.0.0.83 up to, not including, 1.0.0.86. Patch notes: V1.0.0.83, V1.0.0.85.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.83 | 10 | 0 | 4 | 9fd29ab | 2026-11-03 |
| 1.0.0.85 | 10 | 0 | 4 | 66c3541 | 2026-11-03 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CampCleared, CancelTargeting, CapturePointChanged, ChampionDied, EnterTeamSight, FogSet, ForceDeath, HealthBar, InventorySlot, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (167)
Against 1.0.0.82
Where a build from 1.0.0.83 up to, not including, 1.0.0.86 differs from one from 1.0.0.82 up to, not including, 1.0.0.83. Anything not named here is the same in both.
Laid out differently
MoveOrdermovement.header.pointCountis at bit 16, 15 bits wide, in 1.0.0.82 and at bit 16, 7 bits wide, in 1.0.0.83–1.0.0.85.movement.header.unusedHighis at bit 31, 1 bits wide, in 1.0.0.82 and at bit 23, 9 bits wide, in 1.0.0.83–1.0.0.85.movement.path.flagsis in 1.0.0.83–1.0.0.85 (bits, count in header.pointCount minus 1), aftermovement.path.teleportToken, and not in 1.0.0.82.movement.path.firstXis in 1.0.0.83–1.0.0.85 (i16), aftermovement.path.flags, and not in 1.0.0.82.movement.path.firstZis in 1.0.0.83–1.0.0.85 (i16), aftermovement.path.firstX, and not in 1.0.0.82.movement.path.stepsis in 1.0.0.83–1.0.0.85 (count in header.pointCount minus 1 × record), aftermovement.path.firstZ, and not in 1.0.0.82.movement.path.pointsis in 1.0.0.82 and not in 1.0.0.83–1.0.0.85.
SpawnPetscriptis in 1.0.0.83–1.0.0.85 (text, 32 bytes), afterflags, and not in 1.0.0.82.
StopAnimationflagshasunusedMidat bit 7 in 1.0.0.83–1.0.0.85, and not in 1.0.0.82.flagshasblendat bit 9 in 1.0.0.83–1.0.0.85, and not in 1.0.0.82.flags.unusedHighis at bit 7, 25 bits wide, in 1.0.0.82 and at bit 10, 22 bits wide, in 1.0.0.83–1.0.0.85.
Structs
Movementheader.pointCountis at bit 16, 15 bits wide, in 1.0.0.82 and at bit 16, 7 bits wide, in 1.0.0.83–1.0.0.85.header.unusedHighis at bit 31, 1 bits wide, in 1.0.0.82 and at bit 23, 9 bits wide, in 1.0.0.83–1.0.0.85.path.flagsis in 1.0.0.83–1.0.0.85 (bits, count in header.pointCount minus 1), afterpath.teleportToken, and not in 1.0.0.82.path.firstXis in 1.0.0.83–1.0.0.85 (i16), afterpath.flags, and not in 1.0.0.82.path.firstZis in 1.0.0.83–1.0.0.85 (i16), afterpath.firstX, and not in 1.0.0.82.path.stepsis in 1.0.0.83–1.0.0.85 (count in header.pointCount minus 1 × record), afterpath.firstZ, and not in 1.0.0.82.path.pointsis in 1.0.0.82 and not in 1.0.0.83–1.0.0.85.
MovementAtSpeedheader.pointCountis at bit 16, 15 bits wide, in 1.0.0.82 and at bit 16, 7 bits wide, in 1.0.0.83–1.0.0.85.header.unusedHighis at bit 31, 1 bits wide, in 1.0.0.82 and at bit 23, 9 bits wide, in 1.0.0.83–1.0.0.85.path.flagsis in 1.0.0.83–1.0.0.85 (bits, count in header.pointCount minus 1), afterpath.terms, and not in 1.0.0.82.path.firstXis in 1.0.0.83–1.0.0.85 (i16), afterpath.flags, and not in 1.0.0.82.path.firstZis in 1.0.0.83–1.0.0.85 (i16), afterpath.firstX, and not in 1.0.0.82.path.stepsis in 1.0.0.83–1.0.0.85 (count in header.pointCount minus 1 × record), afterpath.firstZ, and not in 1.0.0.82.path.pointsis in 1.0.0.82 and not in 1.0.0.83–1.0.0.85.
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.83–1.0.0.85:
EnterSight, its layout: “What a server sends to bring a unit into what a client can see. A client draws a unit only once this has named it, except turrets, which it draws regardless; the header names the unit. It carries no other messages.”, where 1.0.0.82 has “What a server sends to bring a unit into what a client can see. A client draws a unit only once this has named it, except turrets, which it draws regardless; the header names the unit. It states everything a client needs to draw the unit at once.”EnterSight,view: “Everything else a client needs to draw the unit. A server sends it for a champion, a minion or another unit with a mind, which a client reads past the end of the message without it. For any other unit a client reads nothing of it.”, where 1.0.0.82 has “Everything else a client needs to draw the unit. A server sends it for a champion, a minion or another unit with a mind, which a client reads past the end of the message without it, and ends the message after the items for any other unit.”
1.0.0.86
Client builds from 1.0.0.86 up to, not including, 1.0.0.87. Patch notes: V1.0.0.86.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.86 | 10 | 0 | 4 | 309cae6 | 2026-11-03 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, ChampionDied, EnterTeamSight, FogSet, ForceDeath, HealthBar, InventorySlot, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (168)
Against 1.0.0.83–1.0.0.85
Where a build from 1.0.0.86 up to, not including, 1.0.0.87 differs from one from 1.0.0.83 up to, not including, 1.0.0.86. Anything not named here is the same in both.
In 1.0.0.86, not in 1.0.0.83–1.0.0.85
| Message | Sent by | Command | What it does |
|---|---|---|---|
CampCleared | server | 189 on events | What a server sends as a camp of units that belong to no side is emptied |
1.0.0.87–1.0.0.95
Client builds from 1.0.0.87 up to, not including, 1.0.0.96. Patch notes: V1.0.0.87, V1.0.0.94.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.87 | 10 | 0 | 4 | 090601d | 2026-11-03 |
| 1.0.0.94 | 10 | 0 | 4 | bb32633 | 2026-11-03 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, ChampionDied, EnterTeamSight, FogSet, ForceDeath, HealthBar, InventorySlot, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (168)
Against 1.0.0.86
Where a build from 1.0.0.87 up to, not including, 1.0.0.96 differs from one from 1.0.0.86 up to, not including, 1.0.0.87. Anything not named here is the same in both.
Laid out differently
1.0.0.96
Client builds from 1.0.0.96 up to, not including, 1.0.0.97. Patch notes: V1.0.0.96.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.96 | 10 | 0 | 4 | a085dd6 | 2026-11-03 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, ChampionDied, EnterTeamSight, FogSet, ForceDeath, HealthBar, InventorySlot, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (168)
Against 1.0.0.87–1.0.0.95
Where a build from 1.0.0.96 up to, not including, 1.0.0.97 differs from one from 1.0.0.87 up to, not including, 1.0.0.96. Anything not named here is the same in both.
Laid out differently
ClientEvent(vectors: buff-on-1-0-0-96, consumable-bought-on-1-0-0-96, critical-strike-on-1-0-0-96, damage-dealt-on-1-0-0-96, damage-taken-on-1-0-0-96, death-assist-on-1-0-0-96, died-on-1-0-0-96, gold-earned-on-1-0-0-96, gold-spent-on-1-0-0-96, heal-cast-on-1-0-0-96, heal-on-1-0-0-96, item-bought-on-1-0-0-96, killing-spree-on-1-0-0-96, one-on-1-0-0-96)kill.unreadis in 1.0.0.96 (bytes, 8), afterkill, and not in 1.0.0.87–1.0.0.95.kill.listis in 1.0.0.96 (bytes, 12), afterkill.unread, and not in 1.0.0.87–1.0.0.95.kill.unusedis in 1.0.0.87–1.0.0.95 and not in 1.0.0.96.
DeathHistory(vectors: one-on-1-0-0-96)entries[].kill.unreadis in 1.0.0.96 (bytes, 8), afterentries[].kill, and not in 1.0.0.87–1.0.0.95.entries[].kill.listis in 1.0.0.96 (bytes, 12), afterentries[].kill.unread, and not in 1.0.0.87–1.0.0.95.entries[].kill.unusedis in 1.0.0.87–1.0.0.95 and not in 1.0.0.96.
WorldEvent(vectors: buff-on-1-0-0-96, consumable-bought-on-1-0-0-96, critical-strike-on-1-0-0-96, damage-dealt-on-1-0-0-96, damage-taken-on-1-0-0-96, death-assist-on-1-0-0-96, died-on-1-0-0-96, gold-earned-on-1-0-0-96, gold-spent-on-1-0-0-96, heal-cast-on-1-0-0-96, heal-on-1-0-0-96, item-bought-on-1-0-0-96, killing-spree-on-1-0-0-96, one-on-1-0-0-96)kill.unreadis in 1.0.0.96 (bytes, 8), afterkill, and not in 1.0.0.87–1.0.0.95.kill.listis in 1.0.0.96 (bytes, 12), afterkill.unread, and not in 1.0.0.87–1.0.0.95.kill.unusedis in 1.0.0.87–1.0.0.95 and not in 1.0.0.96.
Chapters
- In the messages chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: Where the game family keeps 255 for framing, that value introduces a container rather than a message: a run of several messages gathered into one payload, which a reading end unwraps and reads one by one as though each had arrived on its own.
- In the objects chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: No region id stands for no region.
- In the objects chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: A client tells a bot’s champion by a byte of its own, not by its client id.
- In the objects chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: A client that still holds the earlier object creates the new one but keeps the net id on the old one, so messages naming it reach the old object, and removing either leaves the id naming neither.
- In the objects chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: A client removes a region once its lifetime reaches 0, so a region given a lifetime of 0 does not last.
- In the objects chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: A
WaypointGrouporWaypointGroupAtSpeedpath for a unit not held is never applied, and a client does not read past its points: it reads the next path from inside the one it skipped, so every later path of that message comes out wrong. - In the ordering chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: A client that meets a unit it does not hold in a
WaypointGrouporWaypointGroupAtSpeedleaves that unit’s path unread, reads every later movement in the group from the wrong place, and answers the group all the same. - In the time chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: The allowance starts at 0, and nothing but
ClockConvergencechanges it: a client that has had none takesClockSyncas it stands. - In the values chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: A client asks to swap only slots 0 to 5 (
SwapItems). - In the data chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: In the section’s name, n is how many players the side has plus the count
SpawnStartcarries, added on both sides alike. - In the joining chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: A server MUST put the seat’s player id in
SeatLoadProgress: the loading screen shows a seat’s card from theVersionSyncseat with that id. - In the joining chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: ## 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 1.0.0.96 and not 1.0.0.87–1.0.0.95: Before
CharacterSelected, a client drops only what Units says it drops, and aGameEndedthat arrives while it loads has it show an error and end. - In the units chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: A client drops a
CreateChampionor aCreateNeutralthat arrives before it has loaded the map’s ground grid, which it loads while loading the match. - In the vision chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95:
EnterLocalSightstates the unit’s health. - In the vision chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95:
ItemAddedandInventorySlotannounce a purchase only for the client’s own champion; an ally’s purchase is called out where the message asks for it. - In the movement chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95:
MovementandMovementAtSpeedare compact: a path is a run of integer points, each stated against the one before it, while positions elsewhere are world floats covering a far larger range (see Space). - In the movement chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: A path is read into points by taking the first as it stands and then, for each point after it, taking each coordinate either as it stands or by adding the step to the coordinate of the point before.
- In the movement chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: A client does not read the points of a movement whose unit it does not hold, and so misreads every later movement in the group.
- In the movement chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: The origin is the midpoint of the bounds a map’s navigation data covers, truncated to a whole number on each axis.
- In the movement chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: A movement whose flag says so carries a token beside the unit (see
Movement). - In the movement chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: A client sends the path it would take, with its destination beside it in world floats.
- In the replication chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: ## 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 15 | What the spell in each of eight further slots costs | float | | 0 | 16 to 17 | What the spell in slots 0 and 1 of the second set costs | float | | 1 | 0 | What the champion is doing, as a set of bits | u32 | | 1 | 1 to 3 | Whether it is proof against spells, proof against all harm, and targetable | u32 | | 1 | 4 | Which sides can aim at it, as a set of bits | u32 | | 1 | 5 | Whether it is proof against strikes | u32 | | 1 | 6 | Damage it deals by striking | float | | 1 | 7 | Damage its spells deal before modifiers | float | | 1 | 8 | How often it turns a blow aside | float | | 1 | 9 | How often it strikes critically | float | | 1 | 10 | Armour | float | | 1 | 11 | Spell resistance | float | | 1 | 12 to 13 | How fast health and resource return | float | | 1 | 14 | How far it strikes from | float | | 1 | 15 to 17 | Flat and percent modifiers on the damage it strikes with, then the flat modifier on its spells’ damage | float | | 1 | 18 to 19 | Flat and percent reduction of the spell damage it takes | float | | 1 | 20 | A multiplier on how fast it strikes | float | | 1 | 21 | A flat addition to how far it casts | float | | 1 | 22 | A modifier on its cooldowns | float | | 1 | 23 to 24 | How much armour it cuts through, flat then as a percent | float | | 1 | 25 to 26 | How much spell resistance it cuts through, flat then as a percent | float | | 1 | 27 | Life steal | float | | 1 | 28 | Spell vamp | float | | 2 | 0 to 1 | Whether it is proof against strikes, then against spells, as group 1 bits 5 and 1 | u32 | | 3 | 0 to 1 | Health and resource as they stand | float | | 3 | 2 to 3 | Health and resource at their greatest | float | | 3 | 4 to 5 | A flat and a percent addition to how far it sees | float | | 3 | 6 | How fast it moves | float | | 3 | 7 | A value whose meaning is not recorded | float | | 3 | 8 | Level | u32 | What the second set and the eight further slots hold is not recorded, and a server writes zero in their costs.
- In the replication chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: A champion’s eight further slots are slots 41 to 48.
- In the match chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: While it resynchronises, a client ignores any message creating a unit it already holds.
- In the shop chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: Suggested items are kept per champion, whatever the map or the mode.
- In the objectives chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95:
CampClearedsets no time for the camp to fill again: a client keeps the state it gives for the camp. - In the interface chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: A client keeps a
CameraLockSetthat arrives while it holds its camera itself, and applies and answers it once the hold ends. - In the interface chapter, a passage holds for 1.0.0.96 and not 1.0.0.87–1.0.0.95: A client takes the lock from the player’s own settings when
StartGamearrives, locked where they say nothing, and answers withCameraLock;CameraLockSetchanges it for the match without changing those settings.
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.96:
CastSpell,how.slot: “Which slot is being cast from, from 0 to 48. A client sends nothing for a slot above 48.”, where 1.0.0.87–1.0.0.95 has “Which slot is being cast from, from 0 to 48. A client still sends a larger slot, its low seven bits only.”ClientFinished, its layout: “A client sends it each time GameEnded arrives once the match has started, and not for one that arrives while the match still loads.”, where 1.0.0.87–1.0.0.95 has “A client sends it each time GameEnded arrives.”GameEnded, its layout: “A client counts a win where its own side is 100 and result is nonzero, or its side is 200 and result is zero, and a loss otherwise. Arriving while the match still loads, it records the result and the client leaves at once, sending nothing; where its own player does not yet exist, it first shows an error. Once the match runs, it ends the match on its screen and sends ClientFinished, counting a win where its own player does not exist.”, where 1.0.0.87–1.0.0.95 has “A client counts a win where its own side is 100 and result is nonzero, or its side is 200 and result is zero, and a loss otherwise. Arriving while the match still loads, it records the result and the client leaves at once, sending nothing; where its own player does not yet exist, it shows an error and leaves as one abandoning the match. Once the match runs, it ends the match on its screen and sends ClientFinished, counting a win where its own player does not exist.”MapPing, its layout: no note, where 1.0.0.87–1.0.0.95 has “A client also sends it from the alert button on its HUD, naming its champion’s own place and writing nothing in particular where the target goes.”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, or the unit that owns killer, is the client’s own champion and on another side.”, where 1.0.0.87–1.0.0.95 has “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.”
1.0.0.97
Client builds from 1.0.0.97 up to, not including, 1.0.0.98. Patch notes: V1.0.0.97.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.97 | 10 | 0 | 4 | 822e4c7 | 2026-11-02 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, ChampionDied, EnterTeamSight, FogSet, ForceDeath, HealthBar, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (169)
Against 1.0.0.96
Where a build from 1.0.0.97 up to, not including, 1.0.0.98 differs from one from 1.0.0.96 up to, not including, 1.0.0.97. Anything not named here is the same in both.
In 1.0.0.97, not in 1.0.0.96
| Message | Sent by | Command | What it does |
|---|---|---|---|
InventorySlot | server | 44 on events | Set one slot of a unit’s inventory |
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
Laid out differently
EnterSight- Its command is 59 in 1.0.0.96 and 60 in 1.0.0.97.
itemCountis in 1.0.0.97 (u8) at the start, and not in 1.0.0.96.itemsis in 1.0.0.97 (count in itemCount × HeldItem), afteritemCount, and not in 1.0.0.96.
PlayerDisconnected- Its command is 124 in 1.0.0.96 and 125 in 1.0.0.97.
championis in 1.0.0.97 (u32) at the start, and not in 1.0.0.96.clientIdis in 1.0.0.96 and not in 1.0.0.97.
Chapters
- In the objects chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: No region id stands for no region.
- In the objects chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: A client tells a bot’s champion by a byte of its own, not by its client id.
- In the objects chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: A client that still holds the earlier object creates the new one but keeps the net id on the old one, so messages naming it reach the old object, and removing either leaves the id naming neither.
- In the objects chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: Nothing a player sees depends on it.
- In the objects chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: | Map | Holds | | –– | ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– | | 1, 2 | the six
Barracksnames,HQ_T1,HQ_T2,orderShop01,chaosShop01, the six spawn points named__P_…| | 3 |Barracks_T1_C1,Barracks_T2_C1,HQ_T1,HQ_T2,OrderShop01,ChaosShop01,____P_Chaos_Spawn_Barracks__C01| | 4 |Barracks_T1_L1,Barracks_T1_R1,Barracks_T2_L1,Barracks_T2_R1,HQ_T1,HQ_T2,OrderShop01,chaosShop01| - In the objects chapter, a passage holds for 1.0.0.96 and not 1.0.0.97:
CreateTurretmatches 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 1.0.0.96 and not 1.0.0.97:
LeaveLocalSighthides an object too, and it is held as before. - In the objects chapter, a passage holds for 1.0.0.96 and not 1.0.0.97:
SpawnPetnames the pet’s owner in its header and carries the new pet’s net id in its body, and does nothing where that owner is not held. - In the space chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: A client has data for maps 1 to 4: |
map| Origin of its paths | | —– | —————–– | | 1 | 6991, 7223 | | 2 | 6991, 7223 | | 3 | 7479, 7147 | | 4 | 6710, 6696 | - In the values chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: A champion’s own book ends at slot 48.
- In the values chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: A champion’s inventory ends at slot 36, and a player sees and uses only slots 0 to 5.
- In the values chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: Each unit has 32 slots for the effects it carries, 0 to 31.
- In the data chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: The client has maps 1, 2, 3 and 4.
- In the data chapter, a passage holds for 1.0.0.96 and not 1.0.0.97:
CreateTurretnames 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 1.0.0.96 and not 1.0.0.97:
room.dsclists each object as a.sco, but its file is a binary.SCB, holding its name within it rather than on aName=line. - In the data chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: In the section’s name, n is how many players the side has plus the count
SpawnStartcarries, added on both sides alike. - In the data chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: A champion’s spells and attacks are in
DATA/Spells/<Spell>.inibinwith all other spells. - In the data chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: Map 3 alone adds an
Items.inibin. - In the joining chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: A client finds each argument between a pair of double quotes, and reads nothing outside them.
- In the joining chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: Before
CharacterSelected, a client drops only what Units says it drops, and aGameEndedthat arrives while it loads has it show an error and end. - In the units chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: A client drops a
CreateChampionor aCreateNeutralthat arrives before it has loaded the map’s ground grid, which it loads while loading the match. - In the vision chapter, a passage holds for 1.0.0.96 and not 1.0.0.97:
EnterSightstates 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 1.0.0.97 and not 1.0.0.96:
EnterSightalso states the unit’s items. - In the replication chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: A prop answers to no table, and a client takes nothing a batch carries for one.
- In the replication chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: A champion’s eight further slots are slots 41 to 48.
- In the match chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: The speed
GameSpeedsets takes effect at once: sent during a hold, it ends the hold, and aResumedafter it changes nothing. - In the match chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: A client reads nothing from
Paused. - In the match chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: A client reads nothing from
Resumed. - In the combat chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: Only a turret takes
TargetUnit; every other unit ignores it. - In the combat chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: Nothing in
UnitDiedleaves the unit standing: every unit it puts down dies. - In the combat chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: A client reads nothing from
RevivedorRespawned: each brings the champion back where it stands. - In the spells chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: Only a missile that flies straight acts on
MissileHits. - In the shop chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: Suggested items are kept per champion, whatever the map or the mode.
- In the communication chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: A client never answers a
VoiceEventit cannot play. - In the guidance chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: A client takes
TutorialPopupin any match. - In the spectating chapter, a passage holds for 1.0.0.96 and not 1.0.0.97: A client cannot watch a match: no start-up word or message makes it watch.
1.0.0.98
Client builds from 1.0.0.98 up to, not including, 1.0.0.99. Patch notes: V1.0.0.98.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.98 | 10 | 0 | 4 | ef83743 | 2026-11-02 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, ChampionDied, EnterTeamSight, ForceDeath, HealthBar, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (170)
Against 1.0.0.97
Where a build from 1.0.0.98 up to, not including, 1.0.0.99 differs from one from 1.0.0.97 up to, not including, 1.0.0.98. Anything not named here is the same in both.
In 1.0.0.98, not in 1.0.0.97
| Message | Sent by | Command | What it does |
|---|---|---|---|
FogSet | server | 135 on events | Turn the drawing of the fog of war on or off |
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
| Channel | 1.0.0.97 | 1.0.0.98 | Messages |
|---|---|---|---|
| events | 135–190 | 136–191 | MovementBounds, CameraLockSet, MoveCamera, VoiceEvent, SpellTargetingChanged, Paused, Resumed, GameSpeed, FadeTo, FadeRemoved, UnitHighlighted, UnitHighlightRemoved, TutorialPopup, AfkWarning, CloseShop, InputLock, ObjectiveShown, ObjectiveHidden, ObjectiveReplaced, SideTextShown, SideTextHidden, SideTextRefreshed, HudHighlighted, ShopHighlighted, SurrenderVoteCalled, SurrenderStatus, MissileHits, MinimapHighlighted, HudHighlightToggled, TutorialChatLine, SpellNumbers, VolumeMuted, WorldEvent, NexusSkin, GreyscaleWhenDead, HudDisabled, SpellNameChanged, NexusIdle, FadeMinions, FadeSounds, ChampionStats, AnimationOverrides, CampCleared |
| requests | 138–168 | 139–169 | TransientAck, TutorialPopupClosed, TutorialShopOpened, SurrenderVote, VoiceEventDone |
| transient | 137 | 138 | Replication |
Structs
ParticleatXis f32 in 1.0.0.97 and i16 in 1.0.0.98.atZis f32 in 1.0.0.97 and i16 in 1.0.0.98.towardXis f32 in 1.0.0.97 and i16 in 1.0.0.98.towardZis f32 in 1.0.0.97 and i16 in 1.0.0.98.ownerXis f32 in 1.0.0.97 and i16 in 1.0.0.98.ownerZis f32 in 1.0.0.97 and i16 in 1.0.0.98.facingXis in 1.0.0.98 (f32), afterownerZ, and not in 1.0.0.97.facingYis in 1.0.0.98 (f32), afterfacingX, and not in 1.0.0.97.facingZis in 1.0.0.98 (f32), afterfacingY, and not in 1.0.0.97.
1.0.0.99–1.0.0.102
Client builds from 1.0.0.99 up to, not including, 1.0.0.103. Patch notes: V1.0.0.99, V1.0.0.100, V1.0.0.101, V1.0.0.102.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.99 | 10 | 0 | 4 | d422aad | 2026-11-02 |
| 1.0.0.100 | 10 | 0 | 4 | df9a7cc | 2026-11-02 |
| 1.0.0.101 | 10 | 0 | 4 | bfa5a23 | 2026-11-02 |
| 1.0.0.102 | 10 | 0 | 4 | 9c2150c | 2026-11-02 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, ChampionDied, EnterTeamSight, ForceDeath, HealthBar, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (170)
Against 1.0.0.98
Where a build from 1.0.0.99 up to, not including, 1.0.0.103 differs from one from 1.0.0.98 up to, not including, 1.0.0.99. Anything not named here is the same in both.
Laid out differently
ClientEvent(vectors: buff-on-1-0-0-99, consumable-bought-on-1-0-0-99, critical-strike-on-1-0-0-99, damage-dealt-on-1-0-0-99, damage-taken-on-1-0-0-99, death-assist-on-1-0-0-99, died-on-1-0-0-99, gold-earned-on-1-0-0-99, gold-spent-on-1-0-0-99, heal-cast-on-1-0-0-99, heal-on-1-0-0-99, item-bought-on-1-0-0-99, killing-spree-on-1-0-0-99, one-on-1-0-0-99)eventtakes 67 itemBought, 68 surrenderVoteStarted, 69 surrenderVoteCast, 70 surrenderAlreadyVoted, 71 surrenderCountdown, 72 surrenderFailed, 73 surrenderTooEarly, 74 surrenderAgreed, 75 surrenderVoteSpam, 76 minionsSpawned, 77 welcome, 78 startNoticeTwo in 1.0.0.99–1.0.0.102 and not in 1.0.0.98.eventtakes 62 itemBought, 63 surrenderVoteStarted, 64 surrenderVoteCast, 65 surrenderAlreadyVoted, 66 surrenderCountdown, 67 surrenderFailed, 68 surrenderTooEarly, 69 surrenderAgreed, 70 surrenderVoteSpam, 71 minionsSpawned, 72 welcome, 73 startNoticeTwo in 1.0.0.98 and not in 1.0.0.99–1.0.0.102.valueis present when event = 20 or 62 in 1.0.0.98, and present when event = 20 or 67 in 1.0.0.99–1.0.0.102.
DeathHistory(vectors: one-on-1-0-0-99)entries[].eventtakes 67 itemBought, 71 surrenderCountdown, 76 minionsSpawned, 77 welcome, 78 startNoticeTwo in 1.0.0.99–1.0.0.102 and not in 1.0.0.98.entries[].eventtakes 62 itemBought, 66 surrenderCountdown, 71 minionsSpawned, 72 welcome, 73 startNoticeTwo in 1.0.0.98 and not in 1.0.0.99–1.0.0.102.entries[].valueis present when event = 20 or 62 in 1.0.0.98, and present when event = 20 or 67 in 1.0.0.99–1.0.0.102.
ItemAdded(vectors: one-on-1-0-0-99)activateis in 1.0.0.99–1.0.0.102 (u8), afterinSlot, and not in 1.0.0.98.
WorldEvent(vectors: buff-on-1-0-0-99, consumable-bought-on-1-0-0-99, critical-strike-on-1-0-0-99, damage-dealt-on-1-0-0-99, damage-taken-on-1-0-0-99, death-assist-on-1-0-0-99, died-on-1-0-0-99, gold-earned-on-1-0-0-99, gold-spent-on-1-0-0-99, heal-cast-on-1-0-0-99, heal-on-1-0-0-99, item-bought-on-1-0-0-99, killing-spree-on-1-0-0-99, one-on-1-0-0-99)eventtakes 67 itemBought, 71 surrenderCountdown, 76 minionsSpawned, 77 welcome, 78 startNoticeTwo in 1.0.0.99–1.0.0.102 and not in 1.0.0.98.eventtakes 62 itemBought, 66 surrenderCountdown, 71 minionsSpawned, 72 welcome, 73 startNoticeTwo in 1.0.0.98 and not in 1.0.0.99–1.0.0.102.valueis present when event = 20 or 62 in 1.0.0.98, and present when event = 20 or 67 in 1.0.0.99–1.0.0.102.
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.99–1.0.0.102:
Autocast,slot: “The slot cast by itself, from -1 to 51. A client takes a value outside that range as it stands. What -1 does is not recorded.”, where 1.0.0.98 has “The slot cast by itself, from -1 to 48. A client takes a value outside that range as it stands. What -1 does is not recorded.”EffectAdded,slot: “Which of the unit’s effect slots it sits in. A client ignores the message where it is above 31.”, where 1.0.0.98 has “Which of the unit’s effect slots it sits in. A client fails where it is above 31.”EffectCount,slot: “Which slot. A client ignores the message where it is above 31.”, where 1.0.0.98 has “Which slot. A client fails where it is above 31.”EffectCount,caster: “The unit that put it there.”, where 1.0.0.98 has “The unit that put it there. Where the client holds no such unit, it leaves the effect with no caster.”EffectRemoved,slot: “Which slot it sat in. A client ignores the message where it is above 31.”, where 1.0.0.98 has “Which slot it sat in. A client fails where it is above 31.”EffectReplaced,slot: “Which of the unit’s effect slots. A client ignores the message where it is above 31.”, where 1.0.0.98 has “Which of the unit’s effect slots. A client fails where it is above 31.”EffectReplaced,caster: “The unit that put it there.”, where 1.0.0.98 has “The unit that put it there. Where the client holds no such unit, it leaves the effect with no caster.”InventorySlot,slot: “Which slot, 0 to 37. A client ignores the message from 38 up.”, where 1.0.0.98 has “Which slot, 0 to 36. A client ignores the message from 37 up.”ItemUsed,slot: “Which slot, 0 to 37. A client ignores the message from 38 up, and where the slot is empty.”, where 1.0.0.98 has “Which slot, 0 to 36. A client ignores the message from 37 up, and where the slot is empty.”RemoveItem,sell: “A client sends 1 from the shop or a hotkey, and 0 after an answer to a purchase.”, where 1.0.0.98 has “A client sends 1.”RemoveItemAnswer,slot: “Which slot, 0 to 37. A client drops the message from 38 up.”, where 1.0.0.98 has “Which slot, 0 to 36. A client drops the message from 37 up.”SpellCastAnswer, its layout: “There is no byte for ending a charge: the casting follows the sync id.”, where 1.0.0.98 has “There is no byte for ending a charge: the casting follows the sync id. A client fails where the casting’s size is wrong, for it then casts with no spell.”
1.0.0.103
Client builds from 1.0.0.103 up to, not including, 1.0.0.104. Patch notes: V1.0.0.103.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.103 | 10 | 0 | 4 | b41ea76 | 2026-11-02 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, ChampionDied, EnterTeamSight, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, QuestEvent, QuestUpdated, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, TipEvent, TipShown, UiHighlight, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (172)
Against 1.0.0.99–1.0.0.102
Where a build from 1.0.0.103 up to, not including, 1.0.0.104 differs from one from 1.0.0.99 up to, not including, 1.0.0.103. Anything not named here is the same in both.
In 1.0.0.103, not in 1.0.0.99–1.0.0.102
| Message | Sent by | Command | What it does |
|---|---|---|---|
ForceDeath | server | 35 on events | Put a unit into its death |
HealthBar | server | 102 on events | What a server sends about a unit’s health bar |
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
Laid out differently
CreateNeutral(vectors: inactive-on-1-0-0-103)extrais in 1.0.0.103 (u16), aftercamp, and not in 1.0.0.99–1.0.0.102.
UnitDiedstandingis in 1.0.0.103 (u8), afterstayDown, and not in 1.0.0.99–1.0.0.102.
1.0.0.104
Client builds from 1.0.0.104 up to, not including, 1.0.0.105. Patch notes: V1.0.0.104.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.104 | 10 | 0 | 4 | 301dab3 | 2026-11-02 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, ChampionDied, EnterTeamSight, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (178)
Against 1.0.0.103
Where a build from 1.0.0.104 up to, not including, 1.0.0.105 differs from one from 1.0.0.103 up to, not including, 1.0.0.104. Anything not named here is the same in both.
In 1.0.0.104, not in 1.0.0.103
| Message | Sent by | Command | What it does |
|---|---|---|---|
QuestEvent | client | 144 on requests | What a client sends as its player points at a quest in the tracker (QuestUpdated), stops pointing at it, or clicks it |
QuestUpdated | server | 143 on events | Add a quest to the quest tracker, complete it or remove it |
StatsRequest | client | 163 on requests | What a client sends about itself |
TipEvent | client | 147 on requests | What a client sends about a tip it has shown or dismissed |
TipShown | server | 145 on events | Put a note in front of a seat |
UiHighlight | server | 146 on events | Place an animated highlight over one element of the screen, or to take one away |
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
| Channel | 1.0.0.103 | 1.0.0.104 | Messages |
|---|---|---|---|
| events | 144–156 | 149–161 | SpellTargetingChanged, Paused, Resumed, GameSpeed, FadeTo, FadeRemoved, UnitHighlighted, UnitHighlightRemoved, TutorialPopup, AfkWarning, CloseShop, InputLock |
| events | 158–193 | 164–199 | ObjectiveShown, ObjectiveHidden, ObjectiveReplaced, SideTextShown, SideTextHidden, SideTextRefreshed, HudHighlighted, ShopHighlighted, SurrenderVoteCalled, SurrenderStatus, MissileHits, MinimapHighlighted, HudHighlightToggled, TutorialChatLine, SpellNumbers, VolumeMuted, NexusSkin, GreyscaleWhenDead, HudDisabled, SpellNameChanged, NexusIdle, FadeMinions, FadeSounds, ChampionStats, AnimationOverrides, CampCleared |
| requests | 153–157 | 158–162 | TutorialPopupClosed, TutorialShopOpened |
| requests | 166 | 172 | SurrenderVote |
Laid out differently
ClientEventeventtakes 79 alert, 80 scoreboardOpened in 1.0.0.104 and not in 1.0.0.103.
CreateNeutralfacingXis in 1.0.0.104 (f32), aftercampAtZ, and not in 1.0.0.103.facingYis in 1.0.0.104 (f32), afterfacingX, and not in 1.0.0.103.facingZis in 1.0.0.104 (f32), afterfacingY, and not in 1.0.0.103.
DeathHistoryentries[].eventtakes 80 scoreboardOpened in 1.0.0.104 and not in 1.0.0.103.
FogSetshownis in 1.0.0.104 (u8) at the start, and not in 1.0.0.103.
MissileReportageis in 1.0.0.104 (f32), aftertargetZ, and not in 1.0.0.103.
MissileStatespeedis in 1.0.0.104 (f32), afterunitAtZ, and not in 1.0.0.103.
PingPlacedhowis in 1.0.0.104 (1-byte bits), aftersource, and not in 1.0.0.103.
SpawnStartbotsOnOneSideis in 1.0.0.104 (u8) at the start, and not in 1.0.0.103.botsOnTheOtheris in 1.0.0.104 (u8), afterbotsOnOneSide, and not in 1.0.0.103.countis in 1.0.0.103 and not in 1.0.0.104.
VersionSyncmodeis in 1.0.0.104 (text, 128 bytes), afterbuild, and not in 1.0.0.103.
VoiceEvent- Its command is 143 in 1.0.0.103 and 148 in 1.0.0.104.
folderis in 1.0.0.104 (text, 64 bytes) at the start, and not in 1.0.0.103.handleis in 1.0.0.104 (u32), aftercallback, and not in 1.0.0.103.
VoiceEventDone- Its command is 171 in 1.0.0.103 and 177 in 1.0.0.104.
handleis in 1.0.0.104 (u32) at the start, and not in 1.0.0.103.
WorldEvent- Its command is 177 in 1.0.0.103 and 183 in 1.0.0.104.
eventtakes 80 scoreboardOpened in 1.0.0.104 and not in 1.0.0.103.
Chapters
- In the space chapter, a passage holds for 1.0.0.104 and not 1.0.0.103:
CreateNeutralcarries a point to face rather than a direction: the monster faces from where it stands toward that point, or along +z where the two are the same.
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.104:
SelectObject,selected: “The network object now selected, or zero where none is.”, where 1.0.0.103 has “A client writes zero here.”
1.0.0.105
Client builds from 1.0.0.105 up to, not including, 1.0.0.106. Patch notes: V1.0.0.105.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.105 | 10 | 0 | 4 | bc605eb | 2026-11-02 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, ChampionDied, EnterTeamSight, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, PauseAnimation, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellLevel, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (178)
Against 1.0.0.104
Where a build from 1.0.0.105 up to, not including, 1.0.0.106 differs from one from 1.0.0.104 up to, not including, 1.0.0.105. Anything not named here is the same in both.
Laid out differently
CreateChampionrankis in 1.0.0.105 (u8), afterbot, and not in 1.0.0.104.
1.0.0.106
Client builds from 1.0.0.106 up to, not including, 1.0.0.107. Patch notes: V1.0.0.106.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.106 | 10 | 0 | 4 | 650539d | 2026-11-02 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, ChampionDied, EnterTeamSight, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (180)
Against 1.0.0.105
Where a build from 1.0.0.106 up to, not including, 1.0.0.107 differs from one from 1.0.0.105 up to, not including, 1.0.0.106. Anything not named here is the same in both.
In 1.0.0.106, not in 1.0.0.105
| Message | Sent by | Command | What it does |
|---|---|---|---|
PauseAnimation | server | 202 on events | Pause or resume a unit’s animation |
SpellLevel | server | 201 on events | Set the level of one of a unit’s spells |
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.106:
MissileState, its layout: “A client reads a speed but no part of the missile’s life spent. Neither the ground-height rule for endY nor a trail moved on by an age is confirmed. The header names the unit casting, as the casting inside does.”, where 1.0.0.105 has “A client reads a speed but no part of the missile’s life spent. Neither the ground-height rule for endY nor a trail moved on by an age is confirmed. A client places the casting’s second unit, where it holds that unit, where the thrower stood rather than with the casting unit. The header names the unit casting, as the casting inside does.”SpellUpgraded, its layout: “Arriving on the events channel instead, it raises the spell as well, and a client shows the new level either way.”, where 1.0.0.105 has “A client handles it the same on every channel: it sets the slot’s level and the points left. It does this only for a champion, and nothing for any other unit.”SpellUpgraded,level: “The level the spell now stands at. A client takes any level above 6 as 6.”, where 1.0.0.105 has “The level the spell now stands at. A client takes any level above 5 as 5.”
1.0.0.107
Client builds from 1.0.0.107 up to, not including, 1.0.0.108. Patch notes: V1.0.0.107.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.107 | 10 | 0 | 4 | 14325cb | 2026-11-01 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, EnterTeamSight, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, NavigationFlags, ParticleLeaveTeamSight, ParticleSource, Pause, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (181)
Against 1.0.0.106
Where a build from 1.0.0.107 up to, not including, 1.0.0.108 differs from one from 1.0.0.106 up to, not including, 1.0.0.107. Anything not named here is the same in both.
In 1.0.0.107, not in 1.0.0.106
| Message | Sent by | Command | What it does |
|---|---|---|---|
ChampionDied | server | 35 on events | Say a champion died |
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
Laid out differently
ChampionStats- Its command is 191 in 1.0.0.106 and 192 in 1.0.0.107.
keptAis bytes, 20 in 1.0.0.106 and 3 × i32 in 1.0.0.107.deathsis in 1.0.0.107 (i32), afterkeptA, and not in 1.0.0.106.minionKillsis in 1.0.0.107 (i32), afterdeaths, and not in 1.0.0.106.structureKillsis in 1.0.0.107 (i32), afterkills, and not in 1.0.0.106.otherStructureKillsis in 1.0.0.107 (i32), afterstructureKills, and not in 1.0.0.106.keptBis bytes, 176 in 1.0.0.106 and i32 in 1.0.0.107.neutralKillsis in 1.0.0.107 (i32), afterkeptB, and not in 1.0.0.106.gapis in 1.0.0.107 (bytes, 12), afterneutralKills, and not in 1.0.0.106.keptCis in 1.0.0.107 (3 × i32), aftergap, and not in 1.0.0.106.goldTotalis in 1.0.0.107 (f32), afterkeptC, and not in 1.0.0.106.keptDis in 1.0.0.107 (9 × i32), aftergoldTotal, and not in 1.0.0.106.keptEis in 1.0.0.107 (2 × f32), afterkeptD, and not in 1.0.0.106.keptFis in 1.0.0.107 (u8), afterkeptE, and not in 1.0.0.106.paddingis in 1.0.0.107 (bytes, 3), afterkeptF, and not in 1.0.0.106.keptGis in 1.0.0.107 (8 × i32), afterpadding, and not in 1.0.0.106.keptHis in 1.0.0.107 (13 × f32), afterkeptG, and not in 1.0.0.106.keptIis in 1.0.0.107 (i32), afterkeptH, and not in 1.0.0.106.assistsis in 1.0.0.107 (i32), afterkeptI, and not in 1.0.0.106.
1.0.0.108
Client builds from 1.0.0.108 up to, not including, 1.0.0.109. Patch notes: V1.0.0.108.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.108 | 10 | 0 | 4 | 5f7af67 | 2026-11-01 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, EnterTeamSight, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, ParticleLeaveTeamSight, ParticleSource, Pause, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (182)
Against 1.0.0.107
Where a build from 1.0.0.108 up to, not including, 1.0.0.109 differs from one from 1.0.0.107 up to, not including, 1.0.0.108. Anything not named here is the same in both.
In 1.0.0.108, not in 1.0.0.107
| Message | Sent by | Command | What it does |
|---|---|---|---|
NavigationFlags | server | 204 on events | Mark the ground within circles, in place of the circles it marked before: each circle’s flags apply to the ground within it |
Laid out differently
EffectAddedhiddenis in 1.0.0.108 (u8), aftercount, and not in 1.0.0.107.
EffectAddedGroupentries[].hiddenis in 1.0.0.108 (u8), afterentries[].stacks, and not in 1.0.0.107.
PathWithSpeed(vectors: along-on-1-0-0-108)facingis in 1.0.0.108 (i8), afterarcZ, and not in 1.0.0.107.
SpawnPetflagshasclearOwnerTargetat bit 1 in 1.0.0.108, and not in 1.0.0.107.flags.unusedis at bit 1, 7 bits wide, in 1.0.0.107 and at bit 2, 6 bits wide, in 1.0.0.108.
Structs
SpeedParamskeepFacingis in 1.0.0.108 (u8), afterfromZ, and not in 1.0.0.107.
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.108:
HudDisabled, its layout: no note, where 1.0.0.107 has “A client also opens its chat entry, as the chat key does, where chat is open to it.”
1.0.0.109
Client builds from 1.0.0.109 up to, not including, 1.0.0.110. Patch notes: V1.0.0.109.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.109 | 10 | 0 | 4 | a1008b1 | 2026-11-01 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, EnterTeamSight, LeaveTeamSight, MapProp, MapPropChanged, MatchStarted, MinimapIcon, MusicCue, ParticleLeaveTeamSight, ParticleSource, Pause, RespawnPoint, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpawnBot, SpellIconChanged, SpellInSlot, SpellOffsetTargetChanged, StatisticIncremented, TeamChanged, TeamScore, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (183)
Against 1.0.0.108
Where a build from 1.0.0.109 up to, not including, 1.0.0.110 differs from one from 1.0.0.108 up to, not including, 1.0.0.109. Anything not named here is the same in both.
In 1.0.0.109, not in 1.0.0.108
| Message | Sent by | Command | What it does |
|---|---|---|---|
ResourceColours | server | 78 on events | Give a unit’s resource bar colours of its own, or to take them back |
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
1.0.0.110
Client builds from 1.0.0.110 up to, not including, 1.0.0.111. Patch notes: V1.0.0.110.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.110 | 10 | 0 | 4 | a3ab6fd | 2026-11-01 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, EnterTeamSight, LeaveTeamSight, MatchStarted, MusicCue, ParticleLeaveTeamSight, ParticleSource, Pause, Resume, ScoreAdded, ScreenTint, ShieldAdded, SpellIconChanged, SpellInSlot, SpellOffsetTargetChanged, StatisticIncremented, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (191)
Against 1.0.0.109
Where a build from 1.0.0.110 up to, not including, 1.0.0.111 differs from one from 1.0.0.109 up to, not including, 1.0.0.110. Anything not named here is the same in both.
In 1.0.0.110, not in 1.0.0.109
| Message | Sent by | Command | What it does |
|---|---|---|---|
CapturePointValue | server | 208 on events | What a server sends when a point one side can take from the other changes |
MapProp | server | 206 on events | Place a prop on the map: a thing that stands there and is looked at rather than one that acts |
MapPropChanged | server | 207 on events | Change something about a prop already on the map |
MinimapIcon | server | 213 on events | Change what a client draws for a unit on its map |
RespawnPoint | server | 210 on events | What a server sends about the points a champion can choose to return to life at |
SpawnBot | server | 205 on events | Create a champion played by a bot |
TeamChanged | server | 212 on events | Move a unit to another side |
TeamScore | server | 209 on events | Set a side’s score, where a match is won on score |
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
| Channel | 1.0.0.109 | 1.0.0.110 | Messages |
|---|---|---|---|
| clock | 19 | 24 | SpellUpgraded |
| clock | 89 | 8 | ClockReply |
| clock | 90 | 114 | ClockConvergence |
| events | 4 | 133 | QueryStatusAnswer |
| events | 5 | 96 | SpawnStart |
| events | 6 | 75 | CreateChampion |
| events | 7 | 97 | CreateNeutral |
| events | 8 | 156 | CreateTurret |
| events | 9 | 175 | PlayAnimation |
| events | 11 | 68 | EmotePlayed |
| events | 12 | 18 | SpawnEnd |
| events | 13 | 90 | StartGame |
| events | 14 | 195 | GameEnded |
| events | 21 | 132 | ParticlesCreated |
| events | 22 | 58 | KillParticle |
| events | 23 | 99 | Damage |
| events | 24 | 50 | UnitStopped |
| events | 26 | 66 | PingPlaced |
| events | 27 | 36 | GoldGained |
| events | 28 | 17 | ExperienceGained |
| events | 30 | 27 | FloatingText |
| events | 32 | 57 | SpawnPet |
| events | 33 | 131 | SpellCooldown |
| events | 34 | 157 | UnitDied |
| events | 35 | 92 | ChampionDied |
| events | 36 | 29 | ForceDeath |
| events | 38 | 180 | SpellCastAnswer |
| events | 39 | 182 | EffectAdded |
| events | 40 | 101 | EffectAddedGroup |
| events | 41 | 49 | EffectReplaced |
| events | 42 | 32 | EffectReplacedGroup |
| events | 43 | 120 | EffectRemoved |
| events | 44 | 147 | EffectRemovedGroup |
| events | 45 | 33 | Autocast |
| events | 46 | 82 | InventorySlot |
| events | 48 | 108 | ItemAdded |
| events | 50 | 11 | RemoveItemAnswer |
| events | 52 | 64 | SwapItemsAnswer |
| events | 53 | 158 | ItemUsed |
| events | 54 | 65 | LevelUp |
| events | 55 | 54 | StopAttack |
| events | 56 | 3 | SpawnFromBarracks |
| events | 60 | 13 | Attack |
| events | 61 | 28 | AttackFrom |
| events | 62 | 185 | EnterSight |
| events | 63 | 80 | LeaveSight |
| events | 64 | 172 | EnterLocalSight |
| events | 65 | 55 | LeaveLocalSight |
| events | 70 | 61 | MissileState |
| events | 71 | 41 | StatTick |
| events | 72 | 44 | InhibitorState |
| events | 73 | 126 | Announcement |
| events | 75 | 83 | VersionSync |
| events | 76 | 103 | TargetUnit |
| events | 77 | 191 | TargetHeldChampion |
| events | 78 | 145 | ResourceColours |
| events | 85 | 48 | Revived |
| events | 86 | 73 | Respawned |
| events | 87 | 134 | BuildingDied |
| events | 88 | 192 | ClockSync |
| events | 91 | 184 | Path |
| events | 94 | 30 | EffectCount |
| events | 95 | 190 | EffectCountGroup |
| events | 98 | 43 | Loadout |
| events | 99 | 53 | RegionRemoved |
| events | 100 | 37 | RegionAttached |
| events | 101 | 116 | RegionAdded |
| events | 102 | 121 | SpawnUnit |
| events | 103 | 42 | StopAnimation |
| events | 104 | 204 | HealthBar |
| events | 105 | 7 | GoldRedirect |
| events | 106 | 150 | AppearancePushed |
| events | 107 | 100 | AppearancePopped |
| events | 109 | 79 | FaceDirection |
| events | 110 | 111 | CameraBehaviour |
| events | 115 | 88 | DestroyMissile |
| events | 116 | 105 | ChainTargets |
| events | 118 | 21 | BotDebug |
| events | 119 | 102 | BotTargets |
| events | 120 | 170 | BotState |
| events | 123 | 45 | CameraAck |
| events | 124 | 144 | MatchIdentity |
| events | 129 | 151 | PlayerDisconnected |
| events | 131 | 16 | Reconnected |
| events | 132 | 69 | ResyncEnded |
| events | 135 | 98 | WaypointGroupAtSpeed |
| events | 137 | 154 | InputLockToggled |
| events | 138 | 123 | FogToggled |
| events | 139 | 171 | FogSet |
| events | 141 | 117 | CameraLockSet |
| events | 144 | 38 | MoveCamera |
| events | 145 | 136 | QuestUpdated |
| events | 147 | 84 | TipShown |
| events | 148 | 200 | UiHighlight |
| events | 150 | 118 | VoiceEvent |
| events | 151 | 26 | SpellTargetingChanged |
| events | 152 | 160 | Paused |
| events | 153 | 10 | Resumed |
| events | 154 | 19 | GameSpeed |
| events | 155 | 177 | FadeTo |
| events | 156 | 51 | FadeRemoved |
| events | 157 | 87 | UnitHighlighted |
| events | 158 | 179 | UnitHighlightRemoved |
| events | 159 | 178 | TutorialPopup |
| events | 161 | 183 | AfkWarning |
| events | 162 | 15 | CloseShop |
| events | 163 | 130 | InputLock |
| events | 166 | 56 | ObjectiveShown |
| events | 167 | 161 | ObjectiveHidden |
| events | 168 | 14 | ObjectiveReplaced |
| events | 169 | 159 | SideTextShown |
| events | 170 | 166 | SideTextHidden |
| events | 171 | 176 | SideTextRefreshed |
| events | 172 | 63 | HudHighlighted |
| events | 175 | 199 | SurrenderVoteCalled |
| events | 177 | 164 | SurrenderStatus |
| events | 178 | 39 | MissileHits |
| events | 180 | 20 | MinimapHighlighted |
| events | 181 | 78 | HudHighlightToggled |
| events | 182 | 2 | TutorialChatLine |
| events | 183 | 124 | SpellNumbers |
| events | 184 | 40 | VolumeMuted |
| events | 186 | 112 | NexusSkin |
| events | 187 | 169 | GreyscaleWhenDead |
| events | 188 | 187 | HudDisabled |
| events | 189 | 52 | SpellNameChanged |
| events | 190 | 4 | NexusIdle |
| events | 191 | 201 | FadeMinions |
| events | 192 | 93 | FadeSounds |
| events | 193 | 71 | ChampionStats |
| events | 194 | 104 | AnimationOverrides |
| events | 201 | 193 | CampCleared |
| events | 203 | 89 | SpellLevel |
| events | 204 | 109 | PauseAnimation |
| events | 205 | 67 | NavigationFlags |
| requests | 3 | 23 | QueryStatus |
| requests | 10 | 72 | PlayEmote |
| requests | 15 | 189 | CharacterSelected |
| requests | 16 | 81 | ClientReady |
| requests | 17 | 137 | ClientFinished |
| requests | 18 | 59 | UpgradeSpell |
| requests | 20 | 110 | MoveOrder |
| requests | 25 | 85 | MapPing |
| requests | 30 | 27 | UnitSpoke |
| requests | 33 | 131 | CooldownSet |
| requests | 37 | 153 | CastSpell |
| requests | 47 | 128 | BuyItem |
| requests | 49 | 9 | RemoveItem |
| requests | 51 | 34 | SwapItems |
| requests | 66 | 47 | Camera |
| requests | 67 | 127 | CameraLock |
| requests | 68 | 174 | SelectObject |
| requests | 70 | 61 | MissileReport |
| requests | 74 | 188 | ClientVersion |
| requests | 109 | 79 | FacePosition |
| requests | 126 | 25 | LoadingProgress |
| requests | 128 | 140 | Exit |
| requests | 130 | 155 | ReconnectedInMatch |
| requests | 133 | 115 | WaypointAck |
| requests | 143 | 167 | TransientAck |
| requests | 146 | 203 | QuestEvent |
| requests | 149 | 106 | TipEvent |
| requests | 160 | 202 | TutorialPopupClosed |
| requests | 164 | 91 | TutorialShopOpened |
| requests | 165 | 74 | StatsRequest |
| requests | 174 | 163 | SurrenderVote |
| requests | 179 | 5 | VoiceEventDone |
| transient | 127 | 149 | SeatLoadProgress |
| transient | 134 | 95 | WaypointGroup |
| transient | 142 | 194 | Replication |
Laid out differently
ClientEvent(vectors: buff-on-1-0-0-110, consumable-bought-on-1-0-0-110, critical-strike-on-1-0-0-110, damage-dealt-on-1-0-0-110, damage-taken-on-1-0-0-110, death-assist-on-1-0-0-110, died-on-1-0-0-110, gold-earned-on-1-0-0-110, gold-spent-on-1-0-0-110, heal-cast-on-1-0-0-110, heal-on-1-0-0-110, item-bought-on-1-0-0-110, killing-spree-on-1-0-0-110, one-on-1-0-0-110)- Its command is 121 in 1.0.0.109 and 162 in 1.0.0.110.
eventtakes 83 pointNeutralized, 84 pointCaptured in 1.0.0.110 and not in 1.0.0.109.
DeathHistory- Its command is 125 in 1.0.0.109 and 35 in 1.0.0.110.
entries[].eventtakes 83 pointNeutralized, 84 pointCaptured in 1.0.0.110 and not in 1.0.0.109.
MovementBounds(vectors: one-on-1-0-0-110)- Its command is 140 in 1.0.0.109 and 6 in 1.0.0.110.
camerais in 1.0.0.110 (u8), afterradius, and not in 1.0.0.109.
PathWithSpeed(vectors: along-on-1-0-0-110)- Its command is 92 in 1.0.0.109 and 129 in 1.0.0.110.
followis in 1.0.0.110 (u32), afterarcZ, and not in 1.0.0.109.followDistanceis in 1.0.0.110 (f32), afterfollow, and not in 1.0.0.109.backOffis in 1.0.0.110 (f32), afterfollowDistance, and not in 1.0.0.109.
WorldEvent- Its command is 185 in 1.0.0.109 and 70 in 1.0.0.110.
eventtakes 83 pointNeutralized, 84 pointCaptured in 1.0.0.110 and not in 1.0.0.109.
Structs
Seatflagsis in 1.0.0.110 (u8), afterotherSummoner, and not in 1.0.0.109.sideis in 1.0.0.110 (u32), afterflags, and not in 1.0.0.109.botNameis in 1.0.0.110 (bytes, 28), afterside, and not in 1.0.0.109.botAssetis in 1.0.0.110 (bytes, 28), afterbotName, and not in 1.0.0.109.botDifficultyis in 1.0.0.110 (i32), afterbotAsset, and not in 1.0.0.109.
SpeedParamsfollowsis in 1.0.0.110 (u32), afterfromZ, and not in 1.0.0.109.followDistanceis in 1.0.0.110 (f32), afterfollows, and not in 1.0.0.109.followBackDistanceis in 1.0.0.110 (f32), afterfollowDistance, and not in 1.0.0.109.
1.0.0.111–1.0.0.112
Client builds from 1.0.0.111 up to, not including, 1.0.0.113. Patch notes: V1.0.0.111, V1.0.0.112.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.111 | 10 | 0 | 4 | 2491318 | 2026-11-01 |
| 1.0.0.112 | 10 | 0 | 4 | 13710c7 | 2026-11-01 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, EnterTeamSight, LeaveTeamSight, MatchStarted, MusicCue, ParticleLeaveTeamSight, ParticleSource, Pause, Resume, ScoreAdded, ScreenTint, SpellIconChanged, SpellInSlot, SpellOffsetTargetChanged, StatisticIncremented, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (192)
Against 1.0.0.110
Where a build from 1.0.0.111 up to, not including, 1.0.0.113 differs from one from 1.0.0.110 up to, not including, 1.0.0.111. Anything not named here is the same in both.
Transport
- The packet header differ: see protocol.json.
In 1.0.0.111–1.0.0.112, not in 1.0.0.110
| Message | Sent by | Command | What it does |
|---|---|---|---|
ShieldAdded | server | 100 on events | Add to a unit’s shield |
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
Laid out differently
EnterSight- Its command is 185 in 1.0.0.110 and 186 in 1.0.0.111–1.0.0.112.
view.hasShieldsis in 1.0.0.111–1.0.0.112 (u8), afterview, and not in 1.0.0.110.view.magicShieldis in 1.0.0.111–1.0.0.112 (f32), afterview.hasShields, and not in 1.0.0.110.view.physicalShieldis in 1.0.0.111–1.0.0.112 (f32), afterview.magicShield, and not in 1.0.0.110.view.shieldis in 1.0.0.111–1.0.0.112 (f32), afterview.physicalShield, and not in 1.0.0.110.
MissileReportunknownBXis in 1.0.0.111–1.0.0.112 (f32), aftervelocityZ, and not in 1.0.0.110.unknownBYis in 1.0.0.111–1.0.0.112 (f32), afterunknownBX, and not in 1.0.0.110.unknownBZis in 1.0.0.111–1.0.0.112 (f32), afterunknownBY, and not in 1.0.0.110.unsetis in 1.0.0.111–1.0.0.112 (bytes, 4), afterage, and not in 1.0.0.110.
MissileStatestartXis in 1.0.0.111–1.0.0.112 (f32), aftervelocityZ, and not in 1.0.0.110.startYis in 1.0.0.111–1.0.0.112 (f32), afterstartX, and not in 1.0.0.110.startZis in 1.0.0.111–1.0.0.112 (f32), afterstartY, and not in 1.0.0.110.lifeSpentis in 1.0.0.111–1.0.0.112 (f32), afterspeed, and not in 1.0.0.110.
ObjectiveReplacedtextis text, ended by a zero byte in 1.0.0.110 and text, 128 bytes in 1.0.0.111–1.0.0.112.
ObjectiveShowntextis text, ended by a zero byte in 1.0.0.110 and text, 128 bytes in 1.0.0.111–1.0.0.112.
PathWithSpeed- Its command is 129 in 1.0.0.110 and 130 in 1.0.0.111–1.0.0.112.
travelTimeis in 1.0.0.111–1.0.0.112 (f32), afterbackOff, and not in 1.0.0.110.
Structs
SpeedParamsfollowTimeis in 1.0.0.111–1.0.0.112 (f32), afterfollowBackDistance, and not in 1.0.0.110.
Chapters
- In the transport chapter, a passage holds for 1.0.0.110 and not 1.0.0.111–1.0.0.112: A client decodes nothing: its key is the first sixteen characters of the argument, as they stand.
- In the transport chapter, a passage holds for 1.0.0.111–1.0.0.112 and not 1.0.0.110: The argument holds the key in base64.
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.111–1.0.0.112:
HudHighlighted,element: “What to light up on the main controls, 0 to 8; a client ignores a larger value. 4, 5 and 6 each name a part of a second panel; which part each value names is not recorded.”, where 1.0.0.110 has “What to light up on the main controls, 0 to 8; a larger value has no defined effect. 4, 5 and 6 each name a part of a second panel; which part each value names is not recorded.”NavigationFlags,count: “The count of circles that follow.”, where 1.0.0.110 has “The count of circles that follow. A client reads that many whatever the payload holds.”StartGame, its layout: “A client past spawning ignores it.”, where 1.0.0.110 has noneVolumeMuted,category: “Which kind. A client ignores the message from 7 up.”, where 1.0.0.110 has “Which kind. A larger value than 6 has no defined effect.”
1.0.0.113
Client builds from 1.0.0.113 up to, not including, 1.0.0.114. Patch notes: V1.0.0.113.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.113 | 10 | 0 | 4 | 92c7cb1 | 2026-11-01 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, EnterTeamSight, LeaveTeamSight, MatchStarted, MusicCue, ParticleLeaveTeamSight, ParticleSource, Pause, Resume, ScoreAdded, SpellIconChanged, SpellInSlot, SpellOffsetTargetChanged, StatisticIncremented, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (194)
Against 1.0.0.111–1.0.0.112
Where a build from 1.0.0.113 up to, not including, 1.0.0.114 differs from one from 1.0.0.111 up to, not including, 1.0.0.113. Anything not named here is the same in both.
In 1.0.0.113, not in 1.0.0.111–1.0.0.112
| Message | Sent by | Command | What it does |
|---|---|---|---|
ModulePacket | client | 223 on requests | Carry data from a module of its own, often a message of its own that the module has taken over |
ScreenTint | server | 215 on events | Tint a side’s screens, or to take a tint away |
1.0.0.114–1.0.0.115
Client builds from 1.0.0.114 up to, not including, 1.0.0.116. Patch notes: V1.0.0.114.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.114 | 10 | 0 | 4 | 362197c | 2026-11-01 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, EnterTeamSight, LeaveTeamSight, MatchStarted, MusicCue, ParticleLeaveTeamSight, ParticleSource, Pause, Resume, ScoreAdded, SpellIconChanged, SpellInSlot, SpellOffsetTargetChanged, StatisticIncremented, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (194)
Against 1.0.0.113
Where a build from 1.0.0.114 up to, not including, 1.0.0.116 differs from one from 1.0.0.113 up to, not including, 1.0.0.114. Anything not named here is the same in both.
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.114–1.0.0.115:
SpellTargetingChanged,targeting: “How the spell is aimed, 0 to 8. A client keeps a larger value and reports it as an error, but builds no new aiming for it, so the slot keeps the aiming it had; no value asks for the spell’s own default.”, where 1.0.0.113 has “How the spell is aimed, 0 to 7. A client keeps a larger value and reports it as an error, but builds no new aiming for it, so the slot keeps the aiming it had; no value asks for the spell’s own default.”
1.0.0.116
Client builds from 1.0.0.116 up to, not including, 1.0.0.117. Patch notes: V1.0.0.116.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.116 | 10 | 0 | 4 | 5ba5787 | 2026-11-01 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, EnterTeamSight, LeaveTeamSight, MatchStarted, MusicCue, ParticleLeaveTeamSight, ParticleSource, Pause, Resume, ScoreAdded, SpellIconChanged, SpellInSlot, SpellOffsetTargetChanged, StatisticIncremented, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (194)
Against 1.0.0.114–1.0.0.115
Where a build from 1.0.0.116 up to, not including, 1.0.0.117 differs from one from 1.0.0.114 up to, not including, 1.0.0.116. Anything not named here is the same in both.
Transport
- The packet header differ: see protocol.json.
Chapters
1.0.0.117–1.0.0.118
Client builds from 1.0.0.117 up to, not including, 1.0.0.119. Patch notes: V1.0.0.117, V1.0.0.118.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.117 | 10 | 0 | 4 | 8f8e778 | 2026-11-01 |
| 1.0.0.118 | 10 | 0 | 4 | be7d942 | 2026-11-01 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, EnterTeamSight, LeaveTeamSight, MatchStarted, MusicCue, ParticleLeaveTeamSight, ParticleSource, Pause, Resume, ScoreAdded, SpellInSlot, SpellOffsetTargetChanged, StatisticIncremented, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (195)
Against 1.0.0.116
Where a build from 1.0.0.117 up to, not including, 1.0.0.119 differs from one from 1.0.0.116 up to, not including, 1.0.0.117. Anything not named here is the same in both.
In 1.0.0.117–1.0.0.118, not in 1.0.0.116
| Message | Sent by | Command | What it does |
|---|---|---|---|
SpellIconChanged | server | 53 on events | Change which icon a spell already in a unit’s slot shows |
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
1.0.0.119
Client builds from 1.0.0.119 up to, not including, 1.0.0.120. Patch notes: V1.0.0.119.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.119 | 10 | 0 | 4 | 68d1fdf | 2026-11-01 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, EnterTeamSight, LeaveTeamSight, MatchStarted, MusicCue, ParticleLeaveTeamSight, ParticleSource, Pause, Resume, ScoreAdded, SpellInSlot, StatisticIncremented, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (196)
Against 1.0.0.117–1.0.0.118
Where a build from 1.0.0.119 up to, not including, 1.0.0.120 differs from one from 1.0.0.117 up to, not including, 1.0.0.119. Anything not named here is the same in both.
In 1.0.0.119, not in 1.0.0.117–1.0.0.118
| Message | Sent by | Command | What it does |
|---|---|---|---|
SpellOffsetTargetChanged | server | 54 on events | Change the unit a spell already in a unit’s slot is cast from |
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
Laid out differently
CampCleared- Its command is 195 in 1.0.0.117–1.0.0.118 and 196 in 1.0.0.119.
campis u8 in 1.0.0.117–1.0.0.118 and u32 in 1.0.0.119.
MapPing(vectors: one-on-1-0-0-119)- Its command is 86 in 1.0.0.117–1.0.0.118 and 87 in 1.0.0.119.
unsetis in 1.0.0.119 (bytes, 1), aftertarget, and not in 1.0.0.117–1.0.0.118.
PingPlaced- Its command is 67 in 1.0.0.117–1.0.0.118 and 68 in 1.0.0.119.
howhasunusedLowat bit 0 in 1.0.0.119, and not in 1.0.0.117–1.0.0.118.how.playSoundis at bit 0 in 1.0.0.117–1.0.0.118 and at bit 4 in 1.0.0.119.how.showInChatis at bit 1 in 1.0.0.117–1.0.0.118 and at bit 5 in 1.0.0.119.how.unusedis at bit 2, 6 bits wide, in 1.0.0.117–1.0.0.118 and at bit 6, 2 bits wide, in 1.0.0.119.
Structs
SpellHitatXis in 1.0.0.119 (f32), afterunit, and not in 1.0.0.117–1.0.0.118.atYis in 1.0.0.119 (f32), afteratX, and not in 1.0.0.117–1.0.0.118.atZis in 1.0.0.119 (f32), afteratY, and not in 1.0.0.117–1.0.0.118.
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.119:
SpellTargetingChanged,which.summonerSlots: “Set where the slot counts among the summoner slots, so that 0 and 1 name those two. Only a champion has them: for any other unit the bit set has no defined effect.”, where 1.0.0.117–1.0.0.118 has “Set where the slot counts among the summoner slots, so that 0 and 1 name those two.”SpellTargetingChanged,targeting: “How the spell is aimed, 0 to 10. A client keeps a larger value and reports it as an error, but builds no new aiming for it, so the slot keeps the aiming it had; no value asks for the spell’s own default.”, where 1.0.0.117–1.0.0.118 has “How the spell is aimed, 0 to 8. A client keeps a larger value and reports it as an error, but builds no new aiming for it, so the slot keeps the aiming it had; no value asks for the spell’s own default.”
1.0.0.120
Client builds from 1.0.0.120 up to, not including, 1.0.0.121. Patch notes: V1.0.0.120.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.120 | 10 | 0 | 4 | 996f5f3 | 2026-11-01 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, MatchStarted, MusicCue, ParticleLeaveTeamSight, ParticleSource, Pause, Resume, ScoreAdded, SpellInSlot, StatisticIncremented, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (199)
Against 1.0.0.119
Where a build from 1.0.0.120 up to, not including, 1.0.0.121 differs from one from 1.0.0.119 up to, not including, 1.0.0.120. Anything not named here is the same in both.
In 1.0.0.120, not in 1.0.0.119
| Message | Sent by | Command | What it does |
|---|---|---|---|
EnterTeamSight | server | 226 on events | What a server sends when a unit comes into the view of a whole side |
GoldEarned | server | 228 on events | What a server sends about gold a champion earned |
LeaveTeamSight | server | 227 on events | What a server sends when a unit passes out of the view of a whole side |
Laid out differently
CamerapositionXis in 1.0.0.120 (f32) at the start, and not in 1.0.0.119.positionYis in 1.0.0.120 (f32), afterpositionX, and not in 1.0.0.119.positionZis in 1.0.0.120 (f32), afterpositionY, and not in 1.0.0.119.directionXis in 1.0.0.120 (f32), afterpositionZ, and not in 1.0.0.119.directionYis in 1.0.0.120 (f32), afterdirectionX, and not in 1.0.0.119.directionZis in 1.0.0.120 (f32), afterdirectionY, and not in 1.0.0.119.lookAtXis in 1.0.0.119 and not in 1.0.0.120.lookAtYis in 1.0.0.119 and not in 1.0.0.120.lookAtZis in 1.0.0.119 and not in 1.0.0.120.
ClockReplycheckis in 1.0.0.120 (bytes, 32), afterclientSaid, and not in 1.0.0.119.
SpawnUnitflagshaswardat bit 1 in 1.0.0.120, and not in 1.0.0.119.flags.unusedis at bit 1, 7 bits wide, in 1.0.0.119 and at bit 2, 6 bits wide, in 1.0.0.120.
Chapters
- In the interface chapter, a passage holds for 1.0.0.119 and not 1.0.0.120:
Cameranames one point, the one the view looks at, in place of where the view sits and which way it faces.
1.0.0.121
Client builds from 1.0.0.121 up to, not including, 1.0.0.122. Patch notes: V1.0.0.121.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.121 | 10 | 0 | 4 | c60872f | 2026-11-01 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, MatchStarted, MusicCue, ParticleLeaveTeamSight, ParticleSource, Pause, Resume, ScoreAdded, SpellInSlot, StatisticIncremented, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (199)
Against 1.0.0.120
Where a build from 1.0.0.121 up to, not including, 1.0.0.122 differs from one from 1.0.0.120 up to, not including, 1.0.0.121. Anything not named here is the same in both.
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.121:
EffectAdded,slot: “Which of the unit’s effect slots it sits in. A client ignores the message where it is above 63.”, where 1.0.0.120 has “Which of the unit’s effect slots it sits in. A client ignores the message where it is above 31.”EffectCount,slot: “Which slot. A client ignores the message where it is above 63.”, where 1.0.0.120 has “Which slot. A client ignores the message where it is above 31.”EffectRemoved,slot: “Which slot it sat in. A client ignores the message where it is above 63.”, where 1.0.0.120 has “Which slot it sat in. A client ignores the message where it is above 31.”EffectReplaced,slot: “Which of the unit’s effect slots. A client ignores the message where it is above 63.”, where 1.0.0.120 has “Which of the unit’s effect slots. A client ignores the message where it is above 31.”
1.0.0.122
Client builds from 1.0.0.122 up to, not including, 1.0.0.123. Patch notes: V1.0.0.122.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.122 | 10 | 0 | 4 | c19f149 | 2026-11-01 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, MatchStarted, MusicCue, ParticleLeaveTeamSight, ParticleSource, Pause, Resume, ScoreAdded, SpellInSlot, StatisticIncremented, UnitText, UseObject, VictoryDance, VoiceOverride.
Every message of this range (199)
Against 1.0.0.121
Where a build from 1.0.0.122 up to, not including, 1.0.0.123 differs from one from 1.0.0.121 up to, not including, 1.0.0.122. Anything not named here is the same in both.
Laid out differently
GameEnded(vectors: one-on-1-0-0-122)resultis u8 in 1.0.0.121 and 1-byte bits in 1.0.0.122.resulthasside100Wonat bit 0 in 1.0.0.122, and not in 1.0.0.121.resulthasunusedat bit 1 in 1.0.0.122, and not in 1.0.0.121.
InhibitorStatestateis u32 in 1.0.0.121 and 4-byte bits in 1.0.0.122.statetakes 0 down, 1 restored in 1.0.0.121 and not in 1.0.0.122.statehasaliveat bit 0 in 1.0.0.122, and not in 1.0.0.121.statehasdurationat bit 1 in 1.0.0.122, and not in 1.0.0.121.durationis in 1.0.0.121 and not in 1.0.0.122.
LoadingProgresstextis in 1.0.0.121 and not in 1.0.0.122.
MapProp(vectors: one-on-1-0-0-122)flagsis in 1.0.0.122 (1-byte bits), afterskillLevel, and not in 1.0.0.121.
SpawnBot(vectors: one-on-1-0-0-122)sidesis in 1.0.0.122 (4-byte bits), afterrank, and not in 1.0.0.121.flagsis in 1.0.0.122 (1-byte bits), aftersides, and not in 1.0.0.121.sideis in 1.0.0.121 and not in 1.0.0.122.
SpawnUnitflagshasnameIsAssetat bit 2 in 1.0.0.122, and not in 1.0.0.121.flags.unusedis at bit 2, 6 bits wide, in 1.0.0.121 and at bit 3, 5 bits wide, in 1.0.0.122.
Chapters
- In the objectives chapter, a passage holds for 1.0.0.122 and not 1.0.0.121: No unit stands behind a point: a server sets each point outright with
CapturePointValue, which says who holds it, how far it is taken and how fast that changes, and a client moves the point on by itself between messages.
1.0.0.123
Client builds from 1.0.0.123 up to, not including, 1.0.0.124. Patch notes: V1.0.0.123.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.123 | 10 | 0 | 4 | dd7ef30 | 2026-11-01 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, CapturePointChanged, MatchStarted, MusicCue, ParticleSource, Pause, Resume, ScoreAdded, SpellInSlot, StatisticIncremented, UnitText, UseObject, VoiceOverride.
Every message of this range (201)
Against 1.0.0.122
Where a build from 1.0.0.123 up to, not including, 1.0.0.124 differs from one from 1.0.0.122 up to, not including, 1.0.0.123. Anything not named here is the same in both.
In 1.0.0.123, not in 1.0.0.122
| Message | Sent by | Command | What it does |
|---|---|---|---|
ParticleLeaveTeamSight | server | 230 on events | What a server sends as a particle passes out of what one side can see |
VictoryDance | server | 198 on events | Set units moving as winners or losers do |
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
| Channel | 1.0.0.122 | 1.0.0.123 | Messages |
|---|---|---|---|
| events | 198–227 | 199–228 | GameEnded, SurrenderVoteCalled, UiHighlight, FadeMinions, HealthBar, SpawnBot, MapProp, MapPropChanged, CapturePointValue, TeamScore, RespawnPoint, TeamChanged, MinimapIcon, ScreenTint, EnterTeamSight, LeaveTeamSight |
| events | 228 | 231 | GoldEarned |
| requests | 205–225 | 206–226 | TutorialPopupClosed, QuestEvent, ModulePacket |
Laid out differently
MapPing(vectors: here-on-1-0-0-123)howis in 1.0.0.123 (1-byte bits), aftertarget, and not in 1.0.0.122.unsetis in 1.0.0.122 and not in 1.0.0.123.
PingPlaced(vectors: one-on-1-0-0-123)hownames bit 0unusedLowin 1.0.0.122 andcategoryin 1.0.0.123.howhasthrottledat bit 6 in 1.0.0.123, and not in 1.0.0.122.how.unusedis at bit 6, 2 bits wide, in 1.0.0.122 and at bit 7, 1 bits wide, in 1.0.0.123.
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.123:
CampCleared, its layout: “The header names the champion credited with emptying the camp. A client uses it only to choose a side: side 100 where the champion is on side 100, side 200 otherwise. A client marks the camp empty, even one that had just filled.”, where 1.0.0.122 has “The header has no effect. A client keeps one state for the camp, shared by both sides. A client marks the camp empty, even one that had just filled.”CampCleared,active: “The camp’s state for that side, kept as it stands; nonzero where it is active.”, where 1.0.0.122 has “The camp’s state, kept as it stands; nonzero where it is active.”
1.0.0.124
Client builds from 1.0.0.124 up to, not including, 1.0.0.125. Patch notes: V1.0.0.124.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.124 | 10 | 0 | 4 | a7a09bc | 2026-11-01 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting, VoiceOverride.
Every message of this range (211)
Against 1.0.0.123
Where a build from 1.0.0.124 up to, not including, 1.0.0.125 differs from one from 1.0.0.123 up to, not including, 1.0.0.124. Anything not named here is the same in both.
In 1.0.0.124, not in 1.0.0.123
| Message | Sent by | Command | What it does |
|---|---|---|---|
CapturePointChanged | server | 218 on events | What a server sends when something changes about a point one side can take from the other |
MatchStarted | server | 200 on events | Set when the match began |
MusicCue | server | 227 on events | Drive the music a client plays |
ParticleSource | server | 217 on events | Drive a value of the lasting particle effects on a unit from something that changes |
Pause | client | 167 on requests | Hold a match |
Resume | client | 10 on requests | Start a paused match again |
ScoreAdded | server | 224 on events | Add to a player’s score |
SpellInSlot | server | 115 on events | Put a spell in one of a unit’s slots |
StatisticIncremented | server | 225 on events | Add one to a champion’s count of a deed, as counted for the end of a match |
UnitText | server | 28 on events | Float a line of the client’s own text over a unit, as combat text floats |
UseObject | client | 63 on requests | Use a unit: as its player right-clicks a unit its character data makes usable by them and off its use cooldown |
In 1.0.0.123, not in 1.0.0.124
| Message | Sent by | Command it had |
|---|---|---|
CapturePointValue | server | 212 on events |
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
Laid out differently
ChampionStats- Its command is 73 in 1.0.0.123 and 75 in 1.0.0.124.
sizeis in 1.0.0.124 (u32) at the start, and not in 1.0.0.123.valuesis in 1.0.0.124 (bytes, sized by size minus 4), aftersize, and not in 1.0.0.123.keptAis in 1.0.0.123 and not in 1.0.0.124.deathsis in 1.0.0.123 and not in 1.0.0.124.minionKillsis in 1.0.0.123 and not in 1.0.0.124.killsis in 1.0.0.123 and not in 1.0.0.124.structureKillsis in 1.0.0.123 and not in 1.0.0.124.otherStructureKillsis in 1.0.0.123 and not in 1.0.0.124.keptBis in 1.0.0.123 and not in 1.0.0.124.neutralKillsis in 1.0.0.123 and not in 1.0.0.124.gapis in 1.0.0.123 and not in 1.0.0.124.keptCis in 1.0.0.123 and not in 1.0.0.124.goldTotalis in 1.0.0.123 and not in 1.0.0.124.keptDis in 1.0.0.123 and not in 1.0.0.124.keptEis in 1.0.0.123 and not in 1.0.0.124.keptFis in 1.0.0.123 and not in 1.0.0.124.paddingis in 1.0.0.123 and not in 1.0.0.124.keptGis in 1.0.0.123 and not in 1.0.0.124.keptHis in 1.0.0.123 and not in 1.0.0.124.keptIis in 1.0.0.123 and not in 1.0.0.124.assistsis in 1.0.0.123 and not in 1.0.0.124.
ClientEvent(vectors: buff-on-1-0-0-124, consumable-bought-on-1-0-0-124, critical-strike-on-1-0-0-124, damage-dealt-on-1-0-0-124, damage-taken-on-1-0-0-124, death-assist-on-1-0-0-124, died-on-1-0-0-124, gold-earned-on-1-0-0-124, gold-spent-on-1-0-0-124, heal-cast-on-1-0-0-124, heal-on-1-0-0-124, item-bought-on-1-0-0-124, killing-spree-on-1-0-0-124, one-on-1-0-0-124)- Its command is 165 in 1.0.0.123 and 169 in 1.0.0.124.
eventtakes 83 pointANeutralized, 84 pointBNeutralized, 85 pointCNeutralized, 86 pointDNeutralized, 87 pointENeutralized, 88 pointACaptured, 89 pointBCaptured, 90 pointCCaptured, 91 pointDCaptured, 92 pointECaptured in 1.0.0.124 and not in 1.0.0.123.eventtakes 83 pointNeutralized, 84 pointCaptured in 1.0.0.123 and not in 1.0.0.124.kill.goldis in 1.0.0.124 (f32), afterkill, and not in 1.0.0.123.kill.assistCountis in 1.0.0.124 (u32), afterkill.gold, and not in 1.0.0.123.kill.assistsis in 1.0.0.124 (12 × u32), afterkill.assistCount, and not in 1.0.0.123.kill.unreadis in 1.0.0.123 and not in 1.0.0.124.kill.listis in 1.0.0.123 and not in 1.0.0.124.
CreateNeutral- Its command is 99 in 1.0.0.123 and 102 in 1.0.0.124.
campIconis in 1.0.0.124 (text, 64 bytes), afteruniqueName, and not in 1.0.0.123.extrais in 1.0.0.123 and not in 1.0.0.124.
DeathHistory- Its command is 35 in 1.0.0.123 and 36 in 1.0.0.124.
entries[].eventtakes 83 pointNeutralized, 84 pointCaptured in 1.0.0.123 and not in 1.0.0.124.entries[].kill.goldis in 1.0.0.124 (f32), afterentries[].kill, and not in 1.0.0.123.entries[].kill.assistCountis in 1.0.0.124 (u32), afterentries[].kill.gold, and not in 1.0.0.123.entries[].kill.assistsis in 1.0.0.124 (12 × u32), afterentries[].kill.assistCount, and not in 1.0.0.123.entries[].kill.unreadis in 1.0.0.123 and not in 1.0.0.124.entries[].kill.listis in 1.0.0.123 and not in 1.0.0.124.
MapPing- Its command is 87 in 1.0.0.123 and 90 in 1.0.0.124.
kindis in 1.0.0.124 (u8), aftertarget, and not in 1.0.0.123.howis in 1.0.0.123 and not in 1.0.0.124.
MapProp(vectors: active-on-1-0-0-124)- Its command is 210 in 1.0.0.123 and 215 in 1.0.0.124.
rotationXis in 1.0.0.124 (f32), afteratZ, and not in 1.0.0.123.rotationYis in 1.0.0.124 (f32), afterrotationX, and not in 1.0.0.123.rotationZis in 1.0.0.124 (f32), afterrotationY, and not in 1.0.0.123.offsetXis in 1.0.0.124 (f32), afterrotationZ, and not in 1.0.0.123.offsetYis in 1.0.0.124 (f32), afteroffsetX, and not in 1.0.0.123.offsetZis in 1.0.0.124 (f32), afteroffsetY, and not in 1.0.0.123.rankis in 1.0.0.124 (u8), afterskillLevel, and not in 1.0.0.123.kindis in 1.0.0.124 (u8), afterrank, and not in 1.0.0.123.unusedis in 1.0.0.123 and not in 1.0.0.124.flagsis in 1.0.0.123 and not in 1.0.0.124.
MapPropChanged(vectors: animate-on-1-0-0-124)- Its command is 211 in 1.0.0.123 and 216 in 1.0.0.124.
firstis in 1.0.0.124 (f32), aftername, and not in 1.0.0.123.secondis in 1.0.0.124 (f32), afterfirst, and not in 1.0.0.123.valueis in 1.0.0.124 (u32), afterprop, and not in 1.0.0.123.changetakes 0 animate, 2 look in 1.0.0.124 and not in 1.0.0.123.changetakes 0 apply in 1.0.0.123 and not in 1.0.0.124.
QuestUpdated- Its command is 139 in 1.0.0.123 and 143 in 1.0.0.124.
tooltipis in 1.0.0.124 (text, 128 bytes), aftericon, and not in 1.0.0.123.
RespawnPoint(vectors: owned-on-1-0-0-124)- Its command is 214 in 1.0.0.123 and 220 in 1.0.0.124.
actiontakes 0 owned, 1 chosen in 1.0.0.124 and not in 1.0.0.123.actiontakes 0 offer, 1 select in 1.0.0.123 and not in 1.0.0.124.sideis in 1.0.0.124 (i32), afterpoint, and not in 1.0.0.123.clientIdis in 1.0.0.124 (u32), afterside, and not in 1.0.0.123.xis in 1.0.0.124 (f32), afterclientId, and not in 1.0.0.123.yis in 1.0.0.124 (f32), afterx, and not in 1.0.0.123.zis in 1.0.0.124 (f32), aftery, and not in 1.0.0.123.
SpawnBot(vectors: one-on-1-0-0-124)- Its command is 209 in 1.0.0.123 and 214 in 1.0.0.124.
flagsis in 1.0.0.123 and not in 1.0.0.124.
SpawnUnit(vectors: one-on-1-0-0-124)- Its command is 124 in 1.0.0.123 and 128 in 1.0.0.124.
flagsnames bit 2nameIsAssetin 1.0.0.123 andbotin 1.0.0.124.
TeamScore(vectors: one-on-1-0-0-124)- Its command is 213 in 1.0.0.123 and 219 in 1.0.0.124.
sideis in 1.0.0.124 (i32) at the start, and not in 1.0.0.123.scoreis in 1.0.0.124 (i32), afterside, and not in 1.0.0.123.sideScoreis in 1.0.0.123 and not in 1.0.0.124.otherSideScoreis in 1.0.0.123 and not in 1.0.0.124.
WorldEvent- Its command is 72 in 1.0.0.123 and 74 in 1.0.0.124.
eventtakes 83 pointNeutralized, 84 pointCaptured in 1.0.0.123 and not in 1.0.0.124.kill.goldis in 1.0.0.124 (f32), afterkill, and not in 1.0.0.123.kill.assistCountis in 1.0.0.124 (u32), afterkill.gold, and not in 1.0.0.123.kill.assistsis in 1.0.0.124 (12 × u32), afterkill.assistCount, and not in 1.0.0.123.kill.unreadis in 1.0.0.123 and not in 1.0.0.124.kill.listis in 1.0.0.123 and not in 1.0.0.124.
Structs
Seaticonis in 1.0.0.124 (i32), afterbotDifficulty, and not in 1.0.0.123.
Chapters
- In the objectives chapter, a passage holds for 1.0.0.123 and not 1.0.0.124: No unit stands behind a point: a server sets each point outright with
CapturePointValue, which says who holds it, how far it is taken and how fast that changes, and a client moves the point on by itself between messages.
1.0.0.125
Client builds from 1.0.0.125 up to, not including, 1.0.0.126. Patch notes: V1.0.0.125.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.125 | 10 | 0 | 4 | 1c017cf | 2026-11-01 |
Other ranges of this book have these, and this one does not, so what the chapters say of them says nothing of it: CancelTargeting.
Every message of this range (212)
Against 1.0.0.124
Where a build from 1.0.0.125 up to, not including, 1.0.0.126 differs from one from 1.0.0.124 up to, not including, 1.0.0.125. Anything not named here is the same in both.
In 1.0.0.125, not in 1.0.0.124
| Message | Sent by | Command | What it does |
|---|---|---|---|
VoiceOverride | server | 157 on events | Change or reset the voice a unit speaks with |
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
Laid out differently
CampCleared(vectors: one-on-1-0-0-125)- Its command is 201 in 1.0.0.124 and 202 in 1.0.0.125.
unitis in 1.0.0.125 (u32) at the start, and not in 1.0.0.124.
SpawnPetminimapIconis in 1.0.0.125 (u8), afterscript, and not in 1.0.0.124.
SpawnUnitvisibilitySizeis in 1.0.0.125 (f32), afterteam, and not in 1.0.0.124.
1.0.0.126
Client builds from 1.0.0.126 up to, not including, 1.0.0.127. Patch notes: V1.0.0.126.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.126 | 10 | 0 | 4 | 4f423d4 | 2026-10-31 |
Every message of this range (213)
Against 1.0.0.125
Where a build from 1.0.0.126 up to, not including, 1.0.0.127 differs from one from 1.0.0.125 up to, not including, 1.0.0.126. Anything not named here is the same in both.
In 1.0.0.126, not in 1.0.0.125
| Message | Sent by | Command | What it does |
|---|---|---|---|
CancelTargeting | server | 139 on events | End a spell’s targeting on a client |
Commands
These differ only in their command. Each row is a run of commands moved by the same amount:
Laid out differently
ClientEvent- Its command is 170 in 1.0.0.125 and 171 in 1.0.0.126.
eventtakes 78 minionsSpawned, 79 welcome, 80 startNoticeTwo, 81 alert, 82 scoreboardOpened, 85 pointANeutralized, 86 pointBNeutralized, 87 pointCNeutralized, 88 pointDNeutralized, 89 pointENeutralized, 90 pointACaptured, 91 pointBCaptured, 92 pointCCaptured, 93 pointDCaptured, 94 pointECaptured in 1.0.0.126 and not in 1.0.0.125.eventtakes 76 minionsSpawned, 77 welcome, 78 startNoticeTwo, 79 alert, 80 scoreboardOpened, 83 pointANeutralized, 84 pointBNeutralized, 85 pointCNeutralized, 86 pointDNeutralized, 87 pointENeutralized, 88 pointACaptured, 89 pointBCaptured, 90 pointCCaptured, 91 pointDCaptured, 92 pointECaptured in 1.0.0.125 and not in 1.0.0.126.
DeathHistory(vectors: a-third-on-1-0-0-126, another-on-1-0-0-126, one-on-1-0-0-126)entries[].eventtakes 78 minionsSpawned, 79 welcome, 80 startNoticeTwo, 82 scoreboardOpened in 1.0.0.126 and not in 1.0.0.125.entries[].eventtakes 76 minionsSpawned, 77 welcome, 78 startNoticeTwo, 80 scoreboardOpened in 1.0.0.125 and not in 1.0.0.126.
InhibitorState(vectors: fallen-on-1-0-0-126, standing-on-1-0-0-126)stateis 4-byte bits in 1.0.0.125 and 2-byte bits in 1.0.0.126.state.durationis at bit 1, 31 bits wide, in 1.0.0.125 and at bit 0, 15 bits wide, in 1.0.0.126.statehasunusedat bit 15 in 1.0.0.126, and not in 1.0.0.125.statehasaliveat bit 0 in 1.0.0.125, and not in 1.0.0.126.lifeis in 1.0.0.126 (1-byte bits), afterstate, and not in 1.0.0.125.
Pause(vectors: one-on-1-0-0-126)- Its command is 168 in 1.0.0.125 and 169 in 1.0.0.126.
clientIdis in 1.0.0.126 (u32) at the start, and not in 1.0.0.125.timeLeftis in 1.0.0.126 (i32), afterclientId, and not in 1.0.0.125.howis in 1.0.0.126 (1-byte bits), aftertimeLeft, and not in 1.0.0.125.
Paused(vectors: a-tournament-hold-on-1-0-0-126)- Its command is 168 in 1.0.0.125 and 169 in 1.0.0.126.
clientIdis in 1.0.0.126 (u32) at the start, and not in 1.0.0.125.timeLeftis in 1.0.0.126 (i32), afterclientId, and not in 1.0.0.125.howis in 1.0.0.126 (1-byte bits), aftertimeLeft, and not in 1.0.0.125.
PlayerDisconnected(vectors: one-on-1-0-0-126)- Its command is 159 in 1.0.0.125 and 160 in 1.0.0.126.
clientIdis in 1.0.0.126 (u32) at the start, and not in 1.0.0.125.championis in 1.0.0.125 and not in 1.0.0.126.
RemoveItem(vectors: selling-on-1-0-0-126)whichis in 1.0.0.126 (1-byte bits) at the start, and not in 1.0.0.125.slotis in 1.0.0.125 and not in 1.0.0.126.sellis in 1.0.0.125 and not in 1.0.0.126.
Resume(vectors: from-a-client-on-1-0-0-126)clientIdis in 1.0.0.126 (u32) at the start, and not in 1.0.0.125.howis in 1.0.0.126 (1-byte bits), afterclientId, and not in 1.0.0.125.
Resumed(vectors: after-a-countdown-on-1-0-0-126)clientIdis in 1.0.0.126 (u32) at the start, and not in 1.0.0.125.howis in 1.0.0.126 (1-byte bits), afterclientId, and not in 1.0.0.125.
StartGame(vectors: one-on-1-0-0-126)rulesis in 1.0.0.126 (1-byte bits) at the start, and not in 1.0.0.125.
WorldEventeventtakes 78 minionsSpawned, 79 welcome, 80 startNoticeTwo, 82 scoreboardOpened in 1.0.0.126 and not in 1.0.0.125.eventtakes 76 minionsSpawned, 77 welcome, 78 startNoticeTwo, 80 scoreboardOpened in 1.0.0.125 and not in 1.0.0.126.
Chapters
- In the transport chapter, a passage holds for 1.0.0.125 and not 1.0.0.126: The argument holds the key in base64.
- In the transport chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: An argument longer than sixteen characters holds the key in base64, and the key is the first sixteen bytes it decodes to.
- In the messages chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A client unwraps a container on any channel.
- In the objects chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A region id of 0 names no region: given a
RegionAddedcarrying 0, a client gives the region an id of its own, its own node in the top byte and a count below it, which no message from a server can name. - In the objects chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A bot’s champion carries 4294967295.
- In the objects chapter, a passage holds for 1.0.0.126 and not 1.0.0.125:
CreateChampionandCreateTurretremove any object holding the net id before they create theirs. - In the objects chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A client applies a
SpawnPet’s effect and spell level only where the owner’s node is its own. - In the objects chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A name holding
_Destroyedor_FBgives no identifier. - In the objects chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: | Name | Maps | | ––––––––––––––––––––––––––––––––––– | ––––– | |
Barracks_T1_C1,Barracks_T2_C1| 1, 2, 3 | |Barracks_T1_L1,Barracks_T1_R1,Barracks_T2_L1,Barracks_T2_R1| 1, 2, 4 | | the six spawn points named__P_…| 1, 2 | |____P_Chaos_Spawn_Barracks__C01| 3 | |HQ_T1,HQ_T2| 1, 2, 3, 4 | |OrderShop01| 3, 4 | |orderShop01| 1, 2, 8 | |ChaosShop01| 3 | |chaosShop01| 1, 2, 8 | - In the objects chapter, a passage holds for 1.0.0.126 and not 1.0.0.125:
LeaveLocalSightdoes nothing. - In the objects chapter, a passage holds for 1.0.0.126 and not 1.0.0.125:
RegionRemovedfor a region a client does not hold does nothing. - In the objects chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: No message removes a champion.
- In the objects chapter, a passage holds for 1.0.0.126 and not 1.0.0.125:
SpawnPettakes the net id in its header for the new pet, but does nothing where the owner its body names is not held. - In the ordering chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: That answer lists no units but leaves its count of units unset, so a server MUST NOT rely on the count.
- In the space chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A client has data for maps 1 to 4 and 8: |
map| Origin of its paths | | —– | —————–– | | 1 | 6991, 7223 | | 2 | 6991, 7223 | | 3 | 7479, 7147 | | 4 | 6710, 6696 | | 8 | 6947, 6609 | - In the time chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A
GameSpeedthat arrives during a hold takes effect as play resumes. - In the time chapter, a passage holds for 1.0.0.126 and not 1.0.0.125:
MatchStartedgives that moment. - In the values chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: Of those, 64 is the champion’s basic attack, 65 to 67 its other basic attacks, 68 its critical attack, 69 a miss and 70 a dodge.
- In the values chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A champion’s own book ends at slot 51.
- In the values chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A champion’s inventory ends at slot 37.
- In the values chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: Each unit has 64 slots for the effects it carries, 0 to 63.
- In the data chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: The client has maps 1, 2, 3, 4 and 8.
- In the data chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: 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 1.0.0.126 and not 1.0.0.125: 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 1.0.0.126 and not 1.0.0.125: A champion’s spells and attacks are in
DATA/Characters/<Champion>/Spells/<Spell>.inibin. - In the joining chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A client drops nothing for arriving before
CharacterSelected. - In the units chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A client acts on a
CreateChampionor aCreateNeutralwhenever it arrives. - In the vision chapter, a passage holds for 1.0.0.126 and not 1.0.0.125:
EnterSightstates the unit’s shields and where it stands or which path it walks, and nothing of its health or resource. - In the vision chapter, a passage holds for 1.0.0.126 and not 1.0.0.125:
EnterLocalSightstates the unit’s maximum health beside its health, and nothing of its resource. - In the vision chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A client makes only circular regions.
- In the vision chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A region fastened to a unit with a radius of 3000 or less is blocked by walls, and any other sees over them; nothing in a region chooses this.
- In the vision chapter, a passage holds for 1.0.0.126 and not 1.0.0.125:
LevelUpshows its effect over any champion the client can see, and does nothing for another unit. - In the movement chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A server MAY send
NavigationFlags. - In the replication chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: Props answer to a table of their own as well.
- In the replication chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A champion’s eight further slots are slots 42 to 49, and bit n of either set of slots that can be cast from stands for slot n.
- In the match chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: Sent during a hold,
GameSpeedtakes effect as the match resumes. - In the match chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A client names no one in
PauseorResume. - In the match chapter, a passage holds for 1.0.0.126 and not 1.0.0.125:
Pausedcarries how long the hold can last, in seconds. - In the match chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: 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 1.0.0.126 and not 1.0.0.125: Where the message’s flag asks it, a client announces in chat the player that held the match, unless the message names no one.
- In the match chapter, a passage holds for 1.0.0.126 and not 1.0.0.125:
Resumedends the hold either at once or after a countdown the client shows, during which the match stays held. - In the match chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A client announces in chat who resumed the match only where it resumes at once, and does so even where the match was not held.
- In the match chapter, a passage holds for 1.0.0.126 and not 1.0.0.125:
VictoryDancemoves every unit. - In the combat chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: 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 1.0.0.126 and not 1.0.0.125: A swing starts later by the timing byte of its
Attackless 128, in hundredths of a second. - In the combat chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: Any unit takes
TargetUnit, whatever it is attacking. - In the combat chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: Either
UnitDiedorChampionDiedcan leave the unit standing as a husk rather than dead, without its death animation or death screen. - In the combat chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A server can instead bring a dead champion back at a place of its choosing with
Respawned, which keeps the champion’s level, gold and spell ranks and restores its health. - In the combat chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A client sends
UseObjectat no other time. - In the spells chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: 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 shop chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: Opening the shop while the match is paused sends nothing.
- In the shop chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A client never asks for an item a player holds only one of and holds already.
- In the shop chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A client asks only with the shop open.
- In the objectives chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A client shows nothing of the state
CampClearedgives. - In the objectives chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A client acts on
TeamScoreonce its game screen is up, whatever the mode. - In the communication chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A client answers a
VoiceEventit cannot play at once. - In the votes chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A client opens no panel for a vote called while the match is paused.
- In the spectating chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A watching client takes the match over HTTP from a spectator service, not over a game connection.
- In the spectating chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: The word is followed by the spectator service’s address, with no port of its own, the key, a match number and a platform name; there is no player number.
- In the spectating chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: The word
replaystarts a watching client asspectatordoes. - In the spectating chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A player’s key too can be given as base64.
- In the spectating chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A watching client asks the spectator service for the match under
/observer-mode/rest/consumer/, each request naming the platform and the match number:getGameMetaDatafor the match’s metadata,getLastChunkInfofor how far the match has come, andgetGameDataChunkandgetKeyFramefor a chunk or a key frame by number. - In the spectating chapter, a passage holds for 1.0.0.126 and not 1.0.0.125: A client asks
getLastKeyFrameInfofor the last key frame.
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.126:
Camera, its layout: “A client sends no report while the camera is locked. It sends a new report, with the next syncId, only where at least 0.1 seconds have passed since the last and the view has moved more than 200 units or turned; it sends a report that goes unanswered again after a delay that follows the round trip.”, where 1.0.0.125 has noneExperienceGained,unit: “The unit granted it. A server names a champion: any other unit the client holds has no defined effect.”, where 1.0.0.125 has “The unit granted it.”GameSpeed,speed: “How fast, 1 being normal. Zero stops the clock as a pause does, and a client then holds any later GameSpeed until the game resumes.”, where 1.0.0.125 has “How fast, 1 being normal.”LeaveLocalSight, its layout: “It changes nothing a client shows for any unit, and a client ignores it while playing a replay.”, where 1.0.0.125 has noneLeaveSight, its layout: “What a server sends to take a unit out of what a client can see; the client stops drawing it, unless it is a turret. A client ignores it while playing a replay. The header names the unit.”, where 1.0.0.125 has “What a server sends to take a unit out of what a client can see; the client stops drawing it, unless it is a turret. The header names the unit.”MissileReport,unknownAX: “casterAt from the last MissileState the client took for this missile, returned as it came.”, where 1.0.0.125 has “What this holds is not recorded.”MissileReport,unknownAY: “casterAt from the last MissileState the client took for this missile, returned as it came.”, where 1.0.0.125 has “What this holds is not recorded.”MissileReport,unknownAZ: “casterAt from the last MissileState the client took for this missile, returned as it came.”, where 1.0.0.125 has “What this holds is not recorded.”MissileReport,unknownBX: “A client leaves it unwritten; its bytes carry no meaning.”, where 1.0.0.125 has “What this holds is not recorded.”MissileReport,unknownBY: “A client leaves it unwritten; its bytes carry no meaning.”, where 1.0.0.125 has “What this holds is not recorded.”MissileReport,unknownBZ: “A client leaves it unwritten; its bytes carry no meaning.”, where 1.0.0.125 has “What this holds is not recorded.”MissileReport,flag: “The whole how byte of the last MissileState the client took for this missile, returned as it came.”, where 1.0.0.125 has “Zero or one; what it means is not recorded.”MovementBounds,camera: “Nonzero also keeps the client’s camera inside the circle, a negative radius counting as zero for it. The bounds on the champion’s orders apply whatever this holds.”, where 1.0.0.125 has “A client takes any bit set here as camera set; a server writes zero.”RemoveItemAnswer, its layout: “A client takes it only for a champion, and ignores it for any other unit.”, where 1.0.0.125 has noneSpawnFromBarracks, its layout: “The header names the barracks the unit comes out of, and a client ignores the message under any other header; the new unit’s id is unit. A client deletes no object first. While resynchronising, it drops a message naming an id it holds, or with kind above 4.”, where 1.0.0.125 has noneTipEvent, its layout: “Where what is 0, the header names the champion the TipShown named; where it is 1, the sender’s champion.”, where 1.0.0.125 has none
1.0.0.127
Client builds from 1.0.0.127 up to, not including, 1.0.0.128. Patch notes: V1.0.0.127.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.127 | 10 | 0 | 4 | d3238e3 | 2026-10-31 |
Every message of this range (213)
Against 1.0.0.126
Where a build from 1.0.0.127 up to, not including, 1.0.0.128 differs from one from 1.0.0.126 up to, not including, 1.0.0.127. Anything not named here is the same in both.
Transport
- The packet header differ: see protocol.json.
- The families differ: see families.json.
Chapters
- In the transport chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: Stock ENet 1.2.5 serves a client as it stands: the header, the constants and the commands are the release’s own, and the verify connect stock ENet sends states what the client’s connect asked for.
- In the transport chapter, a passage holds for 1.0.0.127 and not 1.0.0.126: Stock ENet 1.2.5 serves a client once its transmission unit is clamped (see below).
- In the transport chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: That constant is above what a client asks for, so a server needs no clamp.
- In the transport chapter, a passage holds for 1.0.0.127 and not 1.0.0.126: That constant is below what a client asks for.
- In the objects chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A region id of 0 names no region: given a
RegionAddedcarrying 0, a client gives the region an id of its own, its own node in the top byte and a count below it, which no message from a server can name. - In the objects chapter, a passage holds for 1.0.0.126 and not 1.0.0.127:
CreateChampionandCreateTurretremove any object holding the net id before they create theirs. - In the objects chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A client applies a
SpawnPet’s effect and spell level only where the owner’s node is its own. - In the objects chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: | Name | Maps | | ––––––––––––––––––––––––––––––––––– | ––––– | |
Barracks_T1_C1,Barracks_T2_C1| 1, 2, 3 | |Barracks_T1_L1,Barracks_T1_R1,Barracks_T2_L1,Barracks_T2_R1| 1, 2, 4 | | the six spawn points named__P_…| 1, 2 | |____P_Chaos_Spawn_Barracks__C01| 3 | |HQ_T1,HQ_T2| 1, 2, 3, 4 | |OrderShop01| 3, 4 | |orderShop01| 1, 2, 8 | |ChaosShop01| 3 | |chaosShop01| 1, 2, 8 | - In the objects chapter, a passage holds for 1.0.0.126 and not 1.0.0.127:
EnterSightandEnterLocalSightcarry no other message, and act only on a unit the client already holds. - In the objects chapter, a passage holds for 1.0.0.126 and not 1.0.0.127:
LeaveLocalSightdoes nothing. - In the objects chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: No message removes a champion.
- In the space chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A client has data for maps 1 to 4 and 8: |
map| Origin of its paths | | —– | —————–– | | 1 | 6991, 7223 | | 2 | 6991, 7223 | | 3 | 7479, 7147 | | 4 | 6710, 6696 | | 8 | 6947, 6609 | - In the values chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A cast’s slot also takes 64 to 70, for a basic attack.
- In the values chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: Of those, 64 is the champion’s basic attack, 65 to 67 its other basic attacks, 68 its critical attack, 69 a miss and 70 a dodge.
- In the values chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A champion’s own book ends at slot 51.
- In the data chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: The client has maps 1, 2, 3, 4 and 8.
- In the data chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A champion’s spells and attacks are in
DATA/Characters/<Champion>/Spells/<Spell>.inibin. - In the joining chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A client writes zero where its player id goes in
LoadingProgress. - In the joining chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A client drops nothing for arriving before
CharacterSelected. - In the units chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A client acts on a
CreateChampionor aCreateNeutralwhenever it arrives. - In the vision chapter, a passage holds for 1.0.0.126 and not 1.0.0.127:
EnterSightstates the unit’s shields and where it stands or which path it walks, and nothing of its health or resource. - In the vision chapter, a passage holds for 1.0.0.126 and not 1.0.0.127:
EnterLocalSightstates the unit’s maximum health beside its health, and nothing of its resource. - In the vision chapter, a passage holds for 1.0.0.126 and not 1.0.0.127:
LeaveLocalSightchanges nothing a client shows, whichever unit it names. - In the vision chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A region fastened to a unit with a radius of 3000 or less is blocked by walls, and any other sees over them; nothing in a region chooses this.
- In the vision chapter, a passage holds for 1.0.0.126 and not 1.0.0.127:
LevelUpshows its effect over any champion the client can see, and does nothing for another unit. - In the movement chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A client takes a
WaypointGroupor aWaypointGroupAtSpeedon channels 2, 3 and 4 alike. - In the movement chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A server MAY send
NavigationFlags. - In the replication chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: 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 1.0.0.126 and not 1.0.0.127: ## 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 15 | What the spell in each of eight further slots costs | float | | 0 | 16 to 17 | What the spell in slots 0 and 1 of the second set costs | float | | 1 | 0 | What the champion is doing, as a set of bits | u32 | | 1 | 1 to 3 | Whether it is proof against spells, proof against all harm, and targetable | u32 | | 1 | 4 | Which sides can aim at it, as a set of bits | u32 | | 1 | 5 | Whether it is proof against strikes | u32 | | 1 | 6 | Damage it deals by striking | float | | 1 | 7 | Damage its spells deal before modifiers | float | | 1 | 8 | How often it turns a blow aside | float | | 1 | 9 | How often it strikes critically | float | | 1 | 10 | Armour | float | | 1 | 11 | Spell resistance | float | | 1 | 12 to 13 | How fast health and resource return | float | | 1 | 14 | How far it strikes from | float | | 1 | 15 to 17 | Flat and percent modifiers on the damage it strikes with, then the flat modifier on its spells’ damage | float | | 1 | 18 to 19 | Flat and percent reduction of the spell damage it takes | float | | 1 | 20 | A multiplier on how fast it strikes | float | | 1 | 21 | A flat addition to how far it casts | float | | 1 | 22 | A modifier on its cooldowns | float | | 1 | 23 to 24 | How much armour it cuts through, flat then as a percent | float | | 1 | 25 to 26 | How much spell resistance it cuts through, flat then as a percent | float | | 1 | 27 | Life steal | float | | 1 | 28 | Spell vamp | float | | 2 | 0 to 1 | Whether it is proof against strikes, then against spells, as group 1 bits 5 and 1 | u32 | | 3 | 0 to 1 | Health and resource as they stand | float | | 3 | 2 to 3 | Health and resource at their greatest | float | | 3 | 4 to 5 | A flat and a percent addition to how far it sees | float | | 3 | 6 | How fast it moves | float | | 3 | 7 | A value whose meaning is not recorded | float | | 3 | 8 | Level | u32 | What the second set and the eight further slots hold is not recorded, and a server writes zero in their costs.
- In the replication chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A champion’s eight further slots are slots 42 to 49, and bit n of either set of slots that can be cast from stands for slot n.
- In the replication chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A server grants experience with
ExperienceGainedand gold withGoldGained. - In the match chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: Where the message’s flag asks it, a client announces in chat the player that held the match, unless the message names no one.
- In the match chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A client announces in chat who resumed the match only where it resumes at once, and does so even where the match was not held.
- In the match chapter, a passage holds for 1.0.0.126 and not 1.0.0.127:
VictoryDancemoves every unit. - In the match chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: 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 1.0.0.126 and not 1.0.0.127: While it resynchronises, a client ignores any message creating a unit it already holds.
- In the match chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: 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 1.0.0.126 and not 1.0.0.127: A client sends
UseObjectat no other time. - In the effects chapter, a passage holds for 1.0.0.126 and not 1.0.0.127:
AppearancePoppedtakes away every look laid over the unit’s own, not only the newest. - In the shop chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A client asks only with the shop open.
- In the objectives chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A client shows nothing of the state
CampClearedgives. - In the votes chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A client opens no panel for a vote called while the match is paused.
- In the interface chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A client takes the lock from the player’s own settings when
StartGamearrives, locked where they say nothing, and answers withCameraLock;CameraLockSetchanges it for the match without changing those settings. - In the spectating chapter, a passage holds for 1.0.0.126 and not 1.0.0.127: A player’s key too can be given as base64.
1.0.0.128
Client builds from 1.0.0.128 up to, not including, 1.0.0.129. Patch notes: V1.0.0.128.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.128 | 10 | 0 | 4 | 5261f94 | 2026-10-31 |
Every message of this range (213)
Against 1.0.0.127
Where a build from 1.0.0.128 up to, not including, 1.0.0.129 differs from one from 1.0.0.127 up to, not including, 1.0.0.128. Anything not named here is the same in both.
Laid out differently
CreateChampionnameis text, 40 bytes in 1.0.0.127 and text, 128 bytes in 1.0.0.128.assetis text, 128 bytes in 1.0.0.127 and text, 40 bytes in 1.0.0.128.
PlayAnimationflagsnames bit 3fadeOthersin 1.0.0.127 andqueueLastin 1.0.0.128.flagsnames bit 4freezeOthersin 1.0.0.127 andreplaceablein 1.0.0.128.flagsnames bit 8syncPhasein 1.0.0.127 andjumpToEndin 1.0.0.128.flags.loopis at bit 1 in 1.0.0.127 and at bit 0 in 1.0.0.128.flags.holdLastFrameis at bit 2 in 1.0.0.127 and at bit 1 in 1.0.0.128.flagshasqueueat bit 2 in 1.0.0.128, and not in 1.0.0.127.flags.lockedis at bit 6 in 1.0.0.127 and at bit 5 in 1.0.0.128.flagshasnoRestartat bit 6 in 1.0.0.128, and not in 1.0.0.127.flags.noFadeInis at bit 9 in 1.0.0.127 and at bit 7 in 1.0.0.128.flags.unusedis at bit 10, 22 bits wide, in 1.0.0.127 and at bit 9, 23 bits wide, in 1.0.0.128.flagshasunusedLowat bit 0 in 1.0.0.127, and not in 1.0.0.128.flagshasdropOthersat bit 5 in 1.0.0.127, and not in 1.0.0.128.flagshasfadeAtEndat bit 7 in 1.0.0.127, and not in 1.0.0.128.
PlayerDisconnectedchampionis in 1.0.0.128 (u32) at the start, and not in 1.0.0.127.clientIdis in 1.0.0.127 and not in 1.0.0.128.
Respawnedresourceis in 1.0.0.128 (f32), afterz, and not in 1.0.0.127.
Revivedresourceis in 1.0.0.128 (f32), afteratZ, and not in 1.0.0.127.
StopAnimationflagsis 4-byte bits in 1.0.0.127 and 1-byte bits in 1.0.0.128.flagshasfadeat bit 0 in 1.0.0.128, and not in 1.0.0.127.flagshasignoreLockat bit 1 in 1.0.0.128, and not in 1.0.0.127.flagshasstopAllat bit 2 in 1.0.0.128, and not in 1.0.0.127.flagshasunusedat bit 3 in 1.0.0.128, and not in 1.0.0.127.flagshasunusedLowat bit 0 in 1.0.0.127, and not in 1.0.0.128.flagshasunlockat bit 6 in 1.0.0.127, and not in 1.0.0.128.flagshasunusedMidat bit 7 in 1.0.0.127, and not in 1.0.0.128.flagshasblendat bit 9 in 1.0.0.127, and not in 1.0.0.128.flagshasunusedHighat bit 10 in 1.0.0.127, and not in 1.0.0.128.
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.128:
AnimationOverrides, its layout: no note, where 1.0.0.127 has “A length of zero, or above 2147483647, gives an empty name and occupies no bytes after it. A server sends lengths from 0 to 2147483647.”AppearancePopped, its layout: no note, where 1.0.0.127 has “A client also takes away every look laid over the unit on this command, and does so before it looks for the one entry names, so the unit is left with no look laid over it.”AppearancePushed, its layout: “A client stops a basic attack the unit is making first. Looks stack: the newest shows, and AppearancePopped takes away the one its entry names. An animated building instead looks for a look of the same name whose skin equals entry, adds the look under skin where it finds none, and how has no effect on it.”, where 1.0.0.127 has “No skin is carried; the look wears the unit’s own skin. A client first stops a basic attack the unit is making; looks stack, the newest shows, and AppearancePopped takes away the one its entry names.”AppearancePushed,asset: “The name the client loads it under, ended by a zero byte. The name and its zero byte take at most 64 bytes.”, where 1.0.0.127 has “The name the client loads it under, ended by a zero byte.”AttackFrom,fromX: “Where the swinging unit stands, along one ground axis, in world units.”, where 1.0.0.127 has “Where the swinging unit stands, along one ground axis, in world units. Where the unit stands more than 400 units from this point, a client first moves it there; nearer, the point has no effect.”Autocast, its layout: no note, where 1.0.0.127 has “It names one slot: there is no slot for a critical strike.”Autocast,slot: “The slot cast by itself, from 0 to 51; -1 leaves none.”, where 1.0.0.127 has “The slot cast by itself, from -1 to 51. A client takes a value outside that range as it stands. What -1 does is not recorded.”Camera, its layout: no note, where 1.0.0.127 has “A client sends no report while the camera is locked. It sends a new report, with the next syncId, only where at least 0.1 seconds have passed since the last and the view has moved more than 200 units or turned; it sends a report that goes unanswered again after a delay that follows the round trip.”Camera,positionX: no note, where 1.0.0.127 has “Where the view stands, along one ground axis.”Camera,positionY: no note, where 1.0.0.127 has “Its height.”Camera,positionZ: no note, where 1.0.0.127 has “Along the other ground axis.”Camera,clientId: “The client id of the client the view belongs to.”, where 1.0.0.127 has “The client id the sender holds: that of the client the view belongs to.”CameraAck,syncId: “The name the report carried. A client sends the report again until this comes back.”, where 1.0.0.127 has “The name the report carried. A client takes it only where it is at most 127 past the last name it took, counting round past 255, and sends the report again until it does.”CameraBehaviour, its layout: no note, where 1.0.0.127 has “Only the client whose own champion the header names applies it.”CameraLock, its layout: “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.”, where 1.0.0.127 has “A client sends it on each CameraLockSet with state as that message carried it, all eight bits included, and also as its player sets the lock or the game forces a lock or lifts one. While a forced lock holds, a CameraLockSet or player setting is kept and sent only as that lock lifts.”CameraLock,state.unused: “Unused; a client writes zero.”, where 1.0.0.127 has “As CameraLockSet carried them; zero in a report the client makes on its own.”CameraLockSet, its layout: “A client ignores the message while something of its own holds the camera.”, where 1.0.0.127 has “A client answers at once with CameraLock, returning the state byte as it arrived. While the game holds a forced lock, it keeps the byte and sends it only as that lock lifts.”CameraLockSet,locked: “Set to lock the camera, clear to free it. Any nonzero value sets it.”, where 1.0.0.127 has “Nonzero to lock the camera, zero to free it; a client tests the whole byte, so any set bit locks it.”CampCleared, its layout: “A client marks the camp empty, even one that had just filled.”, where 1.0.0.127 has noneCampCleared,unit: “A unit whose side picks the marker: side 100 for one of side 100, side 200 otherwise.”, where 1.0.0.127 has “The champion credited with emptying the camp. A client uses it only to choose a side: side 100 where the killer is on side 100, side 200 otherwise.”CampCleared,camp: “Which camp. A client ignores a camp it does not know, but for the timer.”, where 1.0.0.127 has “Which camp. A client ignores the message for a camp it does not know.”CancelTargeting, its layout: “A client cancels the aiming only where that slot is being aimed, and otherwise does nothing. A server sends it to clients watching a match.”, where 1.0.0.127 has “A client cancels the aiming only where that slot, in the book named, is being aimed, and otherwise does nothing.”CapturePointChanged,point: “Which point, 0 to 254; a match of five points uses 0 to 4.”, where 1.0.0.127 has “Which point, 0 to 255; a match of five points uses 0 to 4.”CapturePointChanged,side: “The side attacking the point. It has no effect on a binding.”, where 1.0.0.127 has “The side attacking the point. A client does nothing with it.”CastSpell,how.slot: “Which slot is being cast from. A client sends 0, 1 or 2, for the champion’s first three spells.”, where 1.0.0.127 has “Which slot is being cast from, from 0 to 51. A client sends nothing for a slot above 51.”CastSpell,y: “The height of the place aimed at.”, where 1.0.0.127 has “The same point, in height, in world units: the height of the place aimed at.”CastSpell,endX: “The second point of what aims the spell: the same as x and z for a point or a unit; for a line dragged out, its far end, cut to the spell’s length; for a cone, its far point.”, where 1.0.0.127 has “The second point of what aims the spell; for a spell that takes no aim it is the caster’s own position, the same as the first.”CastSpell,endY: “The height of where the cast ends.”, where 1.0.0.127 has “The second point, in height, in world units: the height of where the cast ends.”ChainTargets,count: “How many of the slots are used, 0 to 32.”, where 1.0.0.127 has “How many of the slots are used, 0 to 32; 0 clears every target the client holds. A client given more than 32 fails.”ChainTargets,caster: “The unit casting the missile.”, where 1.0.0.127 has “The unit casting the missile. Where a client does not hold it, the client starts no missile, though a missile it already holds under the header’s name still takes the targets.”ChampionDied,damageSource: “Read only for a minion a champion killed, whose kill a client shows another way where it is 7; a server writes zero.”, where 1.0.0.127 has “Unused; a server writes zero.”ChampionDied,how.zombie: “Set to leave the champion standing in a zombie state rather than dead: no death animation and no death screen.”, where 1.0.0.127 has “Any value other than zero leaves the champion standing in a zombie state rather than dead, with no death animation.”ClientVersion,clientId: “The client id of the client reporting.”, where 1.0.0.127 has “The client id the sender holds: that of the client reporting.”ClientVersion,text: “The build, as text. The text ends at a zero byte.”, where 1.0.0.127 has “The build the client runs, as text ending at a zero byte; the bytes after that zero carry nothing.”ClockConvergence,clientTime: “The client’s clock, in seconds, as the client reported it.”, where 1.0.0.127 has “The client’s clock, in seconds, as the client reported it. A client sets its clock offset from it: its running round trip value, less half of its own clock’s reading less this value.”ClockConvergence,roundTrip: “The round trip time the server measures, in seconds.”, where 1.0.0.127 has “The round trip time the server measures, in seconds. A client blends it into a running value, keeping 0.8 of the old and adding 0.1 of this.”ClockReply,value: “The client id the sender holds, as it sends in clientId in Camera and CameraLock.”, where 1.0.0.127 has “The client id the sender holds.”ClockReply,serverSaid: “What the server last said the clock stood at, in seconds.”, where 1.0.0.127 has “The time the server last stated, in seconds, carried back as it arrived.”ClockReply,clientSaid: “What the client’s own clock reads, in seconds, just after it set itself from that statement: elapsed plus its smoothed estimate of the delay.”, where 1.0.0.127 has “What the client’s own clock reads, in seconds, just after it set itself from that statement.”ClockReply,check: “Thirty-two bytes every client of this build sends alike; a server ignores them.”, where 1.0.0.127 has “The same thirty two bytes from every client of the build; they carry nothing a server needs.”CreateNeutral, its layout: “The monster faces from where it stands toward the facing point, or along +Z where the two are the same. A client drops the message while its map’s navigation data is unloaded.”, where 1.0.0.127 has “The body ends after camp. The monster faces from where it stands toward the facing point, or along +Z where the two are the same, and a client drops the message while its map’s navigation data is unloaded.”CreateNeutral,campIcon: “The name of the icon the minimap shows at the camp, written in full and padded with zero bytes to the width above; empty shows none. A client uses it only where it creates the camp.”, where 1.0.0.127 has “A name the client gives the camp it sets up for the unit where it holds no camp of that number yet; it has no effect where the camp already exists. What the client shows by it is not recorded.”Damage,how.result: “How the damage landed, and so what a client shows over the unit hurt. 4 shows the amount, 3 shows it as a critical strike, and 2 shows the word for a dodge in place of an amount.”, where 1.0.0.127 has “How the damage landed, and so what a client shows over the unit hurt. 4 shows the amount, 3 shows it as a critical strike, and 2 shows the word for a dodge in place of an amount; any value above 5 shows as 4.”Damage,source: “The unit dealing it. A client shows nothing, notices included, unless it holds both target and source and target can be attacked; the figure drifts from source toward target, and a champion source has the amount added to its damage dealt.”, where 1.0.0.127 has “The unit dealing it. A client shows nothing, notices included, unless it holds target and target can be attacked; it does not need to hold source, and a champion source has the amount added to its damage dealt.”DeathHistory, its layout: “A client ignores the whole message unless it holds killer. Each entry’s size after event and source follows from event alone. An entry whose target the client does not hold is left out.”, where 1.0.0.127 has “A client ignores the whole message where killer is zero; a killer it does not hold still lets the entries apply. Each entry’s size after source follows from event alone.”DeathHistory,killer: “The unit credited with the death.”, where 1.0.0.127 has “The unit credited with the death. A client ignores the whole message where this is zero.”DeathHistory,sourceType: “What sort of source the killer was. A client keeps only the low 4 bits, signed.”, where 1.0.0.127 has “What sort of source the killer was. A client keeps only the low 4 bits, signed, and acts on them only where it holds killer.”EffectAdded,slot: “Which of the unit’s effect slots it sits in.”, where 1.0.0.127 has “Which of the unit’s effect slots it sits in. A client ignores the message where it is above 63.”EffectAdded,hidden: “Whether the client keeps it off the unit’s display.”, where 1.0.0.127 has “Whether the client keeps it off the unit’s display. A client hides it only for 1 and shows it for any other value.”EffectAdded,effect: “Which effect, by the number its name gives, as Objects and identifiers works it out.”, where 1.0.0.127 has “Which effect, by the number its name gives, as Objects and identifiers works it out. A server never sends zero. A client adds nothing for an effect it does not know.”EffectAddedGroup, its layout: no note, where 1.0.0.127 has “A client takes each entry as it takes an EffectAdded for that unit, with the kind, effect and times above, and holds it to the same rules.”EffectAddedGroup,lasts: “How long it runs in total, in seconds.”, where 1.0.0.127 has “How long it has left to run from when it arrives, in seconds.”EffectAddedGroup,entries[].hidden: “Whether the client keeps it off the unit’s display.”, where 1.0.0.127 has “1 keeps it off the unit’s display; any other value shows it.”EffectCount, its layout: “Where the slot is empty, the whole message does nothing.”, where 1.0.0.127 has noneEffectCount,slot: “Which slot.”, where 1.0.0.127 has “Which slot. A client ignores the message where it is above 63.”EffectCount,count: “How many are stacked there now. 0 takes the effect off.”, where 1.0.0.127 has “How many are stacked there now.”EffectCount,timeLeft: “How long it has left to run, in seconds from when the message arrives.”, where 1.0.0.127 has “How long it has left to run, in seconds.”EffectCount,runningFor: “How long it has already run, in seconds: a client counts its start that long before the message arrived.”, where 1.0.0.127 has “How long it has already run, in seconds.”EffectCountGroup, its layout: no note, where 1.0.0.127 has “A client takes each entry as it takes an EffectCount for that unit, with the two times above.”EffectCountGroup,lasts: “How long the effect runs in total, in seconds.”, where 1.0.0.127 has “How long the effect has left to run, in seconds: a client takes it as the timeLeft of an EffectCount.”EffectRemoved,slot: “Which slot it sat in.”, where 1.0.0.127 has “Which slot it sat in. A client ignores the message where it is above 63.”EffectRemovedGroup, its layout: no note, where 1.0.0.127 has “A client takes each entry as it takes an EffectRemoved for that unit.”EffectReplaced, its layout: “It carries no effect number: a client re-times the effect already in the slot and takes caster as its caster again. Where the slot is empty, nothing happens.”, where 1.0.0.127 has noneEffectReplaced,slot: “Which of the unit’s effect slots.”, where 1.0.0.127 has “Which of the unit’s effect slots. A client ignores the message where it is above 63.”EffectReplaced,lasts: “How long it has left to run, in seconds from when the message arrives. A client counts the effect as starting at arrival: runningFor moves neither its start nor its end.”, where 1.0.0.127 has “How long it has left to run from when it arrives, in seconds. A client applies a value below zero as given.”EffectReplacedGroup, its layout: “A client takes each entry as it takes an EffectReplaced for that unit, with the two times above: there is no effect number, so it re-times the effect already in the slot, and does nothing where the slot is empty.”, where 1.0.0.127 has “A client takes each entry as it takes an EffectReplaced for that unit, with the two times above.”EffectReplacedGroup,lasts: “How long it has left to run, in seconds from when the message arrives. runningFor moves neither its start nor its end.”, where 1.0.0.127 has “How long it has left to run from when it arrives, in seconds.”EnterLocalSight, its layout: no note, where 1.0.0.127 has “It carries no other messages: the body is the unit’s health alone, always present.”EnterLocalSight,vitals: “The unit’s health. Where a client already holds the unit, it reads these from body offset 2 whatever the carried size, so a server carries messages here only where they create the unit, and sends the vitals right after them.”, where 1.0.0.127 has “The unit’s health.”EnterLocalSight,vitals.health: “What its health stands at.”, where 1.0.0.127 has “What its health stands at. A client holds it to between zero and maxHealth.”EnterSight, its layout: “It states everything a client needs to draw the unit at once.”, where 1.0.0.127 has “What a server sends to bring a unit into what a client can see. A client draws a unit only once this has named it, except turrets, which it draws regardless; the header names the unit. It states everything a client needs to draw the unit at once.”EnterSight,itemCount: “How many items the unit holds. A client reads this and the rest for a champion, a minion or another unit with a mind; for a turret, a map prop, a building or a missile it reads nothing after the carried messages.”, where 1.0.0.127 has “How many items follow. A client reads this and the rest for a champion, a minion or another unit with a mind; for a turret, a map prop or a building it reads nothing at all.”EnterSight,items: “The items themselves.”, where 1.0.0.127 has “What the unit carries, one entry a slot.”EnterSight,view: “Everything else a client needs to draw the unit. A server sends it for a champion, a minion or another unit with a mind, which a client reads past the end of the message without it, and ends the message after the items for any other unit.”, where 1.0.0.127 has “Everything else a client needs to draw the unit. A server sends it for a champion, a minion or another unit with a mind, which a client reads past the end of the message without it.”EnterSight,view.hasShields: “Whether the three figures below follow. A zero leaves them out.”, where 1.0.0.127 has “Not zero where three f32 values follow; zero sets all three to zero.”EnterSight,view.movementState: “Where the unit is and what it is doing on the ground. A client reads it for a champion or a minion, and a server sends it for those; for another unit with a mind the message ends before it.”, where 1.0.0.127 has “Where the unit stands; only a movementKind of 3 is followed by the direction it faces.”EnterSight,view.movementState.movementKind: “What the unit is doing on the ground, and so which shape follows. A champion stated as standing, with the place and facing below, is drawn there with its name and health bar over it. One stated as moving is drawn at the first point of its path and walks the rest.”, where 1.0.0.127 has “What follows the sync id: 0 nothing, 1 a path walked at a set speed, 2 a path, 3 a point the unit stands at. A client reads nothing more for any other value.”EnterSight,view.movementState.syncId: “The name this statement of movement answers to.”, where 1.0.0.127 has “The number of this statement about the unit; a client takes a path or a point only where it is not behind the last one the unit took.”EnterSight,view.movementState.movement: “Where the unit is going. Movement says how a path is read.”, where 1.0.0.127 has “Every point after the first.”EnterSight,view.movementState.atX: “Where the unit stands, along one ground axis, in world units.”, where 1.0.0.127 has “Along one ground axis, in world units; the height is the ground’s.”EnterSight,view.movementState.atZ: “Where it stands, along the other, in world units.”, where 1.0.0.127 has “Along the other ground axis.”EnterTeamSight,side: “Which side the unit came into or out of the view of.”, where 1.0.0.127 has “Which side the unit came into the view of, as an index from 0 to 3. A server sends only 0 to 3; a larger index has no defined effect.”ExperienceGained, its layout: “A client floats the amount over the champion, except while watching a match. Where the unit is the client’s own champion below its highest level, it also shows the amount on its experience display.”, where 1.0.0.127 has “A client floats the amount over any champion it holds, except while playing a replay.”ExperienceGained,unit: “The unit granted it. A server names a champion: a client fails for any other unit.”, where 1.0.0.127 has “The unit granted it. A server names a champion: any other unit the client holds has no defined effect.”FaceDirection, its layout: no note, where 1.0.0.127 has “Where towardX and towardZ are both zero, a client does not turn the unit at once, but it still keeps the zero direction as the one the unit is to face. What follows from that is not recorded.”FadeRemoved,fade: “The fade, by the name FadeTo gave it.”, where 1.0.0.127 has “The fade, by the name FadeTo gave it. A client does nothing where no fade on the unit has that name.”FadeSounds,time: “How long the sounds take to fade; the unit is not recorded.”, where 1.0.0.127 has “How long the fade takes, in seconds on the match clock; a client fades its main sound effects out over that time.”FloatingText,slot: “Where the text goes. 0 floats it over the unit while the unit is in the client’s own view, the text looked up as a key into the client’s own text. 1 to 50 writes it, in colour, to that line of a debugging display, only where the unit is the one the player has selected. A client does nothing for any other value.”, where 1.0.0.127 has “Where the text goes. 0 floats it over the unit while the unit is in the client’s own view. 1 to 50 writes it, in colour, to that line of a debugging display, only where the unit is the one the player has selected. A client does nothing for any other value.”FloatingText,error: “Nonzero has a client ignore the whole message.”, where 1.0.0.127 has “Nonzero has a client show the text on screen as a message for ten seconds, whatever slot holds, and do nothing else with the message.”FloatingText,text: “The text, ended by a zero byte; the two take at most 1024 bytes.”, where 1.0.0.127 has “The text, ended by a zero byte.”ForceDeath, its layout: no note, where 1.0.0.127 has “Nothing follows the header: a client marks the unit dead and starts its death at once, for no set time.”GameEnded, its layout: “Arriving while the match still loads, it counts as a win or loss for the player’s side and the client leaves at once. Otherwise the client ends the match on its screen and sends ClientFinished, except while playing a replay.”, where 1.0.0.127 has “Arriving while the match still loads, it counts as a win or loss for the player’s side, and the client hides its window and leaves at once; a client with no champion of its own first shows a message and counts neither. Otherwise the client ends the match on its screen and sends ClientFinished, except while playing a replay.”GameEnded,result.side100Won: “Set where side 100 won, clear where side 200 did.”, where 1.0.0.127 has “Set where side 100 won, clear where side 200 did. A client counts a win where this names its own side, and a loss otherwise.”GameEnded,result.unused: “Unused; a server writes zero.”, where 1.0.0.127 has “A client does nothing with this bit.”GoldGained, its layout: “A client only floats the amount as text: the gold the unit holds does not change. Where unit is the client’s own champion, amount is above 0.5 and source names a unit the client holds other than its own player, the text floats over source; otherwise it floats over unit, as a gain where amount is above zero and a loss where it is below.”, where 1.0.0.127 has “Where amount is above 0.5, unit is the client’s own champion and source names a unit it holds, a client floats the gold over the source. Otherwise, where it holds the unit, it shows the amount on the unit as a gain or a loss, and nothing for zero; where that appears is not recorded.”HealthBar,show: “Set to show the bar, clear to hide it. Zero hides it, any other value shows it.”, where 1.0.0.127 has “Any value other than zero shows the bar; zero hides it.”HudHighlightToggled,element: “What to light up, as in HudHighlighted. A value beyond those named does nothing.”, where 1.0.0.127 has “What to light up, as in HudHighlighted. A client checks it against no limit: a value beyond those named has no defined effect.”HudHighlightToggled,second: “For the shop’s element 3, which item within the category; a client reads nothing here otherwise.”, where 1.0.0.127 has “A third value where part is 2; a server writes zero otherwise.”HudHighlightToggled,state.unused: “Unused; a server writes zero.”, where 1.0.0.127 has “A client ignores these bits; a server writes zero.”HudHighlighted,element: “What to light up on the main controls. A client ignores any value above 8.”, where 1.0.0.127 has “What to light up on the main controls, 0 to 8; a client ignores a larger value. 4, 5 and 6 each name a part of a second panel; which part each value names is not recorded.”HudHighlighted,number: “Which slot, for a spell or a summoner spell; it has no effect otherwise. A client accepts any value, and a slot beyond those named has no defined effect.”, where 1.0.0.127 has “Which slot, for a spell or a summoner spell; it has no effect for 3 to 8.”InhibitorState, its layout: “A client ignores the whole message, duration included, unless alive differs from the inhibitor’s current state.”, where 1.0.0.127 has noneInhibitorState,state.duration: “How long the state lasts, in whole seconds; zero where alive is set.”, where 1.0.0.127 has “How long the state lasts, in seconds; zero where alive is set.”InputLock, its layout: “A client ignores it while playing a replay.”, where 1.0.0.127 has noneInputLock,locked: “Set to lock, clear to unlock. Any nonzero value sets it.”, where 1.0.0.127 has “Set to lock, clear to unlock.”InventorySlot,slot: “Which slot, 0 to 39. A client ignores the message from 40 up.”, where 1.0.0.127 has “Which slot, 0 to 37. A client ignores the message from 38 up.”ItemAdded, its layout: “A server sends it to units nobody is buying for.”, where 1.0.0.127 has “It answers no request: where inSlot is above zero, a client puts item and inSlot in the slot whether or not anything asked for it. 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. A client rejects the message from 38 up.”, where 1.0.0.127 has “The slot it went to, 0 to 37. A client rejects the message from 38 up.”ItemAdded,inSlot: “How many of the item the slot holds; zero leaves the slot as it was. The slot’s charges come from the item’s own data.”, where 1.0.0.127 has “How many of the item the slot holds now; zero leaves the slot as it was. The slot’s charges come from the item’s own data.”ItemAdded,activate: “Nonzero readies the item’s own spell, in the slot four past the item’s, and has the client answer with RemoveItem for it.”, where 1.0.0.127 has “What this carries is not recorded. Where it is not zero, a client refreshes the slot and, where the slot holds an item, sends RemoveItem for it with sell clear; a server sends zero.”ItemUsed,slot: “Which slot.”, where 1.0.0.127 has “Which slot, 0 to 37. A client ignores the message from 38 up, and where the slot is empty.”JoinSide,padding: “Never written by a client.”, where 1.0.0.127 has “Arbitrary; it carries no meaning.”JoinSide,clientId: “The client id of the client asking.”, where 1.0.0.127 has “The client id the sender holds, that is, the id of the client asking.”JoinSide,side: “The side it asks for.”, where 1.0.0.127 has “The side it asks for; a client asks for 100.”LeaveLocalSight, its layout: “It changes nothing a client shows for any unit, and a client ignores it while watching a match.”, where 1.0.0.127 has “It changes nothing a client shows for any unit, and a client ignores it while playing a replay.”LeaveSight, its layout: no note, where 1.0.0.127 has “What a server sends to take a unit out of what a client can see; the client stops drawing it, unless it is a turret. A client ignores it while playing a replay. The header names the unit.”LeaveTeamSight,side: “Which side the unit came into or out of the view of.”, where 1.0.0.127 has “Which side the unit passed out of the view of, as an index from 0 to 3. A server sends only 0 to 3; a larger index has no defined effect.”LoadingProgress,clientId: “The client id of the client reporting.”, where 1.0.0.127 has “The client id the sender holds, that is, the id of the client reporting.”LoadingProgress,playerId: “Who is reporting. A client sends zero.”, where 1.0.0.127 has “Zero.”LoadingProgress,eta: “How long the client expects still to take, in seconds.”, where 1.0.0.127 has “How many seconds the client expects loading still to take.”LoadingProgress,status.ping: “Round trip time the client measures, in milliseconds.”, where 1.0.0.127 has “The round trip time the client measures, in milliseconds.”LoadingProgress,status.unused: “Never written by a client.”, where 1.0.0.127 has “Never written by a client; it carries nothing.”LoadingProgress,done.loaded: “Set in every report whose progress stands at one hundred, and in no other.”, where 1.0.0.127 has “Set once loading is done.”LoadingProgress,done.unused: “Never written by a client.”, where 1.0.0.127 has “Carries nothing; a client never writes these bits.”Loadout,runes: “The runes set before the match, thirty places in runs of nine, nine, nine and three. A place holds zero where nothing was set.”, where 1.0.0.127 has “The runes set before the match, thirty places.”Loadout,choices: “The choices made alongside them, one place each, and how far each was taken. A place stands empty where nothing was chosen.”, where 1.0.0.127 has “The choices made alongside them, 400 bytes that a client keeps as one block.”MapPing,y: “The height of the place pinged.”, where 1.0.0.127 has “The height of the place pinged, in world units.”MapPing,kind: “Which mark it is. A client sends any of the seven below, and 1 where the mark shows a direction of attack.”, where 1.0.0.127 has “Which mark it is. A client sends any of the seven below, and 1 where the mark shows a direction of attack. It writes only the low four bits; the high four carry no meaning.”MapProp,rotationX: “For scenery, the pitch in degrees: a turn about the x axis, positive turning +y toward +z. For an active prop, x of the direction it faces.”, where 1.0.0.127 has “A vector’s part along one ground axis, used for either kind. What this carries is not recorded.”MapProp,rotationZ: “For scenery, the roll in degrees: a turn about the z axis, positive turning +x toward +y. For an active prop, z of the direction it faces.”, where 1.0.0.127 has “A vector’s part along the other ground axis, used for either kind. What this carries is not recorded.”MapProp,offsetX: “What is added to where it stands, along one ground axis, in world units.”, where 1.0.0.127 has “A second vector’s part along one ground axis, used only where kind is 1. What this carries is not recorded.”MapProp,offsetY: “What is added to where it stands, in height, in world units.”, where 1.0.0.127 has “A second vector’s part in height, used only where kind is 1. What this carries is not recorded.”MapProp,offsetZ: “What is added to where it stands, along the other ground axis, in world units.”, where 1.0.0.127 has “A second vector’s part along the other ground axis, used only where kind is 1. What this carries is not recorded.”MapProp,kind: “What sort of prop it is; a client makes nothing for any other value. A client first deletes any object holding the prop’s id, whatever the kind.”, where 1.0.0.127 has “What sort of prop it is; a client makes nothing for any other value. A client deletes no object first: where one already holds the prop’s id, both answer to it.”MapProp,asset: “The name the client loads its art and sound under, written and padded as above.”, where 1.0.0.127 has “The name of the character the client loads the prop’s art and sound under, written and padded as above.”MapPropChanged,name: “A name: an animation’s, a particle’s or a look’s, by the change below. The name ends at its first zero byte; the bytes after it carry no meaning.”, where 1.0.0.127 has “The name of the animation, for animate; a client reads it for no other change. The name ends at its first zero byte, and the bytes after it carry no meaning.”MapPropChanged,value: “A value the change uses: for animate, the animation’s flags; for linkEffect, the particle effect value; for look, the look’s number.”, where 1.0.0.127 has “A value the change uses: for animate, the animation’s flags; for linkEffect, the particle effect value.”MapPropChanged,option: “For animate, nonzero to remove the prop after the animation; for linkEffect, zero.”, where 1.0.0.127 has “For linkEffect, zero; a client reads it for no other change.”MatchIdentity,game: “The match’s identifier.”, where 1.0.0.127 has “The match’s identifier. A client only logs it.”MatchStarted,startedAt: “When the match began, as a moment on the match clock, in seconds.”, where 1.0.0.127 has “When the match began, as a moment on the match clock, in seconds; a client counts match time from it.”MinimapHighlighted,element: “The minimap; a client acts on element 0 only, its camera button, and only once it knows its own champion. Any other value is ignored.”, where 1.0.0.127 has “Which part of the minimap blinks. A client acts on 0 alone, its camera button, and only once it knows its own champion; it ignores any other value.”MinimapIcon,unit: “The unit this is about.”, where 1.0.0.127 has “The unit this is about. A client ignores the message where it does not hold the unit.”MinimapIcon,icon: “The name the client loads the unit’s minimap mark under, which it changes only where the name differs from the one it shows. Written out in full and padded with zero bytes to the width above.”, where 1.0.0.127 has “The name the client loads the mark under, ended by a zero byte. A client changes nothing where it is the mark already drawn.”MissileHits,count: “How many units follow. A client reads it as signed, so a count above 32767 carries none.”, where 1.0.0.127 has “How many units follow. A client reads it as signed, so a count of zero or above 32767 carries no units, and a server sends at most 32767.”MissileHits,targets: “The units struck, in order.”, where 1.0.0.127 has “The units struck, in order. A client still takes a unit it does not know, with nothing shown on it, and nothing after the hit that destroys the missile shows.”MissileState, its layout: “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.”, where 1.0.0.127 has “A client reads both a speed and a part of the missile’s life spent. Neither the ground-height rule for endY nor a trail moved on by an age is confirmed. The header names the unit casting, as the casting inside does.”MissileState,speed: “How fast the missile travels, in world units a second.”, where 1.0.0.127 has “How fast the missile travels, in world units a second. A client uses it only for a missile that flies in a straight line.”MissileState,lifeSpent: “How much of its life is gone, as a part of one.”, where 1.0.0.127 has “How far through the spell’s fixed travel time the missile is, as a part of one. A missile aimed at a unit, or bouncing, paces itself to arrive as that time runs out; with no fixed travel time it has no effect.”MissileState,how.bounced: “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.”, where 1.0.0.127 has “Set where the missile has bounced; a client takes any nonzero byte as set. Only a missile that flies straight uses it; any other missile ignores it, with casterAt, end and facing.”MoveCamera,how: no note, where 1.0.0.127 has “How the view moves. A client ignores it where the header carries zero.”MoveOrder, its layout: “The path it carries is what the client would take; where the unit actually goes is whatever the server answers with.”, where 1.0.0.127 has “What a client sends as its player gives an order. The header names the unit ordered: the player’s champion, or a unit it controls alongside, which gets its own copy of the order. The path it carries is what the client would take; where the unit actually goes is whatever the server answers with.”MoveOrder,kind: “What is being asked for.”, where 1.0.0.127 has “What the order is.”MoveOrder,targetZ: “Where the order points, along the other.”, where 1.0.0.127 has “Where the order points, along the other ground axis.”MoveOrder,movement: no note, where 1.0.0.127 has “Every point after the first.”MovementBounds,camera: “Set to keep the camera within the circle too. Clear leaves the camera as it was, bound or not. Any nonzero value sets it.”, where 1.0.0.127 has “Nonzero also keeps the client’s camera inside the circle, a negative radius counting as zero for it. The bounds on the champion’s orders apply whatever this holds.”NavigationFlags, its layout: “A client fails on the first of these in a match: it stops, marking no circle and sending no answer.”, where 1.0.0.127 has “A client clears every circle it holds before marking these, and answers each with a message to the server under command 32 whose body is this sync id alone.”ObjectiveReplaced, its layout: no note, where 1.0.0.127 has “A client ignores it where it has no objective panel.”ParticleLeaveTeamSight, its layout: no note, where 1.0.0.127 has “A client ignores the message where particle names none it holds, and fails where it names an object that is not a particle.”Path, its layout: “A client answers every one at once, unsequenced on the transient channel, with ten bytes: WaypointAck’s command, a net id of zero, this sync id, and one byte that is arbitrary and carries no meaning. It applies it only where the sync id is not older than the last the unit took (as UnitStopped).”, where 1.0.0.127 has “A client answers every one at once, before applying it, with WaypointAck: ten bytes holding this sync id and a last byte, where the relocation count sits, that is arbitrary and carries no meaning. A client answers every one at once, unsequenced on the transient channel, with ten bytes: WaypointAck’s command, a net id of zero, this sync id, and one byte that is arbitrary and carries no meaning. It applies it only where the sync id is not older than the last the unit took (as UnitStopped).”Path,points: “The path’s points, to the end of the message. A client takes the ground’s height for each.”, where 1.0.0.127 has “The path’s points, to the end of the message. A client takes the ground’s height for each, and passes over a remainder shorter than a point.”PathWithSpeed, its layout: “A client answers every one at once, as it answers Path, whatever its sync id. It applies it only where the sync id is not older than the last the unit took (as UnitStopped). A unit can follow another unit.”, where 1.0.0.127 has “A client answers every one at once, before applying it, with WaypointAck: ten bytes holding this sync id and a last byte, where the relocation count sits, that is arbitrary and carries no meaning. A client answers every one at once, as it answers Path, whatever its sync id. It applies it only where the sync id is not older than the last the unit took (as UnitStopped). A unit can follow another unit.”PathWithSpeed,points: “The path’s points, to the end of the message. A client takes the ground’s height for each.”, where 1.0.0.127 has “The path’s points, to the end of the message. A client takes the ground’s height for each, and passes over a remainder shorter than a point.”PingPlaced,atY: “The height of the place, as a client shows it.”, where 1.0.0.127 has “Its height, in world units. A client does not use it to place the ping.”PingPlaced,how.playSound: “Set where the client plays a sound for it.”, where 1.0.0.127 has “Set where the client plays a sound for it. A client plays one only where category is 0 or 1.”PlayEmote,emote: “Which emote, by its place in the client’s list; one past the list plays nothing.”, where 1.0.0.127 has “Which emote, by its place in the client’s list. A client sends nothing where no emote matches.”QueryStatusAnswer,ready: “Whether the server is ready. While answers say it is not, a client keeps asking and goes no further, which Joining a match sets out.”, where 1.0.0.127 has “Whether the server is ready; any value but zero ends the client’s wait. While answers say it is not, a client keeps asking and goes no further, which Joining a match sets out.”QuestUpdated,tooltip: “A key into the client’s own text for its tooltip. It applies to activate only.”, where 1.0.0.127 has “A key into the client’s own text. It applies to activate only.”RegionAdded, its layout: “A region grants sight, blocks the way, or grows cover.”, where 1.0.0.127 has “On this range a region stands where the message places it; RegionAttached places one that follows a unit. A region matching one the client holds in kind, sightRadius, the first three bits of does, extra, otherExtra and position only gives that one the new lifetime.”RegionAdded,kind: “What sort of region it is. Where it is 2, the region belongs to the client clientId names; what other values mean is not recorded.”, where 1.0.0.127 has “Whose map shows the region: 0 side 100’s, 1 side 200’s, 2 everyone’s, 3 side 300’s, 4 any other. A client takes the value as it stands, so 100 or 200 here matches no one, and draws the region only where it is 2 or names the player’s own side. A client watching the match takes the side it watches as its own, and draws every region while it watches both.”RegionAdded,sightRadius: “How far the region shows the map around it, in world units. Zero takes a default radius.”, where 1.0.0.127 has “How far the region shows the map around it, in world units, zero or more.”RegionAdded,lifetime: “How long it lasts, in seconds. A client counts it down and removes the region once it reaches zero or less. Whether one that starts at zero or less is kept is not recorded.”, where 1.0.0.127 has “How long it lasts, in seconds. A client counts it down and removes the region once it reaches zero, so zero or less removes it at once.”RegionAdded,marker: “The region’s id, which RegionRemoved names; 4294967295 has the client pick one of its own. A region sent again with the same id, kind and radius changes the one held rather than adding another.”, where 1.0.0.127 has “The id the client keeps the region under. Zero has the client pick one.”RegionAdded,does.flag: “What this changes on a client is not recorded.”, where 1.0.0.127 has “Where kind is 2 and this bit is set, a client also sets the bit after it.”RegionAdded,does.second: “A second choice a client keeps with the region; it also sets it itself where kind is 2 and the bit below it is set.”, where 1.0.0.127 has “Kept with the region; a client also sets it where kind is 2 and flag is set. It changes nothing a client shows.”RegionAdded,does.unused: “Unused; a server writes zero.”, where 1.0.0.127 has “Its value has no effect; a server writes zero.”RegionAdded,extra: “Kept with the region as it stands; what it does is not recorded. A server writes zero.”, where 1.0.0.127 has “Kept with the region; it changes nothing a client shows. A server writes zero.”RegionAdded,otherExtra: “Kept the same way; a server writes zero.”, where 1.0.0.127 has “A region sent again with the same value is taken as the one already shown; what else it names is not recorded. A server sends zero.”RegionAttached, its layout: “A region matching one the client holds in view, sightRadius, the first three bits of does, marker, sightFrom and unit only gives that one the new lifetime.”, where 1.0.0.127 has noneRegionAttached,kind: “What sort of region it is. Where it is 2, the region belongs to the client clientId names; what other values mean is not recorded.”, where 1.0.0.127 has “Whose map shows the region: 0 side 100’s, 1 side 200’s, 2 everyone’s, 3 side 300’s, 4 any other. A client takes the value as it stands, so 100 or 200 here matches no one, and draws the region only where it is 2 or names the player’s own side. A client watching the match takes the side it watches as its own, and draws every region while it watches both.”RegionAttached,sightRadius: “How far the region shows the map around it, in world units. Zero takes the unit’s own sight radius, or a default where it has none.”, where 1.0.0.127 has “How far the region shows the map around it, in world units, zero or more. Zero takes the unit’s own sight radius, followed as it changes, or a default where it has none.”RegionAttached,unit: “The unit the region follows. A client takes the region even where it does not hold the unit.”, where 1.0.0.127 has “The unit the region follows. A client ignores the message where it does not know the unit.”RegionAttached,lifetime: “How long it lasts, in seconds. A client counts it down and removes the region once it reaches zero or less. Whether one that starts at zero or less is kept is not recorded.”, where 1.0.0.127 has “How long it lasts, in seconds. A client counts it down and removes the region once it reaches zero or less, so one that starts at zero or less goes at its first count.”RegionAttached,marker: “The region’s id, which RegionRemoved names; 4294967295 has the client pick one of its own. A region sent again with the same id, kind and radius changes the one held rather than adding another.”, where 1.0.0.127 has “The region’s id, which RegionRemoved names; zero has the client pick one of its own. A region that matches one the client holds in kind, sightRadius, the first three bits of does, extra, otherExtra and unit only renews that one’s lifetime; the id is not compared.”RegionAttached,does.flag: “What this changes on a client is not recorded.”, where 1.0.0.127 has “Where kind is 2 and this bit is set, a client also sets does.second. The region shows the map whether or not it is set.”RegionAttached,does.second: “A second choice a client keeps with the region; it also sets it itself where kind is 2 and the bit below it is set.”, where 1.0.0.127 has “Kept with the region; a client also sets it where kind is 2 and flag is set. It changes nothing a client shows.”RegionAttached,does.unused: “Unused; a server writes zero.”, where 1.0.0.127 has “Its value has no effect, because a client always sets this bit itself; a server writes zero.”RegionAttached,extra: “Kept with the region as it stands; what it does is not recorded. A server writes zero.”, where 1.0.0.127 has “Kept with the region; it changes nothing a client shows. A server writes zero.”RegionAttached,otherExtra: “Kept the same way; a server writes zero.”, where 1.0.0.127 has “A region sent again with the same value is taken as the one already shown; what else it names is not recorded. A server sends zero.”Register,playerId: “Who the sender claims to be. The proof is what settles the claim.”, where 1.0.0.127 has “Who the sender claims to be, as its launch line names the player. The proof is what settles the claim.”Register,proof: “The player id enciphered with the 16-byte key; a plain copy where the client has no key.”, where 1.0.0.127 has “The player id enciphered with the 16-byte key both ends already hold; a plain copy where the client has no key.”Registered,clientId: “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).”, where 1.0.0.127 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.”Registered,playerId: “The player the answer is for; a client takes it only where this is its own player id, and reads nothing after it.”, where 1.0.0.127 has “Who occupies that seat. A client keeps the pair of clientId and playerId from every answer, and takes the answer as its own only where this is its own player id; it reads nothing after it.”RemoveItem,which.sell: “Set to sell the item, clear to throw it away. A client always sends it set.”, where 1.0.0.127 has “Set to sell the item, clear to throw it away.”RemoveItemAnswer, its layout: no note, where 1.0.0.127 has “A client takes it only for a champion, and ignores it for any other unit.”RemoveItemAnswer,slot: “Which slot, 0 to 37. For a higher one a client does nothing at all; for 0 to 37 it updates the slot and tells its screens the inventory changed, whatever left is.”, where 1.0.0.127 has “Which slot, 0 to 37. A client drops the message from 38 up.”Roster,sideRoom: “How many seats the first side has room for, and so how many leading places of side a client copies. A server sends at most 24: a client refuses a count above 48 and keeps the one before, and for 25 to 48 copies on past the side’s places into the fields after them.”, where 1.0.0.127 has “How many seats side 100 has room for.”Roster,otherSideRoom: “How many the other has room for, under the same terms.”, where 1.0.0.127 has “How many side 200 has room for.”Roster,side: “The players on one side, twenty four places. A client copies as many leading places as sideRoom gives; the rest hold zero. A place cannot be read on its own, because zero is an identifier a match gives out as well as what an unused place holds. It has a player identifier’s width.”, where 1.0.0.127 has “The players on side 100, twenty four places of a player identifier’s width; the client copies as many as sideRoom says, so a server keeps sideRoom at 24 or less; a larger one has no defined effect. sideTaken says how many of the leading places carry a player, and the rest hold zero.”Roster,otherSide: “The players on the other, under the same reading, as many as otherSideRoom gives.”, where 1.0.0.127 has “The players on side 200, read the same way under otherSideRoom and otherSideTaken, with otherSideRoom kept at 24 or less.”Roster,sideTaken: “How many of the leading places on the first side carry a player. A client keeps it, and it limits nothing.”, where 1.0.0.127 has “How many of side 100’s places carry a player.”Roster,otherSideTaken: “How many on the other, under the same terms.”, where 1.0.0.127 has “How many on side 200.”ScoreAdded, its layout: “A client ignores the message where player names no champion it holds.”, where 1.0.0.127 has “A client ignores the message where champion names no champion it holds.”ScoreAdded,flags.unused: “Unused; a server writes zero.”, where 1.0.0.127 has “A client ignores these; a server writes zero.”ScreenTint,fadeIn: “1 brings a tint in, and the colour and weight below follow; 0 takes it away, and they do not.”, where 1.0.0.127 has “Any value other than zero brings a tint in, and the colour and weight below follow; 0 takes it away, and they do not.”ScreenTint,side: “Which side sees it.”, where 1.0.0.127 has “Which side sees it: 0 for every client, or a side’s number. A client with no player of its own shows a tint only for 0 and 100.”SeatChampion,player: “The player this is about. It has a player identifier’s width.”, where 1.0.0.127 has “Whose champion this is. It has a player identifier’s width.”SeatChampion,assetLength: “How many bytes the name below occupies, counting the byte that ends it.”, where 1.0.0.127 has “How many bytes the name below occupies, counting the byte that ends it. A client reads nothing here, and takes the name up to its first zero byte.”SeatChampion,asset: “The name the client loads the champion’s art and sound under. It is not padded.”, where 1.0.0.127 has “The champion the seat plays, as the name the client loads the champion’s data under. It ends with a zero byte and is not padded.”SeatLoadProgress,status.loaded: “Set in every report whose progress stands at one hundred, and in no other.”, where 1.0.0.127 has “It carries no defined value.”SeatLoadProgress,done.loaded: “Set where the seat has loaded; a client then shows no time left.”, where 1.0.0.127 has “Set once loading is done.”SeatLoadProgress,done.unused: “Unused; a server writes zero.”, where 1.0.0.127 has “Carries nothing.”SeatName,player: “The player this is about. It has a player identifier’s width.”, where 1.0.0.127 has “Whose name this is. It has a player identifier’s width.”SeatName,nameLength: “How many bytes the name below occupies, counting the byte that ends it. A client reads nothing here: it reads the name up to its zero byte.”, where 1.0.0.127 has “How many bytes the name below occupies, counting the byte that ends it. A client reads nothing here, and takes the name up to its first zero byte.”ShieldAdded,flags.unused: “Unused; a server writes zero.”, where 1.0.0.127 has “A client ignores these; a server writes zero.”SpawnFromBarracks, its layout: “It arrives on its own and also inside EnterSight. The header names the barracks sending the unit out: only a barracks acts on the message, and unit names the new unit.”, where 1.0.0.127 has “The header names the barracks the unit comes out of, and a client ignores the message under any other header; the new unit’s id is unit. A client deletes no object first. While resynchronising, it drops a message naming an id it holds, or with kind above 4.”SpawnFromBarracks,kind: “What sort of unit it is.”, where 1.0.0.127 has “What sort of unit it is, from 0 to 3; a client spawns nothing for any other value.”SpawnPet, its layout: “The header names the owner, and a client handles the message only where it holds that unit. It kills the owner’s earlier pet if that lives, then makes the pet under pet and node with the owner’s side and sight, as the owner’s pet. It deletes no object first; where one already holds pet, both answer to it. The header names the pet. A server sends it to clients watching a match.”, where 1.0.0.127 has “The header names the owner, and a client handles the message only where it holds that unit. It kills the owner’s earlier pet if that lives, then makes the pet under pet and node with the owner’s side and sight, as the owner’s pet. It deletes no object first; where one already holds pet, both answer to it.”SpawnPet,pet: “The name the new pet answers to.”, where 1.0.0.127 has “The id the pet answers to, which a client gives it together with node. The header names the owner.”SpawnPet,spellLevel: “The level of the spell that summoned it, plus one. A client uses it only where node is its own.”, where 1.0.0.127 has “The level of the spell that summoned it, plus one. A client uses it only where the owner belongs to its own network node.”SpawnPet,effect: “An effect it carries, padded with zero bytes. A client uses it only where node is its own.”, where 1.0.0.127 has “An effect it carries, padded with zero bytes. A client uses it only where the owner belongs to its own network node.”SpawnPet,flags.clearOwnerTarget: “Set where its owner’s target is cleared.”, where 1.0.0.127 has “Set where its owner’s target is cleared; a client acts on it only where the owner is its own champion.”SpawnPet,minimapIcon: “Set where it shows on the minimap. Any nonzero value sets it.”, where 1.0.0.127 has “Not zero, where the owner is a champion, to class the pet with its owner for display. What that changes on screen is not recorded.”SpellCastAnswer, its layout: no note, where 1.0.0.127 has “There is no byte for ending a charge: the casting follows the sync id.”SpellCooldown, its layout: no note, where 1.0.0.127 has “It carries no whole cooldown to show the time left against.”SpellCooldown,which.summonerSpell: “Set where the slot counts among the summoner slots, so that 0 and 1 name those two.”, where 1.0.0.127 has “Set where the slot counts among the summoner slots, so that 0 and 1 name those two. Only a champion has them: for any other unit the bit set has no defined effect.”SpellIconChanged,which.summonerSlots: “Set where slot names a summoner spell’s slot, clear for the unit’s own spells. Only a champion has summoner slots: a server sets it only for a champion, and for any other unit a client fails.”, where 1.0.0.127 has “Set where the slot counts among the summoner slots, so that 0 and 1 name those two. Only a champion has them: for any other unit the bit set has no defined effect.”SpellIconChanged,icon: “Which icon the spell shows.”, where 1.0.0.127 has “Which icon the spell shows. Any value is accepted.”SpellInSlot,unit: “The unit whose slot this is.”, where 1.0.0.127 has “The unit whose slot this is. A client ignores the message where it does not know the unit.”SpellLevel, its layout: no note, where 1.0.0.127 has “It carries no level: a client raises the spell in the slot by one level each time, to at most 6.”SpellNameChanged,which.summonerSlots: “Set where slot names a summoner spell’s slot, clear for the unit’s own spells. Only a champion has summoner slots: a server sets it only for a champion, and for any other unit a client fails.”, where 1.0.0.127 has “Set where the slot counts among the summoner slots, so that 0 and 1 name those two. Only a champion has them: for any other unit the bit set has no defined effect.”SpellNameChanged,name: “The name the client loads the spell under, ended by a zero byte. A client shows the named spell’s icon in the slot.”, where 1.0.0.127 has “The name the client loads the spell under, ended by a zero byte. A client shows the named spell’s icon in the slot, and treats a name it has no spell for as an error.”SpellNumbers,entryCount: “How many sets of numbers follow.”, where 1.0.0.127 has “How many sets of numbers follow. A client ignores the whole message where they do not all fit in it.”SpellNumbers,entries: “The sets themselves.”, where 1.0.0.127 has “The sets themselves. A client skips a set naming a unit it does not hold.”SpellNumbers,entries[].slot: “Which slot.”, where 1.0.0.127 has “Which slot: 60 to 119 name the unit’s own spell slot, less 60, and 120 and up a summoner slot, less 120, the set skipped for a unit that has none. What 0 to 59 name is not recorded.”SpellOffsetTargetChanged,which.summonerSlots: “Set where slot names a summoner spell’s slot, clear for the unit’s own spells. Only a champion has summoner slots: a server sets it only for a champion, and for any other unit a client fails.”, where 1.0.0.127 has “Set where the slot counts among the summoner slots, so that 0 and 1 name those two. Only a champion has them: for any other unit the bit set has no defined effect.”SpellOffsetTargetChanged,target: “The unit the slot’s targeting indicator works from instead of the caster, while the client holds it; one it does not hold resets this to none.”, where 1.0.0.127 has “The unit the slot’s targeting indicator works from instead of the caster. A client takes an id it does not hold as no unit.”SpellTargetingChanged,which.summonerSlots: “Set where slot names a summoner spell’s slot, clear for the unit’s own spells. Only a champion has summoner slots: a server sets it only for a champion, and for any other unit a client fails.”, where 1.0.0.127 has “Set where the slot counts among the summoner slots, so that 0 and 1 name those two. Only a champion has them: for any other unit the bit set has no defined effect.”SpellTargetingChanged,targeting: “How the spell is aimed.”, where 1.0.0.127 has “How the spell is aimed, 0 to 10. A client keeps a larger value and reports it as an error, but builds no new aiming for it, so the slot keeps the aiming it had; no value asks for the spell’s own default.”SpellUpgraded, its layout: “A client takes it the same on every channel: it sets the slot’s level to level, at most 6, and keeps pointsLeft.”, where 1.0.0.127 has “On any channel a client sets the slot’s level to level, and the unspent spell points to pointsLeft; it raises the spell no further.”SpellUpgraded,level: “The level the spell now stands at.”, where 1.0.0.127 has “The level the spell now stands at. A client takes any level above 6 as 6.”StatisticIncremented,statistic: “Which count. A value past those named has no defined effect.”, where 1.0.0.127 has “Which count, from 0 to 9. A client does not check the range, so a value past 9 has no defined effect; a server sends only those named.”StatsRequest, its layout: no note, where 1.0.0.127 has “A client sends no body.”StopAttack,how.forceStop: “Set to stop the attack outright; keepAnimating, forceCast and destroyMissile still apply, so an attack not yet landed lands first where forceCast is set. Clear, a client may keep the attack going, by the unit’s state and the attack’s own data.”, where 1.0.0.127 has “Set to stop the current cast outright; clear, a client stops the attack the ordinary way.”StopAttack,how.summonerSpell: “Set where the slot stopped is a summoner spell’s.”, where 1.0.0.127 has “Picks which spells the stop applies to: set, the summoner spells; clear, the unit’s own. A unit with no summoner spells, such as any unit that is not a champion, stops nothing when this is set.”SurrenderStatus,reason: “Why the vote stands where it does.”, where 1.0.0.127 has “Why the vote stands where it does. A client acts on 0 to 4 and ignores the message for any other value; 1 resets the vote only where side is the client’s own. A client with no player of its own, as while spectating, shows only 0 and 4.”SurrenderVoteCalled,how.openTheMenu: “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.”, where 1.0.0.127 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 with a player of its own announces that a vote began, with caller, inFavour, against and side.”SwapItems,from: no note, where 1.0.0.127 has “The slot the item leaves, at most 37.”SwapItems,to: no note, where 1.0.0.127 has “The slot it goes to, at most 37. A client never sends the slot named by from.”SwapItemsAnswer,from: “The slot the item left.”, where 1.0.0.127 has “The slot the item left, 0 to 37. A client ignores the message where it is 38 or more.”SwapItemsAnswer,to: “The slot it went to.”, where 1.0.0.127 has “The slot it went to, 0 to 37. A client ignores the message where it is 38 or more.”TeamChanged,unit: “The unit.”, where 1.0.0.127 has “The unit. A client ignores the message where it does not hold it.”TransientAck, its layout: “It is sent for a batch whose values the client dropped as well as for one it took.”, where 1.0.0.127 has “A client sends it for a Replication batch only where it holds every unit the batch names, or the batch names none.”UnitDied, its layout: “Where killer names a unit it knows, a client announces the kill for that unit, then the one kind picks. Where the unit is not already dead, it cancels the unit’s cast and attack, and only where killer is nonzero puts the unit down, by stayDown and standing.”, where 1.0.0.127 has “Where the unit is already dead, a client does nothing with the message, and announces nothing. Otherwise it cancels the unit’s cast and attack; then, only where killer is nonzero, it puts the unit down by stayDown and standing and announces the death, credited to no unit where it does not hold killer. Whatever the unit’s kind adds follows.”UnitDied,damageSource: “Read only for a minion a champion killed, whose kill a client shows another way where it is 7; a server writes zero.”, where 1.0.0.127 has “Unused; a server writes zero.”UnitDied,standing: “Set to leave the unit standing as a husk rather than dead: no time of death, and for a champion no death animation and no death screen. A turret kept after death behaves so whatever this says. Any nonzero value sets it.”, where 1.0.0.127 has “Any nonzero value leaves the unit standing rather than dead. A champion then plays no death animation; minions and turrets play theirs whatever this says.”UnitStopped,syncId: “The unit’s movement count.”, where 1.0.0.127 has “The unit’s movement count. A client drops the message where it is behind the last the unit took by less than 1073741824.”UnitText, its layout: “A client ignores it whenever it is watching a match.”, where 1.0.0.127 has noneUpgradeSpell, its layout: no note, where 1.0.0.127 has “A client takes the point off its own count before it sends this. There is no evolution point.”UpgradeSpell,slot: “Which slot is being raised.”, where 1.0.0.127 has “Which slot is being raised: 0 to 3, for the champion’s own spells, though a client does not hold itself to that range.”UseObject, its layout: “A client also sends it as a unit its champion is attacking changes side (TeamChanged), whether usable or not.”, where 1.0.0.127 has noneVersionSync,agreement: “Nonzero where the build the client runs matches, which a client needs to load; zero has it show both versions and end.”, where 1.0.0.127 has “Must be 1: any other value has the client report a build mismatch and leave. For 0 it also shows both versions.”VersionSync,build: “Which build the server serves. Written out in full and padded with zero bytes to the width above.”, where 1.0.0.127 has “Which build the server serves, shown and not checked. Written out in full and padded with zero bytes to the width above; a client reads it up to the first zero byte.”VoiceEvent,folder: “The event’s folder. It has no effect where kind is 1.”, where 1.0.0.127 has “The event’s folder.”VoiceEvent,event: “The event’s name; for kind 1, the conversation’s.”, where 1.0.0.127 has “The event’s name.”VoiceEvent,callback: “For kind 0, nonzero asks the client to send VoiceEventDone once the event has played. A client sends it at once where it cannot play the event, whatever this holds.”, where 1.0.0.127 has “Nonzero asks the client to send VoiceEventDone once the event has played. A client sends it at once where it cannot play the event, whatever this holds.”VoiceEvent,handle: “For kind 0, a number a client returns in VoiceEventDone; for kind 1, the champion.”, where 1.0.0.127 has “A number a client returns in VoiceEventDone.”VoiceOverride,flags: “Whether to reset. A client compares the whole byte with 1, so a server writes the other bits zero.”, where 1.0.0.127 has “Whether to reset. The whole byte is read, and a name follows any value other than 1, so a server sends only 0 or 1.”WaypointAck, its layout: “It lists the units the group asked it to relocate.”, where 1.0.0.127 has “What a client sends for every WaypointGroup it takes, and for every WaypointGroupAtSpeed. The header names no object: it carries zero. It lists the units the group asked it to relocate.”WaypointAck,syncId: “Which group is being acknowledged, as the group named itself.”, where 1.0.0.127 has “The number of the group it answers, as the group named itself.”WaypointAck,relocationCount: “How many relocations follow. Answering WaypointGroup a client counts them; answering a path for one unit it sends only syncId and this byte, unwritten, on the transient channel, and no relocations, so a server reads nothing in it there.”, where 1.0.0.127 has “How many relocations follow: answering a group, how many of its paths carried a teleport token. Answering a path for one unit, a client sends only syncId and this byte, unwritten, on the transient channel, and no relocations, so a server reads nothing in it there.”WaypointAck,relocations: no note, where 1.0.0.127 has “Each of those, in the group’s order.”WaypointGroup, its layout: no note, where 1.0.0.127 has “What a server sends to set units walking paths, which each walks at its own speed.”WaypointGroup,syncId: “Names this group. A client returns it to say the group arrived.”, where 1.0.0.127 has “The number of this statement; a client applies a path to a unit only where it is not behind the last the unit took. A client returns it in WaypointAck to say the group arrived.”WaypointGroup,movementCount: “How many units the group moves. A client reads it as signed, so a count above 32767 carries none.”, where 1.0.0.127 has “How many paths follow, one for each unit. A client reads it as signed, so a count above 32767 counts as none, as zero does, and a client still answers.”WaypointGroup,movements: no note, where 1.0.0.127 has “One path for each unit.”WaypointGroupAtSpeed, its layout: no note, where 1.0.0.127 has “A client answers each with WaypointAck, naming this sync id and listing, in order, each unit whose path carried a teleport token with that token.”WaypointGroupAtSpeed,movementCount: “How many units follow. A client reads it as signed, so a count above 32767 carries none.”, where 1.0.0.127 has “How many units follow. A client reads it as signed, so a count above 32767 counts as none, as zero does.”
1.0.0.129
Client builds from 1.0.0.129 up to, not including, 1.0.0.130. Patch notes: V1.0.0.129.
| Build checked | Passed | Failed | Skipped | Commit | Date |
|---|---|---|---|---|---|
| 1.0.0.129 | 10 | 0 | 4 | 131f0e8 | 2026-10-31 |
Every message of this range (214)
Against 1.0.0.128
Where a build from 1.0.0.129 up to, not including, 1.0.0.130 differs from one from 1.0.0.128 up to, not including, 1.0.0.129. Anything not named here is the same in both.
In 1.0.0.129, not in 1.0.0.128
| Message | Sent by | Command | What it does |
|---|---|---|---|
TargetableChanged | server | 243 on events | Change whether a unit can be aimed at, and by which sides |
Laid out differently
ClientEvent(vectors: buff-on-1-0-0-129, consumable-bought-on-1-0-0-129, critical-strike-on-1-0-0-129, damage-dealt-on-1-0-0-129, damage-taken-on-1-0-0-129, death-assist-on-1-0-0-129, died-on-1-0-0-129, gold-earned-on-1-0-0-129, gold-spent-on-1-0-0-129, heal-cast-on-1-0-0-129, heal-on-1-0-0-129, item-bought-on-1-0-0-129, killing-spree-on-1-0-0-129, one-on-1-0-0-129)eventtakes 81 startNoticeThree, 82 startNoticeFour, 83 startNoticeFive, 84 alert, 85 scoreboardOpened, 88 pointANeutralized, 89 pointBNeutralized, 90 pointCNeutralized, 91 pointDNeutralized, 92 pointENeutralized, 93 pointACaptured, 94 pointBCaptured, 95 pointCCaptured, 96 pointDCaptured, 97 pointECaptured in 1.0.0.129 and not in 1.0.0.128.eventtakes 81 alert, 82 scoreboardOpened, 85 pointANeutralized, 86 pointBNeutralized, 87 pointCNeutralized, 88 pointDNeutralized, 89 pointENeutralized, 90 pointACaptured, 91 pointBCaptured, 92 pointCCaptured, 93 pointDCaptured, 94 pointECaptured in 1.0.0.128 and not in 1.0.0.129.
CreateTurretstateis in 1.0.0.129 (1-byte bits), aftername, and not in 1.0.0.128.targetableToTeamis in 1.0.0.129 (u32), afterstate, and not in 1.0.0.128.
DeathHistory(vectors: one-on-1-0-0-129)entries[].eventtakes 81 startNoticeThree, 85 scoreboardOpened in 1.0.0.129 and not in 1.0.0.128.entries[].eventtakes 82 scoreboardOpened in 1.0.0.128 and not in 1.0.0.129.
SpawnPet(vectors: one-on-1-0-0-129)nameis text, 32 bytes in 1.0.0.128 and text, 128 bytes in 1.0.0.129.
SpawnUnitflagshastargetableat bit 3 in 1.0.0.129, and not in 1.0.0.128.flags.unusedis at bit 3, 5 bits wide, in 1.0.0.128 and at bit 4, 4 bits wide, in 1.0.0.129.targetableToTeamis in 1.0.0.129 (u32), afterflags, and not in 1.0.0.128.
VersionSyncteamNameis in 1.0.0.129 (text, 25 bytes), aftermode, and not in 1.0.0.128.teamTagis in 1.0.0.129 (text, 7 bytes), afterteamName, and not in 1.0.0.128.otherTeamNameis in 1.0.0.129 (text, 25 bytes), afterteamTag, and not in 1.0.0.128.otherTeamTagis in 1.0.0.129 (text, 7 bytes), afterotherTeamName, and not in 1.0.0.128.metricsHostis in 1.0.0.129 (text, 1024 bytes), afterotherTeamTag, and not in 1.0.0.128.metricsPathis in 1.0.0.129 (text, 1024 bytes), aftermetricsHost, and not in 1.0.0.128.metricsPortis in 1.0.0.129 (u16), aftermetricsPath, and not in 1.0.0.128.reportingis in 1.0.0.129 (1-byte bits), aftermetricsPort, and not in 1.0.0.128.
WorldEvent(vectors: buff-on-1-0-0-129, consumable-bought-on-1-0-0-129, critical-strike-on-1-0-0-129, damage-dealt-on-1-0-0-129, damage-taken-on-1-0-0-129, death-assist-on-1-0-0-129, died-on-1-0-0-129, gold-earned-on-1-0-0-129, gold-spent-on-1-0-0-129, heal-cast-on-1-0-0-129, heal-on-1-0-0-129, item-bought-on-1-0-0-129, killing-spree-on-1-0-0-129, one-on-1-0-0-129)eventtakes 81 startNoticeThree, 85 scoreboardOpened in 1.0.0.129 and not in 1.0.0.128.eventtakes 82 scoreboardOpened in 1.0.0.128 and not in 1.0.0.129.
Only notes
These read the same on the wire, and only their notes change. What each says in 1.0.0.129:
Damage,source: “The unit dealing it. A client shows nothing, notices included, unless it holds both target and source; the figure drifts from source toward target, and a champion source has the amount added to its damage dealt.”, where 1.0.0.128 has “The unit dealing it. A client shows nothing, notices included, unless it holds both target and source and target can be attacked; the figure drifts from source toward target, and a champion source has the amount added to its damage dealt.”MatchIdentity,name: “The player’s name, padded with zero bytes.”, where 1.0.0.128 has “The player’s name, padded with zero bytes. A client reads nothing of it.”Resumed,clientId: “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.”, where 1.0.0.128 has “The client id of the player who resumed the match, announced in chat by the name the client’s list of players gives it, where afterCountdown is clear: to a player in the colour of an ally where the resumer is on its side and of an enemy otherwise, and to a client watching the match in the resumer’s side’s colour. 4294967295 announces no one.”