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
27341kill_snd_komodo_ouch61818 60085–60114 ———
27342kill_snd_komodo_whirling_attack61819 60085–60114 ———
27343kill_snd_komodo_wild_swing61820 60085–60114 ———
27028kill_snd_land60454 60085–60114 ———
24943kill_snd_lich_attack55147 60085–60114 ———
24944kill_snd_lich_attack0155148 60085–60114 ———
24945kill_snd_lich_attack0255149 60085–60114 ———
24946kill_snd_lich_attack0355150 60085–60114 ———
24947kill_snd_lich_bride_idle_lp55151 60085–60114 ———
24948kill_snd_lich_combat_enter55152 60085–60114 ———
24949kill_snd_lich_ouch55153 60085–60114 ———
24950kill_snd_lich_whirling_attack55154 60085–60114 ———
24951kill_snd_lich_wild_swing55155 60085–60114 ———
20346kill_snd_lifeburn_castabsorb45077 60085–60114 ———
20347kill_snd_lifeburn_castbase45078 60085–60114 ———
20348kill_snd_lifeburn_resultblast45079 60085–60114 ———
26753kill_snd_lumpy_1h_sword_attack0159348 60085–60114 ———
26754kill_snd_lumpy_attack59349 60085–60114 ———
26755kill_snd_lumpy_attack_0159350 60085–60114 ———
26756kill_snd_lumpy_attack_0259351 60085–60114 ———
26757kill_snd_lumpy_attack_0359352 60085–60114 ———
26758kill_snd_lumpy_attack_bite59353 60085–60114 ———
26759kill_snd_lumpy_attack_bites59354 60085–60114 ———
26760kill_snd_lumpy_attack_breath59355 60085–60114 ———
26761kill_snd_lumpy_attack_shuffle59356 60085–60114 ———
26762kill_snd_lumpy_attack_slam59357 60085–60114 ———
26763kill_snd_lumpy_attack_tail59358 60085–60114 ———
26764kill_snd_lumpy_cast_159359 60085–60114 ———
26765kill_snd_lumpy_combat_enter59360 60085–60114 ———
26766kill_snd_lumpy_dead_enter59361 60085–60114 ———
26767kill_snd_lumpy_roll59362 60085–60114 ———
20349kill_snd_mayong_boen_blanket45080 60085–60114 ———
20350kill_snd_mayong_boen_result45081 60085–60114 ———
27677kill_snd_meatbeast_angry63226 60085–60114 ———
27678kill_snd_meatbeast_attack63227 60085–60114 ———
27679kill_snd_meatbeast_attack0163228 60085–60114 ———
27680kill_snd_meatbeast_combat_enter63229 60085–60114 ———
27681kill_snd_meatbeast_confused63230 60085–60114 ———
27682kill_snd_meatbeast_eat63231 60085–60114 ———
27683kill_snd_meatbeast_hungry63232 60085–60114 ———
27634kill_snd_meatbeast_ide0162913 60085–60114 ———
27636kill_snd_meatbeast_jump62934 60085–60114 ———
27635kill_snd_meatbeast_jumpsub62914 60085–60114 ———
27684kill_snd_meatbeast_ouch63233 60085–60114 ———
27685kill_snd_meatbeast_sick63234 60085–60114 ———
27686kill_snd_meatbeast_sit63235 60085–60114 ———
27687kill_snd_meatbeast_trick63236 60085–60114 ———
23036kill_snd_monkey51058 60085–60114 ———
26775kill_snd_mud_elem_attack59424 60085–60114 ———
26776kill_snd_mud_elem_attack0159425 60085–60114 ———
26777kill_snd_mud_elem_attack0259426 60085–60114 ———
26778kill_snd_mud_elem_chargeup59427 60085–60114 ———
26779kill_snd_mud_elem_dead_enter59428 60085–60114 ———
26780kill_snd_mud_elem_dodge_fore59429 60085–60114 ———
26781kill_snd_mud_elem_knocktoback59430 60085–60114 ———
26782kill_snd_mud_elem_knocktoknees59431 60085–60114 ———
26783kill_snd_mud_elem_ouch_thrust59432 60085–60114 ———
26784kill_snd_mud_elem_shield_shove59433 60085–60114 ———
26785kill_snd_mud_elem_whirl_attack59434 60085–60114 ———
26786kill_snd_mud_elem_wildswing59435 60085–60114 ———
26787kill_snd_mud_vox_attck_0159436 60085–60114 ———
26788kill_snd_mud_vox_attck_0259437 60085–60114 ———
26789kill_snd_mud_vox_attck_roar59438 60085–60114 ———
26790kill_snd_mud_vox_cast_159439 60085–60114 ———
26791kill_snd_mud_vox_dead_enter59440 60085–60114 ———
26792kill_snd_mud_vox_def_buff59441 60085–60114 ———
22533kill_snd_net_toss49772 60085–60114 ———
26505kill_snd_offensive_buff58540 60085–60114 ———
27664kill_snd_othmir_zom_feed63058 60085–60114 ———
27667kill_snd_othmir_zom_ouch63114 60085–60114 ———
27665kill_snd_othmir_zom_sleep_exit63059 60085–60114 ———
26540kill_snd_ouch58657 60085–60114 ———
30742kill_snd_ouch_vox8465110 60085–60114 ———
23037kill_snd_owl_hoot51059 60085–60114 ———
31732kill_snd_parrot_death8495756 60085–60114 ———
31733kill_snd_parrot_ouch8495757 60085–60114 ———
27583kill_snd_parrot_vox62599 60085–60114 ———
27055kill_snd_peck60599 60085–60114 ———
25221kill_snd_pegasus_dive_vox55862 60085–60114 ———
25222kill_snd_pegasus_wingflap_0155863 60085–60114 ———
25223kill_snd_pegasus_wingflap_0255864 60085–60114 ———
30676kill_snd_pet_bunny_angry8462267 60085–60114 ———
30677kill_snd_pet_bunny_attack_018462268 60085–60114 ———
30678kill_snd_pet_bunny_combat_enter18462269 60085–60114 ———
30679kill_snd_pet_bunny_combat_exit8462270 60085–60114 ———
30680kill_snd_pet_bunny_confused8462271 60085–60114 ———
30681kill_snd_pet_bunny_death8462272 60085–60114 ———
30682kill_snd_pet_bunny_eat8462273 60085–60114 ———
30683kill_snd_pet_bunny_hop8462274 60085–60114 ———
30684kill_snd_pet_bunny_hungry8462275 60085–60114 ———
30685kill_snd_pet_bunny_idle028462276 60085–60114 ———
30686kill_snd_pet_bunny_ouch8462277 60085–60114 ———
30687kill_snd_pet_bunny_sneeze8462278 60085–60114 ———
30688kill_snd_pet_bunny_swim8462279 60085–60114 ———
30689kill_snd_pet_bunny_trick8462280 60085–60114 ———
22449kill_snd_pillow_impact49554 60085–60114 ———
31729kill_snd_pirate_zep_creak8495482 60085–60114 ———
20351kill_snd_pumpkin_flaming45082 60085–60114 ———
31674kill_snd_quack8494560 60085–60114 ———
30662kill_snd_rabbit_mount_footstep8461332 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.