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
9167ouch_backhand_0111922 60085–60114 ———
3158ouch_bakchand5454 1–843 ———
9168ouch_bakchand11923 60085–60114 ———
9169ouch_big11924 60085–60114 ———
9170ouch_chips11925 60085–60114 ———
3159ouch_down5455 1–843 ———
9171ouch_down11926 60085–60114 ———
9172ouch_down_0111927 60085–60114 ———
3160ouch_forehand5456 1–843 ———
9173ouch_forehand11928 60085–60114 ———
9174ouch_forehand_0111929 60085–60114 ———
11477ouch_forhand16575 60085–60114 ———
9175ouch_fx11930 60085–60114 ———
9176ouch_fx211931 60085–60114 ———
541ouch_headshake01404 1–843 ———
9177ouch_headshake0111932 60085–60114 ———
9178ouch_medium11933 60085–60114 ———
9179ouch_medium_big11934 60085–60114 ———
9180ouch_oil_drip11935 60085–60114 ———
9181ouch_parts11936 60085–60114 ———
542ouch_roar01405 1–843 ———
9182ouch_roar0111937 60085–60114 ———
543ouch_scream406 1–843 ———
9183ouch_scream11938 60085–60114 ———
9184ouch_small11939 60085–60114 ———
544ouch_sound407 1–843 ———
9185ouch_sound11940 60085–60114 ———
9186ouch_spurt_chest11941 60085–60114 ———
9187ouch_spurt_pelvis11942 60085–60114 ———
881ouch_tail1072 1–843 ———
9188ouch_tail11943 60085–60114 ———
882ouch_tail021073 1–843 ———
9189ouch_tail0211944 60085–60114 ———
3161ouch_thrust5457 1–843 ———
9190ouch_thrust11945 60085–60114 ———
9191ouch_thrust_0111946 60085–60114 ———
1942oven_door2329 1–843 ———
9196oven_door11951 60085–60114 ———
3209overhere5570 1–843 ———
9197overhere11952 60085–60114 ———
12966pandamen_wildswing_attack19797 60085–60114 ———
12535panda_chi18945 60085–60114 ———
12542panda_dance0118964 60085–60114 ———
12543panda_dance0218965 60085–60114 ———
13249panting_wolf_sound20346 60085–60114 ———
11057paperdoll15629 60085–60114 ———
11837paper_scatter17325 60085–60114 ———
29825parrot_attack103407 60085–60114 ———
29853parrot_eating104140 60085–60114 ———
29854parrot_talking104141 60085–60114 ———
2505parry3105 1–843 ———
9198parry11953 60085–60114 ———
2506parry013106 1–843 ———
9199parry0111954 60085–60114 ———
2507parry023107 1–843 ———
9200parry0211955 60085–60114 ———
3081parry034985 1–843 ———
9201parry0311956 60085–60114 ———
10830parry_backhand14469 60085–60114 ———
10831parry_down14470 60085–60114 ———
10832parry_forehand14471 60085–60114 ———
940parry_metal_metal_snd1145 1–843 ———
9202parry_metal_metal_snd11957 60085–60114 ———
1455parry_metal_skin_snd1716 1–843 ———
9203parry_metal_skin_snd11958 60085–60114 ———
1456parry_metal_wood_snd1717 1–843 ———
9204parry_metal_wood_snd11959 60085–60114 ———
2521parry_skin_metal_snd3127 1–843 ———
9205parry_skin_metal_snd11960 60085–60114 ———
1457parry_skin_skin_snd1718 1–843 ———
9206parry_skin_skin_snd11961 60085–60114 ———
2522parry_skin_wood_snd3128 1–843 ———
9207parry_skin_wood_snd11962 60085–60114 ———
2523parry_snd3129 1–843 ———
9208parry_snd11963 60085–60114 ———
2904parry_target_tigger4406 1–843 ———
9209parry_target_tigger11964 60085–60114 ———
941parry_target_trigger1146 1–843 ———
9210parry_target_trigger11965 60085–60114 ———
10833parry_thrust14472 60085–60114 ———
2524parry_wood_metal_snd3130 1–843 ———
9211parry_wood_metal_snd11966 60085–60114 ———
1458parry_wood_skin_snd1719 1–843 ———
9212parry_wood_skin_snd11967 60085–60114 ———
1459parry_wood_wood_snd1720 1–843 ———
9213parry_wood_wood_snd11968 60085–60114 ———
9214particle_mood_combat11969 60085–60114 ———
10893particle_mood_combat_enter14978 60085–60114 ———
9215particle_mood_dead11970 60085–60114 ———
12139particle_mood_idle18008 60085–60114 ———
9216particle_mood_peace11971 60085–60114 ———
11403particle_teleport16420 60085–60114 ———
11145pawbuster_attack_enter15864 60085–60114 ———
11146pawbuster_attack_exit15865 60085–60114 ———
11147pawbuster_attack_idle15866 60085–60114 ———
10879pawstep14904 60085–60114 ———
10905pawstep_leather_carpet15053 60085–60114 ———
10906pawstep_leather_dirt15054 60085–60114 ———
10907pawstep_leather_grass15055 60085–60114 ———
10908pawstep_leather_gravel15056 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.