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 StarlancerMoons v3.2.0
StarlancerMoons.dll
Decompiled 11 months agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using LethalLevelLoader; 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("StarlancerMoons")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+3072f031f84581ef19eff40c10031a44487d0775")] [assembly: AssemblyProduct("StarlancerMoons")] [assembly: AssemblyTitle("StarlancerMoons")] [assembly: AssemblyVersion("1.0.0.0")] [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.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [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 StarlancerMoons { [BepInPlugin("AudioKnight.StarlancerMoons", "Starlancer Moons", "2.2.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class StarlancerMoonsBase : BaseUnityPlugin { private const string modGUID = "AudioKnight.StarlancerMoons"; private const string modName = "Starlancer Moons"; private const string modVersion = "2.2.1"; private readonly Harmony harmony = new Harmony("AudioKnight.StarlancerMoons"); public static StarlancerMoonsBase Instance; internal static ManualLogSource logger; private void Awake() { if ((Object)(object)Instance == (Object)null) { Instance = this; } logger = ((BaseUnityPlugin)this).Logger; logger.LogInfo((object)"StarlancerMoons scripts loaded."); harmony.PatchAll(typeof(StarlancerMoonsBase)); harmony.PatchAll(typeof(TerminalManagerPatch)); } } public class DamageTrigger : MonoBehaviour { public float cooldownTime; public int damageAmount; public CauseOfDeath causeOfDeath; private float timeSincePlayerDamaged = 0f; private void OnTriggerStay(Collider other) { //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0086: 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) PlayerControllerB component = ((Component)other).gameObject.GetComponent<PlayerControllerB>(); if (((Component)other).gameObject.CompareTag("Player")) { if (timeSincePlayerDamaged < cooldownTime) { timeSincePlayerDamaged += Time.deltaTime; } else if ((Object)(object)component != (Object)null && !component.isInsideFactory) { timeSincePlayerDamaged = 0f; component.DamagePlayer(damageAmount, true, true, causeOfDeath, 0, false, default(Vector3)); } } } } public class lookAtPlayerXZ : MonoBehaviour { private Vector3 playerPositionXZ; private AudioListener target = StartOfRound.Instance.audioListener; private void Update() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)StartOfRound.Instance.audioListener != (Object)null) { playerPositionXZ = new Vector3(((Component)target).transform.position.x, ((Component)this).transform.position.y, ((Component)target).transform.position.z); ((Component)this).transform.LookAt(playerPositionXZ); } } } [HarmonyPatch(typeof(TerminalManager))] internal static class TerminalManagerPatch { private static readonly Dictionary<string, string> KeywordReplacements = new Dictionary<string, string> { { "starlancerzero", "anomaly" } }; private static void EditTerminalKeyword(ExtendedLevel level, TerminalKeyword keyword) { if (KeywordReplacements.TryGetValue(keyword.word, out string value)) { keyword.word = value; } } [HarmonyTranspiler] [HarmonyPatch("CreateLevelTerminalData")] private static IEnumerable<CodeInstruction> DebugLogging(IEnumerable<CodeInstruction> instructions) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Expected O, but got Unknown //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Expected O, but got Unknown //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Expected O, but got Unknown //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Expected O, but got Unknown //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Expected O, but got Unknown return new CodeMatcher(instructions, (ILGenerator)null).MatchForward(true, (CodeMatch[])(object)new CodeMatch[3] { new CodeMatch((OpCode?)OpCodes.Ldloc_0, (object)null, (string)null), new CodeMatch((OpCode?)OpCodes.Ldsfld, (object)AccessTools.Field(typeof(TerminalManager), "routeKeyword"), (string)null), new CodeMatch((OpCode?)OpCodes.Stfld, (object)AccessTools.Field(typeof(TerminalKeyword), "defaultVerb"), (string)null) }).InsertAndAdvance((CodeInstruction[])(object)new CodeInstruction[3] { new CodeInstruction(OpCodes.Ldarg_0, (object)null), new CodeInstruction(OpCodes.Ldloc_0, (object)null), new CodeInstruction(OpCodes.Call, (object)AccessTools.Method(typeof(TerminalManagerPatch), "EditTerminalKeyword", (Type[])null, (Type[])null)) }).InstructionEnumeration(); } } }
WanderingCreature.dll
Decompiled 11 months agousing 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 Microsoft.CodeAnalysis; using Unity.Netcode; using UnityEngine; using UnityEngine.AI; [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("WanderingCreature")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Test")] [assembly: AssemblyFileVersion("1.2.1.0")] [assembly: AssemblyInformationalVersion("1.2.1")] [assembly: AssemblyProduct("WanderingCreature")] [assembly: AssemblyTitle("WanderingCreature")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.2.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; } } } [BepInPlugin("WanderingCreature", "Wandering Creature", "1.2.1")] public class WanderingCreature : BaseUnityPlugin { private void Awake() { Debug.Log((object)"WanderingCreaturePlugin loaded"); } } public class WanderingCreatureController : NetworkBehaviour { [Header("Movement")] [Tooltip("The maximum distance from the creature's current position within which it can wander.")] public float wanderRadius = 10f; [Tooltip("The duration the creature waits at its destination before selecting a new destination to wander towards.")] public float waitTime = 3f; [Tooltip("If enabled, the wait time becomes random within the range [0, Wait Time].")] public bool randomTime; [Tooltip("Toggle whether the creature is allowed to wander or not.")] public bool wanderEnabled = true; [Tooltip("When enabled, the creature will only wander around its spawn point within a radius defined by the Wander Radius. If disabled, the creature can wander from any point within the Wander Radius.")] public bool anchoredWandering = true; [Header("Audio")] public AudioSource ambientAudioSource; [Tooltip("An array of audio clips that can be played randomly at intervals while the creature is wandering.")] public AudioClip[] ambientAudioClips; [Tooltip("The minimum interval between playing ambient audio clips.")] public float minAmbientAudioInterval = 3f; [Tooltip("The maximum interval between playing ambient audio clips.")] public float maxAmbientAudioInterval = 7f; [Tooltip("The volume for ambient audio.")] [Range(0f, 2f)] public float ambientAudioVolume = 1f; [Space] public AudioSource walkingAudioSource; [Tooltip("An array of audio clips that can be played randomly at intervals while the creature is moving.")] public AudioClip[] walkingAudioClips; [Tooltip("The interval between playing walking audio clips.")] public float walkingAudioInterval = 0.5f; [Tooltip("The volume for walking audio.")] [Range(0f, 2f)] public float walkingAudioVolume = 1f; [Header("Rotation")] [Tooltip("If enabled, the creature will follow the surface normal underneath it.")] public bool followSurface; [Tooltip("The distance to cast the ray to detect the surface normal.")] public float surfaceNormalRaycastDistance = 2f; private NavMeshAgent agent; private bool isMoving; private bool startMovingSignal; private float waitTimer; private float ambientAudioTimer; private float walkingAudioTimer; private int currentAmbientClipIndex; private Vector3 startPosition; private float lastSyncedAmbientAudioTimer; private float syncedWaitTimer; private void Start() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) startPosition = ((Component)this).transform.position; agent = ((Component)this).GetComponent<NavMeshAgent>(); if (((NetworkBehaviour)this).IsServer) { GenerateDestination(); startMovingSignal = true; } if ((Object)(object)ambientAudioSource == (Object)null || (Object)(object)walkingAudioSource == (Object)null) { Debug.LogError((object)"WaderingCreatureController: One or both AudioSource components are not assigned!"); return; } ambientAudioSource.volume = ambientAudioVolume; walkingAudioSource.volume = walkingAudioVolume; } private void Update() { //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) if (!wanderEnabled) { return; } if (startMovingSignal && !isMoving && waitTimer <= 0f) { GenerateDestinationServerRpc(); startMovingSignal = false; } if (isMoving) { if (!agent.pathPending && agent.remainingDistance <= agent.stoppingDistance) { if (agent.hasPath) { Vector3 velocity = agent.velocity; if (((Vector3)(ref velocity)).sqrMagnitude != 0f) { goto IL_010c; } } isMoving = false; syncedWaitTimer = waitTimer; WaitTimerSyncServerRpc(waitTimer); if (randomTime) { waitTimer = Random.Range(0f, waitTime); } else { waitTimer = waitTime; } } } else if (waitTimer > 0f) { waitTimer -= Time.deltaTime; } else if (((NetworkBehaviour)this).IsServer) { GenerateDestinationServerRpc(); } goto IL_010c; IL_010c: if (ambientAudioClips != null && ambientAudioClips.Length != 0) { if (((NetworkBehaviour)this).IsServer) { ambientAudioTimer -= Time.deltaTime; if (ambientAudioTimer <= 0f) { ambientAudioTimer = Random.Range(minAmbientAudioInterval, maxAmbientAudioInterval); lastSyncedAmbientAudioTimer = ambientAudioTimer; AmbientAudioTimerSyncServerRpc(ambientAudioTimer); } } else { ambientAudioTimer = lastSyncedAmbientAudioTimer; } if (ambientAudioTimer <= 0f) { SelectAmbientAudioClipServerRpc(); } } if (isMoving && walkingAudioClips != null) { walkingAudioTimer -= Time.deltaTime; if (walkingAudioTimer <= 0f) { int num = Random.Range(0, walkingAudioClips.Length); walkingAudioSource.clip = walkingAudioClips[num]; walkingAudioSource.Play(); walkingAudioTimer = walkingAudioInterval; } } if (followSurface) { RotateToFollowSurfaceNormal(); } } private void GenerateDestination() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) Vector3 val = Random.insideUnitSphere * wanderRadius; if (anchoredWandering) { val += startPosition; } NavMeshHit val2 = default(NavMeshHit); NavMesh.SamplePosition(val, ref val2, wanderRadius, -1); Vector3 position = ((NavMeshHit)(ref val2)).position; agent.SetDestination(position); isMoving = true; } private void RotateToFollowSurfaceNormal() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) RaycastHit val = default(RaycastHit); if (Physics.Raycast(((Component)this).transform.position, Vector3.down, ref val, surfaceNormalRaycastDistance)) { Vector3 normal = ((RaycastHit)(ref val)).normal; Quaternion rotation = Quaternion.FromToRotation(((Component)this).transform.up, normal) * ((Component)this).transform.rotation; ((Component)this).transform.rotation = rotation; } } private void OnDrawGizmosSelected() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) Gizmos.color = Color.green; Gizmos.DrawWireSphere(((Component)this).transform.position, wanderRadius); } [ServerRpc(RequireOwnership = false)] private void GenerateDestinationServerRpc() { GenerateDestination(); GenerateDestinationClientRpc(); } [ClientRpc] private void GenerateDestinationClientRpc() { isMoving = true; } [ServerRpc(RequireOwnership = false)] private void SelectAmbientAudioClipServerRpc() { currentAmbientClipIndex = Random.Range(0, ambientAudioClips.Length); SelectAmbientAudioClipClientRpc(currentAmbientClipIndex); } [ClientRpc] private void SelectAmbientAudioClipClientRpc(int clipIndex) { if (ambientAudioClips != null && ambientAudioClips.Length != 0) { currentAmbientClipIndex = clipIndex; ambientAudioSource.clip = ambientAudioClips[currentAmbientClipIndex]; ambientAudioSource.Play(); } } [ServerRpc(RequireOwnership = false)] private void AmbientAudioTimerSyncServerRpc(float timerValue) { lastSyncedAmbientAudioTimer = timerValue; AmbientAudioTimerSyncClientRpc(timerValue); } [ClientRpc] private void AmbientAudioTimerSyncClientRpc(float timerValue) { lastSyncedAmbientAudioTimer = timerValue; } [ServerRpc(RequireOwnership = false)] private void WaitTimerSyncServerRpc(float timerValue) { syncedWaitTimer = timerValue; WaitTimerSyncClientRpc(timerValue); } [ClientRpc] private void WaitTimerSyncClientRpc(float timerValue) { syncedWaitTimer = timerValue; } }