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
4584kill_dual_wield_parry_down34409 1–843 ———
19496kill_dual_wield_parry_down44223 60085–60114 ———
4585kill_dual_wield_parry_forehand34410 1–843 ———
19497kill_dual_wield_parry_forehand44224 60085–60114 ———
6191kill_dual_wield_parry_thrust37410 1–843 ———
19498kill_dual_wield_parry_thrust44225 60085–60114 ———
27536kill_dual_wield_run62481 60085–60114 ———
3615kill_dual_wield_strafe_left33052 1–843 ———
19499kill_dual_wield_strafe_left44226 60085–60114 ———
3616kill_dual_wield_strafe_right33053 1–843 ———
19500kill_dual_wield_strafe_right44227 60085–60114 ———
5608kill_dual_wield_super_buff35768 1–843 ———
19501kill_dual_wield_super_buff44228 60085–60114 ———
5609kill_dual_wield_taunt_combat_art35769 1–843 ———
19502kill_dual_wield_taunt_combat_art44229 60085–60114 ———
3617kill_dual_wield_walk33054 1–843 ———
19503kill_dual_wield_walk44230 60085–60114 ———
5610kill_dual_wield_whirling_attack35770 1–843 ———
18044kill_dual_wield_whirling_attack35770 60085–60114 ———
5611kill_dual_wield_wild_swing35771 1–843 ———
18045kill_dual_wield_wild_swing35771 60085–60114 ———
3618kill_duck33055 1–843 ———
19504kill_duck44231 60085–60114 ———
19505kill_duck_short44232 60085–60114 ———
22532kill_dusting_off49764 60085–60114 ———
30705kill_dust_attack_fx8463355 60085–60114 ———
5415kill_dust_base35528 1–843 ———
19506kill_dust_base44233 60085–60114 ———
23384kill_dust_fx51889 60085–60114 ———
5416kill_dust_holster_center35529 1–843 ———
19507kill_dust_holster_center44234 60085–60114 ———
5417kill_dust_holster_left35530 1–843 ———
19508kill_dust_holster_left44235 60085–60114 ———
5418kill_dust_holster_right35531 1–843 ———
19509kill_dust_holster_right44236 60085–60114 ———
5438kill_dust_leftfoot35555 1–843 ———
19510kill_dust_leftfoot44237 60085–60114 ———
5439kill_dust_lefttfoot35556 1–843 ———
19511kill_dust_lefttfoot44238 60085–60114 ———
3619kill_dust_puff33056 1–843 ———
19512kill_dust_puff44239 60085–60114 ———
5419kill_dust_rightfoot35532 1–843 ———
19513kill_dust_rightfoot44240 60085–60114 ———
5440kill_dust_righttfoot35557 1–843 ———
19514kill_dust_righttfoot44241 60085–60114 ———
30222kill_dust_web_fx8454671 60085–60114 ———
21493kill_dwarf_forestry_success46553 60085–60114 ———
26998kill_dwarf_rift_crack_dig60320 60085–60114 ———
23405kill_dw_attack_enter51946 60085–60114 ———
23406kill_dw_attack_exit51947 60085–60114 ———
23407kill_dw_attack_hold51948 60085–60114 ———
6010kill_dw_snap_snd36722 1–843 ———
19515kill_dw_snap_snd44242 60085–60114 ———
4629kill_e34455 1–843 ———
19516kill_e44243 60085–60114 ———
5488kill_eat35627 1–843 ———
19517kill_eat44244 60085–60114 ———
26538kill_eaten_angler58647 60085–60114 ———
30594kill_eating_enter8457765 60085–60114 ———
30595kill_eating_exit8457766 60085–60114 ———
28238kill_eating_idle65328 60085–60114 ———
23359kill_eat_bread51815 60085–60114 ———
23360kill_eat_fish51816 60085–60114 ———
24864kill_eat_idle54922 60085–60114 ———
30794kill_edge_attack01_skyshrine8467220 60085–60114 ———
30795kill_edge_attack02_skyshrine8467221 60085–60114 ———
30796kill_edge_attack_skyshrine8467222 60085–60114 ———
30729kill_edge_breath_attack_skyshrine8464560 60085–60114 ———
30730kill_edge_enter_skyshrine8464561 60085–60114 ———
30731kill_edge_exit_skyshrine8464562 60085–60114 ———
30845kill_edge_fly_attack_loop_skyshrine8469234 60085–60114 ———
30804kill_edge_fly_idle_attack_skyshrine8467734 60085–60114 ———
30819kill_edge_fly_idle_attack_skyshrine18468411 60085–60114 ———
30846kill_edge_fly_idle_enter_alt_skyshrine8469235 60085–60114 ———
30800kill_edge_fly_idle_enter_skyshrine8467564 60085–60114 ———
30805kill_edge_fly_idle_exit_skyshrine8467735 60085–60114 ———
30801kill_edge_fly_idle_skyshrine8467565 60085–60114 ———
30847kill_edge_fly_ouch_skyshrine8469236 60085–60114 ———
30848kill_edge_fly_quick_attack_skyshrine8469237 60085–60114 ———
30732kill_edge_idle_skyshrine8464563 60085–60114 ———
30733kill_edge_run_skyshrine8464564 60085–60114 ———
30759kill_edge_smash_pillar_skyshrine8465623 60085–60114 ———
5084kill_ef_cast_chains_lp_snd35003 1–843 ———
19518kill_ef_cast_chains_lp_snd44245 60085–60114 ———
5085kill_ef_chains_snd35004 1–843 ———
19519kill_ef_chains_snd44246 60085–60114 ———
30640kill_eggsplode_fx8459645 60085–60114 ———
6554kill_elbow39191 1–843 ———
19520kill_elbow44247 60085–60114 ———
22932kill_electric_fx50774 60085–60114 ———
21661kill_electric_hands_l47565 60085–60114 ———
21662kill_electric_hands_r47566 60085–60114 ———
5879kill_electric_shackles_softer_sound36371 1–843 ———
19521kill_electric_shackles_softer_sound44248 60085–60114 ———
5872kill_electric_shackles_sound36326 1–843 ———
19522kill_electric_shackles_sound44249 60085–60114 ———
22947kill_elemental_fire_hands50807 60085–60114 ———
3998kill_endsplat33738 1–843 ———
19524kill_endsplat44251 60085–60114 ———
4281kill_end_snarl_sound34088 1–843 ———
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.