Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of Joker Mode v1.2.1
plugins/ViendStanceChangeSkill/JokerMode.dll
Decompiled a year agousing 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 EntityStates; using EntityStates.VoidSurvivor.CorruptMode; using EntityStates.VoidSurvivor.JokerMode; using On.EntityStates.VoidSurvivor.CorruptMode; using On.RoR2; using R2API; using R2API.Utils; using RiskyMod.Survivors; using RiskyMod.Survivors.DLC1.VoidFiend; using RoR2; using RoR2.ContentManagement; using RoR2.HudOverlay; using RoR2.Skills; using UnityEngine; using UnityEngine.AddressableAssets; using ViendStanceChangeSkill; using ViendStanceChangeSkill.Modules; [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("ViendStanceChangeSkill")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+f2b3ae2698faac9be9b7365b75bce115fbac5a32")] [assembly: AssemblyProduct("ViendStanceChangeSkill")] [assembly: AssemblyTitle("ViendStanceChangeSkill")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace ViendStanceChangeSkill { public class ViendSkillDataComponent : MonoBehaviour { public int s1Stock; public int s2Stock; public int s3Stock; public int s4Stock; public float s1RechargeStopwatch; public float s2RechargeStopwatch; public float s3RechargeStopwatch; public float s4RechargeStopwatch; } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Moffein.ViendStanceChangeSkill", "ViendStanceChangeSkill", "1.2.1")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class ViendStanceChangeSkillPlugin : BaseUnityPlugin { public static AssetBundle assetBundle; private static bool compatRiskyModLoaded = false; private static bool compatScepterLoaded = false; public static float corruptDamagePenalty = 0.25f; public static float corruptScepterDamageMult = 1f; public static float corruptDamageTakenMult = 1.25f; public static PluginInfo pluginInfo; private static BodyIndex viendBodyIndex = (BodyIndex)(-1); private static ItemIndex scepterIndex = (ItemIndex)(-1); private void Awake() { pluginInfo = ((BaseUnityPlugin)this).Info; compatRiskyModLoaded = Chainloader.PluginInfos.ContainsKey("com.RiskyLives.RiskyMod"); compatScepterLoaded = Chainloader.PluginInfos.ContainsKey("com.DestroyedClone.AncientScepter"); using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("ViendStanceChangeSkill.jokerviendbundle")) { assetBundle = AssetBundle.LoadFromStream(stream); } Setup(); Tokens.LoadLanguage(); new Content().Initialize(); RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(OnLoad)); } private void OnLoad() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_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) scepterIndex = ItemCatalog.FindItemIndex("ITEM_ANCIENT_SCEPTER"); viendBodyIndex = BodyCatalog.FindBodyIndex("VoidSurvivorBody"); } private void Setup() { //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Expected O, but got Unknown Content.entityStates.Add(typeof(EnterJokerMode)); Content.entityStates.Add(typeof(ExitJokerMode)); AddStanceChangeMachine(); CreateSkillDefs(); DisableCorruptMeter(); CorruptStatMod(); CorruptMode.OnExit += new hook_OnExit(CorruptMode_OnExit); } private void CorruptMode_OnExit(orig_OnExit orig, CorruptMode self) { orig.Invoke(self); if (!((EntityState)self).isAuthority || !Object.op_Implicit((Object)(object)((EntityState)self).characterBody)) { return; } ViendSkillDataComponent component = ((Component)((EntityState)self).characterBody).GetComponent<ViendSkillDataComponent>(); if (!Object.op_Implicit((Object)(object)component)) { return; } if (Object.op_Implicit((Object)(object)((EntityState)self).skillLocator)) { if (Object.op_Implicit((Object)(object)((EntityState)self).skillLocator.primary)) { ((EntityState)self).skillLocator.primary.stock = component.s1Stock; ((EntityState)self).skillLocator.primary.rechargeStopwatch = component.s1RechargeStopwatch; } if (Object.op_Implicit((Object)(object)((EntityState)self).skillLocator.secondary)) { ((EntityState)self).skillLocator.secondary.stock = component.s2Stock; ((EntityState)self).skillLocator.secondary.rechargeStopwatch = component.s2RechargeStopwatch; } if (Object.op_Implicit((Object)(object)((EntityState)self).skillLocator.utility)) { ((EntityState)self).skillLocator.utility.stock = component.s3Stock; ((EntityState)self).skillLocator.utility.rechargeStopwatch = component.s3RechargeStopwatch; } if (Object.op_Implicit((Object)(object)((EntityState)self).skillLocator.special)) { ((EntityState)self).skillLocator.special.stock = component.s4Stock; ((EntityState)self).skillLocator.special.rechargeStopwatch = component.s4RechargeStopwatch; } } Object.Destroy((Object)(object)component); } private void AddStanceChangeMachine() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: 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_004b: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/DLC1/VoidSurvivor/VoidSurvivorBody.prefab").WaitForCompletion(); EntityStateMachine val2 = val.AddComponent<EntityStateMachine>(); val2.customName = "Stance"; val2.initialStateType = new SerializableEntityStateType(typeof(BaseState)); val2.mainStateType = new SerializableEntityStateType(typeof(BaseState)); NetworkStateMachine component = val.GetComponent<NetworkStateMachine>(); component.stateMachines = component.stateMachines.Append(val2).ToArray(); } private void CreateSkillDefs() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_0196: 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_026e: Unknown result type (might be due to invalid IL or missing references) //IL_0278: Expected O, but got Unknown //IL_0279: 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_0293: 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_02fe: Unknown result type (might be due to invalid IL or missing references) SkillFamily val = Addressables.LoadAssetAsync<SkillFamily>((object)"RoR2/DLC1/VoidSurvivor/VoidSurvivorSpecialFamily.asset").WaitForCompletion(); SkillDef val2 = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC1/VoidSurvivor/CrushHealth.asset").WaitForCompletion(); SkillDef val3 = Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/DLC1/VoidSurvivor/CrushCorruption.asset").WaitForCompletion(); SkillDef val4 = ScriptableObject.CreateInstance<SkillDef>(); val4.activationState = new SerializableEntityStateType(typeof(EnterJokerMode)); val4.activationStateMachineName = "Stance"; val4.baseMaxStock = 1; val4.baseRechargeInterval = 12f; val4.beginSkillCooldownOnSkillEnd = true; val4.canceledFromSprinting = false; val4.cancelSprintingOnActivation = false; val4.forceSprintDuringState = false; val4.fullRestockOnAssign = true; val4.icon = val2.icon; val4.interruptPriority = (InterruptPriority)0; val4.isCombatSkill = false; val4.keywordTokens = new string[0]; val4.mustKeyPress = true; val4.rechargeStock = 1; val4.requiredStock = 1; val4.stockToConsume = 1; val4.resetCooldownTimerOnUse = false; val4.skillDescriptionToken = "VIENDJOKERMODE_ENTER_SKILL_DESCRIPTION"; val4.skillNameToken = "VIENDJOKERMODE_ENTER_SKILL_NAME"; val4.skillName = "ViendStanceChange"; ((Object)val4).name = val4.skillName; Content.skillDefs.Add(val4); Content.EnterStanceChange = val4; SkillDef val5 = ScriptableObject.CreateInstance<SkillDef>(); val5.activationState = new SerializableEntityStateType(typeof(ExitJokerMode)); val5.activationStateMachineName = "Stance"; val5.baseMaxStock = 1; val5.baseRechargeInterval = 12f; val5.beginSkillCooldownOnSkillEnd = true; val5.canceledFromSprinting = false; val5.cancelSprintingOnActivation = false; val5.forceSprintDuringState = false; val5.fullRestockOnAssign = true; val5.icon = val3.icon; val5.interruptPriority = (InterruptPriority)1; val5.isCombatSkill = false; val5.keywordTokens = new string[0]; val5.mustKeyPress = true; val5.rechargeStock = 1; val5.requiredStock = 1; val5.stockToConsume = 1; val5.resetCooldownTimerOnUse = false; val5.skillDescriptionToken = "Society."; val5.skillNameToken = "VIENDJOKERMODE_EXIT_SKILL_DESCRIPTION"; val5.skillName = "VIENDJOKERMODE_EXIT_SKILL_NAME"; ((Object)val5).name = val5.skillName; Content.skillDefs.Add(val5); Content.ExitStanceChange = val5; EnterJokerMode.exitSkillDef = val5; Array.Resize(ref val.variants, val.variants.Length + 1); Variant[] variants = val.variants; int num = val.variants.Length - 1; Variant val6 = new Variant { skillDef = val4, unlockableDef = null }; ((Variant)(ref val6)).viewableNode = new Node(val4.skillName, false, (Node)null); variants[num] = val6; SkillDef val7 = ScriptableObject.CreateInstance<SkillDef>(); val7.activationState = new SerializableEntityStateType(typeof(EnterJokerMode)); val7.activationStateMachineName = "Stance"; val7.baseMaxStock = 1; val7.baseRechargeInterval = 6f; val7.beginSkillCooldownOnSkillEnd = true; val7.canceledFromSprinting = false; val7.cancelSprintingOnActivation = false; val7.forceSprintDuringState = false; val7.fullRestockOnAssign = true; val7.icon = assetBundle.LoadAsset<Sprite>("JOKERSCEPTER"); val7.interruptPriority = (InterruptPriority)0; val7.isCombatSkill = false; val7.keywordTokens = new string[0]; val7.mustKeyPress = true; val7.rechargeStock = 1; val7.requiredStock = 1; val7.stockToConsume = 1; val7.resetCooldownTimerOnUse = false; val7.skillDescriptionToken = "VIENDJOKERMODE_ENTER_SKILL_SCEPTER_DESCRIPTION"; val7.skillNameToken = "VIENDJOKERMODE_ENTER_SKILL_SCEPTER_NAME"; val7.skillName = "ViendStanceChangeScepter"; ((Object)val7).name = val7.skillName; Content.skillDefs.Add(val7); Content.EnterStanceChangeScepter = val7; RegisterScepterSkill(); } private void RegisterScepterSkill() { if (compatScepterLoaded) { RegisterScepterSkillInternal(); } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private void RegisterScepterSkillInternal() { ItemBase<AncientScepterItem>.instance.RegisterScepterSkill(Content.EnterStanceChangeScepter, "VoidSurvivorBody", Content.EnterStanceChange); } private void DisableCorruptMeter() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //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_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Expected O, but got Unknown UncorruptedMode.FixedUpdate += new hook_FixedUpdate(UncorruptedMode_FixedUpdate); CorruptMode.FixedUpdate += new hook_FixedUpdate(CorruptMode_FixedUpdate); VoidSurvivorController.UpdateUI += new hook_UpdateUI(DisableCorruptUI); VoidSurvivorController.FixedUpdate += new hook_FixedUpdate(DisableCorruptAnimator); } private void DisableCorruptAnimator(orig_FixedUpdate orig, VoidSurvivorController self) { orig.Invoke(self); if (Object.op_Implicit((Object)(object)self.characterAnimator) && HasStanceChange(self.characterBody)) { float num = (self.isCorrupted ? 1f : 0f); self.characterAnimator.SetFloat("corruptionFraction", num); } } private void DisableCorruptUI(orig_UpdateUI orig, VoidSurvivorController self) { if (!HasStanceChange(self.characterBody)) { orig.Invoke(self); } else if (self.overlayController != null) { self.overlayController.onInstanceAdded -= self.OnOverlayInstanceAdded; self.overlayController.onInstanceRemove -= self.OnOverlayInstanceRemoved; self.fillUiList.Clear(); HudOverlayManager.RemoveOverlay(self.overlayController); self.overlayController = null; } } private void CorruptMode_FixedUpdate(orig_FixedUpdate orig, CorruptMode self) { if (!HasStanceChange(((EntityState)self).skillLocator)) { orig.Invoke(self); } } private void UncorruptedMode_FixedUpdate(orig_FixedUpdate orig, UncorruptedMode self) { if (!HasStanceChange(((EntityState)self).skillLocator)) { orig.Invoke(self); } } private void CorruptStatMod() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStats); HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage); } private void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //IL_0007: 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) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) if (self.body.bodyIndex == viendBodyIndex && DamageTypeCombo.op_Implicit(damageInfo.damageType & DamageTypeCombo.op_Implicit((DamageType)2)) == 0L && DamageTypeCombo.op_Implicit(damageInfo.damageType & DamageTypeCombo.op_Implicit((DamageType)2097152)) == 0L && DamageTypeCombo.op_Implicit(damageInfo.damageType & DamageTypeCombo.op_Implicit((DamageType)int.MinValue)) == 0L && self.body.HasBuff(Buffs.VoidSurvivorCorruptMode) && HasStanceChange(self.body)) { damageInfo.damage *= corruptDamageTakenMult; } orig.Invoke(self, damageInfo); } private void RecalculateStats(CharacterBody sender, StatHookEventArgs args) { if (sender.HasBuff(Buffs.VoidSurvivorCorruptMode) && HasStanceChange(sender)) { if (!RiskyModViendArmorStripEnabled()) { args.armorAdd -= 100f; } if (!HasScepter(sender)) { args.damageMultAdd -= corruptDamagePenalty; } } } public static bool HasScepter(CharacterBody body) { return Object.op_Implicit((Object)(object)body) && HasScepter(body.inventory); } public static bool HasScepter(Inventory inventory) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) return Object.op_Implicit((Object)(object)inventory) && inventory.GetItemCount(scepterIndex) > 0; } public static bool RiskyModViendArmorStripEnabled() { if (compatRiskyModLoaded) { return RiskyModViendArmorStripEnabledInternal(); } return false; } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private static bool RiskyModViendArmorStripEnabledInternal() { return SurvivorsCore.enabled && VoidFiendCore.enabled && VoidFiendCore.removeCorruptArmor; } public static bool HasStanceChange(CharacterBody body) { return Object.op_Implicit((Object)(object)body) && HasStanceChange(body.skillLocator); } public static bool HasStanceChange(SkillLocator skillLocator) { return Object.op_Implicit((Object)(object)skillLocator) && Object.op_Implicit((Object)(object)skillLocator.special) && (Object)(object)skillLocator.special.baseSkill == (Object)(object)Content.EnterStanceChange; } } } namespace ViendStanceChangeSkill.Modules { public class Content : IContentPackProvider { public static SkillDef EnterStanceChange; public static SkillDef ExitStanceChange; public static SkillDef EnterStanceChangeScepter; internal ContentPack contentPack = new ContentPack(); public static List<SkillDef> skillDefs = new List<SkillDef>(); public static List<Type> entityStates = new List<Type>(); public string identifier => "com.Moffein.ViendStanceChangeSkil"; public void Initialize() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(ContentManager_collectContentPackProviders); } private void ContentManager_collectContentPackProviders(AddContentPackProviderDelegate addContentPackProvider) { addContentPackProvider.Invoke((IContentPackProvider)(object)this); } public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { contentPack.identifier = identifier; contentPack.skillDefs.Add(skillDefs.ToArray()); contentPack.entityStateTypes.Add(entityStates.ToArray()); args.ReportProgress(1f); yield break; } public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { ContentPack.Copy(contentPack, args.output); args.ReportProgress(1f); yield break; } public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { args.ReportProgress(1f); yield break; } } public class Tokens { internal static string languageRoot => Path.Combine(assemblyDir, "language"); internal static string assemblyDir => Path.GetDirectoryName(ViendStanceChangeSkillPlugin.pluginInfo.Location); internal static void LoadLanguage() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown Language.SetFolders += new hook_SetFolders(fixme); } private static void fixme(orig_SetFolders orig, Language self, IEnumerable<string> newFolders) { if (Directory.Exists(languageRoot)) { IEnumerable<string> second = Directory.EnumerateDirectories(Path.Combine(languageRoot), self.name); orig.Invoke(self, newFolders.Union(second)); } else { orig.Invoke(self, newFolders); } } } } namespace EntityStates.VoidSurvivor.JokerMode { public class EnterJokerMode : BaseState { private VoidSurvivorController voidSurvivorController; public static SkillDef exitSkillDef; public override void OnEnter() { //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_0240: Expected O, but got Unknown ((BaseState)this).OnEnter(); voidSurvivorController = ((EntityState)this).GetComponent<VoidSurvivorController>(); if (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator) && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.special)) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ViendSkillDataComponent viendSkillDataComponent = ((Component)((EntityState)this).characterBody).GetComponent<ViendSkillDataComponent>(); if (!Object.op_Implicit((Object)(object)viendSkillDataComponent)) { viendSkillDataComponent = ((Component)((EntityState)this).characterBody).gameObject.AddComponent<ViendSkillDataComponent>(); } viendSkillDataComponent.s1Stock = (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.primary) ? ((EntityState)this).skillLocator.primary.stock : 0); viendSkillDataComponent.s1RechargeStopwatch = (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.primary) ? ((EntityState)this).skillLocator.primary.rechargeStopwatch : 0f); viendSkillDataComponent.s2Stock = (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.secondary) ? ((EntityState)this).skillLocator.secondary.stock : 0); viendSkillDataComponent.s2RechargeStopwatch = (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.secondary) ? ((EntityState)this).skillLocator.secondary.rechargeStopwatch : 0f); viendSkillDataComponent.s3Stock = (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.utility) ? ((EntityState)this).skillLocator.utility.stock : 0); viendSkillDataComponent.s3RechargeStopwatch = (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.utility) ? ((EntityState)this).skillLocator.utility.rechargeStopwatch : 0f); viendSkillDataComponent.s4Stock = (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.special) ? ((EntityState)this).skillLocator.special.stock : 0); viendSkillDataComponent.s4RechargeStopwatch = (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.special) ? ((EntityState)this).skillLocator.special.rechargeStopwatch : 0f); } ((EntityState)this).skillLocator.special.SetSkillOverride((object)this, exitSkillDef, (SkillOverridePriority)4); } if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)voidSurvivorController) && Object.op_Implicit((Object)(object)voidSurvivorController.bodyStateMachine)) { voidSurvivorController.bodyStateMachine.SetInterruptState((EntityState)new EnterCorruptionTransition(), (InterruptPriority)1); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority) { GenericSkill val = (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator) ? ((EntityState)this).skillLocator.special : null); if (!Object.op_Implicit((Object)(object)val) || val.stock <= 0) { ((EntityState)this).outer.SetNextStateToMain(); } } } public override void OnExit() { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)voidSurvivorController) && Object.op_Implicit((Object)(object)voidSurvivorController.bodyStateMachine)) { voidSurvivorController.bodyStateMachine.SetInterruptState((EntityState)new ExitCorruptionTransition(), (InterruptPriority)1); } ((EntityState)this).OnExit(); if (Object.op_Implicit((Object)(object)((EntityState)this).skillLocator) && Object.op_Implicit((Object)(object)((EntityState)this).skillLocator.special)) { ((EntityState)this).skillLocator.special.UnsetSkillOverride((object)this, exitSkillDef, (SkillOverridePriority)4); } } 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 ExitJokerMode : BaseState { public override void OnEnter() { ((BaseState)this).OnEnter(); ((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)2; } } }