Skip to main content

Emote Items

Version History

Build VersionChange DateChange TypeDescription
6760422025-06-21stableCurrent 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 emotes
  • 24: Loyalty program emotes
  • 32: Lava Arena themed emotes
  • 36: Ice/winter themed emotes
  • 167: 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:

  1. Export script processes account item database
  2. Emote items are filtered and formatted
  3. Command names and aliases are assigned
  4. Animation and audio data is included
  5. Release group and rarity information is added

Maintenance

When new emote items are added:

  1. Export script automatically updates this file
  2. New emotes receive appropriate metadata
  3. Command integration is handled automatically
  4. 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