Why cant i destroy or change the face of a character?

so i want the players face to go transparent once it has found the decal. The code finds the decal fine but my problem is destroying the decal itself.

local FindHead = character.Head:FindFirstChildWhichIsA("Decal")
	
if FindHead then
	print("decal found")
	FindHead:Destroy()
	print("face should have been destroyed")
else
	print("no decal found")
end

i also tried to just replace it with a transparent image but that didnt work either.

my output always prints that it should have been destroyed but when i check the decal is still there

When does this code run? If it executes at the exact time that the character is being spawned into the world, it will prevent the parent change. If it is running from a .CharacterAdded event connection, adding this code before running your check should work:

character.AncestryChanged:Wait()
game:GetService("RunService").Stepped:Wait()

This will delay the code until the character is part of the workspace, and then wait one more clock cycle so that the :Destroy() will stick.