SC2: Grid, Mini Grid and Blitz mission orders

This commit is contained in:
Magnemania
2022-10-05 21:48:57 -04:00
parent cb906cc3cb
commit cb5ef5c157
2 changed files with 55 additions and 3 deletions

View File

@@ -711,7 +711,7 @@ def calc_available_missions(ctx: SC2Context, unlocks=None):
return available_missions
def mission_reqs_completed(ctx: SC2Context, mission_name: str, missions_complete):
def mission_reqs_completed(ctx: SC2Context, mission_name: str, missions_complete: int, mission_path: list[str] = []):
"""Returns a bool signifying if the mission has all requirements complete and can be done
Arguments:
@@ -719,6 +719,12 @@ def mission_reqs_completed(ctx: SC2Context, mission_name: str, missions_complete
locations_to_check -- the mission string name to check
missions_complete -- an int of how many missions have been completed
"""
# Tracking mission path to prevent infinite recursion
if not mission_path:
mission_path = []
if mission_name in mission_path:
return False
mission_path.append(mission_name)
if len(ctx.mission_req_table[mission_name].required_world) >= 1:
# A check for when the requirements are being or'd
or_success = False
@@ -736,7 +742,7 @@ def mission_reqs_completed(ctx: SC2Context, mission_name: str, missions_complete
req_success = False
# Recursively check required mission to see if it's requirements are met, in case !collect has been done
if not mission_reqs_completed(ctx, list(ctx.mission_req_table)[req_mission - 1], missions_complete):
if not mission_reqs_completed(ctx, list(ctx.mission_req_table)[req_mission - 1], missions_complete, mission_path):
if not ctx.mission_req_table[mission_name].or_requirements:
return False
else:

View File

@@ -90,7 +90,53 @@ gauntlet_order = [
FillMission("all_in", [5], "Char", completion_critical=True)
]
mission_orders = [vanilla_shuffle_order, vanilla_shuffle_order, mini_shuffle_order, gauntlet_order]
grid_order = [
FillMission("no_build", [-1], "Colonist"),
FillMission("medium", [0], "Colonist"),
FillMission("medium", [1, 6, 3], "Colonist", or_requirements=True),
FillMission("hard", [2, 7], "Colonist", or_requirements=True),
FillMission("easy", [0], "Artifact"),
FillMission("medium", [1, 4], "Artifact", or_requirements=True),
FillMission("hard", [2, 5, 10, 7], "Artifact", or_requirements=True),
FillMission("hard", [3, 6, 11], "Artifact", or_requirements=True),
FillMission("medium", [4, 9], "Covert", or_requirements=True),
FillMission("hard", [5, 8, 10], "Covert", or_requirements=True),
FillMission("hard", [6, 9, 11], "Covert", or_requirements=True),
FillMission("hard", [7, 10], "Covert", or_requirements=True),
FillMission("hard", [8, 13], "Rebellion", or_requirements=True),
FillMission("hard", [9, 12, 14], "Rebellion", or_requirements=True),
FillMission("hard", [10, 13, 15], "Rebellion", or_requirements=True),
FillMission("all_in", [11, 14], "Rebellion", or_requirements=True)
]
mini_grid_order = [
FillMission("no_build", [-1], "Colonist"),
FillMission("medium", [0], "Colonist"),
FillMission("medium", [1, 5], "Colonist", or_requirements=True),
FillMission("easy", [0], "Artifact"),
FillMission("medium", [1, 3], "Artifact", or_requirements=True),
FillMission("hard", [2, 4, 8], "Artifact", or_requirements=True),
FillMission("medium", [3, 7], "Covert", or_requirements=True),
FillMission("hard", [4, 6, 8], "Covert", or_requirements=True),
FillMission("all_in", [5, 7], "Covert", or_requirements=True)
]
blitz_order = [
FillMission("no_build", [-1], "Mar Sara"),
FillMission("easy", [-1], "Mar Sara"),
FillMission("medium", [0, 1], "Colonist", number=1, or_requirements=True),
FillMission("medium", [0, 1], "Colonist", number=1, or_requirements=True),
FillMission("medium", [0, 1], "Artifact", number=2, or_requirements=True),
FillMission("medium", [0, 1], "Artifact", number=2, or_requirements=True),
FillMission("hard", [0, 1], "Covert", number=3, or_requirements=True),
FillMission("hard", [0, 1], "Covert", number=3, or_requirements=True),
FillMission("hard", [0, 1], "Rebellion", number=4, or_requirements=True),
FillMission("hard", [0, 1], "Rebellion", number=4, or_requirements=True),
FillMission("hard", [0, 1], "Char", number=5, or_requirements=True),
FillMission("all_in", [0, 1], "Char", number=5, or_requirements=True)
]
mission_orders = [vanilla_shuffle_order, vanilla_shuffle_order, mini_shuffle_order, grid_order, mini_grid_order, blitz_order, gauntlet_order]
vanilla_mission_req_table = {