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 override void PrepareTileRequirements(ConstructionTileRequirements tileRequirements) { base.PrepareTileRequirements(tileRequirements); tileRequirements.Add(LandClaimSystem.ValidatorFreeLandEvenForServer) .Add(ConstructionTileRequirements.ValidatorNotRestrictedAreaEvenForServer) .Add(ConstructionTileRequirements.ValidatorTileNotRestrictingConstructionEvenForServer); }
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 PrepareTileRequirements(ConstructionTileRequirements tileRequirements) { base.PrepareTileRequirements(tileRequirements); // disallow placing mining bombs on the floor on the PvE servers tileRequirements.Add( new ConstructionTileRequirements.Validator( ConstructionTileRequirements.ErrorNoFreeSpace, c => !PveSystem.SharedIsPve(clientLogErrorIfDataIsNotYetAvailable: false) || c.Tile.StaticObjects.All( o => o.ProtoStaticWorldObject.Kind != StaticObjectKind.Floor))); }
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 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 PrepareConstructionConfig( ConstructionTileRequirements tileRequirements, ConstructionStageConfig build, ConstructionStageConfig repair, ConstructionUpgradeConfig upgrade, out ProtoStructureCategory category) { tileRequirements.Add(LandClaimSystem.ValidatorIsOwnedLand); category = GetCategory <StructureCategoryOther>(); build.StagesCount = 10; build.StageDurationSeconds = BuildDuration.Short; build.AddStageRequiredItem <ItemIngotCopper>(count: 1); repair.StagesCount = 5; repair.StageDurationSeconds = BuildDuration.Short; repair.AddStageRequiredItem <ItemIngotCopper>(count: 1); }
protected sealed override void PrepareConstructionConfig( ConstructionTileRequirements tileRequirements, ConstructionStageConfig build, ConstructionStageConfig repair, ConstructionUpgradeConfig upgrade, out ProtoStructureCategory category) { tileRequirements.Add(LandClaimSystem.ValidatorNewLandClaimNoLandClaimIntersections); tileRequirements.Add(LandClaimSystem.ValidatorNewLandClaimNoLandClaimsNearby); tileRequirements.Add(LandClaimSystem.ValidatorCheckCharacterLandClaimAmountLimit); tileRequirements.Add(LandClaimSystem.ValidatorCheckLandClaimDepositRequireXenogeology); tileRequirements.Add(LandClaimSystem.ValidatorCheckLandClaimDepositCooldown); tileRequirements.Add(ObjectMineralPragmiumSource.ValidatorCheckNoPragmiumSourceNearbyOnPvE); this.PrepareLandClaimConstructionConfig(tileRequirements, build, repair, upgrade, out category); var landClaimSize = this.LandClaimSize; Api.Assert(landClaimSize % 2 == 0, "Land claim size should be an even number"); }
protected override void PrepareTileRequirements(ConstructionTileRequirements tileRequirements) { base.PrepareTileRequirements(tileRequirements); tileRequirements.Add(ConstructionTileRequirements.ValidatorNotRestrictedAreaEvenForServer); }
protected override void PrepareTileRequirements(ConstructionTileRequirements tileRequirements) { tileRequirements.Add(ConstructionTileRequirements.ValidatorNoPlatforms); }