Developer Product Issue

Hello! I’m having an issue with a developer product thing! So basically if a player brought one of the pets then brought the other one it will give an extra one of the pets they previously brought! Here is my script! It is somehow duplicating or adding a new value!

 
MPS.ProcessReceipt = function(receiptInfo)
if receiptInfo.ProductId == 1163459505 then -- replace with your ID here
        local debounce = false
        if debounce == false then
            debounce = true
            local player = game.Players:GetPlayerByUserId(receiptInfo.PlayerId)
            local petVal = Instance.new("StringValue",player.PetInventory)
            petVal.Name = "Dark Unicorn"
 
            local level = Instance.new("IntValue", petVal)
            level.Name = "Level"
            level.Value = 1
 
            local exp = Instance.new("IntValue", level)
            exp.Name = "Current"
            exp.Value = 0
 
            local maxExp = Instance.new("IntValue", level)
            maxExp.Name = "Max"
            maxExp.Value = 200
 
            local rpname = Instance.new("StringValue",petVal)
            rpname.Name = "rpname"
            rpname.Value = "Dark Unicorn"
 
            exp.Changed:Connect(function(val)
                if exp.Value >= maxExp.Value then
                    -- Do stuff.
                    if level.Value < 6 then
                        level.Value = level.Value + 1
                        exp.Value = 0
                        maxExp.Value = maxExp.Value * 1.25
                    else
                        exp.Value = 0
                        level.Value = level.Value + 1
                        game.ReplicatedStorage.PetEvents.LevelUp:FireClient(player)
                    end 
 
                    workspace.PetStorage:FindFirstChild(player.Name.."'s Pet").Obj.Head.Levels.Exterior.Label.Text = "Level "..petVal.Level.Value
                    workspace.PetStorage:FindFirstChild(player.Name.."'s Pet").Obj.Head.Levels.Exterior.Bar.Size = UDim2.new(petVal.Level.Current.Value/value.Level.Max.Value, 0, 1, 0)
                end
            end)
 
            local BadgeService = game:GetService("BadgeService")
            local BadgeID = 2124750994
            BadgeService:AwardBadge(player.UserId, BadgeID)
 
            game.ReplicatedStorage.Pets.AddPet:FireClient(player,"Dark Unicorn",petVal)
            local Players = game:GetService("Players")
            local PetStorage = workspace.PetStorage
            local function RemovePetObj(Player)
                for _,i in pairs (PetStorage:GetChildren()) do
                    if i.Name == Player.Name .. "'s Pet" then
                        i:Destroy()
                    end
                end
            end
            require(script.Parent.Parent.Pets.PlayerJoined.RenderPetObj).RenderPetObj(Players:GetPlayerFromCharacter(player.Character), game.ReplicatedStorage.Pets["Dark Unicorn"])
            player.Character["Humanoid"].Died:Connect(function()
                RemovePetObj(player)
            end)
 
            Players.PlayerRemoving:Connect(function(Player)
                RemovePetObj(Player)
            end)
            return Enum.ProductPurchaseDecision.PurchaseGranted
        end
        debounce = false
    elseif receiptInfo.ProductId == 1182799326 then -- replace with your ID here
        local debounce = false
        if debounce == false then
            debounce = true
            local player = game.Players:GetPlayerByUserId(receiptInfo.PlayerId)
            local petVal = Instance.new("StringValue",player.PetInventory)
            petVal.Name = "Butterfly"
 
            local level = Instance.new("IntValue", petVal)
            level.Name = "Level"
            level.Value = 1
 
            local exp = Instance.new("IntValue", level)
            exp.Name = "Current"
            exp.Value = 0
 
            local maxExp = Instance.new("IntValue", level)
            maxExp.Name = "Max"
            maxExp.Value = 150
 
            local rpname = Instance.new("StringValue",petVal)
            rpname.Name = "rpname"
            rpname.Value = "Butterfly"
 
            exp.Changed:Connect(function(val)
                if exp.Value >= maxExp.Value then
                    -- Do stuff.
                    if level.Value < 6 then
                        level.Value = level.Value + 1
                        exp.Value = 0
                        maxExp.Value = maxExp.Value * 1.25
                    else
                        exp.Value = 0
                        level.Value = level.Value + 1
                        game.ReplicatedStorage.PetEvents.LevelUp:FireClient(player)
                    end 
 
                    workspace.PetStorage:FindFirstChild(player.Name.."'s Pet").Obj.Head.Levels.Exterior.Label.Text = "Level "..petVal.Level.Value
                    workspace.PetStorage:FindFirstChild(player.Name.."'s Pet").Obj.Head.Levels.Exterior.Bar.Size = UDim2.new(petVal.Level.Current.Value/value.Level.Max.Value, 0, 1, 0)
                end
            end)
 
            local BadgeService = game:GetService("BadgeService")
            local BadgeID = 2124750994
            BadgeService:AwardBadge(player.UserId, BadgeID)
 
            game.ReplicatedStorage.Pets.AddPet:FireClient(player,"Butterfly",petVal)
            local Players = game:GetService("Players")
            local PetStorage = workspace.PetStorage
            local function RemovePetObj(Player)
                for _,i in pairs (PetStorage:GetChildren()) do
                    if i.Name == Player.Name .. "'s Pet" then
                        i:Destroy()
                    end
                end
            end
            require(script.Parent.Parent.Pets.PlayerJoined.RenderPetObj).RenderPetObj(Players:GetPlayerFromCharacter(player.Character), game.ReplicatedStorage.Pets["Butterfly"])
            player.Character["Humanoid"].Died:Connect(function()
                RemovePetObj(player)
            end)
 
            Players.PlayerRemoving:Connect(function(Player)
                RemovePetObj(Player)
            end)
            return Enum.ProductPurchaseDecision.PurchaseGranted
        end 
        debounce = false
end
end

Thanks!

what do you mean with “one of the pets they previously brought”