public static bool isPotentialHost(this PawnKindDef p, out string failReason) { failReason = string.Empty; if (!p.race.race.body.AllParts.Any(x => x.def.defName.Contains("Head"))) { failReason = "HasHead"; return(false); } if (p.isNeomorph()) { failReason = "isNeomorph"; return(false); } if (p.isXenomorph()) { failReason = "isXenomorph"; return(false); } if (UtilChjAndroids.ChjAndroid) { if (p.race.defName == "ChjAndroid" || p.race.defName == "ChjDroid") { failReason = "ChjAndroid"; return(false); } } if (UtilTieredAndroids.TieredAndroid) { if (p.race.defName.Contains("Android" + "Tier")) { failReason = "TieredAndroid"; return(false); } } if (p.RaceProps.body.defName.Contains("AIRobot")) { failReason = "AIRobot"; return(false); } if (p.race.defName.Contains("Android")) { failReason = "Android"; return(false); } if (p.race.defName.Contains("Droid")) { failReason = "Droid"; return(false); } if (p.race.defName.Contains("Mech")) { failReason = "Mech"; return(false); } if (p.race.defName.Contains("TM_Undead")) { failReason = "TM_Undead"; return(false); } if (p.race.race.FleshType.defName.Contains("TM_StoneFlesh")) { failReason = "TM_StoneFlesh"; return(false); } if (p.race.defName.Contains("TM_") && p.race.defName.Contains("Minion")) { failReason = "TM_Minion"; return(false); } if (p.race.defName.Contains("TM_Demon")) { failReason = "TM_Demon"; return(false); } if (p.race.race.FleshType.defName.Contains("ChaosDeamon")) { failReason = "ChaosDeamon"; return(false); } if (p.race.race.FleshType.defName.Contains("Necron")) { failReason = "Necron"; return(false); } if (p.race.race.FleshType.defName.Contains("EldarConstruct")) { failReason = "EldarConstruct"; return(false); } if (p.race.race.FleshType.defName.Contains("ImperialConstruct")) { failReason = "ImperialConstruct"; return(false); } if (p.race.race.FleshType.defName.Contains("MechanicusConstruct")) { failReason = "MechanicusConstruct"; return(false); } if (p.RaceProps.IsMechanoid) { failReason = "IsMechanoid"; return(false); } if (!p.RaceProps.IsFlesh) { failReason = "IsFlesh"; return(false); } if (p.defaultFactionType == XenomorphDefOf.RRY_Xenomorph) { failReason = "IsXenomorphFaction"; return(false); } if (p.race.race.baseBodySize < 0.65f && !p.RaceProps.Humanlike) { failReason = "NonhumanlikeTooSmall"; return(false); } return(true); }
public static bool isPotentialHost(this PawnKindDef p) { return(XenomorphUtil.isInfectablePawnKind(p) && !p.isXenomorph() && !p.isNeomorph()); }