Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of ImprovedSurvivorAI v1.4.0
ImprovedSurvivorAI/ImprovedSurvivorAI.dll
Decompiled 2 weeks ago
The result has been truncated due to the large size, download it to view full contents!
using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using EntityStates; using EntityStates.Captain.Weapon; using EntityStates.Chef; using EntityStates.Seeker; using EntityStates.Toolbot; 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; 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.4.0")] public class Main : BaseUnityPlugin { public static List<GameObject> survivorMasterPrefabs = new List<GameObject>(); public static List<CharacterMaster> activeSurvivorMasters = new List<CharacterMaster>(); public static bool enableCaptainBeacons = true; public static bool walkerTurretChanges = true; public static bool walkerTurretSprint = true; public static float walkerTurretRange = 35f; public static EntityStateConfiguration walkerTurretBeam = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)"RoR2/Base/Engi/EntityStates.EngiTurret.EngiTurretWeapon.FireBeam.asset").WaitForCompletion(); public void Awake() { //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Expected O, but got Unknown //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Expected O, but got Unknown //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Expected O, but got Unknown Log.Init(((BaseUnityPlugin)this).Logger); enableCaptainBeacons = ((BaseUnityPlugin)this).Config.Bind<bool>("Captain", "Enable Supply Beacons", true, "Minion Captains will drop both Supply Beacons as soon as they spawn.").Value; walkerTurretChanges = ((BaseUnityPlugin)this).Config.Bind<bool>("Mobile Turrets", "Enable Mobile Turret Changes", true, "Enable the configs pertaining to Engineer's mobile turrets.").Value; walkerTurretSprint = ((BaseUnityPlugin)this).Config.Bind<bool>("Mobile Turrets", "Enable Mobile Turret Sprint", true, "Mobile turrets sprint when following their owner.").Value; walkerTurretRange = ((BaseUnityPlugin)this).Config.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.").Value; BaseAI.EvaluateSkillDrivers += new hook_EvaluateSkillDrivers(InfiniVisionLite); BullseyeSearch.GetResults += new hook_GetResults(IgnoreTheDead); GlobalEventManager.onCharacterDeathGlobal += GlobalEventManager_onCharacterDeathGlobal; CharacterMaster.onCharacterMasterDiscovered += CharacterMaster_onCharacterMasterDiscovered; CharacterMaster.onCharacterMasterLost += CharacterMaster_onCharacterMasterLost; CharacterMaster.SetUpGummyClone += new hook_SetUpGummyClone(GummyCloneTargeting); AdjustVanillaSurvivors(); AdjustWalkerTurrets(); } private 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_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0097: 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_00bd: 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_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: 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_0155: 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_017b: 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_01a6: 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_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Unknown result type (might be due to invalid IL or missing references) //IL_0213: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_0239: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_0285: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Unknown result type (might be due to invalid IL or missing references) //IL_02ab: Unknown result type (might be due to invalid IL or missing references) //IL_02b0: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/CommandoMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val); new CommandoAI(val); GameObject val2 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Huntress/HuntressMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val2); new HuntressAI(val2); GameObject val3 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bandit2/Bandit2MonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val3); new BanditAI(val3); GameObject val4 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Toolbot/ToolbotMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val4); new MultAI(val4); GameObject val5 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Engi/EngiMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val5); new EngineerAI(val5); GameObject val6 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val6); new ArtificerAI(val6); GameObject val7 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Merc/MercMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val7); new MercenaryAI(val7); GameObject val8 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Treebot/TreebotMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val8); new RexAI(val8); GameObject val9 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Loader/LoaderMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val9); new LoaderAI(val9); GameObject val10 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Croco/CrocoMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val10); new AcridAI(val10); GameObject val11 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Captain/CaptainMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val11); new CaptainAI(val11, enableCaptainBeacons); GameObject val12 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/Railgunner/RailgunnerMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val12); new RailgunnerAI(val12); GameObject val13 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidSurvivor/VoidSurvivorMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val13); new VoidFiendAI(val13); GameObject val14 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Seeker/SeekerMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val14); new SeekerAI(val14); GameObject val15 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/FalseSon/FalseSonMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val15); new FalseSonAI(val15); GameObject val16 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC2/Chef/ChefMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val16); new ChefAI(val16); GameObject val17 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC3/Drone Tech/DroneTechMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val17); new OperatorAI(val17); GameObject val18 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC3/Drifter/DrifterMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val18); new DrifterAI(val18); GameObject val19 = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Heretic/HereticMonsterMaster.prefab").WaitForCompletion(); ClearSkillDrivers(val19); new HereticAI(val19); } private void AdjustWalkerTurrets() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) if (!walkerTurretChanges) { 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")) { continue; } if (walkerTurretRange < 0f) { break; } val2.maxDistance = Mathf.Max(walkerTurretRange, 0f); for (int j = 0; j < walkerTurretBeam.serializedFieldsCollection.serializedFields.Length; j++) { if (walkerTurretBeam.serializedFieldsCollection.serializedFields[j].fieldName == "maxDistance") { walkerTurretBeam.serializedFieldsCollection.serializedFields[j].fieldValue.stringValue = val2.maxDistance.ToString(); } } } else if (val2.minDistance == 6f && walkerTurretSprint) { val2.shouldSprint = true; } } } private void ClearSkillDrivers(GameObject survivorMaster) { AISkillDriver[] components = survivorMaster.GetComponents<AISkillDriver>(); AISkillDriver[] array = components; foreach (AISkillDriver val in array) { Object.Destroy((Object)(object)val); } survivorMasterPrefabs.Add(survivorMaster); Log.Message("Added " + ((Object)survivorMaster).name + " to the list of Survivor masters."); } private SkillDriverEvaluation InfiniVisionLite(orig_EvaluateSkillDrivers orig, BaseAI self) { //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) if (IsSurvivorMaster(self) && Object.op_Implicit((Object)(object)self.body) && (!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 activeSurvivorMaster in activeSurvivorMasters) { CharacterBody victimBody = damageReport.victimBody; BaseAI component = ((Component)activeSurvivorMaster).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 CharacterMaster_onCharacterMasterDiscovered(CharacterMaster master) { if (IsSurvivorMasterAlt(master)) { activeSurvivorMasters.Add(master); } } private void CharacterMaster_onCharacterMasterLost(CharacterMaster master) { activeSurvivorMasters.Remove(master); } private void GummyCloneTargeting(orig_SetUpGummyClone orig, CharacterMaster self) { orig.Invoke(self); BaseAI component = ((Component)self).GetComponent<BaseAI>(); if (Object.op_Implicit((Object)(object)component) && IsSurvivorMaster(component)) { component.copyLeaderTarget = true; } } public bool IsSurvivorMaster(BaseAI self) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)self) && Object.op_Implicit((Object)(object)self.master)) { GameObject masterPrefab = MasterCatalog.GetMasterPrefab(self.master.masterIndex); if (Object.op_Implicit((Object)(object)masterPrefab) && survivorMasterPrefabs.Contains(masterPrefab)) { return true; } } return false; } public bool IsSurvivorMasterAlt(CharacterMaster self) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) GameObject masterPrefab = MasterCatalog.GetMasterPrefab(self.masterIndex); if (Object.op_Implicit((Object)(object)masterPrefab) && survivorMasterPrefabs.Contains(masterPrefab)) { return true; } 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_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Expected O, but got Unknown //IL_005c: 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_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: 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_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00fb: 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_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_0207: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_0263: Unknown result type (might be due to invalid IL or missing references) //IL_026b: Unknown result type (might be due to invalid IL or missing references) //IL_0293: Unknown result type (might be due to invalid IL or missing references) //IL_02af: 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_030b: Unknown result type (might be due to invalid IL or missing references) //IL_0313: Unknown result type (might be due to invalid IL or missing references) //IL_033b: Unknown result type (might be due to invalid IL or missing references) //IL_0357: Unknown result type (might be due to invalid IL or missing references) //IL_036f: 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_03af: Unknown result type (might be due to invalid IL or missing references) //IL_03d7: Unknown result type (might be due to invalid IL or missing references) //IL_03f3: 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_0443: Unknown result type (might be due to invalid IL or missing references) //IL_044b: Unknown result type (might be due to invalid IL or missing references) //IL_0473: Unknown result type (might be due to invalid IL or missing references) //IL_048f: Unknown result type (might be due to invalid IL or missing references) //IL_04a7: Unknown result type (might be due to invalid IL or missing references) //IL_04df: Unknown result type (might be due to invalid IL or missing references) //IL_04e7: Unknown result type (might be due to invalid IL or missing references) //IL_050f: Unknown result type (might be due to invalid IL or missing references) //IL_052b: Unknown result type (might be due to invalid IL or missing references) //IL_0543: Unknown result type (might be due to invalid IL or missing references) //IL_057b: Unknown result type (might be due to invalid IL or missing references) //IL_0583: Unknown result type (might be due to invalid IL or missing references) //IL_05ab: Unknown result type (might be due to invalid IL or missing references) //IL_05c3: Unknown result type (might be due to invalid IL or missing references) //IL_05db: Unknown result type (might be due to invalid IL or missing references) //IL_0613: Unknown result type (might be due to invalid IL or missing references) //IL_061b: Unknown result type (might be due to invalid IL or missing references) //IL_0643: Unknown result type (might be due to invalid IL or missing references) //IL_065b: Unknown result type (might be due to invalid IL or missing references) //IL_0673: Unknown result type (might be due to invalid IL or missing references) //IL_06ab: Unknown result type (might be due to invalid IL or missing references) //IL_06b3: Unknown result type (might be due to invalid IL or missing references) //IL_06db: Unknown result type (might be due to invalid IL or missing references) //IL_06f3: Unknown result type (might be due to invalid IL or missing references) //IL_070b: Unknown result type (might be due to invalid IL or missing references) //IL_0743: Unknown result type (might be due to invalid IL or missing references) //IL_074b: Unknown result type (might be due to invalid IL or missing references) //IL_0773: Unknown result type (might be due to invalid IL or missing references) //IL_078b: Unknown result type (might be due to invalid IL or missing references) //IL_07a3: Unknown result type (might be due to invalid IL or missing references) //IL_07db: Unknown result type (might be due to invalid IL or missing references) //IL_07e3: 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) 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; } BaseAI.FixedUpdate += new hook_FixedUpdate(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; 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; 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; val2.nextHighPriorityOverride = val13; } private void SnapfreezeTargeting(orig_FixedUpdate orig, BaseAI self) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0097: 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_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: 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_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (!(self.master.masterIndex == MasterCatalog.FindMasterIndex("MageMonsterMaster")) || !Object.op_Implicit((Object)(object)self.currentEnemy.gameObject) || !Object.op_Implicit((Object)(object)self.currentEnemy.characterBody)) { return; } Vector3 value = Vector3.zero; bool flag = false; if (self.HasLOS(self.currentEnemy.gameObject.transform.position)) { Ray val = default(Ray); ((Ray)(ref val))..ctor(self.currentEnemy.gameObject.transform.position, Vector3.down); float num = 8f + Mathf.Abs(self.currentEnemy.characterBody.transform.position.y - self.currentEnemy.characterBody.footPosition.y); RaycastHit val2 = default(RaycastHit); if (Physics.Raycast(val, ref val2, num, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask)) && self.HasLOS(((RaycastHit)(ref val2)).point + Vector3.up * 0.05f)) { flag = true; value = ((RaycastHit)(ref val2)).point + Vector3.up * 0.05f; } } if (flag) { self.customTarget._gameObject = self.currentEnemy.gameObject; self.customTarget.lastKnownBullseyePosition = value; self.customTarget.lastKnownBullseyePositionTime = FixedTimeStamp.now; self.customTarget.unset = false; } else { self.customTarget._gameObject = null; self.customTarget.lastKnownBullseyePosition = null; self.customTarget.lastKnownBullseyePositionTime = FixedTimeStamp.negativeInfinity; self.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_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: 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_023b: Unknown result type (might be due to invalid IL or missing references) //IL_0263: 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_028b: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Unknown result type (might be due to invalid IL or missing references) //IL_02cb: Unknown result type (might be due to invalid IL or missing references) //IL_02f3: Unknown result type (might be due to invalid IL or missing references) //IL_0303: Unknown result type (might be due to invalid IL or missing references) //IL_031b: Unknown result type (might be due to invalid IL or missing references) //IL_0353: Unknown result type (might be due to invalid IL or missing references) //IL_035b: Unknown result type (might be due to invalid IL or missing references) //IL_0383: Unknown result type (might be due to invalid IL or missing references) //IL_0393: Unknown result type (might be due to invalid IL or missing references) //IL_03ab: Unknown result type (might be due to invalid IL or missing references) //IL_03e3: Unknown result type (might be due to invalid IL or missing references) //IL_03eb: 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_043f: Unknown result type (might be due to invalid IL or missing references) //IL_0457: Unknown result type (might be due to invalid IL or missing references) //IL_048f: Unknown result type (might be due to invalid IL or missing references) //IL_0497: Unknown result type (might be due to invalid IL or missing references) //IL_04bf: Unknown result type (might be due to invalid IL or missing references) //IL_04eb: Unknown result type (might be due to invalid IL or missing references) //IL_0503: Unknown result type (might be due to invalid IL or missing references) //IL_053b: Unknown result type (might be due to invalid IL or missing references) //IL_0543: Unknown result type (might be due to invalid IL or missing references) //IL_056b: Unknown result type (might be due to invalid IL or missing references) //IL_0597: Unknown result type (might be due to invalid IL or missing references) //IL_05af: Unknown result type (might be due to invalid IL or missing references) //IL_05e7: Unknown result type (might be due to invalid IL or missing references) //IL_05ef: Unknown result type (might be due to invalid IL or missing references) //IL_0617: Unknown result type (might be due to invalid IL or missing references) //IL_062f: Unknown result type (might be due to invalid IL or missing references) //IL_0647: Unknown result type (might be due to invalid IL or missing references) //IL_067f: Unknown result type (might be due to invalid IL or missing references) //IL_0687: Unknown result type (might be due to invalid IL or missing references) //IL_06af: Unknown result type (might be due to invalid IL or missing references) //IL_06cf: Unknown result type (might be due to invalid IL or missing references) //IL_06e7: Unknown result type (might be due to invalid IL or missing references) //IL_071f: Unknown result type (might be due to invalid IL or missing references) //IL_0727: Unknown result type (might be due to invalid IL or missing references) //IL_074f: Unknown result type (might be due to invalid IL or missing references) //IL_0767: Unknown result type (might be due to invalid IL or missing references) //IL_077f: Unknown result type (might be due to invalid IL or missing references) //IL_07b7: Unknown result type (might be due to invalid IL or missing references) //IL_07bf: Unknown result type (might be due to invalid IL or missing references) //IL_07e7: Unknown result type (might be due to invalid IL or missing references) //IL_07ff: Unknown result type (might be due to invalid IL or missing references) //IL_0817: Unknown result type (might be due to invalid IL or missing references) //IL_084f: Unknown result type (might be due to invalid IL or missing references) //IL_0857: Unknown result type (might be due to invalid IL or missing references) //IL_087f: Unknown result type (might be due to invalid IL or missing references) //IL_08ab: Unknown result type (might be due to invalid IL or missing references) //IL_08c3: Unknown result type (might be due to invalid IL or missing references) //IL_08fb: Unknown result type (might be due to invalid IL or missing references) //IL_0903: Unknown result type (might be due to invalid IL or missing references) //IL_092b: 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_095b: Unknown result type (might be due to invalid IL or missing references) //IL_0993: Unknown result type (might be due to invalid IL or missing references) //IL_099b: Unknown result type (might be due to invalid IL or missing references) //IL_09c3: 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; 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_0433: Unknown result type (might be due to invalid IL or missing references) //IL_044b: Unknown result type (might be due to invalid IL or missing references) //IL_0483: Unknown result type (might be due to invalid IL or missing references) //IL_048b: Unknown result type (might be due to invalid IL or missing references) //IL_04b3: Unknown result type (might be due to invalid IL or missing references) //IL_04c3: Unknown result type (might be due to invalid IL or missing references) //IL_04db: Unknown result type (might be due to invalid IL or missing references) //IL_0513: Unknown result type (might be due to invalid IL or missing references) //IL_051b: Unknown result type (might be due to invalid IL or missing references) //IL_0543: Unknown result type (might be due to invalid IL or missing references) //IL_0553: Unknown result type (might be due to invalid IL or missing references) //IL_056b: Unknown result type (might be due to invalid IL or missing references) //IL_05a3: Unknown result type (might be due to invalid IL or missing references) //IL_05ab: Unknown result type (might be due to invalid IL or missing references) //IL_05d3: Unknown result type (might be due to invalid IL or missing references) //IL_05e3: Unknown result type (might be due to invalid IL or missing references) //IL_05fb: Unknown result type (might be due to invalid IL or missing references) //IL_0633: Unknown result type (might be due to invalid IL or missing references) //IL_063b: Unknown result type (might be due to invalid IL or missing references) //IL_0663: Unknown result type (might be due to invalid IL or missing references) //IL_067f: Unknown result type (might be due to invalid IL or missing references) //IL_0697: Unknown result type (might be due to invalid IL or missing references) //IL_06cf: Unknown result type (might be due to invalid IL or missing references) //IL_06d7: Unknown result type (might be due to invalid IL or missing references) //IL_06ff: Unknown result type (might be due to invalid IL or missing references) //IL_071b: Unknown result type (might be due to invalid IL or missing references) //IL_0733: Unknown result type (might be due to invalid IL or missing references) //IL_076b: Unknown result type (might be due to invalid IL or missing references) //IL_0773: Unknown result type (might be due to invalid IL or missing references) //IL_079b: Unknown result type (might be due to invalid IL or missing references) //IL_07b3: Unknown result type (might be due to invalid IL or missing references) //IL_07cb: Unknown result type (might be due to invalid IL or missing references) //IL_0803: 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_0833: 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_0863: Unknown result type (might be due to invalid IL or missing references) //IL_089b: Unknown result type (might be due to invalid IL or missing references) //IL_08a3: Unknown result type (might be due to invalid IL or missing references) //IL_08cb: Unknown result type (might be due to invalid IL or missing references) //IL_08e3: Unknown result type (might be due to invalid IL or missing references) //IL_08fb: Unknown result type (might be due to invalid IL or missing references) //IL_0933: Unknown result type (might be due to invalid IL or missing references) //IL_093b: Unknown result type (might be due to invalid IL or missing references) //IL_0963: Unknown result type (might be due to invalid IL or missing references) //IL_097b: Unknown result type (might be due to invalid IL or missing references) //IL_0993: Unknown result type (might be due to invalid IL or missing references) //IL_09cb: Unknown result type (might be due to invalid IL or missing references) //IL_09d3: Unknown result type (might be due to invalid IL or missing references) //IL_09fb: 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; 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; 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; 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 { 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_005c: 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_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: 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_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: 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_02a4: 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_0300: Unknown result type (might be due to invalid IL or missing references) //IL_0308: 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_034c: 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_03a8: Unknown result type (might be due to invalid IL or missing references) //IL_03b0: Unknown result type (might be due to invalid IL or missing references) //IL_03d8: 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_0414: 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_0454: Unknown result type (might be due to invalid IL or missing references) //IL_047c: Unknown result type (might be due to invalid IL or missing references) //IL_048c: Unknown result type (might be due to invalid IL or missing references) //IL_04b0: 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_04f0: Unknown result type (might be due to invalid IL or missing references) //IL_0518: 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_054c: Unknown result type (might be due to invalid IL or missing references) //IL_0584: 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_05b4: Unknown result type (might be due to invalid IL or missing references) //IL_05c4: Unknown result type (might be due to invalid IL or missing references) //IL_05e8: Unknown result type (might be due to invalid IL or missing references) //IL_0620: Unknown result type (might be due to invalid IL or missing references) //IL_0628: 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_0660: 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_06fc: Unknown result type (might be due to invalid IL or missing references) //IL_0720: Unknown result type (might be due to invalid IL or missing references) //IL_0758: Unknown result type (might be due to invalid IL or missing references) //IL_0760: Unknown result type (might be due to invalid IL or missing references) //IL_0788: Unknown result type (might be due to invalid IL or missing references) //IL_07ac: 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_07fc: Unknown result type (might be due to invalid IL or missing references) //IL_0804: 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_0844: 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_0894: Unknown result type (might be due to invalid IL or missing references) //IL_089c: 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_08dc: 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_092c: Unknown result type (might be due to invalid IL or missing references) //IL_0934: 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_0974: 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_09c4: Unknown result type (might be due to invalid IL or missing references) //IL_09cc: 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) 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; } YesChef.CheckForYesChefEarlyExit += new hook_CheckForYesChefEarlyExit(FixYesChef); AISkillDriver val = masterObject.AddComponent<AISkillDriver>(); val.skillSlot = (SkillSlot)0; val.requiredSkill = boostedDiceSkill; val.requireSkillReady = true; val.requireEquipmentReady = false; val.moveTargetType = (TargetType)0; val.minDistance = 0f; val.maxDistance = 10f; val.selectionRequiresTargetLoS = true; val.activationRequiresTargetLoS = true; val.activationRequiresAimConfirmation = false; val.movementType = (MovementType)1; val.aimType = (AimType)2; val.ignoreNodeGraph = true; val.noRepeat = false; val.shouldSprint = false; val.shouldFireEquipment = false; val.buttonPressType = (ButtonPressType)2; AISkillDriver val2 = masterObject.AddComponent<AISkillDriver>(); val2.skillSlot = (SkillSlot)1; val2.requiredSkill = boostedSearSkill; val2.requireSkillReady = true; val2.requireEquipmentReady = false; val2.moveTargetType = (TargetType)0; val2.minDistance = 0f; val2.maxDistance = 150f; val2.selectionRequiresTargetLoS = true; val2.activationRequiresTargetLoS = true; val2.activationRequiresAimConfirmation = true; val2.movementType = (MovementType)1; 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)1; val3.requiredSkill = boostedIceBoxSkill; 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)1; 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)3; val4.requiredSkill = glazeSkill; val4.requireSkillReady = true; val4.requireEquipmentReady = false; val4.moveTargetType = (TargetType)0; val4.minDistance = 0f; val4.maxDistance = 80f; val4.selectionRequiresTargetLoS = true; val4.activationRequiresTargetLoS = true; val4.activationRequiresAimConfirmation = true; val4.movementType = (MovementType)1; val4.aimType = (AimType)2; val4.ignoreNodeGraph = false; val4.noRepeat = true; val4.shouldSprint = true; val4.shouldFireEquipment = false; val4.buttonPressType = (ButtonPressType)0; val4.driverUpdateTimerOverride = 0.8f; AISkillDriver val5 = masterObject.AddComponent<AISkillDriver>(); val5.skillSlot = (SkillSlot)3; val5.requiredSkill = yesChefSkill; val5.requireSkillReady = true; val5.requireEquipmentReady = false; val5.moveTargetType = (TargetType)0; val5.minDistance = 0f; val5.maxDistance = 400f; val5.selectionRequiresTargetLoS = false; val5.activationRequiresTargetLoS = false; val5.activationRequiresAimConfirmation = false; val5.movementType = (MovementType)1; val5.aimType = (AimType)2; val5.ignoreNodeGraph = false; val5.noRepeat = false; val5.shouldSprint = true; val5.shouldFireEquipment = false; val5.buttonPressType = (ButtonPressType)2; val5.driverUpdateTimerOverride = 1f; AISkillDriver val6 = masterObject.AddComponent<AISkillDriver>(); val6.skillSlot = (SkillSlot)2; val6.requiredSkill = (SkillDef)(object)oilSpillSkill; val6.requireSkillReady = true; val6.requireEquipmentReady = false; val6.moveTargetType = (TargetType)0; val6.minDistance = 0f; val6.maxDistance = 40f; 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 = true; val6.shouldFireEquipment = false; val6.buttonPressType = (ButtonPressType)2; val6.selectionRequiresOnGround = true; AISkillDriver val7 = masterObject.AddComponent<AISkillDriver>(); val7.skillSlot = (SkillSlot)1; val7.requiredSkill = searSkill; val7.requireSkillReady = true; val7.requireEquipmentReady = false; val7.moveTargetType = (TargetType)0; val7.minDistance = 0f; val7.maxDistance = 30f; val7.selectionRequiresTargetLoS = true; val7.activationRequiresTargetLoS = true; val7.activationRequiresAimConfirmation = false; val7.movementType = (Mov