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
15151backpack_1h_crush_parry_backhand25104 60085–60114 ———
15152backpack_1h_crush_parry_down25105 60085–60114 ———
15153backpack_1h_crush_parry_forehand25106 60085–60114 ———
15154backpack_1h_crush_parry_thrust25107 60085–60114 ———
15155backpack_1h_crush_strafe_left25108 60085–60114 ———
15156backpack_1h_crush_strafe_right25109 60085–60114 ———
15157backpack_1h_crush_walk25110 60085–60114 ———
15158backpack_1h_pierce_attack25111 60085–60114 ———
15159backpack_1h_pierce_attack0125112 60085–60114 ———
15160backpack_1h_pierce_attack0225113 60085–60114 ———
15161backpack_1h_pierce_attack0325114 60085–60114 ———
15162backpack_1h_pierce_attack_recoil25115 60085–60114 ———
15163backpack_1h_pierce_attack_recoil0125116 60085–60114 ———
15164backpack_1h_pierce_attack_recoil0225117 60085–60114 ———
15165backpack_1h_pierce_attack_recoil0325118 60085–60114 ———
15166backpack_1h_pierce_backup25119 60085–60114 ———
15167backpack_1h_pierce_dodge_backhand25120 60085–60114 ———
15168backpack_1h_pierce_dodge_down25121 60085–60114 ———
15169backpack_1h_pierce_dodge_forehand25122 60085–60114 ———
15170backpack_1h_pierce_dodge_thrust25123 60085–60114 ———
15171backpack_1h_pierce_enter25124 60085–60114 ———
15172backpack_1h_pierce_exit25125 60085–60114 ———
15173backpack_1h_pierce_idle25126 60085–60114 ———
15174backpack_1h_pierce_ouch_backhand25127 60085–60114 ———
15175backpack_1h_pierce_ouch_down25128 60085–60114 ———
15176backpack_1h_pierce_ouch_forehand25129 60085–60114 ———
15177backpack_1h_pierce_ouch_thrust25130 60085–60114 ———
15178backpack_1h_pierce_parry_backhand25131 60085–60114 ———
15179backpack_1h_pierce_parry_down25132 60085–60114 ———
15180backpack_1h_pierce_parry_forehand25133 60085–60114 ———
15181backpack_1h_pierce_parry_thrust25134 60085–60114 ———
15182backpack_1h_pierce_strafe_left25135 60085–60114 ———
15183backpack_1h_pierce_strafe_right25136 60085–60114 ———
15184backpack_1h_pierce_walk25137 60085–60114 ———
15185backpack_1h_sword_attack25138 60085–60114 ———
15186backpack_1h_sword_attack0125139 60085–60114 ———
15187backpack_1h_sword_attack0225140 60085–60114 ———
15188backpack_1h_sword_attack0325141 60085–60114 ———
15189backpack_1h_sword_attack_recoil25142 60085–60114 ———
15190backpack_1h_sword_attack_recoil0125143 60085–60114 ———
15191backpack_1h_sword_attack_recoil0225144 60085–60114 ———
15192backpack_1h_sword_attack_recoil0325145 60085–60114 ———
15193backpack_1h_sword_backup25146 60085–60114 ———
15194backpack_1h_sword_death_blow25147 60085–60114 ———
15195backpack_1h_sword_death_blow0125148 60085–60114 ———
15196backpack_1h_sword_dodge_backhand25149 60085–60114 ———
15197backpack_1h_sword_dodge_down25150 60085–60114 ———
15198backpack_1h_sword_dodge_forehand25151 60085–60114 ———
15199backpack_1h_sword_dodge_thrust25152 60085–60114 ———
15200backpack_1h_sword_enter25153 60085–60114 ———
15201backpack_1h_sword_exit25154 60085–60114 ———
15202backpack_1h_sword_idle25155 60085–60114 ———
15203backpack_1h_sword_ouch_backhand25156 60085–60114 ———
15204backpack_1h_sword_ouch_down25157 60085–60114 ———
15205backpack_1h_sword_ouch_forehand25158 60085–60114 ———
15206backpack_1h_sword_ouch_thrust25159 60085–60114 ———
15207backpack_1h_sword_parry_backhand25160 60085–60114 ———
15208backpack_1h_sword_parry_down25161 60085–60114 ———
15209backpack_1h_sword_parry_forehand25162 60085–60114 ———
15210backpack_1h_sword_parry_thrust25163 60085–60114 ———
15211backpack_1h_sword_strafe_left25164 60085–60114 ———
15212backpack_1h_sword_strafe_right25165 60085–60114 ———
15213backpack_1h_sword_walk25166 60085–60114 ———
15215backpack_1h_thrown_attack25168 60085–60114 ———
15216backpack_1h_thrown_backup25169 60085–60114 ———
15217backpack_1h_thrown_dodge_backhand25170 60085–60114 ———
15218backpack_1h_thrown_dodge_down25171 60085–60114 ———
15219backpack_1h_thrown_dodge_forehand25172 60085–60114 ———
15220backpack_1h_thrown_dodge_thrust25173 60085–60114 ———
15221backpack_1h_thrown_idle25174 60085–60114 ———
15222backpack_1h_thrown_ouch_backhand25175 60085–60114 ———
15223backpack_1h_thrown_ouch_down25176 60085–60114 ———
15224backpack_1h_thrown_ouch_forehand25177 60085–60114 ———
15225backpack_1h_thrown_ouch_thrust25178 60085–60114 ———
15226backpack_1h_thrown_strafe_left25179 60085–60114 ———
15227backpack_1h_thrown_strafe_right25180 60085–60114 ———
15228backpack_1h_thrown_walk25181 60085–60114 ———
15214backpack_1h_throw_attack25167 60085–60114 ———
15229backpack_1h_wand_attack25182 60085–60114 ———
15230backpack_1h_wand_attack0125183 60085–60114 ———
15231backpack_1h_wand_attack0225184 60085–60114 ———
15232backpack_1h_wand_attack0325185 60085–60114 ———
15233backpack_1h_wand_attack_recoil25186 60085–60114 ———
15234backpack_1h_wand_attack_recoil0125187 60085–60114 ———
15235backpack_1h_wand_attack_recoil0225188 60085–60114 ———
15236backpack_1h_wand_attack_recoil0325189 60085–60114 ———
15237backpack_1h_wand_backup25190 60085–60114 ———
15238backpack_1h_wand_dodge_backhand25191 60085–60114 ———
15239backpack_1h_wand_dodge_down25192 60085–60114 ———
15240backpack_1h_wand_dodge_forehand25193 60085–60114 ———
15241backpack_1h_wand_dodge_thrust25194 60085–60114 ———
15242backpack_1h_wand_enter25195 60085–60114 ———
15243backpack_1h_wand_exit25196 60085–60114 ———
15244backpack_1h_wand_idle25197 60085–60114 ———
15245backpack_1h_wand_ouch_backhand25198 60085–60114 ———
15246backpack_1h_wand_ouch_down25199 60085–60114 ———
15247backpack_1h_wand_ouch_forehand25200 60085–60114 ———
15248backpack_1h_wand_ouch_thrust25201 60085–60114 ———
15249backpack_1h_wand_parry_backhand25202 60085–60114 ———
15250backpack_1h_wand_parry_down25203 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.