protected override void PrepareProtoSkill(SkillConfig config)
        {
            config.Category = GetCategory <SkillCategoryCombat>();

            var statNameDamageBonus         = this.StatNameDamageBonusMultiplier;
            var statNameSpecialEffectChance = this.StatNameSpecialEffectChanceMultiplier;
            var statNameDegradationRate     = this.StatNameDegrationRateMultiplier;

            config.AddStatEffect(
                statNameDamageBonus,
                level: 10,
                percentBonus: 2);

            config.AddStatEffect(
                statNameDamageBonus,
                level: 15,
                percentBonus: 3);

            config.AddStatEffect(
                statNameDamageBonus,
                level: 20,
                percentBonus: 5);

            config.AddStatEffect(
                statNameSpecialEffectChance,
                formulaPercentBonus: level => level * 5);

            config.AddStatEffect(
                statNameDegradationRate,
                formulaPercentBonus: level => - level * 1);
        }
Beispiel #2
0
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            config.Category = GetCategory <SkillCategoryProduction>();

            // every level bonus
            config.AddStatEffect(
                StatName.MiningSpeed,
                formulaPercentBonus: level => level * 2);

            // lvl 10 bonus
            config.AddFlagEffect(
                Flags.AdditionalYield,
                level: 10);

            // lvl 15 bonus
            config.AddFlagEffect(
                Flags.FindGemstones,
                level: 15);

            // lvl 20 bonus
            config.AddStatEffect(
                StatName.MiningSpeed,
                level: 20,
                percentBonus: 10);
        }
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            // Since close combat weapons are inferior to ranged weapons it have special bonuses to counteract that.
            // (that's why we override prepare method here)

            config.Category = GetCategory <SkillCategoryCombat>();

            var statNameDamageBonus         = this.StatNameDamageBonusMultiplier;
            var statNameSpecialEffectChance = this.StatNameSpecialEffectChanceMultiplier;
            var statNameDegradationRate     = this.StatNameDegrationRateMultiplier;

            config.AddStatEffect(
                statNameDamageBonus,
                level: 10,
                percentBonus: 2);

            config.AddStatEffect(
                statNameDamageBonus,
                level: 15,
                percentBonus: 3);

            config.AddStatEffect(
                statNameDamageBonus,
                level: 20,
                percentBonus: 5);

            config.AddStatEffect(
                statNameSpecialEffectChance,
                formulaPercentBonus: level => level * 5);

            config.AddStatEffect(
                statNameDegradationRate,
                formulaPercentBonus: level => - level * 1);
        }
Beispiel #4
0
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            byte maxLevel = 20;

            config.Category = GetCategory <SkillCategoryAgriculture>();
            config.MaxLevel = maxLevel;

            config.AddStatEffect(
                StatName.ForagingSpeed,
                level: 1,
                percentBonus: 10);

            config.AddStatEffect(
                StatName.ForagingSpeed,
                formulaPercentBonus: level => level * 4);

            config.AddFlagEffect(
                Flags.AdditionalYield,
                level: 10);

            config.AddStatEffect(
                StatName.ForagingSpeed,
                level: maxLevel,
                percentBonus: 10);
        }
        protected override void PrepareProtoWeaponsSkillRanged(SkillConfig config)
        {
            // faster explosion planting
            // unlock bonus
            config.AddStatEffect(
                StatName.ItemExplosivePlantingSpeedMultiplier,
                level: 1,
                percentBonus: 20);

            // every level bonus
            config.AddStatEffect(
                StatName.ItemExplosivePlantingSpeedMultiplier,
                formulaPercentBonus: level => level * 3);

            // lvl 20 bonus
            config.AddStatEffect(
                StatName.ItemExplosivePlantingSpeedMultiplier,
                level: 20,
                percentBonus: 20);

            // other bonuses
            config.AddStatEffect(this.StatNameReloadingSpeedMultiplier.Value,
                                 formulaPercentBonus: level => - level * 2);

            config.AddStatEffect(this.StatNameDegrationRateMultiplier,
                                 formulaPercentBonus: level => - level * 2);
        }
        protected override void PrepareProtoWeaponsSkillRanged(SkillConfig config)
        {
            var statNameDamageBonus     = this.StatNameDamageBonusMultiplier;
            var statNameReloadingSpeed  = this.StatNameReloadingSpeedMultiplier;
            var statNameDegradationRate = this.StatNameDegrationRateMultiplier;

            config.AddStatEffect(
                statNameDamageBonus,
                level: 10,
                percentBonus: 2);

            config.AddStatEffect(
                statNameDamageBonus,
                level: 20,
                percentBonus: 3);

            if (statNameReloadingSpeed.HasValue)
            {
                config.AddStatEffect(
                    statNameReloadingSpeed.Value,
                    formulaPercentBonus: level => - level * 2);
            }

            config.AddStatEffect(
                statNameDegradationRate,
                formulaPercentBonus: level => - level * 2);
        }
Beispiel #7
0
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            config.Category = GetCategory <SkillCategoryTechnical>();

            // Note: total effect would be +100% crafting speed (or -50% crafting duration) at level 20.
            config.AddStatEffect(
                StatName.CraftingSpeed,
                formulaPercentBonus: level => level * 4);

            config.AddStatEffect(
                StatName.CraftingSpeed,
                level: 10,
                percentBonus: 10);

            config.AddStatEffect(
                StatName.CraftingSpeed,
                level: 20,
                percentBonus: 10);

            // add 2 extra slots at lvl 15 and 10
            config.AddStatEffect(
                StatName.CraftingQueueMaxSlotsCount,
                level: 5,
                valueBonus: 1);

            config.AddStatEffect(
                StatName.CraftingQueueMaxSlotsCount,
                level: 15,
                valueBonus: 1);

            CraftingMechanics.ServerNonManufacturingRecipeCrafted += ServerOnRecipeCraftedHandler;
        }
Beispiel #8
0
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            config.Category = GetCategory <SkillCategoryPersonal>();

            var statName = StatName.LearningsPointsGainMultiplier;

            config.AddStatEffect(
                statName,
                formulaPercentBonus: level => level); // each level +1% LP gain

            config.AddStatEffect(
                statName,
                level: 1,
                percentBonus: 5);

            config.AddStatEffect(
                statName,
                level: 10,
                percentBonus: 5);

            config.AddStatEffect(
                statName,
                level: 15,
                percentBonus: 5);

            config.AddStatEffect(
                statName,
                level: 20,
                percentBonus: 5);
        }
Beispiel #9
0
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            config.Category = GetCategory <SkillCategoryPersonal>();

            // Skill effects:
            // each level +5 LP retained after death
            var statName = StatName.LearningPointsRetainedAfterDeath;

            config.AddStatEffect(
                statName,
                formulaValueBonus: level => level * 5);

            // level 10:
            config.AddStatEffect(
                statName,
                level: 10,
                valueBonus: 10);

            // level 15:
            config.AddStatEffect(
                statName,
                level: 15,
                valueBonus: 20);

            // level 20:
            config.AddStatEffect(
                statName,
                level: 20,
                valueBonus: 50);

            // Please note: default value is 20 LP retained after death + bonus from this skill.
            // At maximum level 200LP is retained after death.
        }
Beispiel #10
0
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            config.Category = GetCategory <SkillCategoryProduction>();

            // level bonus
            config.AddStatEffect(
                StatName.WoodcuttingSpeed,
                formulaPercentBonus: level => level * 2);

            // lvl 5 bonus
            config.AddFlagEffect(
                Flags.GetSapplings,
                level: 5);

            // lvl 5 bonus
            config.AddFlagEffect(
                Flags.GetExtraSapplings,
                level: 15);

            // lvl 20 bonus
            config.AddStatEffect(
                StatName.WoodcuttingSpeed,
                level: 20,
                percentBonus: 10);
        }
Beispiel #11
0
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            if (IsServer)
            {
                PlayerCharacterTechnologies.ServerCharacterGainedLearningPoints
                    += this.ServerCharacterGainedLearningPointsHandler;
            }

            config.Category = GetCategory <SkillCategoryPersonal>();

            var statName = StatName.LearningsPointsGainMultiplier;

            config.AddStatEffect(
                statName,
                formulaPercentBonus: level => level);

            config.AddStatEffect(
                statName,
                level: 10,
                percentBonus: 5);

            config.AddStatEffect(
                statName,
                level: 15,
                percentBonus: 5);

            config.AddStatEffect(
                statName,
                level: 20,
                percentBonus: 5);
        }
Beispiel #12
0
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            byte maxLevel = 20;

            config.Category = GetCategory <SkillCategoryPersonal>();
            config.MaxLevel = maxLevel;

            var stats = new[]
            {
                HealthMax,
                StaminaMax,
                FoodMax,
                WaterMax
            };

            foreach (var statName in stats)
            {
                config.AddStatEffect(
                    statName,
                    formulaPercentBonus: level => level);

                config.AddStatEffect(
                    statName,
                    level: maxLevel,
                    percentBonus: 5);
            }

            if (IsServer)
            {
                TriggerTimeInterval.ServerConfigureAndRegister(
                    TimeSpan.FromSeconds(TimerIntervalSeconds),
                    this.ServerTimerTick,
                    "Skill.SurvivalAddExperience");
            }
        }
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            config.Category = GetCategory <SkillCategoryTechnical>();

            var statName = StatName.CraftingSpeed;

            config.AddStatEffect(
                statName,
                level: 1,
                percentBonus: 10);

            config.AddStatEffect(
                statName,
                formulaPercentBonus: level => level * 3);

            config.AddStatEffect(
                statName,
                level: 10,
                percentBonus: 5);

            config.AddStatEffect(
                statName,
                level: 15,
                percentBonus: 10);

            config.AddStatEffect(
                statName,
                level: 20,
                percentBonus: 15);

            // Note: total effect would be +100% crafting speed (or -50% crafting duration) at level 20.
        }
Beispiel #14
0
        protected override void PrepareProtoWeaponsSkillRanged(SkillConfig config)
        {
            config.AddStatEffect(
                StatName.WeaponEnergyWeaponEnergyConsumptionMultiplier,
                formulaPercentBonus: level => - level * 2);

            base.PrepareProtoWeaponsSkillRanged(config);
        }
Beispiel #15
0
        protected override void PrepareProtoWeaponsSkillRanged(SkillConfig config)
        {
            config.Category = GetCategory <SkillCategoryTechnical>();

            var statNameReloadingSpeed = this.StatNameReloadingSpeedMultiplier;

            if (statNameReloadingSpeed.HasValue)
            {
                config.AddStatEffect(
                    statNameReloadingSpeed.Value,
                    formulaPercentBonus: level => - level * 2);
            }

            config.AddStatEffect(
                StatName.VehicleFuelConsumptionRate,
                formulaPercentBonus: level => - level,
                displayTotalValue: true);
        }
Beispiel #16
0
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            config.Category = GetCategory <SkillCategoryTechnical>();

            // each level +1% bonus
            config.AddStatEffect(
                StatName.TinkerTableBonus,
                formulaPercentBonus: level => level);
        }
Beispiel #17
0
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            config.Category = GetCategory <SkillCategoryPersonal>();

            var statName = StatName.RunningStaminaConsumptionPerSecond;

            config.AddStatEffect(
                statName,
                level: 1,
                percentBonus: -5);

            config.AddStatEffect(
                statName,
                formulaPercentBonus: level => - 2 * level);

            config.AddStatEffect(
                statName,
                level: this.MaxLevel,
                percentBonus: -5);
        }
        protected override void PrepareProtoWeaponsSkillRanged(SkillConfig config)
        {
            //base.PrepareProtoWeaponsSkillRanged(config);

            // unlock bonus
            config.AddStatEffect(
                StatName.ItemExplosivePlantingSpeedMultiplier,
                level: 1,
                percentBonus: -5);

            // every level bonus
            config.AddStatEffect(
                StatName.ItemExplosivePlantingSpeedMultiplier,
                formulaPercentBonus: level => - level * 2);

            // lvl 20 bonus
            config.AddStatEffect(
                StatName.ItemExplosivePlantingSpeedMultiplier,
                level: 20,
                percentBonus: -5);
        }
Beispiel #19
0
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            config.Category = GetCategory <SkillCategoryTechnical>();

            // each level +2% bonus
            config.AddStatEffect(
                StatName.TinkerTableBonus,
                formulaPercentBonus: level => level * 2);

            config.AddFlagEffect(
                Flags.ChanceToRepairCompletely,
                level: 10);
        }
Beispiel #20
0
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            byte maxLevel = 20;

            config.Category = GetCategory <SkillCategoryAgriculture>();
            config.MaxLevel = maxLevel;

            config.AddStatEffect(
                StatName.FishingKnowledgeLevel,
                formulaValueBonus: level => 5 * level,
                displayTotalValue: true);

            // improve on +1% with every level (base value is 80% see BaseFishCatchChancePercents)
            config.AddStatEffect(
                StatName.FishingSuccess,
                formulaPercentBonus: level => level,
                displayTotalValue: true);

            config.AddFlagEffect(
                Flags.FishingChanceToSaveBait,
                level: 10);
        }
Beispiel #21
0
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            byte maxLevel = 20;

            config.Category = GetCategory <SkillCategoryPersonal>();
            config.MaxLevel = maxLevel;

            // 2 effects at max level:
            // -40% durability loss from damage taken (but not death)
            // -40% durability loss from time
            var stats = new[]
            {
                ImplantDegradationFromDamageMultiplier,
                ImplantDegradationSpeedMultiplier,
            };

            foreach (var statName in stats)
            {
                config.AddStatEffect(
                    statName,
                    formulaPercentBonus: level => - level);

                config.AddStatEffect(
                    statName,
                    level: 10,
                    percentBonus: -5);

                config.AddStatEffect(
                    statName,
                    level: 15,
                    percentBonus: -5);

                config.AddStatEffect(
                    statName,
                    level: maxLevel,
                    percentBonus: -10);
            }
        }
Beispiel #22
0
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            byte maxLevel = 20;

            config.Category = GetCategory <SkillCategoryTechnical>();
            config.MaxLevel = maxLevel;

            var statName = StatName.BuildingSpeed;

            config.AddStatEffect(
                statName,
                level: 1,
                percentBonus: 10);

            config.AddStatEffect(
                statName,
                formulaPercentBonus: level => level * 4);

            config.AddStatEffect(
                statName,
                level: maxLevel,
                percentBonus: 10);
        }
Beispiel #23
0
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            byte maxLevel = 20;

            config.Category = GetCategory <SkillCategoryAgriculture>();
            config.MaxLevel = maxLevel;

            // Level 1: speed of farming tasks
            config.AddStatEffect(
                StatName.FarmingTasksSpeed,
                level: 1,
                percentBonus: 10);

            // Level 1: plants grow speed
            config.AddStatEffect(
                StatName.FarmingPlantGrowSpeed,
                level: 1,
                percentBonus: 10);

            // Speed of farming tasks (such as plant gathering or watering, etc.)
            config.AddStatEffect(
                StatName.FarmingTasksSpeed,
                formulaPercentBonus: level => level * 4);

            // Plants grow speed
            config.AddStatEffect(
                StatName.FarmingPlantGrowSpeed,
                formulaPercentBonus: level => level * 4);

            // Level 10: Chance for extra yield (the effect is dependent on a particular plant, so no specific number here, it is just a flag)
            config.AddFlagEffect(
                Flags.AdditionalYield,
                level: 10);

            // Level 20: speed of farming tasks
            config.AddStatEffect(
                StatName.FarmingTasksSpeed,
                level: maxLevel,
                percentBonus: 10);

            // Level 20: plants grow speed
            config.AddStatEffect(
                StatName.FarmingPlantGrowSpeed,
                level: maxLevel,
                percentBonus: 10);
        }
Beispiel #24
0
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            config.Category = GetCategory <SkillCategoryMisc>();

            // searching speed
            config.AddStatEffect(
                StatName.SearchingSpeed,
                level: 1,
                percentBonus: 5);

            config.AddStatEffect(
                StatName.SearchingSpeed,
                formulaPercentBonus: level => 2 * level);

            config.AddStatEffect(
                StatName.SearchingSpeed,
                level: 20,
                percentBonus: 5);

            // extra loot chance
            config.AddStatEffect(
                StatName.SearchingExtraLoot,
                level: 1,
                percentBonus: 2);

            config.AddStatEffect(
                StatName.SearchingExtraLoot,
                formulaPercentBonus: level => level);

            config.AddStatEffect(
                StatName.SearchingExtraLoot,
                level: 15,
                percentBonus: 3);

            // chance to find rare items
            config.AddFlagEffect(
                Flags.ChanceToFindRareItems,
                level: 10);
        }
Beispiel #25
0
        protected override void PrepareProtoSkill(SkillConfig config)
        {
            byte maxLevel = 20;

            config.Category = GetCategory <SkillCategoryAgriculture>();
            config.MaxLevel = maxLevel;

            // extra loot chance bonus
            config.AddStatEffect(
                StatName.HuntingExtraLoot,
                level: 1,
                percentBonus: 2);

            config.AddStatEffect(
                StatName.HuntingExtraLoot,
                formulaPercentBonus: level => level);

            config.AddStatEffect(
                StatName.HuntingExtraLoot,
                level: maxLevel,
                percentBonus: 3);

            // corpse gathering speed bonus
            config.AddStatEffect(
                StatName.HuntingLootingSpeed,
                level: 1,
                percentBonus: 10);

            config.AddStatEffect(
                StatName.HuntingLootingSpeed,
                formulaPercentBonus: level => level * 4);

            config.AddStatEffect(
                StatName.HuntingLootingSpeed,
                level: maxLevel,
                percentBonus: 10);
        }