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 KatsurosStuff v1.0.1
KatsurosStuff.dll
Decompiled 2 years ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates; using EntityStates.MinorConstruct; using HG.Reflection; using IL.RoR2.Orbs; using KatsurosStuff.Equipment; using KatsurosStuff.Items; using KatsurosStuff.VFX; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using On.EntityStates.MinorConstruct; using On.RoR2; using R2API; using R2API.Utils; using RoR2; using RoR2.CharacterAI; using RoR2.Navigation; using RoR2.Orbs; using RoR2.Projectile; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: OptIn] [assembly: TargetFramework(".NETStandard,Version=v2.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: AssemblyCompany("KatsurosStuff")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("KatsurosStuff")] [assembly: AssemblyTitle("KatsurosStuff")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: RefSafetyRules(11)] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace KatsurosStuff { [BepInPlugin("HIFU.KatsurosStuff", "KatsurosStuff", "1.0.0")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Main : BaseUnityPlugin { public const string PluginGUID = "HIFU.KatsurosStuff"; public const string PluginAuthor = "HIFU"; public const string PluginName = "KatsurosStuff"; public const string PluginVersion = "1.0.0"; public static ConfigFile config; public List<ItemBase> Items = new List<ItemBase>(); public List<EquipmentBase> Equipments = new List<EquipmentBase>(); public static ManualLogSource ModLogger; public Shader hgStandard; public static ModdedDamageType soulstealerDamageType = DamageAPI.ReserveDamageType(); public static ModdedDamageType axeDamageType = DamageAPI.ReserveDamageType(); public static AssetBundle assetBundle; public static GameObject questionMarkModel = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mystery/PickupMystery.prefab").WaitForCompletion(); public static Material questionMarkMaterial = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Mystery/matQuestionMark.mat").WaitForCompletion(); public static GameObject whiteModel; public static GameObject greenModel; public static GameObject redModel; public static GameObject voidModel; private void OwO() { } private void Awake() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_003f: 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_007e: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Expected O, but got Unknown //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) ModLogger = ((BaseUnityPlugin)this).Logger; whiteModel = CreateRecolor(new Color32((byte)217, (byte)234, (byte)234, byte.MaxValue)); greenModel = CreateRecolor(new Color32((byte)26, (byte)175, (byte)66, byte.MaxValue)); redModel = CreateRecolor(new Color32((byte)181, (byte)52, (byte)52, byte.MaxValue)); voidModel = CreateRecolor(new Color32((byte)209, (byte)73, byte.MaxValue, byte.MaxValue)); assetBundle = AssetBundle.LoadFromFile(Assembly.GetExecutingAssembly().Location.Replace("KatsurosStuff.dll", "katsurosstuff")); config = new ConfigFile(Paths.ConfigPath + "\\HIFU.KatsurosStuff.cfg", true); hgStandard = Addressables.LoadAssetAsync<Shader>((object)"RoR2/Base/Shaders/HGStandard.shader").WaitForCompletion(); Start.Init(); GlobalEventManager.OnInteractionsGlobal += GlobalEventManager_OnInteractionsGlobal; IEnumerable<Type> enumerable = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(ItemBase)) select type; foreach (Type item in enumerable) { ItemBase itemBase = (ItemBase)Activator.CreateInstance(item); if (ValidateItem(itemBase, Items)) { itemBase.Init(config); } } IEnumerable<Type> enumerable2 = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(EquipmentBase)) select type; foreach (Type item2 in enumerable2) { EquipmentBase equipmentBase = (EquipmentBase)Activator.CreateInstance(item2); if (ValidateEquipment(equipmentBase, Equipments)) { equipmentBase.Init(config); } } } private GameObject CreateRecolor(Color32 color) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) GameObject val = PrefabAPI.InstantiateClone(questionMarkModel, "Katsuro Question Mark", false); Transform val2 = val.transform.Find("mdlQuestionMark"); MeshRenderer component = ((Component)val2).GetComponent<MeshRenderer>(); Material val3 = Object.Instantiate<Material>(questionMarkMaterial); val3.SetColor("_Color", Color32.op_Implicit(color)); ((Renderer)component).material = val3; return val; } private void GlobalEventManager_OnInteractionsGlobal(Interactor interactor, IInteractable interactable, GameObject interactableObject) { if (Object.op_Implicit((Object)(object)interactor) && Object.op_Implicit((Object)(object)interactableObject) && IsBarrel(interactableObject)) { ((MonoBehaviour)interactor).StartCoroutine(Kill(interactableObject)); } } private IEnumerator Kill(GameObject gameObject) { yield return (object)new WaitForSeconds(2f); NetworkServer.Destroy(gameObject); } private bool IsBarrel(GameObject gameObject) { return Object.op_Implicit((Object)(object)gameObject.GetComponent<BarrelInteraction>()); } public bool ValidateItem(ItemBase item, List<ItemBase> itemList) { bool value = config.Bind<bool>("Item: " + item.ConfigName, "Enable Item?", true, "Should this item appear in runs?").Value; bool value2 = config.Bind<bool>("Item: " + item.ConfigName, "Blacklist Item from AI Use?", false, "Should the AI not be able to obtain this item?").Value; if (value) { itemList.Add(item); if (value2) { item.AIBlacklisted = true; } } return value; } public bool ValidateEquipment(EquipmentBase equipment, List<EquipmentBase> equipmentList) { if (config.Bind<bool>("Equipment: " + equipment.EquipmentName, "Enable Equipment?", true, "Should this equipment appear in runs?").Value) { equipmentList.Add(equipment); return true; } return false; } } } namespace KatsurosStuff.VFX { public static class Axe { public static GameObject ghostPrefab; public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: 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_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) ghostPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Saw/SawmerangGhost.prefab").WaitForCompletion(), "Axe Ghost", false); Transform transform = ghostPrefab.transform; Transform val = transform.Find("Mesh"); ((Component)val).transform.localScale = Vector3.one * 0.15f; MeshFilter component = ((Component)val).GetComponent<MeshFilter>(); component.mesh = Addressables.LoadAssetAsync<Mesh>((object)"RoR2/Base/LaserTurbine/mdlLaserDisk.fbx").WaitForCompletion(); MeshRenderer component2 = ((Component)val).GetComponent<MeshRenderer>(); ((Renderer)component2).material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Common/TrimSheets/matTrimSheetMetalGolden.mat").WaitForCompletion(); Transform val2 = val.Find("mdlVFXDonut2"); MeshRenderer component3 = ((Component)val2).GetComponent<MeshRenderer>(); Material val3 = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/EliteVoid/matVoidInfestorTrail.mat").WaitForCompletion(); ((Renderer)component3).materials[0] = val3; Transform val4 = val.Find("Trail"); TrailRenderer component4 = ((Component)val4).GetComponent<TrailRenderer>(); ((Renderer)component4).material = val3; Transform val5 = val.Find("Trail (1)"); TrailRenderer component5 = ((Component)val5).GetComponent<TrailRenderer>(); ((Renderer)component5).material = val3; } } public static class BottleOpener { public static GameObject prefab; public static void Init() { //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) prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/OmniExplosionVFXQuick.prefab").WaitForCompletion(), "Bottle Opener Impact", false); EffectComponent component = prefab.GetComponent<EffectComponent>(); component.applyScale = true; component.soundName = "Play_UI_menuHover"; ContentAddition.AddEffect(prefab); } } public static class BoxOfLight { public static GameObject laserTracer; public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_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_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) laserTracer = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidSurvivor/VoidSurvivorBeamTracer.prefab").WaitForCompletion(), "Cybernetic Eye Tracer", false); ((Component)laserTracer.transform.GetChild(0)).gameObject.SetActive(false); ((Component)laserTracer.transform.GetChild(1)).gameObject.SetActive(false); LineRenderer component = laserTracer.GetComponent<LineRenderer>(); component.widthMultiplier = 0.15f; component.numCapVertices = 10; Material val = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/VoidSurvivor/matVoidSurvivorBeamTrail.mat").WaitForCompletion()); val.SetTexture("_RemapTex", (Texture)(object)Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Common/ColorRamps/texRampWhiteAlphaOnly.png").WaitForCompletion()); ((Renderer)component).material = val; AnimateShaderAlpha component2 = laserTracer.GetComponent<AnimateShaderAlpha>(); component2.timeMax = 0.4f; ContentAddition.AddEffect(laserTracer); } } public static class CyberneticEye { public static Material tryProcMat; public static GameObject laserTracer; public static GameObject explosion; public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //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_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) tryProcMat = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Huntress/matHuntressFlashExpanded.mat").WaitForCompletion()); tryProcMat.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)61, (byte)135, byte.MaxValue, (byte)110))); laserTracer = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidSurvivor/VoidSurvivorBeamTracer.prefab").WaitForCompletion(), "Cybernetic Eye Tracer", false); ((Component)laserTracer.transform.GetChild(0)).gameObject.SetActive(false); ((Component)laserTracer.transform.GetChild(1)).gameObject.SetActive(false); LineRenderer component = laserTracer.GetComponent<LineRenderer>(); component.widthMultiplier = 0.66f; component.numCapVertices = 10; Material val = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/VoidSurvivor/matVoidSurvivorBeamTrail.mat").WaitForCompletion()); val.SetTexture("_RemapTex", (Texture)(object)Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Common/ColorRamps/texRampLunarWardDecal.png").WaitForCompletion()); val.SetFloat("_AlphaBias", 0.6321731f); val.SetTextureScale("_Cloud1Tex", new Vector2(10f, 1f)); ((Renderer)component).material = val; AnimateShaderAlpha component2 = laserTracer.GetComponent<AnimateShaderAlpha>(); component2.timeMax = 1f; ContentAddition.AddEffect(laserTracer); explosion = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarWisp/LunarWispTrackingBombExplosion.prefab").WaitForCompletion(), "Cybernetic Eye Explosion VFX", false); ContentAddition.AddEffect(explosion); } } public static class DropOfSun { public static Material explosionMat; public static GameObject gravSphere; public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_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_004d: 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) explosionMat = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Huntress/matHuntressFlashExpanded.mat").WaitForCompletion()); explosionMat.SetColor("_TintColor", Color32.op_Implicit(new Color32(byte.MaxValue, (byte)232, (byte)132, (byte)110))); gravSphere = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Grandparent/GrandparentGravSphere.prefab").WaitForCompletion(), "Drop of Sun VFX"); ProjectileSimple component = gravSphere.GetComponent<ProjectileSimple>(); component.desiredForwardSpeed = 0f; component.lifetime = 2f; Object.Destroy((Object)(object)gravSphere.GetComponent<RadialForce>()); PrefabAPI.RegisterNetworkPrefab(gravSphere); } } public static class PartyInvitation { public static GameObject prefab; public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0048: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/NearbyDamageBonus/NearbyDamageBonusIndicator.prefab").WaitForCompletion(), "Party Invitation Visual", true); Transform val = prefab.transform.Find("Radius, Spherical"); val.localScale = new Vector3(26f, 26f, 26f); Material val2 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/NearbyDamageBonus/matNearbyDamageBonusRangeIndicator.mat").WaitForCompletion()); Texture2D val3 = Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Common/texCloudWaterRipples.png").WaitForCompletion(); val2.SetTexture("_MainTex", (Texture)(object)val3); val2.SetTexture("_Cloud1Tex", (Texture)(object)val3); val2.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)216, (byte)95, (byte)38, (byte)200))); ((Renderer)((Component)val).GetComponent<MeshRenderer>()).material = val2; PrefabAPI.RegisterNetworkPrefab(prefab); } } public static class Preparations { public static GameObject prefab; public static void Init() { //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) prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/OmniExplosionVFXQuick.prefab").WaitForCompletion(), "Preparations Chest Impact", false); EffectComponent component = prefab.GetComponent<EffectComponent>(); component.applyScale = true; component.soundName = "Play_UI_podImpact"; ContentAddition.AddEffect(prefab); } } public static class Sapling { public static GameObject impact; public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: 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) impact = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Scav/ScavSackExplosion.prefab").WaitForCompletion(), "Sapling Thqwib Explosion VFX", false); Transform transform = impact.transform; for (int i = 0; i < transform.childCount; i++) { Transform child = transform.GetChild(i); ((Component)child).transform.localScale = Vector3.one * 0.3f; } ContentAddition.AddEffect(impact); } } public static class SelfDestructionDevice { public static GameObject explosionVFX = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/BleedOnHitAndExplode/BleedOnHitAndExplode_Explosion.prefab").WaitForCompletion(); public static GameObject explosionVFX2 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/QuestVolatileBattery/VolatileBatteryExplosion.prefab").WaitForCompletion(); public static Material deathMat; public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) deathMat = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Huntress/matHuntressFlashExpanded.mat").WaitForCompletion()); deathMat.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)186, (byte)0, (byte)0, (byte)150))); } } public static class Soulstealer { public static GameObject prefab; public static void Init() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_010c: 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_013c: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_0223: 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: Expected O, but got Unknown //IL_0241: Unknown result type (might be due to invalid IL or missing references) //IL_0246: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_025d: Unknown result type (might be due to invalid IL or missing references) //IL_027e: Unknown result type (might be due to invalid IL or missing references) //IL_0283: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Unknown result type (might be due to invalid IL or missing references) //IL_0292: Unknown result type (might be due to invalid IL or missing references) //IL_02a7: Unknown result type (might be due to invalid IL or missing references) //IL_02ac: Unknown result type (might be due to invalid IL or missing references) //IL_02b6: Unknown result type (might be due to invalid IL or missing references) //IL_02bb: Unknown result type (might be due to invalid IL or missing references) //IL_02d8: Unknown result type (might be due to invalid IL or missing references) //IL_0318: Unknown result type (might be due to invalid IL or missing references) //IL_031d: Unknown result type (might be due to invalid IL or missing references) //IL_035d: Unknown result type (might be due to invalid IL or missing references) //IL_0362: Unknown result type (might be due to invalid IL or missing references) prefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidSurvivor/VoidSurvivorMegaBlasterBigGhost.prefab").WaitForCompletion(), "Soulstealer Ghost", false); Texture2D val = Main.assetBundle.LoadAsset<Texture2D>("texRampSoulstealer.png"); Transform transform = prefab.transform; Light component = ((Component)transform.Find("Point Light")).GetComponent<Light>(); component.color = Color32.op_Implicit(new Color32((byte)18, byte.MaxValue, (byte)213, byte.MaxValue)); Transform val2 = transform.Find("Rotator"); Transform val3 = val2.Find("Trail"); TrailRenderer component2 = ((Component)val3).GetComponent<TrailRenderer>(); Material val4 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/VoidSurvivor/matVoidSurvivorMegaBlasterTrail.mat").WaitForCompletion()); val4.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)165, (byte)236, (byte)206, byte.MaxValue))); ((Renderer)component2).material = val4; Transform val5 = val2.Find("Scaler"); Transform val6 = val5.Find("Sphere"); MeshRenderer component3 = ((Component)val6).GetComponent<MeshRenderer>(); Material val7 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/VoidSurvivor/matVoidSurvivorBlasterSphere.mat").WaitForCompletion()); val7.SetColor("_Color", new Color(0.5761207f, 8.142507f, 0.5761207f, 1f)); Material val8 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/VoidSurvivor/matVoidSurvivorBlasterSphereOverlay1.mat").WaitForCompletion()); val8.SetTexture("_RemapTex", (Texture)(object)val); Material[] materials = ((Renderer)component3).materials; materials[0] = val7; materials[1] = val8; ((Renderer)component3).materials = materials; Transform val9 = val5.Find("Particles"); Transform val10 = val9.Find("BrightFlash"); MainModule main = ((Component)val10).GetComponent<ParticleSystem>().main; MinMaxGradient startColor = ((MainModule)(ref main)).startColor; ((MinMaxGradient)(ref startColor)).color = Color.white; ParticleSystemRenderer component4 = ((Component)val10).GetComponent<ParticleSystemRenderer>(); Material val11 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/VoidSurvivor/matVoidSurvivorBlasterCore.mat").WaitForCompletion()); val11.SetTexture("_RemapTex", (Texture)(object)val); ((Renderer)component4).material = val11; ParticleSystem component5 = ((Component)val9.Find("SoftGlow")).GetComponent<ParticleSystem>(); ColorOverLifetimeModule colorOverLifetime = component5.colorOverLifetime; Gradient val12 = new Gradient(); GradientAlphaKey[] alphaKeys = (GradientAlphaKey[])(object)new GradientAlphaKey[2] { new GradientAlphaKey(0.85f, 1f), new GradientAlphaKey(1f, 0f) }; GradientColorKey[] colorKeys = (GradientColorKey[])(object)new GradientColorKey[2] { new GradientColorKey(Color32.op_Implicit(new Color32((byte)57, byte.MaxValue, (byte)157, byte.MaxValue)), 0f), new GradientColorKey(Color32.op_Implicit(new Color32((byte)0, (byte)142, (byte)119, byte.MaxValue)), 0f) }; val12.alphaKeys = alphaKeys; val12.colorKeys = colorKeys; ((ColorOverLifetimeModule)(ref colorOverLifetime)).color = MinMaxGradient.op_Implicit(val12); ParticleSystemRenderer component6 = ((Component)val9.Find("Fire")).GetComponent<ParticleSystemRenderer>(); ((Renderer)component6).material = val11; ParticleSystemRenderer component7 = ((Component)val9.Find("Base")).GetComponent<ParticleSystemRenderer>(); Material val13 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/VoidSurvivor/matVoidSurvivorLightning.mat").WaitForCompletion()); val13.SetTexture("_RemapTex", (Texture)(object)val); ((Renderer)component7).material = val13; ParticleSystemRenderer component8 = ((Component)val9.Find("Base (1)")).GetComponent<ParticleSystemRenderer>(); Material val14 = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/VoidSurvivor/matVoidSurvivorMuzzleflash1.mat").WaitForCompletion()); val14.SetTexture("_RemapTex", (Texture)(object)val); ((Renderer)component8).material = val14; ParticleSystemRenderer component9 = ((Component)val9.Find("Sparks, Misc")).GetComponent<ParticleSystemRenderer>(); ((Renderer)component9).material = val11; } } public static class Start { public static void Init() { Axe.Init(); BottleOpener.Init(); BoxOfLight.Init(); CyberneticEye.Init(); DropOfSun.Init(); PartyInvitation.Init(); Preparations.Init(); Sapling.Init(); SelfDestructionDevice.Init(); Soulstealer.Init(); } } } namespace KatsurosStuff.Items { public abstract class ItemBase<T> : ItemBase where T : ItemBase<T> { public static T instance { get; private set; } public ItemBase() { if (instance != null) { throw new InvalidOperationException("Singleton class \"" + typeof(T).Name + "\" inheriting ItemBase was instantiated twice"); } instance = this as T; } } public abstract class ItemBase { public ItemDef ItemDef; public static Sprite questionMarkIcon = Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/MiscIcons/texMysteryIcon.png").WaitForCompletion(); public static Sprite whiteIcon = Main.assetBundle.LoadAsset<Sprite>("texWhiteIcon.png"); public static Sprite greenIcon = Main.assetBundle.LoadAsset<Sprite>("texGreenIcon.png"); public static Sprite redIcon = Main.assetBundle.LoadAsset<Sprite>("texRedIcon.png"); public static Sprite voidIcon = Main.assetBundle.LoadAsset<Sprite>("texVoidIcon.png"); public abstract string ItemName { get; } public abstract string ConfigName { get; } public abstract string ItemLangTokenName { get; } public abstract string ItemPickupDesc { get; } public abstract string ItemFullDescription { get; } public abstract string ItemLore { get; } public abstract ItemTier Tier { get; } public virtual ItemTag[] ItemTags { get; set; } = (ItemTag[])(object)new ItemTag[0]; public abstract GameObject ItemModel { get; } public abstract Sprite ItemIcon { get; } public virtual bool CanRemove { get; } = true; public virtual bool AIBlacklisted { get; set; } = false; public abstract void Init(ConfigFile config); public virtual void CreateConfig(ConfigFile config) { } protected virtual void CreateLang() { LanguageAPI.Add("ITEM_KATSURO_" + ItemLangTokenName + "_NAME", ItemName); LanguageAPI.Add("ITEM_KATSURO_" + ItemLangTokenName + "_PICKUP", ItemPickupDesc); LanguageAPI.Add("ITEM_KATSURO_" + ItemLangTokenName + "_DESCRIPTION", ItemFullDescription); LanguageAPI.Add("ITEM_KATSURO_" + ItemLangTokenName + "_LORE", ItemLore); } public abstract ItemDisplayRuleDict CreateItemDisplayRules(); protected void CreateItem() { //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Expected I4, but got Unknown //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Expected I4, but got Unknown //IL_0275: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Expected O, but got Unknown if (AIBlacklisted) { ItemTags = new List<ItemTag>(ItemTags) { (ItemTag)4 }.ToArray(); } ItemDef = ScriptableObject.CreateInstance<ItemDef>(); ((Object)ItemDef).name = "ITEM_KATSURO_" + ItemLangTokenName; ItemDef.nameToken = "ITEM_KATSURO_" + ItemLangTokenName + "_NAME"; ItemDef.pickupToken = "ITEM_KATSURO_" + ItemLangTokenName + "_PICKUP"; ItemDef.descriptionToken = "ITEM_KATSURO_" + ItemLangTokenName + "_DESCRIPTION"; ItemDef.loreToken = "ITEM_KATSURO_" + ItemLangTokenName + "_LORE"; ItemDef.deprecatedTier = Tier; ItemTier deprecatedTier = ItemDef.deprecatedTier; if (1 == 0) { } GameObject val = (GameObject)((int)deprecatedTier switch { 0 => Main.whiteModel, 1 => Main.greenModel, 2 => Main.redModel, 6 => Main.voidModel, 7 => Main.voidModel, 8 => Main.voidModel, 9 => Main.voidModel, _ => Main.questionMarkModel, }); if (1 == 0) { } GameObject val2 = val; ItemDef.pickupModelPrefab = ItemModel ?? val2; ItemTier deprecatedTier2 = ItemDef.deprecatedTier; if (1 == 0) { } Sprite val3 = (Sprite)((int)deprecatedTier2 switch { 0 => whiteIcon, 1 => greenIcon, 2 => redIcon, 6 => voidIcon, 7 => voidIcon, 8 => voidIcon, 9 => voidIcon, _ => questionMarkIcon, }); if (1 == 0) { } Sprite val4 = val3; ItemDef.pickupIconSprite = ItemIcon ?? val4; ItemDef.hidden = false; ItemDef.canRemove = CanRemove; if (ItemTags.Length != 0) { ItemDef.tags = ItemTags; } ItemAPI.Add(new CustomItem(ItemDef, CreateItemDisplayRules())); } public virtual void Hooks() { } public int GetCount(CharacterBody body) { if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.inventory)) { return 0; } return body.inventory.GetItemCount(ItemDef); } public int GetCount(CharacterMaster master) { if (!Object.op_Implicit((Object)(object)master) || !Object.op_Implicit((Object)(object)master.inventory)) { return 0; } return master.inventory.GetItemCount(ItemDef); } public int GetCountSpecific(CharacterBody body, ItemDef itemDef) { if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.inventory)) { return 0; } return body.inventory.GetItemCount(itemDef); } } public static class Utils { public static bool IsActualInteractable(GameObject interactable) { if (!Object.op_Implicit((Object)(object)interactable)) { return false; } InteractionProcFilter component = interactable.GetComponent<InteractionProcFilter>(); if (Object.op_Implicit((Object)(object)component)) { return component.shouldAllowOnInteractionBeginProc; } if (Object.op_Implicit((Object)(object)interactable.GetComponent<GenericPickupController>())) { return false; } if (Object.op_Implicit((Object)(object)interactable.GetComponent<VehicleSeat>())) { return false; } if (Object.op_Implicit((Object)(object)interactable.GetComponent<NetworkUIPromptController>())) { return false; } return true; } } } namespace KatsurosStuff.Items.White { public class BottleOpener : ItemBase<BottleOpener> { public static SpawnCard barrelSpawnCard = Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/Barrel1/iscBarrel1.asset").WaitForCompletion(); public override string ItemName => "Bottle Opener"; public override string ConfigName => "Bottle Opener"; public override string ItemLangTokenName => "BOTTLE_OPENER"; public override string ItemPickupDesc => "Activating your equipment also summons barrels."; public override string ItemFullDescription => "Activating your Equipment also summons <style=cIsUtility>1</style> <style=cStack>(+1 per stack)</style> <style=cIsUtility>barrel</style> per <style=cIsUtility>20s</style> of your <style=cIsUtility>base equipment cooldown</style>."; public override string ItemLore => ""; public override ItemTier Tier => (ItemTier)0; public override GameObject ItemModel => null; public override Sprite ItemIcon => null; public override bool AIBlacklisted => true; public override void Init(ConfigFile config) { CreateConfig(config); CreateLang(); CreateItem(); Hooks(); } public override void CreateConfig(ConfigFile config) { } public override ItemDisplayRuleDict CreateItemDisplayRules() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown return new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); } public override void Hooks() { EquipmentSlot.onServerEquipmentActivated += EquipmentSlot_onServerEquipmentActivated; } private void EquipmentSlot_onServerEquipmentActivated(EquipmentSlot slot, EquipmentIndex index) { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) CharacterBody characterBody = slot.characterBody; if (!Object.op_Implicit((Object)(object)characterBody)) { return; } Inventory inventory = characterBody.inventory; if (!Object.op_Implicit((Object)(object)inventory)) { return; } int itemCountForTeam = Util.GetItemCountForTeam((TeamIndex)1, ItemBase<BottleOpener>.instance.ItemDef.itemIndex, true, true); if (itemCountForTeam <= 0) { return; } DirectorCore val = DirectorCore.instance; if (Object.op_Implicit((Object)(object)val)) { EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(index); if (Object.op_Implicit((Object)(object)equipmentDef)) { float cooldown = equipmentDef.cooldown; ((MonoBehaviour)slot).StartCoroutine(SpawnBarrels(val, itemCountForTeam, cooldown, slot)); } } } public IEnumerator SpawnBarrels(DirectorCore directorCore, int stack, float cooldown, EquipmentSlot slot) { float barrels = cooldown / 20f * (float)stack; for (int i = 0; (float)i < barrels; i++) { yield return (object)new WaitForSeconds(0.125f); DirectorPlacementRule directorPlacementRule = new DirectorPlacementRule { maxDistance = 25f + 2f * (float)stack, minDistance = 7f, placementMode = (PlacementMode)1, position = ((Component)slot).transform.position, preventOverhead = false }; GameObject gameObject = directorCore.TrySpawnObject(new DirectorSpawnRequest(barrelSpawnCard, directorPlacementRule, Run.instance.treasureRng)); if (Object.op_Implicit((Object)(object)gameObject)) { EffectManager.SpawnEffect(KatsurosStuff.VFX.BottleOpener.prefab, new EffectData { origin = gameObject.transform.position, scale = 1.5f }, true); } } yield return null; } } public class BoxOfLight : ItemBase<BoxOfLight> { public override string ItemName => "Box of Light"; public override string ConfigName => "Box of Light"; public override string ItemLangTokenName => "BOX_OF_LIGHT"; public override string ItemPickupDesc => "Activating an interactable flashes light at exposed enemies."; public override string ItemFullDescription => "Activating an interactable <style=cIsDamage>flashes light</style> at every exposed enemy for <style=cIsDamage>300%</style> base damage, <style=cIsUtility>stuns</style> them for <style=cIsUtility>1s</style> and gives <style=cIsUtility>$1</style> <style=cStack>(+$1 per stack)</style>. <style=cIsUtility>Scales over time</style>."; public override string ItemLore => ""; public override ItemTier Tier => (ItemTier)0; public override GameObject ItemModel => null; public override Sprite ItemIcon => null; public override bool AIBlacklisted => true; public override void Init(ConfigFile config) { CreateConfig(config); CreateLang(); CreateItem(); Hooks(); } public override void CreateConfig(ConfigFile config) { } public override ItemDisplayRuleDict CreateItemDisplayRules() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown return new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); } public override void Hooks() { GlobalEventManager.OnInteractionsGlobal += GlobalEventManager_OnInteractionsGlobal; CharacterBody.onBodyInventoryChangedGlobal += CharacterBody_onBodyInventoryChangedGlobal; } private void CharacterBody_onBodyInventoryChangedGlobal(CharacterBody body) { Inventory inventory = body.inventory; if (Object.op_Implicit((Object)(object)inventory)) { int itemCount = inventory.GetItemCount(ItemBase<BoxOfLight>.instance.ItemDef); if (itemCount > 0 && (Object)(object)((Component)body).GetComponent<BoxOfLightController>() == (Object)null) { ((Component)body).gameObject.AddComponent<BoxOfLightController>(); } } } private void GlobalEventManager_OnInteractionsGlobal(Interactor interactor, IInteractable interactable, GameObject interactableObject) { if (!Object.op_Implicit((Object)(object)interactableObject) || !Utils.IsActualInteractable(interactableObject) || !Object.op_Implicit((Object)(object)interactor)) { return; } CharacterBody component = ((Component)interactor).GetComponent<CharacterBody>(); if (!Object.op_Implicit((Object)(object)component)) { return; } Inventory inventory = component.inventory; if (Object.op_Implicit((Object)(object)inventory)) { int itemCount = inventory.GetItemCount(ItemBase<BoxOfLight>.instance.ItemDef); if (itemCount > 0) { ((MonoBehaviour)interactor).StartCoroutine(FlashLight(component, itemCount)); } } } private IEnumerator FlashLight(CharacterBody body, int stack) { yield return (object)new WaitForSeconds(0.2f); BoxOfLightController boxOfLightController = ((Component)body).GetComponent<BoxOfLightController>(); boxOfLightController.Proc(stack); yield return null; } } public class BoxOfLightController : MonoBehaviour { public CharacterBody body; public CharacterMaster master; public CharacterLosTracker losTracker; public void Start() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown body = ((Component)this).GetComponent<CharacterBody>(); master = body.master; losTracker = new CharacterLosTracker { enabled = true }; } public void FixedUpdate() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) losTracker.origin = ((Component)this).transform.position; losTracker.Step(); } public void Proc(int stack) { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Invalid comparison between Unknown and I4 //IL_007a: 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) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Expected O, but got Unknown //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0113: 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_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Expected O, but got Unknown ReadOnlyCollection<CharacterBody> readOnlyInstancesList = CharacterBody.readOnlyInstancesList; bool flag = false; uint difficultyScaledCost = (uint)Run.instance.GetDifficultyScaledCost(stack); for (int i = 0; i < readOnlyInstancesList.Count; i++) { CharacterBody val = readOnlyInstancesList[i]; if (!Object.op_Implicit((Object)(object)val.teamComponent) || (int)val.teamComponent.teamIndex == 1) { continue; } if (losTracker.CheckBodyHasLos(val)) { flag = true; EffectManager.SpawnEffect(KatsurosStuff.VFX.BoxOfLight.laserTracer, new EffectData { start = body.corePosition, origin = val.corePosition }, true); if (NetworkServer.active) { DamageInfo val2 = new DamageInfo { attacker = ((Component)body).gameObject, inflictor = ((Component)body).gameObject, crit = body.RollCrit(), damage = body.damage * 3f, damageColorIndex = (DamageColorIndex)3, damageType = (DamageType)32, force = Vector3.zero, position = val.corePosition, procCoefficient = 0.2f }; HealthComponent healthComponent = val.healthComponent; if (healthComponent != null) { healthComponent.TakeDamage(val2); } } master.GiveMoney(difficultyScaledCost); } if (flag) { Util.PlaySound("Play_commando_M2_grenade_explo", ((Component)body).gameObject); } } } public void OnDestroy() { losTracker.enabled = false; losTracker.Dispose(); losTracker = null; } } public class LeafBlade : ItemBase<LeafBlade> { public static BuffDef cooldownBuff; public static GameObject effect; public override string ItemName => "Leaf Blade"; public override string ConfigName => "Leaf Blade"; public override string ItemLangTokenName => "LEAF_BLADE"; public override string ItemPickupDesc => "Nearby enemies get slashed with a sword that heals you."; public override string ItemFullDescription => "Nearby enemies get <style=cIsDamage>slashed</style> with a <style=cIsDamage>sword</style> that <style=cIsHealing>heals</style> you for <style=cIsHealing>2%</style> <style=cStack>(+2% per stack)</style> of <style=cIsHealing>maximum health</style> and deals <style=cIsDamage>200%</style> <style=cStack>(+200% per stack)</style> base damage. The <style=cIsDamage>sword</style> cannot hit the same enemy twice for <style=cIsUtility>5</style> seconds."; public override string ItemLore => ""; public override ItemTier Tier => (ItemTier)0; public override GameObject ItemModel => null; public override Sprite ItemIcon => null; public override bool AIBlacklisted => true; public override void Init(ConfigFile config) { CreateConfig(config); CreateLang(); CreateItem(); Hooks(); } public override void CreateConfig(ConfigFile config) { } public override ItemDisplayRuleDict CreateItemDisplayRules() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown return new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); } public override void Hooks() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0078: 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_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: 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) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_0195: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) effect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/Assassin2/AssassinSlash.prefab").WaitForCompletion(), "Leaf Blade Effect", false); Object.Destroy((Object)(object)effect.GetComponent<ScaleParticleSystemDuration>()); EffectComponent component = effect.GetComponent<EffectComponent>(); component.applyScale = true; Transform child = effect.transform.GetChild(0); ParticleSystem component2 = ((Component)child).GetComponent<ParticleSystem>(); MainModule main = component2.main; ((MainModule)(ref main)).startLifetime = MinMaxCurve.op_Implicit(0.2f); RotationOverLifetimeModule rotationOverLifetime = component2.rotationOverLifetime; ((RotationOverLifetimeModule)(ref rotationOverLifetime)).zMultiplier = 1.1f; ParticleSystemRenderer component3 = ((Component)child).GetComponent<ParticleSystemRenderer>(); Material val = Object.Instantiate<Material>(Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Merc/matMercSwipe2.mat").WaitForCompletion()); val.SetColor("_TintColor", Color32.op_Implicit(new Color32((byte)26, (byte)58, (byte)26, byte.MaxValue))); ((Renderer)component3).material = val; ParticleSystem component4 = ((Component)effect.transform.GetChild(1)).GetComponent<ParticleSystem>(); MainModule main2 = component4.main; ((MainModule)(ref main2)).startLifetime = MinMaxCurve.op_Implicit(0.2f); RotationOverLifetimeModule rotationOverLifetime2 = component4.rotationOverLifetime; ((RotationOverLifetimeModule)(ref rotationOverLifetime2)).zMultiplier = 1.13f; ContentAddition.AddEffect(effect); cooldownBuff = ScriptableObject.CreateInstance<BuffDef>(); ((Object)cooldownBuff).name = "Leaf Blade Cooldown"; cooldownBuff.isHidden = false; cooldownBuff.isDebuff = false; cooldownBuff.isCooldown = true; cooldownBuff.buffColor = new Color(0.4014f, 0.4014f, 0.4014f, 1f); cooldownBuff.iconSprite = Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/Base/LunarSkillReplacements/bdLunarDetonationCharge.asset").WaitForCompletion().iconSprite; ContentAddition.AddBuffDef(cooldownBuff); CharacterBody.onBodyInventoryChangedGlobal += CharacterBody_onBodyInventoryChangedGlobal; } private void CharacterBody_onBodyInventoryChangedGlobal(CharacterBody characterBody) { if (NetworkServer.active) { characterBody.AddItemBehavior<LeafBladeController>(characterBody.inventory.GetItemCount(ItemBase<LeafBlade>.instance.ItemDef)); } } } public class LeafBladeController : ItemBehavior { public float healing = 0.025f; public float damage = 2f; public OverlapAttack overlapAttack; public ModelLocator modelLocator; public Transform modelTransform; public GameObject leafBladeObject; public HitBoxGroup hitBoxGroup; public HitBox hitBox; public float timer; public float interval = 0.2f; public List<HurtBox> hitList = new List<HurtBox>(); public bool hasFired = false; public void Start() { //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Expected O, but got Unknown //IL_00ea: Unknown result type (might be due to invalid IL or missing references) healing = 0.025f * (float)base.stack; damage = 2f * (float)base.stack; Main.ModLogger.LogError((object)("stack is " + base.stack)); Main.ModLogger.LogError((object)("damage is " + damage)); modelLocator = ((Component)this).GetComponent<ModelLocator>(); ModelLocator obj = modelLocator; modelTransform = ((obj != null) ? obj.modelTransform : null); if (Object.op_Implicit((Object)(object)modelTransform) && (Object)(object)leafBladeObject == (Object)null) { leafBladeObject = new GameObject("Leaf Blade Object") { layer = LayerIndex.defaultLayer.intVal }; leafBladeObject.transform.localScale = new Vector3(9f, 6f, 9f); hitBox = leafBladeObject.AddComponent<HitBox>(); hitBoxGroup = leafBladeObject.AddComponent<HitBoxGroup>(); hitBoxGroup.groupName = "Leaf Blade HitBox Group"; hitBoxGroup.hitBoxes = (HitBox[])(object)new HitBox[1] { hitBox }; } } public void FixedUpdate() { timer += Time.fixedDeltaTime; if (timer >= interval) { healing = 0.025f * (float)base.stack; damage = 2f * (float)base.stack; ((MonoBehaviour)this).StartCoroutine(Fire()); timer = 0f; } } public IEnumerator Fire() { overlapAttack = new OverlapAttack { attacker = ((Component)this).gameObject, inflictor = ((Component)this).gameObject, teamIndex = TeamComponent.GetObjectTeam(((Component)this).gameObject), damage = 0f, forceVector = Vector3.zero, pushAwayForce = 0f, attackerFiltering = (AttackerFiltering)2, procCoefficient = 0f, isCrit = base.body.RollCrit(), damageType = (DamageType)2048 }; if (Object.op_Implicit((Object)(object)leafBladeObject) && Object.op_Implicit((Object)(object)base.body.inputBank)) { leafBladeObject.transform.forward = base.body.inputBank.aimDirection; leafBladeObject.transform.position = modelTransform.position; overlapAttack.hitBoxGroup = leafBladeObject.GetComponent<HitBoxGroup>(); } overlapAttack.Fire(hitList); for (int i = 0; i < hitList.Count; i++) { HurtBox hit = hitList[i]; HealthComponent hc = hit.healthComponent; CharacterBody victimBody = hc.body; if (!victimBody.HasBuff(LeafBlade.cooldownBuff)) { if (NetworkServer.active) { DamageInfo info = new DamageInfo { attacker = ((Component)this).gameObject, crit = overlapAttack.isCrit, procCoefficient = 0f, damage = base.body.damage * damage, force = Vector3.zero, position = victimBody.corePosition, inflictor = ((Component)this).gameObject, damageType = (DamageType)0 }; hc.TakeDamage(info); base.body.healthComponent.HealFraction(healing, default(ProcChainMask)); } if (!hasFired) { EffectData data = new EffectData { scale = 1.3f, origin = base.body.corePosition, rotation = Quaternion.identity }; EffectManager.SpawnEffect(LeafBlade.effect, data, true); Util.PlaySound("Play_acrid_m1_slash", ((Component)this).gameObject); hasFired = true; } victimBody.AddTimedBuffAuthority(LeafBlade.cooldownBuff.buffIndex, 5f); } } hitList.Clear(); hasFired = false; yield return null; } } public class PartyInvitation : ItemBase<PartyInvitation> { public static GameObject fireworksPrefab; public static BuffDef counter; public static BuffDef counted; public override string ItemName => "Party Invitation"; public override string ConfigName => "Party Invitation"; public override string ItemLangTokenName => "PARTY_INVITATION"; public override string ItemPickupDesc => "Invite 10 friends for a party. The party starts when everyone is invited."; public override string ItemFullDescription => "Each enemy within <style=cIsDamage>20m</style> accepts <style=cIsDamage>1 invitation</style>. Upon reaching <style=cIsDamage>10 invitations</style>, fire <style=cIsDamage>10</style> <style=cStack>(+10 per stack)</style> fireworks for <style=cIsDamage>350%</style> base damage each. Recharges every <style=cIsUtility>10</style> seconds."; public override string ItemLore => ""; public override ItemTier Tier => (ItemTier)0; public override GameObject ItemModel => null; public override Sprite ItemIcon => null; public override bool AIBlacklisted => true; public override void Init(ConfigFile config) { CreateConfig(config); CreateLang(); CreateItem(); Hooks(); } public override void CreateConfig(ConfigFile config) { } public override ItemDisplayRuleDict CreateItemDisplayRules() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown return new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); } public override void Hooks() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) fireworksPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Firework/FireworkProjectile.prefab").WaitForCompletion(), "Party Invitation Firework"); MissileController component = fireworksPrefab.GetComponent<MissileController>(); component.acceleration = 3f; component.giveupTimer = 30f; component.deathTimer = 30f; component.turbulence = 0f; component.maxSeekDistance = 10000f; PrefabAPI.RegisterNetworkPrefab(fireworksPrefab); counter = ScriptableObject.CreateInstance<BuffDef>(); counter.isDebuff = false; counter.isCooldown = false; counter.canStack = true; counter.buffColor = Color32.op_Implicit(new Color32((byte)216, (byte)95, (byte)38, byte.MaxValue)); counter.iconSprite = Addressables.LoadAssetAsync<BuffDef>((object)"RoR2/Base/LunarSkillReplacements/bdLunarDetonationCharge.asset").WaitForCompletion().iconSprite; ((Object)counter).name = "Party Invitation Enemy Counter"; ContentAddition.AddBuffDef(counter); counted = ScriptableObject.CreateInstance<BuffDef>(); counted.isHidden = true; counted.isDebuff = false; counted.isCooldown = false; counted.canStack = false; ((Object)counted).name = "Party Invitation Enemy Counted"; ContentAddition.AddBuffDef(counted); CharacterBody.onBodyInventoryChangedGlobal += CharacterBody_onBodyInventoryChangedGlobal; } private void CharacterBody_onBodyInventoryChangedGlobal(CharacterBody characterBody) { if (NetworkServer.active) { characterBody.AddItemBehavior<PartyInvitationController>(characterBody.inventory.GetItemCount(ItemBase<PartyInvitation>.instance.ItemDef)); } } } public class PartyInvitationController : ItemBehavior { public float cooldownCountDown = 10f; public float refreshTimer; public float refreshInterval = 0.05f; public float fireInterval = 0.1f; public int fireworksCount; public float radiusSquared = 400f; public float distance = 20f; public TeamIndex ownerIndex; public GameObject radiusIndicator; public int count = 0; private bool enableRadiusIndicator { get { return Object.op_Implicit((Object)(object)radiusIndicator); } set { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) if (enableRadiusIndicator != value) { if (value) { radiusIndicator = Object.Instantiate<GameObject>(KatsurosStuff.VFX.PartyInvitation.prefab, base.body.corePosition, Quaternion.identity); radiusIndicator.GetComponent<NetworkedBodyAttachment>().AttachToGameObjectAndSpawn(((Component)this).gameObject, (string)null); } else { Object.Destroy((Object)(object)radiusIndicator); radiusIndicator = null; } } } } private void Start() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: 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_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) ownerIndex = base.body.teamComponent.teamIndex; enableRadiusIndicator = true; Transform child = radiusIndicator.transform.GetChild(1); child.localScale = Vector3.one * distance * 2f; if (base.stack > 0) { fireworksCount = base.stack; } else { fireworksCount = 0; } } private void FixedUpdate() { //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Invalid comparison between Unknown and I4 //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Invalid comparison between Unknown and I4 //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: 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) cooldownCountDown -= Time.fixedDeltaTime; if (!(cooldownCountDown <= 0f)) { return; } enableRadiusIndicator = true; refreshTimer += Time.fixedDeltaTime; if (!(refreshTimer >= refreshInterval)) { return; } TeamIndex val = (TeamIndex)0; while ((int)val < 5) { if (val != ownerIndex && (int)val > 0) { foreach (TeamComponent teamMember in TeamComponent.GetTeamMembers(val)) { Vector3 position = ((Component)teamMember).transform.position; Vector3 corePosition = base.body.corePosition; CharacterBody body = teamMember.body; Vector3 val2 = position - corePosition; if (((Vector3)(ref val2)).sqrMagnitude <= radiusSquared && !body.HasBuff(PartyInvitation.counted)) { count += ((!body.isBoss) ? 1 : 10); Util.PlaySound("Play_engi_M1_chargeStock", ((Component)this).gameObject); if (NetworkServer.active) { body.AddBuff(PartyInvitation.counted); base.body.AddBuff(PartyInvitation.counter); } } } } val = (TeamIndex)(sbyte)(val + 1); } if (count >= 10) { count = 0; if (NetworkServer.active) { base.body.SetBuffCount(PartyInvitation.counter.buffIndex, 0); } ((MonoBehaviour)this).StartCoroutine(Fire(10)); } refreshTimer = 0f; } public IEnumerator Fire(int fireworkCount) { cooldownCountDown = 10f; for (int i = 0; i < CharacterBody.readOnlyInstancesList.Count; i++) { CharacterBody body = CharacterBody.readOnlyInstancesList[i]; if (body.HasBuff(PartyInvitation.counted)) { body.RemoveBuff(PartyInvitation.counted); } } yield return (object)new WaitForSeconds(0.5f); enableRadiusIndicator = false; if (Object.op_Implicit((Object)(object)base.body)) { for (int j = 0; j < fireworkCount * base.stack; j++) { yield return (object)new WaitForSeconds(fireInterval); Vector2 randomOffset = Random.insideUnitCircle; MissileUtils.FireMissile(((Component)this).transform.position + new Vector3(randomOffset.x, 0f, randomOffset.y), base.body, default(ProcChainMask), (GameObject)null, base.body.damage * 3.5f, base.body.RollCrit(), PartyInvitation.fireworksPrefab, (DamageColorIndex)3, false); } } yield return null; } private void OnDisable() { enableRadiusIndicator = false; } } } namespace KatsurosStuff.Items.Red { public class BoxOfChaos : ItemBase<BoxOfChaos> { public static Dictionary<GameObject, int> projectileWhitelistToCountMap = new Dictionary<GameObject, int>(); public static ProcType boxOfChaosProcType = (ProcType)215981295; public static GameObject fmpPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/DeathProjectile/DeathProjectile.prefab").WaitForCompletion(); public override string ItemName => "Box of Chaos"; public override string ConfigName => "Box of Chaos"; public override string ItemLangTokenName => "BOX_OF_CHAOS"; public override string ItemPickupDesc => "Activating an interactable also activates all on kill effects. Chance on kill to summon a random projectile."; public override string ItemFullDescription => "Activating an interactable also activates all <style=cIsDamage>on kill effects</style>. <style=cIsDamage>30%</style> <style=cStack>(+10% per stack)</style> chance on kill to summon a <style=cIsDamage>random projectile</style> for <style=cIsDamage>1200%</style> base damage."; public override string ItemLore => ""; public override ItemTier Tier => (ItemTier)2; public override GameObject ItemModel => null; public override Sprite ItemIcon => null; public override bool AIBlacklisted => true; public override void Init(ConfigFile config) { CreateConfig(config); CreateLang(); CreateItem(); Hooks(); } public override void CreateConfig(ConfigFile config) { } public override ItemDisplayRuleDict CreateItemDisplayRules() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown return new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); } public override void Hooks() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: 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_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: 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_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: 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_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) GameObject key = AddHoming(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageIceBombProjectile.prefab").WaitForCompletion()); GameObject key2 = AddHoming(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageLightningBombProjectile.prefab").WaitForCompletion()); GameObject key3 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Engi/EngiHarpoon.prefab").WaitForCompletion(); GameObject key4 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Loader/LoaderPylon.prefab").WaitForCompletion(); GameObject key5 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Treebot/TreebotMortarRain.prefab").WaitForCompletion(); GameObject key6 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Treebot/TreebotMortar2.prefab").WaitForCompletion(); GameObject key7 = AddHoming(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidSurvivor/VoidSurvivorMegaBlasterBigProjectile.prefab").WaitForCompletion()); GameObject key8 = AddHoming(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidSurvivor/VoidSurvivorMegaBlasterBigProjectileCorrupted.prefab").WaitForCompletion()); GameObject key9 = AddHoming(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Saw/Sawmerang.prefab").WaitForCompletion()); GameObject key10 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/MissileProjectile.prefab").WaitForCompletion(); GameObject key11 = AddHoming(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bell/BellBall.prefab").WaitForCompletion()); GameObject key12 = AddHoming(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/ClayGrenadier/ClayGrenadierBarrelProjectile.prefab").WaitForCompletion()); GameObject key13 = AddHoming(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LemurianBruiser/LemurianBigFireball.prefab").WaitForCompletion()); GameObject key14 = AddHoming(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarGolem/LunarGolemTwinShotProjectile.prefab").WaitForCompletion()); GameObject key15 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarWisp/LunarWispTrackingBomb.prefab").WaitForCompletion(); GameObject key16 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Vagrant/VagrantTrackingBomb.prefab").WaitForCompletion(); GameObject key17 = AddHoming(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ElectricWorm/ElectricOrbProjectile.prefab").WaitForCompletion()); GameObject key18 = AddHoming(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ImpBoss/ImpBossFireVoidspikes.prefab").WaitForCompletion()); projectileWhitelistToCountMap.Add(key, 1); projectileWhitelistToCountMap.Add(key2, 1); projectileWhitelistToCountMap.Add(key3, 4); projectileWhitelistToCountMap.Add(key4, 1); projectileWhitelistToCountMap.Add(key5, 1); projectileWhitelistToCountMap.Add(key6, 3); projectileWhitelistToCountMap.Add(key7, 1); projectileWhitelistToCountMap.Add(key8, 1); projectileWhitelistToCountMap.Add(key9, 1); projectileWhitelistToCountMap.Add(key10, 12); projectileWhitelistToCountMap.Add(key11, 3); projectileWhitelistToCountMap.Add(key12, 4); projectileWhitelistToCountMap.Add(key13, 3); projectileWhitelistToCountMap.Add(key14, 10); projectileWhitelistToCountMap.Add(key15, 1); projectileWhitelistToCountMap.Add(key16, 1); projectileWhitelistToCountMap.Add(key17, 1); projectileWhitelistToCountMap.Add(key18, 6); GlobalEventManager.onCharacterDeathGlobal += GlobalEventManager_onCharacterDeathGlobal; GlobalEventManager.OnInteractionsGlobal += GlobalEventManager_OnInteractionsGlobal; } private GameObject AddHoming(GameObject gameObject) { GameObject val = PrefabAPI.InstantiateClone(gameObject, "Homing " + ((Object)gameObject).name); val.AddComponent<ProjectileTargetComponent>(); ProjectileSteerTowardTarget val2 = val.AddComponent<ProjectileSteerTowardTarget>(); val2.rotationSpeed = 1080f; ProjectileDirectionalTargetFinder val3 = val.AddComponent<ProjectileDirectionalTargetFinder>(); val3.lookRange = 1000f; val3.lookCone = 180f; val3.targetSearchInterval = 0.1f; val3.onlySearchIfNoTarget = true; val3.allowTargetLoss = false; val3.testLoS = false; val3.ignoreAir = false; val3.flierAltitudeTolerance = float.PositiveInfinity; PrefabAPI.RegisterNetworkPrefab(val); return val; } private void GlobalEventManager_OnInteractionsGlobal(Interactor interactor, IInteractable interactable, GameObject interactableObject) { //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: 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_013d: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_016d: Unknown result type (might be due to invalid IL or missing references) //IL_0179: 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_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_019c: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Expected O, but got Unknown //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Expected O, but got Unknown if (!Object.op_Implicit((Object)(object)interactableObject) || !Utils.IsActualInteractable(interactableObject) || !Object.op_Implicit((Object)(object)interactor)) { return; } CharacterBody component = ((Component)interactor).GetComponent<CharacterBody>(); if (!Object.op_Implicit((Object)(object)component)) { return; } Inventory inventory = component.inventory; if (!Object.op_Implicit((Object)(object)inventory)) { return; } int itemCount = inventory.GetItemCount(ItemBase<BoxOfChaos>.instance.ItemDef); if (itemCount > 0) { GameObject val = Object.Instantiate<GameObject>(fmpPrefab, component.footPosition, Quaternion.identity); val.transform.localScale = new Vector3(0f, 0f, 0f); val.GetComponent<DeathProjectile>().baseDuration = 1.1f; Object.Destroy((Object)(object)val.GetComponent<DestroyOnTimer>()); Object.Destroy((Object)(object)val.GetComponent<DeathProjectile>()); Object.Destroy((Object)(object)val.GetComponent<ApplyTorqueOnStart>()); Object.Destroy((Object)(object)val.GetComponent<ProjectileDeployToOwner>()); Object.Destroy((Object)(object)val.GetComponent<Deployable>()); Object.Destroy((Object)(object)val.GetComponent<ProjectileStickOnImpact>()); Object.Destroy((Object)(object)val.GetComponent<ProjectileController>()); val.transform.position = component.footPosition; HealthComponent component2 = val.GetComponent<HealthComponent>(); if (NetworkServer.active) { DamageInfo val2 = new DamageInfo { attacker = ((Component)component).gameObject, crit = component.RollCrit(), damage = component.baseDamage, position = component.footPosition, procCoefficient = 0f, damageType = (DamageType)0, damageColorIndex = (DamageColorIndex)3 }; DamageReport val3 = new DamageReport(val2, component2, val2.damage, component2.combinedHealth); GlobalEventManager.instance.OnCharacterDeath(val3); } } } private void GlobalEventManager_onCharacterDeathGlobal(DamageReport report) { //IL_000e: 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_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0145: 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_0161: Unknown result type (might be due to invalid IL or missing references) DamageInfo damageInfo = report.damageInfo; if (((ProcChainMask)(ref damageInfo.procChainMask)).HasProc(boxOfChaosProcType)) { return; } CharacterBody victimBody = report.victimBody; if (!Object.op_Implicit((Object)(object)victimBody)) { return; } CharacterBody attackerBody = report.attackerBody; if (!Object.op_Implicit((Object)(object)attackerBody)) { return; } Inventory inventory = attackerBody.inventory; if (!Object.op_Implicit((Object)(object)inventory)) { return; } int itemCount = inventory.GetItemCount(ItemBase<BoxOfChaos>.instance.ItemDef); if (itemCount > 0) { CharacterMaster master = attackerBody.master; if (Object.op_Implicit((Object)(object)master) && Util.CheckRoll((30f + 10f * (float)(itemCount - 1)) * report.damageInfo.procCoefficient, master)) { int index = Run.instance.treasureRng.RangeInt(0, projectileWhitelistToCountMap.Count); KeyValuePair<GameObject, int> keyValuePair = projectileWhitelistToCountMap.ElementAt(index); GameObject key = keyValuePair.Key; int value = keyValuePair.Value; Vector3 initialFiringPosition = victimBody.corePosition + new Vector3(0f, 5f, 0f); ((MonoBehaviour)attackerBody).StartCoroutine(FireProjectileStandard(attackerBody, initialFiringPosition, key, value)); ((ProcChainMask)(ref damageInfo.procChainMask)).AddProc(boxOfChaosProcType); } } } private IEnumerator FireProjectileStandard(CharacterBody attackerBody, Vector3 initialFiringPosition, GameObject projectile, int count) { //IL_0015: 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) for (int i = 0; i < count; i++) { FireProjectileInfo fpi = new FireProjectileInfo { damage = attackerBody.damage * (12f / (float)count), crit = attackerBody.RollCrit(), damageColorIndex = (DamageColorIndex)3, owner = ((Component)attackerBody).gameObject, position = initialFiringPosition + new Vector3(0f, (float)i, 0f), projectilePrefab = projectile, force = 0f, procChainMask = default(ProcChainMask) }; SphereSearch sphereSearch = new SphereSearch { radius = 1000f, origin = initialFiringPosition, queryTriggerInteraction = (QueryTriggerInteraction)1, mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask }; sphereSearch.RefreshCandidates(); sphereSearch.FilterCandidatesByDistinctHurtBoxEntities(); HurtBox[] hurtBoxes = sphereSearch.GetHurtBoxes(); HurtBox[] filteredHurtBoxes = hurtBoxes.Where((HurtBox x) => (Object)(object)((Component)x).gameObject != (Object)(object)((Component)attackerBody).gameObject).ToArray(); HurtBox randomTarget = filteredHurtBoxes[Run.instance.treasureRng.RangeInt(0, filteredHurtBoxes.Length)]; if (Object.op_Implicit((Object)(object)randomTarget)) { fpi.target = ((Component)randomTarget).gameObject; fpi.rotation = Util.QuaternionSafeLookRotation(((Component)randomTarget).transform.position - fpi.position); ProjectileManager.instance.FireProjectile(fpi); } yield return (object)new WaitForSeconds(1f / (float)count); } yield return null; } } public class CyberneticEye : ItemBase<CyberneticEye> { public override string ItemName => "Cybernetic Eye"; public override string ConfigName => "Cybernetic Eye"; public override string ItemLangTokenName => "CYBERNETIC_EYE"; public override string ItemPickupDesc => "Chance to fire a laser at enemies in your line of sight."; public override string ItemFullDescription => "<style=cIsDamage>1%</style> chance every <style=cIsDamage>5</style> <style=cStack>(-50% per stack)</style> seconds to fire a <style=cIsDamage>laser</style> at every enemy in your line of sight for <style=cIsDamage>5000%</style> base damage. <style=cStack>(chance increases with each unsuccessful attempt)"; public override string ItemLore => ""; public override ItemTier Tier => (ItemTier)2; public override GameObject ItemModel => null; public override Sprite ItemIcon => null; public override bool AIBlacklisted => true; public override void Init(ConfigFile config) { CreateConfig(config); CreateLang(); CreateItem(); Hooks(); } public override void CreateConfig(ConfigFile config) { } public override ItemDisplayRuleDict CreateItemDisplayRules() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown return new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); } public override void Hooks() { CharacterBody.onBodyStartGlobal += CharacterBody_onBodyStartGlobal; CharacterBody.onBodyInventoryChangedGlobal += CharacterBody_onBodyInventoryChangedGlobal; } private void CharacterBody_onBodyInventoryChangedGlobal(CharacterBody body) { body.AddItemBehavior<CyberneticEyeController>(body.inventory.GetItemCount(ItemBase<CyberneticEye>.instance.ItemDef)); } private void CharacterBody_onBodyStartGlobal(CharacterBody body) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Invalid comparison between Unknown and I4 if (Object.op_Implicit((Object)(object)body.teamComponent) && (int)body.teamComponent.teamIndex != 1 && (Object)(object)((Component)body).GetComponent<CyberneticEyeEnemyController>() == (Object)null) { ((Component)body).gameObject.AddComponent<CyberneticEyeEnemyController>(); } } } public class CyberneticEyeController : ItemBehavior { public float timer; public float interval; public float damage = 50f; public CharacterLosTracker losTracker; public void Start() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Expected O, but got Unknown losTracker = new CharacterLosTracker { enabled = true }; } public void FixedUpdate() { //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_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Invalid comparison between Unknown and I4 timer += Time.fixedDeltaTime; interval = 5f / (float)base.stack; losTracker.origin = ((Component)this).transform.position; losTracker.Step(); if (!(timer >= interval)) { return; } ReadOnlyCollection<CharacterBody> readOnlyInstancesList = CharacterBody.readOnlyInstancesList; bool flag = false; bool flag2 = false; for (int i = 0; i < readOnlyInstancesList.Count; i++) { CharacterBody val = readOnlyInstancesList[i]; if (!Object.op_Implicit((Object)(object)val.teamComponent) || (int)val.teamComponent.teamIndex == 1) { continue; } CyberneticEyeEnemyController component = ((Component)val).GetComponent<CyberneticEyeEnemyController>(); if (!Object.op_Implicit((Object)(object)component) || !losTracker.CheckBodyHasLos(val)) { continue; } ModelLocator modelLocator = val.modelLocator; if (Object.op_Implicit((Object)(object)modelLocator)) { Transform modelTransform = modelLocator.modelTransform; if (Object.op_Implicit((Object)(object)modelTransform)) { TemporaryOverlay val2 = ((Component)modelTransform).gameObject.AddComponent<TemporaryOverlay>(); val2.duration = 1f; val2.animateShaderAlpha = true; val2.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); val2.destroyComponentOnEnd = true; val2.originalMaterial = KatsurosStuff.VFX.CyberneticEye.tryProcMat; val2.AddToCharacerModel(((Component)modelTransform).GetComponent<CharacterModel>()); } } if (Util.CheckRoll(component.chance, 0f, (CharacterMaster)null)) { if (!flag) { Util.PlaySound("Play_item_lunar_specialReplace_explode", ((Component)val).gameObject); Util.PlaySound("Play_item_lunar_specialReplace_explode", ((Component)val).gameObject); Util.PlaySound("Play_item_lunar_specialReplace_explode", ((Component)val).gameObject); Util.PlaySound("Play_item_lunar_specialReplace_explode", ((Component)val).gameObject); flag = true; flag2 = true; } ((MonoBehaviour)base.body).StartCoroutine(Damage(val)); } else { if (!flag2) { Util.PlaySound("Play_UI_insufficient_funds", ((Component)this).gameObject); flag2 = true; } component.chance += 1f; } } timer = 0f; } public IEnumerator Damage(CharacterBody enemyBody) { EffectManager.SpawnEffect(KatsurosStuff.VFX.CyberneticEye.laserTracer, new EffectData { start = base.body.corePosition, origin = enemyBody.corePosition }, true); yield return (object)new WaitForSeconds(0.15f); EffectManager.SpawnEffect(KatsurosStuff.VFX.CyberneticEye.explosion, new EffectData { origin = enemyBody.corePosition }, true); if (NetworkServer.active) { DamageInfo info = new DamageInfo { attacker = ((Component)this).gameObject, inflictor = ((Component)this).gameObject, crit = base.body.RollCrit(), damage = base.body.damage * damage, damageColorIndex = (DamageColorIndex)3, damageType = (DamageType)0, force = Vector3.zero, position = enemyBody.corePosition, procCoefficient = 1f }; HealthComponent healthComponent = enemyBody.healthComponent; if (healthComponent != null) { healthComponent.TakeDamage(info); } } } public void OnDestroy() { losTracker.enabled = false; losTracker.Dispose(); losTracker = null; } } public class CyberneticEyeEnemyController : MonoBehaviour { public float chance = 1f; } public class Sapling : ItemBase<Sapling> { public static GameObject uselessConstruct; public static CharacterSpawnCard uselessConstructSpawnCard; public static BodyIndex uselessConstructBodyIndex; public static GameObject thqwib; public override string ItemName => "Sapling"; public override string ConfigName => "Sapling"; public override string ItemLangTokenName => "SAPLING"; public override string ItemPickupDesc => "Activating an interactable spawns catalysts that shoot Thqwibs on death."; public override string ItemFullDescription => "Activating an interactable spawns <style=cIsDamage>3</style> <style=cStack>(+2 per stack)</style> <style=cIsDamage>catalysts</style> that shoot <style=cIsDamage>24 Thqwibs</style> on death for <style=cIsDamage>200%</style> base damage each."; public override string ItemLore => ""; public override ItemTier Tier => (ItemTier)2; public override GameObject ItemModel => null; public override Sprite ItemIcon => null; public override bool AIBlacklisted => true; [SystemInitializer(new Type[] { typeof(BodyCatalog) })] public static void GetBodyIndex() { //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) uselessConstructBodyIndex = BodyCatalog.FindBodyIndex("Sapling Useless Construct Body"); } public override void Init(ConfigFile config) { CreateConfig(config); CreateLang(); CreateItem(); Hooks(); } public override void CreateConfig(ConfigFile config) { } public override ItemDisplayRuleDict CreateItemDisplayRules() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown return new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>()); } public override void Hooks() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0053: 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_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0090: 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_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_025c: Unknown result type (might be due to invalid IL or missing references) //IL_02a3: Unknown result type (might be due to invalid IL or missing references) //IL_035b: Unknown result type (might be due to invalid IL or missing references) //IL_037c: Unknown result type (might be due to invalid IL or missing references) //IL_0387: Unknown result type (might be due to invalid IL or missing references) //IL_0392: Unknown result type (might be due to invalid IL or missing references) //IL_039d: Unknown result type (might be due to invalid IL or missing references) //IL_03e7: Unknown result type (might be due to invalid IL or missing references) //IL_03f1: Expected O, but got Unknown //IL_03f9: Unknown result type (might be due to invalid IL or missing references) //IL_0403: Expected O, but got Unknown //IL_040b: Unknown result type (might be due to invalid IL or missing references) //IL_0415: Expected O, but got Unknown //IL_041d: Unknown result type (might be due to invalid IL or missing references) //IL_0427: Expected O, but got Unknown //IL_042f: Unknown result type (might be due to invalid IL or missing references) //IL_0439: Expected O, but got Unknown thqwib = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/FireballsOnHit/FireMeatBall.prefab").WaitForCompletion(), "Sapling Thqwib"); ProjectileController component = thqwib.GetComponent<ProjectileController>(); GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Scav/ScavSackGhost.prefab").WaitForCompletion(), "Sapling Thqwib Ghost", false); val.transform.localScale = Vector3.one * 0.5f; component.ghostPrefab = val; ProjectileImpactExplosion component2 = thqwib.GetComponent<ProjectileImpactExplosion>(); component2.impactEffect = KatsurosStuff.VFX.Sapling.impact; ((ProjectileExplosion)component2).childrenProjectilePrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Beetle/BeetleQueenAcid.prefab").WaitForCompletion(); ((ProjectileExplosion)component2).blastRadius = 7.5f; ((ProjectileExplosion)component2).blastProcCoefficient = 0.1f; ProjectileDamage component3 = thqwib.GetComponent<ProjectileDamage>(); component3.damageType = (DamageType)0; thqwib.AddComponent<ProjectileTargetComponent>(); ProjectileSteerTowardTarget val2 = thqwib.AddComponent<ProjectileSteerTowardTarget>(); val2.rotationSpeed = 400f; ProjectileDirectionalTargetFinder val3 = thqwib.AddComponent<ProjectileDirectionalTargetFinder>(); val3.lookRange = 13f; val3.lookCone = 90f; val3.targetSearchInterval = 0.1f; val3.onlySearchIfNoTarget = true; val3.allowTargetLoss = false; val3.testLoS = false; val3.ignoreAir = false; val3.flierAltitudeTolerance = float.PositiveInfinity; PrefabAPI.RegisterNetworkPrefab(thqwib); ContentAddition.AddProjectile(thqwib); uselessConstruct = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Squid/SquidTurretMaster.prefab").WaitForCompletion(), "Sapling Useless Construct Master"); GameObject val4 = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/MajorAndMinorConstruct/MinorConstructBody.prefab").WaitForCompletion(), "Sapling Useless Construct Body"); val4.AddComponent<SaplingFuckOffController>(); Transform modelTransform = val4.GetComponent<ModelLocator>()._modelTransform; ChildLocator component4 = ((Component)modelTransform).GetComponent<ChildLocator>(); Transform val5 = component4.transformPairs[0].transform.parent.Find("Hurtbox"); ((Component)val5).gameObject.layer = LayerIndex.defaultLayer.intVal; Object.Destroy((Object)(object)((Component)val5).GetComponent<HurtBox>()); Object.Destroy((Object)(object)((Component)val5).GetComponent<SphereCollider>()); Transform transform = component4.transformPairs[3].transform; ((Component)transform).gameObject.layer = LayerIndex.entityPrecise.intVal; SphereCollider val6 = ((Component)transform).gameObject.AddComponent<SphereCollider>(); ((Collider)val6).material = null; ((Collider)val6).isTrigger = false; val6.center = Vector3.zero; val6.radius = 1.61f; HurtBox val7 = ((Component)transform).gameObject.AddComponent<HurtBox>(); val7.healthComponent = val4.GetComponent<HealthComponent>(); val7.isBullseye = true; val7.isSniperTarget = true; val7.damageModifier = (DamageModifier)0; HurtBoxGroup component5 = ((Component)modelTransform).GetComponent<HurtBoxGroup>(); component5.hurtBoxes = (HurtBox[])(object)new HurtBox[1] { val7 }; component5.mainHurtBox = val7; PrefabAPI.RegisterNetworkPrefab(val4); ContentAddition.AddBody(val4); CharacterMaster component6 = uselessConstruct.GetComponent<CharacterMaster>(); component6.bodyPrefab = val4; Object.Destroy((Object)(object)(from x in uselessConstruct.GetComponents<AISkillDriver>() where x.customName == "FireAtEnemy" select x).First()); PrefabAPI.RegisterNetworkPrefab(uselessConstruct); ContentAddition.AddMaster(uselessConstruct); uselessConstructSpawnCard = ScriptableObject.CreateInstance<CharacterSpawnCard>(); ((SpawnCard)uselessConstructSpawnCard).directorCreditCost = 0; ((SpawnCard)uselessConstructSpawnCard).eliteRules = (EliteRules)0; uselessConstructSpawnCard.noElites = false; uselessConstructSpawnCard.forbiddenAsBoss = false; ((SpawnCard)uselessConstructSpawnCard).forbiddenFlags = (NodeFlags)0; ((SpawnCard)uselessConstructSpawnCard).requiredFlags = (NodeFlags)0; ((SpawnCard)uselessConstructSpawnCard).nodeGraphType = (GraphType)0; ((SpawnCard)uselessConstructSpawnCard).hullSize = (HullClassification)0; ((SpawnCard)uselessConstructSpawnCard).sendOverNetwork = false; ((SpawnCard)uselessConstructSpawnCard).prefab = uselessConstruct; GlobalEventManager.OnInteractionsGlobal += GlobalEventManager_OnInteractionsGlobal; GlobalEventManager.onCharacterDeathGlobal += GlobalEventManager_onCharacterDeathGlobal; Hidden.OnEnter += new hook_OnEnter(Hidden_OnEnter); Hidden.FixedUpdate += new hook_FixedUpdate(Hidden_FixedUpdate); Hidden.OnExit += new hook_OnExit(Hidden_OnExit); BaseHideState.OnExit += new hook_OnExit(BaseHideState_OnExit); Revealed.FixedUpdate += new hook_FixedUpdate(Revealed_FixedUpdate); } private void Revealed_FixedUpdate(orig_FixedUpdate orig, Revealed self) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)self).characterBody.bodyIndex != uselessConstructBodyIndex) { orig.Invoke(self); } } private void BaseHideState_OnExit(orig_OnExit orig, BaseHideState self) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)self).characterBody.bodyIndex != uselessConstructBodyIndex) { orig.Invoke(self); } } private void Hidden_OnExit(orig_OnExit orig, Hidden self) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)self).characterBody.bodyIndex != uselessConstructBodyIndex) { orig.Invoke(self); } } private void Hidden_FixedUpdate(orig_FixedUpdate orig, Hidden self) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) if (((EntityState)self).characterBody.bodyIndex != uselessConstructBodyIndex) { orig.Invoke(self); } } private void Hidden_OnEnter(orig_OnEnter orig, Hidden self) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid