public override IEnumerable <BodyPartRecord> GetPartsToApplyOn(Pawn p, RecipeDef r) { var gen_blo = Genital_Helper.genitals_blocked(p); if (p.gender == Gender.Male) { foreach (var part in base.GetPartsToApplyOn(p, r)) { if ((!gen_blo) || (part != xxx.genitals)) { yield return(part); } } } else if (xxx.is_female(p)) //This allows futas { foreach (var part in base.GetPartsToApplyOn(p, r)) { if ((!gen_blo) || (part != xxx.genitals)) { yield return(part); } } } }
public override IEnumerable <BodyPartRecord> GetPartsToApplyOn(Pawn p, RecipeDef r) { foreach (var part in p.health.hediffSet.GetNotMissingParts()) { if (r.appliedOnFixedBodyParts.Contains(part.def) && ((part != xxx.genitals) || (!Genital_Helper.genitals_blocked(p)))) { yield return(part); } } }
public override IEnumerable <BodyPartRecord> GetPartsToApplyOn(Pawn p, RecipeDef r) { var gen_blo = Genital_Helper.genitals_blocked(p); foreach (BodyPartRecord part in base.GetPartsToApplyOn(p, r)) { if ((!gen_blo) || (part != xxx.genitals)) { yield return(part); } } }
public override IEnumerable <BodyPartRecord> GetPartsToApplyOn(Pawn p, RecipeDef r) { bool blocked = Genital_Helper.genitals_blocked(p) || xxx.is_slime(p); //|| xxx.is_demon(p); bool has_vag = Genital_Helper.has_vagina(p); bool has_cock = Genital_Helper.has_penis(p) || Genital_Helper.has_penis_infertile(p) || Genital_Helper.has_ovipositorF(p); foreach (BodyPartRecord part in base.GetPartsToApplyOn(p, r)) { if (r.appliedOnFixedBodyParts.Contains(part.def) && !blocked && (!has_vag && has_cock)) { yield return(part); } } }
public override IEnumerable <BodyPartRecord> GetPartsToApplyOn(Pawn p, RecipeDef r) { if (Genital_Helper.has_genitals(p)) { bool blocked = Genital_Helper.genitals_blocked(p) || xxx.is_slime(p); //|| xxx.is_demon(p) foreach (BodyPartRecord part in p.health.hediffSet.GetNotMissingParts()) { if (r.appliedOnFixedBodyParts.Contains(part.def) && (!blocked)) { yield return(part); } } } }
public override IEnumerable <BodyPartRecord> GetPartsToApplyOn(Pawn pawn, RecipeDef recipe) { bool blocked = Genital_Helper.genitals_blocked(pawn) || xxx.is_slime(pawn); if (!blocked) { foreach (BodyPartRecord record in pawn.RaceProps.body.AllParts.Where(x => recipe.appliedOnFixedBodyParts.Contains(x.def))) { if (!pawn.health.hediffSet.hediffs.Any((Hediff x) => x.def == recipe.addsHediff)) { yield return(record); } } } }
public override IEnumerable <BodyPartRecord> GetPartsToApplyOn(Pawn p, RecipeDef r) { //dont add artifical - peg, hydraulics, bionics, archo, ovi if (r.addsHediff.addedPartProps?.solid ?? false) { yield break; } //dont add if artifical parts present if (p.health.hediffSet.hediffs.Any((Hediff hed) => (hed.Part != null) && r.appliedOnFixedBodyParts.Contains(hed.Part.def) && (hed.def.addedPartProps?.solid ?? false))) { yield break; } var partBPR = Genital_Helper.get_genitalsBPR(p); var parts = Genital_Helper.get_PartsHediffList(p, partBPR); //dont add if no ovi //if (Genital_Helper.has_ovipositorF(p, parts) || Genital_Helper.has_ovipositorM(p, parts)) // yield break; //dont add if same part type not present yet if (!Genital_Helper.has_vagina(p, parts) && r.defName.ToLower().Contains("v****a")) { yield break; } if (!Genital_Helper.has_penis_fertile(p, parts) && r.defName.ToLower().Contains("penis")) { yield break; } //cant install parts when part blocked, on slimes, on demons bool blocked = (xxx.is_slime(p) || //|| xxx.is_demon(p) (Genital_Helper.genitals_blocked(p) && r.appliedOnFixedBodyParts.Contains(xxx.genitalsDef)) || (Genital_Helper.anus_blocked(p) && r.appliedOnFixedBodyParts.Contains(xxx.anusDef)) || (Genital_Helper.breasts_blocked(p) && r.appliedOnFixedBodyParts.Contains(xxx.breastsDef))); foreach (BodyPartRecord part in base.GetPartsToApplyOn(p, r)) { if (r.appliedOnFixedBodyParts.Contains(part.def) && !blocked) { yield return(part); } } }
public override bool blocked(Pawn p) { return(Genital_Helper.genitals_blocked(p) || xxx.is_slime(p)); //|| xxx.is_demon(p) }