Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Effects and looks

The lasting effects units carry, the particles a client draws, and how units look and move on screen. None of this changes what a unit can do; that is replication’s to say.

Lasting effects

A lasting effect sits in one of a unit’s effect slots and shows on its icon row. A server puts one on with EffectAdded, replaces the one in a slot with EffectReplaced, restates how many are stacked with EffectCount, and takes it off with EffectRemoved. The unit carrying an effect can differ from the unit that cast it. A server can do each of these for several units at once (EffectAddedGroup, EffectReplacedGroup, EffectCountGroup, EffectRemovedGroup), and set the number an effect shows on its icon with EffectCounter.

Particles

ParticlesCreated starts a client drawing particles, and KillParticle stops one. A server can also pause or resume a named group of emitters with EmitterPause, and drive a value of a unit’s lasting particles from something that changes, such as a capture point or the unit’s resource, with ParticleSource.

ParticlesCreated starts sets of particles, each named by its own id.

In 3.02–3.04

A client takes EmitterPause as a ChatAllowance, the first four bytes of the group’s name standing as the lines left. A server MUST NOT send EmitterPause.

Looks and animation

A server lays a new look over a unit’s own with AppearancePushed; looks stack, the newest showing, and AppearancePopped and AppearanceCleared take them away. AnimationOverrides has a unit play one set of movements wherever it would have played another.

A server can also:

Messages

Each message of this system in this book, with each layout it has across the book’s patches and every note its definition carries. A layout is the message’s body, after the header its channel’s family puts in front (see Messages).

EffectAdded

What a server sends to put a lasting effect on a unit. The header names the unit carrying the effect, which can differ from the caster named inside.

Definition.

In every range of this book

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

FieldTypeWhat it is
slotu8Which of the unit’s effect slots it sits in.
kindu8What sort of effect it is.
countu8How many of it are stacked there.
hiddenu8Whether the client keeps it off the unit’s display. Values: 0 shown, 1 hidden.
effectu32Which effect, by the number its name gives, as Objects and identifiers works it out.
packageu32Which set of art and sound the client draws it with.
runningForf32How long it has already run, in seconds.
lastsf32How long it runs in total, in seconds.
casteru32The unit that put it there.
Vectors (3)

a-third-on-3-15, another-on-3-15, one-on-3-15

EffectReplaced

What a server sends about a lasting effect in a slot that already holds one. The header names the unit carrying the effect, which can differ from the caster named inside.

Definition.

In every range of this book

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

It puts a lasting effect in the slot, keeping the slot rather than taking the old one off first.

FieldTypeWhat it is
slotu8Which of the unit’s effect slots.
runningForf32How long the effect has already run, in seconds.
lastsf32How long it runs in total, in seconds.
casteru32The unit that put it there.

EffectCount

What a server sends to restate how many of a lasting effect are stacked on a unit. The header names the unit this is about.

Definition.

In every range of this book

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

FieldTypeWhat it is
slotu8Which slot.
countu8How many are stacked there now.
timeLeftf32How long it has left to run, in seconds. With runningFor it adds up to the whole run the effect was added with.
runningForf32How long it has already run, in seconds.
casteru32The unit that put it there.

EffectRemoved

What a server sends to take a lasting effect off a unit. The header names the unit this is about.

Definition.

In every range of this book

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

FieldTypeWhat it is
slotu8Which slot it sat in.
effectu32Which effect, by the number its name gives, as Objects and identifiers works it out.
timeLeftf32How long the effect had left to run when it was taken off, in seconds.
Vectors (1)

one-on-3-15

EffectAddedGroup

What a server sends to put one effect on several units at once. The header names no object it acts on: the units are listed below.

Definition.

In every range of this book

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

FieldTypeWhat it is
kindu8What sort of effect it is.
effectu32Which effect, by the number its name gives.
packageu32Which set of art and sound the client draws it with.
runningForf32How long it has already run, in seconds.
lastsf32How long it runs in total, in seconds.
countu8How many units follow.
entriescount in count × recordThe units, one place each.
entries[].unitu32The unit carrying the effect.
entries[].casteru32The unit that put it there.
entries[].slotu8Which of the unit’s effect slots it sits in.
entries[].stacksu8How many are stacked there.
entries[].hiddenu8Whether the client keeps it off the unit’s display.

EffectReplacedGroup

What a server sends about the effect in one slot of several units at once. The header names no object it acts on: the units are listed below.

Definition.

In every range of this book

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

It replaces one effect with another on each unit.

FieldTypeWhat it is
runningForf32How long the effect has already run, in seconds.
lastsf32How long it runs in total, in seconds.
countu8How many units follow.
entriescount in count × recordThe units, one place each.
entries[].unitu32The unit carrying the effect.
entries[].casteru32The unit that put it there.
entries[].slotu8Which of the unit’s effect slots.

EffectCountGroup

What a server sends to restate how many of an effect are stacked on several units at once. The header names no object it acts on: the units are listed below.

Definition.

In every range of this book

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

FieldTypeWhat it is
lastsf32How long the effect runs in total, in seconds.
runningForf32How long it has already run, in seconds.
countu8How many units follow.
entriescount in count × recordThe units, one place each.
entries[].unitu32The unit carrying the effect.
entries[].casteru32The unit that put it there.
entries[].slotu8Which of the unit’s effect slots it sits in.
entries[].stacksu8How many are stacked there now.
Vectors (2)

another-on-3-15, one-on-3-15

EffectRemovedGroup

What a server sends to take one effect off several units at once. The header names no object it acts on: the units are listed below.

Definition.

In every range of this book

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

FieldTypeWhat it is
effectu32Which effect, by the number its name gives.
countu8How many units follow.
entriescount in count × recordThe units, one place each.
entries[].unitu32The unit carrying the effect.
entries[].slotu8Which slot it sat in.
entries[].timeLeftf32How long it had left to run, in seconds.
Vectors (2)

another-on-3-15, one-on-3-15

EffectCounter

What a server sends to set the number an effect shows on its icon. The header names the unit carrying the effect.

Definition.

In 3.9–3.15

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

FieldTypeWhat it is
slotu8Which of the unit’s effect slots.
counteri32The number.

ParticlesCreated

What a server sends to start drawing sets of particles. The header names no object: it carries zero.

Definition.

In every range of this book

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

FieldTypeWhat it is
groupCountu8How many sets follow.
groupscount in groupCount × ParticleGroupThe sets themselves.
Vectors (5)

one-on-3-8, one-on-3-11, a-third-on-3-15, another-on-3-15, one-on-3-15

KillParticle

What a server sends to stop a particle a client is drawing.

Definition.

In every range of this book

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

The header names the particle.

FieldTypeWhat it is
particleu32The particle to stop.

EmitterPause

What a server sends to pause or resume a named group of particle emitters. The header carries no object this acts on.

Definition.

In every range of this book

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

FieldTypeWhat it is
grouptext, 256 bytesThe group’s name, padded with zero bytes.
operationu32Nonzero to pause the emission, zero to resume it.
groupOperationu8What to do with the group. A client acts on 0 only, pausing or resuming the group’s emission, and does nothing for any other value. Values: 0 emission.
Vectors (1)

one-on-3-15

ParticleSource

What a server sends to drive a value of the lasting particle effects on a unit from something that changes. A client ignores it where the id names no unit it knows. The header carries zero.

Definition.

In every range of this book

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

FieldTypeWhat it is
unitu32The unit: a champion, minion, turret or other unit.
slotu8Which of the effects’ inputs to drive.
pointu8Which point, for source 0. It has no effect unless source is 0.
sourceu8What drives it. Any other value drives it from nothing. Values: 0 capturePoint, 1 resource, 2 resourceSmoothed.
Vectors (1)

one-on-3-15

AppearancePushed

What a server sends to lay a new look over a unit’s own. The header names the unit.

Definition.

In 3.01–3.5

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

A client stops a basic attack the unit is making first. Looks stack: the newest shows, and AppearancePopped takes away the one its entry names. An animated building instead looks for a look of the same name whose skin equals entry, adds the look under skin where it finds none, and how has no effect on it.

FieldTypeWhat it is
entryu32Names this look, so that AppearancePopped can name it.
how1-byte bitsWhat the look changes.
how.overrideSpellsbit 0Set where the unit’s spells change with it.
how.modelOnlybit 1Set where only the model changes.
how.unusedbit 2 to 7Unused; a server writes zero.
assettext, ended by a zero byteThe name the client loads it under, ended by a zero byte. The name and its zero byte take at most 64 bytes.
Vectors (1)

one-on-3-5

In 3.6–3.11

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

A client stops a basic attack the unit is making first. Looks stack: the newest shows, and AppearancePopped takes away the one its entry names. An animated building instead looks for a look of the same name whose skin equals entry, adds the look under skin where it finds none, and how has no effect on it.

FieldTypeWhat it is
entryu32Names this look, so that AppearancePopped can name it.
how1-byte bitsWhat the look changes.
how.overrideSpellsbit 0Set where the unit’s spells change with it.
how.modelOnlybit 1Set where only the model changes.
how.unusedbit 2 to 7Unused; a server writes zero.
skini32Which look; -1 keeps the unit’s own skin.
assettext, ended by a zero byteThe name the client loads it under, ended by a zero byte. The name and its zero byte take at most 64 bytes.
Vectors (1)

one-on-3-11

In 3.12–3.15

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

A client stops a basic attack the unit is making first. Looks stack: the newest shows, and AppearancePopped takes away the one its entry names. An animated building instead looks for a look of the same name whose skin equals entry, adds the look under skin where it finds none, and how has no effect on it.

FieldTypeWhat it is
entryu32Names this look, so that AppearancePopped can name it.
how1-byte bitsWhat the look changes.
how.overrideSpellsbit 0Set where the unit’s spells change with it.
how.modelOnlybit 1Set where only the model changes.
how.replacePackagebit 2Set where its art and sound change with it.
how.unusedbit 3 to 7Unused; a server writes zero.
skini32Which look; -1 keeps the unit’s own skin.
assettext, ended by a zero byteThe name the client loads it under, ended by a zero byte. The name and its zero byte take at most 64 bytes.
Vectors (2)

another-on-3-15, one-on-3-15

AppearancePopped

What a server sends to take a look AppearancePushed laid over a unit away. The header names the unit.

Definition.

In every range of this book

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

FieldTypeWhat it is
entryu32The look, by the name AppearancePushed gave it.

AppearanceCleared

What a server sends to take every look laid over a unit away. The header names the unit.

Definition.

In every range of this book

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

No body.

Vectors (2)

another-on-3-15, one-on-3-15

AnimationOverrides

What a server sends to make a unit play one set of movements wherever it would have played another. The header names the unit this is about.

Definition.

In every range of this book

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

FieldTypeWhat it is
pairCountu8How many pairs follow.
pairscount in pairCount × AnimationOverrideEach pair naming what is replaced and what replaces it.

PlayAnimation

What a server sends to make a unit play an animation. The header names the unit.

Definition.

In 3.01–3.6

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

A unit playing a locked animation ignores the message. A client stops any emote playing first, and plays at normal speed.

FieldTypeWhat it is
flags4-byte bitsHow the animation plays.
flags.loopbit 0Set to loop it.
flags.holdLastFramebit 1Set to hold its last frame once it ends.
flags.queuebit 2Set to play it once the animation playing ends, rather than now.
flags.queueLastbit 3Set to play it after every animation already waiting.
flags.replaceablebit 4Set to let the next animation queued after it start at once.
flags.lockedbit 5Set where the unit ignores this message while the animation plays.
flags.noBlendbit 6Set to switch to it at once rather than blend in.
flags.lockedFromIdlebit 7Set where idle animations cannot fade it out.
flags.reservedbit 8What it does is not recorded for this range; a server writes zero.
flags.unusedbit 9 to 31Unused; a server writes zero.
scaleTimef32Where above zero, how many seconds the animation is stretched or squeezed to last.
startProgressf32Where above zero, how far into the animation it starts, as a fraction from 0 to 1.
animationtext, ended by a zero byteThe animation’s name, ended by a zero byte, the two taking at most 64 bytes. Nothing plays for a name the unit does not have.
Vectors (1)

one-on-3-6

In 3.7–3.14

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

A client ignores scaleTime and startProgress, and plays at normal speed from the start. A unit holding a locked animation ignores the message. An animated building plays at normal speed, and keepEmotes has no effect on it.

FieldTypeWhat it is
flags4-byte bitsHow the animation plays.
flags.lockedbit 0Set where no other animation can fade this one out.
flags.lockedFromIdlebit 1Set where idle animations cannot fade it out. It has no effect where locked is set.
flags.noBlendbit 2Set to switch to it at once rather than blend in.
flags.holdLastFramebit 3Where a non-looping animation ends, it stays on its last frame. Whether an animation loops comes from the animation’s own data.
flags.keepEmotesbit 4Set to let an emote playing go on; clear stops it.
flags.unusedbit 5 to 31Unused; a server writes zero.
scaleTimef32A scale on how long it plays. A client ignores it.
startProgressf32How far into the animation it starts. A client ignores it.
animationtext, ended by a zero byteThe animation’s name, ended by a zero byte, the two taking at most 64 bytes. Nothing plays for a name the unit does not have.
Vectors (2)

another-on-3-14, one-on-3-14

In 3.15

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

scaleTime and startProgress are applied only where above zero. A unit holding a locked animation ignores the message. An animated building plays at normal speed, and keepEmotes has no effect on it.

FieldTypeWhat it is
flags4-byte bitsHow the animation plays.
flags.lockedbit 0Set where no other animation can fade this one out.
flags.lockedFromIdlebit 1Set where idle animations cannot fade it out. It has no effect where locked is set.
flags.noBlendbit 2Set to switch to it at once rather than blend in.
flags.holdLastFramebit 3Where a non-looping animation ends, it stays on its last frame. Whether an animation loops comes from the animation’s own data.
flags.keepEmotesbit 4Set to let an emote playing go on; clear stops it.
flags.unusedbit 5 to 31Unused; a server writes zero.
scaleTimef32A scale on how long it plays.
startProgressf32How far into the animation it starts.
animationtext, ended by a zero byteThe animation’s name, ended by a zero byte, the two taking at most 64 bytes. Nothing plays for a name the unit does not have.
Vectors (2)

another-on-3-15, one-on-3-15

StopAnimation

What a server sends to stop an animation a unit is playing. The header names the unit.

Definition.

In every range of this book

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

FieldTypeWhat it is
flags1-byte bitsHow it stops.
flags.fadebit 0Set where the animation fades out.
flags.ignoreLockbit 1Set where a lock on the animation is ignored.
flags.stopAllbit 2Set where every animation stops when the name below is empty.
flags.unusedbit 3 to 7Unused; a server writes zero.
animationtext, ended by a zero byteThe animation’s name, ended by a zero byte, or empty.

PauseAnimation

What a server sends to pause or resume a unit’s animation. The header names the unit.

Definition.

In every range of this book

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

FieldTypeWhat it is
state1-byte bitsWhether to pause.
state.pausedbit 0Set to pause, clear to resume.
state.unusedbit 1 to 7Unused; a server writes zero.

AnimationAdvanced

What a server sends to move an animation a unit is playing forward at once. The header names the unit. Where the unit plays no animation of that name, nothing happens.

Definition.

In 3.6–3.15

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

FieldTypeWhat it is
secondsf32How far forward, in seconds.
animationtext, 64 bytesThe animation’s name. It ends at its first zero byte.

FadeTo

What a server sends to fade a unit towards an opacity over time. The header names the unit.

Definition.

In every range of this book

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

FieldTypeWhat it is
fadei16Names this fade, so that FadeRemoved can name it.
timef32How long the fade takes, in seconds.
targetf32The opacity it fades to, from 0 for unseen to 1 for solid.
Vectors (2)

another-on-3-15, one-on-3-15

FadeRemoved

What a server sends to undo a fade on a unit. The header names the unit.

Definition.

In every range of this book

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

FieldTypeWhat it is
fadei16The fade, by the name FadeTo gave it.

FadeMinions

What a server sends to fade one side’s minions. The header carries zero.

Definition.

In every range of this book

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

FieldTypeWhat it is
sideu8Which side, or zero for both.
amountf32The opacity they fade to, from 0 for unseen to 1 for solid.
timef32How long the fade takes, in seconds.
Vectors (2)

another-on-3-15, one-on-3-15

NexusIdle

What a server sends to put each nexus into its idle particles. The header carries zero.

Definition.

In every range of this book

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

No body.

NexusSkin

What a server sends to change how one side’s nexus looks. The header carries zero.

Definition.

In every range of this book

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

FieldTypeWhat it is
sideu8Which side.
skinu32Which look.

ScreenTint

What a server sends to tint a side’s screens, or to take a tint away. The header names no object: a server writes zero.

Definition.

In every range of this book

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

FieldTypePresent whenWhat it is
fadeInu81 brings a tint in, and the colour and weight below follow; 0 takes it away, and they do not.
timef32How long the change takes, in seconds.
sidei32Which side sees it.
colouru32fadeIn setThe tint, as blue, green, red and opacity bytes.
weightf32fadeIn setHow strongly it applies at most.
Vectors (4)

another-on-3-11, one-on-3-11, clearing-on-3-15, one-on-3-15

VoiceOverride

What a server sends to change or reset the voice a unit speaks with. The header names the unit.

Definition.

In every range of this book

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

FieldTypePresent whenWhat it is
flags1-byte bitsWhether to reset.
flags.resetbit 0Set where the unit returns to its own voice; no name follows.
flags.unusedbit 1 to 7Unused; a server writes zero.
voicetext, ended by a zero byteflags.reset = 0The voice’s name, ended by a zero byte.
Vectors (2)

another-on-3-11, one-on-3-11