'Gets a new WildernessRoom to be used for the provided coordinates.
It first tries to retrieve a room out of storage. If there are no rooms
left a new one will be created.
Args:
coordinates (tuple): coordinate tuple of (x, y)
report_to (object): the obj to return error messages to'

def _create_room(self, coordinates, report_to):

    if self.db.unused_rooms:
        room = self.db.unused_rooms.pop()
    else:
        room = create_object(typeclass=self.mapprovider.room_typeclass, key='Wilderness', report_to=report_to)
        exits = [('north', 'n'), ('northeast', 'ne'), ('east', 'e'), ('southeast', 'se'), ('south', 's'), ('southwest', 'sw'), ('west', 'w'), ('northwest', 'nw')]
        for (key, alias) in exits:
            create_object(typeclass=self.mapprovider.exit_typeclass, key=key, aliases=[alias], location=room, destination=room, report_to=report_to)
    room.ndb.active_coordinates = coordinates
    room.ndb.wildernessscript = self
    self.db.rooms[coordinates] = room
    return room
