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
19463kill_draw_weapon_trigger44188 60085–60114 ———
27152kill_drinal_absorb_back_exit61022 60085–60114 ———
27153kill_drinal_absorb_back_idle61023 60085–60114 ———
27154kill_drinal_absorb_forward_exit61024 60085–60114 ———
27155kill_drinal_absorb_forward_idle61025 60085–60114 ———
27156kill_drinal_absorb_left_exit61026 60085–60114 ———
27157kill_drinal_absorb_left_idle61027 60085–60114 ———
27158kill_drinal_absorb_right_exit61028 60085–60114 ———
27159kill_drinal_absorb_right_idle61029 60085–60114 ———
27160kill_drinal_fireball_gather61030 60085–60114 ———
27185kill_drinal_frontal_blast61125 60085–60114 ———
27161kill_drinal_skull_gather61031 60085–60114 ———
27162kill_drinal_spirt_gather61032 60085–60114 ———
27163kill_drinal_staff_blast61033 60085–60114 ———
27132kill_drinal_summon60916 60085–60114 ———
27149kill_drinal_trail_weapon_flames61007 60085–60114 ———
27150kill_drinal_trail_weapon_poison61008 60085–60114 ———
27186kill_drinal_warning_zone61126 60085–60114 ———
5137kill_drinking_failure35090 1–843 ———
19464kill_drinking_failure44189 60085–60114 ———
5138kill_drinking_idle35091 1–843 ———
19465kill_drinking_idle44190 60085–60114 ———
5139kill_drinking_success35092 1–843 ———
19466kill_drinking_success44191 60085–60114 ———
31671kill_drinking_wine_idle8494296 60085–60114 ———
25730kill_drink_chug57296 60085–60114 ———
5140kill_drip0135093 1–843 ———
19467kill_drip0144192 60085–60114 ———
5141kill_drip0235094 1–843 ———
19468kill_drip0244193 60085–60114 ———
4280kill_dronewolf_sound34087 1–843 ———
19469kill_dronewolf_sound44194 60085–60114 ———
5508kill_drum_drone_snd35656 1–843 ———
19470kill_drum_drone_snd44195 60085–60114 ———
5509kill_drum_drum_snd35657 1–843 ———
19471kill_drum_drum_snd44196 60085–60114 ———
5487kill_ds_dragonspawn_sound35626 1–843 ———
19472kill_ds_dragonspawn_sound44197 60085–60114 ———
5199kill_ds_gashiss_snd35194 1–843 ———
19473kill_ds_gashiss_snd44198 60085–60114 ———
4215kill_dual_wield_attack34011 1–843 ———
17584kill_dual_wield_attack34011 60085–60114 ———
4216kill_dual_wield_attack0134012 1–843 ———
17585kill_dual_wield_attack0134012 60085–60114 ———
4217kill_dual_wield_attack0234013 1–843 ———
17586kill_dual_wield_attack0234013 60085–60114 ———
6169kill_dual_wield_attack0337367 1–843 ———
18280kill_dual_wield_attack0337367 60085–60114 ———
4218kill_dual_wield_attack_recoil34014 1–843 ———
19474kill_dual_wield_attack_recoil44201 60085–60114 ———
4219kill_dual_wield_attack_recoil0134015 1–843 ———
19475kill_dual_wield_attack_recoil0144202 60085–60114 ———
4220kill_dual_wield_attack_recoil0234016 1–843 ———
19476kill_dual_wield_attack_recoil0244203 60085–60114 ———
6188kill_dual_wield_attack_recoil0337407 1–843 ———
19477kill_dual_wield_attack_recoil0344204 60085–60114 ———
3611kill_dual_wield_backup33020 1–843 ———
19478kill_dual_wield_backup44205 60085–60114 ———
25855kill_dual_wield_dead_enter57608 60085–60114 ———
5601kill_dual_wield_defensive_buff35761 1–843 ———
19479kill_dual_wield_defensive_buff44206 60085–60114 ———
4577kill_dual_wield_dodge_backhand34402 1–843 ———
19480kill_dual_wield_dodge_backhand44207 60085–60114 ———
4578kill_dual_wield_dodge_down34403 1–843 ———
19481kill_dual_wield_dodge_down44208 60085–60114 ———
4579kill_dual_wield_dodge_forehand34404 1–843 ———
19482kill_dual_wield_dodge_forehand44209 60085–60114 ———
6189kill_dual_wield_dodge_thrust37408 1–843 ———
19483kill_dual_wield_dodge_thrust44210 60085–60114 ———
3612kill_dual_wield_enter33029 1–843 ———
19484kill_dual_wield_enter44211 60085–60114 ———
3613kill_dual_wield_exit33032 1–843 ———
19485kill_dual_wield_exit44212 60085–60114 ———
5602kill_dual_wield_feint35762 1–843 ———
19486kill_dual_wield_feint44213 60085–60114 ———
3614kill_dual_wield_idle33035 1–843 ———
17510kill_dual_wield_idle33035 60085–60114 ———
23418kill_dual_wield_idle0151989 60085–60114 ———
5603kill_dual_wield_kick35763 1–843 ———
18043kill_dual_wield_kick35763 60085–60114 ———
5604kill_dual_wield_knockdowntoknees35764 1–843 ———
19487kill_dual_wield_knockdowntoknees44214 60085–60114 ———
27190kill_dual_wield_knockeddowntoknees61140 60085–60114 ———
5605kill_dual_wield_knockedtoback35765 1–843 ———
19488kill_dual_wield_knockedtoback44215 60085–60114 ———
5606kill_dual_wield_knockedtoback_getup35766 1–843 ———
19489kill_dual_wield_knockedtoback_getup44216 60085–60114 ———
27191kill_dual_wield_knockedtoback_onbackidle61141 60085–60114 ———
5607kill_dual_wield_offensive_buff35767 1–843 ———
19490kill_dual_wield_offensive_buff44217 60085–60114 ———
4580kill_dual_wield_ouch_backhand34405 1–843 ———
19491kill_dual_wield_ouch_backhand44218 60085–60114 ———
4581kill_dual_wield_ouch_down34406 1–843 ———
19492kill_dual_wield_ouch_down44219 60085–60114 ———
4582kill_dual_wield_ouch_forehand34407 1–843 ———
19493kill_dual_wield_ouch_forehand44220 60085–60114 ———
6190kill_dual_wield_ouch_thrust37409 1–843 ———
19494kill_dual_wield_ouch_thrust44221 60085–60114 ———
4583kill_dual_wield_parry_backhand34408 1–843 ———
19495kill_dual_wield_parry_backhand44222 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.