Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of PoolRooms v0.1.24
BepInEx/Plugins/PoolRooms/PoolRoomsBehaviours.dll
Decompiled 11 hours agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using GameNetcodeStuff; using Microsoft.CodeAnalysis; using PoolRoomsBehaviours.NetcodePatcher; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("PoolRoomsBehaviours")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Pool Rooms Behaviours")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+4adf9b450b8b4eabcda667061edaee9904920920")] [assembly: AssemblyProduct("PoolRoomsBehaviours")] [assembly: AssemblyTitle("PoolRoomsBehaviours")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] internal class <Module> { static <Module>() { } } namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace PoolRooms { public class PoolLightBehaviour : MonoBehaviour { public Light LightToUpdate; public Color RedAlertColor = Color.red; public void OnApparatusPulled() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) LightToUpdate.color = RedAlertColor; } } public class PoolRoomsWaterBehaviour : MonoBehaviour { public static string BehaviorsVer = "6"; public AudioSource SplashSound; public AudioSource WaterMovementSound; public ParticleSystem SplashParticles; public Vector3 LastPosition = Vector3.zero; public float NextSplashTime; public List<AudioClip> SplashSounds = new List<AudioClip>(); private void Awake() { NextSplashTime = Time.unscaledTime; SplashSound.volume = 0f; } public AudioClip GetRandomSplashSound() { return SplashSounds[Random.Range(0, SplashSounds.Count)]; } } public class PoolRoomsWaterTrigger : MonoBehaviour { public bool isWater; public int audioClipIndex; [Space(5f)] public bool sinkingLocalPlayer; public float movementHinderance = 1.6f; public float sinkingSpeedMultiplier = 0.15f; public Transform WaterSurface; public GameObject WaterBehaviourPrefab; private List<Transform> EnteredThingTransforms = new List<Transform>(); private List<GameObject> WaterMovementsWeCreated = new List<GameObject>(); private static string PoolRoomsWaterMovementTag = "PoolRoomsWaterMovement"; private void OnDestroy() { foreach (GameObject item in WaterMovementsWeCreated) { if ((Object)(object)item != (Object)null) { Object.Destroy((Object)(object)item); } } WaterMovementsWeCreated.Clear(); } public static PoolRoomsWaterBehaviour FindGameObjectChildWaterBehaviour(GameObject parent) { Transform transform = parent.transform; for (int i = 0; i < transform.childCount; i++) { PoolRoomsWaterBehaviour component = ((Component)transform.GetChild(i)).gameObject.GetComponent<PoolRoomsWaterBehaviour>(); if (Object.op_Implicit((Object)(object)component)) { return component; } } return null; } private static float FInterpTo(float Current, float Target, float DeltaTime, float InterpSpeed) { if (InterpSpeed <= 0f) { return Target; } float num = Target - Current; if (num * num < 1E-08f) { return Target; } float num2 = num * Mathf.Clamp(DeltaTime * InterpSpeed, 0f, 1f); return Current + num2; } private void Update() { //IL_003e: 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_0059: 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_0073: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: 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_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) List<Transform> list = new List<Transform>(); foreach (Transform enteredThingTransform in EnteredThingTransforms) { PoolRoomsWaterBehaviour poolRoomsWaterBehaviour = FindGameObjectChildWaterBehaviour(((Component)enteredThingTransform).gameObject); if (!((Object)(object)poolRoomsWaterBehaviour != (Object)null)) { continue; } ((Component)poolRoomsWaterBehaviour).transform.position = new Vector3(enteredThingTransform.position.x, WaterSurface.position.y, enteredThingTransform.position.z); bool flag = Mathf.Abs(WaterSurface.position.y - enteredThingTransform.position.y) > 1.1f; Vector3 val = poolRoomsWaterBehaviour.LastPosition - enteredThingTransform.position; float magnitude = ((Vector3)(ref val)).magnitude; if (magnitude > 5f) { list.Add(enteredThingTransform); continue; } bool flag2 = magnitude > 0.04f * Time.deltaTime; poolRoomsWaterBehaviour.LastPosition = enteredThingTransform.position; float volume = poolRoomsWaterBehaviour.WaterMovementSound.volume; volume = FInterpTo(volume, (!flag2) ? 0f : (flag ? 0.3f : 1f), Time.deltaTime, 2f); poolRoomsWaterBehaviour.WaterMovementSound.volume = volume; if (!flag2) { poolRoomsWaterBehaviour.NextSplashTime = Time.unscaledTime + 0.5f; } else if (poolRoomsWaterBehaviour.NextSplashTime <= Time.unscaledTime) { poolRoomsWaterBehaviour.NextSplashTime = Time.unscaledTime + ((magnitude > 0.1f) ? 0.3f : 0.5f); poolRoomsWaterBehaviour.SplashParticles.Play(); poolRoomsWaterBehaviour.SplashSound.clip = poolRoomsWaterBehaviour.GetRandomSplashSound(); poolRoomsWaterBehaviour.SplashSound.volume = ((magnitude > 0.1f) ? 0.15f : 0.05f); poolRoomsWaterBehaviour.SplashSound.Play(); } } foreach (Transform item in list) { EnteredThingTransforms.Remove(item); PoolRoomsWaterBehaviour poolRoomsWaterBehaviour2 = FindGameObjectChildWaterBehaviour(((Component)item).gameObject); if ((Object)(object)poolRoomsWaterBehaviour2 != (Object)null) { poolRoomsWaterBehaviour2.WaterMovementSound.Stop(); } } } private void OnTriggerEnter(Collider other) { //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_0080: 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_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) if (!isWater || !((Component)other).gameObject.CompareTag("Player")) { return; } PlayerControllerB component = ((Component)other).gameObject.GetComponent<PlayerControllerB>(); if ((Object)(object)component != (Object)null) { EnteredThingTransforms.Add(((Component)component).transform); PoolRoomsWaterBehaviour poolRoomsWaterBehaviour = FindGameObjectChildWaterBehaviour(((Component)component).gameObject); if ((Object)(object)poolRoomsWaterBehaviour == (Object)null) { MonoBehaviour.print((object)"Creating new WaterBehaviourPrefab"); GameObject obj = Object.Instantiate<GameObject>(WaterBehaviourPrefab, new Vector3(0f, 0f, 0f), Quaternion.Euler(-90f, 0f, 0f)); obj.transform.parent = ((Component)component).transform; obj.transform.localPosition = Vector3.zero; obj.transform.localRotation = Quaternion.Euler(-90f, 0f, 0f); poolRoomsWaterBehaviour = obj.GetComponent<PoolRoomsWaterBehaviour>(); } poolRoomsWaterBehaviour.LastPosition = ((Component)component).transform.position; poolRoomsWaterBehaviour.WaterMovementSound.Play(); poolRoomsWaterBehaviour.WaterMovementSound.volume = 0f; } } public void OnLocalPlayerTeleported(PlayerControllerB player) { if ((Object)(object)player != (Object)null) { EnteredThingTransforms.Remove(((Component)player).transform); PoolRoomsWaterBehaviour poolRoomsWaterBehaviour = FindGameObjectChildWaterBehaviour(((Component)player).gameObject); if ((Object)(object)poolRoomsWaterBehaviour != (Object)null) { poolRoomsWaterBehaviour.WaterMovementSound.Stop(); } } } private void OnTriggerExit(Collider other) { if (!isWater || !((Component)other).gameObject.CompareTag("Player")) { return; } PlayerControllerB component = ((Component)other).gameObject.GetComponent<PlayerControllerB>(); if ((Object)(object)component != (Object)null) { EnteredThingTransforms.Remove(((Component)component).transform); PoolRoomsWaterBehaviour poolRoomsWaterBehaviour = FindGameObjectChildWaterBehaviour(((Component)component).gameObject); if ((Object)(object)poolRoomsWaterBehaviour != (Object)null) { poolRoomsWaterBehaviour.WaterMovementSound.Stop(); } } } } } namespace PoolRoomsBehaviours.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }