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
ParticlesCreatedstarts one particle, named by the message’s own id.
In 0.9.25.24–1.0.0.24
ParticlesCreatedstarts 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:
- play, stop, pause and advance a unit’s animations (
PlayAnimation,StopAnimation,PauseAnimation,AnimationAdvanced); - fade a unit or a side’s minions (
FadeTo,FadeRemoved,FadeMinions); - set how each nexus looks (
NexusIdle,NexusSkin); - tint a side’s screens (
ScreenTint); - change the voice a unit speaks with (
VoiceOverride).
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.
In 0.8.13.26–0.9.22.13
Command 37 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| slot | u8 | Which of the unit’s effect slots it sits in. A client fails where it is above 31. |
| kind | u8 | What sort of effect it is. |
| count | u8 | How many of it are stacked there. |
| effect | u32 | Which 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. |
| lasts | f32 | How long it runs in total, in seconds. |
| caster | u32 | The unit that put it there. |
Vectors (1)
In 0.9.22.14–1.0.0.24
Command 37 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| slot | u8 | Which of the unit’s effect slots it sits in. A client fails where it is above 31. |
| kind | u8 | What sort of effect it is. |
| count | u8 | How many of it are stacked there. |
| effect | u32 | 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. |
| runningFor | f32 | How long it has already run, in seconds. |
| lasts | f32 | How long it runs in total, in seconds. |
| caster | u32 | The 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.
In 0.8.13.26–0.9.25.20
Command 38 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| slot | u8 | Which of the unit’s effect slots. A client fails where it is above 31. |
| lasts | f32 | How long it runs from now, in seconds. A client applies a value below zero as given. |
| caster | u32 | The unit that put it there. Where the client holds no such unit, it leaves the effect with no caster. |
Vectors (1)
In 0.9.25.21–1.0.0.24
Command 38 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| slot | u8 | Which of the unit’s effect slots. A client fails where it is above 31. |
| runningFor | f32 | How long the effect has already run, in seconds. |
| lasts | f32 | How long it runs in total, in seconds. A client applies a value below zero as given; a server sends zero or more. |
| caster | u32 | The 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.
In every range of this book
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 0.8.13.26–0.9.22.13 | 83 |
| 0.9.22.14–1.0.0.24 | 80 |
| Field | Type | What it is |
|---|---|---|
| slot | u8 | Which slot. A client fails where it is above 31. |
| count | u8 | How many are stacked there now. |
| timeLeft | f32 | How long it has left to run, in seconds. |
| caster | u32 | The unit that put it there. Where the client holds no such unit, it leaves the effect with no caster. |
Vectors (1)
EffectRemoved
What a server sends to take a lasting effect off a unit. The header names the unit this is about.
In every range of this book
Command 39 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| slot | u8 | Which slot it sat in. A client fails where it is above 31. |
| effect | u32 | Which 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.
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.
| Field | Type | What it is |
|---|---|---|
| particle | u32 | The name this particle answers to, so later messages can name it. |
| flags | u16 | Bit 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. |
| unknown | bytes, 12 | Passed to the particle as it is made; what it holds is not recorded. |
| boundTo | u32 | The unit the particle hangs off, or zero. |
| effect | text, 64 bytes | The 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. |
| unknownB | u32 | The point on boundTo the particle hangs from. |
| atX | f32 | Where it starts, along one ground axis, in world units; used only where target is zero. |
| atY | f32 | Its height. |
| atZ | f32 | Along the other ground axis. |
| target | u32 | The unit the particle is aimed at, or zero. |
| unknownC | u32 | The point on target the particle is aimed at. |
Vectors (1)
In 0.9.22.14–1.0.0.24
Command 21 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| groupCount | u8 | How many sets follow. |
| groups | count in groupCount × ParticleGroup | The sets themselves. |
Vectors (1)
KillParticle
What a server sends to stop a particle a client is drawing.
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.
| Field | Type | What it is |
|---|---|---|
| particle | u32 | The particle to stop. |
AppearancePushed
What a server sends to lay a new look over a unit’s own. The header names the unit.
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.
| Field | Type | What it is |
|---|---|---|
| entry | u32 | Names this look, so that AppearancePopped can name it. |
| asset | text, ended by a zero byte | The name the client loads it under, ended by a zero byte. |
Vectors (1)
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.
| Field | Type | What it is |
|---|---|---|
| entry | u32 | Names this look, so that AppearancePopped can name it. |
| asset | text, ended by a zero byte | The name the client loads it under, ended by a zero byte. |
Vectors (1)
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.
| Field | Type | What it is |
|---|---|---|
| entry | u32 | Names this look, so that AppearancePopped can name it. |
| overrideSpells | u8 | Set where the unit’s spells change with it. Any nonzero value sets it. |
| asset | text, ended by a zero byte | The 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.
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.
| Field | Type | What it is |
|---|---|---|
| entry | u32 | The look, by the name AppearancePushed gave it. |
Vectors (1)
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.
| Field | Type | What it is |
|---|---|---|
| entry | u32 | The look, by the name AppearancePushed gave it. |
Vectors (1)
PlayAnimation
What a server sends to make a unit play an animation. The header names the unit.
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.
| Field | Type | What it is |
|---|---|---|
| flags | 4-byte bits | How the animation plays, as a set of bits. |
| flags.unusedLow | bit 0 | Unused; a server writes zero. |
| flags.loop | bit 1 | Set to loop the animation: it starts over once it ends. |
| flags.holdLastFrame | bit 2 | Set to hold the last frame once the animation ends; it stops advancing there. Wins over loop. |
| flags.fadeOthers | bit 3 | Set to freeze the animations already playing and fade them to nothing over the blend time. They are not removed. |
| flags.freezeOthers | bit 4 | Set to freeze the animations already playing, fade them out over the blend time, then remove them. |
| flags.dropOthers | bit 5 | Set to remove the animations already playing at once, with no fade. |
| flags.unused | bit 6 to 31 | Unused; a server writes zero. |
| scaleTime | f32 | Where above zero, how many seconds the animation is stretched or squeezed to span; otherwise it plays at normal speed. |
| animation | text, ended by a zero byte | The animation’s name, ended by a zero byte. Nothing plays for a name the unit does not have. |
Vectors (1)
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.
| Field | Type | What it is |
|---|---|---|
| flags | 4-byte bits | How the animation plays, as a set of bits. |
| flags.unusedLow | bit 0 | Unused; a server writes zero. |
| flags.loop | bit 1 | Set to loop the animation: it starts over once it ends. |
| flags.holdLastFrame | bit 2 | Set to hold the last frame once the animation ends; it stops advancing there. Wins over loop. |
| flags.fadeOthers | bit 3 | Set to freeze the animations already playing and fade them to nothing over the blend time. They are not removed. |
| flags.freezeOthers | bit 4 | Set to freeze the animations already playing, fade them out over the blend time, then remove them. |
| flags.dropOthers | bit 5 | Set to remove the animations already playing at once, with no fade. |
| flags.locked | bit 6 | Set 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.fadeAtEnd | bit 7 | Only where loop is clear: set to start fading the animation out once its time left is at or below the blend time. |
| flags.unused | bit 8 to 31 | Unused; a server writes zero. |
| scaleTime | f32 | Where above zero, how many seconds the animation is stretched or squeezed to span; otherwise it plays at normal speed. |
| animation | text, ended by a zero byte | The animation’s name, ended by a zero byte. Nothing plays for a name the unit does not have. |
Vectors (1)
StopAnimation
What a server sends to stop an animation a unit is playing. The header names the unit.
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.
| Field | Type | What it is |
|---|---|---|
| flags | 4-byte bits | A client reads nothing here. |
| flags.unusedLow | bit 0 to 5 | A client ignores these; a server sends zero. |
| flags.unlock | bit 6 | Unused; a server writes zero. |
| flags.unusedHigh | bit 7 to 31 | A client ignores these; a server sends zero. |
Vectors (1)
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.
| Field | Type | What it is |
|---|---|---|
| flags | 4-byte bits | How it stops. |
| flags.unusedLow | bit 0 to 5 | A client ignores these; a server sends zero. |
| flags.unlock | bit 6 | Set 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.unusedHigh | bit 7 to 31 | A 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.
In 0.9.22.14–1.0.0.24
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 0.9.22.14–0.9.25.35 | 137 |
| 0.9.25.36–1.0.0.24 | 136 |
| Field | Type | What it is |
|---|---|---|
| fade | i16 | Names this fade, so that FadeRemoved can name it. |
| time | f32 | How long the fade takes, in seconds. |
| target | f32 | The opacity it fades to, from 0 for unseen to 1 for solid. |
Vectors (1)
FadeRemoved
What a server sends to undo a fade on a unit. The header names the unit.
In 0.9.22.14–1.0.0.24
Carried on events, sent by the server, reliable, under these commands:
| Builds | Command |
|---|---|
| 0.9.22.14–0.9.25.35 | 138 |
| 0.9.25.36–1.0.0.24 | 137 |
| Field | Type | What it is |
|---|---|---|
| fade | i16 | The fade, by the name FadeTo gave it. A client does nothing where no fade on the unit has that name. |
Vectors (1)
FadeMinions
What a server sends to fade one side’s minions. The header carries zero.
In 0.9.25.36–1.0.0.24
Command 174 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| side | u8 | Which side, or zero for both. |
| amount | f32 | The opacity they fade to, from 0 for unseen to 1 for solid. |
| time | f32 | How long the fade takes, in seconds. |
NexusIdle
What a server sends to put each nexus into its idle particles. The header carries zero.
NexusSkin
What a server sends to change how one side’s nexus looks. The header carries zero.
In 0.9.25.36–1.0.0.24
Command 169 on events, sent by the server, reliable.
| Field | Type | What it is |
|---|---|---|
| side | u8 | Which side. |
| skin | u32 | Which look. |