コード例 #1
0
 private void AntibioticEffect(Pawn pawn, List <HediffDef> extraHediffs)
 {
     foreach (Hediff hediff in from x in pawn.health.hediffSet.hediffs
              where x.def.makesSickThought || extraHediffs.Contains(x.def)
              select x)
     {
         if (hediff.TendableNow())
         {
             hediff.Tended(0.8f);
         }
         HediffComp_Immunizable hediffComp_Immunizable = hediff.TryGetComp <HediffComp_Immunizable>();
         if (hediffComp_Immunizable != null)
         {
             hediff.Severity -= hediffComp_Immunizable.Props.severityPerDayNotImmune / GenDate.TicksPerDay * 1.2f * GenDate.TicksPerHour;
         }
         HediffComp_GrowthMode hediffComp_GrowthMode = hediff.TryGetComp <HediffComp_GrowthMode>();
         if (hediffComp_GrowthMode != null)
         {
             hediff.Severity -= hediffComp_GrowthMode.Props.severityPerDayGrowing / GenDate.TicksPerDay * 1.5f * GenDate.TicksPerHour;
         }
         if (hediff.Severity <= hediff.def.initialSeverity || !hediff.Visible)
         {
             pawn.health.RemoveHediff(hediff);
             return;
         }
     }
 }
コード例 #2
0
        private void AntibioticEffect(Pawn pawn, List <HediffDef> extraHediffs, float minEffect = 0.025f)
        {
            List <Hediff> hediffs = (from x in pawn.health.hediffSet.hediffs
                                     where x.def.makesSickThought || extraHediffs.Contains(x.def)
                                     select x).ToList();

            for (int i = hediffs.Count - 1; i >= 0; i--)
            {
                if (hediffs[i].TendableNow())
                {
                    hediffs[i].Tended(0.8f);
                }
                float num = 0f;
                HediffComp_Immunizable hediffComp_Immunizable = hediffs[i].TryGetComp <HediffComp_Immunizable>();
                if (hediffComp_Immunizable != null)
                {
                    num += Mathf.Abs(hediffComp_Immunizable.Props.severityPerDayNotImmune / GenDate.TicksPerDay * 1.2f * GenDate.TicksPerHour);
                }
                HediffComp_GrowthMode hediffComp_GrowthMode = hediffs[i].TryGetComp <HediffComp_GrowthMode>();
                if (hediffComp_GrowthMode != null)
                {
                    num += Mathf.Abs(hediffComp_GrowthMode.Props.severityPerDayGrowing / GenDate.TicksPerDay * 1.5f * GenDate.TicksPerHour);
                }
                HediffComp_SeverityPerDay hediffComp_SeverityPerDay = hediffs[i].TryGetComp <HediffComp_SeverityPerDay>();
                if (hediffComp_SeverityPerDay != null)
                {
                    //num += Mathf.Abs(((HediffCompProperties_SeverityPerDay)hediffComp_SeverityPerDay.props).severityPerDay / GenDate.TicksPerDay * 2f * GenDate.TicksPerHour);
                    if (hediffComp_SeverityPerDay.props is HediffCompProperties_SeverityPerDay prop)
                    {
                        num += Mathf.Abs(prop.severityPerDay / GenDate.TicksPerDay * 2f * GenDate.TicksPerHour);
                    }
                }
                if (num < minEffect)
                {
                    num = minEffect;
                }
                if (hediffs[i].Severity < num)
                {
                    pawn.health.RemoveHediff(hediffs[i]);
                    continue;
                }
                hediffs[i].Severity -= num;
                if (!hediffs[i].Visible)
                {
                    pawn.health.RemoveHediff(hediffs[i]);
                }
            }
        }