Decouple User Emotes from LoadCharacterAppearance

As a Roblox developer, it is currently too hard to allow players to use their own emotes while also overriding their character appearance. Emotes appear to be disabled if StarterPlayer.LoadCharacterAppearance is set to false. In my game I chose to override the default appearance of characters, but I had no intention of this disallowing players from using emotes.

Since there is already a UserEmotesEnabled toggle to disable the loading of emotes, it seems sensible to load emotes separately from the rest of the character appearance and decouple them from the LoadCharacterAppearance toggle.

If this issue is addressed, it would improve my development experience because I would be able to allow players to use their own emotes without writing additional code to override the rest of the character appearance.

(It’s also possible that this is a bug, but it seems more like a limitation of how LoadCharacterAppearance is implemented.)

8 Likes

I was looking into this just recently, I can’t find the particular thread but someone on staff (?) mentioned wanting to override the disabling of emotes with UserEmotesEnabled, but evidently it’s still linked.

I’d like this feature for the same reason that my game uses custom avatars and I would still like for players to be able to use emotes without having to use extraneous code to remove clothes and accessories.

2 Likes

I agree with this. Right now you have to use a hacky method.
Sadly, there’s an issue, because not all owned emotes load.

Hacky example… It shouldn’t override the character, but it could be handled better imo.

local players = game:GetService("Players")

local function PlayerJoined(player)
    local ID = player.UserId
    local og = players:GetHumanoidDescriptionFromUserId(ID)
    local ownedEmotes = og:GetEmotes()
    local equippedEmotes = og:GetEquippedEmotes()
    local function Update(character)
	    local desc = character:WaitForChild("Humanoid").HumanoidDescription
	    desc:SetEmotes(ownedEmotes)
	    desc:SetEquippedEmotes(equippedEmotes)
    end
    player.CharacterAdded:Connect(Update)
    if player.Character then Update(player.Character) end
end

players.PlayerAdded:Connect(PlayerJoined)