Decompiled source of LongerCodes v1.0.0

LongerCodes.dll

Decompiled 3 months ago
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Logging;
using BepInEx.Unity.IL2CPP;
using HarmonyLib;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using Il2CppSystem;
using LevelGeneration;
using Localization;
using LogUtils;
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(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("LongerCodes")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("LongerCodes")]
[assembly: AssemblyTitle("LongerCodes")]
[assembly: AssemblyVersion("1.0.0.0")]
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;
		}
	}
}
namespace LongerCodes
{
	[BepInPlugin("com.Brandont.LongerCodes", "LongerCodes", "1.0.0")]
	public class Loader : BasePlugin
	{
		public const string MODNAME = "LongerCodes";

		public const string AUTHOR = "Brandont";

		public const string GUID = "com.Brandont.LongerCodes";

		public const string VERSION = "1.0.0";

		public static ManualLogSource Logger;

		public override void Load()
		{
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Expected O, but got Unknown
			Logger = ((BasePlugin)this).Log;
			((BasePlugin)this).Log.LogMessage((object)"Loading LongerCodes");
			Harmony val = new Harmony("LongerCodes");
			val.PatchAll(typeof(SerialGeneratorPatch));
			((BasePlugin)this).Log.LogMessage((object)"Loaded LongerCodes");
		}
	}
	internal class SerialGeneratorPatch
	{
		public static LocalizedText StringToLocalized(string stringConvert)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Expected O, but got Unknown
			return new LocalizedText
			{
				Id = 0u,
				UntranslatedText = stringConvert
			};
		}

		[HarmonyPatch(typeof(TerminalUplinkPuzzle), "GetCodesString")]
		[HarmonyPrefix]
		private static bool ReturnNewString(ref string __result, TerminalUplinkPuzzleRound round, bool newLine = false)
		{
			string text = "\n";
			for (int i = 0; i < ((Il2CppArrayBase<string>)(object)round.Codes).Length; i++)
			{
				text = text + "<color=orange>" + ((Il2CppArrayBase<string>)(object)round.Prefixes)[i] + "</color>:" + ((Il2CppArrayBase<string>)(object)round.Codes)[i];
				if (i < ((Il2CppArrayBase<string>)(object)round.Codes).Length - 1)
				{
					text = (((i + 1) % 3 == 0) ? (text += "\n") : (text += " | "));
				}
			}
			__result = text;
			return false;
		}

		[HarmonyPatch(typeof(SerialGenerator), "Setup")]
		[HarmonyPrefix]
		private static void OverrideSerialGenerator()
		{
			SerialGenerator.m_codeWordPrefixes = Il2CppStringArray.op_Implicit(new string[84]
			{
				"A-01", "A-02", "A-03", "A-04", "A-05", "A-06", "A-07", "A-08", "A-09", "A-10",
				"A-11", "A-12", "B-01", "B-02", "B-03", "B-04", "B-05", "B-06", "B-07", "B-08",
				"B-09", "B-10", "B-11", "B-12", "C-01", "C-02", "C-03", "C-04", "C-05", "C-06",
				"C-07", "C-08", "C-09", "C-10", "C-11", "C-12", "W-01", "W-02", "W-03", "W-04",
				"W-05", "W-06", "W-07", "W-08", "W-09", "W-10", "W-11", "W-12", "X-01", "X-02",
				"X-03", "X-04", "X-05", "X-06", "X-07", "X-08", "X-09", "X-10", "X-11", "X-12",
				"Y-01", "Y-02", "Y-03", "Y-04", "Y-05", "Y-06", "Y-07", "Y-08", "Y-09", "Y-10",
				"Y-11", "Y-12", "Z-01", "Z-02", "Z-03", "Z-04", "Z-05", "Z-06", "Z-07", "Z-08",
				"Z-09", "Z-10", "Z-11", "Z-12"
			});
			SerialGenerator.m_codeWords = Il2CppStringArray.op_Implicit(new string[240]
			{
				"Abacus", "Abject", "Ablaze", "Abroad", "Abrupt", "Absorb", "Abused", "Accept", "Access", "Accuse",
				"Admire", "Agreed", "Alarms", "Albeit", "Alerts", "Aligns", "Beacon", "Beaker", "Beamed", "Beaten",
				"Beauty", "Bedlam", "Before", "Behind", "Belfry", "Bended", "Berate", "Beside", "Bestir", "Betide",
				"Bigger", "Binged", "Binned", "Bisect", "Bitten", "Bladed", "Blamed", "Blazed", "Blonde", "Boated",
				"Bodily", "Boiled", "Bolted", "Borrow", "Bouncy", "Choice", "Choose", "Chosen", "Church", "Circle",
				"Client", "Closed", "Closer", "Coffee", "Column", "Combat", "Coming", "Common", "Desert", "Design",
				"Desire", "Detail", "Detect", "Device", "Differ", "Dinner", "Direct", "Eighth", "Either", "Eleven",
				"Emerge", "Empire", "Employ", "Enable", "Ending", "Energy", "Engage", "Engine", "Enough", "Ensure",
				"Entire", "Entity", "Finger", "Finish", "Fiscal", "Flight", "Flying", "Follow", "Forced", "Forest",
				"Forget", "Formal", "Format", "Former", "Foster", "Fought", "Glowed", "Gluten", "Goggle", "Gossip",
				"Graded", "Grains", "Grassy", "Grater", "Gravel", "Grease", "Greedy", "Groove", "Grudge", "Guided",
				"Guitar", "Gunner", "Gurgle", "Gabber", "Harass", "Hardly", "Harmed", "Hazard", "Heated", "Heaven",
				"Herbal", "Hereby", "Heroes", "Herpes", "Hinder", "Hinged", "Hissed", "Hoarse", "Instep", "Inward",
				"Indent", "Indium", "Iodize", "Infant", "Influx", "Jersey", "Jetsam", "Jigsaw", "Jingle", "Jogged",
				"Joiner", "Joking", "Jumble", "Jumble", "Jumped", "Junker", "Leader", "League", "Leaves", "Legacy",
				"Length", "Lesson", "Letter", "Lights", "Likely", "Linked", "Liquid", "Listen", "Little", "Medium",
				"Member", "Memory", "Mental", "Merely", "Merger", "Method", "Middle", "Miller", "Mining", "Minute",
				"Mirror", "Mobile", "Narrow", "Nation", "Native", "Nature", "Nearby", "Nearly", "Nights", "Nobody",
				"Normal", "Notice", "Notion", "Number", "Packed", "Palace", "Parent", "Partly", "Patent", "People",
				"Period", "Permit", "Person", "Phrase", "Picked", "Planet", "Player", "Raised", "Random", "Rarely",
				"Rather", "Rating", "Reader", "Really", "Reason", "Recall", "Recent", "Sexual", "Should", "Signal",
				"Signed", "Silent", "Silver", "Simple", "Simply", "Single", "Sister", "Slight", "Smooth", "Theory",
				"Thirty", "Though", "Threat", "Thrown", "Ticket", "Timely", "Timing", "Tissue", "Toward", "Unique",
				"Useful", "Vacant", "Vacuum", "Vigour", "Walker", "Wealth", "Weekly", "Weight", "Winner", "Winter"
			});
		}

		[HarmonyPatch(typeof(SerialGenerator), "Setup")]
		[HarmonyPostfix]
		private static void IPV6Uplinks()
		{
			SerialGenerator.m_ips = Il2CppStringArray.op_Implicit(new string[99]);
			for (int i = 0; i < ((Il2CppArrayBase<string>)(object)SerialGenerator.m_ips).Length; i++)
			{
				int num = 2001;
				string text = ReturnRandomChar().ToString() + ReturnRandomChar() + Builder.SessionSeedRandom.Range(1, 9, "NO_TAG");
				string text2 = Builder.SessionSeedRandom.Range(10, 99, "NO_TAG").ToString() + ReturnRandomChar() + Builder.SessionSeedRandom.Range(1, 9, "NO_TAG");
				string text3 = Builder.SessionSeedRandom.Range(10, 99, "NO_TAG").ToString() + ReturnRandomChar() + ReturnRandomChar();
				string text4 = ReturnRandomChar().ToString() + Builder.SessionSeedRandom.Range(10, 99, "NO_TAG");
				((Il2CppArrayBase<string>)(object)SerialGenerator.m_ips)[i] = num + ":0:" + text + ":" + text2 + ":" + text3 + ":" + text4;
			}
		}

		[HarmonyPatch(typeof(LG_ComputerTerminalCommandInterpreter), "TerminalCorruptedUplinkConnect")]
		[HarmonyPrefix]
		private static bool NoUpperCase(LG_ComputerTerminalCommandInterpreter __instance, string param1, string param2)
		{
			if ((Object)(object)__instance.m_terminal.CorruptedUplinkReceiver == (Object)null)
			{
				DebugLog.LogPrefixError((Object)(object)__instance, "TerminalCorruptedUplinkConnect() critical failure because terminal does not have a CorruptedUplinkReceiver.");
				return false;
			}
			if (LG_ComputerTerminalManager.OngoingUplinkConnectionTerminalId != 0 && LG_ComputerTerminalManager.OngoingUplinkConnectionTerminalId != __instance.m_terminal.SyncID)
			{
				__instance.AddOngoingUplinkOutput();
				return false;
			}
			LG_ComputerTerminalManager.OngoingUplinkConnectionTerminalId = __instance.m_terminal.SyncID;
			Debug.Log(Object.op_Implicit("TerminalCorruptedUplinkConnect, param1: " + param1 + " TerminalUplink: " + ((Object)__instance.m_terminal.UplinkPuzzle).ToString()));
			if (param1 == __instance.m_terminal.UplinkPuzzle.TerminalUplinkIP)
			{
				if (__instance.m_terminal.CorruptedUplinkReceiver.m_command.HasRegisteredCommand((TERM_Command)27))
				{
					__instance.AddUplinkCorruptedOutput();
				}
				else
				{
					__instance.AddUplinkCorruptedOutput();
					__instance.AddOutput("", true);
					__instance.AddOutput((TerminalLineType)4, "Sending connection request to " + __instance.m_terminal.CorruptedUplinkReceiver.PublicName, 3f, (TerminalSoundType)0, (TerminalSoundType)0);
					__instance.AddOutput((TerminalLineType)0, "Connection request sent. Waiting for confirmation.", 0.6f, (TerminalSoundType)0, (TerminalSoundType)0);
					__instance.AddOutput("", true);
					__instance.AddOutput((TerminalLineType)0, "Please <color=green>'CONFIRM'</color> connection on " + __instance.m_terminal.CorruptedUplinkReceiver.PublicName, 0.8f, (TerminalSoundType)0, (TerminalSoundType)0);
					__instance.m_terminal.CorruptedUplinkReceiver.m_command.AddCommand((TERM_Command)27, "CONFIRM", StringToLocalized("Confirm an established Uplink connection with this terminal and another."), (TERM_CommandRule)2);
					__instance.m_terminal.CorruptedUplinkReceiver.m_command.AddOutput((TerminalLineType)0, "Connection request from " + __instance.m_terminal.PublicName + ". Please type <color=green>CONFIRM</color> to continue.", 0f, (TerminalSoundType)0, (TerminalSoundType)0);
				}
			}
			else
			{
				__instance.AddUplinkWrongAddressError(param1);
			}
			return false;
		}

		private static char ReturnRandomChar()
		{
			return Convert.ToChar(Builder.SessionSeedRandom.Range(97, 122, "NO_TAG"));
		}
	}
}