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
23646kill_sound_pegasus_attack_452398 60085–60114 ———
23647kill_sound_pegasus_death_fall52399 60085–60114 ———
23648kill_sound_pegasus_death_niegh52400 60085–60114 ———
23649kill_sound_pegasus_grunt52401 60085–60114 ———
23650kill_sound_pegasus_hooves52402 60085–60114 ———
23651kill_sound_pegasus_hooves_scrape52403 60085–60114 ———
23655kill_sound_pegasus_idleloop52407 60085–60114 ———
23652kill_sound_pegasus_idle_152404 60085–60114 ———
23653kill_sound_pegasus_idle_252405 60085–60114 ———
23654kill_sound_pegasus_idle_slow52406 60085–60114 ———
23656kill_sound_pegasus_limb_whip52408 60085–60114 ———
23657kill_sound_pegasus_ouch_152409 60085–60114 ———
23658kill_sound_pegasus_ouch_hit52410 60085–60114 ———
23659kill_sound_pegasus_snort_quick52411 60085–60114 ———
23660kill_sound_pegasus_wings_soft52412 60085–60114 ———
5274kill_sound_pen0135315 1–843 ———
20851kill_sound_pen0145582 60085–60114 ———
5275kill_sound_pen0235316 1–843 ———
20852kill_sound_pen0245583 60085–60114 ———
4957kill_sound_piercer34835 1–843 ———
20853kill_sound_piercer45584 60085–60114 ———
30070kill_sound_pig_attack8454190 60085–60114 ———
30071kill_sound_pig_attack_028454191 60085–60114 ———
30072kill_sound_pig_attack_038454192 60085–60114 ———
30073kill_sound_pig_combat_enter8454193 60085–60114 ———
30074kill_sound_pig_death_enter8454194 60085–60114 ———
30075kill_sound_pig_eating_lp8454195 60085–60114 ———
30076kill_sound_pig_foot_step8454196 60085–60114 ———
30077kill_sound_pig_snorts8454197 60085–60114 ———
30078kill_sound_pig_trapped_exit8454198 60085–60114 ———
30079kill_sound_pig_trapped_idle8454199 60085–60114 ———
5306kill_sound_purr35378 1–843 ———
20854kill_sound_purr45585 60085–60114 ———
5307kill_sound_purr0235379 1–843 ———
20855kill_sound_purr0245586 60085–60114 ———
5308kill_sound_purr0335380 1–843 ———
20856kill_sound_purr0345587 60085–60114 ———
4903kill_sound_raisehand34780 1–843 ———
20857kill_sound_raisehand45588 60085–60114 ———
20858kill_sound_rechargeresult45589 60085–60114 ———
20859kill_sound_recharging45590 60085–60114 ———
23466kill_sound_reverberant_bang52075 60085–60114 ———
21932kill_sound_ribbit48613 60085–60114 ———
20860kill_sound_roar45591 60085–60114 ———
23292kill_sound_rockbody51620 60085–60114 ———
20861kill_sound_rockroll45592 60085–60114 ———
22975kill_sound_rock_breaking50880 60085–60114 ———
23428kill_sound_roehn_theer_cast_roar52024 60085–60114 ———
23429kill_sound_roehn_theer_cast_roar_152025 60085–60114 ———
23430kill_sound_roehn_theer_combat_art_buff_roar52026 60085–60114 ———
23431kill_sound_roehn_theer_combat_idle_wings52027 60085–60114 ———
23432kill_sound_roehn_theer_death_roar52028 60085–60114 ———
23433kill_sound_roehn_theer_dodge_grunt52029 60085–60114 ———
23434kill_sound_roehn_theer_footstep_deep52030 60085–60114 ———
23435kill_sound_roehn_theer_footstep_light52031 60085–60114 ———
23436kill_sound_roehn_theer_grunt_quick52032 60085–60114 ———
23437kill_sound_roehn_theer_hit52033 60085–60114 ———
23438kill_sound_roehn_theer_idle_04_knuckles52034 60085–60114 ———
23439kill_sound_roehn_theer_idle_hiss52035 60085–60114 ———
23440kill_sound_roehn_theer_idle_hiss_light52036 60085–60114 ———
23441kill_sound_roehn_theer_ouch52037 60085–60114 ———
23442kill_sound_roehn_theer_sheath52038 60085–60114 ———
23443kill_sound_roehn_theer_shield_shove_grunt52039 60085–60114 ———
23444kill_sound_roehn_theer_sit_wings_short52040 60085–60114 ———
23445kill_sound_roehn_theer_stomp52041 60085–60114 ———
24001kill_sound_roehn_theer_stomp_rocks_152978 60085–60114 ———
24002kill_sound_roehn_theer_stomp_rocks_252979 60085–60114 ———
24003kill_sound_roehn_theer_stomp_rocks_352980 60085–60114 ———
23446kill_sound_roehn_theer_swim_idle52042 60085–60114 ———
23447kill_sound_roehn_theer_sword_attack_grunt52043 60085–60114 ———
23448kill_sound_roehn_theer_sword_attack_grunt_quick52044 60085–60114 ———
23449kill_sound_roehn_theer_sword_swoosh52045 60085–60114 ———
23450kill_sound_roehn_theer_tail_whoosh52046 60085–60114 ———
23451kill_sound_roehn_theer_tail_whoosh_deep52047 60085–60114 ———
23452kill_sound_roehn_theer_unsheath52048 60085–60114 ———
23453kill_sound_roehn_theer_wings52049 60085–60114 ———
23454kill_sound_roehn_theer_wings_152050 60085–60114 ———
4192kill_sound_rofl33981 1–843 ———
20862kill_sound_rofl45593 60085–60114 ———
23293kill_sound_roperbodynoise_quick51621 60085–60114 ———
23294kill_sound_roperbodynoise_slow51622 60085–60114 ———
4904kill_sound_rude34781 1–843 ———
20863kill_sound_rude45594 60085–60114 ———
4183kill_sound_run33966 1–843 ———
20864kill_sound_run45595 60085–60114 ———
22558kill_sound_runbreathe49862 60085–60114 ———
5078kill_sound_runcreak34984 1–843 ———
20865kill_sound_runcreak45596 60085–60114 ———
3966kill_sound_runflap33696 1–843 ———
20866kill_sound_runflap45597 60085–60114 ———
3821kill_sound_runflap0133374 1–843 ———
20867kill_sound_runflap0145598 60085–60114 ———
3822kill_sound_runflap0233375 1–843 ———
20868kill_sound_runflap0245599 60085–60114 ———
4930kill_sound_runflapsmall34808 1–843 ———
20869kill_sound_runflapsmall45600 60085–60114 ———
5079kill_sound_runhit34985 1–843 ———
20870kill_sound_runhit45601 60085–60114 ———
5080kill_sound_runland34986 1–843 ———
20871kill_sound_runland45602 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.