Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of TrespassReworked v0.6.0
BepInEx/Plugins/Trespass rework.dll
Decompiled 3 months agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using EntityStates; using EntityStates.VoidSurvivor; using Microsoft.CodeAnalysis; using On.EntityStates.VoidSurvivor; using On.RoR2; using RiskOfOptions; using RiskOfOptions.Options; using RoR2; using UnityEngine; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Trespass rework")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+6a86be20856cdcb76b174f5cc4daaab900fc25cd")] [assembly: AssemblyProduct("Trespass rework")] [assembly: AssemblyTitle("Trespass rework")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } } namespace VoidBlinkHoldToFloat { [BepInPlugin("com.yourname.voidblinkhold", "TresspassTweaks", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Main : BaseUnityPlugin { private const float DOWN_DURATION = 0.5f; private const float DOWN_SPEED_COEFFICIENT = 2f; private static readonly AnimationCurve DOWN_UP_SPEED; private static readonly AnimationCurve DOWN_FORWARD_SPEED; private const float UP_DURATION = 1f; private const float UP_SPEED_COEFFICIENT = 2.2f; private static readonly AnimationCurve UP_UP_SPEED; private static readonly AnimationCurve UP_FORWARD_SPEED; private const float INITIAL_DASH_TIME = 0.25f; private const float TRANSITION_DURATION = 0.3f; public static ConfigEntry<bool> DisableCancellation; public static ConfigEntry<KeyboardShortcut> HoldKey; private static Dictionary<NetworkInstanceId, BlinkStateData> stateData; static Main() { //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_0047: 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_005b: Expected O, but got Unknown //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Expected O, but got Unknown //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Expected O, but got Unknown //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_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_0165: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Expected O, but got Unknown stateData = new Dictionary<NetworkInstanceId, BlinkStateData>(); DOWN_UP_SPEED = new AnimationCurve((Keyframe[])(object)new Keyframe[2] { new Keyframe(0f, 1f, -2.3116775f, -2.3116775f), new Keyframe(1f, 0f, -0.2283835f, -0.2283835f) }); DOWN_UP_SPEED.preWrapMode = (WrapMode)8; DOWN_FORWARD_SPEED = new AnimationCurve((Keyframe[])(object)new Keyframe[2] { new Keyframe(0f, 0f, 3.39932f, 3.39932f), new Keyframe(1f, 2f, 0f, 0f) }); DOWN_FORWARD_SPEED.preWrapMode = (WrapMode)8; UP_UP_SPEED = new AnimationCurve((Keyframe[])(object)new Keyframe[2] { new Keyframe(0f, 0f, 1f, 1f), new Keyframe(1f, 1f, 1f, 1f) }); UP_UP_SPEED.preWrapMode = (WrapMode)8; UP_FORWARD_SPEED = new AnimationCurve((Keyframe[])(object)new Keyframe[2] { new Keyframe(0f, 1f, -1f, -1f), new Keyframe(1f, 0f, -1f, -1f) }); UP_FORWARD_SPEED.preWrapMode = (WrapMode)8; } public void Awake() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Expected O, but got Unknown //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Expected O, but got Unknown //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Expected O, but got Unknown //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Expected O, but got Unknown HoldKey = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("Keybinds", "Hold To Float Key", new KeyboardShortcut((KeyCode)304, Array.Empty<KeyCode>()), "The key you must hold to activate the 'float' portion of the blink."); DisableCancellation = ((BaseUnityPlugin)this).Config.Bind<bool>("Tweaks", "Disable Cancellation", false, "If enabled, the ability cannot be cancelled by releasing the hold key - it will always complete its full duration"); SetupRiskOfOptions(); CharacterBody.FixedUpdate += new hook_FixedUpdate(CharacterBody_FixedUpdate); VoidBlinkBase.OnEnter += new hook_OnEnter(VoidBlinkBase_OnEnter); VoidBlinkBase.GetVelocity += new hook_GetVelocity(VoidBlinkBase_GetVelocity); VoidBlinkBase.FixedUpdate += new hook_FixedUpdate(VoidBlinkBase_FixedUpdate); } private void SetupRiskOfOptions() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown try { ModSettingsManager.AddOption((BaseOption)new KeyBindOption(HoldKey)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(DisableCancellation)); ModSettingsManager.SetModDescription("Hold the configured key during Void Blink to float upward instead of dashing forward. Tap for dash, hold for float!"); SetModIcon(); } catch (Exception arg) { ((BaseUnityPlugin)this).Logger.LogError((object)$"Error setting up Risk of Options: {arg}"); } } private void SetModIcon() { //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Expected O, but got Unknown //IL_00d7: 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) try { Assembly executingAssembly = Assembly.GetExecutingAssembly(); string text = null; string[] manifestResourceNames = executingAssembly.GetManifestResourceNames(); foreach (string text2 in manifestResourceNames) { if (text2.EndsWith("icon.png", StringComparison.OrdinalIgnoreCase)) { text = text2; break; } } if (text == null) { ((BaseUnityPlugin)this).Logger.LogWarning((object)"Mod icon resource not found. Make sure icon.png is embedded."); return; } using Stream stream = executingAssembly.GetManifestResourceStream(text); if (stream != null) { byte[] array = new byte[stream.Length]; stream.Read(array, 0, array.Length); Texture2D val = new Texture2D(2, 2, (TextureFormat)4, false); if (ImageConversion.LoadImage(val, array)) { Sprite modIcon = Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0.5f, 0.5f)); ModSettingsManager.SetModIcon(modIcon); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Mod icon set successfully."); } } } catch (Exception ex) { ((BaseUnityPlugin)this).Logger.LogWarning((object)("Failed to set mod icon: " + ex.Message)); } } private void CharacterBody_FixedUpdate(orig_FixedUpdate orig, CharacterBody self) { //IL_0047: 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_0088: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); List<NetworkInstanceId> list = new List<NetworkInstanceId>(); foreach (KeyValuePair<NetworkInstanceId, BlinkStateData> stateDatum in stateData) { if (stateDatum.Value.lastUpdatedTime < Time.time - 10f) { list.Add(stateDatum.Key); } } foreach (NetworkInstanceId item in list) { stateData.Remove(item); } } private void VoidBlinkBase_OnEnter(orig_OnEnter orig, VoidBlinkBase self) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); CharacterBody characterBody = ((EntityState)self).characterBody; if (Object.op_Implicit((Object)(object)characterBody)) { _ = ((NetworkBehaviour)characterBody).netId; if (true) { stateData[((NetworkBehaviour)characterBody).netId] = new BlinkStateData { isHoldingMode = false, modeDetermined = false, transitionStartTime = 0f, transitionStartVelocity = Vector3.zero, lastUpdatedTime = Time.time }; self.duration = 0.5f; } } } private Vector3 VoidBlinkBase_GetVelocity(orig_GetVelocity orig, VoidBlinkBase self) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0244: 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_00a7: 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_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_0146: 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_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0240: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_0210: 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) //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_022a: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_0233: Unknown result type (might be due to invalid IL or missing references) //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_023a: Unknown result type (might be due to invalid IL or missing references) CharacterBody characterBody = ((EntityState)self).characterBody; if (Object.op_Implicit((Object)(object)characterBody)) { _ = ((NetworkBehaviour)characterBody).netId; if (stateData.TryGetValue(((NetworkBehaviour)characterBody).netId, out BlinkStateData value)) { value.lastUpdatedTime = Time.time; if (!value.modeDetermined && ((EntityState)self).fixedAge >= 0.25f) { value.isHoldingMode = IsHoldKeyDown(); value.modeDetermined = true; if (value.isHoldingMode) { value.transitionStartTime = ((EntityState)self).fixedAge; value.transitionStartVelocity = ((EntityState)self).characterMotor?.velocity ?? Vector3.zero; self.duration = 1f; } } float num = (value.isHoldingMode ? 1f : 0.5f); AnimationCurve val = (value.isHoldingMode ? UP_UP_SPEED : DOWN_UP_SPEED); AnimationCurve val2 = (value.isHoldingMode ? UP_FORWARD_SPEED : DOWN_FORWARD_SPEED); float num2 = (value.isHoldingMode ? 2.2f : 2f); float num3 = Mathf.Clamp01(((EntityState)self).fixedAge / num); Vector3 val3 = (val2.Evaluate(num3) * self.forwardVector + val.Evaluate(num3) * Vector3.up) * num2 * ((BaseState)self).moveSpeedStat; if (value.isHoldingMode && ((EntityState)self).fixedAge < value.transitionStartTime + 0.3f) { float num4 = Mathf.Clamp01((((EntityState)self).fixedAge - value.transitionStartTime) / 0.3f); float num5 = Mathf.SmoothStep(0f, 1f, num4); float num6 = Mathf.Lerp(1f, 0.8f, num4); float num7 = Vector3.Dot(value.transitionStartVelocity, self.forwardVector); float y = value.transitionStartVelocity.y; Vector3 val4 = self.forwardVector * Mathf.Lerp(num7, ((Vector3)(ref val3)).magnitude * num6, num5); Vector3 val5 = Vector3.up * Mathf.Lerp(y, val3.y, num5 * num5); return val4 + val5; } return val3; } } return orig.Invoke(self); } private void VoidBlinkBase_FixedUpdate(orig_FixedUpdate orig, VoidBlinkBase self) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); CharacterBody characterBody = ((EntityState)self).characterBody; if (!Object.op_Implicit((Object)(object)characterBody)) { return; } _ = ((NetworkBehaviour)characterBody).netId; if (stateData.TryGetValue(((NetworkBehaviour)characterBody).netId, out BlinkStateData value)) { value.lastUpdatedTime = Time.time; bool flag = IsHoldKeyDown(); if (((EntityState)self).isAuthority && value.modeDetermined && value.isHoldingMode && !flag && ((EntityState)self).fixedAge > 0.1f && !DisableCancellation.Value) { self.duration = ((EntityState)self).fixedAge; } } } private static bool IsHoldKeyDown() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: 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) //IL_0029: Invalid comparison between Unknown and I4 //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) ConfigEntry<KeyboardShortcut> holdKey = HoldKey; if (holdKey != null) { _ = holdKey.Value; if (true) { KeyboardShortcut value = HoldKey.Value; if ((int)((KeyboardShortcut)(ref value)).MainKey > 0) { value = HoldKey.Value; return Input.GetKey(((KeyboardShortcut)(ref value)).MainKey); } } } return false; } } public class BlinkStateData { public bool isHoldingMode; public bool modeDetermined; public float transitionStartTime; public Vector3 transitionStartVelocity; public float lastUpdatedTime; } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }