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
27628kill_aa_slashing_daggers62808 60085–60114 ———
27366kill_aa_smoke_teleport61884 60085–60114 ———
26647kill_aa_snow_tempest58974 60085–60114 ———
26845kill_aa_soothe59799 60085–60114 ———
26648kill_aa_sound_rings_head58975 60085–60114 ———
27413kill_aa_sound_wave_blast62020 60085–60114 ———
26649kill_aa_sparkle_trail_weapon_blend58976 60085–60114 ———
27505kill_aa_speed_buff62317 60085–60114 ———
27529kill_aa_spirit_circle_summon62458 60085–60114 ———
26650kill_aa_spirit_growing58977 60085–60114 ———
26933kill_aa_spirit_heal59978 60085–60114 ———
27502kill_aa_spirit_mongoose62308 60085–60114 ———
27389kill_aa_spirit_swirl_buff_ward61952 60085–60114 ———
27533kill_aa_spirit_swirl_hit62468 60085–60114 ———
26651kill_aa_spirit_swirl_shield58978 60085–60114 ———
27519kill_aa_spirit_tree62426 60085–60114 ———
26752kill_aa_stabbing_blades59334 60085–60114 ———
26931kill_aa_summon_minion59970 60085–60114 ———
31506kill_aa_summon_sniper8487493 60085–60114 ———
26652kill_aa_swirly_heal58979 60085–60114 ———
26834kill_aa_time_warp59721 60085–60114 ———
27372kill_aa_toxic_mist61906 60085–60114 ———
27503kill_aa_unyielding_will62309 60085–60114 ———
27077kill_aa_water_summon60715 60085–60114 ———
27367kill_aa_wave_splash61885 60085–60114 ———
27368kill_aa_whirlwind_teleport61886 60085–60114 ———
27472kill_aa_wind_blast62196 60085–60114 ———
27876kill_acid_blast_fx63789 60085–60114 ———
24120kill_activate53287 60085–60114 ———
24940kill_admire55132 60085–60114 ———
31197kill_aerakyn_flyer_backup8482952 60085–60114 ———
31198kill_aerakyn_flyer_combat_idle8482953 60085–60114 ———
31199kill_aerakyn_flyer_fall8482954 60085–60114 ———
31200kill_aerakyn_flyer_fly_backup8482955 60085–60114 ———
31201kill_aerakyn_flyer_fly_climb8482956 60085–60114 ———
31202kill_aerakyn_flyer_fly_dive8482957 60085–60114 ———
31203kill_aerakyn_flyer_fly_fall8482958 60085–60114 ———
31204kill_aerakyn_flyer_fly_fly_down8482959 60085–60114 ———
31205kill_aerakyn_flyer_fly_glide8482960 60085–60114 ———
31206kill_aerakyn_flyer_fly_glide_left8482961 60085–60114 ———
31207kill_aerakyn_flyer_fly_glide_right8482962 60085–60114 ———
31208kill_aerakyn_flyer_fly_idle8482963 60085–60114 ———
31209kill_aerakyn_flyer_fly_jump8482964 60085–60114 ———
31210kill_aerakyn_flyer_fly_land8482965 60085–60114 ———
31211kill_aerakyn_flyer_fly_long_fall8482966 60085–60114 ———
31212kill_aerakyn_flyer_fly_run8482967 60085–60114 ———
31213kill_aerakyn_flyer_fly_strafe_left8482968 60085–60114 ———
31214kill_aerakyn_flyer_fly_strafe_right8482969 60085–60114 ———
31215kill_aerakyn_flyer_fly_turn_left8482970 60085–60114 ———
31216kill_aerakyn_flyer_fly_turn_right8482971 60085–60114 ———
31217kill_aerakyn_flyer_fly_up8482972 60085–60114 ———
31218kill_aerakyn_flyer_fly_walk8482973 60085–60114 ———
31219kill_aerakyn_flyer_idle8482974 60085–60114 ———
31283kill_aerakyn_flyer_idle018483239 60085–60114 ———
31220kill_aerakyn_flyer_jump8482975 60085–60114 ———
31221kill_aerakyn_flyer_land8482976 60085–60114 ———
31222kill_aerakyn_flyer_long_fall8482977 60085–60114 ———
31223kill_aerakyn_flyer_run8482978 60085–60114 ———
31224kill_aerakyn_flyer_strafe_left8482979 60085–60114 ———
31225kill_aerakyn_flyer_strafe_left_run8482980 60085–60114 ———
31226kill_aerakyn_flyer_strafe_right8482981 60085–60114 ———
31227kill_aerakyn_flyer_strafe_right_run8482982 60085–60114 ———
31228kill_aerakyn_flyer_turn_left8482983 60085–60114 ———
31229kill_aerakyn_flyer_turn_right8482984 60085–60114 ———
31230kill_aerakyn_flyer_walk8482985 60085–60114 ———
31231kill_aerakyn_glider_backup8482986 60085–60114 ———
31232kill_aerakyn_glider_fall8482987 60085–60114 ———
31233kill_aerakyn_glider_fly_backup8482988 60085–60114 ———
31234kill_aerakyn_glider_fly_idle8482989 60085–60114 ———
31235kill_aerakyn_glider_fly_run8482990 60085–60114 ———
31236kill_aerakyn_glider_fly_strafe_left8482991 60085–60114 ———
31237kill_aerakyn_glider_fly_strafe_right8482992 60085–60114 ———
31238kill_aerakyn_glider_fly_turn_left8482993 60085–60114 ———
31239kill_aerakyn_glider_fly_turn_right8482994 60085–60114 ———
31240kill_aerakyn_glider_fly_walk8482995 60085–60114 ———
31241kill_aerakyn_glider_glide8482996 60085–60114 ———
31242kill_aerakyn_glider_glide_left8482997 60085–60114 ———
31243kill_aerakyn_glider_glide_right8482998 60085–60114 ———
31244kill_aerakyn_glider_idle8482999 60085–60114 ———
31245kill_aerakyn_glider_idle018483000 60085–60114 ———
31246kill_aerakyn_glider_jump8483001 60085–60114 ———
31247kill_aerakyn_glider_jump_substitute8483002 60085–60114 ———
31248kill_aerakyn_glider_land8483003 60085–60114 ———
31249kill_aerakyn_glider_long_fall8483004 60085–60114 ———
31250kill_aerakyn_glider_run8483005 60085–60114 ———
31455kill_aerakyn_glider_strafe_left8486406 60085–60114 ———
31456kill_aerakyn_glider_strafe_left_run8486407 60085–60114 ———
31457kill_aerakyn_glider_strafe_right8486408 60085–60114 ———
31458kill_aerakyn_glider_strafe_right_run8486409 60085–60114 ———
31251kill_aerakyn_glider_turn_left8483006 60085–60114 ———
31252kill_aerakyn_glider_turn_right8483007 60085–60114 ———
31253kill_aerakyn_glider_walk8483008 60085–60114 ———
31471kill_aerakyn_ground_backup8487045 60085–60114 ———
31472kill_aerakyn_ground_fall8487046 60085–60114 ———
31473kill_aerakyn_ground_fly_backup8487047 60085–60114 ———
31474kill_aerakyn_ground_fly_idle8487048 60085–60114 ———
31475kill_aerakyn_ground_fly_run8487049 60085–60114 ———
31476kill_aerakyn_ground_fly_strafe_left8487050 60085–60114 ———
31477kill_aerakyn_ground_fly_strafe_right8487051 60085–60114 ———
31478kill_aerakyn_ground_fly_turn_left8487052 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.