Example #1
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);
 }
Example #2
0
 protected override void PrepareTileRequirements(ConstructionTileRequirements tileRequirements)
 {
     base.PrepareTileRequirements(tileRequirements);
     tileRequirements.Add(LandClaimSystem.ValidatorFreeLandEvenForServer)
     .Add(ConstructionTileRequirements.ValidatorNotRestrictedAreaEvenForServer)
     .Add(ConstructionTileRequirements.ValidatorTileNotRestrictingConstructionEvenForServer);
 }
Example #3
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);
        }
Example #4
0
        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);
        }
Example #6
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);
        }
        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;
        }
Example #8
0
        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);
        }
Example #9
0
        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");
        }
Example #10
0
 protected override void PrepareTileRequirements(ConstructionTileRequirements tileRequirements)
 {
     base.PrepareTileRequirements(tileRequirements);
     tileRequirements.Add(ConstructionTileRequirements.ValidatorNotRestrictedAreaEvenForServer);
 }
Example #11
0
 protected override void PrepareTileRequirements(ConstructionTileRequirements tileRequirements)
 {
     tileRequirements.Add(ConstructionTileRequirements.ValidatorNoPlatforms);
 }