Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 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;
     }
 }
Ejemplo n.º 3
0
        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());
        }