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
17178cast_sun_sphere31294 60085–60114 ———
2212cast_super_buff2759 1–843 ———
7186cast_super_buff2759 60085–60114 ———
2581cast_super_lightning3236 1–843 ———
7284cast_super_lightning3236 60085–60114 ———
17372cast_swashbuckler32142 60085–60114 ———
17163cast_swashbuckler_mythical_fx31245 60085–60114 ———
1068cast_swipe01_snd1309 1–843 ———
8357cast_swipe01_snd11102 60085–60114 ———
1069cast_swipe02_snd1310 1–843 ———
8358cast_swipe02_snd11103 60085–60114 ———
442cast_swirlie187 1–843 ———
6708cast_swirlie187 60085–60114 ———
1338cast_swirlies_smoke1584 1–843 ———
6941cast_swirlies_smoke1584 60085–60114 ———
1339cast_swirlies_smoke_blend1585 1–843 ———
6942cast_swirlies_smoke_blend1585 60085–60114 ———
11760cast_sword_head17075 60085–60114 ———
15895cast_tail_fx26335 60085–60114 ———
14008cast_tallonite_attacking21974 60085–60114 ———
12872cast_tallonite_axe_throw19666 60085–60114 ———
12823cast_tallonite_balance19585 60085–60114 ———
12869cast_tallonite_dagger_blast19657 60085–60114 ———
12873cast_tallonite_glow_eyes19667 60085–60114 ———
12807cast_tallonite_lash_cone19563 60085–60114 ———
14009cast_tallonite_lash_spin21975 60085–60114 ———
12808cast_tallonite_lash_summon19564 60085–60114 ———
3350cast_target6420 1–843 ———
3092cast_targeted_benefical_end5055 1–843 ———
8364cast_targeted_benefical_end11109 60085–60114 ———
3093cast_targeted_benefical_loop5056 1–843 ———
8365cast_targeted_benefical_loop11110 60085–60114 ———
3094cast_targeted_benefical_start5057 1–843 ———
8366cast_targeted_benefical_start11111 60085–60114 ———
1778cast_targeted_beneficial_end2095 1–843 ———
8367cast_targeted_beneficial_end11112 60085–60114 ———
14045cast_targeted_beneficial_idle22080 60085–60114 ———
1779cast_targeted_beneficial_loop2096 1–843 ———
8368cast_targeted_beneficial_loop11113 60085–60114 ———
1780cast_targeted_beneficial_start2097 1–843 ———
8369cast_targeted_beneficial_start11114 60085–60114 ———
1781cast_targeted_detrimental_end2098 1–843 ———
8370cast_targeted_detrimental_end11115 60085–60114 ———
1782cast_targeted_detrimental_loop2099 1–843 ———
8371cast_targeted_detrimental_loop11116 60085–60114 ———
1783cast_targeted_detrimental_start2100 1–843 ———
8372cast_targeted_detrimental_start11117 60085–60114 ———
8373cast_targeted_detrimental_start211118 60085–60114 ———
1865cast_targeted_wand_end2199 1–843 ———
8374cast_targeted_wand_end11119 60085–60114 ———
1866cast_targeted_wand_loop2200 1–843 ———
8375cast_targeted_wand_loop11120 60085–60114 ———
1867cast_targeted_wand_start2201 1–843 ———
8376cast_targeted_wand_start11121 60085–60114 ———
1623cast_target_detrimental_011931 1–843 ———
8362cast_target_detrimental_0111107 60085–60114 ———
1624cast_target_detrimental_021932 1–843 ———
8363cast_target_detrimental_0211108 60085–60114 ———
1620cast_target_det_011928 1–843 ———
8359cast_target_det_0111104 60085–60114 ———
1621cast_target_det_021929 1–843 ———
8360cast_target_det_0211105 60085–60114 ———
1622cast_target_det_031930 1–843 ———
8361cast_target_det_0311106 60085–60114 ———
8377cast_tarranax_breath11122 60085–60114 ———
8378cast_tarranax_breath_path11123 60085–60114 ———
8379cast_tarranax_breath_start11124 60085–60114 ———
2110cast_taunt2627 1–843 ———
7143cast_taunt2627 60085–60114 ———
17303cast_tear_shout31798 60085–60114 ———
29049cast_tear_shout_breath80622 60085–60114 ———
15781cast_teleport_down_fx26086 60085–60114 ———
1329cast_templar1575 1–843 ———
6933cast_templar1575 60085–60114 ———
17164cast_templar_mythical_fx31246 60085–60114 ———
1545cast_testbones1851 1–843 ———
6992cast_testbones1851 60085–60114 ———
1558cast_testbones_vgraph1865 1–843 ———
7002cast_testbones_vgraph1865 60085–60114 ———
15735cast_thorn_circle25836 60085–60114 ———
15736cast_thorn_clap25837 60085–60114 ———
14046cast_thunder_clap22081 60085–60114 ———
899cast_thunder_snd1090 1–843 ———
8380cast_thunder_snd11125 60085–60114 ———
28842cast_tov_ice_block70873 60085–60114 ———
28844cast_tov_ice_melt71033 60085–60114 ———
16273cast_toxic_gathering27900 60085–60114 ———
16274cast_toxic_rain27901 60085–60114 ———
2620cast_trace_firespikes_l3364 1–843 ———
7319cast_trace_firespikes_l3364 60085–60114 ———
2621cast_trace_firespikes_r3365 1–843 ———
7320cast_trace_firespikes_r3365 60085–60114 ———
11154cast_trace_firespikes_sub_l15891 60085–60114 ———
11155cast_trace_firespikes_sub_r15892 60085–60114 ———
3269cast_trace_prism_left6037 1–843 ———
7547cast_trace_prism_left6037 60085–60114 ———
3270cast_trace_prism_right6038 1–843 ———
7548cast_trace_prism_right6038 60085–60114 ———
7614cast_trace_sparkcrescent_l7815 60085–60114 ———
7615cast_trace_sparkcrescent_r7816 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.