private void BirthdayBiological() { StringBuilder stringBuilder = new StringBuilder(); foreach (HediffGiver_Birthday current in AgeInjuryUtility.RandomHediffsToGainOnBirthday(this.pawn, this.AgeBiologicalYears)) { if (current.TryApply(this.pawn, null)) { if (stringBuilder.Length != 0) { stringBuilder.AppendLine(); } stringBuilder.Append(" - " + current.hediff.LabelCap); } } if (this.pawn.RaceProps.Humanlike && PawnUtility.ShouldSendNotificationAbout(this.pawn) && stringBuilder.Length > 0) { string text = "BirthdayBiologicalAgeInjuries".Translate(new object[] { this.pawn, this.AgeBiologicalYears, stringBuilder }).AdjustedFor(this.pawn, "PAWN"); Find.LetterStack.ReceiveLetter("LetterLabelBirthday".Translate(), text, LetterDefOf.NegativeEvent, this.pawn, null, null); } }
private static void GenerateInitialHediffs(Pawn pawn, PawnGenerationRequest request) { int num = 0; while (true) { AgeInjuryUtility.GenerateRandomOldAgeInjuries(pawn, !request.AllowDead); PawnTechHediffsGenerator.GeneratePartsAndImplantsFor(pawn); PawnAddictionHediffsGenerator.GenerateAddictionsAndTolerancesFor(pawn); if (request.AllowDead && pawn.Dead) { return; } if (!request.AllowDowned && pawn.Downed) { pawn.health.Reset(); num++; if (num > 80) { break; } continue; } return; } Log.Warning("Could not generate old age injuries for " + pawn.ThingID + " of age " + pawn.ageTracker.AgeBiologicalYears + " that allow pawn to move after " + 80 + " tries. request=" + request); }
private void BirthdayBiological(Pawn pawn, float age) { foreach (HediffGiver_Birthday item in AgeInjuryUtility.RandomHediffsToGainOnBirthday(pawn, Mathf.RoundToInt(age))) { if ((age > 150 && Rand.Chance(.01f * age))) { item.TryApply(pawn); } } }
private static void GenerateInitialHediffs(Pawn pawn, PawnGenerationRequest request) { int num = 0; while (true) { AgeInjuryUtility.GenerateRandomOldAgeInjuries(pawn, !request.AllowDead); PawnTechHediffsGenerator.GenerateTechHediffsFor(pawn); PawnAddictionHediffsGenerator.GenerateAddictionsAndTolerancesFor(pawn); if (request.AllowDead && pawn.Dead) { break; } if (request.AllowDowned || !pawn.Downed) { break; } pawn.health.Reset(); num++; if (num > 80) { goto Block_4; } } goto IL_D7; Block_4: Log.Warning(string.Concat(new object[] { "Could not generate old age injuries for ", pawn.ThingID, " of age ", pawn.ageTracker.AgeBiologicalYears, " that allow pawn to move after ", 80, " tries. request=", request }), false); IL_D7: if (!pawn.Dead && (request.Faction == null || !request.Faction.IsPlayer)) { int num2 = 0; while (pawn.health.HasHediffsNeedingTend(false)) { num2++; if (num2 > 10000) { Log.Error("Too many iterations.", false); break; } TendUtility.DoTend(null, pawn, null); } } }
private static void GenerateInitialHediffs(Pawn pawn, PawnGenerationRequest request) { int num = 0; while (true) { AgeInjuryUtility.GenerateRandomOldAgeInjuries(pawn, !request.AllowDead); PawnTechHediffsGenerator.GenerateTechHediffsFor(pawn); if (request.AllowAddictions) { PawnAddictionHediffsGenerator.GenerateAddictionsAndTolerancesFor(pawn); } if ((request.AllowDead && pawn.Dead) || request.AllowDowned || !pawn.Downed) { break; } pawn.health.Reset(); num++; if (num > 80) { Log.Warning("Could not generate old age injuries for " + pawn.ThingID + " of age " + pawn.ageTracker.AgeBiologicalYears + " that allow pawn to move after " + 80 + " tries. request=" + request); break; } } if (pawn.Dead || (request.Faction != null && request.Faction.IsPlayer)) { return; } int num2 = 0; while (true) { if (pawn.health.HasHediffsNeedingTend()) { num2++; if (num2 > 10000) { break; } TendUtility.DoTend(null, pawn, null); continue; } return; } Log.Error("Too many iterations."); }
private void RaceAgainstTime(Pawn pawn, float age) { if (Rand.Chance(age / maxAge)) { AgeInjuryUtility.GenerateRandomOldAgeInjuries(pawn, false); } if (Rand.Chance((age / maxAge) * .5f)) { if (!pawn.health.hediffSet.HasHediff(HediffDef.Named("HeartArteryBlockage"))) { HealthUtility.AdjustSeverity(pawn, HediffDef.Named("HeartArteryBlockage"), Rand.Range(.095f, .195f)); } else { HealthUtility.AdjustSeverity(pawn, HediffDef.Named("HeartArteryBlockage"), Rand.Range(.0095f * this.parent.Severity, .0195f * this.parent.Severity)); } } }
private void BirthdayBiological() { StringBuilder stringBuilder = new StringBuilder(); foreach (HediffGiver_Birthday item in AgeInjuryUtility.RandomHediffsToGainOnBirthday(pawn, AgeBiologicalYears)) { if (item.TryApply(pawn)) { if (stringBuilder.Length != 0) { stringBuilder.AppendLine(); } stringBuilder.Append(" - " + item.hediff.LabelCap); } } if (pawn.RaceProps.Humanlike && PawnUtility.ShouldSendNotificationAbout(pawn) && stringBuilder.Length > 0) { string str = "BirthdayBiologicalAgeInjuries".Translate(pawn, AgeBiologicalYears, stringBuilder).AdjustedFor(pawn); Find.LetterStack.ReceiveLetter("LetterLabelBirthday".Translate(), str, LetterDefOf.NegativeEvent, (TargetInfo)pawn); } }
private static void GenerateInitialHediffs(Pawn pawn, PawnGenerationRequest request) { int num = 0; while (true) { AgeInjuryUtility.GenerateRandomOldAgeInjuries(pawn, !request.AllowDead); PawnTechHediffsGenerator.GeneratePartsAndImplantsFor(pawn); PawnAddictionHediffsGenerator.GenerateAddictionsAndTolerancesFor(pawn); if (request.AllowDead && pawn.Dead) { break; } if (request.AllowDowned || !pawn.Downed) { return; } pawn.health.Reset(); num++; if (num > 80) { goto Block_4; } } return; Block_4: Log.Warning(string.Concat(new object[] { "Could not generate old age injuries for ", pawn.ThingID, " of age ", pawn.ageTracker.AgeBiologicalYears, " that allow pawn to move after ", 80, " tries. request=", request })); }