public override void InitConfigValues()
            {
                DashMaxCount = new FieldConfigWrapper <int>(WrapConfigInt("DashMaxCount",
                                                                          "Maximum amount of dashes Mercenary can perform."), "maxDashes");

                DashTimeoutDuration = new FieldConfigWrapper <string>(WrapConfigFloat("DashTimeoutDuration",
                                                                                      "Maximum timeout between dashes, in seconds"), "timeoutDuration");

                DashFields = new List <IFieldChanger>
                {
                    DashMaxCount, DashTimeoutDuration
                };
            }
            public override void InitConfigValues()
            {
                TurretMaxDeployCount = WrapConfigInt("TurretMaxDeployCount",
                                                     "The maximum number of turrets the Engineer can place.");


                MineMaxDeployCount = WrapConfigInt("MineMaxDeployCount",
                                                   "The maximum number of mines the Engineer can place.");


                ShieldMaxDeployCount = WrapConfigInt("ShieldMaxDeployCount",
                                                     "The maximum number of shields the Engineer can place.");

                ShieldDuration = new FieldConfigWrapper <string>(
                    WrapConfigFloat("ShieldDuration", "The number of seconds the shield is active."), "lifetime", true);

                ShieldDeployedFields = new List <IFieldChanger> {
                    ShieldDuration
                };

                ShieldEndlessDuration = WrapConfigStandardBool("ShieldEndlessDuration",
                                                               "If the duration of the shield should be endless.");


                GrenadeMaxFireAmount = new FieldConfigWrapper <int>(WrapConfigInt("GrenadeMaxFireAmount",
                                                                                  "The maximum number of grenades the Engineer can fire."), "maxGrenadeCount", true);


                GrenadeMinFireAmount = new FieldConfigWrapper <int>(WrapConfigInt("GrenadeMinFireAmount",
                                                                                  "The minimum number of grenades the Engineer fires."), "minGrenadeCount", true);


                GrenadeSetChargeCountToFireAmount = WrapConfigStandardBool("GrenadeSetChargeCountToFireAmount",
                                                                           "Set the number of \"clicks\" you hear in the charging animation to the maximum grenade count.");


                GrenadeMaxChargeTime =
                    new FieldConfigWrapper <string>(WrapConfigFloat("GrenadeMaxChargeTime",
                                                                    "Maximum charge time (animation) for grenades, in seconds."), "baseMaxChargeTime", true);


                GrenadeTotalChargeDuration =
                    new FieldConfigWrapper <string>(WrapConfigFloat("GrenadeTotalChargeDuration",
                                                                    "Maximum charge duration (logic) for grenades, in seconds."), "baseTotalDuration", true);

                ChargeGrenadesFields = new List <IFieldChanger>
                {
                    GrenadeMaxChargeTime, GrenadeMaxFireAmount, GrenadeMinFireAmount, GrenadeTotalChargeDuration
                };
            }
        public override void InitConfigValues()
        {
            TrackingMaxDistance = new FieldConfigWrapper <float>(BindConfigFloat("TrackingMaxDistance",
                                                                                 "The maximum distance the tracking of the huntress works."), "maxTrackingDistance");


            TrackingMaxAngle = new FieldConfigWrapper <float>(BindConfigFloat("TrackingMaxAngle",
                                                                              "The maximum angle the tracking of the huntress works."), "maxTrackingAngle");

            TrackingFields = new List <IFieldChanger>
            {
                TrackingMaxAngle, TrackingMaxDistance
            };
        }
        public override void InitConfigValues()
        {
            // Pistol
            DoubleTapDamageCoefficient = new FieldConfigWrapper <float>(BindConfigFloat("DoubleTapDamageCoefficient",
                                                                                        "Damage coefficient for the Double Tap, in percent."), "damageCoefficient", true);

            DoubleTapBaseDuration =
                new FieldConfigWrapper <float>(BindConfigFloat("DoubleTapBaseDuration",
                                                               "Base duration for the Double Tap shot, in percent. (Attack Speed)"), "baseDuration", true);

            DoubleTapFields = new List <IFieldChanger>
            {
                DoubleTapBaseDuration,
                DoubleTapDamageCoefficient
            };

            DoubleTapHitLowerSpecialCooldownPercent = BindConfigFloat("DoubleTapHitLowerSpecialCooldownPercent",
                                                                      "The amount in percent that the current cooldown of the Barrage Skill should be lowered by. Needs to have DoubleTapHitLowerSpecialCooldown set.");


            DoubleTapHitLowerSpecialCooldown =
                BindConfigBool("DoubleTapHitLowerSpecialCooldown",
                               "If the pistol hit should lower the Special Skill cooldown. Needs to have DoubleTapHitLowerSpecialCooldownPercent set to work");

            // Laser

            PhaseRoundDamageCoefficient = new FieldConfigWrapper <float>(BindConfigFloat("PhaseRoundDamageCoefficient",
                                                                                         "Damage coefficient for the secondary phase round, in percent."), "damageCoefficient");

            PhaseRoundFields = new List <IFieldChanger>
            {
                PhaseRoundDamageCoefficient
            };

            // Barrage

            SuppressiveFireBaseShotAmount =
                new FieldConfigWrapper <int>(
                    BindConfigInt("SuppressiveFireBaseShotAmount", "How many shots the Suppressive Fire skill should when ATKSP = 1"),
                    "baseBulletCount", true);


            SuppressiveFireBaseDurationBetweenShots =
                new FieldConfigWrapper <float>(BindConfigFloat("SuppressiveFireBaseDurationBetweenShots",
                                                               "Base duration between shots in the Suppressive Fire skill."), "baseDurationBetweenShots", true);

            SuppressiveFireFields = new List <IFieldChanger> {
                SuppressiveFireBaseShotAmount, SuppressiveFireBaseDurationBetweenShots
            };
        }
            public override void InitConfigValues()
            {
                NailgunSpreadYaw =
                    new FieldConfigWrapper <string>(
                        WrapConfigFloat("NailgunSpreadYaw", "Yaw spread of the nailgun, in percent"), "spreadYawScale",
                        true);

                NailgunSpreadPitch =
                    new FieldConfigWrapper <string>(
                        WrapConfigFloat("NailgunSpreadPitch", "Pitch spread of the nailgun, in percent"),
                        "spreadPitchScale", true);

                NailgunFields = new List <IFieldChanger>
                {
                    NailgunSpreadYaw, NailgunSpreadPitch
                };
            }
        public CustomBodyDefinition(CustomSurvivor survivor, string commonName, string survivorNameToken)
        {
            CommonName        = commonName;
            SurvivorNameToken = survivorNameToken;

            BaseMaxHealth = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                               commonName + "BaseMaxHealth",
                                                               0f,
                                                               commonName + ": The base health of your survivor"),
                                                           "baseMaxHealth");

            BaseRegen = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                           commonName + "BaseRegen",
                                                           0f,
                                                           commonName + ": The base regen of your survivor"),
                                                       "baseRegen");

            BaseMaxShield = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                               commonName + "BaseMaxShield",
                                                               0f,
                                                               commonName + ": the base max shield of you survivor"),
                                                           "baseMaxShield");

            BaseMoveSpeed = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                               commonName + "BaseMoveSpeed",
                                                               0f,
                                                               commonName + ": The base move speed of your survivor"),
                                                           "baseMoveSpeed");

            BaseAcceleration = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                                  commonName + "BaseAcceleration",
                                                                  0f,
                                                                  commonName + ": The base acceleration of your survivor"),
                                                              "baseAcceleration");

            BaseJumpPower = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                               commonName + "BaseJumpPower",
                                                               0f,
                                                               commonName + ": The base jump power of your survivor"),
                                                           "baseJumpPower");

            BaseDamage = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                            commonName + "BaseDamage",
                                                            0f,
                                                            commonName + ": The base damage of your survivor"),
                                                        "baseDamage");

            BaseAttackSpeed = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                                 commonName + "BaseAttackSpeed",
                                                                 0f,
                                                                 commonName + ": The base attack speed of your survivor"),
                                                             "baseAttackSpeed");

            BaseCrit = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                          commonName + "BaseCrit",
                                                          0f,
                                                          commonName + ": The base crit chance of your survivor"),
                                                      "baseCrit");

            BaseArmor = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                           commonName + "BaseArmor",
                                                           0f,
                                                           commonName + ": The base armor of your survivor"),
                                                       "baseArmor");

            BaseJumpCount = new FieldConfigWrapper <int>(survivor.BindConfig(
                                                             commonName + "BaseJumpCount",
                                                             0,
                                                             commonName + ": The base jump count of your survivor"),
                                                         "baseJumpCount");

            LevelMaxHealth = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                                commonName + "LevelMaxHealth",
                                                                0f,
                                                                commonName + ": The max health per level your survivor gets."),
                                                            "levelMaxHealth");

            LevelRegen = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                            commonName + "LevelRegen",
                                                            0f,
                                                            commonName + ": The regen per level your survivor gets."),
                                                        "levelRegen");

            LevelMaxShield = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                                commonName + "LevelMaxShield",
                                                                0f,
                                                                commonName + ": The max shield per level your survivor gets"),
                                                            "levelMaxShield");

            LevelMoveSpeed = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                                commonName + "LevelMoveSpeed",
                                                                0f,
                                                                commonName + ": The move speed per level your survivor gets"),
                                                            "levelMoveSpeed");

            LevelJumpPower = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                                commonName + "LevelJumpPower",
                                                                0f,
                                                                commonName + ": The jump power per level your survivor gets"),
                                                            "levelJumpPower");

            LevelDamage = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                             commonName + "LevelDamage",
                                                             0f,
                                                             commonName + ": The damage per level your survivor gets"),
                                                         "levelDamage");

            LevelAttackSpeed = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                                  commonName + "LevelAttackSpeed",
                                                                  0f,
                                                                  commonName + ": The attack speed per level your survivor gets"),
                                                              "levelAttackSpeed");

            LevelCrit = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                           commonName + "LevelCrit",
                                                           0f,
                                                           commonName + ": The crit chance per level your survivor gets"),
                                                       "levelCrit");

            LevelArmor = new FieldConfigWrapper <float>(survivor.BindConfig(
                                                            commonName + "LevelArmor",
                                                            0f,
                                                            commonName + ": The armor per level your survivor gets"),
                                                        "levelArmor");

            AllFields = new List <IFieldChanger>
            {
                BaseMaxHealth,
                BaseRegen,
                BaseMaxShield,
                BaseMoveSpeed,
                BaseAcceleration,
                BaseJumpPower,
                BaseDamage,
                BaseAttackSpeed,
                BaseCrit,
                BaseArmor,
                BaseJumpCount,

                LevelMaxHealth,
                LevelRegen,
                LevelMaxShield,
                LevelMoveSpeed,
                LevelJumpPower,
                LevelDamage,
                LevelAttackSpeed,
                LevelCrit,
                LevelArmor
            };

            foreach (var fieldChanger in AllFields)
            {
                fieldChanger.AddFieldChangedListener(InternalFieldChanged);
            }
        }
Exemple #7
0
        public CustomSkillDefinition(CustomSurvivor survivor, string skillName)
        {
            SkillName = skillName;

            BaseRechargeInterval = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                                       skillName + "BaseRechargeInterval",
                                                                       skillName + ": How long it takes for this skill to recharge after being used."),
                                                                   "baseRechargeInterval");

            ShootDelay = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                             skillName + "ShootDelay",
                                                             skillName + ": Time between bullets for bullet-style weapons"),
                                                         "shootDelay");

            BaseMaxStock = new FieldConfigWrapper <int>(survivor.WrapConfigInt(
                                                            skillName + "BaseMaxStock",
                                                            skillName + ": Maximum number of charges this skill can carry."),
                                                        "baseMaxStock");

            RechargeStock = new FieldConfigWrapper <int>(survivor.WrapConfigInt(
                                                             skillName + "RechargeStock",
                                                             skillName + ": How much stock to restore on a recharge."),
                                                         "rechargeStock");

            IsCombatSkill = new FieldConfigWrapper <string>(survivor.WrapConfigBool(
                                                                skillName + "IsCombatSkill",
                                                                skillName + ": Whether or not this is considered a combat skill."),
                                                            "isCombatSkill");

            NoSprint = new FieldConfigWrapper <string>(survivor.WrapConfigBool(
                                                           skillName + "NoSprint",
                                                           skillName + ": Whether or not the usage of this skill is mutually exclusive with sprinting."),
                                                       "noSprint");

            RequiredStock = new FieldConfigWrapper <int>(survivor.WrapConfigInt(
                                                             skillName + "RequiredStock",
                                                             skillName + ": How much stock is required to activate this skill."),
                                                         "requiredStock");

            StockToConsume = new FieldConfigWrapper <int>(survivor.WrapConfigInt(
                                                              skillName + "StockToConsume",
                                                              skillName + ": How much stock to deduct when the skill is activated."),
                                                          "stockToConsume");

            MustKeyPress = new FieldConfigWrapper <string>(survivor.WrapConfigBool(
                                                               skillName + "MustKeyPress",
                                                               skillName + ": The skill can't be activated if the key is held."),
                                                           "mustKeyPress");

            BeginSkillCooldownOnSkillEnd = new FieldConfigWrapper <string>(survivor.WrapConfigBool(
                                                                               skillName + "BeginSkillCooldownOnSkillEnd",
                                                                               skillName + ": Whether or not the cooldown waits until it leaves the set state"),
                                                                           "beginSkillCooldownOnSkillEnd");

            CanceledFromSprinting = new FieldConfigWrapper <string>(survivor.WrapConfigBool(
                                                                        skillName + "CanceledFromSprinting",
                                                                        skillName + ": Sprinting will actively cancel this ability."),
                                                                    "canceledFromSprinting");

            IsBullets = new FieldConfigWrapper <string>(survivor.WrapConfigBool(
                                                            skillName + "IsBullets",
                                                            skillName + ": Whether or not it has bullet reload behavior"),
                                                        "isBullets");


            AllFields = new List <IFieldChanger>
            {
                BaseRechargeInterval,
                BaseMaxStock,
                ShootDelay,
                RechargeStock,
                IsCombatSkill,
                NoSprint,
                RequiredStock,
                StockToConsume,
                MustKeyPress,
                BeginSkillCooldownOnSkillEnd,
                CanceledFromSprinting,
                IsBullets
            };
        }
        public CustomBodyDefinition(CustomSurvivor survivor, string survivorName)
        {
            SurvivorName = survivorName;

            BaseMaxHealth = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                                survivorName + "BaseMaxHealth",
                                                                survivorName + ": The base health of your survivor"),
                                                            "baseMaxHealth");

            BaseRegen = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                            survivorName + "BaseRegen",
                                                            survivorName + ": The base regen of your survivor"),
                                                        "baseRegen");

            BaseMaxShield = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                                survivorName + "BaseMaxShield",
                                                                survivorName + ": the base max shield of you survivor"),
                                                            "baseMaxShield");

            BaseMoveSpeed = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                                survivorName + "BaseMoveSpeed",
                                                                survivorName + ": The base move speed of your survivor"),
                                                            "baseMoveSpeed");

            BaseAcceleration = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                                   survivorName + "BaseAcceleration",
                                                                   survivorName + ": The base acceleration of your survivor"),
                                                               "baseAcceleration");

            BaseJumpPower = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                                survivorName + "BaseJumpPower",
                                                                survivorName + ": The base jump power of your survivor"),
                                                            "baseJumpPower");

            BaseDamage = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                             survivorName + "BaseDamage",
                                                             survivorName + ": The base damage of your survivor"),
                                                         "baseDamage");

            BaseAttackSpeed = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                                  survivorName + "BaseAttackSpeed",
                                                                  survivorName + ": The base attack speed of your survivor"),
                                                              "baseAttackSpeed");

            BaseCrit = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                           survivorName + "BaseCrit",
                                                           survivorName + ": The base crit chance of your survivor"),
                                                       "baseCrit");

            BaseArmor = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                            survivorName + "BaseArmor",
                                                            survivorName + ": The base armor of your survivor"),
                                                        "baseArmor");

            BaseJumpCount = new FieldConfigWrapper <int>(survivor.WrapConfigInt(
                                                             survivorName + "BaseJumpCount",
                                                             survivorName + ": The base jump count of your survivor"),
                                                         "baseJumpCount");

            LevelMaxHealth = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                                 survivorName + "LevelMaxHealth",
                                                                 survivorName + ": The max health per level your survivor gets."),
                                                             "levelMaxHealth");

            LevelRegen = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                             survivorName + "LevelRegen",
                                                             survivorName + ": The regen per level your survivor gets."),
                                                         "levelRegen");

            LevelMaxShield = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                                 survivorName + "LevelMaxShield",
                                                                 survivorName + ": The max shield per level your survivor gets"),
                                                             "levelMaxShield");

            LevelMoveSpeed = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                                 survivorName + "LevelMoveSpeed",
                                                                 survivorName + ": The move speed per level your survivor gets"),
                                                             "levelMoveSpeed");

            LevelJumpPower = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                                 survivorName + "LevelJumpPower",
                                                                 survivorName + ": The jump power per level your survivor gets"),
                                                             "levelJumpPower");

            LevelDamage = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                              survivorName + "LevelDamage",
                                                              survivorName + ": The damage per level your survivor gets"),
                                                          "levelDamage");

            LevelAttackSpeed = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                                   survivorName + "LevelAttackSpeed",
                                                                   survivorName + ": The attack speed per level your survivor gets"),
                                                               "levelAttackSpeed");

            LevelCrit = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                            survivorName + "LevelCrit",
                                                            survivorName + ": The crit chance per level your survivor gets"),
                                                        "levelCrit");

            LevelArmor = new FieldConfigWrapper <string>(survivor.WrapConfigFloat(
                                                             survivorName + "LevelArmor",
                                                             survivorName + ": The armor per level your survivor gets"),
                                                         "levelArmor");

            AllFields = new List <IFieldChanger>
            {
                BaseMaxHealth,
                BaseRegen,
                BaseMaxShield,
                BaseMoveSpeed,
                BaseAcceleration,
                BaseJumpPower,
                BaseDamage,
                BaseAttackSpeed,
                BaseCrit,
                BaseArmor,
                BaseJumpCount,

                LevelMaxHealth,
                LevelRegen,
                LevelMaxShield,
                LevelMoveSpeed,
                LevelJumpPower,
                LevelDamage,
                LevelAttackSpeed,
                LevelCrit,
                LevelArmor
            };
        }
            public override void InitConfigValues()
            {
                // Firebolt
                FireboltAttackSpeedStockScaling =
                    WrapConfigStandardBool("FireboltAttackSpeedStockScaling",
                                           "If the charge count of the FireBolt Skill should scale with AttackSpeed. Needs to have FireboltAttackSpeedStockScalingCoefficent set to work.");


                FireboltAttackSpeedStockScalingCoefficient =
                    WrapConfigFloat("FireboltAttackSpeedStockScalingCoefficient",
                                    "Coefficient for charge AttackSpeed scaling, in percent. Formula: Stock + Stock * (ATKSP - 1) * Coeff.");

                FireboltAttackSpeedCooldownScaling = WrapConfigStandardBool("FireboltAttackSpeedCooldownScaling",
                                                                            "If the cooldown of the Firebolt Skill should scale with AttackSpeed. Needs to have FireboltAttackSpeedCooldownScalingCoefficent set to work.");


                FireboltAttackSpeedCooldownScalingCoefficient = WrapConfigFloat(
                    "FireboltAttackSpeedCooldownScalingCoefficient",
                    "Coefficient for cooldown AttackSpeed scaling, in percent. Formula: BaseCooldown * (1 / (1 + (ATKSP-1) * Coeff)) .");

                // NovaBomb

                NovaBombMaxChargeDuration = new FieldConfigWrapper <string>(WrapConfigFloat("NovaBombBaseChargeDuration",
                                                                                            "Base max charging duration of the NovaBomb"), "baseChargeDuration", true);

                NovaBombMaxDamageCoefficient = new FieldConfigWrapper <string>(WrapConfigFloat(
                                                                                   "NovaBombMaxDamageCoefficient",
                                                                                   "Max damage coefficient of the NovaBomb"), "maxDamageCoefficient",
                                                                               true);

                ChargeNovaBombFields = new List <IFieldChanger>
                {
                    NovaBombMaxChargeDuration,
                    NovaBombMaxDamageCoefficient
                };

                // Flamethrower

                FlamethrowerProcCoefficientPerTick = new FieldConfigWrapper <string>(WrapConfigFloat(
                                                                                         "FlamethrowerProcCoefficientPerTick",
                                                                                         "The coefficient for items per proc of the flamethrower."), "procCoefficientPerTick", true);

                FlamethrowerMaxDistance = new FieldConfigWrapper <string>(WrapConfigFloat("FlamethrowerMaxDistance",
                                                                                          "The max distance of the Flamethrower"), "maxDistance", true);

                FlamethrowerRadius = new FieldConfigWrapper <string>(WrapConfigFloat("FlamethrowerRadius",
                                                                                     "The radius of the Flamethrower"), "radius", true);

                FlamethrowerTotalDamageCoefficient = new FieldConfigWrapper <string>(WrapConfigFloat(
                                                                                         "FlamethrowerTotalDamageCoefficient",
                                                                                         "The total damage coefficient for the flamethrower"), "totalDamageCoefficient", true);

                FlamethrowerIgnitePercentChance = new FieldConfigWrapper <string>(WrapConfigFloat(
                                                                                      "FlamethrowerIgnitePercentChance",
                                                                                      "The change to ignite per proc in percent."), "ignitePercentChance", true);

                FlamethrowerFields = new List <IFieldChanger>
                {
                    FlamethrowerProcCoefficientPerTick,
                    FlamethrowerMaxDistance,
                    FlamethrowerRadius,
                    FlamethrowerTotalDamageCoefficient,
                    FlamethrowerIgnitePercentChance
                };

                FlamethrowerDuration = new FieldConfigWrapper <string>(WrapConfigFloat("FlamethrowerDuration",
                                                                                       "The duration of the flamethrower"), "baseFlamethrowerDuration", true);

                FlamethrowerTickFrequency = new FieldConfigWrapper <string>(WrapConfigFloat("FlamethrowerTickFrequency",
                                                                                            "The tick frequency of the flamethrower"), "tickFrequency", true);

                FlamethrowerTickFrequencyScaleWithAttackSpeed = WrapConfigStandardBool(
                    "FlamethrowerTickFrequencyScaleWithAttackSpeed",
                    "If the tick frequency should scale with AttackSpeed. Needs FlamethrowerTickFrequencyScaleCoefficient to be set to work.");

                FlamethrowerTickFrequencyScaleCoefficient = WrapConfigFloat("FlamethrowerTickFrequencyScaleCoefficient",
                                                                            "The coefficient for the AttackSpeed scaling of the Flamethrower. Formula: TickFreq + Coeff * (ATKSP - 1) * TickFreq");

                FlamethrowerDurationScaleDownWithAttackSpeed =
                    WrapConfigStandardBool("FlamethrowerDurationScaleDownWithAttackSpeed",
                                           "If the flame thrower duration should get shorter with more attack speed. Needs FlamethrowerDurationScaleCoefficient to be set.");

                FlamethrowerDurationScaleCoefficient = WrapConfigFloat("FlamethrowerDurationScaleCoefficient",
                                                                       "The coefficient for flame thrower scaling. Formula: Duration - Coeff * (ATKSP - 1) * Duration. Minimum of FlamethrowerMinimalDuration seconds.");

                FlamethrowerMinimalDuration = WrapConfigFloat("FlamethrowerMinimalDuration",
                                                              "The minimal duration of the flamethrower",
                                                              1f);
            }
            public override void InitConfigValues()
            {
                // Pistol

                PistolDamageCoefficient = new FieldConfigWrapper <string>(WrapConfigFloat("PistolDamageCoefficient",
                                                                                          "Damage coefficient for the pistol, in percent."), "damageCoefficient", true);

                PistolBaseDuration =
                    new FieldConfigWrapper <string>(WrapConfigFloat("PistolBaseDuration",
                                                                    "Base duration for the pistol shot, in percent. (Attack Speed)"), "baseDuration", true);

                PistolFields = new List <IFieldChanger> {
                    PistolBaseDuration, PistolDamageCoefficient
                };

                PistolHitLowerBarrageCooldownPercent = WrapConfigFloat("PistolHitLowerBarrageCooldownPercent",
                                                                       "The amount in percent that the current cooldown of the Barrage Skill should be lowered by. Needs to have PistolHitLowerBarrageCooldownPercent set.");


                PistolHitLowerBarrageCooldown =
                    WrapConfigStandardBool("PistolHitLowerBarrageCooldown",
                                           "If the pistol hit should lower the Barrage Skill cooldown. Needs to have PistolHitLowerBarrageCooldownPercent set to work");

                // Laser

                LaserDamageCoefficient = new FieldConfigWrapper <string>(WrapConfigFloat("LaserDamageCoefficient",
                                                                                         "Damage coefficient for the secondary laser, in percent."), "damageCoefficient", true);

                LaserFields = new List <IFieldChanger> {
                    LaserDamageCoefficient
                };

                // Dash

                DashResetsSecondCooldown =
                    WrapConfigStandardBool("DashResetsSecondCooldown",
                                           "If the dash should reset the cooldown of the second ability.");

                DashInvulnerability = WrapConfigStandardBool("DashInvulnerability",
                                                             "If Commando should be invulnerable while dashing.");

                DashInvulnerabilityTimer = WrapConfigFloat("DashInvulnerabilityTimer",
                                                           "How long Commando should be invincible for when dashing. Only active when DashInvulnerability is on. 0 = For the whole dash.");


                // Barrage

                BarrageScalesWithAttackSpeed = WrapConfigStandardBool("BarrageScalesWithAttackSpeed",
                                                                      "If the barrage bullet count should scale with attack speed. Idea by @Twyla. Needs BarrageScaleModifier to be set.");


                BarrageScaleModifier = WrapConfigFloat("BarrageScaleCoefficient",
                                                       "Coefficient for the AttackSpeed scale of Barrage bullet count, in percent. Formula: BCount + BCount * (ATKSP - 1) * Coeff");


                BarrageBaseShotAmount =
                    new FieldConfigWrapper <int>(
                        WrapConfigInt("BarrageBaseShotAmount", "How many shots the Barrage skill should fire"),
                        "bulletCount", true);


                BarrageBaseDurationBetweenShots =
                    new FieldConfigWrapper <string>(WrapConfigFloat("BarrageBaseDurationBetweenShots",
                                                                    "Base duration between shots in the Barrage skill."), "baseDurationBetweenShots", true);

                BarrageFields = new List <IFieldChanger> {
                    BarrageBaseShotAmount, BarrageBaseDurationBetweenShots
                };
            }