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
22363kill_sarnak_indigestion49453 60085–60114 ———
22364kill_sarnak_itch49454 60085–60114 ———
22365kill_sarnak_listen49455 60085–60114 ———
22366kill_sarnak_lookaway49456 60085–60114 ———
22218kill_sarnak_mining_digging49216 60085–60114 ———
22232kill_sarnak_mining_success49237 60085–60114 ———
22219kill_sarnak_monk_attack49217 60085–60114 ———
22220kill_sarnak_monk_attack0149218 60085–60114 ———
22221kill_sarnak_monk_attack0249219 60085–60114 ———
22222kill_sarnak_monk_attack0349220 60085–60114 ———
22367kill_sarnak_monk_dodge_backhand49457 60085–60114 ———
22368kill_sarnak_monk_dodge_forehand49458 60085–60114 ———
22147kill_sarnak_monk_enter49093 60085–60114 ———
22068kill_sarnak_monk_idle48944 60085–60114 ———
22223kill_sarnak_monk_kick49221 60085–60114 ———
22369kill_sarnak_monk_ouch_backhand49459 60085–60114 ———
22370kill_sarnak_monk_ouch_down49460 60085–60114 ———
22371kill_sarnak_monk_ouch_forehand49461 60085–60114 ———
22372kill_sarnak_monk_parry_backhand49462 60085–60114 ———
22373kill_sarnak_monk_parry_down49463 60085–60114 ———
22374kill_sarnak_monk_parry_forehand49464 60085–60114 ———
22375kill_sarnak_moon49465 60085–60114 ———
22376kill_sarnak_neener49466 60085–60114 ———
22377kill_sarnak_no49467 60085–60114 ———
22378kill_sarnak_nod49468 60085–60114 ———
22379kill_sarnak_notworthy49469 60085–60114 ———
22380kill_sarnak_orate49470 60085–60114 ———
22381kill_sarnak_peer49471 60085–60114 ———
22224kill_sarnak_pike_attack49222 60085–60114 ———
22225kill_sarnak_pike_attack0149223 60085–60114 ———
22226kill_sarnak_pike_attack0249224 60085–60114 ———
22227kill_sarnak_pike_attack0349225 60085–60114 ———
22382kill_sarnak_pike_dodge_backhand49472 60085–60114 ———
22383kill_sarnak_pike_dodge_down49473 60085–60114 ———
22384kill_sarnak_pike_dodge_forehand49474 60085–60114 ———
22385kill_sarnak_pike_dodge_thrust49475 60085–60114 ———
22069kill_sarnak_pike_idle48945 60085–60114 ———
22228kill_sarnak_pike_kick49226 60085–60114 ———
22386kill_sarnak_pike_ouch_backhand49476 60085–60114 ———
22387kill_sarnak_pike_ouch_down49477 60085–60114 ———
22388kill_sarnak_pike_ouch_thrust49478 60085–60114 ———
22389kill_sarnak_pike_parry_backhand49479 60085–60114 ———
22390kill_sarnak_pike_parry_down49480 60085–60114 ———
22391kill_sarnak_pike_parry_forehand49481 60085–60114 ———
22392kill_sarnak_point49482 60085–60114 ———
22393kill_sarnak_ponder49483 60085–60114 ———
22394kill_sarnak_pout49484 60085–60114 ———
22395kill_sarnak_pugilist_attack49485 60085–60114 ———
22396kill_sarnak_pugilist_attack0149486 60085–60114 ———
22397kill_sarnak_pugilist_attack0249487 60085–60114 ———
22398kill_sarnak_pugilist_attack0349488 60085–60114 ———
22399kill_sarnak_pugilist_dodge_backhand49489 60085–60114 ———
22400kill_sarnak_pugilist_dodge_down49490 60085–60114 ———
22070kill_sarnak_pugilist_idle48946 60085–60114 ———
22401kill_sarnak_pugilist_kick49491 60085–60114 ———
22402kill_sarnak_raisehand49492 60085–60114 ———
22071kill_sarnak_rhino_backup48947 60085–60114 ———
22072kill_sarnak_rhino_idle48948 60085–60114 ———
22073kill_sarnak_rhino_jump_substitute48949 60085–60114 ———
22074kill_sarnak_rhino_run48950 60085–60114 ———
22247kill_sarnak_rhino_sprint49272 60085–60114 ———
22075kill_sarnak_rhino_strafe_left48951 60085–60114 ———
22076kill_sarnak_rhino_strafe_right48952 60085–60114 ———
22077kill_sarnak_rhino_turn_left48953 60085–60114 ———
22078kill_sarnak_rhino_turn_right48954 60085–60114 ———
22403kill_sarnak_royalwave49493 60085–60114 ———
22404kill_sarnak_rubhands49494 60085–60114 ———
22405kill_sarnak_rude49495 60085–60114 ———
22079kill_sarnak_run48955 60085–60114 ———
22080kill_sarnak_run_0348956 60085–60114 ———
22081kill_sarnak_run_down_idle48957 60085–60114 ———
22082kill_sarnak_run_long48958 60085–60114 ———
22083kill_sarnak_run_up_idle48959 60085–60114 ———
22406kill_sarnak_sad49496 60085–60114 ———
22407kill_sarnak_salute49497 60085–60114 ———
22408kill_sarnak_sarcasticclap49498 60085–60114 ———
22409kill_sarnak_scold49499 60085–60114 ———
22410kill_sarnak_scratch49500 60085–60114 ———
22411kill_sarnak_scream49501 60085–60114 ———
22412kill_sarnak_seenoevil49502 60085–60114 ———
22413kill_sarnak_shakefist49503 60085–60114 ———
22414kill_sarnak_shame49504 60085–60114 ———
22415kill_sarnak_shimmy49505 60085–60114 ———
22416kill_sarnak_shiver49506 60085–60114 ———
22417kill_sarnak_shrug49507 60085–60114 ———
22418kill_sarnak_sigh49508 60085–60114 ———
22084kill_sarnak_sit_enter48960 60085–60114 ———
22085kill_sarnak_sit_exit48961 60085–60114 ———
22086kill_sarnak_sit_idle48962 60085–60114 ———
22419kill_sarnak_smile49509 60085–60114 ———
22420kill_sarnak_smirk49510 60085–60114 ———
22421kill_sarnak_sneer49511 60085–60114 ———
22422kill_sarnak_sneeze49512 60085–60114 ———
22423kill_sarnak_snicker49513 60085–60114 ———
22424kill_sarnak_sniff49514 60085–60114 ———
22425kill_sarnak_speaknoevil49515 60085–60114 ———
22426kill_sarnak_square49516 60085–60114 ———
22427kill_sarnak_squeal49517 60085–60114 ———
22428kill_sarnak_stare49518 60085–60114 ———
22429kill_sarnak_stinky49519 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.