Npc appearance changer breaking script that changes C0 constraint?

Not sure why, but this one line here is breaking a script that is responsible for allowing an NPC to turn it’s head to nearby players and is giving no errors in the output:

script.Parent.Humanoid:ApplyDescription(game:GetService("Players"):GetHumanoidDescriptionFromUserId(userid))

the head move code:

local neck = script.Parent.Head.Neck
local NPC = script.Parent

function getClosestPlayer()
	local closest_player, closest_distance = nil, 1000
	for i, player in pairs(workspace:GetChildren()) do
		if player:FindFirstChild("Humanoid") and player ~= NPC then
			local distance = (NPC.PrimaryPart.Position - player.PrimaryPart.Position).Magnitude
			if distance < closest_distance then
				closest_player = player
				print(player.Name.." found")
				closest_distance = distance
			end
		end
	end
	return closest_player
end

local cframe0 = neck.C0
while true do
	local player = getClosestPlayer()
	if player then
		local is_in_front = NPC.PrimaryPart.CFrame:ToObjectSpace(player.PrimaryPart.CFrame).Z < 0
		if is_in_front then
			local unit = -(NPC.PrimaryPart.CFrame.p - player.PrimaryPart.Position).unit
			neck.C0 = cframe0 * CFrame.new(Vector3.new(0, 0, 0), unit) * CFrame.Angles(0, -math.rad(NPC.PrimaryPart.Orientation.Y), 0)
		end
	end
	wait()
end

Without the NPC actually changing it’s appearance to a certain roblox user (using the first line mentioned), the head turning works fine but otherwise will not work. Any help?