Decompiled source of SuppressSkillActivation v1.0.0

SuppressSkillActivation.dll

Decompiled 13 hours 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 EntityStates;
using EntityStates.Captain.Weapon;
using EntityStates.Engi.EngiMissilePainter;
using EntityStates.Mage.Weapon;
using On.EntityStates.Captain.Weapon;
using On.EntityStates.Engi.EngiMissilePainter;
using On.EntityStates.Mage.Weapon;
using R2API.Utils;
using RoR2;
using RoR2.ContentManagement;
using RoR2.Skills;
using RoR2BepInExPack.GameAssetPaths.Version_1_39_0;
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 = "")]
[assembly: AssemblyCompany("SuppressSkillActivation")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("SuppressSkillActivation")]
[assembly: AssemblyTitle("SuppressSkillActivation")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace SuppressSkillActivation;

[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
[BepInPlugin("com.RiskOfBrainrot.SuppressSkillActivation", "SuppressSkillActivation", "1.0.0")]
public class SuppressSkillActivationPlugin : BaseUnityPlugin
{
	public const string guid = "com.RiskOfBrainrot.SuppressSkillActivation";

	public const string teamName = "RiskOfBrainrot";

	public const string modName = "SuppressSkillActivation";

	public const string version = "1.0.0";

	private void Awake()
	{
		//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ca: Expected O, but got Unknown
		//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00dc: Expected O, but got Unknown
		//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ee: Expected O, but got Unknown
		//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
		//IL_0100: Expected O, but got Unknown
		SuppressSkillActivationPlugin.LoadAsync<SkillDef>(RoR2_Base_Mage.MageBodyWall_asset, (Action<SkillDef>)SuppressSkillActivation);
		SuppressSkillActivationPlugin.LoadAsync<SkillDef>(RoR2_Base_Captain.CallAirstrike_asset, (Action<SkillDef>)SuppressSkillActivation);
		SuppressSkillActivationPlugin.LoadAsync<SkillDef>(RoR2_Base_Captain.CallAirstrikeAlt_asset, (Action<SkillDef>)SuppressSkillActivation);
		SuppressSkillActivationPlugin.LoadAsync<SkillDef>(RoR2_Base_Captain.CallSupplyDropEquipmentRestock_asset, (Action<SkillDef>)SuppressSkillActivation);
		SuppressSkillActivationPlugin.LoadAsync<SkillDef>(RoR2_Base_Captain.CallSupplyDropHacking_asset, (Action<SkillDef>)SuppressSkillActivation);
		SuppressSkillActivationPlugin.LoadAsync<SkillDef>(RoR2_Base_Captain.CallSupplyDropHealing_asset, (Action<SkillDef>)SuppressSkillActivation);
		SuppressSkillActivationPlugin.LoadAsync<SkillDef>(RoR2_Base_Captain.CallSupplyDropShocking_asset, (Action<SkillDef>)SuppressSkillActivation);
		SuppressSkillActivationPlugin.LoadAsync<SkillDef>(RoR2_Base_Engi.EngiHarpoons_asset, (Action<SkillDef>)SuppressSkillActivation);
		PrepWall.OnExit += new hook_OnExit(PrepWall_OnExit);
		Fire.FireMissile += new hook_FireMissile(Fire_FireMissile);
		CallAirstrikeBase.OnEnter += new hook_OnEnter(CallAirstrikeBase_OnEnter);
		CallSupplyDropBase.OnEnter += new hook_OnEnter(CallSupplyDropBase_OnEnter);
	}

	public static void SuppressSkillActivation(SkillDef skill)
	{
		skill.suppressSkillActivation = true;
	}

	public static AssetReferenceT<T> LoadAsync<T>(string guid, Action<T> callback) where T : Object
	{
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		//IL_001d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0040: Unknown result type (might be due to invalid IL or missing references)
		AssetReferenceT<T> val = new AssetReferenceT<T>(guid);
		AsyncOperationHandle<T> handle2 = AssetAsyncReferenceManager<T>.LoadAsset(val, (AsyncReferenceHandleUnloadType)2);
		if (callback == null)
		{
			return val;
		}
		if (handle2.IsDone)
		{
			onCompleted(handle2);
			return val;
		}
		handle2.Completed += onCompleted;
		return val;
		void onCompleted(AsyncOperationHandle<T> handle)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Invalid comparison between Unknown and I4
			if (handle.Result == null || (int)handle.Status != 1)
			{
				Debug.LogError((object)$"Failed to load asset [{handle.DebugName}] : {handle.OperationException}");
			}
			else
			{
				callback(handle.Result);
			}
		}
	}

	private void CallSupplyDropBase_OnEnter(orig_OnEnter orig, CallSupplyDropBase self)
	{
		orig.Invoke(self);
		if (self.placementInfo.ok)
		{
			((EntityState)self).characterBody.OnSkillActivated(((EntityState)self).skillLocator.utility);
		}
	}

	private void CallAirstrikeBase_OnEnter(orig_OnEnter orig, CallAirstrikeBase self)
	{
		orig.Invoke(self);
		((EntityState)self).characterBody.OnSkillActivated(((EntityState)self).skillLocator.utility);
	}

	private void Fire_FireMissile(orig_FireMissile orig, Fire self, HurtBox target, Vector3 position)
	{
		//IL_0004: Unknown result type (might be due to invalid IL or missing references)
		orig.Invoke(self, target, position);
		((EntityState)self).characterBody.OnSkillActivated(((EntityState)self).skillLocator.utility);
	}

	private void PrepWall_OnExit(orig_OnExit orig, PrepWall self)
	{
		orig.Invoke(self);
		if (self.goodPlacement)
		{
			((EntityState)self).characterBody.OnSkillActivated(((EntityState)self).skillLocator.utility);
		}
	}
}