private MapComponent_LocalCultTracker GetTracker(Map map)
        {
            MapComponent_LocalCultTracker result = map.GetComponent <MapComponent_LocalCultTracker>();

            if (map.GetComponent <MapComponent_LocalCultTracker>() == null)
            {
                result = new MapComponent_LocalCultTracker(map);
                map.components.Add(result);
            }
            return(result);
        }
示例#2
0
        public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false)
        {
            if (t == null)
            {
                return(false);
            }

            if (t.def != CultsDefOf.Cults_PlantTreeNightmare &&
                t.def != CultsDefOf.Cults_MonolithNightmare)
            {
                return(false);
            }

            //Log.Message("1");

            //Log.Message("2");

            MapComponent_LocalCultTracker cultTracker = pawn.MapHeld.GetComponent <MapComponent_LocalCultTracker>();

            if (cultTracker != null && cultTracker.CurrentSeedState > CultSeedState.NeedSeeing)
            {
                return(false);
            }
            //Log.Message("3");

            if (CultUtility.AreCultObjectsAvailable(pawn.MapHeld) == false)
            {
                if (CultUtility.IsSomeoneInvestigating(pawn.MapHeld))
                {
                    return(false);
                }
            }
            //Log.Message("4");

            if (pawn.Faction != Faction.OfPlayerSilentFail)
            {
                return(false);
            }
            //if (pawn.Faction == Faction.OfPlayer && !pawn.Map.areaManager.Home[t.Position])
            //{
            //    JobFailReason.Is(WorkGiver_FixBrokenDownBuilding.NotInHomeAreaTrans);
            //    return false;
            //}
            //Log.Message("5");

            if (!pawn.CanReserveAndReach(t, PathEndMode.ClosestTouch, Danger.None))
            {
                return(false);                                                                   // pawn.Map.reservationManager.IsReserved(t, pawn.Faction)) return false;
            }
            //Log.Message("6");

            return(true);
        }
        protected override bool CanFireNowSub(IncidentParms parms)
        {
            Map map = (Map)parms.target;
            MapComponent_LocalCultTracker tracker = GetTracker(map);

            if (tracker.CurrentSeedState > CultSeedState.NeedSeed)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }