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
7078bow_dodge_thrust2117 60085–60114 ———
1801bow_enter2118 1–843 ———
8157bow_enter10896 60085–60114 ———
1802bow_exit2119 1–843 ———
8158bow_exit10897 60085–60114 ———
1850bow_getarrow2175 1–843 ———
8159bow_getarrow10898 60085–60114 ———
1803bow_idle2120 1–843 ———
7079bow_idle2120 60085–60114 ———
2368bow_knockdowntoknees2962 1–843 ———
8160bow_knockdowntoknees10899 60085–60114 ———
2369bow_knockedtoback2963 1–843 ———
8161bow_knockedtoback10900 60085–60114 ———
2370bow_knockedtoback_getup2964 1–843 ———
8162bow_knockedtoback_getup10901 60085–60114 ———
1804bow_ouch_backhand2121 1–843 ———
7080bow_ouch_backhand2121 60085–60114 ———
1805bow_ouch_down2122 1–843 ———
7081bow_ouch_down2122 60085–60114 ———
1806bow_ouch_forehand2123 1–843 ———
7082bow_ouch_forehand2123 60085–60114 ———
1807bow_ouch_thrust2124 1–843 ———
7083bow_ouch_thrust2124 60085–60114 ———
1851bow_pullback2176 1–843 ———
8163bow_pullback10902 60085–60114 ———
1852bow_release2177 1–843 ———
8164bow_release10903 60085–60114 ———
28315bow_run65684 60085–60114 ———
1907bow_sheathe2284 1–843 ———
8165bow_sheathe10904 60085–60114 ———
1808bow_strafe_left2125 1–843 ———
8166bow_strafe_left10905 60085–60114 ———
1809bow_strafe_right2126 1–843 ———
8167bow_strafe_right10906 60085–60114 ———
1908bow_unsheathe2285 1–843 ———
8168bow_unsheathe10907 60085–60114 ———
1810bow_walk2127 1–843 ———
8169bow_walk10908 60085–60114 ———
211brandish1124 1–843 shows %g1 weapon.brandishes %g1 weapon at %t.—
8173brandish10912 60085–60114 shows %g1 weapon.brandishes %g1 weapon at %t.—
385breath122 1–843 ———
8174breath10913 60085–60114 ———
2292breathweapon2870 1–843 ———
8179breathweapon10918 60085–60114 ———
3114breath_attack5153 1–843 ———
8175breath_attack10914 60085–60114 ———
8176breath_attack_blue10915 60085–60114 ———
28266breath_attack_ethernere65523 60085–60114 ———
15777breath_attack_ice26074 60085–60114 ———
15778breath_attack_necro26075 60085–60114 ———
8177breath_attack_purple10916 60085–60114 ———
16170breath_blast_barrier27405 60085–60114 ———
14728breath_fx23955 60085–60114 ———
3013breath_nostop4707 1–843 ———
8178breath_nostop10917 60085–60114 ———
11484brew_day_mugs16596 60085–60114 ———
11656brick_throw16789 60085–60114 ———
1429bs_bull_form_01_snd1689 1–843 ———
8180bs_bull_form_01_snd10919 60085–60114 ———
1430bs_cast_armpush_snd1690 1–843 ———
8181bs_cast_armpush_snd10920 60085–60114 ———
1431bs_hooves_snd1691 1–843 ———
8182bs_hooves_snd10921 60085–60114 ———
1432bs_makebull_tone_snd1692 1–843 ———
8183bs_makebull_tone_snd10922 60085–60114 ———
1993bubbles012417 1–843 ———
8184bubbles0110923 60085–60114 ———
17375bubbles_fx32206 60085–60114 ———
16985bubble_trail_fx30766 60085–60114 ———
10570buff_boss0113460 60085–60114 ———
11846buff_fx17358 60085–60114 ———
386burn123 1–843 ———
8185burn10924 60085–60114 ———
11981burrow17667 60085–60114 ———
11982burrow_sound17668 60085–60114 ———
1136burst_sound_011377 1–843 ———
8186burst_sound_0110925 60085–60114 ———
212bye124 1–843 waves goodbye.waves goodbye to %t.—
8187bye10926 60085–60114 waves goodbye.waves goodbye to %t.—
1409c1669 1–843 ———
8188c10927 60085–60114 ———
8192cached_state010931 60085–60114 ———
8193cached_state110932 60085–60114 ———
10845cached_state214589 60085–60114 ———
8189cache_state010928 60085–60114 ———
8190cache_state110929 60085–60114 ———
8191cache_state210930 60085–60114 ———
213cackle125 1–843 cackles.cackles gleefully at %t.—
6664cackle125 60085–60114 cackles.cackles gleefully at %t.—
1521cactus_spiney_sound1825 1–843 ———
8194cactus_spiney_sound10933 60085–60114 ———
1925candle012310 1–843 ———
8195candle0110934 60085–60114 ———
1926candle022311 1–843 ———
8196candle0210935 60085–60114 ———
1927candle032312 1–843 ———
8197candle0310936 60085–60114 ———
1928candle042313 1–843 ———
8198candle0410937 60085–60114 ———
2046candle_flair012482 1–843 ———
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.