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