Decompiled source of DroneSynergy v1.0.1

operator buff.dll

Decompiled 3 weeks ago
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<float> cfgEmergencyRegenMult;

	private ConfigEntry<float> cfgEmergencyBaseRegen;

	private ConfigEntry<float> cfgGunnerDamageMult;

	private ConfigEntry<float> cfgHealingBaseRegen;

	private ConfigEntry<float> cfgHealingRegenMult;

	private ConfigEntry<float> cfgMissileCrit;

	private ConfigEntry<float> cfgMissileCritDmg;

	private ConfigEntry<float> cfgMegaDamageMult;

	private ConfigEntry<float> cfgEquipDamageMult;

	private ConfigEntry<float> cfgFlameAtkSpdMult;

	private ConfigEntry<float> cfgRechargeArmor;

	private ConfigEntry<float> cfgBombardCrit;

	private ConfigEntry<float> cfgBombardCritDmg;

	private ConfigEntry<float> cfgCleanupMoveSpd;

	private ConfigEntry<float> cfgCleanupAtkSpd;

	private ConfigEntry<float> cfgCopycatArmor;

	private ConfigEntry<float> cfgCopycatArmorMult;

	private ConfigEntry<float> cfgJailerShield;

	private ConfigEntry<float> cfgJunkHealthMult;

	private ConfigEntry<float> cfgHaulerAtkSpd;

	private ConfigEntry<float> 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<float>("Emergency Drone", "Regen Multiplier", 0.05f, "Percentage regen boost per drone (0.05 = 5%)");
		cfgEmergencyBaseRegen = ((BaseUnityPlugin)this).Config.Bind<float>("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<float>("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<float>("Healing Drone", "Base Regen", 0.05f, "Flat regen boost per drone");
		cfgHealingRegenMult = ((BaseUnityPlugin)this).Config.Bind<float>("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<float>("Missile Drone", "Crit Chance", 1f, "Flat crit chance per drone (5 = 5%)");
		cfgMissileCritDmg = ((BaseUnityPlugin)this).Config.Bind<float>("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<float>("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<float>("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<float>("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<float>("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<float>("Bombardment Drone", "Crit Chance", 10f, "Flat crit chance per drone");
		cfgBombardCritDmg = ((BaseUnityPlugin)this).Config.Bind<float>("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<float>("Cleanup Drone", "Base Move Speed", 0.5f, "Flat movement speed boost per drone");
		cfgCleanupAtkSpd = ((BaseUnityPlugin)this).Config.Bind<float>("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<float>("Freeze Drone", "Armor Add", 10f, "Flat armor boost per drone");
		cfgCopycatArmorMult = ((BaseUnityPlugin)this).Config.Bind<float>("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<float>("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<float>("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<float>("Hauler Drone", "Base Attack Speed", 0.1f, "Flat attack speed boost per drone");
		cfgHaulerMoveSpdMult = ((BaseUnityPlugin)this).Config.Bind<float>("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<string, int> dictionary = new Dictionary<string, int>();
		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;
	}
}