File size: 1,455 Bytes
bc13b33
 
86b25b7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import random

def randomly_select_from_json(world_data):
    world_name = world_data["name"]
    world_description = world_data["description"]

    valid_kingdoms = {
        k_name: k_data
        for k_name, k_data in world_data["kingdoms"].items()
        if any("npcs" in town_data and town_data["npcs"] for town_data in k_data["towns"].values())
    }
    if not valid_kingdoms:
        raise ValueError("No kingdoms with valid towns and NPCs found.")

    kingdom_name, kingdom_data = random.choice(list(valid_kingdoms.items()))
    kingdom_description = kingdom_data["description"]

    valid_towns = {
        t_name: t_data
        for t_name, t_data in kingdom_data["towns"].items()
        if "npcs" in t_data and t_data["npcs"]
    }
    if not valid_towns:
        raise ValueError(f"No towns with NPCs found in kingdom: {kingdom_name}")

    town_name, town_data = random.choice(list(valid_towns.items()))
    town_description = town_data["description"]

    npcs = town_data["npcs"]
    character_name, character_data = random.choice(list(npcs.items()))
    character_description = character_data["description"]

    return {
        "world": {"name": world_name, "description": world_description},
        "kingdom": {"name": kingdom_name, "description": kingdom_description},
        "town": {"name": town_name, "description": town_description},
        "character": {"name": character_name, "description": character_description},
    }