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); }
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); } }