Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of DefsServerSideTweaks v2.1.2
ServerSideTweaks.dll
Decompiled 3 weeks agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates; using EntityStates.InfiniteTowerSafeWard; using HG.Reflection; using IL.EntityStates.ChildMonster; using IL.RoR2; using InLobbyConfig; using InLobbyConfig.Fields; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using On.EntityStates.InfiniteTowerSafeWard; using On.RoR2; using On.RoR2.Items; using R2API.Utils; using RoR2; using RoR2.Navigation; using ShareSuite; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Experimental.Rendering; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.ResourceManagement.AsyncOperations; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: OptIn] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("ServerSideTweaks")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+a90f5204ae5142c259e55408c26b96b8786e663c")] [assembly: AssemblyProduct("ServerSideTweaks")] [assembly: AssemblyTitle("ServerSideTweaks")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [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 ServerSideTweaks { public class BepConfig { public static ConfigEntry<float> PearlReplacesLunarItemChance; public static ConfigEntry<float> IrradiantPearlReplacesLunarItemChance; public static ConfigEntry<bool> NoPearlsInBazaar; public static ConfigEntry<bool> ChildReducedTeleportRange; public static ConfigEntry<bool> ChildRemoveInvincibility; public static ConfigEntry<bool> SimulacrumNonSharedLoot; public static ConfigEntry<int> SimulacrumLootMaxItemDebt; public static ConfigEntry<bool> SimulacrumLootSkullTokens; public static ConfigEntry<float> SimulacrumCommencementArtifactDissonanceChance; public static ConfigEntry<float> SimulacrumDirectorEnemyPowerBias; public static ConfigEntry<int> SimulacrumMaxSquadSize; public static ConfigEntry<float> SimulacrumWavePeriodSecondsFactor; public static ConfigEntry<bool> SimulacrumFastVoidCrab; public static ConfigEntry<float> ClassicDirectorEnemyPowerBias; public static ConfigEntry<bool> Enabled { get; set; } public static void Init() { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Expected O, but got Unknown //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Expected O, but got Unknown //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Expected O, but got Unknown //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Expected O, but got Unknown //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Expected O, but got Unknown //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Expected O, but got Unknown //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Expected O, but got Unknown //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Expected O, but got Unknown //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Expected O, but got Unknown //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Expected O, but got Unknown //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Expected O, but got Unknown //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_0224: Expected O, but got Unknown //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Expected O, but got Unknown ConfigFile config = ((BaseUnityPlugin)ServerSideTweaks.instance).Config; Enabled = config.Bind<bool>("Main", "Enabled", true, "Enable Mod"); PearlReplacesLunarItemChance = config.Bind<float>("Main", "Pearl replaces Lunar Item chance", 0.1f, new ConfigDescription("Adds a chance for lunar items to be replaced by a pearl.", (AcceptableValueBase)null, Array.Empty<object>())); IrradiantPearlReplacesLunarItemChance = config.Bind<float>("Main", "Irradiant Pearl replaces Lunar Item chance", 0.02f, new ConfigDescription("Adds a chance for lunar items to be replaced by an irradiant pearl.", (AcceptableValueBase)null, Array.Empty<object>())); NoPearlsInBazaar = config.Bind<bool>("Main", "No Pearl replacements in the Bazaar between Times", true, new ConfigDescription("Prevents pearls from appearing in the Bazaar to prevent hoarding.", (AcceptableValueBase)null, Array.Empty<object>())); ChildReducedTeleportRange = config.Bind<bool>("Main", "Child: Reduced teleport range", true, new ConfigDescription("Reduces the range children can teleport away.", (AcceptableValueBase)null, Array.Empty<object>())); ChildRemoveInvincibility = config.Bind<bool>("Main", "Child: Remove invincibility", true, new ConfigDescription("Removes the invincibility buff that children get before teleporting.", (AcceptableValueBase)null, Array.Empty<object>())); SimulacrumNonSharedLoot = config.Bind<bool>("Simulacrum", "Non-shared loot", false, new ConfigDescription("(ShareSuite only) Forces the loot dropped at the end of each wave to be non-shared.", (AcceptableValueBase)null, Array.Empty<object>())); SimulacrumLootMaxItemDebt = config.Bind<int>("Simulacrum", "Max loot debt", 2, new ConfigDescription("Prevents greedy players from taking too much of the loot dropped at the end of each wave.", (AcceptableValueBase)null, Array.Empty<object>())); SimulacrumLootSkullTokens = config.Bind<bool>("Simulacrum", "Max loot debt - Skull Tokens", true, new ConfigDescription("Indicate to players how many void potentials they can take by assigning Skull Tokens.", (AcceptableValueBase)null, Array.Empty<object>())); SimulacrumCommencementArtifactDissonanceChance = config.Bind<float>("Simulacrum", "Commencement Artifact of Dissonance Chance", 0.5f, new ConfigDescription("The chance for Artifact of Dissonance to be activated each wave when in the commencement stage to increase enemy variety.", (AcceptableValueBase)null, Array.Empty<object>())); SimulacrumDirectorEnemyPowerBias = config.Bind<float>("Simulacrum", "Director: Enemy Power Bias", 0.5f, new ConfigDescription("Bias towards many,weak enemies (=0) or few,strong enemies (=1). Value between 0 and 1, 0.5 = vanilla.", (AcceptableValueBase)null, Array.Empty<object>())); SimulacrumMaxSquadSize = config.Bind<int>("Simulacrum", "Max squad size", 30, new ConfigDescription("No more than this many enemies shall be spawned at the same time (30 = vanilla).", (AcceptableValueBase)null, Array.Empty<object>())); SimulacrumWavePeriodSecondsFactor = config.Bind<float>("Simulacrum", "Wave Period Seconds Factor", 1f, new ConfigDescription("A factor on how long each wave takes. A value smaller than 1.0 makes the wave go faster, but also with stronger enemies. A value higher than 1.0 makes the wave take longer but the enemies are weaker. (1.0 = vanilla).", (AcceptableValueBase)null, Array.Empty<object>())); SimulacrumFastVoidCrab = config.Bind<bool>("Simulacrum", "Void Crab picks up speed", false, new ConfigDescription("Makes the Void Crab faster the more waves you complete.", (AcceptableValueBase)null, Array.Empty<object>())); ClassicDirectorEnemyPowerBias = config.Bind<float>("Classic", "Director: Enemy Power Bias", 0.5f, new ConfigDescription("Bias towards many,weak enemies (=0) or few,strong enemies (=1). Value between 0 and 1, 0.5 = vanilla.", (AcceptableValueBase)null, Array.Empty<object>())); if (ModCompatibilityInLobbyConfig.enabled) { ModCompatibilityInLobbyConfig.CreateFromBepInExConfigFile(config, "Server-Side Tweaks"); } } } public static class ChatHelper { private const string RedColor = "ff0000"; private const string GreenColor = "32cd32"; private const string SilverColor = "c0c0c0"; public static void PlayerHasTooManyItems(string userName) { //IL_0011: 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_0022: Expected O, but got Unknown string baseToken = "<color=#ff0000>" + userName + " is being greedy!</color>"; Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage { baseToken = baseToken }); } } public class FastSimulacrumVrab { [CompilerGenerated] private static class <>O { public static hook_OnEnter <0>__Travelling_OnEnter; } private static bool enabled; private static AsyncOperationHandle<GameObject> iscInfiniteTowerSafeWard; private static AsyncOperationHandle<Material> matNullifierSafeWardPillarGlow; private static AsyncOperationHandle<Material> matNullifierSafeWardPillarStars; public static void Setup() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) iscInfiniteTowerSafeWard = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/GameModes/InfiniteTowerRun/InfiniteTowerAssets/InfiniteTowerSafeWard.prefab"); matNullifierSafeWardPillarGlow = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/Common/Void/matNullifierSafeWardPillarGlow.mat"); matNullifierSafeWardPillarStars = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/Common/Void/matNullifierSafeWardPillarStars.mat"); } public static void Enable() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown enabled = true; object obj = <>O.<0>__Travelling_OnEnter; if (obj == null) { hook_OnEnter val = Travelling_OnEnter; <>O.<0>__Travelling_OnEnter = val; obj = (object)val; } Travelling.OnEnter += (hook_OnEnter)obj; } public static void Disable() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown enabled = false; object obj = <>O.<0>__Travelling_OnEnter; if (obj == null) { hook_OnEnter val = Travelling_OnEnter; <>O.<0>__Travelling_OnEnter = val; obj = (object)val; } Travelling.OnEnter -= (hook_OnEnter)obj; } private static void Travelling_OnEnter(orig_OnEnter orig, Travelling self) { //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown orig.Invoke(self); if (BepConfig.SimulacrumFastVoidCrab.Value && (Object)(object)Run.instance != (Object)null && ((object)Run.instance).GetType() == typeof(InfiniteTowerRun)) { InfiniteTowerRun val = (InfiniteTowerRun)Run.instance; self.travelSpeed = 5f + (float)val.waveIndex * 0.1f; } if (NetworkServer.active) { List<NodeIndex> list = self.groundNodeGraph.FindNodesInRangeWithFlagConditions(((EntityState)self).transform.position, self.minDistanceToNewLocation, 500f, (HullMask)1, (NodeFlags)2, (NodeFlags)0, false); Util.ShuffleList<NodeIndex>(list, self.rng); self.potentialEndNodes.AddRange(list); } } private static void Travelling_EvaluateNextEndpoint(orig_EvaluateNextEndpoint orig, Travelling self) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Expected O, but got Unknown //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (((object)Run.instance).GetType() == typeof(InfiniteTowerRun)) { InfiniteTowerRun val = (InfiniteTowerRun)Run.instance; GameObject val2 = new GameObject("Corridor"); MeshFilter val3 = val2.AddComponent<MeshFilter>(); MeshRenderer val4 = val2.AddComponent<MeshRenderer>(); CombineInstance[] array = (CombineInstance[])(object)new CombineInstance[self.catmullRomPoints.Count]; int num = 50; for (int i = 0; i < self.catmullRomPoints.Count; i++) { GameObject obj = GameObject.CreatePrimitive((PrimitiveType)2); obj.transform.localScale = new Vector3((float)num, 120f, (float)num); obj.transform.position = self.catmullRomPoints[i]; obj.transform.rotation = Quaternion.identity; MeshFilter component = obj.GetComponent<MeshFilter>(); ((CombineInstance)(ref array[i])).mesh = component.sharedMesh; ((CombineInstance)(ref array[i])).transform = ((Component)component).transform.localToWorldMatrix; Object.Destroy((Object)(object)obj); IZone val5 = CreateSafeZone2(self.catmullRomPoints[i], null); val.fogDamageController.AddSafeZone(val5); } Mesh val6 = new Mesh(); val6.CombineMeshes(array, true, true); val3.mesh = val6; ((Renderer)val4).castShadows = true; ((Renderer)val4).motionVectors = true; ((Renderer)val4).useLightProbes = true; ((Renderer)val4).bounds = new Bounds(Vector3.zero, new Vector3(2f, 120f, 2f)); ((Renderer)val4).localBounds = new Bounds(Vector3.zero, new Vector3(1f, 1f, 1f)); ((Renderer)val4).enabled = true; ((Renderer)val4).shadowCastingMode = (ShadowCastingMode)1; ((Renderer)val4).receiveShadows = true; ((Renderer)val4).forceRenderingOff = false; ((Renderer)val4).staticShadowCaster = false; ((Renderer)val4).motionVectorGenerationMode = (MotionVectorGenerationMode)1; ((Renderer)val4).lightProbeUsage = (LightProbeUsage)1; ((Renderer)val4).reflectionProbeUsage = (ReflectionProbeUsage)1; ((Renderer)val4).renderingLayerMask = uint.MaxValue; ((Renderer)val4).rendererPriority = 0; ((Renderer)val4).rayTracingMode = (RayTracingMode)2; ((Renderer)val4).sortingLayerName = "Default"; ((Renderer)val4).sortingLayerID = 0; ((Renderer)val4).sortingOrder = 0; ((Renderer)val4).allowOcclusionWhenDynamic = true; ((Renderer)val4).lightmapIndex = -1; ((Renderer)val4).realtimeLightmapIndex = -1; ((Renderer)val4).lightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f); ((Renderer)val4).realtimeLightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f); Material sharedMaterial = (((Renderer)val4).material = matNullifierSafeWardPillarStars.WaitForCompletion()); ((Renderer)val4).sharedMaterial = sharedMaterial; NetworkServer.Spawn(val2); } } private static Mesh CreateCylinderMesh() { GameObject obj = GameObject.CreatePrimitive((PrimitiveType)2); Mesh mesh = obj.GetComponent<MeshFilter>().mesh; Object.Destroy((Object)(object)obj); return mesh; } private static GameObject CreateCylinder() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Expected O, but got Unknown GameObject val = new GameObject("IndicatorCylinder"); val.transform.position = new Vector3(0f, 0f, 0f); val.transform.rotation = Quaternion.Euler(0f, 0f, 180f); val.transform.localScale = new Vector3(2f, 120f, 2f); MeshFilter obj = val.AddComponent<MeshFilter>(); obj.sharedMesh = CreateCylinderMesh(); obj.mesh = obj.sharedMesh; MeshRenderer obj2 = val.AddComponent<MeshRenderer>(); ((Renderer)obj2).castShadows = true; ((Renderer)obj2).motionVectors = true; ((Renderer)obj2).useLightProbes = true; ((Renderer)obj2).bounds = new Bounds(Vector3.zero, new Vector3(2f, 120f, 2f)); ((Renderer)obj2).localBounds = new Bounds(Vector3.zero, new Vector3(1f, 1f, 1f)); ((Renderer)obj2).enabled = true; ((Renderer)obj2).shadowCastingMode = (ShadowCastingMode)1; ((Renderer)obj2).receiveShadows = true; ((Renderer)obj2).forceRenderingOff = false; ((Renderer)obj2).staticShadowCaster = false; ((Renderer)obj2).motionVectorGenerationMode = (MotionVectorGenerationMode)1; ((Renderer)obj2).lightProbeUsage = (LightProbeUsage)1; ((Renderer)obj2).reflectionProbeUsage = (ReflectionProbeUsage)1; ((Renderer)obj2).renderingLayerMask = uint.MaxValue; ((Renderer)obj2).rendererPriority = 0; ((Renderer)obj2).rayTracingMode = (RayTracingMode)2; ((Renderer)obj2).sortingLayerName = "Default"; ((Renderer)obj2).sortingLayerID = 0; ((Renderer)obj2).sortingOrder = 0; ((Renderer)obj2).allowOcclusionWhenDynamic = true; ((Renderer)obj2).lightmapIndex = -1; ((Renderer)obj2).realtimeLightmapIndex = -1; ((Renderer)obj2).lightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f); ((Renderer)obj2).realtimeLightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f); Material sharedMaterial = (((Renderer)obj2).material = matNullifierSafeWardPillarStars.WaitForCompletion()); ((Renderer)obj2).sharedMaterial = sharedMaterial; val.transform.position = Vector3.zero; return val; } private static GameObject CreateSphere() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Expected O, but got Unknown GameObject val = new GameObject("IndicatorSphere"); Transform transform = val.transform; transform.position = new Vector3(0f, 0f, 0f); transform.rotation = Quaternion.Euler(0f, 0f, 0f); transform.localScale = new Vector3(2f, 2f, 2f); val.AddComponent<MeshFilter>().sharedMesh = CreateSphereMesh(); MeshRenderer obj = val.AddComponent<MeshRenderer>(); ((Renderer)obj).castShadows = true; ((Renderer)obj).motionVectors = true; ((Renderer)obj).useLightProbes = true; ((Renderer)obj).bounds = new Bounds(Vector3.zero, new Vector3(2f, 2f, 2f)); ((Renderer)obj).localBounds = new Bounds(Vector3.zero, new Vector3(1f, 1f, 1f)); ((Renderer)obj).enabled = true; ((Renderer)obj).shadowCastingMode = (ShadowCastingMode)1; ((Renderer)obj).receiveShadows = true; ((Renderer)obj).forceRenderingOff = false; ((Renderer)obj).staticShadowCaster = false; ((Renderer)obj).motionVectorGenerationMode = (MotionVectorGenerationMode)1; ((Renderer)obj).lightProbeUsage = (LightProbeUsage)1; ((Renderer)obj).reflectionProbeUsage = (ReflectionProbeUsage)1; ((Renderer)obj).renderingLayerMask = uint.MaxValue; ((Renderer)obj).rendererPriority = 0; ((Renderer)obj).rayTracingMode = (RayTracingMode)2; ((Renderer)obj).sortingLayerName = "Default"; ((Renderer)obj).sortingLayerID = 0; ((Renderer)obj).sortingOrder = 0; ((Renderer)obj).allowOcclusionWhenDynamic = true; ((Renderer)obj).lightmapIndex = -1; ((Renderer)obj).realtimeLightmapIndex = -1; ((Renderer)obj).lightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f); ((Renderer)obj).realtimeLightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f); Material sharedMaterial = (((Renderer)obj).material = matNullifierSafeWardPillarGlow.WaitForCompletion()); ((Renderer)obj).sharedMaterial = sharedMaterial; ((Renderer)obj).allowOcclusionWhenDynamic = true; return val; } private static Mesh CreateSphereMesh() { GameObject obj = GameObject.CreatePrimitive((PrimitiveType)0); Mesh mesh = obj.GetComponent<MeshFilter>().mesh; Object.Destroy((Object)(object)obj); return mesh; } private static IZone CreateSafeZone2(Vector3 position, Transform rangeIndicator) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_005a: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject(); SphereZone obj = val.AddComponent<SphereZone>(); obj.radius = 15f; obj.rangeIndicator = rangeIndicator; obj.indicatorSmoothTime = 0.2f; obj.isInverted = false; obj.rangeIndicatorScaleVelocity = 0f; ((Behaviour)obj).enabled = true; ((MonoBehaviour)obj).useGUILayout = true; obj.Networkradius = 15f; val.transform.position = position; NetworkServer.Spawn(val); return (IZone)(object)obj; } private static IZone CreateSafeZone(Vector3 position) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) GameObject obj = iscInfiniteTowerSafeWard.WaitForCompletion(); GameObject val = Object.Instantiate<GameObject>(obj, position, Quaternion.identity); HoldoutZoneController component = obj.GetComponent<HoldoutZoneController>(); component.holdoutZoneShape = (HoldoutZoneShape)1; NetworkServer.Spawn(val); return (IZone)(object)component; } } public class FastSimulacrumVrabObsolete { [CompilerGenerated] private static class <>O { public static hook_EvaluateNextEndpoint <0>__Travelling_EvaluateNextEndpoint; } private static bool enabled; private static AsyncOperationHandle<GameObject> iscInfiniteTowerSafeWard; private static AsyncOperationHandle<Material> matNullifierSafeWardPillarGlow; private static AsyncOperationHandle<Material> matNullifierSafeWardPillarStars; public static void Setup() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) iscInfiniteTowerSafeWard = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/GameModes/InfiniteTowerRun/InfiniteTowerAssets/InfiniteTowerSafeWard.prefab"); matNullifierSafeWardPillarGlow = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/Common/Void/matNullifierSafeWardPillarGlow.mat"); matNullifierSafeWardPillarStars = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/Common/Void/matNullifierSafeWardPillarStars.mat"); } public static void Enable() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown enabled = true; object obj = <>O.<0>__Travelling_EvaluateNextEndpoint; if (obj == null) { hook_EvaluateNextEndpoint val = Travelling_EvaluateNextEndpoint; <>O.<0>__Travelling_EvaluateNextEndpoint = val; obj = (object)val; } Travelling.EvaluateNextEndpoint += (hook_EvaluateNextEndpoint)obj; } public static void Disable() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown enabled = false; object obj = <>O.<0>__Travelling_EvaluateNextEndpoint; if (obj == null) { hook_EvaluateNextEndpoint val = Travelling_EvaluateNextEndpoint; <>O.<0>__Travelling_EvaluateNextEndpoint = val; obj = (object)val; } Travelling.EvaluateNextEndpoint -= (hook_EvaluateNextEndpoint)obj; } private static void Travelling_EvaluateNextEndpoint(orig_EvaluateNextEndpoint orig, Travelling self) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Expected O, but got Unknown //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (((object)Run.instance).GetType() == typeof(InfiniteTowerRun)) { InfiniteTowerRun val = (InfiniteTowerRun)Run.instance; GameObject val2 = new GameObject("Corridor"); MeshFilter val3 = val2.AddComponent<MeshFilter>(); MeshRenderer val4 = val2.AddComponent<MeshRenderer>(); CombineInstance[] array = (CombineInstance[])(object)new CombineInstance[self.catmullRomPoints.Count]; int num = 50; for (int i = 0; i < self.catmullRomPoints.Count; i++) { GameObject obj = GameObject.CreatePrimitive((PrimitiveType)2); obj.transform.localScale = new Vector3((float)num, 120f, (float)num); obj.transform.position = self.catmullRomPoints[i]; obj.transform.rotation = Quaternion.identity; MeshFilter component = obj.GetComponent<MeshFilter>(); ((CombineInstance)(ref array[i])).mesh = component.sharedMesh; ((CombineInstance)(ref array[i])).transform = ((Component)component).transform.localToWorldMatrix; Object.Destroy((Object)(object)obj); IZone val5 = CreateSafeZone2(self.catmullRomPoints[i], null); val.fogDamageController.AddSafeZone(val5); } Mesh val6 = new Mesh(); val6.CombineMeshes(array, true, true); val3.mesh = val6; ((Renderer)val4).castShadows = true; ((Renderer)val4).motionVectors = true; ((Renderer)val4).useLightProbes = true; ((Renderer)val4).bounds = new Bounds(Vector3.zero, new Vector3(2f, 120f, 2f)); ((Renderer)val4).localBounds = new Bounds(Vector3.zero, new Vector3(1f, 1f, 1f)); ((Renderer)val4).enabled = true; ((Renderer)val4).shadowCastingMode = (ShadowCastingMode)1; ((Renderer)val4).receiveShadows = true; ((Renderer)val4).forceRenderingOff = false; ((Renderer)val4).staticShadowCaster = false; ((Renderer)val4).motionVectorGenerationMode = (MotionVectorGenerationMode)1; ((Renderer)val4).lightProbeUsage = (LightProbeUsage)1; ((Renderer)val4).reflectionProbeUsage = (ReflectionProbeUsage)1; ((Renderer)val4).renderingLayerMask = uint.MaxValue; ((Renderer)val4).rendererPriority = 0; ((Renderer)val4).rayTracingMode = (RayTracingMode)2; ((Renderer)val4).sortingLayerName = "Default"; ((Renderer)val4).sortingLayerID = 0; ((Renderer)val4).sortingOrder = 0; ((Renderer)val4).allowOcclusionWhenDynamic = true; ((Renderer)val4).lightmapIndex = -1; ((Renderer)val4).realtimeLightmapIndex = -1; ((Renderer)val4).lightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f); ((Renderer)val4).realtimeLightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f); Material sharedMaterial = (((Renderer)val4).material = matNullifierSafeWardPillarStars.WaitForCompletion()); ((Renderer)val4).sharedMaterial = sharedMaterial; NetworkServer.Spawn(val2); } } private static Mesh CreateCylinderMesh() { GameObject obj = GameObject.CreatePrimitive((PrimitiveType)2); Mesh mesh = obj.GetComponent<MeshFilter>().mesh; Object.Destroy((Object)(object)obj); return mesh; } private static GameObject CreateCylinder() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Expected O, but got Unknown GameObject val = new GameObject("IndicatorCylinder"); val.transform.position = new Vector3(0f, 0f, 0f); val.transform.rotation = Quaternion.Euler(0f, 0f, 180f); val.transform.localScale = new Vector3(2f, 120f, 2f); MeshFilter obj = val.AddComponent<MeshFilter>(); obj.sharedMesh = CreateCylinderMesh(); obj.mesh = obj.sharedMesh; MeshRenderer obj2 = val.AddComponent<MeshRenderer>(); ((Renderer)obj2).castShadows = true; ((Renderer)obj2).motionVectors = true; ((Renderer)obj2).useLightProbes = true; ((Renderer)obj2).bounds = new Bounds(Vector3.zero, new Vector3(2f, 120f, 2f)); ((Renderer)obj2).localBounds = new Bounds(Vector3.zero, new Vector3(1f, 1f, 1f)); ((Renderer)obj2).enabled = true; ((Renderer)obj2).shadowCastingMode = (ShadowCastingMode)1; ((Renderer)obj2).receiveShadows = true; ((Renderer)obj2).forceRenderingOff = false; ((Renderer)obj2).staticShadowCaster = false; ((Renderer)obj2).motionVectorGenerationMode = (MotionVectorGenerationMode)1; ((Renderer)obj2).lightProbeUsage = (LightProbeUsage)1; ((Renderer)obj2).reflectionProbeUsage = (ReflectionProbeUsage)1; ((Renderer)obj2).renderingLayerMask = uint.MaxValue; ((Renderer)obj2).rendererPriority = 0; ((Renderer)obj2).rayTracingMode = (RayTracingMode)2; ((Renderer)obj2).sortingLayerName = "Default"; ((Renderer)obj2).sortingLayerID = 0; ((Renderer)obj2).sortingOrder = 0; ((Renderer)obj2).allowOcclusionWhenDynamic = true; ((Renderer)obj2).lightmapIndex = -1; ((Renderer)obj2).realtimeLightmapIndex = -1; ((Renderer)obj2).lightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f); ((Renderer)obj2).realtimeLightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f); Material sharedMaterial = (((Renderer)obj2).material = matNullifierSafeWardPillarStars.WaitForCompletion()); ((Renderer)obj2).sharedMaterial = sharedMaterial; val.transform.position = Vector3.zero; return val; } private static GameObject CreateSphere() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Expected O, but got Unknown GameObject val = new GameObject("IndicatorSphere"); Transform transform = val.transform; transform.position = new Vector3(0f, 0f, 0f); transform.rotation = Quaternion.Euler(0f, 0f, 0f); transform.localScale = new Vector3(2f, 2f, 2f); val.AddComponent<MeshFilter>().sharedMesh = CreateSphereMesh(); MeshRenderer obj = val.AddComponent<MeshRenderer>(); ((Renderer)obj).castShadows = true; ((Renderer)obj).motionVectors = true; ((Renderer)obj).useLightProbes = true; ((Renderer)obj).bounds = new Bounds(Vector3.zero, new Vector3(2f, 2f, 2f)); ((Renderer)obj).localBounds = new Bounds(Vector3.zero, new Vector3(1f, 1f, 1f)); ((Renderer)obj).enabled = true; ((Renderer)obj).shadowCastingMode = (ShadowCastingMode)1; ((Renderer)obj).receiveShadows = true; ((Renderer)obj).forceRenderingOff = false; ((Renderer)obj).staticShadowCaster = false; ((Renderer)obj).motionVectorGenerationMode = (MotionVectorGenerationMode)1; ((Renderer)obj).lightProbeUsage = (LightProbeUsage)1; ((Renderer)obj).reflectionProbeUsage = (ReflectionProbeUsage)1; ((Renderer)obj).renderingLayerMask = uint.MaxValue; ((Renderer)obj).rendererPriority = 0; ((Renderer)obj).rayTracingMode = (RayTracingMode)2; ((Renderer)obj).sortingLayerName = "Default"; ((Renderer)obj).sortingLayerID = 0; ((Renderer)obj).sortingOrder = 0; ((Renderer)obj).allowOcclusionWhenDynamic = true; ((Renderer)obj).lightmapIndex = -1; ((Renderer)obj).realtimeLightmapIndex = -1; ((Renderer)obj).lightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f); ((Renderer)obj).realtimeLightmapScaleOffset = new Vector4(1f, 1f, 0f, 0f); Material sharedMaterial = (((Renderer)obj).material = matNullifierSafeWardPillarGlow.WaitForCompletion()); ((Renderer)obj).sharedMaterial = sharedMaterial; ((Renderer)obj).allowOcclusionWhenDynamic = true; return val; } private static Mesh CreateSphereMesh() { GameObject obj = GameObject.CreatePrimitive((PrimitiveType)0); Mesh mesh = obj.GetComponent<MeshFilter>().mesh; Object.Destroy((Object)(object)obj); return mesh; } private static IZone CreateSafeZone2(Vector3 position, Transform rangeIndicator) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_005a: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject(); SphereZone obj = val.AddComponent<SphereZone>(); obj.radius = 15f; obj.rangeIndicator = rangeIndicator; obj.indicatorSmoothTime = 0.2f; obj.isInverted = false; obj.rangeIndicatorScaleVelocity = 0f; ((Behaviour)obj).enabled = true; ((MonoBehaviour)obj).useGUILayout = true; obj.Networkradius = 15f; val.transform.position = position; NetworkServer.Spawn(val); return (IZone)(object)obj; } private static IZone CreateSafeZone(Vector3 position) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) GameObject obj = iscInfiniteTowerSafeWard.WaitForCompletion(); GameObject val = Object.Instantiate<GameObject>(obj, position, Quaternion.identity); HoldoutZoneController component = obj.GetComponent<HoldoutZoneController>(); component.holdoutZoneShape = (HoldoutZoneShape)1; NetworkServer.Spawn(val); return (IZone)(object)component; } } internal static class Log { internal static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void LogDebug(object data) { _logSource.LogDebug(data); } internal static void LogError(object data) { _logSource.LogError(data); } internal static void LogFatal(object data) { _logSource.LogFatal(data); } internal static void LogInfo(object data) { _logSource.LogInfo(data); } internal static void LogMessage(object data) { _logSource.LogMessage(data); } internal static void LogWarning(object data) { _logSource.LogWarning(data); } } public static class ModCompatibilityInLobbyConfig { private static bool? _enabled; public static bool enabled { get { if (!_enabled.HasValue) { _enabled = Chainloader.PluginInfos.ContainsKey("com.KingEnderBrine.InLobbyConfig"); } return _enabled.Value; } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] public static void CreateFromBepInExConfigFile(ConfigFile config, string displayName) { ModConfigCatalog.Add(ConfigFieldUtilities.CreateFromBepInExConfigFile(config, displayName)); } } public static class ModCompatibilityShareSuite { private static bool? _enabled; public static bool enabled { get { if (!_enabled.HasValue) { _enabled = Chainloader.PluginInfos.ContainsKey("com.funkfrog_sipondo.sharesuite"); } return _enabled.Value; } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] public static void AddPickupEventHandler(Func<GenericPickupController, CharacterBody, bool> f) { ItemSharingHooks.AdditionalPickupValidityChecks += f; } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] public static void RemovePickupEventHandler(Func<GenericPickupController, CharacterBody, bool> f) { ItemSharingHooks.AdditionalPickupValidityChecks -= f; } } public class NonShareableItem : MonoBehaviour { } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("Def.ServerSideTweaks", "ServerSideTweaks", "2.2.0")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class ServerSideTweaks : BaseUnityPlugin { public static ServerSideTweaks instance; public static float directorEnemyPowerBiasOverride = -1f; public static List<EquipmentIndex> disableEquipments = new List<EquipmentIndex>(); public static List<PickupIndex> availableEquipmentDropList_Saved = new List<PickupIndex>(); public static List<PickupIndex> availableLunarItemDropList_Saved = new List<PickupIndex>(); public static List<PickupIndex> availableLunarEquipmentDropList_Saved = new List<PickupIndex>(); public static SimulacrumLootTweaks simulacrumLootTweaks = new SimulacrumLootTweaks(); public const string PluginGUID = "Def.ServerSideTweaks"; public const string PluginAuthor = "Def"; public const string PluginName = "ServerSideTweaks"; public const string PluginVersion = "2.2.0"; public static PluginInfo PInfo { get; private set; } public void Awake() { PInfo = ((BaseUnityPlugin)this).Info; instance = this; Log.Init(((BaseUnityPlugin)this).Logger); BepConfig.Init(); BepConfig.ChildReducedTeleportRange.SettingChanged += ChildReducedTeleportRange_SettingChanged; ChildReducedTeleportRange_SettingChanged(null, null); FastSimulacrumVrab.Setup(); } private void ChildReducedTeleportRange_SettingChanged(object sender, EventArgs e) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown if (BepConfig.ChildReducedTeleportRange.Value) { FrolicAway.TeleportAway += new Manipulator(FrolicAway_TeleportAway); } else { FrolicAway.TeleportAway -= new Manipulator(FrolicAway_TeleportAway); } } private void OnEnable() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Expected O, but got Unknown //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Expected O, but got Unknown //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Expected O, but got Unknown //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Expected O, but got Unknown Run.Start += new hook_Start(Run_Start); InfiniteTowerRun.OnWaveAllEnemiesDefeatedServer += new hook_OnWaveAllEnemiesDefeatedServer(InfiniteTowerRun_OnWaveAllEnemiesDefeatedServer); InfiniteTowerRun.AdvanceWave += new hook_AdvanceWave(InfiniteTowerRun_AdvanceWave); CombatDirector.AttemptSpawnOnTarget += new Manipulator(CombatDirector_AttemptSpawnOnTarget); Run.FixedUpdate += new hook_FixedUpdate(Run_FixedUpdate); RandomlyLunarUtils.CheckForLunarReplacementUniqueArray += new hook_CheckForLunarReplacementUniqueArray(RandomlyLunarUtils_CheckForLunarReplacementUniqueArray); RandomlyLunarUtils.CheckForLunarReplacement_UniquePickup_Xoroshiro128Plus += new hook_CheckForLunarReplacement_UniquePickup_Xoroshiro128Plus(RandomlyLunarUtils_CheckForLunarReplacement_UniquePickup_Xoroshiro128Plus); InfiniteTowerWaveController.Initialize += new hook_Initialize(InfiniteTowerWaveController_Initialize); ChildMonsterController.RegisterTeleport += new hook_RegisterTeleport(ChildMonsterController_RegisterTeleport); simulacrumLootTweaks.Hook(); FastSimulacrumVrab.Enable(); } private void OnDisable() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Expected O, but got Unknown //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Expected O, but got Unknown //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Expected O, but got Unknown //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Expected O, but got Unknown Run.Start -= new hook_Start(Run_Start); InfiniteTowerRun.OnWaveAllEnemiesDefeatedServer -= new hook_OnWaveAllEnemiesDefeatedServer(InfiniteTowerRun_OnWaveAllEnemiesDefeatedServer); InfiniteTowerRun.AdvanceWave -= new hook_AdvanceWave(InfiniteTowerRun_AdvanceWave); CombatDirector.AttemptSpawnOnTarget -= new Manipulator(CombatDirector_AttemptSpawnOnTarget); Run.FixedUpdate -= new hook_FixedUpdate(Run_FixedUpdate); RandomlyLunarUtils.CheckForLunarReplacement_UniquePickup_Xoroshiro128Plus -= new hook_CheckForLunarReplacement_UniquePickup_Xoroshiro128Plus(RandomlyLunarUtils_CheckForLunarReplacement_UniquePickup_Xoroshiro128Plus); RandomlyLunarUtils.CheckForLunarReplacementUniqueArray -= new hook_CheckForLunarReplacementUniqueArray(RandomlyLunarUtils_CheckForLunarReplacementUniqueArray); InfiniteTowerWaveController.Initialize -= new hook_Initialize(InfiniteTowerWaveController_Initialize); ChildMonsterController.RegisterTeleport -= new hook_RegisterTeleport(ChildMonsterController_RegisterTeleport); simulacrumLootTweaks.Unhook(); FastSimulacrumVrab.Disable(); } private void ChildMonsterController_RegisterTeleport(orig_RegisterTeleport orig, ChildMonsterController self, bool addInvincibility) { if (BepConfig.Enabled.Value && BepConfig.ChildRemoveInvincibility.Value) { orig.Invoke(self, false); } else { orig.Invoke(self, addInvincibility); } } private void FrolicAway_TeleportAway(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); val.GotoNext(new Func<Instruction, bool>[2] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 100f), (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 200f) }); val.Remove(); val.Remove(); val.Emit(OpCodes.Ldc_R4, 50f); val.Emit(OpCodes.Ldc_R4, 100f); } private void InfiniteTowerWaveController_Initialize(orig_Initialize orig, InfiniteTowerWaveController self, int waveIndex, Inventory enemyInventory, GameObject spawnTarget) { if (BepConfig.Enabled.Value) { self.maxSquadSize = BepConfig.SimulacrumMaxSquadSize.Value; } if (NetworkServer.active && BepConfig.Enabled.Value) { self.wavePeriodSeconds *= BepConfig.SimulacrumWavePeriodSecondsFactor.Value; } orig.Invoke(self, waveIndex, enemyInventory, spawnTarget); } private void Run_Start(orig_Start orig, Run self) { simulacrumLootTweaks.RunStart(); ResetOverridePowerBias(); orig.Invoke(self); } public static void SetOverridePowerBias(float powerBias) { directorEnemyPowerBiasOverride = powerBias; } public static float GetCurrentPowerBias() { if (((object)Run.instance).GetType() == typeof(InfiniteTowerRun) && BepConfig.Enabled.Value) { return BepConfig.SimulacrumDirectorEnemyPowerBias.Value; } if (BepConfig.Enabled.Value) { return BepConfig.ClassicDirectorEnemyPowerBias.Value; } return 0.5f; } public static void ResetOverridePowerBias() { directorEnemyPowerBiasOverride = -1f; } private void Run_FixedUpdate(orig_FixedUpdate orig, Run self) { orig.Invoke(self); _ = NetworkServer.active; } private bool SkipWithPowerBias(float costMultipliedByMaximumNumberToSpawnBeforeSkipping, CombatDirector combatDirector, float powerBias) { if (costMultipliedByMaximumNumberToSpawnBeforeSkipping / (float)combatDirector.maximumNumberToSpawnBeforeSkipping > (float)combatDirector.mostExpensiveMonsterCostInDeck * (0.5f + powerBias) * (0.5f + powerBias) * (0.5f + powerBias)) { float num = Math.Max(0f, 0.1f - powerBias); if (2f * (0.5f - powerBias) - num > RoR2Application.rng.nextNormalizedFloat) { return true; } } return costMultipliedByMaximumNumberToSpawnBeforeSkipping * (1.5f - powerBias) * (1.5f - powerBias) < combatDirector.monsterCredit; } private void CombatDirector_AttemptSpawnOnTarget(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0139: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); ILLabel val2 = val.DefineLabel(); val.GotoNext(new Func<Instruction, bool>[7] { (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 1), (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdfld<CombatDirector>(x, "maximumNumberToSpawnBeforeSkipping"), (Instruction x) => ILPatternMatchingExt.MatchMul(x), (Instruction x) => ILPatternMatchingExt.MatchConvR4(x), (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdfld<CombatDirector>(x, "monsterCredit") }); val.Index += 6; val.Remove(); val.Remove(); val.EmitDelegate<Func<float, CombatDirector, bool>>((Func<float, CombatDirector, bool>)delegate(float costMultipliedByMaximumNumberToSpawnBeforeSkipping, CombatDirector combatDirector) { if (directorEnemyPowerBiasOverride >= 0f) { return SkipWithPowerBias(costMultipliedByMaximumNumberToSpawnBeforeSkipping, combatDirector, directorEnemyPowerBiasOverride); } if (((object)Run.instance).GetType() == typeof(InfiniteTowerRun) && BepConfig.Enabled.Value) { return SkipWithPowerBias(costMultipliedByMaximumNumberToSpawnBeforeSkipping, combatDirector, BepConfig.SimulacrumDirectorEnemyPowerBias.Value); } return BepConfig.Enabled.Value ? SkipWithPowerBias(costMultipliedByMaximumNumberToSpawnBeforeSkipping, combatDirector, BepConfig.ClassicDirectorEnemyPowerBias.Value) : (costMultipliedByMaximumNumberToSpawnBeforeSkipping < combatDirector.monsterCredit); }); val.Emit(OpCodes.Brfalse, (object)val2); val.Index += 2; val.GotoNext(new Func<Instruction, bool>[4] { (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdfld<CombatDirector>(x, "currentMonsterCard"), (Instruction x) => ILPatternMatchingExt.MatchCallvirt<DirectorCard>(x, "GetSpawnCard"), (Instruction x) => ILPatternMatchingExt.MatchStloc(x, 4) }); val.MarkLabel(val2); } private void InfiniteTowerRun_OnWaveAllEnemiesDefeatedServer(orig_OnWaveAllEnemiesDefeatedServer orig, InfiniteTowerRun self, InfiniteTowerWaveController wc) { orig.Invoke(self, wc); if (BepConfig.Enabled.Value && NetworkServer.active && !(BepConfig.SimulacrumCommencementArtifactDissonanceChance.Value <= 0f) && IsCurrentMapCommencment()) { RunArtifactManager.instance.SetArtifactEnabledServer(Artifacts.MixEnemy, false); } } private void InfiniteTowerRun_AdvanceWave(orig_AdvanceWave orig, InfiniteTowerRun self) { orig.Invoke(self); if (BepConfig.Enabled.Value && NetworkServer.active && !(BepConfig.SimulacrumCommencementArtifactDissonanceChance.Value <= 0f) && IsCurrentMapCommencment() && BepConfig.SimulacrumCommencementArtifactDissonanceChance.Value > RoR2Application.rng.nextNormalizedFloat) { RunArtifactManager.instance.SetArtifactEnabledServer(Artifacts.MixEnemy, true); } } private bool IsCurrentMapInBazaar() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) Scene activeScene = SceneManager.GetActiveScene(); return ((Scene)(ref activeScene)).name == "bazaar"; } private bool IsCurrentMapCommencment() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) Scene activeScene = SceneManager.GetActiveScene(); if (!(((Scene)(ref activeScene)).name == "moon")) { activeScene = SceneManager.GetActiveScene(); if (!(((Scene)(ref activeScene)).name == "moon2")) { activeScene = SceneManager.GetActiveScene(); return ((Scene)(ref activeScene)).name == "itmoon"; } } return true; } private UniquePickup RandomlyLunarUtils_CheckForLunarReplacement_UniquePickup_Xoroshiro128Plus(orig_CheckForLunarReplacement_UniquePickup_Xoroshiro128Plus orig, UniquePickup uniquePickup, Xoroshiro128Plus rng) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: 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_00a1: Unknown result type (might be due to invalid IL or missing references) uniquePickup = orig.Invoke(uniquePickup, rng); if (!BepConfig.Enabled.Value || ((UniquePickup)(ref uniquePickup)).Equals(UniquePickup.none)) { return uniquePickup; } PickupDef pickupDef = PickupCatalog.GetPickupDef(uniquePickup.pickupIndex); if (pickupDef != null && pickupDef.isLunar && (!BepConfig.NoPearlsInBazaar.Value || !IsCurrentMapInBazaar())) { float nextNormalizedFloat = rng.nextNormalizedFloat; if (nextNormalizedFloat < BepConfig.IrradiantPearlReplacesLunarItemChance.Value) { ((UniquePickup)(ref uniquePickup))..ctor(PickupCatalog.FindPickupIndex(ItemCatalog.FindItemIndex("ShinyPearl"))); } else if (nextNormalizedFloat < BepConfig.IrradiantPearlReplacesLunarItemChance.Value + BepConfig.PearlReplacesLunarItemChance.Value) { ((UniquePickup)(ref uniquePickup))..ctor(PickupCatalog.FindPickupIndex(ItemCatalog.FindItemIndex("Pearl"))); } return uniquePickup; } return uniquePickup; } private void RandomlyLunarUtils_CheckForLunarReplacementUniqueArray(orig_CheckForLunarReplacementUniqueArray orig, PickupIndex[] pickupIndices, Xoroshiro128Plus rng) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(pickupIndices, rng); if (!BepConfig.Enabled.Value) { return; } for (int i = 0; i < pickupIndices.Length; i++) { PickupDef pickupDef = PickupCatalog.GetPickupDef(pickupIndices[i]); if (pickupDef != null && pickupDef.isLunar && (!BepConfig.NoPearlsInBazaar.Value || !IsCurrentMapInBazaar())) { float nextNormalizedFloat = rng.nextNormalizedFloat; if (nextNormalizedFloat < BepConfig.IrradiantPearlReplacesLunarItemChance.Value) { pickupIndices[i] = PickupCatalog.FindPickupIndex(ItemCatalog.FindItemIndex("ShinyPearl")); } else if (nextNormalizedFloat < BepConfig.IrradiantPearlReplacesLunarItemChance.Value + BepConfig.PearlReplacesLunarItemChance.Value) { pickupIndices[i] = PickupCatalog.FindPickupIndex(ItemCatalog.FindItemIndex("Pearl")); } } } } } public class SimulacrumLootTweaks { public GameObject mostRecentlyCreatedPickup; public float totalItemRewardCount; private bool comingFromInfiniteTowerWaveController_DropRewards; public Dictionary<PlayerCharacterMasterController, float> usersItemCredit = new Dictionary<PlayerCharacterMasterController, float>(); public void RunStart() { mostRecentlyCreatedPickup = null; totalItemRewardCount = 0f; usersItemCredit.Clear(); } public void Hook() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Expected O, but got Unknown //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Expected O, but got Unknown //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Expected O, but got Unknown //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Expected O, but got Unknown InfiniteTowerWaveController.DropRewards += new hook_DropRewards(InfiniteTowerWaveController_DropRewards); PickupDropletController.CreatePickupDroplet_CreatePickupInfo_Vector3_Vector3 += new Manipulator(PickupDropletController_CreatePickupDroplet_CreatePickupInfo_Vector3_Vector3); PickupDropletController.CreatePickup += new hook_CreatePickup(PickupDropletController_CreatePickup); PickupDropletController.CreateCommandCube += new Manipulator(PickupDropletController_CreateCommandCube); GenericPickupController.CreatePickup += new Manipulator(GenericPickupController_CreatePickup); PickupPickerController.CreatePickup_UniquePickup += new hook_CreatePickup_UniquePickup(PickupPickerController_CreatePickup_UniquePickup); GenericPickupController.OnInteractionBegin += new hook_OnInteractionBegin(GenericPickupController_OnInteractionBegin); PickupPickerController.OnInteractionBegin += new hook_OnInteractionBegin(PickupPickerController_OnInteractionBegin); GenericPickupController.AttemptGrant += new hook_AttemptGrant(GenericPickupController_AttemptGrant); if (ModCompatibilityShareSuite.enabled) { ModCompatibilityShareSuite.AddPickupEventHandler(NonShareableItemCheck); } } public void Unhook() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Expected O, but got Unknown //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Expected O, but got Unknown //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Expected O, but got Unknown //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown InfiniteTowerWaveController.DropRewards -= new hook_DropRewards(InfiniteTowerWaveController_DropRewards); PickupDropletController.CreatePickupDroplet_CreatePickupInfo_Vector3_Vector3 -= new Manipulator(PickupDropletController_CreatePickupDroplet_CreatePickupInfo_Vector3_Vector3); PickupDropletController.CreatePickup -= new hook_CreatePickup(PickupDropletController_CreatePickup); GenericPickupController.CreatePickup -= new Manipulator(GenericPickupController_CreatePickup); PickupPickerController.CreatePickup_UniquePickup -= new hook_CreatePickup_UniquePickup(PickupPickerController_CreatePickup_UniquePickup); GenericPickupController.OnInteractionBegin -= new hook_OnInteractionBegin(GenericPickupController_OnInteractionBegin); PickupPickerController.OnInteractionBegin -= new hook_OnInteractionBegin(PickupPickerController_OnInteractionBegin); GenericPickupController.AttemptGrant -= new hook_AttemptGrant(GenericPickupController_AttemptGrant); if (ModCompatibilityShareSuite.enabled) { ModCompatibilityShareSuite.RemovePickupEventHandler(NonShareableItemCheck); } } private void InfiniteTowerWaveController_DropRewards(orig_DropRewards orig, InfiniteTowerWaveController self) { try { comingFromInfiniteTowerWaveController_DropRewards = true; orig.Invoke(self); } finally { comingFromInfiniteTowerWaveController_DropRewards = false; } if (!BepConfig.Enabled.Value || !NetworkServer.active) { return; } float num = 0f; int num2 = 0; foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances) { if (instance.isConnected) { num2++; } else if (usersItemCredit.ContainsKey(instance)) { num += Math.Max(0f, usersItemCredit[instance]); usersItemCredit[instance] = 0f; Inventory inventory = instance.master.inventory; int value = BepConfig.SimulacrumLootMaxItemDebt.Value; CharacterBody body = instance.body; SetSkullCounterCount(inventory, value, (body != null) ? ((Component)body).gameObject : null); } } foreach (PlayerCharacterMasterController instance2 in PlayerCharacterMasterController.instances) { if (instance2.isConnected) { if (usersItemCredit.ContainsKey(instance2)) { usersItemCredit[instance2] += totalItemRewardCount / (float)num2; } else { usersItemCredit.Add(instance2, totalItemRewardCount / (float)num2); } usersItemCredit[instance2] += num / Math.Max(1f, num2); if (num2 == 1) { SetSkullCounterCount(instance2.master.inventory, 0, null); } else { Inventory inventory2 = instance2.master.inventory; int count = (int)Math.Floor(usersItemCredit[instance2] + (float)BepConfig.SimulacrumLootMaxItemDebt.Value); CharacterBody body2 = instance2.body; SetSkullCounterCount(inventory2, count, (body2 != null) ? ((Component)body2).gameObject : null); } Log.LogDebug(instance2.networkUser.userName + " itemCredit: " + usersItemCredit[instance2]); } } totalItemRewardCount = 0f; } private void PickupDropletController_CreatePickupDroplet_CreatePickupInfo_Vector3_Vector3(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown ILCursor val = new ILCursor(il); val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCall<Object>(x, "Instantiate") }); val.Index += 1; val.EmitDelegate<Func<GameObject, GameObject>>((Func<GameObject, GameObject>)delegate(GameObject obj) { if (comingFromInfiniteTowerWaveController_DropRewards && BepConfig.Enabled.Value && NetworkServer.active) { obj.AddComponent<NonShareableItem>(); totalItemRewardCount += 1f; } return obj; }); } private void PickupDropletController_CreatePickup(orig_CreatePickup orig, PickupDropletController self) { mostRecentlyCreatedPickup = null; orig.Invoke(self); if (BepConfig.Enabled.Value && (Object)(object)mostRecentlyCreatedPickup != (Object)null && (Object)(object)((Component)self).GetComponent<NonShareableItem>() != (Object)null) { mostRecentlyCreatedPickup.AddComponent<NonShareableItem>(); } } private void PickupDropletController_CreateCommandCube(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown ILCursor val = new ILCursor(il); val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCall<Object>(x, "Instantiate") }); val.Index += 1; val.EmitDelegate<Func<GameObject, GameObject>>((Func<GameObject, GameObject>)delegate(GameObject obj) { mostRecentlyCreatedPickup = obj; return obj; }); } private void GenericPickupController_CreatePickup(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown ILCursor val = new ILCursor(il); val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCall<Object>(x, "Instantiate") }); val.Index += 1; val.EmitDelegate<Func<GameObject, GameObject>>((Func<GameObject, GameObject>)delegate(GameObject obj) { mostRecentlyCreatedPickup = obj; return obj; }); } private void PickupPickerController_CreatePickup_UniquePickup(orig_CreatePickup_UniquePickup orig, PickupPickerController self, UniquePickup pickupState) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) mostRecentlyCreatedPickup = null; orig.Invoke(self, pickupState); if (BepConfig.Enabled.Value && (Object)(object)mostRecentlyCreatedPickup != (Object)null && Object.op_Implicit((Object)(object)((Component)self).GetComponent<NonShareableItem>())) { mostRecentlyCreatedPickup.AddComponent<NonShareableItem>(); } } private void PickupPickerController_OnInteractionBegin(orig_OnInteractionBegin orig, PickupPickerController self, Interactor activator) { if (CanInteract(((Component)self).gameObject, activator)) { orig.Invoke(self, activator); } } private void GenericPickupController_OnInteractionBegin(orig_OnInteractionBegin orig, GenericPickupController self, Interactor activator) { if (CanInteract(((Component)self).gameObject, activator)) { orig.Invoke(self, activator); } } private void GenericPickupController_AttemptGrant(orig_AttemptGrant orig, GenericPickupController self, CharacterBody body) { if ((BepConfig.Enabled.Value && CanInteract(((Component)self).gameObject, body)) || !BepConfig.Enabled.Value) { orig.Invoke(self, body); } NonShareableItem nonShareableItem = default(NonShareableItem); if (!NetworkServer.active || !BepConfig.Enabled.Value || !((Component)self).TryGetComponent<NonShareableItem>(ref nonShareableItem) || !self.consumed) { return; } CharacterMaster master = body.master; if ((Object)(object)master != (Object)null && (Object)(object)master.playerCharacterMasterController != (Object)null) { PlayerCharacterMasterController playerCharacterMasterController = master.playerCharacterMasterController; if (usersItemCredit.ContainsKey(playerCharacterMasterController)) { usersItemCredit[playerCharacterMasterController] -= 1f; } else { usersItemCredit.Add(playerCharacterMasterController, -1f); } if (PlayerCharacterMasterController.instances.Where((PlayerCharacterMasterController pc) => pc.isConnected).Count() == 1) { SetSkullCounterCount(body.inventory, 0, null); } else { SetSkullCounterCount(body.inventory, (int)Math.Floor(usersItemCredit[playerCharacterMasterController] + (float)BepConfig.SimulacrumLootMaxItemDebt.Value), ((Component)body).gameObject); } } } private bool NonShareableItemCheck(GenericPickupController pickup, CharacterBody picker) { NonShareableItem nonShareableItem = default(NonShareableItem); if (BepConfig.SimulacrumNonSharedLoot.Value) { return !((Component)pickup).TryGetComponent<NonShareableItem>(ref nonShareableItem); } return true; } private bool CanInteract(GameObject self, CharacterBody body) { if (!BepConfig.Enabled.Value) { return true; } NonShareableItem nonShareableItem = default(NonShareableItem); if (self.TryGetComponent<NonShareableItem>(ref nonShareableItem)) { CharacterMaster master = body.master; if ((Object)(object)master != (Object)null && (Object)(object)master.playerCharacterMasterController != (Object)null) { PlayerCharacterMasterController playerCharacterMasterController = master.playerCharacterMasterController; if (usersItemCredit.TryGetValue(playerCharacterMasterController, out var value)) { if (value + (float)BepConfig.SimulacrumLootMaxItemDebt.Value >= 1f) { return true; } ChatHelper.PlayerHasTooManyItems(playerCharacterMasterController.GetDisplayName()); return false; } } } return true; } private bool CanInteract(GameObject self, Interactor activator) { return CanInteract(self, (activator != null) ? ((Component)activator).GetComponent<CharacterBody>() : null); } private void SetSkullCounterCount(Inventory inventory, int count, GameObject playerObject) { //IL_0011: 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_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) if (!BepConfig.SimulacrumLootSkullTokens.Value) { return; } ItemIndex val = ItemCatalog.FindItemIndex("SkullCounter"); int itemCountPermanent = inventory.GetItemCountPermanent(val); int num = count - itemCountPermanent; if (num == 0) { return; } inventory.GiveItemPermanent(val, num); InfiniteTowerSafeWardController safeWardController = ((InfiniteTowerRun)Run.instance).safeWardController; if ((Object)(object)playerObject != (Object)null && (Object)(object)safeWardController != (Object)null) { if (num > 0) { PurchaseInteraction.CreateItemTakenOrb(((Component)safeWardController).transform.position, playerObject, val); } else { PurchaseInteraction.CreateItemTakenOrb(playerObject.transform.position, ((Component)safeWardController).gameObject, val); } } } public void GiveAllPlayersItemCredit(float credit) { foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances) { if (usersItemCredit.ContainsKey(instance)) { usersItemCredit[instance] += credit; } else { usersItemCredit.Add(instance, credit); } Log.LogDebug($"{instance.networkIdentity}.ItemCredit: {usersItemCredit[instance]}"); } } } }