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.

In 0.8.13.26–0.9.22.13

ParticlesCreated starts one particle, named by the message’s own id.

In 0.9.25.24–1.0.0.24

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

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.

AppearancePopped takes away every look laid over the unit’s own, not only the newest.

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 0.8.13.26–0.9.22.13

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

FieldTypeWhat it is
slotu8Which of the unit’s effect slots it sits in. A client fails where it is above 31.
kindu8What sort of effect it is.
countu8How many of it are stacked there.
effectu32Which effect, by the number its name gives, as Objects and identifiers works it out. A client adds nothing for an effect it does not know.
lastsf32How long it runs in total, in seconds.
casteru32The unit that put it there.
Vectors (1)

one-on-0-8-13-26

In 0.9.22.14–1.0.0.24

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

FieldTypeWhat it is
slotu8Which of the unit’s effect slots it sits in. A client fails where it is above 31.
kindu8What sort of effect it is.
countu8How many of it are stacked there.
effectu32Which 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.
runningForf32How long it has already run, in seconds.
lastsf32How long it runs in total, in seconds.
casteru32The unit that put it there.

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 0.8.13.26–0.9.25.20

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

FieldTypeWhat it is
slotu8Which of the unit’s effect slots. A client fails where it is above 31.
lastsf32How long it runs from now, in seconds. A client applies a value below zero as given.
casteru32The unit that put it there. Where the client holds no such unit, it leaves the effect with no caster.
Vectors (1)

one-on-0-9-22-16

In 0.9.25.21–1.0.0.24

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

FieldTypeWhat it is
slotu8Which of the unit’s effect slots. A client fails where it is above 31.
runningForf32How long the effect has already run, in seconds.
lastsf32How long it runs in total, in seconds. A client applies a value below zero as given; a server sends zero or more.
casteru32The unit that put it there. Where the client holds no such unit, it leaves the effect with no caster.

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

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
0.8.13.26–0.9.22.1383
0.9.22.14–1.0.0.2480
FieldTypeWhat it is
slotu8Which slot. A client fails where it is above 31.
countu8How many are stacked there now.
timeLeftf32How long it has left to run, in seconds.
casteru32The unit that put it there. Where the client holds no such unit, it leaves the effect with no caster.
Vectors (1)

one-on-0-8-13-26

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 39 on events, sent by the server, reliable.

FieldTypeWhat it is
slotu8Which slot it sat in. A client fails where it is above 31.
effectu32Which effect, by the number its name gives, as Objects and identifiers works it out.

ParticlesCreated

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

Definition.

In 0.8.13.26–0.9.22.13

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

One particle, made from its effect’s name.

FieldTypeWhat it is
particleu32The name this particle answers to, so later messages can name it.
flagsu16Bit 3 set hangs the particle off neither boundTo nor target. Bit 2 set, where boundTo is given, has the particle take its scale from boundTo. Bit 0 sets a further option of the particle’s. A server writes the others zero.
unknownbytes, 12Passed to the particle as it is made; what it holds is not recorded.
boundTou32The unit the particle hangs off, or zero.
effecttext, 64 bytesThe effect’s name. A client fails where it is empty, and still makes a particle for a name it does not know. Written out in full and padded with zero bytes to the width above.
unknownBu32The point on boundTo the particle hangs from.
atXf32Where it starts, along one ground axis, in world units; used only where target is zero.
atYf32Its height.
atZf32Along the other ground axis.
targetu32The unit the particle is aimed at, or zero.
unknownCu32The point on target the particle is aimed at.
Vectors (1)

one-on-0-8-13-26

In 0.9.22.14–1.0.0.24

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

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

one-on-0-9-22-14

KillParticle

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

Definition.

In every range of this book

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

The particle field alone names the particle; the header can carry zero.

FieldTypeWhat it is
particleu32The particle to stop.

AppearancePushed

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

Definition.

In 0.8.13.26–0.9.22.13

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

No skin is carried; the look wears the unit’s own skin. Looks stack, the newest shows, and AppearancePopped takes away the one its entry names.

FieldTypeWhat it is
entryu32Names this look, so that AppearancePopped can name it.
assettext, ended by a zero byteThe name the client loads it under, ended by a zero byte.
Vectors (1)

one-on-0-8-13-26

In 0.9.22.14–0.9.25.35

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

No skin is carried; while any pushed look is in force, the newest shows with skin 0, and nothing changes where its name is that of the look already shown. A client first stops a basic attack the unit is making; looks stack, and AppearancePopped takes away the one its entry names.

FieldTypeWhat it is
entryu32Names this look, so that AppearancePopped can name it.
assettext, ended by a zero byteThe name the client loads it under, ended by a zero byte.
Vectors (1)

one-on-0-9-25-24

In 0.9.25.36–1.0.0.24

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

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.

FieldTypeWhat it is
entryu32Names this look, so that AppearancePopped can name it.
overrideSpellsu8Set where the unit’s spells change with it. Any nonzero value sets it.
assettext, ended by a zero byteThe name the client loads it under, ended by a zero byte.

AppearancePopped

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

Definition.

In 0.8.13.26–0.9.22.13

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

A client also takes away every look laid over the unit on this command, so the unit is left with no look laid over it.

FieldTypeWhat it is
entryu32The look, by the name AppearancePushed gave it.
Vectors (1)

one-on-0-8-13-26

In 0.9.22.14–1.0.0.24

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

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.

FieldTypeWhat it is
entryu32The look, by the name AppearancePushed gave it.
Vectors (1)

one-on-0-9-22-14

PlayAnimation

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

Definition.

In 0.8.13.26–0.9.22.13

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

Every play blends in over a blend time of 0.2 seconds. Without loop or holdLastFrame, an animation that ends is removed, except that where it was the unit’s only animation and the unit has an idle, a client fades back to the idle, looping. No start point is carried: the animation starts from its beginning.

FieldTypeWhat it is
flags4-byte bitsHow the animation plays, as a set of bits.
flags.unusedLowbit 0Unused; a server writes zero.
flags.loopbit 1Set to loop the animation: it starts over once it ends.
flags.holdLastFramebit 2Set to hold the last frame once the animation ends; it stops advancing there. Wins over loop.
flags.fadeOthersbit 3Set to freeze the animations already playing and fade them to nothing over the blend time. They are not removed.
flags.freezeOthersbit 4Set to freeze the animations already playing, fade them out over the blend time, then remove them.
flags.dropOthersbit 5Set to remove the animations already playing at once, with no fade.
flags.unusedbit 6 to 31Unused; a server writes zero.
scaleTimef32Where above zero, how many seconds the animation is stretched or squeezed to span; otherwise it plays at normal speed.
animationtext, ended by a zero byteThe animation’s name, ended by a zero byte. Nothing plays for a name the unit does not have.
Vectors (1)

one-on-0-8-13-26

In 0.9.22.14–1.0.0.24

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

Every play blends in over a blend time of 0.2 seconds. Without loop or holdLastFrame, an animation that ends is removed, except that where it was the unit’s only animation and the unit has an idle, a client fades back to the idle, looping. No start point is carried: the animation starts from its beginning. A unit whose animation has been locked ignores the message.

FieldTypeWhat it is
flags4-byte bitsHow the animation plays, as a set of bits.
flags.unusedLowbit 0Unused; a server writes zero.
flags.loopbit 1Set to loop the animation: it starts over once it ends.
flags.holdLastFramebit 2Set to hold the last frame once the animation ends; it stops advancing there. Wins over loop.
flags.fadeOthersbit 3Set to freeze the animations already playing and fade them to nothing over the blend time. They are not removed.
flags.freezeOthersbit 4Set to freeze the animations already playing, fade them out over the blend time, then remove them.
flags.dropOthersbit 5Set to remove the animations already playing at once, with no fade.
flags.lockedbit 6Set to lock the unit’s animation: once the animation plays, a client refuses every later animation played on the unit, unless the unit’s own character data opts out.
flags.fadeAtEndbit 7Only where loop is clear: set to start fading the animation out once its time left is at or below the blend time.
flags.unusedbit 8 to 31Unused; a server writes zero.
scaleTimef32Where above zero, how many seconds the animation is stretched or squeezed to span; otherwise it plays at normal speed.
animationtext, ended by a zero byteThe animation’s name, ended by a zero byte. Nothing plays for a name the unit does not have.
Vectors (1)

one-on-0-9-22-14

StopAnimation

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

Definition.

In 0.8.13.26–0.9.22.13

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

No name or time is carried, and the body has no effect: a client stops the same animation of the unit’s that an arriving cast stops.

FieldTypeWhat it is
flags4-byte bitsA client reads nothing here.
flags.unusedLowbit 0 to 5A client ignores these; a server sends zero.
flags.unlockbit 6Unused; a server writes zero.
flags.unusedHighbit 7 to 31A client ignores these; a server sends zero.
Vectors (1)

one-on-0-8-13-26

In 0.9.22.14–1.0.0.24

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

No name is carried. A client does nothing for a dead unit; otherwise it stops the animation the unit is playing, blending out over a fixed time, unless the unit’s animation lock stays held.

FieldTypeWhat it is
flags4-byte bitsHow it stops.
flags.unusedLowbit 0 to 5A client ignores these; a server sends zero.
flags.unlockbit 6Set to release the unit’s animation lock in every case. Clear releases it only where the unit’s own data allows; where the lock stays held, the animation does not stop.
flags.unusedHighbit 7 to 31A client ignores these; a server sends zero.

FadeTo

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

Definition.

In 0.9.22.14–1.0.0.24

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
0.9.22.14–0.9.25.35137
0.9.25.36–1.0.0.24136
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 (1)

one-on-0-9-25-24

FadeRemoved

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

Definition.

In 0.9.22.14–1.0.0.24

Carried on events, sent by the server, reliable, under these commands:

BuildsCommand
0.9.22.14–0.9.25.35138
0.9.25.36–1.0.0.24137
FieldTypeWhat it is
fadei16The fade, by the name FadeTo gave it. A client does nothing where no fade on the unit has that name.
Vectors (1)

one-on-0-9-25-24

FadeMinions

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

Definition.

In 0.9.25.36–1.0.0.24

Command 174 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.

NexusIdle

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

Definition.

In 0.9.25.36–1.0.0.24

Command 173 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 0.9.25.36–1.0.0.24

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

FieldTypeWhat it is
sideu8Which side.
skinu32Which look.