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
72341h_thrown_dodge_backhand2935 60085–60114 ———
23451h_thrown_dodge_down2936 1–843 ———
72351h_thrown_dodge_down2936 60085–60114 ———
23461h_thrown_dodge_forehand2937 1–843 ———
72361h_thrown_dodge_forehand2937 60085–60114 ———
23471h_thrown_dodge_thrust2938 1–843 ———
72371h_thrown_dodge_thrust2938 60085–60114 ———
23481h_thrown_idle2939 1–843 ———
72381h_thrown_idle2939 60085–60114 ———
23491h_thrown_ouch_backhand2940 1–843 ———
72391h_thrown_ouch_backhand2940 60085–60114 ———
23501h_thrown_ouch_down2941 1–843 ———
72401h_thrown_ouch_down2941 60085–60114 ———
23511h_thrown_ouch_forehand2942 1–843 ———
72411h_thrown_ouch_forehand2942 60085–60114 ———
23521h_thrown_ouch_thrust2943 1–843 ———
72421h_thrown_ouch_thrust2943 60085–60114 ———
23531h_thrown_strafe_left2944 1–843 ———
79811h_thrown_strafe_left10717 60085–60114 ———
23541h_thrown_strafe_right2945 1–843 ———
79821h_thrown_strafe_right10718 60085–60114 ———
23551h_thrown_walk2946 1–843 ———
79831h_thrown_walk10719 60085–60114 ———
79791h_throw_attack10715 60085–60114 ———
107951h_wand_attack14364 60085–60114 ———
107961h_wand_attack0114365 60085–60114 ———
107971h_wand_attack0214366 60085–60114 ———
107981h_wand_attack0314367 60085–60114 ———
107991h_wand_attack_recoil14368 60085–60114 ———
108001h_wand_attack_recoil0114369 60085–60114 ———
108011h_wand_attack_recoil0214370 60085–60114 ———
108021h_wand_attack_recoil0314371 60085–60114 ———
108031h_wand_backup14372 60085–60114 ———
108041h_wand_dodge_backhand14373 60085–60114 ———
108051h_wand_dodge_down14374 60085–60114 ———
108061h_wand_dodge_forehand14375 60085–60114 ———
108071h_wand_dodge_thrust14376 60085–60114 ———
108081h_wand_enter14377 60085–60114 ———
108091h_wand_exit14378 60085–60114 ———
108101h_wand_idle14379 60085–60114 ———
108111h_wand_ouch_backhand14380 60085–60114 ———
108121h_wand_ouch_down14381 60085–60114 ———
108131h_wand_ouch_forehand14382 60085–60114 ———
108141h_wand_ouch_thrust14383 60085–60114 ———
108151h_wand_parry_backhand14384 60085–60114 ———
108161h_wand_parry_down14385 60085–60114 ———
108171h_wand_parry_forehand14386 60085–60114 ———
108181h_wand_parry_thrust14387 60085–60114 ———
108191h_wand_strafe_left14388 60085–60114 ———
108201h_wand_strafe_right14389 60085–60114 ———
108211h_wand_walk14390 60085–60114 ———
80052hsword_idle0110741 60085–60114 ———
156912h_cast_enter25714 60085–60114 ———
156922h_cast_exit25715 60085–60114 ———
156932h_cast_idle25716 60085–60114 ———
167452h_idle29717 60085–60114 ———
167462h_knockedtoback29718 60085–60114 ———
167472h_knockedtoback_getup29719 60085–60114 ———
167482h_knockedtoback_onbackidle29720 60085–60114 ———
148882h_ouch24336 60085–60114 ———
148892h_ouch_backhand24337 60085–60114 ———
148902h_ouch_down24338 60085–60114 ———
148912h_ouch_forehand24339 60085–60114 ———
148922h_ouch_thrust24340 60085–60114 ———
114582h_sword16514 60085–60114 ———
10112h_sword_attack1237 1–843 ———
67892h_sword_attack1237 60085–60114 ———
12122h_sword_attack011453 1–843 ———
68812h_sword_attack011453 60085–60114 ———
12132h_sword_attack021454 1–843 ———
68822h_sword_attack021454 60085–60114 ———
29392h_sword_attack034531 1–843 ———
79842h_sword_attack0310720 60085–60114 ———
10122h_sword_attack_recoil1238 1–843 ———
79852h_sword_attack_recoil10721 60085–60114 ———
12142h_sword_attack_recoil011455 1–843 ———
79862h_sword_attack_recoil0110722 60085–60114 ———
12152h_sword_attack_recoil021456 1–843 ———
79872h_sword_attack_recoil0210723 60085–60114 ———
29712h_sword_attack_recoil034606 1–843 ———
79882h_sword_attack_recoil0310724 60085–60114 ———
3562h_sword_backup45 1–843 ———
79892h_sword_backup10725 60085–60114 ———
21332h_sword_charge_up2667 1–843 ———
79902h_sword_charge_up10726 60085–60114 ———
167412h_sword_dead29701 60085–60114 ———
167422h_sword_dead_enter29702 60085–60114 ———
21342h_sword_defensive_buff2668 1–843 ———
71542h_sword_defensive_buff2668 60085–60114 ———
148932h_sword_dodge24341 60085–60114 ———
12162h_sword_dodge_backhand1457 1–843 ———
68832h_sword_dodge_backhand1457 60085–60114 ———
12172h_sword_dodge_down1458 1–843 ———
68842h_sword_dodge_down1458 60085–60114 ———
12182h_sword_dodge_forehand1459 1–843 ———
68852h_sword_dodge_forehand1459 60085–60114 ———
29722h_sword_dodge_thrust4607 1–843 ———
79912h_sword_dodge_thrust10727 60085–60114 ———
3572h_sword_enter50 1–843 ———
66602h_sword_enter50 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.