using System.Linq; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using HarmonyLib.Tools; // TODO: Make shield and repair bigger // TODO: Maybe make props faster, thrusters work fine namespace TerraTech { [BepInPlugin(pluginGuid, pluginName, pluginVersion)] public class Main : BaseUnityPlugin { private const string pluginGuid = "CykaMod"; private const string pluginName = "CykaMod"; private const string pluginVersion = "1.0.0"; public static ConfigEntry xpMultiplier; public static ConfigEntry moneyMultiplier; public static ConfigEntry energyGenMultiplier; public static ConfigEntry heartbeatIntervalMultiplier; public static ConfigEntry shootingSpeedMultiplier; public static ConfigEntry muzzleVelocityMultiplier; public static ConfigEntry allProjectilesHoming; public static ConfigEntry magnetStrenghtMultiplier; public static ConfigEntry magnetRadiusMultiplier; public static ConfigEntry beamStrenghtMultiplier; public static ConfigEntry beamRadiusMultiplier; public static ConfigEntry fuelTankRefillMultiplier; public static ConfigEntry fuelTankCapacityMultiplier; public static ConfigEntry minerGroundArea; public static ConfigEntry minerMiningSpeed; public static ConfigEntry wheelTorqueMultiplier; public static ConfigEntry wheelSpeedMultiplier; public static ConfigEntry jetThrustMultiplier; public static ConfigEntry seekingProjectileVisionConeAngleMultiplier; public static ConfigEntry seekingProjectileVisionRangeMultiplier; public static ConfigEntry seekingProjectileTurningSpeedMultiplier; public static ConfigEntry wirelessChargingRadiusMultiplier; public static ConfigEntry wirelessChargingPowerPerArcMultiplier; public static ConfigEntry wirelessChargingArcFiringIntervalMultiplier; public void Awake() { xpMultiplier = Config.Bind("General", "XP Multiplier", 1f, new ConfigDescription("XP Multiplier", new AcceptableValueRange(1f, 32f))); moneyMultiplier = Config.Bind("General", "Money Multiplier", 1f, new ConfigDescription("Money Multiplier", new AcceptableValueRange(1f, 32f))); energyGenMultiplier = Config.Bind("General", "Energy Generation Multiplier", 1f, new ConfigDescription("Energy Generation Multiplier", new AcceptableValueRange(1f, 64f))); heartbeatIntervalMultiplier = Config.Bind("General", "Heartbeat Interval Multiplier", 1f, new ConfigDescription("Heartbeat Interval Multiplier", new AcceptableValueRange(0.1f, 2f))); shootingSpeedMultiplier = Config.Bind("Weapons", "Shooting Speed Multiplier", 1f, new ConfigDescription("Shooting Speed Multiplier", new AcceptableValueRange(0.2f, 8f))); muzzleVelocityMultiplier = Config.Bind("Weapons", "Muzzle Velocity Multiplier", 1f, new ConfigDescription("Muzzle Velocity Multiplier", new AcceptableValueRange(0.2f, 32f))); seekingProjectileVisionConeAngleMultiplier = Config.Bind("Weapons", "Seeking Projectile Cone Vision Angle Multiplier", 1f, new ConfigDescription("Seeking Projectile Cone Vision Angle Multiplier", new AcceptableValueRange(0.2f, 32f))); seekingProjectileVisionRangeMultiplier = Config.Bind("Weapons", "Seeking Projectile Vision Range Multiplier", 1f, new ConfigDescription("Seeking Projectile Vision Range Multiplier", new AcceptableValueRange(0.2f, 32f))); seekingProjectileTurningSpeedMultiplier = Config.Bind("Weapons", "Seeking Projectile Turn Speed Multiplier", 1f, new ConfigDescription("Seeking Projectile Turn Speed Multiplier", new AcceptableValueRange(0.2f, 32f))); magnetStrenghtMultiplier = Config.Bind("Attractors", "Magnet Strength Multiplier", 1f, new ConfigDescription("Magnet Strength Multiplier", new AcceptableValueRange(1f, 16f))); magnetRadiusMultiplier = Config.Bind("Attractors", "Magnet Radius Multiplier", 1f, new ConfigDescription("Magnet Radius Multiplier", new AcceptableValueRange(1f, 16f))); beamStrenghtMultiplier = Config.Bind("Attractors", "Beam Strength Multiplier", 1f, new ConfigDescription("Beam Strength Multiplier", new AcceptableValueRange(1f, 16f))); beamRadiusMultiplier = Config.Bind("Attractors", "Beam Radius Multiplier", 1f, new ConfigDescription("Beam Radius Multiplier", new AcceptableValueRange(1f, 16f))); wirelessChargingRadiusMultiplier = Config.Bind("Power", "Wireless Charger Radius Multiplier", 1f, new ConfigDescription("Wireless Charger Radius Multiplier", new AcceptableValueRange(0.2f, 16f))); wirelessChargingArcFiringIntervalMultiplier = Config.Bind("Power", "Wireless Charger Arc Firing Interval", 1f, new ConfigDescription("Wireless Charger Arc Firing Interval", new AcceptableValueRange(0.02f, 16f))); wirelessChargingPowerPerArcMultiplier = Config.Bind("Power", "Wireless Charger Power Per Arc", 1f, new ConfigDescription("Wireless Charger Power Per Arc", new AcceptableValueRange(0.2f, 16f))); fuelTankRefillMultiplier = Config.Bind("Propulsion", "Fuel Tank Refill Rate Multiplier", 1f, new ConfigDescription("Fuel Tank Refill Rate Multiplier", new AcceptableValueRange(1f, 32f))); 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))); wheelSpeedMultiplier = Config.Bind("Propulsion", "Wheel Max RPM Multiplier", 1f, new ConfigDescription("Wheel Max RPM Multiplier", new AcceptableValueRange(1f, 32f))); jetThrustMultiplier = Config.Bind("Propulsion", "Jet Thrust Multiplier", 1f, new ConfigDescription("Jet Thrust Multiplier", new AcceptableValueRange(1f, 32f))); minerGroundArea = Config.Bind("Production", "Miner Ground Deposit Scan Area", 1f, new ConfigDescription("Miner Ground Deposit Scan Area", new AcceptableValueRange(1f, 32f))); minerMiningSpeed = Config.Bind("Production", "Miner Mining Speed", 1f, new ConfigDescription("Miner Mining Speed", new AcceptableValueRange(1f, 32f))); allProjectilesHoming = Config.Bind("General", "Make All Projectiles Home", false); shootingSpeedMultiplier.SettingChanged += (sender, args) => WeaponPropertiesManager.DoPatch(); energyGenMultiplier.SettingChanged += (sender, args) => GeneratorPropertiesManager.DoPatch(); magnetStrenghtMultiplier.SettingChanged += (sender, args) => MagnetPropertiesManager.DoPatch(); magnetRadiusMultiplier.SettingChanged += (sender, args) => MagnetPropertiesManager.DoPatch(); beamStrenghtMultiplier.SettingChanged += (sender, args) => BeamPropertiesManager.DoPatch(); beamRadiusMultiplier.SettingChanged += (sender, args) => BeamPropertiesManager.DoPatch(); fuelTankRefillMultiplier.SettingChanged += (sender, args) => FuelPropertiesManager.DoPatch(); fuelTankCapacityMultiplier.SettingChanged += (sender, args) => FuelPropertiesManager.DoPatch(); wheelTorqueMultiplier.SettingChanged += (sender, args) => WheelPropertiesManager.DoPatch(); wheelSpeedMultiplier.SettingChanged += (sender, args) => WheelPropertiesManager.DoPatch(); jetThrustMultiplier.SettingChanged += (sender, args) => ThrusterPropertiesManager.DoPatch(); minerGroundArea.SettingChanged += (sender, args) => MinerPropertiesManager.DoPatch(); minerMiningSpeed.SettingChanged += (sender, args) => MinerPropertiesManager.DoPatch(); wirelessChargingPowerPerArcMultiplier.SettingChanged += (sender, args) => WirelessChargerPropertiesManager.DoPatch(); wirelessChargingArcFiringIntervalMultiplier.SettingChanged += (sender, args) => WirelessChargerPropertiesManager.DoPatch(); wirelessChargingRadiusMultiplier.SettingChanged += (sender, args) => WirelessChargerPropertiesManager.DoPatch(); Logger.LogInfo("Cyka mod loaded"); HarmonyFileLog.Enabled = true; Harmony harmony = new Harmony(pluginGuid); harmony.PatchAll(); var originalMethods = harmony.GetPatchedMethods(); Logger.LogInfo("Patched " + originalMethods.Count() + " methods"); } } }