Emote Items
Version History
| Build Version | Change Date | Change Type | Description |
|---|---|---|---|
| 676042 | 2025-06-21 | stable | Current version |
Overview
The emote_items module contains definitions for purchasable and unlockable emotes in Don't Starve Together. This autogenerated module defines the EMOTE_ITEMS table, which contains premium emotes that players can acquire through various means such as the Woven system, rewards, or special events. These emotes extend the basic emote system with enhanced animations and special effects.
Usage Example
-- Access emote item data
local flexEmote = EMOTE_ITEMS.emote_flex
print(flexEmote.cmd_name) -- "flex"
print(flexEmote.rarity) -- "Distinguished"
-- Check emote requirements
if flexEmote.data.requires_validation then
-- This emote requires ownership validation
end
-- Access animation data
local carolEmote = EMOTE_ITEMS.emote_carol
if carolEmote.data.loop then
-- This is a looping emote
end
EMOTE_ITEMS Table
Structure
Description: Global table containing all purchasable and unlockable emote definitions. Each emote is indexed by its unique identifier and contains comprehensive metadata including rarity, commands, and execution data.
Table Format:
EMOTE_ITEMS = {
[emote_id] = {
rarity = string, -- Rarity classification
rarity_modifier = string, -- Acquisition method (optional)
cmd_name = string, -- Chat command name
type = string, -- Item type ("emote")
skin_tags = table, -- Theme/category tags
data = { -- Emote execution data
item_type = string, -- Internal identifier
requires_validation = boolean, -- Ownership check required
anim = string/table, -- Animation(s)
loop = boolean, -- Loop animation
mounted = boolean, -- Usable while mounted
sitting = boolean, -- Usable while sitting
-- ... additional properties
},
aliases = table, -- Alternative command names (optional)
release_group = number, -- Content release identifier
}
}
Emote Item Properties
rarity
Type: string
Description: Rarity classification determining the emote's exclusivity and acquisition difficulty.
Values:
"Reward": Special reward emotes from events or achievements"Distinguished": High-tier purchasable emotes"Loyal": Loyalty program emotes
Example:
local rarity = EMOTE_ITEMS.emote_flex.rarity -- "Distinguished"
-- Filter by rarity
function GetEmotesByRarity(targetRarity)
local filtered = {}
for emoteId, emoteData in pairs(EMOTE_ITEMS) do
if emoteData.rarity == targetRarity then
filtered[emoteId] = emoteData
end
end
return filtered
end
rarity_modifier
Type: string (optional)
Description: Additional modifier specifying the acquisition method or source.
Values:
"Woven": Acquired through the Woven system
Example:
local modifier = EMOTE_ITEMS.emote_flex.rarity_modifier -- "Woven"
if modifier == "Woven" then
-- This emote is from the Woven system
end
cmd_name
Type: string
Description: The command name players use to trigger this emote in chat (without the / prefix).
Example:
local cmdName = EMOTE_ITEMS.emote_flex.cmd_name -- "flex"
-- Players use /flex to trigger this emote
type
Type: string
Description: Item type classification, always "emote" for emote items.
Value:
"emote": Identifies this as an emote item
skin_tags
Type: table
Description: Array of tags categorizing the emote's theme, release group, or special properties.
Common Tags:
"EMOTE": Base emote tag"LAVA": Lava Arena themed emotes"ICE": Ice/winter themed emotes"WESTERN": Western themed emotes
Example:
local tags = EMOTE_ITEMS.emote_flex.skin_tags -- { "LAVA", "EMOTE" }
-- Check theme
function HasTheme(emote, theme)
for _, tag in ipairs(emote.skin_tags) do
if tag == theme then
return true
end
end
return false
end
if HasTheme(EMOTE_ITEMS.emote_carol, "ICE") then
-- This is an ice-themed emote
end
data
Type: table
Description: Core execution data containing animation, audio, and behavior specifications.
data.item_type
Type: string
Description: Internal identifier matching the emote's table key, used for ownership validation.
data.requires_validation
Type: boolean
Description: Whether ownership validation is required before the emote can be used (typically true for all purchasable emotes).
data.anim
Type: string | table
Description: Animation name(s) to play for the emote. Can be single animation or array for pre/loop pairs.
Examples:
-- Single animation
data.anim = "emote_flex"
-- Pre/loop animation pair
data.anim = { "emote_pre_carol", "emote_loop_carol" }
data.loop
Type: boolean
Description: Whether the animation should loop continuously until stopped.
data.mounted, data.sitting
Type: boolean
Description: Whether the emote can be used while mounted or sitting respectively.
aliases
Type: table (optional)
Description: Alternative command names that can trigger this emote.
Example:
local sleepyAliases = EMOTE_ITEMS.emote_sleepy.aliases -- { "eyerub" }
-- Players can use /sleepy or /eyerub
release_group
Type: number
Description: Numeric identifier for the content release when this emote was added.
Common Release Groups:
20: Early reward emotes24: Loyalty program emotes32: Lava Arena themed emotes36: Ice/winter themed emotes167: Western themed emotes
Available Emote Items
Dance Emotes
emote_dance_chicken
Status: stable
Command: /chicken
Rarity: Distinguished (Woven)
Theme: LAVA
Description: Chicken-style dance emote with looping animation.
Properties:
- Animations:
emoteXL_pre_dance6,emoteXL_loop_dance6 - Loop: Yes
- Usage: Available while mounted
- Tags:
dancing
emote_dance_robot
Status: stable
Command: /robot
Rarity: Distinguished (Woven)
Theme: LAVA
Description: Robot-style dance emote with mechanical movements.
Properties:
- Animations:
emoteXL_pre_dance8,emoteXL_loop_dance8 - Loop: Yes
- Usage: Available while mounted
- Tags:
dancing
emote_dance_step
Status: stable
Command: /step
Rarity: Distinguished (Woven)
Theme: LAVA
Description: Step-dance emote with rhythmic movements.
Properties:
- Animations:
emoteXL_pre_dance7,emoteXL_loop_dance7 - Loop: Yes
- Usage: Available while mounted
- Tags:
dancing
Expression Emotes
emote_flex
Status: stable
Command: /flex
Rarity: Distinguished (Woven)
Theme: LAVA
Description: Muscle flexing emote showing strength and confidence.
Properties:
- Animation:
emote_flex - Usage: Available while mounted and sitting
emote_laugh
Status: stable
Command: /laugh
Rarity: Distinguished (Woven)
Theme: LAVA
Description: Laughing emote expressing amusement and joy.
Properties:
- Animation:
emote_laugh - Usage: Available while mounted and sitting
emote_shrug
Status: stable
Command: /shrug
Rarity: Distinguished (Woven)
Theme: LAVA
Description: Shoulder shrugging emote expressing uncertainty or indifference.
Properties:
- Animation:
emote_shrug - Usage: Available while mounted
Action Emotes
emote_slowclap
Status: stable
Command: /slowclap
Rarity: Distinguished (Woven)
Theme: LAVA
Description: Slow clapping emote often used sarcastically.
Properties:
- Animation:
emote_slowclap - Usage: Available while mounted
emote_jumpcheer
Status: stable
Command: /cheer
Rarity: Distinguished (Woven)
Theme: LAVA
Description: Jumping cheer emote showing excitement and celebration.
Properties:
- Animation:
emote_jumpcheer - Usage: Available while mounted
emote_fistshake
Status: stable
Command: /fistshake
Rarity: Reward
Theme: LAVA
Description: Fist shaking emote expressing anger or determination.
Properties:
- Animation:
emote_fistshake - Usage: Available while mounted and sitting
Special Emotes
emote_carol
Status: stable
Command: /carol
Rarity: Reward
Theme: ICE
Description: Christmas caroling emote with musical elements and sound effects.
Properties:
- Animations:
emote_pre_carol,emote_loop_carol - Loop: Yes
- Usage: Available while mounted
- Audio: Looped caroling sounds with mount interaction
- Tags:
nodangle
Audio Details:
- Sound Override: "carol"
- Sound Looped: Yes
- Mount Sounds: "sleep" and "grunt" with timed intervals
emote_sleepy
Status: stable
Command: /sleepy or /eyerub
Rarity: Reward
Description: Eye rubbing/sleepy emote with voice-over.
Properties:
- Animation:
emote_sleepy - Usage: Available while mounted and sitting
- Sound Override: "eye_rub_vo"
- Aliases:
eyerub
emote_yawn
Status: stable
Command: /yawn
Rarity: Reward
Description: Yawning emote with authentic yawn sound effect.
Properties:
- Animation:
emote_yawn - Usage: Available while mounted
- Sound Override: "yawn"
- Mount Sound: "yell"
emote_tiphat
Status: stable
Command: /tiphat
Rarity: Reward
Theme: WESTERN
Description: Hat tipping emote requiring the player to wear a hat.
Properties:
- Animation:
emote_hat_tip - Usage: Available while mounted
- Requirements: Player must wear a hat
- Special:
needshat = true
Premium Loyalty Emotes
emote_swoon
Status: stable
Command: /swoon
Rarity: Loyal
Description: Swooning emote expressing being overwhelmed or charmed.
Properties:
- Animation:
emote_swoon - Usage: Available while mounted
- Mount Sound: "curious"
emote_impatient
Status: stable
Command: /impatient
Rarity: Distinguished (Woven)
Theme: LAVA
Description: Impatient gesture showing frustration with waiting.
Properties:
- Animation:
emote_impatient - Usage: Available while mounted
Audio Properties
Sound System
Many emote items include sophisticated audio systems:
soundoverride
Type: string
Description: Replaces default emote sound with specific audio clip.
Examples:
"carol": Christmas caroling audio"yawn": Authentic yawn sound"eye_rub_vo": Voice-over for eye rubbing
soundlooped
Type: boolean
Description: Whether the sound should loop continuously during the emote.
sounddelay
Type: number
Description: Delay in seconds before playing the sound effect.
mountsound, mountsound2
Type: string
Description: Sounds for the mounted creature to make during the emote. Some emotes support multiple mount sounds.
mountsounddelay, mountsoundperiod
Type: number
Description: Timing controls for mount sounds - delay before starting and period for repetition.
Special Requirements
Hat Requirement
Some emotes require specific equipment:
-- Check if emote requires hat
if emoteData.data.needshat then
local player = GetPlayer()
local hat = player.replica.inventory:GetEquippedItem(EQUIPSLOTS.HEAD)
if not hat then
-- Cannot use this emote without a hat
return false
end
end
Ownership Validation
All emote items require ownership validation:
function CanUseEmoteItem(player, emoteId)
local emoteData = EMOTE_ITEMS[emoteId]
if not emoteData then return false end
if emoteData.data.requires_validation then
-- Check if player owns this emote
local userId = player.userid or TheNet:GetUserID()
return TheInventory:CheckOwnership(emoteData.data.item_type)
end
return true
end
Common Usage Patterns
Emote Filtering and Organization
-- Get emotes by rarity
function GetEmotesByRarity(rarity)
local filtered = {}
for emoteId, emoteData in pairs(EMOTE_ITEMS) do
if emoteData.rarity == rarity then
filtered[emoteId] = emoteData
end
end
return filtered
end
-- Get emotes by theme
function GetEmotesByTheme(theme)
local themed = {}
for emoteId, emoteData in pairs(EMOTE_ITEMS) do
for _, tag in ipairs(emoteData.skin_tags) do
if tag == theme then
themed[emoteId] = emoteData
break
end
end
end
return themed
end
-- Get dancing emotes
function GetDanceEmotes()
local danceEmotes = {}
for emoteId, emoteData in pairs(EMOTE_ITEMS) do
if emoteData.data.tags then
for _, tag in ipairs(emoteData.data.tags) do
if tag == "dancing" then
danceEmotes[emoteId] = emoteData
break
end
end
end
end
return danceEmotes
end
Command Processing
-- Find emote by command name
function FindEmoteByCommand(cmdName)
for emoteId, emoteData in pairs(EMOTE_ITEMS) do
if emoteData.cmd_name == cmdName then
return emoteId, emoteData
end
-- Check aliases
if emoteData.aliases then
for _, alias in ipairs(emoteData.aliases) do
if alias == cmdName then
return emoteId, emoteData
end
end
end
end
return nil
end
UI Integration
-- Build emote selection menu
function BuildEmoteMenu(player)
local ownedEmotes = {}
for emoteId, emoteData in pairs(EMOTE_ITEMS) do
if CanUseEmoteItem(player, emoteId) then
table.insert(ownedEmotes, {
id = emoteId,
name = emoteData.cmd_name,
rarity = emoteData.rarity,
theme = emoteData.skin_tags[1] -- Primary theme
})
end
end
-- Sort by rarity and theme
table.sort(ownedEmotes, function(a, b)
if a.rarity ~= b.rarity then
return a.rarity < b.rarity
end
return a.name < b.name
end)
return ownedEmotes
end
Data Source Information
Autogeneration
This module is automatically generated by export_accountitems.lua and should not be manually edited. Changes to emote definitions should be made through the account item export system.
Generation Process:
- Export script processes account item database
- Emote items are filtered and formatted
- Command names and aliases are assigned
- Animation and audio data is included
- Release group and rarity information is added
Maintenance
When new emote items are added:
- Export script automatically updates this file
- New emotes receive appropriate metadata
- Command integration is handled automatically
- No manual code changes required
Performance Considerations
Loading and Memory
- Complete emote items table loaded at module import
- Animation assets loaded on-demand when emotes are used
- Audio assets cached for frequently used emotes
- Ownership validation cached to reduce server queries
Validation Overhead
- Ownership checks require server communication
- Results may be cached temporarily
- Special requirements (like hats) checked locally
- Consider batching validation requests for UI
Related Modules
- Emotes: Core emote system and basic emotes
- Built-in User Commands: Command system integration
- Account Items: Player inventory and ownership system
- Player Profile: Player preferences and customization
- Skin Assets: Visual customization system