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
1236cast_mage_quickzap_011477 1–843 ———
8309cast_mage_quickzap_0111052 60085–60114 ———
1237cast_mage_quickzap_021478 1–843 ———
8310cast_mage_quickzap_0211053 60085–60114 ———
1238cast_mage_ready1479 1–843 ———
8311cast_mage_ready11054 60085–60114 ———
28806cast_magic_barrier_beam69366 60085–60114 ———
15909cast_magic_breath26355 60085–60114 ———
29209cast_magic_bullet_streaks87976 60085–60114 ———
12567cast_magic_portal19051 60085–60114 ———
7663cast_mana_burn9857 60085–60114 ———
29194cast_mana_spikes_blast86992 60085–60114 ———
411cast_mandala150 1–843 ———
6678cast_mandala150 60085–60114 ———
1402cast_mandala_blobs1661 1–843 ———
6959cast_mandala_blobs1661 60085–60114 ———
1562cast_mandala_electricity1869 1–843 ———
7006cast_mandala_electricity1869 60085–60114 ———
1563cast_mandala_streaks1870 1–843 ———
7007cast_mandala_streaks1870 60085–60114 ———
2599cast_mandala_sub3335 1–843 ———
7299cast_mandala_sub3335 60085–60114 ———
12031cast_manta_bolt_p2p17804 60085–60114 ———
12032cast_manta_tail_beam17805 60085–60114 ———
12033cast_manta_tail_flare17806 60085–60114 ———
12894cast_massive_ring_blast19701 60085–60114 ———
7646cast_mayongs_touch9755 60085–60114 ———
12591cast_medusa_snake_attack_aoe19124 60085–60114 ———
12592cast_medusa_snake_attack_p2p19125 60085–60114 ———
12593cast_medusa_snake_buff19126 60085–60114 ———
11843cast_melee_buff17351 60085–60114 ———
1193cast_mendhands_011434 1–843 ———
8312cast_mendhands_0111055 60085–60114 ———
1194cast_mendsparkleball_011435 1–843 ———
8313cast_mendsparkleball_0111056 60085–60114 ———
1195cast_mendsparkleball_021436 1–843 ———
8314cast_mendsparkleball_0211057 60085–60114 ———
1197cast_mendtrails_011438 1–843 ———
8316cast_mendtrails_0111059 60085–60114 ———
1196cast_mendtrail_011437 1–843 ———
8315cast_mendtrail_0111058 60085–60114 ———
1225cast_mendtwinkles_011466 1–843 ———
8317cast_mendtwinkles_0111060 60085–60114 ———
13169cast_mental_blast20109 60085–60114 ———
11854cast_mental_buff17376 60085–60114 ———
412cast_mesmerize151 1–843 ———
6679cast_mesmerize151 60085–60114 ———
12024cast_meteor_storm17791 60085–60114 ———
29120cast_mines_throw83455 60085–60114 ———
11439cast_mirror16472 60085–60114 ———
13646cast_mirror_emerge21201 60085–60114 ———
28915cast_missile_blob_fx_green75305 60085–60114 ———
28916cast_missile_dark_blob_fx_purple75306 60085–60114 ———
28576cast_missile_fx66372 60085–60114 ———
739cast_mistring902 1–843 ———
6763cast_mistring902 60085–60114 ———
1336cast_mist_sphere_add1582 1–843 ———
6939cast_mist_sphere_add1582 60085–60114 ———
1337cast_mist_sphere_blend1583 1–843 ———
6940cast_mist_sphere_blend1583 60085–60114 ———
10841cast_mist_sphere_sub14555 60085–60114 ———
17370cast_monk32138 60085–60114 ———
17157cast_monk_mythical_fx31237 60085–60114 ———
29657cast_moonlight_chargeup97373 60085–60114 ———
29658cast_moonlight_drop97374 60085–60114 ———
2956cast_morph_to_dragon4564 1–843 ———
7479cast_morph_to_dragon4564 60085–60114 ———
3039cast_morph_to_elf4783 1–843 ———
7504cast_morph_to_elf4783 60085–60114 ———
2205cast_motion_lines2751 1–843 ———
1325cast_mystic1571 1–843 ———
6929cast_mystic1571 60085–60114 ———
3438cast_mysticism6766 1–843 ———
7584cast_mysticism6766 60085–60114 ———
17158cast_mystic_mythical_fx31238 60085–60114 ———
29615cast_nature_heal_gather96416 60085–60114 ———
413cast_necromancer152 1–843 ———
6680cast_necromancer152 60085–60114 ———
17159cast_necromancer_mythical_fx31239 60085–60114 ———
12034cast_nether_blast17807 60085–60114 ———
12035cast_nether_storm17808 60085–60114 ———
1617cast_new_qa_part11925 1–843 ———
8318cast_new_qa_part111061 60085–60114 ———
1618cast_new_qa_part21926 1–843 ———
8319cast_new_qa_part211062 60085–60114 ———
1619cast_new_qa_part31927 1–843 ———
8320cast_new_qa_part311063 60085–60114 ———
14015cast_nipik_spirits22007 60085–60114 ———
29295cast_notes_building93265 60085–60114 ———
2775cast_notes_out_song3864 1–843 ———
7418cast_notes_out_song3864 60085–60114 ———
15910cast_noxious_breath26356 60085–60114 ———
11212cast_no_target_blue_star16042 60085–60114 ———
414cast_nuke_mental153 1–843 ———
6681cast_nuke_mental153 60085–60114 ———
15762cast_obelisk_rock_summon25965 60085–60114 ———
15763cast_obelisk_wisps_summon25966 60085–60114 ———
988cast_orbiting_rings1211 1–843 ———
6781cast_orbiting_rings1211 60085–60114 ———
1828cast_orbiting_rings22145 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.