Beispiel #1
0
        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>();
        }
Beispiel #2
0
    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;
                }
            }
        }
Beispiel #6
0
            public static void Postfix(GameObject go)
            {
                BuildingElementEmitter buildingElementEmitter = go.AddOrGet <BuildingElementEmitter>();

                buildingElementEmitter.emitRate = 0.03f;
            }