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
20360kill_snd_wuoshi_tree_exit45091 60085–60114 ———
20361kill_snd_wuoshi_tree_loop45092 60085–60114 ———
26797kill_snd_xygoz1_attack59478 60085–60114 ———
26798kill_snd_xygoz1_attack0159479 60085–60114 ———
26799kill_snd_xygoz1_attack0259480 60085–60114 ———
26800kill_snd_xygoz1_attack0359481 60085–60114 ———
26801kill_snd_xygoz1_attack_flame59482 60085–60114 ———
26802kill_snd_xygoz1_attack_tail59483 60085–60114 ———
26803kill_snd_xygoz1_dead_enter59484 60085–60114 ———
26804kill_snd_xygoz1_idle0159485 60085–60114 ———
26805kill_snd_xygoz1_knockedtoback59486 60085–60114 ———
26806kill_snd_xygoz1_superbuff59487 60085–60114 ———
28141kill_snd_yelinak_breath64805 60085–60114 ———
28142kill_snd_yelinak_crash_impact64806 60085–60114 ———
28143kill_snd_yelinak_roar_0164807 60085–60114 ———
28144kill_snd_yelinak_wing_by64808 60085–60114 ———
28145kill_snd_yelinak_wing_by_long64809 60085–60114 ———
28122kill_snd_yelinak_wing_flaps64671 60085–60114 ———
3775kill_sneer33318 1–843 ———
20362kill_sneer45093 60085–60114 ———
3776kill_sneeze33319 1–843 ———
20363kill_sneeze45094 60085–60114 ———
5652kill_sneeze_smoke35812 1–843 ———
20364kill_sneeze_smoke45095 60085–60114 ———
3777kill_snicker33320 1–843 ———
20365kill_snicker45096 60085–60114 ———
3778kill_sniff33321 1–843 ———
20366kill_sniff45097 60085–60114 ———
24867kill_sniff_idle54927 60085–60114 ———
3779kill_snort33322 1–843 ———
20367kill_snort45098 60085–60114 ———
5947kill_soaf_burn_sound36563 1–843 ———
20368kill_soaf_burn_sound45099 60085–60114 ———
5948kill_soaf_castcharge02_sound36564 1–843 ———
20369kill_soaf_castcharge02_sound45100 60085–60114 ———
5949kill_soaf_castcharge_sound36565 1–843 ———
20370kill_soaf_castcharge_sound45101 60085–60114 ———
5950kill_soaf_flamearrow_sound36566 1–843 ———
20371kill_soaf_flamearrow_sound45102 60085–60114 ———
4809kill_soc_clayskinfall_lp_sound34683 1–843 ———
20372kill_soc_clayskinfall_lp_sound45103 60085–60114 ———
4810kill_soc_clayskinform_sound34684 1–843 ———
20373kill_soc_clayskinform_sound45104 60085–60114 ———
5951kill_sod_flameup_sound36567 1–843 ———
20374kill_sod_flameup_sound45105 60085–60114 ———
5952kill_sod_whoosh01_sound36568 1–843 ———
20375kill_sod_whoosh01_sound45106 60085–60114 ———
22111kill_sokokar_glide49014 60085–60114 ———
22094kill_sokokar_idle48977 60085–60114 ———
22095kill_sokokar_run48978 60085–60114 ———
22096kill_sokokar_walk48979 60085–60114 ———
28043kill_solusek_death_enter64319 60085–60114 ———
28044kill_solusek_ro_attack64320 60085–60114 ———
28045kill_solusek_ro_attack_0164321 60085–60114 ———
28046kill_solusek_ro_attack_0264322 60085–60114 ———
28047kill_solusek_ro_attack_0364323 60085–60114 ———
28048kill_solusek_ro_cast64324 60085–60114 ———
28049kill_solusek_ro_cast_0464325 60085–60114 ———
28050kill_solusek_ro_cast_0964326 60085–60114 ———
28051kill_solusek_ro_charge_up64327 60085–60114 ———
28052kill_solusek_ro_combat_enter64328 60085–60114 ———
28053kill_solusek_ro_combat_exit64329 60085–60114 ———
28054kill_solusek_ro_foot_steps64330 60085–60114 ———
30571kill_solusek_ro_foot_step_018456730 60085–60114 ———
28055kill_solusek_ro_jump64331 60085–60114 ———
28056kill_solusek_ro_ouch64332 60085–60114 ———
28057kill_solusek_ro_shield_shove64333 60085–60114 ———
28058kill_solusek_ro_whirl_attack64334 60085–60114 ———
28059kill_solusek_ro_wild_swing64335 60085–60114 ———
5223kill_som_cast_lp_snd35218 1–843 ———
20376kill_som_cast_lp_snd45107 60085–60114 ———
5968kill_sotb_batsqueak2_sound36596 1–843 ———
20377kill_sotb_batsqueak2_sound45108 60085–60114 ———
5969kill_sotb_batsqueak_sound36597 1–843 ———
20378kill_sotb_batsqueak_sound45109 60085–60114 ———
26937kill_soulsuck_enter60014 60085–60114 ———
28128kill_soulsuck_exit64740 60085–60114 ———
26938kill_soulsuck_idle60015 60085–60114 ———
26935kill_soul_idle60012 60085–60114 ———
26936kill_soul_suck_fx60013 60085–60114 ———
5653kill_sound_angry35813 1–843 ———
20379kill_sound_angry45110 60085–60114 ———
5521kill_sound_angry0135673 1–843 ———
20380kill_sound_angry0145111 60085–60114 ———
5522kill_sound_angry0235674 1–843 ———
20381kill_sound_angry0245112 60085–60114 ———
20382kill_sound_anvilhit45113 60085–60114 ———
20383kill_sound_aoeflame45114 60085–60114 ———
5840kill_sound_artifact_bury36167 1–843 ———
20384kill_sound_artifact_bury45115 60085–60114 ———
5841kill_sound_artifact_emerge36168 1–843 ———
20385kill_sound_artifact_emerge45116 60085–60114 ———
3780kill_sound_atkhit33323 1–843 ———
20386kill_sound_atkhit45117 60085–60114 ———
3781kill_sound_atkland33324 1–843 ———
20387kill_sound_atkland45118 60085–60114 ———
3782kill_sound_atkslide33325 1–843 ———
20388kill_sound_atkslide45119 60085–60114 ———
3783kill_sound_atkvocal33326 1–843 ———
20389kill_sound_atkvocal45120 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.