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
8810fly_attack_breath_arc11563 60085–60114 ———
28966fly_attack_room_a77018 60085–60114 ———
28967fly_attack_room_b77019 60085–60114 ———
12614fly_away19181 60085–60114 ———
29797fly_backup101765 60085–60114 ———
29007fly_charge78959 60085–60114 ———
28968fly_circle_skyshrine77020 60085–60114 ———
11130fly_combat15828 60085–60114 ———
11131fly_combat0115829 60085–60114 ———
16165fly_dead27384 60085–60114 ———
13795fly_death21540 60085–60114 ———
2891fly_dive4328 1–843 ———
8811fly_dive11564 60085–60114 ———
13796fly_dodge21541 60085–60114 ———
17246fly_dodge0131443 60085–60114 ———
11132fly_enter15830 60085–60114 ———
15782fly_enter_idle26089 60085–60114 ———
28996fly_enter_room_a78444 60085–60114 ———
11133fly_exit15831 60085–60114 ———
28997fly_exit_room_a78445 60085–60114 ———
12594fly_from_roost19130 60085–60114 ———
28340fly_gather_idle65788 60085–60114 ———
2892fly_glide4329 1–843 ———
8812fly_glide11565 60085–60114 ———
2893fly_glide24330 1–843 ———
8813fly_glide211566 60085–60114 ———
15773fly_hover26032 60085–60114 ———
2894fly_idle4331 1–843 ———
8814fly_idle11567 60085–60114 ———
28969fly_idle_room_a77021 60085–60114 ———
28970fly_idle_skyshrine77022 60085–60114 ———
1384fly_in1643 1–843 ———
8815fly_in11568 60085–60114 ———
16541fly_in_old29024 60085–60114 ———
13382fly_jumpsubstitute20703 60085–60114 ———
17273fly_left31611 60085–60114 ———
28341fly_manipulate_idle65789 60085–60114 ———
2946fly_ouch4543 1–843 ———
8816fly_ouch11569 60085–60114 ———
13797fly_ouchbackhand21542 60085–60114 ———
13798fly_ouchforehand21543 60085–60114 ———
13799fly_ouchthrust21544 60085–60114 ———
13359fly_ouch_backhand20629 60085–60114 ———
2896fly_run4355 1–843 ———
8817fly_run11570 60085–60114 ———
17247fly_trans_left31444 60085–60114 ———
13800fly_turnleft21545 60085–60114 ———
13801fly_turnright21546 60085–60114 ———
13383fly_turn_left20704 60085–60114 ———
13384fly_turn_right20705 60085–60114 ———
13385fly_walk20706 60085–60114 ———
2001fl_bckgrnd_snd2430 1–843 ———
8792fl_bckgrnd_snd11545 60085–60114 ———
2002fl_lash_snd2431 1–843 ———
8793fl_lash_snd11546 60085–60114 ———
2003fl_whiphit_snd2432 1–843 ———
8794fl_whiphit_snd11547 60085–60114 ———
3115fmba_breathattack_snd5157 1–843 ———
8818fmba_breathattack_snd11571 60085–60114 ———
28760foley_punch_leather67972 60085–60114 ———
8819foostep_trigger11572 60085–60114 ———
1349footstep1605 1–843 ———
8824footstep11577 60085–60114 ———
2560footstep_chainmail_carpet3212 1–843 ———
8825footstep_chainmail_carpet11578 60085–60114 ———
2561footstep_chainmail_dirt3213 1–843 ———
8826footstep_chainmail_dirt11579 60085–60114 ———
2562footstep_chainmail_grass3214 1–843 ———
8827footstep_chainmail_grass11580 60085–60114 ———
2563footstep_chainmail_gravel3215 1–843 ———
8828footstep_chainmail_gravel11581 60085–60114 ———
2564footstep_chainmail_ice3216 1–843 ———
8829footstep_chainmail_ice11582 60085–60114 ———
2565footstep_chainmail_metal3217 1–843 ———
8830footstep_chainmail_metal11583 60085–60114 ———
2566footstep_chainmail_mud3218 1–843 ———
8831footstep_chainmail_mud11584 60085–60114 ———
2567footstep_chainmail_sand3219 1–843 ———
8832footstep_chainmail_sand11585 60085–60114 ———
2568footstep_chainmail_snow3220 1–843 ———
8833footstep_chainmail_snow11586 60085–60114 ———
2569footstep_chainmail_stone3221 1–843 ———
8834footstep_chainmail_stone11587 60085–60114 ———
2570footstep_chainmail_water3222 1–843 ———
8835footstep_chainmail_water11588 60085–60114 ———
2571footstep_chainmail_wood3223 1–843 ———
8836footstep_chainmail_wood11589 60085–60114 ———
1486footstep_leather_carpet1785 1–843 ———
8837footstep_leather_carpet11590 60085–60114 ———
1266footstep_leather_dirt1507 1–843 ———
8838footstep_leather_dirt11591 60085–60114 ———
1267footstep_leather_grass1508 1–843 ———
8839footstep_leather_grass11592 60085–60114 ———
1487footstep_leather_gravel1786 1–843 ———
8840footstep_leather_gravel11593 60085–60114 ———
1268footstep_leather_ice1509 1–843 ———
8841footstep_leather_ice11594 60085–60114 ———
2056footstep_leather_metal2524 1–843 ———
8842footstep_leather_metal11595 60085–60114 ———
1488footstep_leather_mud1787 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.