Decompiled source of ConfigurableVoidBand v1.0.0

ConfigurableVoidBand.dll

Decompiled a year ago
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using On.RoR2;
using RiskOfOptions;
using RiskOfOptions.OptionConfigs;
using RiskOfOptions.Options;
using RoR2;
using RoR2.Projectile;
using UnityEngine;
using UnityEngine.Networking;

[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.0", FrameworkDisplayName = ".NET Standard 2.0")]
[assembly: AssemblyCompany("ConfigurableVoidBand")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("ConfigurableVoidBand")]
[assembly: AssemblyTitle("ConfigurableVoidBand")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace ExamplePlugin
{
	internal static class Log
	{
		private static ManualLogSource _logSource;

		internal static void Init(ManualLogSource logSource)
		{
			_logSource = logSource;
		}

		internal static void Debug(object data)
		{
			_logSource.LogDebug(data);
		}

		internal static void Error(object data)
		{
			_logSource.LogError(data);
		}

		internal static void Fatal(object data)
		{
			_logSource.LogFatal(data);
		}

		internal static void Info(object data)
		{
			_logSource.LogInfo(data);
		}

		internal static void Message(object data)
		{
			_logSource.LogMessage(data);
		}

		internal static void Warning(object data)
		{
			_logSource.LogWarning(data);
		}
	}
}
namespace ConfigurableVoidBand
{
	[BepInPlugin("TaranDev.ConfigurableVoidBand", "ConfigurableVoidBand", "1.0.0")]
	public class ConfigurableVoidBand : BaseUnityPlugin
	{
		public const string PluginGUID = "TaranDev.ConfigurableVoidBand";

		public const string PluginAuthor = "TaranDev";

		public const string PluginName = "ConfigurableVoidBand";

		public const string PluginVersion = "1.0.0";

		public static ConfigEntry<float> cooldown;

		public static ConfigEntry<float> baseTotalDamage;

		public static ConfigEntry<float> totalDamagePerStack;

		public static ConfigEntry<float> baseRadius;

		public static ConfigEntry<float> radiusPerStack;

		public static ConfigEntry<float> basePullForce;

		public static ConfigEntry<float> pullForcePerStack;

		public void Awake()
		{
			configs();
		}

		private void OnEnable()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			GlobalEventManager.OnHitEnemy += new hook_OnHitEnemy(OnHitEnemy);
		}

		private void OnDisable()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			GlobalEventManager.OnHitEnemy -= new hook_OnHitEnemy(OnHitEnemy);
		}

		private static void OnHitEnemy(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim)
		{
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_018f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0246: Unknown result type (might be due to invalid IL or missing references)
			//IL_0266: Unknown result type (might be due to invalid IL or missing references)
			//IL_026e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0273: Unknown result type (might be due to invalid IL or missing references)
			//IL_027a: Unknown result type (might be due to invalid IL or missing references)
			//IL_027c: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
			if (damageInfo.procCoefficient == 0f || damageInfo.rejected || !NetworkServer.active || !Object.op_Implicit((Object)(object)damageInfo.attacker) || !(damageInfo.procCoefficient > 0f))
			{
				return;
			}
			CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>();
			if (!Object.op_Implicit((Object)(object)component))
			{
				return;
			}
			CharacterMaster master = component.master;
			if (!Object.op_Implicit((Object)(object)master))
			{
				return;
			}
			Inventory inventory = master.inventory;
			if (!((ProcChainMask)(ref damageInfo.procChainMask)).HasProc((ProcType)12) && damageInfo.damage / component.damage >= 4f && component.HasBuff(Buffs.ElementalRingVoidReady))
			{
				int itemCount = inventory.GetItemCount(Items.ElementalRingVoid);
				component.RemoveBuff(Buffs.ElementalRingVoidReady);
				for (int i = 1; (float)i <= cooldown.Value; i++)
				{
					component.AddTimedBuff(Buffs.ElementalRingVoidCooldown, (float)i);
				}
				ProcChainMask procChainMask = damageInfo.procChainMask;
				((ProcChainMask)(ref procChainMask)).AddProc((ProcType)12);
				if (itemCount > 0)
				{
					GameObject val = LegacyResourcesAPI.Load<GameObject>("Prefabs/Projectiles/ElementalRingVoidBlackHole");
					RadialForce component2 = val.GetComponent<RadialForce>();
					ProjectileExplosion component3 = val.GetComponent<ProjectileExplosion>();
					float num = (baseRadius.Value + radiusPerStack.Value * (float)(itemCount - 1)) / 15f;
					val.transform.localScale = new Vector3(num, num, num);
					component2.radius = baseRadius.Value + radiusPerStack.Value * (float)(itemCount - 1);
					component2.forceMagnitude = 0f - (basePullForce.Value * 100f + pullForcePerStack.Value * 10f * (float)(itemCount - 1));
					component3.blastRadius = baseRadius.Value + radiusPerStack.Value * (float)(itemCount - 1);
					float num2 = baseTotalDamage.Value + totalDamagePerStack.Value * (float)(itemCount - 1);
					float damage = Util.OnHitProcDamage(damageInfo.damage, component.damage, num2);
					ProjectileManager.instance.FireProjectile(new FireProjectileInfo
					{
						damage = damage,
						crit = damageInfo.crit,
						damageColorIndex = (DamageColorIndex)9,
						position = damageInfo.position,
						procChainMask = procChainMask,
						force = 6000f,
						owner = damageInfo.attacker,
						projectilePrefab = val,
						rotation = Quaternion.identity,
						target = null
					});
				}
			}
			orig.Invoke(self, damageInfo, victim);
		}

		private void configs()
		{
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Expected O, but got Unknown
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Expected O, but got Unknown
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Expected O, but got Unknown
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Expected O, but got Unknown
			//IL_00de: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Expected O, but got Unknown
			//IL_0104: Unknown result type (might be due to invalid IL or missing references)
			//IL_010e: Expected O, but got Unknown
			//IL_0138: Unknown result type (might be due to invalid IL or missing references)
			//IL_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Unknown result type (might be due to invalid IL or missing references)
			//IL_0153: Unknown result type (might be due to invalid IL or missing references)
			//IL_0163: Expected O, but got Unknown
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0168: Expected O, but got Unknown
			//IL_0192: Unknown result type (might be due to invalid IL or missing references)
			//IL_0197: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bd: Expected O, but got Unknown
			//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c2: Expected O, but got Unknown
			//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0207: Unknown result type (might be due to invalid IL or missing references)
			//IL_0217: Expected O, but got Unknown
			//IL_0212: Unknown result type (might be due to invalid IL or missing references)
			//IL_021c: Expected O, but got Unknown
			//IL_0246: Unknown result type (might be due to invalid IL or missing references)
			//IL_024b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0256: Unknown result type (might be due to invalid IL or missing references)
			//IL_0261: Unknown result type (might be due to invalid IL or missing references)
			//IL_0271: Expected O, but got Unknown
			//IL_026c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0276: Expected O, but got Unknown
			cooldown = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Cooldown", 20f, "Default is 20.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cooldown, new StepSliderConfig
			{
				min = 0f,
				max = 50f,
				increment = 1f
			}));
			baseTotalDamage = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Base Total Damage", 1f, "Each increment of 1 is 100% damage, so 1 is 100% base damage and 5 is 500% base damage. Default is 1.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(baseTotalDamage, new StepSliderConfig
			{
				min = 0f,
				max = 250f,
				increment = 0.25f
			}));
			totalDamagePerStack = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Additional Total Damage Per Stack", 1f, "Each increment of 1 is +100% damage, so 1 is +100% base damage and 5 is +500% base damage. Default is 1.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(totalDamagePerStack, new StepSliderConfig
			{
				min = 0f,
				max = 250f,
				increment = 0.25f
			}));
			baseRadius = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Base Radius", 10f, "Default is 10.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(baseRadius, new StepSliderConfig
			{
				min = 0f,
				max = 250f,
				increment = 0.25f
			}));
			radiusPerStack = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Additional Radius Per Stack", 3f, "Default is 3.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(radiusPerStack, new StepSliderConfig
			{
				min = 0f,
				max = 250f,
				increment = 0.25f
			}));
			basePullForce = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Base Pull Force", 10f, "Default is 10.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(basePullForce, new StepSliderConfig
			{
				min = 0f,
				max = 250f,
				increment = 0.25f
			}));
			pullForcePerStack = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Additional Pull Force Per Stack", 5f, "Default is 5.");
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(pullForcePerStack, new StepSliderConfig
			{
				min = 0f,
				max = 250f,
				increment = 0.25f
			}));
		}
	}
}