public static void AddHair(this RacePubertySetting pubertySettings, Pawn pawn)
        {
            IEnumerable <PubertySetting> settings = pubertySettings.list.Where(x => x.IsSecondaryAssigned() &&
                                                                               (x.IsSecondaryAll() || x.GetSecondaryGender() == pawn.gender) && x.Where() != BodyPartDefOf.Chest);

            //HediffDef bodyHair = PubertyHelper.First(hediffDefs);
            foreach (PubertySetting bodyHair in settings)
            {
                BodyPartRecord whereHair = pawn.Where(bodyHair.Where());

                var which = bodyHair.Which();
#if DEBUG
                Log.Message("Adding hair to " + pawn?.Name + " of " + pawn?.Faction?.Name + " AT " + whereHair + " of type " + which);
#endif
                var hediff = PawnHelper.GetHediff(pawn, which, whereHair, false);
                if (hediff == null)
                {
                    hediff          = pawn.health.AddHediff(which, whereHair);
                    hediff.Severity = 0.05f;
                }
                else
                {
                    hediff.Severity = Math.Min(hediff.Severity + 0.05f, 1f);
                }
            }
        }
Exemple #2
0
        protected override ThoughtState CurrentStateInternal(Pawn p)
        {
            if (p == null)
            {
                return(false);
            }

            //if (p.ageTracker.AgeBiologicalYears > SettingHelper.latest.PubertyOnset+1) //return false;
            if (PawnHelper.isHaveHediff(p, HediffDefOf.LifeStages_Adult))
            {
                return(false);
            }

            if (PawnHelper.isHaveHediff(p, HediffDefOf.LifeStages_Puberty))
            {
                return(false);
            }

            if (PawnHelper.isHaveHediff(p, HediffDefOf.LifeStages_Youth))
            {
                return(false);
            }

            PawnGenerator_GeneratePawnRelations_Patch.Postfix(p);

            return(false);
        }
        private static void MoreChest(Pawn pawn, HediffDef chestThing)
        {
            if (pawn.health.hediffSet.HasHediff(chestThing))
            {
                return;
            }

            pawn.health.AddHediff(chestThing, BodyCache.Chest(pawn));

            var hediff = PawnHelper.GetHediff(pawn, chestThing, BodyCache.Chest(pawn), false);

            if (hediff == null)
            {
                hediff          = pawn.health.AddHediff(chestThing, BodyCache.Chest(pawn));
                hediff.Severity = 0.05f;
            }
            else
            {
                hediff.Severity = Math.Min(hediff.Severity + 0.1f * Rand.Value, 1f);
            }

            IEnumerable <Hediff> enumerable = pawn.health.hediffSet.hediffs.Where(x =>
                                                                                  x.def == HediffDefOf.LifeStages_NormalChest).ToList();

            foreach (var removeMe in enumerable)
            {
                pawn.health.RemoveHediff(removeMe);
            }
        }
Exemple #4
0
 public static bool GetGenderLabel(Pawn pawn, ref string __result)
 {
     if (!PawnHelper.is_human(pawn))
     {
         return(true);
     }
     __result = BetterGenderUtility.Noun(pawn);
     return(false);
 }
Exemple #5
0
 public static bool GetObjective(Pawn p, ref string __result)
 {
     if (!PawnHelper.is_human(p))
     {
         return(true);
     }
     __result = BetterGenderUtility.Objective(p);
     return(false);
 }
        public override IEnumerable <BodyPartRecord> GetPartsToApplyOn(Pawn pawn, RecipeDef recipe)
        {
            if (PawnHelper.isHaveHediff(pawn, HediffDefOf.LifeStages_Transgendered) || pawn.gender == Gender.None)
            {
                return(pawn.LifeStages_ReproductiveOrgans());
            }

            return(new List <BodyPartRecord>());
        }
        public static void Postfix(Pawn pawn)
        {
            if (!PawnHelper.is_human(pawn))
            {
                return;
            }

            if (BodyPartDefOf.Maturity == null)
            {
                throw new Exception("BodyPartDefOf.Maturity missing!");
            }

            var maturityPart = PawnHelper.MaturityPart(pawn);

            if (maturityPart == null)
            {
                return;
            }

            if (pawn.health.hediffSet.HasHediff(HediffDefOf.LifeStages_Adult))
            {
                return;
            }

            var pubertySettings = pawn.RacePubertySetting();

            ChestManager.intialChest(pawn);

            if (pubertySettings.instantPubertySetting)
            {
                DoPuberty(pawn, maturityPart);
                return;
            }

            var yearsOld = pawn.ageTracker.AgeBiologicalYearsFloat;

            if (yearsOld < SettingHelper.latest.PubertyOnset)
            {
                var dif = pawn.health.AddHediff(HediffDefOf.LifeStages_Youth, maturityPart, null);
                dif.Severity = 1f / (1 + yearsOld);
            }
            else if (yearsOld < SettingHelper.latest.PubertyOnset + 1)
            {
                pawn.health.AddHediff(HediffDefOf.LifeStages_Puberty, maturityPart, null);
            }
            else
            {
                DoPuberty(pawn, maturityPart);
            }
        }
        protected override ThoughtState CurrentStateInternal(Pawn p)
        {
            if (p == null)
            {
                return(false);
            }

            if (!PawnHelper.isHaveHediff(p, HediffDefOf.LifeStages_Puberty))
            {
                return(false);
            }

            return(PawnHelper.isHaveHediff(p, HediffDefOf.LifeStages_Transgendered) ? ThoughtState.ActiveAtStage(1) : ThoughtState.ActiveAtStage(pubertyFeels(p) ? 1 : 0));
        }
        public override void ApplyOnPawn(Pawn pawn, BodyPartRecord part, Pawn billDoer, List <Thing> ingredients, Bill bill = null)
        {
            if (billDoer != null)
            {
                if (CheckSurgeryFail(billDoer, pawn, ingredients, part, bill))
                {
                    return;
                }
                TaleRecorder.RecordTale(TaleDefOf.DidSurgery, billDoer, pawn);
            }
            pawn.health.AddHediff(recipe.addsHediff, part, null);

            pawn.gender = Gender.None;
            PawnHelper.ResolvePuberty(pawn);
        }
        public override void ApplyOnPawn(Pawn pawn, BodyPartRecord part, Pawn billDoer, List <Thing> ingredients, Bill bill)
        {
            if (billDoer != null)
            {
                if (!PawnHelper.isHaveHediff(pawn, HediffDefOf.LifeStages_Youth) && CheckSurgeryFail(billDoer, pawn, ingredients, part, bill))
                {
                    return;
                }
                TaleRecorder.RecordTale(TaleDefOf.DidSurgery, billDoer, pawn);
            }

            PawnHelper.ResolveTransgender(pawn);

            pawn.gender = newGender(pawn);

            resolveSexOrgans(pawn);
        }
 public override void PostRemoved()
 {
     base.PostRemoved();
     pawn.health.AddHediff(HediffDefOf.LifeStages_Adult, PawnHelper.MaturityPart(pawn));
 }