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 HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("CotLDevotionPop")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("My first plugin")] [assembly: AssemblyTitle("CotLDevotionPop")] [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 CotLDevotionPop { [HarmonyPatch] internal class DevotionPickup { private static bool gatherAllStructures; [HarmonyPatch(typeof(BuildingShrine), "OnInteract")] [HarmonyPostfix] private static void BuildingShrine_OnInteract(ref BuildingShrine __instance, StateMachine ___state) { Plugin.Logger.LogInfo((object)"Interact start"); gatherAllStructures = true; Plugin.Logger.LogInfo((object)$"{Grave.Graves.Count} graves"); foreach (Grave grafe in Grave.Graves) { if (((StructureBrain)grafe.structureBrain).SoulCount > 0) { ((Interaction)grafe).OnSecondaryInteract(___state); } } Plugin.Logger.LogInfo((object)$"{Interaction_Crypt.Crypts.Count} crypts"); foreach (Interaction_Crypt crypt in Interaction_Crypt.Crypts) { if (((StructureBrain)crypt.structureBrain).SoulCount > 0) { ((Interaction)crypt).OnSecondaryInteract(___state); } } foreach (Interaction_DiscipleCollectionShrine shrine in Interaction_DiscipleCollectionShrine.Shrines) { if (((StructureBrain)shrine.StructureBrain).SoulCount > 0) { ((Interaction)shrine).OnInteract(___state); } } } [HarmonyPatch(typeof(BuildingShrine), "Update")] [HarmonyPostfix] private static void BuildingShrine_Update(ref BuildingShrine __instance) { if (InputManager.Gameplay.GetInteractButtonUp((PlayerFarming)null) && gatherAllStructures) { Plugin.Logger.LogInfo((object)"Interact end"); gatherAllStructures = false; } __instance.holdingDuration = Mathf.Max(3f, __instance.holdingDuration); __instance.Delay = Mathf.Min(0.0025f, __instance.Delay); } [HarmonyPatch(typeof(HarvestTotem), "Update")] [HarmonyPostfix] private static void HarvestTotem_Update(ref HarvestTotem __instance) { //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) if (__instance.Activating && ((StructureBrain)__instance.StructureBrain).SoulCount <= 0) { __instance.Activating = false; } HarvestTotem obj = __instance; if ((obj.Delay -= Time.deltaTime) < 0f && gatherAllStructures && ((StructureBrain)__instance.StructureBrain).SoulCount > 0) { if (GameManager.HasUnlockAvailable() || DataManager.Instance.DeathCatBeaten) { SoulCustomTarget.Create(((Component)((Interaction)__instance).playerFarming).gameObject, __instance.ReceiveSoulPosition.transform.position, Color.white, (Action)__instance.GivePlayerSoul, 0.4f, 20f, true, true, true, (string)null, (string)null, true); } else { InventoryItem.Spawn((ITEM_TYPE)20, 1, ((Component)__instance).transform.position + Vector3.back, 0f, (Action)null).SetInitialSpeedAndDiraction(8f + Random.Range(-0.5f, 1f), (float)(270 + Random.Range(-90, 90))); } Structures_HarvestTotem structureBrain = __instance.StructureBrain; int soulCount = ((StructureBrain)structureBrain).SoulCount - 1; ((StructureBrain)structureBrain).SoulCount = soulCount; __instance.UpdateBar(); } __instance.Delay = Mathf.Min(0.0025f, __instance.Delay); } [HarmonyPatch(typeof(BuildingShrinePassive), "Update")] [HarmonyPostfix] private static void BuildingShrinePassive_Update(ref BuildingShrinePassive __instance) { //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) if (__instance.Activating && ((StructureBrain)__instance.StructureBrain).SoulCount <= 0) { __instance.Activating = false; } BuildingShrinePassive obj = __instance; if ((obj.Delay -= Time.deltaTime) < 0f && gatherAllStructures && ((StructureBrain)__instance.StructureBrain).SoulCount > 0) { if (GameManager.HasUnlockAvailable() || DataManager.Instance.DeathCatBeaten) { SoulCustomTarget.Create(((Component)((Interaction)__instance).state).gameObject, __instance.ReceiveSoulPosition.transform.position, Color.white, (Action)__instance.GivePlayerSoul, 0.4f, 20f, true, true, true, (string)null, (string)null, true); } else { InventoryItem.Spawn((ITEM_TYPE)20, 1, ((Component)__instance).transform.position + Vector3.back, 0f, (Action)null).SetInitialSpeedAndDiraction(8f + Random.Range(-0.5f, 1f), (float)(270 + Random.Range(-90, 90))); } Structures_Shrine_Passive structureBrain = __instance.StructureBrain; int soulCount = ((StructureBrain)structureBrain).SoulCount - 1; ((StructureBrain)structureBrain).SoulCount = soulCount; __instance.UpdateBar(); } __instance.Delay = Mathf.Min(0.0025f, __instance.Delay); } [HarmonyPatch(typeof(Interaction_DiscipleCollectionShrine), "Update")] [HarmonyPostfix] private static void Interaction_DiscipleCollectionShrine_Update(ref Interaction_DiscipleCollectionShrine __instance) { //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) if (__instance.Activating && ((StructureBrain)__instance.StructureBrain).SoulCount <= 0) { __instance.Activating = false; } Interaction_DiscipleCollectionShrine obj = __instance; if ((obj.Delay -= Time.deltaTime) < 0f && gatherAllStructures && ((StructureBrain)__instance.StructureBrain).SoulCount > 0) { if (GameManager.HasUnlockAvailable() || DataManager.Instance.DeathCatBeaten) { SoulCustomTarget.Create(((Component)((Interaction)__instance).state).gameObject, __instance.ReceiveSoulPosition.transform.position, Color.white, (Action)__instance.GivePlayerSoul, 0.4f, 20f, true, true, true, (string)null, (string)null, true); } else { InventoryItem.Spawn((ITEM_TYPE)20, 1, ((Component)__instance).transform.position + Vector3.back, 0f, (Action)null).SetInitialSpeedAndDiraction(8f + Random.Range(-0.5f, 1f), (float)(270 + Random.Range(-90, 90))); } Structures_Shrine_Disciple_Collection structureBrain = __instance.StructureBrain; int soulCount = ((StructureBrain)structureBrain).SoulCount - 1; ((StructureBrain)structureBrain).SoulCount = soulCount; __instance.UpdateBar(); } __instance.Delay = Mathf.Min(0.0025f, __instance.Delay); } } [BepInPlugin("net.mirriry.CotLDevotionPop", "Quick Devotion Pickup", "0.2.0.1")] [HarmonyPatch] public class Plugin : BaseUnityPlugin { public const string PluginGuid = "net.mirriry.CotLDevotionPop"; public const string PluginName = "Quick Devotion Pickup"; public const string PluginVer = "0.2.0.1"; internal static ManualLogSource Logger; internal static readonly Harmony Harmony = new Harmony("net.mirriry.CotLDevotionPop"); private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; Logger.LogInfo((object)"Plugin CotLDevotionPop is loaded!"); } private void OnEnable() { Harmony.PatchAll(); Logger.LogInfo((object)"Enabled Quick Devotion Pickup!"); } } public static class MyPluginInfo { public const string PLUGIN_GUID = "CotLDevotionPop"; public const string PLUGIN_NAME = "My first plugin"; public const string PLUGIN_VERSION = "1.0.0"; } }