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
25146kill_pegasus_mount_idle55673 60085–60114 ———
25147kill_pegasus_mount_jump55674 60085–60114 ———
25148kill_pegasus_mount_jump_substitute55675 60085–60114 ———
25149kill_pegasus_mount_land55676 60085–60114 ———
25150kill_pegasus_mount_long_fall55677 60085–60114 ———
25665kill_pegasus_mount_ouch57053 60085–60114 ———
25666kill_pegasus_mount_ouch0157054 60085–60114 ———
25151kill_pegasus_mount_run55678 60085–60114 ———
25152kill_pegasus_mount_turn_left55679 60085–60114 ———
25153kill_pegasus_mount_turn_right55680 60085–60114 ———
25154kill_pegasus_mount_walk55681 60085–60114 ———
25667kill_pegasus_mount_wild_swing57055 60085–60114 ———
23234kill_pegasus_run51506 60085–60114 ———
24264kill_pegasus_turn_left53592 60085–60114 ———
24265kill_pegasus_turn_right53593 60085–60114 ———
23235kill_pegasus_walk51507 60085–60114 ———
5145kill_pen0135099 1–843 ———
20016kill_pen0144745 60085–60114 ———
24596kill_perch54316 60085–60114 ———
23577kill_perch_idle52270 60085–60114 ———
24974kill_persist_blue_tagged55264 60085–60114 ———
22971kill_persist_book_dervish50869 60085–60114 ———
25857kill_persist_bug_swarm57619 60085–60114 ———
24636kill_persist_cold_book_swarm54467 60085–60114 ———
5441kill_persist_damage35558 1–843 ———
17996kill_persist_damage35558 60085–60114 ———
5718kill_persist_debuff35886 1–843 ———
18053kill_persist_debuff35886 60085–60114 ———
5754kill_persist_distortion_hit_minimal35962 1–843 ———
18062kill_persist_distortion_hit_minimal35962 60085–60114 ———
5421kill_persist_divine35535 1–843 ———
17981kill_persist_divine35535 60085–60114 ———
6560kill_persist_dragonbreath39226 1–843 ———
18362kill_persist_dragonbreath39226 60085–60114 ———
5422kill_persist_eidolon35536 1–843 ———
17982kill_persist_eidolon35536 60085–60114 ———
5775kill_persist_electrified35992 1–843 ———
18070kill_persist_electrified35992 60085–60114 ———
5423kill_persist_energy35537 1–843 ———
17983kill_persist_energy35537 60085–60114 ———
22527kill_persist_enrage49735 60085–60114 ———
22764kill_persist_evil_stun50415 60085–60114 ———
5960kill_persist_fear36588 1–843 ———
18198kill_persist_fear36588 60085–60114 ———
21935kill_persist_fear_skulls48622 60085–60114 ———
5424kill_persist_fire35538 1–843 ———
17984kill_persist_fire35538 60085–60114 ———
30986kill_persist_gut_rip8475409 60085–60114 ———
5425kill_persist_ice35539 1–843 ———
17985kill_persist_ice35539 60085–60114 ———
6582kill_persist_juggernaut39265 1–843 ———
18366kill_persist_juggernaut39265 60085–60114 ———
26836kill_persist_magic_damage59729 60085–60114 ———
5426kill_persist_mental35540 1–843 ———
17986kill_persist_mental35540 60085–60114 ———
5427kill_persist_mesmerize35541 1–843 ———
17987kill_persist_mesmerize35541 60085–60114 ———
24511kill_persist_notes_dirge54182 60085–60114 ———
5937kill_persist_notes_gathering36553 1–843 ———
18189kill_persist_notes_gathering36553 60085–60114 ———
25218kill_persist_notes_green55857 60085–60114 ———
25219kill_persist_notes_purple55858 60085–60114 ———
5938kill_persist_notes_spiral_off36554 1–843 ———
18190kill_persist_notes_spiral_off36554 60085–60114 ———
5961kill_persist_notes_spiral_off_blue36589 1–843 ———
18199kill_persist_notes_spiral_off_blue36589 60085–60114 ———
5962kill_persist_notes_spiral_off_green36590 1–843 ———
18200kill_persist_notes_spiral_off_green36590 60085–60114 ———
5963kill_persist_notes_spiral_off_red36591 1–843 ———
18201kill_persist_notes_spiral_off_red36591 60085–60114 ———
24512kill_persist_notes_troub54183 60085–60114 ———
5259kill_persist_pet_air_fragment35293 1–843 ———
17900kill_persist_pet_air_fragment35293 60085–60114 ———
5260kill_persist_pet_chaos_fragment35294 1–843 ———
17901kill_persist_pet_chaos_fragment35294 60085–60114 ———
5261kill_persist_pet_earth_fragment35295 1–843 ———
17902kill_persist_pet_earth_fragment35295 60085–60114 ———
5262kill_persist_pet_fire_fragment35296 1–843 ———
17903kill_persist_pet_fire_fragment35296 60085–60114 ———
5263kill_persist_pet_fire_servant35297 1–843 ———
17904kill_persist_pet_fire_servant35297 60085–60114 ———
5264kill_persist_pet_ice_servant35298 1–843 ———
17905kill_persist_pet_ice_servant35298 60085–60114 ———
5265kill_persist_pet_lightning_servant35299 1–843 ———
17906kill_persist_pet_lightning_servant35299 60085–60114 ———
5266kill_persist_pet_water_fragment35300 1–843 ———
17907kill_persist_pet_water_fragment35300 60085–60114 ———
5428kill_persist_poison35542 1–843 ———
17988kill_persist_poison35542 60085–60114 ———
5906kill_persist_power_gathering36473 1–843 ———
18166kill_persist_power_gathering36473 60085–60114 ———
24975kill_persist_red_tagged55265 60085–60114 ———
5920kill_persist_sparkles_clinging_soft_blue36517 1–843 ———
18177kill_persist_sparkles_clinging_soft_blue36517 60085–60114 ———
5921kill_persist_sparkles_clinging_soft_gold36518 1–843 ———
18178kill_persist_sparkles_clinging_soft_gold36518 60085–60114 ———
5922kill_persist_sparkles_clinging_soft_green36519 1–843 ———
18179kill_persist_sparkles_clinging_soft_green36519 60085–60114 ———
5923kill_persist_sparkles_clinging_soft_purple36520 1–843 ———
18180kill_persist_sparkles_clinging_soft_purple36520 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.