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 REPORoles v1.3.5
R.E.P.O.Roles.dll
Decompiled 2 years agousing System; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using Bobi; using HarmonyLib; using R.E.P.O.Roles; using R.E.P.O.Roles.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. Roles")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("R.E.P.O. Roles")] [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: AssemblyVersion("1.0.0.0")] namespace R.E.P.O.Roles { [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; } } 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"); 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 = PhysGrabber.instance.grabRange; } public void rollRole(PlayerController __instance) { chosenRoleId = rnd.Next(1, 8); assignRole(chosenRoleId, __instance); } public void assignRole(int roleId, PlayerController __instance) { //IL_0331: Unknown result type (might be due to invalid IL or missing references) //IL_0336: 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_034f: Unknown result type (might be due to invalid IL or missing references) //IL_0381: Unknown result type (might be due to invalid IL or missing references) //IL_0386: Unknown result type (might be due to invalid IL or missing references) //IL_04a4: Unknown result type (might be due to invalid IL or missing references) //IL_04a9: Unknown result type (might be due to invalid IL or missing references) //IL_04bd: Unknown result type (might be due to invalid IL or missing references) //IL_04c2: Unknown result type (might be due to invalid IL or missing references) //IL_04e5: Unknown result type (might be due to invalid IL or missing references) //IL_04ea: Unknown result type (might be due to invalid IL or missing references) //IL_055e: Unknown result type (might be due to invalid IL or missing references) //IL_0563: Unknown result type (might be due to invalid IL or missing references) //IL_057c: Unknown result type (might be due to invalid IL or missing references) //IL_0581: Unknown result type (might be due to invalid IL or missing references) //IL_0a2d: Unknown result type (might be due to invalid IL or missing references) //IL_0a32: Unknown result type (might be due to invalid IL or missing references) //IL_0a46: Unknown result type (might be due to invalid IL or missing references) //IL_0a4b: Unknown result type (might be due to invalid IL or missing references) //IL_0a7d: Unknown result type (might be due to invalid IL or missing references) //IL_0a82: Unknown result type (might be due to invalid IL or missing references) //IL_0659: Unknown result type (might be due to invalid IL or missing references) //IL_065e: Unknown result type (might be due to invalid IL or missing references) //IL_0b27: Unknown result type (might be due to invalid IL or missing references) //IL_0b2c: Unknown result type (might be due to invalid IL or missing references) //IL_0b40: Unknown result type (might be due to invalid IL or missing references) //IL_0b45: Unknown result type (might be due to invalid IL or missing references) //IL_0b77: Unknown result type (might be due to invalid IL or missing references) //IL_0b7c: Unknown result type (might be due to invalid IL or missing references) //IL_0701: Unknown result type (might be due to invalid IL or missing references) //IL_0706: Unknown result type (might be due to invalid IL or missing references) //IL_0c3c: Unknown result type (might be due to invalid IL or missing references) //IL_0c41: Unknown result type (might be due to invalid IL or missing references) //IL_0c55: Unknown result type (might be due to invalid IL or missing references) //IL_0c5a: Unknown result type (might be due to invalid IL or missing references) //IL_0c7d: Unknown result type (might be due to invalid IL or missing references) //IL_0c82: Unknown result type (might be due to invalid IL or missing references) //IL_07f0: Unknown result type (might be due to invalid IL or missing references) //IL_07f5: Unknown result type (might be due to invalid IL or missing references) //IL_0d53: Unknown result type (might be due to invalid IL or missing references) //IL_0d58: Unknown result type (might be due to invalid IL or missing references) //IL_0d77: Unknown result type (might be due to invalid IL or missing references) //IL_0d7c: Unknown result type (might be due to invalid IL or missing references) //IL_0d9b: Unknown result type (might be due to invalid IL or missing references) //IL_0da0: Unknown result type (might be due to invalid IL or missing references) //IL_0dd6: Unknown result type (might be due to invalid IL or missing references) //IL_0ddb: Unknown result type (might be due to invalid IL or missing references) //IL_089f: Unknown result type (might be due to invalid IL or missing references) //IL_08a4: Unknown result type (might be due to invalid IL or missing references) //IL_0945: Unknown result type (might be due to invalid IL or missing references) //IL_094a: 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; PhysGrabber.instance.grabStrength = origGrabStrength + (float)num4 * 0.2f; PhysGrabber.instance.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; guiManager.isMage = false; if (roleId <= 0) { mls.LogWarning((object)"Unable to find RoleId! Please contact the mod developer."); return; } KeyCode value6; switch (roleId) { case 1: { mls.LogInfo((object)("Assigning role " + RepoRoles.customRoleNameRunner.Value + ".")); __instance.CrouchSpeed = origCrouchSpeed * speedMultiplier; __instance.MoveSpeed = origMoveSpeed * speedMultiplier; __instance.SprintSpeed = origSprintSpeed * speedMultiplier + (float)num2 * 1f; __instance.EnergyStart = (origMaxEnergy + (float)num3 * 10f) * 1.2f; __instance.EnergyCurrent = (origMaxEnergy + (float)num3 * 10f) * 1.2f; RepoRoles.GUIinstance.text = RepoRoles.customRoleNameRunner.Value; RepoRoles.GUIinstance.color = new Color(0.973f, 1f, 0.196f); guiManager gUIinstance11 = RepoRoles.GUIinstance; value6 = RepoRoles.toggleKey.Value; gUIinstance11.descText = "당신의 다리가 가벼워집니다, 스태미나 및 모든 속도 증가\n " + ((object)(KeyCode)(ref value6)).ToString() + " 키를 눌러서 계속"; RepoRoles.GUIinstance.descColor = new Color(0.973f, 1f, 0.196f); break; } case 2: { mls.LogInfo((object)("Assigning role " + RepoRoles.customRoleNameTank.Value + ".")); AccessTools.Field(typeof(PlayerHealth), "health").SetValue(PlayerAvatar.instance.playerHealth, 2 * (int)AccessTools.Field(typeof(PlayerHealth), "health").GetValue(PlayerAvatar.instance.playerHealth)); AccessTools.Field(typeof(PlayerHealth), "maxHealth").SetValue(PlayerAvatar.instance.playerHealth, (origMaxPlayerHealth + num * 20) * 2); __instance.CrouchSpeed = origCrouchSpeed * 0.9f; __instance.MoveSpeed = origMoveSpeed * 0.9f; __instance.SprintSpeed = (origSprintSpeed + (float)num2 * 1f) * 0.9f; RepoRoles.GUIinstance.text = RepoRoles.customRoleNameTank.Value; RepoRoles.GUIinstance.color = Color.gray; guiManager gUIinstance10 = RepoRoles.GUIinstance; value6 = RepoRoles.toggleKey.Value; gUIinstance10.descText = "당신의 등에 등껍질이 생깁니다, 모든 속도 감소 체력 2배 증가\n " + ((object)(KeyCode)(ref value6)).ToString() + " 키를 눌러서 계속"; RepoRoles.GUIinstance.descColor = Color.gray; break; } case 3: { int num6 = rnd.Next(1, 6); mls.LogInfo((object)("Assigning role " + RepoRoles.customRoleNameGambler.Value + ".")); RepoRoles.GUIinstance.text = RepoRoles.customRoleNameGambler.Value; RepoRoles.GUIinstance.color = new Color(0.576f, 0f, 0.831f); RepoRoles.GUIinstance.descColor = new Color(0.576f, 0f, 0.831f); switch (num6) { case 1: { mls.LogMessage((object)"You rolled effect combo 1. 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); guiManager gUIinstance9 = RepoRoles.GUIinstance; value6 = RepoRoles.toggleKey.Value; gUIinstance9.descText = "등껍질 속에 숨은 거북이 카드 선택, 모든 속도 감소 체력 소폭 증가\n " + ((object)(KeyCode)(ref value6)).ToString() + " 키를 눌러서 계속"; break; } case 2: { mls.LogMessage((object)"You rolled effect combo 2. 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; guiManager gUIinstance8 = RepoRoles.GUIinstance; value6 = RepoRoles.toggleKey.Value; gUIinstance8.descText = "도망가는 다람쥐 카드 선택, 점프력 감소 모든 속도 증가\n " + ((object)(KeyCode)(ref value6)).ToString() + " 키를 눌러서 계속"; break; } case 3: { mls.LogMessage((object)"You rolled effect combo 3. 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); guiManager gUIinstance7 = RepoRoles.GUIinstance; value6 = RepoRoles.toggleKey.Value; gUIinstance7.descText = "못생긴 낙타 카드 선택, 체력 감소 스태미나 증가\n " + ((object)(KeyCode)(ref value6)).ToString() + " 키를 눌러서 계속"; break; } case 4: { mls.LogMessage((object)"You rolled effect combo 4. 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; guiManager gUIinstance6 = RepoRoles.GUIinstance; value6 = RepoRoles.toggleKey.Value; gUIinstance6.descText = "이빨 빠진 호랑이 카드 선택, 힘 증가 스태미나 감소\n " + ((object)(KeyCode)(ref value6)).ToString() + " 키를 눌러서 계속"; break; } case 5: { mls.LogMessage((object)"You rolled effect combo 5. You\u00b4re not as strong but you have more reach."); PhysGrabber.instance.grabRange = (PhysGrabber.instance.grabRange = (origGrabRange + (float)num5 * 1f) * 2f); PhysGrabber.instance.grabStrength = (origGrabStrength + (float)num4 * 0.2f) * 0.8f; guiManager gUIinstance5 = RepoRoles.GUIinstance; value6 = RepoRoles.toggleKey.Value; gUIinstance5.descText = "머리 긁는 원숭이 카드 선택, 힘 감소 그랩거리 증가\n " + ((object)(KeyCode)(ref value6)).ToString() + " 키를 눌러서 계속"; break; } } break; } case 4: { mls.LogMessage((object)("Assigning role " + RepoRoles.customRoleNameStrongman.Value + ".")); Debug.Log((object)("Strength before: " + PhysGrabber.instance.grabStrength)); PhysGrabber.instance.grabStrength = (origGrabStrength + (float)num4 * 0.2f) * 1.5f + 2f; Debug.Log((object)("Strength after: " + PhysGrabber.instance.grabStrength)); RepoRoles.GUIinstance.text = RepoRoles.customRoleNameStrongman.Value; RepoRoles.GUIinstance.color = new Color(0.761f, 0.055f, 0.055f); guiManager gUIinstance4 = RepoRoles.GUIinstance; value6 = RepoRoles.toggleKey.Value; gUIinstance4.descText = "이정도 쯤이야 가볍다 가벼워, 힘 증가\n " + ((object)(KeyCode)(ref value6)).ToString() + " 키를 눌러서 계속"; RepoRoles.GUIinstance.descColor = new Color(0.761f, 0.055f, 0.055f); break; } case 5: { mls.LogMessage((object)("Assigning role " + RepoRoles.customRoleNameRL.Value + ".")); PhysGrabber.instance.grabRange = (origGrabRange + (float)num5 * 1f) * 2.5f; PhysGrabber.instance.grabStrength = (origGrabStrength + (float)num4 * 0.2f) * 1.2f; RepoRoles.GUIinstance.text = RepoRoles.customRoleNameRL.Value; RepoRoles.GUIinstance.color = new Color(0.592f, 0.969f, 0.663f); guiManager gUIinstance3 = RepoRoles.GUIinstance; value6 = RepoRoles.toggleKey.Value; gUIinstance3.descText = "최씨! 여기야 여기 일 안해?,힘 소폭 증가 그랩 거리 대폭 증가\n " + ((object)(KeyCode)(ref value6)).ToString() + " 키를 눌러서 계속"; RepoRoles.GUIinstance.descColor = new Color(0.592f, 0.969f, 0.663f); break; } case 6: { mls.LogMessage((object)("Assigning role " + RepoRoles.customRoleNameAthletic.Value + ".")); PhysGrabber.instance.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 = RepoRoles.customRoleNameAthletic.Value; RepoRoles.GUIinstance.color = Color.white; guiManager gUIinstance2 = RepoRoles.GUIinstance; value6 = RepoRoles.toggleKey.Value; gUIinstance2.descText = "전장에서 단련된 헬다이버, 스태미나 힘 점프력 증가\n " + ((object)(KeyCode)(ref value6)).ToString() + " 키를 눌러서 계속"; RepoRoles.GUIinstance.descColor = Color.white; break; } case 7: { mls.LogMessage((object)("Assigning role " + RepoRoles.customRoleNameMage.Value + ".")); guiManager.aviableMana = 8; AccessTools.Field(typeof(PlayerHealth), "maxHealth").SetValue(PlayerAvatar.instance.playerHealth, 50 + num * 20); AccessTools.Field(typeof(PlayerHealth), "health").SetValue(PlayerAvatar.instance.playerHealth, 50 + num * 20); guiManager.isMage = true; RepoRoles.GUIinstance.text = RepoRoles.customRoleNameMage.Value; RepoRoles.GUIinstance.color = new Color(0f, 0.384f, 1f); guiManager gUIinstance = RepoRoles.GUIinstance; string[] obj = new string[5] { "당신은 주변의 마나를 느낍니다. 마나를 사용 할 수 있습니다.\n ", null, null, null, null }; value6 = RepoRoles.showSpellsKey.Value; obj[1] = ((object)(KeyCode)(ref value6)).ToString(); obj[2] = " 키를 눌러서 스펠 확인하기 "; value6 = RepoRoles.toggleKey.Value; obj[3] = ((object)(KeyCode)(ref value6)).ToString(); obj[4] = " 키를 눌러서 계속"; gUIinstance.descText = string.Concat(obj); RepoRoles.GUIinstance.descColor = new Color(0f, 0.384f, 1f); break; } } } } } namespace R.E.P.O.Roles.patches { public class guiManager : MonoBehaviour { public static bool showGUI = true; public static bool isMage = false; public static bool showSpells = false; public string text; public Color color = Color.white; public string descText; public Color descColor = Color.white; private Texture2D _backgroundTexture; private Texture2D _manaTexture; private static Font customFont; private static AssetBundle fontBundle; public static int aviableMana = 0; public int speedTicker = 0; public int manaTicks = 0; public bool speedActive; private float multiSpeed = 1.4f; private float crouchSpeedBefore; private float moveSpeedBefore; private float sprintSpeedBefore; private int overchargeMulti = 1; private bool isOvercharged = false; private int overchargeTicker = 0; private bool jumpActive = false; private float jumpOriginal; private int jumpTicker = 0; private int neededJumpTicker = 1800; private int neededSpeedTicker = 1800; private int manaUsageTicker = 0; private bool showManaUsage = false; private string manaUsageText = "Used x (- y Mana)"; public static AssetBundle LoadAssetBundle(string name) { Logger.CreateLogSource("AssetBundles").LogDebug((object)("Loading Asset Bundle: " + name)); AssetBundle val = null; string text = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), name); return AssetBundle.LoadFromFile(text); } public static Texture2D LoadBottleTextureFromFile() { AssetBundle val = LoadAssetBundle("assets"); Texture2D result = val.LoadAsset<Texture2D>("emptyBottle.png"); val.Unload(false); return result; } public static Texture2D LoadFullBottleTextureFromFile() { AssetBundle val = LoadAssetBundle("assets"); Texture2D result = val.LoadAsset<Texture2D>("filledBottle.png"); val.Unload(false); return result; } public static void loadFont() { if ((Object)(object)fontBundle == (Object)null) { fontBundle = LoadAssetBundle("assets"); customFont = fontBundle.LoadAsset<Font>("font.ttf"); } if ((Object)(object)fontBundle == (Object)null) { Logger.CreateLogSource("RepoRoles ERROR").LogError((object)"Missing Assets: Put the assets file next to the dll in your plugins folder. If this does not fix it contact us on our discord (see thunderstore description or README)"); } } private void Start() { _backgroundTexture = LoadBottleTextureFromFile(); _backgroundTexture.Apply(); _manaTexture = LoadFullBottleTextureFromFile(); _manaTexture.Apply(); } private void OnGUI() { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Expected O, but got Unknown //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Expected O, but got Unknown //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01eb: Unknown result type (might be due to invalid IL or missing references) //IL_0218: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Expected O, but got Unknown //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_0266: Unknown result type (might be due to invalid IL or missing references) //IL_026d: Expected O, but got Unknown //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_02ad: Unknown result type (might be due to invalid IL or missing references) //IL_02d1: Unknown result type (might be due to invalid IL or missing references) //IL_02f5: Unknown result type (might be due to invalid IL or missing references) //IL_0319: Unknown result type (might be due to invalid IL or missing references) //IL_0340: Unknown result type (might be due to invalid IL or missing references) //IL_0367: Unknown result type (might be due to invalid IL or missing references) //IL_038e: Unknown result type (might be due to invalid IL or missing references) //IL_03b5: Unknown result type (might be due to invalid IL or missing references) //IL_03d6: Unknown result type (might be due to invalid IL or missing references) //IL_043b: Unknown result type (might be due to invalid IL or missing references) //IL_0441: Expected O, but got Unknown //IL_0467: Unknown result type (might be due to invalid IL or missing references) //IL_046d: Expected O, but got Unknown //IL_04d1: Unknown result type (might be due to invalid IL or missing references) //IL_04d8: Expected O, but got Unknown //IL_050a: Unknown result type (might be due to invalid IL or missing references) //IL_052d: Unknown result type (might be due to invalid IL or missing references) //IL_0534: Expected O, but got Unknown //IL_053b: Unknown result type (might be due to invalid IL or missing references) //IL_0576: Unknown result type (might be due to invalid IL or missing references) //IL_059c: Unknown result type (might be due to invalid IL or missing references) //IL_05c2: Unknown result type (might be due to invalid IL or missing references) //IL_05e8: Unknown result type (might be due to invalid IL or missing references) //IL_0611: Unknown result type (might be due to invalid IL or missing references) //IL_063a: Unknown result type (might be due to invalid IL or missing references) //IL_0663: Unknown result type (might be due to invalid IL or missing references) //IL_068c: Unknown result type (might be due to invalid IL or missing references) //IL_06af: Unknown result type (might be due to invalid IL or missing references) //IL_06f9: Unknown result type (might be due to invalid IL or missing references) //IL_0720: Unknown result type (might be due to invalid IL or missing references) //IL_0741: Unknown result type (might be due to invalid IL or missing references) //IL_0768: Unknown result type (might be due to invalid IL or missing references) //IL_078f: Unknown result type (might be due to invalid IL or missing references) //IL_07b6: Unknown result type (might be due to invalid IL or missing references) //IL_07dd: Unknown result type (might be due to invalid IL or missing references) //IL_0804: Unknown result type (might be due to invalid IL or missing references) //IL_083d: Unknown result type (might be due to invalid IL or missing references) //IL_0877: Unknown result type (might be due to invalid IL or missing references) //IL_0a03: Unknown result type (might be due to invalid IL or missing references) //IL_0a0a: Expected O, but got Unknown //IL_0a3c: Unknown result type (might be due to invalid IL or missing references) //IL_0a5f: Unknown result type (might be due to invalid IL or missing references) //IL_0a66: Expected O, but got Unknown //IL_0a6d: Unknown result type (might be due to invalid IL or missing references) //IL_0aa4: Unknown result type (might be due to invalid IL or missing references) //IL_0aa9: Unknown result type (might be due to invalid IL or missing references) //IL_0ac8: Unknown result type (might be due to invalid IL or missing references) //IL_0acd: Unknown result type (might be due to invalid IL or missing references) //IL_0aec: Unknown result type (might be due to invalid IL or missing references) //IL_0af1: Unknown result type (might be due to invalid IL or missing references) //IL_0b10: Unknown result type (might be due to invalid IL or missing references) //IL_0b15: Unknown result type (might be due to invalid IL or missing references) //IL_0b35: Unknown result type (might be due to invalid IL or missing references) //IL_0b3a: Unknown result type (might be due to invalid IL or missing references) //IL_0b70: Unknown result type (might be due to invalid IL or missing references) //IL_0b8e: Unknown result type (might be due to invalid IL or missing references) //IL_0bac: Unknown result type (might be due to invalid IL or missing references) //IL_0bca: Unknown result type (might be due to invalid IL or missing references) //IL_0beb: Unknown result type (might be due to invalid IL or missing references) //IL_0c0c: Unknown result type (might be due to invalid IL or missing references) //IL_0c2d: Unknown result type (might be due to invalid IL or missing references) //IL_0c4e: 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_08ab: Unknown result type (might be due to invalid IL or missing references) //IL_08e5: Unknown result type (might be due to invalid IL or missing references) //IL_091f: Unknown result type (might be due to invalid IL or missing references) //IL_0959: Unknown result type (might be due to invalid IL or missing references) //IL_0993: Unknown result type (might be due to invalid IL or missing references) //IL_09cd: Unknown result type (might be due to invalid IL or missing references) float num = Screen.width / 2 - 100; float num2 = Screen.height / 2 - 60; loadFont(); if (SemiFunc.RunIsLevel() && !SemiFunc.RunIsShop() && showGUI) { GUIStyle val = new GUIStyle(); val.fontSize = 60; val.fontStyle = (FontStyle)1; val.richText = true; val.normal.textColor = color; val.alignment = (TextAnchor)4; val.font = customFont; GUIStyle val2 = new GUIStyle(val); val2.normal.textColor = Color.black; val2.alignment = (TextAnchor)4; val2.font = customFont; float num3 = 2f; GUI.Label(new Rect(num - num3, num2, 200f, 50f), this.text, val2); GUI.Label(new Rect(num + num3, num2, 200f, 50f), this.text, val2); GUI.Label(new Rect(num, num2 - num3, 200f, 50f), this.text, val2); GUI.Label(new Rect(num, num2 + num3, 200f, 50f), this.text, val2); GUI.Label(new Rect(num - num3, num2 - num3, 200f, 50f), this.text, val2); GUI.Label(new Rect(num - num3, num2 + num3, 200f, 50f), this.text, val2); GUI.Label(new Rect(num + num3, num2 - num3, 200f, 50f), this.text, val2); GUI.Label(new Rect(num + num3, num2 + num3, 200f, 50f), this.text, val2); GUI.Label(new Rect(num, num2, 200f, 50f), this.text, val); float num4 = Screen.width / 2 - 100; float num5 = Screen.height / 2 + 40; GUIStyle val3 = new GUIStyle(); val3.fontSize = 40; val3.fontStyle = (FontStyle)1; val3.richText = true; val3.normal.textColor = color; val3.alignment = (TextAnchor)4; val3.font = customFont; GUIStyle val4 = new GUIStyle(val3); val4.normal.textColor = Color.black; val4.alignment = (TextAnchor)4; val4.font = customFont; 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); } if (!isMage || !SemiFunc.RunIsLevel() || SemiFunc.RunIsShop() || (int)AccessTools.Field(typeof(PlayerHealth), "health").GetValue(PlayerAvatar.instance.playerHealth) <= 0) { return; } GUIStyle val5 = new GUIStyle(); val5.alignment = (TextAnchor)1; val5.normal.background = _manaTexture; val5.font = customFont; GUIStyle val6 = new GUIStyle(); val6.alignment = (TextAnchor)1; val6.normal.background = _backgroundTexture; val6.font = customFont; if (showManaUsage && SemiFunc.RunIsLevel() && !SemiFunc.RunIsShop() && isMage) { int num7 = Screen.width / 2 - 100; int num8 = Screen.height - 125; GUIStyle val7 = new GUIStyle(); val7.fontSize = 20; val7.fontStyle = (FontStyle)1; val7.richText = true; val7.normal.textColor = new Color(0f, 0.384f, 1f); val7.alignment = (TextAnchor)4; val7.font = customFont; GUIStyle val8 = new GUIStyle(val7); val8.normal.textColor = Color.black; val8.alignment = (TextAnchor)4; val8.font = customFont; float num9 = 1.5f; GUI.Label(new Rect((float)num7 - num9, (float)num8, 200f, 50f), manaUsageText, val8); GUI.Label(new Rect((float)num7 + num9, (float)num8, 200f, 50f), manaUsageText, val8); GUI.Label(new Rect((float)num7, (float)num8 - num9, 200f, 50f), manaUsageText, val8); GUI.Label(new Rect((float)num7, (float)num8 + num9, 200f, 50f), manaUsageText, val8); GUI.Label(new Rect((float)num7 - num9, (float)num8 - num9, 200f, 50f), manaUsageText, val8); GUI.Label(new Rect((float)num7 - num9, (float)num8 + num9, 200f, 50f), manaUsageText, val8); GUI.Label(new Rect((float)num7 + num9, (float)num8 - num9, 200f, 50f), manaUsageText, val8); GUI.Label(new Rect((float)num7 + num9, (float)num8 + num9, 200f, 50f), manaUsageText, val8); GUI.Label(new Rect((float)num7, (float)num8, 200f, 50f), manaUsageText, val7); } if (SemiFunc.RunIsLevel() && !SemiFunc.RunIsShop() && isMage) { GUI.Box(new Rect(num - 100f, 50f, 50f, 50f), GUIContent.none, val6); GUI.Box(new Rect(num - 50f, 50f, 50f, 50f), GUIContent.none, val6); GUI.Box(new Rect(num, 50f, 50f, 50f), GUIContent.none, val6); GUI.Box(new Rect(num + 50f, 50f, 50f, 50f), GUIContent.none, val6); GUI.Box(new Rect(num + 100f, 50f, 50f, 50f), GUIContent.none, val6); GUI.Box(new Rect(num + 150f, 50f, 50f, 50f), GUIContent.none, val6); GUI.Box(new Rect(num + 200f, 50f, 50f, 50f), GUIContent.none, val6); GUI.Box(new Rect(num + 250f, 50f, 50f, 50f), GUIContent.none, val6); if (aviableMana >= 1) { GUI.Box(new Rect(num - 100f, 50f, 50f, 50f), GUIContent.none, val5); } if (aviableMana >= 2) { GUI.Box(new Rect(num - 50f, 50f, 50f, 50f), GUIContent.none, val5); } if (aviableMana >= 3) { GUI.Box(new Rect(num, 50f, 50f, 50f), GUIContent.none, val5); } if (aviableMana >= 4) { GUI.Box(new Rect(num + 50f, 50f, 50f, 50f), GUIContent.none, val5); } if (aviableMana >= 5) { GUI.Box(new Rect(num + 100f, 50f, 50f, 50f), GUIContent.none, val5); } if (aviableMana >= 6) { GUI.Box(new Rect(num + 150f, 50f, 50f, 50f), GUIContent.none, val5); } if (aviableMana >= 7) { GUI.Box(new Rect(num + 200f, 50f, 50f, 50f), GUIContent.none, val5); } if (aviableMana >= 8) { GUI.Box(new Rect(num + 250f, 50f, 50f, 50f), GUIContent.none, val5); } } if (showSpells && SemiFunc.RunIsLevel() && !SemiFunc.RunIsShop()) { GUIStyle val9 = new GUIStyle(); val9.fontSize = 40; val9.fontStyle = (FontStyle)1; val9.richText = true; val9.normal.textColor = new Color(0f, 0.384f, 1f); val9.alignment = (TextAnchor)4; val9.font = customFont; GUIStyle val10 = new GUIStyle(val9); val10.normal.textColor = Color.black; val10.alignment = (TextAnchor)4; val10.font = customFont; string[] obj = new string[11] { "[", null, null, null, null, null, null, null, null, null, null }; KeyCode value = RepoRoles.healKey.Value; obj[1] = ((object)(KeyCode)(ref value)).ToString(); obj[2] = "] 본인 체력 5 를 회복 합니다. (1 마나)\n\n["; value = RepoRoles.staminaKey.Value; obj[3] = ((object)(KeyCode)(ref value)).ToString(); obj[4] = "] 본인 스태미나를 모두 회복합니다. (3 마나)\n\n["; value = RepoRoles.speedKey.Value; obj[5] = ((object)(KeyCode)(ref value)).ToString(); obj[6] = "] 30초 동안 빨라집니다. (2 마나)\n\n["; value = RepoRoles.overchargeKey.Value; obj[7] = ((object)(KeyCode)(ref value)).ToString(); obj[8] = "] 20초 동안 사용되는 주문의 효과를 높입니다 (3 마나)\n\n["; value = RepoRoles.jumpKey.Value; obj[9] = ((object)(KeyCode)(ref value)).ToString(); obj[10] = "] 30초동안 점프력을 강화합니다. (2 마나)"; string text = string.Concat(obj); float num10 = 2f; GUI.Label(new Rect(num - num10, num2, 200f, 50f), text, val10); GUI.Label(new Rect(num + num10, num2, 200f, 50f), text, val10); GUI.Label(new Rect(num, num2 - num10, 200f, 50f), text, val10); GUI.Label(new Rect(num, num2 + num10, 200f, 50f), text, val10); GUI.Label(new Rect(num - num10, num2 - num10, 200f, 50f), text, val10); GUI.Label(new Rect(num - num10, num2 + num10, 200f, 50f), text, val10); GUI.Label(new Rect(num + num10, num2 - num10, 200f, 50f), text, val10); GUI.Label(new Rect(num + num10, num2 + num10, 200f, 50f), text, val10); GUI.Label(new Rect(num, num2, 200f, 50f), text, val9); } } private void Update() { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_03b0: Unknown result type (might be due to invalid IL or missing references) //IL_041e: Unknown result type (might be due to invalid IL or missing references) //IL_04e0: Unknown result type (might be due to invalid IL or missing references) if (!SemiFunc.RunIsLevel()) { isMage = false; } if (Input.GetKeyDown(RepoRoles.toggleKey.Value)) { showGUI = !showGUI; } if ((int)AccessTools.Field(typeof(PlayerHealth), "health").GetValue(PlayerAvatar.instance.playerHealth) > 0 && isMage) { if (Input.GetKeyDown(RepoRoles.showSpellsKey.Value)) { showSpells = !showSpells; } if (Input.GetKeyDown(RepoRoles.healKey.Value)) { if ((int)AccessTools.Field(typeof(PlayerHealth), "health").GetValue(PlayerAvatar.instance.playerHealth) + 5 * overchargeMulti < (int)AccessTools.Field(typeof(PlayerHealth), "maxHealth").GetValue(PlayerAvatar.instance.playerHealth)) { if (aviableMana >= 1) { AccessTools.Field(typeof(PlayerHealth), "health").SetValue(PlayerAvatar.instance.playerHealth, (int)AccessTools.Field(typeof(PlayerHealth), "health").GetValue(PlayerAvatar.instance.playerHealth) + 5 * overchargeMulti); aviableMana--; showManaUsage = true; manaUsageTicker = 0; manaUsageText = "체력을 회복합니다. (-1 마나)"; } } else if ((int)AccessTools.Field(typeof(PlayerHealth), "health").GetValue(PlayerAvatar.instance.playerHealth) != (int)AccessTools.Field(typeof(PlayerHealth), "maxHealth").GetValue(PlayerAvatar.instance.playerHealth) && aviableMana >= 1) { AccessTools.Field(typeof(PlayerHealth), "health").SetValue(PlayerAvatar.instance.playerHealth, (int)AccessTools.Field(typeof(PlayerHealth), "maxHealth").GetValue(PlayerAvatar.instance.playerHealth)); aviableMana--; showManaUsage = true; manaUsageTicker = 0; manaUsageText = "체력을 회복합니다. (-1 마나)"; } } if (Input.GetKeyDown(RepoRoles.speedKey.Value) && !speedActive) { crouchSpeedBefore = PlayerController.instance.CrouchSpeed; moveSpeedBefore = PlayerController.instance.MoveSpeed; sprintSpeedBefore = PlayerController.instance.SprintSpeed; if (aviableMana >= 2) { speedTicker = 0; speedActive = true; PlayerController.instance.CrouchSpeed = crouchSpeedBefore * multiSpeed; PlayerController.instance.MoveSpeed = moveSpeedBefore * multiSpeed; PlayerController.instance.SprintSpeed = sprintSpeedBefore * multiSpeed; aviableMana -= 2; showManaUsage = true; manaUsageTicker = 0; manaUsageText = "속도를 강화합니다. (-2 마나)"; if (isOvercharged) { neededSpeedTicker = 3600; } else { neededSpeedTicker = 1800; } } } if (Input.GetKeyDown(RepoRoles.overchargeKey.Value) && !isOvercharged && aviableMana >= 3) { aviableMana -= 3; isOvercharged = true; overchargeMulti = 2; showManaUsage = true; manaUsageTicker = 0; manaUsageText = "스펠 강화를 사용합니다. (-3 마나)"; } if (Input.GetKeyDown(RepoRoles.jumpKey.Value) && !jumpActive) { jumpOriginal = PlayerController.instance.JumpForce; if (aviableMana >= 2) { jumpTicker = 0; jumpActive = true; PlayerController.instance.JumpForce = jumpOriginal + 3f; aviableMana -= 2; showManaUsage = true; manaUsageTicker = 0; manaUsageText = "점프력을 강화합니다. (-2 마나)"; if (isOvercharged) { neededJumpTicker = 3600; } else { neededJumpTicker = 1800; } } } if (Input.GetKeyDown(RepoRoles.staminaKey.Value) && PlayerController.instance.EnergyCurrent < PlayerController.instance.EnergyStart && aviableMana >= 3) { PlayerController.instance.EnergyCurrent = PlayerController.instance.EnergyStart; aviableMana -= 3; showManaUsage = true; manaUsageTicker = 0; manaUsageText = "모든 스태미나를 회복합니다. (-3 마나)"; } } if (speedActive && speedTicker >= neededSpeedTicker) { PlayerController.instance.CrouchSpeed = crouchSpeedBefore; PlayerController.instance.MoveSpeed = moveSpeedBefore; PlayerController.instance.SprintSpeed = sprintSpeedBefore; speedActive = false; } if (jumpActive && jumpTicker >= neededJumpTicker) { PlayerController.instance.JumpForce = jumpOriginal; jumpActive = false; } } private void FixedUpdate() { if (overchargeTicker >= 1200) { isOvercharged = false; overchargeMulti = 1; } if (isOvercharged) { overchargeTicker++; } manaUsageTicker++; speedTicker++; jumpTicker++; if (manaUsageTicker >= 420) { showManaUsage = false; } if (aviableMana < 8) { manaTicks++; } if (manaTicks >= 1000) { aviableMana++; manaTicks = 0; } } } } namespace Bobi { [BepInPlugin("reporoles.mod", "RepoRoles", "1.3.5")] public class RepoRoles : BaseUnityPlugin { public const string pluginGuid = "reporoles.mod"; public const string pluginName = "RepoRoles"; public const string pluginVersion = "1.3.5"; 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 static ConfigEntry<KeyCode> showSpellsKey; public static ConfigEntry<KeyCode> healKey; public static ConfigEntry<KeyCode> speedKey; public static ConfigEntry<KeyCode> overchargeKey; public static ConfigEntry<KeyCode> jumpKey; public static ConfigEntry<KeyCode> staminaKey; public static ConfigEntry<string> customRoleNameRunner; public static ConfigEntry<string> customRoleNameTank; public static ConfigEntry<string> customRoleNameGambler; public static ConfigEntry<string> customRoleNameStrongman; public static ConfigEntry<string> customRoleNameRL; public static ConfigEntry<string> customRoleNameAthletic; public static ConfigEntry<string> customRoleNameMage; public ConfigDefinition def = new ConfigDefinition("GUI", "GUI Toggle Key"); public ConfigDefinition customRoleNameRunnerDef = new ConfigDefinition("Role Names", "Runner Name"); public ConfigDefinition customRoleNameTankDef = new ConfigDefinition("Role Names", "Tank Name"); public ConfigDefinition customRoleNameGamblerDef = new ConfigDefinition("Role Names", "Gambler Name"); public ConfigDefinition customRoleNameStrongmanDef = new ConfigDefinition("Role Names", "Strongman Name"); public ConfigDefinition customRoleNameRLDef = new ConfigDefinition("Role Names", "Ranged Looter Name"); public ConfigDefinition customRoleNameAthleticDef = new ConfigDefinition("Role Names", "Athletic Name"); public ConfigDefinition customRoleNameMageDef = new ConfigDefinition("Role Names", "Mage Name"); public ConfigDefinition showSpellsDef = new ConfigDefinition("Mage", "Show Spells"); public ConfigDefinition healDef = new ConfigDefinition("Mage", "Healing Spell"); public ConfigDefinition speedDef = new ConfigDefinition("Mage", "Speed Spell"); public ConfigDefinition overchargeDef = new ConfigDefinition("Mage", "Overcharge Spell"); public ConfigDefinition jumpDef = new ConfigDefinition("Mage", "Jump Boost Spell"); public ConfigDefinition staminaDef = new ConfigDefinition("Mage", "Stamina Refill Spell"); 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) if (!Object.op_Implicit((Object)(object)GUIinstance)) { GameObject val = new GameObject(); GUIinstance = val.AddComponent<guiManager>(); GUIinstance.text = ""; GUIinstance.color = Color.cyan; Object.DontDestroyOnLoad((Object)(object)val); } }; toggleKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>(def, (KeyCode)114, (ConfigDescription)null); showSpellsKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>(showSpellsDef, (KeyCode)109, (ConfigDescription)null); healKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>(healDef, (KeyCode)104, (ConfigDescription)null); speedKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>(speedDef, (KeyCode)106, (ConfigDescription)null); overchargeKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>(overchargeDef, (KeyCode)111, (ConfigDescription)null); jumpKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>(jumpDef, (KeyCode)107, (ConfigDescription)null); staminaKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>(staminaDef, (KeyCode)110, (ConfigDescription)null); customRoleNameRunner = ((BaseUnityPlugin)this).Config.Bind<string>(customRoleNameRunnerDef, "Runner", (ConfigDescription)null); customRoleNameTank = ((BaseUnityPlugin)this).Config.Bind<string>(customRoleNameTankDef, "Tank", (ConfigDescription)null); customRoleNameGambler = ((BaseUnityPlugin)this).Config.Bind<string>(customRoleNameGamblerDef, "Gambler", (ConfigDescription)null); customRoleNameStrongman = ((BaseUnityPlugin)this).Config.Bind<string>(customRoleNameStrongmanDef, "Strongman", (ConfigDescription)null); customRoleNameRL = ((BaseUnityPlugin)this).Config.Bind<string>(customRoleNameRLDef, "Ranged Looter", (ConfigDescription)null); customRoleNameAthletic = ((BaseUnityPlugin)this).Config.Bind<string>(customRoleNameAthleticDef, "Athletic", (ConfigDescription)null); customRoleNameMage = ((BaseUnityPlugin)this).Config.Bind<string>(customRoleNameMageDef, "Mage", (ConfigDescription)null); } } }