// Consolidated decompiled source — Azumatt-CrosshairDotRemover v1.0.0 // Generated by Hexium's decompiled-source browser. Best-effort concatenation of every type in this // version's manifest — decompiler output isn't guaranteed to compile as-is. using System; using System.Runtime.CompilerServices; using HarmonyLib; using UnityEngine; using UnityEngine.UI; using BepInEx; // ---- CrosshairDotRemover.dll :: Microsoft.CodeAnalysis.EmbeddedAttribute ---- namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } // ---- CrosshairDotRemover.dll :: CrosshairDotRemover.IronsightsUpdatePatch ---- namespace CrosshairDotRemover { [HarmonyPatch(typeof(Ironsights), "Update")] public static class IronsightsUpdatePatch { public static void Postfix(Ironsights __instance) { if ((bool)(Object)(object)Global.code && (bool)(Object)(object)__instance.WeaponBehaviorComponent && (double)Time.timeScale > 0.0 && (double)Time.deltaTime > 0.0 && (double)Time.smoothDeltaTime > 0.0) { Image component = FindCrosshairDot().GetComponent(); if (ShouldHideDot(__instance)) { component.enabled = false; } else if (!component.enabled) { component.enabled = true; } } } private static GameObject FindCrosshairDot() { return Global.code.uiCombat.crosshairGroup.transform.parent.Find("dot_1").gameObject; } private static bool ShouldHideDot(Ironsights instance) { if (IsPlayerZoomedOrCanBackstab(instance) && IsPlayerAlive() && IsWeaponReady(instance) && IsNotReloading(instance) && HasCurrentWeapon(instance)) { return IsValidWeaponState(instance); } return false; } private static bool IsPlayerZoomedOrCanBackstab(Ironsights instance) { if (!instance.FPSPlayerComponent.zoomed) { return instance.FPSPlayerComponent.canBackstab; } return true; } private static bool IsPlayerAlive() { return (double)Global.code.Player.Health > 0.0; } private static bool IsWeaponReady(Ironsights instance) { return Time.time > instance.PlayerWeaponsComponent.switchTime + instance.WeaponBehaviorComponent.readyTimeAmt; } private static bool IsNotReloading(Ironsights instance) { return !instance.reloading; } private static bool HasCurrentWeapon(Ironsights instance) { return instance.PlayerWeaponsComponent.currentWeapon != 0; } private static bool IsValidWeaponState(Ironsights instance) { if (!instance.FPSPlayerComponent.canBackstab && (!instance.WeaponBehaviorComponent.zoomIsBlock || !IsWeaponFireRateValid(instance))) { return !instance.WeaponBehaviorComponent.zoomIsBlock; } return true; } private static bool IsWeaponFireRateValid(Ironsights instance) { if (Time.time > instance.WeaponBehaviorComponent.shootStartTime + instance.WeaponBehaviorComponent.fireRate) { if (instance.WeaponBehaviorComponent.shootFromBlock) { return instance.WeaponBehaviorComponent.shootFromBlock; } return true; } return false; } } } // ---- CrosshairDotRemover.dll :: CrosshairDotRemover.CrosshairDotRemoverPlugin ---- namespace CrosshairDotRemover { [BepInPlugin("Azumatt.CrosshairDotRemover", "CrosshairDotRemover", "1.0.0")] public class CrosshairDotRemoverPlugin : BaseUnityPlugin { internal const string ModName = "CrosshairDotRemover"; internal const string ModVersion = "1.0.0"; internal const string Author = "Azumatt"; private const string ModGUID = "Azumatt.CrosshairDotRemover"; private readonly Harmony _harmony = new Harmony("Azumatt.CrosshairDotRemover"); private void Awake() { _harmony.PatchAll(); } } }