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
29396freeblood_leaper_jump94135 60085–60114 ———
29397freeblood_leaper_land94136 60085–60114 ———
29398freeblood_leaper_long_fall94137 60085–60114 ———
29399freeblood_leaper_run94138 60085–60114 ———
29400freeblood_leaper_turn_left94139 60085–60114 ———
29401freeblood_leaper_turn_right94140 60085–60114 ———
29402freeblood_leaper_walk94141 60085–60114 ———
16195freeblood_skull_swirls_mesh27499 60085–60114 ———
28495freeze_crackle_snd66217 60085–60114 ———
16189frogdance27469 60085–60114 ———
13177froglock_gathering_search20134 60085–60114 ———
7745froglok_1h_crush_attack10157 60085–60114 ———
7746froglok_1h_crush_attack0110158 60085–60114 ———
7747froglok_1h_crush_attack0210159 60085–60114 ———
7748froglok_1h_crush_attack0310160 60085–60114 ———
7749froglok_1h_crush_dodge_backhand10161 60085–60114 ———
7750froglok_1h_crush_dodge_down10162 60085–60114 ———
7751froglok_1h_crush_dodge_forehand10163 60085–60114 ———
7752froglok_1h_crush_dodge_thrust10164 60085–60114 ———
7821froglok_1h_crush_idle10243 60085–60114 ———
7753froglok_1h_crush_ouch_backhand10165 60085–60114 ———
7754froglok_1h_crush_ouch_down10166 60085–60114 ———
7755froglok_1h_crush_ouch_forehand10167 60085–60114 ———
7756froglok_1h_crush_ouch_thrust10168 60085–60114 ———
7757froglok_1h_crush_parry_backhand10169 60085–60114 ———
7758froglok_1h_crush_parry_down10170 60085–60114 ———
7759froglok_1h_crush_parry_forehand10171 60085–60114 ———
7760froglok_1h_crush_parry_thrust10172 60085–60114 ———
7761froglok_1h_pierce_attack10173 60085–60114 ———
7762froglok_1h_pierce_attack0110174 60085–60114 ———
7763froglok_1h_pierce_dodge_backhand10175 60085–60114 ———
7764froglok_1h_pierce_dodge_down10176 60085–60114 ———
7765froglok_1h_pierce_dodge_forehand10177 60085–60114 ———
7766froglok_1h_pierce_dodge_thrust10178 60085–60114 ———
7822froglok_1h_pierce_idle10244 60085–60114 ———
7767froglok_1h_pierce_ouch_backhand10179 60085–60114 ———
7768froglok_1h_pierce_ouch_down10180 60085–60114 ———
7769froglok_1h_pierce_ouch_forehand10181 60085–60114 ———
7770froglok_1h_pierce_ouch_thrust10182 60085–60114 ———
7771froglok_1h_pierce_parry_backhand10183 60085–60114 ———
7772froglok_1h_pierce_parry_down10184 60085–60114 ———
7773froglok_1h_pierce_parry_forehand10185 60085–60114 ———
7774froglok_1h_pierce_parry_thrust10186 60085–60114 ———
7731froglok_1h_sword_attack10122 60085–60114 ———
7775froglok_1h_sword_attack0110187 60085–60114 ———
7776froglok_1h_sword_attack0210188 60085–60114 ———
7777froglok_1h_sword_attack0310189 60085–60114 ———
10575froglok_1h_sword_attack_recoil13601 60085–60114 ———
10576froglok_1h_sword_attack_recoil0113602 60085–60114 ———
10577froglok_1h_sword_attack_recoil0213603 60085–60114 ———
10578froglok_1h_sword_attack_recoil0313604 60085–60114 ———
7778froglok_1h_sword_death_blow10190 60085–60114 ———
7779froglok_1h_sword_death_blow0110191 60085–60114 ———
7780froglok_1h_sword_dodge_backhand10192 60085–60114 ———
7781froglok_1h_sword_dodge_down10193 60085–60114 ———
7782froglok_1h_sword_dodge_forehand10194 60085–60114 ———
7783froglok_1h_sword_dodge_thrust10195 60085–60114 ———
7732froglok_1h_sword_idle10123 60085–60114 ———
7784froglok_1h_sword_ouch_backhand10196 60085–60114 ———
7785froglok_1h_sword_ouch_down10197 60085–60114 ———
7786froglok_1h_sword_ouch_forehand10198 60085–60114 ———
7787froglok_1h_sword_ouch_thrust10199 60085–60114 ———
7788froglok_1h_sword_parry_backhand10200 60085–60114 ———
7789froglok_1h_sword_parry_down10201 60085–60114 ———
7790froglok_1h_sword_parry_forehand10202 60085–60114 ———
7791froglok_1h_sword_parry_thrust10203 60085–60114 ———
10579froglok_1h_thrown_attack13605 60085–60114 ———
7792froglok_1h_thrown_dodge_backhand10204 60085–60114 ———
7793froglok_1h_thrown_dodge_down10205 60085–60114 ———
7794froglok_1h_thrown_dodge_forehand10206 60085–60114 ———
7795froglok_1h_thrown_dodge_thrust10207 60085–60114 ———
7823froglok_1h_thrown_idle10245 60085–60114 ———
7796froglok_1h_thrown_ouch_backhand10208 60085–60114 ———
7797froglok_1h_thrown_ouch_down10209 60085–60114 ———
7798froglok_1h_thrown_ouch_forehand10210 60085–60114 ———
7799froglok_1h_thrown_ouch_thrust10211 60085–60114 ———
7824froglok_2h_sword_attack10246 60085–60114 ———
7825froglok_2h_sword_attack0110247 60085–60114 ———
7826froglok_2h_sword_attack0210248 60085–60114 ———
7827froglok_2h_sword_attack0310249 60085–60114 ———
10580froglok_2h_sword_attack_recoil13606 60085–60114 ———
10581froglok_2h_sword_attack_recoil0113607 60085–60114 ———
10582froglok_2h_sword_attack_recoil0213608 60085–60114 ———
10583froglok_2h_sword_backup13609 60085–60114 ———
10584froglok_2h_sword_defensive_buff13610 60085–60114 ———
7833froglok_2h_sword_dodge_backhand10290 60085–60114 ———
7834froglok_2h_sword_dodge_down10291 60085–60114 ———
7835froglok_2h_sword_dodge_forehand10292 60085–60114 ———
7836froglok_2h_sword_dodge_thrust10293 60085–60114 ———
10585froglok_2h_sword_enter13611 60085–60114 ———
7828froglok_2h_sword_idle10250 60085–60114 ———
7837froglok_2h_sword_kick10294 60085–60114 ———
10586froglok_2h_sword_offensive_buff13612 60085–60114 ———
10587froglok_2h_sword_ouch_backhand13613 60085–60114 ———
10588froglok_2h_sword_ouch_down13614 60085–60114 ———
10589froglok_2h_sword_ouch_forehand13615 60085–60114 ———
10590froglok_2h_sword_ouch_thrust13616 60085–60114 ———
10591froglok_2h_sword_parry_backhand13617 60085–60114 ———
10592froglok_2h_sword_parry_down13618 60085–60114 ———
10593froglok_2h_sword_parry_forehand13619 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.