Пример #1
0
        protected override void PrepareConstructionConfig(
            ConstructionTileRequirements tileRequirements,
            ConstructionStageConfig build,
            ConstructionStageConfig repair,
            ConstructionUpgradeConfig upgrade,
            out ProtoStructureCategory category)
        {
            tileRequirements.Add(ErrorWellNotAllowed,
                                 c => c.Tile.ProtoTile is IProtoTileWellAllowed);

            this.PrepareConstructionConfigWell(tileRequirements, build, repair, upgrade, out category);
        }
Пример #2
0
        protected override void PrepareFloorConstructionConfig(
            ConstructionStageConfig build,
            ConstructionStageConfig repair)
        {
            build.StagesCount = 1;
            //build.StageDurationSeconds = BuildDuration.Short; <-- irrelevant here
            build.AddStageRequiredItem <ItemCement>(count: 5);

            repair.StagesCount          = 1;
            repair.StageDurationSeconds = BuildDuration.Short;
            repair.AddStageRequiredItem <ItemCement>(count: 2);
        }
Пример #3
0
        protected sealed override void PrepareConstructionConfig(
            ConstructionTileRequirements tileRequirements,
            ConstructionStageConfig build,
            ConstructionStageConfig repair,
            ConstructionUpgradeConfig upgrade,
            out ProtoStructureCategory category)
        {
            category          = GetCategory <StructureCategoryDecorations>();
            build.StagesCount = 1;

            this.PrepareDecorationConstructionConfig(tileRequirements, build, repair);
        }
Пример #4
0
 protected sealed override void PrepareConstructionConfig(
     ConstructionTileRequirements tileRequirements,
     ConstructionStageConfig build,
     ConstructionStageConfig repair,
     ConstructionUpgradeConfig upgrade,
     out ProtoStructureCategory category)
 {
     tileRequirements.Add(LandClaimSystem.ValidatorNewLandClaimNoLandClaimIntersections);
     tileRequirements.Add(LandClaimSystem.ValidatorCheckCharacterLandClaimAmountLimit);
     tileRequirements.Add(LandClaimSystem.ValidatorCheckCharacterLandClaimDepositClaimLimit);
     this.PrepareLandClaimConstructionConfig(tileRequirements, build, repair, upgrade, out category);
 }
Пример #5
0
 protected sealed override void PrepareConstructionConfig(
     ConstructionTileRequirements tileRequirements,
     ConstructionStageConfig build,
     ConstructionStageConfig repair,
     ConstructionUpgradeConfig upgrade,
     out ProtoStructureCategory category)
 {
     this.PrepareConstructionConfig(build,
                                    repair,
                                    upgrade,
                                    out category);
 }
Пример #6
0
        protected override void PrepareConstructionConfig(
            ConstructionTileRequirements tileRequirements,
            ConstructionStageConfig build,
            ConstructionStageConfig repair,
            ConstructionUpgradeConfig upgrade,
            out ProtoStructureCategory category)
        {
            tileRequirements.Add(ErrorBuildingAllowedOnlyInDesert,
                                 c => c.Tile.ProtoTile is TileBarren);

            this.PrepareConstructionConfigWell(tileRequirements, build, repair, upgrade, out category);
        }
Пример #7
0
        protected override void PrepareFarmPlotConstructionConfig(
            ConstructionTileRequirements tileRequirements,
            ConstructionStageConfig build,
            ConstructionStageConfig repair)
        {
            build.StagesCount          = 1;
            build.StageDurationSeconds = BuildDuration.Short;
            build.AddStageRequiredItem <ItemPlanks>(count: 25);
            build.AddStageRequiredItem <ItemSand>(count: 25);

            repair.StagesCount          = 1;
            repair.StageDurationSeconds = BuildDuration.Short;
        }
Пример #8
0
        protected override void PrepareDecorationConstructionConfig(
            ConstructionTileRequirements tileRequirements,
            ConstructionStageConfig build,
            ConstructionStageConfig repair)
        {
            build.StagesCount          = 10;
            build.StageDurationSeconds = BuildDuration.Short;
            build.AddStageRequiredItem <ItemIngotCopper>(count: 3);

            repair.StagesCount          = 10;
            repair.StageDurationSeconds = BuildDuration.Short;
            repair.AddStageRequiredItem <ItemIngotCopper>(count: 2);
        }
Пример #9
0
 protected sealed override void PrepareConstructionConfig(
     ConstructionTileRequirements tileRequirements,
     ConstructionStageConfig build,
     ConstructionStageConfig repair,
     ConstructionUpgradeConfig upgrade,
     out ProtoStructureCategory category)
 {
     build.IsAllowed    = false;
     build.StagesCount  = 1;
     repair.IsAllowed   = false;
     repair.StagesCount = 1;
     category           = GetCategory <StructureCategoryBuildings>();
 }
Пример #10
0
        protected override void PrepareFloorDecorationConstructionConfig(
            ConstructionStageConfig build,
            ConstructionStageConfig repair)
        {
            build.StagesCount          = 1;
            build.StageDurationSeconds = BuildDuration.Short;
            build.AddStageRequiredItem <ItemThread>(count: 100);
            build.AddStageRequiredItem <ItemRope>(count: 10);
            build.AddStageRequiredItem <ItemGlue>(count: 10);

            repair.StagesCount          = 10;
            repair.StageDurationSeconds = BuildDuration.Short;
            repair.AddStageRequiredItem <ItemThread>(count: 5);
        }
Пример #11
0
        protected override void PrepareDecorationConstructionConfig(
            ConstructionTileRequirements tileRequirements,
            ConstructionStageConfig build,
            ConstructionStageConfig repair)
        {
            build.StagesCount          = 5;
            build.StageDurationSeconds = BuildDuration.Short;
            build.AddStageRequiredItem <ItemPlanks>(count: 15);
            build.AddStageRequiredItem <ItemGlue>(count: 1);

            repair.StagesCount          = 10;
            repair.StageDurationSeconds = BuildDuration.Short;
            repair.AddStageRequiredItem <ItemPlanks>(count: 5);
        }
Пример #12
0
        protected sealed override void PrepareConstructionConfig(
            ConstructionTileRequirements tileRequirements,
            ConstructionStageConfig build,
            ConstructionStageConfig repair,
            ConstructionUpgradeConfig upgrade,
            out ProtoStructureCategory category)
        {
            tileRequirements.Add(LandClaimSystem.ValidatorIsOwnedLand);

            this.PrepareConstructionConfig(build,
                                           repair,
                                           upgrade,
                                           out category);
        }
Пример #13
0
        protected sealed override void PrepareTileRequirements(ConstructionTileRequirements tileRequirements)
        {
            var configBuild   = new ConstructionStageConfig();
            var configRepair  = new ConstructionStageConfig();
            var configUpgrade = new ConstructionUpgradeConfig();

            tileRequirements.Add(ConstructionTileRequirements.ValidatorNotRestrictedArea)
            .Add(ConstructionTileRequirements.ValidatorNoNpcsAround)
            .Add(ConstructionTileRequirements.ValidatorNoPlayersNearby)
            .Add(LandClaimSystem.ValidatorIsOwnedOrFreeArea)
            .Add(LandClaimSystem.ValidatorNoRaid);

            this.PrepareConstructionConfig(
                tileRequirements,
                configBuild,
                configRepair,
                configUpgrade,
                out var category);

            configBuild.ApplyRates(StructureConstants.BuildItemsCountMultiplier);
            configUpgrade.ApplyRates(StructureConstants.BuildItemsCountMultiplier);
            configRepair.ApplyRates(StructureConstants.RepairItemsCountMultiplier);

            this.Category = category
                            ?? throw new Exception(
                                      "Structure category is not set during "
                                      + nameof(this.PrepareConstructionConfig)
                                      + " call");

            foreach (var upgradeEntry in configUpgrade.Entries)
            {
                if (upgradeEntry.RequiredItems.Count > 4)
                {
                    // we don't allow more than 4 items for upgrades (the upgrade UI space is strictly limited)
                    throw new Exception(this.ShortId
                                        + " requires more than 4 items to upgrade to "
                                        + upgradeEntry.ProtoStructure.ShortId
                                        + ". Max 4 items allowed");
                }
            }

            if (configRepair.IsAllowed)
            {
                this.ValidateRepairConfig(configRepair, configBuild);
            }

            this.ConfigBuild   = configBuild;
            this.ConfigRepair  = configRepair;
            this.ConfigUpgrade = configUpgrade;
        }
Пример #14
0
        protected override void PrepareDecorationConstructionConfig(
            ConstructionTileRequirements tileRequirements,
            ConstructionStageConfig build,
            ConstructionStageConfig repair)
        {
            build.StagesCount          = 10;
            build.StageDurationSeconds = BuildDuration.Short;
            build.AddStageRequiredItem <ItemIngotGold>(count: 5);
            build.AddStageRequiredItem <ItemCoinPenny>(count: 100);

            repair.StagesCount          = 10;
            repair.StageDurationSeconds = BuildDuration.Short;
            repair.AddStageRequiredItem <ItemIngotGold>(count: 1);
        }
Пример #15
0
        protected override void PrepareDecorationConstructionConfig(
            ConstructionTileRequirements tileRequirements,
            ConstructionStageConfig build,
            ConstructionStageConfig repair)
        {
            // most of the stuff is inherited, only need to override sounds and build requirements
            build.StagesCount          = 10;
            build.StageDurationSeconds = BuildDuration.Short;
            build.AddStageRequiredItem <ItemPlanks>(count: 5);
            build.AddStageRequiredItem <ItemIngotIron>(count: 2);

            repair.StagesCount          = 5;
            repair.StageDurationSeconds = BuildDuration.Short;
            repair.AddStageRequiredItem <ItemPlanks>(count: 5);
            repair.AddStageRequiredItem <ItemIngotIron>(count: 2);
        }
Пример #16
0
        protected override void PrepareConstructionConfig(
            ConstructionStageConfig build,
            ConstructionStageConfig repair,
            ConstructionUpgradeConfig upgrade,
            out ProtoStructureCategory category)
        {
            category = GetCategory <StructureCategoryDecorations>();

            build.StagesCount          = 5;
            build.StageDurationSeconds = BuildDuration.Medium;
            build.AddStageRequiredItem <ItemPlanks>(count: 5);

            repair.StagesCount          = 5;
            repair.StageDurationSeconds = BuildDuration.Medium;
            repair.AddStageRequiredItem <ItemPlanks>(count: 3);
        }
Пример #17
0
        protected override void PrepareConstructionConfig(
            ConstructionTileRequirements tileRequirements,
            ConstructionStageConfig build,
            ConstructionStageConfig repair,
            ConstructionUpgradeConfig upgrade,
            out ProtoStructureCategory category)
        {
            var buildAdditionalReactor = new InputItems();

            this.PrepareConstructionConfigGenerator(tileRequirements,
                                                    build,
                                                    repair,
                                                    buildAdditionalReactor,
                                                    out category);
            this.BuildAdditionalReactorRequiredItems = buildAdditionalReactor.AsReadOnly();
        }
        protected override void PrepareDecorationConstructionConfig(
            ConstructionTileRequirements tileRequirements,
            ConstructionStageConfig build,
            ConstructionStageConfig repair)
        {
            build.StagesCount          = 10;
            build.StageDurationSeconds = BuildDuration.Short;
            build.AddStageRequiredItem <ItemOrePragmium>(count: 10);
            build.AddStageRequiredItem <ItemSolvent>(count: 5);
            build.AddStageRequiredItem <ItemIngotSteel>(count: 5);

            repair.StagesCount          = 10;
            repair.StageDurationSeconds = BuildDuration.Short;
            repair.AddStageRequiredItem <ItemOrePragmium>(count: 1);
            repair.AddStageRequiredItem <ItemIngotSteel>(count: 1);
        }
Пример #19
0
        protected override void PrepareConstructionConfig(
            ConstructionStageConfig build,
            ConstructionStageConfig repair,
            ConstructionUpgradeConfig upgrade,
            out ProtoStructureCategory category)
        {
            category = GetCategory <StructureCategoryBuildings>();

            build.StagesCount          = 3;
            build.StageDurationSeconds = BuildDuration.Short;
            build.AddStageRequiredItem <ItemIngotIron>(count: 1);

            repair.StagesCount          = 3;
            repair.StageDurationSeconds = BuildDuration.Short;
            repair.AddStageRequiredItem <ItemIngotIron>(count: 1);
        }
Пример #20
0
        protected override void PrepareLaunchpadConstructionConfig(
            ConstructionStageConfig build,
            ConstructionStageConfig repair,
            ConstructionUpgradeConfig upgrade)
        {
            // build is not allowed - it's an upgrade from previous level
            build.IsAllowed = false;

            repair.StagesCount          = 10;
            repair.StageDurationSeconds = BuildDuration.VeryLong;
            repair.AddStageRequiredItem <ItemIngotSteel>(count: 4);
            repair.AddStageRequiredItem <ItemComponentsElectronic>(count: 2);

            upgrade.AddUpgrade <ObjectLaunchpadStage5>();
            // please note: the upgrade is free but requires finishing the tasks defined below
        }
Пример #21
0
        protected override void PrepareConstructionConfig(
            ConstructionStageConfig build,
            ConstructionStageConfig repair,
            ConstructionUpgradeConfig upgrade,
            out ProtoStructureCategory category)
        {
            category = GetCategory <StructureCategoryOther>();

            build.StagesCount          = 10;
            build.StageDurationSeconds = BuildDuration.Short;
            build.AddStageRequiredItem <ItemPlanks>(count: 4);

            repair.StagesCount          = 10;
            repair.StageDurationSeconds = BuildDuration.Short;
            repair.AddStageRequiredItem <ItemPlanks>(count: 2);
        }
Пример #22
0
        protected override void PrepareConstructionConfigWell(
            ConstructionTileRequirements tileRequirements,
            ConstructionStageConfig build,
            ConstructionStageConfig repair,
            ConstructionUpgradeConfig upgrade,
            out ProtoStructureCategory category)
        {
            category = GetCategory <StructureCategoryIndustry>();

            build.StagesCount          = 5;
            build.StageDurationSeconds = BuildDuration.Short;
            build.AddStageRequiredItem <ItemStone>(count: 12);

            repair.StagesCount          = 10;
            repair.StageDurationSeconds = BuildDuration.Short;
            repair.AddStageRequiredItem <ItemStone>(count: 3);
        }
Пример #23
0
        protected override void PrepareConstructionConfig(
            ConstructionStageConfig build,
            ConstructionStageConfig repair,
            ConstructionUpgradeConfig upgrade,
            out ProtoStructureCategory category)
        {
            category = GetCategory <StructureCategoryBuildings>();

            build.StagesCount          = 5;
            build.StageDurationSeconds = BuildDuration.VeryLong;
            build.AddStageRequiredItem <ItemCement>(count: 10);
            build.AddStageRequiredItem <ItemIngotSteel>(count: 5);

            repair.StagesCount          = 5;
            repair.StageDurationSeconds = BuildDuration.Short;
            repair.AddStageRequiredItem <ItemIngotSteel>(count: 4);
        }
Пример #24
0
        protected override void PrepareConstructionConfig(
            ConstructionTileRequirements tileRequirements,
            ConstructionStageConfig build,
            ConstructionStageConfig repair,
            ConstructionUpgradeConfig upgrade,
            out ProtoStructureCategory category)
        {
            category = GetCategory <StructureCategoryStorage>();

            build.StagesCount          = 10;
            build.StageDurationSeconds = BuildDuration.Short;
            build.AddStageRequiredItem <ItemIngotSteel>(count: 2);

            repair.StagesCount          = 10;
            repair.StageDurationSeconds = BuildDuration.Short;
            repair.AddStageRequiredItem <ItemIngotSteel>(count: 1);
        }
Пример #25
0
        protected override void PrepareConstructionConfigSprinkler(
            ConstructionStageConfig build,
            ConstructionStageConfig repair,
            ConstructionUpgradeConfig upgrade,
            out ProtoStructureCategory category)
        {
            category = GetCategory <StructureCategoryFood>();

            build.StagesCount          = 5;
            build.StageDurationSeconds = BuildDuration.Short;
            build.AddStageRequiredItem <ItemIngotSteel>(count: 2);
            build.AddStageRequiredItem <ItemGlassRaw>(count: 2);
            build.AddStageRequiredItem <ItemComponentsElectronic>(count: 1);

            repair.StagesCount          = 10;
            repair.StageDurationSeconds = BuildDuration.Short;
            repair.AddStageRequiredItem <ItemIngotSteel>(count: 1);
        }
Пример #26
0
        protected override void PrepareLandClaimConstructionConfig(
            ConstructionTileRequirements tileRequirements,
            ConstructionStageConfig build,
            ConstructionStageConfig repair,
            ConstructionUpgradeConfig upgrade,
            out ProtoStructureCategory category)
        {
            category = GetCategory <StructureCategoryOther>();

            // build is not allowed - it's an upgrade from previous level
            // for requirements for the upgrade see construction upgrade config from previous level
            build.IsAllowed = false;

            repair.StagesCount          = 10;
            repair.StageDurationSeconds = BuildDuration.Short;
            repair.AddStageRequiredItem <ItemIngotSteel>(count: 5);
            repair.AddStageRequiredItem <ItemIngotCopper>(count: 5);
        }
        protected override void PrepareConstructionConfig(
            ConstructionStageConfig build,
            ConstructionStageConfig repair,
            out ProtoStructureCategory category)
        {
            category = GetCategory <StructureCategoryIndustry>();

            build.StagesCount          = 10;
            build.StageDurationSeconds = BuildDuration.Long;
            build.AddStageRequiredItem <ItemIngotSteel>(count: 2);
            build.AddStageRequiredItem <ItemIngotCopper>(count: 1);
            build.AddStageRequiredItem <ItemCement>(count: 5);

            repair.StagesCount          = 10;
            repair.StageDurationSeconds = BuildDuration.Long;
            repair.AddStageRequiredItem <ItemIngotSteel>(count: 2);
            repair.AddStageRequiredItem <ItemIngotCopper>(count: 1);
        }
Пример #28
0
        protected override void PrepareConstructionConfigTurret(
            ConstructionTileRequirements tileRequirements,
            ConstructionStageConfig build,
            ConstructionStageConfig repair,
            ConstructionUpgradeConfig upgrade)
        {
            build.StagesCount          = 5;
            build.StageDurationSeconds = BuildDuration.Short;
            build.AddStageRequiredItem <ItemIngotSteel>(count: 4);
            build.AddStageRequiredItem <ItemWire>(count: 4);
            build.AddStageRequiredItem <ItemComponentsHighTech>(count: 1);
            build.AddStageRequiredItem <ItemComponentsWeapon>(count: 1);

            repair.StagesCount          = 5;
            repair.StageDurationSeconds = BuildDuration.Short;
            repair.AddStageRequiredItem <ItemIngotSteel>(count: 4);
            repair.AddStageRequiredItem <ItemWire>(count: 4);
        }
Пример #29
0
        protected override void PrepareDecorationConstructionConfig(
            ConstructionTileRequirements tileRequirements,
            ConstructionStageConfig build,
            ConstructionStageConfig repair)
        {
            //category = GetCategory<StructureCategoryBuildings>();

            build.StagesCount          = 10;
            build.StageDurationSeconds = BuildDuration.Short;
            build.AddStageRequiredItem <ItemTwigs>(count: 5);
            build.AddStageRequiredItem <ItemThread>(count: 3);
            build.AddStageRequiredItem <ItemBones>(count: 2);
            build.AddStageRequiredItem <ItemStone>(count: 2);

            repair.StagesCount          = 10;
            repair.StageDurationSeconds = BuildDuration.Short;
            repair.AddStageRequiredItem <ItemTwigs>(count: 5);
        }
Пример #30
0
        protected override void PrepareConstructionConfig(
            ConstructionStageConfig build,
            ConstructionStageConfig repair,
            ConstructionUpgradeConfig upgrade,
            out ProtoStructureCategory category)
        {
            category = GetCategory <StructureCategoryBuildings>();

            build.StagesCount          = 10;
            build.StageDurationSeconds = BuildDuration.Medium;
            build.AddStageRequiredItem <ItemIngotSteel>(count: 4);
            build.AddStageRequiredItem <ItemCement>(count: 3);
            build.AddStageRequiredItem <ItemComponentsMechanical>(count: 1);

            repair.StagesCount          = 10;
            repair.StageDurationSeconds = BuildDuration.Medium;
            repair.AddStageRequiredItem <ItemIngotSteel>(count: 2);
        }