From 2355f9c8d30b872636f9c548393bdac18ddfffc3 Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Fri, 9 Apr 2021 22:16:55 +0200 Subject: [PATCH] Only apply logic for allowed science pack --- worlds/factorio/Technologies.py | 6 +++--- worlds/factorio/__init__.py | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/worlds/factorio/Technologies.py b/worlds/factorio/Technologies.py index 7c9f41e8..f1ec1ac0 100644 --- a/worlds/factorio/Technologies.py +++ b/worlds/factorio/Technologies.py @@ -24,12 +24,12 @@ class Technology(): # maybe make subclass of Location? factorio_id += 1 self.ingredients = ingredients - def build_rule(self, player: int): + def build_rule(self, allowed_packs, player: int): logging.debug(f"Building rules for {self.name}") ingredient_rules = [] for ingredient in self.ingredients: - logging.debug(f"Building rules for ingredient {ingredient}") - if ingredient in required_technologies: + if ingredient in allowed_packs: + logging.debug(f"Building rules for ingredient {ingredient}") technologies = required_technologies[ingredient] # technologies that unlock the recipes if technologies: logging.debug(f"Required Technologies: {technologies}") diff --git a/worlds/factorio/__init__.py b/worlds/factorio/__init__.py index 36d437aa..26cf4660 100644 --- a/worlds/factorio/__init__.py +++ b/worlds/factorio/__init__.py @@ -39,10 +39,11 @@ def factorio_create_regions(world: MultiWorld, player: int): def set_rules(world: MultiWorld, player: int): if world.logic[player] != 'nologic': from worlds.generic import Rules + allowed_packs = world.max_science_pack[player].get_allowed_packs() for tech_name, technology in technology_table.items(): # loose nodes location = world.get_location(tech_name, player) - Rules.set_rule(location, technology.build_rule(player)) + Rules.set_rule(location, technology.build_rule(allowed_packs, player)) # get all technologies world.completion_condition[player] = lambda state: all(state.has(technology, player)