// 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); } } }
// 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, ")")); } }
// 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); })); }
// 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; }