using System; using System.CodeDom.Compiler; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security.Cryptography; using System.Text; using AliensInValheim.Abuction; using AliensInValheim.AlienAtack; using AliensInValheim.AlienSighting; using AliensInValheim.AlienSpeak; using AliensInValheim.AlienUIModal; using AliensInValheim.Audio; using AliensInValheim.Commands; using AliensInValheim.Core; using AliensInValheim.CreatureAbduction; using AliensInValheim.FlyOvni; using AliensInValheim.I18n; using AliensInValheim.Intro; using AliensInValheim.License; using AliensInValheim.MainMenu; using AliensInValheim.OvniScan; using AliensInValheim.Pins; using AliensInValheim.Utilities; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Jotunn.Entities; using Jotunn.Managers; using Newtonsoft.Json; using Splatform; using Steamworks; using UnityEngine; using UnityEngine.Audio; using UnityEngine.Events; using UnityEngine.Rendering; using UnityEngine.SceneManagement; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("AliensInValheim")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("AliensInValheim")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("3268f4e1-04a0-43cf-9137-68ff1bc8f484")] [assembly: AssemblyFileVersion("1.1.3")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyVersion("1.1.3.0")] namespace AliensInValheim { [GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "18.0.0.0")] [DebuggerNonUserCode] [CompilerGenerated] internal class Resources { private static ResourceManager resourceMan; private static CultureInfo resourceCulture; [EditorBrowsable(EditorBrowsableState.Advanced)] internal static ResourceManager ResourceManager { get { if (resourceMan == null) { resourceMan = new ResourceManager("AliensInValheim.Resources", typeof(Resources).Assembly); } return resourceMan; } } [EditorBrowsable(EditorBrowsableState.Advanced)] internal static CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } internal static string PublicKey => ResourceManager.GetString("PublicKey", resourceCulture); internal Resources() { } } } namespace AliensInValheim.License { public static class LicenseDesencriptor { private const string Passphrase = "clave-supersecreta-1234"; public static LicenseInfo LoadLicense(string path) { if (!File.Exists(path)) { throw new FileNotFoundException("No se encontró el archivo de licencia: " + path); } LicenseInfo licenseInfo = JsonConvert.DeserializeObject(DecryptWithAES(File.ReadAllBytes(path), "clave-supersecreta-1234")); if (!VerifyLicenseSignature(GenerateUnsignedJson(licenseInfo), licenseInfo.Signature)) { throw new Exception("❌ La firma digital de la licencia no es válida."); } return licenseInfo; } private static bool VerifyLicenseSignature(string licenseJson, string base64Signature) { try { using RSACryptoServiceProvider rSACryptoServiceProvider = new RSACryptoServiceProvider(); rSACryptoServiceProvider.PersistKeyInCsp = false; string publicKey = Resources.PublicKey; rSACryptoServiceProvider.FromXmlString(publicKey); Encoding.UTF8.GetBytes(licenseJson); Convert.FromBase64String(base64Signature); return true; } catch (Exception ex) { AliensInValheimMod.Logger.LogError((object)("❌ Error verificando firma: " + ex.Message)); return false; } } public static bool IsLicenseExpired(LicenseInfo license, DateTime nowUtc) { DateTime dateTime = DateTime.ParseExact(license.IssueDate, "yyyy-MM-dd", null); return nowUtc.Date > dateTime.AddDays(license.ValidDays).Date; } public static bool IsSteamIdValid(LicenseInfo license, string localSteamId) { return license.SteamId == localSteamId; } private static string DecryptWithAES(byte[] encrypted, string passphrase) { using AesCryptoServiceProvider aesCryptoServiceProvider = new AesCryptoServiceProvider(); aesCryptoServiceProvider.Key = SHA256.Create().ComputeHash(Encoding.UTF8.GetBytes(passphrase)); aesCryptoServiceProvider.IV = new byte[16]; using MemoryStream stream = new MemoryStream(encrypted); using CryptoStream stream2 = new CryptoStream(stream, aesCryptoServiceProvider.CreateDecryptor(), CryptoStreamMode.Read); using StreamReader streamReader = new StreamReader(stream2); return streamReader.ReadToEnd(); } private static string GenerateUnsignedJson(LicenseInfo license) { return $"{{\"SteamId\":\"{license.SteamId}\",\"IssueDate\":\"{license.IssueDate}\",\"ValidDays\":{license.ValidDays}}}"; } } internal static class LicenseValidator { [CompilerGenerated] private sealed class d__5 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__5(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitUntil((Func)(() => (Object)(object)ZNet.instance != (Object)null && ZRoutedRpc.instance != null)); <>1__state = 1; return true; case 1: <>1__state = -1; if (ZNet.instance.IsServer()) { ZRoutedRpc.instance.Register("Aliens_RequestLicenseValidation", (Action)Aliens_RequestLicenseValidation); } else { ZRoutedRpc.instance.Register("Aliens_ReceiveLicenseValidation", (Action)Aliens_ReceiveLicenseValidation); } AliensInValheimMod.Logger.LogInfo((object)"\ud83d\udef0\ufe0f RPCs de licencia registrados correctamente."); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private const string RPC_LICENSE_REQUEST = "Aliens_RequestLicenseValidation"; private const string RPC_LICENSE_RECEIVE = "Aliens_ReceiveLicenseValidation"; internal static bool isLicenseValid; public static LicenseInfo CurrentLicense; internal static void RegisterApi(MonoBehaviour context) { context.StartCoroutine(WaitForRpcReady()); } [IteratorStateMachine(typeof(d__5))] private static IEnumerator WaitForRpcReady() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__5(0); } internal static void ValidateRemoteLicense(ulong steamId) { ZRoutedRpc.instance.InvokeRoutedRPC(ZNet.instance.GetServerPeer().m_uid, "Aliens_RequestLicenseValidation", new object[1] { steamId }); } private static void Aliens_ReceiveLicenseValidation(long sender, bool isValid) { if (!isValid) { AliensInValheimMod.Logger.LogWarning((object)"\ud83d\udeab Tu licencia no es válida. El mod se desactivará."); isLicenseValid = false; } else { AliensInValheimMod.Logger.LogInfo((object)"✅ Licencia validada por el servidor."); isLicenseValid = true; } } private static void Aliens_RequestLicenseValidation(long sender, ulong steamId) { AliensInValheimMod.Logger.LogMessage((object)string.Format("{0}❌ ValidateLocalLicense {1}", "AliensInValheim", steamId)); bool flag = ValidateLocalLicense(steamId); ZRoutedRpc.instance.InvokeRoutedRPC(sender, "Aliens_ReceiveLicenseValidation", new object[1] { flag }); } public static bool ValidateLocalLicense(ulong steamId) { bool flag = false; AliensInValheimMod.Logger.LogMessage((object)string.Format("{0}❌ ValidateLocalLicense {1}", "AliensInValheim", steamId)); try { string[] files = Directory.GetFiles(AliensInValheimMod.modPath, "*.lic"); if (files.Length == 0) { AliensInValheimMod.Logger.LogMessage((object)"AliensInValheim❌ No se encontró ningún archivo .lic"); return false; } string path = files[0]; AliensInValheimMod.Logger.LogMessage((object)("AliensInValheim\ud83d\udd0d Usando archivo de licencia: " + Path.GetFileName(path))); CurrentLicense = LicenseDesencriptor.LoadLicense(path); AliensInValheimMod.Logger.LogMessage((object)string.Format("{0} Licencia encontrada. Expira {1}", "AliensInValheim", CurrentLicense.ExpirationDate)); if (CurrentLicense.SteamId == steamId.ToString()) { DateTime trustedTime = GetTrustedTime(); if (CurrentLicense.IsExpired(trustedTime)) { AliensInValheimMod.Logger.LogWarning((object)"AliensInValheim\ud83d\udeab La licencia ha expirado."); flag = false; } else { AliensInValheimMod.Logger.LogWarning((object)"AliensInValheim✅ Licencia válida."); flag = true; } } else { AliensInValheimMod.Logger.LogWarning((object)"AliensInValheim\ud83d\udeab SteamID no coincide con el de la licencia."); flag = false; } } catch (Exception ex) { AliensInValheimMod.Logger.LogError((object)("❌ Error validando licencia: " + ex.Message)); flag = false; } isLicenseValid = flag; return flag; } private static DateTime GetTrustedTime() { return DateTime.UtcNow; } } public class LicenseInfo { public string SteamId; public string IssueDate; public int ValidDays; public string Signature; public DateTime ExpirationDate => DateTime.ParseExact(IssueDate, "yyyy-MM-dd", CultureInfo.InvariantCulture).AddDays(ValidDays); public bool IsExpired(DateTime currentTimeUtc) { return currentTimeUtc.Date > ExpirationDate.Date; } public static LicenseInfo FromJson(string json) { return JsonConvert.DeserializeObject(json); } } } namespace AliensInValheim.MainMenu { public class MainMenuUFO : MonoBehaviour { private GameObject ufoInstance; private AudioSource ufoMusicSource; private void Start() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: 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_00af: 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_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: 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) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) OvniConfiguration ovniConfiguration = new OvniConfiguration(); Scene activeScene = SceneManager.GetActiveScene(); if (((Scene)(ref activeScene)).name.ToLower() != "start") { return; } AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] Menú principal detectado. Iniciando OVNI..."); GameObject val = AliensInValheimMod.Instance.Library.LoadAsset(ovniConfiguration.PrefabName); if ((Object)(object)val == (Object)null) { AliensInValheimMod.Logger.LogWarning((object)"[AliensInValheim] ❌ No se pudo cargar el prefab del OVNI."); return; } ufoInstance = Object.Instantiate(val); ((Object)ufoInstance).name = "MainMenuUFO"; Camera main = Camera.main; if ((Object)(object)main == (Object)null) { AliensInValheimMod.Logger.LogWarning((object)"[AliensInValheim] ❌ No se encontró la cámara del menú."); return; } Vector3 val2 = ((Component)main).transform.forward * 100f + ((Component)main).transform.up * 20f; ufoInstance.transform.position = ((Component)main).transform.position + val2; ufoInstance.transform.LookAt(((Component)main).transform.position); ufoInstance.transform.localScale = Vector3.one * 10f; ufoMusicSource = ufoInstance.AddComponent(); ufoMusicSource.AttachToGameMixer(SoundGroup.Music); ufoMusicSource.clip = AliensInValheimMod.Instance.Library.LoadAsset("assets/sounds/ufo_music2.mp3"); ufoMusicSource.loop = true; ufoMusicSource.playOnAwake = false; ufoMusicSource.ignoreListenerVolume = true; if ((Object)(object)ufoMusicSource.clip != (Object)null) { ufoMusicSource.Play(); AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] \ud83c\udfb5 Música del OVNI iniciada."); } else { AliensInValheimMod.Logger.LogWarning((object)"[AliensInValheim] ⚠\ufe0f No se encontró el AudioClip del OVNI."); } } private void Update() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) ((MonoBehaviour)this).StartCoroutine(MusicDucker.Duck()); if ((Object)(object)ufoInstance != (Object)null) { ufoInstance.transform.Rotate(Vector3.up * 20f * Time.deltaTime, (Space)0); } } private void OnDestroy() { ((MonoBehaviour)this).StartCoroutine(MusicDucker.Unduck()); Object.Destroy((Object)(object)ufoInstance); AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] \ud83d\udd0a Volumen restaurado al salir del menú."); } } } namespace AliensInValheim.Abuction { public class AbductionCommand : ConsoleCommand { public override string Name => "abducir"; public override string Help => "Abduce un jugador con un ovni. Uso: abducir [jugador] [ovni_id]\nEjemplos:\n - abducir => te abduce con OVNI aleatorio\n - abducir 2 => te abduce con OVNI #2 (índice 1)\n - abducir NombreJugador => abduce a ese jugador con OVNI aleatorio\n - abducir NombreJugador 3 => abduce a ese jugador con OVNI #3 (índice 2)"; public override void Run(string[] args) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) Player target = Player.m_localPlayer; PlayerExtensions.SolvePlayerAndConfiguration(args, out target, out var config); AbductionRPC instance = AbductionRPC.Instance; AbductionData abductionData = new AbductionData(); ZDOID zDOID = ((Character)target).GetZDOID(); abductionData.UserID = ((ZDOID)(ref zDOID)).UserID; abductionData.Config = config; instance.SendCommandToAll(AbductionRPC.CommandName.START_ABDUCTION, abductionData); AliensInValheimMod.Logger.LogInfo((object)("[AliensInValheim] \ud83d\udef8 Abducción solicitada para " + target.GetPlayerName() + " con OVNI " + config.PrefabName)); } } internal class AbductionEvent : MonoBehaviour { [CompilerGenerated] private sealed class d__10 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public AbductionEvent <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__10(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { int num = <>1__state; AbductionEvent abductionEvent = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; AliensInValheimMod.Logger.LogInfo((object)"AliensInValheim \ud83d\udef8 El ovni se retira."); ((MonoBehaviour)abductionEvent).StartCoroutine(abductionEvent.musicSource.FadeOutAudio(3f)); ((MonoBehaviour)abductionEvent).StartCoroutine(abductionEvent.ovni.FadeOutAndStopAudio(SoundChannel.ENGINE, 3f)); ((MonoBehaviour)abductionEvent).StartCoroutine(abductionEvent.ovni.FadeOutAndStopAudio(SoundChannel.BACKGROUND, 2f)); ((MonoBehaviour)abductionEvent).StartCoroutine(abductionEvent.FadeAndDestroy(abductionEvent.ovni)); <>2__current = null; <>1__state = 1; return true; case 1: <>1__state = -1; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__7 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public GameObject obj; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__7(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = obj.FadeAndWarpAway(); <>1__state = 1; return true; case 1: <>1__state = -1; Object.Destroy((Object)(object)obj); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__4 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Player player; public GameObject ovni; private Vector3 5__2; private Vector3 5__3; private float 5__4; private float 5__5; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__4(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //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) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0054: 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_005e: Unknown result type (might be due to invalid IL or missing references) //IL_006f: 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_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009d: 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_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: <>1__state = -1; 5__2 = ((Component)player).transform.position + ((Component)player).transform.right * 80f + Vector3.up * 30f; 5__3 = ((Component)player).transform.position + ((Component)player).transform.right * 10f + Vector3.up * 30f; ovni.transform.position = 5__2; 5__4 = 5f; 5__5 = 0f; break; case 1: <>1__state = -1; 5__5 += Time.deltaTime; break; } if (5__5 < 5__4) { ovni.transform.position = Vector3.Lerp(5__2, 5__3, 5__5 / 5__4); <>2__current = null; <>1__state = 1; return true; } return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__9 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Player player; public AbductionEvent <>4__this; public OvniConfiguration config; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__9(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { int num = <>1__state; if (num == -3 || num == 3) { try { } finally { <>m__Finally1(); } } <>1__state = -2; } private bool MoveNext() { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: 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_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) try { int num = <>1__state; AbductionEvent abductionEvent = <>4__this; switch (num) { default: return false; case 0: { <>1__state = -1; Vector3 position = ((Component)player).transform.position + Vector3.up * 30f + ((Component)player).transform.right * 80f; abductionEvent.ovni = AliensInValheimMod.Instance.Library.CreateOvni(position, config); AliensInValheimMod.Logger.LogInfo((object)("[AliensInValheim] Secuencia de abduccion sobre " + player.GetPlayerName())); <>2__current = abductionEvent.HorizontalMovement(player, abductionEvent.ovni); <>1__state = 1; return true; } case 1: <>1__state = -1; abductionEvent.PlayLoopingMusic(0.7f); abductionEvent.ovni.PlaySound(SoundChannel.ENGINE); abductionEvent.ovni.PlaySound(SoundChannel.BACKGROUND); <>2__current = abductionEvent.VerticalDescend(player, abductionEvent.ovni); <>1__state = 2; return true; case 2: { <>1__state = -1; <>1__state = -3; float suspenseDuration = Random.Range(15f, 30f); <>2__current = ((MonoBehaviour)abductionEvent).StartCoroutine(abductionEvent.AbductionMiniGame.StartGame(player, abductionEvent.ovni, suspenseDuration)); <>1__state = 3; return true; } case 3: <>1__state = -3; <>m__Finally1(); return false; } } catch { //try-fault ((IDisposable)this).Dispose(); throw; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } private void <>m__Finally1() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) <>1__state = -1; AliensInValheimMod.Logger.LogInfo((object)("[AliensInValheim] Finalizando abduccion sobre " + player.GetPlayerName())); AbductionRPC instance = AbductionRPC.Instance; AbductionData abductionData = new AbductionData(); ZDOID zDOID = ((Character)player).GetZDOID(); abductionData.UserID = ((ZDOID)(ref zDOID)).UserID; abductionData.Config = new OvniConfiguration(); instance.SendCommandToAll(AbductionRPC.CommandName.FINISH_ABDUCTION, abductionData); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__5 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public GameObject ovni; public Player player; private Vector3 5__2; private Vector3 5__3; private float 5__4; private float 5__5; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__5(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: 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_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: <>1__state = -1; 5__2 = ovni.transform.position; 5__3 = ((Component)player).transform.position + Vector3.up * 10f; 5__4 = 4f; 5__5 = 0f; break; case 1: <>1__state = -1; 5__5 += Time.deltaTime; break; } if (5__5 < 5__4) { ovni.transform.position = Vector3.Lerp(5__2, 5__3, 5__5 / 5__4); <>2__current = null; <>1__state = 1; return true; } ovni.transform.position = 5__3; return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private AudioSource musicSource; private GameObject ovni; private AbductionMiniGameEvent AbductionMiniGame => ((Component)this).gameObject.GetComponent(); private void Awake() { musicSource = ((Component)this).gameObject.AddComponent(); musicSource.volume = 0.4f; musicSource.spatialBlend = 0f; musicSource.playOnAwake = false; musicSource.loop = true; ((Component)this).gameObject.AddComponent(); } [IteratorStateMachine(typeof(d__4))] private IEnumerator HorizontalMovement(Player player, GameObject ovni) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__4(0) { player = player, ovni = ovni }; } [IteratorStateMachine(typeof(d__5))] private IEnumerator VerticalDescend(Player player, GameObject ovni) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__5(0) { player = player, ovni = ovni }; } public void PlayLoopingMusic(float volume = 1f) { AudioClip val = AliensInValheimMod.Instance.Library.LoadAsset("assets/sounds/ufo_music1.mp3"); if (musicSource.isPlaying) { musicSource.Stop(); } if (!musicSource.isPlaying) { musicSource.volume = volume; musicSource.clip = val; musicSource.loop = true; musicSource.Play(); AliensInValheimMod.Logger.LogInfo((object)("[AliensInValheim] Música reproducida: " + ((Object)val).name)); } else { AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] La música ya está sonando, se omite reproducción duplicada."); } } [IteratorStateMachine(typeof(d__7))] internal IEnumerator FadeAndDestroy(GameObject obj) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__7(0) { obj = obj }; } [IteratorStateMachine(typeof(d__9))] public IEnumerator RunAbductionSequence(Player player, OvniConfiguration config) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__9(0) { <>4__this = this, player = player, config = config }; } [IteratorStateMachine(typeof(d__10))] internal IEnumerator EndAbuction() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__10(0) { <>4__this = this }; } } public class AbductionMiniGameEvent : MonoBehaviour { [CompilerGenerated] private sealed class d__5 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Player player; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__5(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_001e: 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) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) if (<>1__state != 0) { return false; } <>1__state = -1; Vector3 val = ((Component)player).transform.position + ((Component)player).transform.right * 2f; GameObject prefab = ZNetScene.instance.GetPrefab("piece_chest"); GameObject prefab2 = ZNetScene.instance.GetPrefab("Coins"); if ((Object)(object)prefab == (Object)null || (Object)(object)prefab2 == (Object)null) { AliensInValheimMod.Logger.LogInfo((object)"⚠\ufe0f No se encontró el prefab de cofre o monedas."); return false; } AliensInValheimMod.Logger.LogInfo((object)"✅ Prefabs encontrados. Instanciando cofre..."); GameObject val2 = Object.Instantiate(prefab, val, Quaternion.identity); ZNetView component = val2.GetComponent(); if ((Object)(object)component == (Object)null || !component.IsValid()) { AliensInValheimMod.Logger.LogInfo((object)"❌ ZNetView inválido al instanciar el cofre."); return false; } component.GetZDO().Set(ZDOVars.s_creator, player.GetPlayerID()); Container component2 = val2.GetComponent(); if ((Object)(object)component2 != (Object)null && component2.GetInventory() != null) { component2.GetInventory().AddItem(prefab2, 100); AliensInValheimMod.Logger.LogInfo((object)"\ud83d\udcb0 Monedas añadidas al cofre."); } else { AliensInValheimMod.Logger.LogInfo((object)"❌ Contenedor o inventario no válido en el cofre."); } AudioSource componentInChildren = prefab2.GetComponentInChildren(); if ((Object)(object)componentInChildren != (Object)null && (Object)(object)componentInChildren.clip != (Object)null) { AudioSource.PlayClipAtPoint(componentInChildren.clip, val, 1f); AliensInValheimMod.Logger.LogInfo((object)"\ud83d\udd0a Sonido de monedas reproducido."); } else { AliensInValheimMod.Logger.LogInfo((object)"⚠\ufe0f No se encontró clip de audio en prefab Coins."); } ((Character)player).Message((MessageType)2, "¡Has recibido una recompensa alienígena!", 0, (Sprite)null); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__10 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Player player; public AbductionMiniGameEvent <>4__this; private Vector3 5__2; private GameObject 5__3; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__10(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { 5__3 = null; <>1__state = -2; } private bool MoveNext() { //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_0237: Unknown result type (might be due to invalid IL or missing references) //IL_0241: Unknown result type (might be due to invalid IL or missing references) //IL_0246: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_0261: Unknown result type (might be due to invalid IL or missing references) //IL_026b: Expected O, but got Unknown //IL_0287: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) //IL_029e: Unknown result type (might be due to invalid IL or missing references) //IL_02ab: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_0216: Expected O, but got Unknown //IL_02c2: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_0306: 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_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: 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_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) int num = <>1__state; AbductionMiniGameEvent abductionMiniGameEvent = <>4__this; switch (num) { default: return false; case 0: { <>1__state = -1; if ((Object)(object)player == (Object)null || ((Character)player).IsDead() || ((Character)player).IsTeleporting()) { AliensInValheimMod.Logger.LogInfo((object)"\ud83d\udeab Jugador no válido para abducción forzada."); return false; } 5__2 = ((Component)player).transform.position; Vector3 right = ((Component)player).transform.right; Vector3 val2 = 5__2 + right * 2.2f; 5__3 = AliensInValheimMod.Instance.Library.CreateAlien(val2, "assets/alien1/prefab/alien1.prefab"); if ((Object)(object)5__3 == (Object)null) { AliensInValheimMod.Logger.LogWarning((object)"⚠\ufe0f No se pudo instanciar el Alien."); return false; } LookAtHorizontal(5__3.transform, ((Component)player).transform.position); AliensInValheimMod.Logger.LogInfo((object)("\ud83d\udc80 Jugador " + player.GetPlayerName() + " perdió el minijuego. Abducción forzada iniciada.")); AlienParalysis alienParalysis = ((Component)player).GetComponent(); if ((Object)(object)alienParalysis == (Object)null) { alienParalysis = ((Component)player).gameObject.AddComponent(); } ((MonoBehaviour)abductionMiniGameEvent).StartCoroutine(alienParalysis.DoParalysis(player, 30f)); Chat instance2 = Chat.instance; if (instance2 != null) { instance2.SendText((Type)2, "¡" + player.GetPlayerName() + " ha sido derrotado y será abducido!"); } ((Character)player).Message((MessageType)1, "Has perdido... algo se acerca.", 0, (Sprite)null); <>2__current = abductionMiniGameEvent.TeleportInAlien(val2, 5__3); <>1__state = 1; return true; } case 1: { <>1__state = -1; Light obj = 5__3.GetComponent() ?? 5__3.AddComponent(); obj.type = (LightType)2; obj.range = 10f; obj.intensity = 4f; obj.color = Color.red; <>2__current = (object)new WaitForSeconds(5f); <>1__state = 2; return true; } case 2: { <>1__state = -1; Vector3 lootPos = 5__2 + ((Component)player).transform.forward * 2f; abductionMiniGameEvent.DropInventory(player, lootPos); <>2__current = (object)new WaitForSeconds(2f); <>1__state = 3; return true; } case 3: { <>1__state = -1; Vector3 val = abductionMiniGameEvent.FindSafeTeleportLocation(((Component)player).transform.position, 200f); ((Character)player).TeleportTo(val, ((Component)player).transform.rotation, true); Minimap instance = Minimap.instance; if (instance != null) { instance.AddPin(val, (PinType)4, "Abducción", true, false, 0L, default(PlatformUserID)); } ((Character)player).Message((MessageType)1, "Despiertas en un lugar extraño... más frío.", 0, (Sprite)null); AliensInValheimMod.Logger.LogInfo((object)$"\ud83d\udef8 {player.GetPlayerName()} abducido tras perder. Teleportado a {val}"); Object.Destroy((Object)(object)5__3); return false; } } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__6 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Player targetPlayer; public GameObject ovni; public AbductionMiniGameEvent <>4__this; public float suspenseDuration; private GameObject 5__2; private float 5__3; private float 5__4; private bool 5__5; private bool 5__6; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__6(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { int num = <>1__state; if (num == -3 || num == 1) { try { } finally { <>m__Finally1(); } } 5__2 = null; <>1__state = -2; } private bool MoveNext() { //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: Unknown result type (might be due to invalid IL or missing references) //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_0237: Unknown result type (might be due to invalid IL or missing references) //IL_023c: Unknown result type (might be due to invalid IL or missing references) //IL_0249: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_025d: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_026f: Unknown result type (might be due to invalid IL or missing references) //IL_0271: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_027d: Unknown result type (might be due to invalid IL or missing references) //IL_0292: Unknown result type (might be due to invalid IL or missing references) //IL_0299: Unknown result type (might be due to invalid IL or missing references) //IL_029b: Unknown result type (might be due to invalid IL or missing references) //IL_02c1: Unknown result type (might be due to invalid IL or missing references) try { int num = <>1__state; AbductionMiniGameEvent abductionMiniGameEvent = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; AliensInValheimMod.Logger.LogDebug((object)"[AbductionMiniGame] Iniciando minijuego..."); 5__2 = null; 5__3 = 0f; 5__4 = 0f; 5__5 = false; 5__6 = (Object)(object)targetPlayer == (Object)(object)Player.m_localPlayer; AliensInValheimMod.Logger.LogInfo((object)$"[AbductionMiniGame] Target: {targetPlayer.GetPlayerName()}, Es jugador local: {5__6}"); <>1__state = -3; 5__2 = ovni.transform.CreateBeam(((Component)targetPlayer).transform); 5__5 = true; abductionMiniGameEvent.progressBar.Show(); goto IL_0310; case 1: <>1__state = -3; goto IL_0310; case 2: <>1__state = -1; break; case 3: { <>1__state = -1; break; } IL_0310: if (5__3 < suspenseDuration) { try { 5__3 += Time.deltaTime; bool flag = false; if (5__6 && ZInput.instance != null) { flag = ZInput.GetKey((KeyCode)32, true); } if (!flag) { 5__4 -= 10f * Time.deltaTime; if (5__4 < 0f) { 5__4 = 0f; } goto IL_01ac; } 5__4 += 9f; AliensInValheimMod.Logger.LogDebug((object)$"[AbductionMiniGame] Espacio presionado! Progress: {5__4:F1}/{100f}"); if (!(5__4 >= 100f)) { goto IL_01ac; } 5__4 = 100f; AliensInValheimMod.Logger.LogInfo((object)"[AbductionMiniGame] El jugador ha llenado la barra completamente!"); goto end_IL_00e6; IL_01ac: abductionMiniGameEvent.progressBar.SetValue(5__4 / 100f); Vector3 val = ((Component)targetPlayer).transform.position + Vector3.up * 10f; ovni.transform.position = Vector3.Lerp(ovni.transform.position, val, Time.deltaTime * 5f); if ((Object)(object)5__2 != (Object)null) { Vector3 position = ovni.transform.position; Vector3 val2 = ((Component)targetPlayer).transform.position + Vector3.up * 1.5f; 5__2.transform.position = (position + val2) / 2f; 5__2.transform.LookAt(val2); float num2 = Vector3.Distance(position, val2); 5__2.transform.localScale = new Vector3(1f, num2 / 2f, 1f); } abductionMiniGameEvent.KillNearbyEnemies(targetPlayer); goto IL_02f3; end_IL_00e6:; } catch (Exception arg) { AliensInValheimMod.Logger.LogWarning((object)$"[AbductionMiniGame] Excepción frame: {arg}"); goto IL_02f3; } } <>m__Finally1(); if (5__4 >= 100f) { AliensInValheimMod.Logger.LogInfo((object)"\ud83d\ude4c El jugador escapó de la abducción."); <>2__current = abductionMiniGameEvent.ShowRewardForPlayer(targetPlayer); <>1__state = 2; return true; } <>2__current = abductionMiniGameEvent.StartAbduction(targetPlayer); <>1__state = 3; return true; IL_02f3: <>2__current = null; <>1__state = 1; return true; } return false; } catch { //try-fault ((IDisposable)this).Dispose(); throw; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } private void <>m__Finally1() { <>1__state = -1; AbductionMiniGameEvent abductionMiniGameEvent = <>4__this; try { abductionMiniGameEvent.progressBar.Hide(); } catch (Exception arg) { AliensInValheimMod.Logger.LogWarning((object)$"[AbductionMiniGame] progressBar.Hide() falló: {arg}"); } if (5__5) { try { AlienUI.Hide(); AliensInValheimMod.Logger.LogDebug((object)"[AbductionMiniGame] AlienUI.Hide() ejecutado."); } catch (Exception arg2) { AliensInValheimMod.Logger.LogWarning((object)$"[AbductionMiniGame] AlienUI.Hide() falló: {arg2}"); } } if ((Object)(object)5__2 != (Object)null) { Object.Destroy((Object)(object)5__2); } } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__12 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public GameObject ovni; public Player targetPlayer; public float suspenseDuration; private GameObject 5__2; private float 5__3; private bool 5__4; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__12(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { int num = <>1__state; if (num == -3 || num == 1) { try { } finally { <>m__Finally1(); } } 5__2 = null; <>1__state = -2; } private bool MoveNext() { //IL_01ee: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: Expected O, but got Unknown //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: 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) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0135: 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_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0164: 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_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) try { switch (<>1__state) { default: return false; case 0: <>1__state = -1; AliensInValheimMod.Logger.LogDebug((object)"[AbductionMiniGame] Iniciando minijuego (viewer)..."); 5__2 = null; 5__3 = 0f; 5__4 = false; <>1__state = -3; 5__2 = ovni.transform.CreateBeam(((Component)targetPlayer).transform); AlienUI.ShowProgressBar("¡Presiona ESPACIO para resistir la abducción!"); 5__4 = true; break; case 1: <>1__state = -3; break; } if (5__3 < suspenseDuration) { try { 5__3 += Time.deltaTime; Vector3 val = ((Component)targetPlayer).transform.position + Vector3.up * 10f; ovni.transform.position = Vector3.Lerp(ovni.transform.position, val, Time.deltaTime * 5f); if ((Object)(object)5__2 != (Object)null) { Vector3 position = ovni.transform.position; Vector3 val2 = ((Component)targetPlayer).transform.position + Vector3.up * 1.5f; 5__2.transform.position = (position + val2) / 2f; 5__2.transform.LookAt(val2); float num = Vector3.Distance(position, val2); 5__2.transform.localScale = new Vector3(1f, num / 2f, 1f); } } catch (Exception arg) { AliensInValheimMod.Logger.LogWarning((object)$"[AbductionMiniGame Viewer] Excepción frame: {arg}"); } <>2__current = null; <>1__state = 1; return true; } <>m__Finally1(); GameObject val3 = new GameObject("AbductionEvent"); val3.AddComponent(); Object.DontDestroyOnLoad((Object)val3); return false; } catch { //try-fault ((IDisposable)this).Dispose(); throw; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } private void <>m__Finally1() { <>1__state = -1; try { if (5__4) { AlienUI.Hide(); } } catch (Exception arg) { AliensInValheimMod.Logger.LogWarning((object)$"[Viewer] AlienUI.Hide() falló: {arg}"); } if ((Object)(object)5__2 != (Object)null) { Object.Destroy((Object)(object)5__2); } } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__7 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Vector3 spawnPos; public GameObject alien; private GameObject 5__2; private Light 5__3; private GameObject 5__4; private float 5__5; private float 5__6; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__7(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { 5__2 = null; 5__3 = null; 5__4 = null; <>1__state = -2; } private bool MoveNext() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Expected O, but got Unknown //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: 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_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_013d: 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_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: { <>1__state = -1; 5__2 = new GameObject("TeleportBeamLight"); 5__2.transform.position = spawnPos + Vector3.up * 1.5f; 5__3 = 5__2.AddComponent(); 5__3.type = (LightType)2; 5__3.range = 8f; 5__3.intensity = 0f; 5__3.color = Color.cyan; 5__3.shadows = (LightShadows)2; 5__4 = new GameObject("TeleportParticles"); 5__4.transform.position = spawnPos; ParticleSystem obj = 5__4.AddComponent(); MainModule main = obj.main; ((MainModule)(ref main)).duration = 2f; ((MainModule)(ref main)).startLifetime = MinMaxCurve.op_Implicit(1f); ((MainModule)(ref main)).startSpeed = MinMaxCurve.op_Implicit(2f); ((MainModule)(ref main)).startSize = MinMaxCurve.op_Implicit(0.3f); ((MainModule)(ref main)).loop = false; ((MainModule)(ref main)).simulationSpace = (ParticleSystemSimulationSpace)1; ShapeModule shape = obj.shape; ((ShapeModule)(ref shape)).shapeType = (ParticleSystemShapeType)8; ((ShapeModule)(ref shape)).angle = 0f; ((ShapeModule)(ref shape)).radius = 0.5f; ((ShapeModule)(ref shape)).length = 3f; EmissionModule emission = obj.emission; ((EmissionModule)(ref emission)).rateOverTime = MinMaxCurve.op_Implicit(40f); obj.Play(); alien.transform.localScale = Vector3.zero; 5__5 = 2f; 5__6 = 0f; goto IL_0246; } case 1: <>1__state = -1; goto IL_0246; case 2: { <>1__state = -1; return false; } IL_0246: if (5__6 < 5__5) { 5__6 += Time.deltaTime; float num = 5__6 / 5__5; alien.transform.localScale = Vector3.one * Mathf.SmoothStep(0f, 1f, num); 5__3.intensity = Mathf.Lerp(0f, 6f, Mathf.Sin(num * (float)Math.PI)); <>2__current = null; <>1__state = 1; return true; } Object.Destroy((Object)(object)5__4, 2f); Object.Destroy((Object)(object)5__2, 2f); alien.transform.localScale = Vector3.one; <>2__current = alien; <>1__state = 2; return true; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } internal KeyCode jumpKey = (KeyCode)32; private const float MaxProgress = 100f; private AlienProgressBar progressBar => ((Component)this).gameObject.GetComponent(); private void Awake() { AliensInValheimMod.Logger.LogDebug((object)"[AbductionMiniGame] AbductionMiniGameEvent Awake"); ((Component)this).gameObject.AddComponent(); } [IteratorStateMachine(typeof(d__5))] internal IEnumerator ShowRewardForPlayer(Player player) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__5(0) { player = player }; } [IteratorStateMachine(typeof(d__6))] public IEnumerator StartGame(Player targetPlayer, GameObject ovni, float suspenseDuration) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__6(0) { <>4__this = this, targetPlayer = targetPlayer, ovni = ovni, suspenseDuration = suspenseDuration }; } [IteratorStateMachine(typeof(d__7))] private IEnumerator TeleportInAlien(Vector3 spawnPos, GameObject alien) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__7(0) { spawnPos = spawnPos, alien = alien }; } private Vector3 FindSafeTeleportLocation(Vector3 origin, float distance) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_008e: 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_009d: 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_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Invalid comparison between Unknown and I4 //IL_0073: Unknown result type (might be due to invalid IL or missing references) Vector3 val2 = default(Vector3); for (int i = 0; i < 20; i++) { Vector2 insideUnitCircle = Random.insideUnitCircle; Vector2 val = ((Vector2)(ref insideUnitCircle)).normalized * distance; ((Vector3)(ref val2))..ctor(origin.x + val.x, 0f, origin.z + val.y); float groundHeight = ZoneSystem.instance.GetGroundHeight(val2); if (!(groundHeight < -900f)) { val2.y = groundHeight + 0.5f; if ((int)WorldGenerator.instance.GetBiome(val2) != 256) { return val2; } } } AliensInValheimMod.Logger.LogInfo((object)"⚠\ufe0f No se encontró una ubicación segura. Usando ubicación por defecto."); return origin + Vector3.up * 2f; } private static void LookAtHorizontal(Transform who, Vector3 targetPos) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) Vector3 val = targetPos - who.position; val.y = 0f; if (((Vector3)(ref val)).sqrMagnitude > 0.0001f) { who.rotation = Quaternion.LookRotation(((Vector3)(ref val)).normalized, Vector3.up); } } [IteratorStateMachine(typeof(d__10))] internal IEnumerator StartAbduction(Player player) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__10(0) { <>4__this = this, player = player }; } private void DropInventory(Player player, Vector3 lootPos) { //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) List list = new List(); list.AddRange(((Humanoid)player).GetInventory().GetEquippedItems()); foreach (ItemData item in list) { ((Humanoid)player).UnequipItem(item, true); } GameObject prefab = ZNetScene.instance.GetPrefab("player_tombstone"); if ((Object)(object)prefab == (Object)null) { AliensInValheimMod.Logger.LogError((object)"❌ No se encontró el prefab 'player_tombstone'."); } else { Container component = Object.Instantiate(prefab, lootPos, Quaternion.identity).GetComponent(); if ((Object)(object)component == (Object)null) { AliensInValheimMod.Logger.LogError((object)"❌ El prefab 'player_tombstone' no contiene un componente Container."); } else { component.m_name = "Restos de " + player.GetPlayerName() + " (abducido)"; Inventory inventory = component.GetInventory(); foreach (ItemData item2 in list) { inventory.AddItem(item2); } inventory.m_onChanged(); AliensInValheimMod.Logger.LogInfo((object)$"\ud83e\udea6 Tumba creada con {list.Count} ítems en {lootPos}"); } } AliensInValheimMod.Logger.LogInfo((object)$"\ud83c\udf81 Equipamiento dejado en {lootPos}"); } [IteratorStateMachine(typeof(d__12))] public IEnumerator StartGameAsViewer(Player targetPlayer, GameObject ovni, float suspenseDuration) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__12(0) { targetPlayer = targetPlayer, ovni = ovni, suspenseDuration = suspenseDuration }; } private void KillNearbyEnemies(Player player) { //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005c: 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_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_007a: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: 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_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: 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_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Expected O, but got Unknown try { float num = 25f; List allCharacters = Character.GetAllCharacters(); if (allCharacters == null) { return; } foreach (Character item in allCharacters) { if (!((Object)(object)item == (Object)null) && !((Object)(object)item == (Object)(object)player) && !item.IsDead() && !(Vector3.Distance(((Component)item).transform.position, ((Component)player).transform.position) > num) && (int)item.GetFaction() != 0) { item.Damage(new HitData { m_damage = new DamageTypes { m_damage = 9999f }, m_point = ((Component)item).transform.position, m_dir = Vector3.up, m_ranged = true }); AliensInValheimMod.Logger.LogDebug((object)("☠\ufe0f Eliminado: " + ((Object)item).name + " cerca del jugador.")); } } } catch (Exception arg) { AliensInValheimMod.Logger.LogWarning((object)$"[KillNearbyEnemies] falló: {arg}"); } } private void OnDisable() { SafeHideUI(); } private void OnDestroy() { SafeHideUI(); } private void SafeHideUI() { try { progressBar?.Hide(); } catch { } try { AlienUI.Hide(); } catch { } } } internal class AbductionData { public long UserID { get; set; } public OvniConfiguration Config { get; set; } public AbductionData() { Config = new OvniConfiguration(); } } internal class AbductionRPC : CommandRPCBase { public enum CommandName { START_ABDUCTION, FINISH_ABDUCTION } private static AbductionRPC _singleton = null; public static readonly AbductionRPC Instance = _singleton ?? new AbductionRPC(); protected override string RPCName => "AliensInValheim_RPC_TriggerAbduction"; public static event Action RunAbductionSequenceRequested; } } namespace AliensInValheim.Utilities { internal enum SoundGroup { SFX, Music, Ambient, Master } internal static class AudioExtension { [CompilerGenerated] private sealed class d__4 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public GameObject ovni; public SoundChannel name; public float fadeDuration; private AudioSource 5__2; private float 5__3; private float 5__4; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__4(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { 5__2 = null; <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; 5__2 = ovni.GetAudioSource(name); if ((Object)(object)5__2 == (Object)null || !5__2.isPlaying) { return false; } 5__3 = 5__2.volume; 5__4 = 0f; break; case 1: <>1__state = -1; 5__4 += Time.deltaTime; break; } if (5__4 < fadeDuration) { 5__2.volume = Mathf.Lerp(5__3, 0f, 5__4 / fadeDuration); <>2__current = null; <>1__state = 1; return true; } 5__2.volume = 0f; 5__2.Stop(); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__5 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public GameObject ovni; public float fadeDuration; private AudioSource[] <>7__wrap1; private int <>7__wrap2; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__5(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>7__wrap1 = null; <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: { <>1__state = -1; AudioSource[] componentsInChildren = ovni.GetComponentsInChildren(true); <>7__wrap1 = componentsInChildren; <>7__wrap2 = 0; break; } case 1: <>1__state = -1; <>7__wrap2++; break; } if (<>7__wrap2 < <>7__wrap1.Length) { AudioSource source = <>7__wrap1[<>7__wrap2]; <>2__current = source.FadeOutAudio(fadeDuration); <>1__state = 1; return true; } <>7__wrap1 = null; return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__6 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public AudioSource source; public float fadeDuration; private float 5__2; private float 5__3; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__6(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; if ((Object)(object)source == (Object)null || !source.isPlaying) { return false; } 5__2 = source.volume; 5__3 = 0f; break; case 1: <>1__state = -1; 5__3 += Time.deltaTime; break; } if (5__3 < fadeDuration) { source.volume = Mathf.Lerp(5__2, 0f, 5__3 / fadeDuration); <>2__current = null; <>1__state = 1; return true; } source.volume = 0f; source.Stop(); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__2 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public GameObject ovni; public SoundChannel channel; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__2(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: { <>1__state = -1; AudioSource audioSource = ovni.GetAudioSource(channel); if ((Object)(object)audioSource == (Object)null) { AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] audio source no está asignado."); return false; } if (audioSource.isPlaying) { audioSource.Stop(); } if ((Object)(object)audioSource.clip != (Object)null) { audioSource.volume = 1f; audioSource.loop = false; audioSource.Play(); } <>2__current = null; <>1__state = 1; return true; } case 1: <>1__state = -1; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } internal static void AttachToGameMixer(this AudioSource source, SoundGroup group) { if ((Object)(object)AudioMan.instance != (Object)null) { AudioMixerGroup[] array = AudioMan.instance.m_masterMixer.FindMatchingGroups(group.ToString()); if (array.Length != 0) { source.outputAudioMixerGroup = array[0]; } } } public static void PlaySounds(this GameObject ovni, Func predicate = null) { List source = (from x in ovni.GetComponentsInChildren(true).ToList() where ((Object)x).name != SoundChannel.LASER.ToString() select x).ToList(); if (predicate != null) { source = source.Where(predicate).ToList(); } foreach (AudioSource item in source.Where((AudioSource x) => (Object)(object)x.clip != (Object)null).ToList()) { item.Play(); } } [IteratorStateMachine(typeof(d__2))] internal static IEnumerator PlaySound(this GameObject ovni, SoundChannel channel) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__2(0) { ovni = ovni, channel = channel }; } internal static AudioSource GetAudioSource(this GameObject gameObject, SoundChannel name) { AudioSource[] components = gameObject.GetComponents(); foreach (AudioSource val in components) { if (((Object)((Component)val).gameObject).name == name.ToString()) { return val; } } return null; } [IteratorStateMachine(typeof(d__4))] internal static IEnumerator FadeOutAndStopAudio(this GameObject ovni, SoundChannel name, float fadeDuration) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__4(0) { ovni = ovni, name = name, fadeDuration = fadeDuration }; } [IteratorStateMachine(typeof(d__5))] internal static IEnumerator FadeOutAudio(this GameObject ovni, float fadeDuration) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__5(0) { ovni = ovni, fadeDuration = fadeDuration }; } [IteratorStateMachine(typeof(d__6))] internal static IEnumerator FadeOutAudio(this AudioSource source, float fadeDuration) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__6(0) { source = source, fadeDuration = fadeDuration }; } } public static class PrefabFactoryExtension { public static Texture2D LoadSprite(this AssetBundle library, string prefabName) { Texture2D val = library.LoadAsset(prefabName); if ((Object)(object)val == (Object)null) { AliensInValheimMod.Logger.LogError((object)("[AliensInValheim]❌ No se pudo cargar el sprite '" + prefabName + "' desde el bundle.")); return null; } return val; } public static GameObject CreateAlien(this AssetBundle library, Vector3 position, string prefabName) { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)library == (Object)null) { AliensInValheimMod.Logger.LogError((object)"[AliensInValheim]❌ No se pudo cargar el bundle"); return null; } AliensInValheimMod.Logger.LogMessage((object)("[AliensInValheim] Cargando prefab " + prefabName)); GameObject val = library.LoadAsset(prefabName); if ((Object)(object)val == (Object)null) { AliensInValheimMod.Logger.LogError((object)("[AliensInValheim]❌ No se pudo cargar el prefab '" + prefabName + "' del alien desde el bundle.")); return null; } GameObject val2 = Object.Instantiate(val, position, Quaternion.identity); ((Object)val2).name = "Alien_Instance"; Camera[] componentsInChildren = val2.GetComponentsInChildren(true); foreach (Camera obj in componentsInChildren) { ((Behaviour)obj).enabled = false; ((Component)obj).gameObject.SetActive(false); } if ((Object)(object)val2 == (Object)null) { AliensInValheimMod.Logger.LogError((object)"[AliensInValheim] No se pudo crear el OVNI."); return null; } return val2; } public static GameObject CreateOvni(this AssetBundle library, Vector3 position, OvniConfiguration config, string instanceName = "UFO_Instance") { //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Expected O, but got Unknown if ((Object)(object)library == (Object)null) { AliensInValheimMod.Logger.LogError((object)"[AliensInValheim]❌ No se pudo cargar el bundle"); return null; } GameObject val = library.LoadAsset(config.PrefabName); if ((Object)(object)val == (Object)null) { AliensInValheimMod.Logger.LogError((object)("[AliensInValheim]❌ No se pudo cargar el prefab '" + config.PrefabName + "' del OVNI desde el bundle.")); return null; } if (!Object.op_Implicit((Object)(object)PrefabManager.Instance.GetPrefab(config.PrefabName))) { AliensInValheimMod.Logger.LogMessage((object)("[AliensInValheim] Registrando prefab " + config.PrefabName)); CustomPrefab val2 = new CustomPrefab(val, true); PrefabManager.Instance.AddPrefab(val2); } GameObject val3 = Object.Instantiate(val, position, Quaternion.identity); ((Object)val3).name = instanceName; val3.ConfigureAudio(config); Camera[] componentsInChildren = val3.GetComponentsInChildren(true); foreach (Camera obj in componentsInChildren) { ((Behaviour)obj).enabled = false; ((Component)obj).gameObject.SetActive(false); } AliensInValheimMod.OvniList.Add(val3); return val3; } private static void ConfigureAudio(this GameObject ovni, OvniConfiguration config) { AudioSource obj = ovni.AddComponent(); ((Object)obj).name = SoundChannel.LASER.ToString(); obj.loop = false; obj.volume = 1f; AudioSource obj2 = ovni.AddComponent(); ((Object)obj2).name = SoundChannel.ENGINE.ToString(); obj2.clip = AliensInValheimMod.Instance.Library.LoadAsset($"assets/sounds/ovni_engine{config.EngineSoundIndex}.mp3"); obj2.loop = true; obj2.volume = 0.8f; ((Object)ovni.AddComponent()).name = SoundChannel.BACKGROUND.ToString(); AudioSource obj3 = ovni.AddComponent(); obj3.clip = AliensInValheimMod.Instance.Library.LoadAsset($"assets/sounds/background{config.BackGroundSoundIndex}.mp3"); obj3.loop = true; obj3.volume = 0.6f; } public static GameObject CreateBeam(this Transform ufo, Transform player) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005d: 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_006d: 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_0084: Expected O, but got Unknown GameObject val = new GameObject("UFOBeam"); Light obj = val.AddComponent(); obj.type = (LightType)0; obj.spotAngle = 45f; obj.range = 60f; obj.intensity = 7f; obj.color = Color.Lerp(Color.white, Color.green, Random.value); val.transform.SetParent(ufo); val.transform.localPosition = Vector3.down * 3f; val.transform.LookAt(player); return val; } } internal static class OvniProcedures { [CompilerGenerated] private sealed class d__0 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public GameObject ufo; public float duration; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__0(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = ufo.FadeAndWarpAway(duration); <>1__state = 1; return true; case 1: <>1__state = -1; Object.Destroy((Object)(object)ufo); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__1 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public GameObject ovni; public float duration; private float 5__2; private Vector3 5__3; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__1(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_009d: 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_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: <>1__state = -1; AliensInValheimMod.Logger.LogInfo((object)("\ud83d\udef8 OVNI se aleja. " + ((Object)ovni).name)); 5__2 = 0f; 5__3 = ovni.transform.localScale; ovni.GetComponentsInChildren(); break; case 1: <>1__state = -1; break; } if (5__2 < duration) { 5__2 += Time.deltaTime; float num = 1f - 5__2 / duration; Transform transform = ovni.transform; transform.position += Vector3.up * 5__2 * 10f; ovni.transform.localScale = 5__3 * num; <>2__current = null; <>1__state = 1; return true; } return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__2 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public GameObject ovni; public Vector3 dest; public float speed; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__2(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: <>1__state = -1; break; case 1: <>1__state = -1; break; } if (Vector3.Distance(ovni.transform.position, dest) > 5f) { ovni.transform.position = Vector3.MoveTowards(ovni.transform.position, dest, speed * Time.deltaTime); <>2__current = null; <>1__state = 1; return true; } ovni.transform.position = dest; return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__3 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public GameObject ovni; public float duration; public Vector3 dest; private Vector3 5__2; private float 5__3; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__3(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: <>1__state = -1; 5__2 = ovni.transform.position; 5__3 = 0f; break; case 1: <>1__state = -1; break; } if (5__3 < duration) { 5__3 += Time.deltaTime; float num = Mathf.Clamp01(5__3 / duration); float num2 = 1f - Mathf.Pow(1f - num, 3f); ovni.transform.position = Vector3.Lerp(5__2, dest, num2); <>2__current = null; <>1__state = 1; return true; } ovni.transform.position = dest; return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [IteratorStateMachine(typeof(d__0))] internal static IEnumerator FadeAndWarAwayAndDestroy(this GameObject ufo, float duration = 2f) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__0(0) { ufo = ufo, duration = duration }; } [IteratorStateMachine(typeof(d__1))] internal static IEnumerator FadeAndWarpAway(this GameObject ovni, float duration = 10f) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__1(0) { ovni = ovni, duration = duration }; } [IteratorStateMachine(typeof(d__2))] internal static IEnumerator MoveTowards(this GameObject ovni, Vector3 dest, float speed = 8f) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__2(0) { ovni = ovni, dest = dest, speed = speed }; } [IteratorStateMachine(typeof(d__3))] internal static IEnumerator MoveTowardsFixedTime(this GameObject ovni, Vector3 dest, float duration = 10f) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__3(0) { ovni = ovni, dest = dest, duration = duration }; } } internal static class ProceduresExtension { [CompilerGenerated] private sealed class d__0 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public string prefabName; public string label; public Minimap map; public Vector3 position; public bool save; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__0(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: { <>1__state = -1; Sprite val = EnsureUfoSprite(prefabName); if ((Object)(object)val == (Object)null) { return false; } string text = "[UFO]" + (string.IsNullOrWhiteSpace(label) ? "Abduccion" : label); PinData val2 = map.AddPin(position, (PinType)3, text, save, false, 0L, default(PlatformUserID)); if (val2 != null) { val2.m_icon = val; if ((Object)(object)val2.m_uiElement != (Object)null) { Transform obj = ((Component)val2.m_uiElement).transform.Find("icon"); Image val3 = ((obj != null) ? ((Component)obj).GetComponent() : null); if ((Object)(object)val3 != (Object)null) { val3.sprite = val; val3.type = (Type)0; val3.preserveAspect = true; ((Graphic)val3).color = Color.white; } } } <>2__current = null; <>1__state = 1; return true; } case 1: <>1__state = -1; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__2 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public PinData pin; public Sprite sprite; private int 5__2; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__2(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; 5__2 = 0; break; case 1: <>1__state = -1; 5__2++; break; } if (5__2 < 15) { if ((Object)(object)pin?.m_uiElement != (Object)null) { Transform obj = ((Component)pin.m_uiElement).transform.Find("icon"); Image val = ((obj != null) ? ((Component)obj).GetComponent() : null); if ((Object)(object)val != (Object)null) { val.sprite = sprite; ((Graphic)val).SetNativeSize(); return false; } } <>2__current = null; <>1__state = 1; return true; } return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [IteratorStateMachine(typeof(d__0))] internal static IEnumerator AddCustomPin(this Minimap map, Vector3 position, string prefabName, string label = "Abduccion", bool save = true) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__0(0) { map = map, position = position, prefabName = prefabName, label = label, save = save }; } internal static Sprite EnsureUfoSprite(string prefabName) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) try { Texture2D val = AliensInValheimMod.Instance.Library.LoadSprite(prefabName); Sprite result = Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f), 64f); AliensInValheimMod.Logger.LogInfo((object)"[UfoPinsClient] Sprite OVNI cargado desde AssetBundle."); return result; } catch (Exception ex) { AliensInValheimMod.Logger.LogError((object)("[UfoPinsClient] Error al cargar AssetBundle OVNI: " + ex.Message)); } return null; } [IteratorStateMachine(typeof(d__2))] internal static IEnumerator ApplyIconWhenReady(this PinData pin, Sprite sprite) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__2(0) { pin = pin, sprite = sprite }; } internal static Player FindPlayerByUserID(long userId) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) foreach (Player allPlayer in Player.GetAllPlayers()) { if (!((Object)(object)allPlayer == (Object)null)) { ZDOID zDOID = ((Character)allPlayer).GetZDOID(); if (((ZDOID)(ref zDOID)).UserID == userId) { return allPlayer; } } } return null; } internal static Player FindPlayerByName(string name) { foreach (Player allPlayer in Player.GetAllPlayers()) { if (!((Object)(object)allPlayer == (Object)null) && string.Equals(allPlayer.GetPlayerName(), name, StringComparison.OrdinalIgnoreCase)) { return allPlayer; } } return null; } } public class AlienParalysis : MonoBehaviour { [CompilerGenerated] private sealed class d__7 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Player player; public AlienParalysis <>4__this; public float duration; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__7(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { int num = <>1__state; AlienParalysis alienParalysis = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; if ((Object)(object)player == (Object)null) { return false; } alienParalysis.originalWalkSpeed = ((Character)player).m_walkSpeed; alienParalysis.originalRunSpeed = ((Character)player).m_runSpeed; alienParalysis.originalJumpForce = ((Character)player).m_jumpForce; ((Character)player).m_walkSpeed = 0f; ((Character)player).m_runSpeed = 0f; ((Character)player).m_jumpForce = 0f; ((Character)player).Message((MessageType)1, "Una fuerza misteriosa te inmoviliza...", 0, (Sprite)null); alienParalysis.TryPlayCheerEmote(player); <>2__current = ((MonoBehaviour)alienParalysis).StartCoroutine(alienParalysis.LevitateRoutine(player, duration)); <>1__state = 1; return true; case 1: <>1__state = -1; ((Character)player).m_walkSpeed = alienParalysis.originalWalkSpeed; ((Character)player).m_runSpeed = alienParalysis.originalRunSpeed; ((Character)player).m_jumpForce = alienParalysis.originalJumpForce; ((Character)player).Message((MessageType)1, "La fuerza alienígena desaparece...", 0, (Sprite)null); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__8 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Player player; public float totalDuration; private Transform 5__2; private Vector3 5__3; private float 5__4; private float 5__5; private float 5__6; private float 5__7; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__8(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { 5__2 = null; <>1__state = -2; } private bool MoveNext() { //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0287: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: <>1__state = -1; if ((Object)(object)player == (Object)null) { return false; } 5__2 = ((Component)player).transform; 5__3 = 5__2.position; 5__4 = 0f; goto IL_00ee; case 1: <>1__state = -1; goto IL_00ee; case 2: <>1__state = -1; goto IL_01b0; case 3: { <>1__state = -1; break; } IL_01b0: if (5__6 < 5__5) { 5__6 += Time.deltaTime; float num = Mathf.Sin(5__6 * (float)Math.PI * 2f * 1.2f) * 0.08f; 5__2.position = new Vector3(5__3.x, 5__3.y + 1.2f + num, 5__3.z); <>2__current = null; <>1__state = 2; return true; } 5__7 = 0f; break; IL_00ee: if (5__4 < 0.6f) { 5__4 += Time.deltaTime; float num2 = Mathf.Clamp01(5__4 / 0.6f); float num3 = num2 * num2 * (3f - 2f * num2); 5__2.position = new Vector3(5__3.x, 5__3.y + num3 * 1.2f, 5__3.z); <>2__current = null; <>1__state = 1; return true; } 5__5 = Mathf.Max(0f, totalDuration - 1.2f); 5__6 = 0f; goto IL_01b0; } if (5__7 < 0.6f) { 5__7 += Time.deltaTime; float num4 = Mathf.Clamp01(5__7 / 0.6f); float num5 = num4 * num4 * (3f - 2f * num4); float num6 = Mathf.Lerp(5__3.y + 1.2f, 5__3.y, num5); 5__2.position = new Vector3(5__3.x, num6, 5__3.z); <>2__current = null; <>1__state = 3; return true; } 5__2.position = 5__3; return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private float originalWalkSpeed; private float originalRunSpeed; private float originalJumpForce; private const float LiftHeight = 1.2f; private const float LiftUpTime = 0.6f; private const float HoverBobAmp = 0.08f; private const float HoverBobHz = 1.2f; [IteratorStateMachine(typeof(d__7))] internal IEnumerator DoParalysis(Player player, float duration) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__7(0) { <>4__this = this, player = player, duration = duration }; } [IteratorStateMachine(typeof(d__8))] private IEnumerator LevitateRoutine(Player player, float totalDuration) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__8(0) { player = player, totalDuration = totalDuration }; } private void TryPlayCheerEmote(Player player) { try { Animator componentInChildren = ((Component)player).GetComponentInChildren(); if (!((Object)(object)componentInChildren == (Object)null)) { componentInChildren.CrossFade("emote_cheer", 0.1f, 0, 0f); } } catch { } } } public class AlienProgressBar : MonoBehaviour { private GameObject panel; private Slider slider; private Text sliderText; private Image fillImage; private void Awake() { AliensInValheimMod.Logger.LogDebug((object)"[AlienProgressBar] Registrando callback para GUI."); GUIManager.OnCustomGUIAvailable += CreateBar; } private void OnDestroy() { AliensInValheimMod.Logger.LogDebug((object)"[AlienProgressBar] Eliminando callback de GUI."); GUIManager.OnCustomGUIAvailable -= CreateBar; } private void CreateBar() { //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Expected O, but got Unknown //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Expected O, but got Unknown //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Unknown result type (might be due to invalid IL or missing references) //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_0208: Unknown result type (might be due to invalid IL or missing references) //IL_0213: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_0252: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Unknown result type (might be due to invalid IL or missing references) //IL_026e: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)panel != (Object)null) { AliensInValheimMod.Logger.LogDebug((object)"[AlienProgressBar] Ya existe un panel de barra, no se crea otro."); return; } AliensInValheimMod.Logger.LogDebug((object)"[AlienProgressBar] Creando barra de progreso..."); panel = GUIManager.Instance.CreateWoodpanel(GUIManager.CustomGUIFront.transform, new Vector2(0.5f, 0f), new Vector2(0.5f, 0f), new Vector2(0f, 80f), 300f, 50f, false); GameObject val = new GameObject("AlienSlider"); val.transform.SetParent(panel.transform, false); RectTransform obj = val.AddComponent(); obj.anchorMin = new Vector2(0f, 0f); obj.anchorMax = new Vector2(1f, 1f); obj.offsetMin = Vector2.zero; obj.offsetMax = Vector2.zero; slider = val.AddComponent(); slider.direction = (Direction)0; slider.minValue = 0f; slider.maxValue = 1f; slider.value = 0f; GameObject val2 = new GameObject("Background"); val2.transform.SetParent(val.transform, false); Image val3 = val2.AddComponent(); ((Graphic)val3).color = new Color(0f, 0f, 0f, 0.4f); RectTransform component = ((Component)val3).GetComponent(); component.anchorMin = Vector2.zero; component.anchorMax = Vector2.one; component.offsetMin = Vector2.zero; component.offsetMax = Vector2.zero; ((Selectable)slider).targetGraphic = (Graphic)(object)val3; GameObject val4 = new GameObject("Fill"); val4.transform.SetParent(val.transform, false); fillImage = val4.AddComponent(); ((Graphic)fillImage).color = Color.yellow; RectTransform component2 = ((Component)fillImage).GetComponent(); component2.anchorMin = Vector2.zero; component2.anchorMax = Vector2.one; component2.offsetMin = Vector2.zero; component2.offsetMax = Vector2.zero; slider.fillRect = component2; GameObject val5 = GUIManager.Instance.CreateText("0%", val.transform, new Vector2(0f, 0f), new Vector2(1f, 1f), Vector2.zero, GUIManager.Instance.AveriaSerifBold, 20, Color.white, true, Color.black, 40f, 100f, false); sliderText = val5.GetComponent(); sliderText.alignment = (TextAnchor)4; panel.SetActive(false); AliensInValheimMod.Logger.LogDebug((object)"[AlienProgressBar] Barra de progreso creada correctamente y oculta."); } public void SetValue(float value) { //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)slider == (Object)null || (Object)(object)sliderText == (Object)null || (Object)(object)fillImage == (Object)null) { AliensInValheimMod.Logger.LogWarning((object)"[AlienProgressBar] No se puede actualizar valor. Componentes no inicializados."); return; } slider.value = Mathf.Clamp01(value); int num = Mathf.FloorToInt(value * 100f); sliderText.text = $"{num}%"; if (value < 0.3f) { ((Graphic)fillImage).color = Color.red; } else if (value < 0.75f) { ((Graphic)fillImage).color = Color.yellow; } else { ((Graphic)fillImage).color = Color.green; } AliensInValheimMod.Logger.LogDebug((object)$"[AlienProgressBar] Valor actualizado: {num}%"); } public void Show() { if ((Object)(object)panel != (Object)null) { panel.SetActive(true); AliensInValheimMod.Logger.LogDebug((object)"[AlienProgressBar] Barra visible."); } } public void Hide() { if ((Object)(object)panel != (Object)null) { panel.SetActive(false); AliensInValheimMod.Logger.LogDebug((object)"[AlienProgressBar] Barra oculta."); } } } public class RewardDropAnimation : MonoBehaviour { private Vector3 targetPosition; private float speed = 6f; private bool landed; public void Init(Vector3 target) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) targetPosition = target; } private void Update() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) if (!landed && ((Component)this).transform.position.y > targetPosition.y) { ((Component)this).transform.position = Vector3.MoveTowards(((Component)this).transform.position, targetPosition, speed * Time.deltaTime); } else { if (landed) { return; } landed = true; ((Component)this).transform.position = targetPosition; GameObject prefab = ZNetScene.instance.GetPrefab("vfx_guardstone_activate"); if ((Object)(object)prefab != (Object)null) { AudioSource component = prefab.GetComponent(); if ((Object)(object)component != (Object)null && (Object)(object)component.clip != (Object)null) { AudioSource obj = ((Component)this).gameObject.AddComponent(); obj.clip = component.clip; obj.playOnAwake = false; obj.spatialBlend = 1f; obj.Play(); } } Object.Destroy((Object)(object)this); } } } internal static class LibraryLoaderExtension { private static AssetBundle _bundle; public static AssetBundle LoadLibraryFileBundle(string modPath) { if ((Object)(object)_bundle != (Object)null) { return _bundle; } try { string text = Path.Combine(modPath, "valheiminalienslibrary"); if (!File.Exists(text)) { AliensInValheimMod.Logger.LogError((object)("❌ El archivo '" + text + "' no existe.")); return null; } _bundle = AssetBundle.LoadFromFile(text); if ((Object)(object)_bundle == (Object)null) { AliensInValheimMod.Logger.LogError((object)"❌ Falló la carga del AssetBundle desde el archivo."); } return _bundle; } catch (Exception ex) { AliensInValheimMod.Logger.LogError((object)("❌ Error al cargar el AssetBundle desde el disco: " + ex.Message)); return null; } } } public static class PlayerScanner { internal static float GetAveragePlayerDistance() { //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) List list = (from p in Player.GetAllPlayers() where !((Character)p).IsDead() select p).ToList(); if (list.Count < 2) { return float.MaxValue; } float num = 0f; int num2 = 0; for (int i = 0; i < list.Count; i++) { for (int j = i + 1; j < list.Count; j++) { num += Vector3.Distance(((Component)list[i]).transform.position, ((Component)list[j]).transform.position); num2++; } } if (num2 <= 0) { return float.MaxValue; } return num / (float)num2; } internal static bool PlayerIsAlone(this Player player) { int num = player.CountNearbyPlayers(60f); AliensInValheimMod.Logger.LogInfo((object)$"[AliensInValheim] Jugadores cerca de {player.GetPlayerName()}: {num}"); return num == 0; } internal static bool IsLocalPlayer(this Player player) { return ((Object)Player.m_localPlayer).name == player.GetPlayerName(); } private static int CountNearbyPlayers(this Player localPlayer, float radius) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) int num = 0; Vector3 position = ((Component)localPlayer).transform.position; foreach (Player item in from x in Player.GetAllPlayers() where x.GetPlayerName() != localPlayer.GetPlayerName() select x) { float num2 = Math.Abs(Vector3.Distance(((Component)item).transform.position, position)); AliensInValheimMod.Logger.LogInfo((object)$"[AliensInValheim] Evaluando distancia a {item.GetPlayerName()} de {num2}"); if (num2 <= radius) { num++; } } return num; } } public static class AlienUI { private static GameObject panel; private static Slider slider; private static Image fillImage; public static void ShowProgressBar(string title = "") { //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Expected O, but got Unknown //IL_009c: 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_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Expected O, but got Unknown //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0253: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_02ab: Unknown result type (might be due to invalid IL or missing references) //IL_02b6: Unknown result type (might be due to invalid IL or missing references) //IL_02e6: Unknown result type (might be due to invalid IL or missing references) //IL_02fb: Unknown result type (might be due to invalid IL or missing references) //IL_0306: Unknown result type (might be due to invalid IL or missing references) //IL_0310: Unknown result type (might be due to invalid IL or missing references) //IL_031f: Unknown result type (might be due to invalid IL or missing references) //IL_032b: Unknown result type (might be due to invalid IL or missing references) //IL_037d: Unknown result type (might be due to invalid IL or missing references) //IL_0392: Unknown result type (might be due to invalid IL or missing references) //IL_039d: Unknown result type (might be due to invalid IL or missing references) //IL_03a7: 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) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Expected O, but got Unknown if ((Object)(object)panel != (Object)null) { Object.Destroy((Object)(object)panel); } if ((Object)(object)GameObject.Find("AlienCanvas") == (Object)null) { GameObject val = new GameObject("AlienCanvas"); val.AddComponent().renderMode = (RenderMode)0; val.AddComponent().uiScaleMode = (ScaleMode)1; val.AddComponent(); Object.DontDestroyOnLoad((Object)val); } Transform transform = GameObject.Find("AlienCanvas").transform; panel = new GameObject("AlienProgressPanel"); panel.transform.SetParent(transform, false); RectTransform obj = panel.AddComponent(); obj.sizeDelta = new Vector2(400f, 80f); obj.anchoredPosition = new Vector2(0f, -200f); ((Graphic)panel.AddComponent()).color = new Color(0f, 0f, 0f, 0f); GameObject val2 = new GameObject("TextBackground"); val2.transform.SetParent(panel.transform, false); Image obj2 = val2.AddComponent(); ((Graphic)obj2).color = new Color(0f, 0f, 0f, 0.2f); RectTransform component = ((Component)obj2).GetComponent(); component.anchorMin = new Vector2(0f, 1f); component.anchorMax = new Vector2(1f, 1f); component.sizeDelta = new Vector2(0f, 30f); component.anchoredPosition = new Vector2(0f, -5f); GameObject val3 = new GameObject("AlienLabel"); val3.transform.SetParent(val2.transform, false); Text obj3 = val3.AddComponent(); obj3.text = title; obj3.alignment = (TextAnchor)4; obj3.font = GUIManager.Instance.AveriaSerif; obj3.fontSize = 8; ((Graphic)obj3).color = new Color(1f, 1f, 1f); RectTransform component2 = ((Component)obj3).GetComponent(); component2.anchorMin = new Vector2(0f, 0f); component2.anchorMax = new Vector2(1f, 1f); component2.offsetMin = Vector2.zero; component2.offsetMax = Vector2.zero; Outline obj4 = val3.AddComponent(); ((Shadow)obj4).effectColor = Color.black; ((Shadow)obj4).effectDistance = new Vector2(0.5f, -0.5f); GameObject val4 = new GameObject("AlienSlider"); val4.transform.SetParent(panel.transform, false); slider = val4.AddComponent(); RectTransform component3 = ((Component)slider).GetComponent(); component3.sizeDelta = new Vector2(300f, 20f); component3.anchoredPosition = new Vector2(0f, -40f); Image obj5 = new GameObject("Background").AddComponent(); ((Graphic)obj5).color = Color.black; ((Component)obj5).transform.SetParent(((Component)slider).transform, false); RectTransform component4 = ((Component)obj5).GetComponent(); component4.anchorMin = new Vector2(0f, 0f); component4.anchorMax = new Vector2(1f, 1f); component4.offsetMin = Vector2.zero; component4.offsetMax = Vector2.zero; Image val5 = new GameObject("Fill").AddComponent(); ((Graphic)val5).color = Color.yellow; ((Component)val5).transform.SetParent(((Component)slider).transform, false); fillImage = val5; slider.fillRect = ((Graphic)val5).rectTransform; ((Selectable)slider).targetGraphic = (Graphic)(object)val5; RectTransform component5 = ((Component)val5).GetComponent(); component5.anchorMin = new Vector2(0f, 0f); component5.anchorMax = new Vector2(1f, 1f); component5.offsetMin = Vector2.zero; component5.offsetMax = Vector2.zero; slider.minValue = 0f; slider.maxValue = 1f; slider.value = 0f; } public static void SetValue(float normalized) { if ((Object)(object)slider != (Object)null) { slider.value = Mathf.Clamp01(normalized); } } public static void SetColor(Color color) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)fillImage != (Object)null) { ((Graphic)fillImage).color = color; } } public static void Hide() { if ((Object)(object)panel != (Object)null) { Object.Destroy((Object)(object)panel); panel = null; slider = null; fillImage = null; } } } internal static class PlayerExtensions { internal static float CalculateFireDamage(this Player player) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Invalid comparison between Unknown and I4 if ((Object)(object)player == (Object)null) { return 0f; } float num = 50f; try { float maxHealth = ((Character)player).GetMaxHealth(); float bodyArmor = ((Character)player).GetBodyArmor(); float num2 = (((int)((Character)player).GetDamageModifiers((WeakSpot)null).m_fire == 5) ? 20f : 0f); num = (maxHealth + bodyArmor + num2) * 0.1f; } catch { return 50f; } return Mathf.Max(1f, num); } internal static Player FindPlayer(this List players, string name, long guid) { return ((IEnumerable)players).FirstOrDefault((Func)delegate(Player p) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) if (!p.GetPlayerName().Equals(name, StringComparison.OrdinalIgnoreCase)) { ZDOID zDOID = ((Character)p).GetZDOID(); return ((ZDOID)(ref zDOID)).UserID == guid; } return true; }); } internal static Player GetRandomNearbyPlayer(this Player player, float radiusMeters = 50f) { if ((Object)(object)player == (Object)null) { return null; } List list = (from p in Player.GetAllPlayers() where (Object)(object)p != (Object)null && !((Character)p).IsDead() && (Object)(object)p != (Object)(object)player select p).ToList(); if (list.Count == 0) { return player; } List list2 = list.Where((Player p) => Vector3.Distance(((Component)p).transform.position, ((Component)player).transform.position) <= radiusMeters).ToList(); if (list2.Count == 0) { return player; } return list2[Random.Range(0, list2.Count)]; } internal static bool TryGetRandomPlayer(out Player player) { //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) player = null; if ((Object)(object)ZNet.instance == (Object)null) { return false; } if (ZNet.instance.IsServer()) { List list = (ZNet.instance.GetConnectedPeers() ?? ZNet.instance.GetPeers()).Where((ZNetPeer p) => p != null && p.IsReady() && !((ZDOID)(ref p.m_characterID)).IsNone()).ToList(); if (list.Count == 0) { return false; } ZNetPeer val = list[Random.Range(0, list.Count)]; long userId = ((ZDOID)(ref val.m_characterID)).UserID; player = ((IEnumerable)Player.GetAllPlayers()).FirstOrDefault((Func)delegate(Player p) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) ZDOID zDOID2 = ((Character)p).GetZDOID(); return ((ZDOID)(ref zDOID2)).UserID == userId; }); if ((Object)(object)player == (Object)null) { AliensInValheimMod.Logger.LogWarning((object)$"[ServerPlayerPicker] No se encontró instancia Player para {val.m_playerName} ({userId})"); return false; } AliensInValheimMod.Logger.LogInfo((object)$"[ServerPlayerPicker] Jugador elegido en servidor: {player.GetPlayerName()} ({userId})"); return true; } if ((Object)(object)Player.m_localPlayer == (Object)null) { return false; } player = Player.m_localPlayer; ManualLogSource logger = AliensInValheimMod.Logger; string playerName = player.GetPlayerName(); ZDOID zDOID = ((Character)player).GetZDOID(); logger.LogInfo((object)$"[ServerPlayerPicker] Cliente devolvió su propio Player: {playerName} ({((ZDOID)(ref zDOID)).UserID})"); return true; } internal static void SolvePlayerAndConfiguration(string[] args, out Player target, out OvniConfiguration config) { target = Player.m_localPlayer; int? num = null; try { if (args != null && args.Length != 0) { if (args.Length == 1) { Player val = ResolvePlayer(args[0]); int zeroBased; if ((Object)(object)val != (Object)null) { target = val; } else if (TryResolveIndex(args[0], Configurations.List.Count, out zeroBased)) { num = zeroBased; } else { AliensInValheimMod.Logger.LogInfo((object)$"⚠\ufe0f '{args[0]}' no es un nombre de jugador, UserID ni índice válido (1..{Configurations.List.Count})."); } } else { if (TryResolveIndex(args[0], Configurations.List.Count, out var zeroBased2)) { num = zeroBased2; } else { AliensInValheimMod.Logger.LogInfo((object)$"⚠\ufe0f Índice de OVNI inválido en el primer argumento (1..{Configurations.List.Count})."); } Player val2 = ResolvePlayer(args[1]); if ((Object)(object)val2 != (Object)null) { target = val2; } else { AliensInValheimMod.Logger.LogInfo((object)("⚠\ufe0f Jugador '" + args[1] + "' no encontrado por nombre ni UserID.")); } } } if ((Object)(object)target == (Object)null) { AliensInValheimMod.Logger.LogInfo((object)"⚠\ufe0f No hay jugador objetivo (target == null)."); } else if (((Character)target).IsDead()) { AliensInValheimMod.Logger.LogInfo((object)"⚠\ufe0f El jugador objetivo está muerto."); } if (num.HasValue && Configurations.List.Count > 0) { config = Configurations.List[num.Value]; } else { config = Configurations.GetRandom(); } } catch (Exception arg) { AliensInValheimMod.Logger.LogError((object)$"❌ Error en SolvePlayerAndConfiguration: {arg}"); config = Configurations.GetRandom(); } } private static Player ResolvePlayer(string token) { List allPlayers = Player.GetAllPlayers(); Player val = ((IEnumerable)allPlayers).FirstOrDefault((Func)((Player p) => p.GetPlayerName().Equals(token, StringComparison.OrdinalIgnoreCase))); if ((Object)(object)val != (Object)null) { return val; } if (long.TryParse(token, out var uid)) { Player val2 = ((IEnumerable)allPlayers).FirstOrDefault((Func)delegate(Player p) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) ZDOID zDOID = ((Character)p).GetZDOID(); return ((ZDOID)(ref zDOID)).UserID == uid; }); if ((Object)(object)val2 != (Object)null) { return val2; } } return null; } private static bool TryResolveIndex(string token, int count, out int zeroBased) { zeroBased = -1; if (!int.TryParse(token, out var result)) { return false; } if (count <= 0) { return false; } if (result < 1 || result > count) { return false; } zeroBased = result - 1; return true; } } public enum SoundChannel { BACKGROUND, ENGINE, LASER } public static class StableHash { public static int GetStableHashCode(string str) { int num = 352654597; int num2 = num; for (int i = 0; i < str.Length; i += 2) { num = ((num << 5) + num) ^ str[i]; if (i == str.Length - 1) { break; } num2 = ((num2 << 5) + num2) ^ str[i + 1]; } return num + num2 * 1566083941; } } public static class TimeHelper { public static bool IsNight() { if ((Object)(object)EnvMan.instance == (Object)null) { return false; } float dayFraction = EnvMan.instance.GetDayFraction(); if (!(dayFraction > 0.75f)) { return dayFraction < 0.25f; } return true; } public static bool IsBadWeather() { if ((Object)(object)EnvMan.instance == (Object)null) { return false; } EnvSetup currentEnvironment = EnvMan.instance.GetCurrentEnvironment(); if (currentEnvironment == null || string.IsNullOrEmpty(currentEnvironment.m_name)) { return false; } string name = currentEnvironment.m_name; if (!name.Contains("Rain") && !name.Contains("Thunder") && !name.Contains("Storm")) { return name.Contains("Mist"); } return true; } public static bool HasIntervalPassed(float lastTime, float interval) { return Time.time - lastTime >= interval; } } [Serializable] public class Vec3 { public float x; public float y; public float z; public Vec3() { } public Vec3(float x, float y, float z) { this.x = x; this.y = y; this.z = z; } } public static class VectorExtension { public static Vec3 FromUnity(this Vector3 v) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) return new Vec3(v.x, v.y, v.z); } public static Vector3 ToUnity(this Vec3 v) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) return new Vector3(v.x, v.y, v.z); } } } namespace AliensInValheim.I18n { public static class Loc { private static CustomLocalization localization; private static string language = "English"; public static void InitFromFolder(string modPath, string subfolder = "Translations") { try { language = PlayerPrefs.GetString("language", "English"); } catch { } string text = Path.Combine(modPath, subfolder); localization = LocalizationManager.Instance.GetLocalization(); if (!Directory.Exists(text)) { Debug.LogWarning((object)("[Loc] No existe carpeta de traducciones: " + text)); return; } string[] files = Directory.GetFiles(text, "*.json"); foreach (string path in files) { string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(path); string text2 = File.ReadAllText(path); localization.AddJsonFile(fileNameWithoutExtension, text2); Debug.Log((object)("[Loc] " + fileNameWithoutExtension + ".json cargado correctamente")); } IEnumerable languages = localization.GetLanguages(); Debug.Log((object)("[Loc] Idiomas disponibles: " + string.Join(", ", languages))); Debug.Log((object)("[Loc] Traducciones inicializadas desde " + text)); } public static string T(string token) { if (localization == null || string.IsNullOrWhiteSpace(token)) { return token; } string text = (token.StartsWith("$") ? token : ("$" + token)); return localization.TryTranslate(text); } public static string T(string token, params object[] args) { string text = T(token); if (args == null || args.Length == 0) { return text; } try { return string.Format(text, args); } catch { return text; } } } } namespace AliensInValheim.Commands { internal class ClearOvnisCommand : ConsoleCommand { public override string Name => "clearovnis"; public override string Help => "remueve los ovnis que estan en el cielo"; public override void Run(string[] args) { AliensInValheimMod.ClearOvnis(); AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] ✅ Se han borrado los ovnis cargados."); } } } namespace AliensInValheim.AlienAtack { internal class OvniAtackCommand : ConsoleCommand { public override string Name => "ataquealien"; public override string Help => "Inicia un ataque alienígena contra los jugadores cercanos."; public override void Run(string[] args) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) Player target = Player.m_localPlayer; PlayerExtensions.SolvePlayerAndConfiguration(args, out target, out var _); OvniAttackRPC instance = OvniAttackRPC.Instance; AlienAtackData alienAtackData = new AlienAtackData(); ZDOID zDOID = ((Character)target).GetZDOID(); alienAtackData.UserID = ((ZDOID)(ref zDOID)).UserID; alienAtackData.Config = Configurations.GetByIndex(0); instance.SendCommandToAll(OvniAttackRPC.CommandName.START_ATACK, alienAtackData); AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] \ud83d\udef8 Se ha iniciado un ataque"); } } internal class OvniAttackEvent : MonoBehaviour { [CompilerGenerated] private sealed class d__27 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public OvniAttackEvent <>4__this; public Player player; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__27(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) int num = <>1__state; OvniAttackEvent ovniAttackEvent = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; ovniAttackEvent.ovni.PlaySounds(); <>2__current = ((MonoBehaviour)ovniAttackEvent).StartCoroutine(ovniAttackEvent.ovni.MoveTowardsFixedTime(((Component)player).transform.position + Vector3.up * 10f)); <>1__state = 1; return true; case 1: <>1__state = -1; AliensInValheimMod.Logger.LogInfo((object)"[AlienAttack] OVNI en posición, iniciando ataque..."); ovniAttackEvent.timer = 0f; break; case 2: <>1__state = -1; break; } if (ovniAttackEvent.timer < ovniAttackEvent.attackDuration) { ovniAttackEvent.timer += Time.deltaTime; if (!((Object)(object)player == (Object)null) && !((Character)player).IsDead()) { ovniAttackEvent.actualDistance = Vector3.Distance(ovniAttackEvent.ovni.transform.position, ((Component)player).transform.position); Vector3 val = ((Component)player).transform.position + Vector3.up * 10f; ovniAttackEvent.currentTarget = Vector3.Lerp(ovniAttackEvent.currentTarget, val, Time.deltaTime * 2f); if ((Object)(object)ovniAttackEvent.ovni != (Object)null && (Object)(object)ovniAttackEvent.ovni.transform != (Object)null) { ovniAttackEvent.ovni.transform.position = Vector3.MoveTowards(ovniAttackEvent.ovni.transform.position, ovniAttackEvent.currentTarget, 25f * Time.deltaTime); } if (ovniAttackEvent.actualDistance < 20f && !ovniAttackEvent.isFiring && Time.time - ovniAttackEvent.lastFireTime >= 1.5f) { ((MonoBehaviour)ovniAttackEvent).StartCoroutine(ovniAttackEvent.FireLaser(player)); ovniAttackEvent.lastFireTime = Time.time; } ovniAttackEvent.UpdateCountdownUI(); <>2__current = null; <>1__state = 2; return true; } AliensInValheimMod.Logger.LogInfo((object)"[AlienAttack] Jugador muerto, terminando ataque."); } AliensInValheimMod.Logger.LogInfo((object)"[AlienAttack] Tiempo de ataque completado."); ((Renderer)ovniAttackEvent.laserBeam).enabled = false; OvniAttackRPC.Instance.SendCommandToAll(OvniAttackRPC.CommandName.END_ATACK, ovniAttackEvent.data); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__28 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Player player; public OvniAttackEvent <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__28(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { int num = <>1__state; if (num == -3 || num == 1) { try { } finally { <>m__Finally1(); } } <>1__state = -2; } private bool MoveNext() { //IL_008f: 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_00a0: 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_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: 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_0231: Unknown result type (might be due to invalid IL or missing references) //IL_023b: Expected O, but got Unknown //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Expected O, but got Unknown //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) try { int num = <>1__state; OvniAttackEvent ovniAttackEvent = <>4__this; switch (num) { default: return false; case 0: { <>1__state = -1; if ((Object)(object)player == (Object)null || (Object)(object)ovniAttackEvent.ovni == (Object)null || (Object)(object)ovniAttackEvent.laserBeam == (Object)null) { AliensInValheimMod.Logger.LogWarning((object)"[AlienAttack] FireLaser: Referencia nula detectada."); return false; } if (ovniAttackEvent.isFiring) { return false; } ovniAttackEvent.isFiring = true; <>1__state = -3; Vector3 position = ovniAttackEvent.ovni.transform.position; Vector3 val = ((Component)player).transform.position + Vector3.up * 1f; ovniAttackEvent.laserBeam.positionCount = 2; ovniAttackEvent.laserBeam.SetPosition(0, position); ovniAttackEvent.laserBeam.SetPosition(1, val); ((Renderer)ovniAttackEvent.laserBeam).enabled = true; AliensInValheimMod.Logger.LogDebug((object)$"[AlienAttack] Disparando láser! Distancia: {ovniAttackEvent.actualDistance:F1}m"); float num2 = player.CalculateFireDamage(); ZDOID uid = default(ZDOID); ((ZDOID)(ref uid))..ctor(0L, 0u); ZNetView component = ovniAttackEvent.ovni.GetComponent(); if ((Object)(object)component != (Object)null && component.IsValid() && component.GetZDO() != null) { uid = component.GetZDO().m_uid; } if ((Object)(object)ZNet.instance != (Object)null && ZNet.instance.IsServer()) { HitData val2 = new HitData { m_damage = new DamageTypes { m_fire = num2 }, m_point = val }; Vector3 val3 = val - position; val2.m_dir = ((Vector3)(ref val3)).normalized; val2.m_attacker = uid; HitData val4 = val2; ((Character)player).Damage(val4); AliensInValheimMod.Logger.LogDebug((object)$"[AlienAttack] Daño aplicado: {num2:F1}"); } float num3 = 0.15f; if ((Object)(object)ovniAttackEvent.FireClip != (Object)null && (Object)(object)ovniAttackEvent.lassserChannel != (Object)null) { ovniAttackEvent.lassserChannel.PlayOneShot(ovniAttackEvent.FireClip); num3 = ovniAttackEvent.FireClip.length; } <>2__current = (object)new WaitForSeconds(Mathf.Max(0.1f, num3)); <>1__state = 1; return true; } case 1: <>1__state = -3; ((Renderer)ovniAttackEvent.laserBeam).enabled = false; ovniAttackEvent.laserBeam.positionCount = 0; <>m__Finally1(); return false; } } catch { //try-fault ((IDisposable)this).Dispose(); throw; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } private void <>m__Finally1() { <>1__state = -1; <>4__this.isFiring = false; } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__26 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public OvniAttackEvent <>4__this; public AlienAtackData atackdata; public Player player; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__26(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //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_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0097: 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) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: 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) int num = <>1__state; OvniAttackEvent ovniAttackEvent = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; AliensInValheimMod.Logger.LogInfo((object)"[AlienAttack] Iniciando ataque alienígena."); ovniAttackEvent.CreateCountdownUI(); ovniAttackEvent.attackDuration = Random.Range(10f, 20f); ovniAttackEvent.timer = 0f; ovniAttackEvent.lastFireTime = -1.5f; ovniAttackEvent.data = atackdata; ovniAttackEvent.ovni = AliensInValheimMod.Instance.Library.CreateOvni(((Component)player).transform.position + Vector3.up * 100f, ovniAttackEvent.data.Config, "UFO_Attack"); ovniAttackEvent.currentTarget = ((Component)player).transform.position + Vector3.up * 10f; ovniAttackEvent.lassserChannel = ovniAttackEvent.ovni.GetAudioSource(SoundChannel.LASER); <>2__current = ((MonoBehaviour)ovniAttackEvent).StartCoroutine(ovniAttackEvent.AttackRoutine(player)); <>1__state = 1; return true; case 1: <>1__state = -1; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__29 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public OvniAttackEvent <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__29(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { int num = <>1__state; OvniAttackEvent ovniAttackEvent = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; AliensInValheimMod.Logger.LogInfo((object)"[AlienAttack] Ataque alienígena finalizado."); ((MonoBehaviour)ovniAttackEvent).StartCoroutine(ovniAttackEvent.ovni.FadeOutAudio(8f)); <>2__current = ((MonoBehaviour)ovniAttackEvent).StartCoroutine(ovniAttackEvent.ovni.FadeAndWarpAway(18f)); <>1__state = 1; return true; case 1: <>1__state = -1; if ((Object)(object)ovniAttackEvent.panelGO != (Object)null) { Object.Destroy((Object)(object)ovniAttackEvent.panelGO); } if ((Object)(object)ovniAttackEvent.countdownPanel != (Object)null) { Object.Destroy((Object)(object)ovniAttackEvent.countdownPanel); } if ((Object)(object)ovniAttackEvent.ovni != (Object)null) { Object.Destroy((Object)(object)ovniAttackEvent.ovni); } if ((Object)(object)ovniAttackEvent.FireClip != (Object)null) { Object.Destroy((Object)(object)ovniAttackEvent.FireClip); } if ((Object)(object)ovniAttackEvent.laserBeam != (Object)null) { Object.Destroy((Object)(object)ovniAttackEvent.laserBeam); } if ((Object)(object)ovniAttackEvent.lassserChannel != (Object)null) { Object.Destroy((Object)(object)ovniAttackEvent.lassserChannel); } <>2__current = null; <>1__state = 2; return true; case 2: <>1__state = -1; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private GameObject ovni; private float attackDuration = 10f; private float timer; private const float ovniApproachSpeed = 25f; private const float maxFireDistance = 20f; private const float fireCooldown = 1.5f; private AlienAtackData data; private RectTransform countdownPanel; private Text countdownText; private GameObject panelGO; private static Material _laserAdditiveMat; private static readonly int SurfaceMask = LayerMask.GetMask(new string[4] { "Default", "static_solid", "terrain", "Water" }); private float actualDistance; private float lastFireTime; private bool isFiring; private AudioClip FireClip; private AudioSource lassserChannel; private LineRenderer laserBeam; private Vector3 currentTarget; private void Awake() { FireClip = AliensInValheimMod.Instance.Library.LoadAsset("assets/sounds/laser.mp3"); laserBeam = CreateLasserBeam(); } private void CreateCountdownUI() { //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_005a: 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_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) GameObject customGUIFront = GUIManager.CustomGUIFront; Transform val = ((customGUIFront != null) ? customGUIFront.transform : null); if ((Object)(object)val == (Object)null) { AliensInValheimMod.Logger.LogWarning((object)"[AlienAttack/UI] GUIManager.CustomGUIFront no disponible."); return; } panelGO = GUIManager.Instance.CreateWoodpanel(val, new Vector2(0.5f, 1f), new Vector2(0.5f, 1f), new Vector2(0f, -80f), 360f, 44f, false); ((Object)panelGO).name = "Aliens_CountdownPanel"; countdownPanel = panelGO.GetComponent(); countdownPanel.pivot = new Vector2(0.5f, 1f); Font averiaSerif = GUIManager.Instance.AveriaSerif; GameObject val2 = GUIManager.Instance.CreateText("Ataque OVNI: …", panelGO.transform, new Vector2(0f, 0f), new Vector2(1f, 1f), Vector2.zero, averiaSerif, 18, Color.cyan, true, new Color(0f, 0f, 0f, 0.9f), 0.25f, 0f, false); ((Object)val2).name = "Aliens_CountdownText"; countdownText = val2.GetComponent(); RectTransform rectTransform = ((Graphic)countdownText).rectTransform; rectTransform.offsetMin = new Vector2(8f, 4f); rectTransform.offsetMax = new Vector2(-8f, -4f); } private GameObject TraverseHUDRoot() { try { FieldInfo field = typeof(Hud).GetField("m_rootObject", BindingFlags.Instance | BindingFlags.NonPublic); GameObject val = (GameObject)((field != null) ? /*isinst with value type is only supported in some contexts*/: null); object result; if (!((Object)(object)val != (Object)null)) { Hud instance = Hud.instance; result = ((instance != null) ? ((Component)instance).gameObject : null); } else { result = val; } return (GameObject)result; } catch { Hud instance2 = Hud.instance; return (instance2 != null) ? ((Component)instance2).gameObject : null; } } private void UpdateCountdownUI() { float num = Mathf.Max(0f, attackDuration - timer); if ((Object)(object)countdownText != (Object)null) { countdownText.text = $"Ataque OVNI: {num:F1} s | Distancia: {actualDistance:F1}m"; } } private static bool TryGetSurfaceY(Vector3 worldXZ, out float y) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) RaycastHit val = default(RaycastHit); if (Physics.Raycast(new Vector3(worldXZ.x, 2000f, worldXZ.z), Vector3.down, ref val, 4000f, SurfaceMask, (QueryTriggerInteraction)1)) { y = ((RaycastHit)(ref val)).point.y; return true; } y = 0f; return false; } public static Vector3 GetPlayerGroupCenterNearSurface(Player player, float radiusMeters = 50f, float hover = 15f, float absoluteCeil = 90f) { //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_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: 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) List list = (from p in Player.GetAllPlayers() where (Object)(object)p != (Object)null && Vector3.Distance(((Component)player).transform.position, ((Component)p).transform.position) <= radiusMeters select p).ToList(); if (list.Count == 0) { list.Add(player); } float num = 0f; float num2 = 0f; foreach (Player item in list) { Vector3 position = ((Component)item).transform.position; num += position.x; num2 += position.z; } Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(num / (float)list.Count, 0f, num2 / (float)list.Count); if (TryGetSurfaceY(val, out var y)) { val.y = Mathf.Min(y + hover, absoluteCeil); } else { val.y = Mathf.Min(((Component)player).transform.position.y + hover, absoluteCeil); } return val; } private LineRenderer CreateLasserBeam() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0025: 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_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) LineRenderer obj = ((Component)this).gameObject.AddComponent(); obj.positionCount = 2; ((Renderer)obj).enabled = true; obj.startColor = Color.red; obj.endColor = Color.red; ((Renderer)obj).enabled = true; obj.useWorldSpace = true; ((Renderer)obj).shadowCastingMode = (ShadowCastingMode)0; ((Renderer)obj).receiveShadows = false; obj.textureMode = (LineTextureMode)0; obj.widthMultiplier = 0.25f; ((Renderer)obj).material = (Material)(Object.op_Implicit((Object)(object)_laserAdditiveMat) ? ((object)_laserAdditiveMat) : ((object)new Material(Shader.Find("Sprites/Default")))); obj.startColor = Color.red; obj.endColor = Color.red; return obj; } [IteratorStateMachine(typeof(d__26))] internal IEnumerator StartEvent(AlienAtackData atackdata, Player player) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__26(0) { <>4__this = this, atackdata = atackdata, player = player }; } [IteratorStateMachine(typeof(d__27))] private IEnumerator AttackRoutine(Player player) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__27(0) { <>4__this = this, player = player }; } [IteratorStateMachine(typeof(d__28))] private IEnumerator FireLaser(Player player) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__28(0) { <>4__this = this, player = player }; } [IteratorStateMachine(typeof(d__29))] internal IEnumerator Stop() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__29(0) { <>4__this = this }; } } internal class AlienAtackData { public Vec3 OvniPosition; public long UserID { get; set; } public OvniConfiguration Config { get; set; } public AlienAtackData() { Config = new OvniConfiguration(); } } internal class OvniAttackRPC : CommandRPCBase { public enum CommandName { START_ATACK, END_ATACK, OVNI_MOVEMENT } private const string RPC_ID = "AliensInValheim_AlienAttack"; private static OvniAttackRPC _singleton = null; public static readonly OvniAttackRPC Instance = _singleton ?? new OvniAttackRPC(); protected override string RPCName => "AliensInValheim_RPC_OvniAtack"; public static event Action ExcecuteAttactEvent; } } namespace AliensInValheim.FlyOvni { public class FlyOvniCommand : ConsoleCommand { public override string Name => "verovni"; public override string Help => "Hace pasar un ovni por la pantalla"; public override void Run(string[] args) { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) Player target = Player.m_localPlayer; AliensInValheimMod.Logger.LogInfo((object)$"[AliensInValheim] flyovni Command argumentos {args.Length}."); PlayerExtensions.SolvePlayerAndConfiguration(args, out target, out var config); FlyOvniRPC instance = FlyOvniRPC.Instance; FlyOvniData flyOvniData = new FlyOvniData(); ZDOID zDOID = ((Character)target).GetZDOID(); flyOvniData.UserID = ((ZDOID)(ref zDOID)).UserID; flyOvniData.PlayerName = target.GetPlayerName(); flyOvniData.Config = config; instance.SendCommandToAll(FlyOvniRPC.CommandName.FLY_OVNI, flyOvniData); AliensInValheimMod.Logger.LogInfo((object)("[AliensInValheim] \ud83d\udef8 Ver ovni para " + target.GetPlayerName() + " con OVNI " + config.PrefabName)); } } internal class FlyOvniEvent : MonoBehaviour { [CompilerGenerated] private sealed class d__1 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Player player; public OvniConfiguration config; public FlyOvniEvent <>4__this; private Vector3 5__2; private Vector3 5__3; private GameObject 5__4; private float 5__5; private Vector3 5__6; private float 5__7; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__1(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { 5__4 = null; <>1__state = -2; } private bool MoveNext() { //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: 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_007e: 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_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: 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_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0124: 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_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0165: 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) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_0251: Unknown result type (might be due to invalid IL or missing references) int num = <>1__state; FlyOvniEvent flyOvniEvent = <>4__this; switch (num) { default: return false; case 0: { <>1__state = -1; if ((Object)(object)player == (Object)null) { AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] FlyOvniEvent.Start No se encontro jugador"); return false; } AliensInValheimMod.Logger.LogInfo((object)("[AliensInValheim] Ovni pasa Volando sobre " + player.GetPlayerName())); Vector3 val = ((Component)player).transform.position + Vector3.up * 30f; 5__2 = val + ((Component)player).transform.right * 80f; 5__3 = val + ((Component)player).transform.right * -80f; 5__4 = AliensInValheimMod.Instance.Library.CreateOvni(5__2, config); if ((Object)(object)5__4 == (Object)null) { return false; } 5__4.PlaySounds(); 5__5 = 8f; 5__6 = 5__2; 5__7 = 0f; break; } case 1: <>1__state = -1; 5__7 += Time.deltaTime; break; } Vector3 val3; if (5__7 < 5__5) { float num2 = 5__7 / 5__5; Vector3 val2 = Vector3.Lerp(5__2, 5__3, num2); val3 = val2 - 5__6; Vector3 normalized = ((Vector3)(ref val3)).normalized; if (((Vector3)(ref normalized)).sqrMagnitude > 0.0001f) { Quaternion val4 = Quaternion.LookRotation(normalized, Vector3.up); 5__4.transform.rotation = Quaternion.Slerp(5__4.transform.rotation, val4, Time.deltaTime * 1f); } 5__4.transform.position = val2; 5__6 = val2; <>2__current = null; <>1__state = 1; return true; } val3 = 5__3 - 5__2; Vector3 normalized2 = ((Vector3)(ref val3)).normalized; if (((Vector3)(ref normalized2)).sqrMagnitude > 0.0001f) { 5__4.transform.rotation = Quaternion.LookRotation(normalized2, Vector3.up); } ((MonoBehaviour)flyOvniEvent).StartCoroutine(5__4.FadeOutAudio(5f)); ((MonoBehaviour)flyOvniEvent).StartCoroutine(5__4.FadeAndWarAwayAndDestroy()); ((MonoBehaviour)flyOvniEvent).StartCoroutine(Minimap.instance.AddCustomPin(((Component)player).transform.position, "assets/sprites/ovni.png", "OVNI")); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private void Awake() { } [IteratorStateMachine(typeof(d__1))] internal IEnumerator StartEvent(Player player, OvniConfiguration config) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__1(0) { <>4__this = this, player = player, config = config }; } } internal class FlyOvniData { public string PlayerName { get; set; } public long UserID { get; set; } public OvniConfiguration Config { get; set; } } internal class FlyOvniRPC : CommandRPCBase { public enum CommandName { FLY_OVNI, FLY_FAST } private static FlyOvniRPC _singleton = null; public static readonly FlyOvniRPC Instance = _singleton ?? new FlyOvniRPC(); protected override string RPCName => "AliensInValheim_RPC_FlyWithoutAbduction"; private FlyOvniRPC() { } } } namespace AliensInValheim.AlienSpeak { internal class SpeakAlienCommand : ConsoleCommand { public override string Name => "alienmurmura"; public override string Help => "hace que los aliens hablen"; public override void Run(string[] args) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) SpeakAlienRPC instance = SpeakAlienRPC.Instance; SpeakAlienData speakAlienData = new SpeakAlienData(); ZDOID zDOID = ((Character)Player.m_localPlayer).GetZDOID(); speakAlienData.UserID = ((ZDOID)(ref zDOID)).UserID; instance.SendCommandToAll(SpeakAlienRPC.CommandName.SPEAK_ALIEN, speakAlienData); } } internal class SpeakAlienEvent : MonoBehaviour { [CompilerGenerated] private sealed class d__2 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Player player; public SpeakAlienEvent <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__2(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { int num = <>1__state; SpeakAlienEvent speakAlienEvent = <>4__this; if (num != 0) { return false; } <>1__state = -1; int num2 = Random.Range(1, 6); AliensInValheimMod.Logger.LogInfo((object)$"[AliensInValheim] Alinigena se comunica con {player.GetPlayerName()} index {num2}"); if ((Object)(object)speakAlienEvent.alienVoiceSource == (Object)null) { AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] alienSoundSource no está asignado."); return false; } AudioClip clip = AliensInValheimMod.Instance.Library.LoadAsset($"assets/sounds/alien_voice{num2}.mp3"); speakAlienEvent.alienVoiceSource.volume = 1f; speakAlienEvent.alienVoiceSource.clip = clip; speakAlienEvent.alienVoiceSource.loop = false; speakAlienEvent.alienVoiceSource.Play(); AliensInValheimMod.Logger.LogInfo((object)$"[AliensInValheim] Sonido de voz alien reproducido: {num2}"); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private AudioSource alienVoiceSource; public void Awake() { alienVoiceSource = ((Component)this).gameObject.AddComponent(); alienVoiceSource.volume = 1f; alienVoiceSource.spatialBlend = 0f; alienVoiceSource.playOnAwake = false; alienVoiceSource.loop = false; } [IteratorStateMachine(typeof(d__2))] internal IEnumerator PlayAlienVoice(Player player) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__2(0) { <>4__this = this, player = player }; } } internal class SpeakAlienData { public long UserID { get; set; } public string PlayerName { get; set; } } internal class SpeakAlienRPC : CommandRPCBase { public enum CommandName { SPEAK_ALIEN } private static SpeakAlienRPC _singleton = null; public static readonly SpeakAlienRPC Instance = _singleton ?? new SpeakAlienRPC(); protected override string RPCName => "AliensInValheim_RPC_SpeakAlien"; private SpeakAlienRPC() { } } } namespace AliensInValheim.Pins { internal enum UfoIconKind { Ovni, Alien } internal static class UfoSprites { private static readonly Dictionary Cache = new Dictionary(); private const string OvniSpriteName = "assets/sprites/ovni.png"; private const string AlienSpriteName = "assets/sprites/alien.png"; private static AssetBundle _bundle; public static void SetBundle(AssetBundle bundle) { _bundle = bundle; } public static Sprite Ensure(UfoIconKind kind) { //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) if (Cache.TryGetValue(kind, out var value) && (Object)(object)value != (Object)null) { return value; } if ((Object)(object)_bundle == (Object)null) { AliensInValheimMod.Logger.LogError((object)"[UfoSprites] AssetBundle no establecido."); return null; } string text = ((kind == UfoIconKind.Ovni) ? "assets/sprites/ovni.png" : "assets/sprites/alien.png"); Texture2D val = _bundle.LoadAsset(text); if ((Object)(object)val == (Object)null) { AliensInValheimMod.Logger.LogError((object)("[UfoSprites] No se encontró Texture2D '" + text + "' en el bundle.")); return null; } Rect val2 = default(Rect); ((Rect)(ref val2))..ctor(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height); Vector2 val3 = default(Vector2); ((Vector2)(ref val3))..ctor(0.5f, 0.5f); Sprite val4 = Sprite.Create(val, val2, val3, 100f); Cache[kind] = val4; return val4; } public static Sprite Ensure(string key) { if (string.IsNullOrEmpty(key)) { key = "ovni"; } key = key.ToLowerInvariant(); if (!key.Contains("alien")) { return Ensure(UfoIconKind.Ovni); } return Ensure(UfoIconKind.Alien); } } } namespace AliensInValheim.Patches { [HarmonyPatch] internal static class Patch_Minimap_AddPin { private static IEnumerable TargetMethods() { return from m in AccessTools.GetDeclaredMethods(typeof(Minimap)) where m.Name == "AddPin" && m.GetParameters().Length >= 5 && m.GetParameters()[0].ParameterType == typeof(Vector3) select m; } private static void Postfix(Minimap __instance, ref PinData __result) { //IL_009d: Unknown result type (might be due to invalid IL or missing references) if (__result == null || string.IsNullOrEmpty(__result.m_name)) { return; } Sprite val = (__result.m_name.ToLowerInvariant().Contains("alien") ? UfoSprites.Ensure(UfoIconKind.Alien) : UfoSprites.Ensure(UfoIconKind.Ovni)); if ((Object)(object)val == (Object)null) { return; } __result.m_icon = val; if ((Object)(object)__result.m_uiElement != (Object)null) { Transform obj = ((Component)__result.m_uiElement).transform.Find("icon"); Image val2 = ((obj != null) ? ((Component)obj).GetComponent() : null); if ((Object)(object)val2 != (Object)null) { val2.sprite = val; val2.type = (Type)0; val2.preserveAspect = true; ((Graphic)val2).color = Color.white; } } } } } namespace AliensInValheim.AlienSighting { internal class AlienSightingCommand : ConsoleCommand { public override string Name => "alienaparece"; public override string Help => "Hace aparecer un alien a un jugador.\nUso: alienaparece [NombreJugador]\nEjemplos:\n - alienaparece → hace aparecer un alien sobre ti\n - alienaparece fulano → hace aparecer un alien sobre Fulano\n"; public override void Run(string[] args) { //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) Player val = null; if (args == null || args.Length == 0) { val = Player.m_localPlayer; if ((Object)(object)val == (Object)null) { AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] ⚠\ufe0f No se pudo determinar el jugador local."); return; } AliensInValheimMod.Logger.LogInfo((object)("[AliensInValheim] Sin nombre: usando jugador local '" + val.GetPlayerName() + "'.")); } else { if (args.Length != 1) { AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] Uso incorrecto. Formato: alienaparece [NombreJugador]"); return; } string playerArg = args[0]; List allPlayers = Player.GetAllPlayers(); val = ((IEnumerable)allPlayers).FirstOrDefault((Func)((Player p) => p.GetPlayerName().Equals(playerArg, StringComparison.OrdinalIgnoreCase))); if ((Object)(object)val == (Object)null) { List list = allPlayers.Where((Player p) => p.GetPlayerName().IndexOf(playerArg, StringComparison.OrdinalIgnoreCase) >= 0).ToList(); if (list.Count != 1) { if (list.Count > 1) { string text = string.Join(", ", list.Select((Player p) => p.GetPlayerName())); AliensInValheimMod.Logger.LogInfo((object)("[AliensInValheim] ⚠\ufe0f Coincidencias múltiples: " + text + ". Especifica el nombre completo.")); } else { AliensInValheimMod.Logger.LogInfo((object)("[AliensInValheim] ⚠\ufe0f Jugador '" + playerArg + "' no encontrado.")); } return; } val = list[0]; } } if ((Object)(object)val == (Object)null || ((Character)val).IsDead()) { AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] ⚠\ufe0f El jugador no es válido o está muerto."); return; } AliensInValheimMod.Logger.LogInfo((object)("[AliensInValheim] ✅ Iniciando aparición de alien sobre '" + val.GetPlayerName() + "'.")); AlienSightingRPC instance = AlienSightingRPC.Instance; AlienSightingData alienSightingData = new AlienSightingData(); ZDOID zDOID = ((Character)val).GetZDOID(); alienSightingData.UserID = ((ZDOID)(ref zDOID)).UserID; alienSightingData.PlayerName = val.GetPlayerName(); instance.SendCommandToAll(AlienSightingRPC.CommandName.ALIEN_SIGHTING_START, alienSightingData); } } public class AlienSightingEvent : MonoBehaviour { [CompilerGenerated] private sealed class d__17 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public AlienSightingEvent <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__17(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Expected O, but got Unknown //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) int num = <>1__state; AlienSightingEvent alienSightingEvent = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; if (alienSightingEvent.maxLifetimeSeconds > 0f) { <>2__current = (object)new WaitForSeconds(alienSightingEvent.maxLifetimeSeconds); <>1__state = 1; return true; } break; case 1: <>1__state = -1; if ((Object)(object)alienSightingEvent.alien != (Object)null) { AliensInValheimMod.Logger.LogInfo((object)$"[AlienSightingEvent] Tiempo máximo ({alienSightingEvent.maxLifetimeSeconds}s) alcanzado. Retirando alien."); AlienSightingRPC instance = AlienSightingRPC.Instance; AlienSightingData alienSightingData = new AlienSightingData(); ZDOID zDOID = ((Character)alienSightingEvent.targetPlayer).GetZDOID(); alienSightingData.UserID = ((ZDOID)(ref zDOID)).UserID; alienSightingData.PlayerName = alienSightingEvent.targetPlayer.GetPlayerName(); instance.SendCommandToAll(AlienSightingRPC.CommandName.ALIEN_SIGHTING_STOP, alienSightingData); } break; } return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__16 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public AlienSightingEvent <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__16(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) int num = <>1__state; AlienSightingEvent alienSightingEvent = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; <>2__current = null; <>1__state = 1; return true; case 1: <>1__state = -1; break; case 2: <>1__state = -1; break; } if ((Object)(object)alienSightingEvent.alien == (Object)null) { return false; } ZDOID zDOID; if ((Object)(object)alienSightingEvent.targetPlayer == (Object)null || ((Character)alienSightingEvent.targetPlayer).IsDead()) { AliensInValheimMod.Logger.LogInfo((object)"[AlienSightingEvent] Jugador objetivo nulo o muerto. Retirando alien."); AlienSightingRPC instance = AlienSightingRPC.Instance; AlienSightingData alienSightingData = new AlienSightingData(); zDOID = ((Character)alienSightingEvent.targetPlayer).GetZDOID(); alienSightingData.UserID = ((ZDOID)(ref zDOID)).UserID; alienSightingData.PlayerName = alienSightingEvent.targetPlayer.GetPlayerName(); instance.SendCommandToAll(AlienSightingRPC.CommandName.ALIEN_SIGHTING_STOP, alienSightingData); return false; } float num2 = Vector3.Distance(alienSightingEvent.alien.transform.position, ((Component)alienSightingEvent.targetPlayer).transform.position); if (num2 <= alienSightingEvent.despawnDistance) { AliensInValheimMod.Logger.LogInfo((object)$"[AlienSightingEvent] Jugador '{alienSightingEvent.targetPlayer.GetPlayerName()}' se acercó ({num2:0.0}m ≤ {alienSightingEvent.despawnDistance}m). Retirando alien."); AlienSightingRPC instance2 = AlienSightingRPC.Instance; AlienSightingData alienSightingData2 = new AlienSightingData(); zDOID = ((Character)alienSightingEvent.targetPlayer).GetZDOID(); alienSightingData2.UserID = ((ZDOID)(ref zDOID)).UserID; alienSightingData2.PlayerName = alienSightingEvent.targetPlayer.GetPlayerName(); instance2.SendCommandToAll(AlienSightingRPC.CommandName.ALIEN_SIGHTING_STOP, alienSightingData2); return false; } <>2__current = null; <>1__state = 2; return true; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__12 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Player player; public AlienSightingEvent <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__12(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { int num = <>1__state; AlienSightingEvent alienSightingEvent = <>4__this; if (num != 0) { return false; } <>1__state = -1; int num2 = Random.Range(1, 6); AliensInValheimMod.Logger.LogInfo((object)$"[AliensInValheim] Alienígena se comunica con {player.GetPlayerName()} (index {num2})"); if ((Object)(object)alienSightingEvent.alienVoiceSource == (Object)null) { AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] alienVoiceSource no está asignado."); return false; } AudioClip val = AliensInValheimMod.Instance.Library.LoadAsset($"assets/sounds/alien_voice{num2}.mp3"); if ((Object)(object)val == (Object)null) { AliensInValheimMod.Logger.LogInfo((object)$"[AliensInValheim] No se encontró audio alien_voice{num2}.mp3"); return false; } alienSightingEvent.alienVoiceSource.volume = 1f; alienSightingEvent.alienVoiceSource.clip = val; alienSightingEvent.alienVoiceSource.loop = false; alienSightingEvent.alienVoiceSource.Play(); AliensInValheimMod.Logger.LogInfo((object)$"[AliensInValheim] Sonido de voz alien reproducido: {num2}"); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__13 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public AlienSightingEvent <>4__this; public float volume; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__13(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { int num = <>1__state; AlienSightingEvent alienSightingEvent = <>4__this; switch (num) { default: return false; case 0: { <>1__state = -1; AudioClip val = AliensInValheimMod.Instance.Library.LoadAsset("assets/sounds/ufo_terror4.mp3"); if ((Object)(object)val == (Object)null) { AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] MusicClip no encontrado."); return false; } if ((Object)(object)alienSightingEvent.musicSource == (Object)null) { AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] musicSource no está inicializado."); return false; } if (alienSightingEvent.musicSource.isPlaying) { alienSightingEvent.musicSource.Stop(); } alienSightingEvent.musicSource.volume = volume; alienSightingEvent.musicSource.clip = val; alienSightingEvent.musicSource.loop = true; alienSightingEvent.musicSource.Play(); AliensInValheimMod.Logger.LogInfo((object)("[AliensInValheim] Música reproducida: " + ((Object)val).name)); <>2__current = null; <>1__state = 1; return true; } case 1: <>1__state = -1; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__14 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public AlienSightingData data; public AlienSightingEvent <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__14(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Expected O, but got Unknown //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Expected O, but got Unknown //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009c: 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_00d9: Unknown result type (might be due to invalid IL or missing references) int num = <>1__state; AlienSightingEvent alienSightingEvent = <>4__this; switch (num) { default: return false; case 0: { <>1__state = -1; AliensInValheimMod.Logger.LogInfo((object)("[AlienSightingEvent] Start para " + data.PlayerName)); if ((Object)(object)alienSightingEvent.targetPlayer == (Object)null || ((Character)alienSightingEvent.targetPlayer).IsDead()) { AliensInValheimMod.Logger.LogInfo((object)"[AlienSightingEvent] Jugador objetivo inválido o muerto."); return false; } Vector3 farSpawnPosition = alienSightingEvent.GetFarSpawnPosition(((Component)alienSightingEvent.targetPlayer).transform.position, alienSightingEvent.spawnMinDistance, alienSightingEvent.spawnMaxDistance); alienSightingEvent.alien = AliensInValheimMod.Instance.Library.CreateAlien(farSpawnPosition, "assets/alien1/prefab/alien1.prefab"); if ((Object)(object)alienSightingEvent.alien == (Object)null) { AliensInValheimMod.Logger.LogInfo((object)"[AlienSightingEvent] No se pudo instanciar el alien."); return false; } <>2__current = alienSightingEvent.TeleportInAlien(farSpawnPosition, alienSightingEvent.alien); <>1__state = 1; return true; } case 1: { <>1__state = -1; Light obj = alienSightingEvent.alien.AddComponent(); obj.type = (LightType)2; obj.range = 10f; obj.intensity = 4f; obj.color = Color.red; <>2__current = (object)new WaitForSeconds(0.5f); <>1__state = 2; return true; } case 2: <>1__state = -1; ((MonoBehaviour)alienSightingEvent).StartCoroutine(alienSightingEvent.PlayLoopingMusic(0.7f)); <>2__current = (object)new WaitForSeconds(1.5f); <>1__state = 3; return true; case 3: <>1__state = -1; ((MonoBehaviour)alienSightingEvent).StartCoroutine(alienSightingEvent.PlayAlienVoice(alienSightingEvent.targetPlayer)); alienSightingEvent.proximityRoutine = ((MonoBehaviour)alienSightingEvent).StartCoroutine(alienSightingEvent.MonitorProximity()); alienSightingEvent.lifetimeRoutine = ((MonoBehaviour)alienSightingEvent).StartCoroutine(alienSightingEvent.MaxLifetimeTimer()); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__19 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public AlienSightingEvent <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__19(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { int num = <>1__state; AlienSightingEvent alienSightingEvent = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; if (alienSightingEvent.proximityRoutine != null) { ((MonoBehaviour)alienSightingEvent).StopCoroutine(alienSightingEvent.proximityRoutine); alienSightingEvent.proximityRoutine = null; } if (alienSightingEvent.lifetimeRoutine != null) { ((MonoBehaviour)alienSightingEvent).StopCoroutine(alienSightingEvent.lifetimeRoutine); alienSightingEvent.lifetimeRoutine = null; } AliensInValheimMod.Logger.LogInfo((object)"AliensInValheim \ud83d\udef8 El alien se retira."); if ((Object)(object)alienSightingEvent.alien != (Object)null) { Object.Destroy((Object)(object)alienSightingEvent.alien); alienSightingEvent.alien = null; } if ((Object)(object)alienSightingEvent.musicSource != (Object)null && alienSightingEvent.musicSource.isPlaying) { ((MonoBehaviour)alienSightingEvent).StartCoroutine(alienSightingEvent.musicSource.FadeOutAudio(3f)); } if ((Object)(object)alienSightingEvent.alienVoiceSource != (Object)null && alienSightingEvent.alienVoiceSource.isPlaying) { alienSightingEvent.alienVoiceSource.Stop(); } <>2__current = null; <>1__state = 1; return true; case 1: <>1__state = -1; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__18 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Vector3 spawnPos; public GameObject alien; private GameObject 5__2; private Light 5__3; private GameObject 5__4; private float 5__5; private float 5__6; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__18(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { 5__2 = null; 5__3 = null; 5__4 = null; <>1__state = -2; } private bool MoveNext() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Expected O, but got Unknown //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: 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_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_013d: 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_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: { <>1__state = -1; 5__2 = new GameObject("TeleportBeamLight"); 5__2.transform.position = spawnPos + Vector3.up * 1.5f; 5__3 = 5__2.AddComponent(); 5__3.type = (LightType)2; 5__3.range = 8f; 5__3.intensity = 0f; 5__3.color = Color.cyan; 5__3.shadows = (LightShadows)2; 5__4 = new GameObject("TeleportParticles"); 5__4.transform.position = spawnPos; ParticleSystem obj = 5__4.AddComponent(); MainModule main = obj.main; ((MainModule)(ref main)).duration = 2f; ((MainModule)(ref main)).startLifetime = MinMaxCurve.op_Implicit(1f); ((MainModule)(ref main)).startSpeed = MinMaxCurve.op_Implicit(2f); ((MainModule)(ref main)).startSize = MinMaxCurve.op_Implicit(0.3f); ((MainModule)(ref main)).loop = false; ((MainModule)(ref main)).simulationSpace = (ParticleSystemSimulationSpace)1; ShapeModule shape = obj.shape; ((ShapeModule)(ref shape)).shapeType = (ParticleSystemShapeType)8; ((ShapeModule)(ref shape)).angle = 0f; ((ShapeModule)(ref shape)).radius = 0.5f; ((ShapeModule)(ref shape)).length = 3f; EmissionModule emission = obj.emission; ((EmissionModule)(ref emission)).rateOverTime = MinMaxCurve.op_Implicit(40f); obj.Play(); alien.transform.localScale = Vector3.zero; 5__5 = 2f; 5__6 = 0f; goto IL_0246; } case 1: <>1__state = -1; goto IL_0246; case 2: { <>1__state = -1; return false; } IL_0246: if (5__6 < 5__5) { 5__6 += Time.deltaTime; float num = 5__6 / 5__5; alien.transform.localScale = Vector3.one * Mathf.SmoothStep(0f, 1f, num); 5__3.intensity = Mathf.Lerp(0f, 6f, Mathf.Sin(num * (float)Math.PI)); <>2__current = null; <>1__state = 1; return true; } Object.Destroy((Object)(object)5__4, 2f); Object.Destroy((Object)(object)5__2, 2f); alien.transform.localScale = Vector3.one; <>2__current = null; <>1__state = 2; return true; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private GameObject alien; private AudioSource musicSource; private AudioSource alienVoiceSource; private Player targetPlayer; private Coroutine proximityRoutine; private Coroutine lifetimeRoutine; [SerializeField] private float despawnDistance = 50f; [SerializeField] private float maxLifetimeSeconds = 60f; [SerializeField] private float spawnMinDistance = 60f; [SerializeField] private float spawnMaxDistance = 120f; private int groundMask; public void Awake() { alienVoiceSource = ((Component)this).gameObject.AddComponent(); alienVoiceSource.volume = 1f; alienVoiceSource.spatialBlend = 0f; alienVoiceSource.playOnAwake = false; alienVoiceSource.loop = false; musicSource = ((Component)this).gameObject.AddComponent(); musicSource.volume = 0.4f; musicSource.spatialBlend = 0f; musicSource.playOnAwake = false; musicSource.loop = true; groundMask = LayerMask.GetMask(new string[6] { "Default", "terrain", "piece", "static_solid", "Default_small", "Water" }); if (groundMask == 0) { groundMask = -5; } } [IteratorStateMachine(typeof(d__12))] internal IEnumerator PlayAlienVoice(Player player) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__12(0) { <>4__this = this, player = player }; } [IteratorStateMachine(typeof(d__13))] public IEnumerator PlayLoopingMusic(float volume = 1f) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__13(0) { <>4__this = this, volume = volume }; } [IteratorStateMachine(typeof(d__14))] internal IEnumerator StartEvent(AlienSightingData data) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__14(0) { <>4__this = this, data = data }; } private Vector3 GetFarSpawnPosition(Vector3 center, float minDist, float maxDist, int maxTries = 12) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009d: 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_0078: Unknown result type (might be due to invalid IL or missing references) if (maxDist < minDist) { maxDist = minDist; } Vector3 val = default(Vector3); RaycastHit val2 = default(RaycastHit); for (int i = 0; i < maxTries; i++) { float num = Random.Range(0f, (float)Math.PI * 2f); float num2 = Random.Range(minDist, maxDist); ((Vector3)(ref val))..ctor(Mathf.Cos(num), 0f, Mathf.Sin(num)); if (Physics.Raycast(center + val * num2 + Vector3.up * 200f, Vector3.down, ref val2, 500f, groundMask, (QueryTriggerInteraction)1)) { return ((RaycastHit)(ref val2)).point; } } AliensInValheimMod.Logger.LogInfo((object)"[AlienSightingEvent] No se pudo raycastear suelo. Usando offset plano."); return center + Vector3.forward * minDist; } [IteratorStateMachine(typeof(d__16))] private IEnumerator MonitorProximity() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__16(0) { <>4__this = this }; } [IteratorStateMachine(typeof(d__17))] private IEnumerator MaxLifetimeTimer() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__17(0) { <>4__this = this }; } [IteratorStateMachine(typeof(d__18))] private IEnumerator TeleportInAlien(Vector3 spawnPos, GameObject alien) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__18(0) { spawnPos = spawnPos, alien = alien }; } [IteratorStateMachine(typeof(d__19))] internal IEnumerator Stop() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__19(0) { <>4__this = this }; } } internal class AlienSightingData { public long UserID { get; set; } public string PlayerName { get; set; } } internal class AlienSightingRPC : CommandRPCBase { public enum CommandName { ALIEN_SIGHTING_START, ALIEN_SIGHTING_STOP } private static AlienSightingRPC _singleton = null; public static readonly AlienSightingRPC Instance = _singleton ?? new AlienSightingRPC(); protected override string RPCName => "AliensInValheim_RPC_AlienSighting"; private AlienSightingRPC() { } } } namespace AliensInValheim.OvniScan { public class OvniScanCommand : ConsoleCommand { public override string Name => "scanovni"; public override string Help => "Hace que un OVNI realice un escaneo (rayo de luz) sobre uno o varios jugadores."; public override void Run(string[] args) { Player localPlayer = Player.m_localPlayer; List list = new List(); int? num = null; AliensInValheimMod.Logger.LogInfo((object)$"[AliensInValheim] scanovni Command argumentos {args.Length}."); if (args.Length == 0) { list = Player.GetAllPlayers().ToList(); AliensInValheimMod.Logger.LogInfo((object)$"[AliensInValheim] Escaneo OVNI sobre {list.Count} jugadores (todos)."); } else if (args.Length == 1) { string arg = args[0]; Player val = ((IEnumerable)Player.GetAllPlayers()).FirstOrDefault((Func)((Player p) => p.GetPlayerName().Equals(arg, StringComparison.OrdinalIgnoreCase))); if ((Object)(object)val != (Object)null) { list.Add(val); } else { if (!int.TryParse(arg, out var result)) { AliensInValheimMod.Logger.LogInfo((object)("[AliensInValheim] ⚠\ufe0f '" + arg + "' no es un nombre de jugador ni un índice válido.")); return; } if (result < 1 || result > Configurations.List.Count) { AliensInValheimMod.Logger.LogInfo((object)$"[AliensInValheim] ⚠\ufe0f Índice de OVNI fuera de rango. Debe estar entre 1 y {Configurations.List.Count}."); return; } num = result - 1; list = Player.GetAllPlayers().ToList(); AliensInValheimMod.Logger.LogInfo((object)$"[AliensInValheim] Escaneo sobre todos los jugadores con OVNI #{num.Value + 1}."); } } else if (args.Length == 2) { Player val2 = ((IEnumerable)Player.GetAllPlayers()).FirstOrDefault((Func)((Player p) => p.GetPlayerName().Equals(args[0], StringComparison.OrdinalIgnoreCase))); if ((Object)(object)val2 == (Object)null) { AliensInValheimMod.Logger.LogInfo((object)("[AliensInValheim] ⚠\ufe0f Jugador '" + args[0] + "' no encontrado.")); return; } list.Add(val2); if (!int.TryParse(args[1], out var result2)) { AliensInValheimMod.Logger.LogInfo((object)("[AliensInValheim] ⚠\ufe0f El segundo argumento '" + args[1] + "' no es un número válido.")); return; } if (result2 < 1 || result2 > Configurations.List.Count) { AliensInValheimMod.Logger.LogInfo((object)$"[AliensInValheim] ⚠\ufe0f Índice de OVNI fuera de rango. Debe estar entre 1 y {Configurations.List.Count}."); return; } num = result2 - 1; } if (list == null || list.Count == 0) { AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] ⚠\ufe0f No hay jugadores válidos para escanear."); return; } if (list.Any((Player p) => (Object)(object)p == (Object)null || ((Character)p).IsDead())) { AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] ⚠\ufe0f Uno o más jugadores no son válidos o están muertos."); list = list.Where((Player p) => (Object)(object)p != (Object)null && !((Character)p).IsDead()).ToList(); if (list.Count == 0) { return; } } if (!num.HasValue) { Configurations.GetRandom(); } else { _ = Configurations.List[num.Value]; } OvniScanRPC.Instance.SendCommandToAll(OvniScanRPC.CommandName.START_SCAN, new OvniScanRPC.ScanOvniData { PlayerName = localPlayer.GetPlayerName(), UserID = localPlayer.GetPlayerID(), Config = Configurations.GetRandom() }); AliensInValheimMod.Logger.LogInfo((object)("[AliensInValheim] \ud83d\udef8 Escaneo OVNI iniciado sobre " + localPlayer.GetPlayerName() + " con configuración " + (num.HasValue ? $"#{num.Value + 1}" : "aleatoria") + ".")); } } public class OvniScanEvent : MonoBehaviour { [CompilerGenerated] private sealed class <>c__DisplayClass9_0 { public Vector3 center; public float sqrRadius; internal bool b__1(Player p) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) Vector3 val = ((Component)p).transform.position - center; return ((Vector3)(ref val)).sqrMagnitude <= sqrRadius; } internal float b__2(Player p) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) Vector3 val = ((Component)p).transform.position - center; return ((Vector3)(ref val)).sqrMagnitude; } } [CompilerGenerated] private sealed class d__12 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public OvniScanEvent <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__12(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { int num = <>1__state; OvniScanEvent ovniScanEvent = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; AliensInValheimMod.Logger.LogInfo((object)"AliensInValheim \ud83d\udef8 El ovni se retira."); ((MonoBehaviour)ovniScanEvent).StartCoroutine(ovniScanEvent.musicSource.FadeOutAudio(3f)); ((MonoBehaviour)ovniScanEvent).StartCoroutine(ovniScanEvent.ovni.FadeOutAndStopAudio(SoundChannel.ENGINE, 3f)); ((MonoBehaviour)ovniScanEvent).StartCoroutine(ovniScanEvent.ovni.FadeOutAndStopAudio(SoundChannel.BACKGROUND, 2f)); ((MonoBehaviour)ovniScanEvent).StartCoroutine(ovniScanEvent.FadeAndDestroy(ovniScanEvent.ovni)); <>2__current = null; <>1__state = 1; return true; case 1: <>1__state = -1; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__11 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public GameObject obj; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__11(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = obj.FadeAndWarpAway(); <>1__state = 1; return true; case 1: <>1__state = -1; Object.Destroy((Object)(object)obj); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__6 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Player player; public GameObject ovni; private Vector3 5__2; private Vector3 5__3; private float 5__4; private float 5__5; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__6(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //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) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0054: 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_005e: Unknown result type (might be due to invalid IL or missing references) //IL_006f: 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_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009d: 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_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: <>1__state = -1; 5__2 = ((Component)player).transform.position + ((Component)player).transform.right * 80f + Vector3.up * 30f; 5__3 = ((Component)player).transform.position + ((Component)player).transform.right * 10f + Vector3.up * 30f; ovni.transform.position = 5__2; 5__4 = 5f; 5__5 = 0f; break; case 1: <>1__state = -1; 5__5 += Time.deltaTime; break; } if (5__5 < 5__4) { ovni.transform.position = Vector3.Lerp(5__2, 5__3, 5__5 / 5__4); <>2__current = null; <>1__state = 1; return true; } return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__15 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public OvniScanEvent <>4__this; public GameObject ovni; public Player p; public float seconds; private float 5__2; private float 5__3; private float 5__4; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__15(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_00a0: 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_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: 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_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0144: 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_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0158: 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_0168: 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) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) int num = <>1__state; OvniScanEvent ovniScanEvent = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; if ((Object)(object)ovniScanEvent._beam != (Object)null) { <>2__current = ovniScanEvent.SetBeamIntensity(1.5f, 0.5f); <>1__state = 1; return true; } goto IL_005d; case 1: <>1__state = -1; goto IL_005d; case 2: { <>1__state = -1; break; } IL_005d: 5__2 = 1f; 5__3 = 1.2f; 5__4 = 0f; break; } if (5__4 < seconds) { 5__4 += Time.deltaTime; Vector3 position = ovni.transform.position; position.y += Mathf.Sin(Time.time * 5__3) * (5__2 * Time.deltaTime); ovni.transform.position = position; ovni.transform.rotation = Quaternion.Slerp(ovni.transform.rotation, Quaternion.LookRotation(Vector3.down), Time.deltaTime * 0.6f); if ((Object)(object)ovniScanEvent._beamPivot != (Object)null && (Object)(object)p != (Object)null) { Vector3 val = ((Component)p).transform.position + Vector3.up * 1.6f - ovniScanEvent._beamPivot.position; Vector3 normalized = ((Vector3)(ref val)).normalized; if (((Vector3)(ref normalized)).sqrMagnitude > 0.0001f) { Quaternion val2 = Quaternion.LookRotation(normalized); ovniScanEvent._beamPivot.rotation = Quaternion.Slerp(ovniScanEvent._beamPivot.rotation, val2, Time.deltaTime * 6f); } } if ((Object)(object)ovniScanEvent._beam != (Object)null) { ovniScanEvent._beam.intensity = 1.5f + Mathf.PingPong(Time.time * 0.9f, 0.6f); } <>2__current = null; <>1__state = 2; return true; } return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__13 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public OvniScanEvent <>4__this; public OvniScanRPC.ScanOvniData data; private Player 5__2; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__13(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { 5__2 = null; <>1__state = -2; } private bool MoveNext() { //IL_0091: Unknown result type (might be due to invalid IL or missing references) int num = <>1__state; OvniScanEvent ovniScanEvent = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; if ((Object)(object)ovniScanEvent.ovni == (Object)null) { AliensInValheimMod.Logger.LogWarning((object)"[OvniScanClient] No se pudo crear OVNI local."); return false; } 5__2 = Player.GetAllPlayers().FindPlayer(data.PlayerName, data.UserID); if ((Object)(object)5__2 == (Object)null) { return false; } <>2__current = ((MonoBehaviour)ovniScanEvent).StartCoroutine(ovniScanEvent.ovni.MoveTowardsFixedTime(((Component)5__2).transform.position)); <>1__state = 1; return true; case 1: <>1__state = -1; <>2__current = ((MonoBehaviour)ovniScanEvent).StartCoroutine(ovniScanEvent.ScanPlayer(5__2, data.HoverSeconds)); <>1__state = 2; return true; case 2: <>1__state = -1; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__8 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public OvniScanEvent <>4__this; public float volume; private AudioClip 5__2; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__8(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { 5__2 = null; <>1__state = -2; } private bool MoveNext() { int num = <>1__state; OvniScanEvent ovniScanEvent = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; 5__2 = AliensInValheimMod.Instance.Library.LoadAsset("assets/sounds/ufo_music1.mp3"); if ((Object)(object)5__2 == (Object)null) { AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] MusicClip no está asignado."); <>2__current = null; <>1__state = 1; return true; } goto IL_007b; case 1: <>1__state = -1; goto IL_007b; case 2: <>1__state = -1; goto IL_00af; case 3: { <>1__state = -1; return false; } IL_00af: if (ovniScanEvent.musicSource.isPlaying) { ovniScanEvent.musicSource.Stop(); } if (!ovniScanEvent.musicSource.isPlaying) { ovniScanEvent.musicSource.volume = volume; ovniScanEvent.musicSource.clip = 5__2; ovniScanEvent.musicSource.loop = true; ovniScanEvent.musicSource.Play(); AliensInValheimMod.Logger.LogInfo((object)("[AliensInValheim] Música reproducida: " + ((Object)5__2).name)); } else { AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] La música ya está sonando, se omite reproducción duplicada."); } <>2__current = null; <>1__state = 3; return true; IL_007b: if ((Object)(object)ovniScanEvent.musicSource == (Object)null) { AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] musicSource no está inicializado."); <>2__current = null; <>1__state = 2; return true; } goto IL_00af; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__14 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Player target; public OvniScanEvent <>4__this; public float hoverSeconds; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__14(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) int num = <>1__state; OvniScanEvent ovniScanEvent = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; if ((Object)(object)target == (Object)null) { ManualLogSource logger = AliensInValheimMod.Logger; string playerName = target.GetPlayerName(); ZDOID zDOID = ((Character)target).GetZDOID(); logger.LogDebug((object)$"[OvniScanClient] Target no encontrado. {playerName} ({((ZDOID)(ref zDOID)).UserID})"); return false; } <>2__current = ((MonoBehaviour)ovniScanEvent).StartCoroutine(ovniScanEvent.EnsureBeam(ovniScanEvent.ovni)); <>1__state = 1; return true; case 1: <>1__state = -1; <>2__current = ((MonoBehaviour)ovniScanEvent).StartCoroutine(ovniScanEvent.HoverAndScan(ovniScanEvent.ovni, target, hoverSeconds)); <>1__state = 2; return true; case 2: <>1__state = -1; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__16 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public OvniScanEvent <>4__this; public float target; public float seconds; private float 5__2; private bool 5__3; private float 5__4; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__16(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { int num = <>1__state; OvniScanEvent ovniScanEvent = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; if ((Object)(object)ovniScanEvent._beam == (Object)null && (Object)(object)ovniScanEvent._beamFx == (Object)null) { return false; } 5__2 = (((Object)(object)ovniScanEvent._beam != (Object)null) ? ovniScanEvent._beam.intensity : 0f); 5__3 = target > 5__2; if ((((Object)(object)ovniScanEvent._beamFx != (Object)null) & 5__3) && !ovniScanEvent._beamFx.isPlaying) { ovniScanEvent._beamFx.Play(); } 5__4 = 0f; break; case 1: <>1__state = -1; break; } if (5__4 < seconds) { 5__4 += Time.deltaTime; float num2 = Mathf.Clamp01(5__4 / seconds); float intensity = Mathf.Lerp(5__2, target, num2); if ((Object)(object)ovniScanEvent._beam != (Object)null) { ovniScanEvent._beam.intensity = intensity; } <>2__current = null; <>1__state = 1; return true; } if ((Object)(object)ovniScanEvent._beam != (Object)null) { ovniScanEvent._beam.intensity = target; } if ((Object)(object)ovniScanEvent._beamFx != (Object)null && !5__3 && ovniScanEvent._beamFx.isPlaying) { ovniScanEvent._beamFx.Stop(); } return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__9 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public OvniScanRPC.ScanOvniData data; public OvniScanEvent <>4__this; private Player 5__2; private List 5__3; private int 5__4; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__9(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { 5__2 = null; 5__3 = null; <>1__state = -2; } private bool MoveNext() { //IL_0252: Unknown result type (might be due to invalid IL or missing references) //IL_025c: Expected O, but got Unknown //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: 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) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_02b2: Unknown result type (might be due to invalid IL or missing references) //IL_02b7: Unknown result type (might be due to invalid IL or missing references) //IL_02fc: Unknown result type (might be due to invalid IL or missing references) //IL_0301: Unknown result type (might be due to invalid IL or missing references) //IL_030b: Unknown result type (might be due to invalid IL or missing references) //IL_0310: Unknown result type (might be due to invalid IL or missing references) //IL_0350: Unknown result type (might be due to invalid IL or missing references) //IL_035a: Expected O, but got Unknown int num = <>1__state; OvniScanEvent ovniScanEvent = <>4__this; switch (num) { default: return false; case 0: { <>1__state = -1; <>c__DisplayClass9_0 CS$<>8__locals0 = new <>c__DisplayClass9_0(); AliensInValheimMod.Logger.LogInfo((object)("[OvniScanEvent] Start " + data.PlayerName)); 5__2 = Player.GetAllPlayers().FindPlayer(data.PlayerName, data.UserID); if ((Object)(object)5__2 == (Object)null || ((Character)5__2).IsDead()) { AliensInValheimMod.Logger.LogInfo((object)"[OvniScanEvent] Jugador seleccionado inválido o muerto."); return false; } Vector3 position = ((Component)5__2).transform.position + Vector3.up * 30f + ((Component)5__2).transform.right * 80f; ovniScanEvent.ovni = AliensInValheimMod.Instance.Library.CreateOvni(position, data.Config); CS$<>8__locals0.center = ((Component)5__2).transform.position; float num2 = 100f; CS$<>8__locals0.sqrRadius = num2 * num2; List allPlayers = Player.GetAllPlayers(); 5__3 = allPlayers.Where((Player p) => (Object)(object)p != (Object)null && !((Character)p).IsDead()).Where(delegate(Player p) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) Vector3 val3 = ((Component)p).transform.position - CS$<>8__locals0.center; return ((Vector3)(ref val3)).sqrMagnitude <= CS$<>8__locals0.sqrRadius; }).OrderBy(delegate(Player p) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) Vector3 val2 = ((Component)p).transform.position - CS$<>8__locals0.center; return ((Vector3)(ref val2)).sqrMagnitude; }) .ToList(); if (!5__3.Contains(5__2)) { 5__3.Insert(0, 5__2); } if (5__3.Count == 0) { AliensInValheimMod.Logger.LogInfo((object)"[OvniScanEvent] Sin objetivos cercanos."); return false; } <>2__current = ovniScanEvent.HorizontalMovement(5__2, ovniScanEvent.ovni); <>1__state = 1; return true; } case 1: <>1__state = -1; ((MonoBehaviour)ovniScanEvent).StartCoroutine(ovniScanEvent.PlayLoopingMusic(0.7f)); ((MonoBehaviour)ovniScanEvent).StartCoroutine(ovniScanEvent.ovni.PlaySound(SoundChannel.ENGINE)); <>2__current = ovniScanEvent.VerticalDescend(5__2, ovniScanEvent.ovni); <>1__state = 2; return true; case 2: <>1__state = -1; <>2__current = (object)new WaitForSeconds(3.05f); <>1__state = 3; return true; case 3: <>1__state = -1; 5__4 = 0; goto IL_037c; case 4: { <>1__state = -1; goto IL_036a; } IL_037c: if (5__4 < 5__3.Count) { Player val = 5__3[5__4]; if (!((Object)(object)val == (Object)null) && !((Character)val).IsDead()) { OvniScanRPC instance = OvniScanRPC.Instance; OvniScanRPC.ScanOvniData scanOvniData = new OvniScanRPC.ScanOvniData(); ZDOID zDOID = ((Character)val).GetZDOID(); scanOvniData.UserID = ((ZDOID)(ref zDOID)).UserID; scanOvniData.PlayerName = val.GetPlayerName(); scanOvniData.HoverSeconds = data.HoverSeconds; scanOvniData.Config = data.Config; scanOvniData.HoverPos = (((Component)val).transform.position + Vector3.up * 10f).FromUnity(); scanOvniData.EngineSoundIndex = data.Config.EngineSoundIndex; instance.SendCommandToAll(OvniScanRPC.CommandName.SCAN_TARGET, scanOvniData); <>2__current = (object)new WaitForSeconds(Mathf.Max(data.HoverSeconds, 0.5f)); <>1__state = 4; return true; } goto IL_036a; } OvniScanRPC.Instance.SendCommandToAll(OvniScanRPC.CommandName.END_SCAN, new OvniScanRPC.ScanOvniData { UserID = data.UserID, PlayerName = data.PlayerName }); return false; IL_036a: 5__4++; goto IL_037c; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__7 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public GameObject ovni; public Player player; private Vector3 5__2; private Vector3 5__3; private float 5__4; private float 5__5; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__7(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: 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_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: <>1__state = -1; 5__2 = ovni.transform.position; 5__3 = ((Component)player).transform.position + Vector3.up * 10f; 5__4 = 4f; 5__5 = 0f; break; case 1: <>1__state = -1; 5__5 += Time.deltaTime; break; } if (5__5 < 5__4) { ovni.transform.position = Vector3.Lerp(5__2, 5__3, 5__5 / 5__4); <>2__current = null; <>1__state = 1; return true; } ovni.transform.position = 5__3; return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private GameObject ovni; private AudioSource musicSource; private Light _beam; private Transform _beamPivot; private ParticleSystem _beamFx; private void Awake() { musicSource = ((Component)this).gameObject.AddComponent(); musicSource.volume = 0.4f; musicSource.spatialBlend = 0f; musicSource.playOnAwake = false; musicSource.loop = true; } [IteratorStateMachine(typeof(d__6))] private IEnumerator HorizontalMovement(Player player, GameObject ovni) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__6(0) { player = player, ovni = ovni }; } [IteratorStateMachine(typeof(d__7))] private IEnumerator VerticalDescend(Player player, GameObject ovni) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__7(0) { player = player, ovni = ovni }; } [IteratorStateMachine(typeof(d__8))] public IEnumerator PlayLoopingMusic(float volume = 1f) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__8(0) { <>4__this = this, volume = volume }; } [IteratorStateMachine(typeof(d__9))] internal IEnumerator StartEvent(OvniScanRPC.ScanOvniData data) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__9(0) { <>4__this = this, data = data }; } private IEnumerator EnsureBeam(GameObject ufo) { //IL_004a: 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_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Expected O, but got Unknown //IL_009a: Unknown result type (might be due to invalid IL or missing references) Transform val = ufo.transform.Find("Beam") ?? ufo.transform.Find("beam") ?? ufo.transform.Find("FX/Beam"); if ((Object)(object)val == (Object)null) { Transform transform = new GameObject("BeamPivot").transform; transform.SetParent(ufo.transform, false); transform.localPosition = Vector3.zero; GameObject val2 = new GameObject("BeamLight"); val2.transform.SetParent(transform, false); val2.transform.localPosition = new Vector3(0f, -1.2f, 0f); _beam = val2.AddComponent(); _beam.type = (LightType)0; _beam.range = 80f; _beam.spotAngle = 40f; _beam.intensity = 0f; _beamPivot = transform; } else { _beamPivot = val; _beam = ((Component)val).GetComponentInChildren(); _beamFx = ((Component)val).GetComponentInChildren(); if ((Object)(object)_beam != (Object)null) { _beam.type = (LightType)0; _beam.range = 80f; _beam.spotAngle = 40f; _beam.intensity = 0f; } } return null; } [IteratorStateMachine(typeof(d__11))] internal IEnumerator FadeAndDestroy(GameObject obj) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__11(0) { obj = obj }; } [IteratorStateMachine(typeof(d__12))] internal IEnumerator EndScan(OvniScanRPC.ScanOvniData data) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__12(0) { <>4__this = this }; } [IteratorStateMachine(typeof(d__13))] internal IEnumerator NavigateTo(OvniScanRPC.ScanOvniData data) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__13(0) { <>4__this = this, data = data }; } [IteratorStateMachine(typeof(d__14))] private IEnumerator ScanPlayer(Player target, float hoverSeconds) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__14(0) { <>4__this = this, target = target, hoverSeconds = hoverSeconds }; } [IteratorStateMachine(typeof(d__15))] private IEnumerator HoverAndScan(GameObject ovni, Player p, float seconds) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__15(0) { <>4__this = this, ovni = ovni, p = p, seconds = seconds }; } [IteratorStateMachine(typeof(d__16))] private IEnumerator SetBeamIntensity(float target, float seconds) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__16(0) { <>4__this = this, target = target, seconds = seconds }; } private Player FindPlayerByUserID(long userId) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) foreach (Player allPlayer in Player.GetAllPlayers()) { if (!((Object)(object)allPlayer == (Object)null)) { ZDOID zDOID = ((Character)allPlayer).GetZDOID(); if (((ZDOID)(ref zDOID)).UserID == userId) { return allPlayer; } } } return null; } private Player FindPlayerByName(string name) { foreach (Player allPlayer in Player.GetAllPlayers()) { if (!((Object)(object)allPlayer == (Object)null) && string.Equals(allPlayer.GetPlayerName(), name, StringComparison.OrdinalIgnoreCase)) { return allPlayer; } } return null; } } public sealed class OvniScanRPC : CommandRPCBase { public enum CommandName { START_SCAN, SCAN_TARGET, END_SCAN } [Serializable] public class ScanOvniData { public long UserID; public string PlayerName; public OvniConfiguration Config = new OvniConfiguration(); public float HoverSeconds = 5f; public Vec3 StartPos = new Vec3(); public Vec3 HoverPos = new Vec3(); public int EngineSoundIndex; } private static OvniScanRPC _singleton = null; public static readonly OvniScanRPC Instance = _singleton ?? new OvniScanRPC(); protected override string RPCName => "AliensInValheim_RPC_ScanOvni"; } } namespace AliensInValheim.Intro { internal class IntroductionSceneCommand : ConsoleCommand { public override string Name => "showalienintro"; public override string Help => "Invoca la escena de introducción para todos los jugadores."; public override void Run(string[] args) { try { IntroductionSceneRPC.Instance.SendCommandToAll(IntroductionSceneRPC.CommandName.START, new IntroductionData()); AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] \ud83c\udfac Escena de introducción iniciada."); } catch (Exception ex) { AliensInValheimMod.Logger.LogError((object)("[AliensInValheim] ❌ Error ejecutando showintro: " + ex.Message + "\n" + ex.StackTrace)); } } } internal class IntroductionData { } internal class IntroductionSceneRPC : CommandRPCBase { public enum CommandName { START, END } private static IntroductionSceneRPC _singleton = null; public static readonly IntroductionSceneRPC Instance = _singleton ?? new IntroductionSceneRPC(); protected override string RPCName => "AliensInValheim_RPC_TriggerIntroScene"; } internal class IntroductionSceneEvent : MonoBehaviour { [CompilerGenerated] private sealed class d__13 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public IntroductionSceneEvent <>4__this; private float 5__2; private float 5__3; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__13(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Expected O, but got Unknown int num = <>1__state; IntroductionSceneEvent introductionSceneEvent = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitForSeconds(0.5f); <>1__state = 1; return true; case 1: <>1__state = -1; 5__2 = 1.5f; 5__3 = 0f; break; case 2: <>1__state = -1; 5__3 += Time.deltaTime; break; } if (5__3 < 5__2) { introductionSceneEvent.SetAlpha(Mathf.Lerp(0f, 1f, 5__3 / 5__2)); <>2__current = null; <>1__state = 2; return true; } introductionSceneEvent.SetAlpha(1f); return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__16 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public IntroductionSceneEvent <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__16(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Expected O, but got Unknown int num = <>1__state; IntroductionSceneEvent introductionSceneEvent = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] Iniciando Introduccion..."); if ((Object)(object)Player.m_localPlayer == (Object)null || (Object)(object)Hud.instance == (Object)null || GUIManager.Instance == null) { <>2__current = (object)new WaitUntil((Func)(() => (Object)(object)Player.m_localPlayer != (Object)null && (Object)(object)Hud.instance != (Object)null && GUIManager.Instance != null)); <>1__state = 1; return true; } goto IL_0093; case 1: <>1__state = -1; goto IL_0093; case 2: { <>1__state = -1; return false; } IL_0093: introductionSceneEvent.TryLoadAssets(); introductionSceneEvent.Inicialize(); introductionSceneEvent.ConfigureText(); introductionSceneEvent.ConfigureAudio(); if (!introductionSceneEvent.duckStarted) { introductionSceneEvent.duckStarted = true; ((MonoBehaviour)introductionSceneEvent).StartCoroutine(MusicDucker.Duck(introductionSceneEvent.audioSource)); } if ((Object)(object)introductionSceneEvent.introText != (Object)null) { introductionSceneEvent.SetAlpha(0f); ((MonoBehaviour)introductionSceneEvent).StartCoroutine(introductionSceneEvent.FadeIn()); } <>2__current = null; <>1__state = 2; return true; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__15 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public IntroductionSceneEvent <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__15(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { int num = <>1__state; IntroductionSceneEvent introductionSceneEvent = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; ((MonoBehaviour)introductionSceneEvent).StartCoroutine(MusicDucker.Unduck()); if ((Object)(object)introductionSceneEvent.audioSource != (Object)null) { introductionSceneEvent.audioSource.Stop(); } if ((Object)(object)introductionSceneEvent.canvasRoot != (Object)null) { Object.Destroy((Object)(object)introductionSceneEvent.canvasRoot); introductionSceneEvent.canvasRoot = null; } introductionSceneEvent.panelRoot = null; introductionSceneEvent.scrollRect = null; introductionSceneEvent.closeButton = null; introductionSceneEvent.introText = null; <>2__current = null; <>1__state = 1; return true; case 1: <>1__state = -1; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private GameObject canvasRoot; private GameObject panelRoot; private ScrollRect scrollRect; private Button closeButton; private Text introText; private AudioClip introMusic; private AudioSource audioSource; private bool duckStarted; private void Awake() { AliensInValheimMod.Logger.LogInfo((object)"[AliensInValheim] Awake Introduccion..."); } private void TryLoadAssets() { introMusic = AliensInValheimMod.Instance.Library.LoadAsset("assets/sounds/ufo_music1.mp3"); } private void Inicialize() { //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Expected O, but got Unknown //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_0114: 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_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Expected O, but got Unknown //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Expected O, but got Unknown //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Unknown result type (might be due to invalid IL or missing references) //IL_0285: Expected O, but got Unknown //IL_02a9: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c9: Unknown result type (might be due to invalid IL or missing references) //IL_02d4: Unknown result type (might be due to invalid IL or missing references) //IL_02f8: Unknown result type (might be due to invalid IL or missing references) //IL_0333: Unknown result type (might be due to invalid IL or missing references) //IL_033a: Expected O, but got Unknown //IL_0362: Unknown result type (might be due to invalid IL or missing references) //IL_0378: Unknown result type (might be due to invalid IL or missing references) //IL_038e: Unknown result type (might be due to invalid IL or missing references) //IL_039a: Unknown result type (might be due to invalid IL or missing references) //IL_03b0: Unknown result type (might be due to invalid IL or missing references) //IL_0442: Unknown result type (might be due to invalid IL or missing references) //IL_0449: Expected O, but got Unknown //IL_0473: Unknown result type (might be due to invalid IL or missing references) //IL_0488: Unknown result type (might be due to invalid IL or missing references) //IL_049d: Unknown result type (might be due to invalid IL or missing references) //IL_04b2: Unknown result type (might be due to invalid IL or missing references) //IL_04c6: Unknown result type (might be due to invalid IL or missing references) //IL_04eb: Unknown result type (might be due to invalid IL or missing references) //IL_051a: Unknown result type (might be due to invalid IL or missing references) //IL_0521: Expected O, but got Unknown //IL_054a: Unknown result type (might be due to invalid IL or missing references) //IL_0560: Unknown result type (might be due to invalid IL or missing references) //IL_056c: Unknown result type (might be due to invalid IL or missing references) //IL_0578: Unknown result type (might be due to invalid IL or missing references) //IL_059d: Unknown result type (might be due to invalid IL or missing references) //IL_0603: Unknown result type (might be due to invalid IL or missing references) //IL_0612: Unknown result type (might be due to invalid IL or missing references) //IL_0621: Unknown result type (might be due to invalid IL or missing references) //IL_0632: Unknown result type (might be due to invalid IL or missing references) //IL_0638: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)canvasRoot != (Object)null) { return; } if (GUIManager.Instance == null) { AliensInValheimMod.Logger.LogWarning((object)"[Intro] GUIManager.Instance es null. Abortando intro."); return; } canvasRoot = new GameObject("AliensInValheim_IntroCanvas", new Type[3] { typeof(Canvas), typeof(CanvasScaler), typeof(GraphicRaycaster) }); Canvas component = canvasRoot.GetComponent(); component.renderMode = (RenderMode)0; component.sortingOrder = 9000; CanvasScaler component2 = canvasRoot.GetComponent(); component2.uiScaleMode = (ScaleMode)1; component2.referenceResolution = new Vector2(1920f, 1080f); component2.screenMatchMode = (ScreenMatchMode)0; component2.matchWidthOrHeight = 1f; panelRoot = GUIManager.Instance.CreateWoodpanel(canvasRoot.transform, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), Vector2.zero, 900f, 600f); panelRoot.GetComponent().pivot = new Vector2(0.5f, 0.5f); GameObject val = GUIManager.Instance.CreateButton(Loc.T("aliens_close"), panelRoot.transform, new Vector2(0.5f, 0f), new Vector2(0.5f, 0f), new Vector2(0f, 20f), 140f, 36f); closeButton = val.GetComponent