How do I clean my code?

How do I clean my code?

local SkillTree = workspace.SkillTree

local Players = game.Players

Players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:Connect(function(character)
		for _,skills in pairs(SkillTree:WaitForChild("Skills"):GetChildren()) do
			for __,stars in pairs(game.ReplicatedStorage.Stars:GetChildren()) do
				skills.ClickDetector.MouseClick:Connect(function()
					if skills.Name == "VitalityI" then
						if skills.HasUnlocked.Value == false then
							local starClone = stars:Clone()
							starClone.Parent = skills
							skills.Line.BrickColor = skills.BrickColor
							skills.Line.Transparency = 0
							character.Humanoid.MaxHealth *= 1.3
							character.Humanoid.Health = character.Humanoid.MaxHealth
							skills.HasUnlocked.Value = true
							task.wait(1)
							starClone:Destroy()
						end
					end
					if SkillTree.Skills.VitalityI.HasUnlocked.Value == true then
						if skills.Name == "SpeedI"  then
							if skills.HasUnlocked.Value == false then
								local starClone = stars:Clone()
								starClone.Parent = skills
								skills.Line.BrickColor = skills.BrickColor
								skills.Line.Transparency = 0
								character.Humanoid.WalkSpeed *= 1.3
								skills.HasUnlocked.Value = true
								task.wait(1)
								starClone:Destroy()
							end
						elseif skills.Name == "VitalityII" then
							if skills.HasUnlocked.Value == false then
								local starClone = stars:Clone()
								starClone.Parent = skills
								skills.Line.BrickColor = skills.BrickColor
								skills.Line.Transparency = 0
								character.Humanoid.MaxHealth *= 1.3
								character.Humanoid.Health = character.Humanoid.MaxHealth
								skills.HasUnlocked.Value = true
								task.wait(1)
								starClone:Destroy()
							end
						end
					end
					if SkillTree.Skills.VitalityII.HasUnlocked.Value == true then
						if skills.Name == "VitalityIII"  then
							if skills.HasUnlocked.Value == false then
								local starClone = stars:Clone()
								starClone.Parent = skills
								skills.Line.BrickColor = skills.BrickColor
								skills.Line.Transparency = 0
								skills.HasUnlocked.Value = true
								task.wait(1)
								starClone:Destroy()
							end
						end
					end
					if SkillTree.Skills.VitalityIII.HasUnlocked.Value == true then
						if skills.Name == "VitalityIV"  then
							if skills.HasUnlocked.Value == false then
								local starClone = stars:Clone()
								starClone.Parent = skills
								skills.Line.BrickColor = skills.BrickColor
								skills.Line.Transparency = 0
								skills.HasUnlocked.Value = true
								task.wait(1)
								starClone:Destroy()
							end
						end
					end
				end)
			end
		end
	end)
end)

Try to split up your logic with functions.

4 Likes