public WorldPawnSituation GetSituation(Pawn p) { if (!Contains(p)) { return(WorldPawnSituation.None); } if (p.Dead || p.Destroyed) { return(WorldPawnSituation.Dead); } if (PawnUtility.IsFactionLeader(p)) { return(WorldPawnSituation.FactionLeader); } if (PawnUtility.IsKidnappedPawn(p)) { return(WorldPawnSituation.Kidnapped); } if (p.IsBorrowedByAnyFaction()) { return(WorldPawnSituation.Borrowed); } if (p.IsCaravanMember()) { return(WorldPawnSituation.CaravanMember); } if (PawnUtility.IsTravelingInTransportPodWorldObject(p)) { return(WorldPawnSituation.InTravelingTransportPod); } if (PawnUtility.ForSaleBySettlement(p)) { return(WorldPawnSituation.ForSaleBySettlement); } if (QuestUtility.IsReservedByQuestOrQuestBeingGenerated(p)) { return(WorldPawnSituation.ReservedByQuest); } if (p.teleporting) { return(WorldPawnSituation.Teleporting); } return(WorldPawnSituation.Free); }
private string GetCriticalPawnReason(Pawn pawn) { if (pawn.Discarded) { return(null); } if (PawnUtility.EverBeenColonistOrTameAnimal(pawn) && pawn.RaceProps.Humanlike) { return("Colonist"); } if (PawnGenerator.IsBeingGenerated(pawn)) { return("Generating"); } if (PawnUtility.IsFactionLeader(pawn)) { return("FactionLeader"); } if (PawnUtility.IsKidnappedPawn(pawn)) { return("Kidnapped"); } if (pawn.IsCaravanMember()) { return("CaravanMember"); } if (PawnUtility.IsTravelingInTransportPodWorldObject(pawn)) { return("TransportPod"); } if (PawnUtility.ForSaleBySettlement(pawn)) { return("ForSale"); } if (Find.WorldPawns.ForcefullyKeptPawns.Contains(pawn)) { return("ForceKept"); } if (pawn.SpawnedOrAnyParentSpawned) { return("Spawned"); } if (!pawn.Corpse.DestroyedOrNull()) { return("CorpseExists"); } if (pawn.RaceProps.Humanlike && Current.ProgramState == ProgramState.Playing) { if (Find.PlayLog.AnyEntryConcerns(pawn)) { return("InPlayLog"); } if (Find.BattleLog.AnyEntryConcerns(pawn)) { return("InBattleLog"); } } if (Current.ProgramState == ProgramState.Playing && Find.TaleManager.AnyActiveTaleConcerns(pawn)) { return("InActiveTale"); } if (QuestUtility.IsReservedByQuestOrQuestBeingGenerated(pawn)) { return("ReservedByQuest"); } return(null); }