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
8199candle_flair0110938 60085–60114 ———
2047candle_flair022483 1–843 ———
8200candle_flair0210939 60085–60114 ———
2048candle_flair032484 1–843 ———
8201candle_flair0310940 60085–60114 ———
2049candle_smoke012485 1–843 ———
8202candle_smoke0110941 60085–60114 ———
2050candle_smoke022486 1–843 ———
8203candle_smoke0210942 60085–60114 ———
2051candle_smoke032487 1–843 ———
8204candle_smoke0310943 60085–60114 ———
12519cannon_blast18908 60085–60114 ———
17249cannon_fire_blast_aoe31504 60085–60114 ———
29937captain_morgan_idle106619 60085–60114 ———
11299carpet_backup16203 60085–60114 ———
1652carpet_enter1960 1–843 ———
8205carpet_enter10944 60085–60114 ———
1653carpet_exit1961 1–843 ———
8206carpet_exit10945 60085–60114 ———
8207carpet_fall10946 60085–60114 ———
14219carpet_fly_backup22584 60085–60114 ———
14220carpet_fly_climb22585 60085–60114 ———
14221carpet_fly_dive22586 60085–60114 ———
14233carpet_fly_down22600 60085–60114 ———
14222carpet_fly_glide22587 60085–60114 ———
14223carpet_fly_glide_left22588 60085–60114 ———
14224carpet_fly_glide_right22589 60085–60114 ———
14225carpet_fly_idle22590 60085–60114 ———
14226carpet_fly_run22591 60085–60114 ———
14227carpet_fly_strafe_left22592 60085–60114 ———
14228carpet_fly_strafe_right22593 60085–60114 ———
14229carpet_fly_turn_left22594 60085–60114 ———
14230carpet_fly_turn_right22595 60085–60114 ———
14231carpet_fly_up22596 60085–60114 ———
14232carpet_fly_walk22597 60085–60114 ———
792carpet_idle965 1–843 ———
8208carpet_idle10947 60085–60114 ———
8209carpet_jump10948 60085–60114 ———
8210carpet_land10949 60085–60114 ———
793carpet_run966 1–843 ———
8211carpet_run10950 60085–60114 ———
11462carpet_tail16530 60085–60114 ———
11463carpet_tail_cloak16531 60085–60114 ———
794carpet_walk967 1–843 ———
8212carpet_walk10951 60085–60114 ———
3066carry_blue_flag4868 1–843 ———
7510carry_blue_flag4868 60085–60114 ———
3067carry_red_flag4869 1–843 ———
7511carry_red_flag4869 60085–60114 ———
387cast126 1–843 ———
6665cast126 60085–60114 ———
8213cast0110952 60085–60114 ———
15680cast01_enter25655 60085–60114 ———
15681cast01_exit25656 60085–60114 ———
15682cast01_idle25657 60085–60114 ———
15002cast0224732 60085–60114 ———
15683cast02_enter25658 60085–60114 ———
15684cast02_exit25659 60085–60114 ———
15685cast02_idle25660 60085–60114 ———
16312cast0328050 60085–60114 ———
16313cast0428051 60085–60114 ———
14756cast124067 60085–60114 ———
3091cast45053 1–843 ———
8214cast410953 60085–60114 ———
28689castenter67265 60085–60114 ———
28690castexit67266 60085–60114 ———
28691castloop67267 60085–60114 ———
16773cast_0129773 60085–60114 ———
1820cast_01lp_snd2137 1–843 ———
8215cast_01lp_snd10954 60085–60114 ———
16774cast_0229774 60085–60114 ———
16775cast_0329775 60085–60114 ———
16776cast_0429776 60085–60114 ———
16777cast_0529777 60085–60114 ———
388cast_1127 1–843 ———
8216cast_110955 60085–60114 ———
389cast_10128 1–843 ———
8217cast_1010956 60085–60114 ———
390cast_11129 1–843 ———
8218cast_1110957 60085–60114 ———
391cast_12130 1–843 ———
8219cast_1210958 60085–60114 ———
392cast_2131 1–843 ———
8220cast_210959 60085–60114 ———
393cast_3132 1–843 ———
8221cast_310960 60085–60114 ———
394cast_4133 1–843 ———
8222cast_410961 60085–60114 ———
12012cast_517752 60085–60114 ———
395cast_6134 1–843 ———
8223cast_610962 60085–60114 ———
396cast_7135 1–843 ———
8224cast_710963 60085–60114 ———
397cast_8136 1–843 ———
8225cast_810964 60085–60114 ———
398cast_9137 1–843 ———
8226cast_910965 60085–60114 ———
14194cast_aa_ancestor_swirls22525 60085–60114 ———
14301cast_aa_blast_tube22766 60085–60114 ———
14048cast_aa_column_heal_blast22092 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.