Decompiled source of ArtifactOfBlindness v1.2.1

ArtifactOfBlindness.dll

Decompiled 3 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using ArtifactOfBlindness.Artifact;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using Microsoft.CodeAnalysis;
using On.RoR2;
using R2API;
using RiskOfOptions;
using RiskOfOptions.OptionConfigs;
using RiskOfOptions.Options;
using RoR2;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Rendering.PostProcessing;
using UnityEngine.SceneManagement;

[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("ArtifactOfBlindness")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("ArtifactOfBlindness")]
[assembly: AssemblyTitle("ArtifactOfBlindness")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace ArtifactOfBlindness
{
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("HIFU.ArtifactOfBlindness", "ArtifactOfBlindness", "1.2.0")]
	public class Main : BaseUnityPlugin
	{
		public const string PluginGUID = "HIFU.ArtifactOfBlindness";

		public const string PluginAuthor = "HIFU";

		public const string PluginName = "ArtifactOfBlindness";

		public const string PluginVersion = "1.2.0";

		public static AssetBundle artifactofblindness;

		public static ManualLogSource ABLogger;

		public static ConfigEntry<bool> disclaimer1;

		public static ConfigEntry<bool> disclaimer2;

		public static ConfigEntry<float> moveSpeedBuff;

		public static ConfigEntry<float> attackSpeedBuff;

		public static ConfigEntry<float> cooldownReductionBuff;

		public static ConfigEntry<float> percentRegenBuff;

		public static ConfigEntry<float> flatRegenBuff;

		public static ConfigEntry<float> mithrixMultiplier;

		public static ConfigEntry<bool> enableFog;

		public static ConfigEntry<bool> enableDoF;

		public static ConfigEntry<bool> enableVignette;

		public static ConfigEntry<bool> enableAberration;

		public static ConfigEntry<bool> enableGrain;

		public static ConfigEntry<float> fogRadius;

		public static ConfigEntry<bool> fogIndicator;

		public static ConfigEntry<Color> fogIndicatorColor;

		public static ConfigEntry<Color> fogColorStart;

		public static ConfigEntry<Color> fogColorMid;

		public static ConfigEntry<Color> fogColorEnd;

		public static ConfigEntry<float> fogIntensity;

		public static ConfigEntry<bool> everyoneGlow;

		public static ConfigEntry<Color> glowColor;

		public static ConfigEntry<float> glowIntensity;

		public static ConfigEntry<float> glowRadius;

		public static ConfigEntry<float> depthOfFieldStrength;

		public void Awake()
		{
			//IL_024f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0287: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0373: Unknown result type (might be due to invalid IL or missing references)
			//IL_040d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0417: Expected O, but got Unknown
			//IL_041d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0422: Unknown result type (might be due to invalid IL or missing references)
			//IL_042d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0438: Unknown result type (might be due to invalid IL or missing references)
			//IL_0443: Unknown result type (might be due to invalid IL or missing references)
			//IL_044f: Expected O, but got Unknown
			//IL_044a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0454: Expected O, but got Unknown
			//IL_045a: Unknown result type (might be due to invalid IL or missing references)
			//IL_045f: Unknown result type (might be due to invalid IL or missing references)
			//IL_046a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0475: Unknown result type (might be due to invalid IL or missing references)
			//IL_0480: Unknown result type (might be due to invalid IL or missing references)
			//IL_048c: Expected O, but got Unknown
			//IL_0487: Unknown result type (might be due to invalid IL or missing references)
			//IL_0491: Expected O, but got Unknown
			//IL_0497: Unknown result type (might be due to invalid IL or missing references)
			//IL_049c: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c9: Expected O, but got Unknown
			//IL_04c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ce: Expected O, but got Unknown
			//IL_04d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0506: Expected O, but got Unknown
			//IL_0501: Unknown result type (might be due to invalid IL or missing references)
			//IL_050b: Expected O, but got Unknown
			//IL_0511: Unknown result type (might be due to invalid IL or missing references)
			//IL_0516: Unknown result type (might be due to invalid IL or missing references)
			//IL_0521: Unknown result type (might be due to invalid IL or missing references)
			//IL_052c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0537: Unknown result type (might be due to invalid IL or missing references)
			//IL_0543: Expected O, but got Unknown
			//IL_053e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0548: Expected O, but got Unknown
			//IL_054e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0553: Unknown result type (might be due to invalid IL or missing references)
			//IL_055e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0569: Unknown result type (might be due to invalid IL or missing references)
			//IL_0574: Unknown result type (might be due to invalid IL or missing references)
			//IL_0580: Expected O, but got Unknown
			//IL_057b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0585: Expected O, but got Unknown
			//IL_058b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0595: Expected O, but got Unknown
			//IL_059b: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a5: Expected O, but got Unknown
			//IL_05ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b5: Expected O, but got Unknown
			//IL_05bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c5: Expected O, but got Unknown
			//IL_05cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d5: Expected O, but got Unknown
			//IL_05db: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e5: Expected O, but got Unknown
			//IL_05eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_05f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0606: Unknown result type (might be due to invalid IL or missing references)
			//IL_0611: Unknown result type (might be due to invalid IL or missing references)
			//IL_061d: Expected O, but got Unknown
			//IL_0618: Unknown result type (might be due to invalid IL or missing references)
			//IL_0622: Expected O, but got Unknown
			//IL_0628: Unknown result type (might be due to invalid IL or missing references)
			//IL_062d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0639: Expected O, but got Unknown
			//IL_0634: Unknown result type (might be due to invalid IL or missing references)
			//IL_063e: Expected O, but got Unknown
			//IL_0644: Unknown result type (might be due to invalid IL or missing references)
			//IL_0649: Unknown result type (might be due to invalid IL or missing references)
			//IL_0655: Expected O, but got Unknown
			//IL_0650: Unknown result type (might be due to invalid IL or missing references)
			//IL_065a: Expected O, but got Unknown
			//IL_0660: Unknown result type (might be due to invalid IL or missing references)
			//IL_0665: Unknown result type (might be due to invalid IL or missing references)
			//IL_0671: Expected O, but got Unknown
			//IL_066c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0676: Expected O, but got Unknown
			//IL_067c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0681: Unknown result type (might be due to invalid IL or missing references)
			//IL_068d: Expected O, but got Unknown
			//IL_0688: Unknown result type (might be due to invalid IL or missing references)
			//IL_0692: Expected O, but got Unknown
			//IL_0698: Unknown result type (might be due to invalid IL or missing references)
			//IL_069d: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a9: Expected O, but got Unknown
			//IL_06a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06ae: Expected O, but got Unknown
			//IL_06b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_06da: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e6: Expected O, but got Unknown
			//IL_06e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_06eb: Expected O, but got Unknown
			//IL_06f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0702: Expected O, but got Unknown
			//IL_06fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0707: Expected O, but got Unknown
			//IL_070d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0712: Unknown result type (might be due to invalid IL or missing references)
			//IL_071e: Expected O, but got Unknown
			//IL_0719: Unknown result type (might be due to invalid IL or missing references)
			//IL_0723: Expected O, but got Unknown
			//IL_0729: Unknown result type (might be due to invalid IL or missing references)
			//IL_072e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0739: Unknown result type (might be due to invalid IL or missing references)
			//IL_0744: Unknown result type (might be due to invalid IL or missing references)
			//IL_074f: Unknown result type (might be due to invalid IL or missing references)
			//IL_075b: Expected O, but got Unknown
			//IL_0756: Unknown result type (might be due to invalid IL or missing references)
			//IL_0760: Expected O, but got Unknown
			//IL_0766: Unknown result type (might be due to invalid IL or missing references)
			//IL_076b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0776: Unknown result type (might be due to invalid IL or missing references)
			//IL_0781: Unknown result type (might be due to invalid IL or missing references)
			//IL_078c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0798: Expected O, but got Unknown
			//IL_0793: Unknown result type (might be due to invalid IL or missing references)
			//IL_079d: Expected O, but got Unknown
			//IL_07a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_07a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_07b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_07be: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_07d5: Expected O, but got Unknown
			//IL_07d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_07da: Expected O, but got Unknown
			ABLogger = ((BaseUnityPlugin)this).Logger;
			artifactofblindness = AssetBundle.LoadFromFile(Assembly.GetExecutingAssembly().Location.Replace("ArtifactOfBlindness.dll", "artifactofblindness"));
			disclaimer1 = ((BaseUnityPlugin)this).Config.Bind<bool>("Stats", "_Important!", true, "Each player should have the same config to minimize bugs.");
			moveSpeedBuff = ((BaseUnityPlugin)this).Config.Bind<float>("Stats", "Movement Speed Buff", 1.5f, "Decimal. Default is 1.5");
			attackSpeedBuff = ((BaseUnityPlugin)this).Config.Bind<float>("Stats", "Attack Speed Buff", 0.35f, "Decimal. Default is 0.35");
			cooldownReductionBuff = ((BaseUnityPlugin)this).Config.Bind<float>("Stats", "Cooldown Reduction Buff", 0.35f, "Decimal. Default is 0.35");
			percentRegenBuff = ((BaseUnityPlugin)this).Config.Bind<float>("Stats", "Percent Regen Buff", 0.01f, "Decimal. Default is 0.01");
			flatRegenBuff = ((BaseUnityPlugin)this).Config.Bind<float>("Stats", "Flat Regen Buff", 5f, "Default is 5");
			mithrixMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("Stats", "Mithrix Stats Multiplier", 0.5f, "Decimal. Default is 0.5");
			fogRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Stats", "Fog Radius", 30f, "Default is 30");
			disclaimer2 = ((BaseUnityPlugin)this).Config.Bind<bool>("Visual", "_Important!", true, "Each player should have the same config to minimize bugs.");
			enableFog = ((BaseUnityPlugin)this).Config.Bind<bool>("Visual", "Enable Fog?", true, "Default is true");
			enableDoF = ((BaseUnityPlugin)this).Config.Bind<bool>("Visual", "Enable Depth of Field?", true, "Default is true");
			enableVignette = ((BaseUnityPlugin)this).Config.Bind<bool>("Visual", "Enable Vignette?", true, "Default is true");
			enableAberration = ((BaseUnityPlugin)this).Config.Bind<bool>("Visual", "Enable Chromatic Aberration?", true, "Default is true");
			enableGrain = ((BaseUnityPlugin)this).Config.Bind<bool>("Visual", "Enable Grain?", true, "Default is true");
			fogIndicator = ((BaseUnityPlugin)this).Config.Bind<bool>("Visual", "Show Fog Radius Indicator?", true, "Default is false");
			fogIndicatorColor = ((BaseUnityPlugin)this).Config.Bind<Color>("Visual", "Fog Radius Indicator Color", new Color(16f / 51f, 21f / 85f, 0.23921569f, 0.24313726f), "RGBA / 255. Default is 0.3137254902, 0.2470588235, 0.2392156863, 0.2431372549 or RGBA 80, 63, 61, 62 in Risk of Options.");
			fogColorStart = ((BaseUnityPlugin)this).Config.Bind<Color>("Visual", "Fog Color Start", new Color(0.1764706f, 0.1764706f, 0.20784314f, 0.64705884f), "The color close to your camera in RGBA / 255. Default is 0.17647058823, 0.17647058823, 0.20784313725, 0.64705882352 or RGBA 45, 45, 53, 165 in Risk of Options.");
			fogColorMid = ((BaseUnityPlugin)this).Config.Bind<Color>("Visual", "Fog Color Mid", new Color(0.17254902f, 0.17254902f, 0.21960784f, 1f), "The color between the close and far points from your camera in RGBA / 255. Default is 0.1725490196, 0.1725490196, 0.21960784313, 1 or RGBA 44, 44, 56, 255 in Risk of Options.");
			fogColorEnd = ((BaseUnityPlugin)this).Config.Bind<Color>("Visual", "Fog Color End", new Color(0.17254902f, 0.17254902f, 0.21960784f, 1f), "The color far from your camera in RGBA / 255. Default is 0.1725490196, 0.1725490196, 0.21960784313, 1 or RGBA 44, 44, 56, 255 in Risk of Options.");
			fogIntensity = ((BaseUnityPlugin)this).Config.Bind<float>("Visual", "Fog Intensity", 0.99f, "Default is 0.99");
			everyoneGlow = ((BaseUnityPlugin)this).Config.Bind<bool>("Visual", "Make all allies glow?", true, "Default is false");
			glowColor = ((BaseUnityPlugin)this).Config.Bind<Color>("Visual", "Glow Color", new Color(1f, 1f, 1f, 1f), "RGBA / 255. Default is 1, 1, 1, 1 or RGBA 255, 255, 255, 255 in Risk of Options.");
			glowIntensity = ((BaseUnityPlugin)this).Config.Bind<float>("Visual", "Glow Intensity", 0.2f, "Default is 0.3");
			glowRadius = ((BaseUnityPlugin)this).Config.Bind<float>("Visual", "Glow Radius", 13f, "Default is 13");
			depthOfFieldStrength = ((BaseUnityPlugin)this).Config.Bind<float>("Visual", "Depth of Field Strength", 69f, "Default is 69");
			ModSettingsManager.SetModIcon(artifactofblindness.LoadAsset<Sprite>("Assets/ArtifactOfBlindness/texArtifactOfBlindnessEnabled.png"));
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(disclaimer1));
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(moveSpeedBuff, new StepSliderConfig
			{
				min = 0f,
				max = 3f,
				increment = 0.1f,
				restartRequired = false
			}));
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(attackSpeedBuff, new StepSliderConfig
			{
				min = 0f,
				max = 2f,
				increment = 0.05f,
				restartRequired = false
			}));
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(cooldownReductionBuff, new StepSliderConfig
			{
				min = 0f,
				max = 1f,
				increment = 0.05f,
				restartRequired = false
			}));
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(percentRegenBuff, new StepSliderConfig
			{
				min = 0f,
				max = 0.1f,
				increment = 0.01f,
				restartRequired = false
			}));
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(flatRegenBuff, new StepSliderConfig
			{
				min = 0f,
				max = 30f,
				increment = 1f,
				restartRequired = false
			}));
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(mithrixMultiplier, new StepSliderConfig
			{
				min = 0f,
				max = 2f,
				increment = 0.05f,
				restartRequired = false
			}));
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(disclaimer2));
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(enableFog));
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(enableDoF));
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(enableVignette));
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(enableAberration));
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(enableGrain));
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(fogRadius, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 1f,
				restartRequired = false
			}));
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(fogIndicator, new CheckBoxConfig
			{
				restartRequired = false
			}));
			ModSettingsManager.AddOption((BaseOption)new ColorOption(fogIndicatorColor, new ColorOptionConfig
			{
				restartRequired = false
			}));
			ModSettingsManager.AddOption((BaseOption)new ColorOption(fogColorStart, new ColorOptionConfig
			{
				restartRequired = false
			}));
			ModSettingsManager.AddOption((BaseOption)new ColorOption(fogColorMid, new ColorOptionConfig
			{
				restartRequired = false
			}));
			ModSettingsManager.AddOption((BaseOption)new ColorOption(fogColorEnd, new ColorOptionConfig
			{
				restartRequired = false
			}));
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(fogIntensity, new StepSliderConfig
			{
				min = 0f,
				max = 1f,
				increment = 0.01f,
				restartRequired = false
			}));
			ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(everyoneGlow, new CheckBoxConfig
			{
				restartRequired = false
			}));
			ModSettingsManager.AddOption((BaseOption)new ColorOption(glowColor, new ColorOptionConfig
			{
				restartRequired = false
			}));
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(glowIntensity, new StepSliderConfig
			{
				min = 0f,
				max = 5f,
				increment = 0.1f,
				restartRequired = false
			}));
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(glowRadius, new StepSliderConfig
			{
				min = 0f,
				max = 100f,
				increment = 1f,
				restartRequired = false
			}));
			ModSettingsManager.AddOption((BaseOption)new StepSliderOption(depthOfFieldStrength, new StepSliderConfig
			{
				min = 0f,
				max = 200f,
				increment = 1f,
				restartRequired = false
			}));
			IEnumerable<Type> enumerable = from type in Assembly.GetExecutingAssembly().GetTypes()
				where !type.IsAbstract && type.IsSubclassOf(typeof(ArtifactBase))
				select type;
			foreach (Type item in enumerable)
			{
				ArtifactBase artifactBase = (ArtifactBase)Activator.CreateInstance(item);
				artifactBase.Init(((BaseUnityPlugin)this).Config);
			}
		}
	}
}
namespace ArtifactOfBlindness.Artifact
{
	public abstract class ArtifactBase<T> : ArtifactBase where T : ArtifactBase<T>
	{
		public static T Instance { get; private set; }

		public ArtifactBase()
		{
			if (Instance != null)
			{
				throw new InvalidOperationException("Singleton class \"" + typeof(T).Name + "\" inheriting ArtifactBase was instantiated twice");
			}
			Instance = this as T;
		}
	}
	public abstract class ArtifactBase
	{
		public ArtifactDef ArtifactDef;

		public abstract string ArtifactName { get; }

		public abstract string ArtifactLangTokenName { get; }

		public abstract string ArtifactDescription { get; }

		public abstract Sprite ArtifactEnabledIcon { get; }

		public abstract Sprite ArtifactDisabledIcon { get; }

		public bool ArtifactEnabled => RunArtifactManager.instance.IsArtifactEnabled(ArtifactDef);

		public abstract void Init(ConfigFile config);

		protected void CreateLang()
		{
			LanguageAPI.Add("ARTIFACT_" + ArtifactLangTokenName + "_NAME", ArtifactName);
			LanguageAPI.Add("ARTIFACT_" + ArtifactLangTokenName + "_DESCRIPTION", ArtifactDescription);
		}

		protected void CreateArtifact()
		{
			ArtifactDef = ScriptableObject.CreateInstance<ArtifactDef>();
			ArtifactDef.cachedName = "ARTIFACT_" + ArtifactLangTokenName;
			ArtifactDef.nameToken = "ARTIFACT_" + ArtifactLangTokenName + "_NAME";
			ArtifactDef.descriptionToken = "ARTIFACT_" + ArtifactLangTokenName + "_DESCRIPTION";
			ArtifactDef.smallIconSelectedSprite = ArtifactEnabledIcon;
			ArtifactDef.smallIconDeselectedSprite = ArtifactDisabledIcon;
			ContentAddition.AddArtifactDef(ArtifactDef);
		}

		public abstract void Hooks();
	}
	internal class ArtifactOfBlindness : ArtifactBase<ArtifactOfBlindness>
	{
		public static RampFog fog;

		public static ChromaticAberration ab;

		public static DepthOfField dof;

		public static Grain grain;

		public static Vignette vn;

		public static GameObject ppHolder;

		public static BuffDef regenBuff;

		public static BuffDef speedBuff;

		public static BuffDef aspdBuff;

		private static readonly string[] blacklistedScenes = new string[15]
		{
			"artifactworld", "crystalworld", "eclipseworld", "infinitetowerworld", "intro", "loadingbasic", "lobby", "logbook", "mysteryspace", "outro",
			"PromoRailGunner", "PromoVoidSurvivor", "splash", "title", "voidoutro"
		};

		public static GameObject indicator;

		public override string ArtifactName => "Artifact of Blindness";

		public override string ArtifactLangTokenName => "HIFU_ArtifactOfBlindness";

		public override string ArtifactDescription => "Severely reduce ally vision. Enemies gain increased attack speed, movement speed, regeneration and decreased cooldowns outside of any ally's vision.";

		public override Sprite ArtifactEnabledIcon => Main.artifactofblindness.LoadAsset<Sprite>("Assets/ArtifactOfBlindness/texArtifactOfBlindnessEnabled.png");

		public override Sprite ArtifactDisabledIcon => Main.artifactofblindness.LoadAsset<Sprite>("Assets/ArtifactOfBlindness/texArtifactOfBlindnessDisabled.png");

		public override void Init(ConfigFile config)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: 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)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Expected O, but got Unknown
			//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0438: Unknown result type (might be due to invalid IL or missing references)
			//IL_043d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0442: Unknown result type (might be due to invalid IL or missing references)
			indicator = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/NearbyDamageBonus/NearbyDamageBonusIndicator.prefab").WaitForCompletion(), "Fog Visual", true);
			Transform val = indicator.transform.Find("Radius, Spherical");
			val.localScale = new Vector3(Main.fogRadius.Value * 2f, Main.fogRadius.Value * 2f, Main.fogRadius.Value * 2f);
			Material val2 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/NearbyDamageBonus/matNearbyDamageBonusRangeIndicator.mat").WaitForCompletion());
			Texture2D val3 = Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Common/PerlinNoise.png").WaitForCompletion();
			val2.SetTexture("_MainTex", (Texture)(object)val3);
			val2.SetTexture("_Cloud1Tex", (Texture)(object)val3);
			val2.SetColor("_TintColor", Main.fogIndicatorColor.Value);
			((Renderer)((Component)val).GetComponent<MeshRenderer>()).material = val2;
			PrefabAPI.RegisterNetworkPrefab(indicator);
			ppHolder = new GameObject("HIFU_ArtifactOfBlindnessPP");
			Object.DontDestroyOnLoad((Object)(object)ppHolder);
			ppHolder.layer = LayerIndex.postProcess.intVal;
			ppHolder.AddComponent<HIFU_ArtifactOfBlindnessPostProcessingController>();
			PostProcessVolume val4 = ppHolder.AddComponent<PostProcessVolume>();
			Object.DontDestroyOnLoad((Object)(object)val4);
			val4.isGlobal = true;
			val4.weight = 0f;
			val4.priority = float.MaxValue;
			PostProcessProfile val5 = ScriptableObject.CreateInstance<PostProcessProfile>();
			Object.DontDestroyOnLoad((Object)(object)val5);
			((Object)val5).name = "HIFU_ArtifactOfBlindness";
			fog = val5.AddSettings<RampFog>();
			((ParameterOverride<bool>)(object)((PostProcessEffectSettings)fog).enabled).value = Main.enableFog.Value;
			((PostProcessEffectSettings)fog).SetAllOverridesTo(true, true);
			((ParameterOverride<Color>)(object)fog.fogColorStart).value = Main.fogColorStart.Value;
			((ParameterOverride<Color>)(object)fog.fogColorMid).value = Main.fogColorMid.Value;
			((ParameterOverride<Color>)(object)fog.fogColorEnd).value = Main.fogColorEnd.Value;
			((ParameterOverride<float>)(object)fog.skyboxStrength).value = 0.02f;
			((ParameterOverride<float>)(object)fog.fogPower).value = 0.35f;
			((ParameterOverride<float>)(object)fog.fogIntensity).value = Main.fogIntensity.Value;
			((ParameterOverride<float>)(object)fog.fogZero).value = 0f;
			((ParameterOverride<float>)(object)fog.fogOne).value = 0.05f;
			ab = val5.AddSettings<ChromaticAberration>();
			((ParameterOverride<bool>)(object)((PostProcessEffectSettings)ab).enabled).value = Main.enableAberration.Value;
			((PostProcessEffectSettings)ab).SetAllOverridesTo(true, true);
			((ParameterOverride<float>)(object)ab.intensity).value = 0.15f;
			((ParameterOverride<bool>)(object)ab.fastMode).value = false;
			dof = val5.AddSettings<DepthOfField>();
			((ParameterOverride<bool>)(object)((PostProcessEffectSettings)dof).enabled).value = Main.enableDoF.Value;
			((PostProcessEffectSettings)dof).SetAllOverridesTo(true, true);
			((ParameterOverride<float>)(object)dof.aperture).value = 5f;
			((ParameterOverride<float>)(object)dof.focalLength).value = Main.depthOfFieldStrength.Value;
			((ParameterOverride<float>)(object)dof.focusDistance).value = 5f;
			grain = val5.AddSettings<Grain>();
			((ParameterOverride<bool>)(object)((PostProcessEffectSettings)grain).enabled).value = Main.enableGrain.Value;
			((PostProcessEffectSettings)grain).SetAllOverridesTo(true, true);
			((ParameterOverride<float>)(object)grain.intensity).value = 0.09f;
			((ParameterOverride<float>)(object)grain.size).value = 4.57f;
			((ParameterOverride<float>)(object)grain.lumContrib).value = 5.86f;
			((ParameterOverride<bool>)(object)grain.colored).value = true;
			vn = val5.AddSettings<Vignette>();
			((ParameterOverride<bool>)(object)((PostProcessEffectSettings)vn).enabled).value = Main.enableVignette.Value;
			((PostProcessEffectSettings)vn).SetAllOverridesTo(true, true);
			((ParameterOverride<float>)(object)vn.intensity).value = 0.15f;
			((ParameterOverride<float>)(object)vn.roundness).value = 1f;
			((ParameterOverride<float>)(object)vn.smoothness).value = 0.2f;
			((ParameterOverride<bool>)(object)vn.rounded).value = false;
			((ParameterOverride<Color>)(object)vn.color).value = Color32.op_Implicit(new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue));
			val4.sharedProfile = val5;
			CreateLang();
			CreateArtifact();
			Hooks();
		}

		public override void Hooks()
		{
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Expected O, but got Unknown
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Expected O, but got Unknown
			CreateBuff();
			CharacterBody.onBodyStartGlobal += CharacterBody_onBodyStartGlobal;
			RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients);
			SceneDirector.Start += new hook_Start(SceneDirector_Start);
			Run.onRunDestroyGlobal += Run_onRunDestroyGlobal;
		}

		private void CharacterBody_onBodyStartGlobal(CharacterBody body)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Invalid comparison between Unknown and I4
			if (ArtifactBase<ArtifactOfBlindness>.Instance.ArtifactEnabled && (int)body.teamComponent.teamIndex == 1)
			{
				HIFU_ArtifactOfBlindnessFogSphereController component = ((Component)body).GetComponent<HIFU_ArtifactOfBlindnessFogSphereController>();
				if ((Object)(object)component == (Object)null)
				{
					HIFU_ArtifactOfBlindnessFogSphereController hIFU_ArtifactOfBlindnessFogSphereController = ((Component)body).gameObject.AddComponent<HIFU_ArtifactOfBlindnessFogSphereController>();
				}
			}
		}

		private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args)
		{
			if ((Object.op_Implicit((Object)(object)sender) && sender.HasBuff(regenBuff)) || sender.HasBuff(speedBuff) || sender.HasBuff(aspdBuff))
			{
				if (((Object)sender).name == "BrotherBody(Clone)" || ((Object)sender).name == "BrotherHurtBody(Clone)")
				{
					args.baseAttackSpeedAdd += Main.attackSpeedBuff.Value * Main.mithrixMultiplier.Value;
					args.cooldownMultAdd += Main.cooldownReductionBuff.Value * Main.mithrixMultiplier.Value;
					args.moveSpeedMultAdd += Main.moveSpeedBuff.Value * Main.mithrixMultiplier.Value;
					args.baseRegenAdd += sender.healthComponent.combinedHealth * Main.percentRegenBuff.Value * Main.mithrixMultiplier.Value + Main.flatRegenBuff.Value * Main.mithrixMultiplier.Value + Main.flatRegenBuff.Value * Main.mithrixMultiplier.Value / 5f * (sender.level - 1f);
				}
				else
				{
					args.baseAttackSpeedAdd += Main.attackSpeedBuff.Value;
					args.cooldownMultAdd += Main.cooldownReductionBuff.Value;
					args.moveSpeedMultAdd += Main.moveSpeedBuff.Value;
					args.baseRegenAdd += sender.healthComponent.combinedHealth * Main.percentRegenBuff.Value + Main.flatRegenBuff.Value + Main.flatRegenBuff.Value / 5f * (sender.level - 1f);
				}
			}
		}

		private void CreateBuff()
		{
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: 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_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b1: 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_00c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_013e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_0148: Unknown result type (might be due to invalid IL or missing references)
			//IL_0152: 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_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01da: Unknown result type (might be due to invalid IL or missing references)
			//IL_01df: Unknown result type (might be due to invalid IL or missing references)
			regenBuff = ScriptableObject.CreateInstance<BuffDef>();
			speedBuff = ScriptableObject.CreateInstance<BuffDef>();
			aspdBuff = ScriptableObject.CreateInstance<BuffDef>();
			Texture2D val = Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Croco/texBuffRegenBoostIcon.tif").WaitForCompletion();
			regenBuff.canStack = false;
			regenBuff.isDebuff = false;
			((Object)regenBuff).name = "Darkness";
			regenBuff.iconSprite = Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0f, 0f));
			regenBuff.buffColor = Color32.op_Implicit(new Color32((byte)63, (byte)63, (byte)130, byte.MaxValue));
			Texture2D val2 = Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Common/texMovespeedBuffIcon.tif").WaitForCompletion();
			speedBuff.canStack = false;
			speedBuff.isDebuff = false;
			((Object)speedBuff).name = "Darkness";
			speedBuff.iconSprite = Sprite.Create(val2, new Rect(0f, 0f, (float)((Texture)val2).width, (float)((Texture)val2).height), new Vector2(0f, 0f));
			speedBuff.buffColor = Color32.op_Implicit(new Color32((byte)63, (byte)63, (byte)130, byte.MaxValue));
			Texture2D val3 = Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/AttackSpeedOnCrit/texBuffAttackSpeedOnCritIcon.tif").WaitForCompletion();
			aspdBuff.canStack = false;
			aspdBuff.isDebuff = false;
			((Object)aspdBuff).name = "Darkness";
			aspdBuff.iconSprite = Sprite.Create(val3, new Rect(0f, 0f, (float)((Texture)val3).width, (float)((Texture)val3).height), new Vector2(0f, 0f));
			aspdBuff.buffColor = Color32.op_Implicit(new Color32((byte)63, (byte)63, (byte)130, byte.MaxValue));
			ContentAddition.AddBuffDef(regenBuff);
			ContentAddition.AddBuffDef(speedBuff);
			ContentAddition.AddBuffDef(aspdBuff);
		}

		private void Run_onRunDestroyGlobal(Run obj)
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			PostProcessVolume component = ppHolder.GetComponent<PostProcessVolume>();
			Scene activeScene = SceneManager.GetActiveScene();
			string name = ((Scene)(ref activeScene)).name;
			if (!blacklistedScenes.Contains(name) && Object.op_Implicit((Object)(object)component))
			{
				component.weight = 0f;
			}
		}

		private void SceneDirector_Start(orig_Start orig, SceneDirector self)
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			PostProcessVolume component = ppHolder.GetComponent<PostProcessVolume>();
			Scene activeScene = SceneManager.GetActiveScene();
			string name = ((Scene)(ref activeScene)).name;
			if (ArtifactBase<ArtifactOfBlindness>.Instance.ArtifactEnabled && !blacklistedScenes.Contains(name))
			{
				component.weight = 1f;
			}
			else
			{
				component.weight = 0f;
			}
			orig.Invoke(self);
		}
	}
	public class HIFU_ArtifactOfBlindnessPostProcessingController : MonoBehaviour
	{
		public PostProcessVolume volume;

		public void Start()
		{
			volume = ((Component)this).GetComponent<PostProcessVolume>();
		}
	}
	public class HIFU_ArtifactOfBlindnessFogSphereController : MonoBehaviour
	{
		public CharacterBody bodyComponent;

		public float checkInterval = 0.1f;

		public float colorUpdateInterval = 2f;

		public float timer;

		public float timer2;

		public float radius = Main.fogRadius.Value;

		public static List<HIFU_ArtifactOfBlindnessFogSphereController> fogList = new List<HIFU_ArtifactOfBlindnessFogSphereController>();

		public bool anyEnemiesOutside = true;

		public Vector3 myPosition;

		public Vector3 enemyPosition;

		public GameObject radiusIndicator;

		public Light light = null;

		public Material indicatorMat;

		public Transform radiusTrans;

		private bool enableRadiusIndicator
		{
			get
			{
				return Object.op_Implicit((Object)(object)radiusIndicator);
			}
			set
			{
				//IL_0024: Unknown result type (might be due to invalid IL or missing references)
				//IL_0029: Unknown result type (might be due to invalid IL or missing references)
				if (enableRadiusIndicator != value)
				{
					if (value)
					{
						radiusIndicator = Object.Instantiate<GameObject>(ArtifactOfBlindness.indicator, bodyComponent.corePosition, Quaternion.identity);
						radiusIndicator.GetComponent<NetworkedBodyAttachment>().AttachToGameObjectAndSpawn(((Component)this).gameObject, (string)null);
					}
					else
					{
						Object.Destroy((Object)(object)radiusIndicator);
						radiusIndicator = null;
					}
				}
			}
		}

		public void Awake()
		{
			fogList.Add(this);
		}

		public void OnDestroy()
		{
			fogList.Remove(this);
		}

		public void Start()
		{
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			bodyComponent = ((Component)this).gameObject.GetComponent<CharacterBody>();
			enableRadiusIndicator = Main.fogIndicator.Value;
			radiusTrans = radiusIndicator.transform.GetChild(1);
			radiusTrans.localScale = new Vector3(Main.fogRadius.Value * 2f, Main.fogRadius.Value * 2f, Main.fogRadius.Value * 2f);
			indicatorMat = ((Renderer)((Component)radiusTrans).GetComponent<MeshRenderer>()).sharedMaterial;
			if ((Object)(object)light == (Object)null)
			{
				light = ((Component)this).gameObject.AddComponent<Light>();
				light.color = Main.glowColor.Value;
				light.range = Main.glowRadius.Value;
				light.intensity = Main.glowIntensity.Value;
				light.type = (LightType)2;
				light.shadows = (LightShadows)0;
			}
		}

		public void FixedUpdate()
		{
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_019e: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0253: Unknown result type (might be due to invalid IL or missing references)
			//IL_0259: Invalid comparison between Unknown and I4
			//IL_0272: Unknown result type (might be due to invalid IL or missing references)
			//IL_0277: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b3: Unknown result type (might be due to invalid IL or missing references)
			timer += Time.fixedDeltaTime;
			timer2 += Time.fixedDeltaTime;
			if (timer2 >= colorUpdateInterval)
			{
				timer2 = 0f;
				light.color = Main.glowColor.Value;
				light.range = Main.glowRadius.Value;
				light.intensity = Main.glowIntensity.Value;
				light.type = (LightType)2;
				light.shadows = (LightShadows)0;
				enableRadiusIndicator = Main.fogIndicator.Value;
				radiusTrans.localScale = new Vector3(Main.fogRadius.Value * 2f, Main.fogRadius.Value * 2f, Main.fogRadius.Value * 2f);
				indicatorMat.SetColor("_TintColor", Main.fogIndicatorColor.Value);
				((ParameterOverride<bool>)(object)((PostProcessEffectSettings)ArtifactOfBlindness.fog).enabled).value = Main.enableFog.Value;
				((ParameterOverride<bool>)(object)((PostProcessEffectSettings)ArtifactOfBlindness.dof).enabled).value = Main.enableDoF.Value;
				((ParameterOverride<bool>)(object)((PostProcessEffectSettings)ArtifactOfBlindness.grain).enabled).value = Main.enableGrain.Value;
				((ParameterOverride<bool>)(object)((PostProcessEffectSettings)ArtifactOfBlindness.ab).enabled).value = Main.enableAberration.Value;
				((ParameterOverride<bool>)(object)((PostProcessEffectSettings)ArtifactOfBlindness.vn).enabled).value = Main.enableVignette.Value;
				((ParameterOverride<Color>)(object)ArtifactOfBlindness.fog.fogColorStart).value = Main.fogColorStart.Value;
				((ParameterOverride<Color>)(object)ArtifactOfBlindness.fog.fogColorMid).value = Main.fogColorMid.Value;
				((ParameterOverride<Color>)(object)ArtifactOfBlindness.fog.fogColorEnd).value = Main.fogColorEnd.Value;
				((ParameterOverride<float>)(object)ArtifactOfBlindness.fog.fogIntensity).value = Main.fogIntensity.Value;
				((ParameterOverride<float>)(object)ArtifactOfBlindness.dof.focalLength).value = Main.depthOfFieldStrength.Value;
			}
			if (!(timer >= checkInterval))
			{
				return;
			}
			timer = 0f;
			for (int i = 0; i < CharacterBody.instancesList.Count; i++)
			{
				CharacterBody val = CharacterBody.instancesList[i];
				if (!Object.op_Implicit((Object)(object)val) || (int)val.teamComponent.teamIndex == 1)
				{
					continue;
				}
				enemyPosition = val.transform.position;
				foreach (HIFU_ArtifactOfBlindnessFogSphereController fog in fogList)
				{
					myPosition = fog.bodyComponent.transform.position;
					if (Vector3.Distance(enemyPosition, myPosition) < radius)
					{
						anyEnemiesOutside = false;
						break;
					}
					anyEnemiesOutside = true;
				}
				if (anyEnemiesOutside)
				{
					AddBuffs(val);
				}
				else
				{
					RemoveBuffs(val);
				}
			}
		}

		private void AddBuffs(CharacterBody body)
		{
			if (!body.HasBuff(ArtifactOfBlindness.regenBuff) && !body.HasBuff(ArtifactOfBlindness.speedBuff) && !body.HasBuff(ArtifactOfBlindness.aspdBuff))
			{
				body.AddBuff(ArtifactOfBlindness.regenBuff);
				body.AddBuff(ArtifactOfBlindness.speedBuff);
				body.AddBuff(ArtifactOfBlindness.aspdBuff);
			}
		}

		private void RemoveBuffs(CharacterBody body)
		{
			if (body.HasBuff(ArtifactOfBlindness.regenBuff) || body.HasBuff(ArtifactOfBlindness.speedBuff) || body.HasBuff(ArtifactOfBlindness.aspdBuff))
			{
				body.RemoveBuff(ArtifactOfBlindness.regenBuff);
				body.RemoveBuff(ArtifactOfBlindness.speedBuff);
				body.RemoveBuff(ArtifactOfBlindness.aspdBuff);
			}
		}
	}
}