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
25226kill_snd_tallon_ouch_rx55871 60085–60114 ———
25201kill_snd_tallon_zek_arrow_get55805 60085–60114 ———
25203kill_snd_tallon_zek_bowshot_0155807 60085–60114 ———
25204kill_snd_tallon_zek_bowshot_0255808 60085–60114 ———
25205kill_snd_tallon_zek_bowshot_0355809 60085–60114 ———
25202kill_snd_tallon_zek_bow_pull55806 60085–60114 ———
27059kill_snd_tbird_pet_angry60653 60085–60114 ———
27060kill_snd_tbird_pet_attack0160654 60085–60114 ———
27061kill_snd_tbird_pet_happy60655 60085–60114 ———
27062kill_snd_tbird_pet_idle0160656 60085–60114 ———
27063kill_snd_tbird_pet_idle0260657 60085–60114 ———
27064kill_snd_tbird_pet_idle0360658 60085–60114 ———
27065kill_snd_tbird_pet_trick60659 60085–60114 ———
20356kill_snd_teleport_druidring_flash45087 60085–60114 ———
20357kill_snd_teleport_druidring_loop45088 60085–60114 ———
25279kill_snd_terrorbird_mount_idle_0156015 60085–60114 ———
25280kill_snd_terrorbird_mount_idle_0256016 60085–60114 ———
25281kill_snd_terrorbird_mount_idle_0356017 60085–60114 ———
25282kill_snd_terrorbird_mount_idle_0456018 60085–60114 ———
25328kill_snd_terrorbird_mount_jump56223 60085–60114 ———
25283kill_snd_terrorbird_mount_jump_substitute56019 60085–60114 ———
25285kill_snd_terrorbird_mount_wingflap_0156038 60085–60114 ———
27197kill_snd_tirun_enf_attack61208 60085–60114 ———
27198kill_snd_tirun_enf_attack0161209 60085–60114 ———
27199kill_snd_tirun_enf_attack0261210 60085–60114 ———
27200kill_snd_tirun_enf_attack0361211 60085–60114 ———
27201kill_snd_tirun_enf_cast161212 60085–60114 ———
27202kill_snd_tirun_enf_chargeup61213 60085–60114 ———
27203kill_snd_tirun_enf_combat_enter61214 60085–60114 ———
27204kill_snd_tirun_enf_combat_idle0161215 60085–60114 ———
27205kill_snd_tirun_enf_dead61216 60085–60114 ———
27206kill_snd_tirun_enf_knocktoknees61218 60085–60114 ———
27207kill_snd_tirun_enf_ouch61219 60085–60114 ———
27208kill_snd_tirun_enf_shield_shove61220 60085–60114 ———
27209kill_snd_tirun_enf_whirling_attack61221 60085–60114 ———
27210kill_snd_tirun_enf_wild_swing61222 60085–60114 ———
31348kill_snd_trex_attack8483843 60085–60114 ———
31349kill_snd_trex_attack018483844 60085–60114 ———
31350kill_snd_trex_attack028483845 60085–60114 ———
31351kill_snd_trex_attack038483846 60085–60114 ———
31352kill_snd_trex_chargeup8483847 60085–60114 ———
31353kill_snd_trex_combat_enter8483848 60085–60114 ———
31354kill_snd_trex_combat_idle018483849 60085–60114 ———
31355kill_snd_trex_dead_enter8483850 60085–60114 ———
31356kill_snd_trex_dodge_down8483851 60085–60114 ———
31357kill_snd_trex_dodge_forehand8483852 60085–60114 ———
31358kill_snd_trex_dodge_thrust8483853 60085–60114 ———
31359kill_snd_trex_idle028483854 60085–60114 ———
31360kill_snd_trex_kick8483855 60085–60114 ———
31361kill_snd_trex_knockback_getup8483856 60085–60114 ———
31362kill_snd_trex_knockedtoback8483857 60085–60114 ———
31363kill_snd_trex_ouch8483858 60085–60114 ———
31364kill_snd_trex_ouch_backhand8483859 60085–60114 ———
31365kill_snd_trex_ouch_down8483860 60085–60114 ———
31366kill_snd_trex_ouch_forehand8483861 60085–60114 ———
31367kill_snd_trex_shield_shove8483862 60085–60114 ———
31368kill_snd_trex_whilrling_attack8483863 60085–60114 ———
31369kill_snd_trex_wildswing8483864 60085–60114 ———
31386kill_snd_triceratops_attack8484588 60085–60114 ———
31387kill_snd_triceratops_attack018484589 60085–60114 ———
31388kill_snd_triceratops_attack028484590 60085–60114 ———
31389kill_snd_triceratops_attack038484591 60085–60114 ———
31390kill_snd_triceratops_chargeup8484592 60085–60114 ———
31391kill_snd_triceratops_combat_enter8484593 60085–60114 ———
31392kill_snd_triceratops_dead_enter8484594 60085–60114 ———
31393kill_snd_triceratops_idle028484595 60085–60114 ———
31394kill_snd_triceratops_knocktoback8484596 60085–60114 ———
31395kill_snd_triceratops_ouch8484597 60085–60114 ———
31396kill_snd_triceratops_ouch_down8484598 60085–60114 ———
31397kill_snd_triceratops_ouch_forehand8484599 60085–60114 ———
31398kill_snd_triceratops_shield_shove8484600 60085–60114 ———
31399kill_snd_triceratops_whirling_attack8484601 60085–60114 ———
31400kill_snd_triceratops_wildswing8484602 60085–60114 ———
30652kill_snd_trick8460246 60085–60114 ———
28171kill_snd_trick0165017 60085–60114 ———
28172kill_snd_trick0265018 60085–60114 ———
25034kill_snd_twolf_attack55389 60085–60114 ———
25035kill_snd_twolf_attack_0155390 60085–60114 ———
25036kill_snd_twolf_attack_0255391 60085–60114 ———
25037kill_snd_twolf_attack_0355392 60085–60114 ———
25038kill_snd_twolf_attk55393 60085–60114 ———
25039kill_snd_twolf_attk_0155394 60085–60114 ———
25040kill_snd_twolf_attk_0255395 60085–60114 ———
25041kill_snd_twolf_cast_loop55396 60085–60114 ———
25042kill_snd_twolf_charge_up55397 60085–60114 ———
25043kill_snd_twolf_death55398 60085–60114 ———
25044kill_snd_twolf_dodge_back55399 60085–60114 ———
25045kill_snd_twolf_dodge_down55400 60085–60114 ———
25046kill_snd_twolf_dodge_fore55401 60085–60114 ———
25047kill_snd_twolf_dodge_thrust55402 60085–60114 ———
25048kill_snd_twolf_eat_idle55403 60085–60114 ———
25049kill_snd_twolf_habitat0155404 60085–60114 ———
25050kill_snd_twolf_habitat0255405 60085–60114 ———
25051kill_snd_twolf_idle_0155406 60085–60114 ———
25052kill_snd_twolf_idle_0255407 60085–60114 ———
25053kill_snd_twolf_ouch55408 60085–60114 ———
25054kill_snd_twolf_ouch_knockknees55409 60085–60114 ———
25055kill_snd_twolf_ouch_thrust55410 60085–60114 ———
25056kill_snd_twolf_sniff_idle55411 60085–60114 ———
25057kill_snd_twolf_walk_sniff55412 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.