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 Dynamo Flashlight v0.1.5
VMechLight.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using GameNetcodeStuff; using LethalLib.Modules; using Microsoft.CodeAnalysis; using Unity.Netcode; using UnityEngine; using VMechLight.MonoBehaviors; [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("VMechLight")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("A manually power flashlight")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("VMechLight")] [assembly: AssemblyTitle("VMechLight")] [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 VMechLight { [BepInPlugin("versus.dynamolight", "Dynamo Flashlight", "1.0.0")] public class Plugin : BaseUnityPlugin { private const string GUID = "versus.dynamolight"; private const string NAME = "Dynamo Flashlight"; private const string VERSION = "1.0.0"; public static Plugin instance; public static AudioClip pull1; public static AudioClip pull2; private void Awake() { instance = this; string text = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "dynamolight"); AssetBundle val = AssetBundle.LoadFromFile(text); pull1 = val.LoadAsset<AudioClip>("Assets/DynamoLight/DynamoLight/pull1.mp3"); pull2 = val.LoadAsset<AudioClip>("Assets/DynamoLight/DynamoLight/pull2.mp3"); Item val2 = val.LoadAsset<Item>("Assets/DynamoLight/DynamoLight/DynamoLight.asset"); DynamoLight dynamoLight = val2.spawnPrefab.AddComponent<DynamoLight>(); ((GrabbableObject)dynamoLight).grabbable = true; ((GrabbableObject)dynamoLight).grabbableToEnemies = true; ((GrabbableObject)dynamoLight).itemProperties = val2; NetworkPrefabs.RegisterNetworkPrefab(val2.spawnPrefab); Utilities.FixMixerGroups(val2.spawnPrefab); Items.RegisterScrap(val2, 5, (LevelTypes)(-1)); TerminalNode val3 = ScriptableObject.CreateInstance<TerminalNode>(); Items.RegisterShopItem(val2, (TerminalNode)null, (TerminalNode)null, val3, 25); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Patched Dynamo Flashlight"); } } } namespace VMechLight.MonoBehaviors { internal class DynamoLight : GrabbableObject { public GameObject lightlow; public GameObject lightmid; public GameObject lighthigh; public float battery = 0f; public AudioSource source; public override void Start() { ((GrabbableObject)this).Start(); source = ((Component)this).GetComponent<AudioSource>(); lightlow = ((Component)((Component)this).transform.GetChild(1)).gameObject; lightmid = ((Component)((Component)this).transform.GetChild(2)).gameObject; lighthigh = ((Component)((Component)this).transform.GetChild(3)).gameObject; } public override void ItemActivate(bool used, bool buttonDown = true) { //IL_0068: Unknown result type (might be due to invalid IL or missing references) ((GrabbableObject)this).ItemActivate(used, buttonDown); if (buttonDown && base.playerHeldBy.sprintMeter >= 0.1f) { battery += 10f; PlayerControllerB playerHeldBy = base.playerHeldBy; playerHeldBy.sprintMeter -= 0.1f; pullserver(); RoundManager.Instance.PlayAudibleNoise(((Component)this).transform.position, 20f, 3f, 0, base.isInElevator && StartOfRound.Instance.hangarDoorsClosed, 0); } } public override void Update() { ((GrabbableObject)this).Update(); flashlightserver(); } [ServerRpc] public void pullserver() { pullclient(); } [ClientRpc] public void pullclient() { if (battery <= 10f) { source.PlayOneShot(Plugin.pull1, 1f); } else if (battery > 10f) { source.PlayOneShot(Plugin.pull2, 1f); } } [ServerRpc] public void flashlightserver() { flashlightclient(); } [ClientRpc] public void flashlightclient() { //IL_0070: Unknown result type (might be due to invalid IL or missing references) if (battery > 0f) { if (battery <= 20f) { battery -= 0.015f; } else if (battery > 20f) { battery -= 0.0075f; } RoundManager.Instance.PlayAudibleNoise(((Component)this).transform.position, 10f, 1f, 0, base.isInElevator && StartOfRound.Instance.hangarDoorsClosed, 0); } if (battery > 0f && battery < 10f) { lightlow.SetActive(true); lightmid.SetActive(false); lighthigh.SetActive(false); base.useCooldown = 0.75f; } else if (battery > 10f && battery < 20f) { lightlow.SetActive(false); lightmid.SetActive(true); lighthigh.SetActive(false); base.useCooldown = 2f; } else if (battery > 20f && battery <= 30f) { lightlow.SetActive(false); lightmid.SetActive(false); lighthigh.SetActive(true); base.useCooldown = 15f; } else if (battery <= 0f) { lightlow.SetActive(false); lightmid.SetActive(false); lighthigh.SetActive(false); base.useCooldown = 0f; } if (battery > 30f) { battery = 30f; } } } }