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
2406dual_wield_taunt_combat_art3001 1–843 ———
8708dual_wield_taunt_combat_art11461 60085–60114 ———
489dual_wield_walk286 1–843 ———
8709dual_wield_walk11462 60085–60114 ———
2407dual_wield_whirling_attack3002 1–843 ———
7250dual_wield_whirling_attack3002 60085–60114 ———
2408dual_wield_wild_swing3003 1–843 ———
7251dual_wield_wild_swing3003 60085–60114 ———
226duck287 1–843 ducks!——
8710duck11463 60085–60114 ducks!——
8711duck_short11464 60085–60114 ———
11738dusting_off16996 60085–60114 ———
28910dust_attack_fx74747 60085–60114 ———
2213dust_base2760 1–843 ———
8712dust_base11465 60085–60114 ———
12590dust_fx19121 60085–60114 ———
2214dust_holster_center2761 1–843 ———
8713dust_holster_center11466 60085–60114 ———
2215dust_holster_left2762 1–843 ———
8714dust_holster_left11467 60085–60114 ———
2216dust_holster_right2763 1–843 ———
8715dust_holster_right11468 60085–60114 ———
2236dust_leftfoot2787 1–843 ———
8716dust_leftfoot11469 60085–60114 ———
2237dust_lefttfoot2788 1–843 ———
8717dust_lefttfoot11470 60085–60114 ———
490dust_puff288 1–843 ———
8718dust_puff11471 60085–60114 ———
2217dust_rightfoot2764 1–843 ———
8719dust_rightfoot11472 60085–60114 ———
2238dust_righttfoot2789 1–843 ———
8720dust_righttfoot11473 60085–60114 ———
28427dust_web_fx66063 60085–60114 ———
10699dwarf_forestry_success13785 60085–60114 ———
16205dwarf_rift_crack_dig27552 60085–60114 ———
12611dw_attack_enter19178 60085–60114 ———
12612dw_attack_exit19179 60085–60114 ———
12613dw_attack_hold19180 60085–60114 ———
2807dw_snap_snd3954 1–843 ———
8721dw_snap_snd11474 60085–60114 ———
1427e1687 1–843 ———
8722e11475 60085–60114 ———
2286eat2859 1–843 ———
8723eat11476 60085–60114 ———
15745eaten_angler25879 60085–60114 ———
28799eating_enter69157 60085–60114 ———
28800eating_exit69158 60085–60114 ———
17445eating_idle32560 60085–60114 ———
12565eat_bread19047 60085–60114 ———
12566eat_fish19048 60085–60114 ———
14070eat_idle22154 60085–60114 ———
28999edge_attack01_skyshrine78612 60085–60114 ———
29000edge_attack02_skyshrine78613 60085–60114 ———
29001edge_attack_skyshrine78614 60085–60114 ———
28934edge_breath_attack_skyshrine75952 60085–60114 ———
28935edge_enter_skyshrine75953 60085–60114 ———
28936edge_exit_skyshrine75954 60085–60114 ———
29050edge_fly_attack_loop_skyshrine80626 60085–60114 ———
29009edge_fly_idle_attack_skyshrine79126 60085–60114 ———
29024edge_fly_idle_attack_skyshrine179803 60085–60114 ———
29051edge_fly_idle_enter_alt_skyshrine80627 60085–60114 ———
29005edge_fly_idle_enter_skyshrine78956 60085–60114 ———
29010edge_fly_idle_exit_skyshrine79127 60085–60114 ———
29006edge_fly_idle_skyshrine78957 60085–60114 ———
29052edge_fly_ouch_skyshrine80628 60085–60114 ———
29053edge_fly_quick_attack_skyshrine80629 60085–60114 ———
28937edge_idle_skyshrine75955 60085–60114 ———
28938edge_run_skyshrine75956 60085–60114 ———
28964edge_smash_pillar_skyshrine77015 60085–60114 ———
1882ef_cast_chains_lp_snd2235 1–843 ———
8724ef_cast_chains_lp_snd11477 60085–60114 ———
1883ef_chains_snd2236 1–843 ———
8725ef_chains_snd11478 60085–60114 ———
28845eggsplode_fx71037 60085–60114 ———
3351elbow6423 1–843 ———
8726elbow11479 60085–60114 ———
12138electric_fx18006 60085–60114 ———
10867electric_hands_l14797 60085–60114 ———
10868electric_hands_r14798 60085–60114 ———
2676electric_shackles_softer_sound3603 1–843 ———
8727electric_shackles_softer_sound11480 60085–60114 ———
2669electric_shackles_sound3558 1–843 ———
8728electric_shackles_sound11481 60085–60114 ———
12153elemental_fire_hands18039 60085–60114 ———
797endsplat970 1–843 ———
8730endsplat11483 60085–60114 ———
1079end_snarl_sound1320 1–843 ———
8729end_snarl_sound11482 60085–60114 ———
12870energy_blobs_kick_blast19659 60085–60114 ———
29240energy_discharge_fx90194 60085–60114 ———
28491energy_emitter_snd66212 60085–60114 ———
11973energy_flow_sound17656 60085–60114 ———
28492energy_hit_impact_snd66213 60085–60114 ———
28493energy_hit_whoosh_snd66214 60085–60114 ———
30039engine109503 60085–60114 ———
8731enter11484 60085–60114 ———
29867epic_prayer_enter105185 60085–60114 ———
29868epic_prayer_exit105186 60085–60114 ———
29869epic_prayer_idle105187 60085–60114 ———
11903eq2_music117486 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.