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 CromulentItems v0.4.0
CromulentItems.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using CromulentItems; using HG.Reflection; using On.RoR2; using R2API; using R2API.Utils; using RoR2; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.ResourceManagement.AsyncOperations; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: OptIn] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] public static class Assets { public static AssetBundle icons; public static AssetBundle prefabs; public const string iconsName = "iconsCrom"; public const string prefabsName = "prefabsCrom"; public static string IconAssetBundlePath => Path.Combine(Path.GetDirectoryName(CromItems.PInfo.Location), "iconsCrom"); public static string PrefabAssetBundlePath => Path.Combine(Path.GetDirectoryName(CromItems.PInfo.Location), "prefabsCrom"); public static void Init() { icons = AssetBundle.LoadFromFile(IconAssetBundlePath); prefabs = AssetBundle.LoadFromFile(PrefabAssetBundlePath); } } namespace CromulentItems; [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("Spartan.CromulentItems", "CromulentItems", "0.3.0")] [R2APISubmoduleDependency(new string[] { "ItemAPI", "LanguageAPI" })] public class CromItems : BaseUnityPlugin { public const string PluginGUID = "Spartan.CromulentItems"; public const string PluginAuthor = "Spartan"; public const string PluginName = "CromulentItems"; public const string PluginVersion = "0.3.0"; public static ManualLogSource Log; public GameObject multiShopPrefab; public ItemTier[] itemTiers; public static PluginInfo PInfo { get; private set; } public void Awake() { Log = ((BaseUnityPlugin)this).Logger; PInfo = ((BaseUnityPlugin)this).Info; Assets.Init(); JacobBlast.Init(); Grug.Init(); Respect.Init(); WoatReaction.Init(); ThanosGen.Init(); Log.LogInfo((object)"CromulentItems successfully loaded."); } private void Update() { } } internal class Grug { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_OnCharacterDeath <>9__6_0; public static hook_OnHitEnemy <>9__6_1; internal void <hooks>b__6_0(orig_OnCharacterDeath orig, GlobalEventManager globalEventManager, DamageReport damageReport) { //IL_0032: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(globalEventManager, damageReport); CharacterMaster attackerMaster = damageReport.attackerMaster; if ((Object)(object)((attackerMaster != null) ? attackerMaster.inventory : null) != (Object)null) { int itemCount = damageReport.attackerMaster.inventory.GetItemCount(myItemDef.itemIndex); if (!(damageReport.attacker.GetComponent<CharacterBody>().healthComponent.barrier > 0f) && itemCount > 0) { damageReport.attacker.GetComponent<CharacterBody>().healthComponent.AddBarrier(15f); } } } internal void <hooks>b__6_1(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim) { //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, damageInfo, victim); if (!Object.op_Implicit((Object)(object)damageInfo.attacker)) { return; } CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); CharacterBody component2 = victim.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)((component != null) ? component.inventory : null))) { int itemCount = component.inventory.GetItemCount(myItemDef.itemIndex); _ = component2.transform.position; if (itemCount > 0 && component.healthComponent.barrier > 0f && Util.CheckRoll(20f * damageInfo.procCoefficient, 0f, (CharacterMaster)null)) { component.AddBuff(myCounterBuffDef); float num = 2f * (float)itemCount; float num2 = Util.OnHitProcDamage(damageInfo.damage, component.damage, num); MissileUtils.FireMissile(component.corePosition, component, damageInfo.procChainMask, victim, num2, false, CommonAssets.missilePrefab, (DamageColorIndex)3, false); } } } } public static ItemDef myItemDef; public static GameObject RockProjectile; public static GameObject RockGhost; public static BuffDef myCounterBuffDef; internal static void Init() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown CreateItem(); AddTokens(); ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); ItemAPI.Add(new CustomItem(myItemDef, val)); hooks(); } private static void CreateItem() { //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) myItemDef = ScriptableObject.CreateInstance<ItemDef>(); ((Object)myItemDef).name = "Grug"; myItemDef.nameToken = "Grug"; myItemDef.pickupToken = "GrugItem"; myItemDef.descriptionToken = "GrugDesc"; myItemDef.loreToken = "GrugDesc"; myItemDef.tags = (ItemTag[])(object)new ItemTag[2] { (ItemTag)2, (ItemTag)1 }; myItemDef._itemTierDef = Addressables.LoadAssetAsync<ItemTierDef>((object)"RoR2/Base/Common/Tier2Def.asset").WaitForCompletion(); Sprite pickupIconSprite = Assets.icons.LoadAsset<Sprite>("Grug"); myItemDef.pickupIconSprite = pickupIconSprite; GameObject pickupModelPrefab = Assets.prefabs.LoadAsset<GameObject>("GrugCube"); myItemDef.pickupModelPrefab = pickupModelPrefab; RockProjectile = Assets.prefabs.LoadAsset<GameObject>("rock"); myItemDef.canRemove = true; myItemDef.hidden = false; } private static void hooks() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Expected O, but got Unknown object obj = <>c.<>9__6_0; if (obj == null) { hook_OnCharacterDeath val = delegate(orig_OnCharacterDeath orig, GlobalEventManager globalEventManager, DamageReport damageReport) { //IL_0032: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(globalEventManager, damageReport); CharacterMaster attackerMaster = damageReport.attackerMaster; if ((Object)(object)((attackerMaster != null) ? attackerMaster.inventory : null) != (Object)null) { int itemCount2 = damageReport.attackerMaster.inventory.GetItemCount(myItemDef.itemIndex); if (!(damageReport.attacker.GetComponent<CharacterBody>().healthComponent.barrier > 0f) && itemCount2 > 0) { damageReport.attacker.GetComponent<CharacterBody>().healthComponent.AddBarrier(15f); } } }; <>c.<>9__6_0 = val; obj = (object)val; } GlobalEventManager.OnCharacterDeath += (hook_OnCharacterDeath)obj; object obj2 = <>c.<>9__6_1; if (obj2 == null) { hook_OnHitEnemy val2 = delegate(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim) { //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, damageInfo, victim); if (Object.op_Implicit((Object)(object)damageInfo.attacker)) { CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); CharacterBody component2 = victim.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)((component != null) ? component.inventory : null))) { int itemCount = component.inventory.GetItemCount(myItemDef.itemIndex); _ = component2.transform.position; if (itemCount > 0 && component.healthComponent.barrier > 0f && Util.CheckRoll(20f * damageInfo.procCoefficient, 0f, (CharacterMaster)null)) { component.AddBuff(myCounterBuffDef); float num = 2f * (float)itemCount; float num2 = Util.OnHitProcDamage(damageInfo.damage, component.damage, num); MissileUtils.FireMissile(component.corePosition, component, damageInfo.procChainMask, victim, num2, false, CommonAssets.missilePrefab, (DamageColorIndex)3, false); } } } }; <>c.<>9__6_1 = val2; obj2 = (object)val2; } GlobalEventManager.OnHitEnemy += (hook_OnHitEnemy)obj2; } private static void AddTokens() { LanguageAPI.Add("Grug", "grug..."); LanguageAPI.Add("GrugItem", "Gain barrier. \nOn hit, rock(et)"); LanguageAPI.Add("GrugDesc", "On kill, gain a barrier if you dont have one.\nOn hit if you have a barrier, <style=cIsUtility>20%<style=cIsUtility> chance to launch a rock(et) that does <style=cIsUtility>+" + 300 + "%<style=cIsUtility><style=cStack>(+" + 300 + "%)</style> damage."); LanguageAPI.Add("GrugLore", "He's grug you know"); } } internal class JacobBlast { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_OnInventoryChanged <>9__6_0; public static hook_OnHitEnemy <>9__6_1; internal void <hooks>b__6_0(orig_OnInventoryChanged orig, CharacterBody self) { orig.Invoke(self); } internal void <hooks>b__6_1(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim) { //IL_005c: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, damageInfo, victim); if (!Object.op_Implicit((Object)(object)damageInfo.attacker) || !(damageInfo.procCoefficient > 0f)) { return; } CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); victim.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)((component != null) ? component.inventory : null))) { int itemCount = component.inventory.GetItemCount(myItemDef.itemIndex); if (itemCount > 0 && Util.CheckRoll(3f + 1f * (float)itemCount - 1f, component.master)) { component.AddTimedBuff(Buffs.TonicBuff, 3f + 1f * (float)itemCount - 1f); } } } } public static ItemDef myItemDef; public static float luckAmount = 10f; public static float numItems = 0f; public static float cooldownAmount = 0.70000005f; internal static void Init() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown CreateItem(); AddTokens(); ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); ItemAPI.Add(new CustomItem(myItemDef, val)); hooks(); } private static void CreateItem() { //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) myItemDef = ScriptableObject.CreateInstance<ItemDef>(); ((Object)myItemDef).name = "JacobBlast"; myItemDef.nameToken = "JacobBlast"; myItemDef.pickupToken = "JacobBlastItem"; myItemDef.descriptionToken = "JacobBlastDesc"; myItemDef.loreToken = "JacobBlastDesc"; myItemDef.tags = (ItemTag[])(object)new ItemTag[1] { (ItemTag)3 }; myItemDef._itemTierDef = Addressables.LoadAssetAsync<ItemTierDef>((object)"RoR2/Base/Common/Tier3Def.asset").WaitForCompletion(); Sprite pickupIconSprite = Assets.icons.LoadAsset<Sprite>("JacobBluePNG"); myItemDef.pickupIconSprite = pickupIconSprite; GameObject pickupModelPrefab = Assets.prefabs.LoadAsset<GameObject>("JacobCube"); myItemDef.pickupModelPrefab = pickupModelPrefab; myItemDef.canRemove = true; myItemDef.hidden = false; } private static void hooks() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Expected O, but got Unknown object obj = <>c.<>9__6_0; if (obj == null) { hook_OnInventoryChanged val = delegate(orig_OnInventoryChanged orig, CharacterBody self) { orig.Invoke(self); }; <>c.<>9__6_0 = val; obj = (object)val; } CharacterBody.OnInventoryChanged += (hook_OnInventoryChanged)obj; object obj2 = <>c.<>9__6_1; if (obj2 == null) { hook_OnHitEnemy val2 = delegate(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim) { //IL_005c: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, damageInfo, victim); if (Object.op_Implicit((Object)(object)damageInfo.attacker) && damageInfo.procCoefficient > 0f) { CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); victim.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)((component != null) ? component.inventory : null))) { int itemCount = component.inventory.GetItemCount(myItemDef.itemIndex); if (itemCount > 0 && Util.CheckRoll(3f + 1f * (float)itemCount - 1f, component.master)) { component.AddTimedBuff(Buffs.TonicBuff, 3f + 1f * (float)itemCount - 1f); } } } }; <>c.<>9__6_1 = val2; obj2 = (object)val2; } GlobalEventManager.OnHitEnemy += (hook_OnHitEnemy)obj2; } private static void AddTokens() { LanguageAPI.Add("JacobBlast", "Jacob Blast"); LanguageAPI.Add("JacobBlastItem", "Chance to activate 'Tonic' on hit"); LanguageAPI.Add("JacobBlastDesc", " <style=cIsUtility>" + 3 + "% (+" + 1 + "%)</style> chance to Activate a Tonic Effect for <style=cIsUtility>\" + 3 + \" (+\" + 1 + \")</style> seconds."); LanguageAPI.Add("JacobBlastLore", "Blue Liquid Amalgomation"); } } internal class Respect { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_OnHitEnemy <>9__3_0; internal void <hooks>b__3_0(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim) { //IL_003f: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)damageInfo.attacker)) { CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); victim.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)((component != null) ? component.inventory : null))) { int itemCount = component.inventory.GetItemCount(myItemDef.itemIndex); if (itemCount > 0 && damageInfo.procCoefficient > 0f) { float num = 0.03f * (float)itemCount; damageInfo.procCoefficient += num; } } } orig.Invoke(self, damageInfo, victim); } } public static ItemDef myItemDef; internal static void Init() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown CreateItem(); AddTokens(); ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); ItemAPI.Add(new CustomItem(myItemDef, val)); hooks(); } private static void CreateItem() { //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) myItemDef = ScriptableObject.CreateInstance<ItemDef>(); ((Object)myItemDef).name = "Respect"; myItemDef.nameToken = "Respect"; myItemDef.pickupToken = "RespectItem"; myItemDef.descriptionToken = "RespectDesc"; myItemDef.loreToken = "RespectDesc"; myItemDef.tags = (ItemTag[])(object)new ItemTag[1] { (ItemTag)3 }; myItemDef._itemTierDef = Addressables.LoadAssetAsync<ItemTierDef>((object)"RoR2/Base/Common/Tier1Def.asset").WaitForCompletion(); Sprite pickupIconSprite = Assets.icons.LoadAsset<Sprite>("respectPNG"); myItemDef.pickupIconSprite = pickupIconSprite; GameObject pickupModelPrefab = Assets.prefabs.LoadAsset<GameObject>("RespectOBJ"); myItemDef.pickupModelPrefab = pickupModelPrefab; myItemDef.canRemove = true; myItemDef.hidden = false; } private static void hooks() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown object obj = <>c.<>9__3_0; if (obj == null) { hook_OnHitEnemy val = delegate(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim) { //IL_003f: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)damageInfo.attacker)) { CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); victim.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)((component != null) ? component.inventory : null))) { int itemCount = component.inventory.GetItemCount(myItemDef.itemIndex); if (itemCount > 0 && damageInfo.procCoefficient > 0f) { float num = 0.03f * (float)itemCount; damageInfo.procCoefficient += num; } } } orig.Invoke(self, damageInfo, victim); }; <>c.<>9__3_0 = val; obj = (object)val; } GlobalEventManager.OnHitEnemy += (hook_OnHitEnemy)obj; } private static void AddTokens() { LanguageAPI.Add("Respect", "Respect"); LanguageAPI.Add("RespectItem", "Slightly increase proc coefficient"); LanguageAPI.Add("RespectDesc", "Gain <style=cIsUtility>+" + 3 + "%</style><style=cStack>(+" + 3 + "%)</style> proc coefficient"); LanguageAPI.Add("RespectLore", "#1 Star of Thats Respect Compilations"); } } internal class ThanosGen { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Action<AsyncOperationHandle<PickupDropTable>> <>9__2_0; public static hook_OnCharacterDeath <>9__4_0; internal void <Init>b__2_0(AsyncOperationHandle<PickupDropTable> x) { thanosDrops = x.Result; } internal void <hooks>b__4_0(orig_OnCharacterDeath orig, GlobalEventManager globalEventManager, DamageReport damageReport) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_006b: 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_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0070: 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_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: 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_00fd: Unknown result type (might be due to invalid IL or missing references) //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_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_018c: 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_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Unknown result type (might be due to invalid IL or missing references) //IL_0206: 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_0211: Unknown result type (might be due to invalid IL or missing references) //IL_0216: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_0225: 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_0236: Unknown result type (might be due to invalid IL or missing references) //IL_023b: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(globalEventManager, damageReport); Vector3 val = Vector3.zero; Quaternion val2 = Quaternion.identity; if (Object.op_Implicit((Object)(object)damageReport.victim)) { val = ((Component)damageReport.victim).transform.position; val2 = ((Component)damageReport.victim).transform.rotation; } InputBankTest inputBank = damageReport.victimBody.inputBank; Ray val3 = (Ray)(Object.op_Implicit((Object)(object)inputBank) ? inputBank.GetAimRay() : new Ray(val, val2 * Vector3.forward)); CharacterMaster attackerMaster = damageReport.attackerMaster; if (!((Object)(object)((attackerMaster != null) ? attackerMaster.inventory : null) != (Object)null)) { return; } int itemCount = damageReport.attackerMaster.inventory.GetItemCount(myItemDef.itemIndex); if (itemCount > 0) { if (damageReport.victimBody.isChampion && Util.CheckRoll(100f, damageReport.attackerMaster) && Object.op_Implicit((Object)(object)damageReport.victimBody)) { PickupDropletController.CreatePickupDroplet(thanosDrops.GenerateDrop(Run.instance.runRNG), val + Vector3.up * 1.5f, Vector3.up * 20f + ((Ray)(ref val3)).direction * 2f); } else if (damageReport.victimBody.isElite && Util.CheckRoll(1f + 3f * (float)itemCount, damageReport.attackerMaster) && Object.op_Implicit((Object)(object)damageReport.victimBody)) { PickupDropletController.CreatePickupDroplet(thanosDrops.GenerateDrop(Run.instance.runRNG), val + Vector3.up * 1.5f, Vector3.up * 20f + ((Ray)(ref val3)).direction * 2f); } else if (Object.op_Implicit((Object)(object)damageReport.victimBody) && Util.CheckRoll(1f + 1f * (float)itemCount, damageReport.attackerMaster) && Object.op_Implicit((Object)(object)damageReport.victimBody)) { PickupDropletController.CreatePickupDroplet(thanosDrops.GenerateDrop(Run.instance.runRNG), val + Vector3.up * 1.5f, Vector3.up * 20f + ((Ray)(ref val3)).direction * 2f); } } } } public static ItemDef myItemDef; public static PickupDropTable thanosDrops; internal static void Init() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0016: 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_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Expected O, but got Unknown CreateItem(); AddTokens(); ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); AsyncOperationHandle<PickupDropTable> val2 = Addressables.LoadAssetAsync<PickupDropTable>((object)"RoR2/DLC2/Items/ResetChests/dtSonorousEcho.asset"); val2.Completed += delegate(AsyncOperationHandle<PickupDropTable> x) { thanosDrops = x.Result; }; ItemAPI.Add(new CustomItem(myItemDef, val)); hooks(); } private static void CreateItem() { //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) myItemDef = ScriptableObject.CreateInstance<ItemDef>(); ((Object)myItemDef).name = "ThanosGen"; myItemDef.nameToken = "ThanosGen"; myItemDef.pickupToken = "ThanosGenItem"; myItemDef.descriptionToken = "ThanosGenDesc"; myItemDef.loreToken = "ThanosGenDesc"; myItemDef.tags = (ItemTag[])(object)new ItemTag[1] { (ItemTag)3 }; myItemDef._itemTierDef = Addressables.LoadAssetAsync<ItemTierDef>((object)"RoR2/Base/Common/Tier3Def.asset").WaitForCompletion(); Sprite pickupIconSprite = Assets.icons.LoadAsset<Sprite>("thanosGen"); myItemDef.pickupIconSprite = pickupIconSprite; GameObject pickupModelPrefab = Assets.prefabs.LoadAsset<GameObject>("ThanosGen"); myItemDef.pickupModelPrefab = pickupModelPrefab; myItemDef.canRemove = true; myItemDef.hidden = false; } private static void hooks() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown object obj = <>c.<>9__4_0; if (obj == null) { hook_OnCharacterDeath val = delegate(orig_OnCharacterDeath orig, GlobalEventManager globalEventManager, DamageReport damageReport) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_006b: 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_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0070: 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_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: 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_00fd: Unknown result type (might be due to invalid IL or missing references) //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_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_018c: 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_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Unknown result type (might be due to invalid IL or missing references) //IL_0206: 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_0211: Unknown result type (might be due to invalid IL or missing references) //IL_0216: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_0225: 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_0236: Unknown result type (might be due to invalid IL or missing references) //IL_023b: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(globalEventManager, damageReport); Vector3 val2 = Vector3.zero; Quaternion val3 = Quaternion.identity; if (Object.op_Implicit((Object)(object)damageReport.victim)) { val2 = ((Component)damageReport.victim).transform.position; val3 = ((Component)damageReport.victim).transform.rotation; } InputBankTest inputBank = damageReport.victimBody.inputBank; Ray val4 = (Ray)(Object.op_Implicit((Object)(object)inputBank) ? inputBank.GetAimRay() : new Ray(val2, val3 * Vector3.forward)); CharacterMaster attackerMaster = damageReport.attackerMaster; if ((Object)(object)((attackerMaster != null) ? attackerMaster.inventory : null) != (Object)null) { int itemCount = damageReport.attackerMaster.inventory.GetItemCount(myItemDef.itemIndex); if (itemCount > 0) { if (damageReport.victimBody.isChampion && Util.CheckRoll(100f, damageReport.attackerMaster) && Object.op_Implicit((Object)(object)damageReport.victimBody)) { PickupDropletController.CreatePickupDroplet(thanosDrops.GenerateDrop(Run.instance.runRNG), val2 + Vector3.up * 1.5f, Vector3.up * 20f + ((Ray)(ref val4)).direction * 2f); } else if (damageReport.victimBody.isElite && Util.CheckRoll(1f + 3f * (float)itemCount, damageReport.attackerMaster) && Object.op_Implicit((Object)(object)damageReport.victimBody)) { PickupDropletController.CreatePickupDroplet(thanosDrops.GenerateDrop(Run.instance.runRNG), val2 + Vector3.up * 1.5f, Vector3.up * 20f + ((Ray)(ref val4)).direction * 2f); } else if (Object.op_Implicit((Object)(object)damageReport.victimBody) && Util.CheckRoll(1f + 1f * (float)itemCount, damageReport.attackerMaster) && Object.op_Implicit((Object)(object)damageReport.victimBody)) { PickupDropletController.CreatePickupDroplet(thanosDrops.GenerateDrop(Run.instance.runRNG), val2 + Vector3.up * 1.5f, Vector3.up * 20f + ((Ray)(ref val4)).direction * 2f); } } } }; <>c.<>9__4_0 = val; obj = (object)val; } GlobalEventManager.OnCharacterDeath += (hook_OnCharacterDeath)obj; } private static void AddTokens() { LanguageAPI.Add("ThanosGen", "AI Generated Thanos"); LanguageAPI.Add("ThanosGenItem", "Chance For An Item On Kill"); LanguageAPI.Add("ThanosGenDesc", "Guaranteed Item On Boss Kill\n <style=cIsUtility>\" + 1 + \"% (+\" + 3 + \"%)</style> Chance For An Item On Elite Kill\n <style=cIsUtility>\" + 1 + \"% (+\" + 1 + \"%)</style> Chance For An Item On Enemy Kill"); LanguageAPI.Add("ThanosGenLore", "AI Generated Stories with Thanos at the forefront"); } } internal class WoatReaction { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_OnLevelUp <>9__3_0; internal void <hooks>b__3_0(orig_OnLevelUp orig, CharacterBody self) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((self != null) ? self.inventory : null)) && self.inventory.GetItemCount(myItemDef.itemIndex) > 0) { int itemCount = self.inventory.GetItemCount(myItemDef.itemIndex); if (itemCount > 0) { self.baseDamage += (float)(3 * itemCount); } } } } public static ItemDef myItemDef; internal static void Init() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown CreateItem(); AddTokens(); ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); ItemAPI.Add(new CustomItem(myItemDef, val)); hooks(); } private static void CreateItem() { //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) myItemDef = ScriptableObject.CreateInstance<ItemDef>(); ((Object)myItemDef).name = "WoatReaction"; myItemDef.nameToken = "WoatReaction"; myItemDef.pickupToken = "WoatReactionItem"; myItemDef.descriptionToken = "WoatReactionDesc"; myItemDef.loreToken = "WoatReactionDesc"; myItemDef.tags = (ItemTag[])(object)new ItemTag[1] { (ItemTag)1 }; myItemDef._itemTierDef = Addressables.LoadAssetAsync<ItemTierDef>((object)"RoR2/Base/Common/Tier2Def.asset").WaitForCompletion(); Sprite pickupIconSprite = Assets.icons.LoadAsset<Sprite>("woatreaction"); myItemDef.pickupIconSprite = pickupIconSprite; GameObject pickupModelPrefab = Assets.prefabs.LoadAsset<GameObject>("woatOBJ"); myItemDef.pickupModelPrefab = pickupModelPrefab; myItemDef.canRemove = true; myItemDef.hidden = false; } private static void hooks() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown object obj = <>c.<>9__3_0; if (obj == null) { hook_OnLevelUp val = delegate(orig_OnLevelUp orig, CharacterBody self) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((self != null) ? self.inventory : null)) && self.inventory.GetItemCount(myItemDef.itemIndex) > 0) { int itemCount = self.inventory.GetItemCount(myItemDef.itemIndex); if (itemCount > 0) { self.baseDamage += (float)(3 * itemCount); } } }; <>c.<>9__3_0 = val; obj = (object)val; } CharacterBody.OnLevelUp += (hook_OnLevelUp)obj; } private static void AddTokens() { LanguageAPI.Add("WoatReaction", "The Woat"); LanguageAPI.Add("WoatReactionItem", "Increase Base Damage on Level Up"); LanguageAPI.Add("WoatReactionDesc", "Gain <style=cIsUtility>+" + 3 + "</style><style=cStack>(+" + 3 + ")</style> base damage on level up"); LanguageAPI.Add("WoatReactionLore", "The Worst of All Time Reaciton"); } }