public static PawnKindDef resultingXenomorph(this PawnKindDef p) { PawnKindDef kindDef = null; if (!p.isPotentialHost() || p.RaceProps.baseBodySize > 0.63f) { return(null); } bool human = p.race.defName.Contains("Human") || YautjaBloodedUtility.GetMark(p) == YautjaDefOf.RRY_Hediff_BloodedMHuman; bool yautja = p.race.defName.Contains("Yautja"); bool thrumbo = p.race.defName.Contains("Human") || YautjaBloodedUtility.GetMark(p) == YautjaDefOf.RRY_Hediff_BloodedMThrumbo; bool hound = YautjaBloodedUtility.GetMark(p) == YautjaDefOf.RRY_Hediff_BloodedMHound; bool humanlike = p.RaceProps.Humanlike; bool large = humanlike ? p.RaceProps.baseBodySize > 1f : p.RaceProps.baseBodySize > 4f; bool small = p.RaceProps.baseBodySize > 1f; if (humanlike) { if (human) { if (large) { kindDef = XenomorphDefOf.RRY_Xenomorph_Warrior; } else { if (small) { kindDef = XenomorphDefOf.RRY_Xenomorph_Drone; } else { kindDef = p.isFighter ? XenomorphDefOf.RRY_Xenomorph_Warrior : XenomorphDefOf.RRY_Xenomorph_Drone; } } } else { if (yautja) { kindDef = XenomorphDefOf.RRY_Xenomorph_Predalien; } else { if (large) { kindDef = XenomorphDefOf.RRY_Xenomorph_Warrior; } else { if (small) { kindDef = XenomorphDefOf.RRY_Xenomorph_Drone; } else { kindDef = p.RaceProps.predator ? XenomorphDefOf.RRY_Xenomorph_Warrior : XenomorphDefOf.RRY_Xenomorph_Drone; } } } } } else { if (large) { if (thrumbo) { kindDef = XenomorphDefOf.RRY_Xenomorph_Thrumbomorph; } else { kindDef = XenomorphDefOf.RRY_Xenomorph_Warrior; } } else { if (hound) { kindDef = XenomorphDefOf.RRY_Xenomorph_Runner; } else { if (small) { kindDef = XenomorphDefOf.RRY_Xenomorph_Runner; } else { kindDef = XenomorphDefOf.RRY_Xenomorph_Drone; } } } } return(kindDef); }