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
29466aerakyn_leaper_fly_down94406 60085–60114 ———
29467aerakyn_leaper_fly_glide94407 60085–60114 ———
29468aerakyn_leaper_fly_glide_left94408 60085–60114 ———
29469aerakyn_leaper_fly_glide_right94409 60085–60114 ———
29470aerakyn_leaper_fly_idle94410 60085–60114 ———
29471aerakyn_leaper_fly_run94411 60085–60114 ———
29472aerakyn_leaper_fly_strafe_left94412 60085–60114 ———
29473aerakyn_leaper_fly_strafe_right94413 60085–60114 ———
29474aerakyn_leaper_fly_turn_left94414 60085–60114 ———
29475aerakyn_leaper_fly_turn_right94415 60085–60114 ———
29476aerakyn_leaper_fly_up94416 60085–60114 ———
29477aerakyn_leaper_fly_walk94417 60085–60114 ———
29478aerakyn_leaper_idle94418 60085–60114 ———
29479aerakyn_leaper_idle0194419 60085–60114 ———
29480aerakyn_leaper_jump94420 60085–60114 ———
29481aerakyn_leaper_jump_substitute94421 60085–60114 ———
29482aerakyn_leaper_land94422 60085–60114 ———
29483aerakyn_leaper_long_fall94423 60085–60114 ———
29484aerakyn_leaper_run94424 60085–60114 ———
29668aerakyn_leaper_strafe_left97802 60085–60114 ———
29669aerakyn_leaper_strafe_left_run97803 60085–60114 ———
29670aerakyn_leaper_strafe_right97804 60085–60114 ———
29671aerakyn_leaper_strafe_right_run97805 60085–60114 ———
29485aerakyn_leaper_turn_left94425 60085–60114 ———
29486aerakyn_leaper_turn_right94426 60085–60114 ———
29487aerakyn_leaper_walk94427 60085–60114 ———
29310aerakyn_radiant_dragon_script93833 60085–60114 ———
29311aerakyn_veeshan_scale93834 60085–60114 ———
200agree62 1–843 agrees.agrees with %t.—
8007agree10745 60085–60114 agrees.agrees with %t.—
10562airborne13322 60085–60114 ———
30036air_guitar109289 60085–60114 ———
1916alchemy_failure2296 1–843 ———
8008alchemy_failure10747 60085–60114 ———
1917alchemy_idle2297 1–843 ———
8009alchemy_idle10748 60085–60114 ———
1918alchemy_success2298 1–843 ———
8010alchemy_success10749 60085–60114 ———
3398alluring_voice6641 1–843 ———
16984all_dead30759 60085–60114 ———
14185amaze22503 60085–60114 ———
29721amyg_sword_enter99560 60085–60114 ———
12039anashti_summon17818 60085–60114 ———
12040anashti_transform17819 60085–60114 ———
12041anashti_vortex17820 60085–60114 ———
3399ancient_breath6642 1–843 ———
14694angler_mount_backup23866 60085–60114 ———
14695angler_mount_fall23867 60085–60114 ———
14696angler_mount_glide23868 60085–60114 ———
14697angler_mount_glide_left23869 60085–60114 ———
14698angler_mount_glide_right23870 60085–60114 ———
14699angler_mount_idle23871 60085–60114 ———
14700angler_mount_idle0123872 60085–60114 ———
14701angler_mount_idle0223873 60085–60114 ———
15749angler_mount_idle0325921 60085–60114 ———
14702angler_mount_jump23874 60085–60114 ———
14703angler_mount_jump_substitute23875 60085–60114 ———
14704angler_mount_land23876 60085–60114 ———
14705angler_mount_long_fall23877 60085–60114 ———
14706angler_mount_run23878 60085–60114 ———
14707angler_mount_run0123879 60085–60114 ———
14708angler_mount_turn_left23880 60085–60114 ———
14709angler_mount_turn_right23881 60085–60114 ———
14710angler_mount_walk23882 60085–60114 ———
2192angry2738 1–843 ———
8011angry10750 60085–60114 ———
775antenna_01939 1–843 ———
8012antenna_0110751 60085–60114 ———
776antenna_02940 1–843 ———
8013antenna_0210752 60085–60114 ———
777antenna_03941 1–843 ———
8014antenna_0310753 60085–60114 ———
778antenna_04942 1–843 ———
8015antenna_0410754 60085–60114 ———
779antenna_05943 1–843 ———
8016antenna_0510755 60085–60114 ———
17321antonia_soulsuck_hover31849 60085–60114 ———
17322antonia_soulsuck_hover_exit31850 60085–60114 ———
2518antonia_wisp3123 1–843 ———
8017antonia_wisp10756 60085–60114 ———
1520anvil1824 1–843 ———
8018anvil10757 60085–60114 ———
1884anvil_small2245 1–843 ———
8019anvil_small10758 60085–60114 ———
12169aoe_ice_blast18085 60085–60114 ———
12170aoe_rock_blast18086 60085–60114 ———
363appear63 1–843 ———
8020appear10759 60085–60114 ———
364applaud64 1–843 applauds!applauds %t.—
14208applaud22553 60085–60114 applauds!applauds %t.—
16192arasai_evil_skull_swirls27492 60085–60114 ———
1990arm04_fail2414 1–843 ———
8022arm04_fail10761 60085–60114 ———
1974arm04_success2378 1–843 ———
8023arm04_success10762 60085–60114 ———
1919armpour012301 1–843 ———
8024armpour0110763 60085–60114 ———
28475arrow_barrage_snd66192 60085–60114 ———
2632artifact3390 1–843 ———
8025artifact10764 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.