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
23597kill_sound_displacer_beast_whip52321 60085–60114 ———
23598kill_sound_displacer_beast_whip_deep52322 60085–60114 ———
23599kill_sound_displacer_beast_whip_high52323 60085–60114 ———
23465kill_sound_dodge_down52074 60085–60114 ———
4899kill_sound_duck34776 1–843 ———
20692kill_sound_duck45423 60085–60114 ———
5654kill_sound_eat35814 1–843 ———
20693kill_sound_eat45424 60085–60114 ———
6304kill_sound_eating37892 1–843 ———
20694kill_sound_eating45425 60085–60114 ———
20695kill_sound_eatslime45426 60085–60114 ———
22974kill_sound_electric50879 60085–60114 ———
23058kill_sound_electric_burst51114 60085–60114 ———
23155kill_sound_electrified51312 60085–60114 ———
22162kill_sound_enter49115 60085–60114 ———
20696kill_sound_entercreak45427 60085–60114 ———
5037kill_sound_enterglide34920 1–843 ———
20697kill_sound_enterglide45428 60085–60114 ———
20698kill_sound_enterleaves45429 60085–60114 ———
20699kill_sound_entermoan45430 60085–60114 ———
4163kill_sound_enteropen33943 1–843 ———
20700kill_sound_enteropen45431 60085–60114 ———
4207kill_sound_enterscrape33999 1–843 ———
20701kill_sound_enterscrape45432 60085–60114 ———
4164kill_sound_entervocal33944 1–843 ———
20702kill_sound_entervocal45433 60085–60114 ———
22163kill_sound_enter_vocal49116 60085–60114 ———
24530kill_sound_ettin_1h_sword_attack54242 60085–60114 ———
24531kill_sound_ettin_1h_sword_attack0154243 60085–60114 ———
24532kill_sound_ettin_1h_sword_attack0354244 60085–60114 ———
24534kill_sound_ettin_attack54246 60085–60114 ———
24535kill_sound_ettin_attack0154247 60085–60114 ———
24536kill_sound_ettin_attack0254248 60085–60114 ———
24537kill_sound_ettin_attack0354249 60085–60114 ———
24538kill_sound_ettin_attack_throw_boulder54250 60085–60114 ———
24539kill_sound_ettin_cast_aoe_beneficial_end54251 60085–60114 ———
24540kill_sound_ettin_cast_aoe_beneficial_loop54252 60085–60114 ———
24541kill_sound_ettin_cast_aoe_beneficial_start54253 60085–60114 ———
24542kill_sound_ettin_cast_aoe_detrimental_end54254 60085–60114 ———
24543kill_sound_ettin_cast_aoe_detrimental_loop54255 60085–60114 ———
24544kill_sound_ettin_cast_aoe_detrimental_start54256 60085–60114 ———
24545kill_sound_ettin_cast_aoe_invocation_end54257 60085–60114 ———
24546kill_sound_ettin_cast_aoe_invocation_loop54258 60085–60114 ———
24547kill_sound_ettin_cast_aoe_invocation_start54259 60085–60114 ———
24548kill_sound_ettin_cast_aoe_wand_end54260 60085–60114 ———
24549kill_sound_ettin_cast_aoe_wand_loop54261 60085–60114 ———
24550kill_sound_ettin_cast_aoe_wand_start54262 60085–60114 ———
24551kill_sound_ettin_cast_summon_end54263 60085–60114 ———
24552kill_sound_ettin_cast_summon_loop54264 60085–60114 ———
24553kill_sound_ettin_cast_summon_start54265 60085–60114 ———
24554kill_sound_ettin_cast_targeted_beneficial_end54266 60085–60114 ———
24555kill_sound_ettin_cast_targeted_beneficial_start54267 60085–60114 ———
24556kill_sound_ettin_cast_targeted_detrimental_end54268 60085–60114 ———
24557kill_sound_ettin_cast_targeted_detrimental_start54269 60085–60114 ———
24558kill_sound_ettin_cast_targeted_wand_end54270 60085–60114 ———
24559kill_sound_ettin_cast_targeted_wand_loop54271 60085–60114 ———
24560kill_sound_ettin_cast_targeted_wand_start54272 60085–60114 ———
24561kill_sound_ettin_charge_up54273 60085–60114 ———
24562kill_sound_ettin_dodge_backhand54274 60085–60114 ———
24563kill_sound_ettin_dodge_forehand54275 60085–60114 ———
24564kill_sound_ettin_drink54276 60085–60114 ———
24565kill_sound_ettin_dual_wield_attack54277 60085–60114 ———
24566kill_sound_ettin_dual_wield_attack0154278 60085–60114 ———
24567kill_sound_ettin_dual_wield_attack0254279 60085–60114 ———
24568kill_sound_ettin_dual_wield_attack0354280 60085–60114 ———
24533kill_sound_ettin_fs54245 60085–60114 ———
24569kill_sound_ettin_habitat0154281 60085–60114 ———
24570kill_sound_ettin_habitat0354282 60085–60114 ———
24571kill_sound_ettin_idle0154283 60085–60114 ———
24572kill_sound_ettin_idle0254284 60085–60114 ———
24573kill_sound_ettin_knockeddowntoknees54285 60085–60114 ———
24574kill_sound_ettin_ouch_backhand54286 60085–60114 ———
24575kill_sound_ettin_ouch_forehand54287 60085–60114 ———
24576kill_sound_ettin_run54288 60085–60114 ———
24577kill_sound_ettin_shield_shove54289 60085–60114 ———
24578kill_sound_ettin_swim_idle54290 60085–60114 ———
24579kill_sound_ettin_walk54291 60085–60114 ———
24580kill_sound_ettin_whirling_attack54292 60085–60114 ———
24581kill_sound_ettin_wild_swing54293 60085–60114 ———
27130kill_sound_evil_bird_egg_vox60904 60085–60114 ———
27031kill_sound_evil_bird_jump_sub60472 60085–60114 ———
27032kill_sound_evil_bird_peck60473 60085–60114 ———
27033kill_sound_evil_bird_scratch60474 60085–60114 ———
27034kill_sound_evil_bird_vox_idle0360475 60085–60114 ———
6557kill_sound_exhale39196 1–843 ———
20703kill_sound_exhale45434 60085–60114 ———
4208kill_sound_exitflap34000 1–843 ———
20704kill_sound_exitflap45435 60085–60114 ———
5028kill_sound_exitidle34911 1–843 ———
20705kill_sound_exitidle45436 60085–60114 ———
4209kill_sound_exitjump34001 1–843 ———
20706kill_sound_exitjump45437 60085–60114 ———
4210kill_sound_exitscream34002 1–843 ———
20707kill_sound_exitscream45438 60085–60114 ———
6257kill_sound_explode37580 1–843 ———
20708kill_sound_explode45439 60085–60114 ———
3973kill_sound_extinguish33704 1–843 ———
20709kill_sound_extinguish45440 60085–60114 ———
3804kill_sound_fall33354 1–843 ———
20710kill_sound_fall45441 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.