protected override IEnumerable <Toil> MakeNewToils() { this.FailOnDespawnedNullOrForbidden(TargetIndex.A); this.FailOnBurningImmobile(TargetIndex.A); this.FailOn(delegate { HPGMcyclecomp compHPGM = this.job.targetA.Thing.TryGetComp <HPGMcyclecomp>(); //HPGMcyclecomp compHPGM = null; return(!compHPGM.CanUseNow); }); yield return(Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.InteractionCell)); Toil work = new Toil(); work.tickAction = delegate { Pawn actor = work.actor; Building building = (Building)actor.CurJob.targetA.Thing; HPGMcyclecomp comp = building.GetComp <HPGMcyclecomp>(); comp.Used(actor); //actor.skills.Learn(SkillDefOf.Intellectual, 0.035f, false); actor.skills.Learn(SkillDefOf.Melee, 0.02f, false); actor.GainComfortFromCellIfPossible(); }; work.defaultCompleteMode = ToilCompleteMode.Never; work.FailOnCannotTouch(TargetIndex.A, PathEndMode.InteractionCell); //work.activeSkill = (() => SkillDefOf.Intellectual); yield return(work); }
public override void PostSpawnSetup(bool respawningAfterLoad) { base.PostSpawnSetup(respawningAfterLoad); //this.mannableComp = this.parent.GetComp<CompMannable>(); this.breakdownableComp = this.parent.GetComp <CompBreakdownable>(); this.hpgmcyclecomp = this.parent.GetComp <HPGMcyclecomp>(); if (base.Props.basePowerConsumption < 0f && !this.parent.IsBrokenDown() && FlickUtility.WantsToBeOn(this.parent)) { base.PowerOn = true; } }
public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false) { Building building = t as Building; if (building == null) { return(false); } if (building.IsForbidden(pawn)) { return(false); } LocalTargetInfo target = building; if (!pawn.CanReserve(target, 1, -1, null, forced)) { return(false); } HPGMcyclecomp compHPGM = building.TryGetComp <HPGMcyclecomp>(); return(compHPGM.CanUseNow && !building.IsBurning()); }