Decompiled source of QuickslotFallback v1.0.2

QuickslotFallback.dll

Decompiled a month ago
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using HarmonyLib;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("OutwardModTemplate")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("OutwardModTemplate")]
[assembly: AssemblyCopyright("Copyright ©  2021")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("c5450fe0-edcf-483f-b9ea-4b1ef9d36da7")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace QuickslotFallback;

[BepInPlugin("Tchernobill.QuickslotFallback", "QuickslotFallback", "1.0.1")]
public class Plugin : BaseUnityPlugin
{
	[HarmonyPatch(typeof(QuickSlot), "Activate")]
	public class QuickSlot_Activate
	{
		private const int RagePotionItemID = 4300050;

		private const int DisciplinePotionItemID = 4300060;

		private static void Prefix(ref QuickSlot __instance)
		{
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Invalid comparison between I4 and Unknown
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			Skill itemAsSkill = __instance.ItemAsSkill;
			if ((Object)(object)itemAsSkill != (Object)null)
			{
				for (int i = 0; i < itemAsSkill.m_additionalConditions.Length; i++)
				{
					EffectCondition condition = itemAsSkill.m_additionalConditions[i].Condition;
					if (!((Object)(object)condition != (Object)null) || condition.IsValid(((Item)itemAsSkill).m_ownerCharacter) || !(condition is HasStatusEffectEffectCondition))
					{
						continue;
					}
					StatusEffectSelector statusEffect = ((HasStatusEffectEffectCondition)condition).StatusEffect;
					if (2 != (int)statusEffect.Type || statusEffect.StatusType == null)
					{
						continue;
					}
					if (statusEffect.StatusType.Tag.TagName == "Rage")
					{
						Item effectSourceItem = getEffectSourceItem(__instance.m_owner, 4300050);
						if ((Object)(object)effectSourceItem != (Object)null)
						{
							effectSourceItem.TryQuickSlotUse();
						}
					}
					else if (statusEffect.StatusType.Tag.TagName == "Discipline")
					{
						Item effectSourceItem2 = getEffectSourceItem(__instance.m_owner, 4300060);
						if ((Object)(object)effectSourceItem2 != (Object)null)
						{
							effectSourceItem2.TryQuickSlotUse();
						}
					}
				}
			}
			else
			{
				_ = __instance.ItemIsEquipment;
			}
		}

		private static Item getItemFromList(List<string> containedItemUIDs)
		{
			Item val = null;
			for (int i = 0; i < containedItemUIDs.Count; i++)
			{
				val = ItemManager.Instance.GetItem(containedItemUIDs[i]);
				if ((Object)(object)val != (Object)null)
				{
					break;
				}
			}
			return val;
		}

		private static Item getEffectSourceItem(Character m_owner, int itemID)
		{
			Item val = null;
			if ((Object)(object)val == (Object)null && m_owner.Inventory.HasABag)
			{
				val = getItemFromList(((ItemContainer)m_owner.Inventory.EquippedBag.Container).GetContainedItemUIDs(itemID));
			}
			if ((Object)(object)val == (Object)null)
			{
				val = getItemFromList(m_owner.Inventory.Pouch.GetContainedItemUIDs(itemID));
			}
			return val;
		}
	}

	public const string GUID = "Tchernobill.QuickslotFallback";

	public const string NAME = "QuickslotFallback";

	public const string VERSION = "1.0.1";

	internal void Awake()
	{
		//IL_0005: Unknown result type (might be due to invalid IL or missing references)
		new Harmony("Tchernobill.QuickslotFallback").PatchAll();
	}

	internal void Update()
	{
	}
}