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
2551persist_distortion_hit_minimal3194 1–843 ———
7268persist_distortion_hit_minimal3194 60085–60114 ———
2219persist_divine2767 1–843 ———
7187persist_divine2767 60085–60114 ———
3357persist_dragonbreath6458 1–843 ———
7568persist_dragonbreath6458 60085–60114 ———
2220persist_eidolon2768 1–843 ———
7188persist_eidolon2768 60085–60114 ———
2572persist_electrified3224 1–843 ———
7276persist_electrified3224 60085–60114 ———
2221persist_energy2769 1–843 ———
7189persist_energy2769 60085–60114 ———
11733persist_enrage16967 60085–60114 ———
11970persist_evil_stun17647 60085–60114 ———
2757persist_fear3820 1–843 ———
7404persist_fear3820 60085–60114 ———
11141persist_fear_skulls15854 60085–60114 ———
2222persist_fire2770 1–843 ———
7190persist_fire2770 60085–60114 ———
29192persist_gut_rip86801 60085–60114 ———
2223persist_ice2771 1–843 ———
7191persist_ice2771 60085–60114 ———
3379persist_juggernaut6497 1–843 ———
7572persist_juggernaut6497 60085–60114 ———
16043persist_magic_damage26961 60085–60114 ———
2224persist_mental2772 1–843 ———
7192persist_mental2772 60085–60114 ———
2225persist_mesmerize2773 1–843 ———
7193persist_mesmerize2773 60085–60114 ———
13717persist_notes_dirge21414 60085–60114 ———
2734persist_notes_gathering3785 1–843 ———
7395persist_notes_gathering3785 60085–60114 ———
14424persist_notes_green23089 60085–60114 ———
14425persist_notes_purple23090 60085–60114 ———
2735persist_notes_spiral_off3786 1–843 ———
7396persist_notes_spiral_off3786 60085–60114 ———
2758persist_notes_spiral_off_blue3821 1–843 ———
7405persist_notes_spiral_off_blue3821 60085–60114 ———
2759persist_notes_spiral_off_green3822 1–843 ———
7406persist_notes_spiral_off_green3822 60085–60114 ———
2760persist_notes_spiral_off_red3823 1–843 ———
7407persist_notes_spiral_off_red3823 60085–60114 ———
13718persist_notes_troub21415 60085–60114 ———
2057persist_pet_air_fragment2525 1–843 ———
7106persist_pet_air_fragment2525 60085–60114 ———
2058persist_pet_chaos_fragment2526 1–843 ———
7107persist_pet_chaos_fragment2526 60085–60114 ———
2059persist_pet_earth_fragment2527 1–843 ———
7108persist_pet_earth_fragment2527 60085–60114 ———
2060persist_pet_fire_fragment2528 1–843 ———
7109persist_pet_fire_fragment2528 60085–60114 ———
2061persist_pet_fire_servant2529 1–843 ———
7110persist_pet_fire_servant2529 60085–60114 ———
2062persist_pet_ice_servant2530 1–843 ———
7111persist_pet_ice_servant2530 60085–60114 ———
2063persist_pet_lightning_servant2531 1–843 ———
7112persist_pet_lightning_servant2531 60085–60114 ———
2064persist_pet_water_fragment2532 1–843 ———
7113persist_pet_water_fragment2532 60085–60114 ———
2226persist_poison2774 1–843 ———
7194persist_poison2774 60085–60114 ———
2703persist_power_gathering3705 1–843 ———
7372persist_power_gathering3705 60085–60114 ———
14181persist_red_tagged22497 60085–60114 ———
2717persist_sparkles_clinging_soft_blue3749 1–843 ———
7383persist_sparkles_clinging_soft_blue3749 60085–60114 ———
2718persist_sparkles_clinging_soft_gold3750 1–843 ———
7384persist_sparkles_clinging_soft_gold3750 60085–60114 ———
2719persist_sparkles_clinging_soft_green3751 1–843 ———
7385persist_sparkles_clinging_soft_green3751 60085–60114 ———
2720persist_sparkles_clinging_soft_purple3752 1–843 ———
7386persist_sparkles_clinging_soft_purple3752 60085–60114 ———
2721persist_sparkles_clinging_soft_red3753 1–843 ———
7387persist_sparkles_clinging_soft_red3753 60085–60114 ———
2240persist_stone2791 1–843 ———
7203persist_stone2791 60085–60114 ———
2227persist_stunned2775 1–843 ———
7195persist_stunned2775 60085–60114 ———
11142persist_wild_heart_beating15855 60085–60114 ———
2810pf_endsplash_snd3958 1–843 ———
9223pf_endsplash_snd11978 60085–60114 ———
2789pf_pwrcast_snd3925 1–843 ———
9224pf_pwrcast_snd11979 60085–60114 ———
2790pf_pwrrslt_snd3926 1–843 ———
9225pf_pwrrslt_snd11980 60085–60114 ———
11400pike_advance16405 60085–60114 ———
986pike_attack1206 1–843 ———
6780pike_attack1206 60085–60114 ———
1575pike_attack011882 1–843 ———
7017pike_attack011882 60085–60114 ———
1576pike_attack021883 1–843 ———
7018pike_attack021883 60085–60114 ———
1577pike_attack031884 1–843 ———
9226pike_attack0311981 60085–60114 ———
2964pike_attack044591 1–843 ———
9227pike_attack0411982 60085–60114 ———
987pike_attack_recoil1207 1–843 ———
9228pike_attack_recoil11983 60085–60114 ———
1578pike_attack_recoil011885 1–843 ———
9229pike_attack_recoil0111984 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.