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
15555backpack_pike_ouch_thrust25507 60085–60114 ———
15556backpack_pike_parry_backhand25508 60085–60114 ———
15557backpack_pike_parry_down25509 60085–60114 ———
15558backpack_pike_parry_forehand25510 60085–60114 ———
15559backpack_pike_parry_thrust25511 60085–60114 ———
15560backpack_pike_strafe_left25512 60085–60114 ———
15561backpack_pike_strafe_right25513 60085–60114 ———
15562backpack_pike_super_buff25514 60085–60114 ———
15563backpack_pike_taunt25515 60085–60114 ———
15564backpack_pike_walk25516 60085–60114 ———
15565backpack_pike_whirling_attack25517 60085–60114 ———
15566backpack_pike_wild_swing25518 60085–60114 ———
15567backpack_ponder25519 60085–60114 ———
15568backpack_pugilist_attack25520 60085–60114 ———
15569backpack_pugilist_attack0125521 60085–60114 ———
15570backpack_pugilist_attack0225522 60085–60114 ———
15571backpack_pugilist_attack0325523 60085–60114 ———
15572backpack_pugilist_attack_recoil25524 60085–60114 ———
15573backpack_pugilist_attack_recoil0125525 60085–60114 ———
15574backpack_pugilist_attack_recoil0225526 60085–60114 ———
15575backpack_pugilist_attack_recoil0325527 60085–60114 ———
15576backpack_pugilist_backup25528 60085–60114 ———
15577backpack_pugilist_charge_up25529 60085–60114 ———
15578backpack_pugilist_defensive_buff25530 60085–60114 ———
15579backpack_pugilist_dodge_backhand25531 60085–60114 ———
15580backpack_pugilist_dodge_down25532 60085–60114 ———
15581backpack_pugilist_dodge_forehand25533 60085–60114 ———
15582backpack_pugilist_dodge_thrust25534 60085–60114 ———
15583backpack_pugilist_enter25535 60085–60114 ———
15584backpack_pugilist_exit25536 60085–60114 ———
15585backpack_pugilist_feint25537 60085–60114 ———
15586backpack_pugilist_idle25538 60085–60114 ———
15587backpack_pugilist_kick25539 60085–60114 ———
15345backpack_pugilist_knockdowntoknees25540 60085–60114 ———
15588backpack_pugilist_knockedtoback25541 60085–60114 ———
15589backpack_pugilist_knockedtoback_getup25542 60085–60114 ———
15590backpack_pugilist_offensive_buff25543 60085–60114 ———
15591backpack_pugilist_ouch_backhand25544 60085–60114 ———
15592backpack_pugilist_ouch_down25545 60085–60114 ———
15593backpack_pugilist_ouch_forehand25546 60085–60114 ———
15594backpack_pugilist_ouch_thrust25547 60085–60114 ———
15595backpack_pugilist_parry_backhand25548 60085–60114 ———
15596backpack_pugilist_parry_down25549 60085–60114 ———
15597backpack_pugilist_parry_forehand25550 60085–60114 ———
15598backpack_pugilist_parry_thrust25551 60085–60114 ———
15599backpack_pugilist_strafe_left25552 60085–60114 ———
15600backpack_pugilist_strafe_right25553 60085–60114 ———
15601backpack_pugilist_super_buff25554 60085–60114 ———
15602backpack_pugilist_taunt25555 60085–60114 ———
15603backpack_pugilist_walk25556 60085–60114 ———
15604backpack_pugilist_whirling_attack25557 60085–60114 ———
15605backpack_pugilist_wild_swing25558 60085–60114 ———
15606backpack_resurrect25559 60085–60114 ———
15607backpack_right_hand_fist25560 60085–60114 ———
15608backpack_right_hand_relaxed25561 60085–60114 ———
15609backpack_rude25562 60085–60114 ———
15054backpack_run24828 60085–60114 ———
15610backpack_sad25563 60085–60114 ———
15611backpack_salute_freeport25564 60085–60114 ———
15612backpack_scheme25565 60085–60114 ———
15613backpack_scratch25566 60085–60114 ———
15614backpack_scribing_idle25567 60085–60114 ———
15615backpack_seenoevil25568 60085–60114 ———
15616backpack_shame25569 60085–60114 ———
15617backpack_shield_block_backhand25570 60085–60114 ———
15618backpack_shield_block_down25571 60085–60114 ———
15619backpack_shield_block_forehand25572 60085–60114 ———
15620backpack_shield_block_thrust25573 60085–60114 ———
15621backpack_shield_shove25574 60085–60114 ———
15622backpack_shiver25575 60085–60114 ———
15623backpack_sit_drink25576 60085–60114 ———
15624backpack_sit_enter25577 60085–60114 ———
15625backpack_sit_exit25578 60085–60114 ———
15626backpack_sit_idle25579 60085–60114 ———
15627backpack_sneeze25580 60085–60114 ———
15628backpack_sniff25581 60085–60114 ———
15629backpack_speaknoevil25582 60085–60114 ———
15630backpack_square25583 60085–60114 ———
15631backpack_stinky25584 60085–60114 ———
15055backpack_strafe_left24829 60085–60114 ———
15056backpack_strafe_left_run24830 60085–60114 ———
15057backpack_strafe_right24831 60085–60114 ———
15058backpack_strafe_right_run24832 60085–60114 ———
15632backpack_sulk25585 60085–60114 ———
15633backpack_super_buff25586 60085–60114 ———
15634backpack_swim_attack25587 60085–60114 ———
15635backpack_swim_backup25588 60085–60114 ———
15636backpack_swim_idle25589 60085–60114 ———
15637backpack_swim_ouch25590 60085–60114 ———
15638backpack_swim_walk25591 60085–60114 ———
15639backpack_tail25592 60085–60114 ———
15640backpack_tailoring_failure25593 60085–60114 ———
15641backpack_tailoring_idle25594 60085–60114 ———
15642backpack_tailoring_success25595 60085–60114 ———
15643backpack_tapfoot25596 60085–60114 ———
15644backpack_taunt_combat_art25597 60085–60114 ———
15645backpack_threaten25598 60085–60114 ———
15059backpack_turn_left24833 60085–60114 ———
15060backpack_turn_right24834 60085–60114 ———
15646backpack_untrained_attack25599 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.