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
10674froglok_knockdowntoknees13710 60085–60114 ———
10673froglok_knockdown_attack13709 60085–60114 ———
7923froglok_knockedtoback10579 60085–60114 ———
7936froglok_knockedtoback_getup10602 60085–60114 ———
7937froglok_knockedtoback_onbackidle10603 60085–60114 ———
7914froglok_mining_digging10555 60085–60114 ———
7924froglok_mining_success10580 60085–60114 ———
7851froglok_monk_attack10318 60085–60114 ———
7852froglok_monk_attack0110319 60085–60114 ———
7853froglok_monk_attack0210320 60085–60114 ———
7854froglok_monk_attack0310321 60085–60114 ———
10623froglok_monk_attack_recoil13649 60085–60114 ———
10624froglok_monk_attack_recoil0213650 60085–60114 ———
10625froglok_monk_charge_up13651 60085–60114 ———
10626froglok_monk_defensive_buff13652 60085–60114 ———
10627froglok_monk_dodge_backhand13653 60085–60114 ———
10628froglok_monk_dodge_down13654 60085–60114 ———
10629froglok_monk_dodge_forehand13655 60085–60114 ———
10630froglok_monk_dodge_thrust13656 60085–60114 ———
7848froglok_monk_idle10305 60085–60114 ———
7855froglok_monk_kick10322 60085–60114 ———
10631froglok_monk_kick_flying13657 60085–60114 ———
7856froglok_monk_kick_spin10323 60085–60114 ———
7938froglok_monk_knockedtoback10604 60085–60114 ———
7939froglok_monk_knockedtoback_getup10605 60085–60114 ———
10632froglok_monk_offensive_buff13658 60085–60114 ———
10633froglok_monk_ouch_down13659 60085–60114 ———
10634froglok_monk_ouch_thrust13660 60085–60114 ———
10635froglok_monk_parry_backhand13661 60085–60114 ———
10636froglok_monk_parry_down13662 60085–60114 ———
10637froglok_monk_parry_forehand13663 60085–60114 ———
10638froglok_monk_parry_thrust13664 60085–60114 ———
10639froglok_monk_super_buff13665 60085–60114 ———
10640froglok_monk_taunt_combat_art13666 60085–60114 ———
7858froglok_monk_whirling_attack10356 60085–60114 ———
7857froglok_monk_wild_swing10324 60085–60114 ———
10675froglok_offensive_buff13711 60085–60114 ———
7859froglok_pike_attack10357 60085–60114 ———
7860froglok_pike_attack0110358 60085–60114 ———
7861froglok_pike_attack0210359 60085–60114 ———
10641froglok_pike_attack_recoil13667 60085–60114 ———
10642froglok_pike_attack_recoil0113668 60085–60114 ———
10643froglok_pike_attack_recoil0213669 60085–60114 ———
10676froglok_pike_backup13712 60085–60114 ———
10644froglok_pike_charge_up13670 60085–60114 ———
10645froglok_pike_dodge_backhand13671 60085–60114 ———
10646froglok_pike_dodge_down13672 60085–60114 ———
10647froglok_pike_dodge_forehand13673 60085–60114 ———
10648froglok_pike_dodge_thrust13674 60085–60114 ———
7862froglok_pike_idle10360 60085–60114 ———
7863froglok_pike_kick10361 60085–60114 ———
10677froglok_pike_knockdowntoknees13713 60085–60114 ———
7940froglok_pike_knockedtoback10606 60085–60114 ———
7941froglok_pike_knockedtoback_getup10607 60085–60114 ———
10649froglok_pike_offensive_buff13675 60085–60114 ———
10650froglok_pike_ouch_backhand13676 60085–60114 ———
10651froglok_pike_ouch_down13677 60085–60114 ———
10652froglok_pike_ouch_forehand13678 60085–60114 ———
10653froglok_pike_ouch_thrust13679 60085–60114 ———
10654froglok_pike_parry_backhand13680 60085–60114 ———
10655froglok_pike_parry_down13681 60085–60114 ———
10656froglok_pike_parry_forehand13682 60085–60114 ———
10657froglok_pike_parry_thrust13683 60085–60114 ———
10678froglok_pike_walk13714 60085–60114 ———
7864froglok_pike_whirling_attack10362 60085–60114 ———
7865froglok_pike_wild_swing10363 60085–60114 ———
7866froglok_pugilist_attack10364 60085–60114 ———
10679froglok_pugilist_attack0113715 60085–60114 ———
7867froglok_pugilist_attack0210365 60085–60114 ———
7868froglok_pugilist_attack0310366 60085–60114 ———
10680froglok_pugilist_attack_recoil0113716 60085–60114 ———
10658froglok_pugilist_attack_recoil0213684 60085–60114 ———
10659froglok_pugilist_defensive_buff13685 60085–60114 ———
10660froglok_pugilist_dodge_backhand13686 60085–60114 ———
10661froglok_pugilist_dodge_down13687 60085–60114 ———
10662froglok_pugilist_dodge_forehand13688 60085–60114 ———
10663froglok_pugilist_dodge_thrust13689 60085–60114 ———
7869froglok_pugilist_idle10367 60085–60114 ———
7870froglok_pugilist_kick10368 60085–60114 ———
10681froglok_pugilist_knockdowntoknees13717 60085–60114 ———
7942froglok_pugilist_knockedtoback10608 60085–60114 ———
7943froglok_pugilist_knockedtoback_getup10609 60085–60114 ———
10664froglok_pugilist_offensive_buff13690 60085–60114 ———
10665froglok_pugilist_ouch_backhand13691 60085–60114 ———
10666froglok_pugilist_ouch_down13692 60085–60114 ———
10667froglok_pugilist_ouch_forehand13693 60085–60114 ———
10668froglok_pugilist_super_buff13694 60085–60114 ———
7871froglok_pugilist_whirling_attack10369 60085–60114 ———
7872froglok_pugilist_wild_swing10370 60085–60114 ———
7659froglok_run9849 60085–60114 ———
7925froglok_run_0310581 60085–60114 ———
11446froglok_run_up_idle16496 60085–60114 ———
7660froglok_sit_enter9850 60085–60114 ———
7661froglok_sit_exit9851 60085–60114 ———
7662froglok_sit_idle9852 60085–60114 ———
10682froglok_super_buff13718 60085–60114 ———
11447froglok_swim_attack16497 60085–60114 ———
11448froglok_swim_go16498 60085–60114 ———
11449froglok_swim_idle16499 60085–60114 ———
11450froglok_swim_ouch16500 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.