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
8292cast_hrb_rune_snd11035 60085–60114 ———
28843cast_hydra_ice_breath71030 60085–60114 ———
3369cast_hypnosis6473 1–843 ———
7571cast_hypnosis6473 60085–60114 ———
13327cast_ice_blast20520 60085–60114 ———
13307cast_ice_blastwave20461 60085–60114 ———
12174cast_ice_blast_out18090 60085–60114 ———
13328cast_ice_blast_ring20521 60085–60114 ———
11849cast_ice_block17365 60085–60114 ———
12175cast_ice_column18091 60085–60114 ———
8293cast_ice_laser_breath11036 60085–60114 ———
12501cast_ice_pulse18857 60085–60114 ———
12502cast_icicle_spin_blast18858 60085–60114 ———
17288cast_icy_breath31673 60085–60114 ———
12573cast_icy_division19073 60085–60114 ———
12466cast_idle18800 60085–60114 ———
16244cast_illusionary_charge_up27716 60085–60114 ———
16245cast_illusionary_emanation27717 60085–60114 ———
1323cast_illusionist1569 1–843 ———
6927cast_illusionist1569 60085–60114 ———
17155cast_illusionist_mythical_fx31235 60085–60114 ———
14099cast_inhale_breath22224 60085–60114 ———
16905cast_ink_barrier30535 60085–60114 ———
16906cast_ink_spray30536 60085–60114 ———
1324cast_inquisitor1570 1–843 ———
6928cast_inquisitor1570 60085–60114 ———
17156cast_inquisitor_mythical_fx31236 60085–60114 ———
2232cast_instrument_drum2782 1–843 ———
7199cast_instrument_drum2782 60085–60114 ———
2701cast_instrument_flute3693 1–843 ———
7371cast_instrument_flute3693 60085–60114 ———
2233cast_instrument_stringed2783 1–843 ———
7200cast_instrument_stringed2783 60085–60114 ———
3397cast_jesters_gamble6605 1–843 ———
7576cast_jesters_gamble6605 60085–60114 ———
1158cast_kickcharge_sound1399 1–843 ———
8294cast_kickcharge_sound11037 60085–60114 ———
14044cast_kromzek_strike22077 60085–60114 ———
8295cast_laser_aoe11038 60085–60114 ———
7651cast_laser_p2p9821 60085–60114 ———
11779cast_lasso17161 60085–60114 ———
29579cast_lava_cone_blast95481 60085–60114 ———
29662cast_lava_cooling_shader97589 60085–60114 ———
29614cast_lava_heal96415 60085–60114 ———
28864cast_lava_howl72194 60085–60114 ———
3237cast_lava_rocks5635 1–843 ———
8296cast_lava_rocks11039 60085–60114 ———
12159cast_lava_shield18056 60085–60114 ———
10899cast_leaf_blower_p2p15001 60085–60114 ———
11850cast_leaf_buff17366 60085–60114 ———
28790cast_leaf_burst_forward68716 60085–60114 ———
11851cast_leaf_spiral_buff17367 60085–60114 ———
8297cast_lense0111040 60085–60114 ———
8298cast_lense0211041 60085–60114 ———
732cast_lhand_sparkle_trail895 1–843 ———
6762cast_lhand_sparkle_trail895 60085–60114 ———
11060cast_lhand_sparkle_trail_blend15641 60085–60114 ———
1281cast_lhand_sparkle_trail_t1523 1–843 ———
6908cast_lhand_sparkle_trail_t1523 60085–60114 ———
29181cast_lich_shout_vanish85891 60085–60114 ———
409cast_lightning148 1–843 ———
6676cast_lightning148 60085–60114 ———
11474cast_lightning_aoe_blast_out16560 60085–60114 ———
11930cast_lightning_beam_converge17550 60085–60114 ———
11931cast_lightning_beam_point17551 60085–60114 ———
11932cast_lightning_blastdown17552 60085–60114 ———
29241cast_lightning_blast_shockwave90384 60085–60114 ———
14100cast_lightning_burst22225 60085–60114 ———
16913cast_lightning_spray_hands30588 60085–60114 ———
14101cast_lightning_wings22226 60085–60114 ———
11469cast_light_beam_grow16549 60085–60114 ———
28995cast_light_shout78437 60085–60114 ———
1159cast_light_sound1400 1–843 ———
8299cast_light_sound11042 60085–60114 ———
3370cast_loop6474 1–843 ———
11775cast_lost_souls17148 60085–60114 ———
12597cast_lost_souls_rising19137 60085–60114 ———
410cast_mage149 1–843 ———
6677cast_mage149 60085–60114 ———
17290cast_mage_aa_reassignment_fx31681 60085–60114 ———
733cast_mage_aggro_01896 1–843 ———
8300cast_mage_aggro_0111043 60085–60114 ———
734cast_mage_aggro_02897 1–843 ———
8301cast_mage_aggro_0211044 60085–60114 ———
735cast_mage_buff_01898 1–843 ———
8302cast_mage_buff_0111045 60085–60114 ———
736cast_mage_buff_02899 1–843 ———
8303cast_mage_buff_0211046 60085–60114 ———
737cast_mage_ddam_01900 1–843 ———
8304cast_mage_ddam_0111047 60085–60114 ———
738cast_mage_ddam_02901 1–843 ———
8305cast_mage_ddam_0211048 60085–60114 ———
1685cast_mage_old1995 1–843 ———
7051cast_mage_old1995 60085–60114 ———
1233cast_mage_qa_011474 1–843 ———
8306cast_mage_qa_0111049 60085–60114 ———
1234cast_mage_qa_021475 1–843 ———
8307cast_mage_qa_0211050 60085–60114 ———
1235cast_mage_qa_031476 1–843 ———
8308cast_mage_qa_0311051 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.