Applying a decal as a face through a HumanoidDescription

Since Roblox put the following restriction on HumanoidDescriptions:

The type of the asset ID provided must be for a Face type asset and not a Decal or Image type asset.

Here is a function that will pass a decalID through a HumanoidDescription and set the newly-updated character’s Head.face.Texture to the decalID

local function applyDescription(humanoid, description) --I hate Roblox
	pcall(function()
		humanoid:ApplyDescription(description)
		humanoid.Parent:FindFirstChild("Head"):FindFirstChild("face").Texture = "rbxassetid://"..description.Face
	end)
end
2 Likes

I think you should move this to #resources:community-tutorials

Just realized they also don’t let you do custom shirts, etc, here is an updated script:

local function applyDescription(humanoid, description) --I hate Roblox
	pcall(function()
		humanoid:ApplyDescription(description)
		for i, v in pairs(humanoid.Parent:GetChildren()) do
			pcall(function()
				if v.Name == "Head" then
					v:FindFirstChild("face").Texture = "rbxassetid://"..description.Face
				end
				if v:IsA("Shirt") then
					v.ShirtTemplate = description.Shirt
				end
				if v:IsA("ShirtGraphic") then
					v.Graphic = description.ShirtGraphic
				end
				if v:IsA("Pants") then
					v.PantsTemplate = description.Pants
				end
			end)
		end
	end)
end
1 Like

Why do you use findfirstchild if you dont do safe checking anyways?
Just index face normally at this point.
Also man…Creating anonimous function and a pcall each iteration is just bonkers.
pairs/ipairs is not relevant in Luau since like 2023 i belive.