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
8942hit_metal_snd11695 60085–60114 ———
3404hit_shake6651 1–843 ———
8943hit_shake11696 60085–60114 ———
1447hit_skin_chainmail_snd1708 1–843 ———
8944hit_skin_chainmail_snd11697 60085–60114 ———
8945hit_skin_cloth_snd11698 60085–60114 ———
860hit_skin_leather_snd1050 1–843 ———
8946hit_skin_leather_snd11699 60085–60114 ———
861hit_skin_metal_snd1051 1–843 ———
8947hit_skin_metal_snd11700 60085–60114 ———
862hit_skin_skin_snd1052 1–843 ———
8948hit_skin_skin_snd11701 60085–60114 ———
8949hit_skin_snd11702 60085–60114 ———
2519hit_snd3125 1–843 ———
8950hit_snd11703 60085–60114 ———
2902hit_target_tigger4403 1–843 ———
8951hit_target_tigger11704 60085–60114 ———
500hit_target_trigger321 1–843 ———
8952hit_target_trigger11705 60085–60114 ———
1448hit_wood_chainmail_snd1709 1–843 ———
8953hit_wood_chainmail_snd11706 60085–60114 ———
8954hit_wood_cloth_snd11707 60085–60114 ———
1449hit_wood_leather_snd1710 1–843 ———
8955hit_wood_leather_snd11708 60085–60114 ———
1450hit_wood_metal_snd1711 1–843 ———
8956hit_wood_metal_snd11709 60085–60114 ———
1451hit_wood_skin_snd1712 1–843 ———
8957hit_wood_skin_snd11710 60085–60114 ———
30029hold_ground_enter108454 60085–60114 ———
30030hold_ground_idle108455 60085–60114 ———
28764horde_dragon_attack67988 60085–60114 ———
28765horde_dragon_attack0167989 60085–60114 ———
28766horde_dragon_attack0267990 60085–60114 ———
28767horde_dragon_attack0367991 60085–60114 ———
28768horde_dragon_attack_breathe_fire67992 60085–60114 ———
28769horde_dragon_attack_tail67993 60085–60114 ———
28770horde_dragon_combat_enter67994 60085–60114 ———
28771horde_dragon_death_enter67995 60085–60114 ———
28772horde_dragon_idle0167996 60085–60114 ———
28773horde_dragon_idle0267997 60085–60114 ———
28762horde_dragon_knock_back67986 60085–60114 ———
28763horde_dragon_offensive_buff67987 60085–60114 ———
28774horde_dragon_super_buff67998 60085–60114 ———
11657horn_blow16793 60085–60114 ———
14827horse_attack24225 60085–60114 ———
14828horse_attack0124226 60085–60114 ———
14829horse_attack0224227 60085–60114 ———
14830horse_attack0324228 60085–60114 ———
3206horse_backup5565 1–843 ———
7532horse_backup5565 60085–60114 ———
14831horse_cast24229 60085–60114 ———
14938horse_combat_attack24529 60085–60114 ———
14939horse_combat_attack0124530 60085–60114 ———
14940horse_combat_attack0224531 60085–60114 ———
14941horse_combat_attack0324532 60085–60114 ———
14832horse_combat_cast24230 60085–60114 ———
14833horse_combat_enter24231 60085–60114 ———
14834horse_combat_exit24232 60085–60114 ———
11357horse_combat_idle16334 60085–60114 ———
14856horse_dead24268 60085–60114 ———
14857horse_dead_enter24269 60085–60114 ———
14858horse_dead_enter0124270 60085–60114 ———
14835horse_death24233 60085–60114 ———
14836horse_death0124234 60085–60114 ———
1466horse_enter1727 1–843 ———
6966horse_enter1727 60085–60114 ———
8959horse_fall11712 60085–60114 ———
14319horse_fly_backup22864 60085–60114 ———
14320horse_fly_climb22865 60085–60114 ———
14321horse_fly_dive22866 60085–60114 ———
14322horse_fly_glide22867 60085–60114 ———
14323horse_fly_glide_left22868 60085–60114 ———
14324horse_fly_glide_right22869 60085–60114 ———
14325horse_fly_idle22870 60085–60114 ———
14326horse_fly_run22871 60085–60114 ———
14327horse_fly_strafe_left22872 60085–60114 ———
14328horse_fly_strafe_right22873 60085–60114 ———
14329horse_fly_turn_left22874 60085–60114 ———
14330horse_fly_turn_right22875 60085–60114 ———
14331horse_fly_up22876 60085–60114 ———
14332horse_fly_walk22877 60085–60114 ———
830horse_idle1004 1–843 ———
6766horse_idle1004 60085–60114 ———
8960horse_jump11713 60085–60114 ———
7905horse_jump_substitute10512 60085–60114 ———
8961horse_land11714 60085–60114 ———
10686horse_long_fall13732 60085–60114 ———
14837horse_ouch24235 60085–60114 ———
14838horse_ouch0124236 60085–60114 ———
14895horse_ouch_backhand24349 60085–60114 ———
14896horse_ouch_down24350 60085–60114 ———
14897horse_ouch_forehand24351 60085–60114 ———
14898horse_ouch_thrust24352 60085–60114 ———
831horse_run1005 1–843 ———
8962horse_run11715 60085–60114 ———
8963horse_tail11716 60085–60114 ———
3207horse_turn_left5566 1–843 ———
7533horse_turn_left5566 60085–60114 ———
3208horse_turn_right5567 1–843 ———
7534horse_turn_right5567 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.