public void CreateEmptyChore()
        {
            if (emptyChore != null)
            {
                emptyChore.Cancel("dupe");
            }
            AlgaeHabitatEmpty component = base.master.GetComponent <AlgaeHabitatEmpty>();

            emptyChore = new WorkChore <AlgaeHabitatEmpty>(Db.Get().ChoreTypes.EmptyStorage, component, null, true, OnEmptyComplete, null, null, true, null, false, true, null, false, true, true, PriorityScreen.PriorityClass.basic, 5, true, true);
        }
    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);
    }