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
3507kill_cast_232899 1–843 ———
19014kill_cast_243727 60085–60114 ———
3508kill_cast_332900 1–843 ———
19015kill_cast_343728 60085–60114 ———
3509kill_cast_432901 1–843 ———
19016kill_cast_443729 60085–60114 ———
22806kill_cast_550520 60085–60114 ———
3510kill_cast_632902 1–843 ———
19017kill_cast_643730 60085–60114 ———
3511kill_cast_732903 1–843 ———
19018kill_cast_743731 60085–60114 ———
3512kill_cast_832904 1–843 ———
19019kill_cast_843732 60085–60114 ———
3513kill_cast_932905 1–843 ———
19020kill_cast_943733 60085–60114 ———
24988kill_cast_aa_ancestor_swirls55293 60085–60114 ———
25095kill_cast_aa_blast_tube55534 60085–60114 ———
24842kill_cast_aa_column_heal_blast54860 60085–60114 ———
25007kill_cast_aa_deflecting_daggers55332 60085–60114 ———
25751kill_cast_aa_flash_bomb_appear57337 60085–60114 ———
25746kill_cast_aa_frosty_cone_forward57325 60085–60114 ———
25706kill_cast_aa_frosty_swirls57203 60085–60114 ———
25781kill_cast_aa_frost_wall57427 60085–60114 ———
24843kill_cast_aa_heal_bars54861 60085–60114 ———
25004kill_cast_aa_lightning_cleave_blast55327 60085–60114 ———
25060kill_cast_aa_magic_overflow55417 60085–60114 ———
25061kill_cast_aa_manasoul55418 60085–60114 ———
25752kill_cast_aa_melee_swipe57338 60085–60114 ———
25010kill_cast_aa_music_ring_blast55342 60085–60114 ———
25062kill_cast_aa_mystic_field55419 60085–60114 ———
25011kill_cast_aa_notes_spiral55343 60085–60114 ———
25005kill_cast_aa_riposte55328 60085–60114 ———
25063kill_cast_aa_self_lifetap55420 60085–60114 ———
25006kill_cast_aa_shield_bars55329 60085–60114 ———
24989kill_cast_aa_spiritfire_blast55294 60085–60114 ———
24990kill_cast_aa_spiritfire_swirls55295 60085–60114 ———
25762kill_cast_aa_spirit_ape57356 60085–60114 ———
25768kill_cast_aa_spirit_bat57364 60085–60114 ———
25735kill_cast_aa_spirit_bear57303 60085–60114 ———
25707kill_cast_aa_spirit_blast57204 60085–60114 ———
25760kill_cast_aa_spirit_blast_big57352 60085–60114 ———
25763kill_cast_aa_spirit_boar57357 60085–60114 ———
25769kill_cast_aa_spirit_cobra57365 60085–60114 ———
25764kill_cast_aa_spirit_crab57358 60085–60114 ———
25770kill_cast_aa_spirit_drake57366 60085–60114 ———
25771kill_cast_aa_spirit_frogs57367 60085–60114 ———
25772kill_cast_aa_spirit_hawk57368 60085–60114 ———
25765kill_cast_aa_spirit_rats57359 60085–60114 ———
25766kill_cast_aa_spirit_stag57360 60085–60114 ———
25773kill_cast_aa_spirit_tiger57369 60085–60114 ———
25774kill_cast_aa_spirit_wolf57370 60085–60114 ———
25779kill_cast_aa_spirit_wolf_howling57418 60085–60114 ———
31039kill_cast_aa_swords_buff8479578 60085–60114 ———
25101kill_cast_aa_whip_circling55567 60085–60114 ———
27069kill_cast_acid_rain60679 60085–60114 ———
27877kill_cast_acid_spit_fx63790 60085–60114 ———
27878kill_cast_acid_spray63791 60085–60114 ———
21670kill_cast_acid_storm_damage47657 60085–60114 ———
22965kill_cast_air_charge50855 60085–60114 ———
23600kill_cast_air_sample52326 60085–60114 ———
30062kill_cast_anger_tube_grow8454132 60085–60114 ———
5276kill_cast_angry_burst35326 1–843 ———
17912kill_cast_angry_burst35326 60085–60114 ———
6054kill_cast_angry_burst_aoe36891 1–843 ———
18233kill_cast_angry_burst_aoe36891 60085–60114 ———
5482kill_cast_anim_mesh_dragon_ps35620 1–843 ———
18016kill_cast_anim_mesh_dragon_ps35620 60085–60114 ———
6552kill_cast_aoe39186 1–843 ———
4971kill_cast_aoe_beneficial_end34854 1–843 ———
19021kill_cast_aoe_beneficial_end43734 60085–60114 ———
4972kill_cast_aoe_beneficial_loop34855 1–843 ———
19022kill_cast_aoe_beneficial_loop43735 60085–60114 ———
4973kill_cast_aoe_beneficial_start34856 1–843 ———
19023kill_cast_aoe_beneficial_start43736 60085–60114 ———
4974kill_cast_aoe_detrimental_end34857 1–843 ———
19024kill_cast_aoe_detrimental_end43737 60085–60114 ———
4975kill_cast_aoe_detrimental_loop34858 1–843 ———
19025kill_cast_aoe_detrimental_loop43738 60085–60114 ———
4976kill_cast_aoe_detrimental_start34859 1–843 ———
19026kill_cast_aoe_detrimental_start43739 60085–60114 ———
5060kill_cast_aoe_invocation_end34959 1–843 ———
19027kill_cast_aoe_invocation_end43741 60085–60114 ———
5061kill_cast_aoe_invocation_loop34960 1–843 ———
19028kill_cast_aoe_invocation_loop43742 60085–60114 ———
5062kill_cast_aoe_invocation_start34961 1–843 ———
19029kill_cast_aoe_invocation_start43743 60085–60114 ———
5063kill_cast_aoe_wand_end34962 1–843 ———
19030kill_cast_aoe_wand_end43744 60085–60114 ———
5064kill_cast_aoe_wand_loop34963 1–843 ———
19031kill_cast_aoe_wand_loop43745 60085–60114 ———
5065kill_cast_aoe_wand_start34964 1–843 ———
19032kill_cast_aoe_wand_start43746 60085–60114 ———
22519kill_cast_aoe_water_blast49709 60085–60114 ———
23916kill_cast_arcane_blast52796 60085–60114 ———
22841kill_cast_arcane_blast_aoe50604 60085–60114 ———
3514kill_cast_arch_circle32906 1–843 ———
17460kill_cast_arch_circle32906 60085–60114 ———
30217kill_cast_arc_slash8454649 60085–60114 ———
31035kill_cast_area_cloud_blast8479182 60085–60114 ———
31302kill_cast_area_skull_cloud_blast8483736 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.