using System; using System.Collections; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Peak.Afflictions; using Photon.Pun; using UnityEngine; using UnityEngine.AI; 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("MoreZombies")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("MoreZombies")] [assembly: AssemblyCopyright("Copyright © 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("29961BBA-9F47-46BC-8719-4FE6A884342E")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.0.0.0")] namespace MoreZombies { [BepInPlugin("com.yourname.morezombies", "More Zombies Hell", "1.0.0")] public class Plugin : BaseUnityPlugin { internal static ManualLogSource Logger; private void Awake() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown Logger = ((BaseUnityPlugin)this).Logger; Logger.LogInfo((object)"[MoreZombies] Mod đang khởi động! Chuẩn bị giải phóng thảm họa nấm..."); Harmony val = new Harmony("com.yourname.morezombies"); val.PatchAll(); Logger.LogInfo((object)"[MoreZombies] Đã cấy ghép mã độc Harmony thành công!"); } } public class ZombieHellPatches { [HarmonyPatch(typeof(Character), "Start")] public static class Inject_Custom_Spawner_Patch { [HarmonyPostfix] public static void Postfix(Character __instance) { if (__instance.IsLocal && PhotonNetwork.IsMasterClient && (Object)(object)((Component)__instance).gameObject.GetComponent() == (Object)null) { ((Component)__instance).gameObject.AddComponent(); } } } [HarmonyPatch(typeof(MushroomZombie), "Awake")] public static class Zombie_Speed_Patch { [HarmonyPostfix] public static void Postfix(MushroomZombie __instance) { NavMeshAgent component = ((Component)__instance).GetComponent(); if ((Object)(object)component != (Object)null) { component.speed *= 1.25f; } } } [HarmonyPatch(typeof(Affliction_ZombieBite), "OnApplied")] public static class Zombie_Bite_Nuke_Patch { [HarmonyPostfix] public static void Postfix(Character ___character) { if ((Object)(object)___character != (Object)null && ___character.IsLocal) { ___character.refs.afflictions.AddStatus((STATUSTYPE)10, 0.5f, false, true, true, false); } } } [HarmonyPatch(typeof(MushroomZombie), "DoWakingUp")] public static class Zombie_Instant_WakeUp_Patch { [HarmonyPrefix] public static void Prefix(MushroomZombie __instance, ref float ___timeSpentWakingUp) { __instance.initialWakeUpTime = 0f; ___timeSpentWakingUp = 999f; } } } public class CustomZombieSpawner : MonoBehaviour { private float spawnInterval = 60f; private float timer = 0f; private void Update() { //IL_0019: 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) if (!PhotonNetwork.InRoom && !PhotonNetwork.OfflineMode) { return; } Scene activeScene = SceneManager.GetActiveScene(); string text = ((Scene)(ref activeScene)).name.ToLower(); if (!text.Contains("airport") && !text.Contains("lobby") && !text.Contains("menu")) { timer += Time.deltaTime; if (timer >= spawnInterval) { timer = 0f; SpawnZombieInFront(); } } } private void SpawnZombieInFront() { //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: 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_007f: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: 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) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) Character component = ((Component)this).GetComponent(); if ((Object)(object)component == (Object)null) { return; } float num = Random.Range(12f, 18f); float num2 = Random.Range(0f, 360f) * ((float)Math.PI / 180f); float num3 = Mathf.Cos(num2) * num; float num4 = Mathf.Sin(num2) * num; Vector3 val = component.Center + new Vector3(num3, 0f, num4); val.y += 20f; RaycastHit val2 = default(RaycastHit); if (Physics.Raycast(val, Vector3.down, ref val2, 50f)) { val = ((RaycastHit)(ref val2)).point; } else { val = component.Center + ((Component)component).transform.forward * 5f; val.y += 2f; } Campfire[] array = Object.FindObjectsByType((FindObjectsSortMode)0); Campfire[] array2 = array; foreach (Campfire val3 in array2) { if ((Object)(object)val3 != (Object)null && Vector3.Distance(val, ((Component)val3).transform.position) <= 30f) { Debug.Log((object)"[ZombieHell] Đã chặn đẻ Zombie vì nằm trong khu vực 30m của Lửa Trại!"); return; } } Vector3 val4 = component.Center - val; val4.y = 0f; Quaternion val5 = Quaternion.LookRotation(val4); try { GameObject val6 = PhotonNetwork.Instantiate("MushroomZombie", val, val5, (byte)0, (object[])null); if ((Object)(object)val6 != (Object)null) { val6.AddComponent(); } } catch (Exception ex) { Debug.LogWarning((object)("[ZombieHell] Lỗi khi spawn Zombie: " + ex.Message)); } } } public class ZombieSkeletonTimer : MonoBehaviour { private bool isReverting = false; private void Start() { if (PhotonNetwork.IsMasterClient) { ((MonoBehaviour)this).StartCoroutine(RevertToSkeleton(90f)); ((MonoBehaviour)this).StartCoroutine(CampfireRadar()); } } private IEnumerator CampfireRadar() { while (!isReverting) { yield return (object)new WaitForSeconds(1f); Campfire[] allCampfires = Object.FindObjectsByType((FindObjectsSortMode)0); Campfire[] array = allCampfires; foreach (Campfire cf in array) { if ((Object)(object)cf != (Object)null && Vector3.Distance(((Component)this).transform.position, ((Component)cf).transform.position) <= 30f) { Debug.Log((object)"[ZombieHell] Zombie bước vào vùng Lửa Trại 30m! Hóa xương lập tức."); TriggerSkeleton(); yield break; } } } } private IEnumerator RevertToSkeleton(float delayTime) { yield return (object)new WaitForSeconds(delayTime); TriggerSkeleton(); } private void TriggerSkeleton() { if (isReverting) { return; } isReverting = true; MushroomZombie component = ((Component)this).GetComponent(); if ((Object)(object)component != (Object)null) { PhotonView component2 = ((Component)component).GetComponent(); if ((Object)(object)component2 != (Object)null) { component2.RPC("RPC_SpawnSkelly", (RpcTarget)0, Array.Empty()); ((MonoBehaviour)this).StartCoroutine(DestroyZombie()); } else { PhotonNetwork.Destroy(((Component)this).gameObject); } } } private IEnumerator DestroyZombie() { yield return (object)new WaitForSeconds(0.2f); if ((Object)(object)((Component)this).gameObject != (Object)null) { PhotonNetwork.Destroy(((Component)this).gameObject); } } } } namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } }