private static Pawn FindBestDoctor(Caravan caravan, Pawn patient) { float num = 0f; Pawn pawn = null; List <Pawn> pawnsListForReading = caravan.PawnsListForReading; for (int i = 0; i < pawnsListForReading.Count; i++) { Pawn pawn2 = pawnsListForReading[i]; if (pawn2 != patient && CaravanUtility.IsOwner(pawn2, caravan.Faction)) { if (!pawn2.Downed && !pawn2.InMentalState) { if (pawn2.story == null || !pawn2.story.WorkTypeIsDisabled(WorkTypeDefOf.Doctor)) { float statValue = pawn2.GetStatValue(StatDefOf.MedicalTendQuality, true); if (statValue > num || pawn == null) { num = statValue; pawn = pawn2; } } } } } return(pawn); }
public static void ForceReform(MapParent mapParent) { if (Dialog_FormCaravan.AllSendablePawns(mapParent.Map, true).Any((Pawn x) => x.IsColonist)) { Messages.Message("MessageYouHaveToReformCaravanNow".Translate(), new GlobalTargetInfo(mapParent.Tile), MessageTypeDefOf.NeutralEvent, true); Current.Game.CurrentMap = mapParent.Map; Dialog_FormCaravan window = new Dialog_FormCaravan(mapParent.Map, true, delegate() { if (mapParent.HasMap) { Find.WorldObjects.Remove(mapParent); } }, true); Find.WindowStack.Add(window); } else { TimedForcedExit.tmpPawns.Clear(); TimedForcedExit.tmpPawns.AddRange(from x in mapParent.Map.mapPawns.AllPawns where x.Faction == Faction.OfPlayer || x.HostFaction == Faction.OfPlayer select x); if (TimedForcedExit.tmpPawns.Any((Pawn x) => CaravanUtility.IsOwner(x, Faction.OfPlayer))) { CaravanExitMapUtility.ExitMapAndCreateCaravan(TimedForcedExit.tmpPawns, Faction.OfPlayer, mapParent.Tile, mapParent.Tile, -1, true); } TimedForcedExit.tmpPawns.Clear(); Find.WorldObjects.Remove(mapParent); } }
public static void ForceReform(MapParent mapParent) { if (Dialog_FormCaravan.AllSendablePawns(mapParent.Map, reform: true).Any((Pawn x) => x.IsColonist)) { Messages.Message("MessageYouHaveToReformCaravanNow".Translate(), new GlobalTargetInfo(mapParent.Tile), MessageTypeDefOf.NeutralEvent); Current.Game.CurrentMap = mapParent.Map; Dialog_FormCaravan window = new Dialog_FormCaravan(mapParent.Map, reform: true, delegate { if (mapParent.HasMap) { mapParent.Destroy(); } }, mapAboutToBeRemoved: true); Find.WindowStack.Add(window); return; } tmpPawns.Clear(); tmpPawns.AddRange(mapParent.Map.mapPawns.AllPawns.Where((Pawn x) => x.Faction == Faction.OfPlayer || x.HostFaction == Faction.OfPlayer)); if (tmpPawns.Any((Pawn x) => CaravanUtility.IsOwner(x, Faction.OfPlayer))) { CaravanExitMapUtility.ExitMapAndCreateCaravan(tmpPawns, Faction.OfPlayer, mapParent.Tile, mapParent.Tile, -1); } tmpPawns.Clear(); mapParent.Destroy(); }
public override void CompTick() { MapParent mapParent = base.parent as MapParent; if (this.ForceExitAndRemoveMapCountdownActive) { if (mapParent.HasMap) { this.ticksLeftToForceExitAndRemoveMap--; if (this.ticksLeftToForceExitAndRemoveMap == 0) { if (Dialog_FormCaravan.AllSendablePawns(mapParent.Map, true).Any((Pawn x) => x.IsColonist)) { Messages.Message("MessageYouHaveToReformCaravanNow".Translate(), new GlobalTargetInfo(mapParent.Tile), MessageTypeDefOf.NeutralEvent); Current.Game.VisibleMap = mapParent.Map; Dialog_FormCaravan window = new Dialog_FormCaravan(mapParent.Map, true, delegate { if (mapParent.HasMap) { this.ShowWorldViewIfVisibleMapAboutToBeRemoved(mapParent.Map); Find.WorldObjects.Remove(mapParent); } }, false, true); Find.WindowStack.Add(window); } else { TimedForcedExit.tmpPawns.Clear(); TimedForcedExit.tmpPawns.AddRange(from x in mapParent.Map.mapPawns.AllPawns where x.Faction == Faction.OfPlayer || x.HostFaction == Faction.OfPlayer select x); if (TimedForcedExit.tmpPawns.Any()) { if (TimedForcedExit.tmpPawns.Any((Pawn x) => CaravanUtility.IsOwner(x, Faction.OfPlayer))) { Caravan o = CaravanExitMapUtility.ExitMapAndCreateCaravan(TimedForcedExit.tmpPawns, Faction.OfPlayer, mapParent.Tile); Messages.Message("MessageAutomaticallyReformedCaravan".Translate(), o, MessageTypeDefOf.NeutralEvent); } else { StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < TimedForcedExit.tmpPawns.Count; i++) { stringBuilder.AppendLine(" " + TimedForcedExit.tmpPawns[i].LabelCap); } Find.LetterStack.ReceiveLetter("LetterLabelPawnsLostDueToMapCountdown".Translate(), "LetterPawnsLostDueToMapCountdown".Translate(stringBuilder.ToString().TrimEndNewlines()), LetterDefOf.NegativeEvent, new GlobalTargetInfo(mapParent.Tile), null); } TimedForcedExit.tmpPawns.Clear(); } this.ShowWorldViewIfVisibleMapAboutToBeRemoved(mapParent.Map); Find.WorldObjects.Remove(mapParent); } } } else { this.ticksLeftToForceExitAndRemoveMap = -1; } } }
private bool AnyNonDownedColonistLeftInSourceCaravan(List <Pawn> pawnsToTransfer) { return(this.transferables.Any((TransferableOneWay x) => x.things.Any(delegate(Thing y) { Pawn pawn = y as Pawn; return pawn != null && CaravanUtility.IsOwner(pawn, Faction.OfPlayer) && !pawn.Downed && !pawnsToTransfer.Contains(pawn); }))); }
public bool IsOwner(Pawn p) { if (pawns.Contains(p)) { return(CaravanUtility.IsOwner(p, base.Faction)); } return(false); }
public static void RemovePawnFromCaravan(Pawn pawn, Lord lord, bool removeFromDowned = true) { bool flag = false; for (int i = 0; i < lord.ownedPawns.Count; i++) { Pawn pawn2 = lord.ownedPawns[i]; if (pawn2 != pawn && CaravanUtility.IsOwner(pawn2, Faction.OfPlayer)) { flag = true; break; } } bool flag2 = true; TaggedString taggedString = "MessagePawnLostWhileFormingCaravan".Translate(pawn).CapitalizeFirst(); if (!flag) { StopFormingCaravan(lord); taggedString += " " + "MessagePawnLostWhileFormingCaravan_AllLost".Translate(); } else { pawn.inventory.UnloadEverything = true; if (lord.ownedPawns.Contains(pawn)) { lord.Notify_PawnLost(pawn, PawnLostCondition.ForcedByPlayerAction); flag2 = false; } LordJob_FormAndSendCaravan lordJob_FormAndSendCaravan = lord.LordJob as LordJob_FormAndSendCaravan; if (lordJob_FormAndSendCaravan != null && lordJob_FormAndSendCaravan.downedPawns.Contains(pawn)) { if (!removeFromDowned) { flag2 = false; } else { lordJob_FormAndSendCaravan.downedPawns.Remove(pawn); } } if (pawn.jobs != null) { pawn.jobs.EndCurrentJob(JobCondition.Incompletable); } } if (flag2) { Messages.Message(taggedString, pawn, MessageTypeDefOf.NegativeEvent); } }
private bool CheckForErrors(List <Pawn> pawns) { if (!pawns.Any((Pawn x) => CaravanUtility.IsOwner(x, Faction.OfPlayer) && !x.Downed)) { Messages.Message("CaravanMustHaveAtLeastOneColonist".Translate(), this.caravan, MessageSound.RejectInput); return(false); } if (!this.AnyNonDownedColonistLeftInSourceCaravan(pawns)) { Messages.Message("SourceCaravanMustHaveAtLeastOneColonist".Translate(), this.caravan, MessageSound.RejectInput); return(false); } return(true); }
public static bool AnyPotentialCaravanOwner(IEnumerable <IThingHolder> pods, Faction faction) { foreach (IThingHolder pod in pods) { ThingOwner directlyHeldThings = pod.GetDirectlyHeldThings(); for (int i = 0; i < directlyHeldThings.Count; i++) { Pawn pawn = directlyHeldThings[i] as Pawn; if (pawn != null && CaravanUtility.IsOwner(pawn, faction)) { return(true); } } } return(false); }
private bool CheckForErrors(List <Pawn> pawns) { bool result; if (!pawns.Any((Pawn x) => CaravanUtility.IsOwner(x, Faction.OfPlayer) && !x.Downed)) { Messages.Message("CaravanMustHaveAtLeastOneColonist".Translate(), this.caravan, MessageTypeDefOf.RejectInput, false); result = false; } else if (!this.AnyNonDownedColonistLeftInSourceCaravan(pawns)) { Messages.Message("SourceCaravanMustHaveAtLeastOneColonist".Translate(), this.caravan, MessageTypeDefOf.RejectInput, false); result = false; } else { result = true; } return(result); }
public static void RemovePawnFromCaravan(Pawn pawn, Lord lord) { bool flag = false; for (int i = 0; i < lord.ownedPawns.Count; i++) { Pawn pawn2 = lord.ownedPawns[i]; if (pawn2 != pawn && CaravanUtility.IsOwner(pawn2, Faction.OfPlayer)) { flag = true; break; } } bool flag2 = true; string text = "MessagePawnLostWhileFormingCaravan".Translate(new object[] { pawn.LabelIndefinite() }).CapitalizeFirst(); if (!flag) { CaravanFormingUtility.StopFormingCaravan(lord); text = text + " " + "MessagePawnLostWhileFormingCaravan_AllLost".Translate(); } else { pawn.inventory.UnloadEverything = true; if (lord.ownedPawns.Contains(pawn)) { lord.Notify_PawnLost(pawn, PawnLostCondition.ForcedByPlayerAction, null); flag2 = false; } } if (flag2) { Messages.Message(text, pawn, MessageTypeDefOf.NegativeEvent, true); } }
public bool IsOwner(Pawn p) { return(pawns.Contains(p) && CaravanUtility.IsOwner(p, base.Faction)); }
private static bool <ForceReform> m__2(Pawn x) { return(CaravanUtility.IsOwner(x, Faction.OfPlayer)); }
private static bool <CheckForErrors> m__4(Pawn x) { return(CaravanUtility.IsOwner(x, Faction.OfPlayer) && !x.Downed); }