Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of SuspiciousTentacle v2.1.8
SuspiciousTentacle.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using Aetherium.CoreModules; using BepInEx; using BepInEx.Configuration; using IL.RoR2; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using On.RoR2; using R2API; using RiskOfOptions; using RiskOfOptions.OptionConfigs; using RiskOfOptions.Options; using RoR2; using UnityEngine; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyCompany("SuspiciousTentacle")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("SuspiciousTentacle")] [assembly: AssemblyTitle("SuspiciousTentacle")] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace SuspiciousTentacle { internal class BellyBehavior : MonoBehaviour { internal CharacterBody parentBody; internal SuspiciousTentacle ST; private GameObject localBelly; private Renderer bellyRend; private Color BaseColor = new Color(0.2f, 0.2f, 0.2f, 1f); public void Awake() { //IL_002e: Unknown result type (might be due to invalid IL or missing references) Transform child = ((Component)this).transform.GetChild(0); if (Object.op_Implicit((Object)(object)child)) { ((Component)child).transform.localScale = new Vector3(0.2f, 0.25f, 0.5f); localBelly = ((Component)child).gameObject; bellyRend = localBelly.GetComponent<Renderer>(); } ColorBelly(); } public void ColorBelly() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_001e: 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_063a: Unknown result type (might be due to invalid IL or missing references) //IL_0433: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Unknown result type (might be due to invalid IL or missing references) //IL_04e0: Unknown result type (might be due to invalid IL or missing references) //IL_06d0: Unknown result type (might be due to invalid IL or missing references) //IL_06d5: Unknown result type (might be due to invalid IL or missing references) //IL_06f2: Unknown result type (might be due to invalid IL or missing references) //IL_06f7: Unknown result type (might be due to invalid IL or missing references) //IL_04c9: Unknown result type (might be due to invalid IL or missing references) //IL_04ce: Unknown result type (might be due to invalid IL or missing references) //IL_02c2: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_0576: Unknown result type (might be due to invalid IL or missing references) //IL_057b: Unknown result type (might be due to invalid IL or missing references) //IL_06b1: Unknown result type (might be due to invalid IL or missing references) //IL_06b6: Unknown result type (might be due to invalid IL or missing references) //IL_0693: Unknown result type (might be due to invalid IL or missing references) //IL_0698: Unknown result type (might be due to invalid IL or missing references) //IL_06ff: Unknown result type (might be due to invalid IL or missing references) //IL_0700: Unknown result type (might be due to invalid IL or missing references) //IL_0711: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_04aa: Unknown result type (might be due to invalid IL or missing references) //IL_04af: Unknown result type (might be due to invalid IL or missing references) //IL_048c: Unknown result type (might be due to invalid IL or missing references) //IL_0491: Unknown result type (might be due to invalid IL or missing references) //IL_058d: Unknown result type (might be due to invalid IL or missing references) //IL_02a3: Unknown result type (might be due to invalid IL or missing references) //IL_02a8: Unknown result type (might be due to invalid IL or missing references) //IL_0285: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Unknown result type (might be due to invalid IL or missing references) //IL_0386: Unknown result type (might be due to invalid IL or missing references) //IL_0557: Unknown result type (might be due to invalid IL or missing references) //IL_055c: Unknown result type (might be due to invalid IL or missing references) //IL_0539: Unknown result type (might be due to invalid IL or missing references) //IL_053e: Unknown result type (might be due to invalid IL or missing references) //IL_02d9: Unknown result type (might be due to invalid IL or missing references) //IL_0215: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_0623: Unknown result type (might be due to invalid IL or missing references) //IL_0628: 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_0421: Unknown result type (might be due to invalid IL or missing references) //IL_036f: Unknown result type (might be due to invalid IL or missing references) //IL_0374: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_0604: Unknown result type (might be due to invalid IL or missing references) //IL_0609: Unknown result type (might be due to invalid IL or missing references) //IL_05e6: Unknown result type (might be due to invalid IL or missing references) //IL_05eb: Unknown result type (might be due to invalid IL or missing references) //IL_03fd: Unknown result type (might be due to invalid IL or missing references) //IL_0402: Unknown result type (might be due to invalid IL or missing references) //IL_03df: Unknown result type (might be due to invalid IL or missing references) //IL_03e4: Unknown result type (might be due to invalid IL or missing references) //IL_0350: Unknown result type (might be due to invalid IL or missing references) //IL_0355: Unknown result type (might be due to invalid IL or missing references) //IL_0332: Unknown result type (might be due to invalid IL or missing references) //IL_0337: Unknown result type (might be due to invalid IL or missing references) if ((Object)parentBody == (Object)null) { return; } Color baseColor = default(Color); switch (BodyCatalog.GetBodyName(parentBody.bodyIndex)) { case "CommandoBody": { string name8 = ((Object)SkinCatalog.GetBodySkinDef(parentBody.bodyIndex, (int)parentBody.skinIndex)).name; string text8 = name8; if (!(text8 == "skinCommandoDefault")) { if (text8 == "skinCommandoAlt") { BaseColor = new Color(10f / 51f, 0.1764706f, 8f / 51f); } else { BaseColor = new Color(0f, 0f, 0f); } } else { BaseColor = new Color(8f / 51f, 8f / 51f, 8f / 51f); } break; } case "CaptainBody": { string name7 = ((Object)SkinCatalog.GetBodySkinDef(parentBody.bodyIndex, (int)parentBody.skinIndex)).name; string text7 = name7; if (!(text7 == "skinCaptainDefault")) { if (text7 == "skinCaptainAlt") { BaseColor = new Color(38f / 51f, 38f / 51f, 38f / 51f); } else { BaseColor = new Color(0f, 0f, 0f); } } else { BaseColor = new Color(20f / 51f, 20f / 51f, 20f / 51f); } break; } case "CrocoBody": { string name5 = ((Object)SkinCatalog.GetBodySkinDef(parentBody.bodyIndex, (int)parentBody.skinIndex)).name; string text5 = name5; if (!(text5 == "skinCrocoDefault")) { if (text5 == "skinCrocoAlt") { BaseColor = new Color(16f / 51f, 1f / 3f, 20f / 51f); } else { BaseColor = new Color(0f, 0f, 0f); } } else { BaseColor = new Color(0.23529412f, 5f / 51f, 8f / 51f); } break; } case "EngiBody": { string name4 = ((Object)SkinCatalog.GetBodySkinDef(parentBody.bodyIndex, (int)parentBody.skinIndex)).name; string text4 = name4; if (!(text4 == "skinEngiDefault")) { if (text4 == "skinEngiAlt") { BaseColor = new Color(0.16862746f, 10f / 51f, 8f / 51f); } else { BaseColor = new Color(0f, 0f, 0f); } } else { BaseColor = new Color(5f / 51f, 0.05490196f, 0.23529412f); } break; } case "HuntressBody": { string name2 = ((Object)SkinCatalog.GetBodySkinDef(parentBody.bodyIndex, (int)parentBody.skinIndex)).name; string text2 = name2; if (!(text2 == "skinHuntressDefault")) { if (text2 == "skinHuntressAlt") { BaseColor = new Color(10f / 51f, 5f / 51f, 8f / 51f); } else { BaseColor = new Color(0f, 0f, 0f); } } else { BaseColor = new Color(4f / 51f, 5f / 51f, 0.11764706f); } break; } case "LoaderBody": { string name3 = ((Object)SkinCatalog.GetBodySkinDef(parentBody.bodyIndex, (int)parentBody.skinIndex)).name; string text3 = name3; if (!(text3 == "skinLoaderDefault")) { if (text3 == "skinLoaderAlt") { BaseColor = new Color(6f / 85f, 0.09019608f, 18f / 85f); } else { BaseColor = new Color(0f, 0f, 0f); } } else { BaseColor = new Color(6f / 85f, 0.09019608f, 8f / 85f); } break; } case "MageBody": { string name6 = ((Object)SkinCatalog.GetBodySkinDef(parentBody.bodyIndex, (int)parentBody.skinIndex)).name; string text6 = name6; if (!(text6 == "skinMageDefault")) { if (text6 == "skinMageAlt") { BaseColor = new Color(1f / 17f, 4f / 51f, 5f / 51f); } else { BaseColor = new Color(0f, 0f, 0f); } } else { BaseColor = new Color(0.050980393f, 1f / 17f, 1f / 15f); } break; } case "MercBody": { string name = ((Object)SkinCatalog.GetBodySkinDef(parentBody.bodyIndex, (int)parentBody.skinIndex)).name; string text = name; if (!(text == "skinMercDefault")) { if (text == "skinMercAlt") { BaseColor = new Color(8f / 51f, 0f, 0f); } else { BaseColor = new Color(0f, 0f, 0f); } } else { BaseColor = new Color(7f / 85f, 5f / 51f, 0.16862746f); } break; } default: BaseColor = new Color(0.2f, 0.2f, 0.2f, 1f); break; } BaseColor = baseColor; bellyRend.material.color = BaseColor; } public void LateUpdate() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: 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) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) if (!((Object)ST == (Object)null) && !((Object)parentBody == (Object)null)) { float num = ST.GrowthProgress(parentBody); if (Object.op_Implicit((Object)(object)localBelly)) { Vector3 val = Vector3.Lerp(new Vector3(0.2f, 0.25f, 0.5f), Vector3.one, num); localBelly.transform.localScale = Vector3.Lerp(localBelly.transform.localScale, val, Time.deltaTime); } } } } [BepInPlugin("com.RuneFoxMods.SuspiciousTentacle", "SuspiciousTentacle", "1.0.9")] public class SuspiciousTentacle : BaseUnityPlugin { public const string PluginGUID = "com.RuneFoxMods.SuspiciousTentacle"; public const string PluginName = "SuspiciousTentacle"; public const string PluginVersion = "1.1.10"; private static ItemDef SusTentacleItemDef = ScriptableObject.CreateInstance<ItemDef>(); private static ItemDef CommonEggItemDef = ScriptableObject.CreateInstance<ItemDef>(); private static ItemDef UncommonEggItemDef = ScriptableObject.CreateInstance<ItemDef>(); private static ItemDef LegendaryEggItemDef = ScriptableObject.CreateInstance<ItemDef>(); private static ItemDef BossEggItemDef = ScriptableObject.CreateInstance<ItemDef>(); private static ItemDef LunarEggItemDef = ScriptableObject.CreateInstance<ItemDef>(); private static GameObject TentaclePrefab; private static GameObject BellyPrefab; private StatHooks hooks = new StatHooks(); public static AssetBundle bundle; private BuffDef EggGrowthDebuff; private string EggDesc = "Can be used as an item for cauldrons and printers :3"; private Dictionary<CharacterBody, float> EggSpawnTimers = new Dictionary<CharacterBody, float>(); private Dictionary<CharacterBody, Queue<ItemDef>> eggQueue = new Dictionary<CharacterBody, Queue<ItemDef>>(); public static ConfigEntry<float> EggGrowthTime { get; set; } public static ConfigEntry<float> TimeBetweenEggs { get; set; } public static ConfigEntry<float> UncommonRarity { get; set; } public static ConfigEntry<float> LegendaryRarity { get; set; } public static ConfigEntry<float> LunarRarity { get; set; } public static ConfigEntry<float> BossRarity { get; set; } public static ConfigEntry<float> SlowDownExponent { get; set; } public static ConfigEntry<bool> IsDebuff { get; set; } public static ConfigEntry<bool> UseLunar { get; set; } public static ConfigEntry<bool> SlowdownCurve { get; set; } public static ConfigEntry<bool> ShowBelly { get; set; } public static ConfigEntry<int> EggNum { get; set; } public static ConfigEntry<bool> EggOverLoad { get; set; } public static ConfigEntry<int> Egglogbase { get; set; } public void Start() { //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Expected O, but got Unknown //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Expected O, but got Unknown AssetLoad(); ApplyConfigs(); hooks.Init(); DefineItems(); AddTokens(); CreateBuff(); LoadItems(); ConfigBullShit(); CharacterBody.OnBuffFinalStackLost += new hook_OnBuffFinalStackLost(SpawnEgg); CharacterBody.OnClientBuffsChanged += new hook_OnClientBuffsChanged(test); CharacterBody.onBodyInventoryChangedGlobal += CharacterBody_onBodyInventoryChangedGlobal; StatHooks.GetStatCoefficients += AddGrowthDebuff; } private void ConfigBullShit() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown //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_00a8: 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_00cc: Expected O, but got Unknown //IL_00cd: 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_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Expected O, but got Unknown //IL_0102: 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_0112: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Expected O, but got Unknown //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Expected O, but got Unknown //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Expected O, but got Unknown //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Expected O, but got Unknown //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01b5: Expected O, but got Unknown //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: 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_01d8: Expected O, but got Unknown ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(IsDebuff)); ModSettingsManager.AddOption((BaseOption)new SliderOption(TimeBetweenEggs)); new SliderConfig { min = 0f, max = 1f }; ModSettingsManager.AddOption((BaseOption)new SliderOption(EggGrowthTime)); new SliderConfig { min = 1f, max = 240f }; ModSettingsManager.AddOption((BaseOption)new IntSliderOption(Egglogbase)); new IntSliderConfig { min = 2, max = 10 }; ModSettingsManager.AddOption((BaseOption)new StepSliderOption(UncommonRarity)); new StepSliderConfig { min = 1f, max = 100f, increment = 1f }; ModSettingsManager.AddOption((BaseOption)new StepSliderOption(LegendaryRarity)); new StepSliderConfig { min = 1f, max = 100f, increment = 1f }; ModSettingsManager.AddOption((BaseOption)new StepSliderOption(BossRarity)); new StepSliderConfig { min = 1f, max = 100f, increment = 1f }; ModSettingsManager.AddOption((BaseOption)new StepSliderOption(LunarRarity)); new StepSliderConfig { min = 1f, max = 100f, increment = 1f }; ModSettingsManager.AddOption((BaseOption)new SliderOption(SlowDownExponent)); new SliderConfig { min = 0f, max = 1f }; ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(EggOverLoad)); ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(SlowdownCurve)); ModSettingsManager.AddOption((BaseOption)new IntSliderOption(EggNum)); new IntSliderConfig { min = 1, max = 10 }; ModSettingsManager.AddOption((BaseOption)new CheckBoxOption(ShowBelly)); } private void LoadItems() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Expected O, but got Unknown //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Expected O, but got Unknown //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Expected O, but got Unknown //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Expected O, but got Unknown //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Expected O, but got Unknown ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); ItemDisplayRuleDict val2 = TentacleDisplayRules(); if (!ItemAPI.Add(new CustomItem(SusTentacleItemDef, val2))) { Debug.Log((object)"SusTent: Error Loading SusTentacle Item"); } if (!ItemAPI.Add(new CustomItem(CommonEggItemDef, val))) { Debug.Log((object)"SusTent: Error Loading SusTentacle Item"); } if (!ItemAPI.Add(new CustomItem(UncommonEggItemDef, val))) { Debug.Log((object)"SusTent: Error Loading SusTentacle Item"); } if (!ItemAPI.Add(new CustomItem(LegendaryEggItemDef, val))) { Debug.Log((object)"SusTent: Error Loading SusTentacle Item"); } if (UseLunar.Value && !ItemAPI.Add(new CustomItem(LunarEggItemDef, val))) { Debug.Log((object)"SusTent: Error Loading SusTentacle Item"); } if (!ItemAPI.Add(new CustomItem(BossEggItemDef, val))) { Debug.Log((object)"SusTent: Error Loading SusTentacle Item"); } } private void ApplyConfigs() { UseLunar = ((BaseUnityPlugin)this).Config.Bind<bool>("Config", "Enable Lunar Eggs", false, "Enables Lunar eggs. Only use if you have a mod like LunarScrap that can use them"); ShowBelly = ((BaseUnityPlugin)this).Config.Bind<bool>("Config", "Enables Belly display", false, "this feature is considered deprecated as body blend is way better"); EggGrowthTime = ((BaseUnityPlugin)this).Config.Bind<float>("Config", "Egg Growth Time", 60f, "How long each batch of eggs takes"); TimeBetweenEggs = ((BaseUnityPlugin)this).Config.Bind<float>("Config", "Time Between Eggs", 0.5f, "How long the pause between eggs is when laying a batch"); UncommonRarity = ((BaseUnityPlugin)this).Config.Bind<float>("Drop Rate", "Uncommon Egg Rarity", 35f, "Chance at getting an Uncommon Egg. (Set between 0-100)"); LegendaryRarity = ((BaseUnityPlugin)this).Config.Bind<float>("Drop Rate", "Legendary Egg Rarity", 5f, "Chance at getting an Legendary Egg. (Set between 0-100)"); LunarRarity = ((BaseUnityPlugin)this).Config.Bind<float>("Drop Rate", "Lunar Egg Rarity", 10f, "Chance at getting an Lunar Egg. (Set between 0-100)"); BossRarity = ((BaseUnityPlugin)this).Config.Bind<float>("Drop Rate", "Boss Egg Rarity", 10f, "Chance at getting an Boss Egg. (Set between 0-100)"); SlowDownExponent = ((BaseUnityPlugin)this).Config.Bind<float>("Debuff", "Slowdown Exponent", 0.99f, "Max Slowdown is calculated using the formula: 1-1/(1+tentacleCount)^exponent. Between 0-1 is a good value"); SlowdownCurve = ((BaseUnityPlugin)this).Config.Bind<bool>("Debuff", "Slowdown Curve", true, "default is true if set to false max slowdown is used all the time regardless of belly growth"); IsDebuff = ((BaseUnityPlugin)this).Config.Bind<bool>("Debuff", "Debuff/Buff", true, "whether this counts as debuff for blast shower/Ben's Raincoat/Abyssal Medkit purposes :3"); EggNum = ((BaseUnityPlugin)this).Config.Bind<int>("Egg", "Egg Count", 1, "Amount of eggs dropped per tentacle it will increase the queue so decrease time between eggs config to compensate"); EggOverLoad = ((BaseUnityPlugin)this).Config.Bind<bool>("Egg", "eggoverload", false, "when set to true egg growth time will be increased based on a log of the amount of eggs"); Egglogbase = ((BaseUnityPlugin)this).Config.Bind<int>("Egg", "Egg log base", 10, "the base for which the log base will be set to"); } private static void AssetLoad() { using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SuspiciousTentacle.belly")) { bundle = AssetBundle.LoadFromStream(stream); } Debug.Log((object)"SusTent: Assets loaded"); BellyPrefab = bundle.LoadAsset<GameObject>("Assets/Resources/BellyBase.prefab"); if (Object.op_Implicit((Object)(object)BellyPrefab)) { BellyPrefab.AddComponent<BellyBehavior>(); } TentaclePrefab = bundle.LoadAsset<GameObject>("Assets/Resources/SuspiciousTentacle.prefab"); } private ItemDisplayRuleDict TentacleDisplayRules() { //IL_0001: 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_0010: 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_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: 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_0072: 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) //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) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: 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_00ee: 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_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0114: 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_0124: Expected O, but got Unknown //IL_0134: 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_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018b: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: 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_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_0222: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_026d: Unknown result type (might be due to invalid IL or missing references) //IL_029b: Unknown result type (might be due to invalid IL or missing references) //IL_02a0: Unknown result type (might be due to invalid IL or missing references) //IL_02b6: Unknown result type (might be due to invalid IL or missing references) //IL_02bb: Unknown result type (might be due to invalid IL or missing references) //IL_02d1: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02dc: Unknown result type (might be due to invalid IL or missing references) //IL_02e5: Unknown result type (might be due to invalid IL or missing references) //IL_02ee: Unknown result type (might be due to invalid IL or missing references) //IL_031c: Unknown result type (might be due to invalid IL or missing references) //IL_0321: Unknown result type (might be due to invalid IL or missing references) //IL_0337: 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_0352: Unknown result type (might be due to invalid IL or missing references) //IL_0357: Unknown result type (might be due to invalid IL or missing references) //IL_035c: Unknown result type (might be due to invalid IL or missing references) //IL_035d: Unknown result type (might be due to invalid IL or missing references) //IL_037d: Unknown result type (might be due to invalid IL or missing references) //IL_0386: 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_03cf: Unknown result type (might be due to invalid IL or missing references) //IL_03d4: Unknown result type (might be due to invalid IL or missing references) //IL_03ea: Unknown result type (might be due to invalid IL or missing references) //IL_03ef: Unknown result type (might be due to invalid IL or missing references) //IL_03f4: Unknown result type (might be due to invalid IL or missing references) //IL_03f5: Unknown result type (might be due to invalid IL or missing references) //IL_03fe: Unknown result type (might be due to invalid IL or missing references) //IL_0407: Unknown result type (might be due to invalid IL or missing references) //IL_0435: Unknown result type (might be due to invalid IL or missing references) //IL_043a: Unknown result type (might be due to invalid IL or missing references) //IL_0450: Unknown result type (might be due to invalid IL or missing references) //IL_0455: Unknown result type (might be due to invalid IL or missing references) //IL_046b: Unknown result type (might be due to invalid IL or missing references) //IL_0470: Unknown result type (might be due to invalid IL or missing references) //IL_0475: Unknown result type (might be due to invalid IL or missing references) //IL_0476: Unknown result type (might be due to invalid IL or missing references) //IL_0496: Unknown result type (might be due to invalid IL or missing references) //IL_049f: Unknown result type (might be due to invalid IL or missing references) //IL_04cd: Unknown result type (might be due to invalid IL or missing references) //IL_04d2: Unknown result type (might be due to invalid IL or missing references) //IL_04e8: Unknown result type (might be due to invalid IL or missing references) //IL_04ed: Unknown result type (might be due to invalid IL or missing references) //IL_0503: Unknown result type (might be due to invalid IL or missing references) //IL_0508: Unknown result type (might be due to invalid IL or missing references) //IL_050d: Unknown result type (might be due to invalid IL or missing references) //IL_050e: Unknown result type (might be due to invalid IL or missing references) //IL_0517: Unknown result type (might be due to invalid IL or missing references) //IL_0520: Unknown result type (might be due to invalid IL or missing references) //IL_054e: Unknown result type (might be due to invalid IL or missing references) //IL_0553: Unknown result type (might be due to invalid IL or missing references) //IL_0569: Unknown result type (might be due to invalid IL or missing references) //IL_056e: Unknown result type (might be due to invalid IL or missing references) //IL_0584: Unknown result type (might be due to invalid IL or missing references) //IL_0589: Unknown result type (might be due to invalid IL or missing references) //IL_058e: Unknown result type (might be due to invalid IL or missing references) //IL_058f: Unknown result type (might be due to invalid IL or missing references) //IL_05c6: Unknown result type (might be due to invalid IL or missing references) //IL_05cf: Unknown result type (might be due to invalid IL or missing references) //IL_05fd: Unknown result type (might be due to invalid IL or missing references) //IL_0602: Unknown result type (might be due to invalid IL or missing references) //IL_0618: Unknown result type (might be due to invalid IL or missing references) //IL_061d: Unknown result type (might be due to invalid IL or missing references) //IL_0633: Unknown result type (might be due to invalid IL or missing references) //IL_0638: Unknown result type (might be due to invalid IL or missing references) //IL_063d: Unknown result type (might be due to invalid IL or missing references) //IL_063e: Unknown result type (might be due to invalid IL or missing references) //IL_0647: Unknown result type (might be due to invalid IL or missing references) //IL_0650: Unknown result type (might be due to invalid IL or missing references) //IL_0672: Unknown result type (might be due to invalid IL or missing references) //IL_0677: Unknown result type (might be due to invalid IL or missing references) //IL_068d: Unknown result type (might be due to invalid IL or missing references) //IL_0692: Unknown result type (might be due to invalid IL or missing references) //IL_06a8: Unknown result type (might be due to invalid IL or missing references) //IL_06ad: Unknown result type (might be due to invalid IL or missing references) //IL_06b2: Unknown result type (might be due to invalid IL or missing references) //IL_06b3: Unknown result type (might be due to invalid IL or missing references) //IL_06d3: Unknown result type (might be due to invalid IL or missing references) //IL_06dc: Unknown result type (might be due to invalid IL or missing references) //IL_070a: Unknown result type (might be due to invalid IL or missing references) //IL_070f: Unknown result type (might be due to invalid IL or missing references) //IL_0725: Unknown result type (might be due to invalid IL or missing references) //IL_072a: Unknown result type (might be due to invalid IL or missing references) //IL_0740: Unknown result type (might be due to invalid IL or missing references) //IL_0745: Unknown result type (might be due to invalid IL or missing references) //IL_074a: Unknown result type (might be due to invalid IL or missing references) //IL_074b: Unknown result type (might be due to invalid IL or missing references) //IL_0754: Unknown result type (might be due to invalid IL or missing references) //IL_075d: Unknown result type (might be due to invalid IL or missing references) //IL_078b: Unknown result type (might be due to invalid IL or missing references) //IL_0790: Unknown result type (might be due to invalid IL or missing references) //IL_07a6: Unknown result type (might be due to invalid IL or missing references) //IL_07ab: Unknown result type (might be due to invalid IL or missing references) //IL_07c1: Unknown result type (might be due to invalid IL or missing references) //IL_07c6: Unknown result type (might be due to invalid IL or missing references) //IL_07cb: Unknown result type (might be due to invalid IL or missing references) //IL_07cc: Unknown result type (might be due to invalid IL or missing references) //IL_07ec: Unknown result type (might be due to invalid IL or missing references) //IL_07f5: Unknown result type (might be due to invalid IL or missing references) //IL_0823: Unknown result type (might be due to invalid IL or missing references) //IL_0828: Unknown result type (might be due to invalid IL or missing references) //IL_083e: Unknown result type (might be due to invalid IL or missing references) //IL_0843: Unknown result type (might be due to invalid IL or missing references) //IL_0859: Unknown result type (might be due to invalid IL or missing references) //IL_085e: Unknown result type (might be due to invalid IL or missing references) //IL_0863: Unknown result type (might be due to invalid IL or missing references) //IL_0864: Unknown result type (might be due to invalid IL or missing references) //IL_086d: Unknown result type (might be due to invalid IL or missing references) //IL_0876: Unknown result type (might be due to invalid IL or missing references) //IL_08a4: Unknown result type (might be due to invalid IL or missing references) //IL_08a9: Unknown result type (might be due to invalid IL or missing references) //IL_08bf: Unknown result type (might be due to invalid IL or missing references) //IL_08c4: Unknown result type (might be due to invalid IL or missing references) //IL_08da: Unknown result type (might be due to invalid IL or missing references) //IL_08df: Unknown result type (might be due to invalid IL or missing references) //IL_08e4: Unknown result type (might be due to invalid IL or missing references) //IL_08e5: Unknown result type (might be due to invalid IL or missing references) Vector3 val = Vector3.one * 0.4f; ItemDisplayRuleDict val2 = new ItemDisplayRuleDict((ItemDisplayRule[])(object)new ItemDisplayRule[2] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = BellyPrefab, childName = "Stomach", localPos = new Vector3(0f, 0.07f, -0.01f), localAngles = new Vector3(277.1241f, 359.5891f, 261.3644f), localScale = new Vector3(0.25f, 0.15f, 0.2f) }, new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = TentaclePrefab, childName = "Pelvis", localPos = new Vector3(0f, 0.0604f, -0.0569f), localAngles = new Vector3(63.3116f, 0f, 323.8518f), localScale = new Vector3(0.025f, 0.025f, 0.025f) } }); val2.Add("mdlHuntress", (ItemDisplayRule[])(object)new ItemDisplayRule[2] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = BellyPrefab, childName = "Stomach", localPos = new Vector3(0f, 0f, 0f), localAngles = new Vector3(293.9061f, 350.9999f, 270.0001f), localScale = new Vector3(0.2f, 0.15f, 0.15f) }, new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = TentaclePrefab, childName = "Pelvis", localPos = new Vector3(0f, 0.0929f, -0.0146f), localAngles = new Vector3(50.6317f, 0f, 0f), localScale = new Vector3(0.025f, 0.025f, 0.025f) } }); val2.Add("mdlToolbot", (ItemDisplayRule[])(object)new ItemDisplayRule[0]); val2.Add("mdlEngi", (ItemDisplayRule[])(object)new ItemDisplayRule[2] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = BellyPrefab, childName = "Stomach", localPos = new Vector3(-0.0001f, -0.0265f, -0.012f), localAngles = new Vector3(281.6966f, 351f, 270.0001f), localScale = new Vector3(0.2f, 0.175f, 0.2f) }, new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = TentaclePrefab, childName = "Pelvis", localPos = new Vector3(0f, 0.1035f, -0.058f), localAngles = new Vector3(57.6637f, 0f, 0f), localScale = new Vector3(0.025f, 0.025f, 0.025f) } }); val2.Add("mdlMage", (ItemDisplayRule[])(object)new ItemDisplayRule[2] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = BellyPrefab, childName = "Stomach", localPos = new Vector3(0.0101f, -0.0003f, 0.0271f), localAngles = new Vector3(285.4578f, 356.7288f, 263.8447f), localScale = new Vector3(0.2f, 0.15f, 0.15f) }, new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = TentaclePrefab, childName = "Pelvis", localPos = new Vector3(0f, 0.1035f, -0.058f), localAngles = new Vector3(57.6637f, 0f, 0f), localScale = new Vector3(0.025f, 0.025f, 0.025f) } }); val2.Add("mdlMerc", (ItemDisplayRule[])(object)new ItemDisplayRule[2] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = BellyPrefab, childName = "Stomach", localPos = new Vector3(-0.0005f, -0.0722f, 0.0158f), localAngles = new Vector3(278.2904f, 333.7606f, 288.1437f), localScale = new Vector3(0.2f, 0.15f, 0.175f) }, new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = TentaclePrefab, childName = "Pelvis", localPos = new Vector3(0f, 0.1692f, -0.038f), localAngles = new Vector3(52.8342f, 0f, 0f), localScale = new Vector3(0.025f, 0.025f, 0.025f) } }); val2.Add("mdlTreebot", (ItemDisplayRule[])(object)new ItemDisplayRule[0]); val2.Add("mdlLoader", (ItemDisplayRule[])(object)new ItemDisplayRule[2] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = BellyPrefab, childName = "Stomach", localPos = new Vector3(-0.0001f, -0.0229f, 0.0099f), localAngles = new Vector3(280.0172f, 338.5141f, 282.8109f), localScale = new Vector3(0.2f, 0.17f, 0.175f) }, new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = TentaclePrefab, localPos = new Vector3(-0.0128f, 0.1827f, -0.0483f), localAngles = new Vector3(72.2033f, 0f, 0f), localScale = new Vector3(0.025f, 0.025f, 0.025f) } }); val2.Add("mdlCroco", (ItemDisplayRule[])(object)new ItemDisplayRule[2] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = BellyPrefab, childName = "Stomach", localPos = new Vector3(0f, -0.3115f, -0.9505f), localAngles = new Vector3(279.7174f, 356.7131f, 90.5223f), localScale = new Vector3(2.75f, 2.5f, 2f) }, new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = TentaclePrefab, childName = "Hip", localPos = new Vector3(0f, 1.1898f, -1.0954f), localAngles = new Vector3(45.4947f, 0f, 0f), localScale = new Vector3(0.35f, 0.35f, 0.3f) } }); val2.Add("mdlCaptain", (ItemDisplayRule[])(object)new ItemDisplayRule[2] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = BellyPrefab, childName = "Stomach", localPos = new Vector3(-0.0164f, 0.1507f, 0.0245f), localAngles = new Vector3(288.7136f, 10.3394f, 261.6913f), localScale = new Vector3(0.25f, 0.2f, 0.2f) }, new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = TentaclePrefab, childName = "Pelvis", localPos = new Vector3(0f, 0.0519f, -0.016f), localAngles = new Vector3(72.8418f, 0f, 0f), localScale = new Vector3(0.035f, 0.035f, 0.03f) } }); return val2; } private void CreateBuff() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) EggGrowthDebuff = ScriptableObject.CreateInstance<BuffDef>(); EggGrowthDebuff.buffColor = new Color(0f, 100f, 100f); EggGrowthDebuff.canStack = true; EggGrowthDebuff.isDebuff = IsDebuff.Value; ((Object)EggGrowthDebuff).name = "SuspiciousTentacle: Egg Growth Timer"; EggGrowthDebuff.iconSprite = bundle.LoadAsset<Sprite>("Assets/Resources/EggBuffIcon.png"); if (!ContentAddition.AddBuffDef(EggGrowthDebuff)) { Debug.Log((object)"SusTent: unable to add Buff to buff catalouge"); } } public int EggMasterCount(CharacterBody character) { //IL_000c: 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_0037: 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_0063: Unknown result type (might be due to invalid IL or missing references) return character.inventory.GetItemCount(CommonEggItemDef.itemIndex) + character.inventory.GetItemCount(UncommonEggItemDef.itemIndex) + character.inventory.GetItemCount(LegendaryEggItemDef.itemIndex) + character.inventory.GetItemCount(BossEggItemDef.itemIndex) + character.inventory.GetItemCount(LunarEggItemDef.itemIndex); } private void setTierWhenAvailable(ItemDef itemDef, ItemTier tier) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) itemDef.deprecatedTier = tier; } private void DefineItems() { ((Object)SusTentacleItemDef).name = "SUSPICIOUSTENTACLE_NAME"; SusTentacleItemDef.nameToken = "SUSPICIOUSTENTACLE_NAME"; SusTentacleItemDef.pickupToken = "SUSPICIOUSTENTACLE_PICKUP"; SusTentacleItemDef.descriptionToken = "SUSPICIOUSTENTACLE_DESC"; SusTentacleItemDef.loreToken = "SUSPICIOUSTENTACLE_LORE"; setTierWhenAvailable(SusTentacleItemDef, (ItemTier)3); SusTentacleItemDef.pickupIconSprite = bundle.LoadAsset<Sprite>("Assets/Resources/SuspiciousTentacle.png"); SusTentacleItemDef.pickupModelPrefab = bundle.LoadAsset<GameObject>("Assets/Resources/SuspiciousTentacleDisplay.prefab"); SusTentacleItemDef.canRemove = true; SusTentacleItemDef.hidden = false; SusTentacleItemDef.tags = (ItemTag[])(object)new ItemTag[2] { (ItemTag)4, (ItemTag)11 }; ((Object)CommonEggItemDef).name = "COMMONEGG_NAME"; CommonEggItemDef.nameToken = "COMMONEGG_NAME"; CommonEggItemDef.pickupToken = "COMMONEGG_PICKUP"; CommonEggItemDef.descriptionToken = "COMMONEGG_DESC"; CommonEggItemDef.loreToken = "COMMONEGG_LORE"; setTierWhenAvailable(CommonEggItemDef, (ItemTier)0); CommonEggItemDef.pickupIconSprite = bundle.LoadAsset<Sprite>("Assets/Resources/CommonEggIcon.png"); CommonEggItemDef.pickupModelPrefab = bundle.LoadAsset<GameObject>("Assets/Resources/CommonEgg.prefab"); CommonEggItemDef.canRemove = true; CommonEggItemDef.hidden = false; CommonEggItemDef.tags = (ItemTag[])(object)new ItemTag[2] { (ItemTag)9, (ItemTag)10 }; ((Object)UncommonEggItemDef).name = "UNCOMMONEGG_NAME"; UncommonEggItemDef.nameToken = "UNCOMMONEGG_NAME"; UncommonEggItemDef.pickupToken = "UNCOMMONEGG_PICKUP"; UncommonEggItemDef.descriptionToken = "UNCOMMONEGG_DESC"; UncommonEggItemDef.loreToken = "UNCOMMONEGG_LORE"; setTierWhenAvailable(UncommonEggItemDef, (ItemTier)1); UncommonEggItemDef.pickupIconSprite = bundle.LoadAsset<Sprite>("Assets/Resources/UncommonEggIcon.png"); UncommonEggItemDef.pickupModelPrefab = bundle.LoadAsset<GameObject>("Assets/Resources/UncommonEgg.prefab"); UncommonEggItemDef.canRemove = true; UncommonEggItemDef.hidden = false; UncommonEggItemDef.tags = (ItemTag[])(object)new ItemTag[2] { (ItemTag)9, (ItemTag)10 }; ((Object)LegendaryEggItemDef).name = "LEGENDARYEGG_NAME"; LegendaryEggItemDef.nameToken = "LEGENDARYEGG_NAME"; LegendaryEggItemDef.pickupToken = "LEGENDARYEGG_PICKUP"; LegendaryEggItemDef.descriptionToken = "LEGENDARYEGG_DESC"; LegendaryEggItemDef.loreToken = "LEGENDARYEGG_LORE"; setTierWhenAvailable(LegendaryEggItemDef, (ItemTier)2); LegendaryEggItemDef.pickupIconSprite = bundle.LoadAsset<Sprite>("Assets/Resources/LegendaryEggIcon.png"); LegendaryEggItemDef.pickupModelPrefab = bundle.LoadAsset<GameObject>("Assets/Resources/LegendaryEgg.prefab"); LegendaryEggItemDef.canRemove = true; LegendaryEggItemDef.hidden = false; LegendaryEggItemDef.tags = (ItemTag[])(object)new ItemTag[2] { (ItemTag)9, (ItemTag)10 }; ((Object)LunarEggItemDef).name = "LUNAREGG_NAME"; LunarEggItemDef.nameToken = "LUNAREGG_NAME"; LunarEggItemDef.pickupToken = "LUNAREGG_PICKUP"; LunarEggItemDef.descriptionToken = "LUNAREGG_DESC"; LunarEggItemDef.loreToken = "LUNAREGG_LORE"; setTierWhenAvailable(LunarEggItemDef, (ItemTier)3); LunarEggItemDef.pickupIconSprite = bundle.LoadAsset<Sprite>("Assets/Resources/LunarEggIcon.png"); LunarEggItemDef.pickupModelPrefab = bundle.LoadAsset<GameObject>("Assets/Resources/LunarEgg.prefab"); LunarEggItemDef.canRemove = true; LunarEggItemDef.hidden = false; LunarEggItemDef.tags = (ItemTag[])(object)new ItemTag[2] { (ItemTag)9, (ItemTag)10 }; ((Object)BossEggItemDef).name = "BOSSEGG_NAME"; BossEggItemDef.nameToken = "BOSSEGG_NAME"; BossEggItemDef.pickupToken = "BOSSEGG_PICKUP"; BossEggItemDef.descriptionToken = "BOSSEGG_DESC"; BossEggItemDef.loreToken = "BOSSEGG_LORE"; setTierWhenAvailable(BossEggItemDef, (ItemTier)4); BossEggItemDef.pickupIconSprite = bundle.LoadAsset<Sprite>("Assets/Resources/BossEggIcon.png"); BossEggItemDef.pickupModelPrefab = bundle.LoadAsset<GameObject>("Assets/Resources/BossEgg.prefab"); BossEggItemDef.canRemove = true; BossEggItemDef.hidden = false; BossEggItemDef.tags = (ItemTag[])(object)new ItemTag[2] { (ItemTag)9, (ItemTag)10 }; } private void AddTokens() { LanguageAPI.Add("SUSPICIOUSTENTACLE_NAME", "Suspicious Tentacle"); LanguageAPI.Add("SUSPICIOUSTENTACLE_PICKUP", "Baby on board"); LanguageAPI.Add("SUSPICIOUSTENTACLE_DESC", "Grow an egg<style=cStack>(+1 per stack)</style> over time.\n Decreases movement speed as the egg(s) grows. <style=cStack>Additional Tentacles increase slow effect</style>"); LanguageAPI.Add("SUSPICIOUSTENTACLE_LORE", "It's not connected to anything, where are the eggs even coming from?"); LanguageAPI.Add("COMMONEGG_NAME", "Common Egg"); LanguageAPI.Add("COMMONEGG_PICKUP", "feeling cute"); LanguageAPI.Add("COMMONEGG_DESC", EggDesc); LanguageAPI.Add("COMMONEGG_LORE", "crazy?"); LanguageAPI.Add("UNCOMMONEGG_NAME", "Uncommon Egg"); LanguageAPI.Add("UNCOMMONEGG_PICKUP", "might delete"); LanguageAPI.Add("UNCOMMONEGG_DESC", EggDesc); LanguageAPI.Add("UNCOMMONEGG_LORE", "cbt"); LanguageAPI.Add("LEGENDARYEGG_NAME", "Legendary Egg"); LanguageAPI.Add("LEGENDARYEGG_PICKUP", "later"); LanguageAPI.Add("LEGENDARYEGG_DESC", "let me know on discord if you use the base belly model so I know if I'm free to get rid of the code but I probably won't"); LanguageAPI.Add("LEGENDARYEGG_LORE", "i am using these to shitpost"); LanguageAPI.Add("LUNAREGG_NAME", "Lunar Egg"); LanguageAPI.Add("LUNAREGG_PICKUP", "does anyone even use these ping me on discord if you do cause i'm curious"); LanguageAPI.Add("LUNAREGG_DESC", EggDesc); LanguageAPI.Add("LUNAREGG_LORE", "trolled"); LanguageAPI.Add("BOSSEGG_NAME", "Boss Egg"); LanguageAPI.Add("BOSSEGG_PICKUP", "why are the majority of boss items just glorified drones"); LanguageAPI.Add("BOSSEGG_DESC", "thought of a quirky idea void eggs and printers"); LanguageAPI.Add("BOSSEGG_LORE", "balls"); } private void CharacterBody_onBodyInventoryChangedGlobal(CharacterBody obj) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) BellyBehavior componentInChildren = ((Component)obj.modelLocator.modelTransform).GetComponentInChildren<BellyBehavior>(); if (obj.inventory.GetItemCount(SusTentacleItemDef.itemIndex) != 0 && Object.op_Implicit((Object)(object)componentInChildren)) { if (ShowBelly.Value) { componentInChildren.parentBody = obj; componentInChildren.ST = this; } else { ((Renderer)((Component)componentInChildren).gameObject.GetComponentInChildren<MeshRenderer>()).enabled = false; } } } private void test4(orig_OnBodyStart orig, CharacterMaster self, CharacterBody body) { orig.Invoke(self, body); if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.modelLocator) || !Object.op_Implicit((Object)(object)body.modelLocator.modelTransform)) { return; } BellyBehavior componentInChildren = ((Component)body.modelLocator.modelTransform).GetComponentInChildren<BellyBehavior>(); if (Object.op_Implicit((Object)(object)componentInChildren)) { if (ShowBelly.Value) { componentInChildren.parentBody = body; componentInChildren.ST = this; } else { ((Renderer)((Component)componentInChildren).gameObject.GetComponentInChildren<MeshRenderer>()).enabled = false; } } } private CharacterBody test3(orig_SpawnBody orig, CharacterMaster self, Vector3 position, Quaternion rotation) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0004: 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) CharacterBody val = orig.Invoke(self, position, rotation); if (Object.op_Implicit((Object)(object)self.inventory) && self.inventory.GetItemCount(ItemCatalog.FindItemIndex(((Object)SusTentacleItemDef).name)) > 0) { BellyBehavior componentInChildren = ((Component)self.GetBody().modelLocator.modelTransform).GetComponentInChildren<BellyBehavior>(); BellyBehavior componentInChildren2 = ((Component)val.modelLocator.modelTransform).GetComponentInChildren<BellyBehavior>(); if (Object.op_Implicit((Object)(object)componentInChildren)) { if (ShowBelly.Value) { componentInChildren.parentBody = val; componentInChildren.ST = this; } else { ((Renderer)((Component)componentInChildren).gameObject.GetComponentInChildren<MeshRenderer>()).enabled = false; } } } return val; } private void test(orig_OnClientBuffsChanged orig, CharacterBody self) { self.RecalculateStats(); orig.Invoke(self); } private void test7(orig_OnInventoryChanged orig, CharacterBody self) { //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) int itemCount = self.inventory.GetItemCount(SusTentacleItemDef.itemIndex); orig.Invoke(self); int itemCount2 = self.inventory.GetItemCount(SusTentacleItemDef.itemIndex); if (itemCount == 0 && itemCount2 >= 1) { BellyBehavior componentInChildren = ((Component)self.modelLocator.modelTransform).GetComponentInChildren<BellyBehavior>(); if (Object.op_Implicit((Object)(object)componentInChildren) && ShowBelly.Value) { componentInChildren.parentBody = self; componentInChildren.ST = this; } else { ((Renderer)((Component)componentInChildren).gameObject.GetComponentInChildren<MeshRenderer>()).enabled = false; } } } private void AddGrowthDebuff(CharacterBody sender, StatHooks.StatHookEventArgs args) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) if (sender.HasBuff(EggGrowthDebuff.buffIndex)) { float num = 1f - 1f / (1f + Mathf.Pow((float)sender.inventory.GetItemCount(SusTentacleItemDef), SlowDownExponent.Value)); if (SlowdownCurve.Value) { } num *= GrowthProgress(sender); args.moveSpeedMultAdd -= num; } } public float GrowthProgress(CharacterBody character) { //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) if (!EggOverLoad.Value) { return 1f - (float)character.GetBuffCount(EggGrowthDebuff.buffIndex) / EggGrowthTime.Value; } return 1f - (float)character.GetBuffCount(EggGrowthDebuff.buffIndex) / EggGrowthTime.Value * Mathf.Log((float)EggMasterCount(character), (float)Egglogbase.Value); } private void SpawnEgg(orig_OnBuffFinalStackLost orig, CharacterBody self, BuffDef buffDef) { //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) if (buffDef.buffIndex == EggGrowthDebuff.buffIndex) { int itemCount = self.inventory.GetItemCount(SusTentacleItemDef); itemCount *= EggNum.Value; if (itemCount == 0) { itemCount = 1; } for (int i = 0; i < itemCount; i++) { bool flag = Util.CheckRoll(UncommonRarity.Value, self.master); bool flag2 = Util.CheckRoll(LunarRarity.Value, self.master); bool flag3 = Util.CheckRoll(BossRarity.Value, self.master); bool flag4 = Util.CheckRoll(LegendaryRarity.Value, self.master); ItemDef item = CommonEggItemDef; if (flag) { item = UncommonEggItemDef; } if (flag2 && UseLunar.Value) { item = LunarEggItemDef; } if (flag3) { item = BossEggItemDef; } if (flag4) { item = LegendaryEggItemDef; } if (!eggQueue.ContainsKey(self)) { eggQueue.Add(self, new Queue<ItemDef>()); } eggQueue[self].Enqueue(item); } EggSpawnTimers[self] = 0f; } orig.Invoke(self, buffDef); } private void GrowEgg(orig_FixedUpdate orig, CharacterBody self, CharacterBody character) { //IL_0026: 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_0050: 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_0183: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: 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_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) if (NetworkServer.active) { int count = GetCount(self, SusTentacleItemDef); if (count > 0 && !self.HasBuff(EggGrowthDebuff.buffIndex) && EggOverLoad.Value) { for (int i = 1; (float)i <= EggGrowthTime.Value * Mathf.Log((float)EggMasterCount(character), (float)Egglogbase.Value); i++) { self.AddTimedBuff(EggGrowthDebuff.buffIndex, (float)i); } } if (count > 0 && !self.HasBuff(EggGrowthDebuff.buffIndex) && !EggOverLoad.Value) { for (int j = 1; (float)j <= EggGrowthTime.Value; j++) { self.AddTimedBuff(EggGrowthDebuff.buffIndex, (float)j); } } if (eggQueue.ContainsKey(self)) { Queue<ItemDef> queue = eggQueue[self]; if (queue.Count != 0) { float num = EggSpawnTimers[self]; num -= Time.fixedDeltaTime; if (EggSpawnTimers[self] <= 0f) { ItemDef val = queue.Dequeue(); float num2 = Random.Range(0f, 2f); Vector3 insideUnitSphere = Random.insideUnitSphere; PickupDropletController.CreatePickupDroplet(PickupCatalog.FindPickupIndex(ItemCatalog.FindItemIndex(((Object)val).name)), self.coreTransform.position, self.coreTransform.forward * (10f + num2) + insideUnitSphere); num = TimeBetweenEggs.Value; } EggSpawnTimers[self] = num; } } } orig.Invoke(self); } private int GetCount(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); } private int GetCountMaster(CharacterMaster master, ItemDef itemDef) { if (!Object.op_Implicit((Object)(object)master) || !Object.op_Implicit((Object)(object)master.inventory)) { return 0; } return master.inventory.GetItemCount(itemDef); } } } namespace Aetherium.CoreModules { public abstract class CoreModule { public abstract string Name { get; } public abstract void Init(); } public class StatHooks : CoreModule { public class StatHookEventArgs : EventArgs { public float healthMultAdd = 0f; public float baseHealthAdd = 0f; public float baseShieldAdd = 0f; public float regenMultAdd = 0f; public float baseRegenAdd = 0f; public float baseMoveSpeedAdd = 0f; public float moveSpeedMultAdd = 0f; public float jumpPowerMultAdd = 0f; public float damageMultAdd = 0f; public float baseDamageAdd = 0f; public float baseAttackSpeedAdd = 0f; public float attackSpeedMultAdd = 0f; public float critAdd = 0f; public float armorAdd = 0f; } public delegate void StatHookEventHandler(CharacterBody sender, StatHookEventArgs args); [CompilerGenerated] private static class <>O { public static Manipulator <0>__IL_CBRecalcStats; } public override string Name => "StatHooks (from TILER2 originally)"; public static event StatHookEventHandler GetStatCoefficients; public override void Init() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown object obj = <>O.<0>__IL_CBRecalcStats; if (obj == null) { Manipulator val = IL_CBRecalcStats; <>O.<0>__IL_CBRecalcStats = val; obj = (object)val; } CharacterBody.RecalculateStats += (Manipulator)obj; } internal static void IL_CBRecalcStats(ILContext il) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_037e: Unknown result type (might be due to invalid IL or missing references) //IL_0a47: Unknown result type (might be due to invalid IL or missing references) //IL_0a6c: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); StatHookEventArgs statMods = null; val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Action<CharacterBody>>((Action<CharacterBody>)delegate(CharacterBody cb) { statMods = new StatHookEventArgs(); StatHooks.GetStatCoefficients?.Invoke(cb, statMods); }); int locBaseHealthIndex = -1; int locHealthMultIndex = -1; if (val.TryGotoNext(new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "baseMaxHealth"), (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "levelMaxHealth") }) && val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locBaseHealthIndex) }) && val.TryGotoNext(new Func<Instruction, bool>[4] { (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, locBaseHealthIndex), (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, locHealthMultIndex), (Instruction x) => ILPatternMatchingExt.MatchMul(x), (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locBaseHealthIndex) })) { val.GotoPrev(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "baseMaxHealth") }); val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locBaseHealthIndex) }); val.EmitDelegate<Func<float, float>>((Func<float, float>)((float origMaxHealth) => origMaxHealth + statMods.baseHealthAdd)); val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locHealthMultIndex) }); val.EmitDelegate<Func<float, float>>((Func<float, float>)((float origHealthMult) => origHealthMult + statMods.healthMultAdd)); } val.Index = 0; int locBaseShieldIndex = -1; if (val.TryGotoNext(new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "baseMaxShield"), (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "levelMaxShSield") }) && val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locBaseShieldIndex) })) { val.EmitDelegate<Func<float, float>>((Func<float, float>)((float origBaseShield) => origBaseShield + statMods.baseShieldAdd)); } val.Index = 0; int locRegenMultIndex = -1; int locFinalRegenIndex = -1; if (val.TryGotoNext(new Func<Instruction, bool>[2] { (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, locFinalRegenIndex), (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<CharacterBody>(x, "set_regen") }) && val.TryGotoPrev(new Func<Instruction, bool>[4] { (Instruction x) => ILPatternMatchingExt.MatchAdd(x), (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, locRegenMultIndex), (Instruction x) => ILPatternMatchingExt.MatchMul(x), (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locFinalRegenIndex) })) { val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, locRegenMultIndex) }); val.EmitDelegate<Func<float>>((Func<float>)(() => statMods.baseRegenAdd)); val.Emit(OpCodes.Add); val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchMul(x) }); val.EmitDelegate<Func<float, float>>((Func<float, float>)((float origRegenMult) => origRegenMult + statMods.regenMultAdd)); } val.Index = 0; int locBaseSpeedIndex = -1; int locSpeedMultIndex = -1; int locSpeedDivIndex = -1; if (val.TryGotoNext(new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "baseMoveSpeed"), (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "levelMoveSpeed") }) && val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locBaseSpeedIndex) }) && val.TryGotoNext(new Func<Instruction, bool>[6] { (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, locBaseSpeedIndex), (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, locSpeedMultIndex), (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, locSpeedDivIndex), (Instruction x) => ILPatternMatchingExt.MatchDiv(x), (Instruction x) => ILPatternMatchingExt.MatchMul(x), (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locBaseSpeedIndex) })) { val.GotoPrev(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "levelMoveSpeed") }); val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locBaseSpeedIndex) }); val.EmitDelegate<Func<float, float>>((Func<float, float>)((float origBaseMoveSpeed) => origBaseMoveSpeed + statMods.baseMoveSpeedAdd)); val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locSpeedMultIndex) }); val.EmitDelegate<Func<float, float>>((Func<float, float>)((float origMoveSpeedMult) => origMoveSpeedMult + statMods.moveSpeedMultAdd)); } val.Index = 0; int num = 0; if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[6] { (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "baseJumpPower"), (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "levelJumpPower"), (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, num), (Instruction x) => ILPatternMatchingExt.MatchMul(x), (Instruction x) => ILPatternMatchingExt.MatchAdd(x) })) { val.EmitDelegate<Func<float, float>>((Func<float, float>)((float origJumpPower) => origJumpPower * (1f + statMods.jumpPowerMultAdd))); } val.Index = 0; int locBaseDamageIndex = -1; int locDamageMultIndex = -1; if (val.TryGotoNext(new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "baseDamage"), (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "levelDamage") }) && val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locBaseDamageIndex) }) && val.TryGotoNext(new Func<Instruction, bool>[4] { (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, locBaseDamageIndex), (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, locDamageMultIndex), (Instruction x) => ILPatternMatchingExt.MatchMul(x), (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locBaseDamageIndex) })) { val.GotoPrev(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "baseDamage") }); val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locBaseDamageIndex) }); val.EmitDelegate<Func<float, float>>((Func<float, float>)((float origDamage) => origDamage + statMods.baseDamageAdd)); val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locDamageMultIndex) }); val.EmitDelegate<Func<float, float>>((Func<float, float>)((float origDamageMult) => origDamageMult + statMods.damageMultAdd)); } val.Index = 0; int locBaseAttackSpeedIndex = -1; int locAttackSpeedMultIndex = -1; if (val.TryGotoNext(new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "baseAttackSpeed"), (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "levelAttackSpeed") }) && val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locBaseAttackSpeedIndex) }) && val.TryGotoNext(new Func<Instruction, bool>[4] { (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, locBaseAttackSpeedIndex), (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, locAttackSpeedMultIndex), (Instruction x) => ILPatternMatchingExt.MatchMul(x), (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locBaseAttackSpeedIndex) })) { val.GotoPrev(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "baseAttackSpeed") }); val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locBaseAttackSpeedIndex) }); val.EmitDelegate<Func<float, float>>((Func<float, float>)((float origSpeed) => origSpeed + statMods.baseAttackSpeedAdd)); val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, locAttackSpeedMultIndex) }); val.EmitDelegate<Func<float, float>>((Func<float, float>)((float origSpeedMult) => origSpeedMult + statMods.attackSpeedMultAdd)); } val.Index = 0; int locOrigCrit = -1; if (val.TryGotoNext(new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, locOrigCrit), (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<CharacterBody>(x, "set_crit") })) { val.Emit(OpCodes.Ldloc, locOrigCrit); val.EmitDelegate<Func<float, float>>((Func<float, float>)((float origCrit) => origCrit + statMods.critAdd)); val.Emit(OpCodes.Stloc, locOrigCrit); } val.Index = 0; if (val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdfld<CharacterBody>(x, "baseArmor") }) && val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<CharacterBody>(x, "get_armor") }) && val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt<CharacterBody>(x, "get_armor") })) { val.EmitDelegate<Func<float, float>>((Func<float, float>)((float oldArmor) => oldArmor + statMods.armorAdd)); } } } }