Pet System Changed Event Not Working?

So I am making a Pet System and I am using the changed function to check if the string containing the pets name is updating so I can change the pet. This is not working and I need help. here’s my code.

local function equipPet(player, pet)
	local character = player.Character

	if pet ~= nil and character ~= nil then

		if character:FindFirstChild(player.Name.."'s Pet") then character[player.Name.."'s Pet"]:Destroy() end

		if character.HumanoidRootPart:FindFirstChild("attachmentCharacter") then
			if character.HumanoidRootPart:FindFirstChild("attachmentCharacter"):Destroy() then
			end

			pet.Name = player.Name.."'s Pet"

			pet:SetPrimaryPartCFrame(character.HumanoidRootPart.CFrame)

			local modelSize = pet.PrimaryPart.Size

			local attachmentCharacter = Instance.new ("Attachment")
			attachmentCharacter.Visible = false
			attachmentCharacter.Name = "attachmentCharacter"
			attachmentCharacter.Parent = character.HumanoidRootPart
			attachmentCharacter.Position = Vector3.new(1,1,0) + modelSize

			local attachmentPet = Instance.new("Attachment")
			attachmentPet.Visible = false
			attachmentPet.Parent = pet.PrimaryPart

			local alignPosition = Instance.new("AlignPosition")
			alignPosition.MaxForce = 25000
			alignPosition.Attachment0 = attachmentPet
			alignPosition.Attachment1 = attachmentCharacter
			alignPosition.Responsiveness = 25
			alignPosition.Parent = pet

			local alignOrientation = Instance.new("AlignOrientation")
			alignOrientation.MaxTorque = 25000
			alignOrientation.Attachment0 = attachmentPet
			alignOrientation.Attachment1 = attachmentCharacter
			alignOrientation.Responsiveness = 25
			alignOrientation.Parent = pet

			pet.Parent = character

		end

	end
end
	
	

game.Players.PlayerAdded:Connect(function(player)
	
	local inventory = Instance.new("Folder")
	inventory.Name = "PetInventory"
	inventory.Parent = player
	
	local equippedPet = Instance.new("StringValue")
	equippedPet.Name = "EquippedPet"
	equippedPet.Parent = player
	
	player.CharacterAdded:Connect(function(char)
		if game.ReplicatedStorage:WaitForChild("Pets"):FindFirstChild(equippedPet.Value) then
			equipPet(player, game.ReplicatedStorage:WaitForChild("Pets"):FindFirstChild(equippedPet.Value):Clone())
		end
	end)
	
	equippedPet.Changed:Connect(function()
		if equippedPet.Value ~= nil then
			if game.ReplicatedStorage:WaitForChild("Pets"):FindFirstChild(equippedPet.Value) then
				equipPet(player, game.ReplicatedStorage:WaitForChild("Pets"):FindFirstChild(equippedPet.Value):Clone())
			end
		end
	end)
	
end)

Pls help!

String values will never have a value equal to nil. Instead, when there is no string present, they have a value of "". This is basically a string with no characters inside.

So instead of it being

if equippedPet.Value ~= nil then

end

it would be

if equippedPet.Value ~= "" then

end

Thank you but that didnt change it