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); } } }
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); } }
public static bool GetGenderLabel(Pawn pawn, ref string __result) { if (!PawnHelper.is_human(pawn)) { return(true); } __result = BetterGenderUtility.Noun(pawn); return(false); }
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)); }