private List <ProtoCrewMember> GetNearbyKerbals() { var activeVessel = FlightGlobals.ActiveVessel; if (activeVessel == null) { return(null); } // Make sure we have an eligible terminal nearby var landedSituations = Vessel.Situations.LANDED | Vessel.Situations.PRELAUNCH | Vessel.Situations.SPLASHED; var landedOnly = (activeVessel.situation & landedSituations) == landedSituations; var terminals = LogisticsTools.GetNearbyPartModules <WOLF_TerminalModule>( TERMINAL_RANGE, activeVessel, true, landedOnly); if (terminals == null || terminals.Count < 1) { return(null); } var terminalIds = terminals .Where(t => !string.IsNullOrEmpty(t.TerminalId)) .Select(t => t.TerminalId); var wolfTerminals = _wolf.GetTerminals() .Where(t => terminalIds.Contains(t.Id) && t.Body == _selectedFlight.OriginBody && t.Biome == _selectedFlight.OriginBiome); if (wolfTerminals == null || wolfTerminals.Count() < 1) { return(null); } // Get all nearby vessels var vessels = LogisticsTools .GetNearbyVessels(TERMINAL_RANGE, true, activeVessel, landedOnly); var kerbals = new List <ProtoCrewMember>(); foreach (var vessel in vessels) { var crew = vessel .GetVesselCrew() .Where(c => c.type == ProtoCrewMember.KerbalType.Crew || c.type == ProtoCrewMember.KerbalType.Tourist); kerbals.AddRange(crew); } return(kerbals); }