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
16370drinal_staff_blast28265 60085–60114 ———
16339drinal_summon28148 60085–60114 ———
16356drinal_trail_weapon_flames28239 60085–60114 ———
16357drinal_trail_weapon_poison28240 60085–60114 ———
16393drinal_warning_zone28358 60085–60114 ———
1935drinking_failure2322 1–843 ———
8670drinking_failure11421 60085–60114 ———
1936drinking_idle2323 1–843 ———
8671drinking_idle11422 60085–60114 ———
1937drinking_success2324 1–843 ———
8672drinking_success11423 60085–60114 ———
29880drinking_wine_idle105688 60085–60114 ———
14937drink_chug24528 60085–60114 ———
1938drip012325 1–843 ———
8673drip0111424 60085–60114 ———
1939drip022326 1–843 ———
8674drip0211425 60085–60114 ———
1078dronewolf_sound1319 1–843 ———
8675dronewolf_sound11426 60085–60114 ———
2305drum_drone_snd2888 1–843 ———
8676drum_drone_snd11427 60085–60114 ———
2306drum_drum_snd2889 1–843 ———
8677drum_drum_snd11428 60085–60114 ———
2285ds_dragonspawn_sound2858 1–843 ———
8678ds_dragonspawn_sound11429 60085–60114 ———
1997ds_gashiss_snd2426 1–843 ———
8679ds_gashiss_snd11430 60085–60114 ———
1013dual_wield_attack1243 1–843 ———
6790dual_wield_attack1243 60085–60114 ———
1014dual_wield_attack011244 1–843 ———
6791dual_wield_attack011244 60085–60114 ———
1015dual_wield_attack021245 1–843 ———
6792dual_wield_attack021245 60085–60114 ———
2966dual_wield_attack034599 1–843 ———
7486dual_wield_attack034599 60085–60114 ———
1016dual_wield_attack_recoil1246 1–843 ———
8680dual_wield_attack_recoil11433 60085–60114 ———
1017dual_wield_attack_recoil011247 1–843 ———
8681dual_wield_attack_recoil0111434 60085–60114 ———
1018dual_wield_attack_recoil021248 1–843 ———
8682dual_wield_attack_recoil0211435 60085–60114 ———
2985dual_wield_attack_recoil034639 1–843 ———
8683dual_wield_attack_recoil0311436 60085–60114 ———
483dual_wield_backup252 1–843 ———
8684dual_wield_backup11437 60085–60114 ———
15062dual_wield_dead_enter24840 60085–60114 ———
2398dual_wield_defensive_buff2993 1–843 ———
8685dual_wield_defensive_buff11438 60085–60114 ———
1375dual_wield_dodge_backhand1634 1–843 ———
8686dual_wield_dodge_backhand11439 60085–60114 ———
1376dual_wield_dodge_down1635 1–843 ———
8687dual_wield_dodge_down11440 60085–60114 ———
1377dual_wield_dodge_forehand1636 1–843 ———
8688dual_wield_dodge_forehand11441 60085–60114 ———
2986dual_wield_dodge_thrust4640 1–843 ———
8689dual_wield_dodge_thrust11442 60085–60114 ———
484dual_wield_enter261 1–843 ———
8690dual_wield_enter11443 60085–60114 ———
485dual_wield_exit264 1–843 ———
8691dual_wield_exit11444 60085–60114 ———
2399dual_wield_feint2994 1–843 ———
8692dual_wield_feint11445 60085–60114 ———
486dual_wield_idle267 1–843 ———
6716dual_wield_idle267 60085–60114 ———
12624dual_wield_idle0119221 60085–60114 ———
2400dual_wield_kick2995 1–843 ———
7249dual_wield_kick2995 60085–60114 ———
2401dual_wield_knockdowntoknees2996 1–843 ———
8693dual_wield_knockdowntoknees11446 60085–60114 ———
16397dual_wield_knockeddowntoknees28372 60085–60114 ———
2402dual_wield_knockedtoback2997 1–843 ———
8694dual_wield_knockedtoback11447 60085–60114 ———
2403dual_wield_knockedtoback_getup2998 1–843 ———
8695dual_wield_knockedtoback_getup11448 60085–60114 ———
16398dual_wield_knockedtoback_onbackidle28373 60085–60114 ———
2404dual_wield_offensive_buff2999 1–843 ———
8696dual_wield_offensive_buff11449 60085–60114 ———
1378dual_wield_ouch_backhand1637 1–843 ———
8697dual_wield_ouch_backhand11450 60085–60114 ———
1379dual_wield_ouch_down1638 1–843 ———
8698dual_wield_ouch_down11451 60085–60114 ———
1380dual_wield_ouch_forehand1639 1–843 ———
8699dual_wield_ouch_forehand11452 60085–60114 ———
2987dual_wield_ouch_thrust4641 1–843 ———
8700dual_wield_ouch_thrust11453 60085–60114 ———
1381dual_wield_parry_backhand1640 1–843 ———
8701dual_wield_parry_backhand11454 60085–60114 ———
1382dual_wield_parry_down1641 1–843 ———
8702dual_wield_parry_down11455 60085–60114 ———
1383dual_wield_parry_forehand1642 1–843 ———
8703dual_wield_parry_forehand11456 60085–60114 ———
2988dual_wield_parry_thrust4642 1–843 ———
8704dual_wield_parry_thrust11457 60085–60114 ———
16743dual_wield_run29713 60085–60114 ———
487dual_wield_strafe_left284 1–843 ———
8705dual_wield_strafe_left11458 60085–60114 ———
488dual_wield_strafe_right285 1–843 ———
8706dual_wield_strafe_right11459 60085–60114 ———
2405dual_wield_super_buff3000 1–843 ———
8707dual_wield_super_buff11460 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.