Decompiled source of ArtifactOfTheDrowned v1.1.2

ArtifactGesture.dll

Decompiled 7 months ago
using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using ArtifactGesture.Properties;
using BepInEx;
using On.RoR2;
using R2API;
using R2API.Utils;
using RoR2;
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 = "")]
[assembly: AssemblyCompany("ArtifactGesture")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("ArtifactGesture")]
[assembly: AssemblyTitle("ArtifactGesture")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace ArtifactGesture
{
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("com.Borbo.ArtifactGesture", "This Mod Turns Gesture Into An Artifact So That People Can Stop Telling Me Removing Gesture In BalanceOverhaulRBO Was Unnecessary", "1.1.2")]
	[R2APISubmoduleDependency(new string[] { "ContentAddition", "LanguageAPI" })]
	public class Main : BaseUnityPlugin
	{
		public static AssetBundle iconBundle = LoadAssetBundle(Resources.misc);

		private ArtifactDef Gesture = ScriptableObject.CreateInstance<ArtifactDef>();

		public static float artifactCdr = 0.5f;

		public static AssetBundle LoadAssetBundle(byte[] resourceBytes)
		{
			if (resourceBytes == null)
			{
				throw new ArgumentNullException("resourceBytes");
			}
			return AssetBundle.LoadFromMemory(resourceBytes);
		}

		public void Awake()
		{
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Expected O, but got Unknown
			//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ad: Expected O, but got Unknown
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Expected O, but got Unknown
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			LanguageAPI.Add("ARTIFACT_GESTURE_NAME", "Artifact of the Drowned");
			LanguageAPI.Add("ARTIFACT_GESTURE_DESC", "Dramatically reduce Equipment cooldown... <style=cIsHealth>BUT it automatically activates.</style>");
			Gesture.nameToken = "ARTIFACT_GESTURE_NAME";
			Gesture.descriptionToken = "ARTIFACT_GESTURE_DESC";
			Gesture.smallIconDeselectedSprite = iconBundle.LoadAsset<Sprite>("Assets/gesturedeactivated.png");
			Gesture.smallIconSelectedSprite = iconBundle.LoadAsset<Sprite>("Assets/gesture.png");
			Gesture.unlockableDef = UnlockableCatalog.GetUnlockableDef("SuicideHermitCrabs");
			EquipmentSlot.FixedUpdate += new hook_FixedUpdate(GestureArtifactLogic);
			ItemCatalog.Init += new hook_Init(RemoveGestureItem);
			Inventory.CalculateEquipmentCooldownScale += new hook_CalculateEquipmentCooldownScale(GestureArtifactCdr);
			ContentAddition.AddArtifactDef(Gesture);
			ItemDef val = LegacyResourcesAPI.Load<ItemDef>("ItemDefs/AutoCastEquipment");
			if (Object.op_Implicit((Object)(object)val))
			{
				val.tier = (ItemTier)5;
				val.deprecatedTier = (ItemTier)5;
			}
		}

		private float GestureArtifactCdr(orig_CalculateEquipmentCooldownScale orig, Inventory self)
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			float num = orig.Invoke(self);
			if (RunArtifactManager.instance.IsArtifactEnabled(Gesture.artifactIndex))
			{
				num *= 1f - artifactCdr;
			}
			return num;
		}

		private void GestureArtifactLogic(orig_FixedUpdate orig, EquipmentSlot self)
		{
			//IL_000c: 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_0042: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(self);
			bool flag = false;
			if (self.equipmentIndex != Equipment.GoldGat.equipmentIndex && !((ButtonState)(ref self.inputBank.activateEquipment)).justPressed && RunArtifactManager.instance.IsArtifactEnabled(Gesture.artifactIndex))
			{
				flag = true;
			}
			bool isEquipmentActivationAllowed = self.characterBody.isEquipmentActivationAllowed;
			if (flag && isEquipmentActivationAllowed && self.hasEffectiveAuthority)
			{
				if (NetworkServer.active)
				{
					self.ExecuteIfReady();
				}
				else
				{
					self.CallCmdExecuteIfReady();
				}
			}
		}

		private void RemoveGestureItem(orig_Init orig)
		{
			orig.Invoke();
			Items.AutoCastEquipment.tier = (ItemTier)5;
		}
	}
}
namespace ArtifactGesture.Properties
{
	[GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
	[DebuggerNonUserCode]
	[CompilerGenerated]
	internal class Resources
	{
		private static ResourceManager resourceMan;

		private static CultureInfo resourceCulture;

		[EditorBrowsable(EditorBrowsableState.Advanced)]
		internal static ResourceManager ResourceManager
		{
			get
			{
				if (resourceMan == null)
				{
					ResourceManager resourceManager = new ResourceManager("ArtifactGesture.Properties.Resources", typeof(Resources).Assembly);
					resourceMan = resourceManager;
				}
				return resourceMan;
			}
		}

		[EditorBrowsable(EditorBrowsableState.Advanced)]
		internal static CultureInfo Culture
		{
			get
			{
				return resourceCulture;
			}
			set
			{
				resourceCulture = value;
			}
		}

		internal static byte[] misc
		{
			get
			{
				object @object = ResourceManager.GetObject("misc", resourceCulture);
				return (byte[])@object;
			}
		}

		internal Resources()
		{
		}
	}
}