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
10909pawstep_leather_ice15057 60085–60114 ———
10910pawstep_leather_metal15058 60085–60114 ———
10911pawstep_leather_mud15059 60085–60114 ———
10912pawstep_leather_sand15060 60085–60114 ———
10913pawstep_leather_snow15061 60085–60114 ———
10914pawstep_leather_stone15062 60085–60114 ———
10915pawstep_leather_water15063 60085–60114 ———
10916pawstep_leather_wood15064 60085–60114 ———
10880pawstep_snow14913 60085–60114 ———
10872pawstep_trigger14839 60085–60114 ———
13621pbae_cast_blast21129 60085–60114 ———
2125pbae_divine_snd2655 1–843 ———
9217pbae_divine_snd11972 60085–60114 ———
9218peace_combat11973 60085–60114 ———
9219peace_fx11974 60085–60114 ———
9220peace_off11975 60085–60114 ———
269peer411 1–843 peers curiously.peers curiously at %t.—
9221peer11976 60085–60114 peers curiously.peers curiously at %t.—
13450pegasus_backup20804 60085–60114 ———
13451pegasus_fall20805 60085–60114 ———
12463pegasus_fly18795 60085–60114 ———
13452pegasus_fly_backup20806 60085–60114 ———
13453pegasus_fly_dive20807 60085–60114 ———
13454pegasus_fly_enter20808 60085–60114 ———
13455pegasus_fly_fall20809 60085–60114 ———
13456pegasus_fly_glide20810 60085–60114 ———
13457pegasus_fly_idle20811 60085–60114 ———
13458pegasus_fly_idle0120812 60085–60114 ———
13459pegasus_fly_jump20813 60085–60114 ———
13460pegasus_fly_jumpsubstitute20814 60085–60114 ———
13461pegasus_fly_run20815 60085–60114 ———
13462pegasus_fly_turn_left20816 60085–60114 ———
13463pegasus_fly_turn_right20817 60085–60114 ———
13464pegasus_fly_walk20818 60085–60114 ———
12438pegasus_glide18736 60085–60114 ———
12439pegasus_idle18737 60085–60114 ———
13465pegasus_idle0120819 60085–60114 ———
13466pegasus_jump20820 60085–60114 ———
13467pegasus_jump_substitute20821 60085–60114 ———
13468pegasus_land20822 60085–60114 ———
13469pegasus_long_fall20823 60085–60114 ———
14859pegasus_mount_attack24272 60085–60114 ———
14860pegasus_mount_attack0124273 60085–60114 ———
14861pegasus_mount_attack0224274 60085–60114 ———
14862pegasus_mount_attack0324275 60085–60114 ———
14335pegasus_mount_backup22888 60085–60114 ———
14863pegasus_mount_cast24276 60085–60114 ———
14864pegasus_mount_combat_enter24277 60085–60114 ———
14865pegasus_mount_combat_exit24278 60085–60114 ———
14866pegasus_mount_combat_idle24279 60085–60114 ———
14867pegasus_mount_dead24280 60085–60114 ———
14868pegasus_mount_dead_enter24281 60085–60114 ———
14869pegasus_mount_dead_enter0124282 60085–60114 ———
14870pegasus_mount_death24283 60085–60114 ———
14871pegasus_mount_death0124284 60085–60114 ———
14336pegasus_mount_fall22889 60085–60114 ———
14337pegasus_mount_fly_backup22890 60085–60114 ———
14338pegasus_mount_fly_climb22891 60085–60114 ———
14339pegasus_mount_fly_dive22892 60085–60114 ———
14340pegasus_mount_fly_down22893 60085–60114 ———
14377pegasus_mount_fly_fall22989 60085–60114 ———
14341pegasus_mount_fly_glide22894 60085–60114 ———
14342pegasus_mount_fly_glide_left22895 60085–60114 ———
14343pegasus_mount_fly_glide_right22896 60085–60114 ———
14344pegasus_mount_fly_idle22897 60085–60114 ———
14345pegasus_mount_fly_run22898 60085–60114 ———
14346pegasus_mount_fly_strafe_left22899 60085–60114 ———
14347pegasus_mount_fly_strafe_right22900 60085–60114 ———
14348pegasus_mount_fly_turn_left22901 60085–60114 ———
14349pegasus_mount_fly_turn_right22902 60085–60114 ———
14350pegasus_mount_fly_up22903 60085–60114 ———
14351pegasus_mount_fly_walk22904 60085–60114 ———
14352pegasus_mount_idle22905 60085–60114 ———
14353pegasus_mount_jump22906 60085–60114 ———
14354pegasus_mount_jump_substitute22907 60085–60114 ———
14355pegasus_mount_land22908 60085–60114 ———
14356pegasus_mount_long_fall22909 60085–60114 ———
14872pegasus_mount_ouch24285 60085–60114 ———
14873pegasus_mount_ouch0124286 60085–60114 ———
14357pegasus_mount_run22910 60085–60114 ———
14358pegasus_mount_turn_left22911 60085–60114 ———
14359pegasus_mount_turn_right22912 60085–60114 ———
14360pegasus_mount_walk22913 60085–60114 ———
14874pegasus_mount_wild_swing24287 60085–60114 ———
12440pegasus_run18738 60085–60114 ———
13470pegasus_turn_left20824 60085–60114 ———
13471pegasus_turn_right20825 60085–60114 ———
12441pegasus_walk18739 60085–60114 ———
1943pen012331 1–843 ———
9222pen0111977 60085–60114 ———
13802perch21548 60085–60114 ———
12783perch_idle19502 60085–60114 ———
14180persist_blue_tagged22496 60085–60114 ———
12177persist_book_dervish18101 60085–60114 ———
15064persist_bug_swarm24851 60085–60114 ———
13842persist_cold_book_swarm21699 60085–60114 ———
2239persist_damage2790 1–843 ———
7202persist_damage2790 60085–60114 ———
2515persist_debuff3118 1–843 ———
7259persist_debuff3118 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.