public override IEnumerable <BodyPartRecord> GetPartsToApplyOn(Pawn p, RecipeDef r)
        {
            var gen_blo = Genital_Helper.breasts_blocked(p);

            foreach (BodyPartRecord part in base.GetPartsToApplyOn(p, r))
            {
                if ((!gen_blo) || (part != xxx.breasts))
                {
                    yield return(part);
                }
            }
        }
예제 #2
0
 public override IEnumerable <BodyPartRecord> GetPartsToApplyOn(Pawn p, RecipeDef r)
 {
     if (p.gender == Gender.Female)
     {
         foreach (var part in p.health.hediffSet.GetNotMissingParts())
         {
             if (r.appliedOnFixedBodyParts.Contains(part.def) &&
                 ((part != xxx.breasts) || (!Genital_Helper.breasts_blocked(p))))
             {
                 yield return(part);
             }
         }
     }
 }
        public override IEnumerable <BodyPartRecord> GetPartsToApplyOn(Pawn pawn, RecipeDef recipeDef)
        {
            var chest = Genital_Helper.get_breasts(pawn);

            if (Genital_Helper.breasts_blocked(pawn))
            {
                yield break;
            }

            if (BreastSize_Helper.TryGetBreastSize(pawn, out var size) &&
                size > BreastSize_Helper.GetSize(Genital_Helper.flat_breasts))
            {
                yield return(chest);
            }
        }
        public override IEnumerable <BodyPartRecord> GetPartsToApplyOn(Pawn p, RecipeDef r)
        {
            if (Genital_Helper.has_breasts(p))
            {
                bool blocked = Genital_Helper.breasts_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);
                    }
                }
            }
        }
예제 #5
0
        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 IEnumerable <BodyPartRecord> GetPartsToApplyOn(Pawn pawn, RecipeDef recipeDef)
        {
            var chest = Genital_Helper.get_breasts(pawn);

            if (pawn.health.hediffSet.PartIsMissing(chest) ||
                Genital_Helper.breasts_blocked(pawn))
            {
                yield break;
            }

            var old = recipeDef.removesHediff;

            if (old == null ? BreastSize_Helper.HasNipplesOnly(pawn, chest) : pawn.health.hediffSet.HasHediff(old, chest))
            {
                yield return(chest);
            }
        }
예제 #7
0
 public override bool blocked(Pawn p)
 {
     return(Genital_Helper.breasts_blocked(p) || xxx.is_slime(p));             //|| xxx.is_demon(p)
 }