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 Last Arbiter v1.0.1
LastArbiter.dll
Decompiled 7 months agousing System; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using HarmonyLib; using HutongGames.PlayMaker; using HutongGames.PlayMaker.Actions; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("LastArbiter")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("LastArbiter")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("73b670ee-de4d-48bc-85cc-ae24e0cde37d")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] [BepInPlugin("com.slimybonesjones.lastarbiter", "Last Arbiter", "1.0.0")] public class LastArbiter : BaseUnityPlugin { internal static ManualLogSource Log; internal static HealthManager healthManager; private void Awake() { Log = ((BaseUnityPlugin)this).Logger; Log.LogInfo((object)"Plugin loaded and initialised"); Harmony.CreateAndPatchAll(typeof(LastArbiter), (string)null); } [HarmonyPostfix] [HarmonyPatch(typeof(PlayMakerFSM), "Awake")] private static void Postfix(PlayMakerFSM __instance) { GameObject val = ((__instance != null) ? ((Component)__instance).gameObject : null); if ((Object)(object)val == (Object)null || !((Object)val).name.StartsWith("Last Judge", StringComparison.OrdinalIgnoreCase) || !string.Equals(__instance.FsmName, "Control", StringComparison.OrdinalIgnoreCase)) { return; } FsmState state = __instance.Fsm.GetState("Idle"); if (state == null) { Log.LogWarning((object)"No state named Idle"); return; } Wait val2 = state.Actions.OfType<Wait>().FirstOrDefault((Func<Wait, bool>)((Wait a) => ((NamedVariable)a.time).Name == "Idle Time")); val2.time = FsmFloat.op_Implicit(0f); FsmState state2 = __instance.Fsm.GetState("Init"); if (state2 == null) { Log.LogWarning((object)"No state named Init"); return; } MultiplyIntByFloat val3 = state2.Actions.OfType<MultiplyIntByFloat>().FirstOrDefault((Func<MultiplyIntByFloat, bool>)((MultiplyIntByFloat a) => ((NamedVariable)a.storeResult).Name == "HP P2")); val3.multiplyFloat = FsmFloat.op_Implicit(0.85f); MultiplyIntByFloat val4 = state2.Actions.OfType<MultiplyIntByFloat>().FirstOrDefault((Func<MultiplyIntByFloat, bool>)((MultiplyIntByFloat a) => ((NamedVariable)a.storeResult).Name == "HP P3")); val4.multiplyFloat = FsmFloat.op_Implicit(0.25f); FsmState state3 = __instance.Fsm.GetState("Intro Roar"); if (state3 == null) { Log.LogWarning((object)"No state named Intro Roar"); return; } DisplayBossTitle val5 = state3.Actions.OfType<DisplayBossTitle>().FirstOrDefault(); val5.bossTitle = FsmString.op_Implicit("LAST_JUDGE"); FsmState state4 = __instance.Fsm.GetState("Spinning"); if (state4 == null) { Log.LogWarning((object)"No state named Spinning"); return; } Wait val6 = state4.Actions.OfType<Wait>().FirstOrDefault(); val6.time = FsmFloat.op_Implicit(0.5f); FsmState state5 = __instance.Fsm.GetState("Rerage?"); if (state5 == null) { Log.LogWarning((object)"No state named Rerage?"); return; } IntCompare val7 = state5.Actions.OfType<IntCompare>().FirstOrDefault(); val7.integer2 = FsmInt.op_Implicit(-16); FsmState state6 = __instance.Fsm.GetState("Rage End"); if (state6 == null) { Log.LogWarning((object)"No state named Rage End"); return; } SetFloatValue val8 = state6.Actions.OfType<SetFloatValue>().FirstOrDefault(); val8.floatValue = FsmFloat.op_Implicit(0.2f); FsmState state7 = __instance.Fsm.GetState("Flame Spin Antic L"); if (state7 == null) { Log.LogWarning((object)"No state named Flame Spin Antic L"); return; } Wait val9 = state7.Actions.OfType<Wait>().FirstOrDefault(); val9.time = FsmFloat.op_Implicit(0f); FsmState state8 = __instance.Fsm.GetState("Flame Dir"); if (state8 == null) { Log.LogWarning((object)"No state named Flame Dir"); return; } RandomFloat val10 = state8.Actions.OfType<RandomFloat>().FirstOrDefault((Func<RandomFloat, bool>)((RandomFloat a) => ((NamedVariable)a.storeResult).Name == "Speed R")); val10.min = FsmFloat.op_Implicit(5f); val10.max = FsmFloat.op_Implicit(15f); FsmState state9 = __instance.Fsm.GetState("L Flame R"); if (state9 == null) { Log.LogWarning((object)"No state named L Flame R"); return; } Wait val11 = state9.Actions.OfType<Wait>().FirstOrDefault((Func<Wait, bool>)((Wait a) => a.time.Value == 1.7f)); val11.time = FsmFloat.op_Implicit(0.7f); WaitBool val12 = state9.Actions.OfType<WaitBool>().FirstOrDefault(); val12.time = FsmFloat.op_Implicit(0.5f); SendEventToRegisterDelay val13 = state9.Actions.OfType<SendEventToRegisterDelay>().FirstOrDefault(); val13.delay = FsmFloat.op_Implicit(0.5f); Wait val14 = state9.Actions.OfType<Wait>().FirstOrDefault((Func<Wait, bool>)((Wait a) => a.time.Value == 1.25f)); val14.time = FsmFloat.op_Implicit(0.5f); FsmState state10 = __instance.Fsm.GetState("R Flame L"); if (state10 == null) { Log.LogWarning((object)"No state named R Flame L"); return; } Wait val15 = state10.Actions.OfType<Wait>().FirstOrDefault((Func<Wait, bool>)((Wait a) => a.time.Value == 1.7f)); val15.time = FsmFloat.op_Implicit(0.7f); WaitBool val16 = state10.Actions.OfType<WaitBool>().FirstOrDefault(); val16.time = FsmFloat.op_Implicit(0.5f); SendEventToRegisterDelay val17 = state10.Actions.OfType<SendEventToRegisterDelay>().FirstOrDefault(); val13.delay = FsmFloat.op_Implicit(0.5f); Wait val18 = state10.Actions.OfType<Wait>().FirstOrDefault((Func<Wait, bool>)((Wait a) => a.time.Value == 1.25f)); val14.time = FsmFloat.op_Implicit(0.5f); FsmState state11 = __instance.Fsm.GetState("Charge"); if (state11 == null) { Log.LogWarning((object)"No state named Charge"); return; } Wait val19 = state11.Actions.OfType<Wait>().FirstOrDefault(); val19.time = FsmFloat.op_Implicit(1f); FsmState state12 = __instance.Fsm.GetState("Charge Flame"); if (state12 == null) { Log.LogWarning((object)"No state named Charge Flame"); return; } Wait val20 = state12.Actions.OfType<Wait>().FirstOrDefault(); val20.time = FsmFloat.op_Implicit(0.2f); FsmState state13 = __instance.Fsm.GetState("Charge Antic 2"); if (state13 == null) { Log.LogWarning((object)"No state named Charge Antic 2"); return; } Wait val21 = state13.Actions.OfType<Wait>().FirstOrDefault(); val21.time = FsmFloat.op_Implicit(0f); FsmState state14 = __instance.Fsm.GetState("Charge Start"); if (state14 == null) { Log.LogWarning((object)"No state named Charge Start"); return; } SetVelocityByScale val22 = state14.Actions.OfType<SetVelocityByScale>().FirstOrDefault(); val22.speed = FsmFloat.op_Implicit(-22f); FsmState state15 = __instance.Fsm.GetState("Stomp Flame Antic"); if (state15 == null) { Log.LogWarning((object)"No state named Stomp Flame Antic"); return; } Wait val23 = state15.Actions.OfType<Wait>().FirstOrDefault(); val23.time = FsmFloat.op_Implicit(0f); FsmState state16 = __instance.Fsm.GetState("Stomp Flames"); if (state16 == null) { Log.LogWarning((object)"No state named Stomp Flames"); return; } Wait val24 = state16.Actions.OfType<Wait>().FirstOrDefault(); val24.time = FsmFloat.op_Implicit(0.1f); FsmState state17 = __instance.Fsm.GetState("Stomp Regular"); if (state17 == null) { Log.LogWarning((object)"No state named Stomp Regular"); return; } Wait val25 = state17.Actions.OfType<Wait>().FirstOrDefault(); val25.time = FsmFloat.op_Implicit(0.1f); FsmState state18 = __instance.Fsm.GetState("Stomp Rise and Antic"); if (state18 == null) { Log.LogWarning((object)"No state named Stomp Rise and Antic"); return; } EaseFloat val26 = state18.Actions.OfType<EaseFloat>().FirstOrDefault((Func<EaseFloat, bool>)((EaseFloat a) => ((NamedVariable)a.floatVariable).Name == "Tween X")); ((EaseFsmAction)val26).time = FsmFloat.op_Implicit(0.2f); EaseFloat val27 = state18.Actions.OfType<EaseFloat>().FirstOrDefault((Func<EaseFloat, bool>)((EaseFloat a) => ((NamedVariable)a.floatVariable).Name == "Tween Y")); ((EaseFsmAction)val27).time = FsmFloat.op_Implicit(0.1f); ActivateGameObjectDelay val28 = state18.Actions.OfType<ActivateGameObjectDelay>().FirstOrDefault((Func<ActivateGameObjectDelay, bool>)((ActivateGameObjectDelay a) => ((NamedVariable)a.activate).Name == "Flamed Up")); val28.delay = FsmFloat.op_Implicit(0.1f); FsmState state19 = __instance.Fsm.GetState("Jump Rise"); if (state19 == null) { Log.LogWarning((object)"No state named Jump Rise"); return; } EaseFloat val29 = state19.Actions.OfType<EaseFloat>().FirstOrDefault((Func<EaseFloat, bool>)((EaseFloat a) => ((NamedVariable)a.floatVariable).Name == "Tween X")); ((EaseFsmAction)val29).time = FsmFloat.op_Implicit(0.2f); EaseFloat val30 = state19.Actions.OfType<EaseFloat>().FirstOrDefault((Func<EaseFloat, bool>)((EaseFloat a) => ((NamedVariable)a.floatVariable).Name == "Tween Y")); ((EaseFsmAction)val30).time = FsmFloat.op_Implicit(0.15f); FsmState state20 = __instance.Fsm.GetState("Jump Fall"); if (state20 == null) { Log.LogWarning((object)"No state named Jump Fall"); return; } EaseFloat val31 = state20.Actions.OfType<EaseFloat>().FirstOrDefault((Func<EaseFloat, bool>)((EaseFloat a) => ((NamedVariable)a.floatVariable).Name == "Tween X")); ((EaseFsmAction)val31).time = FsmFloat.op_Implicit(0.15f); EaseFloat val32 = state20.Actions.OfType<EaseFloat>().FirstOrDefault((Func<EaseFloat, bool>)((EaseFloat a) => ((NamedVariable)a.floatVariable).Name == "Tween Y")); ((EaseFsmAction)val32).time = FsmFloat.op_Implicit(0.2f); FsmState state21 = __instance.Fsm.GetState("Dash"); if (state21 == null) { Log.LogWarning((object)"No state named Dash"); return; } SetVelocityByScale val33 = state21.Actions.OfType<SetVelocityByScale>().FirstOrDefault(); val33.speed = FsmFloat.op_Implicit(-40f); FsmState state22 = __instance.Fsm.GetState("Clamp L"); if (state22 == null) { Log.LogWarning((object)"No state named Clamp L"); return; } FloatClamp val34 = state22.Actions.OfType<FloatClamp>().FirstOrDefault((Func<FloatClamp, bool>)((FloatClamp a) => ((NamedVariable)a.floatVariable).Name == "X Distance")); val34.minValue = FsmFloat.op_Implicit(-24f); val34.maxValue = FsmFloat.op_Implicit(-8f); FsmState state23 = __instance.Fsm.GetState("Clamp R"); if (state23 == null) { Log.LogWarning((object)"No state named Clamp R"); return; } FloatClamp val35 = state23.Actions.OfType<FloatClamp>().FirstOrDefault((Func<FloatClamp, bool>)((FloatClamp a) => ((NamedVariable)a.floatVariable).Name == "X Distance")); val35.minValue = FsmFloat.op_Implicit(8f); val35.maxValue = FsmFloat.op_Implicit(24f); FsmState state24 = __instance.Fsm.GetState("Throw Rise"); if (state24 == null) { Log.LogWarning((object)"No state named Throw Rise"); return; } EaseFloat val36 = state24.Actions.OfType<EaseFloat>().FirstOrDefault((Func<EaseFloat, bool>)((EaseFloat a) => ((NamedVariable)a.floatVariable).Name == "Tween X")); ((EaseFsmAction)val36).time = FsmFloat.op_Implicit(0.1f); EaseFloat val37 = state24.Actions.OfType<EaseFloat>().FirstOrDefault((Func<EaseFloat, bool>)((EaseFloat a) => ((NamedVariable)a.floatVariable).Name == "Tween Y")); ((EaseFsmAction)val37).time = FsmFloat.op_Implicit(0.1f); Wait val38 = state24.Actions.OfType<Wait>().FirstOrDefault(); val38.time = FsmFloat.op_Implicit(0f); FsmState state25 = __instance.Fsm.GetState("Throw Fall"); if (state25 == null) { Log.LogWarning((object)"No state named Throw Fall"); return; } EaseFloat val39 = state25.Actions.OfType<EaseFloat>().FirstOrDefault((Func<EaseFloat, bool>)((EaseFloat a) => ((NamedVariable)a.floatVariable).Name == "Tween X")); ((EaseFsmAction)val39).time = FsmFloat.op_Implicit(0.1f); EaseFloat val40 = state25.Actions.OfType<EaseFloat>().FirstOrDefault((Func<EaseFloat, bool>)((EaseFloat a) => ((NamedVariable)a.floatVariable).Name == "Tween Y")); ((EaseFsmAction)val40).time = FsmFloat.op_Implicit(0.1f); FsmState state26 = __instance.Fsm.GetState("Slam Type"); if (state26 == null) { Log.LogWarning((object)"No state named Slam Type"); return; } ConvertBoolToFloat val41 = state26.Actions.OfType<ConvertBoolToFloat>().FirstOrDefault(); val41.falseValue = FsmFloat.op_Implicit(0f); FsmState state27 = __instance.Fsm.GetState("Stun Start"); if (state27 == null) { Log.LogWarning((object)"No state named Stun Start"); return; } SetFloatValue val42 = state27.Actions.OfType<SetFloatValue>().FirstOrDefault((Func<SetFloatValue, bool>)((SetFloatValue a) => ((NamedVariable)a.floatVariable).Name == "Stun Timer")); val42.floatValue = FsmFloat.op_Implicit(1f); FsmState state28 = __instance.Fsm.GetState("Close Range"); if (state28 == null) { Log.LogWarning((object)"No state named Close Range"); return; } SendRandomEventV4 val43 = state28.Actions.OfType<SendRandomEventV4>().FirstOrDefault(); val43.weights = (FsmFloat[])(object)new FsmFloat[3] { FsmFloat.op_Implicit(0.25f), FsmFloat.op_Implicit(0.4f), FsmFloat.op_Implicit(0.35f) }; val43.eventMax = (FsmInt[])(object)new FsmInt[3] { FsmInt.op_Implicit(2), FsmInt.op_Implicit(2), FsmInt.op_Implicit(2) }; val43.missedMax = (FsmInt[])(object)new FsmInt[3] { FsmInt.op_Implicit(4), FsmInt.op_Implicit(3), FsmInt.op_Implicit(3) }; FsmState state29 = __instance.Fsm.GetState("Far Range"); if (state29 == null) { Log.LogWarning((object)"No state named Far Range"); return; } SendRandomEventV4 val44 = state29.Actions.OfType<SendRandomEventV4>().FirstOrDefault(); val44.weights = (FsmFloat[])(object)new FsmFloat[4] { FsmFloat.op_Implicit(0.3f), FsmFloat.op_Implicit(0.3f), FsmFloat.op_Implicit(0.2f), FsmFloat.op_Implicit(0.2f) }; val44.eventMax = (FsmInt[])(object)new FsmInt[4] { FsmInt.op_Implicit(1), FsmInt.op_Implicit(1), FsmInt.op_Implicit(2), FsmInt.op_Implicit(2) }; val44.missedMax = (FsmInt[])(object)new FsmInt[4] { FsmInt.op_Implicit(2), FsmInt.op_Implicit(2), FsmInt.op_Implicit(3), FsmInt.op_Implicit(2) }; FsmState state30 = __instance.Fsm.GetState("Close Range F"); if (state30 == null) { Log.LogWarning((object)"No state named Close Range F"); return; } SendRandomEventV3 val45 = state30.Actions.OfType<SendRandomEventV3>().FirstOrDefault(); val45.weights = (FsmFloat[])(object)new FsmFloat[5] { FsmFloat.op_Implicit(0.15f), FsmFloat.op_Implicit(0.25f), FsmFloat.op_Implicit(0.1f), FsmFloat.op_Implicit(0.25f), FsmFloat.op_Implicit(0.25f) }; val45.eventMax = (FsmInt[])(object)new FsmInt[5] { FsmInt.op_Implicit(1), FsmInt.op_Implicit(3), FsmInt.op_Implicit(1), FsmInt.op_Implicit(3), FsmInt.op_Implicit(1) }; val45.missedMax = (FsmInt[])(object)new FsmInt[5] { FsmInt.op_Implicit(4), FsmInt.op_Implicit(2), FsmInt.op_Implicit(999), FsmInt.op_Implicit(4), FsmInt.op_Implicit(4) }; FsmState state31 = __instance.Fsm.GetState("Far Range F"); if (state31 == null) { Log.LogWarning((object)"No state named Far Range F"); return; } SendRandomEventV3 val46 = state31.Actions.OfType<SendRandomEventV3>().FirstOrDefault(); val46.weights = (FsmFloat[])(object)new FsmFloat[5] { FsmFloat.op_Implicit(0.2f), FsmFloat.op_Implicit(0.2f), FsmFloat.op_Implicit(0.2f), FsmFloat.op_Implicit(0.1f), FsmFloat.op_Implicit(0.3f) }; val46.eventMax = (FsmInt[])(object)new FsmInt[5] { FsmInt.op_Implicit(1), FsmInt.op_Implicit(2), FsmInt.op_Implicit(1), FsmInt.op_Implicit(1), FsmInt.op_Implicit(3) }; val46.missedMax = (FsmInt[])(object)new FsmInt[5] { FsmInt.op_Implicit(2), FsmInt.op_Implicit(3), FsmInt.op_Implicit(999), FsmInt.op_Implicit(4), FsmInt.op_Implicit(2) }; healthManager = ((Component)__instance).gameObject.GetComponent<HealthManager>(); healthManager.hp = 1440; } }