Ejemplo n.º 1
0
 private static List<Unit> ReadUnits(List<XElement> xelems, ElementConverter<Unit> converter)
 {
     return xelems.ConvertAll(x => converter(x));
 }
    public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
    {
        Storage storage = go.AddOrGet <Storage>();

        storage.showInUI = true;
        List <Tag> list = new List <Tag>();

        list.Add(SimHashes.DirtyWater.CreateTag());
        List <Tag> storageFilters = list;
        Tag        tag            = SimHashes.Algae.CreateTag();
        Tag        tag2           = SimHashes.Water.CreateTag();
        Storage    storage2       = go.AddComponent <Storage>();

        storage2.capacityKg = 360f;
        storage2.showInUI   = true;
        storage2.SetDefaultStoredItemModifiers(PollutedWaterStorageModifiers);
        storage2.allowItemRemoval = false;
        storage2.storageFilters   = storageFilters;
        ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>();

        manualDeliveryKG.SetStorage(storage);
        manualDeliveryKG.requestedItemTag = tag;
        manualDeliveryKG.capacity         = 90f;
        manualDeliveryKG.refillMass       = 18f;
        manualDeliveryKG.choreTypeIDHash  = Db.Get().ChoreTypes.FetchCritical.IdHash;
        ManualDeliveryKG manualDeliveryKG2 = go.AddComponent <ManualDeliveryKG>();

        manualDeliveryKG2.SetStorage(storage);
        manualDeliveryKG2.requestedItemTag = tag2;
        manualDeliveryKG2.capacity         = 360f;
        manualDeliveryKG2.refillMass       = 72f;
        manualDeliveryKG2.allowPause       = true;
        manualDeliveryKG2.choreTypeIDHash  = Db.Get().ChoreTypes.FetchCritical.IdHash;
        KAnimFile[] overrideAnims = new KAnimFile[1]
        {
            Assets.GetAnim("anim_interacts_algae_terarrium_kanim")
        };
        AlgaeHabitatEmpty algaeHabitatEmpty = go.AddOrGet <AlgaeHabitatEmpty>();

        algaeHabitatEmpty.workTime      = 5f;
        algaeHabitatEmpty.overrideAnims = overrideAnims;
        algaeHabitatEmpty.workLayer     = Grid.SceneLayer.BuildingFront;
        AlgaeHabitat algaeHabitat = go.AddOrGet <AlgaeHabitat>();

        algaeHabitat.lightBonusMultiplier = 1.1f;
        algaeHabitat.pressureSampleOffset = new CellOffset(0, 1);
        ElementConverter elementConverter = go.AddComponent <ElementConverter>();

        elementConverter.consumedElements = new ElementConverter.ConsumedElement[2]
        {
            new ElementConverter.ConsumedElement(tag, 0.0300000012f),
            new ElementConverter.ConsumedElement(tag2, 0.3f)
        };
        elementConverter.outputElements = new ElementConverter.OutputElement[1]
        {
            new ElementConverter.OutputElement(0.0400000028f, SimHashes.Oxygen, 303.15f, false, false, 0f, 1f, 1f, byte.MaxValue, 0)
        };
        ElementConverter elementConverter2 = go.AddComponent <ElementConverter>();

        elementConverter2.outputElements = new ElementConverter.OutputElement[1]
        {
            new ElementConverter.OutputElement(0.290333331f, SimHashes.DirtyWater, 303.15f, false, true, 0f, 1f, 1f, byte.MaxValue, 0)
        };
        ElementConsumer elementConsumer = go.AddOrGet <ElementConsumer>();

        elementConsumer.elementToConsume  = SimHashes.CarbonDioxide;
        elementConsumer.consumptionRate   = 0.0003333333f;
        elementConsumer.consumptionRadius = 3;
        elementConsumer.showInStatusPanel = true;
        elementConsumer.sampleCellOffset  = new Vector3(0f, 1f, 0f);
        elementConsumer.isRequired        = false;
        PassiveElementConsumer passiveElementConsumer = go.AddComponent <PassiveElementConsumer>();

        passiveElementConsumer.elementToConsume  = SimHashes.Water;
        passiveElementConsumer.consumptionRate   = 1.2f;
        passiveElementConsumer.consumptionRadius = 1;
        passiveElementConsumer.showDescriptor    = false;
        passiveElementConsumer.storeOnConsume    = true;
        passiveElementConsumer.capacityKG        = 360f;
        passiveElementConsumer.showInStatusPanel = false;
        go.AddOrGet <KBatchedAnimController>().randomiseLoopedOffset = true;
        go.AddOrGet <AnimTileable>();
        Prioritizable.AddRef(go);
    }
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery, false);
            go.AddOrGet <PipedRustDeoxidizer>().maxMass = 1.8f;

            Storage storage = go.AddOrGet <Storage>();

            storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);
            storage.showInUI = true;

            bool alwaysDispense      = false;
            bool invertElementFilter = false;

            MultiOutput multiOut = go.AddOrGet <MultiOutput>();

            SimHashes[] filter = new SimHashes[1] {
                SimHashes.Oxygen
            };
            OutputPort oxyOut = multiOut.AddOutputPort(ConduitType.Gas, new CellOffset(1, 1), PortIconColors.Oxygen, alwaysDispense, filter, invertElementFilter);

            filter = new SimHashes[1] {
                SimHashes.ChlorineGas
            };
            OutputPort chloriOut = multiOut.AddOutputPort(ConduitType.Gas, new CellOffset(0, 1), PortIconColors.ChlorineGas, alwaysDispense, filter, invertElementFilter);

            //MultiInput multiIn = go.AddOrGet<MultiInput>();
            //InputPort in1 = multiIn.AddInputPort(ConduitType.Gas, new CellOffset(1, 0), PortIconColors.NaturalGas, 1f, 2f, new Tag("Methane"), true);
            //InputPort in2 = multiIn.AddInputPort(ConduitType.Gas, new CellOffset(0, 0), PortIconColors.Hydrogen, 1f, 3f, new Tag("Hydrogen"), true);
            //in1.RequiresConnection = false;

            ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>();

            manualDeliveryKG.SetStorage(storage);
            manualDeliveryKG.requestedItemTag = new Tag("Rust");
            manualDeliveryKG.capacity         = 585f;
            manualDeliveryKG.refillMass       = 193.05f;
            manualDeliveryKG.choreTypeIDHash  = Db.Get().ChoreTypes.FetchCritical.IdHash;
            ManualDeliveryKG manualDeliveryKG2 = go.AddComponent <ManualDeliveryKG>();

            manualDeliveryKG2.SetStorage(storage);
            manualDeliveryKG2.requestedItemTag = new Tag("Salt");
            manualDeliveryKG2.capacity         = 195f;
            manualDeliveryKG2.refillMass       = 64.3500061f;
            manualDeliveryKG2.allowPause       = true;
            manualDeliveryKG2.choreTypeIDHash  = Db.Get().ChoreTypes.FetchCritical.IdHash;

            ElementConverter elementConverter = go.AddOrGet <ElementConverter>();

            //elementConverter.consumedElements = new ElementConverter.ConsumedElement[2]
            //{
            //    new ElementConverter.ConsumedElement(new Tag("Methane"), 0.1f),
            //    new ElementConverter.ConsumedElement(new Tag("Hydrogen"), 0.1f)
            //};
            elementConverter.consumedElements = new ElementConverter.ConsumedElement[2]
            {
                new ElementConverter.ConsumedElement(new Tag("Rust"), RUST_KG_CONSUMPTION_RATE),
                new ElementConverter.ConsumedElement(new Tag("Salt"), SALT_KG_CONSUMPTION_RATE)
            };

            elementConverter.outputElements = new ElementConverter.OutputElement[3]
            {
                new ElementConverter.OutputElement(OXYGEN_CONVERSION_RATIO, SimHashes.Oxygen, OXYGEN_TEMPERATURE, false, true, 0.0f, 1f, 1f, byte.MaxValue, 0),
                new ElementConverter.OutputElement(CHLORINE_CONVERSION_RATIO, SimHashes.ChlorineGas, OXYGEN_TEMPERATURE, false, true, 0.0f, 1f, 1f, byte.MaxValue, 0),
                new ElementConverter.OutputElement(IRON_CONVERSION_RATIO, SimHashes.IronOre, OXYGEN_TEMPERATURE, false, true, 0.0f, 1f, 1f, byte.MaxValue, 0)
            };
            //elementConverter.outputElements = new ElementConverter.OutputElement[3]
            //{
            //    new ElementConverter.OutputElement(OXYGEN_CONVERSION_RATIO, SimHashes.Oxygen, OXYGEN_TEMPERATURE, false, true, 0.0f, 1f, 1f, byte.MaxValue, 0),
            //    new ElementConverter.OutputElement(CHLORINE_CONVERSION_RATIO, SimHashes.ChlorineGas, OXYGEN_TEMPERATURE, false, true, 0.0f, 1f, 1f, byte.MaxValue, 0),
            //    new ElementConverter.OutputElement(IRON_CONVERSION_RATIO, SimHashes.IronOre, OXYGEN_TEMPERATURE, false, true, 0.0f, 1f, 1f, byte.MaxValue, 0)
            //};
            ElementDropper elementDropper = go.AddComponent <ElementDropper>();

            elementDropper.emitMass   = 24f;
            elementDropper.emitTag    = SimHashes.IronOre.CreateTag();
            elementDropper.emitOffset = new Vector3(0.0f, 1f, 0.0f);
            Prioritizable.AddRef(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;
                }
            }
        }
Ejemplo n.º 5
0
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            go.AddOrGet <LoopingSounds>();
            Prioritizable.AddRef(go);

            Storage storage = BuildingTemplates.CreateDefaultStorage(go);

            storage.showInUI   = true;
            storage.capacityKg = 20000f;
            storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);

            ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>();

            conduitDispenser.conduitType         = ConduitType.Gas;
            conduitDispenser.invertElementFilter = false;
            conduitDispenser.elementFilter       = new SimHashes[1] {
                SimHashes.Oxygen
            };

            ElementConsumer elementConsumer = go.AddOrGet <ElementConsumer>();

            elementConsumer.elementToConsume  = SimHashes.CarbonDioxide;
            elementConsumer.consumptionRate   = 1000f;
            elementConsumer.consumptionRadius = 10;
            elementConsumer.showInStatusPanel = true;
            elementConsumer.sampleCellOffset  = new Vector3(0f, 0f, 0f);
            elementConsumer.isRequired        = false;
            elementConsumer.storeOnConsume    = true;
            elementConsumer.showDescriptor    = false;

            ElementDropper elementDropper = go.AddComponent <ElementDropper>();

            elementDropper.emitMass   = 100f;
            elementDropper.emitTag    = new Tag("Carbon");
            elementDropper.emitOffset = new Vector3(0f, 0f, 0f);

            ElementConverter elementConverter = go.AddOrGet <ElementConverter>();

            elementConverter.consumedElements = new ElementConverter.ConsumedElement[]
            {
                new ElementConverter.ConsumedElement(new Tag("Filter"), 0.1f),
                new ElementConverter.ConsumedElement(new Tag("CarbonDioxide"), 1.0f)
            };
            elementConverter.outputElements = new ElementConverter.OutputElement[]
            {
                new ElementConverter.OutputElement(0.27f, SimHashes.Carbon, 0f, true, 0f, 0.5f, false, 0f, byte.MinValue),
                new ElementConverter.OutputElement(0.73f, SimHashes.Oxygen, 0f, true, 0f, 0f, false, 0f, byte.MinValue)
            };

            ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>();

            manualDeliveryKG.SetStorage(storage);
            manualDeliveryKG.requestedItemTag = new Tag("Filter");
            manualDeliveryKG.capacity         = 100f;
            manualDeliveryKG.refillMass       = 1f;
            manualDeliveryKG.choreTypeIDHash  = Db.Get().ChoreTypes.FetchCritical.IdHash;

            CoalScrubberPiped coalScrubber = go.AddOrGet <CoalScrubberPiped>();

            coalScrubber.filterTag = new Tag("Filter");

            go.AddOrGet <KBatchedAnimController>().randomiseLoopedOffset = true;
        }
Ejemplo n.º 6
0
    public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
    {
        go.AddOrGet <LoopingSounds>();
        //go.AddOrGet<InverseElectrolyzer>();
        go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.IndustrialMachinery);
        //go.AddOrGet<Pump>();
        //Storage storage = BuildingTemplates.CreateDefaultStorage(go, false);
        //storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);

        /*
         * Storage storage = go.AddOrGet<Storage>();
         * storage.capacityKg = 50f;
         * storage.showInUI = true;
         */
        Storage storage = BuildingTemplates.CreateDefaultStorage(go, false);

        storage.showInUI   = true;
        storage.capacityKg = 30f;
        storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);

        InverseElectrolyzer airFilter = go.AddOrGet <InverseElectrolyzer>();

        airFilter.filterTag = GameTagExtensions.Create(SimHashes.Hydrogen);


        //Prioritizable.AddRef(go);

        /*
         * elementConverter.consumedElements = new ElementConverter.ConsumedElement[2]
         * {
         *      new ElementConverter.ConsumedElement(new Tag("Filter"), 1f),
         *      new ElementConverter.ConsumedElement(new Tag("DirtyWater"), 5f)
         * };
         * elementConverter.outputElements = new ElementConverter.OutputElement[2]
         * {
         *      new ElementConverter.OutputElement(5f, SimHashes.Water, 313.15f, true, 0f, 0.5f, false, 0.75f, 255, 0),
         *      new ElementConverter.OutputElement(0.2f, SimHashes.ToxicSand, 313.15f, true, 0f, 0.5f, false, 0.25f, 255, 0)
         * };
         */

        /*
         * ElementConsumer elementConsumer = go.AddOrGet<ElementConsumer>();
         * elementConsumer.configuration = ElementConsumer.Configuration.AllGas;
         * elementConsumer.consumptionRate = 1f;
         * elementConsumer.storeOnConsume = true;
         * elementConsumer.showInStatusPanel = false;
         * elementConsumer.consumptionRadius = 2;
         */

        ElementConsumer elementConsumer = go.AddOrGet <PassiveElementConsumer>();

        elementConsumer.elementToConsume  = SimHashes.Oxygen;
        elementConsumer.consumptionRate   = 1f;
        elementConsumer.capacityKG        = 1f;
        elementConsumer.consumptionRadius = 3;
        elementConsumer.showInStatusPanel = true;
        elementConsumer.sampleCellOffset  = new Vector3(0f, 0f, 0f);
        elementConsumer.isRequired        = false;
        elementConsumer.storeOnConsume    = true;
        elementConsumer.showDescriptor    = false;

        ElementConverter elementConverter = go.AddOrGet <ElementConverter>();

        elementConverter.consumedElements = new ElementConverter.ConsumedElement[2]
        {
            //new ElementConverter.ConsumedElement(new Tag("Oxygen"), 5*0.888f),
            //new ElementConverter.ConsumedElement(new Tag("Hydrogen"), 5*0.111999989f)
            new ElementConverter.ConsumedElement(GameTagExtensions.Create(SimHashes.Oxygen), 0.888f),
            new ElementConverter.ConsumedElement(GameTagExtensions.Create(SimHashes.Hydrogen), 0.111999989f)
        };
        elementConverter.outputElements = new ElementConverter.OutputElement[1]
        {
            new ElementConverter.OutputElement(1f, SimHashes.Steam, 523.15f, true, 0f, 0.5f, false, 0.75f, 255, 0)
        };

        /*
         * ElementDropper elementDropper = go.AddComponent<ElementDropper>();
         * elementDropper.emitMass = 10f;
         * elementDropper.emitTag = new Tag("ToxicSand");
         * elementDropper.emitOffset = new Vector3(0f, 1f, 0f);
         *
         * ManualDeliveryKG manualDeliveryKG = go.AddComponent<ManualDeliveryKG>();
         * manualDeliveryKG.SetStorage(storage);
         * manualDeliveryKG.requestedItemTag = new Tag("Filter");
         * manualDeliveryKG.capacity = 1200f;
         * manualDeliveryKG.refillMass = 300f;
         * manualDeliveryKG.choreTypeIDHash = Db.Get().ChoreTypes.OperateFetch.IdHash;
         */
        ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

        conduitConsumer.conduitType          = ConduitType.Gas;
        conduitConsumer.consumptionRate      = 2f;
        conduitConsumer.capacityKG           = 5 * 0.111999989f;
        conduitConsumer.capacityTag          = ElementLoader.FindElementByHash(SimHashes.Hydrogen).tag; //GameTagExtensions.Create(SimHashes.Hydrogen);//GameTags.Oxygen;
        conduitConsumer.forceAlwaysSatisfied = true;
        conduitConsumer.alwaysConsume        = true;

        //conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Store;
        conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Dump;

        /*
         * ConduitConsumer conduitConsumer2 = go.AddOrGet<ConduitConsumer>();
         * conduitConsumer2.conduitType = ConduitType.Gas;
         * //conduitConsumer.consumptionRate = 1f;
         * conduitConsumer2.capacityKG = 5*0.888f;
         * conduitConsumer2.capacityTag = ElementLoader.FindElementByHash(SimHashes.Oxygen).tag; //GameTagExtensions.Create(SimHashes.Oxygen);//GameTags.Oxygen;
         * conduitConsumer2.forceAlwaysSatisfied = true;
         * //conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Store;
         * conduitConsumer2.wrongElementResult = ConduitConsumer.WrongElementResult.Dump;
         */
        ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>();

        conduitDispenser.conduitType = ConduitType.Gas;
        //conduitDispenser.invertElementFilter = true;

        conduitDispenser.elementFilter = new SimHashes[1]
        {
            SimHashes.Steam
        };
    }
Ejemplo n.º 7
0
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            go.AddOrGet <LoopingSounds>();
            go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.Toilet);
            go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.FlushToilet);
            FlushToilet flushToilet = go.AddOrGet <FlushToilet>();

            flushToilet.massConsumedPerUse    = 5f;
            flushToilet.massEmittedPerUse     = 11.7f;
            flushToilet.diseaseId             = "FoodPoisoning";
            flushToilet.diseasePerFlush       = 0;
            flushToilet.diseaseOnDupePerFlush = 0;
            KAnimFile[] kanimFileArray = new KAnimFile[1]
            {
                Assets.GetAnim((HashedString)"anim_interacts_toiletflush_kanim")
            };
            ToiletWorkableUse toiletWorkableUse = go.AddOrGet <ToiletWorkableUse>();

            toiletWorkableUse.overrideAnims       = kanimFileArray;
            toiletWorkableUse.workLayer           = Grid.SceneLayer.BuildingFront;
            toiletWorkableUse.resetProgressOnStop = true;
            ConduitConsumer conduitConsumer = go.AddOrGet <ConduitConsumer>();

            conduitConsumer.conduitType        = ConduitType.Liquid;
            conduitConsumer.capacityTag        = ElementLoader.FindElementByHash(SimHashes.Water).tag;
            conduitConsumer.capacityKG         = 5f;
            conduitConsumer.wrongElementResult = ConduitConsumer.WrongElementResult.Store;
            ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>();

            conduitDispenser.conduitType         = ConduitType.Liquid;
            conduitDispenser.invertElementFilter = true;
            conduitDispenser.elementFilter       = new SimHashes[1]
            {
                SimHashes.Water
            };
            Storage storage = go.AddOrGet <Storage>();

            storage.capacityKg        = 25f;
            storage.doDiseaseTransfer = false;
            storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);
            Ownable ownable = go.AddOrGet <Ownable>();

            ownable.slotID      = Db.Get().AssignableSlots.Toilet.Id;
            ownable.canBePublic = true;
            go.AddOrGet <RequireOutputs>().ignoreFullPipe = true;

            ManualDeliveryKG manualDeliveryKg1 = go.AddOrGet <ManualDeliveryKG>();

            manualDeliveryKg1.SetStorage(storage);
            manualDeliveryKg1.requestedItemTag = SimHashes.BleachStone.CreateTag();
            manualDeliveryKg1.capacity         = 2f;
            manualDeliveryKg1.refillMass       = 1f;
            manualDeliveryKg1.minimumMass      = 1f;
            manualDeliveryKg1.choreTypeIDHash  = Db.Get().ChoreTypes.FetchCritical.IdHash;

            ElementConverter elementConverter = go.AddComponent <ElementConverter>();

            elementConverter.consumedElements = new ElementConverter.ConsumedElement[1]
            {
                new ElementConverter.ConsumedElement(SimHashes.BleachStone.CreateTag(), 0.0005f),
            };
            elementConverter.outputElements = new ElementConverter.OutputElement[0]
            {
            };
        }
Ejemplo n.º 8
0
        protected void OnSpawn(GameObject go)
        {
            if (!isSet)
            {
                setConfiguration(go);
            }
            if (//go.GetComponent<GeneticTraitComponent>().IsBaby() ||
                go.GetComponent <GeneticTraitComponent>().IsAdult()
                //||go.GetComponent<GeneticTraitComponent>().IsEgg()
                )
            {
                var ID = ElementConverterGoodTrait.ID_Type;
                var reduction_factor  = 4;
                var consumptionRate   = 0.2f / reduction_factor;
                var outputKgPerSecond = 0.2f / reduction_factor;

                var element1      = ElementLoader.FindElementByHash(element_input);
                var element2      = ElementLoader.FindElementByHash(element_output);
                var string_holder = go.AddComponent <StringHolderComponent>();
                string_holder.text = "This critter skin absorbs small quantities of " + element1.name + " and drops " + element2.name;
                string_holder.id   = ID;
                go.AddOrGet <Storage>().capacityKg = 10f;
                ElementConsumer elementConsumer = (ElementConsumer)go.AddOrGet <PassiveElementConsumer>();
                elementConsumer.elementToConsume  = element_input;
                elementConsumer.consumptionRate   = consumptionRate;
                elementConsumer.capacityKG        = 10f;
                elementConsumer.consumptionRadius = (byte)3;
                elementConsumer.showInStatusPanel = true;
                elementConsumer.sampleCellOffset  = new Vector3(0.0f, 0.0f, 0.0f);
                elementConsumer.isRequired        = false;
                elementConsumer.storeOnConsume    = true;
                elementConsumer.showDescriptor    = false;
                elementConsumer.EnableConsumption(true);

                if (element2.IsGas)
                {
                    DebugHelper.Log("element2.IsGas");
                    go.AddOrGet <UpdateElementConsumerPosition>();
                    ElementConverter elementConverter = go.AddOrGet <ElementConverter>();
                    elementConverter.consumedElements = new ElementConverter.ConsumedElement[1]
                    {
                        new ElementConverter.ConsumedElement(element_input.CreateTag(), consumptionRate)
                    };
                    elementConverter.outputElements = new ElementConverter.OutputElement[1]
                    {
                        new ElementConverter.OutputElement(outputKgPerSecond, element_output, 0.0f, true, false, 0.0f, 0.5f, 1f, byte.MaxValue, 0)
                    };
                }
                if (element2.IsLiquid)
                {
                    DebugHelper.Log("element2.IsLiquid");
                    go.AddOrGet <UpdateElementConsumerPosition>();
                    BubbleSpawner bubbleSpawner = go.AddComponent <BubbleSpawner>();
                    bubbleSpawner.element         = element_output;
                    bubbleSpawner.emitMass        = 2f;
                    bubbleSpawner.emitVariance    = 0.5f;
                    bubbleSpawner.initialVelocity = (Vector2) new Vector2f(0, 1);
                    ElementConverter elementConverter = go.AddOrGet <ElementConverter>();
                    elementConverter.consumedElements = new ElementConverter.ConsumedElement[1]
                    {
                        new ElementConverter.ConsumedElement(element_input.CreateTag(), consumptionRate)
                    };
                    elementConverter.outputElements = new ElementConverter.OutputElement[1]
                    {
                        new ElementConverter.OutputElement(outputKgPerSecond, element_output, 0.0f, true, true, 0.0f, 0.5f, 1f, byte.MaxValue, 0)
                    };
                }
                if (element2.IsSolid)
                {
                    DebugHelper.Log("element2.IsSolid");
                    go.AddOrGet <UpdateElementConsumerPosition>();
                    ElementDropper elementDropper = go.AddComponent <ElementDropper>();
                    elementDropper.emitMass   = 2f;
                    elementDropper.emitTag    = element_output.CreateTag();
                    elementDropper.emitOffset = new Vector3(0.0f, 0.0f, 0.0f);
                    ElementConverter elementConverter = go.AddOrGet <ElementConverter>();
                    elementConverter.consumedElements = new ElementConverter.ConsumedElement[1]
                    {
                        new ElementConverter.ConsumedElement(element_input.CreateTag(), consumptionRate)
                    };
                    elementConverter.outputElements = new ElementConverter.OutputElement[1]
                    {
                        new ElementConverter.OutputElement(outputKgPerSecond, element_output, 0.0f, true, true, 0.0f, 0.5f, 1f, byte.MaxValue, 0)
                    };
                }
            }
        }
Ejemplo n.º 9
0
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            go.AddOrGet <LoopingSounds>();
            go.AddOrGet <DropAllWorkable>();
            Prioritizable.AddRef(go);

            List <Storage.StoredItemModifier> mod = new List <Storage.StoredItemModifier>
            {
                Storage.StoredItemModifier.Hide, Storage.StoredItemModifier.Insulate, Storage.StoredItemModifier.Preserve, Storage.StoredItemModifier.Seal
            };

            Storage storage = BuildingTemplates.CreateDefaultStorage(go);

            storage.SetDefaultStoredItemModifiers(mod);
            storage.showInUI   = true;
            storage.capacityKg = 20000f;
            storage.SetDefaultStoredItemModifiers(Storage.StandardSealedStorage);

            ElementConsumer elementConsumer = go.AddOrGet <ElementConsumer>();

            elementConsumer.elementToConsume  = SimHashes.Methane;
            elementConsumer.consumptionRate   = 1000f;
            elementConsumer.consumptionRadius = 10;
            elementConsumer.showInStatusPanel = true;
            elementConsumer.sampleCellOffset  = new Vector3(0f, 0f, 0f);
            elementConsumer.isRequired        = false;
            elementConsumer.storeOnConsume    = true;
            elementConsumer.showDescriptor    = false;

            ElementDropper elementDropper = go.AddComponent <ElementDropper>();

            elementDropper.emitMass   = 100f;
            elementDropper.emitTag    = new Tag("SolidMethane");
            elementDropper.emitOffset = new Vector3(0f, 0f, 0f);

            ElementConverter elementConverter = go.AddOrGet <ElementConverter>();

            elementConverter.consumedElements = new ElementConverter.ConsumedElement[]
            {
                new ElementConverter.ConsumedElement(new Tag("Ice"), 1f),
                new ElementConverter.ConsumedElement(new Tag("Methane"), 1.0f)
            };
            elementConverter.outputElements = new ElementConverter.OutputElement[]
            {
                new ElementConverter.OutputElement(1.0f, SimHashes.SolidMethane, 50.15f, storeOutput: true, 0f, 0f, apply_input_temperature: false, diseaseWeight: 0f, addedDiseaseIdx: byte.MinValue)
            };

            ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>();

            manualDeliveryKG.SetStorage(storage);
            manualDeliveryKG.requestedItemTag = new Tag("Ice");
            manualDeliveryKG.capacity         = 1000f;
            manualDeliveryKG.refillMass       = 10f;
            manualDeliveryKG.choreTypeIDHash  = Db.Get().ChoreTypes.FetchCritical.IdHash;

            NaturalGasScrubber NaturalGasScrubber = go.AddOrGet <NaturalGasScrubber>();

            NaturalGasScrubber.filterTag = new Tag("Ice");

            go.AddOrGet <KBatchedAnimController>().randomiseLoopedOffset = true;
        }
Ejemplo n.º 10
0
 public SMInstance(AlgaeGrower master) : base(master)
 {
     _operational = master.GetComponent <Operational>();
     _converter   = master.GetComponent <ElementConverter>();
 }
        public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
        {
            Storage storage1 = go.AddOrGet <Storage>();

            storage1.showInUI = true;

            Storage storage2 = go.AddComponent <Storage>();

            storage2.capacityKg = 5f;
            storage2.showInUI   = true;
            storage2.SetDefaultStoredItemModifiers(PollutedWaterStorageModifiers);
            storage2.allowItemRemoval = false;
            storage2.storageFilters   = new List <Tag> {
                ElementLoader.FindElementByHash(SimHashes.DirtyWater).tag
            };

            ManualDeliveryKG manualDeliveryKg1 = go.AddOrGet <ManualDeliveryKG>();

            manualDeliveryKg1.SetStorage(storage1);
            manualDeliveryKg1.requestedItemTag = new Tag("Algae");
            manualDeliveryKg1.capacity         = 90f;
            manualDeliveryKg1.refillMass       = 18f;
            manualDeliveryKg1.choreTypeIDHash  = Db.Get().ChoreTypes.OperateFetch.IdHash;

            ManualDeliveryKG manualDeliveryKg2 = go.AddComponent <ManualDeliveryKG>();

            manualDeliveryKg2.SetStorage(storage1);
            manualDeliveryKg2.requestedItemTag = new Tag("Water");
            manualDeliveryKg2.capacity         = 360f;
            manualDeliveryKg2.refillMass       = 72f;
            manualDeliveryKg2.allowPause       = true;
            manualDeliveryKg2.choreTypeIDHash  = Db.Get().ChoreTypes.OperateFetch.IdHash;

            PipedAlgaeTerrarium algaeHabitat = go.AddOrGet <PipedAlgaeTerrarium>();

            algaeHabitat.lightBonusMultiplier = 1.1f;
            algaeHabitat.pressureSampleOffset = new CellOffset(0, 1);

            ElementConverter elementConverter = go.AddComponent <ElementConverter>();

            elementConverter.consumedElements = new ElementConverter.ConsumedElement[2]
            {
                new ElementConverter.ConsumedElement(new Tag("Algae"), 0.03f),
                new ElementConverter.ConsumedElement(new Tag("Water"), 0.3f)
            };
            elementConverter.outputElements = new ElementConverter.OutputElement[2]
            {
                new ElementConverter.OutputElement(0.04f, SimHashes.Oxygen, 303.15f, false, 0.0f, 1f, false, 1f, byte.MaxValue, 0),
                new ElementConverter.OutputElement(0.2903333f, SimHashes.DirtyWater, 303.15f, true, 0.0f, 1f, false, 1f, byte.MaxValue, 0)
            };

            ConduitDispenser conduitDispenser = go.AddOrGet <ConduitDispenser>();

            conduitDispenser.conduitType         = ConduitType.Liquid;
            conduitDispenser.invertElementFilter = true;
            conduitDispenser.elementFilter       = new SimHashes[1]
            {
                SimHashes.Water
            };

            ElementConsumer elementConsumer = go.AddOrGet <ElementConsumer>();

            elementConsumer.elementToConsume  = SimHashes.CarbonDioxide;
            elementConsumer.consumptionRate   = 0.0003333333f;
            elementConsumer.consumptionRadius = (byte)3;
            elementConsumer.showInStatusPanel = true;
            elementConsumer.sampleCellOffset  = new Vector3(0.0f, 1f, 0.0f);
            elementConsumer.isRequired        = false;

            PassiveElementConsumer passiveElementConsumer = go.AddComponent <PassiveElementConsumer>();

            passiveElementConsumer.elementToConsume  = SimHashes.Water;
            passiveElementConsumer.consumptionRate   = 1.2f;
            passiveElementConsumer.consumptionRadius = (byte)1;
            passiveElementConsumer.showDescriptor    = false;
            passiveElementConsumer.storeOnConsume    = true;
            passiveElementConsumer.capacityKG        = 360f;
            passiveElementConsumer.showInStatusPanel = false;

            go.AddOrGet <AnimTileable>();

            Prioritizable.AddRef(go);
        }
Ejemplo n.º 12
0
 public SMInstance(PipedAlgaeTerrarium master) : base(master)
 {
     Converter    = master.GetComponent <ElementConverter>();
     _operational = master.GetComponent <Operational>();
     _dispenser   = master.GetComponent <ConduitDispenser>();
 }