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
17959kill_result_flash_weapon_sat_red35476 60085–60114 ———
21642kill_result_flash_weapon_silver47393 60085–60114 ———
22152kill_result_fleas49104 60085–60114 ———
22727kill_result_flesh_peel50327 60085–60114 ———
21569kill_result_flies46791 60085–60114 ———
27040kill_result_floating_chain_root60493 60085–60114 ———
23864kill_result_floor_pie52715 60085–60114 ———
26464kill_result_flowers_spew58399 60085–60114 ———
24128kill_result_flower_trail53318 60085–60114 ———
22659kill_result_fly_breath50180 60085–60114 ———
22660kill_result_fly_swarm50181 60085–60114 ———
6524kill_result_fog39050 1–843 ———
20149kill_result_fog44878 60085–60114 ———
6415kill_result_fogger38341 1–843 ———
18331kill_result_fogger38341 60085–60114 ———
6533kill_result_fog_low39122 1–843 ———
20150kill_result_fog_low44879 60085–60114 ———
6534kill_result_fog_low_small39123 1–843 ———
20151kill_result_fog_low_small44880 60085–60114 ———
6525kill_result_fog_poison39051 1–843 ———
20152kill_result_fog_poison44881 60085–60114 ———
6528kill_result_fog_poison_4x1039061 1–843 ———
20153kill_result_fog_poison_4x1044882 60085–60114 ———
21581kill_result_fog_poison_billboards46993 60085–60114 ———
21582kill_result_fog_poison_billboards_small46994 60085–60114 ———
21583kill_result_fog_poison_billboards_thinner46995 60085–60114 ———
6535kill_result_fog_poison_low39124 1–843 ———
20154kill_result_fog_poison_low44883 60085–60114 ———
6536kill_result_fog_poison_low_small39125 1–843 ———
20155kill_result_fog_poison_low_small44884 60085–60114 ———
6526kill_result_fog_poison_small39052 1–843 ———
20156kill_result_fog_poison_small44885 60085–60114 ———
6537kill_result_fog_small39126 1–843 ———
20157kill_result_fog_small44886 60085–60114 ———
30397kill_result_food_fight_hit8455232 60085–60114 ———
25902kill_result_forced_shader_bugs57742 60085–60114 ———
26957kill_result_forced_shader_burnt60141 60085–60114 ———
6491kill_result_forced_shader_dark_dragon38877 1–843 ———
20158kill_result_forced_shader_dark_dragon44887 60085–60114 ———
5888kill_result_forced_shader_electric36400 1–843 ———
18156kill_result_forced_shader_electric36400 60085–60114 ———
6460kill_result_forced_shader_electric_dragon38777 1–843 ———
20159kill_result_forced_shader_electric_dragon44888 60085–60114 ———
27423kill_result_forced_shader_ethernere62060 60085–60114 ———
6480kill_result_forced_shader_fire_dragon38823 1–843 ———
20160kill_result_forced_shader_fire_dragon44889 60085–60114 ———
22616kill_result_forced_shader_glass50043 60085–60114 ———
22614kill_result_forced_shader_hologram50035 60085–60114 ———
6485kill_result_forced_shader_ice_dragon38835 1–843 ———
20161kill_result_forced_shader_ice_dragon44890 60085–60114 ———
24811kill_result_forced_shader_lichen54782 60085–60114 ———
6061kill_result_forced_shader_rock36909 1–843 ———
18240kill_result_forced_shader_rock36909 60085–60114 ———
23130kill_result_forced_shader_rock_blue51252 60085–60114 ———
23131kill_result_forced_shader_rock_green51253 60085–60114 ———
23132kill_result_forced_shader_rock_purple51254 60085–60114 ———
23977kill_result_forced_shader_rock_red52927 60085–60114 ———
23133kill_result_forced_shader_rock_yellow51255 60085–60114 ———
23250kill_result_forced_shader_shadow51549 60085–60114 ———
23011kill_result_forced_shader_soot50992 60085–60114 ———
24637kill_result_forced_shader_web54468 60085–60114 ———
23969kill_result_forced_shader_white52894 60085–60114 ———
30697kill_result_forsee_death8462953 60085–60114 ———
25668kill_result_fprt_ghosts_attack_p2p57056 60085–60114 ———
5734kill_result_fraxflame_p2p35911 1–843 ———
18057kill_result_fraxflame_p2p35911 60085–60114 ———
22276kill_result_frisbee_p2p49359 60085–60114 ———
6197kill_result_froglok_bauble37417 1–843 ———
20162kill_result_froglok_bauble44891 60085–60114 ———
6180kill_result_froglok_buff37393 1–843 ———
18286kill_result_froglok_buff37393 60085–60114 ———
21366kill_result_fruitcake_explosion46237 60085–60114 ———
6299kill_result_fungusman_breath_attack_p2p37837 1–843 ———
18318kill_result_fungusman_breath_attack_p2p37837 60085–60114 ———
21877kill_result_gangrene48480 60085–60114 ———
3727kill_result_gather_mana133263 1–843 ———
17527kill_result_gather_mana133263 60085–60114 ———
22264kill_result_gavel_drop49322 60085–60114 ———
22032kill_result_gavel_pound48881 60085–60114 ———
27236kill_result_gazer_flame_eye_beam_p2p61372 60085–60114 ———
3728kill_result_ghost33264 1–843 ———
17528kill_result_ghost33264 60085–60114 ———
23426kill_result_ghostly_possession_p2p52021 60085–60114 ———
22106kill_result_ghosts49002 60085–60114 ———
6455kill_result_ghost_fadeout38751 1–843 ———
18339kill_result_ghost_fadeout38751 60085–60114 ———
4759kill_result_ghost_fish_circling34632 1–843 ———
17795kill_result_ghost_fish_circling34632 60085–60114 ———
4699kill_result_ghost_forced_shader34564 1–843 ———
17771kill_result_ghost_forced_shader34564 60085–60114 ———
6512kill_result_ghost_forced_shader_438961 1–843 ———
18351kill_result_ghost_forced_shader_438961 60085–60114 ———
31056kill_result_ghost_forced_shader_4_gold8480392 60085–60114 ———
21994kill_result_ghost_forced_shader_4_green48779 60085–60114 ———
21995kill_result_ghost_forced_shader_4_red48780 60085–60114 ———
30893kill_result_ghost_shader_blue_aura8471002 60085–60114 ———
22014kill_result_ghost_shadow48827 60085–60114 ———
4385kill_result_ghost_shield34192 1–843 ———
17666kill_result_ghost_shield34192 60085–60114 ———
21636kill_result_ghost_shield_p2p47329 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.