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
730cast_cloudring893 1–843 ———
6760cast_cloudring893 60085–60114 ———
795cast_cloudsphere968 1–843 ———
6765cast_cloudsphere968 60085–60114 ———
17020cast_clouds_head_inhale30891 60085–60114 ———
14954cast_cloud_spin24558 60085–60114 ———
1139cast_clowhand_sound_011380 1–843 ———
8253cast_clowhand_sound_0110996 60085–60114 ———
1140cast_clowhand_sound_021381 1–843 ———
8254cast_clowhand_sound_0210997 60085–60114 ———
1141cast_clowhand_sound_031382 1–843 ———
8255cast_clowhand_sound_0310998 60085–60114 ———
1318cast_coercer1564 1–843 ———
6923cast_coercer1564 60085–60114 ———
17149cast_coercer_mythical_fx31229 60085–60114 ———
14098cast_cold_breath22223 60085–60114 ———
2075cast_cold_dragon_breath2559 1–843 ———
7119cast_cold_dragon_breath2559 60085–60114 ———
402cast_columns141 1–843 ———
6669cast_columns141 60085–60114 ———
2652cast_columns_slow3437 1–843 ———
7343cast_columns_slow3437 60085–60114 ———
12347cast_column_blast_circle18508 60085–60114 ———
17384cast_conduit_input32278 60085–60114 ———
1319cast_conjurer1565 1–843 ———
28998cast_conjure_skull78606 60085–60114 ———
10886cast_conjuror14925 60085–60114 ———
17150cast_conjuror_mythical_fx31230 60085–60114 ———
15115cast_corruption_gather25024 60085–60114 ———
12665cast_crackling_rift_summon19295 60085–60114 ———
3446cast_crescent_hands_l6786 1–843 ———
7587cast_crescent_hands_l6786 60085–60114 ———
3447cast_crescent_hands_r6787 1–843 ———
7588cast_crescent_hands_r6787 60085–60114 ———
14960cast_crit_hawk_summon24571 60085–60114 ———
1894cast_crusader2259 1–843 ———
7099cast_crusader2259 60085–60114 ———
13123cast_crush_blast20029 60085–60114 ———
29255cast_cyclone_stones91569 60085–60114 ———
11476cast_cyclone_storm_blast16568 60085–60114 ———
2550cast_darkness_skull_buff_summoned3192 1–843 ———
7267cast_darkness_skull_buff_summoned3192 60085–60114 ———
2593cast_darkness_whip_circling3254 1–843 ———
7293cast_darkness_whip_circling3254 60085–60114 ———
29510cast_dark_energy_gather95129 60085–60114 ———
2107cast_dark_forced_shader2623 1–843 ———
7140cast_dark_forced_shader2623 60085–60114 ———
403cast_dark_ring142 1–843 ———
6670cast_dark_ring142 60085–60114 ———
15917cast_dark_shout26391 60085–60114 ———
29201cast_dark_splat_shout87387 60085–60114 ———
731cast_dblring_blend894 1–843 ———
6761cast_dblring_blend894 60085–60114 ———
404cast_dbl_bright_ring143 1–843 ———
6671cast_dbl_bright_ring143 60085–60114 ———
13962cast_death_beam21879 60085–60114 ———
15918cast_debris26392 60085–60114 ———
2244cast_debuff2797 1–843 ———
7207cast_debuff2797 60085–60114 ———
2852cast_debuff_aoe4124 1–843 ———
7440cast_debuff_aoe4124 60085–60114 ———
10852cast_debuff_blend14681 60085–60114 ———
8256cast_deepbreath10999 60085–60114 ———
1320cast_defiler1566 1–843 ———
6924cast_defiler1566 60085–60114 ———
17151cast_defiler_mythical_fx31231 60085–60114 ———
1895cast_dirge2260 1–843 ———
7100cast_dirge2260 60085–60114 ———
17152cast_dirge_mythical_fx31232 60085–60114 ———
10920cast_dirge_stringed_loop15120 60085–60114 ———
29214cast_disease_aura_area88566 60085–60114 ———
28865cast_disease_spray72354 60085–60114 ———
1040cast_distort1280 1–843 ———
6806cast_distort1280 60085–60114 ———
2076cast_distortion_hit_minimal2560 1–843 ———
7120cast_distortion_hit_minimal2560 60085–60114 ———
1401cast_distort_flat1660 1–843 ———
6958cast_distort_flat1660 60085–60114 ———
1300cast_distort_leftfoot1544 1–843 ———
6912cast_distort_leftfoot1544 60085–60114 ———
8257cast_distort_lefthand11000 60085–60114 ———
2066cast_distort_p32536 1–843 ———
7114cast_distort_p32536 60085–60114 ———
1041cast_distort_rect1281 1–843 ———
6807cast_distort_rect1281 60085–60114 ———
2084cast_distort_rightfoot_ws2588 1–843 ———
7125cast_distort_rightfoot_ws2588 60085–60114 ———
8259cast_distort_righthand11002 60085–60114 ———
3367cast_distort_right_foot_ws6471 1–843 ———
8258cast_distort_right_foot_ws11001 60085–60114 ———
1301cast_distort_weaponrootleft1546 1–843 ———
6913cast_distort_weaponrootleft1546 60085–60114 ———
1302cast_distort_weaponrootright1547 1–843 ———
6914cast_distort_weaponrootright1547 60085–60114 ———
11829cast_dodge_buff17291 60085–60114 ———
16625cast_dome_barrier_fx29269 60085–60114 ———
28259cast_dome_barrier_green_fx65503 60085–60114 ———
29623cast_dome_disease_barrier96635 60085–60114 ———
13055cast_draconian_breath19906 60085–60114 ———
3356cast_dragonbreath6453 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.