Due to update 2.4.3, some mods may no longer function. FixedConfig may be necessary.
Decompiled source of MoreLives v1.0.0
MoreLives.dll
Decompiled 7 months agousing System; using System.Collections.Generic; 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 HarmonyLib; using Microsoft.CodeAnalysis; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETFramework,Version=v4.6", FrameworkDisplayName = "")] [assembly: AssemblyCompany("MoreLives")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("My first plugin")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("MoreLives")] [assembly: AssemblyTitle("MoreLives")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace MoreLives { [BepInPlugin("MoreLives", "MoreLives", "1.0.0")] [BepInIncompatibility("com.MorePlayersTeam.MorePlayers")] public class Plugin : BaseUnityPlugin { public static ConfigEntry<int> baseHealth; public static List<int> pHealth = new List<int>(); public static ConfigEntry<int> baseIFrames; public static List<int> iframes = new List<int>(); private void Awake() { //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Expected O, but got Unknown baseHealth = ((BaseUnityPlugin)this).Config.Bind<int>("General", "Life Count", 3, "The amount of lives each player starts with."); baseIFrames = ((BaseUnityPlugin)this).Config.Bind<int>("General", "I-Frames", 5, "The amount of invincibility frames (i-frames) each player gets after getting hit."); for (int i = 0; i < 4; i++) { pHealth.Add(baseHealth.Value); } for (int j = 0; j < 4; j++) { iframes.Add(0); } ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin MoreLives is loaded!"); Harmony val = new Harmony("MoreLives"); val.PatchAll(typeof(Patches)); } } public class Patches { [HarmonyPatch(typeof(PlayerCollision), "killPlayer")] [HarmonyPrefix] public static bool KillPatch(PlayerCollision __instance, CauseOfDeath __3) { int index = __instance.GetPlayerId() - 1; if (Plugin.iframes[index] > 0) { Plugin.iframes[index]--; return false; } if (Plugin.pHealth[index] < 1) { Plugin.pHealth[index] = Plugin.baseHealth.Value; return true; } Plugin.pHealth[index]--; Plugin.iframes[index] = Plugin.baseIFrames.Value; return false; } } public static class PluginInfo { public const string PLUGIN_GUID = "MoreLives"; public const string PLUGIN_NAME = "MoreLives"; public const string PLUGIN_VERSION = "1.0.0"; } }