using 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)
{
}
}
}