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
15350backpack_bow_enter25302 60085–60114 ———
15351backpack_bow_exit25303 60085–60114 ———
15352backpack_bow_idle25304 60085–60114 ———
15353backpack_bow_knockdowntoknees25305 60085–60114 ———
15354backpack_bow_knockedtoback25306 60085–60114 ———
15355backpack_bow_knockedtoback_getup25307 60085–60114 ———
15356backpack_bow_ouch_backhand25308 60085–60114 ———
15357backpack_bow_ouch_down25309 60085–60114 ———
15358backpack_bow_ouch_forehand25310 60085–60114 ———
15359backpack_bow_ouch_thrust25311 60085–60114 ———
15360backpack_bow_strafe_left25312 60085–60114 ———
15361backpack_bow_strafe_right25313 60085–60114 ———
15362backpack_bow_walk25314 60085–60114 ———
15363backpack_cast_aoe_beneficial_end25315 60085–60114 ———
15364backpack_cast_aoe_beneficial_loop25316 60085–60114 ———
15365backpack_cast_aoe_beneficial_start25317 60085–60114 ———
15366backpack_charge25318 60085–60114 ———
15367backpack_charge_up25319 60085–60114 ———
15368backpack_chop_ground_digging25320 60085–60114 ———
15369backpack_chop_ground_success25321 60085–60114 ———
15370backpack_climbing_backup25322 60085–60114 ———
15371backpack_climbing_enter_down25323 60085–60114 ———
15372backpack_climbing_enter_down_root25324 60085–60114 ———
15373backpack_climbing_exit_up25325 60085–60114 ———
15374backpack_climbing_exit_up_root25326 60085–60114 ———
15375backpack_climbing_idle25327 60085–60114 ———
15376backpack_climbing_idle0125328 60085–60114 ———
15377backpack_climbing_ouch25329 60085–60114 ———
15378backpack_climbing_strafe_left25330 60085–60114 ———
15379backpack_climbing_strafe_right25331 60085–60114 ———
15380backpack_climbing_walk25332 60085–60114 ———
15381backpack_combat_backup_run25333 60085–60114 ———
15038backpack_combat_idle24812 60085–60114 ———
15382backpack_combat_run25334 60085–60114 ———
15383backpack_combat_strafe_left_run25335 60085–60114 ———
15384backpack_combat_strafe_right_run25336 60085–60114 ———
15385backpack_cooking_failure25337 60085–60114 ———
15386backpack_cooking_idle25338 60085–60114 ———
15387backpack_cooking_success25339 60085–60114 ———
15388backpack_crouch_backup25340 60085–60114 ———
15389backpack_crouch_enter25341 60085–60114 ———
15390backpack_crouch_exit25342 60085–60114 ———
15391backpack_crouch_idle25343 60085–60114 ———
15392backpack_crouch_strafe_left25344 60085–60114 ———
15393backpack_crouch_strafe_right25345 60085–60114 ———
15394backpack_crouch_turn_left25346 60085–60114 ———
15395backpack_crouch_turn_right25347 60085–60114 ———
15396backpack_crouch_walk25348 60085–60114 ———
15397backpack_cry25349 60085–60114 ———
15398backpack_dance25350 60085–60114 ———
15399backpack_dead25351 60085–60114 ———
15400backpack_dead_enter25352 60085–60114 ———
15401backpack_defensive_buff25353 60085–60114 ———
29673backpack_dive98014 60085–60114 ———
15403backpack_drinking_failure25355 60085–60114 ———
15404backpack_drinking_idle25356 60085–60114 ———
15405backpack_drinking_success25357 60085–60114 ———
15402backpack_drink_chug25354 60085–60114 ———
15406backpack_dual_wield_attack25358 60085–60114 ———
15407backpack_dual_wield_attack0125359 60085–60114 ———
15408backpack_dual_wield_attack0225360 60085–60114 ———
15409backpack_dual_wield_attack0325361 60085–60114 ———
15410backpack_dual_wield_attack_recoil25362 60085–60114 ———
15411backpack_dual_wield_attack_recoil0125363 60085–60114 ———
15412backpack_dual_wield_attack_recoil0225364 60085–60114 ———
15413backpack_dual_wield_attack_recoil0325365 60085–60114 ———
15414backpack_dual_wield_backup25366 60085–60114 ———
15415backpack_dual_wield_defensive_buff25367 60085–60114 ———
15416backpack_dual_wield_dodge_backhand25368 60085–60114 ———
15417backpack_dual_wield_dodge_down25369 60085–60114 ———
15418backpack_dual_wield_dodge_forehand25370 60085–60114 ———
15419backpack_dual_wield_dodge_thrust25371 60085–60114 ———
15420backpack_dual_wield_enter25372 60085–60114 ———
15421backpack_dual_wield_exit25373 60085–60114 ———
15422backpack_dual_wield_feint25374 60085–60114 ———
15423backpack_dual_wield_idle25375 60085–60114 ———
15424backpack_dual_wield_kick25376 60085–60114 ———
15425backpack_dual_wield_knockdowntoknees25377 60085–60114 ———
15426backpack_dual_wield_knockedtoback25378 60085–60114 ———
15427backpack_dual_wield_knockedtoback_getup25379 60085–60114 ———
15428backpack_dual_wield_offensive_buff25380 60085–60114 ———
15429backpack_dual_wield_ouch_backhand25381 60085–60114 ———
15430backpack_dual_wield_ouch_down25382 60085–60114 ———
15431backpack_dual_wield_ouch_forehand25383 60085–60114 ———
15432backpack_dual_wield_ouch_thrust25384 60085–60114 ———
15433backpack_dual_wield_parry_backhand25385 60085–60114 ———
15434backpack_dual_wield_parry_down25386 60085–60114 ———
15435backpack_dual_wield_parry_forehand25387 60085–60114 ———
15436backpack_dual_wield_parry_thrust25388 60085–60114 ———
15437backpack_dual_wield_strafe_left25389 60085–60114 ———
15438backpack_dual_wield_strafe_right25390 60085–60114 ———
15439backpack_dual_wield_super_buff25391 60085–60114 ———
15440backpack_dual_wield_taunt_combat_art25392 60085–60114 ———
15441backpack_dual_wield_walk25393 60085–60114 ———
15442backpack_dual_wield_whirling_attack25394 60085–60114 ———
15443backpack_dual_wield_wild_swing25395 60085–60114 ———
15039backpack_fall24813 60085–60114 ———
15444backpack_fall_moving25396 60085–60114 ———
15445backpack_feint25397 60085–60114 ———
15446backpack_fishing_cast25398 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.