Decompiled source of TournamentEdition v2.4.7
plugins/Tournament Edition.dll
Decompiled 7 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using Chaos.AnimatorExtensions; using Chaos.ListExtensions; using Chaos.VectorExtensions; using CustomPalettes; using IL; using LegendAPI; using Mono.Cecil.Cil; using MonoMod.Cil; using Mythical; using On; using UnityEngine; using UnityEngine.Networking; using UnityEngine.SceneManagement; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] public static class Utils { public static T LoadFromEmbeddedJson<T>(string jsn) { Assembly executingAssembly = Assembly.GetExecutingAssembly(); string name = "Mythical." + jsn; string text; using (Stream stream = executingAssembly.GetManifestResourceStream(name)) { using StreamReader streamReader = new StreamReader(stream); text = streamReader.ReadToEnd(); } return JsonUtility.FromJson<T>(text); } } public static class Extensions { public static ItemInfo loadSprite(this ItemInfo info, string name) { Sprite val = ImgHandler.LoadSprite(name); info.icon = (((Object)(object)val != (Object)null) ? val : null); return info; } public static Sprite loadSprite(string name) { Sprite val = ImgHandler.LoadSprite(name); return ((Object)(object)val != (Object)null) ? val : null; } } public class HeadgearDef { public Sprite[] sprites = (Sprite[])(object)new Sprite[0]; } public class WindowIconTools { private class IconCache { private IntPtr bitmap = IntPtr.Zero; private IntPtr icon = IntPtr.Zero; public IntPtr update(byte[] bgra, int width, int height, bool topRowFirst = false) { IntPtr intPtr = CreateBitmap(width, height, 1u, 32u, null); IntPtr dC = GetDC(IntPtr.Zero); BITMAPINFOHEADER lpbmi = default(BITMAPINFOHEADER); lpbmi.Init(); lpbmi.biWidth = width; lpbmi.biHeight = (topRowFirst ? (-height) : height); lpbmi.biPlanes = 1; lpbmi.biBitCount = 32; SetDIBits(dC, intPtr, 0u, (uint)height, bgra, ref lpbmi, 0u); ReleaseDC(IntPtr.Zero, dC); ICONINFO piconinfo = default(ICONINFO); piconinfo.IsIcon = true; piconinfo.ColorBitmap = intPtr; piconinfo.MaskBitmap = intPtr; IntPtr intPtr2 = CreateIconIndirect(ref piconinfo); if (intPtr2 == IntPtr.Zero) { DeleteObject(intPtr); return IntPtr.Zero; } if (bitmap != IntPtr.Zero) { DeleteObject(bitmap); } bitmap = intPtr; if (icon != IntPtr.Zero) { DestroyIcon(icon); } icon = intPtr2; return intPtr2; } } private struct BITMAPINFOHEADER { public uint biSize; public int biWidth; public int biHeight; public ushort biPlanes; public ushort biBitCount; public BitmapCompressionMode biCompression; public uint biSizeImage; public int biXPelsPerMeter; public int biYPelsPerMeter; public uint biClrUsed; public uint biClrImportant; public void Init() { biSize = (uint)Marshal.SizeOf((object)this); } } private enum BitmapCompressionMode : uint { BI_RGB, BI_RLE8, BI_RLE4, BI_BITFIELDS, BI_JPEG, BI_PNG } private struct ICONINFO { public bool IsIcon; public int xHotspot; public int yHotspot; public IntPtr MaskBitmap; public IntPtr ColorBitmap; } [ComImport] [Guid("c43dc798-95d1-4bea-9030-bb99e2983a1a")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] private interface ITaskbarList4 { [PreserveSig] void HrInit(); [PreserveSig] void AddTab(IntPtr hwnd); [PreserveSig] void DeleteTab(IntPtr hwnd); [PreserveSig] void ActivateTab(IntPtr hwnd); [PreserveSig] void SetActiveAlt(IntPtr hwnd); [PreserveSig] void MarkFullscreenWindow(IntPtr hwnd, [MarshalAs(UnmanagedType.Bool)] bool fFullscreen); [PreserveSig] void SetProgressValue(IntPtr hwnd, ulong ullCompleted, ulong ullTotal); [PreserveSig] void SetProgressState(IntPtr hwnd, TaskbarProgressBarState tbpFlags); [PreserveSig] void RegisterTab(IntPtr hwndTab, IntPtr hwndMDI); [PreserveSig] void UnregisterTab(IntPtr hwndTab); [PreserveSig] void SetTabOrder(IntPtr hwndTab, IntPtr hwndInsertBefore); [PreserveSig] void SetTabActive(IntPtr hwndTab, IntPtr hwndInsertBefore, uint dwReserved); [PreserveSig] int ThumbBarAddButtons(IntPtr hwnd, uint cButtons, IntPtr pButtons); [PreserveSig] int ThumbBarUpdateButtons(IntPtr hwnd, uint cButtons, IntPtr pButtons); [PreserveSig] void ThumbBarSetImageList(IntPtr hwnd, IntPtr himl); [PreserveSig] void SetOverlayIcon(IntPtr hwnd, IntPtr hIcon, [MarshalAs(UnmanagedType.LPWStr)] string pszDescription); [PreserveSig] void SetThumbnailTooltip(IntPtr hwnd, [MarshalAs(UnmanagedType.LPWStr)] string pszTip); [PreserveSig] void SetThumbnailClip(IntPtr hwnd, IntPtr prcClip); } [ComImport] [Guid("56fdf344-fd6d-11d0-958a-006097c9a090")] [ClassInterface(ClassInterfaceType.None)] private class CTaskbarList { } private static IntPtr[] _SetIcon_baseIcon = new IntPtr[2]; private static bool[] _SetIcon_hasBaseIcon = new bool[2]; private static IconCache[] _SetIcon_cache = new IconCache[2] { new IconCache(), new IconCache() }; private static IconCache _SetOverlayIcon_cache = new IconCache(); private static object _initLock = new object(); private static ITaskbarList4 _taskbarList; private static bool _taskbarListReady = false; private static IntPtr _mainWindow = IntPtr.Zero; private static ITaskbarList4 taskbarList { get { if (!_taskbarListReady) { lock (_initLock) { if (!_taskbarListReady) { try { _taskbarList = (ITaskbarList4)new CTaskbarList(); _taskbarList.HrInit(); } catch (Exception) { Debug.LogError((object)"ITaskbarList4 init failed! Go to Build Settings > Player Settings > Standalone > Other Settings, and set Api Compatibility Level to 4.x"); } _taskbarListReady = true; } } } return _taskbarList; } } private static IntPtr mainWindow { get { if (_mainWindow == IntPtr.Zero) { lock (_initLock) { if (!(_mainWindow == IntPtr.Zero)) { } } } return _mainWindow; } } public static bool SetIcon(Texture2D tex, WindowIconKind kind) { IntPtr intPtr = mainWindow; if (intPtr == IntPtr.Zero) { return false; } IntPtr intPtr2; if ((Object)(object)tex != (Object)null) { intPtr2 = _SetIcon_cache[(int)kind].update(new byte[0], ((Texture)tex).width, ((Texture)tex).height); if (intPtr2 == IntPtr.Zero) { return false; } if (!_SetIcon_hasBaseIcon[(int)kind]) { _SetIcon_hasBaseIcon[(int)kind] = true; _SetIcon_baseIcon[(int)kind] = SendMessage(intPtr, 127, (int)kind, IntPtr.Zero); } } else { if (!_SetIcon_hasBaseIcon[(int)kind]) { return true; } intPtr2 = _SetIcon_baseIcon[(int)kind]; } SendMessage(intPtr, 128, (int)kind, intPtr2); return true; } public static bool SetIcon(byte[] bgra, int width, int height, WindowIconKind kind, bool topRowFirst = false) { IntPtr intPtr = mainWindow; if (intPtr == IntPtr.Zero) { return false; } IntPtr intPtr2; if (bgra != null) { intPtr2 = _SetIcon_cache[(int)kind].update(bgra, width, height, topRowFirst); if (intPtr2 == IntPtr.Zero) { return false; } if (!_SetIcon_hasBaseIcon[(int)kind]) { _SetIcon_hasBaseIcon[(int)kind] = true; _SetIcon_baseIcon[(int)kind] = SendMessage(intPtr, 127, (int)kind, IntPtr.Zero); } } else { if (!_SetIcon_hasBaseIcon[(int)kind]) { return true; } intPtr2 = _SetIcon_baseIcon[(int)kind]; } SendMessage(intPtr, 128, (int)kind, intPtr2); return true; } public static bool SetOverlayIcon(Texture2D tex, string description = "") { IntPtr intPtr = mainWindow; if (intPtr == IntPtr.Zero) { return false; } if (!((Object)(object)tex != (Object)null)) { taskbarList.SetOverlayIcon(intPtr, IntPtr.Zero, description); } return true; } public static bool SetProgress(TaskbarProgressBarState state, ulong completed, ulong total) { IntPtr intPtr = mainWindow; if (intPtr == IntPtr.Zero) { return false; } ITaskbarList4 taskbarList = WindowIconTools.taskbarList; taskbarList.SetProgressState(intPtr, state); taskbarList.SetProgressValue(intPtr, completed, total); return true; } public static bool SetProgressState(TaskbarProgressBarState state) { IntPtr intPtr = mainWindow; if (intPtr == IntPtr.Zero) { return false; } taskbarList.SetProgressState(intPtr, state); return true; } public static bool SetProgressValue(ulong completed, ulong total) { IntPtr intPtr = mainWindow; if (intPtr == IntPtr.Zero) { return false; } taskbarList.SetProgressValue(intPtr, completed, total); return true; } [DllImport("gdi32.dll")] [return: MarshalAs(UnmanagedType.Bool)] private static extern bool DeleteObject([In] IntPtr hObject); [DllImport("user32.dll", SetLastError = true)] private static extern bool DestroyIcon(IntPtr hIcon); [DllImport("gdi32.dll")] private static extern IntPtr CreateBitmap(int nWidth, int nHeight, uint cPlanes, uint cBitsPerPel, [MarshalAs(UnmanagedType.LPArray)] byte[] lpvBits); [DllImport("gdi32.dll")] private static extern int SetDIBits(IntPtr hDC, IntPtr hBitmap, uint start, uint clines, byte[] lpvBits, ref BITMAPINFOHEADER lpbmi, uint colorUse); [DllImport("user32.dll")] private static extern IntPtr GetDC(IntPtr hWnd); [DllImport("user32.dll")] private static extern bool ReleaseDC(IntPtr hWnd, IntPtr hDC); [DllImport("user32.dll")] private static extern IntPtr CreateIconIndirect([In] ref ICONINFO piconinfo); [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, IntPtr lParam); [DllImport("user32.dll")] private static extern IntPtr GetActiveWindow(); } public enum WindowIconKind { Small, Big } public enum TaskbarProgressBarState { NoProgress = 0, Indeterminate = 1, Normal = 2, Error = 4, Paused = 8 } namespace Mythical; public class AirChannelDashGood : BaseDashState { public static string staticID = "AirChannelDash"; private WindBurst currentWB; private AirChannel currentAC; private Vector2 spawnPosition; private float burstScale = 1.75f; private ParticleSystemOverride implosionOverride = new ParticleSystemOverride { startSize = 5.5f, startLifetime = 0.7f }; private ParticleSystemOverride implosionOverrideLarge = new ParticleSystemOverride { startSize = 6.5f, startLifetime = 0.6f }; public AirChannelDashGood(FSM fsm, Player parentPlayer) : base("AirChannelDashGood", fsm, parentPlayer) { //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_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown //IL_0037: 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_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown ((SkillState)this).applyStopElementStatus = true; ((SkillState)this).InitChargeSkillSettings(2, 0f, ((SkillState)this).skillData, (SkillState)(object)this); } public override void SetEmpowered(bool givenStatus, BoolVarStatMod givenMod) { ((SkillState)this).SetEmpowered(givenStatus, givenMod); burstScale = ((!((SkillState)this).IsEmpowered) ? 1.75f : 2f); } public override void OnEnter() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: 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_004d: 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_007f: 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_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_00d0: 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_00dc: 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) ((BaseDashState)this).OnEnter(); if (base.cooldownReady) { spawnPosition = Vector2.op_Implicit(((State<Player>)this).parent.attackOriginTrans.position); CreateImplosion(); SoundManager.PlayAudioWithDistance("StandardHeavySwing", (Vector2?)Vector2.op_Implicit(((Component)((State<Player>)this).parent).transform.position), (Transform)null, 24f, -1f, 1.4f, false); PoolManager.GetPoolItem<SectionedTrailEmitter>("WindTrail").Emit(spawnPosition, spawnPosition + ((SkillState)this).inputVector * 5f, -1, false, -1f, true, 0.3f, 0.15f, (Color32?)null, true, (Vector3?)null, (string)null); PoolManager.GetPoolItem<SectionedTrailEmitter>("WindTrail").Emit(spawnPosition, spawnPosition + ((SkillState)this).inputVector * 5f, -1, false, -1f, true, 0.4f, 0.15f, (Color32?)null, true, (Vector3?)null, (string)null); } } public override void OnExit() { //IL_005e: 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_0068: Unknown result type (might be due to invalid IL or missing references) if (base.cooldownReady && !((State<Player>)this).fsm.nextStateName.Contains("Hurt") && !((State<Player>)this).fsm.nextStateName.Contains("Dead")) { CreateAirChannel(); if (((SkillState)this).IsEmpowered) { spawnPosition = Vector2.op_Implicit(((State<Player>)this).parent.attackOriginTrans.position); CreateImplosion(); } } ((BaseDashState)this).OnExit(); } private void CreateImplosion() { //IL_0003: 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) //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_008d: 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_00bb: 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_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0150: 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_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01af: 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_020d: Unknown result type (might be due to invalid IL or missing references) //IL_0212: Unknown result type (might be due to invalid IL or missing references) currentWB = WindBurst.CreateBurst(Vector2.op_Implicit(spawnPosition), ((Entity)((State<Player>)this).parent).skillCategory, ((SkillState)this).skillID, 1, burstScale); currentWB.emitParticles = false; PoolManager.GetPoolItem<ParticleEffect>("WindBurstEffect").Emit((int?)3, (Vector3?)Vector2.op_Implicit(spawnPosition), (ParticleSystemOverride)null, (Vector3?)null, 0f, (float?)null, (Transform)null); PoolManager.GetPoolItem<ParticleEffect>("AirVortex").Emit((int?)1, (Vector3?)Vector2.op_Implicit(spawnPosition), implosionOverride, (Vector3?)new Vector3(0f, 0f, Random.Range(0f, 33f)), 0f, (float?)null, (Transform)null); PoolManager.GetPoolItem<ParticleEffect>("AirVortex").Emit((int?)1, (Vector3?)Vector2.op_Implicit(spawnPosition), implosionOverride, (Vector3?)new Vector3(0f, 0f, Random.Range(180f, 213f)), 0f, (float?)null, (Transform)null); PoolManager.GetPoolItem<ParticleEffect>("AirVortex").Emit((int?)1, (Vector3?)Vector2.op_Implicit(spawnPosition), implosionOverride, (Vector3?)new Vector3(0f, 0f, Random.Range(0f, 360f)), 0f, (float?)null, (Transform)null); PoolManager.GetPoolItem<ParticleEffect>("AirVortex").Emit((int?)1, (Vector3?)Vector2.op_Implicit(spawnPosition), implosionOverrideLarge, (Vector3?)new Vector3(0f, 0f, Random.Range(0f, 360f)), 0f, (float?)null, (Transform)null); DustEmitter poolItem = PoolManager.GetPoolItem<DustEmitter>(); int num = 150; float num2 = 1.5f; Vector3? val = Vector2.op_Implicit(spawnPosition); poolItem.EmitCircle(num, num2, -8f, -1f, val, (Vector3?)null); } private void CreateAirChannel() { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: 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_0063: 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_0074: Unknown result type (might be due to invalid IL or missing references) currentAC = ((SkillState)this).ChaosInst<AirChannel>(AirChannel.Prefab, (Vector2?)spawnPosition, (Quaternion?)Globals.GetRotationQuaternion(((SkillState)this).inputVector), (Transform)null); currentAC.attack.SetAttackInfo(((Entity)((State<Player>)this).parent).skillCategory, ((SkillState)this).skillID, 2, false); currentAC.attack.knockbackOverwriteVector = ((SkillState)this).inputVector; currentAC.targetVector = ((SkillState)this).inputVector; } } public class FireBurstDash : BaseDashState { public static string staticID = "Mythical::RadiantStorm"; private Vector2 spawnPosition; public FireBurstDash(FSM fsm, Player parentPlayer) : base(staticID, fsm, parentPlayer) { ((SkillState)this).applyStopElementStatus = true; ((SkillState)this).isDash = true; ((SkillState)this).InitChargeSkillSettings(2, 0f, ((SkillState)this).skillData, (SkillState)(object)this); } public override void SetEmpowered(bool givenStatus, BoolVarStatMod givenMod) { ((SkillState)this).SetEmpowered(givenStatus, givenMod); } public override void OnEnter() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: 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_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_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008b: 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_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: 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_00f2: 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) ((BaseDashState)this).OnEnter(); if (base.cooldownReady) { spawnPosition = Vector2.op_Implicit(((State<Player>)this).parent.attackOriginTrans.position); CreateExplosion(FlameBurst.burnSkillID, spawnPosition); SoundManager.PlayAudioWithDistance("StandardHeavySwing", (Vector2?)Vector2.op_Implicit(((Component)((State<Player>)this).parent).transform.position), (Transform)null, 24f, -1f, 1.4f, false); PoolManager.GetPoolItem<SectionedTrailEmitter>("FloorRift").Emit(spawnPosition, spawnPosition + ((SkillState)this).inputVector * 5f, -1, false, -1f, true, 0.3f, 0.15f, (Color32?)null, true, (Vector3?)null, (string)null); PoolManager.GetPoolItem<SectionedTrailEmitter>("FloorRift").Emit(spawnPosition, spawnPosition + ((SkillState)this).inputVector * 5f, -1, false, -1f, true, 0.4f, 0.15f, (Color32?)null, true, (Vector3?)null, (string)null); } } public override void OnExit() { //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_0061: 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) if (base.cooldownReady && !((State<Player>)this).fsm.nextStateName.Contains("Hurt") && !((State<Player>)this).fsm.nextStateName.Contains("Dead") && ((SkillState)this).IsEmpowered) { spawnPosition = Vector2.op_Implicit(((State<Player>)this).parent.attackOriginTrans.position); CreateExplosion(FlameBurst.burnSkillID, spawnPosition); } Debug.Log((object)"Doing the thing"); ((BaseDashState)this).OnExit(); } public void CreateExplosion(string skillID, Vector2 givenPosition, bool empower = false) { //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) //IL_0035: 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_0052: Unknown result type (might be due to invalid IL or missing references) FlameBurst.CreateBurst(Vector2.op_Implicit(givenPosition), ((Entity)((State<Player>)this).parent).skillCategory, skillID, 1, 2.5f * (empower ? 1.25f : 1f), true); SoundManager.PlayWithDistAndSPR("BlazingBlitzEnd", givenPosition, 1f); PoolManager.GetPoolItem<ParticleEffect>("SmokeEmitter").Emit((int?)6, (Vector3?)Vector2.op_Implicit(givenPosition), (ParticleSystemOverride)null, (Vector3?)null, 0f, (float?)null, (Transform)null); CameraController.ShakeCamera(0.25f, false); } } public class UseWindDefenseNerfed : UseBuffSkill { public static string staticID = "UseWindDefenseNerfed"; public static ParticleSystemOverride evadeEffectOverride = new ParticleSystemOverride { radius = 0.75f, startColor = Color32.op_Implicit(new Color(1f, 1f, 1f, 0.33f)) }; private static GameObject _effectPrefab; private static BoolVarStatMod fallMod = new BoolVarStatMod(UseWindDefense.staticID, true, 10); private static NumVarStatMod evadeMod = new NumVarStatMod(UseWindDefense.staticID, 1f, 0, (VarStatModType)0, false); private static NumVarStatMod moveMod = new NumVarStatMod(UseWindDefense.staticID, 0.4f, 10, (VarStatModType)2, false); private ParticleEffect currentEffect; private bool evadeStatus; private bool empStatus; private SkillState checkState; public static GameObject EffectPrefab { get { if ((Object)(object)UseWindDefense._effectPrefab == (Object)null) { UseWindDefense._effectPrefab = ChaosBundle.Get("Assets/Prefabs/Effects/Air/WindBallSmallEffect.prefab"); } return UseWindDefense._effectPrefab; } } private bool ParentIsMoving { get { ref SkillState reference = ref checkState; IState currentState = ((State<Player>)this).fsm.currentState; reference = (SkillState)(object)((currentState is SkillState) ? currentState : null); return (checkState != null && (checkState.isBasic || checkState.isMovementSkill)) || (((State<Player>)this).fsm != null && (((State<Player>)this).fsm.currentStateName == ((State<Player>)this).name || ((State<Player>)this).fsm.currentStateName == "Run" || ((State<Player>)this).fsm.currentStateName == SlideState.staticID)); } } public UseWindDefenseNerfed(FSM parentFSM, Player parentEntity) : base(staticID, parentFSM, parentEntity) { base.whileStopwatch.SetDelay(0.125f, false, false); } public override void SetBuffStatus(bool givenStatus) { //IL_0041: 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_00ae: 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_00ef: 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_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) ((UseBuffSkill)this).SetBuffStatus(givenStatus); evadeStatus = false; if (givenStatus) { empStatus = ((SkillState)this).IsEmpowered; ((State<Player>)this).parent.overheadPrompt.PlayShakeAnalog(2f); SoundManager.PlayAudioWithDistance("WindArrowStart", (Vector2?)base.currentPosition, (Transform)null, 24f, -1f, 0.6f, false); string text = "TornadoEnd"; Vector2? val = base.currentPosition; float num = Random.Range(0.75f, 0.85f); SoundManager.PlayAudioWithDistance(text, val, (Transform)null, 24f, -1f, num, false); DustEmitter poolItem = PoolManager.GetPoolItem<DustEmitter>(); int num2 = 100; num = 0.5f; Vector3? val2 = Vector2.op_Implicit(base.currentPosition); poolItem.EmitCircle(num2, num, -1f, -1f, val2, (Vector3?)null); PoolManager.GetPoolItem<ParticleEffect>("WindBurstEffect").Emit((int?)5, (Vector3?)Vector2.op_Implicit(base.attackPosition), ParticleEffectOverrides.StartSpeed1p5, (Vector3?)null, 0f, (float?)null, (Transform)null); return; } ToggleMods(givenStatus: false, givenEmpStatus: true); ((State<Player>)this).parent.overheadPrompt.HidePrompt(string.Empty); if ((Object)(object)currentEffect != (Object)null) { currentEffect.Stop(); if ((Object)(object)((Component)currentEffect).gameObject != (Object)null) { Object.Destroy((Object)(object)((Component)currentEffect).gameObject, 1f); } currentEffect = null; } PoolManager.GetPoolItem<ParticleEffect>("WindBurstEffect").Emit((int?)6, (Vector3?)Vector2.op_Implicit(base.attackPosition), (ParticleSystemOverride)null, (Vector3?)null, 0f, (float?)null, (Transform)null); string text2 = "TornadoEnd"; Vector2? val3 = base.currentPosition; float num3 = Random.Range(0.75f, 0.85f); SoundManager.PlayAudioWithDistance(text2, val3, (Transform)null, 24f, -1f, num3, false); } public override void WhileBuffActive() { //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) ((UseBuffSkill)this).WhileBuffActive(); if (evadeStatus) { string text = "WindCircle"; Vector2? val = Vector2.op_Implicit(((Component)((State<Player>)this).parent).transform.position); float num = Random.Range(0.9f, 1.1f); SoundManager.PlayAudioWithDistance(text, val, (Transform)null, 24f, -1f, num, false); if (!ParentIsMoving) { evadeStatus = false; ToggleMods(givenStatus: false, empStatus); } } else if (ParentIsMoving) { evadeStatus = true; ToggleMods(givenStatus: true, empStatus); } } private void ToggleMods(bool givenStatus, bool givenEmpStatus) { //IL_012f: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)((Entity)((State<Player>)this).parent).health != (Object)null) { ((VarStat<float>)(object)((Entity)((State<Player>)this).parent).health.evadeStat).Modify((VarStatMod<float>)(object)UseWindDefense.evadeMod, givenStatus); } if (givenEmpStatus) { if ((Object)(object)((Entity)((State<Player>)this).parent).movement != (Object)null) { ((VarStat<float>)(object)((Entity)((State<Player>)this).parent).movement.moveSpeedStat).Modify((VarStatMod<float>)(object)UseWindDefense.moveMod, givenStatus); } ((VarStat<bool>)(object)((Entity)((State<Player>)this).parent).fall.ignoreFall).Modify((VarStatMod<bool>)(object)UseWindDefense.fallMod, givenStatus); ((Entity)((State<Player>)this).parent).TogglePreventFallCollider(!givenStatus); } else { if ((Object)(object)((Entity)((State<Player>)this).parent).movement != (Object)null) { ((VarStat<float>)(object)((Entity)((State<Player>)this).parent).movement.moveSpeedStat).Modify((VarStatMod<float>)(object)UseWindDefense.moveMod, false); } ((VarStat<bool>)(object)((Entity)((State<Player>)this).parent).fall.ignoreFall).Modify((VarStatMod<bool>)(object)UseWindDefense.fallMod, false); ((Entity)((State<Player>)this).parent).TogglePreventFallCollider(true); } ((State<Player>)this).parent.ToggleEnemyFloorCollisions(!givenStatus); if ((Object)(object)currentEffect == (Object)null) { currentEffect = Globals.ChaosInst<ParticleEffect>(UseWindDefense.EffectPrefab, (Transform)null, (Vector3?)((Entity)((State<Player>)this).parent).hurtBoxTransform.position, (Quaternion?)null); } if (givenStatus) { ParticleEffect val = currentEffect; int? num = 30; ParticleSystemOverride val2 = UseWindDefense.evadeEffectOverride; val.Emit(num, (Vector3?)null, val2, (Vector3?)null, 0f, (float?)null, (Transform)null); currentEffect.followTransform = ((Entity)((State<Player>)this).parent).hurtBoxTransform; ParticleEffect val3 = currentEffect; val2 = UseWindDefense.evadeEffectOverride; val3.Play((float?)null, (Vector3?)null, val2, (float?)null, (Transform)null, (Vector3?)null, 0f, true); } else { currentEffect.Stop(); } } } internal class AllOrNothing : Item { public static string staticID = "allOrNothing"; public override string ExtraInfo => ((Item)this).PercentToStr(0.5f, "+-"); public AllOrNothing() { //IL_000a: Unknown result type (might be due to invalid IL or missing references) base.category = (Category)0; base.ID = staticID; base.isCursed = true; } public override void Activate() { SetModStatus(givenStatus: true); } public override void Deactivate() { SetModStatus(givenStatus: false); } public virtual void SetModStatus(bool givenStatus) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown if (givenStatus) { Health.TakeDamage += new hook_TakeDamage(AllNothing); } else { Health.TakeDamage -= new hook_TakeDamage(AllNothing); } } public bool AllNothing(orig_TakeDamage orig, Health self, AttackInfo info, Entity attackEntity, bool crit) { Entity entityScript = ((ComponentBase)self).entityScript; if (Random.value < 0.5f) { info.damage *= 3; } else { info.freezeChance = 0f; info.burnChance = 0f; info.chaosChance = 0f; info.critHitChance = 0f; info.poisonChance = 0f; info.rootChance = 0f; info.shockChance = 0f; info.shakeCamera = false; info.slowChance = 0f; info.knockbackMultiplier = 0f; _ = info.damage; info.damage = 0; } return orig.Invoke(self, info, attackEntity, crit); } } internal class AssetRedirector { } internal class AttackInfoHolderMythical { } internal class AttackSpeedUpItem : Item { public static string staticID = "attackSpeedUpItem"; public static NumVarStatMod atkSpeed; public override string ExtraInfo => ((Item)this).PercentToStr(0.1f, "+"); public AttackSpeedUpItem() { //IL_0015: 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_0033: Expected O, but got Unknown base.ID = staticID; base.category = (Category)0; atkSpeed = new NumVarStatMod(base.ID, 0.1f, 11, (VarStatModType)2, false); } public override void Activate() { SetModStatus(givenStatus: true); } public override void Deactivate() { SetModStatus(givenStatus: false); } public virtual void SetModStatus(bool givenStatus) { if (base.parentEntity.animSpeedHandler != null && atkSpeed != null) { base.parentEntity.animSpeedHandler.Modify(atkSpeed, givenStatus); } } } public class Behemoth : Item { public static string staticID = "BrilliantBehemoth"; protected NumVarStatMod damageMod; public float explosionRadius = 1.5f; public override string ExtraInfo => ((Item)this).PercentToStr(damageMod, "-"); public Behemoth() { //IL_0020: 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_0046: Expected O, but got Unknown base.ID = staticID; base.category = (Category)0; base.isCursed = true; damageMod = new NumVarStatMod(base.ID, -0.3f, 10, (VarStatModType)2, false); } public override void Activate() { SetModStatus(givenStatus: true); } public override void Deactivate() { SetModStatus(givenStatus: false); } public virtual void SetModStatus(bool givenStatus) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Expected O, but got Unknown //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected O, but got Unknown StatManager.ModifyAllStatData(damageMod, base.parentSkillCategory, StatData.damageStr, new ModApplyConditional(base.IgnoreStatusConditional), givenStatus); if (givenStatus) { Health.TakeDamage += new hook_TakeDamage(ExplosionDamage); } else { Health.TakeDamage -= new hook_TakeDamage(ExplosionDamage); } } public void EnemyKillHeal(orig_OnEnemyKill orig, Player self, Entity givenEntity) { orig.Invoke(self, givenEntity); ((Entity)self).health.RestoreHealth(3, true, true, false, true); } public bool ExplosionDamage(orig_TakeDamage orig, Health self, AttackInfo attackInfo, Entity attackEntity, bool crit) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) if (Random.value < 0.25f) { CreateExplosion(FlameBurst.burnSkillID, Vector2.op_Implicit(((Component)self).transform.position)); } return orig.Invoke(self, attackInfo, attackEntity, crit); } public void CreateExplosion(string skillID, Vector2 givenPosition) { //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) //IL_0021: 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_003e: Unknown result type (might be due to invalid IL or missing references) FlameBurst.CreateBurst(Vector2.op_Implicit(givenPosition), base.parentSkillCategory, skillID, 1, explosionRadius, true); SoundManager.PlayWithDistAndSPR("BlazingBlitzEnd", givenPosition, 1f); PoolManager.GetPoolItem<ParticleEffect>("SmokeEmitter").Emit((int?)6, (Vector3?)Vector2.op_Implicit(givenPosition), (ParticleSystemOverride)null, (Vector3?)null, 0f, (float?)null, (Transform)null); CameraController.ShakeCamera(0.25f, false); } } public static class ChaosArenaChanges { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_SetStageLayout <>9__11_0; public static hook_LoadNextLevel <>9__11_1; public static hook_Update <>9__11_2; public static hook_OnTriggerStay2D <>9__11_3; public static hook_OnTriggerExit2D <>9__11_4; public static hook_IsValidIndex <>9__11_5; public static hook_DisplayDialog <>9__11_6; internal void <Init>b__11_0(orig_SetStageLayout orig, PvpController self) { //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Expected O, but got Unknown orig.Invoke(self); if (!ContentLoader.StageEffects) { self.forceEmpowerDrop = false; } Debug.Log((object)"Layout hook"); if (PvpController.selectedRoomName == "DefaultRoom" || PvpController.selectedRoomName == "Neutral") { MeshRenderer[] componentsInChildren = ((Component)self.selectedRoom).GetComponentsInChildren<MeshRenderer>(); foreach (MeshRenderer val in componentsInChildren) { if (((Object)((Renderer)val).material).name.ToLower().Contains("plazatile")) { if ((Object)(object)arenaTextureCarbonCopy == (Object)null) { arenaTextureCarbonCopy = new Texture2D(((Texture)arenaTextureReference).width, ((Texture)arenaTextureReference).height); ((Texture)arenaTextureCarbonCopy).filterMode = (FilterMode)0; arenaTextureCarbonCopy.SetPixels32(arenaTextureReference.GetPixels32()); arenaTextureCarbonCopy.Apply(); } ((Renderer)val).material.mainTexture = (Texture)(object)arenaTextureCarbonCopy; } } } if (arenaTileID >= 0) { Debug.Log((object)"Setting Tileset"); if ((Object)(object)tilesets[arenaTileID].tileset != (Object)null) { arenaTextureCarbonCopy.SetPixels32(tilesets[arenaTileID].tileset.GetPixels32()); arenaTextureCarbonCopy.Apply(); } EditStage(); Pathfinder.GenerateNodeMap(self.selectedRoom.tileGrid); if (!ContentLoader.StageEffects) { return; } string name = tilesets[arenaTileID].name; string text = name; if (!(text == "Domicile")) { if (text == "Dorm") { ((Component)self).gameObject.AddComponent<ContestantAssault>().self = self; } } else { ((Component)self).gameObject.AddComponent<UltraCouncilChallenge>().self = self; } } else { ResetTileSet(); } } internal void <Init>b__11_1(orig_LoadNextLevel orig, PvpStageLoader self) { if (((Object)((Component)self).gameObject).name == "CUSTOMLOADER") { arenaTileID = tilesets.IndexOf(portalDict[((Component)self).gameObject]); } else { arenaTileID = -1; } orig.Invoke(self); } internal void <Init>b__11_2(orig_Update orig, PvpStageLoader self) { //IL_003a: 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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: 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_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Expected O, but got Unknown if ((Object)(object)((NextLevelLoader)self).player == (Object)null || ((NextLevelLoader)self).portalEntered) { return; } if (((NextLevelLoader)self).player.IsDead || Vector2.Distance(Vector2.op_Implicit(((Component)((NextLevelLoader)self).player).transform.position), Vector2.op_Implicit(((Component)self).transform.position)) > 2f) { ((NextLevelLoader)self).player = null; ((NextLevelLoader)self).CurrentOverheadPrompt = null; if ((Object)(object)((NextLevelLoader)self).exitPortal != (Object)null) { ((NextLevelLoader)self).exitPortal.Deactivate(); } } else if (((NextLevelLoader)self).player.IsAvailable && ((NextLevelLoader)self).player.inputDevice.GetButtonDown("Interact")) { ((NextLevelLoader)self).CurrentOverheadPrompt = null; Player[] activePlayers = GameController.activePlayers; foreach (Player val in activePlayers) { ((Component)val).transform.position = ((Component)self).transform.position; ((VarStat<bool>)(object)((Entity)val).fall.ignoreFall).AddMod((VarStatMod<bool>)new BoolVarStatMod("LevelLoad", true, 0)); val.hurtBoxObj.SetActive(false); } if ((Object)(object)((NextLevelLoader)self).exitPortal != (Object)null) { ((NextLevelLoader)self).exitPortal.Deactivate(); ((NextLevelLoader)self).exitPortal.Close(); } else { ((NextLevelLoader)self).LoadNextLevel(); } ((NextLevelLoader)self).portalEntered = true; } } internal void <Init>b__11_3(orig_OnTriggerStay2D orig, PvpStageLoader self, Collider2D c) { //IL_0071: Unknown result type (might be due to invalid IL or missing references) if (!((NextLevelLoader)self).forceTriggerExit && !((NextLevelLoader)self).portalEntered && (Object)(object)((NextLevelLoader)self).player == (Object)null) { ((NextLevelLoader)self).player = Player.CheckForPlayer(c); if ((Object)(object)((NextLevelLoader)self).player != (Object)null && ((NextLevelLoader)self).player.IsAvailable) { ((NextLevelLoader)self).CurrentOverheadPrompt.Initialize(((Component)self).transform, ((NextLevelLoader)self).player.inputDevice.inputScheme, ((NextLevelLoader)self).overheadPromptHeight, 0f); ((NextLevelLoader)self).CurrentOverheadPrompt.DisplayPrompt("Interact", false, false); ((NextLevelLoader)self).exitPortal.Prepare(); } } } internal void <Init>b__11_4(orig_OnTriggerExit2D orig, PvpStageLoader self, Collider2D c) { bool flag = Object.op_Implicit((Object)(object)Player.CheckForPlayer(c)); if (((NextLevelLoader)self).forceTriggerExit && flag) { ((NextLevelLoader)self).forceTriggerExit = false; } if (flag && (Object)(object)((NextLevelLoader)self).player != (Object)null && ((NextLevelLoader)self).player.IsAvailable) { ((NextLevelLoader)self).CurrentOverheadPrompt = null; ((NextLevelLoader)self).player = null; if ((Object)(object)((NextLevelLoader)self).exitPortal != (Object)null) { ((NextLevelLoader)self).exitPortal.Deactivate(); } } } internal bool <Init>b__11_5(orig_IsValidIndex orig, DialogEntry self, int i, bool b) { if (self.messages == null) { return true; } return orig.Invoke(self, i, b); } internal bool <Init>b__11_6(orig_DisplayDialog orig, DialogManager self, string dialogID, int overrideIndex, string playerIDOverride, string leftIDOverride, string rightIDOverride, bool isSign, bool skipGhostWriter) { //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Expected O, but got Unknown //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Expected O, but got Unknown //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Expected O, but got Unknown //IL_0277: Unknown result type (might be due to invalid IL or missing references) //IL_027d: Expected O, but got Unknown //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Expected O, but got Unknown if (!addedDialogues) { addedDialogues = true; foreach (ArenaDef tileset in tilesets) { Debug.Log((object)("Adding " + tileset.name)); DialogSpeakerInfo value = new DialogSpeakerInfo("WOL-TEDS-" + tileset.name, tileset.name, "", (Color?)null, "", "", (Color?)null, "", "", (Color?)null, 0); DialogMessage val = new DialogMessage(DialogManager.dialogDict["PvP-Statue-Default"].messages[0]); val.message = tileset.description; val.leftSpeakerID = "WOL-TEDS-" + tileset.name; DialogEntry val2 = new DialogEntry(0); val2.currentIndex = 0; val2.ID = "WOL-TED-" + tileset.name; val2.messages = (DialogMessage[])(object)new DialogMessage[1] { val }; DialogManager.dialogDict["WOL-TED-" + tileset.name] = val2; DialogManager.speakerDict["WOL-TEDS-" + tileset.name] = value; } } DialogMessage val3 = null; if (MaliceAdditions.MaliceActive && MaliceAdditions.maliceDialog.ContainsKey(dialogID)) { if (!MaliceAdditions.maliceDialog.ContainsKey(dialogID)) { return false; } MaliceAdditions.maliceDialog[dialogID].CurrentIndex = overrideIndex; if (MaliceAdditions.maliceDialog[dialogID].ScriptEnd) { MaliceAdditions.maliceDialog[dialogID].Reset(); return false; } val3 = new DialogMessage(MaliceAdditions.maliceDialog[dialogID].GetMessage()); } else { if (!DialogManager.dialogDict.ContainsKey(dialogID)) { return false; } DialogManager.dialogDict[dialogID].CurrentIndex = overrideIndex; if (DialogManager.dialogDict[dialogID].ScriptEnd) { DialogManager.dialogDict[dialogID].Reset(); return false; } val3 = new DialogMessage(DialogManager.dialogDict[dialogID].GetMessage()); } if (DialogManager.speakerDict.ContainsKey(leftIDOverride)) { val3.OverwriteSpeaker(leftIDOverride, true); } if (DialogManager.speakerDict.ContainsKey(rightIDOverride)) { val3.OverwriteSpeaker(leftIDOverride, false); } if (val3.leftSpeakerID != null && val3.leftSpeakerID.Contains("Player")) { if (DialogManager.speakerDict.ContainsKey(playerIDOverride)) { val3.OverwriteSpeaker(playerIDOverride, true); } else { if (GameController.activePlayers == null || !((Object)(object)GameController.activePlayers[0] != (Object)null)) { return false; } val3.OverwriteSpeaker(val3.leftSpeakerID = DialogManager.speakerDict[((Entity)GameController.activePlayers[0]).skillCategory].speakerID, true); } } if (val3.rightSpeakerID != null && val3.rightSpeakerID.Contains("Player")) { if (DialogManager.speakerDict.ContainsKey(playerIDOverride)) { val3.rightSpeakerID = playerIDOverride; } else { if (GameController.activePlayers == null || GameController.activePlayers.Length == 0 || !((Object)(object)GameController.activePlayers[0] != (Object)null)) { return false; } val3.rightSpeakerID = DialogManager.speakerDict[((Entity)GameController.activePlayers[0]).skillCategory].speakerID; } } val3.message = self.ParseMessage(val3); self.Activate(val3, isSign, skipGhostWriter); DialogManager.dialogInProgress = true; DialogManager.currentDialogID = dialogID; return true; } } public static List<Texture2D> arenas = new List<Texture2D>(); public static List<ArenaDef> tilesets = new List<ArenaDef>(); public static Texture2D chosenArena = null; public static Texture2D arenaTextureReference = null; public static Texture2D arenaTextureCarbonCopy = null; public static Vector3 offset = new Vector3(25f, -22f, 0f); private static int arenaCount = 3; private static int customTilesetCount = 1; private static bool soloPortals = true; public static int arenaTileID = 0; public static Material mainMaterial; private static bool addedDialogues = false; private static Dictionary<GameObject, ArenaDef> portalDict = new Dictionary<GameObject, ArenaDef>(); public static void Init() { //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_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_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: 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_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Expected O, but got Unknown //IL_01a6: 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) //IL_01b1: Expected O, but got Unknown //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Expected O, but got Unknown //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Expected O, but got Unknown //IL_015b: 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_0166: Expected O, but got Unknown //IL_0180: 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_018b: Expected O, but got Unknown arenaTextureReference = ImgHandler.LoadTex2D("tilesetMain", pointFilter: true); tilesets.Add(new ArenaDef { name = "Dorm", description = "Face the Contestant Assault!", position = new Vector3(-19f, -6.5f, 0f), layout = ImgHandler.LoadTex2D("Arenas/arena1"), id = 0 }); tilesets.Add(new ArenaDef { name = "Domicile", description = "Face the Ultra Council Challenge!", position = new Vector3(20f, -6.5f, 0f), layout = ImgHandler.LoadTex2D("Arenas/arena2"), element = (ElementType)0, id = 1 }); object obj = <>c.<>9__11_0; if (obj == null) { hook_SetStageLayout val = delegate(orig_SetStageLayout orig, PvpController self) { //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Expected O, but got Unknown orig.Invoke(self); if (!ContentLoader.StageEffects) { self.forceEmpowerDrop = false; } Debug.Log((object)"Layout hook"); if (PvpController.selectedRoomName == "DefaultRoom" || PvpController.selectedRoomName == "Neutral") { MeshRenderer[] componentsInChildren = ((Component)self.selectedRoom).GetComponentsInChildren<MeshRenderer>(); foreach (MeshRenderer val12 in componentsInChildren) { if (((Object)((Renderer)val12).material).name.ToLower().Contains("plazatile")) { if ((Object)(object)arenaTextureCarbonCopy == (Object)null) { arenaTextureCarbonCopy = new Texture2D(((Texture)arenaTextureReference).width, ((Texture)arenaTextureReference).height); ((Texture)arenaTextureCarbonCopy).filterMode = (FilterMode)0; arenaTextureCarbonCopy.SetPixels32(arenaTextureReference.GetPixels32()); arenaTextureCarbonCopy.Apply(); } ((Renderer)val12).material.mainTexture = (Texture)(object)arenaTextureCarbonCopy; } } } if (arenaTileID >= 0) { Debug.Log((object)"Setting Tileset"); if ((Object)(object)tilesets[arenaTileID].tileset != (Object)null) { arenaTextureCarbonCopy.SetPixels32(tilesets[arenaTileID].tileset.GetPixels32()); arenaTextureCarbonCopy.Apply(); } EditStage(); Pathfinder.GenerateNodeMap(self.selectedRoom.tileGrid); if (ContentLoader.StageEffects) { string name = tilesets[arenaTileID].name; string text = name; if (!(text == "Domicile")) { if (text == "Dorm") { ((Component)self).gameObject.AddComponent<ContestantAssault>().self = self; } } else { ((Component)self).gameObject.AddComponent<UltraCouncilChallenge>().self = self; } } } else { ResetTileSet(); } }; <>c.<>9__11_0 = val; obj = (object)val; } PvpController.SetStageLayout += (hook_SetStageLayout)obj; object obj2 = <>c.<>9__11_1; if (obj2 == null) { hook_LoadNextLevel val2 = delegate(orig_LoadNextLevel orig, PvpStageLoader self) { if (((Object)((Component)self).gameObject).name == "CUSTOMLOADER") { arenaTileID = tilesets.IndexOf(portalDict[((Component)self).gameObject]); } else { arenaTileID = -1; } orig.Invoke(self); }; <>c.<>9__11_1 = val2; obj2 = (object)val2; } PvpStageLoader.LoadNextLevel += (hook_LoadNextLevel)obj2; if (soloPortals) { object obj3 = <>c.<>9__11_2; if (obj3 == null) { hook_Update val3 = delegate(orig_Update orig, PvpStageLoader self) { //IL_003a: 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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: 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_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Expected O, but got Unknown if (!((Object)(object)((NextLevelLoader)self).player == (Object)null) && !((NextLevelLoader)self).portalEntered) { if (((NextLevelLoader)self).player.IsDead || Vector2.Distance(Vector2.op_Implicit(((Component)((NextLevelLoader)self).player).transform.position), Vector2.op_Implicit(((Component)self).transform.position)) > 2f) { ((NextLevelLoader)self).player = null; ((NextLevelLoader)self).CurrentOverheadPrompt = null; if ((Object)(object)((NextLevelLoader)self).exitPortal != (Object)null) { ((NextLevelLoader)self).exitPortal.Deactivate(); } } else if (((NextLevelLoader)self).player.IsAvailable && ((NextLevelLoader)self).player.inputDevice.GetButtonDown("Interact")) { ((NextLevelLoader)self).CurrentOverheadPrompt = null; Player[] activePlayers = GameController.activePlayers; foreach (Player val11 in activePlayers) { ((Component)val11).transform.position = ((Component)self).transform.position; ((VarStat<bool>)(object)((Entity)val11).fall.ignoreFall).AddMod((VarStatMod<bool>)new BoolVarStatMod("LevelLoad", true, 0)); val11.hurtBoxObj.SetActive(false); } if ((Object)(object)((NextLevelLoader)self).exitPortal != (Object)null) { ((NextLevelLoader)self).exitPortal.Deactivate(); ((NextLevelLoader)self).exitPortal.Close(); } else { ((NextLevelLoader)self).LoadNextLevel(); } ((NextLevelLoader)self).portalEntered = true; } } }; <>c.<>9__11_2 = val3; obj3 = (object)val3; } PvpStageLoader.Update += (hook_Update)obj3; object obj4 = <>c.<>9__11_3; if (obj4 == null) { hook_OnTriggerStay2D val4 = delegate(orig_OnTriggerStay2D orig, PvpStageLoader self, Collider2D c) { //IL_0071: Unknown result type (might be due to invalid IL or missing references) if (!((NextLevelLoader)self).forceTriggerExit && !((NextLevelLoader)self).portalEntered && (Object)(object)((NextLevelLoader)self).player == (Object)null) { ((NextLevelLoader)self).player = Player.CheckForPlayer(c); if ((Object)(object)((NextLevelLoader)self).player != (Object)null && ((NextLevelLoader)self).player.IsAvailable) { ((NextLevelLoader)self).CurrentOverheadPrompt.Initialize(((Component)self).transform, ((NextLevelLoader)self).player.inputDevice.inputScheme, ((NextLevelLoader)self).overheadPromptHeight, 0f); ((NextLevelLoader)self).CurrentOverheadPrompt.DisplayPrompt("Interact", false, false); ((NextLevelLoader)self).exitPortal.Prepare(); } } }; <>c.<>9__11_3 = val4; obj4 = (object)val4; } PvpStageLoader.OnTriggerStay2D += (hook_OnTriggerStay2D)obj4; object obj5 = <>c.<>9__11_4; if (obj5 == null) { hook_OnTriggerExit2D val5 = delegate(orig_OnTriggerExit2D orig, PvpStageLoader self, Collider2D c) { bool flag = Object.op_Implicit((Object)(object)Player.CheckForPlayer(c)); if (((NextLevelLoader)self).forceTriggerExit && flag) { ((NextLevelLoader)self).forceTriggerExit = false; } if (flag && (Object)(object)((NextLevelLoader)self).player != (Object)null && ((NextLevelLoader)self).player.IsAvailable) { ((NextLevelLoader)self).CurrentOverheadPrompt = null; ((NextLevelLoader)self).player = null; if ((Object)(object)((NextLevelLoader)self).exitPortal != (Object)null) { ((NextLevelLoader)self).exitPortal.Deactivate(); } } }; <>c.<>9__11_4 = val5; obj5 = (object)val5; } PvpStageLoader.OnTriggerExit2D += (hook_OnTriggerExit2D)obj5; } object obj6 = <>c.<>9__11_5; if (obj6 == null) { hook_IsValidIndex val6 = (orig_IsValidIndex orig, DialogEntry self, int i, bool b) => self.messages == null || orig.Invoke(self, i, b); <>c.<>9__11_5 = val6; obj6 = (object)val6; } DialogEntry.IsValidIndex += (hook_IsValidIndex)obj6; object obj7 = <>c.<>9__11_6; if (obj7 == null) { hook_DisplayDialog val7 = delegate(orig_DisplayDialog orig, DialogManager self, string dialogID, int overrideIndex, string playerIDOverride, string leftIDOverride, string rightIDOverride, bool isSign, bool skipGhostWriter) { //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Expected O, but got Unknown //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Expected O, but got Unknown //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Expected O, but got Unknown //IL_0277: Unknown result type (might be due to invalid IL or missing references) //IL_027d: Expected O, but got Unknown //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_0203: Expected O, but got Unknown if (!addedDialogues) { addedDialogues = true; foreach (ArenaDef tileset in tilesets) { Debug.Log((object)("Adding " + tileset.name)); DialogSpeakerInfo value = new DialogSpeakerInfo("WOL-TEDS-" + tileset.name, tileset.name, "", (Color?)null, "", "", (Color?)null, "", "", (Color?)null, 0); DialogMessage val8 = new DialogMessage(DialogManager.dialogDict["PvP-Statue-Default"].messages[0]); val8.message = tileset.description; val8.leftSpeakerID = "WOL-TEDS-" + tileset.name; DialogEntry val9 = new DialogEntry(0); val9.currentIndex = 0; val9.ID = "WOL-TED-" + tileset.name; val9.messages = (DialogMessage[])(object)new DialogMessage[1] { val8 }; DialogManager.dialogDict["WOL-TED-" + tileset.name] = val9; DialogManager.speakerDict["WOL-TEDS-" + tileset.name] = value; } } DialogMessage val10 = null; if (MaliceAdditions.MaliceActive && MaliceAdditions.maliceDialog.ContainsKey(dialogID)) { if (!MaliceAdditions.maliceDialog.ContainsKey(dialogID)) { return false; } MaliceAdditions.maliceDialog[dialogID].CurrentIndex = overrideIndex; if (MaliceAdditions.maliceDialog[dialogID].ScriptEnd) { MaliceAdditions.maliceDialog[dialogID].Reset(); return false; } val10 = new DialogMessage(MaliceAdditions.maliceDialog[dialogID].GetMessage()); } else { if (!DialogManager.dialogDict.ContainsKey(dialogID)) { return false; } DialogManager.dialogDict[dialogID].CurrentIndex = overrideIndex; if (DialogManager.dialogDict[dialogID].ScriptEnd) { DialogManager.dialogDict[dialogID].Reset(); return false; } val10 = new DialogMessage(DialogManager.dialogDict[dialogID].GetMessage()); } if (DialogManager.speakerDict.ContainsKey(leftIDOverride)) { val10.OverwriteSpeaker(leftIDOverride, true); } if (DialogManager.speakerDict.ContainsKey(rightIDOverride)) { val10.OverwriteSpeaker(leftIDOverride, false); } if (val10.leftSpeakerID != null && val10.leftSpeakerID.Contains("Player")) { if (DialogManager.speakerDict.ContainsKey(playerIDOverride)) { val10.OverwriteSpeaker(playerIDOverride, true); } else { if (GameController.activePlayers == null || !((Object)(object)GameController.activePlayers[0] != (Object)null)) { return false; } val10.OverwriteSpeaker(val10.leftSpeakerID = DialogManager.speakerDict[((Entity)GameController.activePlayers[0]).skillCategory].speakerID, true); } } if (val10.rightSpeakerID != null && val10.rightSpeakerID.Contains("Player")) { if (DialogManager.speakerDict.ContainsKey(playerIDOverride)) { val10.rightSpeakerID = playerIDOverride; } else { if (GameController.activePlayers == null || GameController.activePlayers.Length == 0 || !((Object)(object)GameController.activePlayers[0] != (Object)null)) { return false; } val10.rightSpeakerID = DialogManager.speakerDict[((Entity)GameController.activePlayers[0]).skillCategory].speakerID; } } val10.message = self.ParseMessage(val10); self.Activate(val10, isSign, skipGhostWriter); DialogManager.dialogInProgress = true; DialogManager.currentDialogID = dialogID; return true; }; <>c.<>9__11_6 = val7; obj7 = (object)val7; } DialogManager.DisplayDialog += (hook_DisplayDialog)obj7; } public static void ResetTileSet() { if (Object.op_Implicit((Object)(object)arenaTextureCarbonCopy) && Object.op_Implicit((Object)(object)arenaTextureReference)) { arenaTextureCarbonCopy.SetPixels32(arenaTextureReference.GetPixels32()); arenaTextureCarbonCopy.Apply(); } } public static void AddCustomArenaPortals() { //IL_006b: 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_0074: 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_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0090: 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) //IL_009a: 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_00a9: 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_00fe: 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_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_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_0154: Unknown result type (might be due to invalid IL or missing references) GameObject gameObject = ((Component)Object.FindObjectOfType<ExitPortal>()).gameObject; GameObject gameObject2 = ((Component)Object.FindObjectOfType<MuseumPlacard>()).gameObject; GameObject val = GameObject.Find("DefaultStatue"); Vector3 val2 = default(Vector3); foreach (ArenaDef tileset in tilesets) { Debug.Log((object)("Adding portal for " + tileset.name)); ((Vector3)(ref val2))..ctor(0f, 15f, 0f); GameObject val3 = Object.Instantiate<GameObject>(gameObject, val2 + tileset.position, gameObject.transform.rotation); Object.Instantiate<GameObject>(val, val2 + tileset.position + Vector3.up * 1.5f, val.transform.rotation); ExitPortal component = val3.GetComponent<ExitPortal>(); component.nextLevelLoader = ((Component)((Component)component).transform.Find("NextLevelTrigger")).GetComponent<NextLevelLoader>(); ((Object)component.nextLevelLoader).name = "CUSTOMLOADER"; ((PvpStageLoader)component.nextLevelLoader).pvpRoomName = "DefaultRoom"; portalDict[((Component)component.nextLevelLoader).gameObject] = tileset; GameObject val4 = Object.Instantiate<GameObject>(gameObject2, val2 + tileset.position + new Vector3(0f, -0.25f, 0f), gameObject2.transform.rotation); MuseumPlacard component2 = val4.GetComponent<MuseumPlacard>(); component2.dialogID = "WOL-TED-" + tileset.name; ((Object)component2).name = "WOL-TED-" + tileset.name; component2.useObjectNameAsDialogID = false; } } public static void EditStage() { //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Unknown result type (might be due to invalid IL or missing references) //IL_01e5: Unknown result type (might be due to invalid IL or missing references) //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_0202: Unknown result type (might be due to invalid IL or missing references) //IL_0207: 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_0232: 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_025a: Unknown result type (might be due to invalid IL or missing references) //IL_027a: 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) chosenArena = tilesets[arenaTileID].layout; ElementalSpriteSelector[] array = Object.FindObjectsOfType<ElementalSpriteSelector>(); foreach (ElementalSpriteSelector val in array) { val.SetElement(tilesets[arenaTileID].element); } GameObject val2 = null; List<string> list = new List<string> { "enemy", "statue" }; GameObject[] array2 = Object.FindObjectsOfType<GameObject>(); foreach (GameObject val3 in array2) { foreach (string item in list) { if ((Object)(object)val2 == (Object)null && ((Object)val3).name.ToLower() == "wizardstatue" && Object.op_Implicit((Object)(object)val3.GetComponentInChildren<Collider2D>())) { Debug.Log((object)"Assigned a Statue for duplication"); val2 = val3; Collider2D[] componentsInChildren = val2.GetComponentsInChildren<Collider2D>(); foreach (Collider2D val4 in componentsInChildren) { ((Behaviour)val4).enabled = true; } } if (((Object)val3).name.ToLower().Contains(item) && ((Object)(object)val2 == (Object)null || ((Object)(object)val3 != (Object)(object)val2 && (Object)(object)val3.transform.parent != (Object)(object)val2))) { Object.Destroy((Object)(object)val3); } } } Vector3 val5 = default(Vector3); for (int l = 0; l < ((Texture)chosenArena).width; l++) { for (int m = 0; m < ((Texture)chosenArena).height; m++) { ((Vector3)(ref val5))..ctor((float)(l * 2 - ((Texture)chosenArena).width), (float)(m * 2 - ((Texture)chosenArena).height), 0f); Color pixel = chosenArena.GetPixel(l, m); if (((Color)(ref pixel)).maxColorComponent < 0.01f) { GameObject val6 = Object.Instantiate<GameObject>(val2, val5 + offset, Quaternion.identity); Statue component = val6.GetComponent<Statue>(); component.element = tilesets[arenaTileID].element; if (component.randomizeSprite) { component.statueRenderer.sprite = component.statueVars.GetElementalSprite(component.element); component.baseRenderer.sprite = component.baseVars.GetElementalSprite(component.element); component.floorRenderer.sprite = component.floorVars.GetElementalSprite(component.element); } SortSpriteLayer[] componentsInChildren2 = ((Component)component).GetComponentsInChildren<SortSpriteLayer>(); foreach (SortSpriteLayer val7 in componentsInChildren2) { ((Behaviour)val7).enabled = true; } } } } Object.Destroy((Object)(object)val2); } } public class ArenaDef { public string name = "Arena"; public string description = "No Special Effects..."; public Vector3 position = Vector3.zero; public Texture2D tileset; public Texture2D layout; public ElementType element = (ElementType)5; public int id = -1; } public static class ContestantChanges { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_Start <>9__3_1; public static hook_OnEnter <>9__3_2; public static hook_Update <>9__3_3; public static hook_Update <>9__3_4; public static hook_OnEnter <>9__3_5; public static hook_LoadEnemySkills <>9__3_0; internal void <Init>b__3_0(orig_LoadEnemySkills orig, string s) { //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_0062: Expected O, but got Unknown //IL_007c: 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) //IL_0087: Expected O, but got Unknown //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Expected O, but got Unknown //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_00d1: Expected O, but got Unknown //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown orig.Invoke(s); CreateFSM("ContestantSummonTornado", s); CreateFSM("ConFireball", s); CreateFSM("ConThrow", s); if (hasLoadedChanges) { return; } hasLoadedChanges = true; object obj = <>9__3_1; if (obj == null) { hook_Start val = delegate(orig_Start orig2, Contestant self) { orig2.Invoke(self); ((Entity)self).skillCategory = "Enemy"; skill++; skill %= 3; int[] array = new int[3] { 24, 49, 65 }; Material material = ((Renderer)((Entity)self).spriteRenderer).material; material.SetFloat("_PaletteIndex", (float)array[skill]); switch (skill) { case 0: break; case 1: ((Entity)self).fsm.ReplaceState("Tornado", (IState)(object)new ContestantAirShieldState("Tornado", ((Entity)self).fsm, self)); ((Entity)self).fsm.ReplaceState("Fireball", (IState)(object)new ContestantIonSpreadState("Fireball", ((Entity)self).fsm, self)); break; case 2: ((Entity)self).fsm.ReplaceState("Fireball", (IState)(object)new ContestantAquaBeamState("Fireball", ((Entity)self).fsm, (Enemy)(object)self)); break; } }; <>9__3_1 = val; obj = (object)val; } Contestant.Start += (hook_Start)obj; object obj2 = <>9__3_2; if (obj2 == null) { hook_OnEnter val2 = delegate(orig_OnEnter orig2, TornadoState self) { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) ((Entity)((State<Contestant>)(object)self).parent).movement.EndMovement(); AnimationExtension.PlayDirectional(((Entity)((State<Contestant>)(object)self).parent).anim, "Cast" + ((object)(FacingDirection)(ref ((Entity)((State<Contestant>)(object)self).parent).facingDirection)).ToString(), -1, 0f); self.tornadoScript = Object.Instantiate<GameObject>(self.tornadoPrefab, ((Entity)((State<Contestant>)(object)self).parent).hurtBoxTransform.position, Quaternion.identity).GetComponent<Tornado>(); self.tornadoScript.attackBox.SetAttackInfo("EnemyScaled", "ContestantSummonTornado", 1, false); }; <>9__3_2 = val2; obj2 = (object)val2; } TornadoState.OnEnter += (hook_OnEnter)obj2; object obj3 = <>9__3_3; if (obj3 == null) { hook_Update val3 = delegate(orig_Update orig2, FireballState self) { //IL_003e: 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_0049: 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) if (AnimationExtension.AnimPlayed(((Entity)((State<Contestant>)(object)self).parent).anim, 0.2f) && !self.fireballCreated) { self.fireballScript = (Projectile)(object)Object.Instantiate<GameObject>(self.fireballPrefab, ((Entity)((State<Contestant>)(object)self).parent).hurtBoxTransform.position, Globals.GetRotationQuaternion(self.targetVector)).GetComponent<Fireball>(); ((Object)((Component)self.fireballScript).gameObject).name = ((Entity)((State<Contestant>)(object)self).parent).skillCategory + "Fireball"; self.fireballScript.parentObject = ((Component)((State<Contestant>)(object)self).parent).gameObject; self.fireballScript.moveVector = self.targetVector; self.fireballScript.attackBox.SetAttackInfo("EnemyScaled", "ConFireball", 1, false); self.fireballCreated = true; } else if (AnimationExtension.AnimPlayed(((Entity)((State<Contestant>)(object)self).parent).anim, 0.9f)) { ((Enemy)((State<Contestant>)(object)self).parent).HandleExitTransitions(false); } }; <>9__3_3 = val3; obj3 = (object)val3; } FireballState.Update += (hook_Update)obj3; object obj4 = <>9__3_4; if (obj4 == null) { hook_Update val4 = delegate(orig_Update orig2, SwordThrowState self) { //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_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) if (AnimationExtension.AnimPlayed(((Entity)((State<Contestant>)(object)self).parent).anim, 0.2f) && !self.swordThrown) { self.swordThrown = true; self.swordThrowScript = Object.Instantiate<GameObject>(self.swordThrowPrefab, ((Entity)((State<Contestant>)(object)self).parent).hurtBoxTransform.position, Quaternion.identity).GetComponent<SwordThrowProjectile>(); ((Projectile)self.swordThrowScript).parentObject = ((Component)((State<Contestant>)(object)self).parent).gameObject; ((Projectile)self.swordThrowScript).moveVector = self.targetVector; ((Projectile)self.swordThrowScript).destroyOnDisable = true; ((Projectile)self.swordThrowScript).attackBox.SetAttackInfo("EnemyScaled", "ConThrow", 1, false); SoundManager.PlayAudioWithDistance("WindBoomerang", (Vector2?)Vector2.op_Implicit(((Entity)((State<Contestant>)(object)self).parent).hurtBoxTransform.position), (Transform)null, 24f, -1f, 1f, false); } else if (AnimationExtension.AnimPlayed(((Entity)((State<Contestant>)(object)self).parent).anim, 0.9f)) { ((Enemy)((State<Contestant>)(object)self).parent).HandleExitTransitions(false); } }; <>9__3_4 = val4; obj4 = (object)val4; } SwordThrowState.Update += (hook_Update)obj4; object obj5 = <>9__3_5; if (obj5 == null) { hook_OnEnter val5 = delegate(orig_OnEnter orig2, AttackState self) { //IL_001d: 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_008f: 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_00e1: Unknown result type (might be due to invalid IL or missing references) ((Enemy)((State<Contestant>)(object)self).parent).closestTargetInfo = Entity.GetClosestTarget(((Enemy)((State<Contestant>)(object)self).parent).targetGroup, ((Component)((State<Contestant>)(object)self).parent).transform.position, ((Enemy)((State<Contestant>)(object)self).parent).escapeRadius, ((Enemy)((State<Contestant>)(object)self).parent).onlyTargetPlayers, (List<GameObject>)null, (GameObject)null, false, 0); if (((Enemy)((State<Contestant>)(object)self).parent).closestTargetInfo == null) { ((State<Contestant>)(object)self).fsm.ChangeState("GoBack", false); } else { self.slash1 = false; ((Entity)((State<Contestant>)(object)self).parent).FaceTarget(((Enemy)((State<Contestant>)(object)self).parent).closestTargetInfo.position, 4, false); AnimationExtension.PlayDirectional(((Entity)((State<Contestant>)(object)self).parent).anim, "Slash1" + ((object)(FacingDirection)(ref ((Entity)((State<Contestant>)(object)self).parent).facingDirection)).ToString(), -1, 0f); SoundManager.PlayAudioWithDistance("LightSlash", (Vector2?)Vector2.op_Implicit(((Component)((State<Contestant>)(object)self).parent).transform.position), (Transform)null, 24f, -1f, 1f, false); ((Entity)((State<Contestant>)(object)self).parent).attack.SetAttackInfo("EnemyScaled", "NeutralKnightAttack", 2, false); ((Entity)((State<Contestant>)(object)self).parent).movement.EndMovement(); } }; <>9__3_5 = val5; obj5 = (object)val5; } AttackState.OnEnter += (hook_OnEnter)obj5; } internal void <Init>b__3_1(orig_Start orig2, Contestant self) { orig2.Invoke(self); ((Entity)self).skillCategory = "Enemy"; skill++; skill %= 3; int[] array = new int[3] { 24, 49, 65 }; Material material = ((Renderer)((Entity)self).spriteRenderer).material; material.SetFloat("_PaletteIndex", (float)array[skill]); switch (skill) { case 0: break; case 1: ((Entity)self).fsm.ReplaceState("Tornado", (IState)(object)new ContestantAirShieldState("Tornado", ((Entity)self).fsm, self)); ((Entity)self).fsm.ReplaceState("Fireball", (IState)(object)new ContestantIonSpreadState("Fireball", ((Entity)self).fsm, self)); break; case 2: ((Entity)self).fsm.ReplaceState("Fireball", (IState)(object)new ContestantAquaBeamState("Fireball", ((Entity)self).fsm, (Enemy)(object)self)); break; } } internal void <Init>b__3_2(orig_OnEnter orig2, TornadoState self) { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) ((Entity)((State<Contestant>)(object)self).parent).movement.EndMovement(); AnimationExtension.PlayDirectional(((Entity)((State<Contestant>)(object)self).parent).anim, "Cast" + ((object)(FacingDirection)(ref ((Entity)((State<Contestant>)(object)self).parent).facingDirection)).ToString(), -1, 0f); self.tornadoScript = Object.Instantiate<GameObject>(self.tornadoPrefab, ((Entity)((State<Contestant>)(object)self).parent).hurtBoxTransform.position, Quaternion.identity).GetComponent<Tornado>(); self.tornadoScript.attackBox.SetAttackInfo("EnemyScaled", "ContestantSummonTornado", 1, false); } internal void <Init>b__3_3(orig_Update orig2, FireballState self) { //IL_003e: 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_0049: 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) if (AnimationExtension.AnimPlayed(((Entity)((State<Contestant>)(object)self).parent).anim, 0.2f) && !self.fireballCreated) { self.fireballScript = (Projectile)(object)Object.Instantiate<GameObject>(self.fireballPrefab, ((Entity)((State<Contestant>)(object)self).parent).hurtBoxTransform.position, Globals.GetRotationQuaternion(self.targetVector)).GetComponent<Fireball>(); ((Object)((Component)self.fireballScript).gameObject).name = ((Entity)((State<Contestant>)(object)self).parent).skillCategory + "Fireball"; self.fireballScript.parentObject = ((Component)((State<Contestant>)(object)self).parent).gameObject; self.fireballScript.moveVector = self.targetVector; self.fireballScript.attackBox.SetAttackInfo("EnemyScaled", "ConFireball", 1, false); self.fireballCreated = true; } else if (AnimationExtension.AnimPlayed(((Entity)((State<Contestant>)(object)self).parent).anim, 0.9f)) { ((Enemy)((State<Contestant>)(object)self).parent).HandleExitTransitions(false); } } internal void <Init>b__3_4(orig_Update orig2, SwordThrowState self) { //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_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) if (AnimationExtension.AnimPlayed(((Entity)((State<Contestant>)(object)self).parent).anim, 0.2f) && !self.swordThrown) { self.swordThrown = true; self.swordThrowScript = Object.Instantiate<GameObject>(self.swordThrowPrefab, ((Entity)((State<Contestant>)(object)self).parent).hurtBoxTransform.position, Quaternion.identity).GetComponent<SwordThrowProjectile>(); ((Projectile)self.swordThrowScript).parentObject = ((Component)((State<Contestant>)(object)self).parent).gameObject; ((Projectile)self.swordThrowScript).moveVector = self.targetVector; ((Projectile)self.swordThrowScript).destroyOnDisable = true; ((Projectile)self.swordThrowScript).attackBox.SetAttackInfo("EnemyScaled", "ConThrow", 1, false); SoundManager.PlayAudioWithDistance("WindBoomerang", (Vector2?)Vector2.op_Implicit(((Entity)((State<Contestant>)(object)self).parent).hurtBoxTransform.position), (Transform)null, 24f, -1f, 1f, false); } else if (AnimationExtension.AnimPlayed(((Entity)((State<Contestant>)(object)self).parent).anim, 0.9f)) { ((Enemy)((State<Contestant>)(object)self).parent).HandleExitTransitions(false); } } internal void <Init>b__3_5(orig_OnEnter orig2, AttackState self) { //IL_001d: 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_008f: 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_00e1: Unknown result type (might be due to invalid IL or missing references) ((Enemy)((State<Contestant>)(object)self).parent).closestTargetInfo = Entity.GetClosestTarget(((Enemy)((State<Contestant>)(object)self).parent).targetGroup, ((Component)((State<Contestant>)(object)self).parent).transform.position, ((Enemy)((State<Contestant>)(object)self).parent).escapeRadius, ((Enemy)((State<Contestant>)(object)self).parent).onlyTargetPlayers, (List<GameObject>)null, (GameObject)null, false, 0); if (((Enemy)((State<Contestant>)(object)self).parent).closestTargetInfo == null) { ((State<Contestant>)(object)self).fsm.ChangeState("GoBack", false); return; } self.slash1 = false; ((Entity)((State<Contestant>)(object)self).parent).FaceTarget(((Enemy)((State<Contestant>)(object)self).parent).closestTargetInfo.position, 4, false); AnimationExtension.PlayDirectional(((Entity)((State<Contestant>)(object)self).parent).anim, "Slash1" + ((object)(FacingDirection)(ref ((Entity)((State<Contestant>)(object)self).parent).facingDirection)).ToString(), -1, 0f); SoundManager.PlayAudioWithDistance("LightSlash", (Vector2?)Vector2.op_Implicit(((Component)((State<Contestant>)(object)self).parent).transform.position), (Transform)null, 24f, -1f, 1f, false); ((Entity)((State<Contestant>)(object)self).parent).attack.SetAttackInfo("EnemyScaled", "NeutralKnightAttack", 2, false); ((Entity)((State<Contestant>)(object)self).parent).movement.EndMovement(); } } public static StatData tornadoData; public static bool hasLoadedChanges; public static int skill; public static void Init() { //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) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__3_0; if (obj == null) { hook_LoadEnemySkills val = delegate(orig_LoadEnemySkills orig, string s) { //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_0062: Expected O, but got Unknown //IL_007c: 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) //IL_0087: Expected O, but got Unknown //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Expected O, but got Unknown //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_00d1: Expected O, but got Unknown //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown orig.Invoke(s); CreateFSM("ContestantSummonTornado", s); CreateFSM("ConFireball", s); CreateFSM("ConThrow", s); if (!hasLoadedChanges) { hasLoadedChanges = true; object obj2 = <>c.<>9__3_1; if (obj2 == null) { hook_Start val2 = delegate(orig_Start orig2, Contestant self) { orig2.Invoke(self); ((Entity)self).skillCategory = "Enemy"; skill++; skill %= 3; int[] array = new int[3] { 24, 49, 65 }; Material material = ((Renderer)((Entity)self).spriteRenderer).material; material.SetFloat("_PaletteIndex", (float)array[skill]); switch (skill) { case 0: break; case 1: ((Entity)self).fsm.ReplaceState("Tornado", (IState)(object)new ContestantAirShieldState("Tornado", ((Entity)self).fsm, self)); ((Entity)self).fsm.ReplaceState("Fireball", (IState)(object)new ContestantIonSpreadState("Fireball", ((Entity)self).fsm, self)); break; case 2: ((Entity)self).fsm.ReplaceState("Fireball", (IState)(object)new ContestantAquaBeamState("Fireball", ((Entity)self).fsm, (Enemy)(object)self)); break; } }; <>c.<>9__3_1 = val2; obj2 = (object)val2; } Contestant.Start += (hook_Start)obj2; object obj3 = <>c.<>9__3_2; if (obj3 == null) { hook_OnEnter val3 = delegate(orig_OnEnter orig2, TornadoState self) { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) ((Entity)((State<Contestant>)(object)self).parent).movement.EndMovement(); AnimationExtension.PlayDirectional(((Entity)((State<Contestant>)(object)self).parent).anim, "Cast" + ((object)(FacingDirection)(ref ((Entity)((State<Contestant>)(object)self).parent).facingDirection)).ToString(), -1, 0f); self.tornadoScript = Object.Instantiate<GameObject>(self.tornadoPrefab, ((Entity)((State<Contestant>)(object)self).parent).hurtBoxTransform.position, Quaternion.identity).GetComponent<Tornado>(); self.tornadoScript.attackBox.SetAttackInfo("EnemyScaled", "ContestantSummonTornado", 1, false); }; <>c.<>9__3_2 = val3; obj3 = (object)val3; } TornadoState.OnEnter += (hook_OnEnter)obj3; object obj4 = <>c.<>9__3_3; if (obj4 == null) { hook_Update val4 = delegate(orig_Update orig2, FireballState self) { //IL_003e: 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_0049: 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) if (AnimationExtension.AnimPlayed(((Entity)((State<Contestant>)(object)self).parent).anim, 0.2f) && !self.fireballCreated) { self.fireballScript = (Projectile)(object)Object.Instantiate<GameObject>(self.fireballPrefab, ((Entity)((State<Contestant>)(object)self).parent).hurtBoxTransform.position, Globals.GetRotationQuaternion(self.targetVector)).GetComponent<Fireball>(); ((Object)((Component)self.fireballScript).gameObject).name = ((Entity)((State<Contestant>)(object)self).parent).skillCategory + "Fireball"; self.fireballScript.parentObject = ((Component)((State<Contestant>)(object)self).parent).gameObject; self.fireballScript.moveVector = self.targetVector; self.fireballScript.attackBox.SetAttackInfo("EnemyScaled", "ConFireball", 1, false); self.fireballCreated = true; } else if (AnimationExtension.AnimPlayed(((Entity)((State<Contestant>)(object)self).parent).anim, 0.9f)) { ((Enemy)((State<Contestant>)(object)self).parent).HandleExitTransitions(false); } }; <>c.<>9__3_3 = val4; obj4 = (object)val4; } FireballState.Update += (hook_Update)obj4; object obj5 = <>c.<>9__3_4; if (obj5 == null) { hook_Update val5 = delegate(orig_Update orig2, SwordThrowState self) { //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_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) if (AnimationExtension.AnimPlayed(((Entity)((State<Contestant>)(object)self).parent).anim, 0.2f) && !self.swordThrown) { self.swordThrown = true; self.swordThrowScript = Object.Instantiate<GameObject>(self.swordThrowPrefab, ((Entity)((State<Contestant>)(object)self).parent).hurtBoxTransform.position, Quaternion.identity).GetComponent<SwordThrowProjectile>(); ((Projectile)self.swordThrowScript).parentObject = ((Component)((State<Contestant>)(object)self).parent).gameObject; ((Projectile)self.swordThrowScript).moveVector = self.targetVector; ((Projectile)self.swordThrowScript).destroyOnDisable = true; ((Projectile)self.swordThrowScript).attackBox.SetAttackInfo("EnemyScaled", "ConThrow", 1, false); SoundManager.PlayAudioWithDistance("WindBoomerang", (Vector2?)Vector2.op_Implicit(((Entity)((State<Contestant>)(object)self).parent).hurtBoxTransform.position), (Transform)null, 24f, -1f, 1f, false); } else if (AnimationExtension.AnimPlayed(((Entity)((State<Contestant>)(object)self).parent).anim, 0.9f)) { ((Enemy)((State<Contestant>)(object)self).parent).HandleExitTransitions(false); } }; <>c.<>9__3_4 = val5; obj5 = (object)val5; } SwordThrowState.Update += (hook_Update)obj5; object obj6 = <>c.<>9__3_5; if (obj6 == null) { hook_OnEnter val6 = delegate(orig_OnEnter orig2, AttackState self) { //IL_001d: 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_008f: 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_00e1: Unknown result type (might be due to invalid IL or missing references) ((Enemy)((State<Contestant>)(object)self).parent).closestTargetInfo = Entity.GetClosestTarget(((Enemy)((State<Contestant>)(object)self).parent).targetGroup, ((Component)((State<Contestant>)(object)self).parent).transform.position, ((Enemy)((State<Contestant>)(object)self).parent).escapeRadius, ((Enemy)((State<Contestant>)(object)self).parent).onlyTargetPlayers, (List<GameObject>)null, (GameObject)null, false, 0); if (((Enemy)((State<Contestant>)(object)self).parent).closestTargetInfo == null) { ((State<Contestant>)(object)self).fsm.ChangeState("GoBack", false); } else { self.slash1 = false; ((Entity)((State<Contestant>)(object)self).parent).FaceTarget(((Enemy)((State<Contestant>)(object)self).parent).closestTargetInfo.position, 4, false); AnimationExtension.PlayDirectional(((Entity)((State<Contestant>)(object)self).parent).anim, "Slash1" + ((object)(FacingDirection)(ref ((Entity)((State<Contestant>)(object)self).parent).facingDirection)).ToString(), -1, 0f); SoundManager.PlayAudioWithDistance("LightSlash", (Vector2?)Vector2.op_Implicit(((Component)((State<Contestant>)(object)self).parent).transform.position), (Transform)null, 24f, -1f, 1f, false); ((Entity)((State<Contestant>)(object)self).parent).attack.SetAttackInfo("EnemyScaled", "NeutralKnightAttack", 2, false); ((Entity)((State<Contestant>)(object)self).parent).movement.EndMovement(); } }; <>c.<>9__3_5 = val6; obj6 = (object)val6; } AttackState.OnEnter += (hook_OnEnter)obj6; } }; <>c.<>9__3_0 = val; obj = (object)val; } StatManager.LoadEnemySkills += (hook_LoadEnemySkills)obj; } public static void CreateFSM(string id, string s) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown SkillStats val = Utils.LoadFromEmbeddedJson<SkillStats>(id + ".json"); val.Initialize(); tornadoData = new StatData(val, "Enemy" + s); FSMUtils.ApplyStateModifiers(s, tornadoData); StatManager.data["Skills"]["Enemy" + s][id] = tornadoData; } } public static class FSMUtils { public static void ReplaceState(this FSM fsm, string stateName, IState newState) { fsm.states.Remove(stateName); fsm.AddState(newState); } public static void ApplyStateModifiers(string categoryModifier, StatData statData) { List<string> value = statData.GetValue<List<string>>("targetNames", -1); if (value.Contains(Globals.allyHBStr) || value.Contains(Globals.enemyHBStr)) { value.Add(Globals.ffaHBStr); } if (value.Contains(Globals.allyFCStr) || value.Contains(Globals.enemyFCStr)) { value.Add(Globals.ffaFCStr); } bool flag = true; switch (categoryModifier) { case "Only": if (value.Contains(Globals.allyHBStr)) { value.Remove(Globals.allyHBStr); value.Add(Globals.enemyHBStr); } if (value.Contains(Globals.allyFCStr)) { value.Remove(Globals.allyFCStr); value.Add(Globals.enemyFCStr); } break; case "FFA": if (value.Contains(Globals.allyHBStr)) { value.Add(Globals.enemyHBStr); } if (value.Contains(Globals.allyFCStr)) { value.Add(Globals.enemyFCStr); } break; case "AsAlly": value.Remove(Globals.ffaHBStr); value.Remove(Globals.ffaFCStr); break; } statData.currentLevel = 1; } } public class ContestantAirShieldState : SkillState { private Contestant c; private ChaosQuickStopwatch durationStopwatch = new ChaosQuickStopwatch(4f); private ChaosQuickStopwatch audioStopwatch = new ChaosQuickStopwatch(0.25f); private NumVarStatMod evadeMod; private bool evadeActive; private ParticleEffect currentEffect; public ContestantAirShieldState(string newName, FSM newFSM, Contestant newEnt) : base(newName, newFSM, (Enemy)(object)newEnt, 1, 1, 1f, 1f, 5f, false) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Expected O, but got Unknown ((State<Enemy>)this).parent = (Enemy)(object)newEnt; base.requireLineOfSight = false; evadeMod = new NumVarStatMod(base.skillID, 1f, 10, (VarStatModType)0, false); c = newEnt; } public override bool IsReady() { return ((SkillState)this).IsReady() && !evadeActive; } public override void OnEnter() { ((SkillState)this).OnEnter(); ((Entity)((State<Enemy>)this).parent).movement.EndMovement(); ((Entity)((State<Enemy>)this).parent).anim.Play("ChargeAlt", -1, 0f); evadeActive = false; } public override void WindupUpdate() { ((SkillState)this).WindupUpdate(); ((Entity)((State<Enemy>)this).parent).anim.Play("ChargeAlt", -1, 0f); } public override void OnExit() { ((SkillState)this).OnExit(); if (!((SkillState)this).WindupCheck) { BreakShield(); } c.tornadoReady = false; c.tornadoStopwatchID = ChaosStopwatch.Begin(c.tornadoCooldown, false, 0f, 0, 0); } public override void ExecuteSkill() { //IL_0047: 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_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) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) ((SkillState)this).ExecuteSkill(); ((Entity)((State<Enemy>)this).parent).anim.Play("ChargeAlt", -1, 0.5f); ((SkillState)this).DeactivatePowerUpEffect(false); PoolManager.GetPoolItem<ParticleEffect>("WindBurstEffect").Emit((int?)5, (Vector3?)((Entity)((State<Enemy>)this).parent).hurtBoxTransform.position, ParticleEffectOverrides.StartSpeed1p5, (Vector3?)null, 0f, (float?)null, (Transform)null); DustEmitter poolItem = PoolManager.GetPoolItem<DustEmitter>(); int num = 100; float num2 = 0.5f; Vector3? val = ((Component)((State<Enemy>)this).parent).transform.position; poolItem.EmitCircle(num, num2, -1f, -1f, val, (Vector3?)null); CameraController.ShakeCamera(0.3f, false); SoundManager.PlayAudioWithDistance("WindArrowStart", (Vector2?)Vector2.op_Implicit(((Component)((State<Enemy>)this).parent).transform.position), (Transform)null, 24f, -1f, 0.6f, false); string text = "TornadoEnd"; Vector2? val2 = Vector2.op_Implicit(((Component)((State<Enemy>)this).parent).transform.position); num2 = Random.Range(0.75f, 0.85f); SoundManager.PlayAudioWithDistance(text, val2, (Transform)null, 24f, -1f, num2, false); ((MonoBehaviour)((State<Enemy>)this).parent).StartCoroutine(EvadeOn()); } private void OnEvade() { //IL_001c: 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_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Expected O, but got Unknown //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Expected O, but got Unknown PoolManager.GetPoolItem<ParticleEffect>("WindBurstEffect").Emit((int?)6, (Vector3?)((Entity)((State<Enemy>)this).parent).hurtBoxTransform.position, (ParticleSystemOverride)nu