guardrail-game-app / randomselection.py
pratikshahp's picture
Update randomselection.py
bc13b33 verified
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},
}