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); }
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); }
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); }
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); }
protected sealed override void PrepareConstructionConfig( ConstructionTileRequirements tileRequirements, ConstructionStageConfig build, ConstructionStageConfig repair, ConstructionUpgradeConfig upgrade, out ProtoStructureCategory category) { this.PrepareConstructionConfig(build, repair, upgrade, out category); }
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); }
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; }
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); }
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>(); }
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); }
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); }
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); }
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; }
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); }
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); }
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); }
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); }
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); }
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 }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }