Decompiled source of ScorchWurmFixes v1.0.1

ScorchWurmFixes.dll

Decompiled a day ago
using System;
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.Logging;
using EntityStates;
using EntityStates.Scorchling;
using Logger;
using Microsoft.CodeAnalysis;
using On.EntityStates.Scorchling;
using RoR2;
using RoR2.CharacterAI;
using RoR2.ContentManagement;
using RoR2BepInExPack.GameAssetPathsBetter;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;

[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("ScorchWurmFixes")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+e23b6895f5b2eedb62394eb5cb9bb23aec6f194e")]
[assembly: AssemblyProduct("ScorchWurmFixes")]
[assembly: AssemblyTitle("ScorchWurmFixes")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace ScorchWurmFixes
{
	[BepInPlugin("Onyx.ScorchWurmFixes", "ScorchWurmFixes", "1.0.0")]
	public class ScorchWurmFixes : BaseUnityPlugin
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static Action<AsyncOperationHandle<GameObject>> <>9__6_0;

			public static hook_OnEnter <>9__6_1;

			internal void <Awake>b__6_0(AsyncOperationHandle<GameObject> x)
			{
				AISkillDriver[] components = x.Result.GetComponents<AISkillDriver>();
				foreach (AISkillDriver val in components)
				{
					if (val.customName == "Breach")
					{
						((Behaviour)val).enabled = false;
					}
					if (val.customName == "ChaseOffNodegraph")
					{
						((Behaviour)val).enabled = false;
					}
					if (val.customName == "ChaseOffNodegraphClose")
					{
						val.maxDistance = 50f;
					}
					if (val.customName == "FollowNodeGraphToTarget")
					{
						val.minDistance = 0f;
						val.driverUpdateTimerOverride = 1f;
					}
				}
			}

			internal void <Awake>b__6_1(orig_OnEnter orig, ScorchlingBreach self)
			{
				//IL_0007: Unknown result type (might be due to invalid IL or missing references)
				//IL_000c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0011: Unknown result type (might be due to invalid IL or missing references)
				//IL_0016: Unknown result type (might be due to invalid IL or missing references)
				//IL_001b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0025: Unknown result type (might be due to invalid IL or missing references)
				if (Physics.CheckBox(((EntityState)self).characterBody.footPosition + yOffset, detectionBounds, Quaternion.identity, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask)))
				{
					((EntityState)self).outer.SetNextStateToMain();
				}
				else
				{
					orig.Invoke(self);
				}
			}
		}

		public const string PluginGUID = "Onyx.ScorchWurmFixes";

		public const string PluginAuthor = "Onyx";

		public const string PluginName = "ScorchWurmFixes";

		public const string PluginVersion = "1.0.0";

		private static Vector3 detectionBounds = new Vector3(0.5f, 2f, 0.5f);

		private static Vector3 yOffset = Vector3.up * (detectionBounds.y + 0.2f);

		public void Awake()
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Expected O, but got Unknown
			Log.Init(((BaseUnityPlugin)this).Logger);
			AssetReferenceT<GameObject> val = new AssetReferenceT<GameObject>(RoR2_DLC2_Scorchling.ScorchlingMaster_prefab);
			AsyncOperationHandle<GameObject> val2 = AssetAsyncReferenceManager<GameObject>.LoadAsset(val, (AsyncReferenceHandleUnloadType)2);
			val2.Completed += delegate(AsyncOperationHandle<GameObject> x)
			{
				AISkillDriver[] components = x.Result.GetComponents<AISkillDriver>();
				foreach (AISkillDriver val4 in components)
				{
					if (val4.customName == "Breach")
					{
						((Behaviour)val4).enabled = false;
					}
					if (val4.customName == "ChaseOffNodegraph")
					{
						((Behaviour)val4).enabled = false;
					}
					if (val4.customName == "ChaseOffNodegraphClose")
					{
						val4.maxDistance = 50f;
					}
					if (val4.customName == "FollowNodeGraphToTarget")
					{
						val4.minDistance = 0f;
						val4.driverUpdateTimerOverride = 1f;
					}
				}
			};
			object obj = <>c.<>9__6_1;
			if (obj == null)
			{
				hook_OnEnter val3 = delegate(orig_OnEnter orig, ScorchlingBreach self)
				{
					//IL_0007: Unknown result type (might be due to invalid IL or missing references)
					//IL_000c: Unknown result type (might be due to invalid IL or missing references)
					//IL_0011: Unknown result type (might be due to invalid IL or missing references)
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					//IL_001b: Unknown result type (might be due to invalid IL or missing references)
					//IL_0025: Unknown result type (might be due to invalid IL or missing references)
					if (Physics.CheckBox(((EntityState)self).characterBody.footPosition + yOffset, detectionBounds, Quaternion.identity, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask)))
					{
						((EntityState)self).outer.SetNextStateToMain();
					}
					else
					{
						orig.Invoke(self);
					}
				};
				<>c.<>9__6_1 = val3;
				obj = (object)val3;
			}
			ScorchlingBreach.OnEnter += (hook_OnEnter)obj;
		}
	}
}
namespace Logger
{
	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);
		}
	}
}