示例#1
0
 public static bool isPotentialHost(this Pawn p, out string FailReason, bool setDefaults = false, bool allowImpreg = false, bool allowHugged = true)
 {
     if (!p.health.hediffSet.HasHead)
     {
         FailReason = "HasHead";
         return(false);
     }
     if (p.Dead)
     {
         FailReason = "Dead";
         return(false);
     }
     if (!p.health.capacities.CapableOf(PawnCapacityDefOf.Breathing) || !p.health.capacities.CapableOf(PawnCapacityDefOf.Eating))
     {
         FailReason = "Doesnt Eat or Breath";
         return(false);
     }
     if (p.isHost())
     {
         FailReason = "Host";
         if (p.isNeoHost())
         {
             FailReason = "Neo " + FailReason;
         }
         if (p.isXenoHost() && !allowImpreg)
         {
             FailReason = "Xeno " + FailReason;
         }
         return(false);
     }
     if (XenomorphUtil.IsXenomorphFaction(p))
     {
         FailReason = "Xenomorph Faction Member";
         return(false);
     }
     if (p.BodySize < 0.65f && !p.RaceProps.Humanlike)
     {
         FailReason = "NonhumanlikeTooSmall";
         return(false);
     }
     if (!p.def.isPotentialHost(out FailReason, setDefaults))
     {
         return(false);
     }
     return(true);
 }
 public static bool isPotentialHost(this Pawn p, out string failReason)
 {
     failReason = string.Empty;
     if (!p.health.hediffSet.HasHead)
     {
         failReason = "HasHead";
         return(false);
     }
     if (p.isNeomorph())
     {
         failReason = "isNeomorph";
         return(false);
     }
     if (p.isXenomorph())
     {
         failReason = "isXenomorph";
         return(false);
     }
     if (p.Dead)
     {
         failReason = "Dead";
         return(false);
     }
     if (UtilChjAndroids.ChjAndroid)
     {
         if (p.kindDef.race.defName == "ChjAndroid" || p.kindDef.race.defName == "ChjDroid")
         {
             failReason = "ChjAndroid";
             return(false);
         }
     }
     if (UtilTieredAndroids.TieredAndroid)
     {
         if (p.kindDef.race.defName.Contains("Android" + "Tier"))
         {
             failReason = "TieredAndroid";
             return(false);
         }
     }
     if (p.RaceProps.body.defName.Contains("AIRobot"))
     {
         failReason = "AIRobot";
         return(false);
     }
     if (p.kindDef.race.defName.Contains("Android"))
     {
         failReason = "Android";
         return(false);
     }
     if (p.kindDef.race.defName.Contains("Droid"))
     {
         failReason = "Droid";
         return(false);
     }
     if (p.kindDef.race.defName.Contains("Mech"))
     {
         failReason = "Mech";
         return(false);
     }
     if (p.kindDef.race.defName.Contains("TM_Undead"))
     {
         failReason = "TM_Undead";
         return(false);
     }
     if (p.kindDef.race.race.FleshType.defName.Contains("TM_StoneFlesh"))
     {
         failReason = "TM_StoneFlesh";
         return(false);
     }
     if (p.kindDef.race.defName.Contains("TM_") && p.kindDef.race.defName.Contains("Minion"))
     {
         failReason = "TM_Minion";
         return(false);
     }
     if (p.kindDef.race.defName.Contains("TM_Demon"))
     {
         failReason = "TM_Demon";
         return(false);
     }
     if (p.kindDef.race.race.FleshType.defName.Contains("ChaosDeamon"))
     {
         failReason = "ChaosDeamon";
         return(false);
     }
     if (p.kindDef.race.race.FleshType.defName.Contains("Necron"))
     {
         failReason = "Necron";
         return(false);
     }
     if (p.kindDef.race.race.FleshType.defName.Contains("EldarConstruct"))
     {
         failReason = "EldarConstruct";
         return(false);
     }
     if (p.kindDef.race.race.FleshType.defName.Contains("ImperialConstruct"))
     {
         failReason = "ImperialConstruct";
         return(false);
     }
     if (p.kindDef.race.race.FleshType.defName.Contains("MechanicusConstruct"))
     {
         failReason = "MechanicusConstruct";
         return(false);
     }
     if (p.RaceProps.IsMechanoid)
     {
         failReason = "IsMechanoid";
         return(false);
     }
     if (!p.RaceProps.IsFlesh)
     {
         failReason = "notFlesh";
         return(false);
     }
     if (p.isHost())
     {
         failReason = "isHost";
         if (p.isNeoHost())
         {
             failReason = "isHostNeo";
         }
         if (p.isXenoHost())
         {
             failReason = "isHostXeno";
         }
         return(false);
     }
     if (XenomorphUtil.IsXenomorphFaction(p))
     {
         failReason = "IsXenomorphFaction";
         return(false);
     }
     if (p.BodySize < 0.65f && !p.RaceProps.Humanlike)
     {
         failReason = "NonhumanlikeTooSmall";
         return(false);
     }
     return(true);
 }