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 node_night_battles(self, value): node_night_battles = {} for nb in value: split = nb.split(':') split[0] = int(split[0]) if split[0].isdigit() else split[0] if len(split) != 2: raise ValueError("Node night battle in wrong format.") if not NodeEnum.contains_value(split[0]): raise ValueError("Bad node specified in node nb.") if split[1] not in ('True', 'False'): raise ValueError("Bad bool specified for node nb.") node_night_battles[split[0]] = split[1] == 'True' self._node_night_battles = node_night_battles
def node_formations(self, value): node_formations = {} for formation in value: split = formation.split(':') split[0] = int(split[0]) if split[0].isdigit() else split[0] if len(split) != 2: raise ValueError("Node formation in wrong format.") if not NodeEnum.contains_value(split[0]): raise ValueError("Bad node specified in node formation.") if not FormationEnum.contains_value(split[1]): raise ValueError("Bad formation specified in node formation.") node_formations[split[0]] = FormationEnum(split[1]) self._node_formations = node_formations
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]