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 BlackMesaInternTransferProgram v2.0.0
BepInEx/plugins/BlackMesaInternTransferProgram.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("SoulWithMae")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("My first plugin")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+41615ee780db605e4e89c28946f6be75bab43983")] [assembly: AssemblyProduct("BlackMesaInternTransferProgram")] [assembly: AssemblyTitle("BlackMesaInternTransferProgram")] [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 BlackMesaInternTransferProgram { public static class AssetLoader { public static AssetBundle LoadEmbeddedAssetBundle(Assembly assembly, string name) { string[] manifestResourceNames = assembly.GetManifestResourceNames(); AssetBundle result = null; if (manifestResourceNames.Contains(name)) { Plugin.StaticLogger.LogInfo((object)("Loading embedded resource data " + name + "...")); using Stream stream = assembly.GetManifestResourceStream(name); using MemoryStream memoryStream = new MemoryStream(); stream?.CopyTo(memoryStream); Plugin.StaticLogger.LogInfo((object)"Loading assetBundle from data, please be patient..."); byte[] array = memoryStream.ToArray(); Plugin.StaticLogger.LogInfo((object)"Loading assetBundle from data, please be patient..."); result = AssetBundle.LoadFromMemory(array); Plugin.StaticLogger.LogInfo((object)"Done!"); } return result; } public static T LoadPersistentAsset<T>(this AssetBundle assetBundle, string name) where T : Object { Object val = assetBundle.LoadAsset(name); if (val != (Object)null) { val.hideFlags = (HideFlags)32; return (T)(object)((val is T) ? val : null); } return default(T); } public static byte[] GetResourceBytes(Assembly assembly, string name) { string[] manifestResourceNames = assembly.GetManifestResourceNames(); foreach (string text in manifestResourceNames) { if (!text.Contains(name)) { continue; } using Stream stream = assembly.GetManifestResourceStream(text); if (stream == null) { return null; } byte[] array = new byte[stream.Length]; stream.Read(array, 0, array.Length); return array; } return null; } } [HarmonyPatch(typeof(PlayerControllerB))] internal static class PlayerDeathManager { [HarmonyPostfix] [HarmonyPatch("KillPlayerServerRpc")] private static void PostfixRpc(PlayerControllerB __instance) { OnPlayerDeath(__instance); } [HarmonyPostfix] [HarmonyPatch("KillPlayer")] private static void PostfixKill(PlayerControllerB __instance) { OnPlayerDeath(__instance); } private static void OnPlayerDeath(PlayerControllerB player) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) string playerUsername = player.playerUsername; Vector3 position = ((Component)player).transform.position; EvalDeathCause(player.causeOfDeath, playerUsername, position); } private static void EvalDeathCause(CauseOfDeath causeOfDeath, string username, Vector3 position) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected I4, but got Unknown //IL_004c: 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_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007c: 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_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: 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_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) switch ((int)causeOfDeath) { case 0: UnknownDeath(username, position); break; case 1: BludgeoningDeath(username, position); break; case 2: GravityDeath(username, position); break; case 3: BlastDeath(username, position); break; case 4: StrangulationDeath(username, position); break; case 5: SuffocationDeath(username, position); break; case 6: MaulingDeath(username, position); break; case 7: GunshotsDeath(username, position); break; case 8: CrushingDeath(username, position); break; case 9: DrowningDeath(username, position); break; case 10: AbandonedDeath(username, position); break; case 11: ElectrocutionDeath(username, position); break; case 12: KickingDeath(username, position); break; case 13: BurningDeath(username, position); break; case 14: StabbingDeath(username, position); break; case 15: FanDeath(username, position); break; default: UnknownDeath(username, position); Plugin.StaticLogger.LogError((object)("Death type was wrong. Playing unknown sound at " + ((object)(Vector3)(ref position)).ToString())); break; } } private static void PlayAudio(AudioClip sound, Vector3 position) { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) if (Plugin.AlertEnemies.Value) { RoundManager.Instance.PlayAudibleNoise(position, Plugin.NoiseRange.Value, Plugin.NoiseLoudness.Value, 0, false, 0); AudioSource.PlayClipAtPoint(sound, position, Plugin.Volume.Value); } else { AudioSource.PlayClipAtPoint(sound, position, Plugin.Volume.Value); } } private static void UnknownDeath(string username, Vector3 position) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) int index = Random.Range(0, Resources.Unknown.Count); AudioClip val = Resources.Unknown[index]; PlayAudio(val, position); Plugin.StaticLogger.LogInfo((object)(username + " died to unknown. Playing " + ((Object)val).name + " at " + ((object)(Vector3)(ref position)).ToString())); } private static void BludgeoningDeath(string username, Vector3 position) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) int index = Random.Range(0, Resources.Bludgeoning.Count); AudioClip val = Resources.Bludgeoning[index]; PlayAudio(val, position); Plugin.StaticLogger.LogInfo((object)(username + " died to bludgeoning. Playing " + ((Object)val).name + " at " + ((object)(Vector3)(ref position)).ToString())); } private static void GravityDeath(string username, Vector3 position) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) int index = Random.Range(0, Resources.Gravity.Count); AudioClip val = Resources.Gravity[index]; PlayAudio(val, position); Plugin.StaticLogger.LogInfo((object)(username + " died to gravity. Playing " + ((Object)val).name + " at " + ((object)(Vector3)(ref position)).ToString())); } private static void BlastDeath(string username, Vector3 position) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) int index = Random.Range(0, Resources.Blast.Count); AudioClip val = Resources.Blast[index]; PlayAudio(val, position); Plugin.StaticLogger.LogInfo((object)(username + " died to blast. Playing " + ((Object)val).name + " at " + ((object)(Vector3)(ref position)).ToString())); } private static void StrangulationDeath(string username, Vector3 position) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) int index = Random.Range(0, Resources.Strangulation.Count); AudioClip val = Resources.Strangulation[index]; PlayAudio(val, position); Plugin.StaticLogger.LogInfo((object)(username + " died to strangulation. Playing " + ((Object)val).name + " at " + ((object)(Vector3)(ref position)).ToString())); } private static void SuffocationDeath(string username, Vector3 position) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) int index = Random.Range(0, Resources.Suffocation.Count); AudioClip val = Resources.Suffocation[index]; PlayAudio(val, position); Plugin.StaticLogger.LogInfo((object)(username + " died to suffocation. Playing " + ((Object)val).name + " at " + ((object)(Vector3)(ref position)).ToString())); } private static void MaulingDeath(string username, Vector3 position) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) int index = Random.Range(0, Resources.Mauling.Count); AudioClip val = Resources.Mauling[index]; PlayAudio(val, position); Plugin.StaticLogger.LogInfo((object)(username + " died to mauling. Playing " + ((Object)val).name + " at " + ((object)(Vector3)(ref position)).ToString())); } private static void GunshotsDeath(string username, Vector3 position) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) int index = Random.Range(0, Resources.Gunshots.Count); AudioClip val = Resources.Gunshots[index]; PlayAudio(val, position); Plugin.StaticLogger.LogInfo((object)(username + " died to gunshots. Playing " + ((Object)val).name + " at " + ((object)(Vector3)(ref position)).ToString())); } private static void CrushingDeath(string username, Vector3 position) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) int index = Random.Range(0, Resources.Crushing.Count); AudioClip val = Resources.Crushing[index]; PlayAudio(val, position); Plugin.StaticLogger.LogInfo((object)(username + " died to crushing. Playing " + ((Object)val).name + " at " + ((object)(Vector3)(ref position)).ToString())); } private static void DrowningDeath(string username, Vector3 position) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) int index = Random.Range(0, Resources.Drowning.Count); AudioClip val = Resources.Drowning[index]; PlayAudio(val, position); Plugin.StaticLogger.LogInfo((object)(username + " died to drowning. Playing " + ((Object)val).name + " at " + ((object)(Vector3)(ref position)).ToString())); } private static void AbandonedDeath(string username, Vector3 position) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) int index = Random.Range(0, Resources.Abandoned.Count); AudioClip val = Resources.Abandoned[index]; PlayAudio(val, position); Plugin.StaticLogger.LogInfo((object)(username + " died to abandoned. Playing " + ((Object)val).name + " at " + ((object)(Vector3)(ref position)).ToString())); } private static void ElectrocutionDeath(string username, Vector3 position) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) int index = Random.Range(0, Resources.Electrocution.Count); AudioClip val = Resources.Electrocution[index]; PlayAudio(val, position); Plugin.StaticLogger.LogInfo((object)(username + " died to electrocution. Playing " + ((Object)val).name + " at " + ((object)(Vector3)(ref position)).ToString())); } private static void KickingDeath(string username, Vector3 position) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) int index = Random.Range(0, Resources.Kicking.Count); AudioClip val = Resources.Kicking[index]; PlayAudio(val, position); Plugin.StaticLogger.LogInfo((object)(username + " died to kicking. Playing " + ((Object)val).name + " at " + ((object)(Vector3)(ref position)).ToString())); } private static void BurningDeath(string username, Vector3 position) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) int index = Random.Range(0, Resources.Burning.Count); AudioClip val = Resources.Burning[index]; PlayAudio(val, position); Plugin.StaticLogger.LogInfo((object)(username + " died to burning. Playing " + ((Object)val).name + " at " + ((object)(Vector3)(ref position)).ToString())); } private static void StabbingDeath(string username, Vector3 position) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) int index = Random.Range(0, Resources.Stabbing.Count); AudioClip val = Resources.Stabbing[index]; PlayAudio(val, position); Plugin.StaticLogger.LogInfo((object)(username + " died to stabbing. Playing " + ((Object)val).name + " at " + ((object)(Vector3)(ref position)).ToString())); } private static void FanDeath(string username, Vector3 position) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) int index = Random.Range(0, Resources.Fan.Count); AudioClip val = Resources.Fan[index]; PlayAudio(val, position); Plugin.StaticLogger.LogInfo((object)(username + " died to fan. Playing " + ((Object)val).name + " at " + ((object)(Vector3)(ref position)).ToString())); } } internal static class ModInfo { public const string PluginGuid = "SoulWithMae.BlackMesaInternTransferProgram"; public const string PluginName = "BlackMesaInternTransferProgram"; public const string PluginVersion = "2.0.0"; } [BepInPlugin("SoulWithMae.BlackMesaInternTransferProgram", "BlackMesaInternTransferProgram", "2.0.0")] public class Plugin : BaseUnityPlugin { internal static ManualLogSource StaticLogger; private static Harmony _harmony; public static ConfigEntry<float> Volume; public static ConfigEntry<bool> AlertEnemies; public static ConfigEntry<float> NoiseRange; public static ConfigEntry<float> NoiseLoudness; private void Awake() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin SoulWithMae.BlackMesaInternTransferProgram is loaded as version 2.0.0!"); _harmony = new Harmony("SoulWithMae.BlackMesaInternTransferProgram"); _harmony.PatchAll(); StaticLogger = ((BaseUnityPlugin)this).Logger; Resources.Load(); Volume = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Volume", 1f, "The volume of the sounds. Minimum 0, maximum 1."); AlertEnemies = ((BaseUnityPlugin)this).Config.Bind<bool>("Alerting Enemies", "AlertEnemies", false, "Whether to alert enemies or not with the screams."); NoiseRange = ((BaseUnityPlugin)this).Config.Bind<float>("Alerting Enemies", "NoiseRange", 30f, "The range of the noise."); NoiseLoudness = ((BaseUnityPlugin)this).Config.Bind<float>("Alerting Enemies", "NoiseLoudness", 100f, "The loudness of the noise."); } } internal static class Resources { private static AssetBundle _assetBundle; public static readonly List<AudioClip> Unknown = new List<AudioClip>(); public static readonly List<AudioClip> Bludgeoning = new List<AudioClip>(); public static readonly List<AudioClip> Gravity = new List<AudioClip>(); public static readonly List<AudioClip> Blast = new List<AudioClip>(); public static readonly List<AudioClip> Strangulation = new List<AudioClip>(); public static readonly List<AudioClip> Suffocation = new List<AudioClip>(); public static readonly List<AudioClip> Mauling = new List<AudioClip>(); public static readonly List<AudioClip> Gunshots = new List<AudioClip>(); public static readonly List<AudioClip> Crushing = new List<AudioClip>(); public static readonly List<AudioClip> Drowning = new List<AudioClip>(); public static readonly List<AudioClip> Abandoned = new List<AudioClip>(); public static readonly List<AudioClip> Electrocution = new List<AudioClip>(); public static readonly List<AudioClip> Kicking = new List<AudioClip>(); public static readonly List<AudioClip> Burning = new List<AudioClip>(); public static readonly List<AudioClip> Stabbing = new List<AudioClip>(); public static readonly List<AudioClip> Fan = new List<AudioClip>(); public static void Load() { _assetBundle = AssetLoader.LoadEmbeddedAssetBundle(Assembly.GetExecutingAssembly(), "BlackMesaInternTransferProgram.Resources.Audio.bundle"); Unknown.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Unknown/scream5.wav")); Unknown.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Unknown/scream6.wav")); Unknown.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Unknown/scream06.wav")); Unknown.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Unknown/scream07.wav")); Unknown.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Unknown/scream7.wav")); Unknown.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Unknown/scream08.wav")); Unknown.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Unknown/scream09.wav")); Unknown.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Unknown/scream10.wav")); Unknown.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Unknown/scream11.wav")); Unknown.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Unknown/scream12.wav")); Bludgeoning.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Bludgeoning/sci_pain3.wav")); Bludgeoning.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Bludgeoning/sci_pain4.wav")); Bludgeoning.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Bludgeoning/sci_pain9.wav")); Bludgeoning.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Bludgeoning/scream11.wav")); Bludgeoning.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Bludgeoning/stopattacking.wav")); Gravity.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Gravity/scream04.wav")); Gravity.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Gravity/scream06.wav")); Gravity.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Gravity/scream24.wav")); Blast.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Blast/sci_fear6.wav")); Blast.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Blast/sci_pain4.wav")); Blast.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Blast/scream01.wav")); Blast.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Blast/scream3.wav")); Blast.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Blast/scream14.wav")); Strangulation.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Strangulation/sci_dragoff.wav")); Strangulation.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Strangulation/sci_pain10.wav")); Strangulation.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Strangulation/scream03.wav")); Strangulation.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Strangulation/scream18.wav")); Strangulation.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Strangulation/scream20.wav")); Suffocation.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Suffocation/c1a4_sci_tent.wav")); Suffocation.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Suffocation/sci_die1.wav")); Suffocation.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Suffocation/sci_die2.wav")); Suffocation.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Suffocation/sci_die3.wav")); Suffocation.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Suffocation/sci_die4.wav")); Mauling.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Mauling/sci_pain1.wav")); Mauling.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Mauling/sci_pain5.wav")); Mauling.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Mauling/sci_pain6.wav")); Mauling.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Mauling/sci_pain7.wav")); Mauling.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Mauling/sci_pain8.wav")); Gunshots.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Gunshots/scream09.wav")); Gunshots.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Gunshots/scream25.wav")); Crushing.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Crushing/sci_fear14.wav")); Crushing.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Crushing/sci_fear15.wav")); Drowning.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Drowning/sci_die1.wav")); Drowning.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Drowning/sci_die2.wav")); Drowning.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Drowning/sci_die3.wav")); Drowning.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Drowning/sci_die4.wav")); Abandoned.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Abandoned/c1a2_sci_darkroom.wav")); Abandoned.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Abandoned/c1a3_sci_silo1a.wav")); Abandoned.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Abandoned/c1a3_sci_silo2a.wav")); Abandoned.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Abandoned/dontwantdie.wav")); Abandoned.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Abandoned/evergetout.wav")); Abandoned.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Abandoned/gottogetout.wav")); Abandoned.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Abandoned/leavingme.wav")); Abandoned.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Abandoned/whyleavehere.wav")); Electrocution.Add(_assetBundle.LoadPersistentAsset<AudioClip>("Assets/Electrocution/scream07.wav")); Kicking.AddRange(Bludgeoning); Burning.AddRange(Blast); Stabbing.AddRange(Bludgeoning); Stabbing.AddRange(Gunshots); Fan.AddRange(Crushing); } } public static class PluginInfo { public const string PLUGIN_GUID = "BlackMesaInternTransferProgram"; public const string PLUGIN_NAME = "BlackMesaInternTransferProgram"; public const string PLUGIN_VERSION = "1.0.0"; } }