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
31530kill_snd_amyg_sword_attack_028488229 60085–60114 ———
31531kill_snd_amyg_sword_attack_038488230 60085–60114 ———
31532kill_snd_amyg_whirling_attack8488231 60085–60114 ———
31533kill_snd_amyg_wild_swing8488232 60085–60114 ———
25509kill_snd_angler_mount_glide56663 60085–60114 ———
25510kill_snd_angler_mount_idle56664 60085–60114 ———
25532kill_snd_angler_mount_idle0256755 60085–60114 ———
25511kill_snd_angler_mount_idle_0156665 60085–60114 ———
25512kill_snd_angler_mount_jump56666 60085–60114 ———
25513kill_snd_angler_mount_jump_substitute56667 60085–60114 ———
25533kill_snd_angler_mount_scratch56756 60085–60114 ———
25534kill_snd_angler_mount_vox_0156757 60085–60114 ———
25535kill_snd_angler_mount_vox_0256758 60085–60114 ———
25536kill_snd_angler_mount_vox_0356759 60085–60114 ———
25537kill_snd_angler_mount_vox_short56760 60085–60114 ———
31534kill_snd_ankylosaurus_attack8488479 60085–60114 ———
31535kill_snd_ankylosaurus_attack018488480 60085–60114 ———
31536kill_snd_ankylosaurus_attack028488481 60085–60114 ———
31537kill_snd_ankylosaurus_attack038488482 60085–60114 ———
31538kill_snd_ankylosaurus_chargeup8488483 60085–60114 ———
31539kill_snd_ankylosaurus_combat_enter8488484 60085–60114 ———
31540kill_snd_ankylosaurus_combat_exit8488485 60085–60114 ———
31541kill_snd_ankylosaurus_dead_enter8488486 60085–60114 ———
31542kill_snd_ankylosaurus_idle028488487 60085–60114 ———
31543kill_snd_ankylosaurus_knocktoback_getup8488488 60085–60114 ———
31544kill_snd_ankylosaurus_ouch8488489 60085–60114 ———
31545kill_snd_ankylosaurus_ouch_backhand8488490 60085–60114 ———
31546kill_snd_ankylosaurus_ouch_down8488491 60085–60114 ———
31547kill_snd_ankylosaurus_ouch_forehand8488492 60085–60114 ———
31548kill_snd_ankylosaurus_shield_shove8488493 60085–60114 ———
31549kill_snd_ankylosaurus_whirling_attack8488494 60085–60114 ———
31550kill_snd_ankylosaurus_whoosh8488495 60085–60114 ———
31551kill_snd_ankylosaurus_wildswing8488496 60085–60114 ———
21878kill_snd_aof_anvilfall48488 60085–60114 ———
21879kill_snd_aof_anvilhit48489 60085–60114 ———
31315kill_snd_apatosaurus_attack8483793 60085–60114 ———
31316kill_snd_apatosaurus_attack018483794 60085–60114 ———
31317kill_snd_apatosaurus_attack028483795 60085–60114 ———
31318kill_snd_apatosaurus_attack038483796 60085–60114 ———
31319kill_snd_apatosaurus_chargeup8483797 60085–60114 ———
31320kill_snd_apatosaurus_combat_enter8483798 60085–60114 ———
31321kill_snd_apatosaurus_combat_exit8483799 60085–60114 ———
31322kill_snd_apatosaurus_dead_enter8483800 60085–60114 ———
31323kill_snd_apatosaurus_dodge_backhand8483801 60085–60114 ———
31324kill_snd_apatosaurus_idle018483802 60085–60114 ———
31325kill_snd_apatosaurus_knocktoback8483803 60085–60114 ———
31326kill_snd_apatosaurus_knocktoback_getup8483804 60085–60114 ———
31327kill_snd_apatosaurus_ouch_backhand8483805 60085–60114 ———
31328kill_snd_apatosaurus_ouch_down8483806 60085–60114 ———
31329kill_snd_apatosaurus_ouch_forehand8483807 60085–60114 ———
31330kill_snd_apatosaurus_shield_shove8483808 60085–60114 ———
31331kill_snd_apatosaurus_whirling_attack8483809 60085–60114 ———
31332kill_snd_apatosaurus_wild_swing8483810 60085–60114 ———
23033kill_snd_ape51055 60085–60114 ———
26583kill_snd_attack58889 60085–60114 ———
26584kill_snd_attack0158890 60085–60114 ———
26585kill_snd_attack0258891 60085–60114 ———
26586kill_snd_attack0358892 60085–60114 ———
26773kill_snd_attack0459417 60085–60114 ———
26587kill_snd_attack_dive58893 60085–60114 ———
26588kill_snd_attack_hug58894 60085–60114 ———
27427kill_snd_attack_long62121 60085–60114 ———
27428kill_snd_attack_short62122 60085–60114 ———
30741kill_snd_attack_vox8465103 60085–60114 ———
31731kill_snd_attack_whoosh8495747 60085–60114 ———
27268kill_snd_baelon_attack61615 60085–60114 ———
27269kill_snd_baelon_attack0161616 60085–60114 ———
27270kill_snd_baelon_attack_arms61617 60085–60114 ———
27271kill_snd_baelon_fs61618 60085–60114 ———
27272kill_snd_baelon_idle0261619 60085–60114 ———
27273kill_snd_baelon_idle0361620 60085–60114 ———
27274kill_snd_baelon_lose_weapon61621 60085–60114 ———
27275kill_snd_baelon_ouch61622 60085–60114 ———
27276kill_snd_baelon_powerslam61623 60085–60114 ———
27277kill_snd_baelon_summon61624 60085–60114 ———
27278kill_snd_baelon_targeted_right61625 60085–60114 ———
27279kill_snd_baelon_transition_back61626 60085–60114 ———
27280kill_snd_baelon_transition_back01_extract61627 60085–60114 ———
27281kill_snd_baelon_transition_back_extract61628 60085–60114 ———
27282kill_snd_baelon_transition_left_extract61629 60085–60114 ———
27283kill_snd_baelon_transition_right61630 60085–60114 ———
27284kill_snd_baelon_transition_right_extract61631 60085–60114 ———
27285kill_snd_baelon_unarmed_attack61632 60085–60114 ———
27286kill_snd_baelon_unarmed_attack0161633 60085–60114 ———
27287kill_snd_baelon_unarmed_attack0261634 60085–60114 ———
27288kill_snd_baelon_unarmed_attack_fistslam61635 60085–60114 ———
27289kill_snd_baelon_unarmed_attack_jumpslam61636 60085–60114 ———
27290kill_snd_baelon_unarmed_attack_stomp61637 60085–60114 ———
27291kill_snd_baelon_unarmed_dead_enter61638 60085–60114 ———
27292kill_snd_baelon_unarmed_fs61639 60085–60114 ———
27293kill_snd_baelon_unarmed_idle0161640 60085–60114 ———
27294kill_snd_baelon_unarmed_idle0261641 60085–60114 ———
27295kill_snd_baelon_unarmed_ouch61642 60085–60114 ———
27296kill_snd_baelon_unarmed_portal_jump61643 60085–60114 ———
27297kill_snd_baelon_unarmed_portal_stomp61644 60085–60114 ———
27298kill_snd_baelon_unarmed_victory61645 60085–60114 ———
27299kill_snd_baelon_whirling_attack61646 60085–60114 ———
27300kill_snd_baelon_wild_swing61647 60085–60114 ———
22536kill_snd_barrel_cannon49788 60085–60114 ———
23034kill_snd_bear_roar51056 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.