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
10821h_crush_attack1323 1–843 ———
68281h_crush_attack1323 60085–60114 ———
10831h_crush_attack011324 1–843 ———
68291h_crush_attack011324 60085–60114 ———
10841h_crush_attack021325 1–843 ———
68301h_crush_attack021325 60085–60114 ———
10851h_crush_attack031326 1–843 ———
68311h_crush_attack031326 60085–60114 ———
10861h_crush_attack_recoil1327 1–843 ———
79441h_crush_attack_recoil10680 60085–60114 ———
10871h_crush_attack_recoil011328 1–843 ———
79451h_crush_attack_recoil0110681 60085–60114 ———
10881h_crush_attack_recoil021329 1–843 ———
79461h_crush_attack_recoil0210682 60085–60114 ———
10891h_crush_attack_recoil031330 1–843 ———
79471h_crush_attack_recoil0310683 60085–60114 ———
10901h_crush_backup1331 1–843 ———
79481h_crush_backup10684 60085–60114 ———
10911h_crush_dodge_backhand1332 1–843 ———
68321h_crush_dodge_backhand1332 60085–60114 ———
10921h_crush_dodge_down1333 1–843 ———
68331h_crush_dodge_down1333 60085–60114 ———
10931h_crush_dodge_forehand1334 1–843 ———
68341h_crush_dodge_forehand1334 60085–60114 ———
10941h_crush_dodge_thrust1335 1–843 ———
68351h_crush_dodge_thrust1335 60085–60114 ———
10951h_crush_enter1336 1–843 ———
79491h_crush_enter10685 60085–60114 ———
10961h_crush_exit1337 1–843 ———
79501h_crush_exit10686 60085–60114 ———
10971h_crush_idle1338 1–843 ———
68361h_crush_idle1338 60085–60114 ———
10981h_crush_ouch_backhand1339 1–843 ———
68371h_crush_ouch_backhand1339 60085–60114 ———
10991h_crush_ouch_down1340 1–843 ———
68381h_crush_ouch_down1340 60085–60114 ———
11001h_crush_ouch_forehand1341 1–843 ———
68391h_crush_ouch_forehand1341 60085–60114 ———
11011h_crush_ouch_thrust1342 1–843 ———
68401h_crush_ouch_thrust1342 60085–60114 ———
11021h_crush_parry_backhand1343 1–843 ———
68411h_crush_parry_backhand1343 60085–60114 ———
11031h_crush_parry_down1344 1–843 ———
68421h_crush_parry_down1344 60085–60114 ———
11041h_crush_parry_forehand1345 1–843 ———
68431h_crush_parry_forehand1345 60085–60114 ———
11051h_crush_parry_thrust1346 1–843 ———
68441h_crush_parry_thrust1346 60085–60114 ———
11061h_crush_strafe_left1347 1–843 ———
79511h_crush_strafe_left10687 60085–60114 ———
11071h_crush_strafe_right1348 1–843 ———
79521h_crush_strafe_right10688 60085–60114 ———
11081h_crush_walk1349 1–843 ———
79531h_crush_walk10689 60085–60114 ———
118051h_dual_wield_enter17211 60085–60114 ———
118061h_dual_wield_exit17212 60085–60114 ———
11091h_pierce_attack1350 1–843 ———
68451h_pierce_attack1350 60085–60114 ———
11101h_pierce_attack011351 1–843 ———
68461h_pierce_attack011351 60085–60114 ———
29791h_pierce_attack024628 1–843 ———
79541h_pierce_attack0210690 60085–60114 ———
29801h_pierce_attack034629 1–843 ———
79551h_pierce_attack0310691 60085–60114 ———
108391h_pierce_attack_0314519 60085–60114 ———
11111h_pierce_attack_recoil1352 1–843 ———
79561h_pierce_attack_recoil10692 60085–60114 ———
11121h_pierce_attack_recoil011353 1–843 ———
79571h_pierce_attack_recoil0110693 60085–60114 ———
29811h_pierce_attack_recoil024630 1–843 ———
79581h_pierce_attack_recoil0210694 60085–60114 ———
29821h_pierce_attack_recoil034631 1–843 ———
79591h_pierce_attack_recoil0310695 60085–60114 ———
11131h_pierce_backup1354 1–843 ———
79601h_pierce_backup10696 60085–60114 ———
29831h_pierce_death_blow4632 1–843 ———
79611h_pierce_death_blow10697 60085–60114 ———
29841h_pierce_death_blow014633 1–843 ———
79621h_pierce_death_blow0110698 60085–60114 ———
11141h_pierce_dodge_backhand1355 1–843 ———
68471h_pierce_dodge_backhand1355 60085–60114 ———
11151h_pierce_dodge_down1356 1–843 ———
68481h_pierce_dodge_down1356 60085–60114 ———
11161h_pierce_dodge_forehand1357 1–843 ———
68491h_pierce_dodge_forehand1357 60085–60114 ———
11171h_pierce_dodge_thrust1358 1–843 ———
68501h_pierce_dodge_thrust1358 60085–60114 ———
11181h_pierce_enter1359 1–843 ———
79631h_pierce_enter10699 60085–60114 ———
11191h_pierce_exit1360 1–843 ———
79641h_pierce_exit10700 60085–60114 ———
11201h_pierce_idle1361 1–843 ———
68511h_pierce_idle1361 60085–60114 ———
11211h_pierce_ouch_backhand1362 1–843 ———
68521h_pierce_ouch_backhand1362 60085–60114 ———
11221h_pierce_ouch_down1363 1–843 ———
68531h_pierce_ouch_down1363 60085–60114 ———
11231h_pierce_ouch_forehand1364 1–843 ———
68541h_pierce_ouch_forehand1364 60085–60114 ———
11241h_pierce_ouch_thrust1365 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.