protected override Job TryGiveJob(Pawn pawn)
        {
            //Log.Message("Trying to give job");
            int         transportersGroup = pawn.mindState.duty.transportersGroup;
            List <Pawn> allPawnsSpawned   = pawn.Map.mapPawns.AllPawnsSpawned;

            for (int i = 0; i < allPawnsSpawned.Count; i++)
            {
                if (allPawnsSpawned[i] != pawn && allPawnsSpawned[i].CurJobDef == DefDatabase <JobDef> .GetNamed("PD_HaulToPit"))
                {
                    CompPit transporter = ((JobDriver_HaulToPit)allPawnsSpawned[i].jobs.curDriver).Transporter;
                    if (transporter != null && transporter.groupID == transportersGroup)
                    {
                        return(null);
                    }
                }
            }
            PitUtility.GetTransportersInGroup(transportersGroup, pawn.Map, JobGiver_EnterPit.tmpTransporters);
            CompPit compTransporter = JobGiver_EnterPit.FindMyTransporter(JobGiver_EnterPit.tmpTransporters, pawn);

            JobGiver_EnterPit.tmpTransporters.Clear();
            if (compTransporter == null || !pawn.CanReach(compTransporter.parent, PathEndMode.Touch, Danger.Deadly, false, TraverseMode.ByPawn))
            {
                return(null);
            }
            return(new Job(DefDatabase <JobDef> .GetNamed("PD_EnterPit"), compTransporter.parent));
        }
Example #2
0
 public List <CompPit> TransportersInGroup(Map map)
 {
     if (!this.LoadingInProgressOrReadyToLaunch)
     {
         return(null);
     }
     PitUtility.GetTransportersInGroup(this.groupID, map, CompPit.tmpTransportersInGroup);
     return(CompPit.tmpTransportersInGroup);
 }
Example #3
0
        public void TryRemoveLord(Map map)
        {
            if (!this.LoadingInProgressOrReadyToLaunch)
            {
                return;
            }
            Lord lord = PitUtility.FindLord(this.groupID, map);

            if (lord != null)
            {
                map.lordManager.RemoveLord(lord);
            }
        }
        protected override Job TryGiveJob(Pawn pawn)
        {
            int transportersGroup = pawn.mindState.duty.transportersGroup;

            PitUtility.GetTransportersInGroup(transportersGroup, pawn.Map, JobGiver_HaulToPit.tmpTransporters);
            for (int i = 0; i < JobGiver_HaulToPit.tmpTransporters.Count; i++)
            {
                CompPit transporter = JobGiver_HaulToPit.tmpTransporters[i];
                if (LoadPitJobUtility.HasJobOnTransporter(pawn, transporter))
                {
                    return(LoadPitJobUtility.JobOnTransporter(pawn, transporter));
                }
            }
            return(null);
        }