diff --git a/Projects/TerraTech/TerraTech/Class1.cs b/Projects/TerraTech/TerraTech/Class1.cs index 86ac568..cc54e74 100644 --- a/Projects/TerraTech/TerraTech/Class1.cs +++ b/Projects/TerraTech/TerraTech/Class1.cs @@ -46,122 +46,126 @@ namespace TerraTech { public static ConfigEntry shopPerBlockStopMultiplier; public static ConfigEntry shieldRadiusMultiplier; + public static ConfigEntry shieldRadiusMultiplierHealing; public static ConfigEntry shieldHeartbeatIntervalMultiplier; public static ConfigEntry shieldPowerUpDelayMultiplier; public void Awake() { debug = Config.Bind("General", "Debug", false); + float min = 0.01f; + float max = 32f; xpMultiplier = Config.Bind("General", "XP Multiplier", 1f, - new ConfigDescription("XP Multiplier", new AcceptableValueRange(1f, 32f))); + new ConfigDescription("XP Multiplier", new AcceptableValueRange(min, max))); moneyMultiplier = Config.Bind("General", "Money Multiplier", 1f, - new ConfigDescription("Money Multiplier", new AcceptableValueRange(1f, 32f))); + new ConfigDescription("Money Multiplier", new AcceptableValueRange(min, max))); energyGenMultiplier = Config.Bind( "General", "Energy Generation Multiplier", 1f, - new ConfigDescription("Energy Generation Multiplier", new AcceptableValueRange(1f, 64f))); + new ConfigDescription("Energy Generation Multiplier", new AcceptableValueRange(min, max))); heartbeatIntervalMultiplier = Config.Bind( "General", "Heartbeat Interval Multiplier", 1f, - new ConfigDescription("Heartbeat Interval Multiplier", new AcceptableValueRange(0.1f, 2f))); + new ConfigDescription("Heartbeat Interval Multiplier", new AcceptableValueRange(min, max))); shieldRadiusMultiplier = Config.Bind( "Shield", "Shield Radius Multiplier", 1f, - new ConfigDescription("Shield Radius Multiplier", new AcceptableValueRange(0.001f, 32f))); + new ConfigDescription("Shield Radius Multiplier", new AcceptableValueRange(min, max))); shieldHeartbeatIntervalMultiplier = Config.Bind("Shield", "Shield Heartbeat Interval Multiplier", 1f, new ConfigDescription("Shield Heartbeat Interval Multiplier", - new AcceptableValueRange(0.001f, 32f))); - shieldPowerUpDelayMultiplier = - Config.Bind("Shield", "Shield Power Up Delay Multiplier", 1f, - new ConfigDescription("Shield Power Up Delay Multiplier", - new AcceptableValueRange(0.001f, 32f))); + new AcceptableValueRange(min, max))); + shieldPowerUpDelayMultiplier = Config.Bind( + "Shield", "Shield Power Up Delay Multiplier", 1f, + new ConfigDescription("Shield Power Up Delay Multiplier", new AcceptableValueRange(min, max))); + shieldRadiusMultiplierHealing = Config.Bind( + "Shield", "Shield Radius Multiplier Healing", 1f, + new ConfigDescription("Shield Radius Multiplier Healing", new AcceptableValueRange(min, max))); shootingSpeedMultiplier = Config.Bind( "Weapons", "Shooting Speed Multiplier", 1f, - new ConfigDescription("Shooting Speed Multiplier", new AcceptableValueRange(0.2f, 8f))); + new ConfigDescription("Shooting Speed Multiplier", new AcceptableValueRange(min, max))); weaponRotationSpeedMultiplier = Config.Bind( "Weapons", "Weapon Rotation Speed Multiplier", 1f, - new ConfigDescription("Weapon Rotation Speed Multiplier", new AcceptableValueRange(0.2f, 64f))); + new ConfigDescription("Weapon Rotation Speed Multiplier", new AcceptableValueRange(min, max))); muzzleVelocityMultiplier = Config.Bind( "Weapons", "Muzzle Velocity Multiplier", 1f, - new ConfigDescription("Muzzle Velocity Multiplier", new AcceptableValueRange(0.2f, 32f))); + new ConfigDescription("Muzzle Velocity Multiplier", new AcceptableValueRange(min, max))); seekingProjectileVisionConeAngleMultiplier = Config.Bind("Weapons", "Seeking Projectile Cone Vision Angle Multiplier", 1f, new ConfigDescription("Seeking Projectile Cone Vision Angle Multiplier", - new AcceptableValueRange(0.2f, 32f))); + new AcceptableValueRange(min, max))); seekingProjectileVisionRangeMultiplier = Config.Bind("Weapons", "Seeking Projectile Vision Range Multiplier", 1f, new ConfigDescription("Seeking Projectile Vision Range Multiplier", - new AcceptableValueRange(0.2f, 32f))); + new AcceptableValueRange(min, max))); seekingProjectileTurningSpeedMultiplier = Config.Bind("Weapons", "Seeking Projectile Turn Speed Multiplier", 1f, new ConfigDescription("Seeking Projectile Turn Speed Multiplier", - new AcceptableValueRange(0.2f, 32f))); + new AcceptableValueRange(min, max))); magnetStrenghtMultiplier = Config.Bind( "Attractors", "Magnet Strength Multiplier", 1f, - new ConfigDescription("Magnet Strength Multiplier", new AcceptableValueRange(1f, 16f))); + new ConfigDescription("Magnet Strength Multiplier", new AcceptableValueRange(min, max))); magnetRadiusMultiplier = Config.Bind( "Attractors", "Magnet Radius Multiplier", 1f, - new ConfigDescription("Magnet Radius Multiplier", new AcceptableValueRange(1f, 16f))); + new ConfigDescription("Magnet Radius Multiplier", new AcceptableValueRange(min, max))); beamStrenghtMultiplier = Config.Bind( "Attractors", "Beam Strength Multiplier", 1f, - new ConfigDescription("Beam Strength Multiplier", new AcceptableValueRange(1f, 16f))); + new ConfigDescription("Beam Strength Multiplier", new AcceptableValueRange(min, max))); beamRadiusMultiplier = Config.Bind("Attractors", "Beam Radius Multiplier", 1f, - new ConfigDescription("Beam Radius Multiplier", new AcceptableValueRange(1f, 16f))); + new ConfigDescription("Beam Radius Multiplier", new AcceptableValueRange(min, max))); - wirelessChargingRadiusMultiplier = - Config.Bind("Power", "Wireless Charger Radius Multiplier", 1f, - new ConfigDescription("Wireless Charger Radius Multiplier", - new AcceptableValueRange(0.2f, 16f))); + wirelessChargingRadiusMultiplier = Config.Bind( + "Power", "Wireless Charger Radius Multiplier", 1f, + new ConfigDescription("Wireless Charger Radius Multiplier", new AcceptableValueRange(min, max))); wirelessChargingArcFiringIntervalMultiplier = Config.Bind("Power", "Wireless Charger Arc Firing Interval", 1f, new ConfigDescription("Wireless Charger Arc Firing Interval", - new AcceptableValueRange(0.02f, 16f))); + new AcceptableValueRange(min, max))); wirelessChargingPowerPerArcMultiplier = Config.Bind( "Power", "Wireless Charger Power Per Arc", 1f, - new ConfigDescription("Wireless Charger Power Per Arc", new AcceptableValueRange(0.2f, 16f))); + new ConfigDescription("Wireless Charger Power Per Arc", new AcceptableValueRange(min, max))); fuelTankRefillMultiplier = Config.Bind( "Propulsion", "Fuel Tank Refill Rate Multiplier", 1f, - new ConfigDescription("Fuel Tank Refill Rate Multiplier", new AcceptableValueRange(1f, 32f))); + new ConfigDescription("Fuel Tank Refill Rate Multiplier", new AcceptableValueRange(min, max))); fuelTankCapacityMultiplier = Config.Bind( "Propulsion", "Fuel Tank Capacity Multiplier", 1f, - new ConfigDescription("Fuel Tank Capacity Multiplier", new AcceptableValueRange(1f, 32f))); - wheelTorqueMultiplier = - Config.Bind("Propulsion", "Wheel Torque Multiplier", 1f, - new ConfigDescription("Wheel Torque Multiplier", new AcceptableValueRange(1f, 32f))); + new ConfigDescription("Fuel Tank Capacity Multiplier", new AcceptableValueRange(min, max))); + wheelTorqueMultiplier = Config.Bind( + "Propulsion", "Wheel Torque Multiplier", 1f, + new ConfigDescription("Wheel Torque Multiplier", new AcceptableValueRange(min, max))); wheelSpeedMultiplier = Config.Bind( "Propulsion", "Wheel Max RPM Multiplier", 1f, - new ConfigDescription("Wheel Max RPM Multiplier", new AcceptableValueRange(1f, 32f))); + new ConfigDescription("Wheel Max RPM Multiplier", new AcceptableValueRange(min, max))); jetThrustMultiplier = Config.Bind("Propulsion", "Jet Thrust Multiplier", 1f, - new ConfigDescription("Jet Thrust Multiplier", new AcceptableValueRange(1f, 32f))); + new ConfigDescription("Jet Thrust Multiplier", new AcceptableValueRange(min, max))); minerGroundArea = Config.Bind( "Production", "Miner Ground Deposit Scan Area", 1f, - new ConfigDescription("Miner Ground Deposit Scan Area", new AcceptableValueRange(1f, 32f))); + new ConfigDescription("Miner Ground Deposit Scan Area", new AcceptableValueRange(min, max))); minerMiningSpeed = Config.Bind("Production", "Miner Mining Speed", 1f, - new ConfigDescription("Miner Mining Speed", new AcceptableValueRange(1f, 32f))); + new ConfigDescription("Miner Mining Speed", new AcceptableValueRange(min, max))); allProjectilesHoming = Config.Bind("General", "Make All Projectiles Home", false); shopBlocksGeneratedTotalMultiplier = Config.Bind("Shop", "Shop Blocks Generated Total Multiplier", 1f, new ConfigDescription("Shop Blocks Generated Total Multiplier", - new AcceptableValueRange(1f, 32f))); + new AcceptableValueRange(min, max))); shopPerBlockStopMultiplier = Config.Bind( "Shop", "Shop Per Block Stop Multiplier", 1f, - new ConfigDescription("Shop Per Block Stop Multiplier", new AcceptableValueRange(1f, 32f))); + new ConfigDescription("Shop Per Block Stop Multiplier", new AcceptableValueRange(min, max))); powerUpDelayMultiplier = Config.Bind( "PowerUp", "Power Up Delay Multiplier", 1f, - new ConfigDescription("Power Up Delay Multiplier", new AcceptableValueRange(0.001f, 32f))); + new ConfigDescription("Power Up Delay Multiplier", new AcceptableValueRange(min, max))); batteryCapacityMultiplier = Config.Bind( "PowerUp", "Battery Capacity Multiplier", 1f, - new ConfigDescription("Battery Capacity Multiplier", new AcceptableValueRange(0.001f, 32f))); + new ConfigDescription("Battery Capacity Multiplier", new AcceptableValueRange(min, max))); // shootingSpeedMultiplier.SettingChanged += (sender, args) => WeaponPropertiesManager.DoPatch(); // weaponRotationSpeedMultiplier.SettingChanged += (sender, args) => WeaponPropertiesManager.DoPatch(); diff --git a/Projects/TerraTech/TerraTech/ModuleShieldGeneratorManager.cs b/Projects/TerraTech/TerraTech/ModuleShieldGeneratorManager.cs index 72fffad..8feb124 100644 --- a/Projects/TerraTech/TerraTech/ModuleShieldGeneratorManager.cs +++ b/Projects/TerraTech/TerraTech/ModuleShieldGeneratorManager.cs @@ -8,9 +8,18 @@ namespace TerraTech { new MultipliedObjectManager(ConfigureShieldGenerator); private static void ConfigureShieldGenerator(MultipliedObject obj) { - obj.AddField("m_HealingHeartbeatInterval", Main.shieldHeartbeatIntervalMultiplier); - obj.AddField("m_Radius", Main.shieldRadiusMultiplier); - obj.AddField("m_PowerUpDelay", Main.powerUpDelayMultiplier); + // Healing heartbeat interval - no condition + obj.AddField( + new FieldConfiguration("m_HealingHeartbeatInterval", Main.shieldHeartbeatIntervalMultiplier)); + + // Radius - conditional based on healing status + obj.AddField(new FieldConfiguration("m_Radius", Main.shieldRadiusMultiplier, instance => { + var shield = (ModuleShieldGenerator)instance; + return shield.m_Healing ? Main.shieldRadiusMultiplierHealing : Main.shieldRadiusMultiplier; + })); + + // Power up delay - no condition + obj.AddField(new FieldConfiguration("m_PowerUpDelay", Main.shieldPowerUpDelayMultiplier)); } [HarmonyPrefix]