コード例 #1
0
 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);
 }
コード例 #2
0
 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);
 }