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