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()); }
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); }