public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { Prioritizable.AddRef(go); Electrolyzer electrolyzer = go.AddOrGet <Electrolyzer>(); electrolyzer.maxMass = 1.8f; electrolyzer.hasMeter = false; Storage storage = go.AddOrGet <Storage>(); storage.capacityKg = 330f; storage.showInUI = true; ElementConverter elementConverter = go.AddOrGet <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[1] { new ElementConverter.ConsumedElement(new Tag("Algae"), 0.55f) }; elementConverter.outputElements = new ElementConverter.OutputElement[1] { new ElementConverter.OutputElement(0.5f, SimHashes.Oxygen, 303.15f, false, false, 0f, 1f, 1f, byte.MaxValue, 0) }; ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>(); manualDeliveryKG.SetStorage(storage); manualDeliveryKG.requestedItemTag = new Tag("Algae"); manualDeliveryKG.capacity = 330f; manualDeliveryKG.refillMass = 132f; manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.FetchCritical.IdHash; }
// Big copy paste of the game code public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery); Electrolyzer electrolyzer = go.AddOrGet <Electrolyzer>(); electrolyzer.maxMass = 1.8f; electrolyzer.hasMeter = true; ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>(); conduitConsumer.conduitType = ConduitType.Liquid; conduitConsumer.consumptionRate = 1f; conduitConsumer.capacityTag = ElementLoader.FindElementByHash(SimHashes.DirtyWater).tag; conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Dump; Storage storage = go.AddOrGet <Storage>(); storage.capacityKg = 2f; storage.showInUI = true; ElementConverter elementConverter = go.AddOrGet <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[] { new ElementConverter.ConsumedElement(new Tag("DirtyWater"), 1f) }; elementConverter.outputElements = new ElementConverter.OutputElement[] { new ElementConverter.OutputElement(0.888f, SimHashes.ContaminatedOxygen, OXYGEN_TEMPERATURE, false, 0f, 1f, false, 1f, byte.MaxValue, 0), new ElementConverter.OutputElement(0.111999989f, SimHashes.Hydrogen, OXYGEN_TEMPERATURE, false, 0f, 1f, false, 1f, byte.MaxValue, 0) }; Prioritizable.AddRef(go); }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { Prioritizable.AddRef(go); Electrolyzer electrolyzer = go.AddOrGet <Electrolyzer>(); electrolyzer.maxMass = 3.0f; electrolyzer.hasMeter = true; Storage storage = go.AddOrGet <Storage>(); storage.capacityKg = 80f; storage.showInUI = true; ElementConverter elementConverter = go.AddOrGet <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[] { new ElementConverter.ConsumedElement(new Tag("SwampLilyFlower"), 1.0f) }; elementConverter.outputElements = new ElementConverter.OutputElement[] { new ElementConverter.OutputElement(0.25f, SimHashes.ChlorineGas, 348.15f, false, false, 0f, 1f, 1f, byte.MaxValue, 0), new ElementConverter.OutputElement(0.66f, SimHashes.Algae, 323.15f, false, true, 0f, 0.5f, 1f, byte.MaxValue, 0) }; ElementDropper elementDropper = go.AddComponent <ElementDropper>(); elementDropper.emitMass = 10f; elementDropper.emitTag = SimHashes.Algae.CreateTag(); elementDropper.emitOffset = new Vector3(0.5f, 0.5f, 0f); ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>(); manualDeliveryKG.SetStorage(storage); manualDeliveryKG.requestedItemTag = new Tag("SwampLilyFlower"); manualDeliveryKG.capacity = 80f; manualDeliveryKG.refillMass = 32f; manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.MachineFetch.IdHash; }
private static void Postfix(Electrolyzer __instance, ref bool __result, ref int cell) { //ElectrolyzerComplete //MineralDeoxidizerComplete if (__instance.name == "ElectrolyzerComplete") { __result = false; } }
private static void Postfix(GameObject go) { Electrolyzer electrolyzer = go.GetComponent <Electrolyzer>(); if (electrolyzer == null) { return; } electrolyzer.maxMass = CustomizeBuildingsState.StateManager.State.ElectrolizerMaxPressure; }
//static SimHashes[] condition = new SimHashes[] { SimHashes.Oxygen }; static bool Prefix(Electrolyzer __instance, ref bool __result) { if (!Main.mod.Active) { return(true); } int num = Grid.PosToCell(__instance.transform.GetPosition()); num = Grid.CellAbove(num); var fn = new Func <HashSet <int>, Electrolyzer, bool>(NormalPressure); __result = FloodFillFindAll(fn, __instance, num, 3, true, true); return(false); }
private static bool OverPressure(int cell, Electrolyzer electrolyzer) { return(Grid.Mass[cell] > electrolyzer.maxMass); }
static bool NormalPressure(HashSet <int> cells, Electrolyzer electrolyzer) { return(cells.Average(x => Grid.Mass[x]) < electrolyzer.maxMass); }