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 Porta Punishment v2.1.0
PortaPunishment/LC_PortaPunishment.dll
Decompiled 2 years agousing System; using System.Collections; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Unity.Netcode; 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("LC_PortaPunishment")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("LC_PortaPunishment")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("4A9D61E3-5459-463F-82C2-99D4CB4C90A1")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace LC_PortaPunishment; public struct AudioAssets { public AudioClip voiceMessage; public AudioClip executionMusic; public AudioAssets(AudioClip voiceMessage, AudioClip executionMusic) { this.voiceMessage = voiceMessage; this.executionMusic = executionMusic; } } public static class BundleLoader { public static AudioAssets Load() { //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Expected O, but got Unknown //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Expected O, but got Unknown string text = ((BaseUnityPlugin)ModBase.Instance).Info.Location.TrimEnd("LC_PortaPunishment.dll".ToCharArray()) + "portapunishmentbundle"; ModBase.Instance.MLS.LogInfo((object)("Using AssetBundlePath: " + text)); AssetBundle val = AssetBundle.LoadFromFile(text); Object[] source = val.LoadAllAssets(); AudioClip val2 = (AudioClip)source.Where((Object t) => t.name == "VoiceMessage").FirstOrDefault(); AudioClip val3 = (AudioClip)source.Where((Object t) => t.name == "ExecutionMusic").FirstOrDefault(); if (val2.length < 1f) { ModBase.Instance.MLS.LogError((object)"VoiceMessage is too short!"); } if (val3.length < 1f) { ModBase.Instance.MLS.LogError((object)"ExecutionMusic is too short!"); } return new AudioAssets(val2, val3); } } [HarmonyPatch(typeof(StartOfRound))] public class ExecutionPatch { [HarmonyPostfix] [HarmonyPatch("playersFiredGameOver")] public static IEnumerator Patch(IEnumerator result, StartOfRound __instance) { result = Event(__instance); return result; } private static IEnumerator Event(StartOfRound __instance) { __instance.shipDoorAudioSource.PlayOneShot(ModBase.Instance.AudioAssets.executionMusic); yield return (object)new WaitForSeconds(13.5f); __instance.speakerAudioSource.PlayOneShot(ModBase.Instance.AudioAssets.voiceMessage); yield return (object)new WaitForSeconds(28.13f); ((Component)__instance.shipAnimatorObject).gameObject.GetComponent<Animator>().SetBool("AlarmRinging", true); __instance.shipRoomLights.SetShipLightsOnLocalClientOnly(false); __instance.shipDoorAudioSource.PlayOneShot(__instance.alarmSFX); yield return (object)new WaitForSeconds(9.37f); __instance.shipDoorsAnimator.SetBool("OpenInOrbit", true); __instance.shipDoorAudioSource.PlayOneShot(__instance.airPressureSFX); __instance.starSphereObject.SetActive(true); __instance.starSphereObject.transform.position = ((Component)GameNetworkManager.Instance.localPlayerController).transform.position; yield return (object)new WaitForSeconds(0.25f); __instance.suckingPlayersOutOfShip = true; __instance.suckingFurnitureOutOfShip = true; PlaceableShipObject[] array = Object.FindObjectsOfType<PlaceableShipObject>(); for (int i = 0; i < array.Length; i++) { if ((Object)(object)array[i].parentObject == (Object)null) { Debug.Log((object)("Error! No parentObject for placeable object: " + __instance.unlockablesList.unlockables[array[i].unlockableID].unlockableName)); } array[i].parentObject.StartSuckingOutOfShip(); if (__instance.unlockablesList.unlockables[array[i].unlockableID].spawnPrefab) { Collider[] componentsInChildren = ((Component)array[i].parentObject).GetComponentsInChildren<Collider>(); for (int j = 0; j < componentsInChildren.Length; j++) { componentsInChildren[j].enabled = false; } } } GameNetworkManager.Instance.localPlayerController.inSpecialInteractAnimation = true; GameNetworkManager.Instance.localPlayerController.DropAllHeldItems(true, false); HUDManager.Instance.UIAudio.PlayOneShot(__instance.suckedIntoSpaceSFX); yield return (object)new WaitForSeconds(6f); SoundManager.Instance.SetDiageticMixerSnapshot(3, 2f); HUDManager.Instance.ShowPlayersFiredScreen(true); yield return (object)new WaitForSeconds(2f); __instance.starSphereObject.SetActive(false); __instance.shipDoorAudioSource.Stop(); __instance.speakerAudioSource.Stop(); __instance.suckingFurnitureOutOfShip = false; if (((NetworkBehaviour)__instance).IsServer) { GameNetworkManager.Instance.ResetSavedGameValues(); } Debug.Log((object)"Calling reset ship!"); __instance.ResetShip(); Object.FindObjectOfType<Terminal>().SetItemSales(); yield return (object)new WaitForSeconds(6f); ((Component)__instance.shipAnimatorObject).gameObject.GetComponent<Animator>().SetBool("AlarmRinging", false); GameNetworkManager.Instance.localPlayerController.TeleportPlayer(__instance.playerSpawnPositions[(int)(IntPtr)checked((long)GameNetworkManager.Instance.localPlayerController.playerClientId)].position, false, 0f, false, true); __instance.shipDoorsAnimator.SetBool("OpenInOrbit", false); __instance.currentPlanetPrefab.transform.position = ((Component)__instance.planetContainer).transform.position; __instance.suckingPlayersOutOfShip = false; typeof(StartOfRound).GetField("choseRandomFlyDirForPlayer", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(__instance, false); __instance.suckingPower = 0f; __instance.shipRoomLights.SetShipLightsOnLocalClientOnly(true); yield return (object)new WaitForSeconds(2f); if (((NetworkBehaviour)__instance).IsServer) { FieldInfo reviedField = typeof(StartOfRound).GetField("playersRevived", BindingFlags.Instance | BindingFlags.NonPublic); reviedField.SetValue(__instance, (int)reviedField.GetValue(__instance) + 1); yield return (object)new WaitUntil((Func<bool>)(() => (int)reviedField.GetValue(__instance) >= GameNetworkManager.Instance.connectedPlayers)); reviedField.SetValue(__instance, 0); __instance.EndPlayersFiredSequenceClientRpc(); } else { __instance.PlayerHasRevivedServerRpc(); } } } [BepInPlugin("com.porta137.portapunishment", "PortaPunishment", "1.0.0")] public class ModBase : BaseUnityPlugin { private const string GUID = "com.porta137.portapunishment"; private const string NAME = "PortaPunishment"; private const string VERSION = "1.0.0"; public Harmony harmony = new Harmony("com.porta137.portapunishment"); public static ModBase Instance; internal ManualLogSource MLS; public AudioAssets AudioAssets; private void Awake() { if (!Object.op_Implicit((Object)(object)Instance)) { Instance = this; } MLS = Logger.CreateLogSource("com.porta137.portapunishment"); MLS.LogInfo((object)"Loading Portas Punishment"); AudioAssets = BundleLoader.Load(); MLS.LogInfo((object)"Bundle loaded, patching..."); harmony.PatchAll(); MLS.LogInfo((object)"Mod loading Complete!"); } }