static void Postfix(FertilityGrid __instance, ref IntVec3 loc, ref float __result) { var map = Traverse.Create(__instance).Field("map").GetValue <Map>(); int wateringRemainTicks = map.GetComponent <MapComponent_Watering>().wateringGrid[map.cellIndices.CellToIndex(loc)]; if (wateringRemainTicks > 0) { __result *= 1.2f; } }
public static void CellBoolDrawerGetBoolInt_Postfix(int index, ref FertilityGrid __instance, ref bool __result) { if (__result) { Map map = Traverse.Create(__instance).Field("map").GetValue <Map>(); MapComponentSeenFog mapCmq = map.getMapComponentSeenFog(); if (mapCmq != null) { __result = mapCmq.knownCells[index]; } } }
// RimWorld.FertilityGrid public static void CalculateFertilityAt(FertilityGrid __instance, IntVec3 loc, ref float __result) { Map map = Traverse.Create(__instance).Field("map").GetValue <Map>(); if (map.GetComponent <MapComponent_FertilityMods>().Get is MapComponent_FertilityMods comp) { if (comp.ActiveCells.Contains(loc)) { __result *= 2; } } }
public static float computeGrowerPriority(Pawn p, TargetInfo t) { FertilityGrid myGrid = new FertilityGrid(t.Map); float priority = myGrid.FertilityAt(t.Cell); Zone zone = p.Map.zoneManager.ZoneAt(t.Cell); if (zone != null && zone is Zone_Growing && (zone as Zone_Growing).GetPlantDefToGrow().defName == "Plant_Haygrass") { priority -= 1; } return(priority); }
public override AcceptanceReport CanDesignateCell(IntVec3 c) { if (!base.CanDesignateCell(c).Accepted) { return(false); } FertilityGrid grid = Map.fertilityGrid; if (grid.FertilityAt(c) < ThingDefOf.Plant_Potato.plant.fertilityMin) { return(false); } if (Find.DesignatorManager.Dragger.Dragging) { IntVec3 startDragCell = (IntVec3)startDragCellInfo.GetValue(Find.DesignatorManager.Dragger); if (grid.FertilityAt(c) != grid.FertilityAt(startDragCell)) { return(false); } } return(true); }
public void ConstructComponents() { this.spawnedThings = new ThingOwner <Thing>(this); this.cellIndices = new CellIndices(this); this.listerThings = new ListerThings(ListerThingsUse.Global); this.listerBuildings = new ListerBuildings(); this.mapPawns = new MapPawns(this); this.dynamicDrawManager = new DynamicDrawManager(this); this.mapDrawer = new MapDrawer(this); this.tooltipGiverList = new TooltipGiverList(); this.pawnDestinationReservationManager = new PawnDestinationReservationManager(); this.reservationManager = new ReservationManager(this); this.physicalInteractionReservationManager = new PhysicalInteractionReservationManager(); this.designationManager = new DesignationManager(this); this.lordManager = new LordManager(this); this.debugDrawer = new DebugCellDrawer(); this.passingShipManager = new PassingShipManager(this); this.haulDestinationManager = new HaulDestinationManager(this); this.gameConditionManager = new GameConditionManager(this); this.weatherManager = new WeatherManager(this); this.zoneManager = new ZoneManager(this); this.resourceCounter = new ResourceCounter(this); this.mapTemperature = new MapTemperature(this); this.temperatureCache = new TemperatureCache(this); this.areaManager = new AreaManager(this); this.attackTargetsCache = new AttackTargetsCache(this); this.attackTargetReservationManager = new AttackTargetReservationManager(this); this.lordsStarter = new VoluntarilyJoinableLordsStarter(this); this.thingGrid = new ThingGrid(this); this.coverGrid = new CoverGrid(this); this.edificeGrid = new EdificeGrid(this); this.blueprintGrid = new BlueprintGrid(this); this.fogGrid = new FogGrid(this); this.glowGrid = new GlowGrid(this); this.regionGrid = new RegionGrid(this); this.terrainGrid = new TerrainGrid(this); this.pathGrid = new PathGrid(this); this.roofGrid = new RoofGrid(this); this.fertilityGrid = new FertilityGrid(this); this.snowGrid = new SnowGrid(this); this.deepResourceGrid = new DeepResourceGrid(this); this.exitMapGrid = new ExitMapGrid(this); this.linkGrid = new LinkGrid(this); this.glowFlooder = new GlowFlooder(this); this.powerNetManager = new PowerNetManager(this); this.powerNetGrid = new PowerNetGrid(this); this.regionMaker = new RegionMaker(this); this.pathFinder = new PathFinder(this); this.pawnPathPool = new PawnPathPool(this); this.regionAndRoomUpdater = new RegionAndRoomUpdater(this); this.regionLinkDatabase = new RegionLinkDatabase(); this.moteCounter = new MoteCounter(); this.gatherSpotLister = new GatherSpotLister(); this.windManager = new WindManager(this); this.listerBuildingsRepairable = new ListerBuildingsRepairable(); this.listerHaulables = new ListerHaulables(this); this.listerMergeables = new ListerMergeables(this); this.listerFilthInHomeArea = new ListerFilthInHomeArea(this); this.reachability = new Reachability(this); this.itemAvailability = new ItemAvailability(this); this.autoBuildRoofAreaSetter = new AutoBuildRoofAreaSetter(this); this.roofCollapseBufferResolver = new RoofCollapseBufferResolver(this); this.roofCollapseBuffer = new RoofCollapseBuffer(); this.wildAnimalSpawner = new WildAnimalSpawner(this); this.wildPlantSpawner = new WildPlantSpawner(this); this.steadyEnvironmentEffects = new SteadyEnvironmentEffects(this); this.skyManager = new SkyManager(this); this.overlayDrawer = new OverlayDrawer(); this.floodFiller = new FloodFiller(this); this.weatherDecider = new WeatherDecider(this); this.fireWatcher = new FireWatcher(this); this.dangerWatcher = new DangerWatcher(this); this.damageWatcher = new DamageWatcher(); this.strengthWatcher = new StrengthWatcher(this); this.wealthWatcher = new WealthWatcher(this); this.regionDirtyer = new RegionDirtyer(this); this.cellsInRandomOrder = new MapCellsInRandomOrder(this); this.rememberedCameraPos = new RememberedCameraPos(this); this.mineStrikeManager = new MineStrikeManager(); this.storyState = new StoryState(this); this.retainedCaravanData = new RetainedCaravanData(this); this.components.Clear(); this.FillComponents(); }