Reference library

Emotes and animations.

Search the configured world’s emotes table by name, row ID, visual state ID or message. Each row maps a name to an animation for a client version range.

  • 31,574 mappings
  • 25,249 unique names
  • 220 mappings with chat text
  • 31,354 animation-only mappings

Snapshot: October 14, 2026. These are database mappings; a client’s models and assets determine what can actually render. A listed name does not automatically register a player slash command.

Table fields and usage ↓

Build filtering uses the stored inclusive range: minimum ≤ build ≤ maximum. A maximum of 0 means no upper limit. Leave the build blank to compare all mappings for a name.

31,574 matching mappings.

Available mappings from the world database snapshot. Empty message fields are shown as —.
Row IDNameVisual state IDClient build rangeMessageTargeted messageStored self message
12448design_water_portal18757 60085–60114 ———
29722design_water_spout_boost99565 60085–60114 ———
29521design_web_explode95145 60085–60114 ———
13596design_wellspring_bones_toss21052 60085–60114 ———
16299design_yellow_light_beam27995 60085–60114 ———
17095design_yellow_pool31047 60085–60114 ———
12455design_zapper_bolt_p2p18774 60085–60114 ———
14713design_zek_death_fx23889 60085–60114 ———
14186design_zek_helm_fire22508 60085–60114 ———
29284design_zev_lava_barrier92782 60085–60114 ———
16808design_zip_car29913 60085–60114 ———
28456design_zombie_face_splat66113 60085–60114 ———
28457design_zombie_othmir_summon66114 60085–60114 ———
17449design_zone_blast_fx32640 60085–60114 ———
2284destination2857 1–843 ———
8629destination11379 60085–60114 ———
1247destroy1488 1–843 ———
8630destroy11380 60085–60114 ———
1248destroyed1489 1–843 ———
8631destroyed11381 60085–60114 ———
2782df_charge_sound3917 1–843 ———
8632df_charge_sound11382 60085–60114 ———
2783df_hit_sound3918 1–843 ———
8633df_hit_sound11383 60085–60114 ———
2784df_impact_sound3919 1–843 ———
8634df_impact_sound11384 60085–60114 ———
2806df_vortex_sound3953 1–843 ———
8635df_vortex_sound11385 60085–60114 ———
796dieyell969 1–843 ———
8636dieyell11386 60085–60114 ———
8637dig11387 60085–60114 ———
8638dig_enter11388 60085–60114 ———
8639dig_exit11389 60085–60114 ———
8640dig_loop11390 60085–60114 ———
480ding247 1–843 ———
8641ding11391 60085–60114 ———
30037dio01109294 60085–60114 ———
30038dio02109295 60085–60114 ———
16934dirt_fx30649 60085–60114 ———
8642disarm_both11392 60085–60114 ———
8643disarm_left11393 60085–60114 ———
8644disarm_right11394 60085–60114 ———
481disease248 1–843 ———
8645disease11395 60085–60114 ———
28866disease_breath_spray72519 60085–60114 ———
28879disease_howl_fx73223 60085–60114 ———
3245dive5772 1–843 ———
14002dive21956 60085–60114 ———
3149dm_backgroundexplosions_snd5443 1–843 ———
8646dm_backgroundexplosions_snd11396 60085–60114 ———
3150dm_dragonform_snd5444 1–843 ———
8647dm_dragonform_snd11397 60085–60114 ———
3151dm_energyforce_snd5445 1–843 ———
8648dm_energyforce_snd11398 60085–60114 ———
11695dn_goblin_beam_blue16882 60085–60114 ———
11696dn_goblin_beam_green16883 60085–60114 ———
11697dn_goblin_beam_red16884 60085–60114 ———
11698dn_goblin_beam_yellow16885 60085–60114 ———
2500dodge3100 1–843 ———
8649dodge11399 60085–60114 ———
2501dodge013101 1–843 ———
8650dodge0111400 60085–60114 ———
3079dodge024982 1–843 ———
8651dodge0211401 60085–60114 ———
3080dodge034983 1–843 ———
8652dodge0311402 60085–60114 ———
3242dodge15699 1–843 ———
8653dodge111403 60085–60114 ———
3243dodge25700 1–843 ———
8654dodge211404 60085–60114 ———
3244dodge35701 1–843 ———
8655dodge311405 60085–60114 ———
3152dodge_backhand5446 1–843 ———
8656dodge_backhand11406 60085–60114 ———
3153dodge_down5447 1–843 ———
8657dodge_down11407 60085–60114 ———
3154dodge_forehand5448 1–843 ———
8658dodge_forehand11408 60085–60114 ———
3155dodge_thrust5449 1–843 ———
8659dodge_thrust11409 60085–60114 ———
224doh249 1–843 smacks %g1 forehead.smacks %g1 forehead at %t.—
8660doh11410 60085–60114 smacks %g1 forehead.smacks %g1 forehead at %t.—
28944domino_circle76459 60085–60114 ———
28945domino_square76460 60085–60114 ———
17185dontuse_dodge_backhand31316 60085–60114 ———
17186dontuse_dodge_down31317 60085–60114 ———
17187dontuse_dodge_forehand31318 60085–60114 ———
17188dontuse_dodge_thrust31319 60085–60114 ———
17189dontuse_fly_enter31320 60085–60114 ———
15785dontuse_fly_enter_idle26103 60085–60114 ———
17190dontuse_habitat0131321 60085–60114 ———
17191dontuse_habitat0231322 60085–60114 ———
17192dontuse_habitat0331323 60085–60114 ———
15112dontuse_idle0125019 60085–60114 ———
15113dontuse_idle0225020 60085–60114 ———
17193dontuse_idle0331324 60085–60114 ———
17194dontuse_knockeddowntoknees31325 60085–60114 ———
16582dontuse_knockedtoback29158 60085–60114 ———
16583dontuse_knockedtoback_getup29159 60085–60114 ———
16584dontuse_knockedtoback_onbackidle29160 60085–60114 ———
Table fields and server behavior
Schema from the same database snapshot.
ColumnSQL typeMeaning
idint(10) unsigned Auto-increment primary key for the database row. This is not the animation ID.
namevarchar(128)
Nullable
Exact name used by the server’s animation lookup. The same name can have separate rows for different client builds.
visual_state_idint(10) unsigned Numeric animation ID sent in WS_CannedEmote for the selected mapping. IDs can change between version ranges.
messagevarchar(255)
Nullable
Default chat text, used without a different target or when targeted_message is empty. The server prefixes the originator’s name for player emotes.
targeted_messagevarchar(255)
Nullable
Chat text used when a different target exists. The %t placeholder is replaced with the target’s name.
self_messagevarchar(255)
Nullable
Stored database field. The current WorldDatabase loader does not select it and HandleEmote does not use it.
min_version_rangeint(10) unsigned Inclusive lowest client build for this mapping; 0 allows builds from zero upward.
max_version_rangeint(10) unsigned Inclusive highest client build; 0 means no upper limit.

Using a named animation

For example, wave maps to visual state 883 for builds 1–843 and 13287 for builds 60085–60114 in this snapshot. Search a name with the build left blank to see its variants.

In Lua, PlayAnimationString resolves the name through the emote catalog. This example plays the named animation without using the spawn’s current target:

PlayAnimationString(Spawn, "wave", nil, true)

Player canned emotes use /cannedemote wave. The separate /emote command sends custom chat text. For NPCs, HandleEmote sends the animation with an empty emote message.

Message placeholders: %t is the target’s name; %g1 becomes his/her, %g2 becomes him/her, and %g3 becomes he/she, using the originator’s gender. The current handler replaces the first occurrence of each placeholder.

The “With chat text” filter includes rows with a nonempty message or targeted_message. “Animation only” means both fields are empty. Stored self_message does not affect either filter.

Build filtering shows literal database ranges. FindAnimation also has a narrow verified fallback for bow_knockedtoback in builds 562–935 when no direct mapping exists; it does not make all modern mappings available to those builds.

Source: configured local world emotes table, exported read-only on October 14, 2026. Runtime behavior checked against WorldServer/WorldDatabase.cpp, WorldServer/Spawn/VisualStates.h, WorldServer/Zone/zoneserver.cpp, WorldServer/Commands/Commands.cpp and WorldServer/Lua/LuaFunctions.cpp. Other worlds can have different mappings.