// Copyright (c) Strange Loop Games. All rights reserved.
// See LICENSE file in the project root for full license information.
// <auto-generated from FormsTemplate.tt/>

namespace Eco.Mods.TechTree
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using Eco.Gameplay.Blocks;
    using Eco.Gameplay.Components;
    using Eco.Gameplay.DynamicValues;
    using Eco.Gameplay.Items;
    using Eco.Gameplay.Objects;
    using Eco.Gameplay.Players;
    using Eco.Gameplay.Skills;
    using Eco.Gameplay.Systems.TextLinks;
    using Eco.Shared.Serialization;
    using Eco.Shared.Utils;
    using Eco.World;
    using Eco.World.Water;
    using Eco.World.Blocks;
    using Eco.Gameplay.Pipes;
    using Tag = Eco.Core.Items.TagAttribute;

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(FloorFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteFloorBlock :
        Block, IRepresentsItem
    {
        public Type RepresentedItemType { get { return typeof(ReinforcedConcreteItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(CubeFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteCubeBlock :
        Block, IRepresentsItem
    {
        public Type RepresentedItemType { get { return typeof(ReinforcedConcreteItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(RoofCubeFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofCubeBlock :
        Block, IRepresentsItem
    {
        public Type RepresentedItemType { get { return typeof(ReinforcedConcreteItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(FlatRoofFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteFlatRoofBlock :
        Block, IRepresentsItem
    {
        public Type RepresentedItemType { get { return typeof(ReinforcedConcreteItem); } }
    }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(WallFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteWallBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(ReinforcedConcreteItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(RoofFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(ReinforcedConcreteItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(ColumnFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteColumnBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(ReinforcedConcreteItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(WindowFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteWindowBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(ReinforcedConcreteItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(RoofPeakSetFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofPeakSetBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(ReinforcedConcreteItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(ThinColumnFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteThinColumnBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(ReinforcedConcreteItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(DoubleWindowFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteDoubleWindowBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(ReinforcedConcreteItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(UnderPeakSetFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderPeakSetBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(ReinforcedConcreteItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(PeakSetFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcretePeakSetBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(ReinforcedConcreteItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(RoadBarrierFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoadBarrierBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(ReinforcedConcreteItem); } }
    }
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(FenceFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteFenceBlock :
        Block, IRepresentsItem, IWaterLoggedBlock
    {
        public Type RepresentedItemType { get { return typeof(ReinforcedConcreteItem); } }
    }





    [RotatedVariants(typeof(ReinforcedConcreteLadderBlock), typeof(ReinforcedConcreteLadder90Block), typeof(ReinforcedConcreteLadder180Block), typeof(ReinforcedConcreteLadder270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(LadderFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteLadderBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteLadder90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteLadder180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteLadder270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteStairsBlock), typeof(ReinforcedConcreteStairs90Block), typeof(ReinforcedConcreteStairs180Block), typeof(ReinforcedConcreteStairs270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(StairsFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteStairsBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteStairs90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteStairs180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteStairs270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteUnderStairsBlock), typeof(ReinforcedConcreteUnderStairs90Block), typeof(ReinforcedConcreteUnderStairs180Block), typeof(ReinforcedConcreteUnderStairs270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(UnderStairsFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderStairsBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderStairs90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderStairs180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderStairs270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteBasicSlopeSideBlock), typeof(ReinforcedConcreteBasicSlopeSide90Block), typeof(ReinforcedConcreteBasicSlopeSide180Block), typeof(ReinforcedConcreteBasicSlopeSide270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(BasicSlopeSideFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteBasicSlopeSideBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteBasicSlopeSide90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteBasicSlopeSide180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteBasicSlopeSide270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteBasicSlopeCornerBlock), typeof(ReinforcedConcreteBasicSlopeCorner90Block), typeof(ReinforcedConcreteBasicSlopeCorner180Block), typeof(ReinforcedConcreteBasicSlopeCorner270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(BasicSlopeCornerFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteBasicSlopeCornerBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteBasicSlopeCorner90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteBasicSlopeCorner180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteBasicSlopeCorner270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteBasicSlopeTurnBlock), typeof(ReinforcedConcreteBasicSlopeTurn90Block), typeof(ReinforcedConcreteBasicSlopeTurn180Block), typeof(ReinforcedConcreteBasicSlopeTurn270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(BasicSlopeTurnFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteBasicSlopeTurnBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteBasicSlopeTurn90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteBasicSlopeTurn180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteBasicSlopeTurn270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteBasicSlopePointBlock), typeof(ReinforcedConcreteBasicSlopePoint90Block), typeof(ReinforcedConcreteBasicSlopePoint180Block), typeof(ReinforcedConcreteBasicSlopePoint270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(BasicSlopePointFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteBasicSlopePointBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteBasicSlopePoint90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteBasicSlopePoint180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteBasicSlopePoint270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteStairsCornerBlock), typeof(ReinforcedConcreteStairsCorner90Block), typeof(ReinforcedConcreteStairsCorner180Block), typeof(ReinforcedConcreteStairsCorner270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(StairsCornerFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteStairsCornerBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteStairsCorner90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteStairsCorner180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteStairsCorner270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteStairsTurnBlock), typeof(ReinforcedConcreteStairsTurn90Block), typeof(ReinforcedConcreteStairsTurn180Block), typeof(ReinforcedConcreteStairsTurn270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(StairsTurnFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteStairsTurnBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteStairsTurn90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteStairsTurn180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteStairsTurn270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteUnderSlopeSideBlock), typeof(ReinforcedConcreteUnderSlopeSide90Block), typeof(ReinforcedConcreteUnderSlopeSide180Block), typeof(ReinforcedConcreteUnderSlopeSide270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(UnderSlopeSideFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderSlopeSideBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderSlopeSide90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderSlopeSide180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderSlopeSide270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteUnderSlopeCornerBlock), typeof(ReinforcedConcreteUnderSlopeCorner90Block), typeof(ReinforcedConcreteUnderSlopeCorner180Block), typeof(ReinforcedConcreteUnderSlopeCorner270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(UnderSlopeCornerFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderSlopeCornerBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderSlopeCorner90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderSlopeCorner180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderSlopeCorner270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteUnderSlopeTurnBlock), typeof(ReinforcedConcreteUnderSlopeTurn90Block), typeof(ReinforcedConcreteUnderSlopeTurn180Block), typeof(ReinforcedConcreteUnderSlopeTurn270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(UnderSlopeTurnFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderSlopeTurnBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderSlopeTurn90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderSlopeTurn180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderSlopeTurn270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteUnderSlopePeakBlock), typeof(ReinforcedConcreteUnderSlopePeak90Block), typeof(ReinforcedConcreteUnderSlopePeak180Block), typeof(ReinforcedConcreteUnderSlopePeak270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(UnderSlopePeakFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderSlopePeakBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderSlopePeak90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderSlopePeak180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderSlopePeak270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteRoofSideBlock), typeof(ReinforcedConcreteRoofSide90Block), typeof(ReinforcedConcreteRoofSide180Block), typeof(ReinforcedConcreteRoofSide270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(RoofSideFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofSideBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofSide90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofSide180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofSide270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteRoofTurnBlock), typeof(ReinforcedConcreteRoofTurn90Block), typeof(ReinforcedConcreteRoofTurn180Block), typeof(ReinforcedConcreteRoofTurn270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(RoofTurnFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofTurnBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofTurn90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofTurn180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofTurn270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteRoofCornerBlock), typeof(ReinforcedConcreteRoofCorner90Block), typeof(ReinforcedConcreteRoofCorner180Block), typeof(ReinforcedConcreteRoofCorner270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(RoofCornerFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofCornerBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofCorner90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofCorner180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofCorner270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteRoofPeakBlock), typeof(ReinforcedConcreteRoofPeak90Block), typeof(ReinforcedConcreteRoofPeak180Block), typeof(ReinforcedConcreteRoofPeak270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(RoofPeakFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofPeakBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofPeak90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofPeak180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteRoofPeak270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteUnderInnerPeakBlock), typeof(ReinforcedConcreteUnderInnerPeak90Block), typeof(ReinforcedConcreteUnderInnerPeak180Block), typeof(ReinforcedConcreteUnderInnerPeak270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(UnderInnerPeakFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderInnerPeakBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderInnerPeak90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderInnerPeak180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteUnderInnerPeak270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteHalfSlopeABlock), typeof(ReinforcedConcreteHalfSlopeA90Block), typeof(ReinforcedConcreteHalfSlopeA180Block), typeof(ReinforcedConcreteHalfSlopeA270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(HalfSlopeAFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteHalfSlopeABlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteHalfSlopeA90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteHalfSlopeA180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteHalfSlopeA270Block : Block, IWaterLoggedBlock
    { }
    [RotatedVariants(typeof(ReinforcedConcreteHalfSlopeBBlock), typeof(ReinforcedConcreteHalfSlopeB90Block), typeof(ReinforcedConcreteHalfSlopeB180Block), typeof(ReinforcedConcreteHalfSlopeB270Block))]
    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [IsForm(typeof(HalfSlopeBFormType), typeof(ReinforcedConcreteItem))]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteHalfSlopeBBlock : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteHalfSlopeB90Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteHalfSlopeB180Block : Block, IWaterLoggedBlock
    { }

    [Serialized]
    [Wall, Constructed, Solid, BuildRoomMaterialOption]
    [BlockTier(3)]
    [Tag("Constructable")]
    public partial class ReinforcedConcreteHalfSlopeB270Block : Block, IWaterLoggedBlock
    { }

}