docs: def make_multiple_uni_disc_packets(cid: tuple, sourceName: str, universes: list) -> List['UniverseDiscoveryPacket']:
          """
          Creates a list with universe discovery packets based on the given data. It creates automatically enough packets
          for the given universes list.
          :param cid: the cid to use in all packets
          :param sourceName: the source name to use in all packets
          :param universes: the universes. Can be longer than 512, but has to be shorter than 256*512.
          The values in the list should be [1-63999]
          :return: a list full of universe discovery packets
          """
          tmpList = []
          if len(universes)%512 != 0:
              num_of_packets = int(len(universes)/512)+1
          else:  # just get how long the list has to be. Just read and think about the if statement.
              # Should be self-explaining
              num_of_packets = int(len(universes)/512)
          universes.sort()  # E1.31 wants that the send out universes are sorted
          for i in range(0, num_of_packets):
              if i == num_of_packets-1:
                  tmpUniverses = universes[i * 512:len(universes)]
                  # if we are here, then the for is in the last loop
              else:
                  tmpUniverses = universes[i * 512:(i+1) * 512]
              # create new UniverseDiscoveryPacket and append it to the list. Page and lastPage are getting special values
              tmpList.append(UniverseDiscoveryPacket(cid=cid, sourceName=sourceName, universes=tmpUniverses,
                                                     page=i, lastPage=num_of_packets-1))
          return tmpList