def randomize_fanatics(unused_locids): stairs = [get_location(i) for i in [363, 359, 360, 361]] pitstops = [get_location(i) for i in [365, 367, 368, 369]] num_new_levels = random.randint(0, 1) + random.randint(1, 2) unused_locations = [get_location(l) for l in unused_locids] fsets = get_new_fsets("fanatics", 10, supplement=False) for _ in range(num_new_levels): stair = unused_locations.pop() stop = unused_locations.pop() stair.copy(random.choice(stairs[1:-1])) stop.copy(random.choice(pitstops[1:])) add_location_map("Fanatics Tower", stair.locid) add_location_map("Fanatics Tower", stop.locid) index = random.randint(1, len(stairs) - 1) stairs.insert(index, stair) pitstops.insert(index, stop) chest = stop.chests[0] chest.set_new_id() entrance = stop.entrances[0] entrance.dest = (entrance.dest & 0xFE00) | (stair.locid & 0x1FF) entrance = sorted(stair.entrances, key=lambda e: e.y)[1] entrance.dest = (entrance.dest & 0xFE00) | (stop.locid & 0x1FF) stair.setid = random.choice(fsets).setid stop.setid = random.choice(fsets).setid for a, b in zip(stairs, stairs[1:]): lower = sorted(a.entrances, key=lambda e: e.y)[0] upper = sorted(b.entrances, key=lambda e: e.y)[-1] lower.dest = (lower.dest & 0xFE00) | (b.locid & 0x1FF) upper.dest = (upper.dest & 0xFE00) | (a.locid & 0x1FF) for stop in pitstops: if random.choice([True, False]): continue index = pitstops.index(stop) if index == 0: continue index2 = index + random.choice([-1, -1, -2]) if index2 < 0: index2 = 0 stair = stairs[index2] entrance = stop.entrances[0] entrance.dest = (entrance.dest & 0xFE00) | (stair.locid & 0x1FF)
def randomize_fanatics(unused_locids): stairs = [get_location(i) for i in [363, 359, 360, 361]] pitstops = [get_location(i) for i in [365, 367, 368, 369]] num_new_levels = random.randint(0, 1) + random.randint(1, 2) unused_locations = [get_location(l) for l in unused_locids] fsets = get_new_fsets("fanatics", 10, supplement=False) for _ in xrange(num_new_levels): stair = unused_locations.pop() stop = unused_locations.pop() stair.copy(random.choice(stairs[1:-1])) stop.copy(random.choice(pitstops[1:])) add_location_map("Fanatics Tower", stair.locid) add_location_map("Fanatics Tower", stop.locid) index = random.randint(1, len(stairs)-1) stairs.insert(index, stair) pitstops.insert(index, stop) chest = stop.chests[0] chest.set_new_id() entrance = stop.entrances[0] entrance.dest = (entrance.dest & 0xFE00) | (stair.locid & 0x1FF) entrance = sorted(stair.entrances, key=lambda e: e.y)[1] entrance.dest = (entrance.dest & 0xFE00) | (stop.locid & 0x1FF) stair.setid = random.choice(fsets).setid stop.setid = random.choice(fsets).setid for a, b in zip(stairs, stairs[1:]): lower = sorted(a.entrances, key=lambda e: e.y)[0] upper = sorted(b.entrances, key=lambda e: e.y)[-1] lower.dest = (lower.dest & 0xFE00) | (b.locid & 0x1FF) upper.dest = (upper.dest & 0xFE00) | (a.locid & 0x1FF) for stop in pitstops: if random.choice([True, False]): continue index = pitstops.index(stop) if index == 0: continue index2 = index + random.choice([-1, -1, -2]) if index2 < 0: index2 = 0 stair = stairs[index2] entrance = stop.entrances[0] entrance.dest = (entrance.dest & 0xFE00) | (stair.locid & 0x1FF)