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
17598kill_1h_sword_parry_down34046 60085–60114 ———
4241kill_1h_sword_parry_forehand34047 1–843 ———
17599kill_1h_sword_parry_forehand34047 60085–60114 ———
4337kill_1h_sword_parry_thrust34144 1–843 ———
17657kill_1h_sword_parry_thrust34144 60085–60114 ———
5544kill_1h_sword_parry_thurst35700 1–843 ———
18769kill_1h_sword_parry_thurst43479 60085–60114 ———
25548kill_1h_sword_run56832 60085–60114 ———
3459kill_1h_sword_strafe_left32810 1–843 ———
18770kill_1h_sword_strafe_left43480 60085–60114 ———
3460kill_1h_sword_strafe_right32811 1–843 ———
18771kill_1h_sword_strafe_right43481 60085–60114 ———
28208kill_1h_sword_turn_left65149 60085–60114 ———
3461kill_1h_sword_walk32812 1–843 ———
18772kill_1h_sword_walk43482 60085–60114 ———
5545kill_1h_thrown_attack35701 1–843 ———
18027kill_1h_thrown_attack35701 60085–60114 ———
5546kill_1h_thrown_backup35702 1–843 ———
18774kill_1h_thrown_backup43484 60085–60114 ———
5547kill_1h_thrown_dodge_backhand35703 1–843 ———
18028kill_1h_thrown_dodge_backhand35703 60085–60114 ———
5548kill_1h_thrown_dodge_down35704 1–843 ———
18029kill_1h_thrown_dodge_down35704 60085–60114 ———
5549kill_1h_thrown_dodge_forehand35705 1–843 ———
18030kill_1h_thrown_dodge_forehand35705 60085–60114 ———
5550kill_1h_thrown_dodge_thrust35706 1–843 ———
18031kill_1h_thrown_dodge_thrust35706 60085–60114 ———
5551kill_1h_thrown_idle35707 1–843 ———
18032kill_1h_thrown_idle35707 60085–60114 ———
5552kill_1h_thrown_ouch_backhand35708 1–843 ———
18033kill_1h_thrown_ouch_backhand35708 60085–60114 ———
5553kill_1h_thrown_ouch_down35709 1–843 ———
18034kill_1h_thrown_ouch_down35709 60085–60114 ———
5554kill_1h_thrown_ouch_forehand35710 1–843 ———
18035kill_1h_thrown_ouch_forehand35710 60085–60114 ———
5555kill_1h_thrown_ouch_thrust35711 1–843 ———
18036kill_1h_thrown_ouch_thrust35711 60085–60114 ———
5556kill_1h_thrown_strafe_left35712 1–843 ———
18775kill_1h_thrown_strafe_left43485 60085–60114 ———
5557kill_1h_thrown_strafe_right35713 1–843 ———
18776kill_1h_thrown_strafe_right43486 60085–60114 ———
5558kill_1h_thrown_walk35714 1–843 ———
18777kill_1h_thrown_walk43487 60085–60114 ———
18773kill_1h_throw_attack43483 60085–60114 ———
21589kill_1h_wand_attack47132 60085–60114 ———
21590kill_1h_wand_attack0147133 60085–60114 ———
21591kill_1h_wand_attack0247134 60085–60114 ———
21592kill_1h_wand_attack0347135 60085–60114 ———
21593kill_1h_wand_attack_recoil47136 60085–60114 ———
21594kill_1h_wand_attack_recoil0147137 60085–60114 ———
21595kill_1h_wand_attack_recoil0247138 60085–60114 ———
21596kill_1h_wand_attack_recoil0347139 60085–60114 ———
21597kill_1h_wand_backup47140 60085–60114 ———
21598kill_1h_wand_dodge_backhand47141 60085–60114 ———
21599kill_1h_wand_dodge_down47142 60085–60114 ———
21600kill_1h_wand_dodge_forehand47143 60085–60114 ———
21601kill_1h_wand_dodge_thrust47144 60085–60114 ———
21602kill_1h_wand_enter47145 60085–60114 ———
21603kill_1h_wand_exit47146 60085–60114 ———
21604kill_1h_wand_idle47147 60085–60114 ———
21605kill_1h_wand_ouch_backhand47148 60085–60114 ———
21606kill_1h_wand_ouch_down47149 60085–60114 ———
21607kill_1h_wand_ouch_forehand47150 60085–60114 ———
21608kill_1h_wand_ouch_thrust47151 60085–60114 ———
21609kill_1h_wand_parry_backhand47152 60085–60114 ———
21610kill_1h_wand_parry_down47153 60085–60114 ———
21611kill_1h_wand_parry_forehand47154 60085–60114 ———
21612kill_1h_wand_parry_thrust47155 60085–60114 ———
21613kill_1h_wand_strafe_left47156 60085–60114 ———
21614kill_1h_wand_strafe_right47157 60085–60114 ———
21615kill_1h_wand_walk47158 60085–60114 ———
18799kill_2hsword_idle0143509 60085–60114 ———
26484kill_2h_cast_enter58482 60085–60114 ———
26485kill_2h_cast_exit58483 60085–60114 ———
26486kill_2h_cast_idle58484 60085–60114 ———
27538kill_2h_idle62485 60085–60114 ———
27539kill_2h_knockedtoback62486 60085–60114 ———
27540kill_2h_knockedtoback_getup62487 60085–60114 ———
27541kill_2h_knockedtoback_onbackidle62488 60085–60114 ———
25681kill_2h_ouch57104 60085–60114 ———
25682kill_2h_ouch_backhand57105 60085–60114 ———
25683kill_2h_ouch_down57106 60085–60114 ———
25684kill_2h_ouch_forehand57107 60085–60114 ———
25685kill_2h_ouch_thrust57108 60085–60114 ———
22252kill_2h_sword49282 60085–60114 ———
4213kill_2h_sword_attack34005 1–843 ———
17583kill_2h_sword_attack34005 60085–60114 ———
4414kill_2h_sword_attack0134221 1–843 ———
17675kill_2h_sword_attack0134221 60085–60114 ———
4415kill_2h_sword_attack0234222 1–843 ———
17676kill_2h_sword_attack0234222 60085–60114 ———
6142kill_2h_sword_attack0337299 1–843 ———
18778kill_2h_sword_attack0343488 60085–60114 ———
4214kill_2h_sword_attack_recoil34006 1–843 ———
18779kill_2h_sword_attack_recoil43489 60085–60114 ———
4416kill_2h_sword_attack_recoil0134223 1–843 ———
18780kill_2h_sword_attack_recoil0143490 60085–60114 ———
4417kill_2h_sword_attack_recoil0234224 1–843 ———
18781kill_2h_sword_attack_recoil0243491 60085–60114 ———
6174kill_2h_sword_attack_recoil0337374 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.