public static void Banish(Pawn pawn, int tile = -1)
 {
     if (pawn.Faction != Faction.OfPlayer && pawn.HostFaction != Faction.OfPlayer)
     {
         Log.Warning("Tried to banish " + pawn + " but he's neither a colonist, tame animal, nor prisoner.");
     }
     else
     {
         if (tile == -1)
         {
             tile = pawn.Tile;
         }
         bool flag = PawnBanishUtility.WouldBeLeftToDie(pawn, tile);
         PawnDiedOrDownedThoughtsUtility.TryGiveThoughts(pawn, null, (PawnDiedOrDownedThoughtsKind)((!flag) ? 1 : 2));
         Caravan caravan = pawn.GetCaravan();
         if (caravan != null)
         {
             CaravanInventoryUtility.MoveAllInventoryToSomeoneElse(pawn, caravan.PawnsListForReading, null);
             caravan.RemovePawn(pawn);
             if (flag)
             {
                 if (Rand.Value < 0.800000011920929)
                 {
                     pawn.Kill(null, null);
                 }
                 else
                 {
                     PawnBanishUtility.HealIfPossible(pawn);
                 }
             }
             if (pawn.guest != null)
             {
                 pawn.guest.SetGuestStatus(null, false);
             }
             if (pawn.Faction == Faction.OfPlayer)
             {
                 Faction newFaction = default(Faction);
                 if (Find.FactionManager.TryGetRandomNonColonyHumanlikeFaction(out newFaction, pawn.Faction != null && (int)pawn.Faction.def.techLevel >= 3, false, TechLevel.Undefined))
                 {
                     pawn.SetFaction(newFaction, null);
                 }
                 else
                 {
                     pawn.SetFaction(Faction.OfSpacer, null);
                 }
             }
         }
         else
         {
             if (pawn.guest != null)
             {
                 pawn.guest.SetGuestStatus(null, false);
             }
             if (pawn.Faction == Faction.OfPlayer)
             {
                 pawn.SetFaction(Faction.OfSpacer, null);
             }
         }
     }
 }
 public static string GetBanishButtonTip(Pawn pawn)
 {
     if (PawnBanishUtility.WouldBeLeftToDie(pawn, pawn.Tile))
     {
         return("BanishTip".Translate() + "\n\n" + "BanishTipWillDie".Translate(pawn.LabelShort).CapitalizeFirst());
     }
     return("BanishTip".Translate());
 }
        public static string GetBanishPawnDialogText(Pawn banishedPawn)
        {
            StringBuilder stringBuilder = new StringBuilder();
            bool          flag          = PawnBanishUtility.WouldBeLeftToDie(banishedPawn, banishedPawn.Tile);

            stringBuilder.Append("ConfirmBanishPawnDialog".Translate(banishedPawn.Label));
            if (flag)
            {
                stringBuilder.AppendLine();
                stringBuilder.AppendLine();
                stringBuilder.Append("ConfirmBanishPawnDialog_LeftToDie".Translate(banishedPawn.LabelShort).CapitalizeFirst());
            }
            List <ThingWithComps> list       = (banishedPawn.equipment == null) ? null : banishedPawn.equipment.AllEquipmentListForReading;
            List <Apparel>        list2      = (banishedPawn.apparel == null) ? null : banishedPawn.apparel.WornApparel;
            ThingOwner <Thing>    thingOwner = (banishedPawn.inventory == null || !PawnBanishUtility.WillTakeInventoryIfBanished(banishedPawn)) ? null : banishedPawn.inventory.innerContainer;

            if (!list.NullOrEmpty() || !list2.NullOrEmpty() || !thingOwner.NullOrEmpty())
            {
                stringBuilder.AppendLine();
                stringBuilder.AppendLine();
                stringBuilder.Append("ConfirmBanishPawnDialog_Items".Translate(banishedPawn.LabelShort).CapitalizeFirst().AdjustedFor(banishedPawn));
                stringBuilder.AppendLine();
                if (list != null)
                {
                    for (int i = 0; i < list.Count; i++)
                    {
                        stringBuilder.AppendLine();
                        stringBuilder.Append("  - " + list[i].LabelCap);
                    }
                }
                if (list2 != null)
                {
                    for (int j = 0; j < list2.Count; j++)
                    {
                        stringBuilder.AppendLine();
                        stringBuilder.Append("  - " + list2[j].LabelCap);
                    }
                }
                if (thingOwner != null)
                {
                    for (int k = 0; k < thingOwner.Count; k++)
                    {
                        stringBuilder.AppendLine();
                        stringBuilder.Append("  - " + thingOwner[k].LabelCap);
                    }
                }
            }
            PawnDiedOrDownedThoughtsUtility.BuildMoodThoughtsListString(banishedPawn, null, (PawnDiedOrDownedThoughtsKind)((!flag) ? 1 : 2), stringBuilder, "\n\n" + "ConfirmBanishPawnDialog_IndividualThoughts".Translate(banishedPawn.LabelShort), "\n\n" + "ConfirmBanishPawnDialog_AllColonistsThoughts".Translate());
            return(stringBuilder.ToString());
        }
Esempio n. 4
0
        public static string GetBanishButtonTip(Pawn pawn)
        {
            string result;

            if (PawnBanishUtility.WouldBeLeftToDie(pawn, pawn.Tile))
            {
                result = "BanishTip".Translate() + "\n\n" + "BanishTipWillDie".Translate(new object[]
                {
                    pawn.LabelShort
                }).CapitalizeFirst();
            }
            else
            {
                result = "BanishTip".Translate();
            }
            return(result);
        }