Decompiled source of REPORolesPLUS v1.0.1

R.E.P.O.RolesPlus.dll

Decompiled 2 days ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using Bobi;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using R.E.P.O.RolesPlus;
using R.E.P.O.RolesPlus.patches;
using UnityEngine;
using UnityEngine.SceneManagement;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("R.E.P.O. RolesPlus")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Piskotryasi")]
[assembly: AssemblyProduct("R.E.P.O. RolesPlus")]
[assembly: AssemblyCopyright("Copyright ©  2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("1400cf89-b246-4aa9-983d-84d939d983bb")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[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 R.E.P.O.RolesPlus
{
	public class ClassManager
	{
		private Random rnd = new Random();

		public int chosenRoleId;

		public string chosenRole;

		internal static ManualLogSource mls;

		public RepoRoles repoRoles = new RepoRoles();

		public readonly Harmony harmonyPatcher = new Harmony("patches.reporoles.mod");

		public List<string> roleList = new List<string> { "Runner", "Tank", "Gambler" };

		private float origMoveSpeed;

		private float origSprintSpeed;

		private float origCrouchSpeed;

		private float speedMultiplier;

		private int origPlayerHealth;

		private int origMaxPlayerHealth;

		private float origJumpForce;

		private float origMaxEnergy;

		private float origGrabStrength;

		private float origGrabRange;

		public ClassManager()
		{
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Expected O, but got Unknown
			if (mls == null)
			{
				mls = Logger.CreateLogSource("ClassManager");
			}
			origMoveSpeed = PlayerController.instance.MoveSpeed;
			origSprintSpeed = PlayerController.instance.SprintSpeed;
			origCrouchSpeed = PlayerController.instance.CrouchSpeed;
			speedMultiplier = 1.5f;
			origJumpForce = PlayerController.instance.JumpForce;
			origPlayerHealth = (int)AccessTools.Field(typeof(PlayerHealth), "health").GetValue(PlayerAvatar.instance.playerHealth);
			origMaxPlayerHealth = (int)AccessTools.Field(typeof(PlayerHealth), "maxHealth").GetValue(PlayerAvatar.instance.playerHealth);
			origMaxEnergy = PlayerController.instance.EnergyStart;
			origGrabStrength = PhysGrabber.instance.grabStrength;
			origGrabRange = PlayerAvatar.instance.physGrabber.grabRange;
		}

		public void rollRole(PlayerController __instance)
		{
			chosenRoleId = rnd.Next(1, 8);
			assignRole(chosenRoleId, __instance);
		}

		public void assignRole(int roleId, PlayerController __instance)
		{
			//IL_0266: Unknown result type (might be due to invalid IL or missing references)
			//IL_026b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0305: Unknown result type (might be due to invalid IL or missing references)
			//IL_030a: Unknown result type (might be due to invalid IL or missing references)
			//IL_033a: Unknown result type (might be due to invalid IL or missing references)
			//IL_033f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0423: Unknown result type (might be due to invalid IL or missing references)
			//IL_0428: Unknown result type (might be due to invalid IL or missing references)
			//IL_0458: Unknown result type (might be due to invalid IL or missing references)
			//IL_045d: Unknown result type (might be due to invalid IL or missing references)
			//IL_049b: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_04aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_04af: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a73: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a78: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aa8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0aad: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b26: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b2b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b5b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b60: Unknown result type (might be due to invalid IL or missing references)
			//IL_0bfe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c03: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c33: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c38: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c64: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c69: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c99: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c9e: Unknown result type (might be due to invalid IL or missing references)
			string text = SemiFunc.PlayerGetName(PlayerAvatar.instance);
			string key = SemiFunc.PlayerGetSteamID(PlayerAvatar.instance);
			int num = 0;
			int num2 = 0;
			int num3 = 0;
			int num4 = 0;
			int num5 = 0;
			if (StatsManager.instance.playerUpgradeHealth.TryGetValue(key, out var value))
			{
				num = value;
			}
			if (StatsManager.instance.playerUpgradeSpeed.TryGetValue(key, out var value2))
			{
				num2 = value2;
			}
			if (StatsManager.instance.playerUpgradeStamina.TryGetValue(key, out var value3))
			{
				num3 = value3;
			}
			if (StatsManager.instance.playerUpgradeStrength.TryGetValue(key, out var value4))
			{
				num4 = value4;
			}
			if (StatsManager.instance.playerUpgradeRange.TryGetValue(key, out var value5))
			{
				num5 = value5;
			}
			__instance.CrouchSpeed = origCrouchSpeed;
			__instance.MoveSpeed = origMoveSpeed;
			__instance.SprintSpeed = origSprintSpeed + (float)num2 * 1f;
			__instance.JumpForce = origJumpForce;
			__instance.EnergyStart = origMaxEnergy + (float)num3 * 10f;
			__instance.EnergyCurrent = origMaxEnergy + (float)num3 * 10f;
			PlayerAvatar.instance.physGrabber.grabStrength = origGrabStrength + (float)num4 * 0.2f;
			PlayerAvatar.instance.physGrabber.grabRange = origGrabRange + (float)num5 * 1f;
			AccessTools.Field(typeof(PlayerHealth), "maxHealth").SetValue(PlayerAvatar.instance.playerHealth, origMaxPlayerHealth + num * 20);
			if ((int)AccessTools.Field(typeof(PlayerHealth), "health").GetValue(PlayerAvatar.instance.playerHealth) > (int)AccessTools.Field(typeof(PlayerHealth), "maxHealth").GetValue(PlayerAvatar.instance.playerHealth))
			{
				AccessTools.Field(typeof(PlayerHealth), "health").SetValue(PlayerAvatar.instance.playerHealth, origMaxPlayerHealth + num * 20);
			}
			if (!SemiFunc.RunIsLevel() || SemiFunc.RunIsShop())
			{
				return;
			}
			guiManager.showGUI = true;
			if (roleId <= 0)
			{
				mls.LogWarning((object)"Unable to find RoleId! Please contact the mod developer.");
				return;
			}
			KeyCode value6 = RepoRoles.toggleKey.Value;
			switch (roleId)
			{
			case 1:
				mls.LogInfo((object)"Assigning role Runner.");
				__instance.CrouchSpeed = origCrouchSpeed * speedMultiplier;
				__instance.MoveSpeed = origMoveSpeed * speedMultiplier;
				__instance.SprintSpeed = origSprintSpeed * speedMultiplier + (float)num2 * 1f;
				RepoRoles.GUIinstance.text = "Runner";
				RepoRoles.GUIinstance.color = Color.yellow;
				RepoRoles.GUIinstance.descText = "You run much faster than everyone else!\nPress " + ((object)(KeyCode)(ref value6)).ToString() + " to continue suffer";
				RepoRoles.GUIinstance.descColor = Color.yellow;
				break;
			case 2:
				mls.LogInfo((object)"Assigning role Tank.");
				AccessTools.Field(typeof(PlayerHealth), "maxHealth").SetValue(PlayerAvatar.instance.playerHealth, (float)(origMaxPlayerHealth + num * 20) * 2.5f);
				AccessTools.Field(typeof(PlayerHealth), "health").SetValue(PlayerAvatar.instance.playerHealth, (float)(origPlayerHealth + num * 20) * 2.5f);
				__instance.CrouchSpeed = origCrouchSpeed * 0.9f;
				__instance.MoveSpeed = origMoveSpeed * 0.9f;
				__instance.SprintSpeed = (origSprintSpeed + (float)num2 * 1f) * 0.9f;
				RepoRoles.GUIinstance.text = "Tank";
				RepoRoles.GUIinstance.color = Color.gray;
				RepoRoles.GUIinstance.descText = "You walk slower but your hp is tripled!\nPress " + ((object)(KeyCode)(ref value6)).ToString() + " to continue suffer";
				RepoRoles.GUIinstance.descColor = Color.gray;
				break;
			case 3:
			{
				int num6 = rnd.Next(1, 8);
				mls.LogInfo((object)"Assigning role Gambler.");
				RepoRoles.GUIinstance.text = "Gambler";
				RepoRoles.GUIinstance.color = Color.magenta;
				RepoRoles.GUIinstance.descColor = Color.magenta;
				switch (num6)
				{
				case 1:
					mls.LogMessage((object)"You rolled effect combo 1 - Heavy Boy. You walk, crouch and run slower but you have more health!");
					__instance.CrouchSpeed = origCrouchSpeed * 0.8f;
					__instance.MoveSpeed = origMoveSpeed * 0.8f;
					__instance.SprintSpeed = (origSprintSpeed + (float)num2 * 1f) * 0.8f;
					AccessTools.Field(typeof(PlayerHealth), "maxHealth").SetValue(PlayerAvatar.instance.playerHealth, 150 + num * 20);
					AccessTools.Field(typeof(PlayerHealth), "health").SetValue(PlayerAvatar.instance.playerHealth, 150 + num * 20);
					RepoRoles.GUIinstance.descText = "Heavy Boy: You rolled random effects: You walk, crouch and run slower but you have more health!\nPress " + ((object)(KeyCode)(ref value6)).ToString() + " to continue suffer";
					break;
				case 2:
					mls.LogMessage((object)"You rolled effect combo 2 - Walker. You don\u00b4t jump as high but you walk, crouch and run faster!");
					__instance.JumpForce = origJumpForce - 5f;
					__instance.CrouchSpeed = origCrouchSpeed * 1.3f;
					__instance.MoveSpeed = origMoveSpeed * 1.3f;
					__instance.SprintSpeed = (origSprintSpeed + (float)num2 * 1f) * 1.3f;
					RepoRoles.GUIinstance.descText = "Walker: You rolled random effects: You don\u00b4t jump as high but you walk, crouch and run faster!\nPress " + ((object)(KeyCode)(ref value6)).ToString() + " to continue suffer";
					break;
				case 3:
					mls.LogMessage((object)"You rolled effect combo 3 - Strong Oldman. You have more stamina but you have less health.");
					__instance.EnergyStart = (origMaxEnergy + (float)num3 * 10f) * 2f;
					__instance.EnergyCurrent = (origMaxEnergy + (float)num3 * 10f) * 2f;
					AccessTools.Field(typeof(PlayerHealth), "maxHealth").SetValue(PlayerAvatar.instance.playerHealth, 70 + num * 20);
					AccessTools.Field(typeof(PlayerHealth), "health").SetValue(PlayerAvatar.instance.playerHealth, 70 + num * 20);
					RepoRoles.GUIinstance.descText = "Strong Oldman: You rolled random effects: You have more stamina but you have less health!\nPress " + ((object)(KeyCode)(ref value6)).ToString() + " to continue suffer";
					break;
				case 4:
					mls.LogMessage((object)"You rolled effect combo 4 - Powerlifter. You\u00b4re stronger but you have less stamina.");
					PhysGrabber.instance.grabStrength = (origGrabStrength + (float)num4 * 0.2f) * 1.4f;
					__instance.EnergyStart = origMaxEnergy - 20f + (float)num3 * 10f;
					__instance.EnergyCurrent = origMaxEnergy - 20f + (float)num3 * 10f;
					RepoRoles.GUIinstance.descText = "PowerLifter: You rolled random effects: You\u00b4re stronger but you have less stamina!\nPress " + ((object)(KeyCode)(ref value6)).ToString() + " to continue suffer";
					break;
				case 5:
					mls.LogMessage((object)"You rolled effect combo 5 - Telescopic. You\u00b4re not as strong but you have more reach.");
					PhysGrabber.instance.grabRange = (PlayerAvatar.instance.physGrabber.grabRange = (origGrabRange + (float)num5 * 1f) * 2f);
					PhysGrabber.instance.grabStrength = (origGrabStrength + (float)num4 * 0.2f) * 0.8f;
					RepoRoles.GUIinstance.descText = "Telescopic: You rolled random effects: You\u00b4re weaker but you have more reach!\nPress " + ((object)(KeyCode)(ref value6)).ToString() + " to continue suffer";
					break;
				case 6:
					mls.LogMessage((object)"You rolled effect combo 6 - Skinny. You have more stamina and speed but less health.");
					__instance.EnergyStart = (origMaxEnergy + (float)num3 * 10f) * 1.5f;
					__instance.EnergyCurrent = (origMaxEnergy + (float)num3 * 10f) * 1.5f;
					__instance.CrouchSpeed = origCrouchSpeed * 1.2f;
					__instance.MoveSpeed = origMoveSpeed * 1.2f;
					__instance.SprintSpeed = (origSprintSpeed + (float)num2 * 1f) * 1.2f;
					AccessTools.Field(typeof(PlayerHealth), "maxHealth").SetValue(PlayerAvatar.instance.playerHealth, 50 + num * 20);
					AccessTools.Field(typeof(PlayerHealth), "health").SetValue(PlayerAvatar.instance.playerHealth, 50 + num * 20);
					RepoRoles.GUIinstance.descText = "Skinny: You rolled random effects: You have more stamina and speed but less health!\nPress " + ((object)(KeyCode)(ref value6)).ToString() + " to continue suffer";
					break;
				case 7:
					mls.LogMessage((object)"You rolled effect combo 7 - Long Hand. You have more strength and reach but less stamina.");
					PhysGrabber.instance.grabStrength = (origGrabStrength + (float)num4 * 0.2f) * 1.6f;
					PhysGrabber.instance.grabRange = (PlayerAvatar.instance.physGrabber.grabRange = (origGrabRange + (float)num5 * 1f) * 2.5f);
					__instance.EnergyStart = origMaxEnergy - 40f + (float)num3 * 10f;
					__instance.EnergyCurrent = origMaxEnergy - 40f + (float)num3 * 10f;
					RepoRoles.GUIinstance.descText = "Long Hand - You rolled random effects: You have more strength and reach but less stamina!\nPress " + ((object)(KeyCode)(ref value6)).ToString() + " to continue suffer";
					break;
				}
				break;
			}
			case 4:
				mls.LogMessage((object)"Assigning role Strongman.");
				PlayerAvatar.instance.physGrabber.grabStrength = (origGrabStrength + (float)num4 * 0.2f) * 2f;
				RepoRoles.GUIinstance.text = "Strongman";
				RepoRoles.GUIinstance.color = Color.red;
				RepoRoles.GUIinstance.descText = "You\u00b4re incredibly strong!\nPress " + ((object)(KeyCode)(ref value6)).ToString() + " to continue suffer";
				RepoRoles.GUIinstance.descColor = Color.red;
				break;
			case 5:
				mls.LogMessage((object)"Assigning role Ranged Looter.");
				PlayerAvatar.instance.physGrabber.grabRange = (origGrabRange + (float)num5 * 1f) * 2.5f;
				PlayerAvatar.instance.physGrabber.grabStrength = (origGrabStrength + (float)num4 * 0.2f) * 1.2f;
				RepoRoles.GUIinstance.text = "Ranged Looter";
				RepoRoles.GUIinstance.color = Color.blue;
				RepoRoles.GUIinstance.descText = "You can reach objects from far away!\nPress " + ((object)(KeyCode)(ref value6)).ToString() + " to continue suffer";
				RepoRoles.GUIinstance.descColor = Color.blue;
				break;
			case 6:
				mls.LogMessage((object)"Assigning role Athletic.");
				PlayerAvatar.instance.physGrabber.grabStrength = (origGrabStrength + (float)num4 * 0.2f) * 1.3f;
				__instance.EnergyStart = origMaxEnergy + (float)num3 * 10f + 20f;
				__instance.EnergyCurrent = origMaxEnergy + (float)num3 * 10f + 20f;
				__instance.JumpForce = origJumpForce + 3f;
				RepoRoles.GUIinstance.text = "Athletic";
				RepoRoles.GUIinstance.color = Color.white;
				RepoRoles.GUIinstance.descText = "You have more stamina and strength and can jump higher!\nPress " + ((object)(KeyCode)(ref value6)).ToString() + " to continue suffer";
				RepoRoles.GUIinstance.descColor = Color.white;
				break;
			case 7:
				mls.LogMessage((object)"Assigning role LOSER.");
				RepoRoles.GUIinstance.text = "LOSER";
				RepoRoles.GUIinstance.color = Color.blue;
				RepoRoles.GUIinstance.descText = "You have... NOTHING ADDITIONAL!\nPress " + ((object)(KeyCode)(ref value6)).ToString() + " to continue suffer";
				RepoRoles.GUIinstance.descColor = Color.blue;
				break;
			}
		}
	}
	[HarmonyPatch(typeof(TruckScreenText))]
	internal static class Sender
	{
		private static bool hasRanOnce;

		private static ClassManager manager = new ClassManager();

		public static readonly Harmony harmonyPatcher = new Harmony("sender.reporoles.mod");

		[HarmonyPatch("ArrowPointAtGoalLogic")]
		[HarmonyPrefix]
		private static void PrefixMethod()
		{
			if (!hasRanOnce)
			{
				manager.rollRole(PlayerController.instance);
				Logger.CreateLogSource("ChatMsgMgr").LogInfo((object)"Successfully rolled role!");
				hasRanOnce = true;
			}
		}

		[HarmonyPatch("Start")]
		[HarmonyPrefix]
		private static void StartPrefix()
		{
			hasRanOnce = false;
		}
	}
}
namespace R.E.P.O.RolesPlus.patches
{
	public class guiManager : MonoBehaviour
	{
		public static bool showGUI = true;

		public GUIStyle style;

		public string text;

		public Color color = Color.white;

		public string descText;

		public Color descColor = Color.white;

		private void OnGUI()
		{
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Expected O, but got Unknown
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Expected O, but got Unknown
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			//IL_017e: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f5: Expected O, but got Unknown
			//IL_0219: Unknown result type (might be due to invalid IL or missing references)
			//IL_022f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0236: Expected O, but got Unknown
			//IL_023d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0269: Unknown result type (might be due to invalid IL or missing references)
			//IL_028d: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0323: Unknown result type (might be due to invalid IL or missing references)
			//IL_034a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0371: Unknown result type (might be due to invalid IL or missing references)
			//IL_0392: Unknown result type (might be due to invalid IL or missing references)
			if (SemiFunc.RunIsLevel() && !SemiFunc.RunIsShop() && showGUI)
			{
				float num = Screen.width / 2 - 100;
				float num2 = Screen.height / 2 - 35;
				GUIStyle val = new GUIStyle();
				val.fontSize = 40;
				val.fontStyle = (FontStyle)1;
				val.richText = true;
				val.normal.textColor = color;
				val.alignment = (TextAnchor)4;
				GUIStyle val2 = new GUIStyle(val);
				val2.normal.textColor = Color.black;
				val2.alignment = (TextAnchor)4;
				float num3 = 2f;
				GUI.Label(new Rect(num - num3, num2, 200f, 50f), text, val2);
				GUI.Label(new Rect(num + num3, num2, 200f, 50f), text, val2);
				GUI.Label(new Rect(num, num2 - num3, 200f, 50f), text, val2);
				GUI.Label(new Rect(num, num2 + num3, 200f, 50f), text, val2);
				GUI.Label(new Rect(num - num3, num2 - num3, 200f, 50f), text, val2);
				GUI.Label(new Rect(num - num3, num2 + num3, 200f, 50f), text, val2);
				GUI.Label(new Rect(num + num3, num2 - num3, 200f, 50f), text, val2);
				GUI.Label(new Rect(num + num3, num2 + num3, 200f, 50f), text, val2);
				GUI.Label(new Rect(num, num2, 200f, 50f), text, val);
				float num4 = Screen.width / 2 - 100;
				float num5 = Screen.height / 2 + 25;
				GUIStyle val3 = new GUIStyle();
				val3.fontSize = 30;
				val3.fontStyle = (FontStyle)1;
				val3.richText = true;
				val3.normal.textColor = color;
				val3.alignment = (TextAnchor)4;
				GUIStyle val4 = new GUIStyle(val3);
				val4.normal.textColor = Color.black;
				val4.alignment = (TextAnchor)4;
				float num6 = 2f;
				GUI.Label(new Rect(num4 - num6, num5, 200f, 50f), descText, val4);
				GUI.Label(new Rect(num4 + num6, num5, 200f, 50f), descText, val4);
				GUI.Label(new Rect(num4, num5 - num6, 200f, 50f), descText, val4);
				GUI.Label(new Rect(num4, num5 + num6, 200f, 50f), descText, val4);
				GUI.Label(new Rect(num4 - num6, num5 - num6, 200f, 50f), descText, val4);
				GUI.Label(new Rect(num4 - num6, num5 + num6, 200f, 50f), descText, val4);
				GUI.Label(new Rect(num4 + num6, num5 - num6, 200f, 50f), descText, val4);
				GUI.Label(new Rect(num4 + num6, num5 + num6, 200f, 50f), descText, val4);
				GUI.Label(new Rect(num4, num5, 200f, 50f), descText, val3);
			}
		}

		private void Update()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			if (Input.GetKeyDown(RepoRoles.toggleKey.Value))
			{
				showGUI = !showGUI;
			}
		}
	}
}
namespace Bobi
{
	[BepInPlugin("reporoles.mod", "RepoRolesPlus", "1.0.1")]
	public class RepoRoles : BaseUnityPlugin
	{
		public const string pluginGuid = "reporoles.mod";

		public const string pluginName = "RepoRolesPlus";

		public const string pluginVersion = "1.0.1";

		public readonly Harmony harmony = new Harmony("reporoles.mod");

		public static RepoRoles Instance;

		internal ManualLogSource mls;

		public static Font newFont;

		public static guiManager GUIinstance;

		public static ConfigEntry<KeyCode> toggleKey;

		public ConfigDefinition def = new ConfigDefinition("GUI", "GUI Toggle Key");

		private void Awake()
		{
			mls = Logger.CreateLogSource("reporoles.mod");
			if ((Object)(object)Instance == (Object)null)
			{
				Instance = this;
			}
			harmony.PatchAll(typeof(RepoRoles));
			harmony.PatchAll(typeof(Sender));
			mls.LogInfo((object)"Init");
			SceneManager.sceneLoaded += delegate
			{
				//IL_0011: Unknown result type (might be due to invalid IL or missing references)
				//IL_0017: Expected O, but got Unknown
				//IL_0036: Unknown result type (might be due to invalid IL or missing references)
				//IL_003b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0041: Unknown result type (might be due to invalid IL or missing references)
				//IL_004b: Expected O, but got Unknown
				if ((Object)(object)GUIinstance == (Object)null)
				{
					GameObject val = new GameObject();
					GUIinstance = val.AddComponent<guiManager>();
					GUIinstance.text = "";
					GUIinstance.color = Color.cyan;
					Object.DontDestroyOnLoad((Object)val);
				}
			};
			toggleKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>(def, (KeyCode)114, (ConfigDescription)null);
		}
	}
}