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
28861attack_headbutt72191 60085–60114 ———
2940attack_headram4534 1–843 ———
8055attack_headram10794 60085–60114 ———
28862attack_headshake72192 60085–60114 ———
12504attack_head_butt18866 60085–60114 ———
15760attack_hug25963 60085–60114 ———
16243attack_jumpslam27715 60085–60114 ———
16210attack_rage27563 60085–60114 ———
791attack_rear964 1–843 ———
8056attack_rear10795 60085–60114 ———
10826attack_recoil14460 60085–60114 ———
10827attack_recoil0114461 60085–60114 ———
10828attack_recoil0214462 60085–60114 ———
10829attack_recoil0314463 60085–60114 ———
15761attack_roar25964 60085–60114 ———
368attack_roar0169 1–843 ———
8057attack_roar0110796 60085–60114 ———
369attack_scream70 1–843 ———
8058attack_scream10797 60085–60114 ———
14998attack_shuffle24692 60085–60114 ———
8059attack_slam10798 60085–60114 ———
370attack_snap71 1–843 ———
8060attack_snap10799 60085–60114 ———
371attack_sound72 1–843 ———
8061attack_sound10800 60085–60114 ———
3363attack_special6467 1–843 ———
8062attack_special10801 60085–60114 ———
8063attack_special0110802 60085–60114 ———
8064attack_special0210803 60085–60114 ———
8065attack_special0310804 60085–60114 ———
8066attack_special_spring10805 60085–60114 ———
15672attack_spit25634 60085–60114 ———
8067attack_stomp10806 60085–60114 ———
14912attack_swipe24434 60085–60114 ———
880attack_tail1071 1–843 ———
8068attack_tail10807 60085–60114 ———
14999attack_tail_swipe24693 60085–60114 ———
29016attack_tear_enter79461 60085–60114 ———
29017attack_tear_exit79462 60085–60114 ———
29018attack_tear_idle79463 60085–60114 ———
28963attack_tear_skyshrine77009 60085–60114 ———
12822attack_throw_boulder19582 60085–60114 ———
1372attack_thrust_trigger1628 1–843 ———
12505attack_trample18867 60085–60114 ———
3400attack_whirling6643 1–843 ———
8069attack_whirling10808 60085–60114 ———
3401attack_wildswing6644 1–843 ———
8070attack_wildswing10809 60085–60114 ———
1425attack_wing1685 1–843 ———
8071attack_wing10810 60085–60114 ———
3364attack_wings6468 1–843 ———
8072attack_wings10811 60085–60114 ———
12045attack_wing_bolts17826 60085–60114 ———
372attack_woosh0175 1–843 ———
8073attack_woosh0110812 60085–60114 ———
204attention78 1–843 snaps to attention!——
8076attention10815 60085–60114 snaps to attention!——
11307aura_green16225 60085–60114 ———
1786aura_mage2103 1–843 ———
7072aura_mage2103 60085–60114 ———
1787aura_priest2104 1–843 ———
7073aura_priest2104 60085–60114 ———
13961aura_purple21878 60085–60114 ———
7643aura_red9733 60085–60114 ———
11059aura_yellow15640 60085–60114 ———
2880aval_cast_snd4272 1–843 ———
8077aval_cast_snd10816 60085–60114 ———
3229awrh_cast_snd5627 1–843 ———
8078awrh_cast_snd10817 60085–60114 ———
3230awrh_heal2_snd5628 1–843 ———
8079awrh_heal2_snd10818 60085–60114 ———
3231awrh_heal_snd5629 1–843 ———
8080awrh_heal_snd10819 60085–60114 ———
3232awrh_rainfall_snd5630 1–843 ———
8081awrh_rainfall_snd10820 60085–60114 ———
3233aww_whirlcast_snd5631 1–843 ———
8082aww_whirlcast_snd10821 60085–60114 ———
3234aww_whirlparticles_snd5632 1–843 ———
8083aww_whirlparticles_snd10822 60085–60114 ———
14894backhand24344 60085–60114 ———
15131backpack_1h_crush_attack25084 60085–60114 ———
15132backpack_1h_crush_attack0125085 60085–60114 ———
15133backpack_1h_crush_attack0225086 60085–60114 ———
15134backpack_1h_crush_attack0325087 60085–60114 ———
15135backpack_1h_crush_attack_recoil25088 60085–60114 ———
15136backpack_1h_crush_attack_recoil0125089 60085–60114 ———
15137backpack_1h_crush_attack_recoil0225090 60085–60114 ———
15138backpack_1h_crush_attack_recoil0325091 60085–60114 ———
15139backpack_1h_crush_backup25092 60085–60114 ———
15140backpack_1h_crush_dodge_backhand25093 60085–60114 ———
15141backpack_1h_crush_dodge_down25094 60085–60114 ———
15142backpack_1h_crush_dodge_forehand25095 60085–60114 ———
15143backpack_1h_crush_dodge_thrust25096 60085–60114 ———
15144backpack_1h_crush_enter25097 60085–60114 ———
15145backpack_1h_crush_exit25098 60085–60114 ———
15146backpack_1h_crush_idle25099 60085–60114 ———
15147backpack_1h_crush_ouch_backhand25100 60085–60114 ———
15148backpack_1h_crush_ouch_down25101 60085–60114 ———
15149backpack_1h_crush_ouch_forehand25102 60085–60114 ———
15150backpack_1h_crush_ouch_thrust25103 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.