Decompiled source of ClassicItemsReturns v3.1.25
plugins/ClassicItemsReturns/ClassicItemsReturns.dll
Decompiled a week ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using System.Text.RegularExpressions; using AssistManager; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using ClassicItemsReturns.Artifact; using ClassicItemsReturns.Equipment; using ClassicItemsReturns.Equipment.EliteEquipment; using ClassicItemsReturns.Items; using ClassicItemsReturns.Items.NoTier; using ClassicItemsReturns.Items.Rare; using ClassicItemsReturns.Items.Uncommon; using ClassicItemsReturns.Modules; using ClassicItemsReturns.SharedHooks; using ClassicItemsReturns.Utils; using ClassicItemsReturns.Utils.Components; using EntityStates; using EntityStates.ArtifactShell; using EntityStates.DeepVoidPortalBattery; using EntityStates.Drone.DroneWeapon; using EntityStates.Gup; using EntityStates.InfiniteTowerSafeWard; using EntityStates.MeridianEvent; using EntityStates.MiniMushroom; using EntityStates.Missions.BrotherEncounter; using EntityStates.Missions.Goldshores; using EntityStates.Missions.Moon; using HG; using HG.Reflection; using IL.EntityStates; using IL.RoR2; using JetBrains.Annotations; using KinematicCharacterController; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using On.EntityStates; using On.EntityStates.ArtifactShell; using On.EntityStates.DeepVoidPortalBattery; using On.EntityStates.Gup; using On.EntityStates.InfiniteTowerSafeWard; using On.EntityStates.MeridianEvent; using On.EntityStates.Missions.BrotherEncounter; using On.EntityStates.Missions.Goldshores; using On.EntityStates.Missions.Moon; using On.RoR2; using On.RoR2.UI.LogBook; using On.RoR2.UI.MainMenu; using R2API; using R2API.Utils; using RiskOfOptions; using RiskyMod.Allies; using RoR2; using RoR2.Artifacts; using RoR2.Audio; using RoR2.ExpansionManagement; using RoR2.Items; using RoR2.Navigation; using RoR2.Orbs; using RoR2.Projectile; using RoR2.UI.LogBook; using RoR2.UI.MainMenu; using ShaderSwapper; using TMPro; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Events; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.SceneManagement; using UnityEngine.UI; [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.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("ClassicItemsReturns")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+08226bd333bf7e7a65277934a6298852ac64bb97")] [assembly: AssemblyProduct("ClassicItemsReturns")] [assembly: AssemblyTitle("ClassicItemsReturns")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } } namespace ClassicItemsReturns { [BepInPlugin("com.RiskySleeps.ClassicItemsReturns", "Classic Items Returns", "3.1.25")] [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.*/)] [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.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class ClassicItemsReturnsPlugin : BaseUnityPlugin { public const string ModGuid = "com.RiskySleeps.ClassicItemsReturns"; public const string ModName = "Classic Items Returns"; public const string ModVer = "3.1.25"; public const string ModDescription = "Adds items and equipment from Risk of Rain and Risk of Rain Returns."; public static bool useClassicSprites = false; public static bool use3dModels = true; public static bool useUnfinished = false; public static List<ArtifactBase> Artifacts = new List<ArtifactBase>(); public static List<ItemBase> Items = new List<ItemBase>(); public static List<EquipmentBase> Equipments = new List<EquipmentBase>(); public static List<EliteEquipmentBase> EliteEquipments = new List<EliteEquipmentBase>(); public static SceneDef bazaarScene = Addressables.LoadAssetAsync<SceneDef>((object)"RoR2/Base/bazaar/bazaar.asset").WaitForCompletion(); public static ManualLogSource ModLogger; public const bool debug = true; public static PluginInfo PInfo { get; private set; } public static void ModDebugLog(object data) { bool flag = true; ModLogger.LogMessage(data); } private void Awake() { use3dModels = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Use 3d Models", true, "Use 3d models instead of sprites.").Value; useClassicSprites = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Use Classic Sprites", false, "Use the original Risk of Rain sprites instead of the Returns sprites. (Requires Use 3d Models = false)").Value; useUnfinished = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Enable Unfinished Content", false, "Enables unfinished content that lacks 3d models.").Value; PInfo = ((BaseUnityPlugin)this).Info; ModLogger = ((BaseUnityPlugin)this).Logger; Assets.Init(); SoundBanks.Init(); DLCSupport.Initialize(); ModSupport.CheckForModSupport(); LanguageOverrides.Initialize(); Deployables.Initialize(); Buffs.Initialize(); Orbs.Initialize(); AddToAssembly(); Dots.Initialize(); TakeDamage.Initialize(); OnHitEnemy.Initialize(); OnCharacterDeath.Initialize(); ModifyFinalDamage.Initialize(); new IsTeleActivatedTracker(); } private void AddToAssembly() { IEnumerable<Type> enumerable = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(EquipmentBase)) select type; List<string> list = new List<string>(); List<EquipmentBase> list2 = new List<EquipmentBase>(); foreach (Type item in enumerable) { EquipmentBase equipmentBase = (EquipmentBase)Activator.CreateInstance(item); if (equipmentBase.ParentEquipmentName != null) { list2.Add(equipmentBase); } else if (ValidateEquipment(equipmentBase, Equipments)) { equipmentBase.Init(((BaseUnityPlugin)this).Config); list.Add(equipmentBase.EquipmentName); } } foreach (EquipmentBase item2 in list2) { if (list.Contains(item2.ParentEquipmentName)) { item2.Init(((BaseUnityPlugin)this).Config); } } IEnumerable<Type> enumerable2 = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(EliteEquipmentBase)) select type; foreach (Type item3 in enumerable2) { EliteEquipmentBase eliteEquipmentBase = (EliteEquipmentBase)Activator.CreateInstance(item3); if (ValidateEliteEquipment(eliteEquipmentBase, EliteEquipments)) { eliteEquipmentBase.Init(((BaseUnityPlugin)this).Config); } } IEnumerable<Type> enumerable3 = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(ItemBase)) select type; List<string> list3 = new List<string>(); List<ItemBase> list4 = new List<ItemBase>(); foreach (Type item4 in enumerable3) { ItemBase itemBase = (ItemBase)Activator.CreateInstance(item4); if (itemBase.ParentEquipmentName != null || itemBase.ParentItemName != null) { list4.Add(itemBase); } else if (ValidateItem(itemBase, Items)) { itemBase.Init(((BaseUnityPlugin)this).Config); list3.Add(itemBase.ItemName); } } foreach (ItemBase item5 in list4) { if (list3.Contains(item5.ParentItemName) || list.Contains(item5.ParentEquipmentName)) { item5.Init(((BaseUnityPlugin)this).Config); } } IEnumerable<Type> enumerable4 = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(ArtifactBase)) select type; foreach (Type item6 in enumerable4) { ArtifactBase artifactBase = (ArtifactBase)Activator.CreateInstance(item6); if (ValidateArtifact(artifactBase, Artifacts)) { artifactBase.Init(((BaseUnityPlugin)this).Config); } } } public bool ValidateArtifact(ArtifactBase artifact, List<ArtifactBase> artifactList) { bool value = ((BaseUnityPlugin)this).Config.Bind<bool>("Artifact: " + artifact.ArtifactName, "Enable Artifact?", true, "Should this artifact appear for selection?").Value; if (value) { artifactList.Add(artifact); } return value; } public bool ValidateItem(ItemBase item, List<ItemBase> itemList) { string text = "Should this item appear in runs?"; if (item.Unfinished) { text = "UNFINISHED! " + text; } bool value = ((BaseUnityPlugin)this).Config.Bind<bool>(item.ConfigCategory, "Enable Item?", true, text).Value; bool flag = item.ItemTags.Contains((ItemTag)4); bool value2 = ((BaseUnityPlugin)this).Config.Bind<bool>(item.ConfigCategory, "Blacklist Item from AI Use?", flag, "Should the AI not be able to obtain this item?").Value; if (item.Unfinished && !useUnfinished) { return false; } if (value) { itemList.Add(item); if (value2) { item.AIBlacklisted = true; } } return value; } public bool ValidateEquipment(EquipmentBase equipment, List<EquipmentBase> equipmentList) { string text = "Should this equipment appear in runs?"; if (equipment.Unfinished) { text = "UNFINISHED! " + text; } bool value = ((BaseUnityPlugin)this).Config.Bind<bool>(equipment.ConfigCategory, "Enable Equipment?", true, text).Value; if (equipment.Unfinished && !useUnfinished) { return false; } if (value) { equipmentList.Add(equipment); return true; } return false; } public bool ValidateEliteEquipment(EliteEquipmentBase eliteEquipment, List<EliteEquipmentBase> eliteEquipmentList) { if (((BaseUnityPlugin)this).Config.Bind<bool>("Equipment: " + eliteEquipment.EliteEquipmentName, "Enable Elite Equipment?", true, "Should this elite equipment appear in runs? If disabled, the associated elite will not appear in runs either.").Value) { eliteEquipmentList.Add(eliteEquipment); return true; } return false; } } } namespace ClassicItemsReturns.Utils { public class IsTeleActivatedTracker { public static bool teleporterActivated = false; public static List<string> alwaysActiveStages = new List<string> { "voidraid", "limbo" }; public IsTeleActivatedTracker() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Expected O, but got Unknown //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Expected O, but got Unknown //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Expected O, but got Unknown //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Expected O, but got Unknown //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Expected O, but got Unknown //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Expected O, but got Unknown //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Expected O, but got Unknown Stage.onStageStartGlobal += Stage_onStageStartGlobal; ChargingState.OnEnter += new hook_OnEnter(ChargingState_OnEnter); ChargedState.OnEnter += new hook_OnEnter(ChargedState_OnEnter); Active.OnEnter += new hook_OnEnter(Active_OnEnter); Travelling.OnEnter += new hook_OnEnter(Travelling_OnEnter); BrotherEncounterPhaseBaseState.OnEnter += new hook_OnEnter(BrotherEncounterPhaseBaseState_OnEnter); ArenaMissionController.BeginRound += new hook_BeginRound(ArenaMissionController_BeginRound); MoonBatteryActive.OnEnter += new hook_OnEnter(MoonBatteryActive_OnEnter); StartHurt.OnEnter += new hook_OnEnter(StartHurt_OnEnter); Charging.OnEnter += new hook_OnEnter(Charging_OnEnter); GoldshoresBossfight.SpawnBoss += new hook_SpawnBoss(GoldshoresBossfight_SpawnBoss); MeridianEventStart.OnEnter += new hook_OnEnter(MeridianEventStart_OnEnter1); } private void MeridianEventStart_OnEnter1(orig_OnEnter orig, MeridianEventStart self) { orig.Invoke(self); teleporterActivated = true; } private void GoldshoresBossfight_SpawnBoss(orig_SpawnBoss orig, GoldshoresBossfight self) { orig.Invoke(self); teleporterActivated = true; } private void StartHurt_OnEnter(orig_OnEnter orig, StartHurt self) { orig.Invoke(self); teleporterActivated = true; } private void Charging_OnEnter(orig_OnEnter orig, Charging self) { orig.Invoke(self); teleporterActivated = true; } private void MoonBatteryActive_OnEnter(orig_OnEnter orig, MoonBatteryActive self) { orig.Invoke(self); teleporterActivated = true; } private void ArenaMissionController_BeginRound(orig_BeginRound orig, ArenaMissionController self) { orig.Invoke(self); teleporterActivated = true; } private void BrotherEncounterPhaseBaseState_OnEnter(orig_OnEnter orig, BrotherEncounterPhaseBaseState self) { orig.Invoke(self); teleporterActivated = true; } private void ChargedState_OnEnter(orig_OnEnter orig, BaseState self) { orig.Invoke(self); teleporterActivated = true; } private void Active_OnEnter(orig_OnEnter orig, Active self) { orig.Invoke(self); teleporterActivated = true; } private void ChargingState_OnEnter(orig_OnEnter orig, BaseState self) { orig.Invoke(self); teleporterActivated = true; } private void Travelling_OnEnter(orig_OnEnter orig, Travelling self) { orig.Invoke(self); teleporterActivated = false; } private void Stage_onStageStartGlobal(Stage obj) { teleporterActivated = false; SceneDef sceneDefForCurrentScene = SceneCatalog.GetSceneDefForCurrentScene(); if (Object.op_Implicit((Object)(object)sceneDefForCurrentScene) && alwaysActiveStages.Contains(sceneDefForCurrentScene.cachedName)) { teleporterActivated = true; } } } public static class ItemHelpers { public class OverlayPreviewer : MonoBehaviour { public enum AnimationCurveType { Constant, Linear, EaseInAndOut } public bool EnableToPreview = false; public string materialAssetPath = ""; [HideInInspector] public Material materialInstance; public bool isAssigned; public CharacterModel assignedCharacterModel; public CharacterModel inspectorCharacterModel; public bool animateShaderAlpha; public AnimationCurve alphaCurve; public float constantAnimCurveFloat = 1f; public AnimationCurveType animationCurveType = AnimationCurveType.Constant; public float duration = 2f; public void Update() { if (EnableToPreview) { EnableToPreview = false; TemporaryOverlay val = ((Component)((Component)this).gameObject.GetComponent<ModelLocator>().modelTransform).gameObject.AddComponent<TemporaryOverlay>(); val.duration = duration; val.animateShaderAlpha = animateShaderAlpha; val.alphaCurve = AnimationCurve.Constant(0f, duration, constantAnimCurveFloat); val.destroyComponentOnEnd = true; try { val.originalMaterial = Assets.LoadAddressable<Material>(materialAssetPath); val.AddToCharacerModel(((Component)((Component)this).gameObject.GetComponent<ModelLocator>().modelTransform).GetComponent<CharacterModel>()); } catch { Object.Destroy((Object)(object)val); Chat.AddMessage("Exception on preview"); } } } } private static Shader hopooShader = Addressables.LoadAssetAsync<Shader>((object)"RoR2/Base/Shaders/HGStandard.shader").WaitForCompletion(); private static List<Material> cachedMaterials = new List<Material>(); public static RendererInfo[] ItemDisplaySetup(GameObject obj, bool debugmode = false) { //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) List<Renderer> list = new List<Renderer>(); MeshRenderer[] componentsInChildren = obj.GetComponentsInChildren<MeshRenderer>(); if (componentsInChildren.Length != 0) { list.AddRange((IEnumerable<Renderer>)(object)componentsInChildren); } SkinnedMeshRenderer[] componentsInChildren2 = obj.GetComponentsInChildren<SkinnedMeshRenderer>(); if (componentsInChildren2.Length != 0) { list.AddRange((IEnumerable<Renderer>)(object)componentsInChildren2); } RendererInfo[] array = (RendererInfo[])(object)new RendererInfo[list.Count]; for (int i = 0; i < list.Count; i++) { if (debugmode) { MaterialControllerComponents.HGControllerFinder hGControllerFinder = ((Component)list[i]).gameObject.AddComponent<MaterialControllerComponents.HGControllerFinder>(); hGControllerFinder.Renderer = list[i]; } array[i] = new RendererInfo { defaultMaterial = ((list[i] is SkinnedMeshRenderer) ? list[i].sharedMaterial : list[i].material), renderer = list[i], defaultShadowCastingMode = (ShadowCastingMode)1, ignoreOverlays = false }; } return array; } public static void SetupMaterials(GameObject model) { //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_0124: 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_016e: 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) Renderer[] componentsInChildren = model.GetComponentsInChildren<Renderer>(); Renderer[] array = componentsInChildren; foreach (Renderer val in array) { bool flag = Object.op_Implicit((Object)(object)val.material.shader) && ((Object)val.material.shader).name == "Standard"; bool flag2 = ((Object)val).name == "UseGlassShader" || ((Object)val).name == "UseGlass2Shader" || ((Object)val).name == "UseGlass3Shader"; if (Object.op_Implicit((Object)(object)val.material) && (flag || flag2)) { if (((Object)val).name == "UseGlassShader") { Debug.Log((object)("ClassicItemsReturns: Swapping material to Infusion Glass material for " + ((Object)model).name)); val.material = Addressables.LoadAssetAsync<Material>((object)"RoR2/Base/Infusion/matInfusionGlass.mat").WaitForCompletion(); } else if (((Object)val).name == "UseGlass2Shader") { Debug.Log((object)("ClassicItemsReturns: Swapping material to Elixir Glass material for " + ((Object)model).name)); val.material = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/HealingPotion/matHealingPotionGlass.mat").WaitForCompletion(); } else if (((Object)val).name == "UseGlass3Shader") { Debug.Log((object)("ClassicItemsReturns: Swapping material to Vending Machine Glass material for " + ((Object)model).name)); val.material = Addressables.LoadAssetAsync<Material>((object)"RoR2/DLC1/VendingMachine/matVendingMachineGlass.mat").WaitForCompletion(); } else { val.sharedMaterial = val.sharedMaterial.SetHopooMaterial(); } } } } public static Sprite LoadItemSprite(string spriteName) { Sprite val = Assets.LoadSprite("texIcon3d" + spriteName); Sprite val2 = Assets.LoadSprite("texIcon" + spriteName); Sprite val3 = Assets.LoadSprite("texIconClassic" + spriteName); if (ClassicItemsReturnsPlugin.use3dModels) { if (Object.op_Implicit((Object)(object)val)) { return val; } if (Object.op_Implicit((Object)(object)val2)) { return val2; } return val3; } if (!ClassicItemsReturnsPlugin.useClassicSprites) { if (Object.op_Implicit((Object)(object)val2)) { return val2; } if (Object.op_Implicit((Object)(object)val3)) { return val3; } return val; } if (Object.op_Implicit((Object)(object)val3)) { return val3; } if (Object.op_Implicit((Object)(object)val2)) { return val2; } return val; } public static Material SetHopooMaterial(this Material tempMat) { //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0079: 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_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: 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_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: 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_0143: 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_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_0294: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Unknown result type (might be due to invalid IL or missing references) if (cachedMaterials.Contains(tempMat)) { return tempMat; } float? num = null; Color? val = null; float? num2 = null; float? num3 = tempMat.GetFloat("_Metallic"); bool flag = tempMat.IsKeywordEnabled("_NORMALMAP"); bool flag2 = tempMat.IsKeywordEnabled("_PARALLAXMAP"); Texture val2 = null; Vector2 val3 = Vector2.one; Vector2 val4 = Vector2.zero; Texture val5 = null; Vector2 val6 = Vector2.one; Vector2 val7 = Vector2.zero; if (flag2) { val2 = tempMat.GetTexture("_ParallaxMap"); val3 = tempMat.GetTextureScale("_ParallaxMap"); val4 = tempMat.GetTextureOffset("_ParallaxMap"); num2 = tempMat.GetFloat("_Parallax"); } if (flag) { num = tempMat.GetFloat("_BumpScale"); val5 = tempMat.GetTexture("_BumpMap"); val6 = tempMat.GetTextureScale("_BumpMap"); val7 = tempMat.GetTextureOffset("_BumpMap"); } if (tempMat.IsKeywordEnabled("_EMISSION")) { val = tempMat.GetColor("_EmissionColor"); } tempMat.shader = hopooShader; tempMat.SetColor("_Color", tempMat.GetColor("_Color")); tempMat.SetTexture("_MainTex", tempMat.GetTexture("_MainTex")); tempMat.SetTexture("_EmTex", tempMat.GetTexture("_EmissionMap")); tempMat.EnableKeyword("DITHER"); if (num3.HasValue) { tempMat.SetFloat("_SpecularStrength", 1f); } if (flag2) { tempMat.SetTexture("_ParallaxMap", val2); tempMat.SetTextureScale("_ParallaxMap", val3); tempMat.SetTextureOffset("_ParallaxMap", val4); if (num2.HasValue) { tempMat.SetFloat("_Parallax", num2.Value); } } if (flag) { if (num.HasValue) { tempMat.SetFloat("_NormalStrength", num.Value); } tempMat.SetTexture("_BumpMap", val5); tempMat.SetTextureScale("_BumpMap", val6); tempMat.SetTextureOffset("_BumpMap", val7); tempMat.SetTexture("_NormalTex", val5); tempMat.SetTextureScale("_NormalTex", val6); tempMat.SetTextureOffset("_NormalTex", val7); } if (val.HasValue) { tempMat.SetColor("_EmColor", val.Value); tempMat.SetFloat("_EmPower", 1f); } if (tempMat.IsKeywordEnabled("NOCULL")) { tempMat.SetInt("_Cull", 0); } if (tempMat.IsKeywordEnabled("LIMBREMOVAL")) { tempMat.SetInt("_LimbRemovalOn", 1); } cachedMaterials.Add(tempMat); return tempMat; } public static void RefreshTimedBuffs(CharacterBody body, BuffDef buffDef, float duration) { //IL_0039: 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) if (!Object.op_Implicit((Object)(object)body) || body.GetBuffCount(buffDef) <= 0) { return; } foreach (TimedBuff timedBuff in body.timedBuffs) { if (buffDef.buffIndex == timedBuff.buffIndex) { timedBuff.timer = duration; } } } public static void RefreshTimedBuffs(CharacterBody body, BuffDef buffDef, float taperStart, float taperDuration) { //IL_003b: 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) if (!Object.op_Implicit((Object)(object)body) || body.GetBuffCount(buffDef) <= 0) { return; } int num = 0; foreach (TimedBuff timedBuff in body.timedBuffs) { if (buffDef.buffIndex == timedBuff.buffIndex) { timedBuff.timer = taperStart + (float)num * taperDuration; num++; } } } public static void AddBuffAndDot(BuffDef buff, float duration, int stackCount, CharacterBody body) { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Invalid comparison between Unknown and I4 //IL_0075: 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) if (!NetworkServer.active) { return; } DotIndex val = (DotIndex)Array.FindIndex(DotController.dotDefs, (DotDef dotDef) => (Object)(object)dotDef.associatedBuff == (Object)(object)buff); for (int i = 0; i < stackCount; i++) { if ((int)val != -1) { DotController.InflictDot(((Component)body).gameObject, ((Component)body).gameObject, val, duration, 0.25f, (uint?)null); } else { body.AddTimedBuff(buff.buffIndex, duration); } } } public static DotIndex FindAssociatedDotForBuff(BuffDef buff) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0025: 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_0029: Unknown result type (might be due to invalid IL or missing references) return (DotIndex)Array.FindIndex(DotController.dotDefs, (DotDef dotDef) => (Object)(object)dotDef.associatedBuff == (Object)(object)buff); } public static float StackingLinear(int itemCount, float baseValue, float stackValue) { return baseValue + stackValue * (float)(itemCount - 1); } public static int StackingLinear(int itemCount, int baseValue, int stackValue) { return baseValue + stackValue * (itemCount - 1); } public static bool TryGetBuffCount(CharacterBody characterBody, BuffDef buffDef, out int buffCount) { buffCount = 0; if (!Object.op_Implicit((Object)(object)characterBody)) { return false; } buffCount = characterBody.GetBuffCount(buffDef); return buffCount > 0; } } public static class MathHelpers { public static string FloatToPercentageString(float number, float numberBase = 100f) { return (number * numberBase).ToString("##0") + "%"; } public static Vector3 ClosestPointOnSphereToPoint(Vector3 origin, float radius, Vector3 targetPosition) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) Vector3 val = targetPosition - origin; val = Vector3.Normalize(val); val *= radius; return origin + val; } public static List<Vector3> DistributePointsEvenlyAroundSphere(int points, float radius, Vector3 origin) { //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) List<Vector3> list = new List<Vector3>(); double num = Math.PI * (3.0 - Math.Sqrt(5.0)); for (int i = 0; i < points; i++) { int num2 = 1 - i / (points - 1) * 2; double num3 = Math.Sqrt(1 - num2 * num2); double num4 = num * (double)i; float num5 = (float)(Math.Cos(num4) * num3); float num6 = (float)(Math.Sin(num4) * num3); Vector3 val = origin + new Vector3(num5, (float)num2, num6); list.Add(val * radius); } return list; } public static List<Vector3> DistributePointsEvenlyAroundCircle(int points, float radius, Vector3 origin, float angleOffset = 0f) { //IL_002c: 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_0044: 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) List<Vector3> list = new List<Vector3>(); Vector3 item = default(Vector3); for (int i = 0; i < points; i++) { double num = Math.PI * 2.0 / (double)points; double num2 = num * (double)i + (double)angleOffset; ((Vector3)(ref item))..ctor((float)((double)radius * Math.Cos(num2) + (double)origin.x), origin.y, (float)((double)radius * Math.Sin(num2) + (double)origin.z)); list.Add(item); } return list; } public static Vector3 GetPointOnUnitSphereCap(Quaternion targetDirection, float angle) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0046: 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) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) float num = Random.Range(0f, angle) * (MathF.PI / 180f); Vector2 insideUnitCircle = Random.insideUnitCircle; Vector2 val = ((Vector2)(ref insideUnitCircle)).normalized * Mathf.Sin(num); Vector3 val2 = default(Vector3); ((Vector3)(ref val2))..ctor(val.x, val.y, Mathf.Cos(num)); return targetDirection * val2; } public static Vector3 GetPointOnUnitSphereCap(Vector3 targetDirection, float angle) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) return GetPointOnUnitSphereCap(Quaternion.LookRotation(targetDirection), angle); } public static Vector3 RandomPointOnCircle(Vector3 origin, float radius, Xoroshiro128Plus random) { //IL_0012: 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_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) float num = random.RangeFloat(0f, MathF.PI * 2f); return origin + new Vector3(Mathf.Cos(num), 0f, Mathf.Sin(num)) * radius; } public static float InverseHyperbolicScaling(float baseValue, float additionalValue, float maxValue, int itemCount) { return baseValue + (maxValue - baseValue) * (1f - 1f / (1f + additionalValue * (float)(itemCount - 1))); } } public static class MiscUtils { private static GameObject teleportHelperPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/DirectorSpawnProbeHelperPrefab.prefab").WaitForCompletion(); public static Vector3 FindSafeTeleportPosition(Vector3 position, HullClassification hullSize, bool isFlying, float maxDistance, PlacementMode placementMode) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000a: 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_0018: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0033: 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_0048: Expected I4, but got Unknown //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: 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_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_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Expected O, but got Unknown //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Expected O, but got Unknown //IL_00c2: 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_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_00c7: Unknown result type (might be due to invalid IL or missing references) Vector3 result = position; SpawnCard val = ScriptableObject.CreateInstance<SpawnCard>(); val.hullSize = hullSize; val.nodeGraphType = (GraphType)(isFlying ? 1 : 0); val.prefab = teleportHelperPrefab; float minDistance = 0f; switch ((int)hullSize) { case 0: minDistance = 4f; break; case 1: minDistance = 8f; break; case 2: minDistance = 16f; break; } GameObject val2 = DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(val, new DirectorPlacementRule { placementMode = placementMode, position = position, minDistance = minDistance, maxDistance = maxDistance }, RoR2Application.rng)); if (Object.op_Implicit((Object)(object)val2)) { result = val2.transform.position; Object.Destroy((Object)(object)val2); } Object.Destroy((Object)(object)val); return result; } public static Vector3? RaycastToDirection(Vector3 position, float maxDistance, Vector3 direction, int layer) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) RaycastHit val = default(RaycastHit); if (Physics.Raycast(new Ray(position, direction), ref val, maxDistance, layer, (QueryTriggerInteraction)1)) { return ((RaycastHit)(ref val)).point; } return null; } public static void TryRemoveBuff(CharacterBody body, BuffDef buff) { if (body.HasBuff(buff)) { body.RemoveBuff(buff); } } public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> toShuffle, Xoroshiro128Plus random) { List<T> list = new List<T>(); foreach (T item in toShuffle) { list.Insert(random.RangeInt(0, list.Count + 1), item); } return list; } public static Vector3 FindClosestNodeToPosition(Vector3 position, HullClassification hullClassification, bool checkAirNodes = false) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: 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) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_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_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0044: 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) NodeGraph val = (checkAirNodes ? SceneInfo.instance.airNodes : SceneInfo.instance.groundNodes); NodeIndex val2 = val.FindClosestNode(position, hullClassification, float.PositiveInfinity); if (val2 != NodeIndex.invalid) { Vector3 result = default(Vector3); val.GetNodePosition(val2, ref result); return result; } ClassicItemsReturnsPlugin.ModLogger.LogInfo((object)$"No closest node to be found for XYZ: {position}, returning 0,0,0"); return Vector3.zero; } public static bool TeleportBody(CharacterBody characterBody, GameObject target, GameObject teleportEffect, HullClassification hullClassification, Xoroshiro128Plus rng, float minDistance = 20f, float maxDistance = 45f, bool teleportAir = false) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: 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_005a: 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_007b: Expected O, but got Unknown //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Expected O, but got Unknown //IL_0095: 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_00be: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)characterBody)) { return false; } SpawnCard val = ScriptableObject.CreateInstance<SpawnCard>(); val.hullSize = hullClassification; val.nodeGraphType = (GraphType)(teleportAir ? 1 : 0); val.prefab = Resources.Load<GameObject>("SpawnCards/HelperPrefab"); GameObject val2 = DirectorCore.instance.TrySpawnObject(new DirectorSpawnRequest(val, new DirectorPlacementRule { placementMode = (PlacementMode)1, position = target.transform.position, minDistance = minDistance, maxDistance = maxDistance }, rng)); if (Object.op_Implicit((Object)(object)val2)) { TeleportHelper.TeleportBody(characterBody, val2.transform.position); if (Object.op_Implicit((Object)(object)teleportEffect)) { EffectManager.SimpleEffect(teleportEffect, val2.transform.position, Quaternion.identity, true); } Object.Destroy((Object)(object)val2); Object.Destroy((Object)(object)val); return true; } Object.Destroy((Object)(object)val); return false; } public static Vector3? AboveTargetVectorFromDamageInfo(DamageInfo damageInfo, float distanceAboveTarget) { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: 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_0072: 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_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0083: 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_0108: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) if (damageInfo.rejected || !Object.op_Implicit((Object)(object)damageInfo.attacker)) { return null; } CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component)) { TeamMask enemyTeams = TeamMask.GetEnemyTeams(component.teamComponent.teamIndex); HurtBox val = new SphereSearch { radius = 1f, mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask, origin = damageInfo.position }.RefreshCandidates().FilterCandidatesByHurtBoxTeam(enemyTeams).OrderCandidatesByDistance() .FilterCandidatesByDistinctHurtBoxEntities() .GetHurtBoxes() .FirstOrDefault(); if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)val.healthComponent) && Object.op_Implicit((Object)(object)val.healthComponent.body)) { CharacterBody body = val.healthComponent.body; Vector3 val2 = body.mainHurtBox.collider.ClosestPointOnBounds(body.transform.position + new Vector3(0f, 10000f, 0f)); Vector3? val3 = RaycastToDirection(val2, distanceAboveTarget, Vector3.up, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask)); if (val3.HasValue) { return val3.Value; } return val2 + Vector3.up * distanceAboveTarget; } } return null; } public static Vector3? AboveTargetBody(CharacterBody body, float distanceAbove) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: 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_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_008f: 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_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)body)) { return null; } Vector3 val = body.mainHurtBox.collider.ClosestPointOnBounds(body.transform.position + new Vector3(0f, 10000f, 0f)); Vector3? val2 = RaycastToDirection(val, distanceAbove, Vector3.up, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask)); if (val2.HasValue) { return val2.Value; } return val + Vector3.up * distanceAbove; } public static Dictionary<string, Vector3> GetAimSurfaceAlignmentInfo(Ray ray, int layerMask, float distance) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: 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_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) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_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_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) Dictionary<string, Vector3> dictionary = new Dictionary<string, Vector3>(); RaycastHit val = default(RaycastHit); if (!Physics.Raycast(ray, ref val, distance, layerMask, (QueryTriggerInteraction)1)) { ClassicItemsReturnsPlugin.ModLogger.LogInfo((object)$"GetAimSurfaceAlignmentInfo did not hit anything in the aim direction on the specified layer ({layerMask})."); return null; } Vector3 point = ((RaycastHit)(ref val)).point; Vector3 val2 = Vector3.Cross(((Ray)(ref ray)).direction, Vector3.up); Vector3 val3 = Vector3.ProjectOnPlane(((RaycastHit)(ref val)).normal, val2); Vector3 value = Vector3.Cross(val2, val3); dictionary.Add("Position", point); dictionary.Add("Right", val2); dictionary.Add("Forward", value); dictionary.Add("Up", val3); return dictionary; } public static List<HealthComponent> FindEnemiesInSphere(float radius, Vector3 position, TeamIndex team) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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) int num = 0; List<HealthComponent> list = new List<HealthComponent>(); Collider[] array = Physics.OverlapSphere(position, radius, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.entityPrecise)).mask)); for (int i = 0; i < array.Length; i++) { HurtBox component = ((Component)array[i]).GetComponent<HurtBox>(); if (Object.op_Implicit((Object)(object)component)) { HealthComponent healthComponent = component.healthComponent; if (Object.op_Implicit((Object)(object)healthComponent) && Object.op_Implicit((Object)(object)healthComponent.body) && Object.op_Implicit((Object)(object)healthComponent.body.teamComponent) && healthComponent.body.teamComponent.teamIndex != team && !list.Contains(healthComponent)) { list.Add(healthComponent); } } } return list; } } public static class NetworkingHelpers { public static T GetObjectFromNetIdValue<T>(uint netIdValue) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) NetworkInstanceId key = default(NetworkInstanceId); ((NetworkInstanceId)(ref key))..ctor(netIdValue); NetworkIdentity value; if (NetworkServer.active) { NetworkServer.objects.TryGetValue(key, out value); } else { ClientScene.objects.TryGetValue(key, out value); } if (Object.op_Implicit((Object)(object)value)) { T component = ((Component)value).GetComponent<T>(); if (component != null) { return component; } } return default(T); } } } namespace ClassicItemsReturns.Utils.Components { public class MaterialControllerComponents { public class HGControllerFinder : MonoBehaviour { public Renderer Renderer; public Material Material; public void Start() { if (Object.op_Implicit((Object)(object)Renderer)) { Material = Renderer.materials[0]; if (Object.op_Implicit((Object)(object)Material)) { switch (((Object)Material.shader).name) { case "Hopoo Games/Deferred/Standard": { HGStandardController hGStandardController = ((Component)this).gameObject.AddComponent<HGStandardController>(); hGStandardController.Material = Material; hGStandardController.Renderer = Renderer; break; } case "Hopoo Games/FX/Cloud Remap": { HGCloudRemapController hGCloudRemapController = ((Component)this).gameObject.AddComponent<HGCloudRemapController>(); hGCloudRemapController.Material = Material; hGCloudRemapController.Renderer = Renderer; break; } case "Hopoo Games/FX/Cloud Intersection Remap": { HGIntersectionController hGIntersectionController = ((Component)this).gameObject.AddComponent<HGIntersectionController>(); hGIntersectionController.Material = Material; hGIntersectionController.Renderer = Renderer; break; } } } } Object.Destroy((Object)(object)this); } } public class HGStandardController : MonoBehaviour { public enum _RampInfoEnum { TwoTone = 0, SmoothedTwoTone = 1, Unlitish = 3, Subsurface = 4, Grass = 5 } public enum _DecalLayerEnum { Default, Environment, Character, Misc } public enum _CullEnum { Off, Front, Back } public enum _PrintDirectionEnum { BottomUp = 0, TopDown = 1, BackToFront = 3 } public Material Material; public Renderer Renderer; public string MaterialName; public bool _EnableCutout; public Color _Color; public Texture _MainTex; public Vector2 _MainTexScale; public Vector2 _MainTexOffset; [Range(0f, 5f)] public float _NormalStrength; public Texture _NormalTex; public Vector2 _NormalTexScale; public Vector2 _NormalTexOffset; public Color _EmColor; public Texture _EmTex; [Range(0f, 10f)] public float _EmPower; [Range(0f, 1f)] public float _Smoothness; public bool _IgnoreDiffuseAlphaForSpeculars; public _RampInfoEnum _RampChoice; public _DecalLayerEnum _DecalLayer; [Range(0f, 1f)] public float _SpecularStrength; [Range(0.1f, 20f)] public float _SpecularExponent; public _CullEnum _Cull_Mode; public bool _EnableDither; [Range(0f, 1f)] public float _FadeBias; public bool _EnableFresnelEmission; public Texture _FresnelRamp; [Range(0.1f, 20f)] public float _FresnelPower; public Texture _FresnelMask; [Range(0f, 20f)] public float _FresnelBoost; public bool _EnablePrinting; [Range(-25f, 25f)] public float _SliceHeight; [Range(0f, 10f)] public float _PrintBandHeight; [Range(0f, 1f)] public float _PrintAlphaDepth; public Texture _PrintAlphaTexture; public Vector2 _PrintAlphaTextureScale; public Vector2 _PrintAlphaTextureOffset; [Range(0f, 10f)] public float _PrintColorBoost; [Range(0f, 4f)] public float _PrintAlphaBias; [Range(0f, 1f)] public float _PrintEmissionToAlbedoLerp; public _PrintDirectionEnum _PrintDirection; public Texture _PrintRamp; [Range(-10f, 10f)] public float _EliteBrightnessMin; [Range(-10f, 10f)] public float _EliteBrightnessMax; public bool _EnableSplatmap; public bool _UseVertexColorsInstead; [Range(0f, 1f)] public float _BlendDepth; public Texture _SplatmapTex; public Vector2 _SplatmapTexScale; public Vector2 _SplatmapTexOffset; [Range(0f, 20f)] public float _SplatmapTileScale; public Texture _GreenChannelTex; public Texture _GreenChannelNormalTex; [Range(0f, 1f)] public float _GreenChannelSmoothness; [Range(-2f, 5f)] public float _GreenChannelBias; public Texture _BlueChannelTex; public Texture _BlueChannelNormalTex; [Range(0f, 1f)] public float _BlueChannelSmoothness; [Range(-2f, 5f)] public float _BlueChannelBias; public bool _EnableFlowmap; public Texture _FlowTexture; public Texture _FlowHeightmap; public Vector2 _FlowHeightmapScale; public Vector2 _FlowHeightmapOffset; public Texture _FlowHeightRamp; public Vector2 _FlowHeightRampScale; public Vector2 _FlowHeightRampOffset; [Range(-1f, 1f)] public float _FlowHeightBias; [Range(0.1f, 20f)] public float _FlowHeightPower; [Range(0.1f, 20f)] public float _FlowEmissionStrength; [Range(0f, 15f)] public float _FlowSpeed; [Range(0f, 5f)] public float _MaskFlowStrength; [Range(0f, 5f)] public float _NormalFlowStrength; [Range(0f, 10f)] public float _FlowTextureScaleFactor; public bool _EnableLimbRemoval; public void Start() { GrabMaterialValues(); } public void GrabMaterialValues() { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: 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_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_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_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) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_02cd: Unknown result type (might be due to invalid IL or missing references) //IL_02d2: Unknown result type (might be due to invalid IL or missing references) //IL_02e3: Unknown result type (might be due to invalid IL or missing references) //IL_02e8: Unknown result type (might be due to invalid IL or missing references) //IL_03ec: Unknown result type (might be due to invalid IL or missing references) //IL_03f1: Unknown result type (might be due to invalid IL or missing references) //IL_0402: Unknown result type (might be due to invalid IL or missing references) //IL_0407: Unknown result type (might be due to invalid IL or missing references) //IL_0520: Unknown result type (might be due to invalid IL or missing references) //IL_0525: Unknown result type (might be due to invalid IL or missing references) //IL_0536: Unknown result type (might be due to invalid IL or missing references) //IL_053b: Unknown result type (might be due to invalid IL or missing references) //IL_0562: Unknown result type (might be due to invalid IL or missing references) //IL_0567: Unknown result type (might be due to invalid IL or missing references) //IL_0578: Unknown result type (might be due to invalid IL or missing references) //IL_057d: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)Material)) { _EnableCutout = Material.IsKeywordEnabled("CUTOUT"); _Color = Material.GetColor("_Color"); _MainTex = Material.GetTexture("_MainTex"); _MainTexScale = Material.GetTextureScale("_MainTex"); _MainTexOffset = Material.GetTextureOffset("_MainTex"); _NormalStrength = Material.GetFloat("_NormalStrength"); _NormalTex = Material.GetTexture("_NormalTex"); _NormalTexScale = Material.GetTextureScale("_NormalTex"); _NormalTexOffset = Material.GetTextureOffset("_NormalTex"); _EmColor = Material.GetColor("_EmColor"); _EmTex = Material.GetTexture("_EmTex"); _EmPower = Material.GetFloat("_EmPower"); _Smoothness = Material.GetFloat("_Smoothness"); _IgnoreDiffuseAlphaForSpeculars = Material.IsKeywordEnabled("FORCE_SPEC"); _RampChoice = (_RampInfoEnum)Material.GetFloat("_RampInfo"); _DecalLayer = (_DecalLayerEnum)Material.GetFloat("_DecalLayer"); _SpecularStrength = Material.GetFloat("_SpecularStrength"); _SpecularExponent = Material.GetFloat("_SpecularExponent"); _Cull_Mode = (_CullEnum)Material.GetFloat("_Cull"); _EnableDither = Material.IsKeywordEnabled("DITHER"); _FadeBias = Material.GetFloat("_FadeBias"); _EnableFresnelEmission = Material.IsKeywordEnabled("FRESNEL_EMISSION"); _FresnelRamp = Material.GetTexture("_FresnelRamp"); _FresnelPower = Material.GetFloat("_FresnelPower"); _FresnelMask = Material.GetTexture("_FresnelMask"); _FresnelBoost = Material.GetFloat("_FresnelBoost"); _EnablePrinting = Material.IsKeywordEnabled("PRINT_CUTOFF"); _SliceHeight = Material.GetFloat("_SliceHeight"); _PrintBandHeight = Material.GetFloat("_SliceBandHeight"); _PrintAlphaDepth = Material.GetFloat("_SliceAlphaDepth"); _PrintAlphaTexture = Material.GetTexture("_SliceAlphaTex"); _PrintAlphaTextureScale = Material.GetTextureScale("_SliceAlphaTex"); _PrintAlphaTextureOffset = Material.GetTextureOffset("_SliceAlphaTex"); _PrintColorBoost = Material.GetFloat("_PrintBoost"); _PrintAlphaBias = Material.GetFloat("_PrintBias"); _PrintEmissionToAlbedoLerp = Material.GetFloat("_PrintEmissionToAlbedoLerp"); _PrintDirection = (_PrintDirectionEnum)Material.GetFloat("_PrintDirection"); _PrintRamp = Material.GetTexture("_PrintRamp"); _EliteBrightnessMin = Material.GetFloat("_EliteBrightnessMin"); _EliteBrightnessMax = Material.GetFloat("_EliteBrightnessMax"); _EnableSplatmap = Material.IsKeywordEnabled("SPLATMAP"); _UseVertexColorsInstead = Material.IsKeywordEnabled("USE_VERTEX_COLORS"); _BlendDepth = Material.GetFloat("_Depth"); _SplatmapTex = Material.GetTexture("_SplatmapTex"); _SplatmapTexScale = Material.GetTextureScale("_SplatmapTex"); _SplatmapTexOffset = Material.GetTextureOffset("_SplatmapTex"); _SplatmapTileScale = Material.GetFloat("_SplatmapTileScale"); _GreenChannelTex = Material.GetTexture("_GreenChannelTex"); _GreenChannelNormalTex = Material.GetTexture("_GreenChannelNormalTex"); _GreenChannelSmoothness = Material.GetFloat("_GreenChannelSmoothness"); _GreenChannelBias = Material.GetFloat("_GreenChannelBias"); _BlueChannelTex = Material.GetTexture("_BlueChannelTex"); _BlueChannelNormalTex = Material.GetTexture("_BlueChannelNormalTex"); _BlueChannelSmoothness = Material.GetFloat("_BlueChannelSmoothness"); _BlueChannelBias = Material.GetFloat("_BlueChannelBias"); _EnableFlowmap = Material.IsKeywordEnabled("FLOWMAP"); _FlowTexture = Material.GetTexture("_FlowTex"); _FlowHeightmap = Material.GetTexture("_FlowHeightmap"); _FlowHeightmapScale = Material.GetTextureScale("_FlowHeightmap"); _FlowHeightmapOffset = Material.GetTextureOffset("_FlowHeightmap"); _FlowHeightRamp = Material.GetTexture("_FlowHeightRamp"); _FlowHeightRampScale = Material.GetTextureScale("_FlowHeightRamp"); _FlowHeightRampOffset = Material.GetTextureOffset("_FlowHeightRamp"); _FlowHeightBias = Material.GetFloat("_FlowHeightBias"); _FlowHeightPower = Material.GetFloat("_FlowHeightPower"); _FlowEmissionStrength = Material.GetFloat("_FlowEmissionStrength"); _FlowSpeed = Material.GetFloat("_FlowSpeed"); _MaskFlowStrength = Material.GetFloat("_FlowMaskStrength"); _NormalFlowStrength = Material.GetFloat("_FlowNormalStrength"); _FlowTextureScaleFactor = Material.GetFloat("_FlowTextureScaleFactor"); _EnableLimbRemoval = Material.IsKeywordEnabled("LIMBREMOVAL"); MaterialName = ((Object)Material).name; } } public void Update() { //IL_007c: 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_00d1: 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_0154: 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_0427: Unknown result type (might be due to invalid IL or missing references) //IL_043e: Unknown result type (might be due to invalid IL or missing references) //IL_05ae: Unknown result type (might be due to invalid IL or missing references) //IL_05c5: Unknown result type (might be due to invalid IL or missing references) //IL_07e6: Unknown result type (might be due to invalid IL or missing references) //IL_07fd: Unknown result type (might be due to invalid IL or missing references) //IL_0854: Unknown result type (might be due to invalid IL or missing references) //IL_086b: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)Material)) { if (((Object)Material).name != MaterialName && Object.op_Implicit((Object)(object)Renderer)) { GrabMaterialValues(); PutMaterialIntoMeshRenderer(Renderer, Material); } SetShaderKeywordBasedOnBool(_EnableCutout, Material, "CUTOUT"); Material.SetColor("_Color", _Color); if (Object.op_Implicit((Object)(object)_MainTex)) { Material.SetTexture("_MainTex", _MainTex); Material.SetTextureScale("_MainTex", _MainTexScale); Material.SetTextureOffset("_MainTex", _MainTexOffset); } else { Material.SetTexture("_MainTex", (Texture)null); } Material.SetFloat("_NormalStrength", _NormalStrength); if (Object.op_Implicit((Object)(object)_NormalTex)) { Material.SetTexture("_NormalTex", _NormalTex); Material.SetTextureScale("_NormalTex", _NormalTexScale); Material.SetTextureOffset("_NormalTex", _NormalTexOffset); } else { Material.SetTexture("_NormalTex", (Texture)null); } Material.SetColor("_EmColor", _EmColor); if (Object.op_Implicit((Object)(object)_EmTex)) { Material.SetTexture("_EmTex", _EmTex); } else { Material.SetTexture("_EmTex", (Texture)null); } Material.SetFloat("_EmPower", _EmPower); Material.SetFloat("_Smoothness", _Smoothness); SetShaderKeywordBasedOnBool(_IgnoreDiffuseAlphaForSpeculars, Material, "FORCE_SPEC"); Material.SetFloat("_RampInfo", Convert.ToSingle(_RampChoice)); Material.SetFloat("_DecalLayer", Convert.ToSingle(_DecalLayer)); Material.SetFloat("_SpecularStrength", _SpecularStrength); Material.SetFloat("_SpecularExponent", _SpecularExponent); Material.SetFloat("_Cull", Convert.ToSingle(_Cull_Mode)); SetShaderKeywordBasedOnBool(_EnableDither, Material, "DITHER"); Material.SetFloat("_FadeBias", _FadeBias); SetShaderKeywordBasedOnBool(_EnableFresnelEmission, Material, "FRESNEL_EMISSION"); if (Object.op_Implicit((Object)(object)_FresnelRamp)) { Material.SetTexture("_FresnelRamp", _FresnelRamp); } else { Material.SetTexture("_FresnelRamp", (Texture)null); } Material.SetFloat("_FresnelPower", _FresnelPower); if (Object.op_Implicit((Object)(object)_FresnelMask)) { Material.SetTexture("_FresnelMask", _FresnelMask); } else { Material.SetTexture("_FresnelMask", (Texture)null); } Material.SetFloat("_FresnelBoost", _FresnelBoost); SetShaderKeywordBasedOnBool(_EnablePrinting, Material, "PRINT_CUTOFF"); Material.SetFloat("_SliceHeight", _SliceHeight); Material.SetFloat("_SliceBandHeight", _PrintBandHeight); Material.SetFloat("_SliceAlphaDepth", _PrintAlphaDepth); if (Object.op_Implicit((Object)(object)_PrintAlphaTexture)) { Material.SetTexture("_SliceAlphaTex", _PrintAlphaTexture); Material.SetTextureScale("_SliceAlphaTex", _PrintAlphaTextureScale); Material.SetTextureOffset("_SliceAlphaTex", _PrintAlphaTextureOffset); } else { Material.SetTexture("_SliceAlphaTex", (Texture)null); } Material.SetFloat("_PrintBoost", _PrintColorBoost); Material.SetFloat("_PrintBias", _PrintAlphaBias); Material.SetFloat("_PrintEmissionToAlbedoLerp", _PrintEmissionToAlbedoLerp); Material.SetFloat("_PrintDirection", Convert.ToSingle(_PrintDirection)); if (Object.op_Implicit((Object)(object)_PrintRamp)) { Material.SetTexture("_PrintRamp", _PrintRamp); } else { Material.SetTexture("_PrintRamp", (Texture)null); } Material.SetFloat("_EliteBrightnessMin", _EliteBrightnessMin); Material.SetFloat("_EliteBrightnessMax", _EliteBrightnessMax); SetShaderKeywordBasedOnBool(_EnableSplatmap, Material, "SPLATMAP"); SetShaderKeywordBasedOnBool(_UseVertexColorsInstead, Material, "USE_VERTEX_COLORS"); Material.SetFloat("_Depth", _BlendDepth); if (Object.op_Implicit((Object)(object)_SplatmapTex)) { Material.SetTexture("_SplatmapTex", _SplatmapTex); Material.SetTextureScale("_SplatmapTex", _SplatmapTexScale); Material.SetTextureOffset("_SplatmapTex", _SplatmapTexOffset); } else { Material.SetTexture("_SplatmapTex", (Texture)null); } Material.SetFloat("_SplatmapTileScale", _SplatmapTileScale); if (Object.op_Implicit((Object)(object)_GreenChannelTex)) { Material.SetTexture("_GreenChannelTex", _GreenChannelTex); } else { Material.SetTexture("_GreenChannelTex", (Texture)null); } if (Object.op_Implicit((Object)(object)_GreenChannelNormalTex)) { Material.SetTexture("_GreenChannelNormalTex", _GreenChannelNormalTex); } else { Material.SetTexture("_GreenChannelNormalTex", (Texture)null); } Material.SetFloat("_GreenChannelSmoothness", _GreenChannelSmoothness); Material.SetFloat("_GreenChannelBias", _GreenChannelBias); if (Object.op_Implicit((Object)(object)_BlueChannelTex)) { Material.SetTexture("_BlueChannelTex", _BlueChannelTex); } else { Material.SetTexture("_BlueChannelTex", (Texture)null); } if (Object.op_Implicit((Object)(object)_BlueChannelNormalTex)) { Material.SetTexture("_BlueChannelNormalTex", _BlueChannelNormalTex); } else { Material.SetTexture("_BlueChannelNormalTex", (Texture)null); } Material.SetFloat("_BlueChannelSmoothness", _BlueChannelSmoothness); Material.SetFloat("_BlueChannelBias", _BlueChannelBias); SetShaderKeywordBasedOnBool(_EnableFlowmap, Material, "FLOWMAP"); if (Object.op_Implicit((Object)(object)_FlowTexture)) { Material.SetTexture("_FlowTex", _FlowTexture); } else { Material.SetTexture("_FlowTex", (Texture)null); } if (Object.op_Implicit((Object)(object)_FlowHeightmap)) { Material.SetTexture("_FlowHeightmap", _FlowHeightmap); Material.SetTextureScale("_FlowHeightmap", _FlowHeightmapScale); Material.SetTextureOffset("_FlowHeightmap", _FlowHeightmapOffset); } else { Material.SetTexture("_FlowHeightmap", (Texture)null); } if (Object.op_Implicit((Object)(object)_FlowHeightRamp)) { Material.SetTexture("_FlowHeightRamp", _FlowHeightRamp); Material.SetTextureScale("_FlowHeightRamp", _FlowHeightRampScale); Material.SetTextureOffset("_FlowHeightRamp", _FlowHeightRampOffset); } else { Material.SetTexture("_FlowHeightRamp", (Texture)null); } Material.SetFloat("_FlowHeightBias", _FlowHeightBias); Material.SetFloat("_FlowHeightPower", _FlowHeightPower); Material.SetFloat("_FlowEmissionStrength", _FlowEmissionStrength); Material.SetFloat("_FlowSpeed", _FlowSpeed); Material.SetFloat("_FlowMaskStrength", _MaskFlowStrength); Material.SetFloat("_FlowNormalStrength", _NormalFlowStrength); Material.SetFloat("_FlowTextureScaleFactor", _FlowTextureScaleFactor); SetShaderKeywordBasedOnBool(_EnableLimbRemoval, Material, "LIMBREMOVAL"); } } } public class HGCloudRemapController : MonoBehaviour { public enum _SrcBlendFloatEnum { Zero, One, DstColor, SrcColor, OneMinusDstColor, SrcAlpha, OneMinusSrcColor, DstAlpha, OneMinusDstAlpha, SrcAlphaSaturate, OneMinusSrcAlpha } public enum _DstBlendFloatEnum { Zero, One, DstColor, SrcColor, OneMinusDstColor, SrcAlpha, OneMinusSrcColor, DstAlpha, OneMinusDstAlpha, SrcAlphaSaturate, OneMinusSrcAlpha } public enum _CullEnum { Off, Front, Back } public enum _ZTestEnum { Disabled, Never, Less, Equal, LessEqual, Greater, NotEqual, GreaterEqual, Always } public Material Material; public Renderer Renderer; public string MaterialName; public _SrcBlendFloatEnum _Source_Blend_Mode; public _DstBlendFloatEnum _Destination_Blend_Mode; public int _InternalSimpleBlendMode; public Color _Tint; public bool _DisableRemapping; public Texture _MainTex; public Vector2 _MainTexScale; public Vector2 _MainTexOffset; public Texture _RemapTex; public Vector2 _RemapTexScale; public Vector2 _RemapTexOffset; [Range(0f, 2f)] public float _SoftFactor; [Range(1f, 20f)] public float _BrightnessBoost; [Range(0f, 20f)] public float _AlphaBoost; [Range(0f, 1f)] public float _AlphaBias; public bool _UseUV1; public bool _FadeWhenNearCamera; [Range(0f, 1f)] public float _FadeCloseDistance; public _CullEnum _Cull_Mode; public _ZTestEnum _ZTest_Mode; [Range(-10f, 10f)] public float _DepthOffset; public bool _CloudRemapping; public bool _DistortionClouds; [Range(-2f, 2f)] public float _DistortionStrength; public Texture _Cloud1Tex; public Vector2 _Cloud1TexScale; public Vector2 _Cloud1TexOffset; public Texture _Cloud2Tex; public Vector2 _Cloud2TexScale; public Vector2 _Cloud2TexOffset; public Vector4 _CutoffScroll; public bool _VertexColors; public bool _LuminanceForVertexAlpha; public bool _LuminanceForTextureAlpha; public bool _VertexOffset; public bool _FresnelFade; public bool _SkyboxOnly; [Range(-20f, 20f)] public float _FresnelPower; [Range(0f, 3f)] public float _VertexOffsetAmount; public void Start() { GrabMaterialValues(); } public void GrabMaterialValues() { //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_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_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) //IL_0250: Unknown result type (might be due to invalid IL or missing references) //IL_0261: Unknown result type (might be due to invalid IL or missing references) //IL_0266: 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_02a3: Unknown result type (might be due to invalid IL or missing references) //IL_02a8: Unknown result type (might be due to invalid IL or missing references) //IL_02b9: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)Material)) { _Source_Blend_Mode = (_SrcBlendFloatEnum)Material.GetFloat("_SrcBlend"); _Destination_Blend_Mode = (_DstBlendFloatEnum)Material.GetFloat("_DstBlend"); _InternalSimpleBlendMode = (int)Material.GetFloat("_InternalSimpleBlendMode"); _Tint = Material.GetColor("_TintColor"); _DisableRemapping = Material.IsKeywordEnabled("DISABLEREMAP"); _MainTex = Material.GetTexture("_MainTex"); _MainTexScale = Material.GetTextureScale("_MainTex"); _MainTexOffset = Material.GetTextureOffset("_MainTex"); _RemapTex = Material.GetTexture("_RemapTex"); _RemapTexScale = Material.GetTextureScale("_RemapTex"); _RemapTexOffset = Material.GetTextureOffset("_RemapTex"); _SoftFactor = Material.GetFloat("_InvFade"); _BrightnessBoost = Material.GetFloat("_Boost"); _AlphaBoost = Material.GetFloat("_AlphaBoost"); _AlphaBias = Material.GetFloat("_AlphaBias"); _UseUV1 = Material.IsKeywordEnabled("USE_UV1"); _FadeWhenNearCamera = Material.IsKeywordEnabled("FADECLOSE"); _FadeCloseDistance = Material.GetFloat("_FadeCloseDistance"); _Cull_Mode = (_CullEnum)Material.GetFloat("_Cull"); _ZTest_Mode = (_ZTestEnum)Material.GetFloat("_ZTest"); _DepthOffset = Material.GetFloat("_DepthOffset"); _CloudRemapping = Material.IsKeywordEnabled("USE_CLOUDS"); _DistortionClouds = Material.IsKeywordEnabled("CLOUDOFFSET"); _DistortionStrength = Material.GetFloat("_DistortionStrength"); _Cloud1Tex = Material.GetTexture("_Cloud1Tex"); _Cloud1TexScale = Material.GetTextureScale("_Cloud1Tex"); _Cloud1TexOffset = Material.GetTextureOffset("_Cloud1Tex"); _Cloud2Tex = Material.GetTexture("_Cloud2Tex"); _Cloud2TexScale = Material.GetTextureScale("_Cloud2Tex"); _Cloud2TexOffset = Material.GetTextureOffset("_Cloud2Tex"); _CutoffScroll = Material.GetVector("_CutoffScroll"); _VertexColors = Material.IsKeywordEnabled("VERTEXCOLOR"); _LuminanceForVertexAlpha = Material.IsKeywordEnabled("VERTEXALPHA"); _LuminanceForTextureAlpha = Material.IsKeywordEnabled("CALCTEXTUREALPHA"); _VertexOffset = Material.IsKeywordEnabled("VERTEXOFFSET"); _FresnelFade = Material.IsKeywordEnabled("FRESNEL"); _SkyboxOnly = Material.IsKeywordEnabled("SKYBOX_ONLY"); _FresnelPower = Material.GetFloat("_FresnelPower"); _VertexOffsetAmount = Material.GetFloat("_OffsetAmount"); MaterialName = ((Object)Material).name; } } public void Update() { //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_032d: Unknown result type (might be due to invalid IL or missing references) //IL_0344: Unknown result type (might be due to invalid IL or missing references) //IL_039b: Unknown result type (might be due to invalid IL or missing references) //IL_03b2: Unknown result type (might be due to invalid IL or missing references) //IL_03e0: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)Material)) { if (((Object)Material).name != MaterialName && Object.op_Implicit((Object)(object)Renderer)) { GrabMaterialValues(); PutMaterialIntoMeshRenderer(Renderer, Material); } Material.SetFloat("_SrcBlend", Convert.ToSingle(_Source_Blend_Mode)); Material.SetFloat("_DstBlend", Convert.ToSingle(_Destination_Blend_Mode)); Material.SetFloat("_InternalSimpleBlendMode", (float)_InternalSimpleBlendMode); Material.SetColor("_TintColor", _Tint); SetShaderKeywordBasedOnBool(_DisableRemapping, Material, "DISABLEREMAP"); if (Object.op_Implicit((Object)(object)_MainTex)) { Material.SetTexture("_MainTex", _MainTex); Material.SetTextureScale("_MainTex", _MainTexScale); Material.SetTextureOffset("_MainTex", _MainTexOffset); } else { Material.SetTexture("_MainTex", (Texture)null); } if (Object.op_Implicit((Object)(object)_RemapTex)) { Material.SetTexture("_RemapTex", _RemapTex); Material.SetTextureScale("_RemapTex", _RemapTexScale); Material.SetTextureOffset("_RemapTex", _RemapTexOffset); } else { Material.SetTexture("_RemapTex", (Texture)null); } Material.SetFloat("_InvFade", _SoftFactor); Material.SetFloat("_Boost", _BrightnessBoost); Material.SetFloat("_AlphaBoost", _AlphaBoost); Material.SetFloat("_AlphaBias", _AlphaBias); SetShaderKeywordBasedOnBool(_UseUV1, Material, "USE_UV1"); SetShaderKeywordBasedOnBool(_FadeWhenNearCamera, Material, "FADECLOSE"); Material.SetFloat("_FadeCloseDistance", _FadeCloseDistance); Material.SetFloat("_Cull", Convert.ToSingle(_Cull_Mode)); Material.SetFloat("_ZTest", Convert.ToSingle(_ZTest_Mode)); Material.SetFloat("_DepthOffset", _DepthOffset); SetShaderKeywordBasedOnBool(_CloudRemapping, Material, "USE_CLOUDS"); SetShaderKeywordBasedOnBool(_DistortionClouds, Material, "CLOUDOFFSET"); Material.SetFloat("_DistortionStrength", _DistortionStrength); if (Object.op_Implicit((Object)(object)_Cloud1Tex)) { Material.SetTexture("_Cloud1Tex", _Cloud1Tex); Material.SetTextureScale("_Cloud1Tex", _Cloud1TexScale); Material.SetTextureOffset("_Cloud1Tex", _Cloud1TexOffset); } else { Material.SetTexture("_Cloud1Tex", (Texture)null); } if (Object.op_Implicit((Object)(object)_Cloud2Tex)) { Material.SetTexture("_Cloud2Tex", _Cloud2Tex); Material.SetTextureScale("_Cloud2Tex", _Cloud2TexScale); Material.SetTextureOffset("_Cloud2Tex", _Cloud2TexOffset); } else { Material.SetTexture("_Cloud2Tex", (Texture)null); } Material.SetVector("_CutoffScroll", _CutoffScroll); SetShaderKeywordBasedOnBool(_VertexColors, Material, "VERTEXCOLOR"); SetShaderKeywordBasedOnBool(_LuminanceForVertexAlpha, Material, "VERTEXALPHA"); SetShaderKeywordBasedOnBool(_LuminanceForTextureAlpha, Material, "CALCTEXTUREALPHA"); SetShaderKeywordBasedOnBool(_VertexOffset, Material, "VERTEXOFFSET"); SetShaderKeywordBasedOnBool(_FresnelFade, Material, "FRESNEL"); SetShaderKeywordBasedOnBool(_SkyboxOnly, Material, "SKYBOX_ONLY"); Material.SetFloat("_FresnelPower", _FresnelPower); Material.SetFloat("_OffsetAmount", _VertexOffsetAmount); } } } public class HGIntersectionController : MonoBehaviour { public enum _SrcBlendFloatEnum { Zero, One, DstColor, SrcColor, OneMinusDstColor, SrcAlpha, OneMinusSrcColor, DstAlpha, OneMinusDstAlpha, SrcAlphaSaturate, OneMinusSrcAlpha } public enum _DstBlendFloatEnum { Zero, One, DstColor, SrcColor, OneMinusDstColor, SrcAlpha, OneMinusSrcColor, DstAlpha, OneMinusDstAlpha, SrcAlphaSaturate, OneMinusSrcAlpha } public enum _CullEnum { Off, Front, Back } public Material Material; public Renderer Renderer; public string MaterialName; public _SrcBlendFloatEnum _Source_Blend_Mode; public _DstBlendFloatEnum _Destination_Blend_Mode; public Color _Tint; public Texture _MainTex; public Vector2 _MainTexScale; public Vector2 _MainTexOffset; public Texture _Cloud1Tex; public Vector2 _Cloud1TexScale; public Vector2 _Cloud1TexOffset; public Texture _Cloud2Tex; public Vector2 _Cloud2TexScale; public Vector2 _Cloud2TexOffset; public Texture _RemapTex; public Vector2 _RemapTexScale; public Vector2 _RemapTexOffset; public Vector4 _CutoffScroll; [Range(0f, 30f)] public float _SoftFactor; [Range(0.1f, 20f)] public float _SoftPower; [Range(0f, 5f)] public float _BrightnessBoost; [Range(0.1f, 20f)] public float _RimPower; [Range(0f, 5f)] public float _RimStrength; [Range(0f, 20f)] public float _AlphaBoost; [Range(0f, 20f)] public float _IntersectionStrength; public _CullEnum _Cull_Mode; public bool _FadeFromVertexColorsOn; public bool _EnableTriplanarProjectionsForClouds; public void Start() { GrabMaterialValues(); } public void GrabMaterialValues() { //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_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_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: 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_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0119: 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_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015b: 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_0171: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)Material)) { _Source_Blend_Mode = (_SrcBlendFloatEnum)Material.GetFloat("_SrcBlendFloat"); _Destination_Blend_Mode = (_DstBlendFloatEnum)Material.GetFloat("_DstBlendFloat"); _Tint = Material.GetColor("_TintColor"); _MainTex = Material.GetTexture("_MainTex"); _MainTexScale = Material.GetTextureScale("_MainTex"); _MainTexOffset = Material.GetTextureOffset("_MainTex"); _Cloud1Tex = Material.GetTexture("_Cloud1Tex"); _Cloud1TexScale = Material.GetTextureScale("_Cloud1Tex"); _Cloud1TexOffset = Material.GetTextureOffset("_Cloud1Tex"); _Cloud2Tex = Material.GetTexture("_Cloud2Tex"); _Cloud2TexScale = Material.GetTextureScale("_Cloud2Tex"); _Cloud2TexOffset = Material.GetTextureOffset("_Cloud2Tex"); _RemapTex = Material.GetTexture("_RemapTex"); _RemapTexScale = Material.GetTextureScale("_RemapTex"); _RemapTexOffset = Material.GetTextureOffset("_RemapTex"); _CutoffScroll = Material.GetVector("_CutoffScroll"); _SoftFactor = Material.GetFloat("_InvFade"); _SoftPower = Material.GetFloat("_SoftPower"); _BrightnessBoost = Material.GetFloat("_Boost"); _RimPower = Material.GetFloat("_RimPower"); _RimStrength = Material.GetFloat("_RimStrength"); _AlphaBoost = Material.GetFloat("_AlphaBoost"); _IntersectionStrength = Material.GetFloat("_IntersectionStrength"); _Cull_Mode = (_CullEnum)Material.GetFloat("_Cull"); _FadeFromVertexColorsOn = Material.IsKeywordEnabled("FADE_FROM_VERTEX_COLORS"); _EnableTriplanarProjectionsForClouds = Material.IsKeywordEnabled("TRIPLANAR"); MaterialName = ((Object)Material).name; } } public void Update() { //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: 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_0168: 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_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_0272: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)Material)) { if (((Object)Material).name != MaterialName && Object.op_Implicit((Object)(object)Renderer)) { GrabMaterialValues(); PutMaterialIntoMeshRenderer(Renderer, Material); } Material.SetFloat("_SrcBlendFloat", Convert.ToSingle(_Source_Blend_Mode)); Material.SetFloat("_DstBlendFloat", Convert.ToSingle(_Destination_Blend_Mode)); Material.SetColor("_TintColor", _Tint); if (Object.op_Implicit((Object)(object)_MainTex)) { Material.SetTexture("_MainTex", _MainTex); Material.SetTextureScale("_MainTex", _MainTexScale); Material.SetTextureOffset("_MainTex", _MainTexOffset); } else { Material.SetTexture("_MainTex", (Texture)null); } if (Object.op_Implicit((Object)(object)_Cloud1Tex)) { Material.SetTexture("_Cloud1Tex", _Cloud1Tex); Material.SetTextureScale("_Cloud1Tex", _Cloud1TexScale); Material.SetTextureOffset("_Cloud1Tex", _Cloud1TexOffset); } else { Material.SetTexture("_Cloud1Tex", (Texture)null); } if (Object.op_Implicit((Object)(object)_Cloud2Tex)) { Material.SetTexture("_Cloud2Tex", _Cloud2Tex); Material.SetTextureScale("_Cloud2Tex", _Cloud2TexScale); Material.SetTextureOffset("_Cloud2Tex", _Cloud2TexOffset); } else { Material.SetTexture("_Cloud2Tex", (Texture)null); } if (Object.op_Implicit((Object)(object)_RemapTex)) { Material.SetTexture("_RemapTex", _RemapTex); Material.SetTextureScale("_RemapTex", _RemapTexScale); Material.SetTextureOffset("_RemapTex", _RemapTexOffset); } else { Material.SetTexture("_RemapTex", (Texture)null); } Material.SetVector("_CutoffScroll", _CutoffScroll); Material.SetFloat("_InvFade", _SoftFactor); Material.SetFloat("_SoftPower", _SoftPower); Material.SetFloat("_Boost", _BrightnessBoost); Material.SetFloat("_RimPower", _RimPower); Material.SetFloat("_RimStrength", _RimStrength); Material.SetFloat("_AlphaBoost", _AlphaBoost); Material.SetFloat("_IntersectionStrength", _IntersectionStrength); Material.SetFloat("_Cull", Convert.ToSingle(_Cull_Mode)); SetShaderKeywordBasedOnBool(_FadeFromVertexColorsOn, Material, "FADE_FROM_VERTEX_COLORS"); SetShaderKeywordBasedOnBool(_EnableTriplanarProjectionsForClouds, Material, "TRIPLANAR"); } } } public static void SetShaderKeywordBasedOnBool(bool enabled, Material material, string keyword) { if (!Object.op_Implicit((Object)(object)material)) { return; } if (enabled) { if (!material.IsKeywordEnabled(keyword)) { material.EnableKeyword(keyword); } } else if (material.IsKeywordEnabled(keyword)) { material.DisableKeyword(keyword); } } public static void PutMaterialIntoMeshRenderer(Renderer renderer, Material material) { if (Object.op_Implicit((Object)(object)material) && Object.op_Implicit((Object)(object)renderer)) { renderer.materials[0] = material; } } } } namespace ClassicItemsReturns.SharedHooks { public static class ModifyFinalDamage { public delegate void ModifyFinalDamageDelegate(DamageMult damageMult, DamageInfo damageInfo, HealthComponent victim, CharacterBody victimBody, CharacterBody attackerBody, Inventory attackerInventory); public class DamageMult { public float damageMult = 1f; } [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<Instruction, bool> <>9__2_2; public static Func<float, HealthComponent, DamageInfo, float> <>9__2_1; public static Manipulator <>9__2_0; internal void <Initialize>b__2_0(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_003c: 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) ILCursor val = new ILCursor(il); if (val.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, 7) })) { val.Emit(OpCodes.Ldarg_0); val.Emit(OpCodes.Ldarg_1); val.EmitDelegate<Func<float, HealthComponent, DamageInfo, float>>((Func<float, HealthComponent, DamageInfo, float>)delegate(float origDamage, HealthComponent victimHealth, DamageInfo damageInfo) { float num = origDamage; CharacterBody body = victimHealth.body; if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)damageInfo.attacker)) { CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component)) { Inventory inventory = component.inventory; if (Object.op_Implicit((Object)(object)inventory)) { DamageMult damageMult = new DamageMult(); if (ModifyFinalDamageActions != null) { ModifyFinalDamageActions(damageMult, damageInfo, victimHealth, body, component, inventory); num *= damageMult.damageMult; } } } } return num; }); } else { Debug.LogError((object)"ClassicItemsReturns: ModifyFinalDamage IL Hook failed. This will break a lot of things."); } } internal bool <Initialize>b__2_2(Instruction x) { return ILPatternMatchingExt.MatchStloc(x, 7); } internal float <Initialize>b__2_1(float origDamage, HealthComponent victimHealth, DamageInfo damageInfo) { float num = origDamage; CharacterBody body = victimHealth.body; if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)damageInfo.attacker)) { CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component)) { Inventory inventory = component.inventory; if (Object.op_Implicit((Object)(object)inventory)) { DamageMult damageMult = new DamageMult(); if (ModifyFinalDamageActions != null) { ModifyFinalDamageActions(damageMult, damageInfo, victimHealth, body, component, inventory); num *= damageMult.damageMult; } } } } return num; } } public static ModifyFinalDamageDelegate ModifyFinalDamageActions; public static void Initialize() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__2_0; if (obj == null) { Manipulator val = delegate(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_003c: 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) ILCursor val2 = new ILCursor(il); if (val2.TryGotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchStloc(x, 7) })) { val2.Emit(OpCodes.Ldarg_0); val2.Emit(OpCodes.Ldarg_1); val2.EmitDelegate<Func<float, HealthComponent, DamageInfo, float>>((Func<float, HealthComponent, DamageInfo, float>)delegate(float origDamage, HealthComponent victimHealth, DamageInfo damageInfo) { float num = origDamage; CharacterBody body = victimHealth.body; if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)damageInfo.attacker)) { CharacterBody component = damageInfo.attacker.GetComponent<Char