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
16041aa_time_warp26953 60085–60114 ———
16579aa_toxic_mist29138 60085–60114 ———
16710aa_unyielding_will29541 60085–60114 ———
16284aa_water_summon27947 60085–60114 ———
16574aa_wave_splash29117 60085–60114 ———
16575aa_whirlwind_teleport29118 60085–60114 ———
16679aa_wind_blast29428 60085–60114 ———
17083acid_blast_fx31021 60085–60114 ———
13326activate20519 60085–60114 ———
14146admire22364 60085–60114 ———
29404aerakyn_flyer_backup94344 60085–60114 ———
29405aerakyn_flyer_combat_idle94345 60085–60114 ———
29406aerakyn_flyer_fall94346 60085–60114 ———
29407aerakyn_flyer_fly_backup94347 60085–60114 ———
29408aerakyn_flyer_fly_climb94348 60085–60114 ———
29409aerakyn_flyer_fly_dive94349 60085–60114 ———
29410aerakyn_flyer_fly_fall94350 60085–60114 ———
29411aerakyn_flyer_fly_fly_down94351 60085–60114 ———
29412aerakyn_flyer_fly_glide94352 60085–60114 ———
29413aerakyn_flyer_fly_glide_left94353 60085–60114 ———
29414aerakyn_flyer_fly_glide_right94354 60085–60114 ———
29415aerakyn_flyer_fly_idle94355 60085–60114 ———
29416aerakyn_flyer_fly_jump94356 60085–60114 ———
29417aerakyn_flyer_fly_land94357 60085–60114 ———
29418aerakyn_flyer_fly_long_fall94358 60085–60114 ———
29419aerakyn_flyer_fly_run94359 60085–60114 ———
29420aerakyn_flyer_fly_strafe_left94360 60085–60114 ———
29421aerakyn_flyer_fly_strafe_right94361 60085–60114 ———
29422aerakyn_flyer_fly_turn_left94362 60085–60114 ———
29423aerakyn_flyer_fly_turn_right94363 60085–60114 ———
29424aerakyn_flyer_fly_up94364 60085–60114 ———
29425aerakyn_flyer_fly_walk94365 60085–60114 ———
29426aerakyn_flyer_idle94366 60085–60114 ———
29490aerakyn_flyer_idle0194631 60085–60114 ———
29427aerakyn_flyer_jump94367 60085–60114 ———
29428aerakyn_flyer_land94368 60085–60114 ———
29429aerakyn_flyer_long_fall94369 60085–60114 ———
29430aerakyn_flyer_run94370 60085–60114 ———
29431aerakyn_flyer_strafe_left94371 60085–60114 ———
29432aerakyn_flyer_strafe_left_run94372 60085–60114 ———
29433aerakyn_flyer_strafe_right94373 60085–60114 ———
29434aerakyn_flyer_strafe_right_run94374 60085–60114 ———
29435aerakyn_flyer_turn_left94375 60085–60114 ———
29436aerakyn_flyer_turn_right94376 60085–60114 ———
29437aerakyn_flyer_walk94377 60085–60114 ———
29438aerakyn_glider_backup94378 60085–60114 ———
29439aerakyn_glider_fall94379 60085–60114 ———
29440aerakyn_glider_fly_backup94380 60085–60114 ———
29441aerakyn_glider_fly_idle94381 60085–60114 ———
29442aerakyn_glider_fly_run94382 60085–60114 ———
29443aerakyn_glider_fly_strafe_left94383 60085–60114 ———
29444aerakyn_glider_fly_strafe_right94384 60085–60114 ———
29445aerakyn_glider_fly_turn_left94385 60085–60114 ———
29446aerakyn_glider_fly_turn_right94386 60085–60114 ———
29447aerakyn_glider_fly_walk94387 60085–60114 ———
29448aerakyn_glider_glide94388 60085–60114 ———
29449aerakyn_glider_glide_left94389 60085–60114 ———
29450aerakyn_glider_glide_right94390 60085–60114 ———
29451aerakyn_glider_idle94391 60085–60114 ———
29452aerakyn_glider_idle0194392 60085–60114 ———
29453aerakyn_glider_jump94393 60085–60114 ———
29454aerakyn_glider_jump_substitute94394 60085–60114 ———
29455aerakyn_glider_land94395 60085–60114 ———
29456aerakyn_glider_long_fall94396 60085–60114 ———
29457aerakyn_glider_run94397 60085–60114 ———
29664aerakyn_glider_strafe_left97798 60085–60114 ———
29665aerakyn_glider_strafe_left_run97799 60085–60114 ———
29666aerakyn_glider_strafe_right97800 60085–60114 ———
29667aerakyn_glider_strafe_right_run97801 60085–60114 ———
29458aerakyn_glider_turn_left94398 60085–60114 ———
29459aerakyn_glider_turn_right94399 60085–60114 ———
29460aerakyn_glider_walk94400 60085–60114 ———
29680aerakyn_ground_backup98437 60085–60114 ———
29681aerakyn_ground_fall98438 60085–60114 ———
29682aerakyn_ground_fly_backup98439 60085–60114 ———
29683aerakyn_ground_fly_idle98440 60085–60114 ———
29684aerakyn_ground_fly_run98441 60085–60114 ———
29685aerakyn_ground_fly_strafe_left98442 60085–60114 ———
29686aerakyn_ground_fly_strafe_right98443 60085–60114 ———
29687aerakyn_ground_fly_turn_left98444 60085–60114 ———
29688aerakyn_ground_fly_turn_right98445 60085–60114 ———
29689aerakyn_ground_fly_walk98446 60085–60114 ———
29690aerakyn_ground_idle98447 60085–60114 ———
29691aerakyn_ground_idle0198448 60085–60114 ———
29692aerakyn_ground_jump98449 60085–60114 ———
29693aerakyn_ground_land98450 60085–60114 ———
29694aerakyn_ground_long_fall98451 60085–60114 ———
29695aerakyn_ground_run98452 60085–60114 ———
29696aerakyn_ground_strafe_left98453 60085–60114 ———
29697aerakyn_ground_strafe_left_run98454 60085–60114 ———
29698aerakyn_ground_strafe_right98455 60085–60114 ———
29699aerakyn_ground_strafe_right_run98456 60085–60114 ———
29700aerakyn_ground_turn_left98457 60085–60114 ———
29701aerakyn_ground_turn_right98458 60085–60114 ———
29702aerakyn_ground_walk98459 60085–60114 ———
29461aerakyn_leaper_backup94401 60085–60114 ———
29462aerakyn_leaper_fall94402 60085–60114 ———
29463aerakyn_leaper_fly_backup94403 60085–60114 ———
29464aerakyn_leaper_fly_climb94404 60085–60114 ———
29465aerakyn_leaper_fly_dive94405 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.