Need HELP with my Character Customization

Ive made a character customization where u can switch between numbers like 1-4 and so on which change ur Hair,Skin,Shirt,Pants all the others have no problem switching but the “Skin” just wont switch from 0. I also get no errors in output or anything VIDEO: https://gyazo.com/135db796489c105de4e5e3304f64b56b

Script:

local IS = game:GetService("InsertService")
local CharacterEvent = game.ReplicatedStorage:WaitForChild("CharacterEvent")
local AccessoryFolder = game.ServerStorage:WaitForChild("AccessoryFolder")
local AccessoryDatastore = game:GetService("DataStoreService"):GetDataStore("AccessoryDatastore")

game.Players.PlayerAdded:Connect(function(plr)
	local AccessorySaves = Instance.new("Folder", plr)
	AccessorySaves.Name = "AccessorySaves"
	local Shirt = Instance.new("NumberValue", AccessorySaves)
	Shirt.Name = "Shirt"
	Shirt.Value = 0
	local Pants = Instance.new("NumberValue", AccessorySaves)
	Pants.Name = "Pants"
	Pants.Value = 0
	local Skin = Instance.new("NumberValue", AccessorySaves)
	Skin.Name = "Skin"
	Skin.Value = 0
	local Hair = Instance.new("NumberValue", AccessorySaves)
	Hair.Name = "Hair"
	Hair.Value = 0	
	
	local Key = plr.UserId
	local Data = AccessoryDatastore:GetAsync(Key)
	
	local success, errormessage = pcall(function()
		if Data then
			Shirt.Value = Data[1]
			Pants.Value = Data[2]
			Skin.Value = Data[3]
			Hair.Value = Data[4]
		end
	end)
	while not success do
		task.wait(3)
		
		if Data then
			Shirt.Value = Data[1]
			Pants.Value = Data[2]
			Skin.Value = Data[3]
			Hair.Value = Data[4]
		end
		
	end
end)

game.Players.PlayerRemoving:Connect(function(plr)
	local success, errormessage = pcall(function()
		local Key = plr.UserId
		local DataTable = {}
		
		
		for i,v in pairs(plr.AccessorySaves:GetChildren()) do
			table.insert(DataTable, v.Value)
			
		end
		AccessoryDatastore:SetAsync(Key, DataTable)
		
	end)
	while not success do
		task.wait(3)
		local Key = plr.UserId
		local DataTable = {}


		for i,v in pairs(plr.AccessorySaves:GetChildren()) do
			table.insert(DataTable, v.Value)

		end
		AccessoryDatastore:SetAsync(Key, DataTable)
	end
end)

CharacterEvent.OnServerEvent:Connect(function(plr, eventype, Arg1, Arg2, Arg3)
	local Character = plr.Character
	
	if eventype == "Customization" then
		local ChangeName = Arg1
		local ChangeType = Arg2
		local SelectedNumber = Arg3
		
		for i,v in pairs(AccessoryFolder:GetChildren()) do
			if v.Name == ChangeName then
				for i2,v2 in pairs(v:GetChildren()) do
					if ChangeType == "+" and v2.Name == tostring(SelectedNumber + 1) then
						if Character:FindFirstChild(ChangeName) and ChangeName ~= "Hair" then
							Character[ChangeName]:Destroy()
							local Asset = IS:LoadAsset(v2.Value)
							Asset[ChangeName].Parent = Character
							elseif ChangeName == "Skin" then
							if Character:FindFirstChild("BodyColors") then
								Character.BodyColors:Destroy()	
							end
							elseif ChangeName == "Hair" then
								for i,v in pairs(Character:GetChildren()) do
									if v:IsA("Accessory") and v.AccessoryType == Enum.AccessoryType.Hair then
										v:Destroy()
									end
									end
									local Hair = v2:Clone()
									Hair.Name = "Hair"
									Hair.Parent = Character
							end
						local BodyColors = v2:Clone()
						BodyColors.Name = "BodyColors"
						BodyColors.Parent = Character
						CharacterEvent:FireClient(plr, "Customization", "+", ChangeName)
						plr.AccessorySaves[ChangeName].Value = SelectedNumber + 1
						
					elseif ChangeType == "-" and v2.Name == tostring(SelectedNumber - 1) then
						if Character:FindFirstChild(ChangeName) and ChangeName ~= "Hair" then
							Character[ChangeName]:Destroy()
							local Asset = IS:LoadAsset(v2.Value)
							Asset[ChangeName].Parent = Character
							
						elseif  ChangeName == "Skin" then
							if Character:FindFirstChild("BodyColors") then
								Character.BodyColors:Destroy()
							end
							local BodyColors = v2:Clone()
							BodyColors.Name = "BodyColors"
							BodyColors.Parent = Character
						elseif ChangeName == "Hair" then
							for i,v in pairs(Character:GetChildren()) do
								if v:IsA("Accessory") and v.AccessoryType == Enum.AccessoryType.Hair then
									v:Destroy()
								end
							end
						end
				
							local Hair = v2:Clone()
							Hair.Name = "Hair"
							Hair.Parent = Character
						CharacterEvent:FireClient(plr, "Customization", "-", ChangeName)
						plr.AccessorySaves[ChangeName].Value = SelectedNumber - 1

					end
				end
			end
		end
	elseif eventype == "LoadSave" then
		for i,v in pairs(AccessoryFolder:GetChildren()) do
			for i2,v2 in pairs(plr.AccessorySaves:GetChildren()) do
				if v2.Name == v.Name then
					local SavedItem = v[v2.Value]

					if v2.Name == "Shirt" or v2.Name == "Pants" then
						Character[v2.Name]:Destroy()
						local Asset = IS:LoadAsset(SavedItem.Value)
						Asset[v2.Name].Parent = Character
					elseif v2.Name == "Skin" then
						if Character:FindFirstChild("BodyColors") then
							Character.BodyColors:Destroy()
						end
						local BodyColors = SavedItem:Clone()
						BodyColors.Parent = Character
					elseif v2.Name == "Hair" then
						for i3,v3 in pairs(Character:GetChildren()) do
							if v3:IsA("Accessory") and v3.AccessoryType == Enum.AccessoryType.Hair then
								v3:Destroy()
							end
						end
						local Hair = SavedItem:Clone()
						Hair.Name = "Hair"
						Hair.Parent = Character



				end
			end
		end
	end

	end
end)