HumanoidDescriptions incorrectly apply the default face after changing the head from a head which does not contain a face decal instance (such as the Headless Horror’s Head).
Correct behaviour with Head ‘6340101’ (contains a face decal):
Broken behaviour with Head ‘134082579’ (does not contain a face decal)
Reproduction:
local FACE_ID = "616381207"
local HEAD_ID = "134082579" -- Headless Horseman, also breaks for other faceless Heads such as '2499611582'
local player = game:GetService("Players").ForeverHD
local humanoid = player.Character.Humanoid
local description = humanoid:GetAppliedDescription()
description.Face = "616381207"
description.Head = "134082579"
humanoid:ApplyDescription(description)
wait(3)
local description = humanoid:GetAppliedDescription()
description.Face = "616381207"
description.Head = ""
humanoid:ApplyDescription(description)
This bug occurs for all heads without a face decal instance and happens 100% of the time.
The only way to fix this broken behaviour is by changing the face to a different one, applying the humanoid description, then changing back to the original face, then applying the humanoid description again:
if facelessHeadPresentOnRemoval then
local originalFace = self.humanoidDescription.Face
self.humanoidDescription.Face = 0
pcall(function() humanoid:ApplyDescription(self.humanoidDescription) end)
self.humanoidDescription.Face = originalFace
pcall(function() humanoid:ApplyDescription(self.humanoidDescription) end)
end
This means the HumanoidDescription has to be applied three times in a row in order to work correctly, in addition to all the other hacky behaviour required to get it to work. This is frustrating, hacky and requires some seriously ugly code to fix. A fix would be greatly appreciated.