import random from typing import Dict def generate_skill_build() -> Dict[int, str]: """ Generate a random skill build for levels 1-25 following Dota 2 rules: - Ultimate (r) can only be skilled at levels 6, 12, 18 - Talents can only be skilled at levels 10, 15, 20, 25 - Basic abilities (q, w, e) can be skilled at other levels - Each basic ability maxes at 4 points - Ultimate maxes at 3 points - One talent per tier (left OR right) """ skill_build: Dict[int, str] = {} # Track ability points spent ability_points = {"q": 0, "w": 0, "e": 0, "r": 0} max_points = {"q": 4, "w": 4, "e": 4, "r": 3} # Talent levels and which side to pick talent_levels = [10, 15, 20, 25] # Ultimate levels ult_levels = [6, 12, 18] for level in range(1, 26): if level in talent_levels: # Pick random talent side skill_build[level] = random.choice(["left_talent", "right_talent"]) elif level in ult_levels: # Must skill ultimate if not maxed if ability_points["r"] < max_points["r"]: skill_build[level] = "r" ability_points["r"] += 1 else: # Ultimate maxed, pick a basic ability available = [a for a in ["q", "w", "e"] if ability_points[a] < max_points[a]] if available: choice = random.choice(available) skill_build[level] = choice ability_points[choice] += 1 else: # Regular level - pick a basic ability available = [a for a in ["q", "w", "e"] if ability_points[a] < max_points[a]] if available: choice = random.choice(available) skill_build[level] = choice ability_points[choice] += 1 return skill_build