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
2584result_agility3243 1–843 ———
7287result_agility3243 60085–60114 ———
29848result_agitated_gather103924 60085–60114 ———
2585result_air_elemental_summon3244 1–843 ———
7288result_air_elemental_summon3244 60085–60114 ———
29653result_akheva_dark_smoke_p2p97166 60085–60114 ———
29654result_akheva_fireball_left_p2p97167 60085–60114 ———
29655result_akheva_fireball_right_p2p97168 60085–60114 ———
12607result_amputation19162 60085–60114 ———
12608result_amputation_blast19163 60085–60114 ———
12037result_anashti_curse17814 60085–60114 ———
12038result_anashti_tempest17815 60085–60114 ———
2645result_ancient_crucible3422 1–843 ———
7336result_ancient_crucible3422 60085–60114 ———
3088result_anim_mesh_genie_ps5020 1–843 ———
7523result_anim_mesh_genie_ps5020 60085–60114 ———
11034result_anvil_drop15409 60085–60114 ———
2649result_arcane_chalice3432 1–843 ———
7340result_arcane_chalice3432 60085–60114 ———
2602result_arcane_fury3340 1–843 ———
7302result_arcane_fury3340 60085–60114 ———
2603result_archaic_shackles3341 1–843 ———
7303result_archaic_shackles3341 60085–60114 ———
2604result_archaic_shackles_b3342 1–843 ———
7304result_archaic_shackles_b3342 60085–60114 ———
2586result_arch_heal3245 1–843 ———
7289result_arch_heal3245 60085–60114 ———
12270result_arc_tether_p2p18363 60085–60114 ———
3210result_arena_stone_gaze5571 1–843 ———
7535result_arena_stone_gaze5571 60085–60114 ———
3238result_arena_stone_gaze_flash5640 1–843 ———
7541result_arena_stone_gaze_flash5640 60085–60114 ———
3247result_arena_voidbeast_attack5971 1–843 ———
7542result_arena_voidbeast_attack5971 60085–60114 ———
3248result_arena_voidbeast_smoke5972 1–843 ———
7543result_arena_voidbeast_smoke5972 60085–60114 ———
3249result_arena_voidbeast_smoke_threads5973 1–843 ———
7544result_arena_voidbeast_smoke_threads5973 60085–60114 ———
3211result_arena_water_rain5572 1–843 ———
7536result_arena_water_rain5572 60085–60114 ———
3224result_arena_water_rain_bubbles5603 1–843 ———
7538result_arena_water_rain_bubbles5603 60085–60114 ———
3168result_arena_water_whirlpool5513 1–843 ———
7530result_arena_water_whirlpool5513 60085–60114 ———
3169result_arena_water_whirlpool_aoe5514 1–843 ———
7531result_arena_water_whirlpool_aoe5514 60085–60114 ———
13732result_arrow_ridden21462 60085–60114 ———
28262result_arrow_shatter_rain65513 60085–60114 ———
7880result_assassin_star_cloud_hands10389 60085–60114 ———
1600result_attract_bubbles1907 1–843 ———
7024result_attract_bubbles1907 60085–60114 ———
7052result_backdraft2000 60085–60114 ———
12993result_balanced_judgement19832 60085–60114 ———
16883result_ballista_fire_green_p2p30433 60085–60114 ———
12511result_banish18885 60085–60114 ———
15783result_banish_fx26091 60085–60114 ———
12512result_banish_wisps_p2p18886 60085–60114 ———
2256result_bard_zap2813 1–843 ———
7218result_bard_zap2813 60085–60114 ———
11740result_barrel_break17011 60085–60114 ———
14127result_barrel_explode22279 60085–60114 ———
10897result_barrier14996 60085–60114 ———
11202result_barrier_blue16019 60085–60114 ———
11237result_barrier_orange16112 60085–60114 ———
11203result_barrier_red16020 60085–60114 ———
11204result_barrier_yellow16021 60085–60114 ———
565result_bash489 1–843 ———
6728result_bash489 60085–60114 ———
16427result_bastion_beam_p2p28494 60085–60114 ———
2715result_bat_flying3741 1–843 ———
7381result_bat_flying3741 60085–60114 ———
11888result_bat_scare17465 60085–60114 ———
2683result_bat_swarm_appear3630 1–843 ———
7360result_bat_swarm_appear3630 60085–60114 ———
2684result_bat_swarm_attack3631 1–843 ———
7361result_bat_swarm_attack3631 60085–60114 ———
2686result_bat_swarm_p2p3640 1–843 ———
7363result_bat_swarm_p2p3640 60085–60114 ———
2704result_bat_swarm_persist3706 1–843 ———
7373result_bat_swarm_persist3706 60085–60114 ———
864result_bear1054 1–843 ———
6774result_bear1054 60085–60114 ———
11137result_beehive_hit15843 60085–60114 ———
17440result_beetle_barrier_buff32495 60085–60114 ———
16024result_beetle_fireball_p2p26856 60085–60114 ———
11136result_bee_breath15842 60085–60114 ———
11206result_berserker_black_eyes16029 60085–60114 ———
11207result_berserker_blue_eyes16030 60085–60114 ———
11208result_berserker_purple_eyes16031 60085–60114 ———
7735result_berserker_red_eyes10137 60085–60114 ———
11209result_berserker_white_eyes16032 60085–60114 ———
7849result_beserker_red_eyes10307 60085–60114 ———
1603result_bestowal_of_vitae1911 1–843 ———
7027result_bestowal_of_vitae1911 60085–60114 ———
28527result_billiard_hit66251 60085–60114 ———
12895result_billowing_energy19706 60085–60114 ———
13590result_bind_wound21038 60085–60114 ———
9338result_bladebarrier12093 60085–60114 ———
7648result_blanket_of_eternal_night9763 60085–60114 ———
1055result_blast_cone1295 1–843 ———
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.