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
31177kill_freeblood_leaper_fly_glide8482731 60085–60114 ———
31178kill_freeblood_leaper_fly_glide_left8482732 60085–60114 ———
31179kill_freeblood_leaper_fly_glide_right8482733 60085–60114 ———
31180kill_freeblood_leaper_fly_idle8482734 60085–60114 ———
31181kill_freeblood_leaper_fly_run8482735 60085–60114 ———
31182kill_freeblood_leaper_fly_strafe_left8482736 60085–60114 ———
31183kill_freeblood_leaper_fly_strafe_right8482737 60085–60114 ———
31184kill_freeblood_leaper_fly_turn_left8482738 60085–60114 ———
31185kill_freeblood_leaper_fly_turn_right8482739 60085–60114 ———
31186kill_freeblood_leaper_fly_up8482740 60085–60114 ———
31187kill_freeblood_leaper_fly_walk8482741 60085–60114 ———
31188kill_freeblood_leaper_idle8482742 60085–60114 ———
31189kill_freeblood_leaper_jump8482743 60085–60114 ———
31190kill_freeblood_leaper_land8482744 60085–60114 ———
31191kill_freeblood_leaper_long_fall8482745 60085–60114 ———
31192kill_freeblood_leaper_run8482746 60085–60114 ———
31193kill_freeblood_leaper_turn_left8482747 60085–60114 ———
31194kill_freeblood_leaper_turn_right8482748 60085–60114 ———
31195kill_freeblood_leaper_walk8482749 60085–60114 ———
26988kill_freeblood_skull_swirls_mesh60267 60085–60114 ———
30290kill_freeze_crackle_snd8454825 60085–60114 ———
26982kill_frogdance60237 60085–60114 ———
23971kill_froglock_gathering_search52902 60085–60114 ———
18539kill_froglok_1h_crush_attack42925 60085–60114 ———
18540kill_froglok_1h_crush_attack0142926 60085–60114 ———
18541kill_froglok_1h_crush_attack0242927 60085–60114 ———
18542kill_froglok_1h_crush_attack0342928 60085–60114 ———
18543kill_froglok_1h_crush_dodge_backhand42929 60085–60114 ———
18544kill_froglok_1h_crush_dodge_down42930 60085–60114 ———
18545kill_froglok_1h_crush_dodge_forehand42931 60085–60114 ———
18546kill_froglok_1h_crush_dodge_thrust42932 60085–60114 ———
18615kill_froglok_1h_crush_idle43011 60085–60114 ———
18547kill_froglok_1h_crush_ouch_backhand42933 60085–60114 ———
18548kill_froglok_1h_crush_ouch_down42934 60085–60114 ———
18549kill_froglok_1h_crush_ouch_forehand42935 60085–60114 ———
18550kill_froglok_1h_crush_ouch_thrust42936 60085–60114 ———
18551kill_froglok_1h_crush_parry_backhand42937 60085–60114 ———
18552kill_froglok_1h_crush_parry_down42938 60085–60114 ———
18553kill_froglok_1h_crush_parry_forehand42939 60085–60114 ———
18554kill_froglok_1h_crush_parry_thrust42940 60085–60114 ———
18555kill_froglok_1h_pierce_attack42941 60085–60114 ———
18556kill_froglok_1h_pierce_attack0142942 60085–60114 ———
18557kill_froglok_1h_pierce_dodge_backhand42943 60085–60114 ———
18558kill_froglok_1h_pierce_dodge_down42944 60085–60114 ———
18559kill_froglok_1h_pierce_dodge_forehand42945 60085–60114 ———
18560kill_froglok_1h_pierce_dodge_thrust42946 60085–60114 ———
18616kill_froglok_1h_pierce_idle43012 60085–60114 ———
18561kill_froglok_1h_pierce_ouch_backhand42947 60085–60114 ———
18562kill_froglok_1h_pierce_ouch_down42948 60085–60114 ———
18563kill_froglok_1h_pierce_ouch_forehand42949 60085–60114 ———
18564kill_froglok_1h_pierce_ouch_thrust42950 60085–60114 ———
18565kill_froglok_1h_pierce_parry_backhand42951 60085–60114 ———
18566kill_froglok_1h_pierce_parry_down42952 60085–60114 ———
18567kill_froglok_1h_pierce_parry_forehand42953 60085–60114 ———
18568kill_froglok_1h_pierce_parry_thrust42954 60085–60114 ———
18525kill_froglok_1h_sword_attack42890 60085–60114 ———
18569kill_froglok_1h_sword_attack0142955 60085–60114 ———
18570kill_froglok_1h_sword_attack0242956 60085–60114 ———
18571kill_froglok_1h_sword_attack0342957 60085–60114 ———
21369kill_froglok_1h_sword_attack_recoil46369 60085–60114 ———
21370kill_froglok_1h_sword_attack_recoil0146370 60085–60114 ———
21371kill_froglok_1h_sword_attack_recoil0246371 60085–60114 ———
21372kill_froglok_1h_sword_attack_recoil0346372 60085–60114 ———
18572kill_froglok_1h_sword_death_blow42958 60085–60114 ———
18573kill_froglok_1h_sword_death_blow0142959 60085–60114 ———
18574kill_froglok_1h_sword_dodge_backhand42960 60085–60114 ———
18575kill_froglok_1h_sword_dodge_down42961 60085–60114 ———
18576kill_froglok_1h_sword_dodge_forehand42962 60085–60114 ———
18577kill_froglok_1h_sword_dodge_thrust42963 60085–60114 ———
18526kill_froglok_1h_sword_idle42891 60085–60114 ———
18578kill_froglok_1h_sword_ouch_backhand42964 60085–60114 ———
18579kill_froglok_1h_sword_ouch_down42965 60085–60114 ———
18580kill_froglok_1h_sword_ouch_forehand42966 60085–60114 ———
18581kill_froglok_1h_sword_ouch_thrust42967 60085–60114 ———
18582kill_froglok_1h_sword_parry_backhand42968 60085–60114 ———
18583kill_froglok_1h_sword_parry_down42969 60085–60114 ———
18584kill_froglok_1h_sword_parry_forehand42970 60085–60114 ———
18585kill_froglok_1h_sword_parry_thrust42971 60085–60114 ———
21373kill_froglok_1h_thrown_attack46373 60085–60114 ———
18586kill_froglok_1h_thrown_dodge_backhand42972 60085–60114 ———
18587kill_froglok_1h_thrown_dodge_down42973 60085–60114 ———
18588kill_froglok_1h_thrown_dodge_forehand42974 60085–60114 ———
18589kill_froglok_1h_thrown_dodge_thrust42975 60085–60114 ———
18617kill_froglok_1h_thrown_idle43013 60085–60114 ———
18590kill_froglok_1h_thrown_ouch_backhand42976 60085–60114 ———
18591kill_froglok_1h_thrown_ouch_down42977 60085–60114 ———
18592kill_froglok_1h_thrown_ouch_forehand42978 60085–60114 ———
18593kill_froglok_1h_thrown_ouch_thrust42979 60085–60114 ———
18618kill_froglok_2h_sword_attack43014 60085–60114 ———
18619kill_froglok_2h_sword_attack0143015 60085–60114 ———
18620kill_froglok_2h_sword_attack0243016 60085–60114 ———
18621kill_froglok_2h_sword_attack0343017 60085–60114 ———
21374kill_froglok_2h_sword_attack_recoil46374 60085–60114 ———
21375kill_froglok_2h_sword_attack_recoil0146375 60085–60114 ———
21376kill_froglok_2h_sword_attack_recoil0246376 60085–60114 ———
21377kill_froglok_2h_sword_backup46377 60085–60114 ———
21378kill_froglok_2h_sword_defensive_buff46378 60085–60114 ———
18627kill_froglok_2h_sword_dodge_backhand43058 60085–60114 ———
18628kill_froglok_2h_sword_dodge_down43059 60085–60114 ———
18629kill_froglok_2h_sword_dodge_forehand43060 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.