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
24119kill_result_repellent_spray_p2p53284 60085–60114 ———
25078kill_result_retaliation55467 60085–60114 ———
18383kill_result_rift39569 60085–60114 ———
5942kill_result_rings_rising36558 1–843 ———
18194kill_result_rings_rising36558 60085–60114 ———
5976kill_result_rings_rising_noshrink36628 1–843 ———
18210kill_result_rings_rising_noshrink36628 60085–60114 ———
28190kill_result_ring_flare65092 60085–60114 ———
31412kill_result_ring_heal8485036 60085–60114 ———
6071kill_result_ring_of_blades36971 1–843 ———
18250kill_result_ring_of_blades36971 60085–60114 ———
6072kill_result_ring_of_blades_scimitars36972 1–843 ———
18251kill_result_ring_of_blades_scimitars36972 60085–60114 ———
6073kill_result_ring_of_blades_swords36973 1–843 ———
18252kill_result_ring_of_blades_swords36973 60085–60114 ———
31063kill_result_ring_root_spin8480984 60085–60114 ———
6070kill_result_rocks_flying_from_mesh36963 1–843 ———
18249kill_result_rocks_flying_from_mesh36963 60085–60114 ———
18395kill_result_rocks_sticky39659 60085–60114 ———
30458kill_result_rocky_blast_up8455598 60085–60114 ———
22954kill_result_rock_blast_wave50829 60085–60114 ———
18394kill_result_rock_breath_p2p39658 60085–60114 ———
31059kill_result_rock_ceiling_rain8480782 60085–60114 ———
5851kill_result_rock_chunks_dropping36196 1–843 ———
18133kill_result_rock_chunks_dropping36196 60085–60114 ———
24890kill_result_rock_crystal_cyclone54979 60085–60114 ———
21867kill_result_rock_hands48443 60085–60114 ———
31064kill_result_rock_return_p2p8480985 60085–60114 ———
6215kill_result_rock_shock_wave37470 1–843 ———
18289kill_result_rock_shock_wave37470 60085–60114 ———
6233kill_result_rock_shock_wave_ice37503 1–843 ———
18294kill_result_rock_shock_wave_ice37503 60085–60114 ———
6224kill_result_rock_shock_wave_lava37487 1–843 ———
18291kill_result_rock_shock_wave_lava37487 60085–60114 ———
6069kill_result_rock_toss_p2p36962 1–843 ———
18248kill_result_rock_toss_p2p36962 60085–60114 ———
23135kill_result_root_magic51257 60085–60114 ———
24130kill_result_rope_root53320 60085–60114 ———
23065kill_result_rose_petals51132 60085–60114 ———
30501kill_result_rum_barrel_hit8456065 60085–60114 ———
30502kill_result_rum_drips8456066 60085–60114 ———
6268kill_result_runes_blast37618 1–843 ———
18303kill_result_runes_blast37618 60085–60114 ———
5864kill_result_runes_falling36218 1–843 ———
18146kill_result_runes_falling36218 60085–60114 ———
5859kill_result_runes_gathering36210 1–843 ———
18141kill_result_runes_gathering36210 60085–60114 ———
4515kill_result_runes_rising34326 1–843 ———
17714kill_result_runes_rising34326 60085–60114 ———
20169kill_result_rune_awakened44898 60085–60114 ———
22774kill_result_rune_ethernaughts50432 60085–60114 ———
31078kill_result_rune_farseas8481395 60085–60114 ———
30824kill_result_rune_shissar8468585 60085–60114 ———
4892kill_result_sanction_of_merit34769 1–843 ———
17847kill_result_sanction_of_merit34769 60085–60114 ———
30825kill_result_sarnak_horns8468586 60085–60114 ———
31406kill_result_scale_attack8484819 60085–60114 ———
4797kill_result_scale_skin_forced_shader34670 1–843 ———
17814kill_result_scale_skin_forced_shader34670 60085–60114 ———
4223kill_result_scimitar_approaching34029 1–843 ———
17589kill_result_scimitar_approaching34029 60085–60114 ———
4224kill_result_scimitar_explode34030 1–843 ———
17590kill_result_scimitar_explode34030 60085–60114 ———
6256kill_result_scintillating_tapestry37578 1–843 ———
18301kill_result_scintillating_tapestry37578 60085–60114 ———
5912kill_result_scorpion_attacking36497 1–843 ———
18172kill_result_scorpion_attacking36497 60085–60114 ———
24720kill_result_seafoam_dissolve54578 60085–60114 ———
6154kill_result_searing_sun37324 1–843 ———
18268kill_result_searing_sun37324 60085–60114 ———
23338kill_result_sea_dragon_buff_aoe51734 60085–60114 ———
30059kill_result_seeking_arrows8454123 60085–60114 ———
23690kill_result_seeping_energy52475 60085–60114 ———
6275kill_result_serpents_intent37681 1–843 ———
18308kill_result_serpents_intent37681 60085–60114 ———
23137kill_result_shackles_void51265 60085–60114 ———
18710kill_result_shadowknight_flame_horns43328 60085–60114 ———
28241kill_result_shadow_bind65397 60085–60114 ———
31382kill_result_shadow_blob_orbit8484532 60085–60114 ———
24111kill_result_shadow_curse53251 60085–60114 ———
25524kill_result_shadow_shatter56731 60085–60114 ———
25525kill_result_shadow_sphere_p2p56732 60085–60114 ———
25530kill_result_shadow_streaks56744 60085–60114 ———
5786kill_result_shadow_summon36006 1–843 ———
18080kill_result_shadow_summon36006 60085–60114 ———
6309kill_result_shadow_summon_237903 1–843 ———
18320kill_result_shadow_summon_237903 60085–60114 ———
6316kill_result_shadow_summon_2_aoe37917 1–843 ———
18321kill_result_shadow_summon_2_aoe37917 60085–60114 ———
30798kill_result_shatter8467397 60085–60114 ———
27784kill_result_shell_note_charm63575 60085–60114 ———
5273kill_result_shield35313 1–843 ———
17911kill_result_shield35313 60085–60114 ———
5837kill_result_shield_silver_floating36161 1–843 ———
18123kill_result_shield_silver_floating36161 60085–60114 ———
31436kill_result_shissar_portal_lightning_p2p8485555 60085–60114 ———
4858kill_result_shockwave_sparkles34732 1–843 ———
17836kill_result_shockwave_sparkles34732 60085–60114 ———
6042kill_result_shockwave_sparkles_aoe36841 1–843 ———
18230kill_result_shockwave_sparkles_aoe36841 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.