Decompiled source of BlinkStep for Aska v1.0.0

BlinkStep.dll

Decompiled 3 weeks ago
using System.Collections;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using BepInEx.Unity.IL2CPP;
using BepInEx.Unity.IL2CPP.Utils;
using HarmonyLib;
using SSSGame;
using SSSGame.Controllers;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("BlinkStep")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("BlinkStep")]
[assembly: AssemblyTitle("BlinkStep")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace BlinkStep;

[BepInPlugin("blacks7ar.BlinkStep", "BlinkStep", "1.0.0")]
public class Plugin : BasePlugin
{
	[HarmonyPatch]
	private static class Patch
	{
		[HarmonyPostfix]
		[HarmonyPatch(typeof(CharacterMovement), "Update")]
		private static void CharacterMovement_Update(CharacterMovement __instance)
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			if (!((Object)(object)__instance == (Object)null) && Input.GetKeyDown(_blinkKey.Value) && __instance.isGrounded && !__instance.isCarting && !__instance.isRaven && !__instance.isRowing && !__instance._isClimbing && !__instance._isSwimming && !_isBlinking && __instance.HasStamina)
			{
				MonoBehaviourExtensions.StartCoroutine((MonoBehaviour)(object)__instance, Blink());
			}
		}
	}

	private const string modGUID = "blacks7ar.BlinkStep";

	public const string modName = "BlinkStep";

	public const string modAuthor = "blacks7ar";

	public const string modVersion = "1.0.0";

	private static ManualLogSource BLogger;

	private static ConfigEntry<float> _blinkPower;

	private static ConfigEntry<float> _blinkCooldown;

	private static ConfigEntry<float> _blinkStamina;

	private static ConfigEntry<KeyCode> _blinkKey;

	private static bool _isBlinking;

	public override void Load()
	{
		//IL_00af: Unknown result type (might be due to invalid IL or missing references)
		BLogger = ((BasePlugin)this).Log;
		_blinkPower = ((BasePlugin)this).Config.Bind<float>("General", "Blink Power", 30f, "Blink forward force.");
		_blinkCooldown = ((BasePlugin)this).Config.Bind<float>("General", "Blink Cooldown", 1f, "How long until you can blink again.");
		_blinkStamina = ((BasePlugin)this).Config.Bind<float>("General", "Blink Stamina", 20f, "Stamina use when you blink.");
		_blinkKey = ((BasePlugin)this).Config.Bind<KeyCode>("General", "Blink Hotkey", (KeyCode)304, "Hotkey to blink.");
		BLogger.LogInfo((object)"Mod loaded!");
		new Harmony("blacks7ar.BlinkStep").PatchAll();
	}

	private static IEnumerator Blink()
	{
		CharacterMovement val = Object.FindObjectOfType<CharacterMovement>();
		if ((Object)(object)val == (Object)null || _isBlinking)
		{
			yield break;
		}
		_isBlinking = true;
		float axisRaw = Input.GetAxisRaw("Horizontal");
		float axisRaw2 = Input.GetAxisRaw("Vertical");
		if (!(Mathf.Abs(axisRaw) > 0.01f) && !(Mathf.Abs(axisRaw2) > 0.01f))
		{
			_isBlinking = false;
			yield break;
		}
		Rigidbody rb = val._rb;
		bool isGrounded = val.isGrounded;
		Vector3 val2 = new Vector3(axisRaw, 0f, axisRaw2);
		Vector3 normalized = ((Vector3)(ref val2)).normalized;
		Vector3 val3 = ((Component)val).transform.TransformDirection(normalized);
		float num = _blinkPower.Value;
		float num2 = 0.2f;
		if (isGrounded)
		{
			num *= 8f;
			num2 *= 0.25f;
		}
		rb.velocity = Vector3.zero;
		num = Mathf.Max(num, 3f);
		rb.velocity = new Vector3(rb.velocity.x, 0f, rb.velocity.z);
		Vector3 val4 = val3 * num;
		rb.AddForce(val4, (ForceMode)2);
		val.DrainStamina(_blinkStamina.Value, (DrainStaminaUsage)0);
		yield return (object)new WaitForSeconds(num2);
		float brakeTimer = 0f;
		Vector3 startVel = rb.velocity;
		while (brakeTimer < 0.1f)
		{
			brakeTimer += Time.deltaTime;
			float num3 = brakeTimer / 0.1f;
			rb.velocity = Vector3.Lerp(startVel, startVel * 0.1f, num3);
			yield return null;
		}
		_isBlinking = false;
		yield return (object)new WaitForSeconds(_blinkCooldown.Value);
	}
}