using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using Microsoft.CodeAnalysis; using Photon.Pun; using TMPro; using TrollPack.Mods; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.SceneManagement; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Trollpack")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Trollpack")] [assembly: AssemblyTitle("Trollpack")] [assembly: AssemblyVersion("1.0.0.0")] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [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] [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 TrollPack { [BepInPlugin("com.palmstudio.trollpack", "Mod TrollPack REPO", "1.0.0")] public class MainPlugin : BaseUnityPlugin { [HarmonyPatch(typeof(PlayerAvatar), "Jump")] private class PlayerJumpPatch { [HarmonyPostfix] private static void Postfix(PlayerController __instance) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) if (ModConfigManager.IsEnabled("scream_machine") && !((Object)(object)FartSound == (Object)null)) { AudioSource.PlayClipAtPoint(FartSound, ((Component)__instance).transform.position); } } } [HarmonyPatch(typeof(PlayerAvatar), "Land")] private class PlayerLandPatch { [HarmonyPostfix] private static void Postfix(PlayerController __instance) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) if (ModConfigManager.IsEnabled("scream_machine") && !((Object)(object)SadTromboneSound == (Object)null)) { AudioSource.PlayClipAtPoint(SadTromboneSound, ((Component)__instance).transform.position); } } } [HarmonyPatch(/*Could not decode attribute arguments.*/)] private class CursorVisiblePatch { [HarmonyPrefix] private static bool Prefix(bool value) { if ((Object)(object)TrollPanelManager.Instance != (Object)null && TrollPanelManager.Instance.isPanelOpen && !value) { return false; } return true; } } [HarmonyPatch(/*Could not decode attribute arguments.*/)] private class CursorLockPatch { [HarmonyPrefix] private static bool Prefix(CursorLockMode value) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Invalid comparison between Unknown and I4 if ((Object)(object)TrollPanelManager.Instance != (Object)null && TrollPanelManager.Instance.isPanelOpen && (int)value == 1) { return false; } return true; } } public static AssetBundle SfxBundle; public static AudioClip FartSound; public static AudioClip SadTromboneSound; public static AudioClip BuzzerSound; public static AudioClip MimicCallsSound; public static GameObject ControlPanelPrefab; public static GameObject ControlPanelInstance; public static ConfigEntry FakeEnabled; public static ConfigEntry FakePercent; private Harmony harmony; private void Awake() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown InitializeConfig(); LoadAssetBundle(); SceneManager.sceneLoaded += OnSceneLoaded; harmony = new Harmony("com.palmstudio.trollpack"); harmony.PatchAll(); Debug.Log((object)"[TrollPack] Plugin berhasil diinisialisasi."); } private void InitializeConfig() { FakeEnabled = ((BaseUnityPlugin)this).Config.Bind("Fake Valuable", "Enabled", true, "Mengaktifkan atau menonaktifkan Fake Valuable."); FakePercent = ((BaseUnityPlugin)this).Config.Bind("Fake Valuable", "FakePercent", 0.3f, "Peluang item menjadi palsu (0 - 1)."); } private void LoadAssetBundle() { string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string text = Path.Combine(directoryName, "trollpacksfx"); if (!File.Exists(text)) { Debug.LogWarning((object)("[TrollPack] Asset Bundle tidak ditemukan: " + text)); return; } SfxBundle = AssetBundle.LoadFromFile(text); if ((Object)(object)SfxBundle == (Object)null) { Debug.LogError((object)"[TrollPack] Gagal memuat Asset Bundle."); return; } Debug.Log((object)"[TrollPack] Asset Bundle berhasil dimuat."); FartSound = SfxBundle.LoadAsset("sfx_fart.mp3"); SadTromboneSound = SfxBundle.LoadAsset("sfx_sad_trombone.mp3"); BuzzerSound = SfxBundle.LoadAsset("sfx_klakson"); MimicCallsSound = SfxBundle.LoadAsset("sfx_mimic_calls.mp3"); ControlPanelPrefab = SfxBundle.LoadAsset("TrollPackControlPanel"); if ((Object)(object)BuzzerSound == (Object)null) { Debug.LogWarning((object)"[TrollPack] BuzzerSound tidak ditemukan."); } if ((Object)(object)ControlPanelPrefab == (Object)null) { Debug.LogError((object)"[TrollPack] TrollPackControlPanel tidak ditemukan."); } } private void OnSceneLoaded(Scene scene, LoadSceneMode mode) { if ((Object)(object)ControlPanelInstance == (Object)null && (Object)(object)ControlPanelPrefab != (Object)null) { SpawnControlPanel(); } } private void SpawnControlPanel() { if (!((Object)(object)ControlPanelPrefab == (Object)null) && !((Object)(object)ControlPanelInstance != (Object)null)) { ControlPanelInstance = Object.Instantiate(ControlPanelPrefab); Object.DontDestroyOnLoad((Object)(object)ControlPanelInstance); SetupCanvas(); SetupManagers(); SetupEventSystem(); } } private void SetupCanvas() { if ((Object)(object)ControlPanelInstance.GetComponent() == (Object)null) { ControlPanelInstance.AddComponent(); } Canvas component = ControlPanelInstance.GetComponent(); if (!((Object)(object)component == (Object)null)) { component.renderMode = (RenderMode)0; component.sortingOrder = 32000; } } private void SetupManagers() { //IL_0023: Unknown result type (might be due to invalid IL or missing references) TrollPanelManager orAddComponent = GetOrAddComponent(); GetOrAddComponent(); GetOrAddComponent(); GetOrAddComponent(); orAddComponent.toggleHotkey = (KeyCode)289; if ((Object)(object)SfxBundle != (Object)null) { orAddComponent.modCardPrefab = SfxBundle.LoadAsset("ModCard"); } Transform val = ControlPanelInstance.transform.Find("MainPanel"); if ((Object)(object)val != (Object)null) { orAddComponent.mainPanelObject = ((Component)val).gameObject; } else { Debug.LogError((object)"[TrollPack] MainPanel tidak ditemukan."); } } private T GetOrAddComponent() where T : Component { T val = ControlPanelInstance.GetComponent(); if ((Object)(object)val == (Object)null) { val = ControlPanelInstance.AddComponent(); } return val; } private void SetupEventSystem() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown if (!((Object)(object)Object.FindObjectOfType() != (Object)null)) { GameObject val = new GameObject("TrollPackEventSystem"); val.AddComponent(); val.AddComponent(); Object.DontDestroyOnLoad((Object)(object)val); } } } public static class ModConfigManager { private static readonly Dictionary modStates = new Dictionary(); public static bool IsEnabled(string modId) { if (!modStates.TryGetValue(modId, out var value)) { value = true; modStates[modId] = value; } return value; } public static void SetEnabled(string modId, bool enabled) { modStates[modId] = enabled; } } public class ModCard : MonoBehaviour { public TMP_Text modNameText; public TMP_Text modTaglineText; public Toggle modToggle; private string modId; public void SetupCard(string id, string name, string tagline, bool isEnabled) { modId = id; FindUIComponents(); if ((Object)(object)modNameText != (Object)null) { modNameText.text = name; } if ((Object)(object)modTaglineText != (Object)null) { modTaglineText.text = tagline; } if ((Object)(object)modToggle != (Object)null) { ((UnityEventBase)modToggle.onValueChanged).RemoveAllListeners(); modToggle.isOn = isEnabled; ((UnityEvent)(object)modToggle.onValueChanged).AddListener((UnityAction)OnToggleChanged); } } private void FindUIComponents() { if ((Object)(object)modNameText == (Object)null) { Transform val = ((Component)this).transform.Find("ModName"); if ((Object)(object)val != (Object)null) { modNameText = ((Component)val).GetComponent(); } } if ((Object)(object)modTaglineText == (Object)null) { Transform val2 = ((Component)this).transform.Find("ModTagline"); if ((Object)(object)val2 != (Object)null) { modTaglineText = ((Component)val2).GetComponent(); } } if ((Object)(object)modToggle == (Object)null) { Transform val3 = ((Component)this).transform.Find("Toggle"); if ((Object)(object)val3 != (Object)null) { modToggle = ((Component)val3).GetComponent(); } } } private void OnToggleChanged(bool value) { ModConfigManager.SetEnabled(modId, value); Debug.Log((object)("[TrollPack] Mod '" + modId + "' -> " + (value ? "ON" : "OFF"))); } } public class TrollPanelManager : MonoBehaviour { private struct ModData { public string id; public string name; public string tagline; public ModData(string id, string name, string tagline) { this.id = id; this.name = name; this.tagline = tagline; } } [Header("UI")] public GameObject mainPanelObject; public GameObject modCardPrefab; [Header("Settings")] public KeyCode toggleHotkey = (KeyCode)289; private bool isModListGenerated; private bool previousCursorVisible; private CursorLockMode previousCursorLockMode; private readonly List modList = new List { new ModData("fake_valuable", "FakeValuable", "Kerja keras. Hasil nol."), new ModData("taxman_whispers", "TaxManWhispers", "Perintah rahasia hanya untukmu."), new ModData("invisible_floor", "InvisibleFloor", "Lantai itu opsional."), new ModData("scream_machine", "ScreamMachine", "Diam itu emas. Kamu tidak punya emas."), new ModData("entity_spawner", "EntitySpawner", "Kamu kira hanya ada satu? Surprise.") }; public static TrollPanelManager Instance { get; private set; } public bool isPanelOpen { get; private set; } private void Awake() { if ((Object)(object)Instance != (Object)null && (Object)(object)Instance != (Object)(object)this) { Object.Destroy((Object)(object)((Component)this).gameObject); return; } Instance = this; Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject); } private void Start() { if ((Object)(object)mainPanelObject == (Object)null) { Transform val = ((Component)this).transform.Find("MainPanel"); if ((Object)(object)val != (Object)null) { mainPanelObject = ((Component)val).gameObject; } } if ((Object)(object)mainPanelObject != (Object)null) { mainPanelObject.SetActive(false); } else { Debug.LogError((object)"[TrollPack] MainPanel tidak ditemukan!"); } } private void Update() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) if (Input.GetKeyDown(toggleHotkey)) { ToggleControlPanel(); } } public void ToggleControlPanel() { //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)mainPanelObject == (Object)null) { Debug.LogError((object)"[TrollPack] MainPanel tidak ditemukan!"); return; } isPanelOpen = !isPanelOpen; mainPanelObject.SetActive(isPanelOpen); if (isPanelOpen) { previousCursorVisible = Cursor.visible; previousCursorLockMode = Cursor.lockState; Cursor.visible = true; Cursor.lockState = (CursorLockMode)0; if (!isModListGenerated) { GenerateAllModsTab(); } } else { Cursor.visible = previousCursorVisible; Cursor.lockState = previousCursorLockMode; } } private void GenerateAllModsTab() { Transform val = ((Component)this).transform.Find("MainPanel/ContentArea/Tab1_AllMods/Viewport/Content"); if ((Object)(object)val == (Object)null) { Debug.LogError((object)"[TrollPack] Content UI tidak ditemukan!"); return; } if ((Object)(object)modCardPrefab == (Object)null) { Debug.LogError((object)"[TrollPack] ModCard prefab tidak ditemukan!"); return; } foreach (ModData mod in modList) { GameObject val2 = Object.Instantiate(modCardPrefab, val); ModCard modCard = val2.GetComponent(); if ((Object)(object)modCard == (Object)null) { modCard = val2.AddComponent(); } modCard.SetupCard(mod.id, mod.name, mod.tagline, ModConfigManager.IsEnabled(mod.id)); } isModListGenerated = true; } } } namespace TrollPack.Patches { [HarmonyPatch(typeof(RoundDirector), "HaulCheck")] public class FakeValuableSoundPatch { [HarmonyPostfix] private static void Postfix(RoundDirector __instance) { //IL_0088: Unknown result type (might be due to invalid IL or missing references) if (!ModConfigManager.IsEnabled("fake_valuable") || __instance.dollarHaulList == null) { return; } foreach (GameObject dollarHaul in __instance.dollarHaulList) { if ((Object)(object)dollarHaul == (Object)null || !((Object)dollarHaul).name.Contains("_Fake")) { continue; } if ((Object)(object)MainPlugin.BuzzerSound != (Object)null) { AudioSource.PlayClipAtPoint(MainPlugin.BuzzerSound, dollarHaul.transform.position); } break; } } } [HarmonyPatch(typeof(LevelGenerator), "GenerateDone")] public class InvisibleFloorPatch { [HarmonyPostfix] private static void Postfix() { //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Expected O, but got Unknown if (!ModConfigManager.IsEnabled("invisible_floor") || (Object)(object)LevelGenerator.Instance == (Object)null) { return; } GameObject levelParent = LevelGenerator.Instance.LevelParent; if ((Object)(object)levelParent == (Object)null) { Debug.LogError((object)"[InvisibleFloor] LevelParent tidak ditemukan!"); return; } List list = new List(); foreach (Transform item in levelParent.transform) { Transform val = item; if (((Object)val).name.Contains("Module") || ((Object)val).name.Contains("Start Room")) { list.Add(val); } } if (list.Count == 0) { Debug.LogWarning((object)"[InvisibleFloor] Tidak ada module yang ditemukan."); return; } Transform val2 = list[Random.Range(0, list.Count)]; Debug.Log((object)("[InvisibleFloor] Module terpilih: " + ((Object)val2).name)); InvisibleFloorManager.ApplyTrollFloor(((Component)val2).gameObject); } } [HarmonyPatch(typeof(PlayerAvatar), "Jump")] public class ScreamMachinePatch { [HarmonyPostfix] private static void Postfix(PlayerController __instance) { ScreamMachine.ForceScream(__instance); } } } namespace TrollPack.Mods { public class EntitySpawner : MonoBehaviourPunCallbacks { private PhotonView photonView; private void Awake() { photonView = ((Component)this).GetComponent(); if ((Object)(object)photonView == (Object)null) { Debug.LogWarning((object)"[TrollPack] PhotonView tidak ditemukan pada EntitySpawner."); } } private EnemySetup GetEnemySetup(string enemyName) { EnemyDirector instance = EnemyDirector.instance; if ((Object)(object)instance == (Object)null) { Debug.LogError((object)"[TrollPack] EnemyDirector NULL."); return null; } return instance.enemiesDifficulty1.Find((EnemySetup x) => ((Object)x).name == enemyName); } private void SpawnSinglePlayer(EnemySetup setup, Vector3 position) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)LevelGenerator.Instance == (Object)null) { Debug.LogError((object)"[TrollPack] LevelGenerator NULL."); } else { LevelGenerator.Instance.EnemySpawn(setup, position); } } private void SpawnMultiplayer(EnemySetup setup, Vector3 position) { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)LevelGenerator.Instance == (Object)null) { Debug.LogError((object)"[TrollPack] LevelGenerator NULL."); } else if (PhotonNetwork.IsMasterClient) { LevelGenerator.Instance.EnemySpawn(setup, position); } else { SendSpawnRequest(((Object)setup).name, position); } } private void SpawnEnemy(string enemyName) { //IL_0068: 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_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) if (!ModConfigManager.IsEnabled("entity_spawner")) { return; } EnemySetup enemySetup = GetEnemySetup(enemyName); if ((Object)(object)enemySetup == (Object)null) { Debug.LogError((object)("[TrollPack] Enemy tidak ditemukan: " + enemyName)); return; } Camera main = Camera.main; if ((Object)(object)main == (Object)null) { Debug.LogError((object)"[TrollPack] Main Camera tidak ditemukan."); return; } Vector3 position = ((Component)main).transform.position + ((Component)main).transform.forward * 3f; if (!PhotonNetwork.InRoom) { SpawnSinglePlayer(enemySetup, position); } else { SpawnMultiplayer(enemySetup, position); } } private void Update() { if (Input.GetKeyDown((KeyCode)282)) { SpawnEnemy("Enemy - Duck"); } if (Input.GetKeyDown((KeyCode)283)) { SpawnEnemy("Enemy - Thin Man"); } if (Input.GetKeyDown((KeyCode)284)) { SpawnEnemy("Enemy - Elsa"); } if (Input.GetKeyDown((KeyCode)285)) { SpawnEnemy("Enemy - Slow Mouth"); } if (Input.GetKeyDown((KeyCode)286)) { SpawnEnemy("Enemy - Tick"); } } [PunRPC] private void RequestSpawnMonster(string enemyName, Vector3 spawnPosition) { //IL_005a: Unknown result type (might be due to invalid IL or missing references) if (PhotonNetwork.IsMasterClient) { EnemySetup enemySetup = GetEnemySetup(enemyName); if ((Object)(object)enemySetup == (Object)null) { Debug.LogError((object)("[TrollPack] Enemy tidak ditemukan: " + enemyName)); } else if ((Object)(object)LevelGenerator.Instance == (Object)null) { Debug.LogError((object)"[TrollPack] LevelGenerator NULL."); } else { LevelGenerator.Instance.EnemySpawn(enemySetup, spawnPosition); } } } private void SendSpawnRequest(string enemyName, Vector3 spawnPosition) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)photonView == (Object)null) { Debug.LogError((object)"[TrollPack] PhotonView belum tersedia."); return; } photonView.RPC("RequestSpawnMonster", (RpcTarget)2, new object[2] { enemyName, spawnPosition }); } } [HarmonyPatch(typeof(ValuableObject))] public class FakeValuablePatch { public static bool Enabled => MainPlugin.FakeEnabled.Value; public static float FakePercent => MainPlugin.FakePercent.Value; [HarmonyPatch("Start")] [HarmonyPostfix] private static void Postfix(ValuableObject __instance) { if (ModConfigManager.IsEnabled("fake_valuable") && Enabled && !(Random.value >= FakePercent)) { FieldInfo field = typeof(ValuableObject).GetField("dollarValueCurrent", BindingFlags.Instance | BindingFlags.NonPublic); if (field == null) { Debug.LogError((object)"[TrollPack] FakeValuable: field dollarValueCurrent tidak ditemukan!"); return; } float num = (float)field.GetValue(__instance); field.SetValue(__instance, 0f); GameObject gameObject = ((Component)__instance).gameObject; ((Object)gameObject).name = ((Object)gameObject).name + "_Fake"; Debug.Log((object)("[TrollPack] FakeValuable: '" + ((Object)((Component)__instance).gameObject).name + "' " + $"diubah menjadi Rp 0 (nilai awal: Rp {num}).")); } } } public class InvisibleFloorManager : MonoBehaviour { public static float FallDamage = 20f; private bool isRescuing = false; private bool spawnPositionSaved = false; private Vector3 safeSpawnPosition; private Quaternion safeSpawnRotation; public static void ApplyTrollFloor(GameObject roomParent) { if (!ModConfigManager.IsEnabled("invisible_floor")) { return; } List list = new List(); Transform[] componentsInChildren = roomParent.GetComponentsInChildren(true); foreach (Transform val in componentsInChildren) { string text = ((Object)val).name.ToLower(); if (text.Contains("floor") || text.Contains("tile")) { Collider component = ((Component)val).GetComponent(); if ((Object)(object)component != (Object)null) { list.Add(component); } } } if (list.Count == 0) { Debug.LogError((object)"[TrollPack] InvisibleFloor: Tidak ada floor di room!"); return; } int index = Random.Range(0, list.Count); Collider val2 = list[index]; val2.enabled = false; Debug.Log((object)("[TrollPack] InvisibleFloor aktif pada: " + ((Object)val2).name)); } private void Update() { //IL_0050: 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_0077: 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) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_009a: 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_00fa: Unknown result type (might be due to invalid IL or missing references) if (!ModConfigManager.IsEnabled("invisible_floor")) { return; } PlayerController instance = PlayerController.instance; if (!((Object)(object)instance == (Object)null) && !((Object)(object)instance.playerAvatarScript == (Object)null)) { if (!spawnPositionSaved && ((Component)instance).transform.position.y > -5f) { safeSpawnPosition = ((Component)instance).transform.position; safeSpawnRotation = ((Component)instance).transform.rotation; spawnPositionSaved = true; Debug.Log((object)$"[TrollPack] InvisibleFloor: Posisi aman disimpan = {safeSpawnPosition}"); } if (isRescuing && ((Component)instance).transform.position.y > -5f) { isRescuing = false; Debug.Log((object)"[TrollPack] InvisibleFloor: Player sudah aman, siap mendeteksi jatuh berikutnya."); } if (!isRescuing && ((Component)instance).transform.position.y < -15f) { isRescuing = true; TriggerFallRescue(instance); } } } private void TriggerFallRescue(PlayerController player) { //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0140: 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) Debug.Log((object)"[TrollPack] ===== FALL RESCUE TERPICU ====="); PlayerHealth val = ((Component)player).GetComponent(); if ((Object)(object)val == (Object)null && (Object)(object)player.playerAvatarScript != (Object)null) { val = ((Component)player.playerAvatarScript).GetComponent(); } if ((Object)(object)val == (Object)null && (Object)(object)player.playerAvatarScript != (Object)null) { val = ((Component)player.playerAvatarScript).GetComponentInChildren(); } if ((Object)(object)val == (Object)null) { Debug.LogError((object)"[TrollPack] PlayerHealth tidak ditemukan!"); } else { Debug.Log((object)"[TrollPack] PlayerHealth ditemukan."); val.Hurt((int)FallDamage, false, -1, false); Debug.Log((object)"[TrollPack] Fall damage 20 diberikan."); } if ((Object)(object)player.playerAvatarScript != (Object)null) { player.playerAvatarScript.FallDamageResetSet(1f); PhysGrabber component = ((Component)player.playerAvatarScript).GetComponent(); if ((Object)(object)component != (Object)null) { component.ReleaseObject(-1, 0.1f); } } if (spawnPositionSaved) { CharacterController component2 = ((Component)player).GetComponent(); if ((Object)(object)component2 != (Object)null) { ((Collider)component2).enabled = false; } ((Component)player).transform.position = safeSpawnPosition; ((Component)player).transform.rotation = safeSpawnRotation; if ((Object)(object)component2 != (Object)null) { ((Collider)component2).enabled = true; } Debug.Log((object)$"[TrollPack] Player dikembalikan ke posisi aman: {safeSpawnPosition}"); } } } public class ScreamMachine : MonoBehaviour { public static void ForceScream(PlayerController targetPlayer) { //IL_00c3: Unknown result type (might be due to invalid IL or missing references) if (!ModConfigManager.IsEnabled("scream_machine") || (Object)(object)targetPlayer == (Object)null) { return; } if ((Object)(object)MainPlugin.BuzzerSound == (Object)null) { Debug.LogWarning((object)"[TrollPack] ScreamMachine: BuzzerSound tidak tersedia."); return; } AudioSource val = ((Component)targetPlayer).gameObject.GetComponent(); if ((Object)(object)val == (Object)null) { val = ((Component)targetPlayer).gameObject.AddComponent(); } val.spatialBlend = 1f; val.minDistance = 2f; val.maxDistance = 35f; val.rolloffMode = (AudioRolloffMode)0; val.PlayOneShot(MainPlugin.BuzzerSound); if ((Object)(object)EnemyDirector.instance != (Object)null) { EnemyDirector.instance.SetInvestigate(((Component)targetPlayer).transform.position, 25f, false); } } } public class TaxManWhispers : MonoBehaviour { private const string ModId = "taxman_whispers"; private readonly List cachedMessages = new List(); private void Awake() { LoadMessages(); } private void Start() { ((MonoBehaviour)this).StartCoroutine(WhisperRoutine()); } private void LoadMessages() { string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string text = Path.Combine(directoryName, "Data", "taxman_messages.json"); if (!File.Exists(text)) { Debug.LogWarning((object)("[TaxMan] File tidak ditemukan: " + text)); cachedMessages.Add("Pesan darurat default: Selalu waspada!"); return; } string[] array = File.ReadAllLines(text); foreach (string text2 in array) { if (text2.Contains("\"text\"")) { int num = text2.IndexOf(":"); if (num >= 0) { string item = text2.Substring(num + 1).Trim().Trim(',', ' ', '"'); cachedMessages.Add(item); } } } } private IEnumerator WhisperRoutine() { while (true) { yield return (object)new WaitForSeconds(60f); if (ModConfigManager.IsEnabled("taxman_whispers") && cachedMessages.Count != 0) { string message = cachedMessages[Random.Range(0, cachedMessages.Count)]; DisplayFakeTaxmanMessage(message); } } } private void DisplayFakeTaxmanMessage(string message) { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) if (ModConfigManager.IsEnabled("taxman_whispers") && !((Object)(object)BigMessageUI.instance == (Object)null)) { ((SemiUI)BigMessageUI.instance).Show(); BigMessageUI.instance.BigMessage(message, "", 20f, Color.red, Color.white); FieldInfo field = typeof(BigMessageUI).GetField("bigMessageTimer", BindingFlags.Instance | BindingFlags.NonPublic); if (field != null) { field.SetValue(BigMessageUI.instance, 5f); } } } } }