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
2622cast_trace_wine_l3366 1–843 ———
7321cast_trace_wine_l3366 60085–60114 ———
2623cast_trace_wine_r3367 1–843 ———
7322cast_trace_wine_r3367 60085–60114 ———
11322cast_trail_head16255 60085–60114 ———
1042cast_trail_leftarm1282 1–843 ———
6808cast_trail_leftarm1282 60085–60114 ———
8381cast_trail_leftarm_bright11126 60085–60114 ———
1043cast_trail_rightarm1283 1–843 ———
6809cast_trail_rightarm1283 60085–60114 ———
8382cast_trail_rightarm_bright11127 60085–60114 ———
1076cast_trail_rightfoot1317 1–843 ———
6826cast_trail_rightfoot1317 60085–60114 ———
2334cast_trail_rightfoot_gold2925 1–843 ———
7228cast_trail_rightfoot_gold2925 60085–60114 ———
1077cast_trail_rightshin1318 1–843 ———
6827cast_trail_rightshin1318 60085–60114 ———
29674cast_tribunal_scales_buff98017 60085–60114 ———
1898cast_troubador2264 1–843 ———
7103cast_troubador2264 60085–60114 ———
17165cast_troubador_mythical_fx31247 60085–60114 ———
2313cast_tune_drum2900 1–843 ———
7226cast_tune_drum2900 60085–60114 ———
2731cast_tune_flute3779 1–843 ———
7394cast_tune_flute3779 60085–60114 ———
2234cast_tune_guitar2785 1–843 ———
7201cast_tune_guitar2785 60085–60114 ———
2767cast_tune_multichain3845 1–843 ———
7410cast_tune_multichain3845 60085–60114 ———
2711cast_tune_song3734 1–843 ———
7380cast_tune_song3734 60085–60114 ———
7595cast_undead_tide6862 60085–60114 ———
900cast_undertone_snd1091 1–843 ———
8383cast_undertone_snd11128 60085–60114 ———
10890cast_vampirism_p2p14945 60085–60114 ———
443cast_vault188 1–843 ———
6709cast_vault188 60085–60114 ———
1418cast_venekors_fire_breath1678 1–843 ———
8384cast_venekors_fire_breath11129 60085–60114 ———
11308cast_venril_beam_buff16228 60085–60114 ———
11309cast_venril_crystal16229 60085–60114 ———
11310cast_venril_ring16230 60085–60114 ———
11311cast_venril_ring_buff16231 60085–60114 ———
2558cast_vines_root_control_circling3210 1–843 ———
7275cast_vines_root_control_circling3210 60085–60114 ———
7635cast_vision_plane_druid_ring9516 60085–60114 ———
2078cast_void_dragon_breath2563 1–843 ———
7122cast_void_dragon_breath2563 60085–60114 ———
11923cast_void_energy_cloud17539 60085–60114 ———
11917cast_void_portal17516 60085–60114 ———
11924cast_void_rune_barrier17540 60085–60114 ———
11925cast_void_rune_circle17541 60085–60114 ———
29856cast_vomit_shout104348 60085–60114 ———
7608cast_vyemm_slam7064 60085–60114 ———
12683cast_wand_fizzle19338 60085–60114 ———
444cast_ward189 1–843 ———
6710cast_ward189 60085–60114 ———
1330cast_warden1576 1–843 ———
6934cast_warden1576 60085–60114 ———
17166cast_warden_mythical_fx31248 60085–60114 ———
1331cast_warlock1577 1–843 ———
6935cast_warlock1577 60085–60114 ———
17167cast_warlock_mythical_fx31249 60085–60114 ———
29226cast_warning_zone89204 60085–60114 ———
12619cast_watching19205 60085–60114 ———
10900cast_waterflush_p2p15004 60085–60114 ———
12176cast_water_charge18094 60085–60114 ———
12584cast_water_shield19098 60085–60114 ———
17087cast_water_spouts31027 60085–60114 ———
11817cast_wavy_bubble_shield17248 60085–60114 ———
12621cast_weapon_chargeup19213 60085–60114 ———
17179cast_weapon_flames_bottom31295 60085–60114 ———
17180cast_weapon_flames_top31296 60085–60114 ———
12622cast_weapon_glint_point19214 60085–60114 ———
12623cast_weapon_shudder19215 60085–60114 ———
11151cast_webshoot15881 60085–60114 ———
11152cast_webshoot_p2p15882 60085–60114 ———
29202cast_web_smoke_tube_gather87390 60085–60114 ———
29198cast_web_spin_barrier87196 60085–60114 ———
29200cast_web_spin_barrier_white87198 60085–60114 ———
29199cast_web_vanish87197 60085–60114 ———
29203cast_web_wall_blast87391 60085–60114 ———
16437cast_werewolf_appear28583 60085–60114 ———
16438cast_werewolf_hair28584 60085–60114 ———
16336cast_white_buff28110 60085–60114 ———
1201cast_wildcharge_sound1442 1–843 ———
8385cast_wildcharge_sound11130 60085–60114 ———
1202cast_wildswingwindsword_sound1443 1–843 ———
8386cast_wildswingwindsword_sound11131 60085–60114 ———
29865cast_wild_casting104976 60085–60114 ———
11140cast_wild_heart_buff15851 60085–60114 ———
11845cast_wings17355 60085–60114 ———
15891cast_wing_blast26306 60085–60114 ———
13824cast_wing_buffet21645 60085–60114 ———
13308cast_wing_buffet_snow20464 60085–60114 ———
13309cast_wing_buffet_wind20465 60085–60114 ———
856cast_winkers1045 1–843 ———
6772cast_winkers1045 60085–60114 ———
28269cast_wisp_gather_fist65528 60085–60114 ———
1332cast_wizard1578 1–843 ———
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.