Add shield healing radius multiplier configuration

This commit is contained in:
2025-02-24 08:45:29 +01:00
parent edc8fd5a5b
commit 897f0a3546
2 changed files with 55 additions and 42 deletions

View File

@@ -46,122 +46,126 @@ namespace TerraTech {
public static ConfigEntry<float> shopPerBlockStopMultiplier; public static ConfigEntry<float> shopPerBlockStopMultiplier;
public static ConfigEntry<float> shieldRadiusMultiplier; public static ConfigEntry<float> shieldRadiusMultiplier;
public static ConfigEntry<float> shieldRadiusMultiplierHealing;
public static ConfigEntry<float> shieldHeartbeatIntervalMultiplier; public static ConfigEntry<float> shieldHeartbeatIntervalMultiplier;
public static ConfigEntry<float> shieldPowerUpDelayMultiplier; public static ConfigEntry<float> shieldPowerUpDelayMultiplier;
public void Awake() { public void Awake() {
debug = Config.Bind("General", "Debug", false); debug = Config.Bind("General", "Debug", false);
float min = 0.01f;
float max = 32f;
xpMultiplier = xpMultiplier =
Config.Bind("General", "XP Multiplier", 1f, Config.Bind("General", "XP Multiplier", 1f,
new ConfigDescription("XP Multiplier", new AcceptableValueRange<float>(1f, 32f))); new ConfigDescription("XP Multiplier", new AcceptableValueRange<float>(min, max)));
moneyMultiplier = moneyMultiplier =
Config.Bind("General", "Money Multiplier", 1f, Config.Bind("General", "Money Multiplier", 1f,
new ConfigDescription("Money Multiplier", new AcceptableValueRange<float>(1f, 32f))); new ConfigDescription("Money Multiplier", new AcceptableValueRange<float>(min, max)));
energyGenMultiplier = Config.Bind( energyGenMultiplier = Config.Bind(
"General", "Energy Generation Multiplier", 1f, "General", "Energy Generation Multiplier", 1f,
new ConfigDescription("Energy Generation Multiplier", new AcceptableValueRange<float>(1f, 64f))); new ConfigDescription("Energy Generation Multiplier", new AcceptableValueRange<float>(min, max)));
heartbeatIntervalMultiplier = Config.Bind( heartbeatIntervalMultiplier = Config.Bind(
"General", "Heartbeat Interval Multiplier", 1f, "General", "Heartbeat Interval Multiplier", 1f,
new ConfigDescription("Heartbeat Interval Multiplier", new AcceptableValueRange<float>(0.1f, 2f))); new ConfigDescription("Heartbeat Interval Multiplier", new AcceptableValueRange<float>(min, max)));
shieldRadiusMultiplier = Config.Bind( shieldRadiusMultiplier = Config.Bind(
"Shield", "Shield Radius Multiplier", 1f, "Shield", "Shield Radius Multiplier", 1f,
new ConfigDescription("Shield Radius Multiplier", new AcceptableValueRange<float>(0.001f, 32f))); new ConfigDescription("Shield Radius Multiplier", new AcceptableValueRange<float>(min, max)));
shieldHeartbeatIntervalMultiplier = shieldHeartbeatIntervalMultiplier =
Config.Bind("Shield", "Shield Heartbeat Interval Multiplier", 1f, Config.Bind("Shield", "Shield Heartbeat Interval Multiplier", 1f,
new ConfigDescription("Shield Heartbeat Interval Multiplier", new ConfigDescription("Shield Heartbeat Interval Multiplier",
new AcceptableValueRange<float>(0.001f, 32f))); new AcceptableValueRange<float>(min, max)));
shieldPowerUpDelayMultiplier = shieldPowerUpDelayMultiplier = Config.Bind(
Config.Bind("Shield", "Shield Power Up Delay Multiplier", 1f, "Shield", "Shield Power Up Delay Multiplier", 1f,
new ConfigDescription("Shield Power Up Delay Multiplier", new ConfigDescription("Shield Power Up Delay Multiplier", new AcceptableValueRange<float>(min, max)));
new AcceptableValueRange<float>(0.001f, 32f))); shieldRadiusMultiplierHealing = Config.Bind(
"Shield", "Shield Radius Multiplier Healing", 1f,
new ConfigDescription("Shield Radius Multiplier Healing", new AcceptableValueRange<float>(min, max)));
shootingSpeedMultiplier = Config.Bind( shootingSpeedMultiplier = Config.Bind(
"Weapons", "Shooting Speed Multiplier", 1f, "Weapons", "Shooting Speed Multiplier", 1f,
new ConfigDescription("Shooting Speed Multiplier", new AcceptableValueRange<float>(0.2f, 8f))); new ConfigDescription("Shooting Speed Multiplier", new AcceptableValueRange<float>(min, max)));
weaponRotationSpeedMultiplier = Config.Bind( weaponRotationSpeedMultiplier = Config.Bind(
"Weapons", "Weapon Rotation Speed Multiplier", 1f, "Weapons", "Weapon Rotation Speed Multiplier", 1f,
new ConfigDescription("Weapon Rotation Speed Multiplier", new AcceptableValueRange<float>(0.2f, 64f))); new ConfigDescription("Weapon Rotation Speed Multiplier", new AcceptableValueRange<float>(min, max)));
muzzleVelocityMultiplier = Config.Bind( muzzleVelocityMultiplier = Config.Bind(
"Weapons", "Muzzle Velocity Multiplier", 1f, "Weapons", "Muzzle Velocity Multiplier", 1f,
new ConfigDescription("Muzzle Velocity Multiplier", new AcceptableValueRange<float>(0.2f, 32f))); new ConfigDescription("Muzzle Velocity Multiplier", new AcceptableValueRange<float>(min, max)));
seekingProjectileVisionConeAngleMultiplier = seekingProjectileVisionConeAngleMultiplier =
Config.Bind("Weapons", "Seeking Projectile Cone Vision Angle Multiplier", 1f, Config.Bind("Weapons", "Seeking Projectile Cone Vision Angle Multiplier", 1f,
new ConfigDescription("Seeking Projectile Cone Vision Angle Multiplier", new ConfigDescription("Seeking Projectile Cone Vision Angle Multiplier",
new AcceptableValueRange<float>(0.2f, 32f))); new AcceptableValueRange<float>(min, max)));
seekingProjectileVisionRangeMultiplier = seekingProjectileVisionRangeMultiplier =
Config.Bind("Weapons", "Seeking Projectile Vision Range Multiplier", 1f, Config.Bind("Weapons", "Seeking Projectile Vision Range Multiplier", 1f,
new ConfigDescription("Seeking Projectile Vision Range Multiplier", new ConfigDescription("Seeking Projectile Vision Range Multiplier",
new AcceptableValueRange<float>(0.2f, 32f))); new AcceptableValueRange<float>(min, max)));
seekingProjectileTurningSpeedMultiplier = seekingProjectileTurningSpeedMultiplier =
Config.Bind("Weapons", "Seeking Projectile Turn Speed Multiplier", 1f, Config.Bind("Weapons", "Seeking Projectile Turn Speed Multiplier", 1f,
new ConfigDescription("Seeking Projectile Turn Speed Multiplier", new ConfigDescription("Seeking Projectile Turn Speed Multiplier",
new AcceptableValueRange<float>(0.2f, 32f))); new AcceptableValueRange<float>(min, max)));
magnetStrenghtMultiplier = Config.Bind( magnetStrenghtMultiplier = Config.Bind(
"Attractors", "Magnet Strength Multiplier", 1f, "Attractors", "Magnet Strength Multiplier", 1f,
new ConfigDescription("Magnet Strength Multiplier", new AcceptableValueRange<float>(1f, 16f))); new ConfigDescription("Magnet Strength Multiplier", new AcceptableValueRange<float>(min, max)));
magnetRadiusMultiplier = Config.Bind( magnetRadiusMultiplier = Config.Bind(
"Attractors", "Magnet Radius Multiplier", 1f, "Attractors", "Magnet Radius Multiplier", 1f,
new ConfigDescription("Magnet Radius Multiplier", new AcceptableValueRange<float>(1f, 16f))); new ConfigDescription("Magnet Radius Multiplier", new AcceptableValueRange<float>(min, max)));
beamStrenghtMultiplier = Config.Bind( beamStrenghtMultiplier = Config.Bind(
"Attractors", "Beam Strength Multiplier", 1f, "Attractors", "Beam Strength Multiplier", 1f,
new ConfigDescription("Beam Strength Multiplier", new AcceptableValueRange<float>(1f, 16f))); new ConfigDescription("Beam Strength Multiplier", new AcceptableValueRange<float>(min, max)));
beamRadiusMultiplier = beamRadiusMultiplier =
Config.Bind("Attractors", "Beam Radius Multiplier", 1f, Config.Bind("Attractors", "Beam Radius Multiplier", 1f,
new ConfigDescription("Beam Radius Multiplier", new AcceptableValueRange<float>(1f, 16f))); new ConfigDescription("Beam Radius Multiplier", new AcceptableValueRange<float>(min, max)));
wirelessChargingRadiusMultiplier = wirelessChargingRadiusMultiplier = Config.Bind(
Config.Bind("Power", "Wireless Charger Radius Multiplier", 1f, "Power", "Wireless Charger Radius Multiplier", 1f,
new ConfigDescription("Wireless Charger Radius Multiplier", new ConfigDescription("Wireless Charger Radius Multiplier", new AcceptableValueRange<float>(min, max)));
new AcceptableValueRange<float>(0.2f, 16f)));
wirelessChargingArcFiringIntervalMultiplier = wirelessChargingArcFiringIntervalMultiplier =
Config.Bind("Power", "Wireless Charger Arc Firing Interval", 1f, Config.Bind("Power", "Wireless Charger Arc Firing Interval", 1f,
new ConfigDescription("Wireless Charger Arc Firing Interval", new ConfigDescription("Wireless Charger Arc Firing Interval",
new AcceptableValueRange<float>(0.02f, 16f))); new AcceptableValueRange<float>(min, max)));
wirelessChargingPowerPerArcMultiplier = Config.Bind( wirelessChargingPowerPerArcMultiplier = Config.Bind(
"Power", "Wireless Charger Power Per Arc", 1f, "Power", "Wireless Charger Power Per Arc", 1f,
new ConfigDescription("Wireless Charger Power Per Arc", new AcceptableValueRange<float>(0.2f, 16f))); new ConfigDescription("Wireless Charger Power Per Arc", new AcceptableValueRange<float>(min, max)));
fuelTankRefillMultiplier = Config.Bind( fuelTankRefillMultiplier = Config.Bind(
"Propulsion", "Fuel Tank Refill Rate Multiplier", 1f, "Propulsion", "Fuel Tank Refill Rate Multiplier", 1f,
new ConfigDescription("Fuel Tank Refill Rate Multiplier", new AcceptableValueRange<float>(1f, 32f))); new ConfigDescription("Fuel Tank Refill Rate Multiplier", new AcceptableValueRange<float>(min, max)));
fuelTankCapacityMultiplier = Config.Bind( fuelTankCapacityMultiplier = Config.Bind(
"Propulsion", "Fuel Tank Capacity Multiplier", 1f, "Propulsion", "Fuel Tank Capacity Multiplier", 1f,
new ConfigDescription("Fuel Tank Capacity Multiplier", new AcceptableValueRange<float>(1f, 32f))); new ConfigDescription("Fuel Tank Capacity Multiplier", new AcceptableValueRange<float>(min, max)));
wheelTorqueMultiplier = wheelTorqueMultiplier = Config.Bind(
Config.Bind("Propulsion", "Wheel Torque Multiplier", 1f, "Propulsion", "Wheel Torque Multiplier", 1f,
new ConfigDescription("Wheel Torque Multiplier", new AcceptableValueRange<float>(1f, 32f))); new ConfigDescription("Wheel Torque Multiplier", new AcceptableValueRange<float>(min, max)));
wheelSpeedMultiplier = Config.Bind( wheelSpeedMultiplier = Config.Bind(
"Propulsion", "Wheel Max RPM Multiplier", 1f, "Propulsion", "Wheel Max RPM Multiplier", 1f,
new ConfigDescription("Wheel Max RPM Multiplier", new AcceptableValueRange<float>(1f, 32f))); new ConfigDescription("Wheel Max RPM Multiplier", new AcceptableValueRange<float>(min, max)));
jetThrustMultiplier = jetThrustMultiplier =
Config.Bind("Propulsion", "Jet Thrust Multiplier", 1f, Config.Bind("Propulsion", "Jet Thrust Multiplier", 1f,
new ConfigDescription("Jet Thrust Multiplier", new AcceptableValueRange<float>(1f, 32f))); new ConfigDescription("Jet Thrust Multiplier", new AcceptableValueRange<float>(min, max)));
minerGroundArea = Config.Bind( minerGroundArea = Config.Bind(
"Production", "Miner Ground Deposit Scan Area", 1f, "Production", "Miner Ground Deposit Scan Area", 1f,
new ConfigDescription("Miner Ground Deposit Scan Area", new AcceptableValueRange<float>(1f, 32f))); new ConfigDescription("Miner Ground Deposit Scan Area", new AcceptableValueRange<float>(min, max)));
minerMiningSpeed = minerMiningSpeed =
Config.Bind("Production", "Miner Mining Speed", 1f, Config.Bind("Production", "Miner Mining Speed", 1f,
new ConfigDescription("Miner Mining Speed", new AcceptableValueRange<float>(1f, 32f))); new ConfigDescription("Miner Mining Speed", new AcceptableValueRange<float>(min, max)));
allProjectilesHoming = Config.Bind("General", "Make All Projectiles Home", false); allProjectilesHoming = Config.Bind("General", "Make All Projectiles Home", false);
shopBlocksGeneratedTotalMultiplier = shopBlocksGeneratedTotalMultiplier =
Config.Bind("Shop", "Shop Blocks Generated Total Multiplier", 1f, Config.Bind("Shop", "Shop Blocks Generated Total Multiplier", 1f,
new ConfigDescription("Shop Blocks Generated Total Multiplier", new ConfigDescription("Shop Blocks Generated Total Multiplier",
new AcceptableValueRange<float>(1f, 32f))); new AcceptableValueRange<float>(min, max)));
shopPerBlockStopMultiplier = Config.Bind( shopPerBlockStopMultiplier = Config.Bind(
"Shop", "Shop Per Block Stop Multiplier", 1f, "Shop", "Shop Per Block Stop Multiplier", 1f,
new ConfigDescription("Shop Per Block Stop Multiplier", new AcceptableValueRange<float>(1f, 32f))); new ConfigDescription("Shop Per Block Stop Multiplier", new AcceptableValueRange<float>(min, max)));
powerUpDelayMultiplier = Config.Bind( powerUpDelayMultiplier = Config.Bind(
"PowerUp", "Power Up Delay Multiplier", 1f, "PowerUp", "Power Up Delay Multiplier", 1f,
new ConfigDescription("Power Up Delay Multiplier", new AcceptableValueRange<float>(0.001f, 32f))); new ConfigDescription("Power Up Delay Multiplier", new AcceptableValueRange<float>(min, max)));
batteryCapacityMultiplier = Config.Bind( batteryCapacityMultiplier = Config.Bind(
"PowerUp", "Battery Capacity Multiplier", 1f, "PowerUp", "Battery Capacity Multiplier", 1f,
new ConfigDescription("Battery Capacity Multiplier", new AcceptableValueRange<float>(0.001f, 32f))); new ConfigDescription("Battery Capacity Multiplier", new AcceptableValueRange<float>(min, max)));
// shootingSpeedMultiplier.SettingChanged += (sender, args) => WeaponPropertiesManager.DoPatch(); // shootingSpeedMultiplier.SettingChanged += (sender, args) => WeaponPropertiesManager.DoPatch();
// weaponRotationSpeedMultiplier.SettingChanged += (sender, args) => WeaponPropertiesManager.DoPatch(); // weaponRotationSpeedMultiplier.SettingChanged += (sender, args) => WeaponPropertiesManager.DoPatch();

View File

@@ -8,9 +8,18 @@ namespace TerraTech {
new MultipliedObjectManager<ModuleShieldGenerator>(ConfigureShieldGenerator); new MultipliedObjectManager<ModuleShieldGenerator>(ConfigureShieldGenerator);
private static void ConfigureShieldGenerator(MultipliedObject<ModuleShieldGenerator> obj) { private static void ConfigureShieldGenerator(MultipliedObject<ModuleShieldGenerator> obj) {
obj.AddField("m_HealingHeartbeatInterval", Main.shieldHeartbeatIntervalMultiplier); // Healing heartbeat interval - no condition
obj.AddField("m_Radius", Main.shieldRadiusMultiplier); obj.AddField(
obj.AddField("m_PowerUpDelay", Main.powerUpDelayMultiplier); new FieldConfiguration<float>("m_HealingHeartbeatInterval", Main.shieldHeartbeatIntervalMultiplier));
// Radius - conditional based on healing status
obj.AddField(new FieldConfiguration<float>("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<float>("m_PowerUpDelay", Main.shieldPowerUpDelayMultiplier));
} }
[HarmonyPrefix] [HarmonyPrefix]