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
2150combat_idle12689 1–843 ———
8448combat_idle111193 60085–60114 ———
11210combat_idle216037 60085–60114 ———
455combat_idleflap205 1–843 ———
8456combat_idleflap11201 60085–60114 ———
29054combat_idle_alt80795 60085–60114 ———
449combat_idle_bark198 1–843 ———
8449combat_idle_bark11194 60085–60114 ———
2702combat_idle_enter3701 1–843 ———
8450combat_idle_enter11195 60085–60114 ———
450combat_idle_jump199 1–843 ———
8451combat_idle_jump11196 60085–60114 ———
451combat_idle_rhand200 1–843 ———
8452combat_idle_rhand11197 60085–60114 ———
452combat_idle_snap202 1–843 ———
8453combat_idle_snap11198 60085–60114 ———
453combat_idle_sound01203 1–843 ———
8454combat_idle_sound0111199 60085–60114 ———
454combat_idle_sound02204 1–843 ———
8455combat_idle_sound0211200 60085–60114 ———
456combat_ouch206 1–843 ———
8457combat_ouch11202 60085–60114 ———
457combat_ouch_sound209 1–843 ———
8458combat_ouch_sound11203 60085–60114 ———
8459combat_peace11204 60085–60114 ———
829combat_run1003 1–843 ———
8460combat_run11205 60085–60114 ———
2513combat_strafe_left_run3116 1–843 ———
8461combat_strafe_left_run11206 60085–60114 ———
2514combat_strafe_right_run3117 1–843 ———
8462combat_strafe_right_run11207 60085–60114 ———
1232combat_tail1473 1–843 ———
8463combat_tail11208 60085–60114 ———
8464combat_tail_cloak11209 60085–60114 ———
458combat_turn_left210 1–843 ———
8465combat_turn_left11210 60085–60114 ———
459combat_turn_right211 1–843 ———
8466combat_turn_right11211 60085–60114 ———
2628combat_walk3378 1–843 ———
8467combat_walk11212 60085–60114 ———
324comfort0 1–843 needs to be comforted.comforts %t.—
11478community_robe_red16580 60085–60114 ———
1226complete1467 1–843 ———
8468complete11213 60085–60114 ———
216confused214 1–843 appears confused.stumbles around, obviously confused by %t.—
8469confused11214 60085–60114 appears confused.stumbles around, obviously confused by %t.—
14234conjure22603 60085–60114 ———
14235conjure_enter22604 60085–60114 ———
14236conjure_exit22605 60085–60114 ———
17241console_dead31427 60085–60114 ———
17242console_idle31428 60085–60114 ———
17243console_ouch31429 60085–60114 ———
3449constant1_fx6789 1–843 ———
10823constant2_fx14407 60085–60114 ———
3450constant_fx6790 1–843 ———
11053constant_fx15619 60085–60114 ———
8470converse11220 60085–60114 ———
12533converse0118942 60085–60114 ———
13978converse01_sit21910 60085–60114 ———
12534converse0218943 60085–60114 ———
13979converse02_sit21911 60085–60114 ———
12587converse0319108 60085–60114 ———
28653converse0466976 60085–60114 ———
28654converse0566977 60085–60114 ———
28655converse0666978 60085–60114 ———
28656converse0766979 60085–60114 ———
28657converse0866980 60085–60114 ———
28658converse0966981 60085–60114 ———
28659converse1066982 60085–60114 ———
28660converse1166983 60085–60114 ———
28661converse1266984 60085–60114 ———
2373converse_female012968 1–843 ———
8471converse_female0111221 60085–60114 ———
2374converse_female022969 1–843 ———
8472converse_female0211222 60085–60114 ———
2375converse_female032970 1–843 ———
8473converse_female0311223 60085–60114 ———
2376converse_female042971 1–843 ———
8474converse_female0411224 60085–60114 ———
2377converse_female052972 1–843 ———
8475converse_female0511225 60085–60114 ———
2378converse_female062973 1–843 ———
8476converse_female0611226 60085–60114 ———
2379converse_female072974 1–843 ———
8477converse_female0711227 60085–60114 ———
2380converse_female082975 1–843 ———
8478converse_female0811228 60085–60114 ———
2381converse_female092976 1–843 ———
8479converse_female0911229 60085–60114 ———
2382converse_female102977 1–843 ———
8480converse_female1011230 60085–60114 ———
2383converse_female112978 1–843 ———
8481converse_female1111231 60085–60114 ———
2384converse_female122979 1–843 ———
8482converse_female1211232 60085–60114 ———
2385converse_male012980 1–843 ———
8483converse_male0111233 60085–60114 ———
2386converse_male022981 1–843 ———
8484converse_male0211234 60085–60114 ———
2387converse_male032982 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.