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
7047bostaff_attack031969 60085–60114 ———
1662bostaff_attack_recoil1970 1–843 ———
8120bostaff_attack_recoil10859 60085–60114 ———
1663bostaff_attack_recoil011971 1–843 ———
8121bostaff_attack_recoil0110860 60085–60114 ———
1664bostaff_attack_recoil021972 1–843 ———
8122bostaff_attack_recoil0210861 60085–60114 ———
1665bostaff_attack_recoil031973 1–843 ———
8123bostaff_attack_recoil0310862 60085–60114 ———
378bostaff_backup86 1–843 ———
8124bostaff_backup10863 60085–60114 ———
2975bostaff_charge_up4619 1–843 ———
8125bostaff_charge_up10864 60085–60114 ———
2357bostaff_defensive_buff2951 1–843 ———
8126bostaff_defensive_buff10865 60085–60114 ———
1666bostaff_dodge_backhand1974 1–843 ———
8127bostaff_dodge_backhand10866 60085–60114 ———
1667bostaff_dodge_down1975 1–843 ———
8128bostaff_dodge_down10867 60085–60114 ———
1668bostaff_dodge_forehand1976 1–843 ———
8129bostaff_dodge_forehand10868 60085–60114 ———
1669bostaff_dodge_thrust1977 1–843 ———
8130bostaff_dodge_thrust10869 60085–60114 ———
379bostaff_enter95 1–843 ———
8131bostaff_enter10870 60085–60114 ———
380bostaff_exit98 1–843 ———
8132bostaff_exit10871 60085–60114 ———
2358bostaff_feint2952 1–843 ———
8133bostaff_feint10872 60085–60114 ———
381bostaff_idle101 1–843 ———
6662bostaff_idle101 60085–60114 ———
8134bostaff_idle0110873 60085–60114 ———
2359bostaff_kick2953 1–843 ———
7243bostaff_kick2953 60085–60114 ———
2360bostaff_knockdowntoknees2954 1–843 ———
8135bostaff_knockdowntoknees10874 60085–60114 ———
2361bostaff_knockedtoback2955 1–843 ———
8136bostaff_knockedtoback10875 60085–60114 ———
2362bostaff_knockedtoback_getup2956 1–843 ———
8137bostaff_knockedtoback_getup10876 60085–60114 ———
2363bostaff_offensive_buff2957 1–843 ———
8138bostaff_offensive_buff10877 60085–60114 ———
1670bostaff_ouch_backhand1978 1–843 ———
8139bostaff_ouch_backhand10878 60085–60114 ———
1671bostaff_ouch_down1979 1–843 ———
8140bostaff_ouch_down10879 60085–60114 ———
1672bostaff_ouch_forehand1980 1–843 ———
8141bostaff_ouch_forehand10880 60085–60114 ———
1673bostaff_ouch_thrust1981 1–843 ———
8142bostaff_ouch_thrust10881 60085–60114 ———
1674bostaff_parry_backhand1982 1–843 ———
8143bostaff_parry_backhand10882 60085–60114 ———
1675bostaff_parry_down1983 1–843 ———
8144bostaff_parry_down10883 60085–60114 ———
1676bostaff_parry_forehand1984 1–843 ———
8145bostaff_parry_forehand10884 60085–60114 ———
1677bostaff_parry_thrust1985 1–843 ———
8146bostaff_parry_thrust10885 60085–60114 ———
382bostaff_strafe_left118 1–843 ———
8147bostaff_strafe_left10886 60085–60114 ———
383bostaff_strafe_right119 1–843 ———
8148bostaff_strafe_right10887 60085–60114 ———
2364bostaff_super_buff2958 1–843 ———
8149bostaff_super_buff10888 60085–60114 ———
2365bostaff_taunt_combat_art2959 1–843 ———
8150bostaff_taunt_combat_art10889 60085–60114 ———
384bostaff_walk120 1–843 ———
8151bostaff_walk10890 60085–60114 ———
2366bostaff_whirling_attack2960 1–843 ———
7244bostaff_whirling_attack2960 60085–60114 ———
2367bostaff_wild_swing2961 1–843 ———
7245bostaff_wild_swing2961 60085–60114 ———
210bow121 1–843 bows.bows to %t.—
6663bow121 60085–60114 bows.bows to %t.—
2814bowstring3994 1–843 ———
8170bowstring10909 60085–60114 ———
2815bowstring_electricity3995 1–843 ———
8171bowstring_electricity10910 60085–60114 ———
2816bowstring_electricity_red3996 1–843 ———
8172bowstring_electricity_red10911 60085–60114 ———
1905bow_aim_down2282 1–843 ———
8152bow_aim_down10891 60085–60114 ———
1906bow_aim_up2283 1–843 ———
8153bow_aim_up10892 60085–60114 ———
1795bow_attack2112 1–843 ———
8154bow_attack10893 60085–60114 ———
13835bow_attack0121677 60085–60114 ———
13836bow_attack0221678 60085–60114 ———
13837bow_attack0321679 60085–60114 ———
2266bow_attack_2x2829 1–843 ———
8155bow_attack_2x10894 60085–60114 ———
1796bow_backup2113 1–843 ———
8156bow_backup10895 60085–60114 ———
1797bow_dodge_backhand2114 1–843 ———
7075bow_dodge_backhand2114 60085–60114 ———
1798bow_dodge_down2115 1–843 ———
7076bow_dodge_down2115 60085–60114 ———
1799bow_dodge_forehand2116 1–843 ———
7077bow_dodge_forehand2116 60085–60114 ———
1800bow_dodge_thrust2117 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.