static void Postfix(JobDriver_PlantHarvest __instance, Toil __result) { __result.initAction = delegate { Thing thing = __result.actor.jobs.curJob.GetTarget(TargetIndex.A).Thing; Map map = __result.actor.Map; map.designationManager.RemoveAllDesignationsOn(thing, false); if (!tw_YAAM.ConvertSoilAfterHarvest) { return; } IntVec3 pos = thing.Position; TerrainDef terrainDef = map.terrainGrid.TerrainAt(pos); if (!terrainDef.defName.StartsWith("twSoil")) { return; } map.terrainGrid.SetTerrain(__result.actor.jobs.curJob.targetA.Cell, RimWorld.TerrainDefOf.Soil); if (map.terrainGrid.TerrainAt(pos).defName != RimWorld.TerrainDefOf.Soil.defName) { Verse.Log.Warning("tw_YAMM.ConvertSoilAfterHarvest failed at " + pos.ToString()); } List <Zone> zonesList = map.zoneManager.AllZones; for (int j = 0; j < zonesList.Count; j++) { Zone_Growing growingZone = zonesList[j] as Zone_Growing; if (growingZone == null) { continue; } if (growingZone.cells.Count == 0) { continue; } if (!growingZone.Cells.Contains(pos)) { continue; } if (tw_YAAM.WorldObject.GrowingZonesPlaceBlueprint.Contains(growingZone.label)) { Blueprint_Build blueprint_Build = GenConstruct.PlaceBlueprintForBuild(terrainDef, pos, map, Rot4.North, Faction.OfPlayer, null); if (blueprint_Build == null) { Verse.Log.Warning("tw_YAMM.PlaceBlueprint failed for " + terrainDef.defName + " in " + growingZone.label); } return; } } }; }
private static void Postfix(ref JobDriver_PlantHarvest __instance, ref Toil __result) { Toil toil = __result; toil.initAction += () => { IntVec3 c = toil.actor.jobs.curJob.GetTarget(TargetIndex.A).Cell; if (toil.actor.Map.terrainGrid.TerrainAt(c).GetModExtension <TerrainExtension>() != null && toil.actor.Map.terrainGrid.TerrainAt(c).GetModExtension <TerrainExtension>().tilledFrom != null) { TerrainDef terrainTo = toil.actor.Map.terrainGrid.TerrainAt(c).GetModExtension <TerrainExtension>().tilledFrom; toil.actor.Map.terrainGrid.SetTerrain(c, terrainTo); } }; }
// Token: 0x06000064 RID: 100 RVA: 0x000049AC File Offset: 0x00002BAC private static void Postfix(ref Toil __result, ref JobDriver_PlantHarvest __instance) { var unused = __instance.pawn.Map; var actor = __instance.pawn; __result.initAction = (Action)Delegate.Combine(__result.initAction, new Action(delegate { var plant = (Plant)actor.jobs.curJob.GetTarget(TargetIndex.A).Thing; AYPlantUtility.AddYield(actor, plant); if (plant.def.defName == "Plant_AYGinkgoBiloba") { var skillRatio = 0.5f; if (actor.skills != null) { skillRatio = (actor.skills.GetSkill(SkillDefOf.Plants).levelInt + 5) / (float)20; if (skillRatio > 1f) { skillRatio = 1f; } if (skillRatio < 0.5f) { skillRatio = 0.5f; } } var thing = ThingMaker.MakeThing(ThingDef.Named("AYGinkgoLeaves")); var num = plant.def.plant.harvestYield * 2f * plant.Growth * skillRatio; num = AdjustYield(num); thing.stackCount = checked ((int)num); if (thing.stackCount > 0) { GenPlace.TryPlaceThing(thing, actor.Position, actor.Map, ThingPlaceMode.Near); } } else if (plant.def.defName == "BurnedTree") { var skillRatio2 = 0.5f; var actor2 = actor; if (actor2.skills != null) { skillRatio2 = (actor.skills.GetSkill(SkillDefOf.Plants).levelInt + 5) / (float)20; if (skillRatio2 > 1f) { skillRatio2 = 1f; } if (skillRatio2 < 0.5f) { skillRatio2 = 0.5f; } } var def = ThingDef.Named("AYCharcoal"); var defTwo = ThingDef.Named("AYWoodAshes"); var thingOne = ThingMaker.MakeThing(def); var thingTwo = ThingMaker.MakeThing(defTwo); var numOne = 10f * skillRatio2; var numTwo = 20f * skillRatio2; numOne = AdjustYield(numOne); numTwo = AdjustYield(numTwo); checked { thingOne.stackCount = (int)numOne; thingTwo.stackCount = (int)numTwo; if (thingOne.stackCount > 0) { GenPlace.TryPlaceThing(thingOne, actor.Position, actor.Map, ThingPlaceMode.Near); } if (thingTwo.stackCount > 0) { GenPlace.TryPlaceThing(thingTwo, actor.Position, actor.Map, ThingPlaceMode.Near); } } } })); }