static bool Prefix(ref HediffComp_Discoverable __instance)
 {
     if (Find.TickManager.TicksGame % 103 > RefcellRespeedConfig.currentTimeMultiplier - 1)
     {
         return(false);
     }
     __instance.CheckDiscovered();
     return(false);
 }
        protected override IEnumerable <string> ApplyPartWorker(Pawn pawn, object cause)
        {
            IEnumerable <Hediff>         hediffs = pawn.health.hediffSet.hediffs.Where(h => h.def == hediff);
            IEnumerable <BodyPartRecord> parts   = HediffUtility.GetPartsToAffect(pawn, partsToAffect);

            foreach (BodyPartRecord part in parts)
            {
                IEnumerable <Hediff> partHediffs = hediffs.Where(h => h.Part == part);

                if (partHediffs.Any())
                {
                    foreach (Hediff realHediff in partHediffs)
                    {
                        float adjustedSeverity = MathUtility.MoveTowardsOperationClamped(realHediff.Severity, target, delta, operation);

                        if (realHediff.Severity != adjustedSeverity)
                        {
                            int oldIndex = realHediff.CurStageIndex;

                            realHediff.Severity = adjustedSeverity;

                            if (realHediff.ShouldRemove)
                            {
                                yield return(HediffUtility.MessageHediffLost.Translate(pawn.LabelShort, realHediff.LabelBase, ParseCause(cause)));
                            }
                            else if (realHediff.CurStageIndex != oldIndex)
                            {
                                yield return(HediffUtility.MessageHediffChanged.Translate(pawn.LabelShort, realHediff.LabelBase, realHediff.CurStage.label, ParseCause(cause)));
                            }
                        }
                    }
                }
                else
                {
                    Hediff newHediff = HediffMaker.MakeHediff(hediff, pawn);

                    if (delta != default(float))
                    {
                        newHediff.Severity = MathUtility.MoveTowardsOperationClamped(0, target, delta, operation);
                    }
                    if (newHediff.Visible)
                    {
                        HediffComp_Discoverable discoverable = newHediff.TryGetComp <HediffComp_Discoverable>();
                        if (discoverable != null)
                        {
                            //discoverable.discovered = true;
                            typeof(HediffComp_Discoverable).GetField("discovered", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(discoverable, true);
                        }
                        yield return(HediffUtility.MessageHediffGained.Translate(pawn.LabelShort, newHediff.Label, ParseCause(cause)));
                    }
                    pawn.health.AddHediff(newHediff);
                }
            }
            // We're done here.
            yield break;
        }
Beispiel #3
0
 public static bool Prefix(HediffComp_Discoverable __instance)
 {
     if (true &&
         __instance.parent.pawn.IsSkippingTicks() &&
         __instance.parent.pawn.IsValidWildlifeOrWorldPawn())
     {
         if ((Find.TickManager.TicksGame + __instance.parent.pawn.thingIDNumber) % 90 == 0)
         {
             __instance.CheckDiscovered();
         }
     }
     return(false);
 }
 public static void setDiscovered(HediffComp_Discoverable hediffComp_Discoverable, bool value)
 {
     discoveredRef(hediffComp_Discoverable) = value;
 }
 public static bool getDiscovered(HediffComp_Discoverable hediffComp_Discoverable)
 {
     return(discoveredRef(hediffComp_Discoverable));
 }
Beispiel #6
0
 public static void setDiscovered(HediffComp_Discoverable hediffComp_Discoverable, bool value)
 {
     hediffComp_Discoverable.discovered = value;
 }