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
28855idle_eat0171590 60085–60114 ———
28856idle_eat0271591 60085–60114 ———
28854idle_eat0371589 60085–60114 ———
29027idle_end79973 60085–60114 ———
16875idle_frightened30357 60085–60114 ———
15107idle_gardening24971 60085–60114 ———
15119idle_gardening_exit25032 60085–60114 ———
15108idle_gathering24972 60085–60114 ———
15120idle_gathering_exit25033 60085–60114 ———
28860idle_howl72031 60085–60114 ———
29025idle_mid79894 60085–60114 ———
16809idle_mode29914 60085–60114 ———
505idle_pant328 1–843 ———
8981idle_pant11734 60085–60114 ———
15099idle_rake24921 60085–60114 ———
506idle_sniff330 1–843 ———
8982idle_sniff11735 60085–60114 ———
507idle_snort331 1–843 ———
8983idle_snort11736 60085–60114 ———
11954idle_sound17610 60085–60114 ———
29026idle_start79895 60085–60114 ———
2298idle_static2878 1–843 ———
8984idle_static11737 60085–60114 ———
508idle_step333 1–843 ———
8985idle_step11738 60085–60114 ———
28793idle_still68725 60085–60114 ———
12392idle_stone18607 60085–60114 ———
11161idle_to_combat15927 60085–60114 ———
509idle_vocal334 1–843 ———
8986idle_vocal11739 60085–60114 ———
16850idle_waterfall30219 60085–60114 ———
16054idlleb27037 60085–60114 ———
949ignite_weapon1163 1–843 ———
6777ignite_weapon1163 60085–60114 ———
2635ignite_weapon_big3397 1–843 ———
7330ignite_weapon_big3397 60085–60114 ———
2644ignite_weapon_prism3421 1–843 ———
7335ignite_weapon_prism3421 60085–60114 ———
1469ignite_weapon_sh1752 1–843 ———
8995ignite_weapon_sh11748 60085–60114 ———
2636ignite_weapon_small3398 1–843 ———
7331ignite_weapon_small3398 60085–60114 ———
10729iksar_female_2h_sword_wild_swing13825 60085–60114 ———
10756iksar_female_pike_charge_up13872 60085–60114 ———
10757iksar_female_pike_defensive_buff13873 60085–60114 ———
10758iksar_female_pike_offensive_buff13874 60085–60114 ———
12257iksar_ghost_rez_p2p18324 60085–60114 ———
11451iksar_swim_backup16501 60085–60114 ———
11452iksar_swim_go16502 60085–60114 ———
16199iksar_water_forced_shader_splash27503 60085–60114 ———
16542ilde0129025 60085–60114 ———
1909ilt_tap_snd2287 1–843 ———
8996ilt_tap_snd11749 60085–60114 ———
14126impact_snd22277 60085–60114 ———
518inhale343 1–843 ———
8997inhale11750 60085–60114 ———
15689injured_idle25693 60085–60114 ———
3451instant_fx6791 1–843 ———
11054instant_fx15620 60085–60114 ———
15746intro25881 60085–60114 ———
1831int_cast_lp_snd2148 1–843 ———
8998int_cast_lp_snd11752 60085–60114 ———
1841int_cast_sparkles_lp2165 1–843 ———
8999int_cast_sparkles_lp11753 60085–60114 ———
1628int_float_sound1936 1–843 ———
9000int_float_sound11754 60085–60114 ———
1629int_intglow_sound1937 1–843 ———
9001int_intglow_sound11755 60085–60114 ———
254itch345 1–843 scratches an itch.——
9002itch11756 60085–60114 scratches an itch.——
16288jaw_rotate_max27962 60085–60114 ———
15929jaw_rotate_y_max26485 60085–60114 ———
15930jaw_rotate_y_min26486 60085–60114 ———
15931jaw_rotate_z_max26487 60085–60114 ———
15932jaw_rotate_z_min26488 60085–60114 ———
29588jog_backwards95922 60085–60114 ———
519jump346 1–843 ———
9003jump11757 60085–60114 ———
13193jump_falling20178 60085–60114 ———
520jump_moving347 1–843 ———
9004jump_moving11758 60085–60114 ———
15670jump_punch25630 60085–60114 ———
9005jump_substitute11759 60085–60114 ———
14062kd_barrel_idle22133 60085–60114 ———
14063kd_barrel_roll_enter22134 60085–60114 ———
14064kd_barrel_roll_idle22135 60085–60114 ———
17336kerafyrm_bite31985 60085–60114 ———
29067kerafyrm_bite_0281217 60085–60114 ———
17337kerafyrm_firebreath31986 60085–60114 ———
17338kerafyrm_foley_intro31987 60085–60114 ———
17339kerafyrm_foley_roar31988 60085–60114 ———
29068kerafyrm_impact81218 60085–60114 ———
29060kerafyrm_moon_trail_fx80976 60085–60114 ———
29079kerafyrm_ouch81464 60085–60114 ———
29080kerafyrm_ouch281465 60085–60114 ———
29069kerafyrm_stomp81219 60085–60114 ———
17340kerafyrm_vox_flyover31989 60085–60114 ———
17341kerafyrm_vox_idlebreath31990 60085–60114 ———
17342kerafyrm_vox_intro31991 60085–60114 ———
17343kerafyrm_vox_roar31992 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.