Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of ImprovedSurvivorAI v1.6.0
ImprovedSurvivorAI/ImprovedSurvivorAI.dll
Decompiled a month ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates; using EntityStates.Captain.Weapon; using EntityStates.Chef; using EntityStates.Seeker; using EntityStates.Toolbot; using HG.GeneralSerializer; using IL.EntityStates.Chef; using Mono.Cecil.Cil; using MonoMod.Cil; using On.EntityStates.Captain.Weapon; using On.EntityStates.Chef; using On.EntityStates.Seeker; using On.EntityStates.Toolbot; using On.RoR2; using On.RoR2.CharacterAI; using RoR2; using RoR2.CharacterAI; using RoR2.Skills; using UnityEngine; using UnityEngine.AddressableAssets; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: AssemblyCompany("ImprovedSurvivorAI")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("ImprovedSurvivorAI")] [assembly: AssemblyTitle("ImprovedSurvivorAI")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace ImprovedSurvivorAI; public class BetterTargetingComponent : MonoBehaviour { private CharacterMaster master; private void Awake() { master = ((Component)this).gameObject.GetComponent<CharacterMaster>(); } private void OnEnable() { if (Object.op_Implicit((Object)(object)master)) { Main.activeBetterTargetingMasters.Add(master); } } private void OnDisable() { if (Object.op_Implicit((Object)(object)master)) { Main.activeBetterTargetingMasters.Remove(master); } } } public class AttackSpeedScaledSkillDriver : MonoBehaviour { public AISkillDriver skillDriver; public CharacterMaster master; public CharacterBody body; public float skillDriverBaseDuration; public float fixedDuration; private void Awake() { master = ((Component)this).gameObject.GetComponent<CharacterMaster>(); if (Object.op_Implicit((Object)(object)skillDriver)) { skillDriverBaseDuration = skillDriver.driverUpdateTimerOverride - fixedDuration; } } private void OnEnable() { if (Object.op_Implicit((Object)(object)master)) { master.onBodyStart += OnBodyStart; master.onBodyDestroyed += OnBodyDestroyed; } } private void OnDisable() { if (Object.op_Implicit((Object)(object)master)) { master.onBodyStart -= OnBodyStart; master.onBodyDestroyed -= OnBodyDestroyed; } } private void OnBodyStart(CharacterBody characterBody) { body = characterBody; body.onRecalculateStats += OnRecalculateStats; } private void OnBodyDestroyed(CharacterBody characterBody) { body.onRecalculateStats -= OnRecalculateStats; } private void OnRecalculateStats(CharacterBody characterBody) { if (Object.op_Implicit((Object)(object)skillDriver)) { skillDriver.driverUpdateTimerOverride = fixedDuration + skillDriverBaseDuration / characterBody.attackSpeed; } } } public static class Configs { public static ConfigEntry<bool> enableCaptainBeacons { get; private set; } public static ConfigEntry<bool> walkerTurretChanges { get; private set; } public static ConfigEntry<bool> walkerTurretSprint { get; private set; } public static ConfigEntry<float> walkerTurretRange { get; private set; } public static void Init(ConfigFile cfg) { enableCaptainBeacons = cfg.Bind<bool>("Captain", "Enable Supply Beacons", true, "Minion Captains will drop both Supply Beacons as soon as they spawn."); walkerTurretChanges = cfg.Bind<bool>("Mobile Turrets", "Enable Mobile Turret Changes", true, "Enable the configs pertaining to Engineer's mobile turrets."); walkerTurretSprint = cfg.Bind<bool>("Mobile Turrets", "Enable Mobile Turret Sprint", true, "Mobile turrets sprint when following their owner."); walkerTurretRange = cfg.Bind<float>("Mobile Turrets", "Mobile Turret Range", 35f, "Mobile turrets start attacking from this far away. Set to a negative value for no change. Vanilla is 25."); } } public class InitSurvivors { public static void AdjustVanillaSurvivors() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01e5: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_020a: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Unknown result type (might be due to invalid IL or missing references) //IL_027e: Unknown result type (might be due to invalid IL or missing references) //IL_029e: 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) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/CommandoMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val); new CommandoAI(val); GameObject val2 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val2); new HuntressAI(val2); GameObject val3 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/Bandit2MonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val3); new BanditAI(val3); GameObject val4 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Toolbot/ToolbotMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val4); new MultAI(val4); GameObject val5 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Engi/EngiMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val5); new EngineerAI(val5); GameObject val6 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val6); new ArtificerAI(val6); GameObject val7 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Merc/MercMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val7); new MercenaryAI(val7); GameObject val8 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Treebot/TreebotMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val8); new RexAI(val8); GameObject val9 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Loader/LoaderMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val9); new LoaderAI(val9); GameObject val10 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Croco/CrocoMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val10); new AcridAI(val10); GameObject val11 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Captain/CaptainMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val11); new CaptainAI(val11, Configs.enableCaptainBeacons.Value); GameObject val12 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/Railgunner/RailgunnerMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val12); new RailgunnerAI(val12); GameObject val13 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidSurvivor/VoidSurvivorMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val13); new VoidFiendAI(val13); GameObject val14 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Seeker/SeekerMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val14); new SeekerAI(val14); GameObject val15 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/FalseSon/FalseSonMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val15); new FalseSonAI(val15); GameObject val16 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Chef/ChefMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val16); new ChefAI(val16); GameObject val17 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC3/Drone Tech/DroneTechMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val17); new OperatorAI(val17); GameObject val18 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC3/Drifter/DrifterMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val18); new DrifterAI(val18); GameObject val19 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Heretic/HereticMonsterMaster.prefab").WaitForCompletion(); Main.ClearSkillDrivers(val19); new HereticAI(val19); } public static void AdjustModdedSurvivors() { GameObject val = MasterCatalog.FindMasterPrefab("EnforcerMonsterMaster"); if (Object.op_Implicit((Object)(object)val)) { Main.ClearSkillDrivers(val); new EnforcerAI(val); } GameObject val2 = MasterCatalog.FindMasterPrefab("NemesisEnforcerMonsterMaster"); if (Object.op_Implicit((Object)(object)val2)) { Main.ClearSkillDrivers(val2); new NemesisEnforcerAI(val2); } GameObject val3 = MasterCatalog.FindMasterPrefab("SonicTheHedgehogMonsterMaster"); if (Object.op_Implicit((Object)(object)val3)) { Main.ClearSkillDrivers(val3); new SonicAI(val3); } } } internal static class Log { private static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void Debug(object data) { _logSource.LogDebug(data); } internal static void Error(object data) { _logSource.LogError(data); } internal static void Fatal(object data) { _logSource.LogFatal(data); } internal static void Info(object data) { _logSource.LogInfo(data); } internal static void Message(object data) { _logSource.LogMessage(data); } internal static void Warning(object data) { _logSource.LogWarning(data); } } [BepInPlugin("Samuel17.ImprovedSurvivorAI", "ImprovedSurvivorAI", "1.6.0")] public class Main : BaseUnityPlugin { public static List<CharacterMaster> activeBetterTargetingMasters = new List<CharacterMaster>(); public static SkillDef[] listSkillDefs; public static EntityStateConfiguration walkerTurretBeam = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)"RoR2/Base/Engi/EntityStates.EngiTurret.EngiTurretWeapon.FireBeam.asset").WaitForCompletion(); public void Awake() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected O, but got Unknown //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Expected O, but got Unknown Log.Init(((BaseUnityPlugin)this).Logger); Configs.Init(((BaseUnityPlugin)this).Config); BaseAI.EvaluateSkillDrivers += new hook_EvaluateSkillDrivers(InfiniVisionLite); BullseyeSearch.GetResults += new hook_GetResults(IgnoreTheDead); GlobalEventManager.onCharacterDeathGlobal += GlobalEventManager_onCharacterDeathGlobal; CharacterMaster.SetUpGummyClone += new hook_SetUpGummyClone(GummyCloneTargeting); InitSurvivors.AdjustVanillaSurvivors(); AdjustWalkerTurrets(); RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, (Action)delegate { listSkillDefs = SkillCatalog._allSkillDefs; InitSurvivors.AdjustModdedSurvivors(); }); } private void AdjustWalkerTurrets() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) if (!Configs.walkerTurretChanges.Value) { return; } GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Engi/EngiWalkerTurretMaster.prefab").WaitForCompletion(); AISkillDriver[] components = val.GetComponents<AISkillDriver>(); AISkillDriver[] array = components; foreach (AISkillDriver val2 in array) { string customName = val2.customName; string text = customName; if (!(text == "ReturnToLeader")) { if (text == "ChaseAndFireAtEnemy" && Configs.walkerTurretRange.Value >= 0f) { val2.maxDistance = Mathf.Max(Configs.walkerTurretRange.Value, 0f); walkerTurretBeam.TryModifyFieldValue("maxDistance", val2.maxDistance); } } else if (val2.minDistance == 6f && Configs.walkerTurretSprint.Value) { val2.shouldSprint = true; } } } public static void ClearSkillDrivers(GameObject survivorMaster) { AISkillDriver[] components = survivorMaster.GetComponents<AISkillDriver>(); AISkillDriver[] array = components; foreach (AISkillDriver val in array) { Object.Destroy((Object)(object)val); } survivorMaster.AddComponent<BetterTargetingComponent>(); Log.Message("Added " + ((Object)survivorMaster).name + " to the list of Survivor masters."); } private SkillDriverEvaluation InfiniVisionLite(orig_EvaluateSkillDrivers orig, BaseAI self) { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) if (HasBetterTargeting((Object)(object)self) && (!Object.op_Implicit((Object)(object)self.currentEnemy.gameObject) || !Object.op_Implicit((Object)(object)self.currentEnemy.healthComponent) || self.currentEnemy.healthComponent.alive)) { self.ForceAcquireNearestEnemyIfNoCurrentEnemy(); } return orig.Invoke(self); } private IEnumerable<HurtBox> IgnoreTheDead(orig_GetResults orig, BullseyeSearch self) { _ = self.candidatesEnumerable; self.candidatesEnumerable.RemoveAll((CandidateInfo candidateInfo) => !candidateInfo.hurtBox.healthComponent.alive); return orig.Invoke(self); } private void GlobalEventManager_onCharacterDeathGlobal(DamageReport damageReport) { foreach (CharacterMaster activeBetterTargetingMaster in activeBetterTargetingMasters) { CharacterBody victimBody = damageReport.victimBody; BaseAI component = ((Component)activeBetterTargetingMaster).GetComponent<BaseAI>(); if (Object.op_Implicit((Object)(object)component) && component.currentEnemy != null && (Object)(object)component.currentEnemy.characterBody == (Object)(object)victimBody) { component.currentEnemy.Reset(); } } } private void GummyCloneTargeting(orig_SetUpGummyClone orig, CharacterMaster self) { orig.Invoke(self); BaseAI component = ((Component)self).GetComponent<BaseAI>(); if (Object.op_Implicit((Object)(object)component) && HasBetterTargeting((Object)(object)component)) { component.copyLeaderTarget = true; } } public bool HasBetterTargeting(Object self) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Expected O, but got Unknown if (!Object.op_Implicit(self)) { return false; } if (((object)self).GetType() == typeof(BaseAI)) { BaseAI val = (BaseAI)self; return Object.op_Implicit((Object)(object)val.master) && Object.op_Implicit((Object)(object)((Component)val.master).gameObject.GetComponent<BetterTargetingComponent>()); } if (((object)self).GetType() == typeof(CharacterMaster)) { CharacterMaster val2 = (CharacterMaster)self; return Object.op_Implicit((Object)(object)((Component)val2).gameObject.GetComponent<BetterTargetingComponent>()); } return false; } } internal class AcridAI { public static SkillDef spitSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Croco/CrocoSpit.asset").WaitForCompletion(); public static SkillDef biteSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Croco/CrocoBite.asset").WaitForCompletion(); public AcridAI(GameObject masterObject) { //IL_004a: 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_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0117: 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_0148: 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_019a: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_01f8: Unknown result type (might be due to invalid IL or missing references) //IL_0230: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_0260: Unknown result type (might be due to invalid IL or missing references) //IL_0270: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Unknown result type (might be due to invalid IL or missing references) //IL_02c0: Unknown result type (might be due to invalid IL or missing references) //IL_02c8: Unknown result type (might be due to invalid IL or missing references) //IL_02f0: Unknown result type (might be due to invalid IL or missing references) //IL_030c: Unknown result type (might be due to invalid IL or missing references) //IL_0324: Unknown result type (might be due to invalid IL or missing references) //IL_035c: Unknown result type (might be due to invalid IL or missing references) //IL_0364: Unknown result type (might be due to invalid IL or missing references) //IL_038c: Unknown result type (might be due to invalid IL or missing references) //IL_03a8: Unknown result type (might be due to invalid IL or missing references) //IL_03c0: Unknown result type (might be due to invalid IL or missing references) //IL_03f8: Unknown result type (might be due to invalid IL or missing references) //IL_0400: Unknown result type (might be due to invalid IL or missing references) //IL_0428: Unknown result type (might be due to invalid IL or missing references) //IL_0438: Unknown result type (might be due to invalid IL or missing references) //IL_0450: Unknown result type (might be due to invalid IL or missing references) //IL_0488: Unknown result type (might be due to invalid IL or missing references) //IL_0490: Unknown result type (might be due to invalid IL or missing references) //IL_04b8: Unknown result type (might be due to invalid IL or missing references) //IL_04d0: Unknown result type (might be due to invalid IL or missing references) //IL_04e8: Unknown result type (might be due to invalid IL or missing references) //IL_0520: Unknown result type (might be due to invalid IL or missing references) //IL_0528: Unknown result type (might be due to invalid IL or missing references) //IL_0550: Unknown result type (might be due to invalid IL or missing references) //IL_0560: 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_05b0: Unknown result type (might be due to invalid IL or missing references) //IL_05b8: Unknown result type (might be due to invalid IL or missing references) //IL_05e0: Unknown result type (might be due to invalid IL or missing references) //IL_05f8: Unknown result type (might be due to invalid IL or missing references) //IL_0610: Unknown result type (might be due to invalid IL or missing references) //IL_0648: Unknown result type (might be due to invalid IL or missing references) //IL_0650: Unknown result type (might be due to invalid IL or missing references) //IL_0678: Unknown result type (might be due to invalid IL or missing references) //IL_0690: Unknown result type (might be due to invalid IL or missing references) //IL_06a8: Unknown result type (might be due to invalid IL or missing references) //IL_06e0: Unknown result type (might be due to invalid IL or missing references) //IL_06e8: Unknown result type (might be due to invalid IL or missing references) //IL_0710: Unknown result type (might be due to invalid IL or missing references) BaseAI component = masterObject.GetComponent<BaseAI>(); if (Object.op_Implicit((Object)(object)component)) { component.fullVision = true; component.neverRetaliateFriendlies = true; component.aimVectorDampTime = 0.05f; component.aimVectorMaxSpeed = 720f; } AISkillDriver val = masterObject.AddComponent<AISkillDriver>(); val.skillSlot = (SkillSlot)3; val.requireSkillReady = true; val.requireEquipmentReady = false; val.moveTargetType = (TargetType)0; val.minDistance = 0f; val.maxDistance = 150f; val.selectionRequiresTargetLoS = true; val.activationRequiresTargetLoS = true; val.activationRequiresAimConfirmation = true; val.movementType = (MovementType)2; val.aimType = (AimType)2; val.ignoreNodeGraph = false; val.noRepeat = true; val.shouldSprint = true; val.shouldFireEquipment = false; val.buttonPressType = (ButtonPressType)2; AISkillDriver val2 = masterObject.AddComponent<AISkillDriver>(); val2.skillSlot = (SkillSlot)2; val2.requireSkillReady = true; val2.requireEquipmentReady = false; val2.moveTargetType = (TargetType)0; val2.minDistance = 0f; val2.maxDistance = 30f; val2.selectionRequiresTargetLoS = true; val2.activationRequiresTargetLoS = true; val2.activationRequiresAimConfirmation = true; val2.movementType = (MovementType)1; val2.aimType = (AimType)2; val2.ignoreNodeGraph = true; val2.noRepeat = true; val2.shouldSprint = true; val2.shouldFireEquipment = false; val2.buttonPressType = (ButtonPressType)2; AISkillDriver val3 = masterObject.AddComponent<AISkillDriver>(); val3.skillSlot = (SkillSlot)1; val3.requiredSkill = spitSkill; val3.requireSkillReady = true; val3.requireEquipmentReady = false; val3.moveTargetType = (TargetType)0; val3.minDistance = 0f; val3.maxDistance = 150f; val3.selectionRequiresTargetLoS = true; val3.activationRequiresTargetLoS = true; val3.activationRequiresAimConfirmation = true; val3.movementType = (MovementType)2; val3.aimType = (AimType)2; val3.ignoreNodeGraph = false; val3.noRepeat = false; val3.shouldSprint = true; val3.shouldFireEquipment = false; val3.buttonPressType = (ButtonPressType)2; AISkillDriver val4 = masterObject.AddComponent<AISkillDriver>(); val4.skillSlot = (SkillSlot)1; val4.requiredSkill = biteSkill; val4.requireSkillReady = true; val4.requireEquipmentReady = false; val4.moveTargetType = (TargetType)0; val4.minDistance = 0f; val4.maxDistance = 5f; val4.selectionRequiresTargetLoS = false; val4.activationRequiresTargetLoS = false; val4.activationRequiresAimConfirmation = true; val4.movementType = (MovementType)1; val4.aimType = (AimType)2; val4.ignoreNodeGraph = true; val4.noRepeat = false; val4.shouldSprint = true; val4.shouldFireEquipment = false; val4.buttonPressType = (ButtonPressType)2; AISkillDriver val5 = masterObject.AddComponent<AISkillDriver>(); val5.skillSlot = (SkillSlot)0; val5.requireSkillReady = true; val5.requireEquipmentReady = false; val5.moveTargetType = (TargetType)0; val5.minDistance = 0f; val5.maxDistance = 5f; val5.selectionRequiresTargetLoS = false; val5.activationRequiresTargetLoS = false; val5.activationRequiresAimConfirmation = false; val5.movementType = (MovementType)2; val5.aimType = (AimType)2; val5.ignoreNodeGraph = true; val5.noRepeat = false; val5.shouldSprint = false; val5.shouldFireEquipment = false; val5.buttonPressType = (ButtonPressType)0; val5.driverUpdateTimerOverride = 0.5f; AISkillDriver val6 = masterObject.AddComponent<AISkillDriver>(); val6.skillSlot = (SkillSlot)0; val6.requireSkillReady = true; val6.requireEquipmentReady = false; val6.moveTargetType = (TargetType)0; val6.minDistance = 0f; val6.maxDistance = 10f; val6.selectionRequiresTargetLoS = false; val6.activationRequiresTargetLoS = false; val6.activationRequiresAimConfirmation = false; val6.movementType = (MovementType)1; val6.aimType = (AimType)2; val6.ignoreNodeGraph = true; val6.noRepeat = false; val6.shouldSprint = false; val6.shouldFireEquipment = false; val6.buttonPressType = (ButtonPressType)0; val6.driverUpdateTimerOverride = 0.5f; AISkillDriver val7 = masterObject.AddComponent<AISkillDriver>(); val7.skillSlot = (SkillSlot)2; val7.requireSkillReady = false; val7.requireEquipmentReady = false; val7.moveTargetType = (TargetType)0; val7.minDistance = 40f; val7.maxDistance = 80f; val7.selectionRequiresTargetLoS = true; val7.activationRequiresTargetLoS = true; val7.activationRequiresAimConfirmation = false; val7.movementType = (MovementType)2; val7.aimType = (AimType)4; val7.ignoreNodeGraph = false; val7.noRepeat = false; val7.shouldSprint = true; val7.shouldFireEquipment = false; val7.buttonPressType = (ButtonPressType)2; AISkillDriver val8 = masterObject.AddComponent<AISkillDriver>(); val8.skillSlot = (SkillSlot)(-1); val8.requireSkillReady = false; val8.requireEquipmentReady = false; val8.moveTargetType = (TargetType)0; val8.minDistance = 0f; val8.maxDistance = 400f; val8.selectionRequiresTargetLoS = false; val8.activationRequiresTargetLoS = false; val8.activationRequiresAimConfirmation = false; val8.movementType = (MovementType)1; val8.aimType = (AimType)2; val8.ignoreNodeGraph = false; val8.noRepeat = false; val8.shouldSprint = true; val8.shouldFireEquipment = false; val8.buttonPressType = (ButtonPressType)1; val8.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val9 = masterObject.AddComponent<AISkillDriver>(); val9.skillSlot = (SkillSlot)2; val9.requireSkillReady = true; val9.requireEquipmentReady = false; val9.moveTargetType = (TargetType)2; val9.minDistance = 40f; val9.maxDistance = float.PositiveInfinity; val9.selectionRequiresTargetLoS = false; val9.activationRequiresTargetLoS = false; val9.activationRequiresAimConfirmation = true; val9.movementType = (MovementType)1; val9.aimType = (AimType)4; val9.ignoreNodeGraph = false; val9.noRepeat = true; val9.shouldSprint = true; val9.shouldFireEquipment = false; val9.buttonPressType = (ButtonPressType)2; AISkillDriver val10 = masterObject.AddComponent<AISkillDriver>(); val10.skillSlot = (SkillSlot)(-1); val10.requireSkillReady = false; val10.requireEquipmentReady = false; val10.moveTargetType = (TargetType)2; val10.minDistance = 15f; val10.maxDistance = float.PositiveInfinity; val10.selectionRequiresTargetLoS = false; val10.activationRequiresTargetLoS = false; val10.activationRequiresAimConfirmation = false; val10.movementType = (MovementType)1; val10.aimType = (AimType)3; val10.ignoreNodeGraph = false; val10.noRepeat = false; val10.shouldSprint = true; val10.shouldFireEquipment = false; val10.buttonPressType = (ButtonPressType)1; val10.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val11 = masterObject.AddComponent<AISkillDriver>(); val11.skillSlot = (SkillSlot)(-1); val11.requireSkillReady = false; val11.requireEquipmentReady = false; val11.moveTargetType = (TargetType)2; val11.minDistance = 0f; val11.maxDistance = 15f; val11.selectionRequiresTargetLoS = false; val11.activationRequiresTargetLoS = false; val11.activationRequiresAimConfirmation = false; val11.movementType = (MovementType)0; val11.aimType = (AimType)3; val11.ignoreNodeGraph = false; val11.noRepeat = false; val11.shouldSprint = false; val11.shouldFireEquipment = false; val11.buttonPressType = (ButtonPressType)1; val11.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val12 = masterObject.AddComponent<AISkillDriver>(); val12.skillSlot = (SkillSlot)(-1); val12.requireSkillReady = false; val12.requireEquipmentReady = false; val12.moveTargetType = (TargetType)0; val12.minDistance = 0f; val12.maxDistance = float.PositiveInfinity; val12.selectionRequiresTargetLoS = false; val12.activationRequiresTargetLoS = false; val12.activationRequiresAimConfirmation = false; val12.movementType = (MovementType)1; val12.aimType = (AimType)2; val12.ignoreNodeGraph = false; val12.noRepeat = false; val12.shouldSprint = true; val12.shouldFireEquipment = false; val12.buttonPressType = (ButtonPressType)1; val12.resetCurrentEnemyOnNextDriverSelection = true; } } public class ArtificerAI { public static SkillDef nanoBombSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Mage/MageBodyNovaBomb.asset").WaitForCompletion(); public static SkillDef nanoSpearSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Mage/MageBodyIceBomb.asset").WaitForCompletion(); public static SkillDef flamethrowerSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Mage/MageBodyFlamethrower.asset").WaitForCompletion(); public static SkillDef ionSurgeSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Mage/MageBodyFlyUp.asset").WaitForCompletion(); public ArtificerAI(GameObject masterObject) { //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_01fc: Unknown result type (might be due to invalid IL or missing references) //IL_0220: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_0260: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Unknown result type (might be due to invalid IL or missing references) //IL_02b2: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_030e: Unknown result type (might be due to invalid IL or missing references) //IL_0316: Unknown result type (might be due to invalid IL or missing references) //IL_033e: Unknown result type (might be due to invalid IL or missing references) //IL_0368: Unknown result type (might be due to invalid IL or missing references) //IL_0380: Unknown result type (might be due to invalid IL or missing references) //IL_03b8: Unknown result type (might be due to invalid IL or missing references) //IL_03c0: Unknown result type (might be due to invalid IL or missing references) //IL_03e8: Unknown result type (might be due to invalid IL or missing references) //IL_0404: Unknown result type (might be due to invalid IL or missing references) //IL_041c: Unknown result type (might be due to invalid IL or missing references) //IL_0454: Unknown result type (might be due to invalid IL or missing references) //IL_045c: Unknown result type (might be due to invalid IL or missing references) //IL_0484: Unknown result type (might be due to invalid IL or missing references) //IL_04a0: Unknown result type (might be due to invalid IL or missing references) //IL_04b8: Unknown result type (might be due to invalid IL or missing references) //IL_04f0: Unknown result type (might be due to invalid IL or missing references) //IL_04f8: 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_053c: Unknown result type (might be due to invalid IL or missing references) //IL_0554: Unknown result type (might be due to invalid IL or missing references) //IL_058c: Unknown result type (might be due to invalid IL or missing references) //IL_0594: Unknown result type (might be due to invalid IL or missing references) //IL_05bc: Unknown result type (might be due to invalid IL or missing references) //IL_05d4: Unknown result type (might be due to invalid IL or missing references) //IL_05ec: Unknown result type (might be due to invalid IL or missing references) //IL_0624: Unknown result type (might be due to invalid IL or missing references) //IL_062c: Unknown result type (might be due to invalid IL or missing references) //IL_0654: Unknown result type (might be due to invalid IL or missing references) //IL_066c: Unknown result type (might be due to invalid IL or missing references) //IL_0684: Unknown result type (might be due to invalid IL or missing references) //IL_06bc: Unknown result type (might be due to invalid IL or missing references) //IL_06c4: Unknown result type (might be due to invalid IL or missing references) //IL_06ec: Unknown result type (might be due to invalid IL or missing references) //IL_0704: Unknown result type (might be due to invalid IL or missing references) //IL_071c: Unknown result type (might be due to invalid IL or missing references) //IL_0754: Unknown result type (might be due to invalid IL or missing references) //IL_075c: Unknown result type (might be due to invalid IL or missing references) //IL_0784: Unknown result type (might be due to invalid IL or missing references) //IL_079c: Unknown result type (might be due to invalid IL or missing references) //IL_07b4: Unknown result type (might be due to invalid IL or missing references) //IL_07ec: Unknown result type (might be due to invalid IL or missing references) //IL_07f4: Unknown result type (might be due to invalid IL or missing references) //IL_081c: Unknown result type (might be due to invalid IL or missing references) BaseAI component = masterObject.GetComponent<BaseAI>(); if (Object.op_Implicit((Object)(object)component)) { component.fullVision = true; component.neverRetaliateFriendlies = true; component.aimVectorDampTime = 0.05f; component.aimVectorMaxSpeed = 720f; } masterObject.AddComponent<SnapfreezeTargeting>(); AISkillDriver val = masterObject.AddComponent<AISkillDriver>(); val.skillSlot = (SkillSlot)3; val.requiredSkill = ionSurgeSkill; val.requireSkillReady = true; val.requireEquipmentReady = false; val.moveTargetType = (TargetType)0; val.minDistance = 0f; val.maxDistance = 14f; val.selectionRequiresTargetLoS = true; val.activationRequiresTargetLoS = true; val.activationRequiresAimConfirmation = false; val.movementType = (MovementType)2; val.aimType = (AimType)2; val.ignoreNodeGraph = false; val.noRepeat = true; val.shouldSprint = true; val.shouldFireEquipment = false; val.buttonPressType = (ButtonPressType)2; AISkillDriver val2 = masterObject.AddComponent<AISkillDriver>(); val2.skillSlot = (SkillSlot)2; val2.requireSkillReady = true; val2.requireEquipmentReady = false; val2.moveTargetType = (TargetType)3; val2.minDistance = 0f; val2.maxDistance = 100f; val2.selectionRequiresTargetLoS = false; val2.activationRequiresTargetLoS = false; val2.activationRequiresAimConfirmation = false; val2.movementType = (MovementType)2; val2.aimType = (AimType)1; val2.ignoreNodeGraph = false; val2.noRepeat = true; val2.shouldSprint = false; val2.shouldFireEquipment = false; val2.buttonPressType = (ButtonPressType)0; val2.driverUpdateTimerOverride = 0.5f; AISkillDriver val3 = masterObject.AddComponent<AISkillDriver>(); val3.skillSlot = (SkillSlot)3; val3.requiredSkill = flamethrowerSkill; val3.requireSkillReady = true; val3.requireEquipmentReady = false; val3.moveTargetType = (TargetType)0; val3.minDistance = 0f; val3.maxDistance = 20f; val3.selectionRequiresTargetLoS = true; val3.activationRequiresTargetLoS = true; val3.activationRequiresAimConfirmation = false; val3.movementType = (MovementType)2; val3.aimType = (AimType)2; val3.ignoreNodeGraph = false; val3.noRepeat = true; val3.shouldSprint = false; val3.shouldFireEquipment = false; val3.buttonPressType = (ButtonPressType)0; val3.driverUpdateTimerOverride = 2f; AISkillDriver val4 = masterObject.AddComponent<AISkillDriver>(); val4.skillSlot = (SkillSlot)1; val4.requiredSkill = nanoBombSkill; val4.requireSkillReady = true; val4.requireEquipmentReady = false; val4.moveTargetType = (TargetType)0; val4.minDistance = 0f; val4.maxDistance = 50f; val4.selectionRequiresTargetLoS = true; val4.activationRequiresTargetLoS = true; val4.activationRequiresAimConfirmation = false; val4.movementType = (MovementType)2; val4.aimType = (AimType)2; val4.ignoreNodeGraph = false; val4.noRepeat = false; val4.shouldSprint = false; val4.shouldFireEquipment = false; val4.buttonPressType = (ButtonPressType)0; val4.driverUpdateTimerOverride = 2.2f; Utils.AddAtkSpeedScaling(masterObject, val4); AISkillDriver val5 = masterObject.AddComponent<AISkillDriver>(); val5.skillSlot = (SkillSlot)1; val5.requiredSkill = nanoSpearSkill; val5.requireSkillReady = true; val5.requireEquipmentReady = false; val5.moveTargetType = (TargetType)0; val5.minDistance = 0f; val5.maxDistance = 150f; val5.selectionRequiresTargetLoS = false; val5.activationRequiresTargetLoS = false; val5.activationRequiresAimConfirmation = false; val5.movementType = (MovementType)2; val5.aimType = (AimType)2; val5.ignoreNodeGraph = false; val5.noRepeat = false; val5.shouldSprint = false; val5.shouldFireEquipment = false; val5.buttonPressType = (ButtonPressType)0; val5.driverUpdateTimerOverride = 2.2f; Utils.AddAtkSpeedScaling(masterObject, val5); AISkillDriver val6 = masterObject.AddComponent<AISkillDriver>(); val6.skillSlot = (SkillSlot)0; val6.requireSkillReady = false; val6.requireEquipmentReady = false; val6.moveTargetType = (TargetType)0; val6.minDistance = 0f; val6.maxDistance = 20f; val6.selectionRequiresTargetLoS = true; val6.activationRequiresTargetLoS = true; val6.activationRequiresAimConfirmation = false; val6.movementType = (MovementType)3; val6.aimType = (AimType)2; val6.ignoreNodeGraph = false; val6.noRepeat = false; val6.shouldSprint = false; val6.shouldFireEquipment = false; val6.buttonPressType = (ButtonPressType)0; val6.driverUpdateTimerOverride = 0.5f; AISkillDriver val7 = masterObject.AddComponent<AISkillDriver>(); val7.skillSlot = (SkillSlot)0; val7.requireSkillReady = false; val7.requireEquipmentReady = false; val7.moveTargetType = (TargetType)0; val7.minDistance = 0f; val7.maxDistance = 60f; val7.selectionRequiresTargetLoS = true; val7.activationRequiresTargetLoS = true; val7.activationRequiresAimConfirmation = true; val7.movementType = (MovementType)2; val7.aimType = (AimType)2; val7.ignoreNodeGraph = false; val7.noRepeat = false; val7.shouldSprint = false; val7.shouldFireEquipment = false; val7.buttonPressType = (ButtonPressType)0; val7.driverUpdateTimerOverride = 0.5f; AISkillDriver val8 = masterObject.AddComponent<AISkillDriver>(); val8.skillSlot = (SkillSlot)0; val8.requireSkillReady = false; val8.requireEquipmentReady = false; val8.moveTargetType = (TargetType)0; val8.minDistance = 0f; val8.maxDistance = 150f; val8.selectionRequiresTargetLoS = true; val8.activationRequiresTargetLoS = true; val8.activationRequiresAimConfirmation = true; val8.movementType = (MovementType)1; val8.aimType = (AimType)2; val8.ignoreNodeGraph = false; val8.noRepeat = false; val8.shouldSprint = false; val8.shouldFireEquipment = false; val8.buttonPressType = (ButtonPressType)0; val8.driverUpdateTimerOverride = 0.5f; AISkillDriver val9 = masterObject.AddComponent<AISkillDriver>(); val9.skillSlot = (SkillSlot)(-1); val9.requireSkillReady = false; val9.requireEquipmentReady = false; val9.moveTargetType = (TargetType)0; val9.minDistance = 0f; val9.maxDistance = 400f; val9.selectionRequiresTargetLoS = false; val9.activationRequiresTargetLoS = false; val9.activationRequiresAimConfirmation = false; val9.movementType = (MovementType)1; val9.aimType = (AimType)2; val9.ignoreNodeGraph = false; val9.noRepeat = false; val9.shouldSprint = true; val9.shouldFireEquipment = false; val9.buttonPressType = (ButtonPressType)1; val9.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val10 = masterObject.AddComponent<AISkillDriver>(); val10.skillSlot = (SkillSlot)(-1); val10.requireSkillReady = false; val10.requireEquipmentReady = false; val10.moveTargetType = (TargetType)2; val10.minDistance = 15f; val10.maxDistance = float.PositiveInfinity; val10.selectionRequiresTargetLoS = false; val10.activationRequiresTargetLoS = false; val10.activationRequiresAimConfirmation = false; val10.movementType = (MovementType)1; val10.aimType = (AimType)3; val10.ignoreNodeGraph = false; val10.noRepeat = false; val10.shouldSprint = true; val10.shouldFireEquipment = false; val10.buttonPressType = (ButtonPressType)1; val10.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val11 = masterObject.AddComponent<AISkillDriver>(); val11.skillSlot = (SkillSlot)(-1); val11.requireSkillReady = false; val11.requireEquipmentReady = false; val11.moveTargetType = (TargetType)2; val11.minDistance = 0f; val11.maxDistance = 15f; val11.selectionRequiresTargetLoS = false; val11.activationRequiresTargetLoS = false; val11.activationRequiresAimConfirmation = false; val11.movementType = (MovementType)0; val11.aimType = (AimType)3; val11.ignoreNodeGraph = false; val11.noRepeat = false; val11.shouldSprint = false; val11.shouldFireEquipment = false; val11.buttonPressType = (ButtonPressType)1; val11.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val12 = masterObject.AddComponent<AISkillDriver>(); val12.skillSlot = (SkillSlot)(-1); val12.requireSkillReady = false; val12.requireEquipmentReady = false; val12.moveTargetType = (TargetType)0; val12.minDistance = 0f; val12.maxDistance = float.PositiveInfinity; val12.selectionRequiresTargetLoS = false; val12.activationRequiresTargetLoS = false; val12.activationRequiresAimConfirmation = false; val12.movementType = (MovementType)1; val12.aimType = (AimType)2; val12.ignoreNodeGraph = false; val12.noRepeat = false; val12.shouldSprint = true; val12.shouldFireEquipment = false; val12.buttonPressType = (ButtonPressType)1; val12.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val13 = masterObject.AddComponent<AISkillDriver>(); val13.skillSlot = (SkillSlot)(-1); val13.requireSkillReady = false; val13.requireEquipmentReady = false; val13.moveTargetType = (TargetType)3; val13.minDistance = 0f; val13.maxDistance = float.PositiveInfinity; val13.selectionRequiresTargetLoS = false; val13.activationRequiresTargetLoS = false; val13.activationRequiresAimConfirmation = false; val13.movementType = (MovementType)2; val13.aimType = (AimType)1; val13.ignoreNodeGraph = false; val13.noRepeat = false; val13.shouldSprint = false; val13.shouldFireEquipment = false; val13.buttonPressType = (ButtonPressType)1; val13.driverUpdateTimerOverride = 0.2f; val2.nextHighPriorityOverride = val13; } } public class SnapfreezeTargeting : MonoBehaviour { public static float updateInterval = 0.05f; public static float timer = 0f; private void FixedUpdate() { //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_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: 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_010e: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_016a: Unknown result type (might be due to invalid IL or missing references) timer += Time.fixedDeltaTime; if (timer < updateInterval) { return; } timer -= updateInterval; BaseAI component = ((Component)this).gameObject.GetComponent<BaseAI>(); if (!Object.op_Implicit((Object)(object)component) || !Object.op_Implicit((Object)(object)component.currentEnemy.gameObject) || !Object.op_Implicit((Object)(object)component.currentEnemy.characterBody)) { return; } Vector3 value = Vector3.zero; bool flag = false; if (component.HasLOS(component.currentEnemy.gameObject.transform.position)) { Ray val = default(Ray); ((Ray)(ref val))..ctor(component.currentEnemy.gameObject.transform.position, Vector3.down); float num = 8f + Mathf.Abs(component.currentEnemy.characterBody.transform.position.y - component.currentEnemy.characterBody.footPosition.y); RaycastHit val2 = default(RaycastHit); if (Physics.Raycast(val, ref val2, num, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask)) && component.HasLOS(((RaycastHit)(ref val2)).point + Vector3.up * 0.02f)) { flag = true; value = ((RaycastHit)(ref val2)).point + Vector3.up * 0.02f; } } if (flag) { component.customTarget._gameObject = component.currentEnemy.gameObject; component.customTarget.lastKnownBullseyePosition = value; component.customTarget.lastKnownBullseyePositionTime = FixedTimeStamp.now; component.customTarget.unset = false; } else { component.customTarget._gameObject = null; component.customTarget.lastKnownBullseyePosition = null; component.customTarget.lastKnownBullseyePositionTime = FixedTimeStamp.negativeInfinity; component.customTarget.unset = true; } } } internal class BanditAI { public static SkillDef serratedDaggerSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Bandit2/SlashBlade.asset").WaitForCompletion(); public static SkillDef serratedShivSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Bandit2/Bandit2SerratedShivs.asset").WaitForCompletion(); public BanditAI(GameObject masterObject) { //IL_004a: 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_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: 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_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_0208: Unknown result type (might be due to invalid IL or missing references) //IL_0240: Unknown result type (might be due to invalid IL or missing references) //IL_0248: Unknown result type (might be due to invalid IL or missing references) //IL_0270: Unknown result type (might be due to invalid IL or missing references) //IL_0280: Unknown result type (might be due to invalid IL or missing references) //IL_0298: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_02d8: Unknown result type (might be due to invalid IL or missing references) //IL_0300: Unknown result type (might be due to invalid IL or missing references) //IL_0310: Unknown result type (might be due to invalid IL or missing references) //IL_0328: Unknown result type (might be due to invalid IL or missing references) //IL_0360: Unknown result type (might be due to invalid IL or missing references) //IL_0368: Unknown result type (might be due to invalid IL or missing references) //IL_0390: Unknown result type (might be due to invalid IL or missing references) //IL_03a0: Unknown result type (might be due to invalid IL or missing references) //IL_03b8: Unknown result type (might be due to invalid IL or missing references) //IL_03f0: Unknown result type (might be due to invalid IL or missing references) //IL_03f8: Unknown result type (might be due to invalid IL or missing references) //IL_0420: Unknown result type (might be due to invalid IL or missing references) //IL_044c: Unknown result type (might be due to invalid IL or missing references) //IL_0464: Unknown result type (might be due to invalid IL or missing references) //IL_049c: Unknown result type (might be due to invalid IL or missing references) //IL_04a4: Unknown result type (might be due to invalid IL or missing references) //IL_04cc: Unknown result type (might be due to invalid IL or missing references) //IL_04f8: Unknown result type (might be due to invalid IL or missing references) //IL_0510: Unknown result type (might be due to invalid IL or missing references) //IL_0548: Unknown result type (might be due to invalid IL or missing references) //IL_0550: 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_05a4: Unknown result type (might be due to invalid IL or missing references) //IL_05bc: Unknown result type (might be due to invalid IL or missing references) //IL_05f4: Unknown result type (might be due to invalid IL or missing references) //IL_05fc: Unknown result type (might be due to invalid IL or missing references) //IL_0624: Unknown result type (might be due to invalid IL or missing references) //IL_063c: Unknown result type (might be due to invalid IL or missing references) //IL_0654: Unknown result type (might be due to invalid IL or missing references) //IL_068c: Unknown result type (might be due to invalid IL or missing references) //IL_0694: Unknown result type (might be due to invalid IL or missing references) //IL_06bc: Unknown result type (might be due to invalid IL or missing references) //IL_06dc: Unknown result type (might be due to invalid IL or missing references) //IL_06f4: Unknown result type (might be due to invalid IL or missing references) //IL_072c: Unknown result type (might be due to invalid IL or missing references) //IL_0734: Unknown result type (might be due to invalid IL or missing references) //IL_075c: Unknown result type (might be due to invalid IL or missing references) //IL_0774: Unknown result type (might be due to invalid IL or missing references) //IL_078c: Unknown result type (might be due to invalid IL or missing references) //IL_07c4: Unknown result type (might be due to invalid IL or missing references) //IL_07cc: Unknown result type (might be due to invalid IL or missing references) //IL_07f4: Unknown result type (might be due to invalid IL or missing references) //IL_080c: Unknown result type (might be due to invalid IL or missing references) //IL_0824: Unknown result type (might be due to invalid IL or missing references) //IL_085c: Unknown result type (might be due to invalid IL or missing references) //IL_0864: Unknown result type (might be due to invalid IL or missing references) //IL_088c: Unknown result type (might be due to invalid IL or missing references) //IL_08b8: Unknown result type (might be due to invalid IL or missing references) //IL_08d0: Unknown result type (might be due to invalid IL or missing references) //IL_0908: Unknown result type (might be due to invalid IL or missing references) //IL_0910: Unknown result type (might be due to invalid IL or missing references) //IL_0938: Unknown result type (might be due to invalid IL or missing references) //IL_0950: Unknown result type (might be due to invalid IL or missing references) //IL_0968: Unknown result type (might be due to invalid IL or missing references) //IL_09a0: Unknown result type (might be due to invalid IL or missing references) //IL_09a8: Unknown result type (might be due to invalid IL or missing references) //IL_09d0: Unknown result type (might be due to invalid IL or missing references) BaseAI component = masterObject.GetComponent<BaseAI>(); if (Object.op_Implicit((Object)(object)component)) { component.fullVision = true; component.neverRetaliateFriendlies = true; component.aimVectorDampTime = 0.05f; component.aimVectorMaxSpeed = 720f; } AISkillDriver val = masterObject.AddComponent<AISkillDriver>(); val.skillSlot = (SkillSlot)1; val.requiredSkill = serratedDaggerSkill; val.requireSkillReady = true; val.requireEquipmentReady = false; val.moveTargetType = (TargetType)0; val.minDistance = 0f; val.maxDistance = 5f; val.selectionRequiresTargetLoS = false; val.activationRequiresTargetLoS = false; val.activationRequiresAimConfirmation = true; val.movementType = (MovementType)2; val.aimType = (AimType)2; val.ignoreNodeGraph = false; val.noRepeat = false; val.shouldSprint = true; val.shouldFireEquipment = false; val.buttonPressType = (ButtonPressType)2; AISkillDriver val2 = masterObject.AddComponent<AISkillDriver>(); val2.skillSlot = (SkillSlot)1; val2.requiredSkill = serratedShivSkill; val2.requireSkillReady = true; val2.requireEquipmentReady = false; val2.moveTargetType = (TargetType)0; val2.minDistance = 0f; val2.maxDistance = 60f; val2.selectionRequiresTargetLoS = true; val2.activationRequiresTargetLoS = true; val2.activationRequiresAimConfirmation = true; val2.movementType = (MovementType)2; val2.aimType = (AimType)2; val2.ignoreNodeGraph = false; val2.noRepeat = false; val2.shouldSprint = true; val2.shouldFireEquipment = false; val2.buttonPressType = (ButtonPressType)2; AISkillDriver val3 = masterObject.AddComponent<AISkillDriver>(); val3.skillSlot = (SkillSlot)3; val3.requireSkillReady = true; val3.requireEquipmentReady = false; val3.moveTargetType = (TargetType)0; val3.minDistance = 0f; val3.maxDistance = 150f; val3.selectionRequiresTargetLoS = true; val3.activationRequiresTargetLoS = true; val3.activationRequiresAimConfirmation = true; val3.aimType = (AimType)2; val3.ignoreNodeGraph = false; val3.noRepeat = false; val3.shouldSprint = false; val3.shouldFireEquipment = false; val3.buttonPressType = (ButtonPressType)2; val3.driverUpdateTimerOverride = 0.7f; Utils.AddAtkSpeedScaling(masterObject, val3); AISkillDriver val4 = masterObject.AddComponent<AISkillDriver>(); val4.skillSlot = (SkillSlot)0; val4.requireSkillReady = true; val4.requireEquipmentReady = false; val4.moveTargetType = (TargetType)0; val4.minDistance = 0f; val4.maxDistance = 10f; val4.selectionRequiresTargetLoS = true; val4.activationRequiresTargetLoS = true; val4.activationRequiresAimConfirmation = true; val4.movementType = (MovementType)3; val4.aimType = (AimType)2; val4.ignoreNodeGraph = false; val4.noRepeat = false; val4.shouldSprint = false; val4.shouldFireEquipment = false; val4.buttonPressType = (ButtonPressType)0; AISkillDriver val5 = masterObject.AddComponent<AISkillDriver>(); val5.skillSlot = (SkillSlot)0; val5.requireSkillReady = true; val5.requireEquipmentReady = false; val5.moveTargetType = (TargetType)0; val5.minDistance = 0f; val5.maxDistance = 30f; val5.selectionRequiresTargetLoS = true; val5.activationRequiresTargetLoS = true; val5.activationRequiresAimConfirmation = true; val5.movementType = (MovementType)2; val5.aimType = (AimType)2; val5.ignoreNodeGraph = false; val5.noRepeat = false; val5.shouldSprint = false; val5.shouldFireEquipment = false; val5.buttonPressType = (ButtonPressType)0; AISkillDriver val6 = masterObject.AddComponent<AISkillDriver>(); val6.skillSlot = (SkillSlot)0; val6.requireSkillReady = true; val6.requireEquipmentReady = false; val6.moveTargetType = (TargetType)0; val6.minDistance = 0f; val6.maxDistance = 120f; val6.selectionRequiresTargetLoS = true; val6.activationRequiresTargetLoS = true; val6.activationRequiresAimConfirmation = true; val6.movementType = (MovementType)1; val6.aimType = (AimType)2; val6.ignoreNodeGraph = false; val6.noRepeat = false; val6.shouldSprint = false; val6.shouldFireEquipment = false; val6.buttonPressType = (ButtonPressType)0; AISkillDriver val7 = masterObject.AddComponent<AISkillDriver>(); val7.skillSlot = (SkillSlot)2; val7.requireSkillReady = true; val7.requireEquipmentReady = false; val7.moveTargetType = (TargetType)0; val7.minDistance = 0f; val7.maxDistance = 15f; val7.selectionRequiresTargetLoS = false; val7.activationRequiresTargetLoS = false; val7.activationRequiresAimConfirmation = false; val7.movementType = (MovementType)1; val7.aimType = (AimType)2; val7.ignoreNodeGraph = false; val7.noRepeat = false; val7.shouldSprint = true; val7.shouldFireEquipment = false; val7.buttonPressType = (ButtonPressType)0; val7.selectionRequiresOnGround = true; val7.driverUpdateTimerOverride = 1f; val7.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val8 = masterObject.AddComponent<AISkillDriver>(); val8.skillSlot = (SkillSlot)2; val8.requireSkillReady = true; val8.requireEquipmentReady = false; val8.moveTargetType = (TargetType)0; val8.minDistance = 0f; val8.maxDistance = 30f; val8.selectionRequiresTargetLoS = false; val8.activationRequiresTargetLoS = false; val8.activationRequiresAimConfirmation = false; val8.movementType = (MovementType)1; val8.aimType = (AimType)2; val8.ignoreNodeGraph = false; val8.noRepeat = false; val8.shouldSprint = true; val8.shouldFireEquipment = false; val8.buttonPressType = (ButtonPressType)0; val8.selectionRequiresOnGround = true; val8.driverUpdateTimerOverride = 2f; val8.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val9 = masterObject.AddComponent<AISkillDriver>(); val9.skillSlot = (SkillSlot)2; val9.requireSkillReady = true; val9.requireEquipmentReady = false; val9.moveTargetType = (TargetType)0; val9.minDistance = 0f; val9.maxDistance = 400f; val9.selectionRequiresTargetLoS = false; val9.activationRequiresTargetLoS = false; val9.activationRequiresAimConfirmation = false; val9.movementType = (MovementType)1; val9.aimType = (AimType)2; val9.ignoreNodeGraph = false; val9.noRepeat = false; val9.shouldSprint = true; val9.shouldFireEquipment = false; val9.buttonPressType = (ButtonPressType)0; val9.selectionRequiresOnGround = true; val9.driverUpdateTimerOverride = 3f; val9.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val10 = masterObject.AddComponent<AISkillDriver>(); val10.skillSlot = (SkillSlot)(-1); val10.requireSkillReady = false; val10.requireEquipmentReady = false; val10.moveTargetType = (TargetType)0; val10.minDistance = 0f; val10.maxDistance = 400f; val10.selectionRequiresTargetLoS = false; val10.activationRequiresTargetLoS = false; val10.activationRequiresAimConfirmation = false; val10.movementType = (MovementType)1; val10.aimType = (AimType)2; val10.ignoreNodeGraph = false; val10.noRepeat = false; val10.shouldSprint = true; val10.shouldFireEquipment = false; val10.buttonPressType = (ButtonPressType)1; val10.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val11 = masterObject.AddComponent<AISkillDriver>(); val11.skillSlot = (SkillSlot)2; val11.requireSkillReady = true; val11.requireEquipmentReady = false; val11.moveTargetType = (TargetType)2; val11.minDistance = 40f; val11.maxDistance = float.PositiveInfinity; val11.selectionRequiresTargetLoS = false; val11.activationRequiresTargetLoS = false; val11.activationRequiresAimConfirmation = false; val11.movementType = (MovementType)1; val11.aimType = (AimType)2; val11.ignoreNodeGraph = false; val11.noRepeat = true; val11.shouldSprint = true; val11.shouldFireEquipment = false; val11.buttonPressType = (ButtonPressType)0; val11.selectionRequiresOnGround = true; val11.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val12 = masterObject.AddComponent<AISkillDriver>(); val12.skillSlot = (SkillSlot)(-1); val12.requireSkillReady = false; val12.requireEquipmentReady = false; val12.moveTargetType = (TargetType)2; val12.minDistance = 15f; val12.maxDistance = float.PositiveInfinity; val12.selectionRequiresTargetLoS = false; val12.activationRequiresTargetLoS = false; val12.activationRequiresAimConfirmation = false; val12.movementType = (MovementType)1; val12.aimType = (AimType)3; val12.ignoreNodeGraph = false; val12.noRepeat = false; val12.shouldSprint = true; val12.shouldFireEquipment = false; val12.buttonPressType = (ButtonPressType)1; val12.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val13 = masterObject.AddComponent<AISkillDriver>(); val13.skillSlot = (SkillSlot)(-1); val13.requireSkillReady = false; val13.requireEquipmentReady = false; val13.moveTargetType = (TargetType)2; val13.minDistance = 0f; val13.maxDistance = 15f; val13.selectionRequiresTargetLoS = false; val13.activationRequiresTargetLoS = false; val13.activationRequiresAimConfirmation = false; val13.movementType = (MovementType)0; val13.aimType = (AimType)3; val13.ignoreNodeGraph = false; val13.noRepeat = false; val13.shouldSprint = false; val13.shouldFireEquipment = false; val13.buttonPressType = (ButtonPressType)1; val13.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val14 = masterObject.AddComponent<AISkillDriver>(); val14.skillSlot = (SkillSlot)2; val14.requireSkillReady = true; val14.requireEquipmentReady = false; val14.moveTargetType = (TargetType)0; val14.minDistance = 0f; val14.maxDistance = float.PositiveInfinity; val14.selectionRequiresTargetLoS = false; val14.activationRequiresTargetLoS = false; val14.activationRequiresAimConfirmation = false; val14.movementType = (MovementType)1; val14.aimType = (AimType)2; val14.ignoreNodeGraph = false; val14.noRepeat = false; val14.shouldSprint = true; val14.shouldFireEquipment = false; val14.buttonPressType = (ButtonPressType)0; val14.selectionRequiresOnGround = true; val14.driverUpdateTimerOverride = 3f; val14.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val15 = masterObject.AddComponent<AISkillDriver>(); val15.skillSlot = (SkillSlot)(-1); val15.requireSkillReady = false; val15.requireEquipmentReady = false; val15.moveTargetType = (TargetType)0; val15.minDistance = 0f; val15.maxDistance = float.PositiveInfinity; val15.selectionRequiresTargetLoS = false; val15.activationRequiresTargetLoS = false; val15.activationRequiresAimConfirmation = false; val15.movementType = (MovementType)1; val15.aimType = (AimType)2; val15.ignoreNodeGraph = false; val15.noRepeat = false; val15.shouldSprint = true; val15.shouldFireEquipment = false; val15.buttonPressType = (ButtonPressType)1; val15.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val16 = masterObject.AddComponent<AISkillDriver>(); val16.skillSlot = (SkillSlot)(-1); val16.requireSkillReady = false; val16.requireEquipmentReady = false; val16.moveTargetType = (TargetType)0; val16.minDistance = 0f; val16.maxDistance = float.PositiveInfinity; val16.selectionRequiresTargetLoS = false; val16.activationRequiresTargetLoS = false; val16.activationRequiresAimConfirmation = false; val16.movementType = (MovementType)2; val16.aimType = (AimType)2; val16.ignoreNodeGraph = false; val16.noRepeat = true; val16.shouldSprint = false; val16.shouldFireEquipment = false; val16.buttonPressType = (ButtonPressType)1; val4.nextHighPriorityOverride = val16; val5.nextHighPriorityOverride = val16; val6.nextHighPriorityOverride = val16; } } internal class CaptainAI { public static SkillDef orbitalProbesSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Captain/CallAirstrike.asset").WaitForCompletion(); public static SkillDef diabloStrikeSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Captain/CallAirstrikeAlt.asset").WaitForCompletion(); public static CaptainOrbitalSkillDef callProbesSkill = Addressables.LoadAssetAsync<CaptainOrbitalSkillDef>((object)"RoR2/Base/Captain/PrepAirstrike.asset").WaitForCompletion(); public static CaptainOrbitalSkillDef callDiabloSkill = Addressables.LoadAssetAsync<CaptainOrbitalSkillDef>((object)"RoR2/Base/Captain/PrepAirstrikeAlt.asset").WaitForCompletion(); public static SkillDef supplyDropHealing = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Captain/CallSupplyDropHealing.asset").WaitForCompletion(); public static SkillDef supplyDropShocking = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Captain/CallSupplyDropShocking.asset").WaitForCompletion(); public static SkillDef supplyDropEquipment = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Captain/CallSupplyDropEquipmentRestock.asset").WaitForCompletion(); public static SkillDef supplyDropHacking = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Captain/CallSupplyDropHacking.asset").WaitForCompletion(); public static SkillDef[] supplyDropTypes = (SkillDef[])(object)new SkillDef[4] { supplyDropHealing, supplyDropShocking, supplyDropEquipment, supplyDropHacking }; public CaptainAI(GameObject masterObject, bool enableCaptainBeacons) { //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Expected O, but got Unknown //IL_01f7: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_0249: 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_0273: Unknown result type (might be due to invalid IL or missing references) //IL_0281: Unknown result type (might be due to invalid IL or missing references) //IL_02a1: Unknown result type (might be due to invalid IL or missing references) //IL_02d3: Unknown result type (might be due to invalid IL or missing references) //IL_02da: Unknown result type (might be due to invalid IL or missing references) //IL_02fd: Unknown result type (might be due to invalid IL or missing references) //IL_03a7: Unknown result type (might be due to invalid IL or missing references) //IL_03bc: Unknown result type (might be due to invalid IL or missing references) //IL_03ee: Unknown result type (might be due to invalid IL or missing references) //IL_03f5: Unknown result type (might be due to invalid IL or missing references) //IL_0418: Unknown result type (might be due to invalid IL or missing references) //IL_0440: Unknown result type (might be due to invalid IL or missing references) //IL_0458: Unknown result type (might be due to invalid IL or missing references) //IL_0490: Unknown result type (might be due to invalid IL or missing references) //IL_0498: Unknown result type (might be due to invalid IL or missing references) //IL_04c0: Unknown result type (might be due to invalid IL or missing references) //IL_04d0: Unknown result type (might be due to invalid IL or missing references) //IL_04e8: Unknown result type (might be due to invalid IL or missing references) //IL_0520: Unknown result type (might be due to invalid IL or missing references) //IL_0528: Unknown result type (might be due to invalid IL or missing references) //IL_0550: Unknown result type (might be due to invalid IL or missing references) //IL_0560: 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_05b0: Unknown result type (might be due to invalid IL or missing references) //IL_05b8: Unknown result type (might be due to invalid IL or missing references) //IL_05e0: Unknown result type (might be due to invalid IL or missing references) //IL_05f0: Unknown result type (might be due to invalid IL or missing references) //IL_0608: Unknown result type (might be due to invalid IL or missing references) //IL_0640: Unknown result type (might be due to invalid IL or missing references) //IL_0648: Unknown result type (might be due to invalid IL or missing references) //IL_0670: Unknown result type (might be due to invalid IL or missing references) //IL_069a: Unknown result type (might be due to invalid IL or missing references) //IL_06b2: Unknown result type (might be due to invalid IL or missing references) //IL_06ea: Unknown result type (might be due to invalid IL or missing references) //IL_06f2: Unknown result type (might be due to invalid IL or missing references) //IL_071a: Unknown result type (might be due to invalid IL or missing references) //IL_0744: Unknown result type (might be due to invalid IL or missing references) //IL_075c: Unknown result type (might be due to invalid IL or missing references) //IL_0794: Unknown result type (might be due to invalid IL or missing references) //IL_079c: Unknown result type (might be due to invalid IL or missing references) //IL_07c4: Unknown result type (might be due to invalid IL or missing references) //IL_07dc: Unknown result type (might be due to invalid IL or missing references) //IL_07f4: Unknown result type (might be due to invalid IL or missing references) //IL_082c: Unknown result type (might be due to invalid IL or missing references) //IL_0834: Unknown result type (might be due to invalid IL or missing references) //IL_085c: Unknown result type (might be due to invalid IL or missing references) //IL_0874: Unknown result type (might be due to invalid IL or missing references) //IL_088c: Unknown result type (might be due to invalid IL or missing references) //IL_08c4: Unknown result type (might be due to invalid IL or missing references) //IL_08cc: Unknown result type (might be due to invalid IL or missing references) //IL_08f4: Unknown result type (might be due to invalid IL or missing references) //IL_090c: Unknown result type (might be due to invalid IL or missing references) //IL_0924: Unknown result type (might be due to invalid IL or missing references) //IL_095c: Unknown result type (might be due to invalid IL or missing references) //IL_0964: Unknown result type (might be due to invalid IL or missing references) //IL_098c: Unknown result type (might be due to invalid IL or missing references) //IL_09a4: Unknown result type (might be due to invalid IL or missing references) //IL_09bc: Unknown result type (might be due to invalid IL or missing references) //IL_09f4: Unknown result type (might be due to invalid IL or missing references) //IL_09fc: Unknown result type (might be due to invalid IL or missing references) //IL_0a24: Unknown result type (might be due to invalid IL or missing references) //IL_0318: Unknown result type (might be due to invalid IL or missing references) //IL_0330: Unknown result type (might be due to invalid IL or missing references) //IL_0368: Unknown result type (might be due to invalid IL or missing references) //IL_0370: Unknown result type (might be due to invalid IL or missing references) //IL_0398: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: Unknown result type (might be due to invalid IL or missing references) BaseAI component = masterObject.GetComponent<BaseAI>(); if (Object.op_Implicit((Object)(object)component)) { component.fullVision = true; component.neverRetaliateFriendlies = true; component.aimVectorDampTime = 0.05f; component.aimVectorMaxSpeed = 720f; } if (enableCaptainBeacons) { SetupSupplyDrop.OnEnter += new hook_OnEnter(SupplyBeaconTargeting); } if (enableCaptainBeacons) { for (int i = 0; i < supplyDropTypes.Length; i++) { AISkillDriver val = masterObject.AddComponent<AISkillDriver>(); val.skillSlot = (SkillSlot)0; val.requiredSkill = supplyDropTypes[i]; val.requireSkillReady = true; val.requireEquipmentReady = false; val.moveTargetType = (TargetType)3; val.minDistance = 0f; val.maxDistance = float.PositiveInfinity; val.selectionRequiresTargetLoS = false; val.activationRequiresTargetLoS = false; val.activationRequiresAimConfirmation = true; val.movementType = (MovementType)0; val.aimType = (AimType)1; val.ignoreNodeGraph = false; val.noRepeat = false; val.shouldSprint = false; val.shouldFireEquipment = false; val.buttonPressType = (ButtonPressType)0; } for (int j = 0; j < supplyDropTypes.Length; j++) { AISkillDriver val2 = masterObject.AddComponent<AISkillDriver>(); val2.skillSlot = (SkillSlot)1; val2.requiredSkill = supplyDropTypes[j]; val2.requireSkillReady = true; val2.requireEquipmentReady = false; val2.moveTargetType = (TargetType)3; val2.minDistance = 0f; val2.maxDistance = float.PositiveInfinity; val2.selectionRequiresTargetLoS = false; val2.activationRequiresTargetLoS = false; val2.activationRequiresAimConfirmation = true; val2.movementType = (MovementType)0; val2.aimType = (AimType)1; val2.ignoreNodeGraph = false; val2.noRepeat = false; val2.shouldSprint = false; val2.shouldFireEquipment = false; val2.buttonPressType = (ButtonPressType)0; } } AISkillDriver val3 = masterObject.AddComponent<AISkillDriver>(); val3.skillSlot = (SkillSlot)0; val3.requiredSkill = (SkillDef)(object)callProbesSkill; val3.requireSkillReady = true; val3.requireEquipmentReady = false; val3.moveTargetType = (TargetType)0; val3.minDistance = 0f; val3.maxDistance = 300f; val3.selectionRequiresTargetLoS = true; val3.activationRequiresTargetLoS = true; val3.activationRequiresAimConfirmation = true; val3.movementType = (MovementType)2; val3.aimType = (AimType)2; val3.ignoreNodeGraph = false; val3.noRepeat = false; val3.shouldSprint = false; val3.shouldFireEquipment = false; val3.buttonPressType = (ButtonPressType)2; AISkillDriver val4 = masterObject.AddComponent<AISkillDriver>(); val4.skillSlot = (SkillSlot)0; val4.requiredSkill = (SkillDef)(object)callDiabloSkill; val4.requireSkillReady = true; val4.requireEquipmentReady = false; val4.moveTargetType = (TargetType)0; val4.minDistance = 0f; val4.maxDistance = 300f; val4.selectionRequiresTargetLoS = true; val4.activationRequiresTargetLoS = true; val4.activationRequiresAimConfirmation = true; val4.movementType = (MovementType)2; val4.aimType = (AimType)2; val4.ignoreNodeGraph = false; val4.noRepeat = false; val4.shouldSprint = false; val4.shouldFireEquipment = false; val4.buttonPressType = (ButtonPressType)2; if (enableCaptainBeacons) { AISkillDriver val5 = masterObject.AddComponent<AISkillDriver>(); val5.skillSlot = (SkillSlot)3; val5.requireSkillReady = true; val5.requireEquipmentReady = false; val5.moveTargetType = (TargetType)2; val5.minDistance = 0f; val5.maxDistance = float.PositiveInfinity; val5.selectionRequiresTargetLoS = true; val5.activationRequiresTargetLoS = true; val5.activationRequiresAimConfirmation = true; val5.movementType = (MovementType)0; val5.aimType = (AimType)3; val5.ignoreNodeGraph = false; val5.noRepeat = false; val5.shouldSprint = false; val5.shouldFireEquipment = false; val5.buttonPressType = (ButtonPressType)0; } AISkillDriver val6 = masterObject.AddComponent<AISkillDriver>(); val6.skillSlot = (SkillSlot)1; val6.requireSkillReady = true; val6.requireEquipmentReady = false; val6.moveTargetType = (TargetType)0; val6.minDistance = 0f; val6.maxDistance = 100f; val6.selectionRequiresTargetLoS = true; val6.activationRequiresTargetLoS = true; val6.activationRequiresAimConfirmation = true; val6.movementType = (MovementType)2; val6.aimType = (AimType)2; val6.ignoreNodeGraph = false; val6.noRepeat = true; val6.shouldSprint = false; val6.shouldFireEquipment = false; val6.buttonPressType = (ButtonPressType)2; val6.driverUpdateTimerOverride = 0.35f; Utils.AddAtkSpeedScaling(masterObject, val6); AISkillDriver val7 = masterObject.AddComponent<AISkillDriver>(); val7.skillSlot = (SkillSlot)2; val7.requireSkillReady = true; val7.requireEquipmentReady = false; val7.moveTargetType = (TargetType)0; val7.minDistance = 0f; val7.maxDistance = 300f; val7.selectionRequiresTargetLoS = true; val7.activationRequiresTargetLoS = true; val7.activationRequiresAimConfirmation = true; val7.movementType = (MovementType)2; val7.aimType = (AimType)2; val7.ignoreNodeGraph = false; val7.noRepeat = false; val7.shouldSprint = false; val7.shouldFireEquipment = false; val7.buttonPressType = (ButtonPressType)2; AISkillDriver val8 = masterObject.AddComponent<AISkillDriver>(); val8.skillSlot = (SkillSlot)0; val8.requireSkillReady = true; val8.requireEquipmentReady = false; val8.moveTargetType = (TargetType)0; val8.minDistance = 0f; val8.maxDistance = 10f; val8.selectionRequiresTargetLoS = true; val8.activationRequiresTargetLoS = true; val8.activationRequiresAimConfirmation = true; val8.movementType = (MovementType)3; val8.aimType = (AimType)2; val8.ignoreNodeGraph = false; val8.noRepeat = false; val8.shouldSprint = false; val8.shouldFireEquipment = false; val8.buttonPressType = (ButtonPressType)2; AISkillDriver val9 = masterObject.AddComponent<AISkillDriver>(); val9.skillSlot = (SkillSlot)0; val9.requireSkillReady = true; val9.requireEquipmentReady = false; val9.moveTargetType = (TargetType)0; val9.minDistance = 0f; val9.maxDistance = 25f; val9.selectionRequiresTargetLoS = true; val9.activationRequiresTargetLoS = true; val9.activationRequiresAimConfirmation = true; val9.movementType = (MovementType)2; val9.aimType = (AimType)2; val9.ignoreNodeGraph = false; val9.noRepeat = false; val9.shouldSprint = false; val9.shouldFireEquipment = false; val9.buttonPressType = (ButtonPressType)2; AISkillDriver val10 = masterObject.AddComponent<AISkillDriver>(); val10.skillSlot = (SkillSlot)0; val10.requireSkillReady = true; val10.requireEquipmentReady = false; val10.moveTargetType = (TargetType)0; val10.minDistance = 0f; val10.maxDistance = 50f; val10.selectionRequiresTargetLoS = true; val10.activationRequiresTargetLoS = true; val10.activationRequiresAimConfirmation = false; val10.movementType = (MovementType)2; val10.aimType = (AimType)2; val10.ignoreNodeGraph = false; val10.noRepeat = false; val10.shouldSprint = false; val10.shouldFireEquipment = false; val10.buttonPressType = (ButtonPressType)0; val10.driverUpdateTimerOverride = 0.75f; Utils.AddAtkSpeedScaling(masterObject, val10); AISkillDriver val11 = masterObject.AddComponent<AISkillDriver>(); val11.skillSlot = (SkillSlot)0; val11.requireSkillReady = true; val11.requireEquipmentReady = false; val11.moveTargetType = (TargetType)0; val11.minDistance = 0f; val11.maxDistance = 100f; val11.selectionRequiresTargetLoS = true; val11.activationRequiresTargetLoS = true; val11.activationRequiresAimConfirmation = false; val11.movementType = (MovementType)1; val11.aimType = (AimType)2; val11.ignoreNodeGraph = false; val11.noRepeat = false; val11.shouldSprint = false; val11.shouldFireEquipment = false; val11.buttonPressType = (ButtonPressType)0; val11.driverUpdateTimerOverride = 1.5f; Utils.AddAtkSpeedScaling(masterObject, val11); AISkillDriver val12 = masterObject.AddComponent<AISkillDriver>(); val12.skillSlot = (SkillSlot)(-1); val12.requireSkillReady = false; val12.requireEquipmentReady = false; val12.moveTargetType = (TargetType)0; val12.minDistance = 0f; val12.maxDistance = 400f; val12.selectionRequiresTargetLoS = false; val12.activationRequiresTargetLoS = false; val12.activationRequiresAimConfirmation = false; val12.movementType = (MovementType)1; val12.aimType = (AimType)2; val12.ignoreNodeGraph = false; val12.noRepeat = false; val12.shouldSprint = true; val12.shouldFireEquipment = false; val12.buttonPressType = (ButtonPressType)1; val12.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val13 = masterObject.AddComponent<AISkillDriver>(); val13.skillSlot = (SkillSlot)(-1); val13.requireSkillReady = false; val13.requireEquipmentReady = false; val13.moveTargetType = (TargetType)2; val13.minDistance = 15f; val13.maxDistance = float.PositiveInfinity; val13.selectionRequiresTargetLoS = false; val13.activationRequiresTargetLoS = false; val13.activationRequiresAimConfirmation = false; val13.movementType = (MovementType)1; val13.aimType = (AimType)3; val13.ignoreNodeGraph = false; val13.noRepeat = false; val13.shouldSprint = true; val13.shouldFireEquipment = false; val13.buttonPressType = (ButtonPressType)1; val13.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val14 = masterObject.AddComponent<AISkillDriver>(); val14.skillSlot = (SkillSlot)(-1); val14.requireSkillReady = false; val14.requireEquipmentReady = false; val14.moveTargetType = (TargetType)2; val14.minDistance = 0f; val14.maxDistance = 15f; val14.selectionRequiresTargetLoS = false; val14.activationRequiresTargetLoS = false; val14.activationRequiresAimConfirmation = false; val14.movementType = (MovementType)0; val14.aimType = (AimType)3; val14.ignoreNodeGraph = false; val14.noRepeat = false; val14.shouldSprint = false; val14.shouldFireEquipment = false; val14.buttonPressType = (ButtonPressType)1; val14.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val15 = masterObject.AddComponent<AISkillDriver>(); val15.skillSlot = (SkillSlot)(-1); val15.requireSkillReady = false; val15.requireEquipmentReady = false; val15.moveTargetType = (TargetType)0; val15.minDistance = 0f; val15.maxDistance = float.PositiveInfinity; val15.selectionRequiresTargetLoS = false; val15.activationRequiresTargetLoS = false; val15.activationRequiresAimConfirmation = false; val15.movementType = (MovementType)1; val15.aimType = (AimType)2; val15.ignoreNodeGraph = false; val15.noRepeat = false; val15.shouldSprint = true; val15.shouldFireEquipment = false; val15.buttonPressType = (ButtonPressType)1; val15.resetCurrentEnemyOnNextDriverSelection = true; AISkillDriver val16 = masterObject.AddComponent<AISkillDriver>(); val16.skillSlot = (SkillSlot)(-1); val16.requireSkillReady = false; val16.requireEquipmentReady = false; val16.moveTargetType = (TargetType)0; val16.minDistance = 0f; val16.maxDistance = float.PositiveInfinity; val16.selectionRequiresTargetLoS = false; val16.activationRequiresTargetLoS = false; val16.activationRequiresAimConfirmation = false; val16.movementType = (MovementType)1; val16.aimType = (AimType)2; val16.ignoreNodeGraph = false; val16.noRepeat = false; val16.shouldSprint = false; val16.shouldFireEquipment = false; val16.buttonPressType = (ButtonPressType)1; val10.nextHighPriorityOverride = val16; val11.nextHighPriorityOverride = val16; } private void SupplyBeaconTargeting(orig_OnEnter orig, SetupSupplyDrop self) { //IL_006d: 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_0088: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); CharacterBody characterBody = ((EntityState)self).characterBody; if (!Object.op_Implicit((Object)(object)characterBody) || !Object.op_Implicit((Object)(object)((Component)characterBody).gameObject)) { return; } CharacterMaster master = characterBody.master; if (Object.op_Implicit((Object)(object)master)) { BaseAI component = ((Component)master).GetComponent<BaseAI>(); if (Object.op_Implicit((Object)(object)component)) { component.customTarget._gameObject = ((Component)characterBody).gameObject; component.customTarget.lastKnownBullseyePosition = characterBody.footPosition; component.customTarget.lastKnownBullseyePositionTime = FixedTimeStamp.now; component.customTarget.unset = false; } } } } internal class ChefAI { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Func<Instruction, bool> <>9__10_3; public static Action<RolyPoly> <>9__10_1; public static Func<Instruction, bool> <>9__10_4; public static Action<RolyPoly> <>9__10_2; public static Manipulator <>9__10_0; internal void <.ctor>b__10_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_0042: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); bool flag = true; if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "ChefController", "set_rolyPolyGearCharge") })) { val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Action<RolyPoly>>((Action<RolyPoly>)delegate(RolyPoly self) { self.chefController._rolyPolyGearCharge = (int)self.gearCharge; }); if (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "ChefController", "set_rolyPolyStarted") })) { val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Action<RolyPoly>>((Action<RolyPoly>)delegate(RolyPoly self) { self.chefController._rolyPolyStarted = true; }); flag = false; } } if (flag) { Log.Error("CHEF Roll hook failed!"); } } internal bool <.ctor>b__10_3(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt(x, "ChefController", "set_rolyPolyGearCharge"); } internal void <.ctor>b__10_1(RolyPoly self) { self.chefController._rolyPolyGearCharge = (int)self.gearCharge; } internal bool <.ctor>b__10_4(Instruction x) { return ILPatternMatchingExt.MatchCallOrCallvirt(x, "ChefController", "set_rolyPolyStarted"); } internal void <.ctor>b__10_2(RolyPoly self) { self.chefController._rolyPolyStarted = true; } } public static SkillDef diceSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/Chef/ChefDice.asset").WaitForCompletion(); public static SkillDef boostedDiceSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/Chef/ChefDiceBoosted.asset").WaitForCompletion(); public static SkillDef searSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/Chef/ChefSear.asset").WaitForCompletion(); public static SkillDef boostedSearSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/Chef/ChefSearBoosted.asset").WaitForCompletion(); public static SkillDef iceBoxSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/Chef/ChefIceBox.asset").WaitForCompletion(); public static SkillDef boostedIceBoxSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/Chef/ChefIceBoxBoosted.asset").WaitForCompletion(); public static SkillDef rollSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/Chef/ChefRolyPoly.asset").WaitForCompletion(); public static ChefOilSpillSkillDef oilSpillSkill = Addressables.LoadAssetAsync<ChefOilSpillSkillDef>((object)"RoR2/DLC2/Chef/ChefOilSpill.asset").WaitForCompletion(); public static SkillDef glazeSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/Chef/ChefGlaze.asset").WaitForCompletion(); public static SkillDef yesChefSkill = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC2/Chef/YesChef.asset").WaitForCompletion(); public ChefAI(GameObject masterObject) { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Expected O, but got Unknown //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Expected O, but got Unknown //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_016f: 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_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0233: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) //IL_028f: Unknown result type (might be due to invalid IL or missing references) //IL_0297: Unknown result type (might be due to invalid IL or missing references) //IL_02bf: Unknown result type (might be due to invalid IL or missing references) //IL_02f1: Unknown result type (might be due to invalid IL or missing references) //IL_0315: Unknown result type (might be due to invalid IL or missing references) //IL_034d: Unknown result type (might be due to invalid IL or missing references) //IL_0355: Unknown result type (might be due to invalid IL or missing references) //IL_037d: Unknown result type (might be due to invalid IL or missing references) //IL_03af: Unknown result type (might be due to invalid IL or missing references) //IL_03d3: Unknown result type (might be due to invalid IL or missing references) //IL_040b: Unknown result type (might be due to invalid IL or missing references) //IL_0413: Unknown result type (might be due to invalid IL or missing references) //IL_043b: Unknown result type (might be due to invalid IL or missing references) //IL_046d: Unknown result type (might be due to invalid IL or missing references) //IL_0491: Unknown result type (might be due to invalid IL or missing references) //IL_04c9: Unknown result type (might be due to invalid IL or missing references) //IL_04d1: Unknown result type (might be due to invalid IL or missing references) //IL_04f9: Unknown result type (might be due to invalid IL or missing references) //IL_0511: Unknown result type (might be due to invalid IL or missing references) //IL_0535: Unknown result type (might be due to invalid IL or missing references) //IL_056d: Unknown result type (might be due to invalid IL or missing references) //IL_0575: Unknown result type (might be due to invalid IL or missing references) //IL_059d: Unknown result type (might be due to invalid IL or missing references) //IL_05c7: Unknown result type (might be due to invalid IL or missing references) //IL_05eb: Unknown result type (might be due to invalid IL or missing references) //IL_0623: Unknown result type (might be due to invalid IL or missing references) //IL_062b: Unknown result type (might be due to invalid IL or missing references) //IL_0653: Unknown result type (might be due to invalid IL or missing references) //IL_066f: Unknown result type (might be due to invalid IL or missing references) //IL_0693: Unknown result type (might be due to invalid IL or missing references) //IL_06cb: Unknown result type (might be due to invalid IL or missing references) //IL_06d3: Unknown result type (might be due to invalid IL or missing references) //IL_06fb: Unknown result type (might be due to invalid IL or missing references) //IL_0713: Unknown result type (might be due to invalid IL or missing references) //IL_0737: Unknown result type (might be due to invalid IL or missing references) //IL_076f: Unknown result type (might be due to invalid IL or missing references) //IL_0777: Unknown result type (might be due to invalid IL or missing references) //IL_079f: Unknown result type (might be due to invalid IL or missing references) //IL_07af: Unknown result type (might be due to invalid IL or missing references) //IL_07d3: Unknown result type (might be due to invalid IL or missing references) //IL_080b: Unknown result type (might be due to invalid IL or missing references) //IL_0813: Unknown result type (might be due to invalid IL or missing references) //IL_083b: Unknown result type (might be due to invalid IL or missing references) //IL_084b: Unknown result type (might be due to invalid IL or missing references) //IL_086f: Unknown result type (might be due to invalid IL or missing references) //IL_08a7: Unknown result type (might be due to invalid IL or missing references) //IL_08af: Unknown result type (might be due to invalid IL or missing references) //IL_08d7: Unknown result type (might be due to invalid IL or missing references) //IL_08e7: Unknown result type (might be due to invalid IL or missing references) //IL_090b: Unknown result type (might be due to invalid IL or missing references) //IL_0943: Unknown result type (might be due to invalid IL or missing references) //IL_094b: Unknown result type (might be due to invalid IL or missing references) //IL_0973: Unknown result type (might be due to invalid IL or missing references) //IL_0983: Unknown result type (might be due to invalid IL or missing references) //IL_09a7: Unknown result type (might be due to invalid IL or missing references) //IL_09df: Unknown result type (might be due to invalid IL or missing references) //IL_09e7: Unknown result type (might be due to invalid IL or missing references) //IL_0a0f: Unknown result type (might be due to invalid IL or missing references) //IL_0a1f: Unknown result type (might be due to invalid IL or missing references) //IL_0a43: Unknown result type (might be due to invalid IL or missing references) //IL_0a7b: Unknown result type (might be due to invalid IL or missing references) //IL_0a83: Unknown result type (might be due to invalid IL or missing references) //IL_0aab: Unknown result type (might be due to invalid IL or missing references) //IL_0add