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
10707ogre_2h_sword_dodge_forehand13794 60085–60114 ———
10708ogre_2h_sword_ouch_down13795 60085–60114 ———
10709ogre_2h_sword_ouch_thrust13796 60085–60114 ———
10710ogre_dual_wield_dodge_backhand13797 60085–60114 ———
10711ogre_dual_wield_dodge_forehand13798 60085–60114 ———
10712ogre_dual_wield_ouch_forehand13799 60085–60114 ———
16201ogre_fly_swarm_trail27507 60085–60114 ———
10564ogre_forestry_success13331 60085–60114 ———
10565ogre_gathering_search13332 60085–60114 ———
10566ogre_gathering_success13333 60085–60114 ———
10567ogre_mining_success13334 60085–60114 ———
10713ogre_pike_dodge_backhand13800 60085–60114 ———
10714ogre_pike_dodge_forehand13801 60085–60114 ———
10715ogre_pike_kick13802 60085–60114 ———
10716ogre_pike_ouch_backhand13803 60085–60114 ———
10717ogre_pike_ouch_down13804 60085–60114 ———
10718ogre_pike_ouch_forehand13805 60085–60114 ———
10719ogre_pike_ouch_thrust13806 60085–60114 ———
16390oldidle28345 60085–60114 ———
2015one_ring2444 1–843 ———
9137one_ring11891 60085–60114 ———
2016one_ring_fail2445 1–843 ———
9138one_ring_fail11892 60085–60114 ———
1716oov_bubbles_snd2027 1–843 ———
9139oov_bubbles_snd11893 60085–60114 ———
1717oov_effect_short_snd2028 1–843 ———
9140oov_effect_short_snd11894 60085–60114 ———
1718oov_effect_snd2029 1–843 ———
9141oov_effect_snd11895 60085–60114 ———
1719oov_heal_snd2030 1–843 ———
9142oov_heal_snd11896 60085–60114 ———
15944oo_tight26500 60085–60114 ———
536open399 1–843 ———
9143open11897 60085–60114 ———
537opened400 1–843 ———
9149opened11903 60085–60114 ———
3335opened_coins_and_jewels6387 1–843 ———
9150opened_coins_and_jewels11904 60085–60114 ———
3336opened_coins_copper6388 1–843 ———
9151opened_coins_copper11905 60085–60114 ———
3337opened_coins_gold6389 1–843 ———
9152opened_coins_gold11906 60085–60114 ———
3338opened_coins_silver6390 1–843 ———
9153opened_coins_silver11907 60085–60114 ———
3339opened_glow6391 1–843 ———
9154opened_glow11908 60085–60114 ———
29624open_bomb96644 60085–60114 ———
3265open_coins_and_jewels6028 1–843 ———
9144open_coins_and_jewels11898 60085–60114 ———
3266open_coins_copper6029 1–843 ———
9145open_coins_copper11899 60085–60114 ———
3267open_coins_gold6030 1–843 ———
9146open_coins_gold11900 60085–60114 ———
3268open_coins_silver6031 1–843 ———
9147open_coins_silver11901 60085–60114 ———
16377open_enter28286 60085–60114 ———
3271open_glow6042 1–843 ———
9148open_glow11902 60085–60114 ———
16378open_idle28287 60085–60114 ———
29071orange_trail_fx81222 60085–60114 ———
538orate401 1–843 ———
9155orate11909 60085–60114 ———
16380orbiting_buff_all28301 60085–60114 ———
16381orbiting_buff_blue28302 60085–60114 ———
16382orbiting_buff_blue_white28303 60085–60114 ———
16383orbiting_buff_red28304 60085–60114 ———
16384orbiting_buff_red_blue28305 60085–60114 ———
16385orbiting_buff_red_white28306 60085–60114 ———
16386orbiting_buff_white28307 60085–60114 ———
539other_idle402 1–843 ———
9156other_idle11910 60085–60114 ———
16870othmir_zom_att_vox30265 60085–60114 ———
540ouch403 1–843 ———
9157ouch11911 60085–60114 ———
2503ouch013103 1–843 ———
9159ouch01_0111914 60085–60114 ———
16175ouch01_snd27416 60085–60114 ———
2504ouch023104 1–843 ———
9160ouch0211915 60085–60114 ———
9161ouch02_0111916 60085–60114 ———
16176ouch02_snd27417 60085–60114 ———
3018ouch034716 1–843 ———
9162ouch0311917 60085–60114 ———
9163ouch03_0111918 60085–60114 ———
3407ouch046655 1–843 ———
9164ouch0411919 60085–60114 ———
3415ouch16670 1–843 ———
3416ouch26671 1–843 ———
3417ouch36672 1–843 ———
3162ouchdown5458 1–843 ———
9192ouchdown11947 60085–60114 ———
545ouchtiming_a408 1–843 ———
9193ouchtiming_a11948 60085–60114 ———
546ouchtiming_b409 1–843 ———
9194ouchtiming_b11949 60085–60114 ———
547ouchtiming_c410 1–843 ———
9195ouchtiming_c11950 60085–60114 ———
9165ouch_0111920 60085–60114 ———
11389ouch_back16381 60085–60114 ———
9166ouch_backhand11921 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.