Decompiled source of CraniusHunt v1.1.0

BepInEx/plugins/CraniusHunt.dll

Decompiled 3 weeks ago
using System;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
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.Logging;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyCompany("CraniusHunt")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("0.0.0.0")]
[assembly: AssemblyInformationalVersion("0.0.0-alpha.0.3+fefc36594d7ece82fdf9840a22830b403f478945")]
[assembly: AssemblyProduct("CraniusHunt")]
[assembly: AssemblyTitle("CraniusHunt")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.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;
		}
	}
}
[BepInPlugin("sparroh.craniushunt", "CraniusHunt", "1.1.0")]
public class SparrohPlugin : BaseUnityPlugin
{
	public const string PluginGUID = "sparroh.craniushunt";

	public const string PluginName = "CraniusHunt";

	public const string PluginVersion = "1.1.0";

	public static ManualLogSource Logger;

	private void Awake()
	{
		//IL_0010: Unknown result type (might be due to invalid IL or missing references)
		Logger = ((BaseUnityPlugin)this).Logger;
		try
		{
			new Harmony("sparroh.craniushunt").PatchAll(typeof(MissionSelectWindowInitPatch));
			Logger.LogInfo((object)"CraniusHunt loaded successfully.");
		}
		catch (Exception arg)
		{
			Logger.LogError((object)string.Format("Failed to initialize {0}: {1}", "CraniusHunt", arg));
		}
	}
}
public class CraniusMission : FlatTundraMission
{
	public override bool OverrideScene(out SceneData scene, WorldRegion region, int seed)
	{
		//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)
		scene = new SceneData("Tundra1Flat", (string)null);
		return true;
	}

	public override void ModifyTeamRevives(ref int revives)
	{
		revives = 0;
	}

	public override bool GetResetDateTime(out long unixTime)
	{
		unixTime = 0L;
		return false;
	}

	public override bool CanShowInMissionSelect(out bool showLocked, out string lockedMessage)
	{
		showLocked = false;
		lockedMessage = null;
		return true;
	}
}
[HarmonyPatch(typeof(MissionSelectWindow), "Awake")]
public class MissionSelectWindowInitPatch
{
	public static CraniusMission craniusMission;

	[HarmonyPostfix]
	public static void Postfix(MissionSelectWindow __instance)
	{
		//IL_0185: Unknown result type (might be due to invalid IL or missing references)
		//IL_018a: Unknown result type (might be due to invalid IL or missing references)
		try
		{
			Mission val = Global.Instance.Missions[0];
			SparrohPlugin.Logger.LogInfo((object)"CraniusHunt: Listing all regions and their scenes:");
			WorldRegion[] regions = Global.Instance.Regions;
			foreach (WorldRegion val2 in regions)
			{
				string text = string.Join(", ", val2.Scenes.Select((SceneData s) => s.scene));
				SparrohPlugin.Logger.LogInfo((object)("CraniusHunt: Region " + val2.NameID + " (" + val2.RegionName + ") has scenes: " + text));
			}
			craniusMission = ScriptableObject.CreateInstance<CraniusMission>();
			FieldInfo[] fields = typeof(Mission).GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
			foreach (FieldInfo fieldInfo in fields)
			{
				fieldInfo.SetValue(craniusMission, fieldInfo.GetValue(val));
			}
			FieldInfo field = typeof(Mission).GetField("_missionName", BindingFlags.Instance | BindingFlags.NonPublic);
			if (field != null)
			{
				field.SetValue(craniusMission, "Cranius Hunt");
			}
			FieldInfo field2 = typeof(Mission).GetField("_description", BindingFlags.Instance | BindingFlags.NonPublic);
			if (field2 != null)
			{
				field2.SetValue(craniusMission, "Hunt down the secret boss Cranius!");
			}
			((Mission)craniusMission).MissionIcon = val.MissionIcon;
			((Mission)craniusMission).MissionColor = Color.magenta;
			((Mission)craniusMission).ShowInReplayMenu = false;
			((Mission)craniusMission).Selectable = true;
			Mission[] missions = Global.Instance.Missions;
			bool flag = false;
			Mission[] array = missions;
			for (int i = 0; i < array.Length; i++)
			{
				if (array[i] is CraniusMission)
				{
					flag = true;
					break;
				}
			}
			if (!flag)
			{
				Mission[] array2 = (Mission[])(object)new Mission[missions.Length + 1];
				Array.Copy(missions, array2, missions.Length);
				array2[missions.Length] = (Mission)(object)craniusMission;
				Global.Instance.Missions = array2;
			}
			if (PlayerData.Instance != null && PlayerData.Instance.GetFlag("cranius") == 0)
			{
				PlayerData.Instance.SetFlag("cranius", 1);
			}
			if (PlayerData.Instance.GetFlag("cranius") != 1)
			{
				PlayerData.Instance.SetFlag("cranius", 1);
			}
		}
		catch (Exception arg)
		{
			SparrohPlugin.Logger.LogError((object)$"Error in MissionSelectWindowInitPatch: {arg}");
		}
	}
}
[CompilerGenerated]
[ExcludeFromCodeCoverage]
internal static class GitVersionInformation
{
	public const string AssemblySemFileVer = "0.0.1.0";

	public const string AssemblySemVer = "0.0.1.0";

	public const string BranchName = "master";

	public const string BuildMetaData = "";

	public const string CommitDate = "2025-12-26";

	public const string CommitsSinceVersionSource = "4";

	public const string EscapedBranchName = "master";

	public const string FullBuildMetaData = "Branch.master.Sha.fefc36594d7ece82fdf9840a22830b403f478945";

	public const string FullSemVer = "0.0.1-4";

	public const string InformationalVersion = "0.0.1-4+Branch.master.Sha.fefc36594d7ece82fdf9840a22830b403f478945";

	public const string Major = "0";

	public const string MajorMinorPatch = "0.0.1";

	public const string Minor = "0";

	public const string Patch = "1";

	public const string PreReleaseLabel = "";

	public const string PreReleaseLabelWithDash = "";

	public const string PreReleaseNumber = "4";

	public const string PreReleaseTag = "4";

	public const string PreReleaseTagWithDash = "-4";

	public const string SemVer = "0.0.1-4";

	public const string Sha = "fefc36594d7ece82fdf9840a22830b403f478945";

	public const string ShortSha = "fefc365";

	public const string UncommittedChanges = "9";

	public const string VersionSourceSha = "";

	public const string WeightedPreReleaseNumber = "55004";
}
namespace CraniusHunt
{
	public static class MyPluginInfo
	{
		public const string PLUGIN_GUID = "CraniusHunt";

		public const string PLUGIN_NAME = "CraniusHunt";

		public const string PLUGIN_VERSION = "1.0.0";
	}
}
namespace System.Runtime.CompilerServices
{
	[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
	internal sealed class IgnoresAccessChecksToAttribute : Attribute
	{
		public IgnoresAccessChecksToAttribute(string assemblyName)
		{
		}
	}
}