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
25058kill_snd_twolf_whirl55413 60085–60114 ———
25059kill_snd_twolf_wildswing55414 60085–60114 ———
27642kill_snd_undead_ulthork_eat62976 60085–60114 ———
31290kill_snd_unsheath_bow8483306 60085–60114 ———
25227kill_snd_vallon_attack_rx55872 60085–60114 ———
25228kill_snd_vallon_buff_rx55873 60085–60114 ———
25229kill_snd_vallon_dead_rx55874 60085–60114 ———
25230kill_snd_vallon_ouch_rx55875 60085–60114 ———
30412kill_snd_vasty_attack8455285 60085–60114 ———
31291kill_snd_vox_attack8483311 60085–60114 ———
31292kill_snd_vox_chargeup8483312 60085–60114 ———
31293kill_snd_vox_death8483313 60085–60114 ———
31294kill_snd_vox_flinch8483314 60085–60114 ———
26816kill_snd_vox_short59611 60085–60114 ———
31295kill_snd_vox_whirl8483315 60085–60114 ———
25173kill_snd_warboar_attack55768 60085–60114 ———
25174kill_snd_warboar_attack0155769 60085–60114 ———
25175kill_snd_warboar_attack0255770 60085–60114 ———
25176kill_snd_warboar_attack0355771 60085–60114 ———
25177kill_snd_warboar_cast_targeted_beneficial_end55772 60085–60114 ———
25178kill_snd_warboar_cast_targeted_beneficial_start55773 60085–60114 ———
25179kill_snd_warboar_charge_up55774 60085–60114 ———
25180kill_snd_warboar_combat_enter55775 60085–60114 ———
25181kill_snd_warboar_dead_enter55776 60085–60114 ———
25182kill_snd_warboar_dodge_backhand55777 60085–60114 ———
25183kill_snd_warboar_dodge_forehand55778 60085–60114 ———
25184kill_snd_warboar_dodge_thrust55779 60085–60114 ———
25172kill_snd_warboar_fs55767 60085–60114 ———
25185kill_snd_warboar_idle55780 60085–60114 ———
25186kill_snd_warboar_idle0155781 60085–60114 ———
25187kill_snd_warboar_idle0255782 60085–60114 ———
25188kill_snd_warboar_kick55783 60085–60114 ———
25189kill_snd_warboar_knockeddowntoknees_0155784 60085–60114 ———
25190kill_snd_warboar_knockeddowntoknees_0255785 60085–60114 ———
25191kill_snd_warboar_knockedtoback55786 60085–60114 ———
25192kill_snd_warboar_knockedtoback_getup55787 60085–60114 ———
25193kill_snd_warboar_ouch55788 60085–60114 ———
25194kill_snd_warboar_ouch_backhand55789 60085–60114 ———
25195kill_snd_warboar_ouch_forehand55790 60085–60114 ———
25196kill_snd_warboar_shield_shove55791 60085–60114 ———
25197kill_snd_warboar_swim_walk55792 60085–60114 ———
25198kill_snd_warboar_whirling_attack55793 60085–60114 ———
25200kill_snd_warboar_wildswing55795 60085–60114 ———
25199kill_snd_warboar_wild_swing55794 60085–60114 ———
25369kill_snd_war_general_1h_attack56372 60085–60114 ———
25370kill_snd_war_general_1h_attack0156373 60085–60114 ———
25371kill_snd_war_general_1h_attack0256374 60085–60114 ———
25372kill_snd_war_general_1h_attack0356375 60085–60114 ———
25431kill_snd_war_general_1h_sword_enter56488 60085–60114 ———
25373kill_snd_war_general_attack56376 60085–60114 ———
25374kill_snd_war_general_attack0156377 60085–60114 ———
25375kill_snd_war_general_attack0256378 60085–60114 ———
25376kill_snd_war_general_attack0356379 60085–60114 ———
25433kill_snd_war_general_combat_enter56490 60085–60114 ———
25416kill_snd_war_general_dead_enter56452 60085–60114 ———
25432kill_snd_war_general_fs56489 60085–60114 ———
25434kill_snd_war_general_idle0156491 60085–60114 ———
25435kill_snd_war_general_idle0256492 60085–60114 ———
25417kill_snd_war_general_knockeddowntoknees56453 60085–60114 ———
25377kill_snd_war_general_offensive_buff56380 60085–60114 ———
25436kill_snd_war_general_ouch_forehand56493 60085–60114 ———
25418kill_snd_war_general_whirling_attack56454 60085–60114 ———
25419kill_snd_war_general_wild_swing56455 60085–60114 ———
25378kill_snd_war_general_wing_flap56381 60085–60114 ———
23039kill_snd_wave_crash51068 60085–60114 ———
27593kill_snd_wave_crash0162651 60085–60114 ———
27390kill_snd_were_1h_sword_attack01_vox61980 60085–60114 ———
27391kill_snd_were_1h_sword_attack02_vox61981 60085–60114 ———
27392kill_snd_were_1h_sword_attack03_vox61982 60085–60114 ———
27393kill_snd_were_1h_sword_attack_vox61983 60085–60114 ———
27394kill_snd_were_attack01_vox61984 60085–60114 ———
27395kill_snd_were_attack02_vox61985 60085–60114 ———
27396kill_snd_were_attack_vox61986 60085–60114 ———
27397kill_snd_were_cast_vox61987 60085–60114 ———
27398kill_snd_were_combat_idle01_vox61988 60085–60114 ———
27399kill_snd_were_dead_enter_vox61989 60085–60114 ———
27400kill_snd_were_dual_wield_attack01_vox61990 60085–60114 ———
27401kill_snd_were_dual_wield_attack02_vox61991 60085–60114 ———
27402kill_snd_were_dual_wield_attack03_vox61992 60085–60114 ———
27403kill_snd_were_dual_wield_attack_vox61993 60085–60114 ———
27404kill_snd_were_kick_vox61994 60085–60114 ———
27405kill_snd_were_ouch_vox61995 60085–60114 ———
27406kill_snd_were_shield_shove_vox61996 60085–60114 ———
27407kill_snd_were_super_buff_vox61997 60085–60114 ———
27408kill_snd_were_wild_swing_vox61998 60085–60114 ———
31296kill_snd_whirlattack8483318 60085–60114 ———
26534kill_snd_whirling_attack58633 60085–60114 ———
26506kill_snd_whirl_attk58554 60085–60114 ———
26535kill_snd_wild_swing58634 60085–60114 ———
27029kill_snd_winged_lion_idle_0160469 60085–60114 ———
27030kill_snd_winged_lion_jump_sub60470 60085–60114 ———
30646kill_snd_wingflap_fast8460032 60085–60114 ———
30647kill_snd_wingflap_slow8460033 60085–60114 ———
26483kill_snd_wing_flap58481 60085–60114 ———
31734kill_snd_wing_flap_med8495775 60085–60114 ———
31735kill_snd_wing_flap_small8495776 60085–60114 ———
25310kill_snd_wolfmount_jump56155 60085–60114 ———
31730kill_snd_wood_creak_lp8495500 60085–60114 ———
20358kill_snd_wuoshi_choking_vines45089 60085–60114 ———
20359kill_snd_wuoshi_tree_enter45090 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.