Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Joker Mode v1.2.1
plugins/ViendStanceChangeSkill/JokerMode.dll
Decompiled 2 years 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; } } }