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 SDC Test Mod v0.0.3
TestLCMod.dll
Decompiled 2 years agousing System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using TestLCMod.Helpers; using TestLCMod.Patches; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("TestLCMod")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("TestLCMod")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("a47b7a78-c334-49eb-b647-dafe5266f9a2")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace TestLCMod { [BepInPlugin("SneakyDeeCee.TestLCMod", "LC Tutorial Mod", "1.0.0.0")] public class TestLCModeBase : BaseUnityPlugin { private const string modGUID = "SneakyDeeCee.TestLCMod"; private const string modName = "LC Tutorial Mod"; private const string modVersion = "1.0.0.0"; private readonly Harmony harmony = new Harmony("SneakyDeeCee.TestLCMod"); public static TestLCModeBase Instance; public static ManualLogSource mls; internal static PlayerControllerB playerRef; internal static StartOfRound startOfRoundRef; internal static bool didSpawnTestBody; internal static bool isReviving; internal static bool isTesting; public Reviver reviver; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } mls = Logger.CreateLogSource("SneakyDeeCee.TestLCMod"); mls.LogInfo((object)"The test mod has awoken!!"); reviver = new Reviver(); harmony.PatchAll(typeof(TestLCModeBase)); harmony.PatchAll(typeof(PlayerControllerBPatch)); } public void revivePlayer(int reviverId, int playerId) { if (!isReviving) { isReviving = true; mls.LogInfo((object)("Reviving Player (id:" + playerId + ")")); reviver.revivePlayerServerRpc(reviverId, playerId); isReviving = false; } } } } namespace TestLCMod.Patches { [HarmonyPatch(typeof(PlayerControllerB))] internal class PlayerControllerBPatch { [HarmonyPatch("Update")] [HarmonyPostfix] private static void checkHoldingPlayer(ref PlayerControllerB __instance) { //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: 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_00b6: 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) for (int i = 0; i < __instance.ItemSlots.Length; i++) { GrabbableObject val = __instance.ItemSlots[i]; if ((Object)(object)val != (Object)null) { if (i == 0 && !TestLCModeBase.didSpawnTestBody && TestLCModeBase.isTesting) { TestLCModeBase.didSpawnTestBody = true; TestLCModeBase.mls.LogInfo((object)"Spawning TEST BODY"); Object.Instantiate<GameObject>(__instance.playersManager.playerRagdolls[0], __instance.thisPlayerBody.position + Vector3.up * 1.32f, __instance.thisPlayerBody.rotation, (Transform)null); GameObject obj = Object.Instantiate<GameObject>(StartOfRound.Instance.ragdollGrabbableObjectPrefab, __instance.thisPlayerBody.position + Vector3.up * 1.32f, __instance.thisPlayerBody.rotation, (Transform)null); obj.GetComponent<RagdollGrabbableObject>().testBody = true; obj.GetComponent<NetworkObject>().Spawn(false); } if (((object)val).GetType() == typeof(RagdollGrabbableObject)) { int playerObjectId = ((Component)val).GetComponent<RagdollGrabbableObject>().ragdoll.playerObjectId; TestLCModeBase.Instance.revivePlayer((int)__instance.actualClientId, playerObjectId); } } } } } } namespace TestLCMod.Helpers { public class Reviver : NetworkBehaviour { [ServerRpc(RequireOwnership = false)] public void revivePlayerServerRpc(int reviverId, int toReviveId) { TestLCModeBase.mls.LogInfo((object)("[SERVER]: Player " + reviverId + " is reviving player " + toReviveId)); revivePlayerClientRpc(reviverId, toReviveId); } [ClientRpc] public void revivePlayerClientRpc(int reviverId, int toReviveId) { //IL_0118: Unknown result type (might be due to invalid IL or missing references) TestLCModeBase.mls.LogInfo((object)("[CLIENT]: Player " + reviverId + " is reviving player " + toReviveId)); PlayerControllerB val = null; GameObject val2 = StartOfRound.Instance.allPlayerObjects[toReviveId]; for (int i = 0; i < StartOfRound.Instance.allPlayerScripts.Length; i++) { if ((int)StartOfRound.Instance.allPlayerScripts[i].playerClientId == toReviveId) { val = StartOfRound.Instance.allPlayerScripts[i]; break; } } TestLCModeBase.mls.LogInfo((object)"After finding player"); if (!val.isPlayerDead) { TestLCModeBase.mls.LogInfo((object)("Player " + toReviveId + " already revived")); return; } val.ResetPlayerBloodObjects(val.isPlayerDead); val.isClimbingLadder = false; val.ResetZAndXRotation(); ((Collider)val.thisController).enabled = true; val.health = 100; val.isPlayerDead = false; val.isPlayerControlled = true; val.isInElevator = true; val.isInHangarShipRoom = true; val.isInsideFactory = false; val.wasInElevatorLastFrame = false; StartOfRound.Instance.SetPlayerObjectExtrapolate(false); val.TeleportPlayer(StartOfRound.Instance.playerSpawnPositions[0].position, false, 0f, false, true); val.setPositionOfDeadPlayer = false; val.DisablePlayerModel(val2, true, true); ((Behaviour)val.helmetLight).enabled = false; val.Crouch(false); val.criticallyInjured = false; if ((Object)(object)val.playerBodyAnimator != (Object)null) { val.playerBodyAnimator.SetBool("Limp", false); } val.bleedingHeavily = false; val.activatingItem = false; val.twoHanded = false; val.inSpecialInteractAnimation = false; val.inAnimationWithEnemy = null; val.holdingWalkieTalkie = false; val.speakingToWalkieTalkie = false; val.isSinking = false; val.isUnderwater = false; val.sinkingValue = 0f; val.statusEffectAudio.Stop(); val.DisableJetpackControlsLocally(); val.health = 100; val.mapRadarDotAnimator.SetBool("dead", false); if (((NetworkBehaviour)val).IsOwner) { HUDManager.Instance.gasHelmetAnimator.SetBool("gasEmitting", false); val.hasBegunSpectating = false; HUDManager.Instance.RemoveSpectateUI(); HUDManager.Instance.gameOverAnimator.SetTrigger("revive"); val.hinderedMultiplier = 1f; val.isMovementHindered = 0; val.sourcesCausingSinking = 0; val.reverbPreset = StartOfRound.Instance.shipReverb; } val.voiceMuffledByEnemy = false; SoundManager.Instance.playerVoicePitchTargets[toReviveId] = 1f; SoundManager.Instance.SetPlayerPitch(1f, toReviveId); if ((Object)(object)val.currentVoiceChatIngameSettings == (Object)null) { StartOfRound.Instance.RefreshPlayerVoicePlaybackObjects(); } if ((Object)(object)val.currentVoiceChatIngameSettings != (Object)null) { if ((Object)(object)val.currentVoiceChatIngameSettings.voiceAudio == (Object)null) { val.currentVoiceChatIngameSettings.InitializeComponents(); } if ((Object)(object)val.currentVoiceChatIngameSettings.voiceAudio == (Object)null) { return; } ((Component)val.currentVoiceChatIngameSettings.voiceAudio).GetComponent<OccludeAudio>().overridingLowPass = false; } PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController; localPlayerController.bleedingHeavily = false; localPlayerController.criticallyInjured = false; localPlayerController.playerBodyAnimator.SetBool("Limp", false); localPlayerController.health = 100; HUDManager.Instance.UpdateHealthUI(100, false); localPlayerController.spectatedPlayerScript = null; ((Behaviour)HUDManager.Instance.audioListenerLowPass).enabled = false; StartOfRound.Instance.SetSpectateCameraToGameOverMode(false, localPlayerController); StartOfRound instance = StartOfRound.Instance; instance.livingPlayers++; StartOfRound.Instance.UpdatePlayerVoiceEffects(); } } }