def lbas_group_3_nodes(self, value): if (LBASGroupEnum.G03.value in self.lbas_groups and len(value) not in (0, 2)): raise ValueError("0 or 2 nodes not specified for LBAS 3") for node in value: if not NamedNodeEnum.contains_value(node): raise ValueError("Invalid node specified for LBAS 3") self._lbas_group_3_nodes = [NodeEnum(node) for node in value]
def node_selects(self, value): node_selects = {} for select in value: split = select.split('>') if len(split) != 2: raise ValueError("Node select in wrong format.") if (not NamedNodeEnum.contains_value(split[0]) or not NamedNodeEnum.contains_value(split[1])): raise ValueError("Bad node specified in node select.") node_selects[split[0]] = NodeEnum(split[1]) self._node_selects = node_selects
def _resolve_continue_sortie_prompt(self): Log.log_debug("Resolve continue sortie prompt.") continue_sortie = True retreat_limit = cfg.config.combat.retreat_limit if self.current_node in cfg.config.combat.push_nodes: Log.log_msg(f"{self.current_node} is specified as a push node.") return True for fleet in flt.fleets.combat_fleets: if fleet.weakest_state >= retreat_limit: Log.log_warn( f"Fleet {fleet.fleet_id} has ships with " f"{retreat_limit.display_name} damage or above.") continue_sortie = False elif fleet.visual_health['heavy'] > 0: Log.log_warn( f"Fleet {fleet.fleet_id} has a critically damaged ship " "not calculated from the API.") continue_sortie = False if ( NodeEnum(self.current_node.name) in cfg.config.combat.retreat_points): Log.log_debug("Retreat specified in config.") continue_sortie = False if ( NodeEnum(len(self.combat_nodes_run)) in cfg.config.combat.retreat_points): Log.log_debug("Retreat specified combat # in config.") continue_sortie = False if continue_sortie: Log.log_msg("Continuing sortie.") kca_u.kca.click_existing( 'kc', 'combat|combat_continue.png', cached=True) else: Log.log_msg("Retreating from sortie.") kca_u.kca.click_existing( 'kc', 'combat|combat_retreat.png', cached=True) kca_u.kca.r['lbas'].hover() return continue_sortie
def push_nodes(self, value): for node in value: if not NamedNodeEnum.contains_value(node): raise ValueError("Invalid node specified for push nodes.") self._push_nodes = [NodeEnum(node) for node in value]
def retreat_points(self, value): for node in value: if not NodeEnum.contains_value(node): raise ValueError("Invalid node specified") self._retreat_points = [NodeEnum(node) for node in value]