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
68551h_pierce_ouch_thrust1365 60085–60114 ———
11251h_pierce_parry_backhand1366 1–843 ———
68561h_pierce_parry_backhand1366 60085–60114 ———
11261h_pierce_parry_down1367 1–843 ———
68571h_pierce_parry_down1367 60085–60114 ———
11271h_pierce_parry_forehand1368 1–843 ———
68581h_pierce_parry_forehand1368 60085–60114 ———
11281h_pierce_parry_thrust1369 1–843 ———
68591h_pierce_parry_thrust1369 60085–60114 ———
11291h_pierce_strafe_left1370 1–843 ———
79651h_pierce_strafe_left10701 60085–60114 ———
11301h_pierce_strafe_right1371 1–843 ———
79661h_pierce_strafe_right10702 60085–60114 ———
11311h_pierce_walk1372 1–843 ———
79671h_pierce_walk10703 60085–60114 ———
8511h_sword_attack1026 1–843 ———
67671h_sword_attack1026 60085–60114 ———
8521h_sword_attack011027 1–843 ———
67681h_sword_attack011027 60085–60114 ———
8531h_sword_attack021028 1–843 ———
67691h_sword_attack021028 60085–60114 ———
8541h_sword_attack031029 1–843 ———
67701h_sword_attack031029 60085–60114 ———
151011h_sword_attack0424959 60085–60114 ———
174071h_sword_attack_0132373 60085–60114 ———
174081h_sword_attack_0232374 60085–60114 ———
174091h_sword_attack_0332375 60085–60114 ———
9161h_sword_attack_recoil1111 1–843 ———
79681h_sword_attack_recoil10704 60085–60114 ———
9171h_sword_attack_recoil011112 1–843 ———
79691h_sword_attack_recoil0110705 60085–60114 ———
9181h_sword_attack_recoil021113 1–843 ———
79701h_sword_attack_recoil0210706 60085–60114 ———
10301h_sword_attack_recoil031270 1–843 ———
79711h_sword_attack_recoil0310707 60085–60114 ———
3491h_sword_backup1 1–843 ———
79721h_sword_backup10708 60085–60114 ———
160261h_sword_cast26889 60085–60114 ———
160271h_sword_cast_enter26890 60085–60114 ———
160281h_sword_cast_exit26891 60085–60114 ———
160291h_sword_cast_idle26892 60085–60114 ———
160301h_sword_combat_art_buff26893 60085–60114 ———
174101h_sword_combat_buff32376 60085–60114 ———
160311h_sword_combat_enter26894 60085–60114 ———
174111h_sword_combat_idle32377 60085–60114 ———
282461h_sword_dead_enter65484 60085–60114 ———
174121h_sword_death32378 60085–60114 ———
9191h_sword_death_blow1114 1–843 ———
67751h_sword_death_blow1114 60085–60114 ———
11321h_sword_death_blow011373 1–843 ———
68601h_sword_death_blow011373 60085–60114 ———
10311h_sword_dodge_backhand1271 1–843 ———
67971h_sword_dodge_backhand1271 60085–60114 ———
10321h_sword_dodge_down1272 1–843 ———
67981h_sword_dodge_down1272 60085–60114 ———
10331h_sword_dodge_forehand1273 1–843 ———
67991h_sword_dodge_forehand1273 60085–60114 ———
11331h_sword_dodge_thrust1374 1–843 ———
68611h_sword_dodge_thrust1374 60085–60114 ———
3501h_sword_enter10 1–843 ———
79731h_sword_enter10709 60085–60114 ———
3511h_sword_exit13 1–843 ———
79741h_sword_exit10710 60085–60114 ———
3521h_sword_idle16 1–843 ———
66591h_sword_idle16 60085–60114 ———
110561h_sword_idle0115622 60085–60114 ———
282471h_sword_idle0265485 60085–60114 ———
174131h_sword_idle_fidget_0132379 60085–60114 ———
174141h_sword_idle_fidget_0232380 60085–60114 ———
10341h_sword_ouch_backhand1274 1–843 ———
68001h_sword_ouch_backhand1274 60085–60114 ———
10351h_sword_ouch_down1275 1–843 ———
68011h_sword_ouch_down1275 60085–60114 ———
10361h_sword_ouch_forehand1276 1–843 ———
68021h_sword_ouch_forehand1276 60085–60114 ———
11341h_sword_ouch_thrust1375 1–843 ———
68621h_sword_ouch_thrust1375 60085–60114 ———
10371h_sword_parry_backhand1277 1–843 ———
68031h_sword_parry_backhand1277 60085–60114 ———
10381h_sword_parry_down1278 1–843 ———
68041h_sword_parry_down1278 60085–60114 ———
10391h_sword_parry_forehand1279 1–843 ———
68051h_sword_parry_forehand1279 60085–60114 ———
11351h_sword_parry_thrust1376 1–843 ———
68631h_sword_parry_thrust1376 60085–60114 ———
23411h_sword_parry_thurst2932 1–843 ———
79751h_sword_parry_thurst10711 60085–60114 ———
147551h_sword_run24064 60085–60114 ———
3531h_sword_strafe_left42 1–843 ———
79761h_sword_strafe_left10712 60085–60114 ———
3541h_sword_strafe_right43 1–843 ———
79771h_sword_strafe_right10713 60085–60114 ———
174151h_sword_turn_left32381 60085–60114 ———
3551h_sword_walk44 1–843 ———
79781h_sword_walk10714 60085–60114 ———
23421h_thrown_attack2933 1–843 ———
72331h_thrown_attack2933 60085–60114 ———
23431h_thrown_backup2934 1–843 ———
79801h_thrown_backup10716 60085–60114 ———
23441h_thrown_dodge_backhand2935 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.