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
3582h_sword_exit51 1–843 ———
79922h_sword_exit10728 60085–60114 ———
21352h_sword_feint2669 1–843 ———
79932h_sword_feint10729 60085–60114 ———
174162h_sword_ground_attack_0132382 60085–60114 ———
174172h_sword_ground_attack_0232383 60085–60114 ———
174182h_sword_ground_combat_buff32384 60085–60114 ———
174192h_sword_ground_death32385 60085–60114 ———
174202h_sword_ground_dodge_backhand32386 60085–60114 ———
174212h_sword_ground_dodge_down32387 60085–60114 ———
174222h_sword_ground_dodge_forehand32388 60085–60114 ———
174232h_sword_ground_dodge_thrust32389 60085–60114 ———
174242h_sword_ground_idle32390 60085–60114 ———
174252h_sword_ground_idle_fidget32391 60085–60114 ———
174262h_sword_ground_ouch_backhand32392 60085–60114 ———
174272h_sword_ground_ouch_down32393 60085–60114 ———
174282h_sword_ground_ouch_forehand32394 60085–60114 ———
174292h_sword_ground_ouch_thrust32395 60085–60114 ———
3592h_sword_idle52 1–843 ———
66612h_sword_idle52 60085–60114 ———
167672h_sword_idle0129761 60085–60114 ———
21362h_sword_kick2670 1–843 ———
71552h_sword_kick2670 60085–60114 ———
21372h_sword_offensive_buff2671 1–843 ———
79942h_sword_offensive_buff10730 60085–60114 ———
12192h_sword_ouch_backhand1460 1–843 ———
68862h_sword_ouch_backhand1460 60085–60114 ———
12202h_sword_ouch_down1461 1–843 ———
68872h_sword_ouch_down1461 60085–60114 ———
12212h_sword_ouch_forehand1462 1–843 ———
68882h_sword_ouch_forehand1462 60085–60114 ———
29732h_sword_ouch_thrust4608 1–843 ———
74912h_sword_ouch_thrust4608 60085–60114 ———
12222h_sword_parry_backhand1463 1–843 ———
79952h_sword_parry_backhand10731 60085–60114 ———
12232h_sword_parry_down1464 1–843 ———
79962h_sword_parry_down10732 60085–60114 ———
12242h_sword_parry_forehand1465 1–843 ———
79972h_sword_parry_forehand10733 60085–60114 ———
29742h_sword_parry_thrust4609 1–843 ———
79982h_sword_parry_thrust10734 60085–60114 ———
167272h_sword_run29659 60085–60114 ———
3602h_sword_strafe_left59 1–843 ———
79992h_sword_strafe_left10735 60085–60114 ———
3612h_sword_strafe_right60 1–843 ———
80002h_sword_strafe_right10736 60085–60114 ———
21382h_sword_super_buff2672 1–843 ———
80012h_sword_super_buff10737 60085–60114 ———
21392h_sword_taunt2673 1–843 ———
80022h_sword_taunt10738 60085–60114 ———
23562h_sword_taunt_combat_art2947 1–843 ———
80032h_sword_taunt_combat_art10739 60085–60114 ———
3622h_sword_walk61 1–843 ———
80042h_sword_walk10740 60085–60114 ———
21402h_sword_whirling_attack2674 1–843 ———
71562h_sword_whirling_attack2674 60085–60114 ———
21412h_sword_wild_swing2675 1–843 ———
71572h_sword_wild_swing2675 60085–60114 ———
156772h_twirl25650 60085–60114 ———
148452pike_attack0324244 60085–60114 ———
1408a1668 1–843 ———
8006a10744 60085–60114 ———
16737aa_ancestral_gather29697 60085–60114 ———
16716aa_anger_buff29565 60085–60114 ———
29709aa_arcane_wave98879 60085–60114 ———
16617aa_arrow_rapid_salvo29249 60085–60114 ———
28254aa_arrow_storm65498 60085–60114 ———
15807aa_bar_heal26159 60085–60114 ———
16725aa_blast_circle29651 60085–60114 ———
15808aa_blood_burst26160 60085–60114 ———
15809aa_blood_lust26161 60085–60114 ———
16980aa_bone_blast30749 60085–60114 ———
16981aa_bone_cage30750 60085–60114 ———
15810aa_bubble_shield26162 60085–60114 ———
15811aa_bubble_shield_in26163 60085–60114 ———
16590aa_cast_wind_spin29178 60085–60114 ———
15812aa_cloud_blast26164 60085–60114 ———
15813aa_cloud_buff_out26165 60085–60114 ———
15814aa_cloud_ring_burst26166 60085–60114 ———
16780aa_coin_toss29786 60085–60114 ———
15815aa_cold_blast26167 60085–60114 ———
15816aa_cyclone26168 60085–60114 ———
29710aa_dagger_storm_impact98880 60085–60114 ———
16762aa_dancing_blades29750 60085–60114 ———
15817aa_dark_cyclone26169 60085–60114 ———
15818aa_dark_ring_vanish26170 60085–60114 ———
16591aa_dark_swirly_wisps29179 60085–60114 ———
16781aa_death_mark29787 60085–60114 ———
29711aa_detect_weakness_aa98881 60085–60114 ———
29704aa_diamond_skin98671 60085–60114 ———
16738aa_divine_burst29698 60085–60114 ———
29705aa_divine_cloak98672 60085–60114 ———
15819aa_divine_hit26171 60085–60114 ———
29706aa_divine_wave_heal98673 60085–60114 ———
16283aa_double_pyramid27940 60085–60114 ———
29712aa_druid_wild_blast98882 60085–60114 ———
16137aa_earth_summon27201 60085–60114 ———
16618aa_fire_arrow_p2p29250 60085–60114 ———
15820aa_fire_column26172 60085–60114 ———
16585aa_fire_swirl_shield29167 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.