from nullptr.analyzer import Point def assign_sitter_at(c, s, w): c.captain.init_mission(s, 'sit') c.captain.smipa(s, 'dest', w.symbol) def assign_sitter(c, s): system = s.location.system ships = c.store.all('Ship') markets = c.store.all_members(system, 'Marketplace') origin = Point(0, 0) markets = sorted(markets, key=lambda m: m.waypoint.distance(origin)) shipyards = c.store.all_members(system, 'Shipyard') occupied = [s.mission_state['dest'] for s in ships if s.mission=='sit'] probe_shipyard = [y for y in shipyards if 'SHIP_PROBE' in y.types][0] print('oc', occupied) print('proya', probe_shipyard) if probe_shipyard.symbol not in occupied: return assign_sitter_at(c, s, probe_shipyard) for y in shipyards: if y.symbol not in occupied: return assign_sitter_at(c, s, y) for m in markets: if m.symbol not in occupied: return assign_sitter_at(c, s, m)