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
13563griffin_mount_fly_down20977 60085–60114 ———
13518griffin_mount_fly_enter20905 60085–60114 ———
13519griffin_mount_fly_fall20906 60085–60114 ———
13520griffin_mount_fly_glide20907 60085–60114 ———
14041griffin_mount_fly_glide_left22072 60085–60114 ———
14042griffin_mount_fly_glide_right22073 60085–60114 ———
13521griffin_mount_fly_idle20908 60085–60114 ———
13522griffin_mount_fly_idle0120909 60085–60114 ———
13523griffin_mount_fly_jump20910 60085–60114 ———
13524griffin_mount_fly_jumpsubstitute20911 60085–60114 ———
13579griffin_mount_fly_jump_substitute21011 60085–60114 ———
13525griffin_mount_fly_run20912 60085–60114 ———
14057griffin_mount_fly_strafe_left22120 60085–60114 ———
14058griffin_mount_fly_strafe_right22121 60085–60114 ———
13526griffin_mount_fly_turn_left20913 60085–60114 ———
13527griffin_mount_fly_turn_right20914 60085–60114 ———
13564griffin_mount_fly_up20978 60085–60114 ———
13528griffin_mount_fly_walk20915 60085–60114 ———
13529griffin_mount_idle20916 60085–60114 ———
13530griffin_mount_idle0120917 60085–60114 ———
14147griffin_mount_idle0222369 60085–60114 ———
13531griffin_mount_jump20918 60085–60114 ———
13532griffin_mount_jump_substitute20919 60085–60114 ———
13533griffin_mount_land20920 60085–60114 ———
14200griffin_mount_launch22542 60085–60114 ———
13534griffin_mount_long_fall20921 60085–60114 ———
13535griffin_mount_run20922 60085–60114 ———
13536griffin_mount_turn_left20923 60085–60114 ———
13537griffin_mount_turn_right20924 60085–60114 ———
13538griffin_mount_walk20925 60085–60114 ———
1550griffin_run1857 1–843 ———
8905griffin_run11658 60085–60114 ———
13448griffin_turn_left20801 60085–60114 ———
13449griffin_turn_right20802 60085–60114 ———
1551griffin_walk1858 1–843 ———
8906griffin_walk11659 60085–60114 ———
14187grin22509 60085–60114 ———
11144ground_blast15862 60085–60114 ———
15774ground_blast_fx26033 60085–60114 ———
28260ground_dead_enter65509 60085–60114 ———
29249ground_smash90979 60085–60114 ———
2307group_chargeswordglint_sound2890 1–843 ———
8907group_chargeswordglint_sound11660 60085–60114 ———
2308group_cloud_sound2891 1–843 ———
8908group_cloud_sound11661 60085–60114 ———
2309group_electricend_sound2892 1–843 ———
8909group_electricend_sound11662 60085–60114 ———
14188growl22510 60085–60114 growls.growls at %t.—
239grumble311 1–843 grumbles under %g1 breath.grumbles about %t.—
8910grumble11663 60085–60114 grumbles under %g1 breath.grumbles about %t.—
11480guide_robe_green16583 60085–60114 ———
11859guk_barracks_poison17399 60085–60114 ———
11860guk_crystal_cleanse17400 60085–60114 ———
11861guk_temple_splashes_clean17401 60085–60114 ———
11862guk_temple_splashes_poison17402 60085–60114 ———
11863guk_waterfalls_poison17403 60085–60114 ———
240gutcramp312 1–843 doubles over in pain!——
8911gutcramp11664 60085–60114 doubles over in pain!——
3118gw_chargeup_snd5188 1–843 ———
8912gw_chargeup_snd11665 60085–60114 ———
3119gw_grantwish_snd5189 1–843 ———
8913gw_grantwish_snd11666 60085–60114 ———
1636gw_impact_sound1944 1–843 ———
8914gw_impact_sound11667 60085–60114 ———
12388habitat0118603 60085–60114 ———
12389habitat0218604 60085–60114 ———
12390habitat0318605 60085–60114 ———
12625habitat0419222 60085–60114 ———
16197halfelf_compass_hover27501 60085–60114 ———
10726halfelf_female_2h_sword_wild_swing13822 60085–60114 ———
10747halfelf_female_pike_charge_up13863 60085–60114 ———
10748halfelf_female_pike_defensive_buff13864 60085–60114 ———
10749halfelf_female_pike_offensive_buff13865 60085–60114 ———
10701halfling_forestry_success13787 60085–60114 ———
16212halfling_hands_cards_coins_trail27569 60085–60114 ———
28585handstand_loop66495 60085–60114 ———
16275hand_blast27904 60085–60114 ———
11315hand_fx_left16242 60085–60114 ———
11316hand_fx_right16243 60085–60114 ———
30032hang_idle108875 60085–60114 ———
241happy313 1–843 appears happy.happily bounces around %t.—
8915happy11668 60085–60114 appears happy.happily bounces around %t.—
3286harpy_fire_snd6106 1–843 ———
8916harpy_fire_snd11669 60085–60114 ———
3287harpy_spin_snd6107 1–843 ———
8917harpy_spin_snd11670 60085–60114 ———
14809hassan_chop24187 60085–60114 ———
1734haste_sparkles_snd2046 1–843 ———
8918haste_sparkles_snd11671 60085–60114 ———
1735haste_swirl_snd2047 1–843 ———
8919haste_swirl_snd11672 60085–60114 ———
1736haste_swords_snd2048 1–843 ———
8920haste_swords_snd11673 60085–60114 ———
17088head1_cauterize_fx31030 60085–60114 ———
16942head1_grow_fx30679 60085–60114 ———
16943head1_sever_fx30680 60085–60114 ———
16944head1_spurt_fx30681 60085–60114 ———
17089head2_cauterize_fx31031 60085–60114 ———
16945head2_grow_fx30682 60085–60114 ———
16946head2_sever_fx30683 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.