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
1435fh_flames_snd1695 1–843 ———
8775fh_flames_snd11528 60085–60114 ———
1436fh_hammer_appear_02_snd1696 1–843 ———
8776fh_hammer_appear_02_snd11529 60085–60114 ———
1437fh_hammer_appear_snd1697 1–843 ———
8777fh_hammer_appear_snd11530 60085–60114 ———
1438fh_hammer_impact_snd1698 1–843 ———
8778fh_hammer_impact_snd11531 60085–60114 ———
1439fh_hammer_whoosh_snd1699 1–843 ———
8779fh_hammer_whoosh_snd11532 60085–60114 ———
494fire292 1–843 ———
8780fire11533 60085–60114 ———
1999fire012428 1–843 ———
8781fire0111534 60085–60114 ———
10688fire01_big13744 60085–60114 ———
10689fire01_small13745 60085–60114 ———
2000fire022429 1–843 ———
8782fire0211535 60085–60114 ———
29223fireball_hands89007 60085–60114 ———
1537fireblast1843 1–843 ———
8785fireblast11538 60085–60114 ———
495fire_breath293 1–843 ———
8783fire_breath11536 60085–60114 ———
13231fire_build_up20294 60085–60114 ———
11479fire_foolish16582 60085–60114 ———
10772fire_hearts13958 60085–60114 ———
496fire_loop294 1–843 ———
8784fire_loop11537 60085–60114 ———
14645fire_magic23745 60085–60114 ———
14662fire_magic_blue23797 60085–60114 ———
14663fire_magic_green23798 60085–60114 ———
14664fire_magic_purple23799 60085–60114 ———
14665fire_magic_red23800 60085–60114 ———
28965fire_strafe_center_skyshrine77017 60085–60114 ———
12154fire_summon_portal18040 60085–60114 ———
14437fire_trail_fx23114 60085–60114 ———
29292fishing93064 60085–60114 ———
1306fishing_cast1551 1–843 ———
8786fishing_cast11539 60085–60114 ———
1307fishing_fight1552 1–843 ———
8787fishing_fight11540 60085–60114 ———
1308fishing_reel_in1553 1–843 ———
8788fishing_reel_in11541 60085–60114 ———
1854fizzle2179 1–843 ———
8789fizzle11542 60085–60114 ———
2287fkd_impact_sound2860 1–843 ———
8790fkd_impact_sound11543 60085–60114 ———
2288fkd_kneebreak_sound2861 1–843 ———
8791fkd_kneebreak_sound11544 60085–60114 ———
16174flames_backlash_snd27413 60085–60114 ———
1178flames_sound1419 1–843 ———
8795flames_sound11548 60085–60114 ———
14375flame_burst_lh22980 60085–60114 ———
14376flame_burst_rh22981 60085–60114 ———
28494flame_hit_impact_snd66216 60085–60114 ———
11467flash16545 60085–60114 ———
3373flash_blue6480 1–843 ———
8796flash_blue11549 60085–60114 ———
3374flash_green6481 1–843 ———
8797flash_green11550 60085–60114 ———
3375flash_red6482 1–843 ———
8798flash_red11551 60085–60114 ———
3376flash_yellow6483 1–843 ———
8799flash_yellow11552 60085–60114 ———
227flee295 1–843 tells everyone to run!tells %t to run!—
8800flee11553 60085–60114 tells everyone to run!tells %t to run!—
228flex296 1–843 flexes.flexes at %t.—
8801flex11554 60085–60114 flexes.flexes at %t.—
8802flight_path11555 60085–60114 ———
12528flight_path_dawn18926 60085–60114 ———
3089flingpoo5027 1–843 ———
8803flingpoo11556 60085–60114 ———
229flirt297 1–843 starts flirting!starts flirting with %t.—
8804flirt11557 60085–60114 starts flirting!starts flirting with %t.—
10779flirt_short_butt14186 60085–60114 ———
10780flirt_short_leg14187 60085–60114 ———
10781flirt_short_shake14188 60085–60114 ———
10782flirt_short_wave14189 60085–60114 ———
10783flirt_short_wave214190 60085–60114 ———
10784flirt_short_wave314191 60085–60114 ———
15755float25941 60085–60114 ———
13353float_on_back20599 60085–60114 ———
11745flock_of_seagulls17035 60085–60114 ———
230flourish298 1–843 performs a flourished bow.flourishes their weapon at %t.—
6718flourish298 60085–60114 performs a flourished bow.flourishes their weapon at %t.—
15674flurry_kick25640 60085–60114 ———
231flustered299 1–843 appears flustered.appears flustered with %t.—
8805flustered11558 60085–60114 appears flustered.appears flustered with %t.—
3442fly6780 1–843 ———
8806fly11559 60085–60114 ———
2943fly_attack4540 1–843 ———
8807fly_attack11560 60085–60114 ———
13792fly_attack0121537 60085–60114 ———
13793fly_attack0221538 60085–60114 ———
13794fly_attack0321539 60085–60114 ———
2944fly_attack_bite4541 1–843 ———
8808fly_attack_bite11561 60085–60114 ———
2890fly_attack_breath4327 1–843 ———
8809fly_attack_breath11562 60085–60114 ———
2945fly_attack_breath_arc4542 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.