Decompiled source of Spy v1.2.2
plugins/SpyMod.dll
Decompiled 3 months ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using AncientScepter; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using EmotesAPI; using EntityStates; using EntityStates.AI.Walker; using EntityStates.BrotherMonster; using EntityStates.Commando.CommandoWeapon; using HG; using HG.BlendableTypes; using JetBrains.Annotations; using KinematicCharacterController; using On.RoR2; using On.RoR2.UI; using R2API; using R2API.Networking; using R2API.Networking.Interfaces; using R2API.Utils; using RoR2; using RoR2.Achievements; using RoR2.Audio; using RoR2.CharacterAI; using RoR2.ContentManagement; using RoR2.HudOverlay; using RoR2.Navigation; using RoR2.Orbs; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using SpyMod.Modules; using SpyMod.Modules.Achievements; using SpyMod.Modules.BaseStates; using SpyMod.Modules.Characters; using SpyMod.Spy; using SpyMod.Spy.Components; using SpyMod.Spy.Content; using SpyMod.Spy.SkillStates; using ThreeEyedGames; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.Rendering.PostProcessing; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("SpyMod")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+1a2db0b75c64d0114a3dc5e1e6dff7f4db300cf2")] [assembly: AssemblyProduct("SpyMod")] [assembly: AssemblyTitle("SpyMod")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] internal enum SpyCameraParams { DEFAULT, AIM_PISTOL, AIM_SNIPER, EMOTE } namespace SpyMod { internal static class Log { internal 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 ErrorAssetBundle(string assetName, string bundleName) { Error("failed to load asset, " + assetName + ", because it does not exist in asset bundle, " + bundleName); } 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); } } [NetworkCompatibility(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.kenko.Spy", "Spy", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class SpyPlugin : BaseUnityPlugin { public const string MODUID = "com.kenko.Spy"; public const string MODNAME = "Spy"; public const string MODVERSION = "1.0.0"; public const string DEVELOPER_PREFIX = "KENKO"; public static SpyPlugin instance; public static bool emotesInstalled => Chainloader.PluginInfos.ContainsKey("com.weliveinasociety.CustomEmotesAPI"); public static bool scepterInstalled => Chainloader.PluginInfos.ContainsKey("com.DestroyedClone.AncientScepter"); private void Awake() { instance = this; NetworkingAPI.RegisterMessageType<SyncStabExplosion>(); NetworkingAPI.RegisterMessageType<SyncStealth>(); NetworkingAPI.RegisterMessageType<SyncResetStab>(); Log.Init(((BaseUnityPlugin)this).Logger); Language.Init(); new SpySurvivor().Initialize(); new SpyDecoy().Initialize(); new ContentPacks().Initialize(); } } } namespace SpyMod.Spy { public class SpyDecoy : CharacterBase<SpyDecoy> { public const string SPY_PREFIX = "KENKO_SPY_DECOY_"; internal static GameObject characterPrefab; public static GameObject decoyMasterPrefab; public static SpawnCard decoySpawnCard; public override string assetBundleName => "spy"; public override string bodyName => "SpyDecoyBody"; public override string modelPrefabName => "mdlSpyDecoy"; public override BodyInfo bodyInfo => new BodyInfo { bodyName = bodyName, bodyNameToken = "KENKO_SPY_DECOY_NAME", subtitleNameToken = "KENKO_SPY_DECOY_SUBTITLE", characterPortrait = assetBundle.LoadAsset<Texture>("texSpyIcon"), bodyColor = SpyAssets.spyColor, crosshair = CharacterAssets.LoadCrosshair("Standard"), podPrefab = null, maxHealth = 1f, healthRegen = 0f, armor = 0f, damage = 0f, moveSpeed = 0f, moveSpeedGrowth = 0f, damageGrowth = 0f, healthGrowth = 0f, jumpCount = 0 }; public override CustomRendererInfo[] customRendererInfos => new CustomRendererInfo[6] { new CustomRendererInfo { childName = "Model", dontHotpoo = true }, new CustomRendererInfo { childName = "Revolver", dontHotpoo = true }, new CustomRendererInfo { childName = "Knife", dontHotpoo = true }, new CustomRendererInfo { childName = "Watch", dontHotpoo = true }, new CustomRendererInfo { childName = "Tie", dontHotpoo = true }, new CustomRendererInfo { childName = "Visor", dontHotpoo = true } }; public override ItemDisplaysBase itemDisplays => null; public override AssetBundle assetBundle { get; protected set; } public override GameObject bodyPrefab { get; protected set; } public override CharacterBody prefabCharacterBody { get; protected set; } public override GameObject characterModelObject { get; protected set; } public override CharacterModel prefabCharacterModel { get; protected set; } public override void Initialize() { base.Initialize(); } public override void InitializeCharacter() { base.InitializeCharacter(); ChildLocator componentInChildren = bodyPrefab.GetComponentInChildren<ChildLocator>(); ((Component)componentInChildren.FindChild("Knife")).gameObject.SetActive(false); ((Component)componentInChildren.FindChild("Watch")).gameObject.SetActive(false); bodyPrefab.layer = LayerIndex.fakeActor.intVal; InitializeEntityStateMachines(); InitializeSkills(); InitializeSkins(); InitializeCharacterMaster(); characterPrefab = bodyPrefab; } public override void InitializeEntityStateMachines() { Prefabs.ClearEntityStateMachines(bodyPrefab); Prefabs.AddMainEntityStateMachine(bodyPrefab, "Body", typeof(GenericCharacterMain), typeof(DecoySpawn)); } public override void InitializeSkills() { Skills.CreateDecoySkillFamilies(bodyPrefab); } public override void InitializeSkins() { ModelSkinController val = ((Component)prefabCharacterModel).gameObject.AddComponent<ModelSkinController>(); ChildLocator component = ((Component)prefabCharacterModel).GetComponent<ChildLocator>(); RendererInfo[] baseRendererInfos = prefabCharacterModel.baseRendererInfos; List<SkinDef> list = new List<SkinDef>(); SkinDef item = Skins.CreateSkinDef("DEFAULT_SKIN", assetBundle.LoadAsset<Sprite>("texDefaultSkin"), baseRendererInfos, ((Component)prefabCharacterModel).gameObject); list.Add(item); val.skins = list.ToArray(); } public override void InitializeCharacterMaster() { //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) GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Lemurian/LemurianMaster.prefab").WaitForCompletion(), "SpyDecoyMaster"); CharacterMaster component = val.GetComponent<CharacterMaster>(); component.bodyPrefab = bodyPrefab; BaseAI component2 = val.GetComponent<BaseAI>(); component2.neverRetaliateFriendlies = true; component2.aimVectorMaxSpeed *= 3f; component2.fullVision = true; InitializeSkillDrivers(val); decoyMasterPrefab = val; SpyMod.Modules.Content.AddMasterPrefab(val); CreateSpawnCard(); } private void CreateSpawnCard() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) CharacterSpawnCard val = ScriptableObject.CreateInstance<CharacterSpawnCard>(); ((Object)val).name = "cssSpyDecoy"; ((SpawnCard)val).prefab = decoyMasterPrefab; ((SpawnCard)val).sendOverNetwork = true; ((SpawnCard)val).hullSize = (HullClassification)0; ((SpawnCard)val).nodeGraphType = (GraphType)0; ((SpawnCard)val).requiredFlags = (NodeFlags)0; ((SpawnCard)val).forbiddenFlags = (NodeFlags)4; ((SpawnCard)val).eliteRules = (EliteRules)0; ((SpawnCard)val).occupyPosition = false; decoySpawnCard = (SpawnCard)(object)val; } protected virtual void InitializeSkillDrivers(GameObject masterPrefab) { //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_019a: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_020d: Unknown result type (might be due to invalid IL or missing references) //IL_0214: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_0246: 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_02b9: 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_02d9: Unknown result type (might be due to invalid IL or missing references) //IL_02f5: Unknown result type (might be due to invalid IL or missing references) //IL_036d: Unknown result type (might be due to invalid IL or missing references) //IL_0375: 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_0399: Unknown result type (might be due to invalid IL or missing references) //IL_03b5: Unknown result type (might be due to invalid IL or missing references) //IL_042d: Unknown result type (might be due to invalid IL or missing references) //IL_0435: Unknown result type (might be due to invalid IL or missing references) //IL_043d: Unknown result type (might be due to invalid IL or missing references) //IL_0459: Unknown result type (might be due to invalid IL or missing references) AISkillDriver[] componentsInChildren = masterPrefab.GetComponentsInChildren<AISkillDriver>(); foreach (AISkillDriver val in componentsInChildren) { Object.DestroyImmediate((Object)(object)val); } AISkillDriver val2 = masterPrefab.AddComponent<AISkillDriver>(); val2.customName = "DoNothing1"; val2.skillSlot = (SkillSlot)(-1); val2.requireSkillReady = true; val2.minUserHealthFraction = float.NegativeInfinity; val2.maxUserHealthFraction = float.PositiveInfinity; val2.minTargetHealthFraction = float.NegativeInfinity; val2.maxTargetHealthFraction = float.PositiveInfinity; val2.minDistance = 0f; val2.maxDistance = float.PositiveInfinity; val2.activationRequiresAimConfirmation = false; val2.activationRequiresTargetLoS = false; val2.selectionRequiresTargetLoS = false; val2.maxTimesSelected = -1; val2.moveTargetType = (TargetType)0; val2.movementType = (MovementType)0; val2.aimType = (AimType)0; val2.moveInputScale = 1f; val2.ignoreNodeGraph = false; val2.buttonPressType = (ButtonPressType)0; AISkillDriver val3 = masterPrefab.AddComponent<AISkillDriver>(); val3.customName = "DoNothing2"; val3.skillSlot = (SkillSlot)(-1); val3.requireSkillReady = true; val3.minUserHealthFraction = float.NegativeInfinity; val3.maxUserHealthFraction = float.PositiveInfinity; val3.minTargetHealthFraction = float.NegativeInfinity; val3.maxTargetHealthFraction = float.PositiveInfinity; val3.minDistance = 0f; val3.maxDistance = float.PositiveInfinity; val3.activationRequiresAimConfirmation = false; val3.activationRequiresTargetLoS = false; val3.selectionRequiresTargetLoS = false; val3.maxTimesSelected = -1; val3.moveTargetType = (TargetType)0; val3.movementType = (MovementType)0; val3.aimType = (AimType)0; val3.moveInputScale = 1f; val3.ignoreNodeGraph = false; val3.buttonPressType = (ButtonPressType)0; AISkillDriver val4 = masterPrefab.AddComponent<AISkillDriver>(); val4.customName = "DoNothing3"; val4.skillSlot = (SkillSlot)(-1); val4.requireSkillReady = true; val4.minUserHealthFraction = float.NegativeInfinity; val4.maxUserHealthFraction = float.PositiveInfinity; val4.minTargetHealthFraction = float.NegativeInfinity; val4.maxTargetHealthFraction = float.PositiveInfinity; val4.minDistance = 0f; val4.maxDistance = float.PositiveInfinity; val4.activationRequiresAimConfirmation = false; val4.activationRequiresTargetLoS = false; val4.selectionRequiresTargetLoS = false; val4.maxTimesSelected = -1; val4.moveTargetType = (TargetType)0; val4.movementType = (MovementType)0; val4.aimType = (AimType)0; val4.moveInputScale = 1f; val4.ignoreNodeGraph = false; val4.buttonPressType = (ButtonPressType)0; AISkillDriver val5 = masterPrefab.AddComponent<AISkillDriver>(); val5.customName = "DoNothing4"; val5.skillSlot = (SkillSlot)(-1); val5.requireSkillReady = true; val5.minUserHealthFraction = float.NegativeInfinity; val5.maxUserHealthFraction = float.PositiveInfinity; val5.minTargetHealthFraction = float.NegativeInfinity; val5.maxTargetHealthFraction = float.PositiveInfinity; val5.minDistance = 0f; val5.maxDistance = float.PositiveInfinity; val5.activationRequiresAimConfirmation = false; val5.activationRequiresTargetLoS = false; val5.selectionRequiresTargetLoS = false; val5.maxTimesSelected = -1; val5.moveTargetType = (TargetType)0; val5.movementType = (MovementType)0; val5.aimType = (AimType)0; val5.moveInputScale = 1f; val5.ignoreNodeGraph = false; val5.buttonPressType = (ButtonPressType)0; AISkillDriver val6 = masterPrefab.AddComponent<AISkillDriver>(); val6.customName = "DoNothing5"; val6.skillSlot = (SkillSlot)(-1); val6.requireSkillReady = true; val6.minUserHealthFraction = float.NegativeInfinity; val6.maxUserHealthFraction = float.PositiveInfinity; val6.minTargetHealthFraction = float.NegativeInfinity; val6.maxTargetHealthFraction = float.PositiveInfinity; val6.minDistance = 0f; val6.maxDistance = float.PositiveInfinity; val6.activationRequiresAimConfirmation = false; val6.activationRequiresTargetLoS = false; val6.selectionRequiresTargetLoS = false; val6.maxTimesSelected = -1; val6.moveTargetType = (TargetType)0; val6.movementType = (MovementType)0; val6.aimType = (AimType)0; val6.moveInputScale = 1f; val6.ignoreNodeGraph = false; val6.buttonPressType = (ButtonPressType)0; AISkillDriver val7 = masterPrefab.AddComponent<AISkillDriver>(); val7.customName = "DoNothing6"; val7.skillSlot = (SkillSlot)(-1); val7.requireSkillReady = true; val7.minUserHealthFraction = float.NegativeInfinity; val7.maxUserHealthFraction = float.PositiveInfinity; val7.minTargetHealthFraction = float.NegativeInfinity; val7.maxTargetHealthFraction = float.PositiveInfinity; val7.minDistance = 0f; val7.maxDistance = float.PositiveInfinity; val7.activationRequiresAimConfirmation = false; val7.activationRequiresTargetLoS = false; val7.selectionRequiresTargetLoS = false; val7.maxTimesSelected = -1; val7.moveTargetType = (TargetType)0; val7.movementType = (MovementType)0; val7.aimType = (AimType)0; val7.moveInputScale = 1f; val7.ignoreNodeGraph = false; val7.buttonPressType = (ButtonPressType)0; } } public class SpySurvivor : SurvivorBase<SpySurvivor> { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_Init <>9__64_0; internal void <Emotes>b__64_0(orig_Init orig) { orig.Invoke(); GameObject val = SpyAssets.mainAssetBundle.LoadAsset<GameObject>("spy_emoteskeleton"); CustomEmotesAPI.ImportArmature(characterPrefab, val, 0, true); } } public const string SPY_PREFIX = "KENKO_SPY_"; internal static GameObject characterPrefab; public static SkillDef cloakScepterSkillDef; public static SkillDef deadmanScepterSkillDef; public override string assetBundleName => "spy"; public override string bodyName => "SpyBody"; public override string masterName => "SpyMonsterMaster"; public override string modelPrefabName => "mdlSpy"; public override string displayPrefabName => "SpyDisplay"; public override string survivorTokenPrefix => "KENKO_SPY_"; public override BodyInfo bodyInfo => new BodyInfo { bodyName = bodyName, bodyNameToken = "KENKO_SPY_NAME", subtitleNameToken = "KENKO_SPY_SUBTITLE", characterPortrait = assetBundle.LoadAsset<Texture>("texSpyIcon"), bodyColor = SpyAssets.spyColor, sortPosition = 7f, crosshair = CharacterAssets.LoadCrosshair("Standard"), podPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/NetworkedObjects/SurvivorPod"), maxHealth = 100f, healthRegen = 1.2f, armor = 0f, damage = 12f, damageGrowth = 2.4f, healthGrowth = 35f, jumpCount = 1 }; public override CustomRendererInfo[] customRendererInfos => new CustomRendererInfo[6] { new CustomRendererInfo { childName = "Model", dontHotpoo = true }, new CustomRendererInfo { childName = "Revolver", dontHotpoo = true }, new CustomRendererInfo { childName = "Knife", dontHotpoo = true }, new CustomRendererInfo { childName = "Watch", dontHotpoo = true }, new CustomRendererInfo { childName = "Tie", dontHotpoo = true }, new CustomRendererInfo { childName = "Visor", dontHotpoo = true } }; public override UnlockableDef characterUnlockableDef => SpyUnlockables.characterUnlockableDef; public override ItemDisplaysBase itemDisplays => new SpyItemDisplays(); public override AssetBundle assetBundle { get; protected set; } public override GameObject bodyPrefab { get; protected set; } public override CharacterBody prefabCharacterBody { get; protected set; } public override GameObject characterModelObject { get; protected set; } public override CharacterModel prefabCharacterModel { get; protected set; } public override GameObject displayPrefab { get; protected set; } public override void Initialize() { base.Initialize(); } public override void InitializeCharacter() { SpyConfig.Init(); SpyUnlockables.Init(); base.InitializeCharacter(); SpyCrosshair.Init(assetBundle); CameraParams.InitializeParams(); ChildLocator componentInChildren = bodyPrefab.GetComponentInChildren<ChildLocator>(); ((Component)componentInChildren.FindChild("Knife")).gameObject.SetActive(false); ((Component)componentInChildren.FindChild("Watch")).gameObject.SetActive(false); DamageTypes.Init(); SpyStates.Init(); SpyTokens.Init(); SpyAssets.Init(assetBundle); SpyBuffs.Init(assetBundle); InitializeEntityStateMachines(); InitializeSkills(); InitializeSkins(); InitializeCharacterMaster(); AdditionalBodySetup(); characterPrefab = bodyPrefab; AddHooks(); } private void AdditionalBodySetup() { AddHitboxes(); bodyPrefab.AddComponent<SpyController>(); } public void AddHitboxes() { Prefabs.SetupHitBoxGroup(characterModelObject, "KnifeHitbox", "KnifeHitbox"); } public override void InitializeEntityStateMachines() { Prefabs.ClearEntityStateMachines(bodyPrefab); Prefabs.AddMainEntityStateMachine(bodyPrefab, "Body", typeof(MainState), typeof(SpawnTeleporterState)); Prefabs.AddEntityStateMachine(bodyPrefab, "Weapon"); Prefabs.AddEntityStateMachine(bodyPrefab, "Weapon2"); Prefabs.AddEntityStateMachine(bodyPrefab, "Watch"); } public override void InitializeSkills() { bodyPrefab.AddComponent<SpyPassive>(); Skills.CreateSkillFamilies(bodyPrefab); AddPassiveSkills(); AddPrimarySkills(); AddSecondarySkills(); AddUtilitySkills(); AddSpecialSkills(); if (SpyPlugin.scepterInstalled) { InitializeScepter(); } } private void AddPassiveSkills() { //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) SpyPassive component = bodyPrefab.GetComponent<SpyPassive>(); SkillLocator component2 = bodyPrefab.GetComponent<SkillLocator>(); component2.passiveSkill.enabled = false; component.spyPassive = Skills.CreateSkillDef(new SkillDefInfo { skillName = "KENKO_SPY_PASSIVE_NAME", skillNameToken = "KENKO_SPY_PASSIVE_NAME", skillDescriptionToken = "KENKO_SPY_PASSIVE_DESCRIPTION", skillIcon = assetBundle.LoadAsset<Sprite>("texSpyPassive"), keywordTokens = new string[1] { Tokens.spyBackstabKeyword }, activationState = new SerializableEntityStateType(typeof(Idle)), activationStateMachineName = "", baseMaxStock = 1, baseRechargeInterval = 0f, beginSkillCooldownOnSkillEnd = false, canceledFromSprinting = false, forceSprintDuringState = false, fullRestockOnAssign = true, interruptPriority = (InterruptPriority)0, resetCooldownTimerOnUse = false, isCombatSkill = false, mustKeyPress = false, cancelSprintingOnActivation = false, rechargeStock = 1, requiredStock = 2, stockToConsume = 1 }); Skills.AddPassiveSkills(component.passiveSkillSlot.skillFamily, component.spyPassive); } private void AddPrimarySkills() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0074: 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_013f: 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) SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "Diamondback"; skillDefInfo.skillNameToken = "KENKO_SPY_PRIMARY_REVOLVER_NAME"; skillDefInfo.skillDescriptionToken = "KENKO_SPY_PRIMARY_REVOLVER_DESCRIPTION"; skillDefInfo.keywordTokens = new string[1] { Tokens.spyCritKeyword }; skillDefInfo.skillIcon = assetBundle.LoadAsset<Sprite>("texSpyRevolver"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(Shoot)); skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.interruptPriority = (InterruptPriority)0; skillDefInfo.baseMaxStock = 1; skillDefInfo.baseRechargeInterval = 0f; skillDefInfo.rechargeStock = 0; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 0; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.mustKeyPress = false; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = true; skillDefInfo.forceSprintDuringState = false; SpySkillDef spySkillDef = Skills.CreateSkillDef<SpySkillDef>(skillDefInfo); skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "Ambassador"; skillDefInfo.skillNameToken = "KENKO_SPY_PRIMARY_REVOLVER2_NAME"; skillDefInfo.skillDescriptionToken = "KENKO_SPY_PRIMARY_REVOLVER2_DESCRIPTION"; skillDefInfo.keywordTokens = new string[0]; skillDefInfo.skillIcon = assetBundle.LoadAsset<Sprite>("texSpyAmbassador"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(Shoot2)); skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.interruptPriority = (InterruptPriority)0; skillDefInfo.baseMaxStock = 1; skillDefInfo.baseRechargeInterval = 0f; skillDefInfo.rechargeStock = 0; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 0; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.mustKeyPress = false; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = true; skillDefInfo.forceSprintDuringState = false; SpySkillDef spySkillDef2 = Skills.CreateSkillDef<SpySkillDef>(skillDefInfo); Skills.AddPrimarySkills(bodyPrefab, spySkillDef, spySkillDef2); } private void AddSecondarySkills() { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "Stab"; skillDefInfo.skillNameToken = "KENKO_SPY_SECONDARY_KNIFE_NAME"; skillDefInfo.skillDescriptionToken = "KENKO_SPY_SECONDARY_KNIFE_DESCRIPTION"; skillDefInfo.keywordTokens = new string[1] { Tokens.agileKeyword }; skillDefInfo.skillIcon = assetBundle.LoadAsset<Sprite>("texSpyStab"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(ChargeKnife)); skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.baseMaxStock = 1; skillDefInfo.baseRechargeInterval = 5f; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 1; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.beginSkillCooldownOnSkillEnd = true; skillDefInfo.mustKeyPress = true; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = false; skillDefInfo.forceSprintDuringState = false; SpySkillDef spySkillDef = Skills.CreateSkillDef<SpySkillDef>(skillDefInfo); skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "BigEarner"; skillDefInfo.skillNameToken = "KENKO_SPY_SECONDARY_KNIFE2_NAME"; skillDefInfo.skillDescriptionToken = "KENKO_SPY_SECONDARY_KNIFE2_DESCRIPTION"; skillDefInfo.keywordTokens = new string[2] { Tokens.agileKeyword, Tokens.spyBigEarnerKeyword }; skillDefInfo.skillIcon = assetBundle.LoadAsset<Sprite>("texSpyStab2"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(ChargeKnife)); skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.baseMaxStock = 1; skillDefInfo.baseRechargeInterval = 7f; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 1; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.beginSkillCooldownOnSkillEnd = true; skillDefInfo.mustKeyPress = true; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = false; skillDefInfo.forceSprintDuringState = false; SpySkillDef spySkillDef2 = Skills.CreateSkillDef<SpySkillDef>(skillDefInfo); Skills.AddSecondarySkills(bodyPrefab, spySkillDef, spySkillDef2); } private void AddUtilitySkills() { //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "Sap"; skillDefInfo.skillNameToken = "KENKO_SPY_UTILITY_FLIP_NAME"; skillDefInfo.skillDescriptionToken = "KENKO_SPY_UTILITY_FLIP_DESCRIPTION"; skillDefInfo.keywordTokens = new string[0]; skillDefInfo.skillIcon = assetBundle.LoadAsset<Sprite>("texSpyFlip"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(Sap)); skillDefInfo.activationStateMachineName = "Weapon2"; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.baseRechargeInterval = 8f; skillDefInfo.baseMaxStock = 1; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 1; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.mustKeyPress = false; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.isCombatSkill = false; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = false; skillDefInfo.forceSprintDuringState = true; SkillDef val = Skills.CreateSkillDef(skillDefInfo); Skills.AddUtilitySkills(bodyPrefab, val); } private void AddSpecialSkills() { //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "Cloak"; skillDefInfo.skillNameToken = "KENKO_SPY_SPECIAL_WATCH_NAME"; skillDefInfo.skillDescriptionToken = "KENKO_SPY_SPECIAL_WATCH_DESCRIPTION"; skillDefInfo.keywordTokens = new string[0]; skillDefInfo.skillIcon = assetBundle.LoadAsset<Sprite>("texSpyCloak"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(Cloak)); skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.interruptPriority = (InterruptPriority)2; skillDefInfo.baseRechargeInterval = 0f; skillDefInfo.baseMaxStock = 1; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 0; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = true; skillDefInfo.mustKeyPress = true; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.isCombatSkill = false; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = false; skillDefInfo.forceSprintDuringState = false; SkillDef val = Skills.CreateSkillDef(skillDefInfo); skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "DeadmansWatch"; skillDefInfo.skillNameToken = "KENKO_SPY_SPECIAL_WATCH2_NAME"; skillDefInfo.skillDescriptionToken = "KENKO_SPY_SPECIAL_WATCH2_DESCRIPTION"; skillDefInfo.keywordTokens = new string[0]; skillDefInfo.skillIcon = assetBundle.LoadAsset<Sprite>("texSpyWatch"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(SwapWatch)); skillDefInfo.activationStateMachineName = "Watch"; skillDefInfo.interruptPriority = (InterruptPriority)2; skillDefInfo.baseRechargeInterval = 10f; skillDefInfo.baseMaxStock = 1; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 0; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.mustKeyPress = true; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.isCombatSkill = false; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = false; skillDefInfo.forceSprintDuringState = false; SkillDef val2 = Skills.CreateSkillDef(skillDefInfo); Skills.AddSpecialSkills(bodyPrefab, val, val2); } private void InitializeScepter() { //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_006c: 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_014d: Unknown result type (might be due to invalid IL or missing references) SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "Cloak Scepter"; skillDefInfo.skillNameToken = "KENKO_SPY_SPECIAL_SCEPTER_WATCH_NAME"; skillDefInfo.skillDescriptionToken = "KENKO_SPY_SPECIAL_SCEPTER_WATCH_DESCRIPTION"; skillDefInfo.keywordTokens = new string[0]; skillDefInfo.skillIcon = assetBundle.LoadAsset<Sprite>("texSpyCloak"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(CloakScepter)); skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.interruptPriority = (InterruptPriority)2; skillDefInfo.baseRechargeInterval = 0f; skillDefInfo.baseMaxStock = 1; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 0; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = true; skillDefInfo.mustKeyPress = true; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.isCombatSkill = false; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = false; skillDefInfo.forceSprintDuringState = false; cloakScepterSkillDef = Skills.CreateSkillDef(skillDefInfo); skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "Deadman's Watch Scepter"; skillDefInfo.skillNameToken = "KENKO_SPY_SPECIAL_SCEPTER_WATCH2_NAME"; skillDefInfo.skillDescriptionToken = "KENKO_SPY_SPECIAL_SCEPTER_WATCH2_DESCRIPTION"; skillDefInfo.keywordTokens = new string[0]; skillDefInfo.skillIcon = assetBundle.LoadAsset<Sprite>("texSpyWatch"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(SwapWatchScepter)); skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.interruptPriority = (InterruptPriority)2; skillDefInfo.baseRechargeInterval = 10f; skillDefInfo.baseMaxStock = 1; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 0; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.mustKeyPress = true; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.isCombatSkill = false; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = false; skillDefInfo.forceSprintDuringState = false; deadmanScepterSkillDef = Skills.CreateSkillDef(skillDefInfo); ItemBase<AncientScepterItem>.instance.RegisterScepterSkill(cloakScepterSkillDef, bodyName, (SkillSlot)3, 0); ItemBase<AncientScepterItem>.instance.RegisterScepterSkill(deadmanScepterSkillDef, bodyName, (SkillSlot)3, 1); } public override void InitializeSkins() { //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: 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_01f2: Unknown result type (might be due to invalid IL or missing references) ModelSkinController val = ((Component)prefabCharacterModel).gameObject.AddComponent<ModelSkinController>(); ChildLocator component = ((Component)prefabCharacterModel).GetComponent<ChildLocator>(); RendererInfo[] baseRendererInfos = prefabCharacterModel.baseRendererInfos; List<SkinDef> list = new List<SkinDef>(); SkinDef val2 = Skins.CreateSkinDef("DEFAULT_SKIN", assetBundle.LoadAsset<Sprite>("texDefaultSkin"), baseRendererInfos, ((Component)prefabCharacterModel).gameObject); val2.meshReplacements = Skins.getMeshReplacements(assetBundle, baseRendererInfos, "meshSpy", "meshRevolver", "meshKnife", "meshWatch", "meshTie", "meshVisor"); val2.gameObjectActivations = (GameObjectActivation[])(object)new GameObjectActivation[1] { new GameObjectActivation { gameObject = component.FindChildGameObject("Tie"), shouldActivate = true } }; list.Add(val2); SkinDef val3 = Skins.CreateSkinDef("KENKO_SPY_MASTERY_SKIN_NAME", assetBundle.LoadAsset<Sprite>("texMonsoonSkin"), baseRendererInfos, ((Component)prefabCharacterModel).gameObject, SpyUnlockables.masterySkinUnlockableDef); val3.meshReplacements = Skins.getMeshReplacements(assetBundle, baseRendererInfos, "meshSpyAlt", "meshRevolverAlt", "meshKnifeAlt", "meshWatchAlt", null, "meshVisorAlt"); val3.rendererInfos[0].defaultMaterial = SpyAssets.spyMonsoonMat; val3.rendererInfos[1].defaultMaterial = SpyAssets.spyMonsoonMat; val3.rendererInfos[2].defaultMaterial = SpyAssets.spyMonsoonMat; val3.rendererInfos[3].defaultMaterial = SpyAssets.spyMonsoonMat; val3.rendererInfos[5].defaultMaterial = SpyAssets.spyVisorMonsoonMat; val3.gameObjectActivations = (GameObjectActivation[])(object)new GameObjectActivation[1] { new GameObjectActivation { gameObject = component.FindChildGameObject("Tie"), shouldActivate = false } }; list.Add(val3); val.skins = list.ToArray(); } public override void InitializeCharacterMaster() { SpyAI.Init(bodyPrefab, masterName); } private void AddHooks() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Expected O, but got Unknown HUD.onHudTargetChangedGlobal += HUDSetup; LoadoutPanelController.Rebuild += new hook_Rebuild(LoadoutPanelController_Rebuild); HealthComponent.TakeDamageProcess += new hook_TakeDamageProcess(HealthComponent_TakeDamageProcess); GlobalEventManager.onCharacterDeathGlobal += GlobalEventManager_onCharacterDeathGlobal; RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients); if (SpyPlugin.emotesInstalled) { Emotes(); } } private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) if (sender.bodyIndex != BodyCatalog.FindBodyIndex("SpyBody")) { return; } SpyController component = ((Component)sender).gameObject.GetComponent<SpyController>(); if (Object.op_Implicit((Object)(object)component)) { if (sender.HasBuff(SpyBuffs.armorBuff)) { args.armorAdd += 100f; } if (sender.HasBuff(SpyBuffs.spyBigEarnerBuff)) { args.moveSpeedMultAdd += (float)sender.GetBuffCount(SpyBuffs.spyBigEarnerBuff) * 0.15f; } } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private static void Emotes() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Expected O, but got Unknown object obj = <>c.<>9__64_0; if (obj == null) { hook_Init val = delegate(orig_Init orig) { orig.Invoke(); GameObject val2 = SpyAssets.mainAssetBundle.LoadAsset<GameObject>("spy_emoteskeleton"); CustomEmotesAPI.ImportArmature(characterPrefab, val2, 0, true); }; <>c.<>9__64_0 = val; obj = (object)val; } SurvivorCatalog.Init += (hook_Init)obj; } private static void LoadoutPanelController_Rebuild(orig_Rebuild orig, LoadoutPanelController self) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (self.currentDisplayData.bodyIndex != BodyCatalog.FindBodyIndex("SpyBody")) { return; } LanguageTextMeshController[] componentsInChildren = ((Component)self).gameObject.GetComponentsInChildren<LanguageTextMeshController>(); foreach (LanguageTextMeshController val in componentsInChildren) { if (Object.op_Implicit((Object)(object)val) && val.token == "LOADOUT_SKILL_MISC") { val.token = "Passive"; } } } private void HealthComponent_TakeDamageProcess(orig_TakeDamageProcess orig, HealthComponent self, DamageInfo damageInfo) { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_030a: Unknown result type (might be due to invalid IL or missing references) //IL_0314: Unknown result type (might be due to invalid IL or missing references) //IL_031c: Unknown result type (might be due to invalid IL or missing references) //IL_033f: Unknown result type (might be due to invalid IL or missing references) //IL_0349: Unknown result type (might be due to invalid IL or missing references) //IL_034e: Unknown result type (might be due to invalid IL or missing references) //IL_0353: Unknown result type (might be due to invalid IL or missing references) //IL_035d: Invalid comparison between Unknown and I4 //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Expected O, but got Unknown //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_038b: Unknown result type (might be due to invalid IL or missing references) //IL_036e: Unknown result type (might be due to invalid IL or missing references) //IL_036f: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_05aa: Unknown result type (might be due to invalid IL or missing references) //IL_05b4: Unknown result type (might be due to invalid IL or missing references) //IL_05b9: Unknown result type (might be due to invalid IL or missing references) //IL_05be: Unknown result type (might be due to invalid IL or missing references) //IL_01df: 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_01eb: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_03f6: Unknown result type (might be due to invalid IL or missing references) //IL_03fc: Unknown result type (might be due to invalid IL or missing references) //IL_0401: Unknown result type (might be due to invalid IL or missing references) //IL_0406: Unknown result type (might be due to invalid IL or missing references) //IL_040d: Unknown result type (might be due to invalid IL or missing references) //IL_0417: 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_0421: Unknown result type (might be due to invalid IL or missing references) //IL_0427: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0255: Expected O, but got Unknown //IL_0286: Unknown result type (might be due to invalid IL or missing references) //IL_028b: Unknown result type (might be due to invalid IL or missing references) //IL_0298: Unknown result type (might be due to invalid IL or missing references) //IL_029d: Unknown result type (might be due to invalid IL or missing references) //IL_02a2: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active || !self.alive || self.godMode || self.ospTimer > 0f) { return; } CharacterBody body = self.body; CharacterBody val = null; Vector3 val2 = Vector3.zero; if (Object.op_Implicit((Object)(object)damageInfo.attacker)) { val = damageInfo.attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)val)) { val2 = val.corePosition - damageInfo.position; } } if (damageInfo.damage > 0f && !damageInfo.rejected && Object.op_Implicit((Object)(object)body)) { if (body.bodyIndex == BodyCatalog.FindBodyIndex("SpyBody")) { SpyController component = ((Component)body).GetComponent<SpyController>(); if (Object.op_Implicit((Object)(object)component) && component.IsStopWatchOut() && component.isSpecialDeadman) { NetworkIdentity val3 = default(NetworkIdentity); if (((Component)self).gameObject.TryGetComponent<NetworkIdentity>(ref val3)) { NetMessageExtensions.Send((INetMessage)(object)new SyncStealth(val3.netId, ((Component)self).gameObject), (NetworkDestination)1); } damageInfo.rejected = true; DamageInfo val4 = new DamageInfo(); if (damageInfo.damage >= body.healthComponent.combinedHealth * SpyConfig.cloakHealthCost.Value) { val4.damage = body.healthComponent.combinedHealth * SpyConfig.cloakHealthCost.Value; val4.damageType = DamageTypeCombo.op_Implicit((DamageType)2051); } else { val4.damage = damageInfo.damage; val4.damageType = DamageTypeCombo.op_Implicit((DamageType)2049); } val4.attacker = null; val4.canRejectForce = true; val4.crit = false; val4.inflictor = null; val4.damageColorIndex = (DamageColorIndex)0; val4.force = Vector3.zero; val4.rejected = false; val4.position = body.corePosition; val4.procChainMask = default(ProcChainMask); val4.procCoefficient = 0f; if (body.skillLocator.special.skillNameToken != "KENKO_SPY_SPECIAL_SCEPTER_WATCH2_NAME") { body.healthComponent.TakeDamage(val4); } MasterSummon val5 = new MasterSummon(); val5.masterPrefab = SpyDecoy.decoyMasterPrefab; val5.ignoreTeamMemberLimit = true; val5.teamIndexOverride = (TeamIndex)1; val5.summonerBodyObject = ((Component)body).gameObject; val5.position = body.previousPosition; val5.rotation = Util.QuaternionSafeLookRotation(body.characterDirection.forward); CharacterMaster val6 = val5.Perform(); Util.CleanseBody(body, true, false, false, true, true, true); if (body.HasBuff(SpyBuffs.spyWatchDebuff)) { body.RemoveBuff(SpyBuffs.spyWatchDebuff); } body.AddBuff(Buffs.Cloak); body.AddBuff(Buffs.CloakSpeed); body.AddBuff(SpyBuffs.armorBuff); } } if (Object.op_Implicit((Object)(object)val) && val.bodyIndex == BodyCatalog.FindBodyIndex("SpyBody") && !DamageAPI.HasModdedDamageType(damageInfo, DamageTypes.SpyExecute) && val.canPerformBackstab && (int)DamageTypeCombo.op_Implicit(damageInfo.damageType & DamageTypeCombo.op_Implicit((DamageType)67108864)) != 67108864 && (((ProcChainMask)(ref damageInfo.procChainMask)).HasProc((ProcType)17) || BackstabManager.IsBackstab(-val2, body))) { if (DamageAPI.HasModdedDamageType(damageInfo, DamageTypes.SpyBackStab)) { float damage = damageInfo.damage; if (damageInfo.crit) { damageInfo.damage += damage * 1.5f; } damageInfo.damage *= SpyConfig.spyBackstabMultiplier.Value; damageInfo.crit = true; ((ProcChainMask)(ref damageInfo.procChainMask)).AddProc((ProcType)17); damageInfo.damageType |= DamageTypeCombo.op_Implicit((DamageType)2); damageInfo.damageType |= DamageTypeCombo.op_Implicit((DamageType)2048); DamageAPI.AddModdedDamageType(damageInfo, DamageTypes.SpyExecute); Util.PlaySound("sfx_spy_crit", ((Component)val).gameObject); if (Object.op_Implicit((Object)(object)body.healthComponent)) { SpyController component2 = ((Component)val).GetComponent<SpyController>(); if (body.isChampion || (body.isBoss && Object.op_Implicit((Object)(object)component2))) { if (component2.isDiamondBack) { for (int i = val.GetBuffCount(SpyBuffs.spyDiamondbackBuff); i < 3; i++) { if (val.GetBuffCount(SpyBuffs.spyDiamondbackBuff) < 5) { val.AddBuff(SpyBuffs.spyDiamondbackBuff); } } } if (component2.isBigEarner) { int num = 5; float num2 = 2f; val.ClearTimedBuffs(SpyBuffs.spyBigEarnerBuff); for (int j = 0; j < num; j++) { val.AddTimedBuff(SpyBuffs.spyBigEarnerBuff, num2 * (float)(j + 1) / (float)num); } val.healthComponent.AddBarrier((val.healthComponent.fullHealth + val.healthComponent.fullShield) * 0.2f); } } else if (body.isElite && Object.op_Implicit((Object)(object)component2) && component2.isDiamondBack && val.GetBuffCount(SpyBuffs.spyDiamondbackBuff) < 5) { val.AddBuff(SpyBuffs.spyDiamondbackBuff); } } } else { damageInfo.damageType |= DamageTypeCombo.op_Implicit((DamageType)67108864); } } } orig.Invoke(self, damageInfo); } private static void GlobalEventManager_onCharacterDeathGlobal(DamageReport damageReport) { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0293: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: Expected O, but got Unknown //IL_01f1: 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_021c: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_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_025d: 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_0235: Unknown result type (might be due to invalid IL or missing references) //IL_023a: Unknown result type (might be due to invalid IL or missing references) CharacterBody attackerBody = damageReport.attackerBody; if (!Object.op_Implicit((Object)(object)attackerBody) || !Object.op_Implicit((Object)(object)damageReport.attackerMaster) || !Object.op_Implicit((Object)(object)damageReport.victim) || attackerBody.bodyIndex != BodyCatalog.FindBodyIndex("SpyBody") || !DamageAPI.HasModdedDamageType(damageReport.damageInfo, DamageTypes.SpyExecute)) { return; } SpyController component = ((Component)attackerBody).GetComponent<SpyController>(); if (Object.op_Implicit((Object)(object)component)) { if (attackerBody.skillLocator.special.skillNameToken == "KENKO_SPY_SPECIAL_SCEPTER_WATCH2_NAME") { attackerBody.skillLocator.special.Reset(); } if (component.isDiamondBack) { if (attackerBody.GetBuffCount(SpyBuffs.spyDiamondbackBuff) <= 0) { component.ActivateCritLightning(); } if (NetworkServer.active) { for (int i = 0; i < 2; i++) { if (attackerBody.GetBuffCount(SpyBuffs.spyDiamondbackBuff) < 5) { attackerBody.AddBuff(SpyBuffs.spyDiamondbackBuff); } } } } if (component.isBigEarner) { NetworkIdentity val = default(NetworkIdentity); if (NetworkServer.active && damageReport.attacker.TryGetComponent<NetworkIdentity>(ref val)) { NetMessageExtensions.Send((INetMessage)(object)new SyncResetStab(val.netId), (NetworkDestination)1); } if (!SpyConfig.bigEarnerFullyResets.Value) { component.ResetChainStabPeriod(); } int num = 5; float num2 = 2f; attackerBody.ClearTimedBuffs(SpyBuffs.spyBigEarnerBuff); for (int j = 0; j < num; j++) { attackerBody.AddTimedBuff(SpyBuffs.spyBigEarnerBuff, num2 * (float)(j + 1) / (float)num); } attackerBody.healthComponent.AddBarrier((attackerBody.healthComponent.fullHealth + attackerBody.healthComponent.fullShield) * 0.1f); EffectData val2 = new EffectData(); val2.origin = attackerBody.corePosition; CharacterMotor characterMotor = attackerBody.characterMotor; bool flag = false; if (Object.op_Implicit((Object)(object)characterMotor)) { Vector3 moveDirection = characterMotor.moveDirection; if (moveDirection != Vector3.zero) { val2.rotation = Util.QuaternionSafeLookRotation(moveDirection); flag = true; } } if (!flag) { val2.rotation = attackerBody.transform.rotation; } EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/MoveSpeedOnKillActivate"), val2, true); } } NetworkIdentity val3 = default(NetworkIdentity); if (((Component)damageReport.victim).gameObject.TryGetComponent<NetworkIdentity>(ref val3)) { NetMessageExtensions.Send((INetMessage)(object)new SyncStabExplosion(val3.netId, ((Component)damageReport.victim).gameObject), (NetworkDestination)1); } } internal static void HUDSetup(HUD hud) { //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: 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_0210: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0255: Unknown result type (might be due to invalid IL or missing references) //IL_026c: 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_030b: Unknown result type (might be due to invalid IL or missing references) //IL_0322: Unknown result type (might be due to invalid IL or missing references) //IL_0339: Unknown result type (might be due to invalid IL or missing references) //IL_0350: Unknown result type (might be due to invalid IL or missing references) //IL_0367: Unknown result type (might be due to invalid IL or missing references) //IL_0383: Unknown result type (might be due to invalid IL or missing references) //IL_039f: Unknown result type (might be due to invalid IL or missing references) //IL_03a4: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)hud.targetBodyObject) && Object.op_Implicit((Object)(object)hud.targetMaster) && (Object)(object)hud.targetMaster.bodyPrefab == (Object)(object)characterPrefab && ((NetworkBehaviour)hud.targetMaster).hasAuthority) { Transform parent = ((Component)hud.equipmentIcons[0]).gameObject.transform.parent; Transform val = ((Component)hud).transform.Find("MainContainer").Find("MainUIArea").Find("SpringCanvas") .Find("BottomLeftCluster") .Find("BarRoots") .Find("LevelDisplayCluster"); GameObject val2 = Object.Instantiate<GameObject>(((Component)val).gameObject, ((Component)hud).transform.Find("MainContainer").Find("MainUIArea").Find("SpringCanvas") .Find("BottomLeftCluster")); ((Object)val2).name = "AmmoTracker"; val2.transform.SetParent(((Component)hud).transform.Find("MainContainer").Find("MainUIArea").Find("CrosshairCanvas") .Find("CrosshairExtras")); Object.DestroyImmediate((Object)(object)((Component)val2.transform.GetChild(0)).gameObject); Object.Destroy((Object)(object)val2.GetComponentInChildren<LevelText>()); Object.Destroy((Object)(object)val2.GetComponentInChildren<ExpBar>()); ((Component)val2.transform.Find("LevelDisplayRoot").Find("ValueText")).gameObject.SetActive(false); Object.DestroyImmediate((Object)(object)((Component)val2.transform.Find("ExpBarRoot")).gameObject); ((Component)val2.transform.Find("LevelDisplayRoot")).GetComponent<RectTransform>().anchoredPosition = new Vector2(-12f, 0f); RectTransform component = val2.GetComponent<RectTransform>(); ((Transform)component).localScale = new Vector3(0.8f, 0.8f, 1f); component.anchorMin = new Vector2(0f, 0f); component.anchorMax = new Vector2(0f, 0f); component.offsetMin = new Vector2(120f, -40f); component.offsetMax = new Vector2(120f, -40f); component.pivot = new Vector2(0.5f, 0f); component.anchoredPosition = new Vector2(50f, 0f); ((Transform)component).localPosition = new Vector3(120f, -40f, 0f); GameObject val3 = Object.Instantiate<GameObject>(SpyAssets.mainAssetBundle.LoadAsset<GameObject>("WeaponChargeBar")); ((Object)val3).name = "StealthMeter"; val3.transform.SetParent(((Component)hud).transform.Find("MainContainer").Find("MainUIArea").Find("CrosshairCanvas") .Find("CrosshairExtras")); component = val3.GetComponent<RectTransform>(); ((Transform)component).localScale = new Vector3(0.75f, 0.1f, 1f); component.anchorMin = new Vector2(100f, 2f); component.anchorMax = new Vector2(100f, 2f); component.pivot = new Vector2(0.5f, 0f); component.anchoredPosition = new Vector2(100f, 2f); ((Transform)component).localPosition = new Vector3(100f, 2f, 0f); ((Transform)component).rotation = Quaternion.Euler(new Vector3(0f, 0f, 90f)); CloakHudController cloakHudController = val2.AddComponent<CloakHudController>(); cloakHudController.targetHUD = hud; cloakHudController.targetText = ((Component)val2.transform.Find("LevelDisplayRoot").Find("PrefixText")).gameObject.GetComponent<LanguageTextMeshController>(); cloakHudController.durationDisplay = val3; cloakHudController.durationBar = ((Component)val3.transform.GetChild(1)).gameObject.GetComponent<Image>(); cloakHudController.durationBarColor = ((Component)val3.transform.GetChild(0)).gameObject.GetComponent<Image>(); if (!Object.op_Implicit((Object)(object)((Component)hud).transform.Find("MainContainer").Find("MainUIArea").Find("CrosshairCanvas") .Find("SpyCrosshair"))) { GameObject val4 = Object.Instantiate<GameObject>(SpyCrosshair.spyCrosshair, ((Component)hud).transform.Find("MainContainer").Find("MainUIArea").Find("CrosshairCanvas")); ((Object)val4).name = "SpyCrosshair"; val4.gameObject.GetComponent<HudElement>().targetBodyObject = hud.targetBodyObject; val4.gameObject.GetComponent<HudElement>().targetCharacterBody = hud.targetBodyObject.GetComponent<CharacterBody>(); } } } } } namespace SpyMod.Spy.SkillStates { public class ChargeKnife : BaseSpySkillState { public override void OnEnter() { RefreshState(); base.OnEnter(); ((EntityState)this).PlayCrossfade("Gesture, Override", "ChargeStab", "Swing.playbackRate", 0.3f, 0.05f); Util.PlaySound("sfx_spy_knife_equip", ((EntityState)this).gameObject); ((Component)((BaseState)this).FindModelChild("Revolver")).gameObject.SetActive(false); ((Component)((BaseState)this).FindModelChild("Knife")).gameObject.SetActive(true); if (((EntityState)this).characterBody.HasBuff(SpyBuffs.spyDiamondbackBuff)) { spyController.DeactivateCritLightning(willReturn: true); } spyController.SpinGun(); } public override void FixedUpdate() { base.FixedUpdate(); if (((EntityState)this).isAuthority && !((BaseSkillState)this).IsKeyDownAuthority() && (double)((EntityState)this).fixedAge >= 0.05) { ((EntityState)this).outer.SetNextState((EntityState)(object)new Stab()); } } public override void OnExit() { ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)3; } } public class Cloak : BaseSpySkillState { private float baseDuration = 1f; private float duration; private bool willWait = false; protected virtual bool sceptered => false; public override void OnEnter() { RefreshState(); base.OnEnter(); if (!sceptered) { duration = baseDuration / ((BaseState)this).attackSpeedStat; } else { duration = 0f; } if (!spyController.IsStopWatchOut()) { if (spyController.cloakTimer >= spyController.maxCloakTimer * 0.2f) { if (NetworkServer.active) { ((EntityState)this).characterBody.AddBuff(SpyBuffs.spyWatchDebuff); ((EntityState)this).characterBody.AddBuff(Buffs.Cloak); ((EntityState)this).characterBody.AddBuff(Buffs.CloakSpeed); ((EntityState)this).characterBody.AddBuff(SpyBuffs.armorBuff); } spyController.EnableWatchLayer(); spyController.EnterStealth(); } } else { Util.PlaySound("sfx_spy_uncloak_alt", ((EntityState)this).gameObject); willWait = true; spyController.pauseTimer = true; } } public override void FixedUpdate() { base.FixedUpdate(); if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); if (willWait) { spyController.pauseTimer = false; spyController.ExitStealth(); spyController.DisableWatchLayer(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class CloakScepter : Cloak { protected override bool sceptered => true; } public class DecoySpawn : BaseState { private float durationBeforeDeath = 0.5f; public override void OnEnter() { ((BaseState)this).OnEnter(); durationBeforeDeath = 0.5f; } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= durationBeforeDeath && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Expected O, but got Unknown //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_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_0087: Unknown result type (might be due to invalid IL or missing references) if (NetworkServer.active) { DamageInfo val = new DamageInfo(); val.damage = ((EntityState)this).healthComponent.fullCombinedHealth * 2f; val.attacker = null; val.canRejectForce = false; val.crit = true; val.inflictor = null; val.damageColorIndex = (DamageColorIndex)0; val.damageType = DamageTypeCombo.op_Implicit((DamageType)264194); val.force = Vector3.zero; val.rejected = false; val.position = ((EntityState)this).characterBody.corePosition; val.procChainMask = default(ProcChainMask); val.procCoefficient = 0f; ((EntityState)this).healthComponent.TakeDamage(val); } ((EntityState)this).OnExit(); } } public class MainState : GenericCharacterMain { private Animator animator; public LocalUser localUser; public override void OnEnter() { ((GenericCharacterMain)this).OnEnter(); animator = ((BaseCharacterMain)this).modelAnimator; FindLocalUser(); } private void FindLocalUser() { if (localUser != null || !Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { return; } foreach (LocalUser readOnlyLocalUsers in LocalUserManager.readOnlyLocalUsersList) { if ((Object)(object)readOnlyLocalUsers.cachedBody == (Object)(object)((EntityState)this).characterBody) { localUser = readOnlyLocalUsers; break; } } } public override void FixedUpdate() { ((GenericCharacterMain)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)animator)) { bool flag = false; if (!((EntityState)this).characterBody.outOfDanger || !((EntityState)this).characterBody.outOfCombat) { flag = true; } animator.SetBool("inCombat", flag); if (((BaseState)this).isGrounded) { animator.SetFloat("airBlend", 0f); } else { animator.SetFloat("airBlend", 1f); } } } public override void ProcessJump() { //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_0213: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Expected O, but got Unknown //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0253: Unknown result type (might be due to invalid IL or missing references) //IL_025a: Unknown result type (might be due to invalid IL or missing references) //IL_0265: Unknown result type (might be due to invalid IL or missing references) //IL_027c: Expected O, but got Unknown //IL_0290: Unknown result type (might be due to invalid IL or missing references) //IL_0295: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_02a7: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Unknown result type (might be due to invalid IL or missing references) //IL_02b3: Unknown result type (might be due to invalid IL or missing references) //IL_02b8: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Expected O, but got Unknown if (!((BaseCharacterMain)this).hasCharacterMotor) { return; } bool flag = false; bool flag2 = false; if (!base.jumpInputReceived || !Object.op_Implicit((Object)(object)((EntityState)this).characterBody) || ((EntityState)this).characterMotor.jumpCount >= ((EntityState)this).characterBody.maxJumpCount) { return; } int itemCount = ((EntityState)this).characterBody.inventory.GetItemCount(Items.JumpBoost); float num = 1f; float num2 = 1f; if (((EntityState)this).characterMotor.jumpCount >= ((EntityState)this).characterBody.baseJumpCount) { flag = true; num = 1.5f; num2 = 1.5f; } else if (itemCount > 0 && ((EntityState)this).characterBody.isSprinting) { float num3 = ((EntityState)this).characterBody.acceleration * ((EntityState)this).characterMotor.airControl; if (((EntityState)this).characterBody.moveSpeed > 0f && num3 > 0f) { flag2 = true; float num4 = Mathf.Sqrt(10f * (float)itemCount / num3); float num5 = ((EntityState)this).characterBody.moveSpeed / num3; num = (num4 + num5) / num5; } } GenericCharacterMain.ApplyJumpVelocity(((EntityState)this).characterMotor, ((EntityState)this).characterBody, num, num2, false); if (((BaseCharacterMain)this).hasModelAnimator) { int layerIndex = ((BaseCharacterMain)this).modelAnimator.GetLayerIndex("Body"); if (layerIndex >= 0) { if (((EntityState)this).characterBody.isSprinting) { ((BaseCharacterMain)this).modelAnimator.CrossFadeInFixedTime("SprintJump", ((BaseCharacterMain)this).smoothingParameters.intoJumpTransitionTime, layerIndex); } else if (flag) { ((BaseCharacterMain)this).modelAnimator.CrossFadeInFixedTime("BonusJump", ((BaseCharacterMain)this).smoothingParameters.intoJumpTransitionTime, layerIndex); } else { ((BaseCharacterMain)this).modelAnimator.CrossFadeInFixedTime("Jump", ((BaseCharacterMain)this).smoothingParameters.intoJumpTransitionTime, layerIndex); } } } if (flag) { EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/FeatherEffect"), new EffectData { origin = ((EntityState)this).characterBody.footPosition }, true); } else if (((EntityState)this).characterMotor.jumpCount > 0) { EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/CharacterLandImpact"), new EffectData { origin = ((EntityState)this).characterBody.footPosition, scale = ((EntityState)this).characterBody.radius }, true); } if (flag2) { EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/BoostJumpEffect"), new EffectData { origin = ((EntityState)this).characterBody.footPosition, rotation = Util.QuaternionSafeLookRotation(((EntityState)this).characterMotor.velocity) }, true); } CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.jumpCount++; } } public class Sap : BaseSpySkillState { public float jumpDuration = 0.8f; public static float inAirDuration = 0f; public static float jumpPower = 18f; public static float minDampingStrength = 0.2f; public static float maxDampingStrength = 0.05f; private float previousAirControl; protected Vector3 slipVector = Vector3.zero; public float duration = 0.3f; public float speedCoefficient = 7f; private Vector3 cachedForward; private Quaternion slideRotation; private bool isFlip = false; private bool sapped = false; public override void OnEnter() { //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_0271: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_027b: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Unknown result type (might be due to invalid IL or missing references) //IL_028f: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) //IL_02a7: Expected O, but got Unknown //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0046: 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_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0093: 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_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_015b: 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_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_018b: 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_01ca: 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_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: 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) base.OnEnter(); if (((BaseState)this).isGrounded) { Vector3 val = ((((EntityState)this).inputBank.moveVector == Vector3.zero) ? ((EntityState)this).characterDirection.forward : ((EntityState)this).inputBank.moveVector); slipVector = ((Vector3)(ref val)).normalized; cachedForward = ((EntityState)this).characterDirection.forward; Animator modelAnimator = ((EntityState)this).GetModelAnimator(); Vector3 val2 = (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection) ? ((EntityState)this).characterDirection.forward : slipVector); Vector3 val3 = Vector3.Cross(Vector3.up, val2); float num = Vector3.Dot(slipVector, val2); float num2 = Vector3.Dot(slipVector, val3); modelAnimator.SetFloat("dashF", num); modelAnimator.SetFloat("dashR", num2); slideRotation = Quaternion.LookRotation(slipVector, cachedForward); ((EntityState)this).PlayCrossfade("FullBody, Override", "Dash", "Dash.playbackRate", duration * 1.5f, 0.05f); ((EntityState)this).PlayAnimation("Gesture, Override", "BufferEmpty"); Util.PlaySound("sfx_driver_dash", ((EntityState)this).gameObject); if (Object.op_Implicit((Object)(object)BaseSlideState.slideEffectPrefab) && Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { Vector3 val4 = ((EntityState)this).characterBody.corePosition; Quaternion val5 = Quaternion.identity; Transform val6 = ((BaseState)this).FindModelChild("Base"); if (Object.op_Implicit((Object)(object)val6)) { val4 = val6.position; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { val5 = Util.QuaternionSafeLookRotation(slideRotation * ((EntityState)this).characterDirection.forward, Vector3.up); } EffectManager.SimpleEffect(BaseSlideState.slideEffectPrefab, val4, val5, false); } } else { isFlip = true; ((EntityState)this).characterMotor.disableAirControlUntilCollision = false; ((EntityState)this).PlayCrossfade("FullBody, Override", "Flip", "Flip.playbackRate", jumpDuration, 0.1f); previousAirControl = ((EntityState)this).characterMotor.airControl; ((EntityState)this).characterMotor.airControl = 1f; ((EntityState)this).characterMotor.velocity.y = 0f; ((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(0.1f); CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.velocity += Vector3.up * jumpPower; EffectManager.SpawnEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/FeatherEffect"), new EffectData { origin = ((EntityState)this).characterBody.footPosition }, true); } } public override void FixedUpdate() { //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) base.FixedUpdate(); if (((EntityState)this).fixedAge >= duration / 2f && !sapped) { sapped = true; SapEnemy(); } if (isFlip) { if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= jumpDuration) { ((EntityState)this).outer.SetNextStateToMain(); } return; } ((EntityState)this).characterMotor.velocity = Vector3.zero; ((EntityState)this).characterMotor.rootMotion = slipVector * (((BaseState)this).moveSpeedStat * speedCoefficient * Time.fixedDeltaTime) * Mathf.Cos(((EntityState)this).fixedAge / duration * (MathF.PI / 2f)); if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.forward = cachedForward; } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } private void SapEnemy() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0022: 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_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: 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_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Expected O, but got Unknown //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) HurtBox[] hurtBoxes = new SphereSearch { origin = ((EntityState)this).transform.position, radius = 20f, mask = ((LayerIndex)(ref LayerIndex.entityPrecise)).mask }.RefreshCandidates().FilterCandidatesByHurtBoxTeam(TeamMask.GetEnemyTeams(((EntityState)this).characterBody.teamComponent.teamIndex)).OrderCandidatesByDistance() .FilterCandidatesByDistinctHurtBoxEntities() .GetHurtBoxes(); if (hurtBoxes.Length != 0) { CharacterBody body = hurtBoxes[0].healthComponent.body; bool alive = hurtBoxes[0].healthComponent.alive; Vector3 position = ((Component)hurtBoxes[0]).transform.position; Vector3 val = body.corePosition - position; float magnitude = ((Vector3)(ref val)).magnitude; Quaternion val2 = ((magnitude != 0f) ? Util.QuaternionSafeLookRotation(val) : Random.rotationUniform); ProjectileManager.instance.FireProjectile(SpyAssets.sapperPrefab, position, val2, ((EntityState)this).gameObject, 1f, 100f, ((BaseState)this).RollCrit(), (DamageColorIndex)0, (GameObject)null, alive ? (magnitude * 5f) : (-1f)); DamageInfo val3 = new DamageInfo(); val3.damage = 1f; val3.attacker = ((EntityState)this).gameObject; val3.inflictor = null; val3.force = Vector3.zero; val3.crit = false; val3.procChainMask = default(ProcChainMask); val3.procCoefficient = 1f; val3.position = position; val3.damageColorIndex = (DamageColorIndex)3; val3.damageType = DamageTypeCombo.op_Implicit((DamageType)16777216); Util.PlaySound("sfx_spy_sapper_plant", ((Component)body).gameObject); body.healthComponent.TakeDamage(val3); } } public override void OnExit() { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) if (isFlip) { ((EntityState)this).PlayAnimation("FullBody, Override", "BufferEmpty"); ((EntityState)this).characterMotor.airControl = previousAirControl; } else { CharacterMotor characterMotor = ((EntityState)this).characterMotor; characterMotor.velocity *= 0.8f; } ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)5; } } public class Shoot : BaseSpySkillState { public float damageCoefficient = SpyStaticValues.revolverDamageCoefficient; public static float procCoefficient = 1f; public static float baseDuration = 0.7f; public static float force = 200f; public static float recoil = 2f; public static float range = 2000f; public static GameObject tracerEffectPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/Tracers/TracerGoldGat"); public static GameObject critTracerEffectPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/Tracers/TracerCaptainShotgun"); protected float duration; protected string muzzleString; protected bool isCrit; protected int diamondbackStacks; public string shootSoundString = "Play_bandit2_R_fire"; protected virtual GameObject tracerPrefab => isCrit ? critTracerEffectPrefab : tracerEffectPrefab; public virtual FalloffModel falloff => (FalloffModel)1; public override void OnEnter() { base.OnEnter(); if (spyController.IsStopWatchOut() && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); return; } if (((EntityState)this).characterBody.hasCloakBuff) { spyController.ExitStealth(); } duration = baseDuration / ((BaseState)this).attackSpeedStat; ((EntityState)this).characterBody.isSprinting = false; ((EntityState)this).characterBody.SetAimTimer(2f); muzzleString = "GunMuzzle"; isCrit = ((BaseState)this).RollCrit(); diamondbackStacks = ((EntityState)this).characterBody.GetBuffCount(SpyBuffs.spyDiamondbackBuff); if (diamondbackStacks > 0) { if (NetworkServer.active) { ((EntityState)this).characterBody.RemoveBuff(SpyBuffs.spyDiamondbackBuff); } if (isCrit) { damageCoefficient *= SpyStaticValues.diamondBackCritBonus; } else { isCrit = true; } } shootSoundString = (isCrit ? "sfx_spy_revolver_shoot_crit" : "sfx_spy_revolver_shoot"); Fire(); duration = baseDuration / ((BaseState)this).attackSpeedStat; } public override void OnExit() { ((EntityState)this).OnExit(); } public void Fire() { //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010b: 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_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0132: 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_014a: 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_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0198: 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_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: Expected O, but got Unknown ((EntityState)this).PlayCrossfade("Gesture, Override", "Shoot", "Shoot.playbackRate", duration * 2f, duration * 0.05f); EffectManager.SimpleMuzzleFlash(FirePistol2.muzzleEffectPrefab, ((EntityState)this).gameObject, muzzleString, false); Util.PlaySound(shootSoundString, ((EntityState)this).gameObject); if (((EntityState)this).isAuthority) { Ray aimRay = ((BaseState)this).GetAimRay(); base.AddRecoil2(-1f * recoil, -2f * recoil, -0.5f * recoil, 0.5f * recoil); BulletAttack val = new BulletAttack { bulletCount = 1u, aimVector = ((Ray)(ref aimRay)).direction, origin = ((Ray)(ref aimRay)).origin, damage = damageCoefficient * ((BaseState)this).damageStat, damageColorIndex = (DamageColorIndex)0, falloffModel = falloff, maxDistance = range, force = force, hitMask = CommonMasks.bullet, minSpread = 0f, maxSpread = ((EntityState)this).characterBody.spreadBloomAngle * 2f, isCrit = isCrit, owner = ((EntityState)this).gameObject, muzzleName = muzzleString, smartCollision = true, procChainMask = default(ProcChainMask), procCoefficient = procCoefficient, radius = 0.75f, sniper = false, stopperMask = CommonMasks.bullet, weapon = null, tracerEffectPrefab = tracerPrefab, spreadPitchScale = 1f, spreadYawScale = 1f, queryTriggerInteraction = (QueryTriggerInteraction)0, hitEffectPrefab = FirePistol2.hitEffectPrefab }; val.Fire(); } ((EntityState)this).characterBody.AddSpreadBloom(1.25f); } public override void FixedUpdate() { base.FixedUpdate(); if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)1; } } public class Shoot2 : BaseSpySkillState { public float damageCoefficient = SpyStaticValues.revolverDamageCoefficient; public static float procCoefficient = 1f; public static float baseDuration = 0.9f; public static float force = 200f; public static float recoil = 2f; public static float range = 2000f; public static GameObject tracerEffectPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/Tracers/TracerGoldGat"); public static GameObject critTracerEffectPrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/Tracers/TracerCaptainShotgun"); protected float duration; protected string muzzleString; protected bool isCrit; protected int diamondbackStacks; public string shootSoundString = "Play_bandit2_R_fire"; private CameraParamsOverrideHandle camParamsOverrideHandle; private OverlayController overlayController; private float fireTimer; public bool holding; protected virtual GameObject tracerPrefab => isCrit ? Shoot.critTracerEffectPrefab : Shoot.tracerEffectPrefab; public virtual FalloffModel falloff => (FalloffModel)1; public override void OnEnter() { //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) damageCoefficient = SpyStaticValues.ambassadorDamageCoefficient; base.OnEnter(); if (spyController.IsStopWatchOut() && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); return; } if (((EntityState)this).characterBody.hasCloakBuff) { spyController.ExitStealth(); } duration = Shoot.baseDuration / ((BaseState)this).attackSpeedStat; ((EntityState)this).characterBody.isSprinting = false; ((EntityState)this).characterBody.SetAimTimer(2f); muzzleString = "GunMuzzle"; isCrit = ((BaseState)this).RollCrit(); shootSoundString = (isCrit ? "sfx_spy_revolver_shoot_crit" : "sfx_spy_revolver_shoot"); Fire(); overlayController = HudOverlayManager.AddOverlay(((EntityState)this).gameObject, new OverlayCreationParams { prefab = SpyAssets.headshotOverlay, childLocatorEntry = "ScopeContainer" }); holding = false; } public override void FixedUpdate() { base.FixedUpdate(); fireTimer += Time.fixedDeltaTime; if (((EntityState)this).isAuthority && (((ButtonState)(ref ((EntityState)this).inputBank.skill1)).justReleased || !((EntityState)this).inputBank.skill1.down) && fireTimer >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } else if (((EntityState)this).isAuthority && ((EntityState)this).inputBank.skill1.down && fireTimer >= duration) { holding = true; ((EntityState)this).outer.SetNextState((EntityState)(object)new Shoot2 { holding = true }); } } public void Fire() { //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: 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_00bb: 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_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0126: 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_0149: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_0161: 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_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing