using System;
using System.Collections.Generic;
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.Configuration;
using BepInEx.Logging;
using GameNetcodeStuff;
using HarmonyLib;
using LethalCompanyTestMod.Component;
using Steamworks.Data;
using Unity.Netcode;
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("LethalCompanyTestMod")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("LethalCompanyTestMod")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("d4f6b961-e8ae-4e4b-950c-37644e42d4ca")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace LethalCompanyTestMod
{
public static class stuff
{
public static bool spawningloop = false;
public static string enemytype = "blob";
public static float spawnduration = 20f;
public static float spawntimer = 0f;
public static bool inside = true;
public static bool timerstarted = false;
public static Stopwatch sw;
public static float last = 0f;
}
[BepInPlugin("Posiedon.GameMaster", "Lethal Company GameMaster", "1.0.0.0")]
public class TestMod : BaseUnityPlugin
{
private const string modGUID = "Posiedon.GameMaster";
private const string modName = "Lethal Company GameMaster";
private const string modVersion = "1.0.0.0";
private readonly Harmony harmony = new Harmony("Posiedon.GameMaster");
public static Dictionary<SelectableLevel, List<SpawnableEnemyWithRarity>> levelEnemySpawns;
public static Dictionary<SpawnableEnemyWithRarity, int> enemyRaritys;
public static Dictionary<SpawnableEnemyWithRarity, AnimationCurve> enemyPropCurves;
public static ManualLogSource mls;
private static ConfigEntry<string> ServerName;
private static ConfigEntry<string> RoundPost;
private static ConfigEntry<string> PrefixSetting;
private static ConfigEntry<bool> ShouldEnemiesSpawnNaturally;
private static ConfigEntry<float> SpringSpeed;
private static ConfigEntry<float> PopUpTimer;
private static ConfigEntry<float> MaxJesterSpeed;
private static ConfigEntry<float> CrankingTimer;
private static ConfigEntry<float> JesterResetTimer;
private static ConfigEntry<int> MinScrap;
private static ConfigEntry<int> MaxScrap;
private static ConfigEntry<int> MinScrapValue;
private static ConfigEntry<int> MaxScrapValue;
private static ConfigEntry<bool> HideCommandMessages;
private static ConfigEntry<bool> HideEnemySpawnMessages;
internal static ConfigEntry<bool> EnableInfiniteSprint;
private static ConfigEntry<bool> EnableInfiniteCredits;
private static ConfigEntry<bool> EnableInfiniteDeadline;
private static ConfigEntry<int> XPChange;
private static ConfigEntry<bool> CustomCompanyBuyRate;
private static ConfigEntry<bool> UseRandomBuyRate;
private static ConfigEntry<float> MinimumCompanyBuyRate;
private static ConfigEntry<float> MaximumCompanyBuyRate;
private static ConfigEntry<bool> CustomTimeScale;
private static ConfigEntry<bool> UseRandomTimeScale;
private static ConfigEntry<float> MinimumTimeScale;
private static ConfigEntry<float> MaximumTimeScale;
private static ConfigEntry<bool> CustomDeadline;
private static ConfigEntry<bool> UseRandomDeadline;
private static ConfigEntry<int> MinimumDeadline;
private static ConfigEntry<int> MaximumDeadline;
private static ConfigEntry<bool> SpawnSelectedEnemy;
private static ConfigEntry<string> SelectedEnemy;
private static ConfigEntry<bool> cfgNightVision;
private static ConfigEntry<bool> cfgSpeedHack;
private static ConfigEntry<bool> cfgGodMode;
private static ConfigEntry<bool> EnableAIModifiers;
private static ConfigEntry<bool> EnableScrapModifiers;
public static SelectableLevel currentLevel;
private static EnemyVent[] currentLevelVents;
private static RoundManager currentRound;
private static SpawnableEnemyWithRarity jesterRef;
internal static GUILoader myGUI;
private static bool noClipEnabled;
internal static bool enableGod;
internal static bool nightVision;
internal static PlayerControllerB playerRef;
private static bool speedHack;
internal static float nightVisionIntensity;
internal static float nightVisionRange;
internal static Color nightVisionColor;
private static bool hasGUISynced;
internal static bool isHost;
internal static TestMod Instance;
private void Awake()
{
//IL_006a: Unknown result type (might be due to invalid IL or missing references)
//IL_0070: Expected O, but got Unknown
//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Expected O, but got Unknown
Instance = this;
mls = Logger.CreateLogSource("GameMaster");
mls.LogInfo((object)"Loaded Posiedon.GameMaster. Patching.");
harmony.PatchAll(typeof(TestMod));
mls = ((BaseUnityPlugin)this).Logger;
enemyRaritys = new Dictionary<SpawnableEnemyWithRarity, int>();
levelEnemySpawns = new Dictionary<SelectableLevel, List<SpawnableEnemyWithRarity>>();
enemyPropCurves = new Dictionary<SpawnableEnemyWithRarity, AnimationCurve>();
GameObject val = new GameObject("GUILoader");
Object.DontDestroyOnLoad((Object)(object)val);
((Object)val).hideFlags = (HideFlags)61;
val.AddComponent<GUILoader>();
myGUI = (GUILoader)(object)val.GetComponent("GUILoader");
SetBindings();
setGUIVars();
noClipEnabled = false;
enableGod = false;
GameObject val2 = new GameObject("My Manager");
val2.AddComponent<Commandloop>();
Object.DontDestroyOnLoad((Object)(object)val2);
((Object)val2).hideFlags = (HideFlags)61;
}
private void setGUIVars()
{
myGUI.guiHideCommandMessage = HideCommandMessages.Value;
myGUI.guiHideEnemySpawnMessages = HideEnemySpawnMessages.Value;
myGUI.guiShouldEnemiesSpawnNaturally = ShouldEnemiesSpawnNaturally.Value;
myGUI.guiEnableAIModifiers = EnableAIModifiers.Value;
myGUI.guiEnableInfiniteSprint = EnableInfiniteSprint.Value;
myGUI.guiEnableInfiniteCredits = EnableInfiniteCredits.Value;
myGUI.guiEnableGod = cfgGodMode.Value;
myGUI.guiEnableNightVision = cfgNightVision.Value;
myGUI.guiEnableSpeedHack = cfgSpeedHack.Value;
myGUI.guiEnableScrapModifiers = EnableScrapModifiers.Value;
myGUI.guiEnableCustomBuyRate = CustomCompanyBuyRate.Value;
myGUI.guiUseRandomBuyRate = UseRandomBuyRate.Value;
myGUI.guiUseCustomTimeScale = CustomTimeScale.Value;
myGUI.guiUseRandomTimeScale = UseRandomTimeScale.Value;
myGUI.guiEnableInfiniteDeadline = EnableInfiniteDeadline.Value;
myGUI.guiEnableCustomDeadline = CustomDeadline.Value;
myGUI.guiUseRandomDeadline = UseRandomDeadline.Value;
myGUI.guiServerName = ServerName.Value;
myGUI.guiRoundPost = RoundPost.Value;
myGUI.guiXPChange = XPChange.Value.ToString();
myGUI.guiSelectedEnemy = SelectedEnemy.Value;
myGUI.guiPrefix = PrefixSetting.Value;
myGUI.guiMinScrap = MinScrap.Value;
myGUI.guiMaxScrap = MaxScrap.Value;
myGUI.guiMinScrapValue = MinScrapValue.Value;
myGUI.guiMaxScrapValue = MaxScrapValue.Value;
myGUI.guiMinimumDeadline = MinimumDeadline.Value;
myGUI.guiMaximumDeadline = MaximumDeadline.Value;
myGUI.guiSpringSpeed = SpringSpeed.Value;
myGUI.guiPopupTimer = PopUpTimer.Value;
myGUI.guiMaxJesterSpeed = MaxJesterSpeed.Value;
myGUI.guiCrankingTimer = CrankingTimer.Value;
myGUI.guiJesterResetTimer = JesterResetTimer.Value;
myGUI.guiMinTimeScale = MinimumTimeScale.Value;
myGUI.guiMaxTimeScale = MaximumTimeScale.Value;
myGUI.guiMinBuyRate = MinimumCompanyBuyRate.Value;
myGUI.guiMaxBuyRate = MaximumCompanyBuyRate.Value;
hasGUISynced = true;
}
internal void UpdateCFGVarsFromGUI()
{
if (!hasGUISynced)
{
setGUIVars();
}
HideCommandMessages.Value = myGUI.guiHideCommandMessage;
HideEnemySpawnMessages.Value = myGUI.guiHideEnemySpawnMessages;
ShouldEnemiesSpawnNaturally.Value = myGUI.guiShouldEnemiesSpawnNaturally;
EnableAIModifiers.Value = myGUI.guiEnableAIModifiers;
EnableInfiniteSprint.Value = myGUI.guiEnableInfiniteSprint;
EnableInfiniteCredits.Value = myGUI.guiEnableInfiniteCredits;
cfgGodMode.Value = myGUI.guiEnableGod;
cfgNightVision.Value = myGUI.guiEnableNightVision;
cfgSpeedHack.Value = myGUI.guiEnableSpeedHack;
EnableScrapModifiers.Value = myGUI.guiEnableScrapModifiers;
CustomCompanyBuyRate.Value = myGUI.guiEnableCustomBuyRate;
UseRandomBuyRate.Value = myGUI.guiUseRandomBuyRate;
CustomTimeScale.Value = myGUI.guiUseCustomTimeScale;
UseRandomTimeScale.Value = myGUI.guiUseRandomTimeScale;
EnableInfiniteDeadline.Value = myGUI.guiEnableInfiniteDeadline;
CustomDeadline.Value = myGUI.guiEnableCustomDeadline;
UseRandomDeadline.Value = myGUI.guiUseRandomDeadline;
ServerName.Value = myGUI.guiServerName;
RoundPost.Value = myGUI.guiRoundPost;
XPChange.Value = int.Parse(myGUI.guiXPChange);
SelectedEnemy.Value = myGUI.guiSelectedEnemy;
PrefixSetting.Value = myGUI.guiPrefix;
MinScrap.Value = myGUI.guiMinScrap;
MaxScrap.Value = myGUI.guiMaxScrap;
MinScrapValue.Value = myGUI.guiMinScrapValue;
MaxScrapValue.Value = myGUI.guiMaxScrapValue;
MinimumDeadline.Value = myGUI.guiMinimumDeadline;
MaximumDeadline.Value = myGUI.guiMaximumDeadline;
SpringSpeed.Value = myGUI.guiSpringSpeed;
PopUpTimer.Value = myGUI.guiPopupTimer;
MaxJesterSpeed.Value = myGUI.guiMaxJesterSpeed;
CrankingTimer.Value = myGUI.guiCrankingTimer;
JesterResetTimer.Value = myGUI.guiJesterResetTimer;
MinimumTimeScale.Value = myGUI.guiMinTimeScale;
MaximumTimeScale.Value = myGUI.guiMaxTimeScale;
MinimumCompanyBuyRate.Value = myGUI.guiMinBuyRate;
MaximumCompanyBuyRate.Value = myGUI.guiMaxBuyRate;
}
private void Update()
{
if (myGUI.guiSpawnButtonPressed)
{
SpawnEnemyWithConfigManager(myGUI.guiSelectedEnemy);
}
}
private void SetBindings()
{
//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
//IL_0105: Expected O, but got Unknown
//IL_0138: Unknown result type (might be due to invalid IL or missing references)
//IL_0142: Expected O, but got Unknown
//IL_0175: Unknown result type (might be due to invalid IL or missing references)
//IL_017f: Expected O, but got Unknown
//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
//IL_01bc: Expected O, but got Unknown
//IL_01ef: Unknown result type (might be due to invalid IL or missing references)
//IL_01f9: Expected O, but got Unknown
//IL_0480: Unknown result type (might be due to invalid IL or missing references)
//IL_048a: Expected O, but got Unknown
//IL_04bd: Unknown result type (might be due to invalid IL or missing references)
//IL_04c7: Expected O, but got Unknown
//IL_053a: Unknown result type (might be due to invalid IL or missing references)
//IL_0544: Expected O, but got Unknown
//IL_0577: Unknown result type (might be due to invalid IL or missing references)
//IL_0581: Expected O, but got Unknown
//IL_0609: Unknown result type (might be due to invalid IL or missing references)
//IL_0613: Expected O, but got Unknown
//IL_063b: Unknown result type (might be due to invalid IL or missing references)
//IL_0645: Expected O, but got Unknown
ServerName = ((BaseUnityPlugin)this).Config.Bind<string>("Server Settings", "Server Name", "<color=red>G</color><color=blue>a</color><color=yellow>m</color><color=green>e</color><color=orange>M</color><color=purple>a</color><color=red>s</color><color=blue>t</color><color=yellow>e</color><color=green>r</color>", "Set the server name when creating a server");
RoundPost = ((BaseUnityPlugin)this).Config.Bind<string>("Server Settings", "Round Comment", "<color=white>Start the spawns by typing '/(enemy internal name) (spawn frequency in seconds)', type /quit to stop the spawns. Good Luck!</color>", "A message that the server sends every round");
HideCommandMessages = ((BaseUnityPlugin)this).Config.Bind<bool>("Command Settings", "Hide Spawn Messages", true, "Should the server hide your commands? true will hide, false will show");
HideEnemySpawnMessages = ((BaseUnityPlugin)this).Config.Bind<bool>("Command Settings", "Hide Enemy Spawn Messages", true, "Should the server hide messages an enemy may send when it spawns? true will hide, false will show.");
PrefixSetting = ((BaseUnityPlugin)this).Config.Bind<string>("Command Settings", "Command Prefix", "/", "An optional prefix for chat commands");
ShouldEnemiesSpawnNaturally = ((BaseUnityPlugin)this).Config.Bind<bool>("AI Settings", "Natural enemy spawn", true, "If true, enemies will spawn naturally. If false, enemies will spawn only when told to by this script.");
SpringSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("AI Settings", "Spring Head - Speed", 100f, new ConfigDescription("Base speed for springhead", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 150f), Array.Empty<object>()));
PopUpTimer = ((BaseUnityPlugin)this).Config.Bind<float>("AI Settings", "Jester - PopUp", 0.5f, new ConfigDescription("How long it takes the jester to popup", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 100f), Array.Empty<object>()));
MaxJesterSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("AI Settings", "Jester - Max Speed Multiplier", 5f, new ConfigDescription("The maximum speed the jester can go, multiplier", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 10f), Array.Empty<object>()));
CrankingTimer = ((BaseUnityPlugin)this).Config.Bind<float>("AI Settings", "Jester - Cranking", 0.5f, new ConfigDescription("The time it takes the jester to begin cranking", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 100f), Array.Empty<object>()));
JesterResetTimer = ((BaseUnityPlugin)this).Config.Bind<float>("AI Settings", "Jester - Reset", 5000f, new ConfigDescription("The time it takes for the jester to reset when no one is in the building", (AcceptableValueBase)(object)new AcceptableValueRange<float>(5f, 5000f), Array.Empty<object>()));
EnableAIModifiers = ((BaseUnityPlugin)this).Config.Bind<bool>("AI Settings", "Enable AI modifiers", false, "If enabled, the server will override the AI settings, if disabled, it will use default settings.");
SpawnSelectedEnemy = ((BaseUnityPlugin)this).Config.Bind<bool>("Enemy Spawning", "Spawn Selected enemy", false, "On click, this will spawn the selected enemy then get set back to false. Only to be used with configuration manager.");
SelectedEnemy = ((BaseUnityPlugin)this).Config.Bind<string>("Enemy Spawning", "Name of Enemy", "Spring", "Enter the name of the enemy you'd like to spawn. Can be partial, use the github or web to find a list of names. Only to be used with configuration manager.");
XPChange = ((BaseUnityPlugin)this).Config.Bind<int>("Host Settings", "XP Change", 25, "Sets the amount of XP to additionally gain or lose. Can be negative.");
EnableInfiniteSprint = ((BaseUnityPlugin)this).Config.Bind<bool>("Host Settings", "Enable infinite sprint", false, "If true, stamina will never deplete, if false, stamina will work as normal.");
EnableInfiniteCredits = ((BaseUnityPlugin)this).Config.Bind<bool>("Host Settings", "Enable infinite credits", false, "If true, credits will always revert back to the preset value. If false, they will work as normal.");
cfgGodMode = ((BaseUnityPlugin)this).Config.Bind<bool>("Host Settings", "Enable God Mode", false, "If true, you cannot die. *note if you fall down into a pit you may not be able to get out. Disabling will not kill you immediately.");
cfgNightVision = ((BaseUnityPlugin)this).Config.Bind<bool>("Host Settings", "Enable Night Vision", false, "If true, you will be able to see in the dark");
cfgSpeedHack = ((BaseUnityPlugin)this).Config.Bind<bool>("Host Settings", "Enable Speed Hack", false, "If true, will enable the built in speed hack, it's very fast.");
cfgGodMode.SettingChanged += godModeCFGChanged;
cfgNightVision.SettingChanged += nightVisionCFGChanged;
cfgSpeedHack.SettingChanged += speedHackCFGChanged;
EnableScrapModifiers = ((BaseUnityPlugin)this).Config.Bind<bool>("Scrap Settings", "Enable Scrap mofifiers", false, "If enabled, will use our scrap modifiers, if disabled, will use the game generated scrap settings");
MinScrap = ((BaseUnityPlugin)this).Config.Bind<int>("Scrap Settings", "Minimum Scap", 20, "Set the minimum pieces of scrap in the level");
MaxScrap = ((BaseUnityPlugin)this).Config.Bind<int>("Scrap Settings", "Maximum Scap", 45, "Set the maximum pieces of scrap in the level");
MinScrapValue = ((BaseUnityPlugin)this).Config.Bind<int>("Scrap Settings", "Minimum Scap value", 3000, "Set the minimum value of scrap in the level");
MaxScrapValue = ((BaseUnityPlugin)this).Config.Bind<int>("Scrap Settings", "Maximum Scap value", 8000, "Set the maximum value of scrap in the level");
CustomCompanyBuyRate = ((BaseUnityPlugin)this).Config.Bind<bool>("Company Scrap Buying Settings", "Override Company Buying Rate", false, "Recommended if using infinite deadline, overrides in game calculation of the company buy rate if true to use our method.");
UseRandomBuyRate = ((BaseUnityPlugin)this).Config.Bind<bool>("Company Scrap Buying Settings", "Make custom buying rate Random", false, "If true, will pick a random value in between your minimum and maximum buy rate every day. If false, will use your MAXIMUM buying rate settting.");
MinimumCompanyBuyRate = ((BaseUnityPlugin)this).Config.Bind<float>("Company Scrap Buying Settings", "Minimum buying rate", 0.1f, new ConfigDescription("Minimum buy rate for random", (AcceptableValueBase)(object)new AcceptableValueRange<float>(-1f, 10f), Array.Empty<object>()));
MaximumCompanyBuyRate = ((BaseUnityPlugin)this).Config.Bind<float>("Company Scrap Buying Settings", "Maximum buying rate", 1f, new ConfigDescription("Maximum buy rate for random, OR if random is off, the buy rate used every day", (AcceptableValueBase)(object)new AcceptableValueRange<float>(-1f, 10f), Array.Empty<object>()));
CustomTimeScale = ((BaseUnityPlugin)this).Config.Bind<bool>("Time Settings", "Override day speed", false, "If true, will use either random speed multiplier between min and max, or if random is turned off, the maximum");
UseRandomTimeScale = ((BaseUnityPlugin)this).Config.Bind<bool>("Time Settings", "Make day speed random", false, "If true, will pick a random multiplier between the minimum and maximum, if false, will use maximum");
MinimumTimeScale = ((BaseUnityPlugin)this).Config.Bind<float>("Time Settings", "Minimum day speed", 0.1f, new ConfigDescription("Minimum speed for random day length", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 10f), Array.Empty<object>()));
MaximumTimeScale = ((BaseUnityPlugin)this).Config.Bind<float>("Time Settings", "Maximum day speed", 1f, new ConfigDescription("Maximum speed for random day length, or the set value if not random", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 10f), Array.Empty<object>()));
EnableInfiniteDeadline = ((BaseUnityPlugin)this).Config.Bind<bool>("Deadline settings", "Enable infinite deadline", false, "If true, the deadline will never go down and will always stay at 8 days. If false, it will drop like normal. Overrides custom deadline.");
CustomDeadline = ((BaseUnityPlugin)this).Config.Bind<bool>("Deadline settings", "Override deadline", false, "If true, will use either a random deadline between the min and max, or if random is truned off, the maximum.");
UseRandomDeadline = ((BaseUnityPlugin)this).Config.Bind<bool>("Deadline settings", "Use random deadline", false, "If true, will use a randomy deadline between the minimum and maximum. If false, will use maximum.");
MinimumDeadline = ((BaseUnityPlugin)this).Config.Bind<int>("Deadline settings", "Minimum deadline", 1, new ConfigDescription("Minimum amount of days for random deadline", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), Array.Empty<object>()));
MaximumDeadline = ((BaseUnityPlugin)this).Config.Bind<int>("Deadline settings", "Maximum deadline", 3, new ConfigDescription("Maximum amount of days for random deadline, or the set value if not random", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 20), Array.Empty<object>()));
}
private void speedHackCFGChanged(object sender, EventArgs e)
{
if (isHost)
{
toggleSpeedHack();
}
}
private void nightVisionCFGChanged(object sender, EventArgs e)
{
if (isHost)
{
nightVision = cfgNightVision.Value;
}
}
private void godModeCFGChanged(object sender, EventArgs e)
{
if (isHost)
{
enableGod = cfgGodMode.Value;
}
}
public void EnableNoClip()
{
if (!isHost)
{
return;
}
noClipEnabled = !noClipEnabled;
mls.LogInfo((object)"noclip function called");
if (noClipEnabled)
{
Collider[] array = Object.FindObjectsByType<Collider>((FindObjectsInactive)0, (FindObjectsSortMode)0);
Collider[] array2 = array;
foreach (Collider val in array2)
{
val.enabled = false;
}
}
}
private static bool toggleNightVision()
{
if (isHost)
{
nightVision = !nightVision;
cfgNightVision.Value = nightVision;
}
return nightVision;
}
private static bool toggleGodMode()
{
if (isHost)
{
enableGod = !enableGod;
cfgGodMode.Value = enableGod;
}
return enableGod;
}
private static void toggleSpeedHack()
{
if (isHost)
{
speedHack = !playerRef.isSpeedCheating;
playerRef.isSpeedCheating = speedHack;
}
}
[HarmonyPatch(typeof(GameNetworkManager), "SteamMatchmaking_OnLobbyCreated")]
[HarmonyPrefix]
private static void UpdateServerSettings(ref HostSettings ___lobbyHostSettings, ref Lobby lobby)
{
if (ServerName.Value != "")
{
___lobbyHostSettings.lobbyName = ServerName.Value;
}
}
[HarmonyPatch(typeof(RoundManager), "Start")]
[HarmonyPrefix]
private static void setIsHost()
{
mls.LogInfo((object)("Host Status: " + ((NetworkBehaviour)RoundManager.Instance).NetworkManager.IsHost));
isHost = ((NetworkBehaviour)RoundManager.Instance).NetworkManager.IsHost;
}
[HarmonyPatch(typeof(RoundManager), "LoadNewLevel")]
[HarmonyPrefix]
private static bool ModifyLevel(ref SelectableLevel newLevel)
{
//IL_020f: Unknown result type (might be due to invalid IL or missing references)
//IL_0216: Expected O, but got Unknown
currentRound = RoundManager.Instance;
if (!levelEnemySpawns.ContainsKey(newLevel))
{
List<SpawnableEnemyWithRarity> list = new List<SpawnableEnemyWithRarity>();
foreach (SpawnableEnemyWithRarity enemy in newLevel.Enemies)
{
list.Add(enemy);
}
levelEnemySpawns.Add(newLevel, list);
}
levelEnemySpawns.TryGetValue(newLevel, out var value);
newLevel.Enemies = value;
foreach (SpawnableEnemyWithRarity enemy2 in newLevel.Enemies)
{
mls.LogInfo((object)("Inside: " + enemy2.enemyType.enemyName));
if (!enemyRaritys.ContainsKey(enemy2))
{
enemyRaritys.Add(enemy2, enemy2.rarity);
}
int value2 = 0;
enemyRaritys.TryGetValue(enemy2, out value2);
enemy2.rarity = value2;
}
foreach (SpawnableEnemyWithRarity outsideEnemy in newLevel.OutsideEnemies)
{
mls.LogInfo((object)("Outside: " + outsideEnemy.enemyType.enemyName));
if (!enemyRaritys.ContainsKey(outsideEnemy))
{
enemyRaritys.Add(outsideEnemy, outsideEnemy.rarity);
}
int value3 = 0;
enemyRaritys.TryGetValue(outsideEnemy, out value3);
outsideEnemy.rarity = value3;
}
foreach (SpawnableEnemyWithRarity enemy3 in newLevel.Enemies)
{
if (!enemyPropCurves.ContainsKey(enemy3))
{
enemyPropCurves.Add(enemy3, enemy3.enemyType.probabilityCurve);
}
AnimationCurve value4 = new AnimationCurve();
enemyPropCurves.TryGetValue(enemy3, out value4);
enemy3.enemyType.probabilityCurve = value4;
}
HUDManager.Instance.AddTextToChatOnServer("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n", -1);
if (RoundPost.Value != "")
{
HUDManager.Instance.AddTextToChatOnServer(RoundPost.Value, -1);
}
SelectableLevel val = newLevel;
if (EnableScrapModifiers.Value)
{
val.minScrap = MinScrap.Value;
val.maxScrap = MaxScrap.Value;
val.minTotalScrapValue = MinScrapValue.Value;
val.maxTotalScrapValue = MaxScrapValue.Value;
}
SpawnableMapObject[] spawnableMapObjects = val.spawnableMapObjects;
foreach (SpawnableMapObject val2 in spawnableMapObjects)
{
if ((Object)(object)val2.prefabToSpawn.GetComponentInChildren<Landmine>() != (Object)null)
{
}
}
newLevel = val;
return true;
}
[HarmonyPatch(typeof(RoundManager), "AdvanceHourAndSpawnNewBatchOfEnemies")]
[HarmonyPrefix]
private static void updateCurrentLevelInfo(ref EnemyVent[] ___allEnemyVents, ref SelectableLevel ___currentLevel)
{
currentLevel = ___currentLevel;
currentLevelVents = ___allEnemyVents;
}
private static void SetSpawnTimer()
{
stuff.spawningloop = true;
}
private static void TurnOffTimer()
{
stuff.spawntimer = 0f;
stuff.spawningloop = false;
stuff.timerstarted = false;
stuff.sw.Stop();
}
[HarmonyPatch(typeof(HUDManager), "SubmitChat_performed")]
[HarmonyPrefix]
private static void GameMasterCommands(HUDManager __instance)
{
//IL_09f2: Unknown result type (might be due to invalid IL or missing references)
//IL_0a36: Unknown result type (might be due to invalid IL or missing references)
//IL_0a7a: Unknown result type (might be due to invalid IL or missing references)
//IL_0aeb: Unknown result type (might be due to invalid IL or missing references)
//IL_0b2f: Unknown result type (might be due to invalid IL or missing references)
//IL_0b73: Unknown result type (might be due to invalid IL or missing references)
string text = __instance.chatTextField.text;
string text2 = "/";
mls.LogInfo((object)text);
if (PrefixSetting.Value != "")
{
text2 = PrefixSetting.Value;
}
if (!text.ToLower().StartsWith(text2.ToLower()))
{
return;
}
string text3 = "Default Title";
string text4 = "Default Body";
if (!isHost)
{
text3 = "Command";
text4 = "Unable to send command since you are not host.";
HUDManager.Instance.DisplayTip(text3, text4, false, false, "LC_Tip1");
if (HideCommandMessages.Value)
{
__instance.chatTextField.text = "";
}
return;
}
if (text.ToLower().StartsWith(text2 + "stop"))
{
TurnOffTimer();
}
if (text.ToLower().StartsWith(text2 + "loop"))
{
stuff.spawningloop = true;
text3 = "Loop Started with:";
string[] array = text.Split(new char[1] { ' ' });
text4 = array[1].ToLower();
if (array.Length == 2)
{
bool flag = false;
string text5 = "";
foreach (SpawnableEnemyWithRarity enemy in currentLevel.Enemies)
{
if (enemy.enemyType.enemyName.ToLower().Contains(array[1].ToLower()))
{
try
{
stuff.enemytype = array[1].ToLower();
stuff.inside = true;
SetSpawnTimer();
}
catch
{
mls.LogInfo((object)"Could not spawn enemy");
}
break;
}
}
if (!flag)
{
foreach (SpawnableEnemyWithRarity outsideEnemy in currentLevel.OutsideEnemies)
{
if (outsideEnemy.enemyType.enemyName.ToLower().Contains(array[1].ToLower()))
{
try
{
stuff.enemytype = array[1].ToLower();
stuff.inside = false;
SetSpawnTimer();
}
catch (Exception ex)
{
mls.LogInfo((object)"Could not spawn enemy");
mls.LogInfo((object)("The game tossed an error: " + ex.Message));
}
break;
}
}
}
}
if (array.Length > 2)
{
bool flag2 = false;
text3 = "Loop Started with:";
text4 = array[1].ToLower();
if (int.TryParse(array[2], out var result))
{
string text6 = "";
foreach (SpawnableEnemyWithRarity enemy2 in currentLevel.Enemies)
{
if (enemy2.enemyType.enemyName.ToLower().Contains(array[1].ToLower()))
{
stuff.enemytype = array[1].ToLower();
stuff.spawnduration = result;
stuff.inside = true;
SetSpawnTimer();
}
}
if (!flag2)
{
foreach (SpawnableEnemyWithRarity outsideEnemy2 in currentLevel.OutsideEnemies)
{
if (outsideEnemy2.enemyType.enemyName.ToLower().Contains(array[1].ToLower()))
{
try
{
stuff.enemytype = array[1].ToLower();
stuff.spawnduration = result;
stuff.inside = false;
SetSpawnTimer();
}
catch
{
mls.LogInfo((object)"Failed to spawn enemies, check your command.");
}
if (flag2)
{
text4 = "Spawned " + result + " " + text6 + "s";
break;
}
}
}
}
}
else
{
mls.LogInfo((object)"Failed to spawn enemies, check your command.");
}
mls.LogInfo((object)("Length of input array: " + array.Length));
}
}
if (text.ToLower().StartsWith(text2 + "spawn"))
{
text3 = "Spawned Enemies";
string[] array2 = text.Split(new char[1] { ' ' });
if (array2.Length == 2)
{
bool flag3 = false;
string text7 = "";
foreach (SpawnableEnemyWithRarity enemy3 in currentLevel.Enemies)
{
if (enemy3.enemyType.enemyName.ToLower().Contains(array2[1].ToLower()))
{
try
{
flag3 = true;
text7 = enemy3.enemyType.enemyName;
SpawnEnemy(enemy3, 1, inside: true);
mls.LogInfo((object)("Spawned " + enemy3.enemyType.enemyName));
}
catch
{
mls.LogInfo((object)"Could not spawn enemy");
}
text4 = "Spawned: " + text7;
break;
}
}
if (!flag3)
{
foreach (SpawnableEnemyWithRarity outsideEnemy3 in currentLevel.OutsideEnemies)
{
if (outsideEnemy3.enemyType.enemyName.ToLower().Contains(array2[1].ToLower()))
{
try
{
flag3 = true;
text7 = outsideEnemy3.enemyType.enemyName;
mls.LogInfo((object)outsideEnemy3.enemyType.enemyName);
mls.LogInfo((object)("The index of " + outsideEnemy3.enemyType.enemyName + " is " + currentLevel.OutsideEnemies.IndexOf(outsideEnemy3)));
SpawnEnemy(outsideEnemy3, 1, inside: false);
mls.LogInfo((object)("Spawned " + outsideEnemy3.enemyType.enemyName));
}
catch (Exception ex2)
{
mls.LogInfo((object)"Could not spawn enemy");
mls.LogInfo((object)("The game tossed an error: " + ex2.Message));
}
text4 = "Spawned: " + text7;
break;
}
}
}
}
if (array2.Length > 2)
{
bool flag4 = false;
if (int.TryParse(array2[2], out var result2))
{
string text8 = "";
foreach (SpawnableEnemyWithRarity enemy4 in currentLevel.Enemies)
{
if (enemy4.enemyType.enemyName.ToLower().Contains(array2[1].ToLower()))
{
flag4 = true;
text8 = enemy4.enemyType.enemyName;
SpawnEnemy(enemy4, result2, inside: true);
if (flag4)
{
text4 = "Spawned " + result2 + " " + text8 + "s";
break;
}
}
}
if (!flag4)
{
foreach (SpawnableEnemyWithRarity outsideEnemy4 in currentLevel.OutsideEnemies)
{
if (outsideEnemy4.enemyType.enemyName.ToLower().Contains(array2[1].ToLower()))
{
flag4 = true;
text8 = outsideEnemy4.enemyType.enemyName;
try
{
mls.LogInfo((object)("The index of " + outsideEnemy4.enemyType.enemyName + " is " + currentLevel.OutsideEnemies.IndexOf(outsideEnemy4)));
SpawnEnemy(outsideEnemy4, result2, inside: false);
mls.LogInfo((object)("Spawned another " + outsideEnemy4.enemyType.enemyName));
}
catch
{
mls.LogInfo((object)"Failed to spawn enemies, check your command.");
}
if (flag4)
{
text4 = "Spawned " + result2 + " " + text8 + "s";
break;
}
}
}
}
}
else
{
mls.LogInfo((object)"Failed to spawn enemies, check your command.");
}
mls.LogInfo((object)("Length of input array: " + array2.Length));
}
}
if (text.ToLower().StartsWith(text2 + "weather"))
{
text3 = "Weather Change";
string[] array3 = text.Split(new char[1] { ' ' });
if (array3.Length > 1)
{
if (array3[1].ToLower().Contains("rain"))
{
currentRound.timeScript.currentLevelWeather = (LevelWeatherType)1;
mls.LogInfo((object)("tried to change the weather to " + array3[1]));
}
if (array3[1].ToLower().Contains("eclipse"))
{
currentRound.timeScript.currentLevelWeather = (LevelWeatherType)5;
mls.LogInfo((object)("tried to change the weather to " + array3[1]));
}
if (array3[1].ToLower().Contains("flood"))
{
currentRound.timeScript.currentLevelWeather = (LevelWeatherType)4;
mls.LogInfo((object)("tried to change the weather to " + array3[1]));
}
if (array3[1].ToLower().Contains("dust") || array3[1].ToLower().Contains("fog") || array3[1].ToLower().Contains("mist"))
{
currentRound.timeScript.currentLevelWeather = (LevelWeatherType)0;
mls.LogInfo((object)("tried to change the weather to " + array3[1]));
}
if (array3[1].ToLower().Contains("storm"))
{
currentRound.timeScript.currentLevelWeather = (LevelWeatherType)2;
mls.LogInfo((object)("tried to change the weather to " + array3[1]));
}
if (array3[1].ToLower().Contains("none"))
{
currentRound.timeScript.currentLevelWeather = (LevelWeatherType)(-1);
mls.LogInfo((object)("tried to change the weather to " + array3[1]));
}
text4 = "tried to change the weather to " + array3[1];
}
}
if (text.ToLower().StartsWith(text2 + "togglelights"))
{
BreakerBox val = Object.FindObjectOfType<BreakerBox>();
if ((Object)(object)val != (Object)null)
{
text3 = "Light Change";
if (val.isPowerOn)
{
currentRound.TurnBreakerSwitchesOff();
currentRound.TurnOnAllLights(false);
val.isPowerOn = false;
text4 = "Turned the lights off";
}
else
{
currentRound.PowerSwitchOnClientRpc();
text4 = "Turned the lights on";
}
}
}
if (text.ToLower().StartsWith(text2 + "buy"))
{
text3 = "Item Buying";
Terminal val2 = Object.FindObjectOfType<Terminal>();
if ((Object)(object)val2 != (Object)null)
{
List<string> list = new List<string>
{
"Walkie-Talkie", "Pro Flashlight", "Normal Flashlight", "Shovel", "Lockpicker", "Stun Grenade", "Boom Box", "Inhaler", "Stun Gun", "Jet Pack",
"Extension Ladder", "Radar Booster"
};
Dictionary<string, int> dictionary = new Dictionary<string, int>
{
{ "Walkie-Talkie", 0 },
{ "Pro Flashlight", 4 },
{ "Normal Flashlight", 1 },
{ "Shovel", 2 },
{ "Lockpicker", 3 },
{ "Stun Grenade", 5 },
{ "Boom Box", 6 },
{ "Inhaler", 7 },
{ "Stun Gun", 8 },
{ "Jet Pack", 9 },
{ "Extension Ladder", 10 },
{ "Radar Booster", 11 }
};
string[] array4 = text.Split(new char[1] { ' ' });
if (array4.Length > 1)
{
bool flag5 = false;
if (array4.Length > 2)
{
if (!int.TryParse(array4[2], out var result3))
{
mls.LogInfo((object)("Couldn't parse command [ " + array4[2] + " ]"));
if (HideCommandMessages.Value)
{
__instance.chatTextField.text = "";
}
return;
}
foreach (string item in list)
{
if (item.ToLower().Contains(array4[1]))
{
flag5 = true;
List<int> list2 = new List<int>();
for (int i = 0; i < result3; i++)
{
list2.Add(dictionary[item]);
}
mls.LogInfo((object)list2.Count());
val2.BuyItemsServerRpc(list2.ToArray(), val2.groupCredits, 0);
text4 = "Bought " + result3 + " " + item + "s";
break;
}
}
if (!flag5)
{
mls.LogInfo((object)("Couldn't figure out what [ " + array4[1] + " ] was."));
if (HideCommandMessages.Value)
{
__instance.chatTextField.text = "";
}
return;
}
}
if (!flag5)
{
bool flag6 = false;
foreach (string item2 in list)
{
if (item2.ToLower().Contains(array4[1]))
{
flag6 = true;
int[] array5 = new int[1] { dictionary[item2] };
val2.BuyItemsServerRpc(array5, val2.groupCredits, 0);
text4 = "Bought " + 1 + " " + item2;
}
}
if (!flag6)
{
mls.LogInfo((object)("Couldn't figure out what [ " + array4[1] + " ] was. Trying via int parser."));
}
if (!int.TryParse(array4[1], out var result4))
{
mls.LogInfo((object)("Couldn't figure out what [ " + array4[1] + " ] was. Int parser failed, please try again."));
if (HideCommandMessages.Value)
{
__instance.chatTextField.text = "";
}
return;
}
int[] array6 = new int[1] { result4 };
val2.BuyItemsServerRpc(array6, val2.groupCredits, 0);
text4 = "Bought item with ID [" + result4 + "]";
}
}
}
}
if (text.ToLower().Contains("god"))
{
cfgGodMode.Value = !cfgGodMode.Value;
hasGUISynced = false;
text3 = "God Mode";
text4 = "God Mode set to: " + enableGod;
}
if (text.ToLower().Contains("night") || text.ToLower().Contains("vision"))
{
text4 = ((!toggleNightVision()) ? "Disabled Night Vision" : "Enabled Night Vision");
text3 = "Night Vision";
hasGUISynced = false;
}
if (text.ToLower().Contains("speed"))
{
cfgSpeedHack.Value = !cfgSpeedHack.Value;
hasGUISynced = false;
text4 = "Speed hack set to: " + speedHack;
text3 = "Speed hack";
}
HUDManager.Instance.DisplayTip(text3, text4, false, false, "LC_Tip1");
if (HideCommandMessages.Value)
{
__instance.chatTextField.text = "";
}
}
private static void SpawnEnemyWithConfigManager(string enemyName)
{
if (!isHost)
{
return;
}
mls.LogInfo((object)"CFGMGR tried to spawn an enemy");
bool flag = false;
string text = "";
foreach (SpawnableEnemyWithRarity enemy in currentLevel.Enemies)
{
if (enemy.enemyType.enemyName.ToLower().Contains(enemyName.ToLower()))
{
try
{
flag = true;
text = enemy.enemyType.enemyName;
SpawnEnemy(enemy, 1, inside: true);
mls.LogInfo((object)("Spawned " + enemy.enemyType.enemyName));
}
catch
{
mls.LogInfo((object)"Could not spawn enemy");
}
break;
}
}
if (flag)
{
return;
}
foreach (SpawnableEnemyWithRarity outsideEnemy in currentLevel.OutsideEnemies)
{
if (outsideEnemy.enemyType.enemyName.ToLower().Contains(enemyName.ToLower()))
{
try
{
flag = true;
text = outsideEnemy.enemyType.enemyName;
mls.LogInfo((object)outsideEnemy.enemyType.enemyName);
mls.LogInfo((object)("The index of " + outsideEnemy.enemyType.enemyName + " is " + currentLevel.OutsideEnemies.IndexOf(outsideEnemy)));
SpawnEnemy(outsideEnemy, 1, inside: false);
mls.LogInfo((object)("Spawned " + outsideEnemy.enemyType.enemyName));
break;
}
catch (Exception ex)
{
mls.LogInfo((object)"Could not spawn enemy");
mls.LogInfo((object)("The game tossed an error: " + ex.Message));
break;
}
}
}
}
public static void SpawnEnemy(SpawnableEnemyWithRarity enemy, int amount, bool inside)
{
//IL_012d: Unknown result type (might be due to invalid IL or missing references)
//IL_0132: Unknown result type (might be due to invalid IL or missing references)
//IL_0137: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_006f: Unknown result type (might be due to invalid IL or missing references)
if (!isHost)
{
return;
}
mls.LogInfo((object)"Got to the main SpawnEnemy function");
if (inside)
{
try
{
for (int i = 0; i < amount; i++)
{
currentRound.SpawnEnemyOnServer(currentRound.allEnemyVents[Random.Range(0, currentRound.allEnemyVents.Length)].floorNode.position, currentRound.allEnemyVents[i].floorNode.eulerAngles.y, currentLevel.Enemies.IndexOf(enemy));
}
return;
}
catch
{
mls.LogInfo((object)"Failed to spawn enemies, check your command.");
return;
}
}
for (int j = 0; j < amount; j++)
{
mls.LogInfo((object)("Spawned an enemy. Total Spawned: " + j));
GameObject val = Object.Instantiate<GameObject>(currentLevel.OutsideEnemies[currentLevel.OutsideEnemies.IndexOf(enemy)].enemyType.enemyPrefab, GameObject.FindGameObjectsWithTag("OutsideAINode")[Random.Range(0, GameObject.FindGameObjectsWithTag("OutsideAINode").Length - 1)].transform.position, Quaternion.Euler(Vector3.zero));
val.gameObject.GetComponentInChildren<NetworkObject>().Spawn(true);
}
}
[HarmonyPatch(typeof(RoundManager), "SpawnEnemyFromVent")]
[HarmonyPrefix]
private static void logSpawnEnemyFromVent()
{
mls.LogInfo((object)"Attempting to spawn an enemy");
}
[HarmonyPatch(typeof(RoundManager), "EnemyCannotBeSpawned")]
[HarmonyPrefix]
private static bool OverrideCannotSpawn()
{
return false;
}
[HarmonyPatch(typeof(DressGirlAI), "Start")]
[HarmonyPrefix]
private static void IncreaseHaunt(ref float ___hauntInterval)
{
if (isHost && EnableAIModifiers.Value)
{
___hauntInterval = 2f;
if (!HideEnemySpawnMessages.Value)
{
HUDManager.Instance.AddTextToChatOnServer("<color=red>Demon spawned.</color>", -1);
}
}
}
[HarmonyPatch(typeof(DressGirlAI), "BeginChasing")]
[HarmonyPostfix]
private static void IncreaseChaseTimer(ref int ___currentBehaviourStateIndex, ref float ___chaseTimer)
{
if (isHost && EnableAIModifiers.Value)
{
___chaseTimer = 60f;
}
}
[HarmonyPatch(typeof(SpringManAI), "Update")]
[HarmonyPrefix]
private static void IncreaseSpring(ref float ___currentChaseSpeed, ref float ___currentAnimSpeed)
{
if (isHost && !EnableAIModifiers.Value)
{
___currentChaseSpeed = SpringSpeed.Value;
}
}
[HarmonyPatch(typeof(JesterAI), "SetJesterInitialValues")]
[HarmonyPostfix]
private static void JesterDangerous(ref float ___popUpTimer, ref float ___beginCrankingTimer, ref float ___noPlayersToChaseTimer, ref float ___maxAnimSpeed)
{
if (EnableAIModifiers.Value && isHost)
{
___popUpTimer = PopUpTimer.Value;
___beginCrankingTimer = CrankingTimer.Value;
___noPlayersToChaseTimer = JesterResetTimer.Value;
___maxAnimSpeed = MaxJesterSpeed.Value;
if (!HideEnemySpawnMessages.Value)
{
HUDManager.Instance.AddTextToChatOnServer("<color=blue>Boing.</color>", -1);
}
}
}
[HarmonyPatch(typeof(JesterAI), "Update")]
[HarmonyPrefix]
private static void RemoveRewind(ref float ___noPlayersToChaseTimer)
{
if (EnableAIModifiers.Value && isHost)
{
___noPlayersToChaseTimer = JesterResetTimer.Value;
}
}
[HarmonyPatch(typeof(CrawlerAI), "HitEnemy")]
[HarmonyPrefix]
private static void PatchThumperDeath()
{
}
[HarmonyPatch(typeof(CrawlerAI), "Start")]
[HarmonyPrefix]
private static void ThumperSpeed(ref float ___agentSpeedWithNegative, ref float ___maxSearchAndRoamRadius)
{
if (EnableAIModifiers.Value && isHost)
{
___maxSearchAndRoamRadius = 300f;
if (!HideEnemySpawnMessages.Value)
{
HUDManager.Instance.AddTextToChatOnServer("<color=red> >:) </color>", -1);
}
}
}
}
public class Commandloop : MonoBehaviour
{
private static void Spawnthing()
{
bool flag = false;
foreach (SpawnableEnemyWithRarity enemy in TestMod.currentLevel.Enemies)
{
if (enemy.enemyType.enemyName.ToLower().Contains(stuff.enemytype))
{
try
{
flag = true;
TestMod.SpawnEnemy(enemy, 1, inside: true);
}
catch
{
TestMod.mls.LogInfo((object)"Could not spawn enemy");
}
break;
}
}
if (flag)
{
return;
}
foreach (SpawnableEnemyWithRarity outsideEnemy in TestMod.currentLevel.OutsideEnemies)
{
if (outsideEnemy.enemyType.enemyName.ToLower().Contains(stuff.enemytype))
{
TestMod.SpawnEnemy(outsideEnemy, 1, inside: false);
break;
}
}
}
private void Update()
{
if (!stuff.spawningloop)
{
return;
}
if (!stuff.timerstarted)
{
stuff.timerstarted = true;
return;
}
stuff.spawntimer += Time.deltaTime;
if (stuff.spawntimer >= stuff.spawnduration)
{
HUDManager.Instance.DisplayTip("Spawning thing", stuff.enemytype.ToString(), false, false, "LC_Tip1");
stuff.spawntimer = 0f;
Spawnthing();
}
}
}
}
namespace LethalCompanyTestMod.Patches
{
[HarmonyPatch(typeof(PlayerControllerB))]
public class PlayerControllerBPatch
{
[HarmonyPatch("Update")]
[HarmonyPrefix]
private static void patchControllerUpdate()
{
TestMod.myGUI.guiIsHost = TestMod.isHost;
TestMod.Instance.UpdateCFGVarsFromGUI();
}
[HarmonyPatch("Start")]
[HarmonyPrefix]
private static void getNightVision(ref PlayerControllerB __instance)
{
//IL_003a: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
TestMod.playerRef = __instance;
TestMod.nightVision = ((Behaviour)TestMod.playerRef.nightVision).enabled;
TestMod.nightVisionIntensity = TestMod.playerRef.nightVision.intensity;
TestMod.nightVisionColor = TestMod.playerRef.nightVision.color;
TestMod.nightVisionRange = TestMod.playerRef.nightVision.range;
TestMod.playerRef.nightVision.color = Color.green;
TestMod.playerRef.nightVision.intensity = 1000f;
TestMod.playerRef.nightVision.range = 10000f;
}
[HarmonyPatch("SetNightVisionEnabled")]
[HarmonyPostfix]
private static void updateNightVision()
{
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
if (TestMod.nightVision)
{
TestMod.playerRef.nightVision.color = Color.green;
TestMod.playerRef.nightVision.intensity = 1000f;
TestMod.playerRef.nightVision.range = 10000f;
}
else
{
TestMod.playerRef.nightVision.color = TestMod.nightVisionColor;
TestMod.playerRef.nightVision.intensity = TestMod.nightVisionIntensity;
TestMod.playerRef.nightVision.range = TestMod.nightVisionRange;
}
((Behaviour)TestMod.playerRef.nightVision).enabled = true;
}
[HarmonyPatch("AllowPlayerDeath")]
[HarmonyPrefix]
private static bool OverrideDeath()
{
if (!TestMod.isHost)
{
return true;
}
return !TestMod.enableGod;
}
[HarmonyPatch("Update")]
[HarmonyPostfix]
private static void InfiniteSprint(ref float ___sprintMeter)
{
if (TestMod.EnableInfiniteSprint.Value && TestMod.isHost)
{
Mathf.Clamp(___sprintMeter += 0.02f, 0f, 1f);
}
}
}
}
namespace LethalCompanyTestMod.Component
{
internal class GUILoader : MonoBehaviour
{
private KeyboardShortcut openCloseMenu;
private bool isMenuOpen;
public bool noClipButton;
internal bool wasKeyDown;
private int toolbarInt = 0;
private string[] toolbarStrings = new string[4] { "AI Modification/Spawning", "Host Settings", "Time Settings", "Scrap Settings" };
private int MENUWIDTH = 600;
private int MENUHEIGHT = 800;
private int MENUX;
private int MENUY;
private int ITEMWIDTH = 300;
private int CENTERX;
public bool guiHideCommandMessage;
public bool guiHideEnemySpawnMessages;
public bool guiShouldEnemiesSpawnNaturally;
public bool guiEnableAIModifiers;
public bool guiEnableInfiniteSprint;
public bool guiEnableInfiniteCredits;
public bool guiEnableGod;
public bool guiEnableNightVision;
public bool guiEnableSpeedHack;
public bool guiEnableScrapModifiers;
public bool guiEnableCustomBuyRate;
public bool guiUseRandomBuyRate;
public bool guiUseCustomTimeScale;
public bool guiUseRandomTimeScale;
public bool guiEnableInfiniteDeadline;
public bool guiEnableCustomDeadline;
public bool guiUseRandomDeadline;
public bool guiSpawnButtonPressed;
public string guiServerName;
public string guiRoundPost;
public string guiXPChange;
public string guiSelectedEnemy;
public string guiPrefix;
public int guiMinScrap;
public int guiMaxScrap;
public int guiMinScrapValue;
public int guiMaxScrapValue;
public int guiMinimumDeadline;
public int guiMaximumDeadline;
public float guiSpringSpeed;
public float guiPopupTimer;
public float guiMaxJesterSpeed;
public float guiCrankingTimer;
public float guiJesterResetTimer;
public float guiMinTimeScale;
public float guiMaxTimeScale;
public float guiMinBuyRate;
public float guiMaxBuyRate;
private GUIStyle menuStyle;
private GUIStyle buttonStyle;
private GUIStyle labelStyle;
private GUIStyle toggleStyle;
private GUIStyle hScrollStyle;
public bool guiIsHost;
private void Awake()
{
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0021: Unknown result type (might be due to invalid IL or missing references)
TestMod.mls.LogInfo((object)"GUILoader loaded.");
openCloseMenu = new KeyboardShortcut((KeyCode)277, Array.Empty<KeyCode>());
isMenuOpen = false;
MENUX = Screen.width / 2;
MENUY = Screen.height / 2;
CENTERX = MENUX + (MENUWIDTH / 2 - ITEMWIDTH / 2);
}
private Texture2D MakeTex(int width, int height, Color col)
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Expected O, but got Unknown
Color[] array = (Color[])(object)new Color[width * height];
for (int i = 0; i < array.Length; i++)
{
array[i] = col;
}
Texture2D val = new Texture2D(width, height);
val.SetPixels(array);
val.Apply();
return val;
}
private void intitializeMenu()
{
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_0027: Expected O, but got Unknown
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_003c: Expected O, but got Unknown
//IL_0047: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Expected O, but got Unknown
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Expected O, but got Unknown
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_007b: Expected O, but got Unknown
//IL_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_00b3: 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_0118: Unknown result type (might be due to invalid IL or missing references)
//IL_0145: Unknown result type (might be due to invalid IL or missing references)
//IL_0193: Unknown result type (might be due to invalid IL or missing references)
//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
if (menuStyle == null)
{
menuStyle = new GUIStyle(GUI.skin.box);
buttonStyle = new GUIStyle(GUI.skin.button);
labelStyle = new GUIStyle(GUI.skin.label);
toggleStyle = new GUIStyle(GUI.skin.toggle);
hScrollStyle = new GUIStyle(GUI.skin.horizontalSlider);
menuStyle.normal.textColor = Color.white;
menuStyle.normal.background = MakeTex(2, 2, new Color(0.01f, 0.01f, 0.1f, 0.9f));
menuStyle.fontSize = 18;
((Object)menuStyle.normal.background).hideFlags = (HideFlags)61;
buttonStyle.normal.textColor = Color.white;
buttonStyle.fontSize = 18;
labelStyle.normal.textColor = Color.white;
labelStyle.normal.background = MakeTex(2, 2, new Color(0.01f, 0.01f, 0.1f, 0.9f));
labelStyle.fontSize = 18;
labelStyle.alignment = (TextAnchor)4;
((Object)labelStyle.normal.background).hideFlags = (HideFlags)61;
toggleStyle.normal.textColor = Color.white;
toggleStyle.fontSize = 18;
hScrollStyle.normal.textColor = Color.white;
hScrollStyle.normal.background = MakeTex(2, 2, new Color(0f, 0f, 0.2f, 0.9f));
((Object)hScrollStyle.normal.background).hideFlags = (HideFlags)61;
}
}
public void OnDestroy()
{
TestMod.mls.LogInfo((object)"The GUILoader was destroyed :(");
}
public void Update()
{
if (((KeyboardShortcut)(ref openCloseMenu)).IsDown() && !wasKeyDown)
{
wasKeyDown = true;
}
if (((KeyboardShortcut)(ref openCloseMenu)).IsUp() && wasKeyDown)
{
wasKeyDown = false;
isMenuOpen = !isMenuOpen;
if (isMenuOpen)
{
Cursor.visible = true;
Cursor.lockState = (CursorLockMode)2;
}
else
{
Cursor.visible = false;
}
}
}
public void OnGUI()
{
//IL_0054: Unknown result type (might be due to invalid IL or missing references)
//IL_0088: Unknown result type (might be due to invalid IL or missing references)
//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
//IL_0139: Unknown result type (might be due to invalid IL or missing references)
//IL_0174: Unknown result type (might be due to invalid IL or missing references)
//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
//IL_0240: Unknown result type (might be due to invalid IL or missing references)
//IL_027f: Unknown result type (might be due to invalid IL or missing references)
//IL_02c6: 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_034c: Unknown result type (might be due to invalid IL or missing references)
//IL_038c: Unknown result type (might be due to invalid IL or missing references)
//IL_03cd: Unknown result type (might be due to invalid IL or missing references)
//IL_040f: Unknown result type (might be due to invalid IL or missing references)
//IL_0443: Unknown result type (might be due to invalid IL or missing references)
//IL_0475: Unknown result type (might be due to invalid IL or missing references)
//IL_04ac: Unknown result type (might be due to invalid IL or missing references)
//IL_04e2: Unknown result type (might be due to invalid IL or missing references)
//IL_0523: 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_059a: Unknown result type (might be due to invalid IL or missing references)
//IL_05cf: Unknown result type (might be due to invalid IL or missing references)
//IL_0606: Unknown result type (might be due to invalid IL or missing references)
//IL_063c: Unknown result type (might be due to invalid IL or missing references)
//IL_067d: Unknown result type (might be due to invalid IL or missing references)
//IL_06be: Unknown result type (might be due to invalid IL or missing references)
//IL_06ff: Unknown result type (might be due to invalid IL or missing references)
//IL_0740: Unknown result type (might be due to invalid IL or missing references)
//IL_0786: Unknown result type (might be due to invalid IL or missing references)
//IL_07c4: Unknown result type (might be due to invalid IL or missing references)
//IL_0802: Unknown result type (might be due to invalid IL or missing references)
//IL_0842: Unknown result type (might be due to invalid IL or missing references)
//IL_0889: Unknown result type (might be due to invalid IL or missing references)
//IL_08ca: Unknown result type (might be due to invalid IL or missing references)
//IL_0911: Unknown result type (might be due to invalid IL or missing references)
//IL_0953: Unknown result type (might be due to invalid IL or missing references)
//IL_0994: Unknown result type (might be due to invalid IL or missing references)
//IL_09d4: Unknown result type (might be due to invalid IL or missing references)
//IL_0a1b: Unknown result type (might be due to invalid IL or missing references)
//IL_0a5a: Unknown result type (might be due to invalid IL or missing references)
//IL_0aa1: Unknown result type (might be due to invalid IL or missing references)
//IL_0ae3: Unknown result type (might be due to invalid IL or missing references)
//IL_0b21: Unknown result type (might be due to invalid IL or missing references)
//IL_0b5e: Unknown result type (might be due to invalid IL or missing references)
//IL_0ba5: Unknown result type (might be due to invalid IL or missing references)
//IL_0be4: Unknown result type (might be due to invalid IL or missing references)
//IL_0c2b: Unknown result type (might be due to invalid IL or missing references)
//IL_0c6b: Unknown result type (might be due to invalid IL or missing references)
//IL_0cab: Unknown result type (might be due to invalid IL or missing references)
//IL_0cf2: Unknown result type (might be due to invalid IL or missing references)
//IL_0d33: Unknown result type (might be due to invalid IL or missing references)
//IL_0d7a: Unknown result type (might be due to invalid IL or missing references)
//IL_0dbb: Unknown result type (might be due to invalid IL or missing references)
//IL_0e02: Unknown result type (might be due to invalid IL or missing references)
//IL_0e43: Unknown result type (might be due to invalid IL or missing references)
//IL_0e8a: Unknown result type (might be due to invalid IL or missing references)
if (!guiIsHost)
{
return;
}
if (menuStyle == null)
{
intitializeMenu();
}
if (isMenuOpen)
{
GUI.Box(new Rect((float)MENUX, (float)MENUY, (float)MENUWIDTH, (float)MENUHEIGHT), "GameMaster", menuStyle);
toolbarInt = GUI.Toolbar(new Rect((float)MENUX, (float)(MENUY - 30), (float)MENUWIDTH, 30f), toolbarInt, toolbarStrings, buttonStyle);
switch (toolbarInt)
{
case 0:
guiSelectedEnemy = GUI.TextField(new Rect((float)(MENUX + (MENUWIDTH / 2 - ITEMWIDTH)), (float)(MENUY + 30), (float)ITEMWIDTH, 30f), guiSelectedEnemy);
guiSpawnButtonPressed = GUI.Button(new Rect((float)(MENUX + MENUWIDTH / 2), (float)(MENUY + 30), (float)ITEMWIDTH, 30f), "Spawn Enemy", buttonStyle);
guiSpringSpeed = GUI.HorizontalSlider(new Rect((float)CENTERX, (float)(MENUY + 160), (float)ITEMWIDTH, 30f), guiSpringSpeed, 0.1f, 150f);
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 130), (float)ITEMWIDTH, 30f), "Speed of the CoilHead " + guiSpringSpeed, labelStyle);
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 200), (float)ITEMWIDTH, 30f), "Jester Popup speed " + guiPopupTimer, labelStyle);
guiPopupTimer = GUI.HorizontalSlider(new Rect((float)CENTERX, (float)(MENUY + 230), (float)ITEMWIDTH, 30f), guiPopupTimer, 0.1f, 100f);
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 270), (float)ITEMWIDTH, 30f), "Jester cranking speed " + guiCrankingTimer, labelStyle);
guiCrankingTimer = GUI.HorizontalSlider(new Rect((float)CENTERX, (float)(MENUY + 300), (float)ITEMWIDTH, 30f), guiCrankingTimer, 0.1f, 10f);
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 340), (float)ITEMWIDTH, 30f), "Jester reset speed " + guiJesterResetTimer, labelStyle);
guiJesterResetTimer = GUI.HorizontalSlider(new Rect((float)CENTERX, (float)(MENUY + 370), (float)ITEMWIDTH, 30f), guiJesterResetTimer, 5f, 5000f);
guiEnableAIModifiers = GUI.Toggle(new Rect((float)CENTERX, (float)(MENUY + 410), (float)ITEMWIDTH, 30f), guiEnableAIModifiers, "Enable AI Modifications", toggleStyle);
guiShouldEnemiesSpawnNaturally = GUI.Toggle(new Rect((float)CENTERX, (float)(MENUY + 440), (float)ITEMWIDTH, 30f), guiShouldEnemiesSpawnNaturally, "Should Enemies Spawn Naturally", toggleStyle);
break;
case 1:
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 30), (float)ITEMWIDTH, 30f), "Server Name", labelStyle);
guiServerName = GUI.TextField(new Rect((float)CENTERX, (float)(MENUY + 60), (float)ITEMWIDTH, 30f), guiServerName);
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 100), (float)ITEMWIDTH, 30f), "Server Message", labelStyle);
guiRoundPost = GUI.TextField(new Rect((float)CENTERX, (float)(MENUY + 130), (float)ITEMWIDTH, 30f), guiRoundPost);
guiHideCommandMessage = GUI.Toggle(new Rect((float)CENTERX, (float)(MENUY + 170), (float)ITEMWIDTH, 30f), guiHideCommandMessage, "Hide Command Messages", toggleStyle);
guiHideEnemySpawnMessages = GUI.Toggle(new Rect((float)CENTERX, (float)(MENUY + 200), (float)ITEMWIDTH, 30f), guiHideEnemySpawnMessages, "Hide Enemy Spawn Messages", toggleStyle);
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 230), (float)ITEMWIDTH, 30f), "Command Prefix", labelStyle);
guiPrefix = GUI.TextField(new Rect((float)CENTERX, (float)(MENUY + 260), (float)ITEMWIDTH, 30f), guiPrefix);
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 300), (float)ITEMWIDTH, 30f), "XP Change", labelStyle);
guiXPChange = GUI.TextField(new Rect((float)CENTERX, (float)(MENUY + 330), (float)ITEMWIDTH, 30f), guiXPChange);
guiEnableInfiniteSprint = GUI.Toggle(new Rect((float)CENTERX, (float)(MENUY + 360), (float)ITEMWIDTH, 30f), guiEnableInfiniteSprint, "Infinite Sprint", toggleStyle);
guiEnableInfiniteCredits = GUI.Toggle(new Rect((float)CENTERX, (float)(MENUY + 390), (float)ITEMWIDTH, 30f), guiEnableInfiniteCredits, "Infinite Credits", toggleStyle);
guiEnableGod = GUI.Toggle(new Rect((float)CENTERX, (float)(MENUY + 420), (float)ITEMWIDTH, 30f), guiEnableGod, "God Mode", toggleStyle);
guiEnableNightVision = GUI.Toggle(new Rect((float)CENTERX, (float)(MENUY + 450), (float)ITEMWIDTH, 30f), guiEnableNightVision, "NightVision", toggleStyle);
guiEnableSpeedHack = GUI.Toggle(new Rect((float)CENTERX, (float)(MENUY + 480), (float)ITEMWIDTH, 30f), guiEnableSpeedHack, "SpeedHack", toggleStyle);
break;
case 2:
guiEnableInfiniteDeadline = GUI.Toggle(new Rect((float)CENTERX, (float)(MENUY + 30), (float)(ITEMWIDTH + 100), 30f), guiEnableInfiniteDeadline, "Infinite Deadline(overrides all deadline settings)", toggleStyle);
guiEnableCustomDeadline = GUI.Toggle(new Rect((float)CENTERX, (float)(MENUY + 60), (float)ITEMWIDTH, 30f), guiEnableCustomDeadline, "Custom Deadline", toggleStyle);
guiUseRandomDeadline = GUI.Toggle(new Rect((float)CENTERX, (float)(MENUY + 90), (float)ITEMWIDTH, 30f), guiUseRandomDeadline, "Random Deadline", toggleStyle);
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 130), (float)ITEMWIDTH, 30f), "Minimum Deadline " + guiMinimumDeadline, labelStyle);
guiMinimumDeadline = (int)GUI.HorizontalSlider(new Rect((float)CENTERX, (float)(MENUY + 160), (float)ITEMWIDTH, 30f), (float)guiMinimumDeadline, 1f, 20f);
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 200), (float)ITEMWIDTH, 30f), "Maximum Deadline " + guiMaximumDeadline, labelStyle);
guiMaximumDeadline = (int)GUI.HorizontalSlider(new Rect((float)CENTERX, (float)(MENUY + 230), (float)ITEMWIDTH, 30f), (float)guiMaximumDeadline, 1f, 20f);
guiUseCustomTimeScale = GUI.Toggle(new Rect((float)CENTERX, (float)(MENUY + 270), (float)ITEMWIDTH, 30f), guiUseCustomTimeScale, "Custom Timescale", toggleStyle);
guiUseRandomTimeScale = GUI.Toggle(new Rect((float)CENTERX, (float)(MENUY + 300), (float)ITEMWIDTH, 30f), guiUseRandomTimeScale, "Random Timescale", toggleStyle);
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 330), (float)ITEMWIDTH, 30f), "Minimum Timescale " + guiMinTimeScale, labelStyle);
guiMinTimeScale = GUI.HorizontalSlider(new Rect((float)CENTERX, (float)(MENUY + 360), (float)ITEMWIDTH, 30f), guiMinTimeScale, 0.1f, 10f);
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 400), (float)ITEMWIDTH, 30f), "Maximum Timescale " + guiMaxTimeScale, labelStyle);
guiMaxTimeScale = GUI.HorizontalSlider(new Rect((float)CENTERX, (float)(MENUY + 430), (float)ITEMWIDTH, 30f), guiMaxTimeScale, 0.1f, 10f);
break;
case 3:
guiEnableCustomBuyRate = GUI.Toggle(new Rect((float)CENTERX, (float)(MENUY + 30), (float)ITEMWIDTH, 30f), guiEnableCustomBuyRate, "Custom Buyrate", toggleStyle);
guiUseRandomBuyRate = GUI.Toggle(new Rect((float)CENTERX, (float)(MENUY + 60), (float)ITEMWIDTH, 30f), guiUseRandomBuyRate, "Random Buyrate", toggleStyle);
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 110), (float)ITEMWIDTH, 30f), "Min Buy Rate " + guiMinBuyRate, labelStyle);
guiMinBuyRate = GUI.HorizontalSlider(new Rect((float)CENTERX, (float)(MENUY + 140), (float)ITEMWIDTH, 30f), guiMinBuyRate, -1f, 10f);
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 180), (float)ITEMWIDTH, 30f), "Max Buy Rate " + guiMaxBuyRate, labelStyle);
guiMaxBuyRate = GUI.HorizontalSlider(new Rect((float)CENTERX, (float)(MENUY + 210), (float)ITEMWIDTH, 30f), guiMaxBuyRate, -1f, 10f);
guiEnableScrapModifiers = GUI.Toggle(new Rect((float)CENTERX, (float)(MENUY + 260), (float)ITEMWIDTH, 30f), guiEnableScrapModifiers, "Enable Scrap Modifiers", toggleStyle);
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 310), (float)ITEMWIDTH, 30f), "Minimum Amount of Scrap " + guiMinScrap, labelStyle);
guiMinScrap = (int)GUI.HorizontalSlider(new Rect((float)CENTERX, (float)(MENUY + 340), (float)ITEMWIDTH, 30f), (float)guiMinScrap, 0f, 500f);
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 380), (float)ITEMWIDTH, 30f), "Maximum Amount of Scrap " + guiMaxScrap, labelStyle);
guiMaxScrap = (int)GUI.HorizontalSlider(new Rect((float)CENTERX, (float)(MENUY + 410), (float)ITEMWIDTH, 30f), (float)guiMaxScrap, 0f, 500f);
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 450), (float)ITEMWIDTH, 30f), "Min Scrap Value " + guiMinScrapValue, labelStyle);
guiMinScrapValue = (int)GUI.HorizontalSlider(new Rect((float)CENTERX, (float)(MENUY + 480), (float)ITEMWIDTH, 30f), (float)guiMinScrapValue, 0f, 100000f);
GUI.Label(new Rect((float)CENTERX, (float)(MENUY + 520), (float)ITEMWIDTH, 30f), "Max Scrap Value " + guiMaxScrapValue, labelStyle);
guiMaxScrapValue = (int)GUI.HorizontalSlider(new Rect((float)CENTERX, (float)(MENUY + 550), (float)ITEMWIDTH, 30f), (float)guiMaxScrapValue, 0f, 100000f);
break;
}
}
}
}
}