local parts = {game.Workspace.TestPart}
local models = {game.Workspace.Fields.oneCharm, game.Workspace.Fields.fourDawn, game.Workspace.Fields.twoPassion, game.Workspace.Fields.threeHope, game.Workspace.Fields.sevenMystery, game.Workspace.Fields.sixFortune, game.Workspace.Fields.fiveExcitement, game.Workspace.Fields.eightDiscovery, game.Workspace.Fields.nineDestiny, game.Workspace.Fields.tenScheme, game.Workspace.Fields.elevenFuture, game.Workspace.Fields.twelveHiding, game.Workspace.Fields.thirteenRevolution}

for _, model in ipairs(models) do -- Loop through models
    for _, part in ipairs(model:GetDescendants()) do -- Loop through model's descendants
        if part:IsA("BasePart") then -- Check if it's a part
            table.insert(parts, part) -- Insert into parts table
        end
    end
end

for i,v in pairs(parts) do
	v.Touched:Connect(function(card)
    if card.Parent.Name == "Harvester" then
		if v.Size == Vector3.new(3,3,3) then
            v.Size = Vector3.new(3, 2, 3)
            local player = game.Players:GetPlayerFromCharacter(card.Parent.Parent)
			if player then
				player.leaderstats.Pastelics.Value = player.leaderstats.Pastelics.Value + player.leaderstats.Upgrades.Value + 1
				wait(10 - player.statz.GelHelmetLevel.Value)
				v.Size = Vector3.new(3, 3, 3)
			end
		end
    end
	end)

end

When I touch a tile that's listed in the table with the tool named "Harvester," it performs as expected. However, if I run through (by that I mean walk through a bunch of tiles with CanCollide disabled) a bunch of tiles quickly, the tiles take 1-3 seconds to catch up. Is there anything I can do to optimize the time it takes for the tiles to catch up?