using System; using System.Diagnostics; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using DurableHealthierSticks; using HarmonyLib; using Il2CppActiveRagdoll; using MelonLoader; using MelonLoader.Preferences; 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: MelonInfo(typeof(Core), "DurableHealthierSticks", "2.0.0", "MajedCT", null)] [assembly: MelonGame("Kubunautilus", "BrutalistickVR")] [assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] [assembly: AssemblyCompany("DurableHealthierSticks")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("DurableHealthierSticks")] [assembly: AssemblyTitle("DurableHealthierSticks")] [assembly: NeutralResourcesLanguage("en-US")] [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 DurableHealthierSticks { public class Core : MelonMod { [HarmonyPatch(typeof(StickHealth), "Start")] internal class HealthPatch { private static void Prefix(StickHealth __instance) { float value = healthMultiplier.Value; __instance.StickStartHealth *= value; } } [HarmonyPatch(typeof(StickHealth), "RemoveHP")] internal class DamagePatch { private static void Prefix(ref float dmgAmount, string dmgSource, string dmgRegion) { if (multiplyHeadshotAndNeckDamage.Value && (dmgRegion == "head" || dmgRegion == "neck")) { dmgAmount *= healthMultiplier.Value; } } } private MelonPreferences_Category prefCategory; private static MelonPreferences_Entry healthMultiplier; private static MelonPreferences_Entry multiplyHeadshotAndNeckDamage; public override void OnInitializeMelon() { ((MelonBase)this).LoggerInstance.Msg("Initialized."); MelonPrefs(); } public void MelonPrefs() { prefCategory = MelonPreferences.CreateCategory("DurableHealthierSticks", "Durable Healthier Sticks"); healthMultiplier = prefCategory.CreateEntry("Health Multiplier", 1.5f, "Health Multiplier", "Adjust this to change the stick's health multiplier.", false, false, (ValueValidator)null, (string)null); multiplyHeadshotAndNeckDamage = prefCategory.CreateEntry("Multiply Head & Neck Damage", true, "Multiply Head & Neck Damage", "If enabled, headshot, neckshots (& stabs/slashes) will also be multiplied by the health multiplier, to allow for one shot headshots.", false, false, (ValueValidator)null, (string)null); prefCategory.SaveToFile(true); } } }