def cmd_range(self, args, msg): """Returns a count of the number of systems in jump range from a source system""" if len(args) == 0 or len(args) > 2: return '!range <system> <ship class>' system = args[0] if len(args) == 2: ship_class = args[1].lower() else: ship_class = 'blackops' if ship_class not in base_range.keys(): return 'Unknown class {}, please use one of: {}'.format( ship_class, ', '.join(base_range.keys()) ) system_id = self._system_picker(system) if isinstance(system_id, basestring): return system_id res = {} systems = self.map.neighbors_jump(system_id, ship_class=ship_class) for sys, range in systems: if sys['region'] in res: res[sys['region']] += 1 else: res[sys['region']] = 1 return '{} systems in JDC5 {} range of {}:\n'.format(len(systems), ship_class, self.map.get_system_name(system_id)) + '\n'.join(['{} - {}'.format(x, y) for x, y in res.items()])
def cmd_range(self, args, msg): """Returns a count of the number of systems in jump range from a source system""" if len(args) == 0 or len(args) > 2: return '!range <system> <ship class>' system = args[0] if len(args) == 2: ship_class = args[1].lower() else: ship_class = 'blackops' if ship_class not in base_range.keys(): return 'Unknown class {}, please use one of: {}'.format( ship_class, ', '.join(base_range.keys())) system_id = self._system_picker(system) if isinstance(system_id, basestring): return system_id res = {} systems = self.map.neighbors_jump(system_id, ship_class=ship_class) for sys, range in systems: if sys['region'] in res: res[sys['region']] += 1 else: res[sys['region']] = 1 return '{} systems in JDC5 {} range of {}:\n'.format( len(systems), ship_class, self.map.get_system_name(system_id)) + '\n'.join( ['{} - {}'.format(x, y) for x, y in res.items()])
def cmd_jump(self, args, msg): """Calculates the shortest jump route between two systems""" if len(args) < 2: return '!jump <source> <destination> (<ship class> <jdc level> <jfc level>)' elif len(args) == 2: source, dest = args ship_class = 'blackops' jdc = jfc = 5 elif len(args) == 3: source, dest, ship_class = args jdc = jfc = 5 elif len(args) == 4: source, dest, ship_class, jdc = args jfc = 5 else: source, dest, ship_class, jdc, jfc = args jf = 5 source = self._system_picker(source) if isinstance(source, basestring): return source dest = self._system_picker(dest) if isinstance(dest, basestring): return dest if ship_class not in base_range.keys(): return 'Unknown class {}, please use one of: {}'.format( ship_class, ', '.join(base_range.keys()) ) try: int(jdc) int(jfc) except ValueError: return 'Invalid JDC/JFC level' route = self.map.route_jump(source, dest, ship_class=ship_class) if len(route): return '{} to {} ({}/{}/{}), {} jumps ({}ly / {} isotopes):\n{}'.format( self.map.get_system_name(source), self.map.get_system_name(dest), ship_class, jdc, jfc, len(route)-1, round(self.map.route_jump_distance(route), 2), round(self.map.route_jump_isotopes(route, int(jfc), ship_class=ship_class, jf_skill=jf), 0), ' -> '.join([self.map.get_system_name(x) for x in route]) ) else: return 'No route found'
def cmd_jump(self, args, msg): """Calculates the shortest jump route between two systems""" if len(args) < 2: return '!jump <source> <destination> (<ship class> <jdc level> <jfc level>)' elif len(args) == 2: source, dest = args ship_class = 'blackops' jdc = jfc = 5 elif len(args) == 3: source, dest, ship_class = args jdc = jfc = 5 elif len(args) == 4: source, dest, ship_class, jdc = args jfc = 5 else: source, dest, ship_class, jdc, jfc = args jf = 5 source = self._system_picker(source) if isinstance(source, basestring): return source dest = self._system_picker(dest) if isinstance(dest, basestring): return dest if ship_class not in base_range.keys(): return 'Unknown class {}, please use one of: {}'.format( ship_class, ', '.join(base_range.keys())) try: int(jdc) int(jfc) except ValueError: return 'Invalid JDC/JFC level' route = self.map.route_jump(source, dest, ship_class=ship_class) if len(route): return '{} to {} ({}/{}/{}), {} jumps ({}ly / {} isotopes):\n{}'.format( self.map.get_system_name(source), self.map.get_system_name(dest), ship_class, jdc, jfc, len(route) - 1, round(self.map.route_jump_distance(route), 2), round( self.map.route_jump_isotopes(route, int(jfc), ship_class=ship_class, jf_skill=jf), 0), ' -> '.join([self.map.get_system_name(x) for x in route])) else: return 'No route found'
def cmd_hit(self, args, msg): """Details what class and JDC level is required to jump between two systems""" if len(args) != 2: return '!hit <source> <destination>' source, dest = args source = self._system_picker(source) if isinstance(source, basestring): return source dest = self._system_picker(dest) if isinstance(dest, basestring): return dest if self.map.node[dest]['security'] >= 0.5: return '{} is a highsec system'.format(self.map.get_system_name(dest)) ly = self.map.system_distance(source, dest) if ly > 6.5 * (1 + (0.25 * 5)): return '{} to {} is greater than {}ly (maximum jump range of all ships)'.format( self.map.get_system_name(source), self.map.get_system_name(dest), 6.5 * (1 + (0.25 * 5)) ) res = [] for ship_class in base_range.keys(): res1 = [] for skill in [4, 5]: if ship_class_to_range(ship_class, skill) >= ly: res1.append('JDC{}'.format(skill)) if len(res1): res.append('{}: {}'.format(ship_class, ', '.join(res1))) return '{} -> {} ({}ly) Capable Ship Types:\n{}'.format( self.map.get_system_name(source), self.map.get_system_name(dest), round(ly, 2), '\n'.join(res) )
def cmd_hit(self, args, msg): """Details what class and JDC level is required to jump between two systems""" if len(args) != 2: return '!hit <source> <destination>' source, dest = args source = self._system_picker(source) if isinstance(source, basestring): return source dest = self._system_picker(dest) if isinstance(dest, basestring): return dest if self.map.node[dest]['security'] >= 0.5: return '{} is a highsec system'.format( self.map.get_system_name(dest)) ly = self.map.system_distance(source, dest) if ly > 6.5 * (1 + (0.25 * 5)): return '{} to {} is greater than {}ly (maximum jump range of all ships)'.format( self.map.get_system_name(source), self.map.get_system_name(dest), 6.5 * (1 + (0.25 * 5))) res = [] for ship_class in base_range.keys(): res1 = [] for skill in [4, 5]: if ship_class_to_range(ship_class, skill) >= ly: res1.append('JDC{}'.format(skill)) if len(res1): res.append('{}: {}'.format(ship_class, ', '.join(res1))) return '{} -> {} ({}ly) Capable Ship Types:\n{}'.format( self.map.get_system_name(source), self.map.get_system_name(dest), round(ly, 2), '\n'.join(res))