Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of Marixxe Is Mithrix v1.2.3
plugins/MarixxeIsMithrix.dll
Decompiled a year agousing System; 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 BepInEx; using BepInEx.Logging; using MarixxeIsMithrix.Buff; using MarixxeIsMithrix.Couleur; using MarixxeIsMithrix.Dots; using MarixxeIsMithrix.Item; using MarixxeIsMithrix.Modules; using MarixxeIsMithrix.Orbs; using Microsoft.CodeAnalysis; using On.RoR2; using R2API; using RoR2; using RoR2.Orbs; using UnityEngine; using UnityEngine.AddressableAssets; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: AssemblyCompany("MarixxeIsMithrix")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("MarixxeIsMithrix")] [assembly: AssemblyTitle("MarixxeIsMithrix")] [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.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [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 MarixxeIsMithrix { internal static class Log { private static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void Debug(object data) { _logSource.LogDebug(data); } internal static void Error(object data) { _logSource.LogError(data); } internal static void Fatal(object data) { _logSource.LogFatal(data); } internal static void Info(object data) { _logSource.LogInfo(data); } internal static void Message(object data) { _logSource.LogMessage(data); } internal static void Warning(object data) { _logSource.LogWarning(data); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("MaxwellArmatria.MarixxeIsMithrix", "MarixxeIsMithrix", "1.0.6")] public class MarixxeIsMithrix : BaseUnityPlugin { public const string PluginGUID = "MaxwellArmatria.MarixxeIsMithrix"; public const string PluginAuthor = "MaxwellArmatria"; public const string PluginName = "MarixxeIsMithrix"; public const string PluginVersion = "1.0.6"; public static PluginInfo PInfo { get; private set; } public void Awake() { Log.Init(((BaseUnityPlugin)this).Logger); PInfo = ((BaseUnityPlugin)this).Info; Assets.Init(); CouleurCreator.CreateCouleur(); BuffCreator.CreateBuff(); ItemCreator.CreateItem(); DotsCreator.CreateDots(); OrbsCreator.CreateOrbs(); } private void Update() { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //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_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) if (Input.GetKeyDown((KeyCode)283)) { Transform transform = PlayerCharacterMasterController.instances[0].master.GetBodyObject().transform; Log.Info($"Player pressed F2. Spawning our custom item at coordinates {transform.position}"); PickupDropletController.CreatePickupDroplet(PickupCatalog.FindPickupIndex(CrystalDivergence.crystalDivergence.itemIndex), transform.position, transform.forward * 20f); } if (Input.GetKeyDown((KeyCode)284)) { Transform transform2 = PlayerCharacterMasterController.instances[0].master.GetBodyObject().transform; Log.Info($"Player pressed F2. Spawning our custom item at coordinates {transform2.position}"); PickupDropletController.CreatePickupDroplet(PickupCatalog.FindPickupIndex(MalachiteAmbuyat.malachiteAmbuyat.itemIndex), transform2.position, transform2.forward * 20f); } } } } namespace MarixxeIsMithrix.Orbs { public class AmbuyatCelestineOrb : Orb { private const float speed = 30f; private Inventory targetInventory; public static void Init() { OrbAPI.AddOrb(typeof(AmbuyatCelestineOrb)); } public override void Begin() { //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_001b: 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_0033: Expected O, but got Unknown ((Orb)this).duration = ((Orb)this).distanceToTarget / 30f; EffectData val = new EffectData { origin = base.origin, genericFloat = ((Orb)this).duration }; val.SetHurtBoxReference(base.target); EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/OrbEffects/InfusionOrbEffect"), val, true); HurtBox component = ((Component)base.target).GetComponent<HurtBox>(); CharacterBody val2 = ((component != null) ? ((Component)component.healthComponent).GetComponent<CharacterBody>() : null); if (Object.op_Implicit((Object)(object)val2)) { targetInventory = val2.inventory; } } public override void OnArrival() { if (Object.op_Implicit((Object)(object)targetInventory)) { AddCelestineAmbuyat(targetInventory); } } public static void AddCelestineAmbuyat(Inventory targetInventory) { targetInventory.GiveItem(CelestineAmbuyat.celestineAmbuyat, 1); } } internal class AmbuyatElectricOrb : Orb { private const float speed = 30f; private Inventory targetInventory; public static void Init() { OrbAPI.AddOrb(typeof(AmbuyatElectricOrb)); } public override void Begin() { //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_001b: 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_0033: Expected O, but got Unknown ((Orb)this).duration = ((Orb)this).distanceToTarget / 30f; EffectData val = new EffectData { origin = base.origin, genericFloat = ((Orb)this).duration }; val.SetHurtBoxReference(base.target); EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/OrbEffects/InfusionOrbEffect"), val, true); HurtBox component = ((Component)base.target).GetComponent<HurtBox>(); CharacterBody val2 = ((component != null) ? ((Component)component.healthComponent).GetComponent<CharacterBody>() : null); if (Object.op_Implicit((Object)(object)val2)) { targetInventory = val2.inventory; } } public override void OnArrival() { if (Object.op_Implicit((Object)(object)targetInventory)) { AddElectricAmbuyat(targetInventory); } } public static void AddElectricAmbuyat(Inventory targetInventory) { targetInventory.GiveItem(ElectricAmbuyat.electricAmbuyat, 1); } } internal class AmbuyatFireOrb : Orb { private const float speed = 30f; private Inventory targetInventory; public static void Init() { OrbAPI.AddOrb(typeof(AmbuyatFireOrb)); } public override void Begin() { //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_001b: 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_0033: Expected O, but got Unknown ((Orb)this).duration = ((Orb)this).distanceToTarget / 30f; EffectData val = new EffectData { origin = base.origin, genericFloat = ((Orb)this).duration }; val.SetHurtBoxReference(base.target); EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/OrbEffects/InfusionOrbEffect"), val, true); HurtBox component = ((Component)base.target).GetComponent<HurtBox>(); CharacterBody val2 = ((component != null) ? ((Component)component.healthComponent).GetComponent<CharacterBody>() : null); if (Object.op_Implicit((Object)(object)val2)) { targetInventory = val2.inventory; } } public override void OnArrival() { if (Object.op_Implicit((Object)(object)targetInventory)) { AddFireAmbuyat(targetInventory); } } public static void AddFireAmbuyat(Inventory targetInventory) { targetInventory.GiveItem(FireAmbuyat.fireAmbuyat, 1); } } internal class AmbuyatHealOrb : Orb { private const float speed = 30f; private Inventory targetInventory; public static void Init() { OrbAPI.AddOrb(typeof(AmbuyatHealOrb)); } public override void Begin() { //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_001b: 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_0033: Expected O, but got Unknown ((Orb)this).duration = ((Orb)this).distanceToTarget / 30f; EffectData val = new EffectData { origin = base.origin, genericFloat = ((Orb)this).duration }; val.SetHurtBoxReference(base.target); EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/OrbEffects/InfusionOrbEffect"), val, true); HurtBox component = ((Component)base.target).GetComponent<HurtBox>(); CharacterBody val2 = ((component != null) ? ((Component)component.healthComponent).GetComponent<CharacterBody>() : null); if (Object.op_Implicit((Object)(object)val2)) { targetInventory = val2.inventory; } } public override void OnArrival() { if (Object.op_Implicit((Object)(object)targetInventory)) { AddHealAmbuyat(targetInventory); } } public static void AddHealAmbuyat(Inventory targetInventory) { targetInventory.GiveItem(HealAmbuyat.healAmbuyat, 1); } } internal class AmbuyatIceOrb : Orb { private const float speed = 30f; private Inventory targetInventory; public static void Init() { OrbAPI.AddOrb(typeof(AmbuyatIceOrb)); } public override void Begin() { //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_001b: 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_0033: Expected O, but got Unknown ((Orb)this).duration = ((Orb)this).distanceToTarget / 30f; EffectData val = new EffectData { origin = base.origin, genericFloat = ((Orb)this).duration }; val.SetHurtBoxReference(base.target); EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/OrbEffects/InfusionOrbEffect"), val, true); HurtBox component = ((Component)base.target).GetComponent<HurtBox>(); CharacterBody val2 = ((component != null) ? ((Component)component.healthComponent).GetComponent<CharacterBody>() : null); if (Object.op_Implicit((Object)(object)val2)) { targetInventory = val2.inventory; } } public override void OnArrival() { if (Object.op_Implicit((Object)(object)targetInventory)) { AddIceAmbuyat(targetInventory); } } public static void AddIceAmbuyat(Inventory targetInventory) { targetInventory.GiveItem(IceAmbuyat.iceAmbuyat, 1); } } internal class AmbuyatMalachiteOrb : Orb { private const float speed = 30f; private Inventory targetInventory; public static void Init() { OrbAPI.AddOrb(typeof(AmbuyatMalachiteOrb)); } public override void Begin() { //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_001b: 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_0033: Expected O, but got Unknown ((Orb)this).duration = ((Orb)this).distanceToTarget / 30f; EffectData val = new EffectData { origin = base.origin, genericFloat = ((Orb)this).duration }; val.SetHurtBoxReference(base.target); EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/OrbEffects/InfusionOrbEffect"), val, true); HurtBox component = ((Component)base.target).GetComponent<HurtBox>(); CharacterBody val2 = ((component != null) ? ((Component)component.healthComponent).GetComponent<CharacterBody>() : null); if (Object.op_Implicit((Object)(object)val2)) { targetInventory = val2.inventory; } } public override void OnArrival() { if (Object.op_Implicit((Object)(object)targetInventory)) { AddMalachiteAmbuyat(targetInventory); } } public static void AddMalachiteAmbuyat(Inventory targetInventory) { targetInventory.GiveItem(MalachiteAmbuyat.malachiteAmbuyat, 1); } } internal class AmbuyatPerfectedOrb : Orb { private const float speed = 30f; private Inventory targetInventory; public static void Init() { OrbAPI.AddOrb(typeof(AmbuyatPerfectedOrb)); } public override void Begin() { //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_001b: 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_0033: Expected O, but got Unknown ((Orb)this).duration = ((Orb)this).distanceToTarget / 30f; EffectData val = new EffectData { origin = base.origin, genericFloat = ((Orb)this).duration }; val.SetHurtBoxReference(base.target); EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/OrbEffects/InfusionOrbEffect"), val, true); HurtBox component = ((Component)base.target).GetComponent<HurtBox>(); CharacterBody val2 = ((component != null) ? ((Component)component.healthComponent).GetComponent<CharacterBody>() : null); if (Object.op_Implicit((Object)(object)val2)) { targetInventory = val2.inventory; } } public override void OnArrival() { if (Object.op_Implicit((Object)(object)targetInventory)) { AddPerfectedAmbuyat(targetInventory); } } public static void AddPerfectedAmbuyat(Inventory targetInventory) { targetInventory.GiveItem(PerfectedAmbuyat.perfectedAmbuyat, 1); } } internal class AmbuyatVoidOrb : Orb { private const float speed = 30f; private Inventory targetInventory; public static void Init() { OrbAPI.AddOrb(typeof(AmbuyatVoidOrb)); } public override void Begin() { //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_001b: 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_0033: Expected O, but got Unknown ((Orb)this).duration = ((Orb)this).distanceToTarget / 30f; EffectData val = new EffectData { origin = base.origin, genericFloat = ((Orb)this).duration }; val.SetHurtBoxReference(base.target); EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/OrbEffects/InfusionOrbEffect"), val, true); HurtBox component = ((Component)base.target).GetComponent<HurtBox>(); CharacterBody val2 = ((component != null) ? ((Component)component.healthComponent).GetComponent<CharacterBody>() : null); if (Object.op_Implicit((Object)(object)val2)) { targetInventory = val2.inventory; } } public override void OnArrival() { if (Object.op_Implicit((Object)(object)targetInventory)) { AddVoidAmbuyat(targetInventory); } } public static void AddVoidAmbuyat(Inventory targetInventory) { targetInventory.GiveItem(VoidAmbuyat.voidAmbuyat, 1); } } } namespace MarixxeIsMithrix.Modules { public static class Assets { public static AssetBundle mainBundle; public const string bundleName = "marixxeisitem.bundle"; public const string assetBundleFolder = "AssetBundles"; public static string AssetBundlePath => Path.Combine(Path.GetDirectoryName(MarixxeIsMithrix.PInfo.Location), "AssetBundles", "marixxeisitem.bundle"); public static void Init() { mainBundle = AssetBundle.LoadFromFile(AssetBundlePath); } } public static class BuffCreator { public static void CreateBuff() { Order.Init(); PoisonAmbuyat.Init(); SlowAmbuyat.Init(); } } public static class CouleurCreator { public static void CreateCouleur() { MalachiteAmbuyatDoTColor.Init(); CrystalDivergenceDamageColor.Init(); } } public static class DotsCreator { public static void CreateDots() { PoisonAmbuyatDOT.Init(); } } public static class ItemCreator { public static void CreateItem() { MonsterCan.Init(); SelfFillingGatling.Init(); CrystalDivergence.Init(); LawAndOrder.Init(); Ambuyat.Init(); CelestineAmbuyat.Init(); ElectricAmbuyat.Init(); FireAmbuyat.Init(); HealAmbuyat.Init(); MalachiteAmbuyat.Init(); VoidAmbuyat.Init(); PerfectedAmbuyat.Init(); IceAmbuyat.Init(); } } internal class OrbsCreator { public static void CreateOrbs() { AmbuyatCelestineOrb.Init(); AmbuyatElectricOrb.Init(); AmbuyatFireOrb.Init(); AmbuyatHealOrb.Init(); AmbuyatIceOrb.Init(); AmbuyatMalachiteOrb.Init(); AmbuyatPerfectedOrb.Init(); AmbuyatVoidOrb.Init(); } } } namespace MarixxeIsMithrix.Item { internal class Ambuyat { [CompilerGenerated] private static class <>O { public static hook_OnCharacterDeath <0>__GlobalEventManager_OnCharacterDeath; } public static ItemDef ambuyat; public static void Init() { //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_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Expected O, but got Unknown //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Expected O, but got Unknown ambuyat = ScriptableObject.CreateInstance<ItemDef>(); ((Object)ambuyat).name = "AMBUYAT_NAME"; ambuyat.nameToken = "AMBUYAT_NAME"; ambuyat.pickupToken = "AMBUYAT_PICKUP"; ambuyat.descriptionToken = "AMBUYAT_DESCRIPTION"; ambuyat.loreToken = "AMBUYAT_LORE"; ambuyat.tier = (ItemTier)1; ItemDef obj = ambuyat; ItemTag[] array = new ItemTag[3]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj.tags = (ItemTag[])(object)array; ambuyat._itemTierDef = Addressables.LoadAssetAsync<ItemTierDef>((object)"RoR2/Base/Common/Tier2Def.asset").WaitForCompletion(); ambuyat.pickupIconSprite = Assets.mainBundle.LoadAsset<Sprite>("Ambuyat"); ambuyat.pickupModelPrefab = Assets.mainBundle.LoadAsset<GameObject>("Ambuyat"); ambuyat.canRemove = true; ambuyat.hidden = false; ItemDisplayRuleDict val = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); ItemAPI.Add(new CustomItem(ambuyat, val)); Hooks(); } public static void Hooks() { //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>__GlobalEventManager_OnCharacterDeath; if (obj == null) { hook_OnCharacterDeath val = GlobalEventManager_OnCharacterDeath; <>O.<0>__GlobalEventManager_OnCharacterDeath = val; obj = (object)val; } GlobalEventManager.OnCharacterDeath += (hook_OnCharacterDeath)obj; } public static void GlobalEventManager_OnCharacterDeath(orig_OnCharacterDeath orig, GlobalEventManager globalEventManager, DamageReport damageReport) { //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //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) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_0185: 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_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: 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_023c: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Unknown result type (might be due to invalid IL or missing references) //IL_027b: 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_02b8: Unknown result type (might be due to invalid IL or missing references) GameObject val = null; if (Object.op_Implicit((Object)(object)damageReport.victim)) { val = ((Component)damageReport.victim).gameObject; } CharacterBody victimBody = damageReport.victimBody; CharacterBody attackerBody = damageReport.attackerBody; CharacterMaster attackerMaster = damageReport.attackerMaster; Inventory val2 = (Object.op_Implicit((Object)(object)attackerMaster) ? attackerMaster.inventory : null); Vector3 val3 = Vector3.zero; Quaternion identity = Quaternion.identity; Vector3 zero = Vector3.zero; Transform transform = val.transform; if (Object.op_Implicit((Object)(object)transform)) { val3 = transform.position; identity = transform.rotation; zero = val3; } if (Object.op_Implicit((Object)(object)attackerBody)) { attackerBody.HandleOnKillEffectsServer(damageReport); if (Object.op_Implicit((Object)(object)attackerMaster) && Object.op_Implicit((Object)(object)val2)) { int itemCount = val2.GetItemCount(ambuyat); if (itemCount > 0 && Util.CheckRoll(50f, 0f, (CharacterMaster)null)) { if (victimBody.HasBuff(Buffs.AffixRed)) { AmbuyatFireOrb ambuyatFireOrb = new AmbuyatFireOrb(); ((Orb)ambuyatFireOrb).origin = val3; ((Orb)ambuyatFireOrb).target = Util.FindBodyMainHurtBox(attackerBody); OrbManager.instance.AddOrb((Orb)(object)ambuyatFireOrb); } if (victimBody.HasBuff(Buffs.AffixWhite)) { AmbuyatIceOrb ambuyatIceOrb = new AmbuyatIceOrb(); ((Orb)ambuyatIceOrb).origin = val3; ((Orb)ambuyatIceOrb).target = Util.FindBodyMainHurtBox(attackerBody); OrbManager.instance.AddOrb((Orb)(object)ambuyatIceOrb); } if (victimBody.HasBuff(Buffs.AffixBlue)) { AmbuyatElectricOrb ambuyatElectricOrb = new AmbuyatElectricOrb(); ((Orb)ambuyatElectricOrb).origin = val3; ((Orb)ambuyatElectricOrb).target = Util.FindBodyMainHurtBox(attackerBody); OrbManager.instance.AddOrb((Orb)(object)ambuyatElectricOrb); } if (victimBody.HasBuff(Buffs.AffixHaunted)) { AmbuyatCelestineOrb ambuyatCelestineOrb = new AmbuyatCelestineOrb(); ((Orb)ambuyatCelestineOrb).origin = val3; ((Orb)ambuyatCelestineOrb).target = Util.FindBodyMainHurtBox(attackerBody); OrbManager.instance.AddOrb((Orb)(object)ambuyatCelestineOrb); } if (victimBody.HasBuff(Buffs.AffixPoison)) { AmbuyatMalachiteOrb ambuyatMalachiteOrb = new AmbuyatMalachiteOrb(); ((Orb)ambuyatMalachiteOrb).origin = val3; ((Orb)ambuyatMalachiteOrb).target = Util.FindBodyMainHurtBox(attackerBody); OrbManager.instance.AddOrb((Orb)(object)ambuyatMalachiteOrb); } if (victimBody.HasBuff(Buffs.AffixLunar)) { AmbuyatPerfectedOrb ambuyatPerfectedOrb = new AmbuyatPerfectedOrb(); ((Orb)ambuyatPerfectedOrb).origin = val3; ((Orb)ambuyatPerfectedOrb).target = Util.FindBodyMainHurtBox(attackerBody); OrbManager.instance.AddOrb((Orb)(object)ambuyatPerfectedOrb); } if (victimBody.HasBuff(Buffs.EliteEarth)) { AmbuyatHealOrb ambuyatHealOrb = new AmbuyatHealOrb(); ((Orb)ambuyatHealOrb).origin = val3; ((Orb)ambuyatHealOrb).target = Util.FindBodyMainHurtBox(attackerBody); OrbManager.instance.AddOrb((Orb)(object)ambuyatHealOrb); } if (victimBody.HasBuff(Buffs.EliteVoid)) { AmbuyatVoidOrb ambuyatVoidOrb = new AmbuyatVoidOrb(); ((Orb)ambuyatVoidOrb).origin = val3; ((Orb)ambuyatVoidOrb).target = Util.FindBodyMainHurtBox(attackerBody); OrbManager.instance.AddOrb((Orb)(object)ambuyatVoidOrb); } } } } orig.Invoke(globalEventManager, damageReport); } } internal class CelestineAmbuyat { [CompilerGenerated] private static class <>O { public static StatHookEventHandler <0>__RecalculateStatsAPI_GetStatCoefficients; } public static ItemDef celestineAmbuyat; public static void Init() { //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Expected O, but got Unknown //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Expected O, but got Unknown celestineAmbuyat = ScriptableObject.CreateInstance<ItemDef>(); celestineAmbuyat.hidden = true; ((Object)celestineAmbuyat).name = "CELESTINE_AMBUYAT_NAME"; celestineAmbuyat.nameToken = "CELESTINE_AMBUYAT_NAME"; celestineAmbuyat.pickupToken = "CELESTINE_AMBUYAT_PICKUP"; celestineAmbuyat.descriptionToken = "CELESTINE_AMBUYAT_DESCRIPTION"; celestineAmbuyat.loreToken = "CELESTINE_AMBUYAT_LORE"; celestineAmbuyat.canRemove = false; ItemDef obj = celestineAmbuyat; ItemTag[] array = new ItemTag[3]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj.tags = (ItemTag[])(object)array; celestineAmbuyat.tier = (ItemTier)5; celestineAmbuyat.pickupIconSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/MiscIcons/texMysteryIcon.png").WaitForCompletion(); celestineAmbuyat.pickupModelPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mystery/PickupMystery.prefab").WaitForCompletion(); ItemDisplayRuleDict val = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); ItemAPI.Add(new CustomItem(celestineAmbuyat, val)); Hooks(); } public static void Hooks() { //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>__RecalculateStatsAPI_GetStatCoefficients; if (obj == null) { StatHookEventHandler val = RecalculateStatsAPI_GetStatCoefficients; <>O.<0>__RecalculateStatsAPI_GetStatCoefficients = val; obj = (object)val; } RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj; } private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (Object.op_Implicit((Object)(object)sender.inventory)) { int itemCount = sender.inventory.GetItemCount(celestineAmbuyat); if (itemCount > 0) { args.baseMoveSpeedAdd += 0.01f * (float)itemCount; } } } } internal class CrystalDivergence { [CompilerGenerated] private static class <>O { public static hook_TakeDamage <0>__HealthComponent_TakeDamage; } public static ItemDef crystalDivergence; public static void Init() { //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown crystalDivergence = ScriptableObject.CreateInstance<ItemDef>(); ((Object)crystalDivergence).name = "CRYSTAL_DIVERGENCE_NAME"; crystalDivergence.nameToken = "CRYSTAL_DIVERGENCE_NAME"; crystalDivergence.pickupToken = "CRYSTAL_DIVERGENCE_PICKUP"; crystalDivergence.descriptionToken = "CRYSTAL_DIVERGENCE_DESCRIPTION"; crystalDivergence.loreToken = "CRYSTAL_DIVERGENCE_LORE"; crystalDivergence.tags = (ItemTag[])(object)new ItemTag[1] { (ItemTag)1 }; crystalDivergence.tier = (ItemTier)0; crystalDivergence._itemTierDef = Addressables.LoadAssetAsync<ItemTierDef>((object)"RoR2/Base/Common/Tier1Def.asset").WaitForCompletion(); crystalDivergence.pickupIconSprite = Assets.mainBundle.LoadAsset<Sprite>("CrystalDivergence"); crystalDivergence.pickupModelPrefab = Assets.mainBundle.LoadAsset<GameObject>("CrystalDivergence"); crystalDivergence.canRemove = true; crystalDivergence.hidden = false; ItemDisplayRuleDict val = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); ItemAPI.Add(new CustomItem(crystalDivergence, val)); Hooks(); } public static void Hooks() { //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>__HealthComponent_TakeDamage; if (obj == null) { hook_TakeDamage val = HealthComponent_TakeDamage; <>O.<0>__HealthComponent_TakeDamage = val; obj = (object)val; } HealthComponent.TakeDamage += (hook_TakeDamage)obj; } public static void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Invalid comparison between Unknown and I4 //IL_006b: 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) CharacterBody val = default(CharacterBody); if (Object.op_Implicit((Object)(object)damageInfo.attacker) && damageInfo.attacker.TryGetComponent<CharacterBody>(ref val) && TryGetCount(val, out var count)) { Vector3 val2 = val.corePosition - damageInfo.position; if (count > 0 && ((Vector3)(ref val2)).sqrMagnitude > 169f) { if ((int)damageInfo.damageType == 0) { damageInfo.damageColorIndex = CrystalDivergenceDamageColor.crystalDivergenceDamageColorIndex; } damageInfo.damage *= 1f + (float)count * 0.075f; } } orig.Invoke(self, damageInfo); } public static bool TryGetCount(CharacterBody body, out int count) { count = 0; if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.inventory)) { return false; } count = body.inventory.GetItemCount(crystalDivergence); return count > 0; } } internal class ElectricAmbuyat { [CompilerGenerated] private static class <>O { public static StatHookEventHandler <0>__RecalculateStatsAPI_GetStatCoefficients; } public static ItemDef electricAmbuyat; public static void Init() { //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Expected O, but got Unknown //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Expected O, but got Unknown electricAmbuyat = ScriptableObject.CreateInstance<ItemDef>(); electricAmbuyat.hidden = true; ((Object)electricAmbuyat).name = "ELECTRIC_AMBUYAT_NAME"; electricAmbuyat.nameToken = "ELECTRIC_AMBUYAT_NAME"; electricAmbuyat.pickupToken = "ELECTRIC_AMBUYAT_PICKUP"; electricAmbuyat.descriptionToken = "ELECTRIC_AMBUYAT_DESCRIPTION"; electricAmbuyat.loreToken = "ELECTRIC_AMBUYAT_LORE"; electricAmbuyat.canRemove = false; ItemDef obj = electricAmbuyat; ItemTag[] array = new ItemTag[3]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj.tags = (ItemTag[])(object)array; electricAmbuyat.tier = (ItemTier)5; electricAmbuyat.pickupIconSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/MiscIcons/texMysteryIcon.png").WaitForCompletion(); electricAmbuyat.pickupModelPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mystery/PickupMystery.prefab").WaitForCompletion(); ItemDisplayRuleDict val = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); ItemAPI.Add(new CustomItem(electricAmbuyat, val)); Hooks(); } public static void Hooks() { //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>__RecalculateStatsAPI_GetStatCoefficients; if (obj == null) { StatHookEventHandler val = RecalculateStatsAPI_GetStatCoefficients; <>O.<0>__RecalculateStatsAPI_GetStatCoefficients = val; obj = (object)val; } RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj; } private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (Object.op_Implicit((Object)(object)sender.inventory)) { int itemCount = sender.inventory.GetItemCount(electricAmbuyat); if (itemCount > 0) { args.baseShieldAdd += (float)itemCount; args.baseAttackSpeedAdd += 0.01f * (float)itemCount; } } } } internal class FireAmbuyat { [CompilerGenerated] private static class <>O { public static StatHookEventHandler <0>__RecalculateStatsAPI_GetStatCoefficients; } public static ItemDef fireAmbuyat; public static void Init() { //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Expected O, but got Unknown //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Expected O, but got Unknown fireAmbuyat = ScriptableObject.CreateInstance<ItemDef>(); fireAmbuyat.hidden = true; ((Object)fireAmbuyat).name = "FIRE_AMBUYAT_NAME"; fireAmbuyat.nameToken = "FIRE_AMBUYAT_NAME"; fireAmbuyat.pickupToken = "FIRE_AMBUYAT_PICKUP"; fireAmbuyat.descriptionToken = "FIRE_AMBUYAT_DESCRIPTION"; fireAmbuyat.loreToken = "FIRE_AMBUYAT_LORE"; fireAmbuyat.canRemove = false; ItemDef obj = fireAmbuyat; ItemTag[] array = new ItemTag[3]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj.tags = (ItemTag[])(object)array; fireAmbuyat.tier = (ItemTier)5; fireAmbuyat.pickupIconSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/MiscIcons/texMysteryIcon.png").WaitForCompletion(); fireAmbuyat.pickupModelPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mystery/PickupMystery.prefab").WaitForCompletion(); ItemDisplayRuleDict val = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); ItemAPI.Add(new CustomItem(fireAmbuyat, val)); Hooks(); } public static void Hooks() { //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>__RecalculateStatsAPI_GetStatCoefficients; if (obj == null) { StatHookEventHandler val = RecalculateStatsAPI_GetStatCoefficients; <>O.<0>__RecalculateStatsAPI_GetStatCoefficients = val; obj = (object)val; } RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj; } private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (Object.op_Implicit((Object)(object)sender.inventory)) { int itemCount = sender.inventory.GetItemCount(fireAmbuyat); if (itemCount > 0) { args.baseDamageAdd += (float)itemCount; args.baseHealthAdd += (float)itemCount; } } } } internal class HealAmbuyat { [CompilerGenerated] private static class <>O { public static StatHookEventHandler <0>__RecalculateStatsAPI_GetStatCoefficients; } public static ItemDef healAmbuyat; public static void Init() { //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Expected O, but got Unknown //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Expected O, but got Unknown healAmbuyat = ScriptableObject.CreateInstance<ItemDef>(); healAmbuyat.hidden = true; ((Object)healAmbuyat).name = "HEAL_AMBUYAT_NAME"; healAmbuyat.nameToken = "HEAL_AMBUYAT_NAME"; healAmbuyat.pickupToken = "HEAL_AMBUYAT_PICKUP"; healAmbuyat.descriptionToken = "HEAL_AMBUYAT_DESCRIPTION"; healAmbuyat.loreToken = "HEAL_AMBUYAT_LORE"; healAmbuyat.canRemove = false; ItemDef obj = healAmbuyat; ItemTag[] array = new ItemTag[3]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj.tags = (ItemTag[])(object)array; healAmbuyat.tier = (ItemTier)5; healAmbuyat.pickupIconSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/MiscIcons/texMysteryIcon.png").WaitForCompletion(); healAmbuyat.pickupModelPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mystery/PickupMystery.prefab").WaitForCompletion(); ItemDisplayRuleDict val = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); ItemAPI.Add(new CustomItem(healAmbuyat, val)); Hooks(); } public static void Hooks() { //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>__RecalculateStatsAPI_GetStatCoefficients; if (obj == null) { StatHookEventHandler val = RecalculateStatsAPI_GetStatCoefficients; <>O.<0>__RecalculateStatsAPI_GetStatCoefficients = val; obj = (object)val; } RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj; } private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (Object.op_Implicit((Object)(object)sender.inventory)) { int itemCount = sender.inventory.GetItemCount(healAmbuyat); if (itemCount > 0) { args.baseRegenAdd += 0.1f * (float)itemCount; } } } } internal class IceAmbuyat { [CompilerGenerated] private static class <>O { public static StatHookEventHandler <0>__RecalculateStatsAPI_GetStatCoefficients; public static hook_OnHitEnemy <1>__GlobalEventManager_OnHitEnemy; } public static ItemDef iceAmbuyat; public static void Init() { //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Expected O, but got Unknown //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Expected O, but got Unknown iceAmbuyat = ScriptableObject.CreateInstance<ItemDef>(); iceAmbuyat.hidden = true; ((Object)iceAmbuyat).name = "ICE_AMBUYAT_NAME"; iceAmbuyat.nameToken = "ICE_AMBUYAT_NAME"; iceAmbuyat.pickupToken = "ICE_AMBUYAT_PICKUP"; iceAmbuyat.descriptionToken = "ICE_AMBUYAT_DESCRIPTION"; iceAmbuyat.loreToken = "ICE_AMBUYAT_LORE"; iceAmbuyat.canRemove = false; ItemDef obj = iceAmbuyat; ItemTag[] array = new ItemTag[3]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj.tags = (ItemTag[])(object)array; iceAmbuyat.tier = (ItemTier)5; iceAmbuyat.pickupIconSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/MiscIcons/texMysteryIcon.png").WaitForCompletion(); iceAmbuyat.pickupModelPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mystery/PickupMystery.prefab").WaitForCompletion(); ItemDisplayRuleDict val = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); ItemAPI.Add(new CustomItem(iceAmbuyat, val)); Hooks(); } public static void Hooks() { //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 //IL_0032: 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_003d: Expected O, but got Unknown object obj = <>O.<0>__RecalculateStatsAPI_GetStatCoefficients; if (obj == null) { StatHookEventHandler val = RecalculateStatsAPI_GetStatCoefficients; <>O.<0>__RecalculateStatsAPI_GetStatCoefficients = val; obj = (object)val; } RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj; object obj2 = <>O.<1>__GlobalEventManager_OnHitEnemy; if (obj2 == null) { hook_OnHitEnemy val2 = GlobalEventManager_OnHitEnemy; <>O.<1>__GlobalEventManager_OnHitEnemy = val2; obj2 = (object)val2; } GlobalEventManager.OnHitEnemy += (hook_OnHitEnemy)obj2; } private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (sender.HasBuff(SlowAmbuyat.slowAmbuyat)) { args.moveSpeedReductionMultAdd += (float)sender.GetBuffCount(SlowAmbuyat.slowAmbuyat) * 0.01f; } } public static void GlobalEventManager_OnHitEnemy(orig_OnHitEnemy orig, GlobalEventManager globalEventManager, DamageInfo damageInfo, GameObject entity) { orig.Invoke(globalEventManager, damageInfo, entity); CharacterBody body = default(CharacterBody); CharacterBody val = default(CharacterBody); if (Object.op_Implicit((Object)(object)damageInfo.attacker) && damageInfo.attacker.TryGetComponent<CharacterBody>(ref body) && entity.TryGetComponent<CharacterBody>(ref val) && TryGetCount(body, out var count) && count > 0 && val.GetBuffCount(SlowAmbuyat.slowAmbuyat) < count) { val.AddBuff(SlowAmbuyat.slowAmbuyat); } } public static bool TryGetCount(CharacterBody body, out int count) { count = 0; if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.inventory)) { return false; } count = body.inventory.GetItemCount(iceAmbuyat); return count > 0; } } internal class LawAndOrder { [CompilerGenerated] private static class <>O { public static hook_OnHitEnemy <0>__GlobalEventManager_OnHitEnemy; public static hook_TakeDamage <1>__HealthComponent_TakeDamage; } public static ItemDef lawAndOrder; public static void Init() { //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown lawAndOrder = ScriptableObject.CreateInstance<ItemDef>(); ((Object)lawAndOrder).name = "LAW_AND_ORDER_NAME"; lawAndOrder.nameToken = "LAW_AND_ORDER_NAME"; lawAndOrder.pickupToken = "LAW_AND_ORDER_PICKUP"; lawAndOrder.descriptionToken = "LAW_AND_ORDER_DESCRIPTION"; lawAndOrder.loreToken = "LAW_AND_ORDER_LORE"; lawAndOrder.tier = (ItemTier)2; lawAndOrder.tags = (ItemTag[])(object)new ItemTag[1] { (ItemTag)1 }; lawAndOrder._itemTierDef = Addressables.LoadAssetAsync<ItemTierDef>((object)"RoR2/Base/Common/Tier3Def.asset").WaitForCompletion(); lawAndOrder.pickupIconSprite = Assets.mainBundle.LoadAsset<Sprite>("LawAndOrder"); lawAndOrder.pickupModelPrefab = Assets.mainBundle.LoadAsset<GameObject>("LawAndOrder"); lawAndOrder.canRemove = true; lawAndOrder.hidden = false; ItemDisplayRuleDict val = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); ItemAPI.Add(new CustomItem(lawAndOrder, val)); Hooks(); } public static void Hooks() { //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 //IL_0032: 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_003d: Expected O, but got Unknown object obj = <>O.<0>__GlobalEventManager_OnHitEnemy; if (obj == null) { hook_OnHitEnemy val = GlobalEventManager_OnHitEnemy; <>O.<0>__GlobalEventManager_OnHitEnemy = val; obj = (object)val; } GlobalEventManager.OnHitEnemy += (hook_OnHitEnemy)obj; object obj2 = <>O.<1>__HealthComponent_TakeDamage; if (obj2 == null) { hook_TakeDamage val2 = HealthComponent_TakeDamage; <>O.<1>__HealthComponent_TakeDamage = val2; obj2 = (object)val2; } HealthComponent.TakeDamage += (hook_TakeDamage)obj2; } public static void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { CharacterBody body = default(CharacterBody); if (Object.op_Implicit((Object)(object)damageInfo.attacker) && damageInfo.attacker.TryGetComponent<CharacterBody>(ref body) && TryGetCount(body, out var count) && count > 0 && self.body.HasBuff(Order.order)) { damageInfo.damage *= 1f + (float)self.body.GetBuffCount(Order.order) * ((float)count * 0.5f); } orig.Invoke(self, damageInfo); } public static void GlobalEventManager_OnHitEnemy(orig_OnHitEnemy orig, GlobalEventManager globalEventManager, DamageInfo damageInfo, GameObject entity) { orig.Invoke(globalEventManager, damageInfo, entity); CharacterBody val = default(CharacterBody); CharacterBody val2 = default(CharacterBody); if (Object.op_Implicit((Object)(object)damageInfo.attacker) && damageInfo.attacker.TryGetComponent<CharacterBody>(ref val) && entity.TryGetComponent<CharacterBody>(ref val2) && TryGetCount(val2, out var count) && damageInfo.damage >= val2.healthComponent.fullHealth * 0.5f && count > 0) { val.AddBuff(Order.order); } } public static bool TryGetCount(CharacterBody body, out int count) { count = 0; if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.inventory)) { return false; } count = body.inventory.GetItemCount(lawAndOrder); return count > 0; } } internal class MalachiteAmbuyat { [CompilerGenerated] private static class <>O { public static hook_OnHitEnemy <0>__GlobalEventManager_OnHitEnemy; } public static ItemDef malachiteAmbuyat; public static void Init() { //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Expected O, but got Unknown //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Expected O, but got Unknown malachiteAmbuyat = ScriptableObject.CreateInstance<ItemDef>(); malachiteAmbuyat.hidden = true; ((Object)malachiteAmbuyat).name = "MALACHITE_AMBUYAT_NAME"; malachiteAmbuyat.nameToken = "MALACHITE_AMBUYAT_NAME"; malachiteAmbuyat.pickupToken = "MALACHITE_AMBUYAT_PICKUP"; malachiteAmbuyat.descriptionToken = "MALACHITE_AMBUYAT_DESCRIPTION"; malachiteAmbuyat.loreToken = "MALACHITE_AMBUYAT_LORE"; malachiteAmbuyat.canRemove = false; ItemDef obj = malachiteAmbuyat; ItemTag[] array = new ItemTag[3]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj.tags = (ItemTag[])(object)array; malachiteAmbuyat.tier = (ItemTier)5; malachiteAmbuyat.pickupIconSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/MiscIcons/texMysteryIcon.png").WaitForCompletion(); malachiteAmbuyat.pickupModelPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mystery/PickupMystery.prefab").WaitForCompletion(); ItemDisplayRuleDict val = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); ItemAPI.Add(new CustomItem(malachiteAmbuyat, val)); Hooks(); } public static void Hooks() { //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>__GlobalEventManager_OnHitEnemy; if (obj == null) { hook_OnHitEnemy val = GlobalEventManager_OnHitEnemy; <>O.<0>__GlobalEventManager_OnHitEnemy = val; obj = (object)val; } GlobalEventManager.OnHitEnemy += (hook_OnHitEnemy)obj; } public static void GlobalEventManager_OnHitEnemy(orig_OnHitEnemy orig, GlobalEventManager globalEventManager, DamageInfo damageInfo, GameObject entity) { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(globalEventManager, damageInfo, entity); CharacterBody body = default(CharacterBody); if (Object.op_Implicit((Object)(object)damageInfo.attacker) && damageInfo.attacker.TryGetComponent<CharacterBody>(ref body) && TryGetCount(body, out var _)) { InflictDotInfo val = default(InflictDotInfo); val.attackerObject = damageInfo.attacker; val.dotIndex = PoisonAmbuyatDOT.poisonAmbuyatDOTIndex; val.maxStacksFromAttacker = 10000u; val.victimObject = entity; val.duration = 7f; InflictDotInfo val2 = val; DotController.InflictDot(ref val2); } } public static bool TryGetCount(CharacterBody body, out int count) { count = 0; if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.inventory)) { return false; } count = body.inventory.GetItemCount(malachiteAmbuyat); return count > 0; } } public class MonsterCan { [CompilerGenerated] private static class <>O { public static StatHookEventHandler <0>__RecalculateStatsAPI_GetStatCoefficients; } public static ItemDef monsterCan; public static void Init() { //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown monsterCan = ScriptableObject.CreateInstance<ItemDef>(); ((Object)monsterCan).name = "MONSTER_CAN_NAME"; monsterCan.nameToken = "MONSTER_CAN_NAME"; monsterCan.pickupToken = "MONSTER_CAN_PICKUP"; monsterCan.descriptionToken = "MONSTER_CAN_DESCRIPTION"; monsterCan.loreToken = "MONSTER_CAN_LORE"; monsterCan.tags = (ItemTag[])(object)new ItemTag[1] { (ItemTag)1 }; monsterCan.tier = (ItemTier)2; monsterCan._itemTierDef = Addressables.LoadAssetAsync<ItemTierDef>((object)"RoR2/Base/Common/Tier3Def.asset").WaitForCompletion(); monsterCan.pickupIconSprite = Assets.mainBundle.LoadAsset<Sprite>("MonsterCan"); monsterCan.pickupModelPrefab = Assets.mainBundle.LoadAsset<GameObject>("MonsterCan"); monsterCan.canRemove = true; monsterCan.hidden = false; ItemDisplayRuleDict val = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); ItemAPI.Add(new CustomItem(monsterCan, val)); Hooks(); } public static void Hooks() { //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>__RecalculateStatsAPI_GetStatCoefficients; if (obj == null) { StatHookEventHandler val = RecalculateStatsAPI_GetStatCoefficients; <>O.<0>__RecalculateStatsAPI_GetStatCoefficients = val; obj = (object)val; } RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj; } private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (Object.op_Implicit((Object)(object)sender.inventory)) { int itemCount = sender.inventory.GetItemCount(monsterCan); if (itemCount == 1) { args.primaryCooldownMultAdd += -0.1f; args.secondaryCooldownMultAdd += -0.1f; args.utilityCooldownMultAdd += -0.1f; args.specialCooldownMultAdd += -0.1f; args.moveSpeedMultAdd += 0.1f; args.attackSpeedMultAdd += 0.1f; args.regenMultAdd += 0.1f; } else if (itemCount > 1) { args.primaryCooldownMultAdd += -0.1f + -0.1f * (float)(itemCount - 1); args.secondaryCooldownMultAdd += -0.1f + -0.1f * (float)(itemCount - 1); args.utilityCooldownMultAdd += -0.1f + -0.1f * (float)(itemCount - 1); args.specialCooldownMultAdd += -0.1f + -0.1f * (float)(itemCount - 1); args.moveSpeedMultAdd += 0.1f + 0.1f * (float)(itemCount - 1); args.attackSpeedMultAdd += 0.1f + 0.1f * (float)(itemCount - 1); args.regenMultAdd += 0.1f + 0.1f * (float)(itemCount - 1); } } } } internal class PerfectedAmbuyat { [CompilerGenerated] private static class <>O { public static hook_TakeDamage <0>__HealthComponent_TakeDamage; } public static ItemDef perfectedAmbuyat; public static void Init() { //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Expected O, but got Unknown //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Expected O, but got Unknown perfectedAmbuyat = ScriptableObject.CreateInstance<ItemDef>(); perfectedAmbuyat.hidden = true; ((Object)perfectedAmbuyat).name = "PERFECTED_AMBUYAT_NAME"; perfectedAmbuyat.nameToken = "PERFECTED_AMBUYAT_NAME"; perfectedAmbuyat.pickupToken = "PERFECTED_AMBUYAT_PICKUP"; perfectedAmbuyat.descriptionToken = "PERFECTED_AMBUYAT_DESCRIPTION"; perfectedAmbuyat.loreToken = "PERFECTED_AMBUYAT_LORE"; perfectedAmbuyat.canRemove = false; ItemDef obj = perfectedAmbuyat; ItemTag[] array = new ItemTag[3]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj.tags = (ItemTag[])(object)array; perfectedAmbuyat.tier = (ItemTier)5; perfectedAmbuyat.pickupIconSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/MiscIcons/texMysteryIcon.png").WaitForCompletion(); perfectedAmbuyat.pickupModelPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mystery/PickupMystery.prefab").WaitForCompletion(); ItemDisplayRuleDict val = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); ItemAPI.Add(new CustomItem(perfectedAmbuyat, val)); Hooks(); } public static void Hooks() { //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>__HealthComponent_TakeDamage; if (obj == null) { hook_TakeDamage val = HealthComponent_TakeDamage; <>O.<0>__HealthComponent_TakeDamage = val; obj = (object)val; } HealthComponent.TakeDamage += (hook_TakeDamage)obj; } public static void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { CharacterBody body = default(CharacterBody); if (Object.op_Implicit((Object)(object)damageInfo.attacker) && damageInfo.attacker.TryGetComponent<CharacterBody>(ref body) && TryGetCount(body, out var count) && count > 0) { CharacterBody body2 = self.body; body2.armor *= 1f - (float)count * 0.01f; } orig.Invoke(self, damageInfo); } public static bool TryGetCount(CharacterBody body, out int count) { count = 0; if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.inventory)) { return false; } count = body.inventory.GetItemCount(perfectedAmbuyat); return count > 0; } } internal class PullRouge { public static ItemDef pullRouge; public static void Init() { //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_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Expected O, but got Unknown //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Expected O, but got Unknown pullRouge = ScriptableObject.CreateInstance<ItemDef>(); ((Object)pullRouge).name = "PULL_ROUGE_NAME"; pullRouge.nameToken = "PULL_ROUGE_NAME"; pullRouge.pickupToken = "PULL_ROUGE_PICKUP"; pullRouge.descriptionToken = "PULL_ROUGE_DESCRIPTION"; pullRouge.loreToken = "PULL_ROUGE_LORE"; pullRouge._itemTierDef = Addressables.LoadAssetAsync<ItemTierDef>((object)"RoR2/Base/Common/Tier2Def.asset").WaitForCompletion(); pullRouge.pickupIconSprite = Assets.mainBundle.LoadAsset<Sprite>("pullRouge"); pullRouge.pickupModelPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mystery/PickupMystery.prefab").WaitForCompletion(); pullRouge.canRemove = true; pullRouge.hidden = false; ItemDisplayRuleDict val = new ItemDisplayRuleDict((ItemDisplayRule[])null); ItemAPI.Add(new CustomItem(pullRouge, val)); } } internal class SelfFillingGatling { [CompilerGenerated] private static class <>O { public static StatHookEventHandler <0>__RecalculateStatsAPI_GetStatCoefficients; } public static ItemDef selfFillingGatling; public static void Init() { //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Expected O, but got Unknown selfFillingGatling = ScriptableObject.CreateInstance<ItemDef>(); ((Object)selfFillingGatling).name = "SELF_FILLING_GATLING_NAME"; selfFillingGatling.nameToken = "SELF_FILLING_GATLING_NAME"; selfFillingGatling.pickupToken = "SELF_FILLING_GATLING_PICKUP"; selfFillingGatling.descriptionToken = "SELF_FILLING_GATLING_DESCRIPTION"; selfFillingGatling.loreToken = "SELF_FILLING_GATLING_LORE"; selfFillingGatling.tags = (ItemTag[])(object)new ItemTag[1] { (ItemTag)1 }; selfFillingGatling.tier = (ItemTier)1; selfFillingGatling._itemTierDef = Addressables.LoadAssetAsync<ItemTierDef>((object)"RoR2/Base/Common/Tier2Def.asset").WaitForCompletion(); selfFillingGatling.pickupIconSprite = Assets.mainBundle.LoadAsset<Sprite>("SelfFillingGatling"); selfFillingGatling.pickupModelPrefab = Assets.mainBundle.LoadAsset<GameObject>("SelfFillingGatling"); selfFillingGatling.canRemove = true; selfFillingGatling.hidden = false; ItemDisplayRuleDict val = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); ItemAPI.Add(new CustomItem(selfFillingGatling, val)); Hooks(); } public static void Hooks() { //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>__RecalculateStatsAPI_GetStatCoefficients; if (obj == null) { StatHookEventHandler val = RecalculateStatsAPI_GetStatCoefficients; <>O.<0>__RecalculateStatsAPI_GetStatCoefficients = val; obj = (object)val; } RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj; } private static void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (Object.op_Implicit((Object)(object)sender.inventory)) { int itemCount = sender.inventory.GetItemCount(selfFillingGatling); if (itemCount == 1) { args.levelAttackSpeedAdd += 0.02f; } else if (itemCount > 1) { args.levelAttackSpeedAdd += 0.02f + 0.01f * (float)(itemCount - 1); } } } } internal class VoidAmbuyat { [CompilerGenerated] private static class <>O { public static hook_TakeDamage <0>__HealthComponent_TakeDamage; } public static ItemDef voidAmbuyat; public static float dodgeChance = 0.005f; public static void Init() { //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Expected O, but got Unknown //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Expected O, but got Unknown voidAmbuyat = ScriptableObject.CreateInstance<ItemDef>(); voidAmbuyat.hidden = true; ((Object)voidAmbuyat).name = "VOID_AMBUYAT_NAME"; voidAmbuyat.nameToken = "VOID_AMBUYAT_NAME"; voidAmbuyat.pickupToken = "VOID_AMBUYAT_PICKUP"; voidAmbuyat.descriptionToken = "VOID_AMBUYAT_DESCRIPTION"; voidAmbuyat.loreToken = "VOID_AMBUYAT_LORE"; voidAmbuyat.canRemove = false; ItemDef obj = voidAmbuyat; ItemTag[] array = new ItemTag[3]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); obj.tags = (ItemTag[])(object)array; voidAmbuyat.tier = (ItemTier)5; voidAmbuyat.pickupIconSprite = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/MiscIcons/texMysteryIcon.png").WaitForCompletion(); voidAmbuyat.pickupModelPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mystery/PickupMystery.prefab").WaitForCompletion(); ItemDisplayRuleDict val = new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); ItemAPI.Add(new CustomItem(voidAmbuyat, val)); Hooks(); } public static void Hooks() { //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>__HealthComponent_TakeDamage; if (obj == null) { hook_TakeDamage val = HealthComponent_TakeDamage; <>O.<0>__HealthComponent_TakeDamage = val; obj = (object)val; } HealthComponent.TakeDamage += (hook_TakeDamage)obj; } public static void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Invalid comparison between Unknown and I4 CharacterBody body = default(CharacterBody); if (Object.op_Implicit((Object)(object)damageInfo.attacker) && damageInfo.attacker.TryGetComponent<CharacterBody>(ref body) && TryGetCount(body, out var count) && (damageInfo.damageType & 0x40) <= 0 && count > 0 && Util.CheckRoll(VoidAmbuyatReductionPercentage(dodgeChance * (float)count), 0f, (CharacterMaster)null)) { damageInfo.rejected = true; } orig.Invoke(self, damageInfo); } public static bool TryGetCount(CharacterBody body, out int count) { count = 0; if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.inventory)) { return false; } count = body.inventory.GetItemCount(voidAmbuyat); return count > 0; } public static float VoidAmbuyatReductionPercentage(float totalDodge) { return 1f - 100f / (200f + totalDodge) * 100f; } } } namespace MarixxeIsMithrix.Dots { public static class PoisonAmbuyatDOT { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static CustomDotBehaviour <>9__3_0; internal void <Init>b__3_0(DotController dotController, DotStack dotStack) { float damage = 0f; CharacterBody body = null; if (Object.op_Implicit((Object)(object)dotStack.attackerObject) && dotStack.attackerObject.TryGetComponent<CharacterBody>(ref body) && MalachiteAmbuyat.TryGetCount(body, out var count)) { damage = (float)count * 1f; } dotStack.damage = damage; } } public static DotIndex poisonAmbuyatDOTIndex; public static DotDef poisonAmbuyatDOTDef; public static CustomDotBehaviour poisonAmbuyatDOTBehavior; public static void Init() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown //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_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_005d: Expected O, but got Unknown poisonAmbuyatDOTDef = new DotDef { associatedBuff = PoisonAmbuyat.poisonAmbuyat, damageCoefficient = 1f, damageColorIndex = MalachiteAmbuyatDoTColor.malachiteAmbuyatDoTColorIndex, interval = 1f, resetTimerOnAdd = true }; object obj = <>c.<>9__3_0; if (obj == null) { CustomDotBehaviour val = delegate(DotController dotController, DotStack dotStack) { float damage = 0f; CharacterBody body = null; if (Object.op_Implicit((Object)(object)dotStack.attackerObject) && dotStack.attackerObject.TryGetComponent<CharacterBody>(ref body) && MalachiteAmbuyat.TryGetCount(body, out var count)) { damage = (float)count * 1f; } dotStack.damage = damage; }; <>c.<>9__3_0 = val; obj = (object)val; } poisonAmbuyatDOTBehavior = (CustomDotBehaviour)obj; poisonAmbuyatDOTIndex = DotAPI.RegisterDotDef(poisonAmbuyatDOTDef, poisonAmbuyatDOTBehavior, (CustomDotVisual)null); } } } namespace MarixxeIsMithrix.Couleur { internal class CrystalDivergenceDamageColor { public static DamageColorIndex crystalDivergenceDamageColorIndex = (DamageColorIndex)0; public static Color crystalDivergenceDamageColor = Color32.op_Implicit(new Color32((byte)9, (byte)115, (byte)219, byte.MaxValue)); public static void Init() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) crystalDivergenceDamageColorIndex = ColorsAPI.RegisterDamageColor(crystalDivergenceDamageColor); } } internal class MalachiteAmbuyatDoTColor { public static DamageColorIndex malachiteAmbuyatDoTColorIndex = (DamageColorIndex)0; public static Color malachiteAmbuyatDoTColor = Color32.op_Implicit(new Color32((byte)15, (byte)240, (byte)15, byte.MaxValue)); public static void Init() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) malachiteAmbuyatDoTColorIndex = ColorsAPI.RegisterDamageColor(malachiteAmbuyatDoTColor); } } } namespace MarixxeIsMithrix.Buff { internal class Order { public static BuffDef order; public static void Init() { order = ScriptableObject.CreateInstance<BuffDef>(); order.canStack = true; order.isDebuff = true; order.isHidden = false; order.isCooldown = false; order.iconSprite = Assets.mainBundle.LoadAsset<Sprite>("Order"); ContentAddition.AddBuffDef(order); } } internal class PoisonAmbuyat { public static BuffDef poisonAmbuyat; public static void Init() { poisonAmbuyat = ScriptableObject.CreateInstance<BuffDef>(); poisonAmbuyat.canStack = true; poisonAmbuyat.isDebuff = true; poisonAmbuyat.isHidden = false; poisonAmbuyat.isCooldown = false; poisonAmbuyat.iconSprite = Assets.mainBundle.LoadAsset<Sprite>("Order"); ContentAddition.AddBuffDef(poisonAmbuyat); } } internal class SlowAmbuyat { public static BuffDef slowAmbuyat; public static void Init() { slowAmbuyat = ScriptableObject.CreateInstance<BuffDef>(); slowAmbuyat.canStack = true; slowAmbuyat.isDebuff = true; slowAmbuyat.isHidden = false; slowAmbuyat.isCooldown = false; slowAmbuyat.iconSprite = Assets.mainBundle.LoadAsset<Sprite>("Order"); ContentAddition.AddBuffDef(slowAmbuyat); } } }