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
15928eyes_rotate_up26483 60085–60114 ———
8740eye_beam11493 60085–60114 ———
11326eye_beams16277 60085–60114 ———
8741eye_beam_red_blue11494 60085–60114 ———
14729eye_fx23960 60085–60114 ———
1410f1670 1–843 ———
8743f11496 60085–60114 ———
2941face_combat4538 1–843 ———
8744face_combat11497 60085–60114 ———
2942face_idle4539 1–843 ———
8745face_idle11498 60085–60114 ———
2151facial_frown2690 1–843 ———
8746facial_frown11499 60085–60114 ———
2152facial_smile2691 1–843 ———
8747facial_smile11500 60085–60114 ———
3444fade_cast_sound6784 1–843 ———
11049fade_cast_sound15615 60085–60114 ———
3445fade_reverse_sound6785 1–843 ———
11050fade_reverse_sound15616 60085–60114 ———
8748fae_dance_spark_sphere11501 60085–60114 ———
10923fae_dark_1h_sword_attack15128 60085–60114 ———
10924fae_dark_1h_sword_attack0115129 60085–60114 ———
10925fae_dark_1h_sword_attack0215130 60085–60114 ———
10926fae_dark_1h_sword_attack0315131 60085–60114 ———
10927fae_dark_1h_sword_death_blow15132 60085–60114 ———
10928fae_dark_1h_sword_death_blow0115133 60085–60114 ———
10929fae_dark_1h_sword_dodge_backhand15134 60085–60114 ———
10930fae_dark_1h_sword_dodge_down15135 60085–60114 ———
10931fae_dark_1h_sword_dodge_forehand15136 60085–60114 ———
10932fae_dark_1h_sword_dodge_thrust15137 60085–60114 ———
10933fae_dark_1h_sword_ouch_backhand15138 60085–60114 ———
10934fae_dark_1h_sword_ouch_down15139 60085–60114 ———
10935fae_dark_1h_sword_ouch_forehand15140 60085–60114 ———
10936fae_dark_1h_sword_ouch_thrust15141 60085–60114 ———
10937fae_dark_1h_sword_parry_backhand15142 60085–60114 ———
10938fae_dark_1h_sword_parry_down15143 60085–60114 ———
10939fae_dark_1h_sword_parry_forehand15144 60085–60114 ———
10940fae_dark_1h_sword_parry_thrust15145 60085–60114 ———
10941fae_dark_2h_sword_attack15146 60085–60114 ———
10942fae_dark_2h_sword_attack0115147 60085–60114 ———
10943fae_dark_2h_sword_attack0215148 60085–60114 ———
10944fae_dark_2h_sword_defensive_buff15149 60085–60114 ———
10945fae_dark_2h_sword_dodge_backhand15150 60085–60114 ———
10946fae_dark_2h_sword_dodge_down15151 60085–60114 ———
10947fae_dark_2h_sword_dodge_forehand15152 60085–60114 ———
10948fae_dark_2h_sword_enter15153 60085–60114 ———
10949fae_dark_2h_sword_kick15154 60085–60114 ———
10950fae_dark_2h_sword_ouch_backhand15155 60085–60114 ———
10951fae_dark_2h_sword_ouch_down15156 60085–60114 ———
10952fae_dark_2h_sword_ouch_forehand15157 60085–60114 ———
10953fae_dark_2h_sword_ouch_thrust15158 60085–60114 ———
10954fae_dark_2h_sword_whirling_attack15159 60085–60114 ———
10955fae_dark_2h_sword_wild_swing15160 60085–60114 ———
12066fae_dark_bear_backup17886 60085–60114 ———
12067fae_dark_bear_idle17887 60085–60114 ———
12068fae_dark_bear_jump17888 60085–60114 ———
12069fae_dark_bear_jump_substitute17889 60085–60114 ———
12070fae_dark_bear_run17890 60085–60114 ———
12071fae_dark_bear_sprint17891 60085–60114 ———
12072fae_dark_bear_turn_left17892 60085–60114 ———
12073fae_dark_bear_turn_right17893 60085–60114 ———
12074fae_dark_bear_walk17894 60085–60114 ———
10956fae_dark_bostaff_attack0115161 60085–60114 ———
10957fae_dark_bostaff_attack0215162 60085–60114 ———
10958fae_dark_bostaff_attack0315163 60085–60114 ———
10959fae_dark_bostaff_dodge_backhand15164 60085–60114 ———
10960fae_dark_bostaff_dodge_forehand15165 60085–60114 ———
10961fae_dark_climbing_backup15166 60085–60114 ———
10962fae_dark_climbing_enter_down_root15167 60085–60114 ———
10963fae_dark_climbing_exit_up_root15168 60085–60114 ———
10964fae_dark_climbing_idle15169 60085–60114 ———
10965fae_dark_climbing_strafe_left15170 60085–60114 ———
10966fae_dark_climbing_strafe_right15171 60085–60114 ———
10967fae_dark_climbing_walk15172 60085–60114 ———
10968fae_dark_dance15173 60085–60114 ———
10969fae_dark_dead15174 60085–60114 ———
10970fae_dark_dead_enter15175 60085–60114 ———
10971fae_dark_dual_wield_attack15176 60085–60114 ———
10972fae_dark_dual_wield_attack0115177 60085–60114 ———
10973fae_dark_dual_wield_attack0215178 60085–60114 ———
10974fae_dark_dual_wield_attack0315179 60085–60114 ———
10975fae_dark_dual_wield_dodge_backhand15180 60085–60114 ———
10976fae_dark_dual_wield_dodge_forehand15181 60085–60114 ———
10977fae_dark_dual_wield_kick15182 60085–60114 ———
10978fae_dark_dual_wield_ouch_backhand15183 60085–60114 ———
10979fae_dark_dual_wield_ouch_forehand15184 60085–60114 ———
10980fae_dark_dual_wield_parry_down15185 60085–60114 ———
10981fae_dark_dual_wield_whirling_attack15186 60085–60114 ———
10982fae_dark_dual_wield_wild_swing15187 60085–60114 ———
10983fae_dark_idle15188 60085–60114 ———
10984fae_dark_monk_attack15189 60085–60114 ———
10985fae_dark_monk_attack0115190 60085–60114 ———
10986fae_dark_monk_attack0215191 60085–60114 ———
10987fae_dark_monk_attack0315192 60085–60114 ———
10988fae_dark_monk_dodge_backhand15193 60085–60114 ———
10989fae_dark_monk_dodge_down15194 60085–60114 ———
10990fae_dark_monk_wild_swing15195 60085–60114 ———
10991fae_dark_pike_attack15196 60085–60114 ———
10992fae_dark_pike_attack0115197 60085–60114 ———
10993fae_dark_pike_attack0215198 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.