How is Humanoid:PlayEmote() supposed to work?

Wanted to check if anyone knew what was up before filing a bug report. I’ve been trying to get a custom emote system working, and it just refuses to work. I have the following LocalScript in StarterCharacterScripts

local Character = script.Parent
local Humanoid = Character:WaitForChild("Humanoid")
local HumanoidDescription = Humanoid:WaitForChild("HumanoidDescription")


HumanoidDescription:AddEmote("Test", EMOTE_ID)



while true do

The HumanoidDescription has the emotes loaded, including the test emote, but Humanoid:PlayEmote() only returns false (emote fails to play). :PlayEmote() works with all Roblox emotes - I own the salute emote and :PlayEmote("Salute") works fine

Is there something I’m doing wrong? Maybe the animation itself is incorrect? If I set the test emote animation ID to that of an existing emote this code works fine, for example.

Does this work in testing? In studio?

Also, delete your dev discussion post, making another wont fix it

Any erorrs?

No errors - simply returns false in both testing and studio.

You have to apply the HumanoidDescription to the Humanoid first. (After adding the Emote)


Doesn’t seem to change anything - I apply HumanoidDescription to Humanoid in a ServerScript, and on client :PlayEmote() still only ever returns false.

At this point I’m pretty sure Roblox just has like a list of emote animation IDs somewhere that the function checks before playing the emote - not sure if this is intended behavior or not.

Did u add the emotes from the server side and then applied? If yes…

What if you try to set them by using:


Max 8 Emotes, have to ApplyDescription.