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
21466kill_froglok_dual_wield_super_buff46476 60085–60114 ———
18625kill_froglok_dual_wield_whirling_attack43021 60085–60114 ———
18626kill_froglok_dual_wield_wild_swing43022 60085–60114 ———
21357kill_froglok_forestry_chopping46097 60085–60114 ———
18714kill_froglok_forestry_success43344 60085–60114 ———
18706kill_froglok_gathering_search43321 60085–60114 ———
18707kill_froglok_gathering_success43322 60085–60114 ———
27000kill_froglok_godly_light_sparkles60322 60085–60114 ———
18704kill_froglok_horse_idle43301 60085–60114 ———
18715kill_froglok_horse_jump_substitute43345 60085–60114 ———
18444kill_froglok_idle42556 60085–60114 ———
18716kill_froglok_kick43346 60085–60114 ———
21468kill_froglok_knockdowntoknees46478 60085–60114 ———
21467kill_froglok_knockdown_attack46477 60085–60114 ———
18717kill_froglok_knockedtoback43347 60085–60114 ———
18730kill_froglok_knockedtoback_getup43370 60085–60114 ———
18731kill_froglok_knockedtoback_onbackidle43371 60085–60114 ———
18708kill_froglok_mining_digging43323 60085–60114 ———
18718kill_froglok_mining_success43348 60085–60114 ———
18645kill_froglok_monk_attack43086 60085–60114 ———
18646kill_froglok_monk_attack0143087 60085–60114 ———
18647kill_froglok_monk_attack0243088 60085–60114 ———
18648kill_froglok_monk_attack0343089 60085–60114 ———
21417kill_froglok_monk_attack_recoil46417 60085–60114 ———
21418kill_froglok_monk_attack_recoil0246418 60085–60114 ———
21419kill_froglok_monk_charge_up46419 60085–60114 ———
21420kill_froglok_monk_defensive_buff46420 60085–60114 ———
21421kill_froglok_monk_dodge_backhand46421 60085–60114 ———
21422kill_froglok_monk_dodge_down46422 60085–60114 ———
21423kill_froglok_monk_dodge_forehand46423 60085–60114 ———
21424kill_froglok_monk_dodge_thrust46424 60085–60114 ———
18642kill_froglok_monk_idle43073 60085–60114 ———
18649kill_froglok_monk_kick43090 60085–60114 ———
21425kill_froglok_monk_kick_flying46425 60085–60114 ———
18650kill_froglok_monk_kick_spin43091 60085–60114 ———
18732kill_froglok_monk_knockedtoback43372 60085–60114 ———
18733kill_froglok_monk_knockedtoback_getup43373 60085–60114 ———
21426kill_froglok_monk_offensive_buff46426 60085–60114 ———
21427kill_froglok_monk_ouch_down46427 60085–60114 ———
21428kill_froglok_monk_ouch_thrust46428 60085–60114 ———
21429kill_froglok_monk_parry_backhand46429 60085–60114 ———
21430kill_froglok_monk_parry_down46430 60085–60114 ———
21431kill_froglok_monk_parry_forehand46431 60085–60114 ———
21432kill_froglok_monk_parry_thrust46432 60085–60114 ———
21433kill_froglok_monk_super_buff46433 60085–60114 ———
21434kill_froglok_monk_taunt_combat_art46434 60085–60114 ———
18652kill_froglok_monk_whirling_attack43124 60085–60114 ———
18651kill_froglok_monk_wild_swing43092 60085–60114 ———
21469kill_froglok_offensive_buff46479 60085–60114 ———
18653kill_froglok_pike_attack43125 60085–60114 ———
18654kill_froglok_pike_attack0143126 60085–60114 ———
18655kill_froglok_pike_attack0243127 60085–60114 ———
21435kill_froglok_pike_attack_recoil46435 60085–60114 ———
21436kill_froglok_pike_attack_recoil0146436 60085–60114 ———
21437kill_froglok_pike_attack_recoil0246437 60085–60114 ———
21470kill_froglok_pike_backup46480 60085–60114 ———
21438kill_froglok_pike_charge_up46438 60085–60114 ———
21439kill_froglok_pike_dodge_backhand46439 60085–60114 ———
21440kill_froglok_pike_dodge_down46440 60085–60114 ———
21441kill_froglok_pike_dodge_forehand46441 60085–60114 ———
21442kill_froglok_pike_dodge_thrust46442 60085–60114 ———
18656kill_froglok_pike_idle43128 60085–60114 ———
18657kill_froglok_pike_kick43129 60085–60114 ———
21471kill_froglok_pike_knockdowntoknees46481 60085–60114 ———
18734kill_froglok_pike_knockedtoback43374 60085–60114 ———
18735kill_froglok_pike_knockedtoback_getup43375 60085–60114 ———
21443kill_froglok_pike_offensive_buff46443 60085–60114 ———
21444kill_froglok_pike_ouch_backhand46444 60085–60114 ———
21445kill_froglok_pike_ouch_down46445 60085–60114 ———
21446kill_froglok_pike_ouch_forehand46446 60085–60114 ———
21447kill_froglok_pike_ouch_thrust46447 60085–60114 ———
21448kill_froglok_pike_parry_backhand46448 60085–60114 ———
21449kill_froglok_pike_parry_down46449 60085–60114 ———
21450kill_froglok_pike_parry_forehand46450 60085–60114 ———
21451kill_froglok_pike_parry_thrust46451 60085–60114 ———
21472kill_froglok_pike_walk46482 60085–60114 ———
18658kill_froglok_pike_whirling_attack43130 60085–60114 ———
18659kill_froglok_pike_wild_swing43131 60085–60114 ———
18660kill_froglok_pugilist_attack43132 60085–60114 ———
21473kill_froglok_pugilist_attack0146483 60085–60114 ———
18661kill_froglok_pugilist_attack0243133 60085–60114 ———
18662kill_froglok_pugilist_attack0343134 60085–60114 ———
21474kill_froglok_pugilist_attack_recoil0146484 60085–60114 ———
21452kill_froglok_pugilist_attack_recoil0246452 60085–60114 ———
21453kill_froglok_pugilist_defensive_buff46453 60085–60114 ———
21454kill_froglok_pugilist_dodge_backhand46454 60085–60114 ———
21455kill_froglok_pugilist_dodge_down46455 60085–60114 ———
21456kill_froglok_pugilist_dodge_forehand46456 60085–60114 ———
21457kill_froglok_pugilist_dodge_thrust46457 60085–60114 ———
18663kill_froglok_pugilist_idle43135 60085–60114 ———
18664kill_froglok_pugilist_kick43136 60085–60114 ———
21475kill_froglok_pugilist_knockdowntoknees46485 60085–60114 ———
18736kill_froglok_pugilist_knockedtoback43376 60085–60114 ———
18737kill_froglok_pugilist_knockedtoback_getup43377 60085–60114 ———
21458kill_froglok_pugilist_offensive_buff46458 60085–60114 ———
21459kill_froglok_pugilist_ouch_backhand46459 60085–60114 ———
21460kill_froglok_pugilist_ouch_down46460 60085–60114 ———
21461kill_froglok_pugilist_ouch_forehand46461 60085–60114 ———
21462kill_froglok_pugilist_super_buff46462 60085–60114 ———
18665kill_froglok_pugilist_whirling_attack43137 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.