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()
{
}
}