// Token: 0x06000079 RID: 121 RVA: 0x000066F4 File Offset: 0x000048F4
 public void MSUseStim(Pawn p, bool Using)
 {
     if (Using && p != null)
     {
         if (this.def.defName == "MSBattleStimBelt")
         {
             MSExoticUtility.ChkMSBattleStim(p, out string Reason, out bool Passed);
             if (!Passed)
             {
                 Messages.Message("MSExotic.ReasonPrefix".Translate() + Reason, p, MessageTypeDefOf.NeutralEvent, false);
                 return;
             }
             this.StimUses--;
             MSExoticUtility.DoMSBattleStim(p, this.def);
             if (this.StimUses < 1 && !this.DestroyedOrNull())
             {
                 this.Destroy(DestroyMode.Vanish);
                 return;
             }
         }
         else
         {
             Log.Message(string.Concat(new string[]
             {
                 "ERR: Stim Worn item def not found for ",
                 this.def.label.CapitalizeFirst(),
                 " : (",
                 this.def.defName,
                 ")"
             }), false);
         }
     }
 }
Пример #2
0
        // Token: 0x06000079 RID: 121 RVA: 0x000066F4 File Offset: 0x000048F4
        public void MSUseStim(Pawn p, bool Using)
        {
            if (!Using || p == null)
            {
                return;
            }

            if (def.defName == "MSBattleStimBelt")
            {
                MSExoticUtility.ChkMSBattleStim(p, out var Reason, out var Passed);
                if (!Passed)
                {
                    Messages.Message("MSExotic.ReasonPrefix".Translate() + Reason, p, MessageTypeDefOf.NeutralEvent,
                                     false);
                    return;
                }

                StimUses--;
                MSExoticUtility.DoMSBattleStim(p, def);
                if (StimUses < 1 && !this.DestroyedOrNull())
                {
                    Destroy();
                }
            }
            else
            {
                Log.Message(string.Concat("ERR: Stim Worn item def not found for ", def.label.CapitalizeFirst(),
                                          " : (", def.defName, ")"));
            }
        }
Пример #3
0
        // Token: 0x0600004D RID: 77 RVA: 0x00005450 File Offset: 0x00003650
        public override void DoEffect(Pawn usedBy)
        {
            base.DoEffect(usedBy);
            if (parent.def == MSExoticDefOf.ThingDefOf.MSImmunisation)
            {
                MSExoticUtility.DoMSImmunisation(usedBy, parent.def);
            }

            if (parent.def == MSExoticDefOf.ThingDefOf.MSCerebrax)
            {
                MSExoticUtility.DoMSCerebrax(usedBy, parent.def);
            }

            if (parent.def == MSExoticDefOf.ThingDefOf.MSBattleStim)
            {
                MSExoticUtility.DoMSBattleStim(usedBy, parent.def);
            }

            if (MSExoticUtility.GetIsTranscendence(parent.def))
            {
                MSExoticUtility.DoMSTranscendence(usedBy, parent.def);
            }

            if (parent.def == MSExoticDefOf.ThingDefOf.MSPerpetuity)
            {
                MSExoticUtility.DoMSPerpetuity(usedBy, parent.def);
            }

            if (parent.def == MSExoticDefOf.ThingDefOf.MSCondom)
            {
                MSExoticUtility.DoMSCondom(usedBy, parent.def);
            }
        }
 // Token: 0x0600004E RID: 78 RVA: 0x00005538 File Offset: 0x00003738
 public override bool CanBeUsedBy(Pawn p, out string failReason)
 {
     failReason = null;
     if (this.parent.def == MSExoticDefOf.ThingDefOf.MSImmunisation)
     {
         MSExoticUtility.ChkMSImmunisation(p, out string Reason, out bool Passed);
         if (!Passed)
         {
             failReason = Reason;
             return(false);
         }
     }
     if (this.parent.def == MSExoticDefOf.ThingDefOf.MSCerebrax)
     {
         MSExoticUtility.ChkMSCerebrax(p, out string Reason2, out bool Passed2);
         if (!Passed2)
         {
             failReason = Reason2;
             return(false);
         }
     }
     if (this.parent.def == MSExoticDefOf.ThingDefOf.MSBattleStim)
     {
         MSExoticUtility.ChkMSBattleStim(p, out string Reason3, out bool Passed3);
         if (!Passed3)
         {
             failReason = Reason3;
             return(false);
         }
     }
     if (MSExoticUtility.GetIsTranscendence(this.parent.def))
     {
         MSExoticUtility.ChkMSTranscendence(p, this.parent.def, out string Reason4, out bool Passed4);
         if (!Passed4)
         {
             failReason = Reason4;
             return(false);
         }
     }
     if (this.parent.def == MSExoticDefOf.ThingDefOf.MSPerpetuity)
     {
         MSExoticUtility.ChkMSPerpetuity(p, out string Reason5, out bool Passed5);
         if (!Passed5)
         {
             failReason = Reason5;
             return(false);
         }
     }
     if (this.parent.def == MSExoticDefOf.ThingDefOf.MSCondom)
     {
         MSExoticUtility.ChkMSCondom(p, out string Reason6, out bool Passed6);
         if (!Passed6)
         {
             failReason = Reason6;
             return(false);
         }
     }
     return(true);
 }
        // Token: 0x06000051 RID: 81 RVA: 0x00005676 File Offset: 0x00003876
        protected override IEnumerable <Toil> MakeNewToils()
        {
            var actor = GetActor();

            this.FailOnBurningImmobile(TargetIndex.A);
            yield return(Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch)
                         .FailOnDespawnedNullOrForbidden(TargetIndex.A));

            var toil = new Toil
            {
                tickAction = delegate { }
            };
            var prepare = toil;

            prepare.WithProgressBarToilDelay(TargetIndex.A);
            prepare.FailOnDespawnedNullOrForbidden(TargetIndex.A);
            prepare.defaultCompleteMode = ToilCompleteMode.Delay;
            prepare.defaultDuration     = 300;
            yield return(prepare);

            yield return(Toils_General.Do(delegate
            {
                JobCondition JC;
                if (TargetA.Thing != null && TargetA.Thing.Spawned)
                {
                    MSExoticUtility.DoMSCondom(actor, TargetA.Thing.def);
                    var stack = TargetA.Thing.stackCount;
                    if (stack > 1)
                    {
                        stack--;
                        TargetA.Thing.stackCount = stack;
                    }
                    else
                    {
                        TargetA.Thing.Destroy();
                    }

                    JC = JobCondition.Succeeded;
                }
                else
                {
                    JC = JobCondition.Incompletable;
                }

                Thing thing;
                if (actor == null)
                {
                    thing = null;
                }
                else
                {
                    var ownership = actor.ownership;
                    thing = ownership?.OwnedBed;
                }

                var LovinBed = thing;
                if (LovinBed != null)
                {
                    var partnerInMyBed = GetCondomPartnerInMyBed(actor, LovinBed as Building_Bed);
                    if (partnerInMyBed != null && partnerInMyBed.health.capacities.CanBeAwake)
                    {
                        var newLovin = new Job(JobDefOf.Lovin, partnerInMyBed, LovinBed);
                        var pawn2 = actor;
                        var jobs = pawn2.jobs;
                        jobs?.jobQueue.EnqueueFirst(newLovin);
                    }
                }

                EndJobWith(JC);
            }));
        }
Пример #6
0
        // Token: 0x06000051 RID: 81 RVA: 0x00005676 File Offset: 0x00003876
        protected override IEnumerable <Toil> MakeNewToils()
        {
            Pawn pawn = base.GetActor();

            this.FailOnBurningImmobile(TargetIndex.A);
            yield return(Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch).FailOnDespawnedNullOrForbidden(TargetIndex.A));

            Toil toil = new Toil
            {
                tickAction = delegate()
                {
                }
            };
            Toil prepare = toil;

            prepare.WithProgressBarToilDelay(TargetIndex.A, false, -0.5f);
            prepare.FailOnDespawnedNullOrForbidden(TargetIndex.A);
            prepare.defaultCompleteMode = ToilCompleteMode.Delay;
            prepare.defaultDuration     = 300;
            yield return(prepare);

            yield return(Toils_General.Do(delegate
            {
                JobCondition JC;
                if (this.TargetA.Thing != null && this.TargetA.Thing.Spawned)
                {
                    MSExoticUtility.DoMSCondom(pawn, this.TargetA.Thing.def);
                    int stack = this.TargetA.Thing.stackCount;
                    if (stack > 1)
                    {
                        stack--;
                        this.TargetA.Thing.stackCount = stack;
                    }
                    else
                    {
                        this.TargetA.Thing.Destroy(DestroyMode.Vanish);
                    }
                    JC = JobCondition.Succeeded;
                }
                else
                {
                    JC = JobCondition.Incompletable;
                }
                Thing thing;
                if (pawn == null)
                {
                    thing = null;
                }
                else
                {
                    Pawn_Ownership ownership = pawn.ownership;
                    thing = (ownership?.OwnedBed);
                }
                Thing LovinBed = thing;
                if (LovinBed != null)
                {
                    Pawn partnerInMyBed = JobDriver_MSWearCondom.GetCondomPartnerInMyBed(pawn, LovinBed as Building_Bed);
                    if (partnerInMyBed != null && partnerInMyBed.health.capacities.CanBeAwake)
                    {
                        Job newLovin = new Job(JobDefOf.Lovin, partnerInMyBed, LovinBed);
                        if (newLovin != null)
                        {
                            Pawn pawn2 = pawn;
                            if (pawn2 != null)
                            {
                                Pawn_JobTracker jobs = pawn2.jobs;
                                if (jobs != null)
                                {
                                    jobs.jobQueue.EnqueueFirst(newLovin, null);
                                }
                            }
                        }
                    }
                }
                this.EndJobWith(JC);
            }));

            yield break;
        }