Decompiled source of ButterscotchandRosesBaseMod v0.1.3
butterscotchnroses.dll
Decompiled a week ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using AllyNames; using BNR.items; using BNR.patches; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using CoolerEclipse; using EntityStates; using EntityStates.Executioner2; using EntityStates.JunkCube; using GoldenCoastPlusRevived.Modules; using HG; using HG.Reflection; using HarmonyLib; using Inferno.Stat_AI; using Microsoft.CodeAnalysis; using Mono.Cecil; using Mono.Cecil.Cil; using MonoMod.Cil; using On.EntityStates.JunkCube; using On.RoR2; using On.RoR2.Hologram; using On.RoR2.UI; using On.RoR2.UI.SkinControllers; using R2API; using RiskOfOptions; using RiskOfOptions.OptionConfigs; using RiskOfOptions.Options; using RoR2; using RoR2.Hologram; using RoR2.Items; using RoR2.UI; using RoR2.UI.SkinControllers; using RoR2BepInExPack.GameAssetPaths.Version_1_35_0; using RoR2BepInExPack.GameAssetPathsBetter; using SS2; using ShaderSwapper; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.Rendering.PostProcessing; using UnityEngine.SceneManagement; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: OptIn] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("butterscotchnroses")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+456537ce7bf07415f989f8efb4042e2b961d082a")] [assembly: AssemblyProduct("butterscotchnroses")] [assembly: AssemblyTitle("butterscotchnroses")] [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] 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 ProdzModpackUtils { public class Utils { public static Color TRANSPARENT = new Color(0f, 0f, 0f, 0f); public static Sprite GetComposite(Texture2D bg, Texture2D fg) { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Expected O, but got Unknown //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: 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_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: 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_00f4: Unknown result type (might be due to invalid IL or missing references) Vector2 val = default(Vector2); ((Vector2)(ref val))..ctor((float)Mathf.Max(((Texture)bg).width, ((Texture)fg).width), (float)Mathf.Max(((Texture)bg).height, ((Texture)fg).height)); Vector2 val2 = default(Vector2); ((Vector2)(ref val2))..ctor(Mathf.Floor(((float)((Texture)bg).width - val.x) / 2f), Mathf.Floor(((float)((Texture)bg).width - val.y) / 2f)); Vector2 val3 = default(Vector2); ((Vector2)(ref val3))..ctor(Mathf.Floor(((float)((Texture)fg).width - val.x) / 2f), Mathf.Floor(((float)((Texture)fg).width - val.y) / 2f)); Texture2D val4 = new Texture2D((int)val.x, (int)val.y); for (int i = 0; (float)i < val.x; i++) { for (int j = 0; (float)j < val.y; j++) { val4.SetPixel(i, j, Over(Pixel(bg, (float)i + val2.x, (float)j + val2.y), Pixel(fg, (float)i + val3.x, (float)j + val3.y))); } } return Sprite.Create(val4, new Rect(0f, 0f, val.x, val.y), new Vector2(0.5f, 0.5f), 3f); } public static Color Pixel(Texture2D img, float x, float y) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) if (0f > x || x >= (float)((Texture)img).width || 0f > y || y >= (float)((Texture)img).height) { return TRANSPARENT; } return img.GetPixel((int)x, (int)y); } public static Color Over(Color bg, Color fg) { //IL_0000: 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_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) float num = bg.a * (1f - fg.a) + fg.a; return Color.op_Implicit((Color.op_Implicit(fg) * fg.a + Color.op_Implicit(bg) * bg.a * (1f - fg.a)) / num); } public static Sprite Load(params string[] path) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown Size dimensions = ImageHelper.GetDimensions(Path.Combine(path)); byte[] array = File.ReadAllBytes(Path.Combine(path)); Texture2D val = new Texture2D(dimensions.Width, dimensions.Height, (TextureFormat)3, false) { filterMode = (FilterMode)2 }; ImageConversion.LoadImage(val, array); return Sprite.Create(val, new Rect(0f, 0f, (float)dimensions.Width, (float)dimensions.Height), new Vector2(0.5f, 0.5f), 3f); } } public static class ImageHelper { private const string errorMessage = "Could not recognize image format."; private static Dictionary<byte[], Func<BinaryReader, Size>> imageFormatDecoders = new Dictionary<byte[], Func<BinaryReader, Size>> { { new byte[2] { 66, 77 }, DecodeBitmap }, { new byte[6] { 71, 73, 70, 56, 55, 97 }, DecodeGif }, { new byte[6] { 71, 73, 70, 56, 57, 97 }, DecodeGif }, { new byte[8] { 137, 80, 78, 71, 13, 10, 26, 10 }, DecodePng }, { new byte[2] { 255, 216 }, DecodeJfif } }; public static Size GetDimensions(string path) { using BinaryReader binaryReader = new BinaryReader(File.OpenRead(path)); try { return GetDimensions(binaryReader); } catch (ArgumentException ex) { if (ex.Message.StartsWith("Could not recognize image format.")) { throw new ArgumentException("Could not recognize image format.", "path", ex); } throw ex; } } public static Size GetDimensions(BinaryReader binaryReader) { int num = imageFormatDecoders.Keys.OrderByDescending((byte[] x) => x.Length).First().Length; byte[] array = new byte[num]; for (int i = 0; i < num; i++) { array[i] = binaryReader.ReadByte(); foreach (KeyValuePair<byte[], Func<BinaryReader, Size>> imageFormatDecoder in imageFormatDecoders) { if (array.StartsWith(imageFormatDecoder.Key)) { return imageFormatDecoder.Value(binaryReader); } } } throw new ArgumentException("Could not recognize image format.", "binaryReader"); } private static bool StartsWith(this byte[] thisBytes, byte[] thatBytes) { for (int i = 0; i < thatBytes.Length; i++) { if (thisBytes[i] != thatBytes[i]) { return false; } } return true; } private static short ReadLittleEndianInt16(this BinaryReader binaryReader) { byte[] array = new byte[2]; for (int i = 0; i < 2; i++) { array[1 - i] = binaryReader.ReadByte(); } return BitConverter.ToInt16(array, 0); } private static int ReadLittleEndianInt32(this BinaryReader binaryReader) { byte[] array = new byte[4]; for (int i = 0; i < 4; i++) { array[3 - i] = binaryReader.ReadByte(); } return BitConverter.ToInt32(array, 0); } private static Size DecodeBitmap(BinaryReader binaryReader) { binaryReader.ReadBytes(16); int width = binaryReader.ReadInt32(); int height = binaryReader.ReadInt32(); return new Size(width, height); } private static Size DecodeGif(BinaryReader binaryReader) { short width = binaryReader.ReadInt16(); int height = binaryReader.ReadInt16(); return new Size(width, height); } private static Size DecodePng(BinaryReader binaryReader) { binaryReader.ReadBytes(8); int width = binaryReader.ReadLittleEndianInt32(); int height = binaryReader.ReadLittleEndianInt32(); return new Size(width, height); } private static Size DecodeJfif(BinaryReader binaryReader) { while (binaryReader.ReadByte() == byte.MaxValue) { byte num = binaryReader.ReadByte(); short num2 = binaryReader.ReadLittleEndianInt16(); if (num == 192) { binaryReader.ReadByte(); int height = binaryReader.ReadLittleEndianInt16(); return new Size(binaryReader.ReadLittleEndianInt16(), height); } binaryReader.ReadBytes(num2 - 2); } throw new ArgumentException("Could not recognize image format."); } } } namespace BNR { [BepInPlugin("zzzicebro.BNR", "BNR", "0.1.3")] public class butterscotchnroses : BaseUnityPlugin { public const string PluginGUID = "zzzicebro.BNR"; public const string PluginAuthor = "icebro"; public const string PluginName = "BNR"; public const string PluginVersion = "0.1.3"; public static AssetBundle carvingKitBundle; private static ConfigEntry<Color> skyboxColor; private static Material skyboxMaterial; private static List<uint> sounds = new List<uint>(); public void Awake() { //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Expected O, but got Unknown //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Expected O, but got Unknown //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Expected O, but got Unknown Log.Init(((BaseUnityPlugin)this).Logger); ((BaseUnityPlugin)this).Logger.LogDebug((object)"loading mod !!"); carvingKitBundle = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "carvingkit_assets")); ((MonoBehaviour)this).StartCoroutine(ShaderSwapper.UpgradeStubbedShadersAsync(carvingKitBundle)); Harmony harmony = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID); foreach (Type item in from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(PatchBase)) select type) { try { PatchBase obj = (PatchBase)Activator.CreateInstance(item); obj.Config(((BaseUnityPlugin)this).Config); obj.Init(harmony); } catch (Exception data) { Log.Warning("failed to patch something ! probably fine if you dont have whatever mod that was attempted to be patched enabled ,..,,."); Log.Warning(data); } } foreach (Type item2 in from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(BuffBase)) select type) { ((BuffBase)Activator.CreateInstance(item2)).AddBuff(); } foreach (Type item3 in from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(ItemBase)) select type) { ((ItemBase)Activator.CreateInstance(item3)).Init(((BaseUnityPlugin)this).Config); } SceneDirector.Start += new hook_Start(SceneDirectorOnStart); skyboxColor = ((BaseUnityPlugin)this).Config.Bind<Color>("BNR - testscene", "skyboxColor", BNRUtils.Color255(152, 122, 144), "tint of skybox in testscene !!!"); ModSettingsManager.AddOption((BaseOption)new ColorOption(skyboxColor)); } private void SceneDirectorOnStart(orig_Start orig, SceneDirector self) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: 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) orig.Invoke(self); Scene activeScene = SceneManager.GetActiveScene(); if (((Scene)(ref activeScene)).name == "testscene") { Material skybox = RenderSettings.skybox; activeScene = SceneManager.GetActiveScene(); Log.Debug($"new scene !! {skybox} {((Scene)(ref activeScene)).name}"); if ((Object)(object)skyboxMaterial == (Object)null) { skyboxMaterial = Object.Instantiate<Material>(RenderSettings.skybox); skyboxMaterial.SetColor("_Tint", skyboxColor.Value); } RenderSettings.skybox = skyboxMaterial; } } private void Update() { } [ConCommand(/*Could not decode attribute arguments.*/)] public static void akplaysound(ConCommandArgs args) { //IL_003c: Unknown result type (might be due to invalid IL or missing references) Debug.Log((object)("args = " + ((ConCommandArgs)(ref args))[0])); Debug.Log((object)$"sender body = {((ConCommandArgs)(ref args)).senderBody}"); uint num = AkSoundEngine.PostEvent(((ConCommandArgs)(ref args))[0], ((Component)((ConCommandArgs)(ref args)).senderBody).gameObject); Debug.Log((object)$"sound id = {num}"); sounds.Add(num); } [ConCommand(/*Could not decode attribute arguments.*/)] public static void akstopsound(ConCommandArgs args) { Debug.Log((object)$"sender body = {((ConCommandArgs)(ref args)).senderBody}"); foreach (uint item in sounds.ToList()) { AkSoundEngine.StopPlayingID(item); Debug.Log((object)$"stopped sound {item} !!!"); sounds.Remove(item); } } [ConCommand(/*Could not decode attribute arguments.*/)] [ConCommand(/*Could not decode attribute arguments.*/)] public static void spawnEffect(ConCommandArgs args) { //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: 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_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Expected O, but got Unknown float scale = 1f; if (((ConCommandArgs)(ref args)).Count > 1) { scale = Convert.ToSingle(((ConCommandArgs)(ref args))[1]); } Debug.Log((object)("args = " + ((ConCommandArgs)(ref args))[0] + " " + scale)); EffectDef val = null; EffectDef[] entries = EffectCatalog.entries; foreach (EffectDef val2 in entries) { if (val2.prefabName.Contains(((ConCommandArgs)(ref args))[0])) { val = val2; break; } } if (val == null) { Log.Warning("couldnt find effect " + ((ConCommandArgs)(ref args))[0] + " !!!"); return; } EffectManager.SpawnEffect(val.index, new EffectData { origin = ((ConCommandArgs)(ref args)).senderBody.transform.position, scale = scale, rotation = Util.QuaternionSafeLookRotation(Vector3.up) }, true); } } internal static class Log { private static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void Debug(object data) { } internal static void Error(object data) { _logSource.LogError(data); } internal static void Fatal(object data) { _logSource.LogFatal(data); } internal static void Info(object data) { _logSource.LogInfo(data); } internal static void Message(object data) { _logSource.LogMessage(data); } internal static void Warning(object data) { _logSource.LogWarning(data); } } public class buttonrecolors : PatchBase<buttonrecolors> { [CompilerGenerated] private static class <>O { public static hook_Awake <0>__ButtonSkinControllerOnAwake; public static hook_Awake <1>__PanelSkinControllerOnAwake; } private ConfigEntry<bool> enabled; private static ConfigEntry<bool> colorButtons; private static ConfigEntry<Color> buttonNorm; private static ConfigEntry<Color> buttonHigh; private static ConfigEntry<Color> buttonPress; private static ConfigEntry<Color> buttonSelect; public override void Init(Harmony harmony) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Expected O, but got Unknown //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Expected O, but got Unknown if (enabled.Value) { object obj = <>O.<0>__ButtonSkinControllerOnAwake; if (obj == null) { hook_Awake val = ButtonSkinControllerOnAwake; <>O.<0>__ButtonSkinControllerOnAwake = val; obj = (object)val; } ButtonSkinController.Awake += (hook_Awake)obj; object obj2 = <>O.<1>__PanelSkinControllerOnAwake; if (obj2 == null) { hook_Awake val2 = PanelSkinControllerOnAwake; <>O.<1>__PanelSkinControllerOnAwake = val2; obj2 = (object)val2; } PanelSkinController.Awake += (hook_Awake)obj2; } } private static void PanelSkinControllerOnAwake(orig_Awake orig, PanelSkinController self) { //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0097: 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) orig.Invoke(self); if (colorButtons.Value && !((Object)((Component)self).gameObject).name.Contains("ObjectivePanel") && !((Object)((Component)self).gameObject).name.Contains("NakedButton (Quit)")) { Image component = ((Component)self).gameObject.GetComponent<Image>(); if (!((Object)((Component)component).gameObject).name.Contains("RuleBook")) { ((Graphic)component).color = BNRUtils.Color255(buttonNorm.Value.r, buttonNorm.Value.g, buttonNorm.Value.b, ((Graphic)component).color.a); } } } private static void ButtonSkinControllerOnAwake(orig_Awake orig, ButtonSkinController self) { //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (!colorButtons.Value) { return; } HGButton component = ((Component)self).gameObject.GetComponent<HGButton>(); if (Object.op_Implicit((Object)(object)component) && !((Object)component).name.Contains("SurvivorIcon") && !((Object)((Component)component).gameObject).name.Contains("Choice") && !((Object)((Component)component).gameObject).name.Contains("Loadout") && !((Object)((Component)component).gameObject).name.Contains("ObjectivePanel") && !((Object)((Component)component).gameObject).name.Contains("NakedButton (Quit)")) { if (((Object)((Component)component).gameObject).name.Contains("Music&More")) { ((Component)component).gameObject.SetActive(false); } ColorBlock colors = ((Selectable)component).colors; ((ColorBlock)(ref colors)).normalColor = buttonNorm.Value; ((ColorBlock)(ref colors)).highlightedColor = buttonHigh.Value; ((ColorBlock)(ref colors)).pressedColor = buttonPress.Value; ((ColorBlock)(ref colors)).selectedColor = buttonSelect.Value; ((Selectable)component).colors = colors; } } public override void Config(ConfigFile config) { //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Expected O, but got Unknown //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Expected O, but got Unknown //IL_00b6: 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_00d9: Expected O, but got Unknown //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Expected O, but got Unknown //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Expected O, but got Unknown enabled = config.Bind<bool>("BNR - UI", "enable patches for button recolors", true, ""); BNRUtils.CheckboxConfig(enabled); enabled.SettingChanged += delegate { //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown //IL_001d: 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: Expected O, but got Unknown //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Expected O, but got Unknown //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Expected O, but got Unknown if (enabled.Value) { object obj = <>O.<0>__ButtonSkinControllerOnAwake; if (obj == null) { hook_Awake val = ButtonSkinControllerOnAwake; <>O.<0>__ButtonSkinControllerOnAwake = val; obj = (object)val; } ButtonSkinController.Awake += (hook_Awake)obj; object obj2 = <>O.<1>__PanelSkinControllerOnAwake; if (obj2 == null) { hook_Awake val2 = PanelSkinControllerOnAwake; <>O.<1>__PanelSkinControllerOnAwake = val2; obj2 = (object)val2; } PanelSkinController.Awake += (hook_Awake)obj2; } else { object obj3 = <>O.<0>__ButtonSkinControllerOnAwake; if (obj3 == null) { hook_Awake val3 = ButtonSkinControllerOnAwake; <>O.<0>__ButtonSkinControllerOnAwake = val3; obj3 = (object)val3; } ButtonSkinController.Awake -= (hook_Awake)obj3; object obj4 = <>O.<1>__PanelSkinControllerOnAwake; if (obj4 == null) { hook_Awake val4 = PanelSkinControllerOnAwake; <>O.<1>__PanelSkinControllerOnAwake = val4; obj4 = (object)val4; } PanelSkinController.Awake -= (hook_Awake)obj4; } }; colorButtons = config.Bind<bool>("BNR - UI", "change buttons colors", false, "whether or not to use custom menu button colors,..,"); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(colorButtons)); buttonNorm = config.Bind<Color>("BNR - UI", "normal button color", BNRUtils.Color255(110, 83, 120), ""); ModSettingsManager.AddOption((BaseOption)new ColorOption(buttonNorm)); buttonHigh = config.Bind<Color>("BNR - UI", "highlighted button coor", BNRUtils.Color255(255, 177, 245), ""); ModSettingsManager.AddOption((BaseOption)new ColorOption(buttonHigh)); buttonPress = config.Bind<Color>("BNR - UI", "pressed button color", BNRUtils.Color255(192, 113, 182), ""); ModSettingsManager.AddOption((BaseOption)new ColorOption(buttonPress)); buttonSelect = config.Bind<Color>("BNR - UI", "selected button color", BNRUtils.Color255(255, 177, 238), ""); ModSettingsManager.AddOption((BaseOption)new ColorOption(buttonSelect)); } } public class drifter : PatchBase<drifter> { private ConfigEntry<bool> enabled; private ConfigEntry<bool> neverKillCubes; private ConfigEntry<int> cubeCount; public override void Init(Harmony harmony) { if (enabled.Value) { applyHooks(); } } public void applyHooks() { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Expected O, but got Unknown //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown if (enabled.Value) { CharacterMaster.GetDeployableSameSlotLimit += new hook_GetDeployableSameSlotLimit(CharacterMasterOnGetDeployableSameSlotLimit); Idle.OnEnter += new hook_OnEnter(IdleOnOnEnter); } else { CharacterMaster.GetDeployableSameSlotLimit -= new hook_GetDeployableSameSlotLimit(CharacterMasterOnGetDeployableSameSlotLimit); Idle.OnEnter -= new hook_OnEnter(IdleOnOnEnter); } } private void IdleOnOnEnter(orig_OnEnter orig, Idle self) { orig.Invoke(self); if (neverKillCubes.Value) { ((EntityState)self).fixedAge = float.NegativeInfinity; } } private int CharacterMasterOnGetDeployableSameSlotLimit(orig_GetDeployableSameSlotLimit orig, CharacterMaster self, DeployableSlot slot) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Invalid comparison between Unknown and I4 //IL_0007: Unknown result type (might be due to invalid IL or missing references) if ((int)slot != 22) { return orig.Invoke(self, slot); } return cubeCount.Value; } public override void Config(ConfigFile config) { enabled = config.Bind<bool>("BNR - drifter", "enable patches for drifter", true, ""); BNRUtils.CheckboxConfig(enabled); enabled.SettingChanged += delegate { applyHooks(); }; cubeCount = config.Bind<int>("BNR - drifter", "junk cube count", 20, "limit of junk cubes !!"); BNRUtils.SliderConfig(4, 300, cubeCount); neverKillCubes = config.Bind<bool>("BNR - drifter", "never kill cubes !!!", true, "byeah ,,."); BNRUtils.CheckboxConfig(neverKillCubes); } } public class dronevisibility : PatchBase<dronevisibility> { private ConfigEntry<bool> enabled; private ConfigEntry<bool> useSillyMaterials; private ConfigEntry<Color> sillyMaterialColor; private ConfigEntry<Color> operatorIndicatorColor; private ConfigEntry<float> visibilityDistance; private Material operatorMat; public override void Init(Harmony harmony) { //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_002e: Unknown result type (might be due to invalid IL or missing references) operatorMat = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC3/Drone Tech/matDroneTechCarryRings.mat").WaitForCompletion()); operatorMat.SetColor("_TintColor", operatorIndicatorColor.Value); Hook(); } private void Hook() { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Expected O, but got Unknown //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown if (enabled.Value) { HologramProjector.BuildHologram += new hook_BuildHologram(HologramProjectorOnBuildHologram); SummonMasterBehavior.OnEnable += new hook_OnEnable(SummonMasterBehaviorOnOnEnable); } else { HologramProjector.BuildHologram -= new hook_BuildHologram(HologramProjectorOnBuildHologram); SummonMasterBehavior.OnEnable -= new hook_OnEnable(SummonMasterBehaviorOnOnEnable); } } private void SummonMasterBehaviorOnOnEnable(orig_OnEnable orig, SummonMasterBehavior self) { orig.Invoke(self); if (Object.op_Implicit((Object)(object)((Component)self).GetComponent<DroneAvailability>())) { HologramProjector component = ((Component)self).GetComponent<HologramProjector>(); if (Object.op_Implicit((Object)(object)component)) { component.displayDistance = visibilityDistance.Value; } else { Log.Warning("failed to find projector on drone !!"); } } } private void HologramProjectorOnBuildHologram(orig_BuildHologram orig, HologramProjector self) { //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Expected O, but got Unknown //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_0108: 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_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) //IL_0263: Unknown result type (might be due to invalid IL or missing references) //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_028b: Unknown result type (might be due to invalid IL or missing references) //IL_0295: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (!Object.op_Implicit((Object)(object)((Component)self).gameObject.GetComponent<DroneAvailability>()) || ((Object)((Component)self).gameObject).name.Contains("Turret")) { return; } Texture portraitIcon = ((Component)self).gameObject.GetComponent<SummonMasterBehavior>().masterPrefab.GetComponent<CharacterMaster>().bodyPrefab.GetComponent<CharacterBody>().portraitIcon; Transform val = ((Component)self).gameObject.transform.Find("HologramPivot"); GameObject val2 = new GameObject("HologramSprite"); val2.transform.SetParent(((Component)val).transform); val2.AddComponent<HologramHelper>(); SpriteRenderer val3 = val2.AddComponent<SpriteRenderer>(); val3.sprite = Sprite.Create((Texture2D)(object)((portraitIcon is Texture2D) ? portraitIcon : null), new Rect(0f, 0f, (float)portraitIcon.width, (float)portraitIcon.height), new Vector2(0.5f, 0.5f)); val2.transform.localScale = new Vector3(2f, 2f, 1f); if (useSillyMaterials.Value) { ((Renderer)val3).sharedMaterial = Addressables.LoadAssetAsync<Material>((object)RoR2_DLC2.matHalcyoniteShrineCrystalGlow_mat).WaitForCompletion(); ((Renderer)val3).sharedMaterial.SetTexture("_Cloud2Tex", Addressables.LoadAssetAsync<Texture>((object)RoR2_Base_Common.texCloudOrganic2_png).WaitForCompletion()); ((Renderer)val3).sharedMaterial.SetTexture("_Cloud1Tex", Addressables.LoadAssetAsync<Texture>((object)RoR2_DLC2_Child.texChildPrimaryStarCloud_png).WaitForCompletion()); ((Renderer)val3).sharedMaterial.SetColor("_TintColor", sillyMaterialColor.Value); ((Renderer)val3).sharedMaterial.SetInt("_AlphaBias", 0); } GameObject val4 = Object.Instantiate<GameObject>(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC3/Drone Tech/CommandCarryTransportVFX.prefab").WaitForCompletion(), val2.transform, true); for (int i = 0; i < val4.transform.childCount; i++) { GameObject gameObject = ((Component)val4.transform.GetChild(i)).gameObject; if (((Object)gameObject).name != "MainRings") { Object.Destroy((Object)(object)gameObject); continue; } gameObject.GetComponent<ParticleSystem>().startSpeed = -10f; ((Renderer)gameObject.GetComponent<ParticleSystemRenderer>()).sharedMaterial = operatorMat; } val4.transform.position = val4.transform.localPosition; val4.transform.localPosition = new Vector3(0f, 0f, 0f); val4.transform.position = new Vector3(val4.transform.position.x, val4.transform.position.y - 3.2f, val4.transform.position.z); } public override void Config(ConfigFile config) { //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Expected O, but got Unknown //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Expected O, but got Unknown enabled = config.Bind<bool>("BNR - Drone Visibility", "enable patches for drone visibility", false, ""); BNRUtils.CheckboxConfig(enabled); enabled.SettingChanged += delegate { Hook(); }; useSillyMaterials = config.Bind<bool>("BNR - Drone Visibility", "use silly materials for indicator !!", true, ""); BNRUtils.CheckboxConfig(useSillyMaterials); sillyMaterialColor = config.Bind<Color>("BNR - Drone Visibility", "colors for silly sprite hologram thing material !!", BNRUtils.Color255(191, 126, 211), ""); ModSettingsManager.AddOption((BaseOption)new ColorOption(sillyMaterialColor)); operatorIndicatorColor = config.Bind<Color>("BNR - Drone Visibility", "colors for operator vfx thing !!", BNRUtils.Color255(252, 142, 249), ""); ModSettingsManager.AddOption((BaseOption)new ColorOption(operatorIndicatorColor)); visibilityDistance = config.Bind<float>("BNR - Drone Visibility", "set distance which hologram becomes visible (set like 99999 for always !!", 99999f, ""); BNRUtils.SliderConfig(15f, 999f, visibilityDistance); } } public class HologramHelper : MonoBehaviour { private Transform hologram; public Vector3 pos; public void OnEnable() { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) hologram = ((Component)this).transform.parent.GetChild(0); ((Component)this).transform.position = ((Component)this).transform.localPosition; ((Component)this).transform.localPosition = new Vector3(0f, 0f, 0f); ((Component)this).transform.position = new Vector3(((Component)this).transform.position.x, ((Component)this).transform.position.y + 2f, ((Component)this).transform.position.z); } public void FixedUpdate() { //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) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)hologram)) { Object.Destroy((Object)(object)((Component)this).gameObject); return; } Vector3 val = default(Vector3); val.x = 0f; val.y = hologram.eulerAngles.y; val.z = hologram.eulerAngles.z; ((Component)this).transform.rotation = Quaternion.Euler(val); } } public class malachite : PatchBase<malachite> { private ConfigEntry<bool> enabled; public static ConfigEntry<float> timeBetweenSpawns; public override void Init(Harmony harmony) { applyHooks(); } private void applyHooks() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown if (enabled.Value) { CharacterBody.OnBuffFirstStackGained += new hook_OnBuffFirstStackGained(CharacterBodyOnOnBuffFirstStackGained); } else { CharacterBody.OnBuffFirstStackGained += new hook_OnBuffFirstStackGained(CharacterBodyOnOnBuffFirstStackGained); } } private void CharacterBodyOnOnBuffFirstStackGained(orig_OnBuffFirstStackGained orig, CharacterBody self, BuffDef buffDef) { orig.Invoke(self, buffDef); if (!((Object)(object)buffDef != (Object)(object)Buffs.AffixPoison)) { ((Component)self).gameObject.AddComponent<EvilUrchinSpawner>()._characterBody = self; } } public override void Config(ConfigFile config) { enabled = config.Bind<bool>("BNR - malachite", "enable patches for malachite (have them naturally spawn urchins ,.,.", true, ""); BNRUtils.CheckboxConfig(enabled); enabled.SettingChanged += delegate { applyHooks(); }; timeBetweenSpawns = config.Bind<float>("BNR - malachite", "time between urchin spawns .,,.", 12f, "byeah.,,"); BNRUtils.SliderConfig(1f, 30f, timeBetweenSpawns); } } public class EvilUrchinSpawner : MonoBehaviour { public CharacterBody _characterBody; private float urchinSpawnTimer; private void OnEnable() { Log.Debug("added urchin spawner !!"); } private void FixedUpdate() { //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: 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_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) urchinSpawnTimer += Time.fixedDeltaTime; if (!(urchinSpawnTimer > malachite.timeBetweenSpawns.Value)) { return; } urchinSpawnTimer = 0f; Log.Debug("spawning urgin !!"); if (!Object.op_Implicit((Object)(object)_characterBody) || !_characterBody.HasBuff(Buffs.AffixPoison)) { Log.Debug("uh oh,,"); Object.Destroy((Object)(object)this); return; } Vector3 position = ((Component)this).transform.position; Ray val = (Ray)(Object.op_Implicit((Object)(object)_characterBody.inputBank) ? _characterBody.inputBank.GetAimRay() : new Ray(((Component)this).transform.position, ((Component)this).transform.rotation * Vector3.forward)); Quaternion val2 = Quaternion.LookRotation(((Ray)(ref val)).direction); GameObject val3 = Object.Instantiate<GameObject>(LegacyResourcesAPI.Load<GameObject>("Prefabs/CharacterMasters/UrchinTurretMaster"), position, val2); CharacterMaster component = val3.GetComponent<CharacterMaster>(); if (Object.op_Implicit((Object)(object)component)) { component.teamIndex = _characterBody.teamComponent.teamIndex; NetworkServer.Spawn(val3); component.SpawnBodyHere(); } } } public class pingrecolor : PatchBase<pingrecolor> { private ConfigEntry<Color> pingIndicatorDefault; private ConfigEntry<Color> pingIndicatorEnemy; private ConfigEntry<Color> pingIndicatorInteractable; private ConfigEntry<Color> pingIndicatorCount; private ConfigEntry<bool> enabled; public override void Init(Harmony harmony) { applyHooks(); } private void applyHooks() { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Expected O, but got Unknown //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown if (enabled.Value) { PingIndicator.OnEnable += new hook_OnEnable(PingIndicatorOnOnEnable); PingIndicator.RebuildPing += new hook_RebuildPing(PingIndicatorOnRebuildPing); } else { PingIndicator.OnEnable -= new hook_OnEnable(PingIndicatorOnOnEnable); PingIndicator.RebuildPing -= new hook_RebuildPing(PingIndicatorOnRebuildPing); } } private void PingIndicatorOnOnEnable(orig_OnEnable orig, PingIndicator self) { recolorPingIndicator(self); orig.Invoke(self); } private void PingIndicatorOnRebuildPing(orig_RebuildPing orig, PingIndicator self) { recolorPingIndicator(self); orig.Invoke(self); } private void recolorPingIndicator(PingIndicator pingIndicator) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Expected I4, but got Unknown //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: 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_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0095: 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_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) pingIndicator.defaultPingColor = pingIndicatorDefault.Value; pingIndicator.enemyPingColor = pingIndicatorEnemy.Value; pingIndicator.interactablePingColor = pingIndicatorInteractable.Value; PingType pingType = pingIndicator.pingType; pingIndicator.pingColor = (Color)((int)pingType switch { 0 => pingIndicatorDefault.Value, 1 => pingIndicatorEnemy.Value, 2 => pingIndicatorInteractable.Value, 3 => pingIndicatorCount.Value, _ => pingIndicator.pingColor, }); ((Component)((Component)pingIndicator).transform.GetChild(0)).GetComponent<ParticleSystem>().startColor = pingIndicatorDefault.Value; ((Component)((Component)pingIndicator).transform.GetChild(1)).GetComponent<ParticleSystem>().startColor = pingIndicatorInteractable.Value; ((Component)((Component)pingIndicator).transform.GetChild(2)).GetComponent<ParticleSystem>().startColor = pingIndicatorEnemy.Value; ((Component)pingIndicator.positionIndicator.alwaysVisibleObject.transform.GetChild(0)).GetComponent<SpriteRenderer>().color = pingIndicatorDefault.Value; ((Component)pingIndicator.positionIndicator.alwaysVisibleObject.transform.GetChild(1)).GetComponent<SpriteRenderer>().color = pingIndicatorEnemy.Value; ((Component)pingIndicator.positionIndicator.alwaysVisibleObject.transform.GetChild(2)).GetComponent<SpriteRenderer>().color = pingIndicatorInteractable.Value; } public override void Config(ConfigFile config) { //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Expected O, but got Unknown //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Expected O, but got Unknown //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: Expected O, but got Unknown //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Expected O, but got Unknown enabled = config.Bind<bool>("BNR - pingrecolor", "enable patches for pingrecolor", true, ""); BNRUtils.CheckboxConfig(enabled); enabled.SettingChanged += delegate { applyHooks(); }; pingIndicatorDefault = config.Bind<Color>("BNR - pingrecolor", "ping recolor for default ping !!", BNRUtils.Color255(252, 142, 249), ""); ModSettingsManager.AddOption((BaseOption)new ColorOption(pingIndicatorDefault)); pingIndicatorEnemy = config.Bind<Color>("BNR - pingrecolor", "ping recolor for enemy ping !!", BNRUtils.Color255(252, 142, 249), ""); ModSettingsManager.AddOption((BaseOption)new ColorOption(pingIndicatorEnemy)); pingIndicatorInteractable = config.Bind<Color>("BNR - pingrecolor", "ping recolor for interactable ping !!", BNRUtils.Color255(252, 142, 249), ""); ModSettingsManager.AddOption((BaseOption)new ColorOption(pingIndicatorInteractable)); pingIndicatorCount = config.Bind<Color>("BNR - pingrecolor", "ping recolor for count ping (unsure what this one actually is !! !!", BNRUtils.Color255(252, 142, 249), ""); ModSettingsManager.AddOption((BaseOption)new ColorOption(pingIndicatorCount)); } } public class quickerhalcshrine : PatchBase<quickerhalcshrine> { private HalcyoniteShrineInteractable halcshrineinteractable; private GameObject bluePortalRef; private float startingTickRate; private ConfigEntry<bool> enabled; private ConfigEntry<float> multiplier; private ConfigEntry<int> playerCount; private ConfigEntry<bool> scaleTime; private ConfigEntry<bool> greenToBlue; public override void Init(Harmony harmony) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Expected O, but got Unknown //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Expected O, but got Unknown //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Expected O, but got Unknown if (enabled.Value) { GameObject val = Addressables.LoadAssetAsync<GameObject>((object)RoR2_DLC2.ShrineHalcyonite_prefab).WaitForCompletion(); bluePortalRef = Addressables.LoadAssetAsync<GameObject>((object)RoR2_Base_PortalShop.PortalShop_prefab).WaitForCompletion(); halcshrineinteractable = val.GetComponent<HalcyoniteShrineInteractable>(); startingTickRate = halcshrineinteractable.tickRate; halcshrineinteractable.tickRate = startingTickRate * multiplier.Value; multiplier.SettingChanged += delegate { halcshrineinteractable.tickRate = startingTickRate * multiplier.Value; }; HalcyoniteShrineInteractable.Start += new hook_Start(HalcyoniteShrineInteractableOnStart); GoldSiphonNearbyBodyController.DrainGold += new hook_DrainGold(GoldSiphonNearbyBodyControllerOnDrainGold); BossGroup.OnDefeatedServer += new hook_OnDefeatedServer(BossGroupOnOnDefeatedServer); } } private void BossGroupOnOnDefeatedServer(orig_OnDefeatedServer orig, BossGroup self) { //IL_0040: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (greenToBlue.Value) { GameObject val = GameObject.Find("PortalColossus(Clone)"); if (Object.op_Implicit((Object)(object)val)) { GameObject obj = Object.Instantiate<GameObject>(bluePortalRef); obj.transform.position = val.transform.position; NetworkServer.Spawn(obj); Object.Destroy((Object)(object)val); } } } private void GoldSiphonNearbyBodyControllerOnDrainGold(orig_DrainGold orig, GoldSiphonNearbyBodyController self) { orig.Invoke(self); if (NetworkServer.active && self.isTetheredToAtLeastOneObject && scaleTime.Value && Run.instance.participatingPlayerCount <= playerCount.Value) { Run.instance.SetRunStopwatch((Run.instance.GetRunStopwatch() + 1f / self.tickRate) * (multiplier.Value - 1f)); } } private void HalcyoniteShrineInteractableOnStart(orig_Start orig, HalcyoniteShrineInteractable self) { orig.Invoke(self); if (NetworkServer.active && Run.instance.participatingPlayerCount <= playerCount.Value) { self.tickRate = startingTickRate * multiplier.Value; } } public override void Config(ConfigFile config) { enabled = config.Bind<bool>("BNR - Halyc Shrines", "enable patches for halyc shrines", true, ""); BNRUtils.CheckboxConfig(enabled); enabled.SettingChanged += delegate { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Expected O, but got Unknown //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown if (enabled.Value) { HalcyoniteShrineInteractable.Start += new hook_Start(HalcyoniteShrineInteractableOnStart); GoldSiphonNearbyBodyController.DrainGold += new hook_DrainGold(GoldSiphonNearbyBodyControllerOnDrainGold); } else { HalcyoniteShrineInteractable.Start -= new hook_Start(HalcyoniteShrineInteractableOnStart); GoldSiphonNearbyBodyController.DrainGold -= new hook_DrainGold(GoldSiphonNearbyBodyControllerOnDrainGold); } }; multiplier = config.Bind<float>("BNR - Halyc Shrines", "speed up halcyon shrine mutlipler", 2f, ""); BNRUtils.SliderConfig(1f, 3f, multiplier); playerCount = config.Bind<int>("BNR - Halyc Shrines", "only apply multiplier under or equal to x amount of players", 1, "eg. 1 = only singleplayer 2 = only 2 people multiplayer"); BNRUtils.SliderConfig(1, 4, playerCount); scaleTime = config.Bind<bool>("BNR - Halyc Shrines", "speed up time scale as well", true, "make time scale with halcyon shrine speed as well"); BNRUtils.CheckboxConfig(scaleTime); greenToBlue = config.Bind<bool>("BNR - Halyc Shrines", "turn green portal to blue", true, "makes green portals become blue after the boss has been defeated !!!"); BNRUtils.CheckboxConfig(greenToBlue); } } public class smallermoneyandlunars : PatchBase<smallermoneyandlunars> { private ConfigEntry<bool> enabled; public override void Init(Harmony harmony) { if (enabled.Value) { HUD.onHudTargetChangedGlobal += HUDOnonHudTargetChangedGlobal; } } private static void HUDOnonHudTargetChangedGlobal(HUD obj) { //IL_0024: 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) //IL_007c: Unknown result type (might be due to invalid IL or missing references) GameObject val = GameObject.Find("UpperLeftCluster"); if (Object.op_Implicit((Object)(object)val)) { val.GetComponent<RectTransform>().offsetMin = new Vector2(0f, -64f); ((HorizontalOrVerticalLayoutGroup)val.GetComponent<VerticalLayoutGroup>()).spacing = 0f; GameObject val2 = GameObject.Find("DollarSign"); if (Object.op_Implicit((Object)(object)val2)) { val2.transform.localPosition = new Vector3(4f, val2.transform.localPosition.y, val2.transform.localPosition.z); } GameObject val3 = GameObject.Find("SteamBuildLabel"); if (Object.op_Implicit((Object)(object)val3)) { val3.gameObject.SetActive(false); } } } public override void Config(ConfigFile config) { enabled = config.Bind<bool>("BNR - UI", "make currency thing smaller", true, "make the thing that has coins and lunar coins in the top left smaller like pre sotv (i miss you ,.,."); BNRUtils.CheckboxConfig(enabled); enabled.SettingChanged += delegate { if (enabled.Value) { HUD.onHudTargetChangedGlobal += HUDOnonHudTargetChangedGlobal; } else { HUD.onHudTargetChangedGlobal -= HUDOnonHudTargetChangedGlobal; } }; } } public class allynames : PatchBase<allynames> { [HarmonyPatch] public class AllyNamesChanges { [HarmonyPatch(typeof(NamesList), "InitConfig")] [HarmonyPostfix] public static void OnEnterPostFix(NamesList __instance) { //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) string[] array = bodyNames.Value.Split('|'); foreach (string text in array) { if (!string.IsNullOrEmpty(text)) { string[] array2 = text.Split(','); string text2 = ""; if (array2.Length >= 4) { text2 = array2[3].Trim().TrimStart('[').TrimEnd(']') .Replace(";", ","); } ConfigBodyIndex val = new ConfigBodyIndex(array2[0].Trim(), array2[1].Trim(), array2[2].Trim().TrimStart('[').TrimEnd(']') .Replace(";", ","), text2); ArrayUtils.ArrayAppend<ConfigBodyIndex>(ref NamesList.configBodyIndexes, ref val); } } ConfigBodyIndex[] configBodyIndexes = NamesList.configBodyIndexes; for (int i = 0; i < configBodyIndexes.Length; i++) { _ = ref configBodyIndexes[i]; } } } public static ConfigEntry<string> bodyNames; private ConfigEntry<bool> enabled; public override void Init(Harmony harmony) { if (enabled.Value) { Log.Debug("applying allynames patches !!"); harmony.CreateClassProcessor(typeof(AllyNamesChanges)).Patch(); NamesList.InitConfig(); NamesList.BuildNamesByBodyName(); } } public override void Config(ConfigFile config) { enabled = config.Bind<bool>("BNR - allynames", "enable patches for allynames", true, ""); BNRUtils.CheckboxConfig(enabled); bodyNames = config.Bind<string>("BNR - allynames", "ally name replace !!", "BombardmentDrone,Bombardment Drone,Default;Drones,Tsar Bomba;Fat Man;Little Boy|JunkDrone,Junk Drone,Default;Drones|RechargeDrone,Barrier Drone,Default;Drones|JailerDrone,Jailer Drone,Default;Drones|CleanupDrone,Cleanup Drone,Default;Drones,Roomba|CopycatDrone,Freeze Drone,Default;Drones,Frozone|HaulerDrone,Transport Drone,Default;Drones|DTGunnerDroneBody,CROSSHAIRS,Default;Drones,Ruxin|DTHealingDroneBody,DOC,Default;Drones,Bunny|DTHaulerDroneBody,CHIRP,Default;Drones,Moose|FriendUnitBody,Best Buddy,Default,Friend Inside Me;Stupid Baby;Son|DroneBomber,Lt. Droneboy,Default,Lt. Beep Boop", "add custom !! use bodynamewithoutBody,realname,category1;category2,customname1;customname2|seconditem format to add custom names !!"); BNRUtils.StringConfig(bodyNames); } } public class coolereclipse : PatchBase<coolereclipse> { [HarmonyPatch] public class CoolerEclipseChanges { [HarmonyPatch(typeof(CoolerEclipse), "AddSkybox")] [HarmonyPrefix] public static bool CoolerEclipseAddSkyboxPreFix(orig_Start orig, SceneDirector self) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) CoolerEclipse.shouldBeChance.Value = false; Scene activeScene = SceneManager.GetActiveScene(); string name = ((Scene)(ref activeScene)).name; int num = Run.instance.runRNG.RangeInt(0, 100); Log.Debug($"test ecluipse !! rng {num} < {eclipseChance.Value} ,,,.. applying ? {(float)num < eclipseChance.Value}"); if (!((float)num < eclipseChance.Value)) { orig.Invoke(self); return false; } if (!blacklistStages.Value.Equals("")) { string[] array = whitelistStages.Value.Split(","); foreach (string text in array) { if (name.Contains(text)) { Log.Debug(text + " is in whitelist !! forcing !!"); return true; } } array = blacklistStages.Value.Split(","); foreach (string text2 in array) { if (name.Contains(text2)) { Log.Debug("name " + text2 + " is in config !! skipping !!"); orig.Invoke(self); return false; } } } Log.Debug("appling eclipse to " + name); return true; } [HarmonyPatch(typeof(CoolerEclipse), "AddSkybox")] [HarmonyPostfix] public static void CoolerEclipseAddSkyboxPostFix(orig_Start orig, SceneDirector self) { //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: 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_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: 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_00de: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: 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_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_02cd: Unknown result type (might be due to invalid IL or missing references) //IL_02d2: Unknown result type (might be due to invalid IL or missing references) //IL_033c: Unknown result type (might be due to invalid IL or missing references) //IL_0341: Unknown result type (might be due to invalid IL or missing references) //IL_03b4: Unknown result type (might be due to invalid IL or missing references) //IL_03b9: Unknown result type (might be due to invalid IL or missing references) //IL_03ed: Unknown result type (might be due to invalid IL or missing references) //IL_03f2: Unknown result type (might be due to invalid IL or missing references) //IL_0417: Unknown result type (might be due to invalid IL or missing references) //IL_041c: Unknown result type (might be due to invalid IL or missing references) //IL_0477: Unknown result type (might be due to invalid IL or missing references) //IL_047c: Unknown result type (might be due to invalid IL or missing references) int num = Run.instance.runRNG.RangeInt(0, 100); Log.Debug($"pink eclipse ? rng {num} umm {(float)num < pinkEclipseChance.Value}"); if (!Object.op_Implicit((Object)(object)GameObject.Find("Eclipse"))) { return; } GameObject val = GameObject.Find("PP + Amb"); if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)val.GetComponent<PostProcessVolume>())) { PostProcessVolume component = val.GetComponent<PostProcessVolume>(); PostProcessProfile val2 = Object.Instantiate<PostProcessProfile>(component.sharedProfile); RampFog setting = val2.GetSetting<RampFog>(); ((ParameterOverride<Color>)(object)setting.fogColorStart).value = Color32.op_Implicit(new Color32((byte)55, (byte)87, (byte)82, (byte)15)); ((ParameterOverride<Color>)(object)setting.fogColorMid).value = Color32.op_Implicit(new Color32((byte)54, (byte)74, (byte)89, (byte)100)); ((ParameterOverride<Color>)(object)setting.fogColorEnd).value = Color32.op_Implicit(new Color32((byte)47, (byte)63, (byte)82, (byte)200)); component.sharedProfile = val2; } if (!((float)num < pinkEclipseChance.Value)) { return; } if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)val.GetComponent<SetAmbientLight>())) { SetAmbientLight component2 = val.GetComponent<SetAmbientLight>(); component2.ambientSkyColor = BNRUtils.Color255(207, 97, 182); component2.ambientEquatorColor = BNRUtils.Color255(207, 97, 165); component2.ambientGroundColor = BNRUtils.Color255(146, 32, 93); component2.ApplyLighting(); } if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)val.GetComponent<PostProcessVolume>())) { PostProcessVolume component3 = val.GetComponent<PostProcessVolume>(); PostProcessProfile val3 = Object.Instantiate<PostProcessProfile>(component3.sharedProfile); RampFog setting2 = val3.GetSetting<RampFog>(); ((ParameterOverride<Color>)(object)setting2.fogColorStart).value = Color32.op_Implicit(new Color32((byte)190, (byte)154, (byte)150, (byte)15)); ((ParameterOverride<Color>)(object)setting2.fogColorMid).value = Color32.op_Implicit(new Color32((byte)110, (byte)73, (byte)69, (byte)100)); ((ParameterOverride<Color>)(object)setting2.fogColorEnd).value = Color32.op_Implicit(new Color32((byte)90, (byte)47, (byte)44, (byte)200)); val3.RemoveSettings<ColorGrading>(); component3.sharedProfile = val3; } GameObject val4 = GameObject.Find("Weather (Locked Position/Rotation)"); if (Object.op_Implicit((Object)(object)val4) && Object.op_Implicit((Object)(object)val4.transform.Find("Embers"))) { ParticleSystemRenderer component4 = ((Component)val4.transform.Find("Embers")).gameObject.GetComponent<ParticleSystemRenderer>(); if (Object.op_Implicit((Object)(object)component4)) { Material val5 = Object.Instantiate<Material>(((Renderer)component4).sharedMaterial); Texture2D val6 = Addressables.LoadAssetAsync<Texture2D>((object)RoR2_Base_Common_ColorRamps.texRampDiamondLaser_png).WaitForCompletion(); val5.SetTexture("_RemapTex", (Texture)(object)val6); ((Renderer)component4).sharedMaterial = val5; } } GameObject val7 = GameObject.Find("Sphere, Stars"); if (Object.op_Implicit((Object)(object)val7) && Object.op_Implicit((Object)(object)val7.GetComponent<MeshRenderer>())) { MeshRenderer component5 = val7.GetComponent<MeshRenderer>(); if (Object.op_Implicit((Object)(object)component5)) { Material val8 = Object.Instantiate<Material>(((Renderer)component5).sharedMaterial); Texture2D val9 = Addressables.LoadAssetAsync<Texture2D>((object)RoR2_Base_Common_ColorRamps.texRampGolem_png).WaitForCompletion(); val8.SetTexture("_RemapTex", (Texture)(object)val9); ((Renderer)component5).sharedMaterial = val8; } } GameObject val10 = GameObject.Find("Sphere, Stars 2"); if (Object.op_Implicit((Object)(object)val10) && Object.op_Implicit((Object)(object)val10.GetComponent<MeshRenderer>())) { MeshRenderer component6 = val10.GetComponent<MeshRenderer>(); if (Object.op_Implicit((Object)(object)component6)) { Material val11 = Object.Instantiate<Material>(((Renderer)component6).sharedMaterial); Texture2D val12 = Addressables.LoadAssetAsync<Texture2D>((object)RoR2_Base_Common_ColorRamps.texRampGolem_png).WaitForCompletion(); val11.SetTexture("_RemapTex", (Texture)(object)val12); ((Renderer)component6).sharedMaterial = val11; } } GameObject val13 = GameObject.Find("Sphere, Moon"); if (Object.op_Implicit((Object)(object)val13) && Object.op_Implicit((Object)(object)val13.GetComponent<MeshRenderer>())) { MeshRenderer component7 = val13.GetComponent<MeshRenderer>(); if (Object.op_Implicit((Object)(object)component7)) { Material val14 = Object.Instantiate<Material>(((Renderer)component7).sharedMaterial); Texture2D val15 = Addressables.LoadAssetAsync<Texture2D>((object)RoR2_Base_Common_ColorRamps.texRampArchWisp_png).WaitForCompletion(); val14.SetTexture("_RemapTex", (Texture)(object)val15); val14.SetColor("_TintColor", Color.op_Implicit(new Vector4(0.58431375f, 0.2784314f, 0.29411766f, 1f))); val14.SetColor("_SpecColor", Color.op_Implicit(new Vector4(1f, 0f, 0f, 1f))); ((Renderer)component7).sharedMaterial = val14; } } GameObject val16 = GameObject.Find("Eclipse"); if (Object.op_Implicit((Object)(object)val16) && Object.op_Implicit((Object)(object)val16.GetComponent<MeshRenderer>())) { MeshRenderer component8 = val16.GetComponent<MeshRenderer>(); if (Object.op_Implicit((Object)(object)component8)) { Material val17 = Object.Instantiate<Material>(((Renderer)component8).sharedMaterial); Texture2D val18 = Addressables.LoadAssetAsync<Texture2D>((object)RoR2_Base_Common_ColorRamps.texRampArchWisp_png).WaitForCompletion(); val17.SetTexture("_RemapTex", (Texture)(object)val18); ((Renderer)component8).sharedMaterial = val17; } } } } public static ConfigEntry<bool> applyCE; public static ConfigEntry<float> eclipseChance; public static ConfigEntry<float> pinkEclipseChance; public static ConfigEntry<string> blacklistStages; public static ConfigEntry<string> whitelistStages; public override void Init(Harmony harmony) { Log.Debug("init cooler eclipse !! " + applyCE.Value); if (applyCE.Value) { harmony.CreateClassProcessor(typeof(CoolerEclipseChanges)).Patch(); Log.Debug("ptached cooler eclipse !!"); } } public override void Config(ConfigFile config) { applyCE = config.Bind<bool>("Mods - CoolerEclipse", "apply cooler eclipse patches !!", true, ""); BNRUtils.CheckboxConfig(applyCE); eclipseChance = config.Bind<float>("Mods - CoolerEclipse", "chance for eclipse", 15f, "bwaa, (0-100 !!!"); BNRUtils.SliderConfig(0f, 100f, eclipseChance); pinkEclipseChance = config.Bind<float>("Mods - CoolerEclipse", "chance for pink eclipse if enabled !", 50f, "bwaa, (0-100 !!! if regular eclipse is rolled rolls this percent chance on top .,,. set to 0 to disable !!"); BNRUtils.SliderConfig(0f, 100f, pinkEclipseChance); blacklistStages = config.Bind<string>("Mods - CoolerEclipse", "stage blacklist", "goldshores,bazaar,solutionalhaunt,ss2_voidshop,goldshores", "eclipse stage blacklist (seperate by , !! (eg golemplains,blackbeach!!"); BNRUtils.StringConfig(blacklistStages); whitelistStages = config.Bind<string>("Mods - CoolerEclipse", "stage whitelist", "golemplains,golemplains2", "what stages to force eclipses on (seperate by , !! (eg golemplains,blackbeach!! will not work with moon2, ,.."); BNRUtils.StringConfig(whitelistStages); } } public class gildedcoastplus : PatchBase<gildedcoastplus> { [HarmonyPatch] public class GoldenCoastChanges { [HarmonyPatch(typeof(FightChanges), "GoldshoresBossfight_GiveBuff")] [HarmonyPrefix] public static bool GoldenCoastPlusRevivedGiveBuffPreFix() { return !skipGoldenRewards.Value; } } public static ConfigEntry<bool> skipGoldenRewards; public static ConfigEntry<bool> applyGCP; public override void Init(Harmony harmony) { if (applyGCP.Value) { harmony.CreateClassProcessor(typeof(GoldenCoastChanges)).Patch(); } } public override void Config(ConfigFile config) { applyGCP = config.Bind<bool>("Mods - GoldenCoastPlus", "apply golden coast plus patches !!", true, ""); BNRUtils.CheckboxConfig(applyGCP); skipGoldenRewards = config.Bind<bool>("Mods - GoldenCoastPlus", "skip hidden buff", true, ""); BNRUtils.CheckboxConfig(skipGoldenRewards); } } public class inferno : PatchBase<inferno> { [HarmonyPatch] public class InfernoChanges { [HarmonyPatch(typeof(Body), "BodyChanges")] [HarmonyILManipulator] public static void OnEnterPostFix(ILContext il) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown if (noBeetleStun.Value) { Log.Debug("ilh ook hate beetle grahhhhh"); ILCursor val = new ILCursor(il); if (val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Body), "beetleIndex") })) { val.Index += 6; val.RemoveRange(3); } } } } public static ConfigEntry<bool> noBeetleStun; public static ConfigEntry<bool> applyInferno; public override void Init(Harmony harmony) { if (applyInferno.Value) { harmony.CreateClassProcessor(typeof(InfernoChanges)).Patch(); } } public override void Config(ConfigFile config) { applyInferno = config.Bind<bool>("Mods - Inferno", "apply inferno patches !!", true, ""); BNRUtils.CheckboxConfig(applyInferno); noBeetleStun = config.Bind<bool>("Mods - Inferno", "makes beetles able to be stunned i hate beetle stun sm ,,..,", true, ""); BNRUtils.CheckboxConfig(noBeetleStun); } } public class starstorm : PatchBase<starstorm> { [HarmonyPatch] public class Starstorm2ExeChanges { [HarmonyPatch(typeof(Dash), "OnEnter")] [HarmonyPostfix] public static void DashOnEnterPostFix(Dash __instance) { ((Component)((EntityState)__instance).characterBody).gameObject.AddComponent<Boosted>(); } [HarmonyPatch(typeof(Dash), "OnExit")] [HarmonyPostfix] public static void DashOnExitPostFix(Dash __instance) { bool flag = false; EntityStateMachine[] components = ((Component)((EntityState)__instance).characterBody).gameObject.GetComponents<EntityStateMachine>(); for (int i = 0; i < components.Length; i++) { if (((object)components[i].state).ToString().ToLower().Contains("slam")) { flag = true; } } if (!flag) { Object.Destroy((Object)(object)((Component)((EntityState)__instance).characterBody).gameObject.GetComponent<Boosted>()); } } [HarmonyPatch(typeof(ExecuteSlam), "HandleMovement")] [HarmonyILManipulator] public static void OnEnterPostFix(ILContext il) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) Log.Debug("loading il gook HandleMovement"); ILCursor val = new ILCursor(il); if (val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(ExecuteSlam), "verticlalSpeed") })) { val.RemoveRange(2); val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<ExecuteSlam, float>>((Func<ExecuteSlam, float>)delegate(ExecuteSlam es) { if ((Object)(object)((Component)((EntityState)es).characterBody).gameObject.GetComponent<Boosted>() != (Object)null) { if (useMovespeed.Value) { return ((EntityState)es).characterBody.moveSpeed * boostedSpeed.Value; } return 10f * boostedSpeed.Value; } return useMovespeed.Value ? (((EntityState)es).characterBody.moveSpeed * baseSpeed.Value) : (10f * baseSpeed.Value); }); val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Func<ExecuteSlam, float>>((Func<ExecuteSlam, float>)((ExecuteSlam es) => useMovespeed.Value ? (((EntityState)es).characterBody.moveSpeed * terminalSpeed.Value) : (10f * terminalSpeed.Value))); } else { Log.Debug("failedilbok"); } } [HarmonyPatch(typeof(ExecuteSlam), "OnEnter")] [HarmonyPostfix] public static void OnEnterPostFix(ExecuteSlam __instance) { ((Component)((EntityState)__instance).characterBody).gameObject.AddComponent<SpeedTester>(); } [HarmonyPatch(typeof(ExecuteSlam), "OnExit")] [HarmonyPostfix] public static void OnExitPostFix(ExecuteSlam __instance) { if ((Object)(object)((Component)((EntityState)__instance).characterBody).gameObject.GetComponent<Boosted>() != (Object)null) { Object.Destroy((Object)(object)((Component)((EntityState)__instance).characterBody).gameObject.GetComponent<Boosted>()); } if ((Object)(object)((Component)((EntityState)__instance).characterBody).gameObject.GetComponent<SpeedTester>() != (Object)null) { Object.Destroy((Object)(object)((Component)((EntityState)__instance).characterBody).gameObject.GetComponent<SpeedTester>()); } } [HarmonyPatch(typeof(ExecuteSlam), "DoImpactAuthority")] [HarmonyILManipulator] private static void slam(ILContext il) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0050: 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_008e: Unknown result type (might be due to invalid IL or missing references) Log.Debug("loading il gook DoImpactAuthority"); ILCursor val = new ILCursor(il); if (val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(ExecuteSlam), "exesillymod.baseDamageCoefficient") })) { val.Index += 2; val.Emit(OpCodes.Ldarg_0); val.Emit(OpCodes.Ldloc_3); val.EmitDelegate<Func<ExecuteSlam, float, float>>((Func<ExecuteSlam, float, float>)delegate(ExecuteSlam es, float damage) { float num = 0f; if ((Object)(object)((Component)((EntityState)es).characterBody).gameObject.GetComponent<SpeedTester>() != (Object)null) { string text = ""; num = ((Component)((EntityState)es).characterBody).gameObject.GetComponent<SpeedTester>().speedlist[0]; for (int i = 0; i < ((Component)((EntityState)es).characterBody).gameObject.GetComponent<SpeedTester>().speedlist.Length; i++) { text = text + ((Component)((EntityState)es).characterBody).gameObject.GetComponent<SpeedTester>().speedlist[i] + " "; if (((Component)((EntityState)es).characterBody).gameObject.GetComponent<SpeedTester>().speedlist[i] > num) { num = ((Component)((EntityState)es).characterBody).gameObject.GetComponent<SpeedTester>().speedlist[i]; } } } if ((Object)(object)((Component)((EntityState)es).characterBody).gameObject.GetComponent<Boosted>() != (Object)null) { if (useMovespeed.Value) { return boostedDamage.Value + (num / (((EntityState)es).characterBody.moveSpeed * boostedSpeed.Value) - 1f) * speedmult.Value; } return boostedDamage.Value + (num / (10f * boostedSpeed.Value) - 1f) * speedmult.Value; } return useMovespeed.Value ? (baseDamage.Value + (num / (((EntityState)es).characterBody.moveSpeed * baseSpeed.Value) - 1f) * speedmult.Value) : (baseDamage.Value + (num / (10f * baseSpeed.Value) - 1f) * speedmult.Value); }); val.Emit(OpCodes.Stloc_3); } else { Log.Debug("failedilbok"); } } public static void Patch(AssemblyDefinition assembly) { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown TypeDefinition type = assembly.MainModule.GetType("EntityStates.Executioner2", "ExecuteSlam"); if (type != null) { type.Fields.Add(new FieldDefinition("flyingspeed", (FieldAttributes)6, assembly.MainModule.ImportReference(typeof(Vector3)))); } else { Log.Debug("failed"); } } } [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_TakeDamageProcess <>9__2_0; internal void <Hooks>b__2_0(orig_TakeDamageProcess orig, HealthComponent self, DamageInfo info) { //IL_004b: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, info); if (!NetworkServer.active || !Object.op_Implicit((Object)(object)info.attacker)) { return; } CharacterBody component = info.attacker.GetComponent<CharacterBody>(); if (!Object.op_Implicit((Object)(object)component) || !Object.op_Implicit((Object)(object)component.inventory)) { return; } int itemCountEffective = component.inventory.GetItemCountEffective(Items.IceTool._itemIndex); if (itemCountEffective > 0 && Util.CheckRoll(iceToolFreezeChance.Value + iceToolFreezeChanceStack.Value * (float)(itemCountEffective - 1), component.master)) { SetStateOnHurt component2 = ((Component)self.body).GetComponent<SetStateOnHurt>(); if (Object.op_Implicit((Object)(object)component2)) { component2.SetFrozen(iceToolFreezeTime.Value + iceToolFreezeTimeStack.Value * (float)(itemCountEffective - 1)); } } } } public static ConfigEntry<bool> applySS2; public static ConfigEntry<float> baseSpeed; public static ConfigEntry<float> boostedSpeed; public static ConfigEntry<float> terminalSpeed; public static ConfigEntry<float> speedmult; public static ConfigEntry<float> baseDamage; public static ConfigEntry<float> boostedDamage; public static ConfigEntry<bool> useMovespeed; public static ConfigEntry<float> iceToolFreezeChance; public static ConfigEntry<float> iceToolFreezeTime; public static ConfigEntry<float> iceToolFreezeTimeStack; public static ConfigEntry<float> iceToolFreezeChanceStack; public override void Init(Harmony harmony) { if (applySS2.Value) { harmony.CreateClassProcessor(typeof(Starstorm2ExeChanges)).Patch(); LanguageAPI.Add("SS2_ITEM_ICETOOL_DESC", $"While <style=cIsUtility>touching a wall</style>, gain <style=cIsUtility>+1</style> <style=cStack>(+1 per stack)</style> extra jump and a <style=\"cIsUtility\">{iceToolFreezeChance.Value}%</style> <style=\"cStack\">(+{iceToolFreezeChanceStack.Value}% per stack)</style> chance to <style=\"cIsUtility\">freeze enemies</style> for <style=\"cIsUtility\">{iceToolFreezeTime.Value} seconds</style> <style=\"cStack\">(+{iceToolFreezeTimeStack.Value} per stack)</style>. "); Hooks(); } } public override void Hooks() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown object obj = <>c.<>9__2_0; if (obj == null) { hook_TakeDamageProcess val = delegate(orig_TakeDamageProcess orig, HealthComponent self, DamageInfo info) { //IL_004b: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, info); if (NetworkServer.active && Object.op_Implicit((Object)(object)info.attacker)) { CharacterBody component = info.attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.inventory)) { int itemCountEffective = component.inventory.GetItemCountEffective(Items.IceTool._itemIndex); if (itemCountEffective > 0 && Util.CheckRoll(iceToolFreezeChance.Value + iceToolFreezeChanceStack.Value * (float)(itemCountEffective - 1), component.master)) { SetStateOnHurt component2 = ((Component)self.body).GetComponent<SetStateOnHurt>(); if (Object.op_Implicit((Object)(object)component2)) { component2.SetFrozen(iceToolFreezeTime.Value + iceToolFreezeTimeStack.Value * (float)(itemCountEffective - 1)); } } } } }; <>c.<>9__2_0 = val; obj = (object)val; } HealthComponent.TakeDamageProcess += (hook_TakeDamageProcess)obj; } public override void Config(ConfigFile config) { applySS2 = config.Bind<bool>("Mods - SS2", "apply ss2 patches !!", true, ""); BNRUtils.CheckboxConfig(applySS2); iceToolFreezeChance = config.Bind<float>("Mods - SS2", "ice tool freeze chance", 5f, "percent chance for icetool to freeze enemies !!"); BNRUtils.SliderConfig(0f, 100f, iceToolFreezeChance); iceToolFreezeTime = config.Bind<float>("Mods - SS2", "ice tool freeze time", 0.5f, "how long icetool should freeze enemies !!"); BNRUtils.SliderConfig(0f, 30f, iceToolFreezeTime); iceToolFreezeChanceStack = config.Bind<float>("Mods - SS2", "ice tool freeze chance stack", 2.5f, "percent chance for icetool to freeze enemies stack !!"); BNRUtils.SliderConfig(0f, 100f, iceToolFreezeChanceStack); iceToolFreezeTimeStack = config.Bind<float>("Mods - SS2", "ice tool freeze time stack", 0.25f, "how long icetool should freeze enemies !!"); BNRUtils.SliderConfig(0f, 30f, iceToolFreezeTimeStack); iceToolFreezeChance.SettingChanged += IceToolFreezeChanceOnSettingChanged; iceToolFreezeTime.SettingChanged += IceToolFreezeChanceOnSettingChanged; iceToolFreezeChanceStack.SettingChanged += IceToolFreezeChanceOnSettingChanged; iceToolFreezeTimeStack.SettingChanged += IceToolFreezeChanceOnSettingChanged; static void IceToolFreezeChanceOnSettingChanged(object sender, EventArgs e) { if (applySS2.Value) { LanguageAPI.Add("SS2_ITEM_ICETOOL_DESC", $"While <style=cIsUtility>touching a wall</style>, gain <style=cIsUtility>+1</style> <style=cStack>(+1 per stack)</style> extra jump and a <style=\"cIsUtility\">{iceToolFreezeChance.Value}%</style> <style=\"cStack\">(+{iceToolFreezeChanceStack.Value}% per stack)</style> chance to <style=\"cIsUtility\">freeze enemies</style> for <style=\"cIsUtility\">{iceToolFreezeTime.Value} seconds</style> <style=\"cStack\">(+{iceToolFreezeTimeStack.Value} per stack)</style>. "); } } } } public class SpeedTester : MonoBehaviour { public Vector3 lastPosition = Vector3.zero; public float speed; public float[] speedlist = new float[6]; private void Start() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) lastPosition = ((Component)this).transform.position; } private void FixedUpdate() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000d: 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_002e: Unknown result type (might be due to invalid IL or missing references) speed = Vector3.Distance(lastPosition, ((Component)this).transform.position) / Time.deltaTime; lastPosition = ((Component)this).transform.position; for (int i = 1; i < speedlist.Length; i++) { speedlist[i] = speedlist[i - 1]; } speedlist[0] = speed; } } public class Boosted : MonoBehaviour { } public class BNRUtils { public static Color Color255(int r, int g, int b, int a) { //IL_0020: Unknown result type (might be due to invalid IL or missing references) return new Color((float)r / 255f, (float)g / 255f, (float)b / 255f, (float)a / 255f); } public static Color Color255(float r, float g, float b, float a) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) return new Color(r / 255f, g / 255f, b / 255f, a / 255f); } public static Color Color255(int r, int g, int b) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) return new Color((float)r / 255f, (float)g / 255f, (float)b / 255f, 1f); } public static void SliderConfig(float min, float max, ConfigEntry<float> config) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown StepSliderConfig val = new StepSliderConfig { max = max, min = min, FormatString = "{0:0}" }; ModSettingsManager.AddOption((BaseOption)new StepSliderOption(config, val)); } public static void SliderConfig(int min, int max, ConfigEntry<int> config) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown IntSliderConfig val = new IntSliderConfig { max = max, min = min, formatString = "{0:0}" }; ModSettingsManager.AddOption((BaseOption)new IntSliderOption(config, val)); } public static void CheckboxConfig(ConfigEntry<bool> config) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown CheckBoxConfig val = new CheckBoxConfig(); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(config, val)); } public static void StringConfig(ConfigEntry<string> config) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown InputFieldConfig val = new InputFieldConfig(); ModSettingsManager.AddOption((BaseOption)new StringInputFieldOption(config, val)); } } } namespace BNR.patches { public abstract class PatchBase<T> : PatchBase where T : PatchBase<T> { public static T instance { get; private set; } public PatchBase() { if (instance != null) { throw new InvalidOperationException("Singleton class \"" + typeof(T).Name + "\" inheriting ItemBase was instantiated twice"); } instance = this as T; } } public abstract class PatchBase { public abstract void Init(Harmony harmony); public abstract void Config(ConfigFile config); public virtual void Hooks() { } } } namespace BNR.items { public abstract class BuffBase<T> : BuffBase where T : BuffBase<T> { public static T instance { get; private set; } public BuffBase() { if (instance != null) { throw new InvalidOperationException("Singleton class \"" + typeof(T).Name + "\" inheriting BuffBase was instantiated twice"); } instance = this as T; } } public abstract class BuffBase { internal abstract string name { get; } internal abstract Sprite icon { get; } internal abstract Color color { get; } internal abstract bool canStack { get; } internal abstract bool isDebuff { get; } internal abstract EliteDef eliteDef { get; } public BuffDef BuffDef { get; set; } internal BuffDef AddBuff() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) BuffDef val = ScriptableObject.CreateInstance<BuffDef>(); ((Object)val).name = name; val.iconSprite = icon; val.buffColor = color; val.canStack = canStack; val.isDebuff = isDebuff; val.eliteDef = eliteDef; ContentAddition.AddBuffDef(val); BuffDef = val; return val; } } public abstract class ItemBase<T> : ItemBase where T : ItemBase<T> { public static T instance { get; private set; } public ItemBase() { if (instance != null) { throw new InvalidOperationException("Singleton class \"" + typeof(T).Name + "\" inheriting ItemBase was instantiated twice"); } instance = this as T; } } public abstract class ItemBase { public ItemDef ItemDef; public abstract string ItemName { get; } public abstract string ItemLangTokenName { get; } public abstract string ItemPickupDesc { get; } public abstract string ItemFullDescription { get; } public abstract string ItemLore { get; } public abstract ItemTier Tier { get; } public virtual ItemTag[] ItemTags { get; set; } = (ItemTag[])(object)new ItemTag[0]; public abstract GameObject ItemModel { get; } public abstract Sprite ItemIcon { get; } public virtual bool CanRemove { get; } = true; public virtual bool AIBlacklisted { get; set; } public abstract void Init(ConfigFile config); public virtual void CreateConfig(ConfigFile config) { } protected virtual void CreateLang() { LanguageAPI.Add("ITEM_" + ItemLangTokenName + "_NAME", ItemName); LanguageAPI.Add("ITEM_" + ItemLangTokenName + "_PICKUP", ItemPickupDesc); LanguageAPI.Add("ITEM_" + ItemLangTokenName + "_DESCRIPTION", ItemFullDescription); LanguageAPI.Add("ITEM_" + ItemLangTokenName + "_LORE", ItemLore); } public abstract ItemDisplayRuleDict CreateItemDisplayRules(); protected void CreateItem() { //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Expected O, but got Unknown if (AIBlacklisted) { ItemTags = new List<ItemTag>(ItemTags) { (ItemTag)4 }.ToArray(); } ItemDef = ScriptableObject.CreateInstance<ItemDef>(); ((Object)ItemDef).name = "ITEM_" + ItemLangTokenName; ItemDef.nameToken = "ITEM_" + ItemLangTokenName + "_NAME"; ItemDef.pickupToken = "ITEM_" + ItemLangTokenName + "_PICKUP"; ItemDef.descriptionToken = "ITEM_" + ItemLangTokenName + "_DESCRIPTION"; ItemDef.loreToken = "ITEM_" + ItemLangTokenName + "_LORE"; ItemDef.pickupModelPrefab = ItemModel; ItemDef.pickupIconSprite = ItemIcon; ItemDef.hidden = false; ItemDef.canRemove = CanRemove; ItemDef.deprecatedTier = Tier; if (ItemTags.Length != 0) { ItemDef.tags = ItemTags; } ItemAPI.Add(new CustomItem(ItemDef, CreateItemDisplayRules())); } public virtual void Hooks() { } public int GetCount(CharacterBody body) { if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.inventory)) { return 0; } return body.inventory.GetItemCount(ItemDef); } public int GetCount(CharacterMaster master) { if (!Object.op_Implicit((Object)(object)master) || !Object.op_Implicit((Object)(object)master.inventory)) { return 0; } return master.inventory.GetItemCount(ItemDef); } public int GetCountSpecific(CharacterBody body, ItemDef itemDef) { if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.inventory)) { return 0; } return body.inventory.GetItemCount(itemDef); } } public class WoodToolkit : ItemBase<WoodToolkit> { public sealed class Behavior : BaseItemBodyBehavior { private GameObject mushroomWardGameObject; private TeamFilter mushroomWardTeamFilter; private HealingWard mushroomHealingWard; private float timer; [ItemDefAssociation] private static ItemDef GetItemDef() { return ItemBase<WoodToolkit>.instance?.ItemDef; } private void OnEnable() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown ShrineHealingBehavior.AddShrineStack += new hook_AddShrineStack(ShrineHealingBehaviorOnAddShrineStack); } private void ShrineHealingBehaviorOnAddShrineStack(orig_AddShrineStack orig, ShrineHealingBehavior self, Interactor activator) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, activator); CharacterBody val = default(CharacterBody); if (((Component)activator).TryGetComponent<CharacterBody>(ref val) && val.inventory.GetItemCountEffective(ItemBase<WoodToolkit>.instance.ItemDef) > 0) { val.AddBuff(BuffBase<WoodToolkitBuff>.instance.BuffDef.buffIndex); } } private void OnDisable() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown ShrineHealingBehavior.AddShrineStack -= new hook_AddShrineStack(ShrineHealingBehaviorOnAddShrineStack); } private void FixedUpdate() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active) { return; } if (((BaseItemBodyBehavior)this).body.GetNotMoving() && ((BaseItemBodyBehavior)this).body.GetBuffCount(BuffBase<WoodToolkitBuff>.instance.BuffDef.buffIndex) > 0) { timer += Time.deltaTime; } else { timer = 0f; } if (timer > 2f && ((BaseItemBodyBehavior)this).body.GetBuffCount(BuffBase<WoodToolkitBuff>.instance.BuffDef.buffIndex) > 0) { timer = 0f; int count = ItemBase<WoodToolkit>.instance.GetCount(((BaseItemBodyBehavior)this).body); float num = ((BaseItemBodyBehavior)this).body.radius + 7f; num += 3f * (float)(count - 1); mushroomWardGameObject = Object.Instantiate<GameObject>(mushroomWardPrefab, ((BaseItemBodyBehavior)this).body.footPosition, Quaternion.identity); mushroomWardTeamFilter = mushroomWardGameObject.GetComponent<TeamFilter>(); mushroomHealingWard = mushroomWardGameObject.GetComponent<HealingWard>(); NetworkServer.Spawn(mushroomWardGameObject); if (Object.op_Implicit((Object)(object)mushroomHealingWard)) { mushroomHealingWard.interval = 0.25f; mushroomHealingWard.healFraction = (0.06f + 0.04f * (float)(count - 1)) * mushroomHealingWard.interval