public static IEnumerable <TorNpc> PartyCompanions(this TorPlayer torPlayer,
                                                           TorCharacterPredicateDelegate companionQualifier = null)
        {
            // Extension methods guarantee the 'this' argument is never null, so no need to check a contract here

            companionQualifier = companionQualifier ?? (ctx => true);             // resolve playerQualifier to something sane

            return(torPlayer.PartyPlayers(p => p.IsCompanionInUse() && companionQualifier(p.Companion)).Select(p => p.Companion));
        }
        public static IEnumerable <TorCharacter> PartyMembers(this TorPlayer torPlayer, bool includeCompanions = true,
                                                              TorCharacterPredicateDelegate memberQualifier    = null)
        {
            memberQualifier = memberQualifier ?? (c => true);             // resolve playerQualifier to something sane

            IEnumerable <TorCharacter> partyMembers = torPlayer.PartyPlayers();

            if (includeCompanions)
            {
                partyMembers = partyMembers.Concat(torPlayer.PartyCompanions());
            }

            return(partyMembers.Where(c => memberQualifier(c)));
        }
		public static IEnumerable<TorNpc> PartyCompanions(this TorPlayer torPlayer,
			TorCharacterPredicateDelegate companionQualifier = null)
		{
			// Extension methods guarantee the 'this' argument is never null, so no need to check a contract here

			companionQualifier = companionQualifier ?? (ctx => true); // resolve playerQualifier to something sane

			return torPlayer.PartyPlayers(p => p.IsCompanionInUse() && companionQualifier(p.Companion)).Select(p => p.Companion);
		}
		public static IEnumerable<TorCharacter> PartyMembers(this TorPlayer torPlayer, bool includeCompanions = true,
			TorCharacterPredicateDelegate memberQualifier = null)
		{
			memberQualifier = memberQualifier ?? (c => true); // resolve playerQualifier to something sane

			IEnumerable<TorCharacter> partyMembers = torPlayer.PartyPlayers();

			if (includeCompanions)
			{
				partyMembers = partyMembers.Concat(torPlayer.PartyCompanions());
			}

			return partyMembers.Where(c => memberQualifier(c));
		}