using 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));
}
}
}
}