using 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 HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [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("FiftyFiftyMindflayers")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("Adds configurable spawning behavior for Mindflayer visuals")] [assembly: AssemblyFileVersion("1.0.1.0")] [assembly: AssemblyInformationalVersion("1.0.1")] [assembly: AssemblyProduct("FiftyFiftyMindflayers")] [assembly: AssemblyTitle("FiftyFiftyMindflayers")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.1.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 FiftyFiftyMindflayers { [HarmonyPatch] [BepInPlugin("com.Hydraxous.FiftyFiftyMindflayers", "FiftyFiftyMindflayers", "1.0.2")] public class Plugin : BaseUnityPlugin { public const string NAME = "FiftyFiftyMindflayers"; public const string VERSION = "1.0.2"; public const string GUID = "com.Hydraxous.FiftyFiftyMindflayers"; private Harmony harmony; private static ConfigEntry percentChance; private static ConfigEntry spawnMode; private static bool lastFlayerWasMale; private void Awake() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown harmony = new Harmony("com.Hydraxous.FiftyFiftyMindflayers"); harmony.PatchAll(); percentChance = ((BaseUnityPlugin)this).Config.Bind("General", "PercentChance", 0.5f, "Chance of a mindflayer spawning masculine (0.0-1.0) default 0.5 -> 50%"); spawnMode = ((BaseUnityPlugin)this).Config.Bind("General", "Mode", MindFlayerSpawnMode.Random, "How to determine if a mindflayer spawns masc or fem. Random: uses the random percentage chance for each spawn. Alternate: Alternates between masc and fem."); ((BaseUnityPlugin)this).Logger.LogInfo((object)"FiftyFiftyMindflayers is loaded!"); } [HarmonyPatch(typeof(Mindflayer), "Awake")] [HarmonyPrefix] private static bool Mindflayer_Awake(Mindflayer __instance) { __instance.enemy = ((Component)__instance).GetComponent(); __instance.rb = ((Component)__instance).GetComponent(); __instance.anim = ((Component)__instance).GetComponent(); __instance.eid = ((Component)__instance).GetComponent(); lastFlayerWasMale = ShouldMakeMale(); if (lastFlayerWasMale) { MakeMale(__instance); } return false; } private static bool ShouldMakeMale() { return spawnMode.Value switch { MindFlayerSpawnMode.Random => Random.value < percentChance.Value, MindFlayerSpawnMode.Alternate => !lastFlayerWasMale, _ => false, }; } private static void MakeMale(Mindflayer mf) { if (!((Object)(object)mf.smr == (Object)null) && !((Object)(object)mf.ensim == (Object)null)) { mf.smr.sharedMesh = mf.maleMesh; ((Renderer)mf.smr).material = mf.maleMaterial; mf.ensim.enragedMaterial = mf.maleMaterialEnraged; } } } public enum MindFlayerSpawnMode { Random, Alternate } public static class PluginInfo { public const string PLUGIN_GUID = "FiftyFiftyMindflayers"; public const string PLUGIN_NAME = "FiftyFiftyMindflayers"; public const string PLUGIN_VERSION = "1.0.1"; } }