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
15251backpack_1h_wand_parry_forehand25204 60085–60114 ———
15252backpack_1h_wand_parry_thrust25205 60085–60114 ———
15253backpack_1h_wand_strafe_left25206 60085–60114 ———
15254backpack_1h_wand_strafe_right25207 60085–60114 ———
15255backpack_1h_wand_walk25208 60085–60114 ———
15256backpack_2h_sword_attack25209 60085–60114 ———
15257backpack_2h_sword_attack0125210 60085–60114 ———
15258backpack_2h_sword_attack0225211 60085–60114 ———
15259backpack_2h_sword_attack0325212 60085–60114 ———
15260backpack_2h_sword_attack_recoil25213 60085–60114 ———
15261backpack_2h_sword_attack_recoil0125214 60085–60114 ———
15262backpack_2h_sword_attack_recoil0225215 60085–60114 ———
15263backpack_2h_sword_attack_recoil0325216 60085–60114 ———
15264backpack_2h_sword_backup25217 60085–60114 ———
15265backpack_2h_sword_charge_up25218 60085–60114 ———
15266backpack_2h_sword_defensive_buff25219 60085–60114 ———
15267backpack_2h_sword_dodge_backhand25220 60085–60114 ———
15268backpack_2h_sword_dodge_down25221 60085–60114 ———
15269backpack_2h_sword_dodge_forehand25222 60085–60114 ———
15270backpack_2h_sword_dodge_thrust25223 60085–60114 ———
15271backpack_2h_sword_enter25224 60085–60114 ———
15272backpack_2h_sword_exit25225 60085–60114 ———
15273backpack_2h_sword_feint25226 60085–60114 ———
15274backpack_2h_sword_idle25227 60085–60114 ———
15275backpack_2h_sword_kick25228 60085–60114 ———
15276backpack_2h_sword_offensive_buff25229 60085–60114 ———
15277backpack_2h_sword_ouch_backhand25230 60085–60114 ———
15278backpack_2h_sword_ouch_down25231 60085–60114 ———
15279backpack_2h_sword_ouch_forehand25232 60085–60114 ———
15280backpack_2h_sword_ouch_thrust25233 60085–60114 ———
15281backpack_2h_sword_parry_backhand25234 60085–60114 ———
15282backpack_2h_sword_parry_down25235 60085–60114 ———
15283backpack_2h_sword_parry_forehand25236 60085–60114 ———
15284backpack_2h_sword_parry_thrust25237 60085–60114 ———
15285backpack_2h_sword_strafe_left25238 60085–60114 ———
15286backpack_2h_sword_strafe_right25239 60085–60114 ———
15287backpack_2h_sword_super_buff25240 60085–60114 ———
15288backpack_2h_sword_taunt25241 60085–60114 ———
15289backpack_2h_sword_taunt_combat_art25242 60085–60114 ———
15290backpack_2h_sword_walk25243 60085–60114 ———
15291backpack_2h_sword_whirling_attack25244 60085–60114 ———
15292backpack_2h_sword_wild_swing25245 60085–60114 ———
15293backpack_alchemy_failure25246 60085–60114 ———
15294backpack_alchemy_idle25247 60085–60114 ———
15295backpack_alchemy_success25248 60085–60114 ———
15296backpack_applaude25249 60085–60114 ———
15297backpack_artificing_failure25250 60085–60114 ———
15298backpack_artificing_idle25251 60085–60114 ———
15299backpack_artificing_success25252 60085–60114 ———
15300backpack_attack25253 60085–60114 ———
15037backpack_backup24811 60085–60114 ———
15063backpack_backup_run24843 60085–60114 ———
15301backpack_bostaff_attack25254 60085–60114 ———
15302backpack_bostaff_attack0125255 60085–60114 ———
15303backpack_bostaff_attack0225256 60085–60114 ———
15304backpack_bostaff_attack0325257 60085–60114 ———
15305backpack_bostaff_attack_recoil25258 60085–60114 ———
15306backpack_bostaff_attack_recoil0125259 60085–60114 ———
15307backpack_bostaff_attack_recoil0225260 60085–60114 ———
15308backpack_bostaff_attack_recoil0325261 60085–60114 ———
15309backpack_bostaff_backup25262 60085–60114 ———
15310backpack_bostaff_charge_up25263 60085–60114 ———
15311backpack_bostaff_defensive_buff25264 60085–60114 ———
15312backpack_bostaff_dodge_backhand25265 60085–60114 ———
15313backpack_bostaff_dodge_down25266 60085–60114 ———
15314backpack_bostaff_dodge_forehand25267 60085–60114 ———
15315backpack_bostaff_dodge_thrust25268 60085–60114 ———
15316backpack_bostaff_enter25269 60085–60114 ———
15317backpack_bostaff_exit25270 60085–60114 ———
15318backpack_bostaff_feint25271 60085–60114 ———
15319backpack_bostaff_idle25272 60085–60114 ———
15320backpack_bostaff_kick25273 60085–60114 ———
15321backpack_bostaff_knockdowntoknees25274 60085–60114 ———
15322backpack_bostaff_knockedtoback25275 60085–60114 ———
15323backpack_bostaff_knockedtoback_getup25276 60085–60114 ———
15324backpack_bostaff_offensive_buff25277 60085–60114 ———
15325backpack_bostaff_ouch_backhand25278 60085–60114 ———
15326backpack_bostaff_ouch_down25279 60085–60114 ———
15327backpack_bostaff_ouch_forehand25280 60085–60114 ———
15328backpack_bostaff_ouch_thrust25281 60085–60114 ———
15329backpack_bostaff_parry_backhand25282 60085–60114 ———
15330backpack_bostaff_parry_down25283 60085–60114 ———
15331backpack_bostaff_parry_forehand25284 60085–60114 ———
15332backpack_bostaff_parry_thrust25285 60085–60114 ———
15333backpack_bostaff_strafe_left25286 60085–60114 ———
15334backpack_bostaff_strafe_right25287 60085–60114 ———
15335backpack_bostaff_super_buff25288 60085–60114 ———
15336backpack_bostaff_taunt_combat_art25289 60085–60114 ———
15337backpack_bostaff_walk25290 60085–60114 ———
15338backpack_bostaff_whirling_attack25291 60085–60114 ———
15339backpack_bostaff_wild_swing25292 60085–60114 ———
15340backpack_bow_aim_down25293 60085–60114 ———
15341backpack_bow_aim_up25294 60085–60114 ———
15342backpack_bow_attack25295 60085–60114 ———
15343backpack_bow_attack_2x25296 60085–60114 ———
15344backpack_bow_backup25297 60085–60114 ———
15346backpack_bow_dodge_backhand25298 60085–60114 ———
15347backpack_bow_dodge_down25299 60085–60114 ———
15348backpack_bow_dodge_forehand25300 60085–60114 ———
15349backpack_bow_dodge_thrust25301 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.