using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; 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.Configuration; using FMOD; using FMOD.Studio; using HarmonyLib; using HawkNetworking; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Rendering; using UnityEngine.Rendering.PostProcessing; using UnityEngine.ResourceManagement.AsyncOperations; using UnityEngine.SceneManagement; using UnityEngine.UI; using UnityEngine.Video; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.6", FrameworkDisplayName = ".NET Framework 4.6")] [assembly: AssemblyCompany("net.lstwo.WLButSlenderman")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+e8d99e17040f314f4557b4a0e02965bccf27256c")] [assembly: AssemblyProduct("WLButSlenderman")] [assembly: AssemblyTitle("net.lstwo.WLButSlenderman")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [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 WLButSlenderman { public static class Patches { [HarmonyPatch(typeof(VCA), "setVolume")] [HarmonyPrefix] public static bool CreateOptionsPage_Internal(ref VCA __instance, ref float volume) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) string text = default(string); if ((int)((VCA)(ref __instance)).getPath(ref text) == 0 && text == "vca:/Music") { volume = 0f; } return true; } [HarmonyPatch(typeof(PlayerNPCController), "OnEnable")] [HarmonyPostfix] public static void PlayerNPCController_OnEnable_Postfix(ref PlayerNPCController __instance) { CollectionExtensions.Do((IEnumerable)((Component)__instance).GetComponentsInChildren(), (Action)delegate(Renderer x) { x.enabled = false; }); CollectionExtensions.Do((IEnumerable)((Component)__instance).GetComponentsInChildren(), (Action)delegate(Collider x) { x.enabled = false; }); } } [BepInPlugin("net.lstwo.WLButSlenderman", "WLButSlenderman", "1.0.0")] public class Plugin : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static OnAssignedPlayerController <>9__6_0; public static OnUnassignedPlayerCharacter <>9__6_2; public static Action <>9__6_3; public static Action <>9__6_4; public static Action <>9__6_5; public static Func <>9__9_0; public static EventHandler <>9__9_2; internal void b__6_0(PlayerController controller) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Expected O, but got Unknown //IL_0039: 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) Enemy.deadPlayers.Add(controller, value: false); controller.ServerSetAllowedCustomClothingAbilities(false); GameObject val = new GameObject("revive"); PlayerRevive val2 = val.AddComponent(); FMODAudioSource val3 = FMODAudioSource.AddTo(val); val3.playOnAwake = false; val3.loop = false; val3.clip = FakePlugin.freakyCheesyClip; val2.audioSource = val3; val2.playerController = controller; FakePlugin.playerRevives.Add(controller, val2); controller.ServerSetAllowedCustomClothingAbilities(false); } internal void b__6_2(PlayerCharacter character) { character.GetPlayerController().SetAllowedToRespawn((object)FakePlugin.playerRevives, true); } internal void b__6_3(Sound clip) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) FakePlugin.freakyCheesyClip = clip; } internal void b__6_4(Sound clip) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) FakePlugin.uhh = clip; } internal void b__6_5(Sound clip) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) FakePlugin.jumpscareClip = clip; } internal bool b__9_0() { if (UnitySingleton.InstanceExists) { return HawkNetworkManager.InstanceExists; } return false; } internal void b__9_2(VideoPlayer source) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) if (((Sound)(ref FakePlugin.jumpscareClip)).hasHandle()) { FMODAudio.PlayOneShot(FakePlugin.jumpscareClip, FakePlugin.jumpscareVolume); } } } internal static Plugin Instance; private bool registeredPrefabs; private static Material skyboxMaterial; private static ConfigEntry assetsPath; public static AssetBundle LoadFromEmbeddedResources(string assetBundleResourceName) { return AssetBundle.LoadFromMemory(ReadFully(Assembly.GetCallingAssembly().GetManifestResourceStream(assetBundleResourceName))); } private static byte[] ReadFully(Stream input) { using MemoryStream memoryStream = new MemoryStream(); byte[] array = new byte[81920]; int count; while ((count = input.Read(array, 0, array.Length)) != 0) { memoryStream.Write(array, 0, count); } return memoryStream.ToArray(); } private void Awake() { //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Expected O, but got Unknown //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Expected O, but got Unknown //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Expected O, but got Unknown //IL_0254: Unknown result type (might be due to invalid IL or missing references) assetsPath = ((BaseUnityPlugin)this).Config.Bind("General", "AssetsPath", "", (ConfigDescription)null); FakePlugin.AssetsPath = (string.IsNullOrEmpty(assetsPath.Value.Trim()) ? Path.Combine(Path.GetDirectoryName(((object)this).GetType().Assembly.Location), "assets") : Path.GetFullPath(assetsPath.Value.Trim())); FakePlugin.startCoroutine = (Action)Delegate.Combine(FakePlugin.startCoroutine, new Action(_StartCoroutine)); Instance = this; FakePlugin.bundle = LoadFromEmbeddedResources("WLButSlenderman.Resources.lstwo.wlbutslenderman.bundle"); FakePlugin.enemyPrefab = FakePlugin.bundle.LoadAsset("Freak"); FakePlugin.collectiblePrefab = FakePlugin.bundle.LoadAsset("Quad"); FakePlugin.chasingPostProcessing = FakePlugin.bundle.LoadAsset("pp"); FakePlugin.enemyBulletPrefab = FakePlugin.bundle.LoadAsset("Freak Small"); object obj = <>c.<>9__6_0; if (obj == null) { OnAssignedPlayerController val = delegate(PlayerController controller) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Expected O, but got Unknown //IL_0039: 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) Enemy.deadPlayers.Add(controller, value: false); controller.ServerSetAllowedCustomClothingAbilities(false); GameObject val3 = new GameObject("revive"); PlayerRevive val4 = val3.AddComponent(); FMODAudioSource val5 = FMODAudioSource.AddTo(val3); val5.playOnAwake = false; val5.loop = false; val5.clip = FakePlugin.freakyCheesyClip; val4.audioSource = val5; val4.playerController = controller; FakePlugin.playerRevives.Add(controller, val4); controller.ServerSetAllowedCustomClothingAbilities(false); }; <>c.<>9__6_0 = val; obj = (object)val; } GameInstance.onAssignedPlayerController += (OnAssignedPlayerController)obj; GameInstance.onAssignedPlayerCharacter += (OnAssignedPlayerCharacter)delegate(PlayerCharacter character) { ((MonoBehaviour)this).StartCoroutine(OnAssignedPlayerCharacter(character)); }; object obj2 = <>c.<>9__6_2; if (obj2 == null) { OnUnassignedPlayerCharacter val2 = delegate(PlayerCharacter character) { character.GetPlayerController().SetAllowedToRespawn((object)FakePlugin.playerRevives, true); }; <>c.<>9__6_2 = val2; obj2 = (object)val2; } GameInstance.onUnassignedPlayerCharacter += (OnUnassignedPlayerCharacter)obj2; FakePlugin.freakyCheesyTex = AssetLoader.LoadTexture(FakePlugin.AssetsPath + "/freakycheesy.png"); AssetLoader.LoadAudio(FakePlugin.AssetsPath + "/freakycheesy.wav", (Action)delegate(Sound clip) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) FakePlugin.freakyCheesyClip = clip; }); AssetLoader.LoadAudio(FakePlugin.AssetsPath + "/shoot.wav", (Action)delegate(Sound clip) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) FakePlugin.uhh = clip; }); AssetLoader.LoadAudio(FakePlugin.AssetsPath + "/jump.wav", (Action)delegate(Sound clip) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) FakePlugin.jumpscareClip = clip; }); FakePlugin.SpawnNewEnemy = (Action)Delegate.Combine(FakePlugin.SpawnNewEnemy, new Action(CreateEnemy)); SceneManager.sceneLoaded += delegate(Scene scene, LoadSceneMode loadMode) { //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Invalid comparison between Unknown and I4 //IL_0084: 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_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: 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_00c2: Expected O, but got Unknown //IL_0179: Unknown result type (might be due to invalid IL or missing references) if (DayNightCycle.InstanceExists) { DayNightCycle instance = DayNightCycle.Instance; instance.SetLightsEnabled(false); instance.SetMidnight(); instance.SetSpeed(0f); ((Component)instance).gameObject.SetActive(false); } if (UnitySingleton.InstanceExists) { UnitySingleton.Instance.ServerSetWeatherByIndex(4, false, (float?)null); ((Component)UnitySingleton.Instance).gameObject.SetActive(false); } if (UnitySingleton.InstanceExists) { ((Component)UnitySingleton.Instance).gameObject.SetActive(false); } if ((Object)(object)skyboxMaterial == (Object)null) { AsyncOperationHandle val3 = Addressables.LoadAssetAsync((object)"Assets/Content/Game/Shader/Amplify/Custom/UnlitColour.shader"); val3.WaitForCompletion(); skyboxMaterial = new Material(val3.Result) { color = new Color(0f, 0f, 0f, 0f) }; } RenderSettings.skybox = skyboxMaterial; RenderSettings.ambientLight = new Color(0.01f, 0.01f, 0.01f); RenderSettings.reflectionIntensity = 0f; RenderSettings.ambientMode = (AmbientMode)3; RenderSettings.fog = true; RenderSettings.fogDensity = 0.025f; RenderSettings.fogStartDistance = 0f; RenderSettings.fogEndDistance = 500f; RenderSettings.fogMode = (FogMode)2; RenderSettings.fogColor = Color.black; if ((int)loadMode != 1) { if (((Scene)(ref scene)).name == "MainMenu") { if (!registeredPrefabs) { HawkNetworkManager.DefaultInstance.RegisterPrefab(FakePlugin.enemyPrefab.GetComponent()); HawkNetworkManager.DefaultInstance.RegisterPrefab(FakePlugin.collectiblePrefab.GetComponent()); registeredPrefabs = true; } ((MonoBehaviour)this).StartCoroutine(MainMenuTomfoolery(scene)); } else if (((Scene)(ref scene)).name == "WobblyIsland") { ((MonoBehaviour)this).StartCoroutine(OnWobblyIslandSceneLoaded()); } } }; new Harmony("net.lstwo.WLButSlenderman").PatchAll(typeof(Patches)); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin net.lstwo.WLButSlenderman is loaded!"); } private void OnDestroy() { FMODAudio.ReleaseAll(); } private IEnumerator OnAssignedPlayerCharacter(PlayerCharacter character) { yield return (object)new WaitUntil((Func)(() => (Object)(object)character.GetPlayerController() != (Object)null)); if (Enemy.deadPlayers[character.GetPlayerController()]) { FakePlugin.playerRevives[character.GetPlayerController()].Kill(); } } private IEnumerator OnWobblyIslandSceneLoaded() { yield return (object)new WaitUntil((Func)(() => UnitySingleton.InstanceExists && HawkNetworkManager.InstanceExists)); FakePlugin.chasingVolume = new GameObject("Chasing Post Processing") { layer = LayerMask.NameToLayer("PostProcessing") }.AddComponent(); FakePlugin.chasingVolume.sharedProfile = FakePlugin.chasingPostProcessing; FakePlugin.chasingVolume.isGlobal = true; FakePlugin.jumpscare = FakePlugin.bundle.LoadAsset("Video Player").GetComponent(); GameObject obj = new GameObject("Jumpscare"); VideoPlayer obj2 = obj.AddComponent(); obj2.url = FakePlugin.AssetsPath + "/jump.mp4"; obj2.renderMode = (VideoRenderMode)1; obj2.playOnAwake = false; obj2.loopPointReached += (EventHandler)delegate { obj.SetActive(false); }; object obj3 = <>c.<>9__9_2; if (obj3 == null) { EventHandler val = delegate { //IL_000c: Unknown result type (might be due to invalid IL or missing references) if (((Sound)(ref FakePlugin.jumpscareClip)).hasHandle()) { FMODAudio.PlayOneShot(FakePlugin.jumpscareClip, FakePlugin.jumpscareVolume); } }; <>c.<>9__9_2 = val; obj3 = (object)val; } obj2.started += (EventHandler)obj3; FakePlugin.jumpscare = obj2; obj.SetActive(false); CreateEnemy(); CreateAllPfps(); Object.FindObjectOfType().clearFlags = (CameraClearFlags)4; } public static void _StartCoroutine(IEnumerator routine) { ((MonoBehaviour)Instance).StartCoroutine(routine); } private static IEnumerator MainMenuTomfoolery(Scene scene) { //IL_0007: 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) yield return null; Object.FindObjectOfType().clearFlags = (CameraClearFlags)4; ButtonClickedEvent onClick = null; ButtonClickedEvent onClick2 = null; Button val = null; Button val2 = null; GameObject[] rootGameObjects = ((Scene)(ref scene)).GetRootGameObjects(); foreach (GameObject val3 in rootGameObjects) { if (((Object)val3).name == "MainMenu World Canvas") { onClick = ((Component)val3.transform.GetChild(0).GetChild(3).GetChild(0) .GetChild(0) .GetChild(1)).GetComponent