Decompiled source of MeridianTweaks v1.0.0

MeridianTweaks.dll

Decompiled 2 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using EntityStates.LightningStorm;
using On.EntityStates.LightningStorm;
using On.RoR2;
using RoR2;
using RoR2.Navigation;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("MeridianTweaks")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("MeridianTweaks")]
[assembly: AssemblyTitle("MeridianTweaks")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace MeridianTweaks;

[BepInPlugin("com.Nuxlar.MeridianTweaks", "MeridianTweaks", "1.0.0")]
public class MeridianTweaks : BaseUnityPlugin
{
	[Serializable]
	[CompilerGenerated]
	private sealed class <>c
	{
		public static readonly <>c <>9 = new <>c();

		public static hook_Start <>9__0_0;

		public static hook_FireNextStrike <>9__0_1;

		public static hook_FireLightningBolt <>9__0_2;

		internal void <Awake>b__0_0(orig_Start orig, MeridianEventLightningTrigger self)
		{
			self.levelstartMonsterCredit = 300f;
			orig.Invoke(self);
		}

		internal void <Awake>b__0_1(orig_FireNextStrike orig, LightningStormState self)
		{
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			if (self.positionsToStrike.Count < 1)
			{
				if (LightningStormController.instance.strikePatternID == 0)
				{
					self.stormStopwatch = LightningStormController.lightningPattern.frequencyOfLightningStrikes / 6f;
				}
				else
				{
					self.stormStopwatch = LightningStormController.lightningPattern.frequencyOfLightningStrikes;
				}
				self.ExecuteNextStep = self.GenerateTargetPositions;
			}
			else if (!((double)self.strikeStopwatch > 0.0))
			{
				self.strikeStopwatch = LightningStormController.lightningPattern.timeBetweenIndividualStrikes;
				LightningStormController.FireLightningBolt(self.positionsToStrike.Dequeue(), self.lightningInstancePrefab, (BlastAttack)null);
			}
		}

		internal LightningStrikeInstance <Awake>b__0_2(orig_FireLightningBolt orig, Vector3 position, GameObject lightningPrefab, BlastAttack _blastInfo)
		{
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)LightningStormController.instance != (Object)null && !LightningStormController.instance.stormActive)
			{
				return null;
			}
			if (LightningStormController.instance.strikePatternID != 0)
			{
				return orig.Invoke(position, lightningPrefab, _blastInfo);
			}
			GameObject val = Object.Instantiate<GameObject>(lightningPrefab);
			LightningStrikeInstance component = val.GetComponent<LightningStrikeInstance>();
			if (!Object.op_Implicit((Object)(object)component))
			{
				Object.Destroy((Object)(object)val);
				return null;
			}
			NodeGraph groundNodes = SceneInfo.instance.groundNodes;
			if (!Object.op_Implicit((Object)(object)groundNodes))
			{
				return null;
			}
			List<NodeIndex> activeNodesForHullMaskWithFlagConditions = groundNodes.GetActiveNodesForHullMaskWithFlagConditions((HullMask)2, (NodeFlags)0, (NodeFlags)4);
			NodeIndex val2 = activeNodesForHullMaskWithFlagConditions[Random.Range(0, activeNodesForHullMaskWithFlagConditions.Count)];
			Vector3 val3 = default(Vector3);
			groundNodes.GetNodePosition(val2, ref val3);
			component.Initialize(val3, _blastInfo);
			return component;
		}
	}

	public void Awake()
	{
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		//IL_0019: Unknown result type (might be due to invalid IL or missing references)
		//IL_001f: Expected O, but got Unknown
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0043: Expected O, but got Unknown
		//IL_005c: 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_0067: Expected O, but got Unknown
		object obj = <>c.<>9__0_0;
		if (obj == null)
		{
			hook_Start val = delegate(orig_Start orig, MeridianEventLightningTrigger self)
			{
				self.levelstartMonsterCredit = 300f;
				orig.Invoke(self);
			};
			<>c.<>9__0_0 = val;
			obj = (object)val;
		}
		MeridianEventLightningTrigger.Start += (hook_Start)obj;
		object obj2 = <>c.<>9__0_1;
		if (obj2 == null)
		{
			hook_FireNextStrike val2 = delegate(orig_FireNextStrike orig, LightningStormState self)
			{
				//IL_007e: Unknown result type (might be due to invalid IL or missing references)
				if (self.positionsToStrike.Count < 1)
				{
					if (LightningStormController.instance.strikePatternID == 0)
					{
						self.stormStopwatch = LightningStormController.lightningPattern.frequencyOfLightningStrikes / 6f;
					}
					else
					{
						self.stormStopwatch = LightningStormController.lightningPattern.frequencyOfLightningStrikes;
					}
					self.ExecuteNextStep = self.GenerateTargetPositions;
				}
				else if (!((double)self.strikeStopwatch > 0.0))
				{
					self.strikeStopwatch = LightningStormController.lightningPattern.timeBetweenIndividualStrikes;
					LightningStormController.FireLightningBolt(self.positionsToStrike.Dequeue(), self.lightningInstancePrefab, (BlastAttack)null);
				}
			};
			<>c.<>9__0_1 = val2;
			obj2 = (object)val2;
		}
		LightningStormState.FireNextStrike += (hook_FireNextStrike)obj2;
		object obj3 = <>c.<>9__0_2;
		if (obj3 == null)
		{
			hook_FireLightningBolt val3 = delegate(orig_FireLightningBolt orig, Vector3 position, GameObject lightningPrefab, BlastAttack _blastInfo)
			{
				//IL_0028: Unknown result type (might be due to invalid IL or missing references)
				//IL_007c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0081: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Unknown result type (might be due to invalid IL or missing references)
				//IL_008f: Unknown result type (might be due to invalid IL or missing references)
				if ((Object)(object)LightningStormController.instance != (Object)null && !LightningStormController.instance.stormActive)
				{
					return null;
				}
				if (LightningStormController.instance.strikePatternID != 0)
				{
					return orig.Invoke(position, lightningPrefab, _blastInfo);
				}
				GameObject val4 = Object.Instantiate<GameObject>(lightningPrefab);
				LightningStrikeInstance component = val4.GetComponent<LightningStrikeInstance>();
				if (!Object.op_Implicit((Object)(object)component))
				{
					Object.Destroy((Object)(object)val4);
					return null;
				}
				NodeGraph groundNodes = SceneInfo.instance.groundNodes;
				if (!Object.op_Implicit((Object)(object)groundNodes))
				{
					return null;
				}
				List<NodeIndex> activeNodesForHullMaskWithFlagConditions = groundNodes.GetActiveNodesForHullMaskWithFlagConditions((HullMask)2, (NodeFlags)0, (NodeFlags)4);
				NodeIndex val5 = activeNodesForHullMaskWithFlagConditions[Random.Range(0, activeNodesForHullMaskWithFlagConditions.Count)];
				Vector3 val6 = default(Vector3);
				groundNodes.GetNodePosition(val5, ref val6);
				component.Initialize(val6, _blastInfo);
				return component;
			};
			<>c.<>9__0_2 = val3;
			obj3 = (object)val3;
		}
		LightningStormController.FireLightningBolt += (hook_FireLightningBolt)obj3;
	}
}