def create_delayed_rules(self): for region_name, node, subrule_name in self.delayed_rules: region = self.world.get_region(region_name) event = Location(subrule_name, type='Event', parent=region, internal=True) event.world = self.world self.current_spot = event # This could, in theory, create further subrules. access_rule = self.make_access_rule(self.visit(node)) if access_rule is self.rule_cache.get('NameConstant(False)'): event.access_rule = None event.never = True logging.getLogger('').debug( 'Dropping unreachable delayed event: %s', event.name) else: if access_rule is self.rule_cache.get('NameConstant(True)'): event.always = True event.set_rule(access_rule) region.locations.append(event) MakeEventItem(subrule_name, event) # Safeguard in case this is called multiple times per world self.delayed_rules.clear()