using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using R2API; using RiskOfOptions; using RiskOfOptions.OptionConfigs; using RiskOfOptions.Options; using RoR2; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("operator buff")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("operator buff")] [assembly: AssemblyTitle("operator buff")] [assembly: AssemblyVersion("1.0.0.0")] namespace DroneSynergy; [BepInPlugin("com.Azrael.DroneSynergy", "Operator Drone Synergy", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class DroneSynergyMod : BaseUnityPlugin { private readonly string[] droneNames = new string[14] { "RechargeDroneBody", "BombardmentDroneBody", "CleanupDroneBody", "EmergencyDroneBody", "EquipmentDroneBody", "CopycatDroneBody", "Drone1Body", "Drone2Body", "FlameDroneBody", "JailerDroneBody", "JunkDroneBody", "MissileDroneBody", "MegaDroneBody", "HaulerDroneBody" }; private ConfigEntry cfgEmergencyRegenMult; private ConfigEntry cfgEmergencyBaseRegen; private ConfigEntry cfgGunnerDamageMult; private ConfigEntry cfgHealingBaseRegen; private ConfigEntry cfgHealingRegenMult; private ConfigEntry cfgMissileCrit; private ConfigEntry cfgMissileCritDmg; private ConfigEntry cfgMegaDamageMult; private ConfigEntry cfgEquipDamageMult; private ConfigEntry cfgFlameAtkSpdMult; private ConfigEntry cfgRechargeArmor; private ConfigEntry cfgBombardCrit; private ConfigEntry cfgBombardCritDmg; private ConfigEntry cfgCleanupMoveSpd; private ConfigEntry cfgCleanupAtkSpd; private ConfigEntry cfgCopycatArmor; private ConfigEntry cfgCopycatArmorMult; private ConfigEntry cfgJailerShield; private ConfigEntry cfgJunkHealthMult; private ConfigEntry cfgHaulerAtkSpd; private ConfigEntry cfgHaulerMoveSpdMult; public void Awake() { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Expected O, but got Unknown SetupConfigAndOptions(); RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(ApplyDroneSynergy); } private void SetupConfigAndOptions() { //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Expected O, but got Unknown //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Expected O, but got Unknown //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Expected O, but got Unknown //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Expected O, but got Unknown //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Expected O, but got Unknown //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Expected O, but got Unknown //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Expected O, but got Unknown //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Expected O, but got Unknown //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Expected O, but got Unknown //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Expected O, but got Unknown //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_0248: Expected O, but got Unknown //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_024d: Expected O, but got Unknown //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_026f: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Expected O, but got Unknown //IL_027a: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Expected O, but got Unknown //IL_02b0: Unknown result type (might be due to invalid IL or missing references) //IL_02b5: Unknown result type (might be due to invalid IL or missing references) //IL_02c0: Unknown result type (might be due to invalid IL or missing references) //IL_02cb: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Expected O, but got Unknown //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_02e0: Expected O, but got Unknown //IL_030c: Unknown result type (might be due to invalid IL or missing references) //IL_0311: Unknown result type (might be due to invalid IL or missing references) //IL_031c: Unknown result type (might be due to invalid IL or missing references) //IL_0327: Unknown result type (might be due to invalid IL or missing references) //IL_0337: Expected O, but got Unknown //IL_0332: Unknown result type (might be due to invalid IL or missing references) //IL_033c: Expected O, but got Unknown //IL_0368: Unknown result type (might be due to invalid IL or missing references) //IL_036d: Unknown result type (might be due to invalid IL or missing references) //IL_0378: Unknown result type (might be due to invalid IL or missing references) //IL_0383: Unknown result type (might be due to invalid IL or missing references) //IL_0393: Expected O, but got Unknown //IL_038e: Unknown result type (might be due to invalid IL or missing references) //IL_0398: Expected O, but got Unknown //IL_03c4: Unknown result type (might be due to invalid IL or missing references) //IL_03c9: Unknown result type (might be due to invalid IL or missing references) //IL_03d4: Unknown result type (might be due to invalid IL or missing references) //IL_03df: Unknown result type (might be due to invalid IL or missing references) //IL_03ef: Expected O, but got Unknown //IL_03ea: Unknown result type (might be due to invalid IL or missing references) //IL_03f4: Expected O, but got Unknown //IL_0445: Unknown result type (might be due to invalid IL or missing references) //IL_044a: Unknown result type (might be due to invalid IL or missing references) //IL_0455: Unknown result type (might be due to invalid IL or missing references) //IL_0460: Unknown result type (might be due to invalid IL or missing references) //IL_0470: Expected O, but got Unknown //IL_046b: Unknown result type (might be due to invalid IL or missing references) //IL_0475: Expected O, but got Unknown //IL_047c: Unknown result type (might be due to invalid IL or missing references) //IL_0481: Unknown result type (might be due to invalid IL or missing references) //IL_048c: Unknown result type (might be due to invalid IL or missing references) //IL_0497: Unknown result type (might be due to invalid IL or missing references) //IL_04a7: Expected O, but got Unknown //IL_04a2: Unknown result type (might be due to invalid IL or missing references) //IL_04ac: Expected O, but got Unknown //IL_04fd: Unknown result type (might be due to invalid IL or missing references) //IL_0502: Unknown result type (might be due to invalid IL or missing references) //IL_050d: Unknown result type (might be due to invalid IL or missing references) //IL_0518: Unknown result type (might be due to invalid IL or missing references) //IL_0528: Expected O, but got Unknown //IL_0523: Unknown result type (might be due to invalid IL or missing references) //IL_052d: Expected O, but got Unknown //IL_0534: Unknown result type (might be due to invalid IL or missing references) //IL_0539: Unknown result type (might be due to invalid IL or missing references) //IL_0544: Unknown result type (might be due to invalid IL or missing references) //IL_054f: Unknown result type (might be due to invalid IL or missing references) //IL_055f: Expected O, but got Unknown //IL_055a: Unknown result type (might be due to invalid IL or missing references) //IL_0564: Expected O, but got Unknown //IL_05b5: Unknown result type (might be due to invalid IL or missing references) //IL_05ba: Unknown result type (might be due to invalid IL or missing references) //IL_05c5: Unknown result type (might be due to invalid IL or missing references) //IL_05d0: Unknown result type (might be due to invalid IL or missing references) //IL_05e0: Expected O, but got Unknown //IL_05db: Unknown result type (might be due to invalid IL or missing references) //IL_05e5: Expected O, but got Unknown //IL_05ec: Unknown result type (might be due to invalid IL or missing references) //IL_05f1: Unknown result type (might be due to invalid IL or missing references) //IL_05fc: Unknown result type (might be due to invalid IL or missing references) //IL_0607: Unknown result type (might be due to invalid IL or missing references) //IL_0617: Expected O, but got Unknown //IL_0612: Unknown result type (might be due to invalid IL or missing references) //IL_061c: Expected O, but got Unknown //IL_0648: Unknown result type (might be due to invalid IL or missing references) //IL_064d: Unknown result type (might be due to invalid IL or missing references) //IL_0658: Unknown result type (might be due to invalid IL or missing references) //IL_0663: Unknown result type (might be due to invalid IL or missing references) //IL_0673: Expected O, but got Unknown //IL_066e: Unknown result type (might be due to invalid IL or missing references) //IL_0678: Expected O, but got Unknown //IL_06a4: Unknown result type (might be due to invalid IL or missing references) //IL_06a9: Unknown result type (might be due to invalid IL or missing references) //IL_06b4: Unknown result type (might be due to invalid IL or missing references) //IL_06bf: Unknown result type (might be due to invalid IL or missing references) //IL_06cf: Expected O, but got Unknown //IL_06ca: Unknown result type (might be due to invalid IL or missing references) //IL_06d4: Expected O, but got Unknown //IL_0725: Unknown result type (might be due to invalid IL or missing references) //IL_072a: Unknown result type (might be due to invalid IL or missing references) //IL_0735: Unknown result type (might be due to invalid IL or missing references) //IL_0740: Unknown result type (might be due to invalid IL or missing references) //IL_0750: Expected O, but got Unknown //IL_074b: Unknown result type (might be due to invalid IL or missing references) //IL_0755: Expected O, but got Unknown //IL_075c: Unknown result type (might be due to invalid IL or missing references) //IL_0761: Unknown result type (might be due to invalid IL or missing references) //IL_076c: Unknown result type (might be due to invalid IL or missing references) //IL_0777: Unknown result type (might be due to invalid IL or missing references) //IL_0787: Expected O, but got Unknown //IL_0782: Unknown result type (might be due to invalid IL or missing references) //IL_078c: Expected O, but got Unknown cfgEmergencyRegenMult = ((BaseUnityPlugin)this).Config.Bind("Emergency Drone", "Regen Multiplier", 0.05f, "Percentage regen boost per drone (0.05 = 5%)"); cfgEmergencyBaseRegen = ((BaseUnityPlugin)this).Config.Bind("Emergency Drone", "Base Regen", 0.1f, "Flat regen boost per drone"); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgEmergencyRegenMult, new StepSliderConfig { min = 0f, max = 1f, increment = 0.05f })); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgEmergencyBaseRegen, new StepSliderConfig { min = 0f, max = 5f, increment = 0.1f })); cfgGunnerDamageMult = ((BaseUnityPlugin)this).Config.Bind("Gunner Drone", "Damage Multiplier", 0.1f, "Percentage damage boost per drone"); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgGunnerDamageMult, new StepSliderConfig { min = 0f, max = 2f, increment = 0.05f })); cfgHealingBaseRegen = ((BaseUnityPlugin)this).Config.Bind("Healing Drone", "Base Regen", 0.05f, "Flat regen boost per drone"); cfgHealingRegenMult = ((BaseUnityPlugin)this).Config.Bind("Healing Drone", "Regen Multiplier", 0.03f, "Percentage regen boost per drone"); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgHealingBaseRegen, new StepSliderConfig { min = 0f, max = 5f, increment = 0.05f })); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgHealingRegenMult, new StepSliderConfig { min = 0f, max = 1f, increment = 0.01f })); cfgMissileCrit = ((BaseUnityPlugin)this).Config.Bind("Missile Drone", "Crit Chance", 1f, "Flat crit chance per drone (5 = 5%)"); cfgMissileCritDmg = ((BaseUnityPlugin)this).Config.Bind("Missile Drone", "Crit Damage Multiplier", 0.5f, "Percentage crit damage boost per drone"); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgMissileCrit, new StepSliderConfig { min = 0f, max = 100f, increment = 1f })); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgMissileCritDmg, new StepSliderConfig { min = 0f, max = 5f, increment = 0.1f })); cfgMegaDamageMult = ((BaseUnityPlugin)this).Config.Bind("TC-280", "Damage Multiplier", 1f, "Percentage damage boost per drone"); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgMegaDamageMult, new StepSliderConfig { min = 0f, max = 5f, increment = 0.1f })); cfgEquipDamageMult = ((BaseUnityPlugin)this).Config.Bind("Equipment Drone", "Damage Multiplier", 0.1f, "Percentage damage boost per drone"); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgEquipDamageMult, new StepSliderConfig { min = 0f, max = 2f, increment = 0.05f })); cfgFlameAtkSpdMult = ((BaseUnityPlugin)this).Config.Bind("Flame Drone", "Attack Speed Multiplier", 0.5f, "Percentage attack speed boost per drone"); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgFlameAtkSpdMult, new StepSliderConfig { min = 0f, max = 3f, increment = 0.1f })); cfgRechargeArmor = ((BaseUnityPlugin)this).Config.Bind("Barrier Drone", "Armor Add", 5f, "Flat armor boost per drone"); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgRechargeArmor, new StepSliderConfig { min = 0f, max = 100f, increment = 5f })); cfgBombardCrit = ((BaseUnityPlugin)this).Config.Bind("Bombardment Drone", "Crit Chance", 10f, "Flat crit chance per drone"); cfgBombardCritDmg = ((BaseUnityPlugin)this).Config.Bind("Bombardment Drone", "Crit Damage Multiplier", 1f, "Percentage crit damage boost per drone"); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgBombardCrit, new StepSliderConfig { min = 0f, max = 100f, increment = 1f })); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgBombardCritDmg, new StepSliderConfig { min = 0f, max = 5f, increment = 0.1f })); cfgCleanupMoveSpd = ((BaseUnityPlugin)this).Config.Bind("Cleanup Drone", "Base Move Speed", 0.5f, "Flat movement speed boost per drone"); cfgCleanupAtkSpd = ((BaseUnityPlugin)this).Config.Bind("Cleanup Drone", "Base Attack Speed", 0.1f, "Flat attack speed boost per drone"); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgCleanupMoveSpd, new StepSliderConfig { min = 0f, max = 5f, increment = 0.1f })); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgCleanupAtkSpd, new StepSliderConfig { min = 0f, max = 2f, increment = 0.05f })); cfgCopycatArmor = ((BaseUnityPlugin)this).Config.Bind("Freeze Drone", "Armor Add", 10f, "Flat armor boost per drone"); cfgCopycatArmorMult = ((BaseUnityPlugin)this).Config.Bind("Freeze Drone", "Armor Multiplier", 0.3f, "Percentage total armor boost per drone"); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgCopycatArmor, new StepSliderConfig { min = 0f, max = 100f, increment = 5f })); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgCopycatArmorMult, new StepSliderConfig { min = 0f, max = 2f, increment = 0.1f })); cfgJailerShield = ((BaseUnityPlugin)this).Config.Bind("Jailer Drone", "Base Shield Add", 50f, "Flat shield boost per drone"); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgJailerShield, new StepSliderConfig { min = 0f, max = 500f, increment = 10f })); cfgJunkHealthMult = ((BaseUnityPlugin)this).Config.Bind("Junk Drone", "Health Multiplier", 0.1f, "Percentage health boost per drone"); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgJunkHealthMult, new StepSliderConfig { min = 0f, max = 2f, increment = 0.05f })); cfgHaulerAtkSpd = ((BaseUnityPlugin)this).Config.Bind("Hauler Drone", "Base Attack Speed", 0.1f, "Flat attack speed boost per drone"); cfgHaulerMoveSpdMult = ((BaseUnityPlugin)this).Config.Bind("Hauler Drone", "Move Speed Multiplier", 0.1f, "Percentage movement speed boost per drone"); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgHaulerAtkSpd, new StepSliderConfig { min = 0f, max = 2f, increment = 0.05f })); ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cfgHaulerMoveSpdMult, new StepSliderConfig { min = 0f, max = 2f, increment = 0.05f })); } private void ApplyDroneSynergy(CharacterBody sender, StatHookEventArgs args) { if ((Object)(object)sender == (Object)null || (Object)(object)sender.master == (Object)null || !((Object)sender).name.Contains("DroneTechBody")) { return; } Dictionary dictionary = new Dictionary(); string[] array = droneNames; foreach (string key in array) { dictionary[key] = 0; } foreach (CharacterMaster readOnlyInstances in CharacterMaster.readOnlyInstancesList) { if (!Object.op_Implicit((Object)(object)readOnlyInstances.minionOwnership) || !((Object)(object)readOnlyInstances.minionOwnership.ownerMaster == (Object)(object)sender.master)) { continue; } CharacterBody body = readOnlyInstances.GetBody(); if ((Object)(object)body != (Object)null && (Object)(object)body.healthComponent != (Object)null && body.healthComponent.alive) { string name = ((Object)readOnlyInstances.bodyPrefab).name; if (dictionary.ContainsKey(name)) { dictionary[name]++; } } } if (dictionary["EmergencyDroneBody"] > 0) { ApplyEmergencyDroneBuff(dictionary["EmergencyDroneBody"], args); } if (dictionary["Drone1Body"] > 0) { ApplyDrone1Buff(dictionary["Drone1Body"], args); } if (dictionary["Drone2Body"] > 0) { ApplyDrone2Buff(dictionary["Drone2Body"], args); } if (dictionary["MissileDroneBody"] > 0) { ApplyMissileDroneBuff(dictionary["MissileDroneBody"], args); } if (dictionary["MegaDroneBody"] > 0) { ApplyMegaDroneBuff(dictionary["MegaDroneBody"], args); } if (dictionary["EquipmentDroneBody"] > 0) { ApplyEquipmentDroneBuff(dictionary["EquipmentDroneBody"], args); } if (dictionary["FlameDroneBody"] > 0) { ApplyFlameDroneBuff(dictionary["FlameDroneBody"], args); } if (dictionary["RechargeDroneBody"] > 0) { ApplyRechargeDroneBuff(dictionary["RechargeDroneBody"], args); } if (dictionary["BombardmentDroneBody"] > 0) { ApplyBombardmentDroneBuff(dictionary["BombardmentDroneBody"], args); } if (dictionary["CleanupDroneBody"] > 0) { ApplyCleanupDroneBuff(dictionary["CleanupDroneBody"], args); } if (dictionary["CopycatDroneBody"] > 0) { ApplyCopycatDroneBuff(dictionary["CopycatDroneBody"], args); } if (dictionary["JailerDroneBody"] > 0) { ApplyJailerDroneBuff(dictionary["JailerDroneBody"], args); } if (dictionary["JunkDroneBody"] > 0) { ApplyJunkDroneBuff(dictionary["JunkDroneBody"], args); } if (dictionary["HaulerDroneBody"] > 0) { ApplyHaulerDroneBuff(dictionary["HaulerDroneBody"], args); } } private void ApplyEmergencyDroneBuff(int count, StatHookEventArgs args) { args.regenMultAdd += cfgEmergencyRegenMult.Value * (float)count; args.baseRegenAdd += cfgEmergencyBaseRegen.Value * (float)count; } private void ApplyDrone1Buff(int count, StatHookEventArgs args) { args.damageMultAdd += cfgGunnerDamageMult.Value * (float)count; } private void ApplyDrone2Buff(int count, StatHookEventArgs args) { args.baseRegenAdd += cfgHealingBaseRegen.Value * (float)count; args.regenMultAdd += cfgHealingRegenMult.Value * (float)count; } private void ApplyMissileDroneBuff(int count, StatHookEventArgs args) { args.critAdd += cfgMissileCrit.Value * (float)count; args.critDamageMultAdd += cfgMissileCritDmg.Value * (float)count; } private void ApplyMegaDroneBuff(int count, StatHookEventArgs args) { args.damageMultAdd += cfgMegaDamageMult.Value * (float)count; } private void ApplyEquipmentDroneBuff(int count, StatHookEventArgs args) { args.damageMultAdd += cfgEquipDamageMult.Value * (float)count; } private void ApplyFlameDroneBuff(int count, StatHookEventArgs args) { args.attackSpeedMultAdd += cfgFlameAtkSpdMult.Value * (float)count; } private void ApplyRechargeDroneBuff(int count, StatHookEventArgs args) { args.armorAdd += cfgRechargeArmor.Value * (float)count; } private void ApplyBombardmentDroneBuff(int count, StatHookEventArgs args) { args.critAdd += cfgBombardCrit.Value * (float)count; args.critDamageMultAdd += cfgBombardCritDmg.Value * (float)count; } private void ApplyCleanupDroneBuff(int count, StatHookEventArgs args) { args.baseMoveSpeedAdd += cfgCleanupMoveSpd.Value * (float)count; args.baseAttackSpeedAdd += cfgCleanupAtkSpd.Value * (float)count; } private void ApplyCopycatDroneBuff(int count, StatHookEventArgs args) { args.armorAdd += cfgCopycatArmor.Value * (float)count; args.armorTotalMult += cfgCopycatArmorMult.Value * (float)count; } private void ApplyJailerDroneBuff(int count, StatHookEventArgs args) { args.baseShieldAdd += cfgJailerShield.Value * (float)count; } private void ApplyJunkDroneBuff(int count, StatHookEventArgs args) { args.healthMultAdd += cfgJunkHealthMult.Value * (float)count; } private void ApplyHaulerDroneBuff(int count, StatHookEventArgs args) { args.baseAttackSpeedAdd += cfgHaulerAtkSpd.Value * (float)count; args.moveSpeedMultAdd += cfgHaulerMoveSpdMult.Value * (float)count; } }