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 KKA Tweaks v1.0.2
KingKombatArena_Tweaks.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using EntityStates.CaptainDefenseMatrixItem; using IL.RoR2; using Mono.Cecil.Cil; using MonoMod.Cil; using NS_KingKombatArena; using NS_KingModUtilities; using On.EntityStates.CaptainDefenseMatrixItem; using On.RoR2; using R2API; using R2API.Utils; using RoR2; using UnityEngine; using UnityEngine.Networking; [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.0", FrameworkDisplayName = "")] [assembly: AssemblyCompany("KingKombatArena_Tweaks")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("KingKombatArena_Tweaks")] [assembly: AssemblyTitle("KingKombatArena_Tweaks")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace KingKombatArena_Tweaks; [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Moffein.KingKombatArena_Tweaks", "KingKombatArena Tweaks", "1.0.2")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] [R2APISubmoduleDependency(new string[] { "RecalculateStatsAPI" })] public class KingKombatArena_Tweaks : BaseUnityPlugin { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_Start <>9__7_0; public static hook_TakeDamage <>9__7_1; public static hook_SetStun <>9__7_2; public static Func<Instruction, bool> <>9__7_7; public static Func<bool, bool> <>9__7_8; public static Manipulator <>9__7_3; public static StatHookEventHandler <>9__7_4; public static hook_DeleteNearbyProjectile <>9__7_5; public static hook_RecalculateStats <>9__7_6; internal void <Awake>b__7_0(orig_Start orig, Run self) { orig.Invoke(self); duelActive = false; ((Component)self).gameObject.AddComponent<KombatArenaTracker>(); } internal void <Awake>b__7_1(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Invalid comparison between Unknown and I4 //IL_003d: 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_0049: Invalid comparison between Unknown and I4 //IL_002c: 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_0034: 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_005e: 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) bool flag = false; bool flag2 = false; if (NetworkServer.active && duelActive) { if ((damageInfo.damageType & 0x20) > 0) { damageInfo.damageType = (DamageType)(damageInfo.damageType & -33); flag = true; } if ((damageInfo.damageType & 0x1000000) > 0) { damageInfo.damageType = (DamageType)(damageInfo.damageType & -16777217); flag2 = true; } } orig.Invoke(self, damageInfo); if (NetworkServer.active && !damageInfo.rejected && self.alive && Object.op_Implicit((Object)(object)self.body) && (allowChainStun || !self.body.HasBuff(Buffs.LunarSecondaryRoot))) { if (flag) { self.body.AddTimedBuff(Buffs.LunarSecondaryRoot, 1f); } if (flag2) { self.body.AddTimedBuff(Buffs.LunarSecondaryRoot, 3f); } } } internal void <Awake>b__7_2(orig_SetStun orig, SetStateOnHurt self, float duration) { if (duelActive) { CharacterBody component = ((Component)self).gameObject.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component) && (allowChainStun || !component.HasBuff(Buffs.LunarSecondaryRoot))) { component.AddTimedBuff(Buffs.LunarSecondaryRoot, duration); return; } } orig.Invoke(self, duration); } internal void <Awake>b__7_3(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val = new ILCursor(il); val.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Buffs), "HiddenInvincibility") }); val.Index += 2; val.EmitDelegate<Func<bool, bool>>((Func<bool, bool>)((bool orig) => orig && !duelActive)); } internal bool <Awake>b__7_7(Instruction x) { return ILPatternMatchingExt.MatchLdsfld(x, typeof(Buffs), "HiddenInvincibility"); } internal bool <Awake>b__7_8(bool orig) { return orig && !duelActive; } internal void <Awake>b__7_4(CharacterBody sender, StatHookEventArgs args) { if (duelActive && sender.HasBuff(Buffs.HiddenInvincibility)) { args.armorAdd += iFrameArmor; } } internal bool <Awake>b__7_5(orig_DeleteNearbyProjectile orig, DefenseMatrixOn self) { if (!duelActive) { return orig.Invoke(self); } return false; } internal void <Awake>b__7_6(orig_RecalculateStats orig, CharacterBody self) { orig.Invoke(self); if (duelActive) { self.damage *= damageMult; } } } public static bool weakerStun = true; public static bool allowChainStun = false; public static bool noIFrames = true; public static float iFrameArmor = 200f; public static float damageMult = 1f; public static bool disableMicrobots = true; public static bool duelActive = false; public void Awake() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown //IL_005a: 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_0065: Expected O, but got Unknown //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Expected O, but got Unknown //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Expected O, but got Unknown //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Expected O, but got Unknown //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Expected O, but got Unknown //IL_00d4: 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_00df: Expected O, but got Unknown ReadConfig(); object obj = <>c.<>9__7_0; if (obj == null) { hook_Start val = delegate(orig_Start orig, Run self) { orig.Invoke(self); duelActive = false; ((Component)self).gameObject.AddComponent<KombatArenaTracker>(); }; <>c.<>9__7_0 = val; obj = (object)val; } Run.Start += (hook_Start)obj; if (weakerStun && Configuration.EnableStunsAndShocksDuringDuels.Value) { object obj2 = <>c.<>9__7_1; if (obj2 == null) { hook_TakeDamage val2 = delegate(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Invalid comparison between Unknown and I4 //IL_003d: 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_0049: Invalid comparison between Unknown and I4 //IL_002c: 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_0034: 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_005e: 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) bool flag = false; bool flag2 = false; if (NetworkServer.active && duelActive) { if ((damageInfo.damageType & 0x20) > 0) { damageInfo.damageType = (DamageType)(damageInfo.damageType & -33); flag = true; } if ((damageInfo.damageType & 0x1000000) > 0) { damageInfo.damageType = (DamageType)(damageInfo.damageType & -16777217); flag2 = true; } } orig.Invoke(self, damageInfo); if (NetworkServer.active && !damageInfo.rejected && self.alive && Object.op_Implicit((Object)(object)self.body) && (allowChainStun || !self.body.HasBuff(Buffs.LunarSecondaryRoot))) { if (flag) { self.body.AddTimedBuff(Buffs.LunarSecondaryRoot, 1f); } if (flag2) { self.body.AddTimedBuff(Buffs.LunarSecondaryRoot, 3f); } } }; <>c.<>9__7_1 = val2; obj2 = (object)val2; } HealthComponent.TakeDamage += (hook_TakeDamage)obj2; object obj3 = <>c.<>9__7_2; if (obj3 == null) { hook_SetStun val3 = delegate(orig_SetStun orig, SetStateOnHurt self, float duration) { if (duelActive) { CharacterBody component = ((Component)self).gameObject.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component) && (allowChainStun || !component.HasBuff(Buffs.LunarSecondaryRoot))) { component.AddTimedBuff(Buffs.LunarSecondaryRoot, duration); return; } } orig.Invoke(self, duration); }; <>c.<>9__7_2 = val3; obj3 = (object)val3; } SetStateOnHurt.SetStun += (hook_SetStun)obj3; } if (noIFrames) { object obj4 = <>c.<>9__7_3; if (obj4 == null) { Manipulator val4 = delegate(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val8 = new ILCursor(il); val8.GotoNext(new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, typeof(Buffs), "HiddenInvincibility") }); val8.Index += 2; val8.EmitDelegate<Func<bool, bool>>((Func<bool, bool>)((bool orig) => orig && !duelActive)); }; <>c.<>9__7_3 = val4; obj4 = (object)val4; } HealthComponent.TakeDamage += (Manipulator)obj4; object obj5 = <>c.<>9__7_4; if (obj5 == null) { StatHookEventHandler val5 = delegate(CharacterBody sender, StatHookEventArgs args) { if (duelActive && sender.HasBuff(Buffs.HiddenInvincibility)) { args.armorAdd += iFrameArmor; } }; <>c.<>9__7_4 = val5; obj5 = (object)val5; } RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj5; } if (disableMicrobots) { object obj6 = <>c.<>9__7_5; if (obj6 == null) { hook_DeleteNearbyProjectile val6 = (orig_DeleteNearbyProjectile orig, DefenseMatrixOn self) => !duelActive && orig.Invoke(self); <>c.<>9__7_5 = val6; obj6 = (object)val6; } DefenseMatrixOn.DeleteNearbyProjectile += (hook_DeleteNearbyProjectile)obj6; } object obj7 = <>c.<>9__7_6; if (obj7 == null) { hook_RecalculateStats val7 = delegate(orig_RecalculateStats orig, CharacterBody self) { orig.Invoke(self); if (duelActive) { self.damage *= damageMult; } }; <>c.<>9__7_6 = val7; obj7 = (object)val7; } CharacterBody.RecalculateStats += (hook_RecalculateStats)obj7; } private void ReadConfig() { //IL_0011: 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_002c: Expected O, but got Unknown //IL_002c: Expected O, but got Unknown //IL_0046: 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) //IL_0061: Expected O, but got Unknown //IL_0061: Expected O, but got Unknown //IL_007b: 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_0096: Expected O, but got Unknown //IL_0096: Expected O, but got Unknown //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Expected O, but got Unknown //IL_00cf: Expected O, but got Unknown //IL_00e9: 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_0104: Expected O, but got Unknown //IL_0104: Expected O, but got Unknown //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Expected O, but got Unknown //IL_013d: Expected O, but got Unknown weakerStun = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Stuns", "Weaker Stuns"), true, new ConfigDescription("Players can still attack during stuns.", (AcceptableValueBase)null, Array.Empty<object>())).Value; allowChainStun = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Stuns", "Allow Chain Stuns"), false, new ConfigDescription("Allow players to be re-stunned while in a stun (requires Weaker Stuns).", (AcceptableValueBase)null, Array.Empty<object>())).Value; noIFrames = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("I-Frames", "Disable I-Frames"), true, new ConfigDescription("I-Frames give armor instead.", (AcceptableValueBase)null, Array.Empty<object>())).Value; iFrameArmor = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("I-Frames", "I-Frame Armor"), 200f, new ConfigDescription("Armor to give if I-Frames are disabled.", (AcceptableValueBase)null, Array.Empty<object>())).Value; disableMicrobots = ((BaseUnityPlugin)this).Config.Bind<bool>(new ConfigDefinition("Captain", "Disable Defensive Microbots"), true, new ConfigDescription("Disables Defensive Microbots during duels.", (AcceptableValueBase)null, Array.Empty<object>())).Value; damageMult = ((BaseUnityPlugin)this).Config.Bind<float>(new ConfigDefinition("Stats", "Damage Multiplier"), 1f, new ConfigDescription("Multiplies player damage during duels.", (AcceptableValueBase)null, Array.Empty<object>())).Value; } } public class KombatArenaTracker : MonoBehaviour { private float stopwatch = 0f; public void FixedUpdate() { stopwatch += Time.fixedDeltaTime; if (!(stopwatch > 1f)) { return; } stopwatch -= 1f; KombatArenaInstance val = KingKombatArenaMainPlugin.AccessCurrentKombatArenaInstance(); if (val == null) { return; } bool duelActive = KingKombatArena_Tweaks.duelActive; KingKombatArena_Tweaks.duelActive = ((StateMachine)val.GetKombatArenaStateMachine()).IsInState(typeof(DuelCombatState)); if (!duelActive || KingKombatArena_Tweaks.duelActive) { return; } foreach (CharacterMaster instances in CharacterMaster.instancesList) { GameObject bodyObject = instances.GetBodyObject(); if (Object.op_Implicit((Object)(object)bodyObject)) { DotController.RemoveAllDots(bodyObject); } } } }