public static void Postfix(GameObject go) { if (!NoDupeHelper.CheckConfig(CustomizeBuildingsState.IDOilWellCap)) { return; } OilWellCap oilWellCap = go.GetComponent <OilWellCap>(); if (oilWellCap == null) { Debug.LogWarning("oilWellCap was null"); return; } BuildingElementEmitter buildingElementEmitter = go.AddComponent <BuildingElementEmitter>(); buildingElementEmitter.emitRate = oilWellCap.addGasRate; // = 0.03333334f; buildingElementEmitter.temperature = oilWellCap.gasTemperature; // = 573.15f; buildingElementEmitter.element = oilWellCap.gasElement; // = SimHashes.Methane; buildingElementEmitter.modifierOffset = new Vector2(2f, 2f); UnityEngine.Object.DestroyImmediate(oilWellCap); go.AddOrGet <WaterPurifier>(); }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false); Storage storage = BuildingTemplates.CreateDefaultStorage(go, false); storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage); go.AddOrGet <WaterPurifier>(); ManualDeliveryKG manualDeliveryKG = go.AddComponent <ManualDeliveryKG>(); manualDeliveryKG.SetStorage(storage); manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.MachineFetch.IdHash; manualDeliveryKG.requestedItemTag = new Tag("Dirt"); manualDeliveryKG.capacity = 136.5f; manualDeliveryKG.refillMass = 19.5f; ManualDeliveryKG manualDeliveryKG2 = go.AddComponent <ManualDeliveryKG>(); manualDeliveryKG2.SetStorage(storage); manualDeliveryKG2.choreTypeIDHash = Db.Get().ChoreTypes.MachineFetch.IdHash; manualDeliveryKG2.requestedItemTag = new Tag("Phosphorite"); manualDeliveryKG2.capacity = 54.6f; manualDeliveryKG2.refillMass = 7.79999971f; ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>(); conduitConsumer.conduitType = ConduitType.Liquid; conduitConsumer.consumptionRate = 10f; conduitConsumer.capacityTag = ElementLoader.FindElementByHash(SimHashes.DirtyWater).tag; conduitConsumer.capacityKG = 0.195000008f; conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Dump; conduitConsumer.forceAlwaysSatisfied = true; ElementConverter elementConverter = go.AddOrGet <ElementConverter>(); elementConverter.consumedElements = new ElementConverter.ConsumedElement[3] { new ElementConverter.ConsumedElement(new Tag("DirtyWater"), 0.039f), new ElementConverter.ConsumedElement(new Tag("Dirt"), 0.065f), new ElementConverter.ConsumedElement(new Tag("Phosphorite"), 0.0259999987f) }; elementConverter.outputElements = new ElementConverter.OutputElement[1] { new ElementConverter.OutputElement(0.12f, SimHashes.Fertilizer, 323.15f, false, true, 0f, 0.5f, 1f, byte.MaxValue, 0) }; BuildingElementEmitter buildingElementEmitter = go.AddOrGet <BuildingElementEmitter>(); buildingElementEmitter.emitRate = 0.01f; buildingElementEmitter.temperature = 349.15f; buildingElementEmitter.element = SimHashes.Methane; buildingElementEmitter.modifierOffset = new Vector2(2f, 2f); ElementDropper elementDropper = go.AddComponent <ElementDropper>(); elementDropper.emitMass = 10f; elementDropper.emitTag = new Tag("Fertilizer"); elementDropper.emitOffset = new Vector3(0f, 1f, 0f); Prioritizable.AddRef(go); }
public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag) { go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery); CoalEnergyGenerator energyGenerator = go.AddOrGet <CoalEnergyGenerator>(); energyGenerator.formula = EnergyGenerator.CreateSimpleFormula(SimHashes.Carbon.CreateTag(), 1f, 600f, SimHashes.Void, 0f, true); energyGenerator.powerDistributionOrder = 9; Storage storage = go.AddOrGet <Storage>(); storage.capacityKg = 600f; go.AddOrGet <LoopingSounds>(); Prioritizable.AddRef(go); CoalManualDeliveryKG manualDeliveryKG = go.AddOrGet <CoalManualDeliveryKG>(); manualDeliveryKG.SetStorage(storage); manualDeliveryKG.requestedItemTag = new Tag("Coal"); manualDeliveryKG.ignoresOperationStatus = true; manualDeliveryKG.capacity = storage.capacityKg; manualDeliveryKG.refillMass = 100f; manualDeliveryKG.choreTags = new Tag[] { GameTags.ChoreTypes.Power }; manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.PowerFetch.IdHash; BuildingElementEmitter buildingElementEmitter = go.AddOrGet <BuildingElementEmitter>(); buildingElementEmitter.emitRate = 0.02f; buildingElementEmitter.temperature = 310f; buildingElementEmitter.element = SimHashes.CarbonDioxide; buildingElementEmitter.modifierOffset = new Vector2(1f, 2f); DualSlider dualSlider = go.AddOrGet <DualSlider>(); dualSlider.fillUptoThreshold = manualDeliveryKG.capacity; dualSlider.refillThreshold = manualDeliveryKG.refillMass; CoalDeliveryController controller = go.AddOrGet <CoalDeliveryController>(); controller.batteryRefillPercent = 0.5f; Tinkerable.MakePowerTinkerable(go); }
public static void Postfix(GameObject go) { BuildingElementEmitter emitter = go.GetComponent <BuildingElementEmitter>(); if (emitter != null) { ElementConverter converter = go.GetComponent <ElementConverter>(); if (converter != null) { // Reserve memory for one more element in the array Array.Resize(ref converter.outputElements, converter.outputElements.Length + 1); // assign methane to what is now the last element in the array converter.outputElements[converter.outputElements.Length - 1] = new ElementConverter.OutputElement(emitter.emitRate, SimHashes.Methane, emitter.temperature); UnityEngine.Object.DestroyImmediate(emitter); } } AddFertilizerMaker(go); }
public static void ProcessPost(BuildingDef buildingDef) { float multiplier; bool flag = CustomizeBuildingsState.StateManager.State.MachineMultiplier.TryGetValue(buildingDef.PrefabID, out multiplier); if (!flag) { flag = CustomizeBuildingsState.StateManager.State.MachineMultiplier.TryGetValue(BuildingConfigManager_RegisterBuilding.FindBetweenLink.Match(buildingDef.Name).Groups[1].Value, out multiplier); } if (flag) { ElementConverter[] converters = buildingDef.BuildingComplete.GetComponents <ElementConverter>(); for (int j = 0; j < converters.Count(); j++) { ElementConverter converter = converters[j]; for (int i = 0; i < converter.consumedElements.Count(); i++) { converter.consumedElements[i].massConsumptionRate *= (float)multiplier; } for (int i = 0; i < converter.outputElements.Count(); i++) { converter.outputElements[i].massGenerationRate *= (float)multiplier; } //converter.SetWorkSpeedMultiplier((float)multiplier); Debug.Log("Multiplier: " + buildingDef.PrefabID + " x" + multiplier); } //if(converters.Count() == 0) Debug.Log("Muliplier: converter was null for " + buildingDef.PrefabID); Storage[] storages = buildingDef.BuildingComplete.GetComponents <Storage>(); for (int i = 0; i < storages.Count(); i++) { storages[i].capacityKg *= multiplier; } ManualDeliveryKG[] manualDeliveryKGs = buildingDef.BuildingComplete.GetComponents <ManualDeliveryKG>(); for (int i = 0; i < manualDeliveryKGs.Count(); i++) { manualDeliveryKGs[i].capacity *= multiplier; } ConduitConsumer conduitConsumer = buildingDef.BuildingComplete.GetComponent <ConduitConsumer>(); if (conduitConsumer != null) { conduitConsumer.capacityKG *= multiplier; } PassiveElementConsumer elementConsumer = buildingDef.BuildingComplete.GetComponent <PassiveElementConsumer>(); if (elementConsumer != null) { elementConsumer.consumptionRate *= multiplier; elementConsumer.capacityKG *= multiplier; } BuildingElementEmitter buildingElementEmitter = buildingDef.BuildingComplete.GetComponent <BuildingElementEmitter>(); if (buildingElementEmitter != null) { buildingElementEmitter.emitRate *= multiplier; } AlgaeDistillery algaeDistillery = buildingDef.BuildingComplete.GetComponent <AlgaeDistillery>(); if (algaeDistillery != null) { algaeDistillery.emitMass *= multiplier; } ElementDropper elementDropper = buildingDef.BuildingComplete.GetComponent <ElementDropper>(); if (elementDropper != null) { elementDropper.emitMass *= multiplier; } } }
public static void Postfix(GameObject go) { BuildingElementEmitter buildingElementEmitter = go.AddOrGet <BuildingElementEmitter>(); buildingElementEmitter.emitRate = 0.03f; }