Decompiled source of Diversity v3.1.0
Diversity/Diversity Remastered.dll
Decompiled 2 weeks ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.CodeDom.Compiler; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using Diversity Remastered.NetcodePatcher; using DiversityDungeonGen; using DiversityRemastered.Items; using DiversityRemastered.Misc; using DiversityRemastered.Monsters; using DiversityRemastered.Patches; using DiversityRemastered.Player; using DiversityRemastered.Properties; using DiversityRemastered.ScriptableObjects; using DunGen; using GameNetcodeStuff; using GraphicsAPI; using GraphicsAPI.CustomPostProcessing; using HarmonyLib; using LCCutscene; using Microsoft.CodeAnalysis; using TMPro; using Unity.Netcode; using Unity.Netcode.Samples; using UnityEngine; using UnityEngine.AI; using UnityEngine.Audio; using UnityEngine.Events; using UnityEngine.Rendering; using UnityEngine.Rendering.HighDefinition; using UnityEngine.SceneManagement; using UnityEngine.UI; using UnityEngine.VFX; using UnityEngine.Video; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("Diversity Remastered")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Diversity Remastered")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("2b889c96-cd65-4df4-8daf-302423eccd65")] [assembly: AssemblyFileVersion("3.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("3.0.0.8964")] [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.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [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 DiversityRemastered { public class Configuration { public static ConfigEntry<bool> spiderRevamp; public static ConfigEntry<float> spiderSlowAmount; public static ConfigEntry<bool> crawlerRevamp; public static ConfigEntry<float> crawlerSlowAmount; public static ConfigEntry<bool> centipedeRevamp; public static ConfigEntry<int> clickAmount; public static ConfigEntry<int> hurtChance; public static ConfigEntry<bool> brakenRevamp; public static ConfigEntry<bool> brakenFlashight; public static ConfigEntry<bool> brakenSpace; public static ConfigEntry<bool> brakenSnatchCompatibility; public static ConfigEntry<float> brakenRange; public static ConfigEntry<bool> brakenAnger; public static ConfigEntry<float> brakenAngerTime; public static ConfigEntry<int> flickerChance; public static ConfigEntry<int> breakerChance; public static ConfigEntry<bool> apparatusAnger; public static ConfigEntry<bool> chaseTriggerer; public static ConfigEntry<bool> dressGirlRevamp; public static ConfigEntry<float> walkieTalkieFrequency; public static ConfigEntry<bool> dressGirlIsolation; public static ConfigEntry<float> interactRange; public static ConfigEntry<bool> walker; public static ConfigEntry<int> walkerContactAmount; public static ConfigEntry<float> walkerLurkTimeMultiplier; public static ConfigEntry<int> walkerChance; public static ConfigEntry<float> stairsLengthMultiplier; public static ConfigEntry<bool> watcher; public static ConfigEntry<int> watcherWeight; public static ConfigEntry<float> watcherSlamMultiplier; public static ConfigEntry<bool> speaker; public static ConfigEntry<bool> posters; public static ConfigEntry<bool> shipCutscene; public static ConfigEntry<bool> pufferRevamp; public static ConfigEntry<bool> hydrogeneRevamp; public static ConfigEntry<bool> introCutscene; public static ConfigEntry<bool> menuMusic; public static void Load() { spiderRevamp = Diversity.config.Bind<bool>("Spider", "SpiderRevamp", true, "Should spider revamp be enabled?"); spiderSlowAmount = Diversity.config.Bind<float>("Spider", "SpiderSlow", 0.8f, "How much slown should spiders be on hit?"); crawlerRevamp = Diversity.config.Bind<bool>("Crawler", "CrawlerRevamp", true, "Should crawler revamp be enabled?"); crawlerSlowAmount = Diversity.config.Bind<float>("Crawler", "CrawlerSlow", 0.9f, "How much slown should crawlers be on hit?"); centipedeRevamp = Diversity.config.Bind<bool>("Centipede", "CentipedeRevamp", true, "Should centipede revamp be enabled?"); clickAmount = Diversity.config.Bind<int>("Centipede", "ClickAmount", 30, "How many times should you have to click to remove the centipede from someone's head?"); hurtChance = Diversity.config.Bind<int>("Centipede", "HurtChance", 10, "Chance of hurting the player when trying to free the centipede."); brakenRevamp = Diversity.config.Bind<bool>("Bracken", "BrakenRevamp", true, "Should Bracken revamp be enabled?"); brakenFlashight = Diversity.config.Bind<bool>("Bracken", "Braken Flashlight", true, "Should Bracken dim flashlights?"); brakenSpace = Diversity.config.Bind<bool>("Bracken", "BrakenPersonnalSpace", true, "Should the Bracken have his own personnal space?"); brakenSnatchCompatibility = Diversity.config.Bind<bool>("Bracken", "Braken Snatch Compatibility", false, "Enables compatibility with snatching bracken mod. (RECOMMENDED TO DISABLE IT IN SOLO!)"); brakenRange = Diversity.config.Bind<float>("Bracken", "BrakenRange", 15f, "From how far should the Bracken be able to turn off lights?"); brakenAnger = Diversity.config.Bind<bool>("Bracken", "BrakenAnger", true, "Should Bracken get angered from the breaker box?"); brakenAngerTime = Diversity.config.Bind<float>("Bracken", "BrakenAngerTime", 90f, "How long should the Bracken stay angered when fully angered?"); flickerChance = Diversity.config.Bind<int>("Bracken", "FlickerChance", 100, "Chance on flickering and turning off lights."); breakerChance = Diversity.config.Bind<int>("Bracken", "BreakerChance", 75, "Chance for the Bracken to turn off the breaker box."); apparatusAnger = Diversity.config.Bind<bool>("Bracken", "ApparatusAnger", true, "Should taking the Apparatus anger the Bracken?"); chaseTriggerer = Diversity.config.Bind<bool>("Bracken", "ChaseTriggerer", true, "Should the Bracken chase the one who angered him?"); dressGirlRevamp = Diversity.config.Bind<bool>("Dress Girl", "DressGirlRevamp", true, "Should Dress girl revamp be enabled?"); walkieTalkieFrequency = Diversity.config.Bind<float>("Dress Girl", "WalkieTalkieFrequency", 1f, "How frequent should the Dress girl haunt the walkie-talkie?"); dressGirlIsolation = Diversity.config.Bind<bool>("Dress Girl", "DressGirlIsolation", true, "Should Dress girl be able to isolate you and give you hallucinations? (Requires DressGirlRevamp to be enabled.)"); pufferRevamp = Diversity.config.Bind<bool>("Puffer", "Puffer Revamp", true, "Should the puffer revamp be enabled?"); hydrogeneRevamp = Diversity.config.Bind<bool>("Hydregene", "Hydrogene Revamp", true, "Should the hydrogene revamp be enabled?"); interactRange = Diversity.config.Bind<float>("Player", "InteractRange", 3f, "How far can players remove centipede from their head?"); walker = Diversity.config.Bind<bool>("Walker", "Walker", true, "Should the Walker be enabled?"); walkerContactAmount = Diversity.config.Bind<int>("Walker", "Walker Contact Amount", 3, "How many contact should the walker do before sending them to the stairs?"); walkerLurkTimeMultiplier = Diversity.config.Bind<float>("Walker", "Walker Lurk Time Multiplier", 1f, "Multiplier of the time the walker lurks before chasing its target."); walkerChance = Diversity.config.Bind<int>("Walker", "Walker Spawn Weight", 10, "Spawn weight of the walker."); stairsLengthMultiplier = Diversity.config.Bind<float>("Walker", "Walker Stairs Length", 1f, "Multiplier of the stairs length."); watcher = Diversity.config.Bind<bool>("Watcher", "Watcher", true, "Should the Watcher be enabled?"); watcherWeight = Diversity.config.Bind<int>("Watcher", "Watcher Weight", 30, "Spawn weight of the Watcher."); watcherSlamMultiplier = Diversity.config.Bind<float>("Watcher", "Watcher Slam Multiplier", 1f, "Slam multiplier for the Watcher. (Capped between 1 to 2)"); speaker = Diversity.config.Bind<bool>("Speaker", "Voice lines", true, "Should the speaker voice lines be enabled?"); posters = Diversity.config.Bind<bool>("Posters", "Posters", true, "Should the posters be enabled?"); shipCutscene = Diversity.config.Bind<bool>("Cutscene", "Ship Cutscene", true, "Should the ship cutscene be enabled?"); introCutscene = Diversity.config.Bind<bool>("Cutscene", "Mysterious Intro Cutscene", false, "Should it always play when you start the game?"); menuMusic = Diversity.config.Bind<bool>("Menu", "Custom Menu Music", true, "Spooky menu music yes?"); } } public class ContentLoader { public static AssetBundle MainAssets; public static AssetBundle extraAssets; public static AssetBundle sceneAssets; public static void Load() { Diversity.mls.LogDebug((object)"Loading internal assets..."); if ((Object)(object)MainAssets == (Object)null) { MainAssets = AssetBundle.LoadFromMemory(Resources.diversity); } if ((Object)(object)extraAssets == (Object)null) { extraAssets = AssetBundle.LoadFromMemory(Resources.diversity_extra); } if ((Object)(object)sceneAssets == (Object)null) { sceneAssets = AssetBundle.LoadFromMemory(Resources.diversity_scenes); } Diversity.mls.LogDebug((object)"Internal assets loaded!"); } } public class DiversityAssets : MonoBehaviour { [Serializable] public class RandomSoundAudioClip { public DiversitySoundManager.SoundType soundType; public AudioClip[] audioClips; } [Serializable] public class SoundAudioClip { public DiversitySoundManager.SoundType soundType; public AudioClip audioClip; } public SoundAudioClip[] soundAudioClipArray; public RandomSoundAudioClip[] randomSoundAudioClipArray; public static DiversityAssets Instance { get; private set; } private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject); } else { Object.Destroy((Object)(object)((Component)this).gameObject); } } } public class DiversitySoundManager : NetworkBehaviour { public enum SoundType { SteamLeak, LightOn, LightBuzz, Ambience, Fracture, BrokenBone, Hurt, BrackenScream, BrackenSpeech, DressGirlSpeech, DressGirlVoices, HeartBeat, DoorSlam, WalkerFootStep, WatcherScream, WatcherScreech, WatcherScreamHit, VentBanging, VentHit, GroundSlam, Stab, BloodSplat, HumanScream, SpeakerWelcome, SpeakerTerminal, SpeakerDogs, SpeakerShutOff, SpeakerEject, SpeakerReturn, SpeakerDays, SpeakerQuota, SpeakerQuotaAgain, LowEerie, Eerie } public static GameObject oneShot; public static AudioSource oneShotAudio; public static GameObject oneShotBypass; public static AudioSource oneShotAudioBypass; public static AudioSource walkerEerie; public List<GameObject> current3Daudios = new List<GameObject>(); public List<GameObject> currentGirlAudios = new List<GameObject>(); public static DiversitySoundManager Instance { get; private set; } private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject); } else { Object.Destroy((Object)(object)((Component)this).gameObject); } } [ServerRpc(RequireOwnership = false)] public void SpeakerTerminalPlayOneShotSyncServerRpc(int random) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Invalid comparison between Unknown and I4 //IL_005f: 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_0071: 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_00ce: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2301919732u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, random); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2301919732u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; SpeakerTerminalPlayOneShotSyncClientRpc(random); } } } [ClientRpc] public void SpeakerTerminalPlayOneShotSyncClientRpc(int random) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Invalid comparison between Unknown and I4 //IL_005f: 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_0071: 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_00ce: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1586849932u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, random); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1586849932u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; if (random != -1) { StartOfRound.Instance.speakerAudioSource.PlayOneShot(GetRandomAudioClipByTypeAndId(SoundType.SpeakerTerminal, random)); } } } public static float PlaySoundFloat(SoundType soundType, bool random, float volume, float pan, bool loop, Vector3 position) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) AudioMixerGroup outputAudioMixerGroup = SoundManager.Instance.diageticMixer.FindMatchingGroups("SFX")[0]; GameObject val = new GameObject("Sound"); val.transform.position = position; AudioSource val2 = val.AddComponent<AudioSource>(); val2.spatialBlend = 1f; val2.playOnAwake = false; val2.dopplerLevel = 0f; val2.spread = 70f; val2.reverbZoneMix = 1f; val2.outputAudioMixerGroup = outputAudioMixerGroup; val2.loop = loop; val2.panStereo = pan; if (random) { val2.clip = GetRandomAudioClipByType(soundType); } else { val2.clip = GetAudioClipByType(soundType); } val2.rolloffMode = (AudioRolloffMode)1; if (soundType == SoundType.LightOn) { val2.maxDistance = 100f; } else if (soundType == SoundType.SteamLeak || soundType == SoundType.LightBuzz) { val2.maxDistance = 32f; } else { val2.maxDistance = 32f; } val2.volume = volume; val2.Play(); if (soundType == SoundType.DressGirlSpeech) { Instance.currentGirlAudios.Add(val); } else if (!loop) { Object.Destroy((Object)(object)val, val2.clip.length); } else { Instance.current3Daudios.Add(val); } return val2.clip.length; } public static AudioSource PlaySound(SoundType soundType, bool random, float volume, float pan, bool loop, Vector3 position, float range = 32f, float audioOffset = 0f, float destroyDelayOffset = 0f) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) AudioMixerGroup outputAudioMixerGroup = SoundManager.Instance.diageticMixer.FindMatchingGroups("SFX")[0]; GameObject val = new GameObject("Sound"); val.transform.position = position; AudioSource val2 = val.AddComponent<AudioSource>(); val2.spatialBlend = 1f; val2.playOnAwake = false; val2.dopplerLevel = 0f; val2.spread = 70f; val2.reverbZoneMix = 1f; val2.outputAudioMixerGroup = outputAudioMixerGroup; val2.loop = loop; val2.panStereo = pan; if (random) { val2.clip = GetRandomAudioClipByType(soundType); } else { val2.clip = GetAudioClipByType(soundType); } val2.rolloffMode = (AudioRolloffMode)1; if (soundType == SoundType.LightOn) { val2.maxDistance = 100f; } else if (soundType == SoundType.SteamLeak || soundType == SoundType.LightBuzz) { val2.maxDistance = 32f; } else { val2.maxDistance = range; } val2.volume = volume; val2.time = audioOffset; val2.Play(); if (soundType == SoundType.DressGirlSpeech) { Instance.currentGirlAudios.Add(val); } else if (!loop) { float num = val2.clip.length - audioOffset + destroyDelayOffset; Diversity.mls.LogDebug((object)$"Audio destroy time: {num}"); Object.Destroy((Object)(object)val, num); } else { Instance.current3Daudios.Add(val); } return val2; } public static AudioSource PlaySound(SoundType soundType, bool random, float volume, float pan, bool loop, Vector3 position, Transform parent, float range = 32f, float audioOffset = 0f, float destroyDelayOffset = 0f) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) AudioMixerGroup outputAudioMixerGroup = SoundManager.Instance.diageticMixer.FindMatchingGroups("SFX")[0]; GameObject val = new GameObject("Sound"); val.transform.position = position; AudioSource val2 = val.AddComponent<AudioSource>(); val2.spatialBlend = 1f; val2.playOnAwake = false; val2.dopplerLevel = 0f; val2.spread = 70f; val2.reverbZoneMix = 1f; val2.outputAudioMixerGroup = outputAudioMixerGroup; val2.loop = loop; val2.panStereo = pan; if (random) { val2.clip = GetRandomAudioClipByType(soundType); } else { val2.clip = GetAudioClipByType(soundType); } val2.rolloffMode = (AudioRolloffMode)1; if (soundType == SoundType.LightOn) { val2.maxDistance = 100f; } else if (soundType == SoundType.SteamLeak || soundType == SoundType.LightBuzz) { val2.maxDistance = 32f; } else { val2.maxDistance = range; } val2.volume = volume; val2.time = audioOffset; val2.Play(); if (soundType == SoundType.DressGirlSpeech) { Instance.currentGirlAudios.Add(val); } else if (!loop) { float num = val2.clip.length - audioOffset + destroyDelayOffset; Diversity.mls.LogDebug((object)$"Audio destroy time: {num}"); Object.Destroy((Object)(object)val, num); } else { Instance.current3Daudios.Add(val); } val.transform.SetParent(parent, true); return val2; } public static AudioSource PlaySound(SoundType soundType, bool random, float volume, float pan) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown AudioMixerGroup outputAudioMixerGroup = SoundManager.Instance.diageticMixer.FindMatchingGroups("SFX")[0]; if ((Object)(object)oneShot == (Object)null) { oneShot = new GameObject("OneShotSound"); oneShotAudio = oneShot.AddComponent<AudioSource>(); } oneShotAudio.outputAudioMixerGroup = outputAudioMixerGroup; oneShotAudio.panStereo = pan; if (random) { oneShotAudio.PlayOneShot(GetRandomAudioClipByType(soundType), volume); } else { oneShotAudio.PlayOneShot(GetAudioClipByType(soundType), volume); } return oneShotAudio; } public static void DeleteAudio(GameObject audio) { Object.Destroy((Object)(object)audio); } public static void PlaySoundBypass(SoundType soundType, bool random, float volume, float pan, bool loop, Vector3 position, float spatialBlend = 1f) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_0012: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject("Sound"); val.transform.position = position; AudioSource val2 = val.AddComponent<AudioSource>(); val2.spatialBlend = spatialBlend; val2.playOnAwake = false; val2.dopplerLevel = 0f; val2.spread = 70f; val2.reverbZoneMix = 1f; val2.bypassListenerEffects = true; val2.loop = loop; val2.panStereo = pan; if (random) { val2.clip = GetRandomAudioClipByType(soundType); } else { val2.clip = GetAudioClipByType(soundType); } val2.rolloffMode = (AudioRolloffMode)1; if (soundType == SoundType.LightOn) { val2.maxDistance = 100f; } else if (soundType == SoundType.SteamLeak || soundType == SoundType.LightBuzz) { val2.maxDistance = 32f; } else { val2.maxDistance = 32f; } val2.volume = volume; val2.Play(); switch (soundType) { case SoundType.DressGirlSpeech: Instance.currentGirlAudios.Add(val); break; default: if (soundType != SoundType.LowEerie) { if (!loop) { Object.Destroy((Object)(object)val, val2.clip.length); } else { Instance.current3Daudios.Add(val); } break; } goto case SoundType.Eerie; case SoundType.Eerie: walkerEerie = val2; break; } } public static void PlaySoundBypass(SoundType soundType, bool random, float volume = 1f, float pan = 1f) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown if ((Object)(object)oneShotBypass == (Object)null) { oneShotBypass = new GameObject("OneShotSound"); oneShotAudioBypass = oneShotBypass.AddComponent<AudioSource>(); oneShotAudioBypass.bypassListenerEffects = true; } oneShotAudioBypass.panStereo = pan; if (random) { oneShotAudioBypass.PlayOneShot(GetRandomAudioClipByType(soundType), volume); } else { oneShotAudioBypass.PlayOneShot(GetAudioClipByType(soundType), volume); } } public static void StopSound(AudioSource audioSource) { if ((Object)(object)audioSource != (Object)null) { audioSource.Stop(); } } public static void StopSound() { if ((Object)(object)oneShot != (Object)null) { oneShotAudio.Stop(); } } public static void StopSoundBypass() { if ((Object)(object)oneShot != (Object)null) { oneShotAudioBypass.Stop(); } } public static Vector3 CheckPosition(PlayerControllerB player) { //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)player)) { if (!player.isPlayerDead) { return ((Component)player.gameplayCamera).transform.position; } return player.spectateCameraPivot.position; } return Vector3.zero; } public static AudioClip GetAudioClipByType(SoundType soundType) { Diversity.mls.LogInfo((object)DiversityAssets.Instance.soundAudioClipArray); DiversityAssets.SoundAudioClip[] soundAudioClipArray = DiversityAssets.Instance.soundAudioClipArray; foreach (DiversityAssets.SoundAudioClip soundAudioClip in soundAudioClipArray) { if (soundAudioClip.soundType == soundType) { return soundAudioClip.audioClip; } } Diversity.mls.LogError((object)("No audio of type:" + soundType)); return null; } public static AudioClip GetRandomAudioClipByType(SoundType soundType) { DiversityAssets.RandomSoundAudioClip[] randomSoundAudioClipArray = DiversityAssets.Instance.randomSoundAudioClipArray; foreach (DiversityAssets.RandomSoundAudioClip randomSoundAudioClip in randomSoundAudioClipArray) { if (randomSoundAudioClip.soundType == soundType) { return randomSoundAudioClip.audioClips[Random.Range(0, randomSoundAudioClip.audioClips.Length)]; } } Diversity.mls.LogError((object)("No audio of type:" + soundType)); return null; } public static int GetRandomAudioClipIdByType(SoundType soundType) { DiversityAssets.RandomSoundAudioClip[] randomSoundAudioClipArray = DiversityAssets.Instance.randomSoundAudioClipArray; foreach (DiversityAssets.RandomSoundAudioClip randomSoundAudioClip in randomSoundAudioClipArray) { if (randomSoundAudioClip.soundType == soundType) { return Random.Range(0, randomSoundAudioClip.audioClips.Length); } } Diversity.mls.LogError((object)("No audio of type:" + soundType)); return -1; } public static AudioClip GetRandomAudioClipByTypeAndId(SoundType soundType, int id) { DiversityAssets.RandomSoundAudioClip[] randomSoundAudioClipArray = DiversityAssets.Instance.randomSoundAudioClipArray; foreach (DiversityAssets.RandomSoundAudioClip randomSoundAudioClip in randomSoundAudioClipArray) { if (randomSoundAudioClip.soundType == soundType) { return randomSoundAudioClip.audioClips[id]; } } Diversity.mls.LogError((object)("No audio of type:" + soundType)); return null; } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(2301919732u, new RpcReceiveHandler(__rpc_handler_2301919732), "SpeakerTerminalPlayOneShotSyncServerRpc"); ((NetworkBehaviour)this).__registerRpc(1586849932u, new RpcReceiveHandler(__rpc_handler_1586849932), "SpeakerTerminalPlayOneShotSyncClientRpc"); ((NetworkBehaviour)this).__initializeRpcs(); } private static void __rpc_handler_2301919732(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int random = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref random); target.__rpc_exec_stage = (__RpcExecStage)1; ((DiversitySoundManager)(object)target).SpeakerTerminalPlayOneShotSyncServerRpc(random); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1586849932(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int random = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref random); target.__rpc_exec_stage = (__RpcExecStage)1; ((DiversitySoundManager)(object)target).SpeakerTerminalPlayOneShotSyncClientRpc(random); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "DiversitySoundManager"; } } public class DiversityItems { private static List<string> disks = new List<string>(); public static void Setup() { disks.Add("Ex-37"); disks.Add("Ex-43"); disks.Add("Ex-67"); disks.Add("Ex-507"); disks.Add("Sub-12"); disks.Add("Sub-16"); disks.Add("Sub-30"); disks.Add("Sub-66"); disks.Add("Sub-100"); disks.Add("Sub-507"); disks.Add("Never Stopping"); Diversity.mls.LogDebug((object)"Setting up the items..."); Register(); Diversity.mls.LogDebug((object)"Items are setup!"); } public static void Register() { foreach (string disk in disks) { GameNetworkManagerPatch.RegisterPrefab(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/Remastered/Floppy Disks/Disks/" + disk + ".prefab")); Diversity.mls.LogDebug((object)("Registered " + disk + "!")); } } } public class Enemies { public static void Setup() { Diversity.mls.LogDebug((object)"Setting up the enemies..."); Register(); Diversity.mls.LogDebug((object)"Enemies are setup!"); } public static void Register() { if (Configuration.watcher.Value) { DiversityAIManager.RegisterEnemy(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/Watcher/Watcher.prefab")); } if (Configuration.walker.Value) { GameNetworkManagerPatch.RegisterPrefab(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/walker/Prefab/Walker.prefab")); } } public static void AddComponentsToExistingPrefabs() { //IL_0233: Unknown result type (might be due to invalid IL or missing references) //IL_023a: Expected O, but got Unknown foreach (NetworkPrefab prefab in NetworkManager.Singleton.NetworkConfig.Prefabs.m_Prefabs) { switch (((Object)prefab.Prefab).name) { case "Flowerman": if (Configuration.brakenRevamp.Value) { prefab.Prefab.AddComponent<BrakenRevamp>(); } break; case "Crawler": if (Configuration.crawlerRevamp.Value) { prefab.Prefab.AddComponent<CrawlerRevamp>(); } break; case "SandSpider": if (Configuration.spiderRevamp.Value) { prefab.Prefab.AddComponent<SpiderRevamp>(); } break; case "Centipede": if (Configuration.centipedeRevamp.Value) { prefab.Prefab.AddComponent<CentipedeRevamp>(); } break; case "DressGirl": if (Configuration.dressGirlRevamp.Value) { prefab.Prefab.AddComponent<DressGirlRevamp>(); } break; case "Blob": { if (!Configuration.hydrogeneRevamp.Value) { break; } PullObjects pull = prefab.Prefab.AddComponent<PullObjects>(); foreach (Transform item in prefab.Prefab.transform.Find("Armature")) { Transform val = item; BlobRevamp component = ((Component)val).gameObject.GetComponent<BlobRevamp>(); if (!Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)((Component)val).gameObject.GetComponent<BoxCollider>())) { component = ((Component)val).gameObject.AddComponent<BlobRevamp>(); component.pull = pull; } } break; } case "Teleporter": prefab.Prefab.AddComponent<ShipTeleporterRevamp>(); break; } } } } public static class DiversityManager { [CompilerGenerated] private sealed class <>c__DisplayClass70_0 { public float time; internal bool <WaitForWiderShip>b__0() { return Object.op_Implicit((Object)(object)GameObject.Find("ShipInsideBoth")) || Object.op_Implicit((Object)(object)GameObject.Find("MelanieShip")) || Time.realtimeSinceStartup >= time; } } [CompilerGenerated] private sealed class <Blink>d__87 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <Blink>d__87(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; Diversity.mls.LogDebug((object)"Blinking!"); blinking = true; <>2__current = (object)new WaitUntil((Func<bool>)(() => blinkingTime == 1f)); <>1__state = 1; return true; case 1: <>1__state = -1; <>2__current = (object)new WaitForSeconds(0.3f); <>1__state = 2; return true; case 2: <>1__state = -1; blinking = false; Diversity.mls.LogDebug((object)"Blinking stopped!"); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <EnableSpeaker>d__76 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public float time; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <EnableSpeaker>d__76(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitForSeconds(time + 0.5f); <>1__state = 1; return true; case 1: <>1__state = -1; speakerDisabled = false; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <GenerateRoomRoutine>d__79 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public int seed; public Vector3 startPos; public GameObject test; public List<GameObject> prefabs; public GameObject start; public GameObject end; public bool isTest; private int <i>5__1; private int <random>5__2; private GameObject <randomHall>5__3; private Vector3 <newPos>5__4; private GameObject <hall>5__5; private Transform <light>5__6; private Transform <obj>5__7; private Transform <kill>5__8; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <GenerateRoomRoutine>d__79(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <randomHall>5__3 = null; <hall>5__5 = null; <light>5__6 = null; <obj>5__7 = null; <kill>5__8 = null; <>1__state = -2; } private bool MoveNext() { //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Unknown result type (might be due to invalid IL or missing references) //IL_01f8: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: <>1__state = -1; Diversity.mls.LogDebug((object)"Generating the Bracken room!"); Random.InitState(seed); if (isTest) { Object.Instantiate<GameObject>(test, startPos, Quaternion.identity); } else { <i>5__1 = 0; while (<i>5__1 < hallwayLength + 2) { Diversity.mls.LogDebug((object)("Generating tile " + <i>5__1 + "!")); <random>5__2 = Random.Range(0, 8); <randomHall>5__3 = prefabs[<random>5__2]; <newPos>5__4 = startPos + new Vector3(0f, 0f, (float)(18 + 18 * <i>5__1)); <hall>5__5 = null; if (<i>5__1 == 0) { <hall>5__5 = Object.Instantiate<GameObject>(start, <newPos>5__4, Quaternion.identity); braken = ((Component)<hall>5__5.transform.Find("bracken")).gameObject; brakenV2 = braken.AddComponent<BrackenV2>(); ambience = ((Component)<hall>5__5.transform.Find("AmbienceAudio")).gameObject.GetComponent<AudioSource>(); currentLayout.Add(<hall>5__5); } else if (<i>5__1 == 21) { <hall>5__5 = Object.Instantiate<GameObject>(end, <newPos>5__4, Quaternion.identity); ((Component)<hall>5__5.transform.Find("brackendoor")).gameObject.AddComponent<BrackenDoor>(); currentLayout.Add(<hall>5__5); } else { <hall>5__5 = Object.Instantiate<GameObject>(<randomHall>5__3, <newPos>5__4, Quaternion.identity); <light>5__6 = <hall>5__5.transform.Find("audio/lightbuzz"); if (Object.op_Implicit((Object)(object)<light>5__6)) { lightBuzz.Add(((Component)<light>5__6).gameObject); } <obj>5__7 = <hall>5__5.transform.Find("steamaudio"); if (Object.op_Implicit((Object)(object)<obj>5__7)) { steamSounds.Add(((Component)<obj>5__7).gameObject); } <kill>5__8 = <hall>5__5.transform.Find("KillTrigger"); if (Object.op_Implicit((Object)(object)<kill>5__8)) { ((Component)<kill>5__8).gameObject.AddComponent<KillTriggerDiversity>(); } currentLayout.Add(<hall>5__5); <light>5__6 = null; <obj>5__7 = null; <kill>5__8 = null; } <randomHall>5__3 = null; <hall>5__5 = null; <i>5__1++; } } Diversity.mls.LogDebug((object)("Bracken room generated using seed: " + seed + "!")); StartOfRoundRevamp.Instance.FinishGeneratingBrackenRoomServerRpc(StartOfRound.Instance.localPlayerController.actualClientId); <>2__current = 0; <>1__state = 1; return true; case 1: <>1__state = -1; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <WaitForEveryoneGeneratingRooms>d__63 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <WaitForEveryoneGeneratingRooms>d__63(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: 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 switch (<>1__state) { default: return false; case 0: <>1__state = -1; if (Configuration.brakenRevamp.Value && Configuration.brakenSpace.Value) { <>2__current = (object)new WaitUntil((Func<bool>)(() => StartOfRoundRevamp.PlayersFinishedGeneratingBrackenRoom.Count >= GameNetworkManager.Instance.connectedPlayers)); <>1__state = 1; return true; } goto IL_0085; case 1: <>1__state = -1; goto IL_0085; case 2: { <>1__state = -1; break; } IL_0085: if (Configuration.walker.Value) { <>2__current = (object)new WaitUntil((Func<bool>)(() => StartOfRoundRevamp.PlayersFinishedGeneratingMaze.Count >= GameNetworkManager.Instance.connectedPlayers)); <>1__state = 2; return true; } break; } SpawnDisks(); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <WaitForFloppyReaderAndSetup>d__61 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Vector3 pos; public Vector3 rot; public List<DiskType> data; private FloppyReader <fR>5__1; private AutoParentToShip <APTS>5__2; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <WaitForFloppyReaderAndSetup>d__61(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <fR>5__1 = null; <APTS>5__2 = null; <>1__state = -2; } private bool MoveNext() { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitUntil((Func<bool>)(() => Object.op_Implicit((Object)(object)Object.FindObjectOfType<FloppyReader>()))); <>1__state = 1; return true; case 1: <>1__state = -1; <fR>5__1 = Object.FindObjectOfType<FloppyReader>(); <APTS>5__2 = ((Component)((Component)<fR>5__1).transform.parent).gameObject.GetComponentInChildren<AutoParentToShip>(); if (Object.op_Implicit((Object)(object)<APTS>5__2)) { Diversity.mls.LogDebug((object)"Loading Floppy Reader data..."); <APTS>5__2.positionOffset = pos; <APTS>5__2.rotationOffset = rot; <fR>5__1.dataLoaded = data; Diversity.mls.LogDebug((object)"Loaded Floppy Reader data..."); } return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <WaitForGeneration>d__81 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; private DungeonTile[] <tiles>5__1; private float <distance>5__2; private TileLink <furthestLink>5__3; private DungeonTile[] <>s__4; private int <>s__5; private DungeonTile <tile>5__6; private TileLink[] <links>5__7; private TileLink[] <>s__8; private int <>s__9; private TileLink <link>5__10; private float <dist>5__11; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <WaitForGeneration>d__81(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <tiles>5__1 = null; <furthestLink>5__3 = null; <>s__4 = null; <tile>5__6 = null; <links>5__7 = null; <>s__8 = null; <link>5__10 = null; <>1__state = -2; } private bool MoveNext() { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_0252: Unknown result type (might be due to invalid IL or missing references) //IL_0267: 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) //IL_0161: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitUntil((Func<bool>)(() => !DiversityDungeonGen.generating)); <>1__state = 1; return true; case 1: <>1__state = -1; <tiles>5__1 = (from x in Object.FindObjectsOfType<DungeonTile>() where x.tileName != "Down Stairs" && x.tileName != "Up Stairs" select x).ToArray(); <distance>5__2 = 0f; <furthestLink>5__3 = null; <>s__4 = <tiles>5__1; for (<>s__5 = 0; <>s__5 < <>s__4.Length; <>s__5++) { <tile>5__6 = <>s__4[<>s__5]; <links>5__7 = <tile>5__6.tileLinks.Where((TileLink x) => x.closed).ToArray(); if (<links>5__7.Length != 0) { <>s__8 = <links>5__7; for (<>s__9 = 0; <>s__9 < <>s__8.Length; <>s__9++) { <link>5__10 = <>s__8[<>s__9]; <dist>5__11 = Vector3.Distance(startTile.transform.position, ((Component)<link>5__10).transform.position); if (<dist>5__11 > <distance>5__2) { <distance>5__2 = <dist>5__11; <furthestLink>5__3 = <link>5__10; } <link>5__10 = null; } <>s__8 = null; } <links>5__7 = null; <tile>5__6 = null; } <>s__4 = null; if (Object.op_Implicit((Object)(object)<furthestLink>5__3)) { Diversity.mls.LogDebug((object)"Found furthest link. Adding other door..."); walkerDoor2 = Object.Instantiate<GameObject>(ContentLoader.extraAssets.LoadAsset<GameObject>("Assets/custom/diversity/extras/prefabs/Walker Door.prefab"), ((Component)<furthestLink>5__3).transform); walkerDoor2.transform.localPosition = Vector3.zero; walkerDoor2.transform.localRotation = Quaternion.identity; } StartOfRoundRevamp.Instance.FinishGeneratingMazeServerRpc(StartOfRound.Instance.localPlayerController.actualClientId); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <WaitForWiderShip>d__70 : IEnumerator<object>, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public GameObject poster; public GameObject poster2; public GameObject poster4; private <>c__DisplayClass70_0 <>8__1; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <WaitForWiderShip>d__70(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>8__1 = null; <>1__state = -2; } private bool MoveNext() { //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Expected O, but got Unknown //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0263: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Unknown result type (might be due to invalid IL or missing references) //IL_02b2: Unknown result type (might be due to invalid IL or missing references) //IL_02b7: Unknown result type (might be due to invalid IL or missing references) //IL_02dc: Unknown result type (might be due to invalid IL or missing references) //IL_0301: Unknown result type (might be due to invalid IL or missing references) //IL_0306: Unknown result type (might be due to invalid IL or missing references) //IL_034a: Unknown result type (might be due to invalid IL or missing references) //IL_036f: Unknown result type (might be due to invalid IL or missing references) //IL_0374: Unknown result type (might be due to invalid IL or missing references) //IL_0399: Unknown result type (might be due to invalid IL or missing references) //IL_03be: Unknown result type (might be due to invalid IL or missing references) //IL_03c3: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>8__1 = new <>c__DisplayClass70_0(); Diversity.mls.LogDebug((object)"Checking for WiderShip!"); <>8__1.time = Time.realtimeSinceStartup + 15f; <>2__current = (object)new WaitUntil((Func<bool>)(() => Object.op_Implicit((Object)(object)GameObject.Find("ShipInsideBoth")) || Object.op_Implicit((Object)(object)GameObject.Find("MelanieShip")) || Time.realtimeSinceStartup >= <>8__1.time)); <>1__state = 1; return true; case 1: <>1__state = -1; if ((Object)(object)GameObject.Find("ShipInsideBoth") != (Object)null) { Diversity.mls.LogDebug((object)"WiderShip Detected!"); if (GameObject.Find("ShipInsideBoth").activeSelf) { Diversity.mls.LogDebug((object)"WiderShip is active!"); poster.transform.localPosition = new Vector3(-6.648f, 2.49f, -9.916f); poster.transform.localRotation = Quaternion.Euler(new Vector3(86.00002f, 0.0001223932f, 269.99994f)); poster2.transform.localPosition = new Vector3(3.075f, 2.321f, -0.585f); poster2.transform.localRotation = Quaternion.Euler(new Vector3(89.68973f, 291.33038f, 49.73238f)); poster4.transform.localPosition = new Vector3(1.139f, 2.628f, -14.1272f); poster4.transform.localRotation = Quaternion.Euler(new Vector3(82.978645f, 269.57513f, 847f / MathF.PI)); } } else if ((Object)(object)GameObject.Find("MelanieShip") != (Object)null) { Diversity.mls.LogDebug((object)"MelanieShip Detected!"); if (GameObject.Find("MelanieShip").activeSelf && FindInActiveObjectsByName("ShipInsideBoth").Length != 0) { Diversity.mls.LogDebug((object)"MelanieShip is active!"); poster.transform.localPosition = new Vector3(8.372f, 2.289f, 1.676f); poster.transform.localRotation = Quaternion.Euler(new Vector3(86.00008f, 90f, 270f)); poster2.transform.localPosition = new Vector3(1.77f, 2.25f, 0.762f); poster2.transform.localRotation = Quaternion.Euler(new Vector3(87.82013f, 269.99997f, 90.00099f)); poster4.transform.localPosition = new Vector3(5.908f, 2.306f, -14.975f); poster4.transform.localRotation = Quaternion.Euler(new Vector3(82.97306f, 267.74652f, 267.6991f)); } else if (GameObject.Find("MelanieShip").activeSelf) { poster.transform.localPosition = new Vector3(1.546f, 2.522f, -4.226f); poster.transform.localRotation = Quaternion.Euler(new Vector3(86.00008f, 90f, 270f)); poster2.transform.localPosition = new Vector3(2.098f, 2.375659f, -2.237f); poster2.transform.localRotation = Quaternion.Euler(new Vector3(87.82013f, 270f, 90f)); } } return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public static bool gameStarted = false; public static bool playersHidden = false; public static InteractTrigger it; public static GameObject walkerDoor; public static GameObject walkerDoor2; public static GameObject door; public static FloppyDisk brackenFloppyDisk = null; public static FloppyDisk walkerFloppyDisk = null; public static FloppyDisk mapDisk = null; private static List<string> disks = new List<string>(); public static GameObject deadResearcher = null; public static List<GameObject> brackenRoomTiles = new List<GameObject>(); public static GameObject stairs; public static List<GameObject> currentLayout = new List<GameObject>(); public static List<GameObject> currentEffects = new List<GameObject>(); public static int hallwayLength = 20; public static List<Animator> brackenLights = new List<Animator>(); public static List<Animator> affectedLights = new List<Animator>(); public static List<RadarBoosterItem> radarBoosters = new List<RadarBoosterItem>(); public static int angerMax = 0; public static List<MouthDogAI> currentDogs = new List<MouthDogAI>(); public static List<PullObjects> currentBlobs = new List<PullObjects>(); public static List<GameObject> steamSounds = new List<GameObject>(); public static List<GameObject> lightBuzz = new List<GameObject>(); public static GameObject braken; public static BrackenV2 brakenV2; public static AudioSource ambience; public static bool speakerDisabled = false; public static bool dogsLinePLayed = false; public static bool played = false; public static GameObject startTile; public static AudioSource mazeAudio; public static StairsManager manager; public static GameObject testPrefab = ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/bracken/rooms/prefabs/test.prefab"); public static GameObject start = ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/bracken/rooms/prefabs/start.prefab"); public static GameObject end = ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/bracken/rooms/prefabs/end.prefab"); public static GameObject stairsPrefab = ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/Stairs/stairs.prefab"); public static TextMeshProUGUI tipText; public static Image holderBar; public static Image clickBar; private static readonly string text = "Free from head : [E]"; private static readonly Color color = Color32.op_Implicit(new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue)); public static Volume haunted; public static Volume black; public static CustomPassVolume pass; public static FullScreenCustomPass fullscreenPass; public static FullScreenCustomPass fullscreenPass2; public static FullScreenCustomPass cameraFSPass; public static FullScreenCustomPass eyeFSPass; public static FullScreenCustomPass walkerFSPass; public static float hauntedIntensity = 0f; public static float sinkingIntensity = 0f; public static float closedIntensity = 0f; public static float shakeIntensity = 0f; public static float staticIntensity = 0f; public static bool blinking = false; public static float blinkingTime = 0f; public static void ResetEverything() { gameStarted = false; playersHidden = false; it = null; walkerDoor = null; walkerDoor2 = null; door = null; brackenFloppyDisk = null; walkerFloppyDisk = null; mapDisk = null; disks = new List<string>(); deadResearcher = null; stairs = null; currentLayout = new List<GameObject>(); currentEffects = new List<GameObject>(); brackenLights = new List<Animator>(); affectedLights = new List<Animator>(); radarBoosters = new List<RadarBoosterItem>(); angerMax = 0; currentDogs = new List<MouthDogAI>(); currentBlobs = new List<PullObjects>(); steamSounds = new List<GameObject>(); lightBuzz = new List<GameObject>(); braken = null; brakenV2 = null; ambience = null; speakerDisabled = false; dogsLinePLayed = false; played = false; startTile = null; mazeAudio = null; manager = null; tipText = null; holderBar = null; clickBar = null; haunted = null; black = null; pass = null; fullscreenPass = null; fullscreenPass2 = null; cameraFSPass = null; eyeFSPass = null; walkerFSPass = null; hauntedIntensity = 0f; sinkingIntensity = 0f; closedIntensity = 0f; shakeIntensity = 0f; staticIntensity = 0f; blinking = false; blinkingTime = 0f; } public static void Update() { if ((Object)(object)brackenFloppyDisk != (Object)null && (((GrabbableObject)brackenFloppyDisk).isPocketed || (Object)(object)((GrabbableObject)brackenFloppyDisk).playerHeldBy != (Object)null)) { brackenFloppyDisk = null; } if ((Object)(object)walkerFloppyDisk != (Object)null && (((GrabbableObject)walkerFloppyDisk).isPocketed || (Object)(object)((GrabbableObject)walkerFloppyDisk).playerHeldBy != (Object)null)) { walkerFloppyDisk = null; } if ((Object)(object)mapDisk != (Object)null && (((GrabbableObject)mapDisk).isPocketed || (Object)(object)((GrabbableObject)mapDisk).playerHeldBy != (Object)null)) { mapDisk = null; } } public static void SaveGameData() { //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_02ab: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) FloppyDisk[] array = Object.FindObjectsOfType<FloppyDisk>(); foreach (FloppyDisk floppyDisk in array) { string diskName = ((Object)((Component)floppyDisk).gameObject).name.Replace("(Clone)", ""); if (disks.Any((string x) => x == diskName)) { Diversity.mls.LogDebug((object)("Saving disk: " + ((Object)((Component)floppyDisk).gameObject).name.Replace("(Clone)", ""))); ES3.Save<string>(diskName, diskName, GameNetworkManager.Instance.currentSaveFileName); Diversity.mls.LogDebug((object)"Disk name saved"); ES3.Save<Vector3>(diskName + "Position", ((Component)floppyDisk).gameObject.transform.position, GameNetworkManager.Instance.currentSaveFileName); Diversity.mls.LogDebug((object)"Disk position saved"); } else { Diversity.mls.LogDebug((object)("Skipping unsupported disk : " + diskName)); } } foreach (string item in disks.Where((string x) => !Object.FindObjectsOfType<FloppyDisk>().Any((FloppyDisk y) => ((Object)((Component)y).gameObject).name.Replace("(Clone)", "") == x))) { Diversity.mls.LogDebug((object)("Checking if " + item + " has saved data... (Save)")); Diversity.mls.LogDebug((object)(item + " exist? : " + ES3.KeyExists(item, GameNetworkManager.Instance.currentSaveFileName))); if (ES3.KeyExists(item, GameNetworkManager.Instance.currentSaveFileName)) { Diversity.mls.LogDebug((object)("Deleting data of " + item + " since it hasn't been found in game!")); ES3.DeleteKey(item, GameNetworkManager.Instance.currentSaveFileName); } if (ES3.KeyExists(item + "Position", GameNetworkManager.Instance.currentSaveFileName)) { ES3.DeleteKey(item + "Position", GameNetworkManager.Instance.currentSaveFileName); } } FloppyReader floppyReader = Object.FindObjectOfType<FloppyReader>(); if (Object.op_Implicit((Object)(object)floppyReader)) { AutoParentToShip componentInChildren = ((Component)((Component)floppyReader).transform.parent).gameObject.GetComponentInChildren<AutoParentToShip>(); if (Object.op_Implicit((Object)(object)componentInChildren)) { Diversity.mls.LogDebug((object)"Saving Floppy Reader data..."); ES3.Save<Vector3>("FloppyReaderPosition", componentInChildren.positionOffset, GameNetworkManager.Instance.currentSaveFileName); ES3.Save<Vector3>("FloppyReaderRotation", componentInChildren.rotationOffset, GameNetworkManager.Instance.currentSaveFileName); ES3.Save<List<DiskType>>("FloppyReaderData", floppyReader.dataLoaded, GameNetworkManager.Instance.currentSaveFileName); Diversity.mls.LogDebug((object)"Saved Floppy Reader data..."); } } } public static void LoadGameData() { //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) foreach (string disk in disks) { Diversity.mls.LogDebug((object)("Checking if " + disk + " has saved data... (Load)")); Diversity.mls.LogDebug((object)(disk + " exist? : " + ES3.KeyExists(disk, GameNetworkManager.Instance.currentSaveFileName))); if (ES3.KeyExists(disk, GameNetworkManager.Instance.currentSaveFileName)) { Diversity.mls.LogDebug((object)("Loading disk: " + disk)); string text = ES3.Load<string>(disk, GameNetworkManager.Instance.currentSaveFileName); Vector3 val = ES3.Load<Vector3>(disk + "Position", GameNetworkManager.Instance.currentSaveFileName); ManualLogSource mls = Diversity.mls; Vector3 val2 = val; mls.LogDebug((object)(text + " disk loaded at position: " + ((object)(Vector3)(ref val2)).ToString())); if (NetworkManager.Singleton.IsHost) { SpawnDisk(text, val); } } } if (ES3.KeyExists("FloppyReaderPosition", GameNetworkManager.Instance.currentSaveFileName) && ES3.KeyExists("FloppyReaderRotation", GameNetworkManager.Instance.currentSaveFileName) && ES3.KeyExists("FloppyReaderData", GameNetworkManager.Instance.currentSaveFileName)) { ((MonoBehaviour)StartOfRound.Instance).StartCoroutine(WaitForFloppyReaderAndSetup(ES3.Load<Vector3>("FloppyReaderPosition", GameNetworkManager.Instance.currentSaveFileName), ES3.Load<Vector3>("FloppyReaderRotation", GameNetworkManager.Instance.currentSaveFileName), ES3.Load<List<DiskType>>("FloppyReaderData", GameNetworkManager.Instance.currentSaveFileName))); } } [IteratorStateMachine(typeof(<WaitForFloppyReaderAndSetup>d__61))] public static IEnumerator WaitForFloppyReaderAndSetup(Vector3 pos, Vector3 rot, List<DiskType> data) { //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) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <WaitForFloppyReaderAndSetup>d__61(0) { pos = pos, rot = rot, data = data }; } public static void SetupRound() { //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: Unknown result type (might be due to invalid IL or missing references) //IL_03e2: Unknown result type (might be due to invalid IL or missing references) //IL_02a0: Unknown result type (might be due to invalid IL or missing references) //IL_0424: Unknown result type (might be due to invalid IL or missing references) //IL_02cb: Unknown result type (might be due to invalid IL or missing references) //IL_0463: Unknown result type (might be due to invalid IL or missing references) //IL_02f3: Unknown result type (might be due to invalid IL or missing references) //IL_04a2: Unknown result type (might be due to invalid IL or missing references) //IL_031b: Unknown result type (might be due to invalid IL or missing references) //IL_0343: Unknown result type (might be due to invalid IL or missing references) if (gameStarted) { return; } gameStarted = true; Diversity.mls.LogDebug((object)"Setting up the round!"); RefreshData(); Random.InitState(StartOfRound.Instance.randomMapSeed); angerMax = Random.Range(1, 4); Diversity.mls.LogDebug((object)("Setting up max anger to: " + angerMax)); Diversity.mls.LogDebug((object)"Choosing a random door!"); DoorLock[] array = Object.FindObjectsOfType<DoorLock>().Where(delegate(DoorLock x) { int result; if (((Object)((Component)x).gameObject).name == "Cube") { Transform parent = ((Component)x).transform.parent; if (parent == null) { result = 0; } else { Transform parent2 = parent.parent; result = (((parent2 != null) ? new bool?(((Object)((Component)parent2).gameObject).name.Contains("SteelDoor")) : null).GetValueOrDefault() ? 1 : 0); } } else { result = 0; } return (byte)result != 0; }).ToArray(); Diversity.mls.LogDebug((object)array.Length); if (array.Length != 0) { Random.InitState(StartOfRound.Instance.randomMapSeed); DoorLock val = array[Random.Range(0, array.Length)]; door = ((Component)((Component)val).transform.parent.parent).gameObject; walkerDoor = Object.Instantiate<GameObject>(ContentLoader.extraAssets.LoadAsset<GameObject>("Assets/custom/diversity/extras/prefabs/Walker Door.prefab"), ((Component)val).transform.parent.parent.parent); it = ((Component)val).GetComponent<InteractTrigger>(); it.hoverTip = "Use door : [LMB]\nThis door looks odd..."; it.disabledHoverTip = "Locked\nThis door looks odd..."; walkerDoor.SetActive(false); Diversity.mls.LogDebug((object)"Walker door is set up!"); } EnemyVent[] array2 = Object.FindObjectsOfType<EnemyVent>(); if (array2.Length < 1) { return; } EnemyVent[] array3 = array2; foreach (EnemyVent val2 in array3) { Transform val3 = ((Component)val2).transform.Find("Hinge/VentCover"); if ((Object)(object)val3 == (Object)null) { return; } val3.localScale = new Vector3(0f - val3.localScale.x, val3.localScale.y, val3.localScale.z); } if (NetworkManager.Singleton.IsHost) { ((MonoBehaviour)StartOfRound.Instance).StartCoroutine(WaitForEveryoneGeneratingRooms()); switch (StartOfRound.Instance.currentLevel.PlanetName) { case "41 Experimentation": mapDisk = SpawnDisk("Ex-67", new Vector3(-66.1824f, 15.827f, 23.234f)); break; case "7 Dine": mapDisk = SpawnDisk("Ex-37", new Vector3(41.117f, -2.091f, 65.225f)); break; case "20 Adamance": mapDisk = SpawnDisk("Ex-507", new Vector3(-64.035f, -16.645f, 28.683f)); break; case "56 Vow": mapDisk = SpawnDisk("Ex-43", new Vector3(-121.135f, -1.419f, 133.079f)); break; case "68 Artifice": mapDisk = SpawnDisk("Sub-507", new Vector3(-0.44f, -3.715f, -90.972f)); break; } } switch (StartOfRound.Instance.currentLevel.PlanetName) { case "41 Experimentation": deadResearcher = Object.Instantiate<GameObject>(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/Remastered/Researcher/Researcher Experimentation.prefab")); deadResearcher.transform.position = new Vector3(-66.224f, 16.119f, 23.976f); break; case "7 Dine": deadResearcher = Object.Instantiate<GameObject>(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/Remastered/Researcher/Researcher Dine.prefab")); deadResearcher.transform.position = new Vector3(38.5351f, -1.0278304f, 63.148476f); break; case "20 Adamance": deadResearcher = Object.Instantiate<GameObject>(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/Remastered/Researcher/Researcher Adamance.prefab")); deadResearcher.transform.position = new Vector3(-57.559856f, -16.093561f, 25.392748f); break; case "56 Vow": deadResearcher = Object.Instantiate<GameObject>(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/Remastered/DeadBodyThingIdk.prefab")); deadResearcher.transform.position = new Vector3(-120.842285f, -1.376f, 131.63667f); break; } DiversityAIManager.Instance.SpawnEnemy(ContentLoader.MainAssets.LoadAsset<DiversityEnemy>("Assets/custom/diversity/Watcher/Watcher.asset")); } [IteratorStateMachine(typeof(<WaitForEveryoneGeneratingRooms>d__63))] public static IEnumerator WaitForEveryoneGeneratingRooms() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <WaitForEveryoneGeneratingRooms>d__63(0); } private static void SpawnDisks() { //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) Diversity.mls.LogDebug((object)"Spawning the disks!"); if (Configuration.brakenRevamp.Value && Configuration.brakenSpace.Value && (from x in Object.FindObjectsOfType<FloppyDisk>() where ((Object)((Component)x).gameObject).name.Contains("Sub-16") select x).ToArray().Length == 0) { brackenFloppyDisk = SpawnDisk("Sub-16", currentLayout.Where((GameObject x) => ((Object)x).name.Contains("end")).ToArray()[0].transform.Find("DiskSpawn").position); } if (Configuration.walker.Value) { walkerFloppyDisk = SpawnDisk("Sub-66", walkerDoor2.transform.position - walkerDoor2.transform.forward); } } public static FloppyDisk SpawnDisk(string diskName, Vector3 position, bool insideShip = false, bool localPos = false, bool forceSpawn = false) { //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) string diskName2 = diskName; if (!NetworkManager.Singleton.IsHost) { Diversity.mls.LogWarning((object)"Only the host can spawn disks!"); return null; } if (disks.Any((string x) => x == diskName2)) { if ((from x in Object.FindObjectsOfType<FloppyDisk>() where ((Object)((Component)x).gameObject).name.Contains(diskName2) select x).ToArray().Length == 0 || forceSpawn) { Diversity.mls.LogDebug((object)"Spawning the disks!"); GameObject val = Object.Instantiate<GameObject>(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/Remastered/Floppy Disks/Disks/" + diskName2 + ".prefab"), ((Component)StartOfRound.Instance.shipAnimator).gameObject.transform); if (insideShip) { val.transform.SetParent(((Component)StartOfRound.Instance.shipAnimator).gameObject.transform); } if (localPos) { val.transform.localPosition = position; } else { val.transform.position = position; } val.transform.rotation = Quaternion.Euler(0f, Random.Range(0f, 360f), 0f); NetworkObject componentInChildren = val.GetComponentInChildren<NetworkObject>(); if (!componentInChildren.IsSpawned) { componentInChildren.Spawn(false); } Diversity.mls.LogDebug((object)(diskName2 + " disk is spawned!")); return val.GetComponentInChildren<FloppyDisk>(); } Diversity.mls.LogDebug((object)(diskName2 + " is already spawned!")); return null; } Diversity.mls.LogDebug((object)(diskName2 + " doesn't exist!")); return null; } public static void RefreshData() { brackenLights = RoundManager.Instance.allPoweredLightsAnimators; DiversityAIManager.Instance.valves = Object.FindObjectsOfType<SteamValveHazard>().ToList(); } public static void ResetRound() { if (!gameStarted) { return; } gameStarted = false; Diversity.mls.LogDebug((object)"Resetting the round!"); if (((NetworkBehaviour)DiversityAIManager.Instance).IsHost) { DiversityAIManager.Instance.ClearEnemies(); } PlayerControllerB[] allPlayerScripts = StartOfRound.Instance.allPlayerScripts; foreach (PlayerControllerB val in allPlayerScripts) { if ((Object)(object)val != (Object)null) { PlayerRevamp component = ((Component)val).gameObject.GetComponent<PlayerRevamp>(); if (!Object.op_Implicit((Object)(object)component)) { return; } component.ResetPlayer(); DiversitySoundManager.Instance.current3Daudios = new List<GameObject>(); brackenLights = new List<Animator>(); affectedLights = new List<Animator>(); steamSounds = new List<GameObject>(); lightBuzz = new List<GameObject>(); currentDogs = new List<MouthDogAI>(); currentBlobs = new List<PullObjects>(); DiversityAIManager.Instance.lights = new List<Light>(); DiversityAIManager.Instance.valves = new List<SteamValveHazard>(); } } ResetStairsAndBrackenRoom(); DiversityDungeonGen.Instance.DeleteCurrentDungeon(); StartOfRoundRevamp.Instance.ClearGenerationData(); if (NetworkManager.Singleton.IsHost) { if ((Object)(object)brackenFloppyDisk != (Object)null) { ((Component)brackenFloppyDisk).gameObject.GetComponentInChildren<NetworkObject>().Despawn(true); brackenFloppyDisk = null; } if ((Object)(object)walkerFloppyDisk != (Object)null) { ((Component)walkerFloppyDisk).gameObject.GetComponentInChildren<NetworkObject>().Despawn(true); walkerFloppyDisk = null; } if ((Object)(object)mapDisk != (Object)null) { ((Component)mapDisk).gameObject.GetComponentInChildren<NetworkObject>().Despawn(true); mapDisk = null; } } else { if ((Object)(object)brackenFloppyDisk != (Object)null) { brackenFloppyDisk = null; } if ((Object)(object)walkerFloppyDisk != (Object)null) { walkerFloppyDisk = null; } if ((Object)(object)mapDisk != (Object)null) { mapDisk = null; } } if ((Object)(object)deadResearcher != (Object)null) { Object.Destroy((Object)(object)deadResearcher); deadResearcher = null; } } public static void ResetUnlockables() { //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) foreach (UnlockableItem item in Unlockables.RegisteredItems) { AutoParentToShip parentObject = (from x in Object.FindObjectsOfType<PlaceableShipObject>() where x.unlockableID == StartOfRound.Instance.unlockablesList.unlockables.FindIndex((UnlockableItem x) => x.unlockableName == item.unlockableName) select x).ToArray()[0].parentObject; string unlockableName = item.unlockableName; string text = unlockableName; if (text == "Floppy Reader") { parentObject.positionOffset = new Vector3(-1.27f, -0.032f, -5f); parentObject.rotationOffset = new Vector3(0f, 180f, 0f); } } } public static void SetupGame() { //IL_032b: Unknown result type (might be due to invalid IL or missing references) //IL_034c: Unknown result type (might be due to invalid IL or missing references) //IL_036d: Unknown result type (might be due to invalid IL or missing references) //IL_038e: Unknown result type (might be due to invalid IL or missing references) //IL_03af: Unknown result type (might be due to invalid IL or missing references) //IL_03d0: Unknown result type (might be due to invalid IL or missing references) //IL_03f1: Unknown result type (might be due to invalid IL or missing references) //IL_0412: Unknown result type (might be due to invalid IL or missing references) //IL_0433: Unknown result type (might be due to invalid IL or missing references) //IL_0454: Unknown result type (might be due to invalid IL or missing references) //IL_0475: Unknown result type (might be due to invalid IL or missing references) //IL_0496: Unknown result type (might be due to invalid IL or missing references) //IL_04f1: Unknown result type (might be due to invalid IL or missing references) //IL_04f8: Expected O, but got Unknown //IL_0566: Unknown result type (might be due to invalid IL or missing references) //IL_0595: Unknown result type (might be due to invalid IL or missing references) //IL_05b6: Unknown result type (might be due to invalid IL or missing references) //IL_05c8: Unknown result type (might be due to invalid IL or missing references) //IL_0165: 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_0176: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Expected O, but got Unknown //IL_05fa: Unknown result type (might be due to invalid IL or missing references) //IL_0600: Expected O, but got Unknown //IL_0649: Unknown result type (might be due to invalid IL or missing references) //IL_0659: Unknown result type (might be due to invalid IL or missing references) //IL_0660: Expected O, but got Unknown //IL_06c4: Unknown result type (might be due to invalid IL or missing references) //IL_06db: Unknown result type (might be due to invalid IL or missing references) //IL_06fb: Unknown result type (might be due to invalid IL or missing references) //IL_0702: Expected O, but got Unknown //IL_0766: Unknown result type (might be due to invalid IL or missing references) //IL_077d: Unknown result type (might be due to invalid IL or missing references) //IL_07d5: Unknown result type (might be due to invalid IL or missing references) //IL_08dd: Unknown result type (might be due to invalid IL or missing references) //IL_08e2: Unknown result type (might be due to invalid IL or missing references) //IL_08ea: Unknown result type (might be due to invalid IL or missing references) //IL_08f2: Unknown result type (might be due to invalid IL or missing references) //IL_0900: Expected O, but got Unknown //IL_0914: Unknown result type (might be due to invalid IL or missing references) //IL_0919: Unknown result type (might be due to invalid IL or missing references) //IL_0923: Expected O, but got Unknown //IL_0937: Unknown result type (might be due to invalid IL or missing references) //IL_093c: Unknown result type (might be due to invalid IL or missing references) //IL_0944: Unknown result type (might be due to invalid IL or missing references) //IL_0952: Expected O, but got Unknown //IL_0966: Unknown result type (might be due to invalid IL or missing references) //IL_096b: Unknown result type (might be due to invalid IL or missing references) //IL_0973: Unknown result type (might be due to invalid IL or missing references) //IL_0981: Expected O, but got Unknown //IL_0995: Unknown result type (might be due to invalid IL or missing references) //IL_099a: Unknown result type (might be due to invalid IL or missing references) //IL_09a2: Unknown result type (might be due to invalid IL or missing references) //IL_09aa: Unknown result type (might be due to invalid IL or missing references) //IL_09b8: Expected O, but got Unknown //IL_0a65: Unknown result type (might be due to invalid IL or missing references) ResetEverything(); disks.Add("Ex-37"); disks.Add("Ex-43"); disks.Add("Ex-67"); disks.Add("Ex-507"); disks.Add("Sub-12"); disks.Add("Sub-16"); disks.Add("Sub-30"); disks.Add("Sub-66"); disks.Add("Sub-100"); disks.Add("Sub-507"); disks.Add("Never Stopping"); if (NetworkManager.Singleton.IsHost) { LoadGameData(); } EnemyType longBoiType = ContentLoader.MainAssets.LoadAsset<EnemyType>("Assets/custom/diversity/walker/WalkerType.asset"); DiversityEnemy enemy = ContentLoader.MainAssets.LoadAsset<DiversityEnemy>("Assets/custom/diversity/Watcher/Watcher.asset"); if (Configuration.walker.Value) { SelectableLevel[] levels = StartOfRound.Instance.levels; foreach (SelectableLevel val in levels) { try { if (val.Enemies.All((SpawnableEnemyWithRarity x) => (Object)(object)x.enemyType != (Object)(object)longBoiType)) { val.Enemies.Add(new SpawnableEnemyWithRarity { enemyType = longBoiType, rarity = Mathf.Clamp(Configuration.walkerChance.Value, 0, 100) }); Diversity.mls.LogInfo((object)$"Added {longBoiType.enemyName} to {val.PlanetName} with chance of {Mathf.Clamp(Configuration.walkerChance.Value, 0, 100)} (inside)"); } } catch (Exception arg) { Diversity.mls.LogError((object)$"Failed to add enemy to {val.PlanetName}!\n{arg}"); } } } SelectableLevel[] levels2 = StartOfRound.Instance.levels; foreach (SelectableLevel level in levels2) { if (Configuration.watcher.Value) { DiversityAIManager.AddEnemyToLevel(enemy, level, Configuration.watcherWeight.Value); } } if (Configuration.posters.Value) { GameObject val2 = Object.Instantiate<GameObject>(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/Ship/Poster.prefab"), ((Component)StartOfRound.Instance.shipAnimator).gameObject.transform); GameObject val3 = Object.Instantiate<GameObject>(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/Ship/Poster2.prefab"), ((Component)StartOfRound.Instance.shipAnimator).gameObject.transform); GameObject val4 = Object.Instantiate<GameObject>(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/Ship/Poster3.prefab"), ((Component)Object.FindObjectOfType<Terminal>()).transform.parent.parent); GameObject val5 = Object.Instantiate<GameObject>(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/Ship/Poster4.prefab"), ((Component)StartOfRound.Instance.shipAnimator).gameObject.transform); val2.transform.localPosition = new Vector3(6.127f, 2.522f, -3.3222f); val2.transform.localRotation = Quaternion.Euler(94f, -90f, 90f); val2.transform.localScale = new Vector3(0.07532914f, 0.09989319f, 0.09989319f); val3.transform.localPosition = new Vector3(2.913536f, 2.375659f, -3.998f); val3.transform.localRotation = Quaternion.Euler(-267.82f, 67.851f, -90f); val3.transform.localScale = new Vector3(0.07f, 0.09282628f, 0.09282628f); val4.transform.localPosition = new Vector3(-0.5234725f, -0.5695019f, 1.313852f); val4.transform.localRotation = Quaternion.Euler(187.403f, -11.59302f, 90f); val4.transform.localScale = new Vector3(0.05222219f, 0.07079603f, 0.06852487f); val5.transform.localPosition = new Vector3(3.571537f, 2.2985616f, -9.593f); val5.transform.localRotation = Quaternion.Euler(82.973f, -70.838f, -92.301f); val5.transform.localScale = new Vector3(0.05f, 0.06630448f, 0.06630449f); ((MonoBehaviour)StartOfRound.Instance).StartCoroutine(WaitForWiderShip(val2, val3, val5)); } if (Configuration.brakenSpace.Value) { GameObject gameObject = ((Component)((Component)StartOfRound.Instance.mapScreenPlayerName).gameObject.transform.parent).gameObject; GameObject val6 = new GameObject("ErrorText"); val6.layer = 14; val6.AddComponent<RectTransform>(); val6.AddComponent<CanvasRenderer>(); TextMeshProUGUI val7 = val6.AddComponent<TextMeshProUGUI>(); ((TMP_Text)val7).font = ((TMP_Text)HUDManager.Instance.controlTipLines[0]).font; ((TMP_Text)val7).fontSize = 17f; ((TMP_Text)val7).alignment = (TextAlignmentOptions)514; ((TMP_Text)val7).overflowMode = (TextOverflowModes)0; ((TMP_Text)val7).text = "THEY ARE PAYING\nTHE PRICE"; ((Graphic)val7).color = Color.red; ((Behaviour)val7).enabled = true; val6.transform.SetParent(gameObject.transform); val6.transform.localPosition = Vector3.zero; val6.transform.localScale = new Vector3(2f, 2f, 2f); val6.transform.localRotation = Quaternion.identity; val6.SetActive(false); } if (Configuration.speaker.Value) { SetSpeakerLines(); } GameObject val8 = new GameObject("InteractText"); val8.AddComponent<RectTransform>(); TextMeshProUGUI val9 = val8.AddComponent<TextMeshProUGUI>(); RectTransform rectTransform = ((TMP_Text)val9).rectTransform; ((Transform)rectTransform).SetParent(((Component)HUDManager.Instance.UICamera).transform.parent.Find("Canvas/PlayerCursor"), false); rectTransform.anchoredPosition = new Vector2(0f, -51.7f); GameObject val10 = new GameObject("InteractBarHolder"); val10.AddComponent<RectTransform>(); Image val11 = val10.AddComponent<Image>(); val11.sprite = ContentLoader.MainAssets.LoadAsset<Sprite>("Assets/custom/diversity/hud/holder.png"); RectTransform component = ((Component)val11).GetComponent<RectTransform>(); ((Transform)component).SetParent(((Component)HUDManager.Instance.UICamera).transform.parent.Find("Canvas/PlayerCursor"), false); component.sizeDelta = new Vector2(133.33333f, 20f); component.anchoredPosition = new Vector2(0f, -81.7f); ((Behaviour)val11).enabled = false; holderBar = val11; GameObject val12 = new GameObject("InteractBarHolder"); val12.AddComponent<RectTransform>(); Image val13 = val12.AddComponent<Image>(); val13.sprite = ContentLoader.MainAssets.LoadAsset<Sprite>("Assets/custom/diversity/hud/bar.png"); RectTransform component2 = ((Component)val13).GetComponent<RectTransform>(); ((Transform)component2).SetParent(((Component)HUDManager.Instance.UICamera).transform.parent.Find("Canvas/PlayerCursor"), false); component2.sizeDelta = new Vector2(133.33333f, 20f); component2.anchoredPosition = new Vector2(0f, -81.7f); ((Behaviour)val13).enabled = false; clickBar = val13; ((TMP_Text)val9).alignment = (TextAlignmentOptions)514; ((TMP_Text)val9).font = ((TMP_Text)HUDManager.Instance.controlTipLines[0]).font; ((TMP_Text)val9).fontSize = 16f; ((TMP_Text)val9).text = text; ((Graphic)val9).color = color; ((TMP_Text)val9).overflowMode = (TextOverflowModes)0; ((Behaviour)val9).enabled = false; tipText = val9; haunted = ((Component)HUDManager.Instance).gameObject.AddComponent<Volume>(); haunted.profile = ContentLoader.MainAssets.LoadAsset<VolumeProfile>("Assets/custom/diversity/volumes/haunted.asset"); haunted.isGlobal = true; haunted.weight = 0f; haunted.sharedProfile = ContentLoader.MainAssets.LoadAsset<VolumeProfile>("Assets/custom/diversity/volumes/haunted.asset"); black = ((Component)HUDManager.Instance).gameObject.AddComponent<Volume>(); black.profile = ContentLoader.MainAssets.LoadAsset<VolumeProfile>("Assets/custom/diversity/volumes/black.asset"); black.isGlobal = true; black.weight = 0f; black.sharedProfile = ContentLoader.MainAssets.LoadAsset<VolumeProfile>("Assets/custom/diversity/volumes/black.asset"); if (CustomPostProcessingManager.Initialized) { PostProcess val14 = new PostProcess("WalkerPass", ContentLoader.extraAssets.LoadAsset<Material>("Assets/custom/diversity/extras/materials/WalkerStains.mat")) { InjectionType = (InjectionType)6, Enabled = false, Priority = -0.05f }; PostProcess val15 = new PostProcess("GlitchPass", ContentLoader.MainAssets.LoadAsset<Material>("Assets/custom/diversity/volumes/glitchPass.mat")) { InjectionType = (InjectionType)6 }; PostProcess val16 = new PostProcess("VignettePass", ContentLoader.MainAssets.LoadAsset<Material>("Assets/custom/diversity/volumes/Vignette.mat")) { InjectionType = (InjectionType)6, Priority = -0.2f }; PostProcess val17 = new PostProcess("EyePass", ContentLoader.MainAssets.LoadAsset<Material>("Assets/custom/diversity/volumes/EyesClose.mat")) { InjectionType = (InjectionType)6, Priority = -0.3f }; PostProcess val18 = new PostProcess("CameraPass", ContentLoader.MainAssets.LoadAsset<Material>("Assets/custom/diversity/volumes/Camera.mat")) { InjectionType = (InjectionType)6, Enabled = false, Priority = -0.1f }; fullscreenPass2 = CustomPostProcessingManager.Instance.AddPostProcess(val15); fullscreenPass = CustomPostProcessingManager.Instance.AddPostProcess(val16); eyeFSPass = CustomPostProcessingManager.Instance.AddPostProcess(val17); cameraFSPass = CustomPostProcessingManager.Instance.AddPostProcess(val18); walkerFSPass = CustomPostProcessingManager.Instance.AddPostProcess(val14); } else { CustomPostProcessingManager.OnLoad += Cpp_OnLoad; } if (!ES3.KeyExists("Never Stopping", GameNetworkManager.Instance.currentSaveFileName)) { SpawnDisk("Never Stopping", new Vector3(8.4f, 1.162f, -5.35f), insideShip: true, localPos: true); } } [IteratorStateMachine(typeof(<WaitForWiderShip>d__70))] private static IEnumerator WaitForWiderShip(GameObject poster, GameObject poster2, GameObject poster4) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <WaitForWiderShip>d__70(0) { poster = poster, poster2 = poster2, poster4 = poster4 }; } private static GameObject[] FindInActiveObjectsByName(string name) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Invalid comparison between Unknown and I4 List<GameObject> list = new List<GameObject>(); Transform[] array = Resources.FindObjectsOfTypeAll<Transform>(); for (int i = 0; i < array.Length; i++) { if ((int)((Object)array[i]).hideFlags == 0 && ((Object)((Component)array[i]).gameObject).name == name) { list.Add(((Component)array[i]).gameObject); } } return list.ToArray(); } private static void Cpp_OnLoad(object sender, EventArgs e) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Expected O, but got Unknown //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Expected O, but got Unknown //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Expected O, but got Unknown //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Expected O, but got Unknown PostProcess val = new PostProcess("WalkerPass", ContentLoader.extraAssets.LoadAsset<Material>("Assets/custom/diversity/extras/materials/WalkerStains.mat")) { InjectionType = (InjectionType)6, Enabled = false, Priority = -0.05f }; PostProcess val2 = new PostProcess("GlitchPass", ContentLoader.MainAssets.LoadAsset<Material>("Assets/custom/diversity/volumes/glitchPass.mat")) { InjectionType = (InjectionType)6 }; PostProcess val3 = new PostProcess("VignettePass", ContentLoader.MainAssets.LoadAsset<Material>("Assets/custom/diversity/volumes/Vignette.mat")) { InjectionType = (InjectionType)6, Priority = -0.2f }; PostProcess val4 = new PostProcess("EyePass", ContentLoader.MainAssets.LoadAsset<Material>("Assets/custom/diversity/volumes/EyesClose.mat")) { InjectionType = (InjectionType)6, Priority = -0.3f }; PostProcess val5 = new PostProcess("CameraPass", ContentLoader.MainAssets.LoadAsset<Material>("Assets/custom/diversity/volumes/Camera.mat")) { InjectionType = (InjectionType)6, Enabled = false, Priority = -0.1f }; fullscreenPass2 = CustomPostProcessingManager.Instance.AddPostProcess(val2); fullscreenPass = CustomPostProcessingManager.Instance.AddPostProcess(val3); eyeFSPass = CustomPostProcessingManager.Instance.AddPostProcess(val4); cameraFSPass = CustomPostProcessingManager.Instance.AddPostProcess(val5); walkerFSPass = CustomPostProcessingManager.Instance.AddPostProcess(val); CustomPostProcessingManager.OnLoad -= Cpp_OnLoad; } public static void SetupAssets() { brackenRoomTiles.Add(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/bracken/rooms/prefabs/hall1.prefab")); brackenRoomTiles.Add(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/bracken/rooms/prefabs/hall2.prefab")); brackenRoomTiles.Add(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/bracken/rooms/prefabs/hall3.prefab")); brackenRoomTiles.Add(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/bracken/rooms/prefabs/hall4.prefab")); brackenRoomTiles.Add(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/bracken/rooms/prefabs/hall5.prefab")); brackenRoomTiles.Add(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/bracken/rooms/prefabs/hall6.prefab")); brackenRoomTiles.Add(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/bracken/rooms/prefabs/hall7.prefab")); brackenRoomTiles.Add(ContentLoader.MainAssets.LoadAsset<GameObject>("Assets/custom/diversity/bracken/rooms/prefabs/hall8.prefab")); } public static void ToggleWalkerDoor(bool state) { ((Behaviour)it).enabled = !state; door.SetActive(!state); walkerDoor.SetActive(state); } public static void DisableSpeaker(AudioSource audio) { //IL_0050: Unknown result type (might be due to invalid IL or missing references) if (audio.isPlaying && Configuration.speaker.Value && !speakerDisabled) { speakerDisabled = true; if (!played) { float time = DiversitySoundManager.PlaySoundFloat(DiversitySoundManager.SoundType.SpeakerShutOff, random: true, audio.volume, 1f, loop: false, ((Component)audio).transform.position); ((MonoBehaviour)StartOfRound.Instance).StartCoroutine(EnableSpeaker(time)); } else { speakerDisabled = false; } } } [IteratorStateMachine(typeof(<EnableSpeaker>d__76))] public static IEnumerator EnableSpeaker(float time) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <EnableSpeaker>d__76(0) { time = time }; } public static void PlayShipSpeaker(DiversitySoundManager.SoundType soundType, bool random = true) { if (random) { AudioClip randomAudioClipByType = DiversitySoundManager.GetRandomAudioClipByType(soundType); if (Object.op_Implicit((Object)(object)randomAudioClipByType)) { StartOfRound.Instance.speakerAudioSource.PlayOneShot(randomAudioClipByType); } } else { AudioClip audioClipByType = DiversitySoundManager.GetAudioClipByType(soundType); if (Object.op_Implicit((Object)(object)audioClipByType)) { StartOfRound.Instance.speakerAudioSource.PlayOneShot(audioClipByType); } } } public static void GenerateRoom(int seed, Vector3 startPos, GameObject test, List<GameObject> prefabs, GameObject start, GameObject end, bool isTest) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) if (Configuration.brakenSpace.Value) { DiversityDungeonGen.WaitCoroutine(GenerateRoomRoutine(seed, startPos, test, prefabs, s
DiversityDungeonGen.dll
Decompiled 2 weeks agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using DiversityLib; using Microsoft.CodeAnalysis; using UnityEngine; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("DiversityDungeonGen")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("DiversityDungeonGen")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("24bf3e0e-40d9-4d2d-a557-cd66ca058005")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } } namespace DiversityDungeonGen { public class DiversityDungeonGen : MonoBehaviour { public class Dungeon { public List<GameObject> tiles = new List<GameObject>(); public int size = 0; public int maxHeight = 0; public int maxDepth = 0; } public GameObject[] tiles; private bool creatingTile = false; public static DiversityDungeonGen Instance { get; private set; } public static List<GameObject> RegisteredTiles { get; private set; } = new List<GameObject>(); public static Dungeon CurrentDungeon { get; private set; } = null; public static bool generating { get; private set; } private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; CurrentDungeon = new Dungeon(); Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject); } else { Object.Destroy((Object)(object)this); } } public static void RegisterTile(GameObject tile) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) Scene scene = tile.scene; if (((Scene)(ref scene)).name == null) { if (Object.op_Implicit((Object)(object)tile.GetComponent<DungeonTile>())) { RegisteredTiles.Add(tile); Debug.Log((object)("tile '" + tile.GetComponent<DungeonTile>().tileName + "' has been registered!")); } else { Debug.Log((object)(((Object)tile).name + " must be a Dungeon Tile!")); } } else { Debug.Log((object)(((Object)tile).name + " must not be an instance of a prefab!")); } } public void GenerateDungeon(int seed, DungeonTile startTile, int size = 100, int maxHeight = 20, int maxDepth = 20, bool debug = false) { if (debug) { ((MonoBehaviour)this).StartCoroutine(GenerateDungeonRoutine(seed, startTile, size, maxHeight, maxDepth, debug: true)); } else { WaitCoroutine(GenerateDungeonRoutine(seed, startTile, size, maxHeight, maxDepth, debug: false)); } } public static void WaitCoroutine(IEnumerator func) { while (func.MoveNext()) { if (func.Current == null) { continue; } IEnumerator func2; try { func2 = (IEnumerator)func.Current; } catch (InvalidCastException) { if (func.Current.GetType() == typeof(WaitForSeconds)) { Debug.LogWarning((object)"Skipped call to WaitForSeconds. Use WaitForSecondsRealtime instead."); } break; } WaitCoroutine(func2); } } private IEnumerator GenerateDungeonRoutine(int seed, DungeonTile startTile, int size, int maxHeight, int maxDepth, bool debug) { DeleteCurrentDungeon(); Random.InitState(seed); generating = true; CurrentDungeon.tiles.Add(((Component)startTile).gameObject); CurrentDungeon.size = size; CurrentDungeon.maxHeight = maxHeight; CurrentDungeon.maxDepth = maxDepth; Debug.Log((object)"GENERATING DUNGEON!"); while (generating) { yield return (object)new WaitUntil((Func<bool>)(() => !creatingTile)); if (debug) { yield return (object)new WaitForSeconds(0.5f); } if (SpaceLeft() <= 0) { generating = false; } if (creatingTile) { continue; } foreach (GameObject tile in CurrentDungeon.tiles.ToList()) { DungeonTile dTile = tile.GetComponent<DungeonTile>(); foreach (TileLink link in tile.GetComponent<DungeonTile>().tileLinks.Where((TileLink x) => !x.closed)) { if (Vector3.Distance(((Component)link).transform.position, ((Component)startTile).transform.position) > (float)size || ((Component)link).transform.position.y - ((Component)startTile).transform.position.y > (float)maxHeight || ((Component)link).transform.position.y - ((Component)startTile).transform.position.y < (float)(-maxDepth)) { Debug.Log((object)"Closing tile link!!!"); link.closed = true; if (Object.op_Implicit((Object)(object)link.wall)) { link.wall.SetActive(true); } } else { creatingTile = true; CreateRandomTile(link, dTile); } } } } if (!generating) { Debug.Log((object)"FINISHED GENERATING DUNGEON!!! CLEANING UP!"); CleanUp(); } yield return 0; } private void CleanUp() { CheckAllLinks(); } private void CheckAllLinks() { //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) TileLink[] allLinks = GetAllLinks(); TileLink[] array = allLinks; foreach (TileLink link in array) { TileLink[] array2 = allLinks.Where((TileLink x) => (Object)(object)x != (Object)(object)link).ToArray(); foreach (TileLink tileLink in array2) { if (Vector3.Distance(((Component)tileLink).transform.position, ((Component)link).transform.position) < 0.05f) { Debug.Log((object)"Opening walls of intersecting Links!"); link.closed = false; link.wall.SetActive(false); tileLink.closed = false; tileLink.wall.SetActive(false); } } } Debug.Log((object)"FINISHED CLEANING UP THE DUNGEON!!!"); } private TileLink[] GetAllLinks() { List<TileLink> list = new List<TileLink>(); foreach (GameObject tile in CurrentDungeon.tiles) { DungeonTile component = tile.GetComponent<DungeonTile>(); TileLink[] tileLinks = component.tileLinks; foreach (TileLink item in tileLinks) { list.Add(item); } } return list.ToArray(); } public void DeleteCurrentDungeon() { if (CurrentDungeon == null) { return; } Debug.Log((object)"Deleting the dungeon!!!"); foreach (GameObject item in CurrentDungeon.tiles.ToList()) { Object.Destroy((Object)(object)item); } CurrentDungeon = new Dungeon(); } private void CreateRandomTile(TileLink link, DungeonTile dTile) { //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) Debug.Log((object)"Creating a tile!!!"); GameObject val = SelectTile(); if ((Object)(object)val != (Object)null) { Debug.Log((object)("Is tiled closed??:" + link.closed)); if (SpaceLeft() > 0 && !link.closed) { if (CanUseThisTile(val)) { GameObject tile = Object.Instantiate<GameObject>(val, ((Component)link).transform.position, ((Component)link).transform.rotation); ShouldThisTileStay(tile, link, dTile); } else { CreateRandomTile(link, dTile); } } } else { link.closed = true; if (Object.op_Implicit((Object)(object)link.wall)) { link.wall.SetActive(true); } creatingTile = false; } } private void ShouldThisTileStay(GameObject tile, TileLink link, DungeonTile dTile) { //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: 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_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) GameObject tile2 = tile; DungeonTile dTile2 = dTile; bool flag = false; DungeonTile component = tile2.GetComponent<DungeonTile>(); foreach (GameObject item in CurrentDungeon.tiles.Where((GameObject x) => (Object)(object)x != (Object)(object)tile2 && (Object)(object)x != (Object)(object)((Component)dTile2).gameObject)) { Bounds bounds = ((Renderer)tile2.GetComponent<DungeonTile>().meshRenderer).bounds; Bounds bounds2 = ((Renderer)item.GetComponent<DungeonTile>().meshRenderer).bounds; if (((Bounds)(ref bounds)).Intersects(bounds2)) { Bounds val = default(Bounds); ((Bounds)(ref val)).SetMinMax(Vector3.Max(((Bounds)(ref bounds)).min, ((Bounds)(ref bounds2)).min), Vector3.Min(((Bounds)(ref bounds)).max, ((Bounds)(ref bounds2)).max)); if (DiversityLib.Volume(((Bounds)(ref val)).size) > 1f) { flag = true; break; } } } if (flag) { Debug.Log((object)(component.tileName + " Is intersecting and will be deleted!")); Object.Destroy((Object)(object)tile2); link.closed = true; if (Object.op_Implicit((Object)(object)link.wall)) { link.wall.SetActive(true); } } else { Debug.Log((object)"Tile is good. Keeping it for the dungeon."); CurrentDungeon.tiles.Add(tile2); link.closed = true; CloseNearbyLink(link, tile2.GetComponent<DungeonTile>()); } creatingTile = false; } private void CloseNearbyLink(TileLink link, DungeonTile tile) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) float num = 1000f; TileLink tileLink = null; TileLink[] tileLinks = tile.tileLinks; foreach (TileLink tileLink2 in tileLinks) { float num2 = Vector3.Distance(((Component)link).transform.position, ((Component)tileLink2).transform.position); if (num2 < num) { num = num2; tileLink = tileLink2; } } if ((Object)(object)tileLink != (Object)null) { tileLink.closed = true; } } private TileLink ClosestLink(TileLink link, DungeonTile tile) { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) float num = 1000f; TileLink result = null; TileLink[] tileLinks = tile.tileLinks; foreach (TileLink tileLink in tileLinks) { float num2 = Vector3.Distance(((Component)link).transform.position, ((Component)tileLink).transform.position); if (num2 < num) { num = num2; result = tileLink; } } return result; } private GameObject SelectTile() { GameObject[] array = (from x in RegisteredTiles.Union(Instance.tiles.ToList()) where x.GetComponent<DungeonTile>().isMandatory where CurrentDungeon.tiles.Any((GameObject y) => Object.op_Implicit((Object)(object)(x = y))) select x).ToArray(); if (SpaceLeft() <= array.Length && array.Length != 0) { return array[Random.Range(0, array.Length)]; } float num = (float)AmountOfTiles() / (float)(CurrentDungeon.size * (CurrentDungeon.maxHeight + CurrentDungeon.maxDepth)); Debug.Log((object)("Does the dungeon have enough space: " + (AmountOfTiles() <= CurrentDungeon.size))); if (AmountOfTiles() <= CurrentDungeon.size || !(Random.value <= 0.15f + num)) { return RegisteredTiles.Union(Instance.tiles.ToList()).ToList()[Random.Range(0, RegisteredTiles.Union(Instance.tiles.ToList()).ToList().Count)]; } Debug.Log((object)"Not Generating This Tile!"); return null; } private bool CanUseThisTile(GameObject tile) { GameObject tile2 = tile; return (CurrentDungeon.tiles.Where((GameObject x) => x.GetComponent<DungeonTile>().tileName == tile2.GetComponent<DungeonTile>().tileName).ToArray().Length < tile2.GetComponent<DungeonTile>().maxAmount && tile2.GetComponent<DungeonTile>().isLimited) || !tile2.GetComponent<DungeonTile>().isLimited; } private int SpaceLeft() { int num = 0; Debug.Log((object)CurrentDungeon.tiles.Count); if (CurrentDungeon.tiles.Count <= 0) { return 0; } foreach (GameObject tile in CurrentDungeon.tiles) { DungeonTile component = tile.GetComponent<DungeonTile>(); if (Object.op_Implicit((Object)(object)component)) { num += component.tileLinks.Where((TileLink x) => !x.closed).Count(); } else { Debug.LogError((object)"Something happened when trying to look for space left while generating a dungeon!"); } } return num; } private int AmountOfTiles() { return CurrentDungeon.tiles.Count; } } public class DungeonTile : MonoBehaviour { public string tileName; public float probability; public MeshRenderer meshRenderer; public TileLink[] tileLinks; public bool isMandatory; public bool isLimited; public int maxAmount; } public class TileLink : MonoBehaviour { public GameObject wall; public bool closed = false; } }
DiversityLib.dll
Decompiled 2 weeks agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("DiversityLib")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("DiversityLib")] [assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("f3aa347e-bdfa-4c6a-b93f-1429e4f206c4")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } } namespace DiversityLib { public static class DiversityLib { public static Texture2D RenderToTexture2D(this RenderTexture rTex) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Expected O, but got Unknown //IL_0035: Unknown result type (might be due to invalid IL or missing references) Texture2D val = new Texture2D(((Texture)rTex).width, ((Texture)rTex).height, (TextureFormat)4, false); RenderTexture.active = rTex; val.ReadPixels(new Rect(0f, 0f, (float)((Texture)rTex).width, (float)((Texture)rTex).height), 0, 0); val.Apply(); return val; } public static Color[] GetPixels(this RenderTexture texture) { Texture2D val = texture.RenderToTexture2D(); return val.GetPixels(); } public static float CalculateAverageLuminance(this RenderTexture texture, bool useAlpha = false) { //IL_002d: 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_0036: Unknown result type (might be due to invalid IL or missing references) Texture2D val = texture.RenderToTexture2D(); float num = ((Texture)val).width * ((Texture)val).height; float num2 = 0f; Color[] pixels = val.GetPixels(); foreach (Color color in pixels) { num2 += color.CalculateLuminance(useAlpha); } return num2 / num; } public static float CalculateAverageLuminance(this Texture2D texture, bool useAlpha = false) { //IL_0024: 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_002d: Unknown result type (might be due to invalid IL or missing references) float num = ((Texture)texture).width * ((Texture)texture).height; float num2 = 0f; Color[] pixels = texture.GetPixels(); foreach (Color color in pixels) { num2 += color.CalculateLuminance(useAlpha); } return num2 / num; } public static float CalculateAverageLuminance(this Color[] colorArray, bool useAlpha = false) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: 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) float num = colorArray.Length; float num2 = 0f; foreach (Color color in colorArray) { num2 += color.CalculateLuminance(useAlpha); } return num2 / num; } public static Color AverageDifference(this Texture2D texture, Texture2D secondTexture) { //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0058: 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_006f: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0097: 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) float num = ((Texture)texture).width * ((Texture)texture).height; float num2 = 0f; float num3 = 0f; float num4 = 0f; float num5 = 0f; for (int i = 0; i < ((Texture)texture).width; i++) { for (int j = 0; j < ((Texture)texture).height; j++) { Color pixel = texture.GetPixel(i, j); Color pixel2 = secondTexture.GetPixel(i, j); num2 += Mathf.Abs(pixel.r - pixel2.r); num3 += Mathf.Abs(pixel.g - pixel2.g); num4 += Mathf.Abs(pixel.b - pixel2.b); num5 += Mathf.Abs(pixel.a - pixel2.a); } } num2 /= num; num3 /= num; num4 /= num; num5 /= num; return new Color(num2, num3, num4, num5); } public static float BW(this Color col) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) return col.r + col.g + col.b; } public static float CalculateLuminance(this Color color, bool useAlpha = false) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0017: 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_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) return 0.299f * color.r * (useAlpha ? color.a : 1f) + 0.587f * color.g * (useAlpha ? color.a : 1f) + 0.114f * color.b * (useAlpha ? color.a : 1f); } public static Color GetAverageRGBA(this RenderTexture texture) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) Texture2D texture2 = texture.RenderToTexture2D(); return texture2.GetAverageRGBA(); } public static Color GetAverageRGBA(this Texture2D texture) { //IL_003b: 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_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0058: 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_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) float num = ((Texture)texture).width * ((Texture)texture).height; float num2 = 0f; float num3 = 0f; float num4 = 0f; float num5 = 0f; Color[] pixels = texture.GetPixels(); foreach (Color val in pixels) { num2 += val.r; num3 += val.g; num4 += val.b; num5 += val.a; } return new Color(num2 / num, num3 / num, num4 / num, num5 / num); } public static Color GetAverageRGBA(this Color[] colorArray) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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) float num = colorArray.Length; float num2 = 0f; float num3 = 0f; float num4 = 0f; float num5 = 0f; foreach (Color val in colorArray) { num2 += val.r; num3 += val.g; num4 += val.b; num5 += val.a; } return new Color(num2 / num, num3 / num, num4 / num, num5 / num); } public static float Remap(this float value, float from1, float to1, float from2, float to2) { return (value - from1) / (to1 - from1) * (to2 - from2) + from2; } public static float OneMinus(this float f) { return 1f - f; } public static float Negate(this float f) { return 0f - f; } public static uint Random(this uint u) { Random random = new Random(); uint num = (uint)random.Next(1073741824); uint num2 = (uint)random.Next(4); return (num << 2) | num2; } public static float Volume(this Vector3 v3) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) return v3.x * v3.y * v3.z; } } }