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
832horse_walk1006 1–843 ———
8964horse_walk11717 60085–60114 ———
14839horse_wild_swing24237 60085–60114 ———
11912hourglass_active17502 60085–60114 ———
11913hourglass_idle17503 60085–60114 ———
14512hover_enter23359 60085–60114 ———
14052hover_exit22100 60085–60114 ———
12538hover_idle18954 60085–60114 ———
14513hover_walk23360 60085–60114 ———
251howl322 1–843 howls.howls at %t.—
8965howl11718 60085–60114 howls.howls at %t.—
3405howl_of_dragon6652 1–843 ———
1514hrb_endruneblur_sound1817 1–843 ———
8968hrb_endruneblur_sound11721 60085–60114 ———
1442hro_heal_snd1702 1–843 ———
8969hro_heal_snd11722 60085–60114 ———
1443hro_runeorbit_snd1703 1–843 ———
8970hro_runeorbit_snd11723 60085–60114 ———
1452hr_ghost_gallop_snd1713 1–843 ———
8966hr_ghost_gallop_snd11719 60085–60114 ———
1453hr_whiney_snd1714 1–843 ———
8967hr_whiney_snd11720 60085–60114 ———
252hug0 1–843 looks for someone to hug.hugs %t.—
16224human_claymore_orbit_trail27624 60085–60114 ———
10728human_female_2h_sword_wild_swing13824 60085–60114 ———
10753human_female_pike_charge_up13869 60085–60114 ———
10754human_female_pike_defensive_buff13870 60085–60114 ———
10755human_female_pike_offensive_buff13871 60085–60114 ———
16198human_water_dripping_wake27502 60085–60114 ———
253hungry2877 1–843 appears hungry.——
8971hungry11724 60085–60114 appears hungry.——
16957hydra_start30694 60085–60114 ———
12541h_sword_attack18962 60085–60114 ———
11908icecream_drip17491 60085–60114 ———
11907ice_blast_sound17490 60085–60114 ———
15720ice_cube_scratch25805 60085–60114 ———
15716ice_cube_trail_lf25797 60085–60114 ———
15717ice_cube_trail_lr25798 60085–60114 ———
15718ice_cube_trail_rf25799 60085–60114 ———
15719ice_cube_trail_rr25800 60085–60114 ———
13266icicle_stomp20380 60085–60114 ———
14961icon_merc_heal24576 60085–60114 ———
14962icon_merc_melee24577 60085–60114 ———
14963icon_merc_ranged24578 60085–60114 ———
14964icon_merc_spell24579 60085–60114 ———
14965icon_merc_support24580 60085–60114 ———
14966icon_merc_tank24581 60085–60114 ———
1625ic_fragments_snd1933 1–843 ———
8972ic_fragments_snd11725 60085–60114 ———
1626ic_ice_bkgrnd_sound1934 1–843 ———
8973ic_ice_bkgrnd_sound11726 60085–60114 ———
1627ic_ice_spike_sound1935 1–843 ———
8974ic_ice_spike_sound11727 60085–60114 ———
501idle323 1–843 ———
6720idle323 60085–60114 ———
502idle01324 1–843 ———
6721idle01324 60085–60114 ———
16287idle01temp27960 60085–60114 ———
12391idle01_stone18606 60085–60114 ———
503idle02325 1–843 ———
6722idle02325 60085–60114 ———
3029idle034733 1–843 ———
8975idle0311728 60085–60114 ———
28801idle03_duckandcover69160 60085–60114 ———
28802idle03_gethit69161 60085–60114 ———
28803idle03_throwfood69162 60085–60114 ———
3090idle045028 1–843 ———
8976idle0411729 60085–60114 ———
16576idle04_29123 60085–60114 ———
16553idle0529075 60085–60114 ———
16053idlea27036 60085–60114 ———
510idletiming_a335 1–843 ———
8987idletiming_a11740 60085–60114 ———
511idletiming_b336 1–843 ———
8988idletiming_b11741 60085–60114 ———
512idletiming_c337 1–843 ———
8989idletiming_c11742 60085–60114 ———
513idletiming_d338 1–843 ———
8990idletiming_d11743 60085–60114 ———
514idletiming_e339 1–843 ———
8991idletiming_e11744 60085–60114 ———
515idletiming_g340 1–843 ———
8992idletiming_g11745 60085–60114 ———
516idletiming_h341 1–843 ———
8993idletiming_h11746 60085–60114 ———
517idletiming_i342 1–843 ———
8994idletiming_i11747 60085–60114 ———
8977idle_0111730 60085–60114 ———
17405idle_36032369 60085–60114 ———
16082idle_a27108 60085–60114 ———
12116idle_afraid17953 60085–60114 ———
12117idle_angry17954 60085–60114 ———
16083idle_b27109 60085–60114 ———
504idle_bark326 1–843 ———
8978idle_bark11731 60085–60114 ———
3246idle_break5920 1–843 ———
8979idle_break11732 60085–60114 ———
16084idle_c27110 60085–60114 ———
3038idle_e34771 1–843 ———
8980idle_e311733 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.