예제 #1
0
        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);
         }
     }
 }
예제 #4
0
        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);
                }
            }
        }
예제 #5
0
        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);
            }
        }
예제 #8
0
        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
            }));
        }