Example #1
0
        public static void TryAbandonOrBanishViaInterface(Thing t, Caravan caravan)
        {
            Pawn p = t as Pawn;

            if (p != null)
            {
                if (!caravan.PawnsListForReading.Any((Pawn x) => x != p && caravan.IsOwner(x)))
                {
                    Messages.Message("MessageCantBanishLastColonist".Translate(), caravan, MessageTypeDefOf.RejectInput, historical: false);
                }
                else
                {
                    PawnBanishUtility.ShowBanishPawnConfirmationDialog(p);
                }
            }
            else
            {
                Dialog_MessageBox window = Dialog_MessageBox.CreateConfirmation("ConfirmAbandonItemDialog".Translate(t.Label), delegate
                {
                    Pawn ownerOf = CaravanInventoryUtility.GetOwnerOf(caravan, t);
                    if (ownerOf == null)
                    {
                        Log.Error("Could not find owner of " + t);
                    }
                    else
                    {
                        ownerOf.inventory.innerContainer.Remove(t);
                        t.Destroy();
                        caravan.RecacheImmobilizedNow();
                        caravan.RecacheDaysWorthOfFood();
                    }
                }, destructive: true);
                Find.WindowStack.Add(window);
            }
        }
        public virtual IEnumerable <Thing> ColonyThingsWillingToBuy(Pawn playerNegotiator)
        {
            Caravan caravan = playerNegotiator.GetCaravan();

            using (List <Thing> .Enumerator enumerator = CaravanInventoryUtility.AllInventoryItems(caravan).GetEnumerator())
            {
                if (enumerator.MoveNext())
                {
                    Thing item = enumerator.Current;
                    yield return(item);

                    /*Error: Unable to find new state assignment for yield return*/;
                }
            }
            List <Pawn> pawns = caravan.PawnsListForReading;
            int         i     = 0;

            while (true)
            {
                if (i >= pawns.Count)
                {
                    yield break;
                }
                if (!caravan.IsOwner(pawns[i]))
                {
                    break;
                }
                i++;
            }
            yield return((Thing)pawns[i]);

            /*Error: Unable to find new state assignment for yield return*/;
IL_0156:
            /*Error near IL_0157: Unexpected return in MoveNext()*/;
        }
Example #3
0
 private static bool IsConsciousOwner(Pawn pawn, Caravan caravan)
 {
     if (!pawn.Dead && !pawn.Downed && !pawn.InMentalState)
     {
         return(caravan.IsOwner(pawn));
     }
     return(false);
 }
Example #4
0
        public IEnumerable <Thing> ColonyThingsWillingToBuy(Pawn playerNegotiator)
        {
            Caravan playerCaravan = playerNegotiator.GetCaravan();

            foreach (Thing item in CaravanInventoryUtility.AllInventoryItems(playerCaravan))
            {
                yield return(item);
            }
            List <Pawn> pawns = playerCaravan.PawnsListForReading;

            for (int i = 0; i < pawns.Count; i++)
            {
                if (!playerCaravan.IsOwner(pawns[i]))
                {
                    yield return(pawns[i]);
                }
            }
        }
Example #5
0
 private static bool IsValidDoctorFor(Pawn doctor, Pawn patient, Caravan caravan)
 {
     if (!doctor.RaceProps.Humanlike)
     {
         return(false);
     }
     if (!caravan.IsOwner(doctor))
     {
         return(false);
     }
     if (doctor == patient && (!doctor.IsColonist || !doctor.playerSettings.selfTend))
     {
         return(false);
     }
     if (doctor.Downed || doctor.InMentalState)
     {
         return(false);
     }
     if (doctor.story != null && doctor.story.WorkTypeIsDisabled(WorkTypeDefOf.Doctor))
     {
         return(false);
     }
     return(true);
 }
 public static Pawn RandomOwner(this Caravan caravan)
 {
     return((from p in caravan.PawnsListForReading
             where caravan.IsOwner(p)
             select p).RandomElement());
 }
        public static string GenerateCaravanName(Caravan caravan)
        {
            Pawn arg_4D_0;

            if ((arg_4D_0 = BestCaravanPawnUtility.FindBestNegotiator(caravan)) == null)
            {
                arg_4D_0 = (BestCaravanPawnUtility.FindBestDiplomat(caravan) ?? caravan.PawnsListForReading.Find((Pawn x) => caravan.IsOwner(x)));
            }
            Pawn   pawn = arg_4D_0;
            string text = (pawn == null) ? caravan.def.label : "CaravanLeaderCaravanName".Translate(pawn.LabelShort, pawn).CapitalizeFirst();

            for (int i = 1; i <= 1000; i++)
            {
                string text2 = text;
                if (i != 1)
                {
                    text2 = text2 + " " + i;
                }
                if (!CaravanNameGenerator.CaravanNameInUse(text2))
                {
                    return(text2);
                }
            }
            Log.Error("Ran out of caravan names.", false);
            return(caravan.def.label);
        }
 public static Pawn RandomOwner(this Caravan caravan)
 {
     return(caravan.PawnsListForReading.Where((Pawn p) => caravan.IsOwner(p)).RandomElement());
 }
Example #9
0
        public static string GenerateCaravanName(Caravan caravan)
        {
            Pawn         pawn         = BestCaravanPawnUtility.FindBestNegotiator(caravan) ?? BestCaravanPawnUtility.FindBestDiplomat(caravan) ?? caravan.PawnsListForReading.Find((Pawn x) => caravan.IsOwner(x));
            TaggedString taggedString = (pawn != null) ? "CaravanLeaderCaravanName".Translate(pawn.LabelShort, pawn).CapitalizeFirst() : ((TaggedString)caravan.def.label);

            for (int i = 1; i <= 1000; i++)
            {
                TaggedString taggedString2 = taggedString;
                if (i != 1)
                {
                    taggedString2 += " " + i;
                }
                if (!CaravanNameInUse(taggedString2))
                {
                    return(taggedString2);
                }
            }
            Log.Error("Ran out of caravan names.");
            return(caravan.def.label);
        }
 private static bool IsValidDoctorFor(Pawn doctor, Pawn patient, Caravan caravan)
 {
     return(doctor.RaceProps.Humanlike && caravan.IsOwner(doctor) && (doctor != patient || (doctor.IsColonist && doctor.playerSettings.selfTend)) && !doctor.Downed && !doctor.InMentalState && (doctor.story == null || !doctor.story.WorkTypeIsDisabled(WorkTypeDefOf.Doctor)));
 }
Example #11
0
 private static bool IsConsciousOwner(Pawn pawn, Caravan caravan)
 {
     return(!pawn.Dead && !pawn.Downed && !pawn.InMentalState && caravan.IsOwner(pawn) && pawn.health.capacities.CanBeAwake);
 }