using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using AddonFusion; using AddonFusion.Behaviours.AddonComponents; using AddonFusion.Behaviours.AddonProps; using AddonFusion.Behaviours.Scripts; using AddonFusion.Registries; using BepInEx; using GameNetcodeStuff; using HarmonyLib; using LanternKeeper.Behaviours; using LanternKeeper.Managers; using LanternKeeperAddon.Behaviours.AddonComponents; using LanternKeeperAddon.Behaviours.AddonProps; using LanternKeeperAddon.NetcodePatcher; using LanternKeeperAddon.Patches; using LegaFusionCore.Managers; using LegaFusionCore.Utilities; using LethalLib.Modules; using Microsoft.CodeAnalysis; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("LanternKeeperAddon")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("LanternKeeperAddon")] [assembly: AssemblyCopyright("Copyright © 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("4d6d1795-a404-42ac-83a3-2b329190d4b0")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("ClientNetworkTransform")] [assembly: IgnoresAccessChecksTo("com.olegknyazev.softmask")] [assembly: IgnoresAccessChecksTo("DissonanceVoip")] [assembly: IgnoresAccessChecksTo("DunGen")] [assembly: IgnoresAccessChecksTo("DunGen.Integration.ASPP")] [assembly: IgnoresAccessChecksTo("DunGen.Integration.UnityNav")] [assembly: IgnoresAccessChecksTo("EasyTextEffects")] [assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")] [assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")] [assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")] [assembly: IgnoresAccessChecksTo("Unity.Burst")] [assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")] [assembly: IgnoresAccessChecksTo("Unity.Collections")] [assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")] [assembly: IgnoresAccessChecksTo("Unity.Jobs")] [assembly: IgnoresAccessChecksTo("Unity.Mathematics")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")] [assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")] [assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Components")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")] [assembly: IgnoresAccessChecksTo("Unity.Services.QoS")] [assembly: IgnoresAccessChecksTo("Unity.Services.Relay")] [assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")] [assembly: IgnoresAccessChecksTo("Unity.Timeline")] [assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.XR.CoreUtils")] [assembly: IgnoresAccessChecksTo("Unity.XR.Management")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.ConformanceAutomation")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.MetaQuestSupport")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.MockRuntime")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.OculusQuestSupport")] [assembly: IgnoresAccessChecksTo("Unity.XR.OpenXR.Features.RuntimeDebugger")] [assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.SpatialTracking")] [assembly: IgnoresAccessChecksTo("UnityEngine.UI")] [assembly: IgnoresAccessChecksTo("UnityEngine.XR.LegacyInputHelpers")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] 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 LanternKeeperAddon { [BepInPlugin("Lega.LanternKeeperAddon", "Lantern Keeper Addon", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class LanternKeeperAddon : BaseUnityPlugin { public const string modGUID = "Lega.LanternKeeperAddon"; public const string modName = "Lantern Keeper Addon"; public const string modVersion = "1.0.0"; private readonly Harmony harmony = new Harmony("Lega.LanternKeeperAddon"); private static readonly AssetBundle bundle = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "lanternkeeperaddon")); public static GameObject poisonProjectorObj; public void Awake() { LoadItems(); LoadPrefabs(); harmony.PatchAll(typeof(PoisonDaggerPatch)); } public void LoadItems() { RegisterAddon(typeof(PoisonMark), "Poison Mark", typeof(PoisonMarkItem), bundle.LoadAsset("Assets/AddonProps/PoisonMarkItem.asset")); } public void RegisterAddon(Type addonType, string addonName, Type itemType, Item item) { item = LFCObjectsManager.RegisterObject(itemType, item); AddonObjectRegistry.Add(addonType, addonName, item.spawnPrefab); } public void LoadPrefabs() { HashSet hashSet = new HashSet { poisonProjectorObj = bundle.LoadAsset("Assets/AoEProjector/PoisonProjector.prefab") }; foreach (GameObject item in hashSet) { Utilities.FixMixerGroups(item); } } } public static class MyPluginInfo { public const string PLUGIN_GUID = "LanternKeeperAddon"; public const string PLUGIN_NAME = "LanternKeeperAddon"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace LanternKeeperAddon.Patches { public class PoisonDaggerPatch { [HarmonyPatch(typeof(PoisonDagger), "InitializeEveryoneRpc")] [HarmonyPostfix] public static void InitializeForEveryone(PoisonDagger __instance) { AFUtilities.SetAddonComponent((GrabbableObject)(object)__instance); } } } namespace LanternKeeperAddon.Behaviours.AddonProps { public class PoisonMarkItem : AddonScroll { public override Type AddonType => typeof(PoisonMark); protected override void __initializeVariables() { ((AddonScroll)this).__initializeVariables(); } protected override void __initializeRpcs() { ((AddonScroll)this).__initializeRpcs(); } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "PoisonMarkItem"; } } } namespace LanternKeeperAddon.Behaviours.AddonComponents { [AddonInfo(/*Could not decode attribute arguments.*/)] public class PoisonMark : AddonComponent { private readonly Collider[] overlapBuffer = (Collider[])(object)new Collider[64]; public readonly float AoERadius = 1f; public readonly int AoEMask = 1084754248; public AoEProjector poisonProjector; public override string AddonName => "Poison Mark"; public override bool IsPassive => false; public override void ActivateAddonAbility() { //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) if (base.onCooldown || !StartOfRound.Instance.shipHasLanded || !((Object)(object)base.grabbableObject.playerHeldBy != (Object)null)) { return; } base.isEnabled = !base.isEnabled; if (base.isEnabled) { GameObject val = Object.Instantiate(LanternKeeperAddon.poisonProjectorObj, ((Component)base.grabbableObject.playerHeldBy).transform.position, Quaternion.identity); poisonProjector = val.GetComponent(); } else { if (!((Object)(object)poisonProjector != (Object)null)) { return; } Vector3 val2 = default(Vector3); if (poisonProjector.TryConfirm(ref val2)) { int num = Physics.OverlapSphereNonAlloc(val2, AoERadius, overlapBuffer, AoEMask, (QueryTriggerInteraction)2); PlayerControllerB val4 = default(PlayerControllerB); EnemyAICollisionDetect val5 = default(EnemyAICollisionDetect); for (int i = 0; i < num; i++) { Collider val3 = overlapBuffer[i]; if ((Object)(object)val3 != (Object)null) { if (((Component)val3).gameObject.TryGetComponent(ref val4) && !val4.isPlayerDead && LFCUtilities.ShouldNotBeLocalPlayer(val4)) { LanternKeeperNetworkManager.Instance.SpawnPoisonMarkEveryoneRpc((int)val4.playerClientId, (int)LFCUtilities.LocalPlayer.playerClientId); } if (((Component)val3).gameObject.TryGetComponent(ref val5) && (Object)(object)val5.mainScript != (Object)null && !val5.mainScript.isEnemyDead) { LanternKeeperNetworkManager.Instance.SpawnPoisonMarkEveryoneRpc(NetworkObjectReference.op_Implicit(((NetworkBehaviour)val5.mainScript).NetworkObject), (int)LFCUtilities.LocalPlayer.playerClientId); } } } } Object.Destroy((Object)(object)((Component)poisonProjector).gameObject); ((AddonComponent)this).StartCooldown(ConfigManager.poisonMarkCooldown.Value); } } public void Update() { if (base.isEnabled && ((Object)(object)base.grabbableObject == (Object)null || !base.grabbableObject.isHeld || base.grabbableObject.isPocketed) && (Object)(object)poisonProjector != (Object)null) { base.isEnabled = false; Object.Destroy((Object)(object)((Component)poisonProjector).gameObject); } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } } namespace __GEN { internal class NetworkVariableSerializationHelper { [RuntimeInitializeOnLoadMethod] internal static void InitializeSerialization() { } } } namespace LanternKeeperAddon.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }