static bool Prefix(Building_NutrientPasteDispenser __instance, ref bool __result) { var fc = FridgeCache.GetFridgeCache(__instance.Map); float num = 0f; foreach (IntVec3 cell in __instance.AdjCellsCardinalInBounds) { Thing thing = null; Thing holder = null; foreach (Thing t in cell.GetThingList(__instance.Map)) { if (Building_NutrientPasteDispenser.IsAcceptableFeedstock(t.def)) { thing = t; } if (t.def == ThingDefOf.Hopper || fc?.HasFridgeAt(cell) == true) { holder = t; } if (thing != null && holder != null) { num += (float)thing.stackCount * thing.GetStatValue(StatDefOf.Nutrition, true); if (num >= __instance.def.building.nutritionCostPerDispense) { __result = true; return(false); } break; } } } return(false); }
static bool Prefix(Building_NutrientPasteDispenser __instance, ref Thing __result) { var fc = FridgeCache.GetFridgeCache(__instance.Map); foreach (IntVec3 cell in __instance.AdjCellsCardinalInBounds) { Thing thing = null; Thing holder = null; foreach (Thing t in cell.GetThingList(__instance.Map)) { if (Building_NutrientPasteDispenser.IsAcceptableFeedstock(t.def)) { thing = t; } if (t.def == ThingDefOf.Hopper || fc?.HasFridgeAt(cell) == true) { holder = t; } } if (thing != null && holder != null) { __result = thing; return(false); } } return(false); }
static bool Prefix(Thing __instance, ref float __result) { if ((!(__instance is Pawn p) || p.Dead) && __instance.Map != null && FridgeCache.TryGetFridge(__instance.positionInt, __instance.mapIndexOrState, out CompRefrigerator fridge) && fridge != null) { __result = fridge.currentTemp; return(false); } return(true); }
static bool Prefix(Thing __instance, ref float __result) { Pawn p = __instance as Pawn; if ((p == null || p.Dead) && __instance.Map != null && FridgeCache.TryGetFridge(__instance.Position, __instance.Map, out CompRefrigerator fridge) && fridge != null) { __result = fridge.currentTemp; return(false); } return(true); }
// Before an orbital trade static void Postfix(ref IEnumerable <Thing> __result, Pawn playerNegotiator) { if (!Settings.ActAsBeacon) { return; } List <Thing> things = null; Log.Message(playerNegotiator.Name.ToStringFull); if (playerNegotiator != null && playerNegotiator.Map != null) { foreach (var thing in FridgeCache.GetBuildingsForMap(playerNegotiator.Map.Index)) { foreach (IntVec3 cell in thing.AllSlotCells()) { foreach (Thing refrigeratedItem in playerNegotiator.Map.thingGrid.ThingsAt(cell)) { if (thing.settings.AllowedToAccept(refrigeratedItem)) { if (things == null) { if (__result?.Count() == 0) { things = new List <Thing>(); } else { things = new List <Thing>(__result); } } things.Add(refrigeratedItem); break; } } } } } if (things != null) { __result = things; } }
public override void PostDeSpawn(Map map) { base.PostDeSpawn(map); FridgeCache.AddFridge(this, map); }
public override void PostSpawnSetup(bool respawningAfterLoad) { base.PostSpawnSetup(respawningAfterLoad); FridgeCache.AddFridge(this, this.parent?.Map); }
public override void PostDeSpawn(Map map) { base.PostDeSpawn(map); FridgeCache.RemoveFridge(this, map.Index); }
public override void PostSpawnSetup(bool respawningAfterLoad) { base.PostSpawnSetup(respawningAfterLoad); FridgeCache.AddFridge(this, parent.mapIndexOrState); }