using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using InControl; using UnboundLib.Cards; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: AssemblyCompany("time stop")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("time stop")] [assembly: AssemblyTitle("time stop")] [assembly: AssemblyVersion("1.0.0.0")] namespace MyAwesomeRoundsMod; [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.yourname.rounds.myawesomemod", "My Awesome Mod", "1.0.0")] [BepInProcess("Rounds.exe")] public class MyMod : BaseUnityPlugin { private const string ModId = "com.yourname.rounds.myawesomemod"; private const string ModName = "My Awesome Mod"; private const string Version = "1.0.0"; public static GameObject timeStopArt; private void Awake() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Expected O, but got Unknown string path = Path.Combine(Paths.PluginPath, "time stop card.png"); if (File.Exists(path)) { byte[] array = File.ReadAllBytes(path); Texture2D val = new Texture2D(2, 2); ImageConversion.LoadImage(val, array); Sprite sprite = Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f)); timeStopArt = new GameObject("TimeStopArt"); SpriteRenderer val2 = timeStopArt.AddComponent(); val2.sprite = sprite; Object.DontDestroyOnLoad((Object)(object)timeStopArt); } else { ((BaseUnityPlugin)this).Logger.LogWarning((object)"Could not find 'time stop card.png' in the plugins folder!"); } } private void Start() { CustomCard.BuildCard(); } } public class TimeStopCard : CustomCard { public override void SetupCard(CardInfo cardInfo, Gun gun, ApplyCardStats cardStats, CharacterStatModifiers statModifiers, Block block) { cardInfo.allowMultiple = false; } public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { ((Component)player).gameObject.AddComponent(); } public override void OnRemoveCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) { Object.Destroy((Object)(object)((Component)player).gameObject.GetComponent()); } protected override string GetTitle() { return "times end"; } protected override string GetDescription() { return "Stand still for 7s to stop time for 7s."; } protected override GameObject GetCardArt() { return MyMod.timeStopArt; } protected override Rarity GetRarity() { return (Rarity)2; } protected override CardThemeColorType GetTheme() { return (CardThemeColorType)3; } protected override CardInfoStat[] GetStats() { return (CardInfoStat[])(object)new CardInfoStat[0]; } } public class TimeStopEffect : MonoBehaviour { [CompilerGenerated] private sealed class d__10 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public TimeStopEffect <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__10(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Expected O, but got Unknown //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>4__this.isTimeStopped = true; <>4__this.idleTimer = 0f; <>4__this.UpdateRingVisual(0f); if ((Object)(object)Camera.main != (Object)null) { <>4__this.screenOverlay.transform.position = ((Component)Camera.main).transform.position + new Vector3(0f, 0f, 10f); } <>4__this.screenOverlay.SetActive(true); <>4__this.originalSpeed = <>4__this.player.data.stats.movementSpeed; Time.timeScale = 0.02f; Time.fixedDeltaTime = 0.02f * Time.timeScale; <>4__this.player.data.stats.movementSpeed = <>4__this.originalSpeed * 50f; <>2__current = (object)new WaitForSecondsRealtime(7f); <>1__state = 1; return true; case 1: <>1__state = -1; Time.timeScale = 1f; Time.fixedDeltaTime = 0.02f; <>4__this.player.data.stats.movementSpeed = <>4__this.originalSpeed; <>4__this.screenOverlay.SetActive(false); <>4__this.isTimeStopped = false; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private Player player; private float idleTimer = 0f; private bool isTimeStopped = false; private LineRenderer ringRenderer; private GameObject screenOverlay; private float timeToWait = 7f; private float originalSpeed; private void Start() { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown //IL_0035: 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_0095: Expected O, but got Unknown //IL_00aa: 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_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Expected O, but got Unknown //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Expected O, but got Unknown //IL_00ed: 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) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) player = ((Component)this).GetComponent(); GameObject val = new GameObject("TimeStopRing"); val.transform.SetParent(((Component)player).transform); val.transform.localPosition = Vector3.zero; ringRenderer = val.AddComponent(); ringRenderer.useWorldSpace = false; ringRenderer.startWidth = 0.15f; ringRenderer.endWidth = 0.15f; ((Renderer)ringRenderer).material = new Material(Shader.Find("Sprites/Default")); ((Renderer)ringRenderer).sortingOrder = 100; ringRenderer.startColor = Color.cyan; ringRenderer.endColor = Color.cyan; screenOverlay = new GameObject("TimeStopTint"); SpriteRenderer val2 = screenOverlay.AddComponent(); Texture2D val3 = new Texture2D(1, 1); val3.SetPixel(0, 0, Color.white); val3.Apply(); val2.sprite = Sprite.Create(val3, new Rect(0f, 0f, 1f, 1f), new Vector2(0.5f, 0.5f)); val2.color = new Color(0.1f, 0f, 0.4f, 0.6f); ((Renderer)val2).sortingOrder = 32000; screenOverlay.transform.localScale = new Vector3(100f, 100f, 1f); screenOverlay.SetActive(false); } private void Update() { //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) if (isTimeStopped) { if ((Object)(object)Camera.main != (Object)null && screenOverlay.activeSelf) { screenOverlay.transform.position = ((Component)Camera.main).transform.position + new Vector3(0f, 0f, 10f); } return; } float num = Mathf.Abs(((TwoAxisInputControl)player.data.playerActions.Move).Value.x); float num2 = Mathf.Abs(((TwoAxisInputControl)player.data.playerActions.Move).Value.y); if (num < 0.3f && num2 < 0.3f) { idleTimer += Time.deltaTime; UpdateRingVisual(idleTimer / timeToWait); if (idleTimer >= timeToWait) { ((MonoBehaviour)this).StartCoroutine(StopTimeRoutine()); } } else { idleTimer = 0f; UpdateRingVisual(0f); } } private void UpdateRingVisual(float percentage) { //IL_0081: Unknown result type (might be due to invalid IL or missing references) int num = 60; float num2 = 2f; int num3 = Mathf.Clamp(Mathf.FloorToInt((float)num * percentage), 0, num); if (num3 < 2) { ringRenderer.positionCount = 0; return; } ringRenderer.positionCount = num3; for (int i = 0; i < num3; i++) { float num4 = (float)i / (float)num * MathF.PI * 2f; float num5 = Mathf.Sin(num4) * num2; float num6 = Mathf.Cos(num4) * num2; ringRenderer.SetPosition(i, new Vector3(num5, num6, 0f)); } } [IteratorStateMachine(typeof(d__10))] private IEnumerator StopTimeRoutine() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__10(0) { <>4__this = this }; } private void OnDestroy() { if (isTimeStopped) { Time.timeScale = 1f; Time.fixedDeltaTime = 0.02f; if ((Object)(object)player != (Object)null) { player.data.stats.movementSpeed = originalSpeed; } } if ((Object)(object)screenOverlay != (Object)null) { Object.Destroy((Object)(object)screenOverlay); } } }