Decompiled source of Better Terminal Scanner v1.0.3

BetterTerminalScanner.dll

Decompiled 2 weeks ago
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("BetterTerminalScanner")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BetterTerminalScanner")]
[assembly: AssemblyCopyright("Copyright ©  2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("8a85892c-c96c-4b28-b010-b5415a0f21cb")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace BetterTerminalScanner;

[BepInPlugin("com.chris.scrap.terminal", "Scrap Terminal", "1.0.3")]
public class Plugin : BaseUnityPlugin
{
	private const string GUID = "com.chris.scrap.terminal";

	private const string NAME = "Scrap Terminal";

	private const string VERSION = "1.0.3";

	internal static ManualLogSource mls;

	internal static Harmony harmony = new Harmony("com.chris.scrap.terminal");

	private void Awake()
	{
		mls = ((BaseUnityPlugin)this).Logger;
		harmony.PatchAll(typeof(TerminalPatch));
		mls.LogInfo((object)"Loaded succesfully");
	}
}
[HarmonyPatch(typeof(Terminal))]
internal class TerminalPatch
{
	[HarmonyPatch("TextPostProcess")]
	[HarmonyPrefix]
	private static bool TextPostProcessPrefix(ref string modifiedDisplayText, TerminalNode node, ref string __result, Terminal __instance)
	{
		string text = modifiedDisplayText.Trim();
		if (text.Contains("[scanForItems]"))
		{
			__result = Utilities.ScanDisplayText();
			return false;
		}
		return true;
	}
}
internal class Utilities
{
	internal static bool ShouldListItem(GrabbableObject item)
	{
		if (!item.itemProperties.isScrap)
		{
			return false;
		}
		if (item.isInShipRoom || item.isInElevator)
		{
			return false;
		}
		StunGrenadeItem val = (StunGrenadeItem)(object)((item is StunGrenadeItem) ? item : null);
		if (val != null)
		{
			return !val.hasExploded;
		}
		return true;
	}

	internal static string ScanDisplayText()
	{
		string text = "";
		int num = 0;
		GrabbableObject[] source = Object.FindObjectsOfType<GrabbableObject>();
		GrabbableObject[] array = (from obj in source
			where ShouldListItem(obj)
			orderby obj.itemProperties.itemName
			select obj).ToArray();
		if (array.Length == 0)
		{
			return "\n\n\nNo objects were found.\n\n";
		}
		GrabbableObject[] array2 = array;
		foreach (GrabbableObject val in array2)
		{
			text += $"\n* {val.itemProperties.itemName} // ${val.scrapValue}";
			num += val.scrapValue;
		}
		return $"\n\n\nThere are {array.Length} objects outside the ship, totalling a value of ${num}.\n{text}\n\n";
	}
}