Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of WolfoQoL OptionalExtras v4.0.2
WolfoQoL_Server.dll
Decompiled 12 months agousing System; using System.CodeDom.Compiler; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using EntityStates; using EntityStates.Headstompers; using Microsoft.CodeAnalysis; using On.EntityStates; using On.EntityStates.Headstompers; using On.RoR2; using On.RoR2.Items; using On.RoR2.UI.MainMenu; using R2API; using R2API.Utils; using RiskOfOptions; using RiskOfOptions.Options; using RoR2; using RoR2.Items; using RoR2.UI.MainMenu; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using WolfoQoL_Client; [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("WolfoQoL_Server")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+93e6e0eb42e43feac200f7f69c72b66d6bd3b0d2")] [assembly: AssemblyProduct("WolfoQoL_Server")] [assembly: AssemblyTitle("WolfoQoL_Server")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: UnverifiableCode] [module: UnverifiableCode] 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 WolfoQoL_Extras.Properties { [GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [DebuggerNonUserCode] [CompilerGenerated] public class Resources { private static ResourceManager resourceMan; private static CultureInfo resourceCulture; [EditorBrowsable(EditorBrowsableState.Advanced)] public static ResourceManager ResourceManager { get { if (resourceMan == null) { ResourceManager resourceManager = new ResourceManager("WolfoQoL_Server.Properties.Resources", typeof(Resources).Assembly); resourceMan = resourceManager; } return resourceMan; } } [EditorBrowsable(EditorBrowsableState.Advanced)] public static CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } internal Resources() { } } } namespace WolfoQoL_Server { public static class Assets { public static AssetBundle Bundle => Assets.Bundle; } public static class ArrayUtil { } public class v { public static Rect rec256 = new Rect(0f, 0f, 256f, 256f); public static Rect rec128 = new Rect(0f, 0f, 128f, 128f); public static Rect rec64 = new Rect(0f, 0f, 64f, 64f); public static Vector2 half = new Vector2(0.5f, 0.5f); } public class BuffTimers { [CompilerGenerated] private static class <>O { public static hook_ApplyJumpVelocity <0>__FeatherRemoveBuffs; public static hook_ReadBuffs <1>__FeatherClient; public static Action<CharacterBody> <2>__CharacterBody_onBodyStartGlobal; } [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_StartFlight <>9__13_0; public static hook_OnDestroy <>9__13_1; public static hook_OnEnter <>9__13_2; public static hook_OnExit <>9__13_3; public static hook_OnSprintStart <>9__13_4; public static hook_OnSprintStop <>9__13_5; public static hook_OnEnter <>9__13_6; public static hook_OnExit <>9__13_7; public static hook_OnEnter <>9__13_8; public static hook_OnEnter <>9__13_9; public static hook_OnDisable <>9__13_10; public static hook_OnTakeDamageServer <>9__13_11; public static hook_ForceShieldRegen <>9__13_12; public static hook_OnOwnerKillOther <>9__13_13; public static hook_OnLanded <>9__17_0; public static hook_OnLanded <>9__17_1; internal void <Buffs_NewBuffs>b__13_0(orig_StartFlight orig, JetpackController self) { orig.Invoke(self); if (NetworkServer.active) { self.targetBody.AddTimedBuff(FakeBugWings, self.duration); } } internal void <Buffs_NewBuffs>b__13_1(orig_OnDestroy orig, JetpackController self) { orig.Invoke(self); if (NetworkServer.active && Object.op_Implicit((Object)(object)self.targetBody)) { self.targetBody.ClearTimedBuffs(FakeBugWings); } } internal void <Buffs_NewBuffs>b__13_2(orig_OnEnter orig, GhostUtilitySkillState self) { orig.Invoke(self); if (NetworkServer.active) { float num = GhostUtilitySkillState.baseDuration * (float)((Component)((EntityState)self).outer).GetComponentInParent<CharacterBody>().inventory.GetItemCount(Items.LunarUtilityReplacement); ((Component)((EntityState)self).outer).GetComponentInParent<CharacterBody>().AddTimedBuff(FakeStrides, num); } } internal void <Buffs_NewBuffs>b__13_3(orig_OnExit orig, GhostUtilitySkillState self) { orig.Invoke(self); if (NetworkServer.active) { ((Component)((EntityState)self).outer).GetComponentInParent<CharacterBody>().ClearTimedBuffs(FakeStrides); } } internal void <Buffs_NewBuffs>b__13_4(orig_OnSprintStart orig, CharacterBody self) { orig.Invoke(self); if (NetworkServer.active && Object.op_Implicit((Object)(object)self.inventory) && self.inventory.GetItemCount(Items.SprintArmor) > 0) { self.AddBuff(FakeRoseBuckle); } } internal void <Buffs_NewBuffs>b__13_5(orig_OnSprintStop orig, CharacterBody self) { orig.Invoke(self); if (NetworkServer.active && Object.op_Implicit((Object)(object)self.inventory) && self.inventory.GetItemCount(Items.SprintArmor) > 0 && self.HasBuff(FakeRoseBuckle)) { self.RemoveBuff(FakeRoseBuckle); } } internal void <Buffs_NewBuffs>b__13_6(orig_OnEnter orig, FrozenState self) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (NetworkServer.active) { for (float num = 0f; num <= self.freezeDuration; num += 0.5f) { ((EntityState)self).characterBody.AddTimedBuffAuthority(FakeFrozen.buffIndex, num); } } } internal void <Buffs_NewBuffs>b__13_7(orig_OnExit orig, FrozenState self) { orig.Invoke(self); if (NetworkServer.active) { ((EntityState)self).characterBody.ClearTimedBuffs(FakeFrozen); } } internal void <Buffs_NewBuffs>b__13_8(orig_OnEnter orig, BaseHeadstompersState self) { orig.Invoke(self); if (NetworkServer.active && self is HeadstompersIdle && self.body.GetBuffCount(FakeHeadstompOn) == 0) { self.body.AddBuff(FakeHeadstompOn); } } internal void <Buffs_NewBuffs>b__13_9(orig_OnEnter orig, HeadstompersCooldown self) { orig.Invoke(self); if (NetworkServer.active) { ((BaseHeadstompersState)self).body.RemoveBuff(FakeHeadstompOn); float num = self.duration; while (0f < num) { ((BaseHeadstompersState)self).body.AddTimedBuff(FakeHeadstompOff, num); num -= 1f; } } } internal void <Buffs_NewBuffs>b__13_10(orig_OnDisable orig, HeadstomperBodyBehavior self) { orig.Invoke(self); if (NetworkServer.active && (Object)(object)((BaseItemBodyBehavior)self).body != (Object)null) { ((BaseItemBodyBehavior)self).body.RemoveBuff(FakeHeadstompOn); } } internal void <Buffs_NewBuffs>b__13_11(orig_OnTakeDamageServer orig, CharacterBody self, DamageReport damageReport) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Invalid comparison between Unknown and I4 orig.Invoke(self, damageReport); if (!NetworkServer.active || (int)self.teamComponent.teamIndex != 1 || !(self.outOfDangerStopwatch < 0.5f)) { return; } if (self.healthComponent.fullShield > 0f && self.healthComponent.shield < self.healthComponent.fullShield) { float num = 7f - self.outOfDangerStopwatch; if (self.healthComponent.itemCounts.missileVoid > 0) { self.AddTimedBuff(FakeShieldDelayPink, num); } else { self.AddTimedBuff(FakeShieldDelay, num); } } if (Object.op_Implicit((Object)(object)self.inventory)) { float num2 = 7f - self.outOfDangerStopwatch; if (self.inventory.GetItemCount(Items.OutOfCombatArmor) > 0) { self.AddTimedBuff(FakeOpalCooldown, num2); } } } internal void <Buffs_NewBuffs>b__13_12(orig_ForceShieldRegen orig, HealthComponent self) { orig.Invoke(self); if (Object.op_Implicit((Object)(object)self.body) && self.body.HasBuff(FakeShieldDelay)) { self.body.ClearTimedBuffs(FakeShieldDelay); self.body.ClearTimedBuffs(FakeShieldDelayPink); } } internal void <Buffs_NewBuffs>b__13_13(orig_OnOwnerKillOther orig, IcicleAuraController self) { orig.Invoke(self); if (NetworkServer.active) { if (self.cachedOwnerInfo.characterBody.GetBuffCount(FakeFrostRelic) + 1 > self.maxIcicleCount) { self.cachedOwnerInfo.characterBody.RemoveOldestTimedBuff(FakeFrostRelic); } self.cachedOwnerInfo.characterBody.AddTimedBuff(FakeFrostRelic, self.icicleDuration); } } internal void <ModSupport>b__17_0(orig_OnLanded orig, CharacterMotor self) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (Object.op_Implicit((Object)(object)self.body) && self.body.isPlayerControlled) { self.body.SetBuffCount(FakeFeather.buffIndex, self.body.inventory.GetItemCount(Items.Feather)); self.body.SetBuffCount(FakeVoidFeather.buffIndex, self.body.inventory.GetItemCount(VV_VoidFeather)); if (!NetworkServer.active) { ((Component)self).GetComponent<FeatherTrackerClients>().SetVal(self.body.GetBuffCount(FakeFeather), self.body.GetBuffCount(FakeVoidFeather)); } } } internal void <ModSupport>b__17_1(orig_OnLanded orig, CharacterMotor self) { //IL_0034: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (Object.op_Implicit((Object)(object)self.body) && self.body.isPlayerControlled) { self.body.SetBuffCount(FakeFeather.buffIndex, self.body.inventory.GetItemCount(Items.Feather)); if (!NetworkServer.active) { ((Component)self).GetComponent<FeatherTrackerClients>().SetVal(self.body.GetBuffCount(FakeFeather), self.body.GetBuffCount(FakeVoidFeather)); } } } } public static BuffDef FakeHellFire; public static BuffDef FakePercentBurn; public static BuffDef FakeBugWings; public static BuffDef FakeStrides; public static BuffDef FakeRoseBuckle; public static BuffDef FakeFrozen; public static BuffDef FakeHeadstompOn; public static BuffDef FakeHeadstompOff; public static BuffDef FakeFeather; public static BuffDef FakeShieldDelay; public static BuffDef FakeShieldDelayPink; public static BuffDef FakeFrostRelic; public static BuffDef FakeOpalCooldown; public static BuffDef FakeVoidFeather; public static ItemIndex VV_VoidFeather = (ItemIndex)(-1); public static void Buffs_NewBuffs() { //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_0156: 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_0245: Unknown result type (might be due to invalid IL or missing references) //IL_024a: Unknown result type (might be due to invalid IL or missing references) //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0331: Unknown result type (might be due to invalid IL or missing references) //IL_0336: Unknown result type (might be due to invalid IL or missing references) //IL_033b: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Expected O, but got Unknown //IL_0420: Unknown result type (might be due to invalid IL or missing references) //IL_0425: Unknown result type (might be due to invalid IL or missing references) //IL_042a: Unknown result type (might be due to invalid IL or missing references) //IL_02c1: Unknown result type (might be due to invalid IL or missing references) //IL_02c6: Unknown result type (might be due to invalid IL or missing references) //IL_02cc: Expected O, but got Unknown //IL_01f7: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_0202: Expected O, but got Unknown //IL_03ad: Unknown result type (might be due to invalid IL or missing references) //IL_03b2: Unknown result type (might be due to invalid IL or missing references) //IL_03b8: Expected O, but got Unknown //IL_02e6: Unknown result type (might be due to invalid IL or missing references) //IL_02eb: Unknown result type (might be due to invalid IL or missing references) //IL_02f1: Expected O, but got Unknown //IL_03d2: Unknown result type (might be due to invalid IL or missing references) //IL_03d7: Unknown result type (might be due to invalid IL or missing references) //IL_03dd: Expected O, but got Unknown //IL_050c: Unknown result type (might be due to invalid IL or missing references) //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_059f: Unknown result type (might be due to invalid IL or missing references) //IL_05a4: Unknown result type (might be due to invalid IL or missing references) //IL_05a9: Unknown result type (might be due to invalid IL or missing references) //IL_0499: Unknown result type (might be due to invalid IL or missing references) //IL_049e: Unknown result type (might be due to invalid IL or missing references) //IL_04a4: Expected O, but got Unknown //IL_04be: Unknown result type (might be due to invalid IL or missing references) //IL_04c3: Unknown result type (might be due to invalid IL or missing references) //IL_04c9: Expected O, but got Unknown //IL_06b2: Unknown result type (might be due to invalid IL or missing references) //IL_06b7: Unknown result type (might be due to invalid IL or missing references) //IL_0736: Unknown result type (might be due to invalid IL or missing references) //IL_073b: 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_0791: Unknown result type (might be due to invalid IL or missing references) //IL_07ce: Unknown result type (might be due to invalid IL or missing references) //IL_07d3: Unknown result type (might be due to invalid IL or missing references) //IL_08b7: Unknown result type (might be due to invalid IL or missing references) //IL_08bc: Unknown result type (might be due to invalid IL or missing references) //IL_08c1: Unknown result type (might be due to invalid IL or missing references) //IL_0618: Unknown result type (might be due to invalid IL or missing references) //IL_061d: Unknown result type (might be due to invalid IL or missing references) //IL_0623: Expected O, but got Unknown //IL_097e: Unknown result type (might be due to invalid IL or missing references) //IL_0983: Unknown result type (might be due to invalid IL or missing references) //IL_0988: Unknown result type (might be due to invalid IL or missing references) //IL_0a00: Unknown result type (might be due to invalid IL or missing references) //IL_0a05: Unknown result type (might be due to invalid IL or missing references) //IL_0844: Unknown result type (might be due to invalid IL or missing references) //IL_0849: Unknown result type (might be due to invalid IL or missing references) //IL_084f: Expected O, but got Unknown //IL_063d: Unknown result type (might be due to invalid IL or missing references) //IL_0642: Unknown result type (might be due to invalid IL or missing references) //IL_0648: Expected O, but got Unknown //IL_0933: Unknown result type (might be due to invalid IL or missing references) //IL_0938: Unknown result type (might be due to invalid IL or missing references) //IL_093e: Expected O, but got Unknown //IL_0869: Unknown result type (might be due to invalid IL or missing references) //IL_086e: Unknown result type (might be due to invalid IL or missing references) //IL_0874: Expected O, but got Unknown //IL_0662: Unknown result type (might be due to invalid IL or missing references) //IL_0667: Unknown result type (might be due to invalid IL or missing references) //IL_066d: Expected O, but got Unknown bool flag = false; if (Chainloader.PluginInfos.ContainsKey("com.RiskyLives.RiskyMod")) { flag = true; } BuffDef val = LegacyResourcesAPI.Load<BuffDef>("buffdefs/OnFire"); FakeHellFire = ScriptableObject.CreateInstance<BuffDef>(); FakeHellFire.iconSprite = val.iconSprite; FakeHellFire.buffColor = Color32.op_Implicit(new Color32((byte)50, (byte)188, byte.MaxValue, byte.MaxValue)); ((Object)FakeHellFire).name = "visual_HelFire"; FakeHellFire.isDebuff = false; FakeHellFire.canStack = true; FakeHellFire.ignoreGrowthNectar = true; ContentAddition.AddBuffDef(FakeHellFire); FakePercentBurn = ScriptableObject.CreateInstance<BuffDef>(); FakePercentBurn.iconSprite = val.iconSprite; FakePercentBurn.buffColor = Color32.op_Implicit(new Color32((byte)203, (byte)53, (byte)38, byte.MaxValue)); ((Object)FakePercentBurn).name = "visual_EnemyBurn"; FakePercentBurn.isDebuff = false; FakePercentBurn.canStack = true; FakePercentBurn.ignoreGrowthNectar = true; ContentAddition.AddBuffDef(FakePercentBurn); FakeBugWings = ScriptableObject.CreateInstance<BuffDef>(); FakeBugWings.iconSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/WQoL/Buffs/texBuffBeetleUp.png"); FakeBugWings.buffColor = Color32.op_Implicit(new Color32((byte)218, (byte)136, (byte)251, byte.MaxValue)); ((Object)FakeBugWings).name = "visual_BugFlight"; FakeBugWings.isDebuff = false; FakeBugWings.canStack = false; FakeBugWings.ignoreGrowthNectar = !WConfig.BuffsAffectNectar.Value; ContentAddition.AddBuffDef(FakeBugWings); if (WConfig.cfgBuff_BugFlight.Value) { object obj = <>c.<>9__13_0; if (obj == null) { hook_StartFlight val2 = delegate(orig_StartFlight orig, JetpackController self) { orig.Invoke(self); if (NetworkServer.active) { self.targetBody.AddTimedBuff(FakeBugWings, self.duration); } }; <>c.<>9__13_0 = val2; obj = (object)val2; } JetpackController.StartFlight += (hook_StartFlight)obj; object obj2 = <>c.<>9__13_1; if (obj2 == null) { hook_OnDestroy val3 = delegate(orig_OnDestroy orig, JetpackController self) { orig.Invoke(self); if (NetworkServer.active && Object.op_Implicit((Object)(object)self.targetBody)) { self.targetBody.ClearTimedBuffs(FakeBugWings); } }; <>c.<>9__13_1 = val3; obj2 = (object)val3; } JetpackController.OnDestroy += (hook_OnDestroy)obj2; } FakeStrides = ScriptableObject.CreateInstance<BuffDef>(); FakeStrides.iconSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/WQoL/Buffs/texBuffLunarShellIcon.png"); FakeStrides.buffColor = Color32.op_Implicit(new Color32((byte)189, (byte)176, byte.MaxValue, byte.MaxValue)); ((Object)FakeStrides).name = "visual_ShadowIntangible"; FakeStrides.isDebuff = false; FakeStrides.canStack = false; FakeStrides.ignoreGrowthNectar = !WConfig.BuffsAffectNectar.Value; ContentAddition.AddBuffDef(FakeStrides); if (WConfig.cfgBuff_Strides.Value) { object obj3 = <>c.<>9__13_2; if (obj3 == null) { hook_OnEnter val4 = delegate(orig_OnEnter orig, GhostUtilitySkillState self) { orig.Invoke(self); if (NetworkServer.active) { float num5 = GhostUtilitySkillState.baseDuration * (float)((Component)((EntityState)self).outer).GetComponentInParent<CharacterBody>().inventory.GetItemCount(Items.LunarUtilityReplacement); ((Component)((EntityState)self).outer).GetComponentInParent<CharacterBody>().AddTimedBuff(FakeStrides, num5); } }; <>c.<>9__13_2 = val4; obj3 = (object)val4; } GhostUtilitySkillState.OnEnter += (hook_OnEnter)obj3; object obj4 = <>c.<>9__13_3; if (obj4 == null) { hook_OnExit val5 = delegate(orig_OnExit orig, GhostUtilitySkillState self) { orig.Invoke(self); if (NetworkServer.active) { ((Component)((EntityState)self).outer).GetComponentInParent<CharacterBody>().ClearTimedBuffs(FakeStrides); } }; <>c.<>9__13_3 = val5; obj4 = (object)val5; } GhostUtilitySkillState.OnExit += (hook_OnExit)obj4; } FakeRoseBuckle = ScriptableObject.CreateInstance<BuffDef>(); FakeRoseBuckle.iconSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/WQoL/Buffs/texBuffBodyArmor.png"); FakeRoseBuckle.buffColor = Color32.op_Implicit(new Color32((byte)251, (byte)199, (byte)38, byte.MaxValue)); ((Object)FakeRoseBuckle).name = "visual_SprintArmor"; FakeRoseBuckle.isDebuff = false; FakeRoseBuckle.canStack = false; FakeRoseBuckle.ignoreGrowthNectar = !WConfig.BuffsAffectNectar.Value; ContentAddition.AddBuffDef(FakeRoseBuckle); if (WConfig.cfgBuff_SprintArmor.Value) { object obj5 = <>c.<>9__13_4; if (obj5 == null) { hook_OnSprintStart val6 = delegate(orig_OnSprintStart orig, CharacterBody self) { orig.Invoke(self); if (NetworkServer.active && Object.op_Implicit((Object)(object)self.inventory) && self.inventory.GetItemCount(Items.SprintArmor) > 0) { self.AddBuff(FakeRoseBuckle); } }; <>c.<>9__13_4 = val6; obj5 = (object)val6; } CharacterBody.OnSprintStart += (hook_OnSprintStart)obj5; object obj6 = <>c.<>9__13_5; if (obj6 == null) { hook_OnSprintStop val7 = delegate(orig_OnSprintStop orig, CharacterBody self) { orig.Invoke(self); if (NetworkServer.active && Object.op_Implicit((Object)(object)self.inventory) && self.inventory.GetItemCount(Items.SprintArmor) > 0 && self.HasBuff(FakeRoseBuckle)) { self.RemoveBuff(FakeRoseBuckle); } }; <>c.<>9__13_5 = val7; obj6 = (object)val7; } CharacterBody.OnSprintStop += (hook_OnSprintStop)obj6; } FakeFrozen = ScriptableObject.CreateInstance<BuffDef>(); FakeFrozen.iconSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/WQoL/Buffs/texBuffBrokenCube.png"); FakeFrozen.buffColor = Color32.op_Implicit(new Color32((byte)184, (byte)216, (byte)239, byte.MaxValue)); ((Object)FakeFrozen).name = "visual_Frozen"; FakeFrozen.isDebuff = false; FakeFrozen.canStack = true; FakeFrozen.ignoreGrowthNectar = true; ContentAddition.AddBuffDef(FakeFrozen); if (WConfig.cfgBuff_Frozen.Value && !flag) { object obj7 = <>c.<>9__13_6; if (obj7 == null) { hook_OnEnter val8 = delegate(orig_OnEnter orig, FrozenState self) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (NetworkServer.active) { for (float num4 = 0f; num4 <= self.freezeDuration; num4 += 0.5f) { ((EntityState)self).characterBody.AddTimedBuffAuthority(FakeFrozen.buffIndex, num4); } } }; <>c.<>9__13_6 = val8; obj7 = (object)val8; } FrozenState.OnEnter += (hook_OnEnter)obj7; object obj8 = <>c.<>9__13_7; if (obj8 == null) { hook_OnExit val9 = delegate(orig_OnExit orig, FrozenState self) { orig.Invoke(self); if (NetworkServer.active) { ((EntityState)self).characterBody.ClearTimedBuffs(FakeFrozen); } }; <>c.<>9__13_7 = val9; obj8 = (object)val9; } FrozenState.OnExit += (hook_OnExit)obj8; } FakeHeadstompOn = ScriptableObject.CreateInstance<BuffDef>(); FakeHeadstompOn.iconSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/WQoL/Buffs/texBuffHeadStompOn.png"); FakeHeadstompOn.buffColor = Color32.op_Implicit(new Color32(byte.MaxValue, (byte)250, (byte)250, byte.MaxValue)); ((Object)FakeHeadstompOn).name = "visual_HeadstomperReady"; FakeHeadstompOn.isDebuff = false; FakeHeadstompOn.canStack = false; FakeHeadstompOn.ignoreGrowthNectar = !WConfig.BuffsAffectNectar.Value; ContentAddition.AddBuffDef(FakeHeadstompOn); FakeHeadstompOff = ScriptableObject.CreateInstance<BuffDef>(); FakeHeadstompOff.iconSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/WQoL/Buffs/texBuffHeadStompOff.png"); FakeHeadstompOff.buffColor = Color32.op_Implicit(new Color32((byte)250, (byte)250, byte.MaxValue, byte.MaxValue)); ((Object)FakeHeadstompOff).name = "visual_HeadstomperCooldown"; FakeHeadstompOff.isDebuff = false; FakeHeadstompOff.canStack = true; FakeHeadstompOff.ignoreGrowthNectar = true; ContentAddition.AddBuffDef(FakeHeadstompOff); if (WConfig.cfgBuff_Headstomper.Value && !flag) { object obj9 = <>c.<>9__13_8; if (obj9 == null) { hook_OnEnter val10 = delegate(orig_OnEnter orig, BaseHeadstompersState self) { orig.Invoke(self); if (NetworkServer.active && self is HeadstompersIdle && self.body.GetBuffCount(FakeHeadstompOn) == 0) { self.body.AddBuff(FakeHeadstompOn); } }; <>c.<>9__13_8 = val10; obj9 = (object)val10; } BaseHeadstompersState.OnEnter += (hook_OnEnter)obj9; object obj10 = <>c.<>9__13_9; if (obj10 == null) { hook_OnEnter val11 = delegate(orig_OnEnter orig, HeadstompersCooldown self) { orig.Invoke(self); if (NetworkServer.active) { ((BaseHeadstompersState)self).body.RemoveBuff(FakeHeadstompOn); float num3 = self.duration; while (0f < num3) { ((BaseHeadstompersState)self).body.AddTimedBuff(FakeHeadstompOff, num3); num3 -= 1f; } } }; <>c.<>9__13_9 = val11; obj10 = (object)val11; } HeadstompersCooldown.OnEnter += (hook_OnEnter)obj10; object obj11 = <>c.<>9__13_10; if (obj11 == null) { hook_OnDisable val12 = delegate(orig_OnDisable orig, HeadstomperBodyBehavior self) { orig.Invoke(self); if (NetworkServer.active && (Object)(object)((BaseItemBodyBehavior)self).body != (Object)null) { ((BaseItemBodyBehavior)self).body.RemoveBuff(FakeHeadstompOn); } }; <>c.<>9__13_10 = val12; obj11 = (object)val12; } HeadstomperBodyBehavior.OnDisable += (hook_OnDisable)obj11; } BuffDef val13 = LegacyResourcesAPI.Load<BuffDef>("buffdefs/MedkitHeal"); FakeShieldDelay = ScriptableObject.CreateInstance<BuffDef>(); FakeShieldDelay.iconSprite = val13.iconSprite; FakeShieldDelay.buffColor = new Color(0.3529f, 0.4863f, 0.9647f, 1f); ((Object)FakeShieldDelay).name = "visual_ShieldDelay"; FakeShieldDelay.isDebuff = false; FakeShieldDelay.canStack = false; FakeShieldDelay.isCooldown = false; FakeShieldDelay.ignoreGrowthNectar = true; ContentAddition.AddBuffDef(FakeShieldDelay); FakeShieldDelayPink = ScriptableObject.CreateInstance<BuffDef>(); FakeShieldDelayPink.iconSprite = val13.iconSprite; FakeShieldDelayPink.buffColor = new Color(1f, 0.2235f, 0.7804f, 1f); ((Object)FakeShieldDelayPink).name = "visual_ShieldDelayPink"; FakeShieldDelayPink.isDebuff = false; FakeShieldDelayPink.canStack = false; FakeShieldDelayPink.isCooldown = false; FakeShieldDelayPink.ignoreGrowthNectar = true; ContentAddition.AddBuffDef(FakeShieldDelayPink); BuffDef val14 = Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/DLC1/OutOfCombatArmor/bdOutOfCombatArmorBuff.asset").WaitForCompletion(); FakeOpalCooldown = ScriptableObject.CreateInstance<BuffDef>(); FakeOpalCooldown.iconSprite = val14.iconSprite; FakeOpalCooldown.buffColor = new Color(0.4151f, 0.4014f, 0.4014f, 1f); ((Object)FakeOpalCooldown).name = "visual_OutOfCombatArmorCooldown"; FakeOpalCooldown.isDebuff = false; FakeOpalCooldown.canStack = false; FakeOpalCooldown.isCooldown = false; FakeOpalCooldown.ignoreGrowthNectar = true; ContentAddition.AddBuffDef(FakeOpalCooldown); if (WConfig.cfgBuff_ShieldOpalCooldown.Value) { object obj12 = <>c.<>9__13_11; if (obj12 == null) { hook_OnTakeDamageServer val15 = delegate(orig_OnTakeDamageServer orig, CharacterBody self, DamageReport damageReport) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Invalid comparison between Unknown and I4 orig.Invoke(self, damageReport); if (NetworkServer.active && (int)self.teamComponent.teamIndex == 1 && self.outOfDangerStopwatch < 0.5f) { if (self.healthComponent.fullShield > 0f && self.healthComponent.shield < self.healthComponent.fullShield) { float num = 7f - self.outOfDangerStopwatch; if (self.healthComponent.itemCounts.missileVoid > 0) { self.AddTimedBuff(FakeShieldDelayPink, num); } else { self.AddTimedBuff(FakeShieldDelay, num); } } if (Object.op_Implicit((Object)(object)self.inventory)) { float num2 = 7f - self.outOfDangerStopwatch; if (self.inventory.GetItemCount(Items.OutOfCombatArmor) > 0) { self.AddTimedBuff(FakeOpalCooldown, num2); } } } }; <>c.<>9__13_11 = val15; obj12 = (object)val15; } CharacterBody.OnTakeDamageServer += (hook_OnTakeDamageServer)obj12; object obj13 = <>c.<>9__13_12; if (obj13 == null) { hook_ForceShieldRegen val16 = delegate(orig_ForceShieldRegen orig, HealthComponent self) { orig.Invoke(self); if (Object.op_Implicit((Object)(object)self.body) && self.body.HasBuff(FakeShieldDelay)) { self.body.ClearTimedBuffs(FakeShieldDelay); self.body.ClearTimedBuffs(FakeShieldDelayPink); } }; <>c.<>9__13_12 = val16; obj13 = (object)val16; } HealthComponent.ForceShieldRegen += (hook_ForceShieldRegen)obj13; } FakeFrostRelic = ScriptableObject.CreateInstance<BuffDef>(); FakeFrostRelic.iconSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/WQoL/Buffs/texBuffFrostRelic.png"); FakeFrostRelic.buffColor = Color32.op_Implicit(new Color32((byte)202, (byte)229, byte.MaxValue, byte.MaxValue)); ((Object)FakeFrostRelic).name = "visual_FrostRelicGrowth"; FakeFrostRelic.isDebuff = false; FakeFrostRelic.canStack = true; FakeFrostRelic.ignoreGrowthNectar = !WConfig.BuffsAffectNectar.Value; ContentAddition.AddBuffDef(FakeFrostRelic); if (WConfig.cfgBuff_FrostRelic.Value) { object obj14 = <>c.<>9__13_13; if (obj14 == null) { hook_OnOwnerKillOther val17 = delegate(orig_OnOwnerKillOther orig, IcicleAuraController self) { orig.Invoke(self); if (NetworkServer.active) { if (self.cachedOwnerInfo.characterBody.GetBuffCount(FakeFrostRelic) + 1 > self.maxIcicleCount) { self.cachedOwnerInfo.characterBody.RemoveOldestTimedBuff(FakeFrostRelic); } self.cachedOwnerInfo.characterBody.AddTimedBuff(FakeFrostRelic, self.icicleDuration); } }; <>c.<>9__13_13 = val17; obj14 = (object)val17; } IcicleAuraController.OnOwnerKillOther += (hook_OnOwnerKillOther)obj14; } FakeFeather = ScriptableObject.CreateInstance<BuffDef>(); FakeFeather.iconSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/WQoL/Buffs/texBuffFeather.png"); FakeFeather.buffColor = Color32.op_Implicit(new Color32((byte)99, (byte)192, byte.MaxValue, byte.MaxValue)); ((Object)FakeFeather).name = "visual_BonusJump"; FakeFeather.isDebuff = false; FakeFeather.canStack = true; FakeFeather.ignoreGrowthNectar = true; ContentAddition.AddBuffDef(FakeFeather); FakeVoidFeather = ScriptableObject.CreateInstance<BuffDef>(); FakeVoidFeather.iconSprite = FakeFeather.iconSprite; FakeVoidFeather.buffColor = new Color(0.7f, 0.45f, 1f, 1f); ((Object)FakeVoidFeather).name = "visual_BonusJumpVoid"; FakeVoidFeather.isDebuff = false; FakeVoidFeather.canStack = true; FakeVoidFeather.ignoreGrowthNectar = true; ContentAddition.AddBuffDef(FakeVoidFeather); } private static void ReplaceBuffOrderIGuess(orig_SetBuffDefs orig, BuffDef[] newBuffDefs) { try { BuffDef[] array = (BuffDef[])(object)new BuffDef[newBuffDefs.Length + 1]; int num = 0; for (int i = 0; i < newBuffDefs.Length; i++) { if ((Object)(object)newBuffDefs[i] == (Object)(object)Buffs.OutOfCombatArmorBuff) { array[num] = newBuffDefs[i]; num++; array[num] = FakeOpalCooldown; } else { array[num] = newBuffDefs[i]; } Debug.Log((object)newBuffDefs[i]); Debug.Log((object)array[num]); num++; } orig.Invoke(array); } catch (Exception ex) { Debug.LogWarning((object)ex); orig.Invoke(newBuffDefs); } } public static void ModSupport() { //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_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Invalid comparison between Unknown and I4 //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_0085: Expected O, but got Unknown //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Expected O, but got Unknown //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Expected O, but got Unknown //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Expected O, but got Unknown VV_VoidFeather = ItemCatalog.FindItemIndex("VV_ITEM_DASHQUILL_ITEM"); if (!WConfig.cfgBuff_Feather.Value) { return; } if ((int)VV_VoidFeather != -1) { FakeVoidFeather.isHidden = false; object obj = <>c.<>9__17_0; if (obj == null) { hook_OnLanded val = delegate(orig_OnLanded orig, CharacterMotor self) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (Object.op_Implicit((Object)(object)self.body) && self.body.isPlayerControlled) { self.body.SetBuffCount(FakeFeather.buffIndex, self.body.inventory.GetItemCount(Items.Feather)); self.body.SetBuffCount(FakeVoidFeather.buffIndex, self.body.inventory.GetItemCount(VV_VoidFeather)); if (!NetworkServer.active) { ((Component)self).GetComponent<FeatherTrackerClients>().SetVal(self.body.GetBuffCount(FakeFeather), self.body.GetBuffCount(FakeVoidFeather)); } } }; <>c.<>9__17_0 = val; obj = (object)val; } CharacterMotor.OnLanded += (hook_OnLanded)obj; } else { object obj2 = <>c.<>9__17_1; if (obj2 == null) { hook_OnLanded val2 = delegate(orig_OnLanded orig, CharacterMotor self) { //IL_0034: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (Object.op_Implicit((Object)(object)self.body) && self.body.isPlayerControlled) { self.body.SetBuffCount(FakeFeather.buffIndex, self.body.inventory.GetItemCount(Items.Feather)); if (!NetworkServer.active) { ((Component)self).GetComponent<FeatherTrackerClients>().SetVal(self.body.GetBuffCount(FakeFeather), self.body.GetBuffCount(FakeVoidFeather)); } } }; <>c.<>9__17_1 = val2; obj2 = (object)val2; } CharacterMotor.OnLanded += (hook_OnLanded)obj2; } object obj3 = <>O.<0>__FeatherRemoveBuffs; if (obj3 == null) { hook_ApplyJumpVelocity val3 = FeatherRemoveBuffs; <>O.<0>__FeatherRemoveBuffs = val3; obj3 = (object)val3; } GenericCharacterMain.ApplyJumpVelocity += (hook_ApplyJumpVelocity)obj3; object obj4 = <>O.<1>__FeatherClient; if (obj4 == null) { hook_ReadBuffs val4 = FeatherClient; <>O.<1>__FeatherClient = val4; obj4 = (object)val4; } CharacterBody.ReadBuffs += (hook_ReadBuffs)obj4; CharacterBody.onBodyStartGlobal += CharacterBody_onBodyStartGlobal; } private static void CharacterBody_onBodyStartGlobal(CharacterBody obj) { if (!NetworkServer.active && obj.isPlayerControlled) { ((Component)obj).gameObject.AddComponent<FeatherTrackerClients>(); } } private static void FeatherClient(orig_ReadBuffs orig, CharacterBody self, NetworkReader reader) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, reader); if (self.isPlayerControlled) { FeatherTrackerClients component = ((Component)self).GetComponent<FeatherTrackerClients>(); if (Object.op_Implicit((Object)(object)component)) { self.SetBuffCount(FakeFeather.buffIndex, component.amount); self.SetBuffCount(FakeVoidFeather.buffIndex, component.amountVoid); } } } private static void FeatherRemoveBuffs(orig_ApplyJumpVelocity orig, CharacterMotor characterMotor, CharacterBody characterBody, float horizontalBonus, float verticalBonus, bool vault) { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(characterMotor, characterBody, horizontalBonus, verticalBonus, vault); if (characterBody.isPlayerControlled && characterMotor.jumpCount + 1 > characterBody.baseJumpCount) { characterBody.SetBuffCount(FakeFeather.buffIndex, characterBody.GetBuffCount(FakeFeather) - 1); characterBody.SetBuffCount(FakeVoidFeather.buffIndex, characterBody.GetBuffCount(FakeVoidFeather) - 1); if (!NetworkServer.active) { ((Component)characterBody).GetComponent<FeatherTrackerClients>().SetVal(characterBody.GetBuffCount(FakeFeather), characterBody.GetBuffCount(FakeVoidFeather)); } } } public static void GetDotDef() { DotController.GetDotDef((DotIndex)1).terminalTimedBuff = null; DotController.GetDotDef((DotIndex)1).terminalTimedBuffDuration = 0f; DotController.GetDotDef((DotIndex)7).terminalTimedBuff = null; DotController.GetDotDef((DotIndex)7).terminalTimedBuffDuration = 0f; DotController.GetDotDef((DotIndex)2).associatedBuff = FakeHellFire; DotController.GetDotDef((DotIndex)3).associatedBuff = FakePercentBurn; } } public class FeatherTrackerClients : MonoBehaviour { public int amount = 0; public int amountVoid = 0; public void SetVal(int one, int two) { amount = one; amountVoid = two; } } public class ConsumedItems { [CompilerGenerated] private static class <>O { public static hook_OnInteractionBegin <0>__UsedKeyGiver; public static hook_OnBeadReset <1>__CharacterMaster_OnBeadReset; } public static ItemDef UsedRustedKey; public static ItemDef UsedEncrustedKey; public static ItemDef UsedPrayerBeads; public static void Start() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Expected O, but got Unknown CreateItems(); if (WConfig.cfgIconsUsedKey.Value) { object obj = <>O.<0>__UsedKeyGiver; if (obj == null) { hook_OnInteractionBegin val = UsedKeyGiver; <>O.<0>__UsedKeyGiver = val; obj = (object)val; } PurchaseInteraction.OnInteractionBegin += (hook_OnInteractionBegin)obj; } if (WConfig.cfgIconsUsedPrayer.Value) { object obj2 = <>O.<1>__CharacterMaster_OnBeadReset; if (obj2 == null) { hook_OnBeadReset val2 = CharacterMaster_OnBeadReset; <>O.<1>__CharacterMaster_OnBeadReset = val2; obj2 = (object)val2; } CharacterMaster.OnBeadReset += (hook_OnBeadReset)obj2; } } private static void CharacterMaster_OnBeadReset(orig_OnBeadReset orig, CharacterMaster self, bool gainedStats) { orig.Invoke(self, gainedStats); if (gainedStats && NetworkServer.active) { self.inventory.GiveItem(UsedPrayerBeads, 1); } } public static void CreateItems() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Expected O, but got Unknown //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Expected O, but got Unknown //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_02a1: Unknown result type (might be due to invalid IL or missing references) //IL_02a7: Expected O, but got Unknown UsedRustedKey = ScriptableObject.CreateInstance<ItemDef>(); ((Object)UsedRustedKey).name = "TreasureCacheConsumed"; UsedRustedKey.deprecatedTier = (ItemTier)5; UsedRustedKey.pickupModelPrefab = LegacyResourcesAPI.Load<ItemDef>("itemdefs/TreasureCache").pickupModelPrefab; UsedRustedKey.pickupIconSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/WQoL/Items/UsedKey.png"); UsedRustedKey.nameToken = "ITEM_TREASURECACHECONSUMED_NAME"; UsedRustedKey.pickupToken = "ITEM_TREASURECACHECONSUMED_DESC"; UsedRustedKey.descriptionToken = "ITEM_TREASURECACHECONSUMED_DESC"; UsedRustedKey.loreToken = ""; UsedRustedKey.hidden = false; UsedRustedKey.canRemove = false; UsedRustedKey.isConsumed = true; UsedRustedKey.tags = (ItemTag[])(object)new ItemTag[1] { (ItemTag)9 }; CustomItem val = new CustomItem(UsedRustedKey, (ItemDisplayRule[])(object)new ItemDisplayRule[0]); ItemAPI.Add(val); UsedEncrustedKey = ScriptableObject.CreateInstance<ItemDef>(); ((Object)UsedEncrustedKey).name = "TreasureCacheVoidConsumed"; UsedEncrustedKey.deprecatedTier = (ItemTier)5; UsedEncrustedKey.pickupModelPrefab = LegacyResourcesAPI.Load<ItemDef>("itemdefs/TreasureCacheVoid").pickupModelPrefab; UsedEncrustedKey.pickupIconSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/WQoL/Items/UsedKeyVoid.png"); UsedEncrustedKey.nameToken = "ITEM_TREASURECACHEVOIDCONSUMED_NAME"; UsedEncrustedKey.pickupToken = "ITEM_TREASURECACHEVOIDCONSUMED_DESC"; UsedEncrustedKey.descriptionToken = "ITEM_TREASURECACHEVOIDCONSUMED_DESC"; UsedEncrustedKey.loreToken = ""; UsedEncrustedKey.hidden = false; UsedEncrustedKey.canRemove = false; UsedEncrustedKey.isConsumed = true; UsedEncrustedKey.tags = (ItemTag[])(object)new ItemTag[1] { (ItemTag)9 }; CustomItem val2 = new CustomItem(UsedEncrustedKey, (ItemDisplayRule[])(object)new ItemDisplayRule[0]); ItemAPI.Add(val2); ItemDef val3 = Addressables.LoadAssetAsync<ItemDef>((object)"RoR2/DLC2/Items/ExtraStatsOnLevelUp/ExtraStatsOnLevelUp.asset").WaitForCompletion(); UsedPrayerBeads = ScriptableObject.CreateInstance<ItemDef>(); ((Object)UsedPrayerBeads).name = "ExtraStatsOnLevelUpConsumed"; UsedPrayerBeads.deprecatedTier = (ItemTier)5; UsedPrayerBeads.pickupModelPrefab = val3.pickupModelPrefab; UsedPrayerBeads.pickupIconSprite = Assets.Bundle.LoadAsset<Sprite>("Assets/WQoL/Items/UsedBeads.png"); UsedPrayerBeads.nameToken = "ITEM_EXTRASTATSONLEVELUP_CONSUMED_NAME"; UsedPrayerBeads.pickupToken = "ITEM_EXTRASTATSONLEVELUP_CONSUMED_PICKUP"; UsedPrayerBeads.descriptionToken = "ITEM_EXTRASTATSONLEVELUP_CONSUMED_DESC"; UsedPrayerBeads.loreToken = "Lore?"; UsedPrayerBeads.hidden = false; UsedPrayerBeads.canRemove = false; UsedPrayerBeads.isConsumed = true; UsedPrayerBeads.tags = (ItemTag[])(object)new ItemTag[1] { (ItemTag)9 }; val2 = new CustomItem(UsedPrayerBeads, (ItemDisplayRule[])(object)new ItemDisplayRule[0]); ItemAPI.Add(val2); } public static void UsedKeyGiver(orig_OnInteractionBegin orig, PurchaseInteraction self, Interactor activator) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Invalid comparison between Unknown and I4 //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Invalid comparison between Unknown and I4 //IL_0060: 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_00b4: 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) orig.Invoke(self, activator); if (NetworkServer.active && !self.available) { if ((int)self.costType == 12) { ((Component)activator).GetComponent<CharacterBody>().inventory.GiveItem(UsedRustedKey, self.cost); CharacterMasterNotificationQueue.PushItemTransformNotification(((Component)activator).GetComponent<CharacterBody>().master, Items.TreasureCache.itemIndex, UsedRustedKey.itemIndex, (TransformationType)0); } else if ((int)self.costType == 13) { ((Component)activator).GetComponent<CharacterBody>().inventory.GiveItem(UsedEncrustedKey, self.cost); CharacterMasterNotificationQueue.PushItemTransformNotification(((Component)activator).GetComponent<CharacterBody>().master, Items.TreasureCacheVoid.itemIndex, UsedEncrustedKey.itemIndex, (TransformationType)0); } } } } public class WConfig { public static ConfigFile ConfigFile_Server = new ConfigFile(Paths.ConfigPath + "\\Wolfo.WolfoQoL_Server.cfg", true); public static ConfigEntry<bool> cfgIconsUsedKey; public static ConfigEntry<bool> cfgIconsUsedPrayer; public static ConfigEntry<bool> BuffsAffectNectar; public static ConfigEntry<bool> BuffsAffectDeathMark; public static ConfigEntry<bool> cfgBuff_BugFlight; public static ConfigEntry<bool> cfgBuff_Strides; public static ConfigEntry<bool> cfgBuff_SprintArmor; public static ConfigEntry<bool> cfgBuff_Frozen; public static ConfigEntry<bool> cfgBuff_Headstomper; public static ConfigEntry<bool> cfgBuff_Feather; public static ConfigEntry<bool> cfgBuff_ShieldOpalCooldown; public static ConfigEntry<bool> cfgBuff_FrostRelic; public static ConfigEntry<bool> cfgBuff_Shocked; public static void Start() { Debug.Log((object)"WQoL InitConfig"); BuffConfig(); InitConfig(); RiskConfig(); } public static void InitConfig() { cfgIconsUsedKey = ConfigFile_Server.Bind<bool>("Extra Icons", "Consumed Rusted Keys", true, "Just like how Dio leaves a Consumed Dio"); cfgIconsUsedPrayer = ConfigFile_Server.Bind<bool>("Extra Icons", "Consumed Prayer Beads", true, "This should tell you how many stats a player got from their Prayer Beads."); } public static void RiskConfig() { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Expected O, but got Unknown ModSettingsManager.SetModDescription("Random assortment of Quality of Life. Required by every player."); List<ConfigEntry<bool>> list = new List<ConfigEntry<bool>>(); ConfigEntryBase[] configEntries = ConfigFile_Server.GetConfigEntries(); ConfigEntryBase[] array = configEntries; foreach (ConfigEntryBase val in array) { if (val.SettingType == typeof(bool)) { ConfigEntry<bool> val2 = (ConfigEntry<bool>)(object)val; ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(val2, true)); } else { Debug.LogWarning((object)("Could not add config " + val.Definition.Key + " of type : " + val.SettingType)); } } } public static void BuffConfig() { BuffsAffectNectar = ConfigFile_Server.Bind<bool>("Buffs", "Mod Buffs affect Nectar", false, "Should various buffs added by mod, (Rose Buckler, Head Stomper, Frost Relic) count for Growth Nectar."); cfgBuff_Frozen = ConfigFile_Server.Bind<bool>("Buffs", "Frozen", true, "Icon for; 1 Stack per 0.5s of being frozen, to help visualize how long things are frozen for."); cfgBuff_Feather = ConfigFile_Server.Bind<bool>("Buffs", "Hopoo Feathers", true, "Icon for; Extra jumps granted by Hopoo Feathers, to know how many jumps you have left, useful especially if you have a lot of them.\nAlso works for VanillaVoids : Quill"); cfgBuff_ShieldOpalCooldown = ConfigFile_Server.Bind<bool>("Buffs", "Shield & Opal Cooldown", true, "Icon for; Shield and Opal being on cooldown. This does not come in stacks, so a mod that adds visual buff timers is recommended."); cfgBuff_Headstomper = ConfigFile_Server.Bind<bool>("Buffs", "Headstomper", true, "Ready and Cooldown buff, like Bands or other items."); cfgBuff_FrostRelic = ConfigFile_Server.Bind<bool>("Buffs", "Frost Relic", true, "Icon for; Frost Relic kill stacks."); cfgBuff_Strides = ConfigFile_Server.Bind<bool>("Buffs", "Strides of Heresy", true, "Icon for; Being in Strides of Heresy. Duration not visible by default"); cfgBuff_SprintArmor = ConfigFile_Server.Bind<bool>("Buffs", "Rose Buckler", true, "Icon for; Rose Buckler being active. Weeping Fungus has a buff, why not this."); cfgBuff_BugFlight = ConfigFile_Server.Bind<bool>("Buffs", "Milky Chrysalis", true, "Duration not visible by default, but will tell you when you start descending."); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("Wolfo.WolfoQoL_Server", "WolfoQoL_Extras", "4.0.0")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class WolfoMain : BaseUnityPlugin { private static readonly Random random = new Random(); public static bool ClientModInstalled = false; public void Awake() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Expected O, but got Unknown WConfig.Start(); ClientModInstalled = Chainloader.PluginInfos.ContainsKey("Wolfo.WolfoQoL_Client"); if (!ClientModInstalled) { Debug.LogWarning((object)"WolfoQoL_Server without WolfoQoL_Client"); return; } Texture2D val = Assets.Bundle.LoadAsset<Texture2D>("Assets/WQoL/icon.png"); ModSettingsManager.SetModIcon(Sprite.Create(val, new Rect(0f, 0f, 256f, 256f), new Vector2(0.5f, 0.5f))); BuffTimers.Buffs_NewBuffs(); ConsumedItems.Start(); ((ResourceAvailability)(ref GameModeCatalog.availability)).CallWhenAvailable((Action)ModSupport); MainMenuController.Start += new hook_Start(OneTimeOnlyLateRunner); } internal static void ModSupport() { BuffTimers.ModSupport(); } public void OneTimeOnlyLateRunner(orig_Start orig, MainMenuController self) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown orig.Invoke(self); BuffTimers.GetDotDef(); MainMenuController.Start -= new hook_Start(OneTimeOnlyLateRunner); } } }