using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using Photon.Pun;
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("REPOrium")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("REPOrium")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("24fbf9a1-d629-45c9-849e-3a0c2671c0d9")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace REPOrium;
[BepInPlugin("chboo1.repo.reporium", "REPOrium", "0.0.1")]
public class REPOrium : BaseUnityPlugin
{
public static ManualLogSource logger;
private static Harmony harmony = null;
public static bool godmode = false;
public static bool fly = false;
public static bool freecam = false;
public static bool infiniteRange = false;
public static bool infiniteStrength = false;
public static bool infiniteStamina = false;
public static bool trueInfiniteStrength = false;
public static bool nodeath = false;
public static bool weakEnemy = false;
public static bool batteryDrain = true;
public static bool verySqueakyHammer = false;
public static bool noTarget = false;
public static bool invisible = false;
public static bool quiet = false;
public static bool infiniteMoney = false;
public static bool doTraps = true;
public static bool itemDamage = true;
public static bool testHallway = false;
public static int previousMoney = -1;
public static float previousGrabStrength = -1f;
public static float previousGrabRange = -1f;
public static int annoyingCount = 0;
public static Level savedLevel = null;
public static Dictionary<string, Object> spawnerKeys;
public static Dictionary<string, EnemySetup> enemySpawnerKeys;
public static bool spawning = false;
public void Awake()
{
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Expected O, but got Unknown
logger = Logger.CreateLogSource("chboo1.repo.reporium");
logger.LogInfo((object)"Loading REPORIUM...");
harmony = new Harmony("chboo1.repo.reporium");
spawnerKeys = new Dictionary<string, Object>();
spawnerKeys.Add("diamond", Resources.Load("valuables/01 tiny/Valuable Diamond"));
spawnerKeys.Add("bracelet", Resources.Load("valuables/01 tiny/Valuable Emerald Bracelet"));
spawnerKeys.Add("goblet", Resources.Load("valuables/01 tiny/Valuable Goblet"));
spawnerKeys.Add("ocarina", Resources.Load("valuables/01 tiny/Valuable Ocarina"));
spawnerKeys.Add("watch", Resources.Load("valuables/01 tiny/Valuable Pocket Watch"));
spawnerKeys.Add("pocketwatch", Resources.Load("valuables/01 tiny/Valuable Pocket Watch"));
spawnerKeys.Add("mug", Resources.Load("valuables/01 tiny/Valuable Uranium Mug"));
spawnerKeys.Add("uraniummug", Resources.Load("valuables/01 tiny/Valuable Uranium Mug"));
logger.LogInfo((object)"Tiny items loaded!");
spawnerKeys.Add("bonsai", Resources.Load("valuables/02 small/Valuable Arctic Bonsai"));
spawnerKeys.Add("hdd", Resources.Load("valuables/02 small/Valuable Arctic HDD"));
spawnerKeys.Add("drive", Resources.Load("valuables/02 small/Valuable Arctic HDD"));
spawnerKeys.Add("harddrive", Resources.Load("valuables/02 small/Valuable Arctic HDD"));
spawnerKeys.Add("book", Resources.Load("valuables/02 small/Valuable Chomp Book"));
spawnerKeys.Add("chompbook", Resources.Load("valuables/02 small/Valuable Chomp Book"));
spawnerKeys.Add("crown", Resources.Load("valuables/02 small/Valuable Crown"));
spawnerKeys.Add("doll", Resources.Load("valuables/02 small/Valuable Doll"));
spawnerKeys.Add("frog", Resources.Load("valuables/02 small/Valuable Frog"));
spawnerKeys.Add("gembox", Resources.Load("valuables/02 small/Valuable Gem Box"));
spawnerKeys.Add("globe", Resources.Load("valuables/02 small/Valuable Globe"));
spawnerKeys.Add("potion", Resources.Load("valuables/02 small/Valuable Love Potion"));
spawnerKeys.Add("lovepotion", Resources.Load("valuables/02 small/Valuable Love Potion"));
spawnerKeys.Add("money", Resources.Load("valuables/02 small/Valuable Money"));
spawnerKeys.Add("musicbox", Resources.Load("valuables/02 small/Valuable Music Box"));
spawnerKeys.Add("monkey", Resources.Load("valuables/02 small/Valuable Toy Monkey"));
spawnerKeys.Add("plate", Resources.Load("valuables/02 small/Valuable Uranium Plate"));
spawnerKeys.Add("uraniumplate", Resources.Load("valuables/02 small/Valuable Uranium Plate"));
spawnerKeys.Add("smallvase", Resources.Load("valuables/02 small/Valuable Vase Small"));
logger.LogInfo((object)"Small items loaded!");
spawnerKeys.Add("3dprinter", Resources.Load("valuables/03 medium/Valuable Arctic 3D Printer"));
spawnerKeys.Add("printer", Resources.Load("valuables/03 medium/Valuable Arctic 3D Printer"));
spawnerKeys.Add("laptop", Resources.Load("valuables/03 medium/Valuable Arctic Laptop"));
spawnerKeys.Add("propane", Resources.Load("valuables/03 medium/Valuable Arctic Propane Tank"));
spawnerKeys.Add("propanetank", Resources.Load("valuables/03 medium/Valuable Arctic Propane Tank"));
spawnerKeys.Add("samplepack", Resources.Load("valuables/03 medium/Valuable Arctic Sample Six Pack"));
spawnerKeys.Add("sample", Resources.Load("valuables/03 medium/Valuable Arctic Sample"));
spawnerKeys.Add("bottle", Resources.Load("valuables/03 medium/Valuable Bottle"));
spawnerKeys.Add("clown", Resources.Load("valuables/03 medium/Valuable Clown"));
spawnerKeys.Add("computer", Resources.Load("valuables/03 medium/Valuable Computer"));
spawnerKeys.Add("fan", Resources.Load("valuables/03 medium/Valuable Fan"));
spawnerKeys.Add("gramophone", Resources.Load("valuables/03 medium/Valuable Gramophone"));
spawnerKeys.Add("table", Resources.Load("valuables/03 medium/Valuable Marble Table"));
spawnerKeys.Add("marbletable", Resources.Load("valuables/03 medium/Valuable Marble Table"));
spawnerKeys.Add("radio", Resources.Load("valuables/03 medium/Valuable Radio"));
spawnerKeys.Add("ship", Resources.Load("valuables/03 medium/Valuable Ship in a bottle"));
spawnerKeys.Add("shipbottle", Resources.Load("valuables/03 medium/Valuable Ship in a bottle"));
spawnerKeys.Add("bottleship", Resources.Load("valuables/03 medium/Valuable Ship in a bottle"));
spawnerKeys.Add("shipinabottle", Resources.Load("valuables/03 medium/Valuable Valuable Ship in a bottle"));
spawnerKeys.Add("trophy", Resources.Load("valuables/03 medium/Valuable Trophy"));
spawnerKeys.Add("vase", Resources.Load("valuables/03 medium/Valuable Vase"));
spawnerKeys.Add("mediumvase", Resources.Load("valuables/03 medium/Valuable Vase"));
spawnerKeys.Add("goblin", Resources.Load("valuables/03 medium/Valuable Wizard Goblin Head"));
spawnerKeys.Add("goblinhead", Resources.Load("valuables/03 medium/Valuable Wizard Goblin Head"));
spawnerKeys.Add("wizardcrystal", Resources.Load("valuables/03 medium/Valuable Wizard Power Crystal"));
spawnerKeys.Add("timeglass", Resources.Load("valuables/03 medium/Valuable Wizard Time Glass"));
spawnerKeys.Add("hourglass", Resources.Load("valuables/03 medium/Valuable Wizard Time Glass"));
logger.LogInfo((object)"Medium items loaded!");
spawnerKeys.Add("barrel", Resources.Load("valuables/04 big/Valuable Arctic Barrel"));
spawnerKeys.Add("samplebig", Resources.Load("valuables/04 big/Valuable Arctic Big Sample"));
spawnerKeys.Add("bigsample", Resources.Load("valuables/04 big/Valuable Arctic Big Sample"));
spawnerKeys.Add("leg", Resources.Load("valuables/04 big/Valuable Arctic Creature Leg"));
spawnerKeys.Add("flamethrower", Resources.Load("valuables/04 big/Valuable Arctic Flamethrower"));
spawnerKeys.Add("guitar", Resources.Load("valuables/04 big/Valuable Arctic Guitar"));
spawnerKeys.Add("cooler", Resources.Load("valuables/04 big/Valuable Arctic Sample Cooler"));
spawnerKeys.Add("samplecooler", Resources.Load("valuables/04 big/Valuable Arctic Sample Cooler"));
spawnerKeys.Add("diamonddisplay", Resources.Load("valuables/04 big/Valuable Diamond Display"));
spawnerKeys.Add("saw", Resources.Load("valuables/04 big/Valuable Ice Saw"));
spawnerKeys.Add("icesaw", Resources.Load("valuables/04 big/Valuable Ice Saw"));
spawnerKeys.Add("bigdoll", Resources.Load("valuables/04 big/Valuable Scream Doll"));
spawnerKeys.Add("screamdoll", Resources.Load("valuables/04 big/Valuable Scream Doll"));
spawnerKeys.Add("tv", Resources.Load("valuables/04 big/Valuable Television"));
spawnerKeys.Add("television", Resources.Load("valuables/04 big/Valuable Television"));
spawnerKeys.Add("bigvase", Resources.Load("valuables/04 big/Valuable Vase Big"));
spawnerKeys.Add("vasebig", Resources.Load("valuables/04 big/Valuable Vase big"));
spawnerKeys.Add("cube", Resources.Load("valuables/04 big/Valuable Wizard Cube of Knowledge"));
spawnerKeys.Add("wizardcube", Resources.Load("valuables/04 big/Valuable Wizard Cube of Knowledge"));
spawnerKeys.Add("cubeofknowledge", Resources.Load("valuables/04 big/Valuable Wizard Cube of Knowledge"));
spawnerKeys.Add("bigpotion", Resources.Load("valuables/04 big/Valuable Wizard Master Potion"));
spawnerKeys.Add("masterpotion", Resources.Load("valuables/04 big/Valuable Wizard Master Potion"));
logger.LogInfo((object)"Big items loaded!");
spawnerKeys.Add("crate", Resources.Load("valuables/05 wide/Valuable Animal Crate"));
spawnerKeys.Add("animalcrate", Resources.Load("valuables/05 wide/Valuable Animal Crate"));
spawnerKeys.Add("skeleton", Resources.Load("valuables/05 wide/Valuable Arctic Ice Block"));
spawnerKeys.Add("ice", Resources.Load("valuables/05 wide/Valuable Arctic Ice Block"));
spawnerKeys.Add("iceblock", Resources.Load("valuables/05 wide/Valuable Arctic Ice Block"));
spawnerKeys.Add("dino", Resources.Load("valuables/05 wide/Valuable Dinosaur"));
spawnerKeys.Add("dinosaur", Resources.Load("valuables/05 wide/Valuable Dinosaur"));
spawnerKeys.Add("piano", Resources.Load("valuables/05 wide/Valuable Piano"));
spawnerKeys.Add("griffin", Resources.Load("valuables/05 wide/Valuable Wizard Griffin Statue"));
spawnerKeys.Add("griffinstatue", Resources.Load("valuables/05 wide/Valuable Wizard Griffin Statue"));
logger.LogInfo((object)"Wide items loaded!");
spawnerKeys.Add("sciencestation", Resources.Load("valuables/06 tall/Valuable Arctic Science Station"));
spawnerKeys.Add("harp", Resources.Load("valuables/06 tall/Valuable Harp"));
spawnerKeys.Add("painting", Resources.Load("valuables/06 tall/Valuable Painting"));
spawnerKeys.Add("staff", Resources.Load("valuables/06 tall/Valuable Wizard Dumgolfs Staff"));
spawnerKeys.Add("greatsword", Resources.Load("valuables/06 tall/Valuable Wizard Sword"));
spawnerKeys.Add("wizardsword", Resources.Load("valuables/06 tall/Valuable Wizard Sword"));
logger.LogInfo((object)"Tall items loaded!");
spawnerKeys.Add("server", Resources.Load("valuables/07 very tall/Valuable Arctic Server Rack"));
spawnerKeys.Add("servers", Resources.Load("valuables/07 very tall/Valuable Arctic Server Rack"));
spawnerKeys.Add("serverrack", Resources.Load("valuables/07 very tall/Valuable Arctic Server Rack"));
spawnerKeys.Add("statue", Resources.Load("valuables/07 very tall/Valuable Golden Statue"));
spawnerKeys.Add("goldstatue", Resources.Load("valuables/07 very tall/Valuable Golden Statue"));
spawnerKeys.Add("goldenstatue", Resources.Load("valuables/07 very tall/Valuable Golden Statue"));
spawnerKeys.Add("clock", Resources.Load("valuables/07 very tall/Valuable Grandfather Clock"));
spawnerKeys.Add("grandfatherclock", Resources.Load("valuables/07 very tall/Valuable Grandfather Clock"));
spawnerKeys.Add("broom", Resources.Load("valuables/07 very tall/Valuable Wizard Broom"));
logger.LogInfo((object)"Very tall items loaded!");
spawnerKeys.Add("bigcart", Resources.Load("items/Cart Big"));
spawnerKeys.Add("cart", Resources.Load("items/Item Cart Medium"));
spawnerKeys.Add("smallcart", Resources.Load("items/Item Cart Small"));
spawnerKeys.Add("pocketcart", Resources.Load("items/Item Cart Small"));
spawnerKeys.Add("rechargedrone", Resources.Load("items/Item Drone Battery"));
spawnerKeys.Add("featherdrone", Resources.Load("items/Item Drone Feather"));
spawnerKeys.Add("indestructibledrone", Resources.Load("items/Item Drone Indestructible"));
spawnerKeys.Add("rolldrone", Resources.Load("items/Item Drone Torque"));
spawnerKeys.Add("zerogravitydrone", Resources.Load("items/Item Drone Zero Gravity"));
spawnerKeys.Add("extracttracker", Resources.Load("items/Item Extraction Tracker"));
spawnerKeys.Add("extractiontracker", Resources.Load("items/Item Extraction Tracker"));
spawnerKeys.Add("ducttapegrenade", Resources.Load("items/Item Grenade Duct Taped"));
spawnerKeys.Add("ducttapedgrenade", Resources.Load("items/Item Grenade Duct Taped"));
spawnerKeys.Add("explosivegrenade", Resources.Load("items/Item Grenade Explosive"));
spawnerKeys.Add("humangrenade", Resources.Load("items/Item Grenade Human"));
spawnerKeys.Add("shockwavegrenade", Resources.Load("items/Item Grenade Shockwave"));
spawnerKeys.Add("stungrenade", Resources.Load("items/Item Grenade Stun"));
spawnerKeys.Add("handgun", Resources.Load("items/Item Gun Handgun"));
spawnerKeys.Add("pistol", Resources.Load("items/Item Gun Handgun"));
spawnerKeys.Add("gun", Resources.Load("items/Item Gun Handgun"));
spawnerKeys.Add("shotgun", Resources.Load("items/Item Gun Shotgun"));
spawnerKeys.Add("tranq", Resources.Load("items/Item Gun Tranq"));
spawnerKeys.Add("tranqgun", Resources.Load("items/Item Gun Tranq"));
spawnerKeys.Add("largehealth", Resources.Load("items/Item Health Pack Large"));
spawnerKeys.Add("largehealthpack", Resources.Load("items/Item Health Pack Large"));
spawnerKeys.Add("mediumhealth", Resources.Load("items/Item Health Pack Medium"));
spawnerKeys.Add("mediumhealthpack", Resources.Load("items/Item Health Pack Medium"));
spawnerKeys.Add("smallhealth", Resources.Load("items/Item Health Pack Small"));
spawnerKeys.Add("smallhealthpack", Resources.Load("items/Item Health Pack Small"));
spawnerKeys.Add("bat", Resources.Load("items/Item Melee Baseball Bat"));
spawnerKeys.Add("baseballbat", Resources.Load("items/Item Melee Baseball Bat"));
spawnerKeys.Add("pan", Resources.Load("items/Item Melee Frying Pan"));
spawnerKeys.Add("fryingpan", Resources.Load("items/Item Melee Frying Pan"));
spawnerKeys.Add("squeakyhammer", Resources.Load("items/Item Melee Inflatable Hammer"));
spawnerKeys.Add("inflatablehammer", Resources.Load("items/Item Melee Inflatable Hammer"));
spawnerKeys.Add("sledgehammer", Resources.Load("items/Item Melee Sledge Hammer"));
spawnerKeys.Add("sword", Resources.Load("items/Item Melee Sword"));
spawnerKeys.Add("explosivemine", Resources.Load("items/Item Mine Explosive"));
spawnerKeys.Add("shockwavemine", Resources.Load("items/Item Mine Shockwave"));
spawnerKeys.Add("stunmine", Resources.Load("items/Item Mine Stun"));
spawnerKeys.Add("zerogravityorb", Resources.Load("items/Item Orb Zero Gravity"));
spawnerKeys.Add("powercrystal", Resources.Load("items/Item Power Crystal"));
spawnerKeys.Add("crystal", Resources.Load("items/Item Power Crystal"));
spawnerKeys.Add("rubberduck", Resources.Load("items/Item Rubber Duck"));
spawnerKeys.Add("valuabletracker", Resources.Load("items/Item Valuable Tracker"));
spawnerKeys.Add("scraptracker", Resources.Load("items/Item Valuable Tracker"));
logger.LogInfo((object)"Shop items loaded!");
spawnerKeys.Add("strengthupgrade", Resources.Load("items/Item Upgrade Player Grab Strength"));
spawnerKeys.Add("rangeupgrade", Resources.Load("items/Item Upgrade Player Grab Range"));
spawnerKeys.Add("jumpupgrade", Resources.Load("items/Item Upgrade Player Extra Jump"));
spawnerKeys.Add("extrajumpupgrade", Resources.Load("items/Item Upgrade Player Extra Jump"));
spawnerKeys.Add("throwupgrade", Resources.Load("items/Item Upgrade Player Grab Throw"));
spawnerKeys.Add("staminaupgrade", Resources.Load("items/Item Upgrade Player Energy"));
spawnerKeys.Add("healthupgrade", Resources.Load("items/Item Upgrade Player Health"));
spawnerKeys.Add("speedupgrade", Resources.Load("items/Item Upgrade Player Sprint Speed"));
spawnerKeys.Add("sprintspeedupgrade", Resources.Load("items/Item Upgrade Player Sprint Speed"));
spawnerKeys.Add("tumbleupgrade", Resources.Load("items/Item Upgrade Player Tumble Launch"));
spawnerKeys.Add("launchupgrade", Resources.Load("items/Item Upgrade Player Tumble Launch"));
spawnerKeys.Add("tumblelaunchupgrade", Resources.Load("items/Item Upgrade Player Tumble Launch"));
spawnerKeys.Add("playercountupgrade", Resources.Load("items/Item Upgrade Map Player Count"));
spawnerKeys.Add("mapplayercountupgrade", Resources.Load("items/Item Upgrade Map Player Count"));
logger.LogInfo((object)"Upgrades loaded!");
AddPrefix(typeof(ChatManager), "MessageSend");
AddPrefix(typeof(PlayerHealth), "Update");
AddPrefix(typeof(ExtractionPoint), "Update");
AddPrefix(typeof(EnemyVision), "VisionTrigger");
AddPrefix(typeof(EnemyDirector), "SetInvestigate");
AddPrefix(typeof(PhysGrabber), "Update");
AddPrefix(typeof(RunManager), "Update");
AddPrefix(typeof(PlayerHealth), "Hurt");
AddPrefix(typeof(LevelGenerator), "Generate");
AddPrefix(typeof(ChatManager), "Update");
AddPrefix(typeof(PhysGrabObjectImpactDetector), "Break");
AddPostfix(typeof(ItemBattery), "Update");
AddPrefix(typeof(EnemyHealth), "Hurt");
AddPrefix(typeof(ItemMeleeInflatableHammer), "OnHit");
AddPrefix(typeof(EnemyParent), "Despawn");
AddPrefix(typeof(Enemy), "Update");
AddPrefix(typeof(EnemyAnimal), "Update");
AddPrefix(typeof(EnemyBangDirector), "Update");
AddPrefix(typeof(EnemyBeamer), "Update");
AddPrefix(typeof(EnemyBowtie), "Update");
AddPrefix(typeof(EnemyDuck), "Update");
AddPrefix(typeof(EnemyGnomeDirector), "Update");
AddPrefix(typeof(EnemyHidden), "Update");
AddPrefix(typeof(EnemySlowMouth), "Update");
AddPrefix(typeof(EnemySlowWalker), "Update");
AddPrefix(typeof(EnemyThinMan), "Update");
AddPrefix(typeof(EnemyValuableThrower), "Update");
AddPrefix(typeof(EnemyCeilingEye), "Update");
AddPrefix(typeof(EnemyRobe), "Update");
AddPrefix(typeof(EnemyFloater), "Update");
AddPrefix(typeof(EnemyUpscream), "Update");
AddPrefix(typeof(EnemyTumbler), "Update");
AddPrefix(typeof(EnemyRunner), "Update");
}
public static void AddPostfix(Type type, string funcname)
{
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_0072: Expected O, but got Unknown
MethodInfo methodInfo = AccessTools.Method(type, funcname, (Type[])null, (Type[])null);
MethodInfo methodInfo2 = AccessTools.Method(typeof(REPOrium), type.Name + "_" + funcname + "_Postfix", (Type[])null, (Type[])null);
if (methodInfo == null || methodInfo2 == null)
{
logger.LogInfo((object)"Cannot find original function or postfix!");
}
else
{
harmony.Patch((MethodBase)methodInfo, (HarmonyMethod)null, new HarmonyMethod(methodInfo2), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
}
}
public static void AddPrefix(Type type, string funcname)
{
//IL_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_0072: Expected O, but got Unknown
MethodInfo methodInfo = AccessTools.Method(type, funcname, (Type[])null, (Type[])null);
MethodInfo methodInfo2 = AccessTools.Method(typeof(REPOrium), type.Name + "_" + funcname + "_Prefix", (Type[])null, (Type[])null);
if (methodInfo == null || methodInfo2 == null)
{
logger.LogInfo((object)"Cannot find original function or prefix!");
}
else
{
harmony.Patch((MethodBase)methodInfo, new HarmonyMethod(methodInfo2), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
}
}
public static bool ParseChat(ref string text)
{
//IL_16a4: Unknown result type (might be due to invalid IL or missing references)
//IL_1503: Unknown result type (might be due to invalid IL or missing references)
//IL_1508: Unknown result type (might be due to invalid IL or missing references)
//IL_13c2: Unknown result type (might be due to invalid IL or missing references)
//IL_13c7: Unknown result type (might be due to invalid IL or missing references)
//IL_16c9: Unknown result type (might be due to invalid IL or missing references)
//IL_16ce: Unknown result type (might be due to invalid IL or missing references)
//IL_16dd: Unknown result type (might be due to invalid IL or missing references)
//IL_1533: Unknown result type (might be due to invalid IL or missing references)
//IL_1538: Unknown result type (might be due to invalid IL or missing references)
//IL_1421: Unknown result type (might be due to invalid IL or missing references)
//IL_1592: Unknown result type (might be due to invalid IL or missing references)
//IL_1484: Unknown result type (might be due to invalid IL or missing references)
//IL_15f5: Unknown result type (might be due to invalid IL or missing references)
if (!SemiFunc.IsMasterClientOrSingleplayer())
{
return true;
}
string[] array = text.ToLower().Split(new char[1] { ' ' });
switch (array[0])
{
case "!god":
if (array.Length > 1)
{
if (array[1] == "true" || array[1] == "enable" || array[1] == "enabled" || array[1] == "on")
{
godmode = true;
}
else if (array[1] == "false" || array[1] == "disable" || array[1] == "disabled" || array[1] == "off")
{
godmode = false;
}
}
else
{
godmode = !godmode;
}
logger.LogInfo((object)("Set godmode to " + godmode));
return false;
case "!fly":
if (array.Length > 1)
{
if (array[1] == "true" || array[1] == "enable" || array[1] == "enabled" || array[1] == "on")
{
fly = true;
}
else if (array[1] == "false" || array[1] == "disable" || array[1] == "disabled" || array[1] == "off")
{
fly = false;
}
}
else
{
fly = !fly;
}
return false;
case "!freecam":
if (array.Length > 1)
{
if (array[1] == "true" || array[1] == "enable" || array[1] == "enabled" || array[1] == "on")
{
freecam = true;
}
else if (array[1] == "false" || array[1] == "disable" || array[1] == "disabled" || array[1] == "off")
{
freecam = false;
}
}
else
{
freecam = !freecam;
}
return false;
case "!range":
if (array.Length > 1)
{
if (array[1] == "true" || array[1] == "enable" || array[1] == "enabled" || array[1] == "on")
{
infiniteRange = true;
}
else if (array[1] == "false" || array[1] == "disable" || array[1] == "disabled" || array[1] == "off")
{
infiniteRange = false;
}
}
else
{
infiniteRange = !infiniteRange;
}
logger.LogInfo((object)("Set infiniteRange to " + infiniteRange));
return false;
case "!strength":
if (array.Length > 1)
{
if (array[1] == "true" || array[1] == "enable" || array[1] == "enabled" || array[1] == "on")
{
infiniteStrength = true;
}
else if (array[1] == "false" || array[1] == "disable" || array[1] == "disabled" || array[1] == "off")
{
infiniteStrength = false;
}
}
else
{
infiniteStrength = !infiniteStrength;
}
return false;
case "!toomuchstrength":
if (!trueInfiniteStrength)
{
text = "Only if you say please.";
if (array.Length > 1)
{
if (array[1] == "please")
{
text = "But do you mean it? Say please twice, then.";
if (array[2] == "please")
{
text = "Ok, but are you worthy? Say my name.";
}
}
if (array[1] == "chboo1")
{
text = "Correct, but I still don't know. What's the best item in Lethal Company?";
}
if (array[1] == "hairdryer")
{
text = "Ok, I'll do it. Just say \"doit\"";
}
if (array[1] == "doit")
{
trueInfiniteStrength = true;
}
}
}
else
{
switch (annoyingCount)
{
case 0:
text = "I'm not turning it off.";
break;
case 1:
text = "I said I'm not turning it off.";
break;
case 2:
text = "You made your choice already.";
break;
case 3:
text = "You need to live with it.";
break;
case 4:
text = "Stop it.";
break;
case 5:
text = "I mean it.";
break;
case 6:
text = "One more chance.";
break;
case 7:
Application.Quit();
break;
}
annoyingCount++;
}
return true;
case "!stamina":
if (array.Length > 1)
{
if (array[1] == "true" || array[1] == "enable" || array[1] == "enabled" || array[1] == "on")
{
infiniteStamina = true;
}
else if (array[1] == "false" || array[1] == "disable" || array[1] == "disabled" || array[1] == "off")
{
infiniteStamina = false;
}
}
else
{
infiniteStamina = !infiniteStamina;
}
return false;
case "!nodeath":
if (array.Length > 1)
{
if (array[1] == "true" || array[1] == "enable" || array[1] == "enabled" || array[1] == "on")
{
nodeath = true;
}
else if (array[1] == "false" || array[1] == "disable" || array[1] == "disabled" || array[1] == "off")
{
nodeath = false;
}
}
else
{
nodeath = !nodeath;
}
return false;
case "!weakenemies":
if (array.Length > 1)
{
if (array[1] == "true" || array[1] == "enable" || array[1] == "enabled" || array[1] == "on")
{
weakEnemy = true;
}
else if (array[1] == "false" || array[1] == "disable" || array[1] == "disabled" || array[1] == "off")
{
weakEnemy = false;
}
}
else
{
weakEnemy = !weakEnemy;
}
return false;
case "!battery":
if (array.Length > 1)
{
if (array[1] == "true" || array[1] == "enable" || array[1] == "enabled" || array[1] == "on")
{
batteryDrain = false;
}
else if (array[1] == "false" || array[1] == "disable" || array[1] == "disabled" || array[1] == "off")
{
batteryDrain = true;
}
}
else
{
batteryDrain = !batteryDrain;
}
batteryDrain = !batteryDrain;
return false;
case "!boomhammer":
if (array.Length > 1)
{
if (array[1] == "true" || array[1] == "enable" || array[1] == "enabled" || array[1] == "on")
{
verySqueakyHammer = true;
}
else if (array[1] == "false" || array[1] == "disable" || array[1] == "disabled" || array[1] == "off")
{
verySqueakyHammer = false;
}
}
else
{
verySqueakyHammer = !verySqueakyHammer;
}
return false;
case "!notarget":
if (array.Length > 1)
{
if (array[1] == "true" || array[1] == "enable" || array[1] == "enabled" || array[1] == "on")
{
noTarget = true;
}
else if (array[1] == "false" || array[1] == "disable" || array[1] == "disabled" || array[1] == "off")
{
noTarget = false;
}
}
else
{
noTarget = !noTarget;
}
return false;
case "!invisible":
if (array.Length > 1)
{
if (array[1] == "true" || array[1] == "enable" || array[1] == "enabled" || array[1] == "on")
{
invisible = true;
}
else if (array[1] == "false" || array[1] == "disable" || array[1] == "disabled" || array[1] == "off")
{
invisible = false;
}
}
else
{
invisible = !invisible;
}
return false;
case "!quiet":
if (array.Length > 1)
{
if (array[1] == "true" || array[1] == "enable" || array[1] == "enabled" || array[1] == "on")
{
quiet = true;
}
else if (array[1] == "false" || array[1] == "disable" || array[1] == "disabled" || array[1] == "off")
{
quiet = false;
}
}
else
{
quiet = !quiet;
}
return false;
case "!infinitemoney":
if (array.Length > 1)
{
if (array[1] == "true" || array[1] == "enable" || array[1] == "enabled" || array[1] == "on")
{
infiniteMoney = true;
}
else if (array[1] == "false" || array[1] == "disable" || array[1] == "disabled" || array[1] == "off")
{
infiniteMoney = false;
}
}
else
{
infiniteMoney = !infiniteMoney;
}
return false;
case "!setmap":
if (array.Length > 1)
{
string text2 = array[1];
if (array[1] == "manor")
{
text2 = "Manor";
}
else if (array[1] == "station" || array[1] == "arctic")
{
text2 = "Arctic";
}
else if (array[1] == "school" || array[1] == "academy" || array[1] == "wizard")
{
text2 = "Wizard";
}
foreach (Level level in RunManager.instance.levels)
{
if (level.ResourcePath == text2)
{
savedLevel = level;
break;
}
}
}
return false;
case "!setlevel":
{
int result11 = 0;
if (array.Length > 1 && int.TryParse(array[1], out result11))
{
RunManager.instance.levelsCompleted = result11 - 1;
}
return false;
}
case "!nobreak":
if (array.Length > 1)
{
if (array[1] == "true" || array[1] == "enable" || array[1] == "enabled" || array[1] == "on")
{
itemDamage = false;
}
else if (array[1] == "false" || array[1] == "disable" || array[1] == "disabled" || array[1] == "off")
{
itemDamage = true;
}
}
else
{
itemDamage = !itemDamage;
}
return false;
case "!notraps":
if (array.Length > 1)
{
if (array[1] == "true" || array[1] == "enable" || array[1] == "enabled" || array[1] == "on")
{
doTraps = false;
}
else if (array[1] == "false" || array[1] == "disable" || array[1] == "disabled" || array[1] == "off")
{
doTraps = true;
}
}
else
{
doTraps = !doTraps;
}
return false;
case "!spawn":
{
if (array.Length <= 1)
{
text = "Must provide a thing to spawn!";
return true;
}
int result10 = 1;
if ((Object)(object)PlayerController.instance == (Object)null)
{
text = "No player controller exists! Either you're not yet in a game or something is broken!";
return true;
}
if (array.Length > 2 && (!int.TryParse(array[2], out result10) || result10 <= 0))
{
text = "Second argument must be a non-zero positive integer; the amount to spawn! Using 1.";
result10 = 1;
}
if (array.Length > 1)
{
if (array[1] == "enemy")
{
EnemySetup val = null;
try
{
val = enemySpawnerKeys[array[2]];
}
catch (KeyNotFoundException)
{
if (array[2] == "dredge")
{
text = "It's called 'trudge' you dingus";
return true;
}
val = null;
}
if ((Object)(object)val == (Object)null)
{
text = "Invalid or null enemy to spawn!";
return true;
}
spawning = true;
AccessTools.Field(typeof(LevelGenerator), "EnemiesSpawned").SetValue(LevelGenerator.Instance, -1);
if (val.spawnObjects.Count == 1)
{
for (int i = 0; i < result10; i++)
{
GameObject val2 = Object.Instantiate<GameObject>(val.spawnObjects[0], ((Component)PlayerController.instance).transform.position, Quaternion.identity);
EnemyParent component = val2.GetComponent<EnemyParent>();
if (!((Object)(object)component != (Object)null))
{
continue;
}
AccessTools.Field(typeof(EnemyParent), "SetupDone").SetValue(component, true);
val2.GetComponentInChildren<Enemy>().EnemyTeleported(((Component)PlayerController.instance).transform.position);
EnemyDirector.instance.FirstSpawnPointAdd(component);
EnemyDirector.instance.enemiesSpawned.Add(component);
foreach (PlayerAvatar player in GameDirector.instance.PlayerList)
{
((Enemy)AccessTools.Field(typeof(EnemyParent), "Enemy").GetValue(component)).PlayerAdded(player.photonView.ViewID);
}
}
}
else if (val.spawnObjects.Count > 1)
{
Object.Instantiate<GameObject>(val.spawnObjects[0], ((Component)PlayerController.instance).transform.position, Quaternion.identity);
for (int j = 0; j < result10; j++)
{
GameObject val3 = Object.Instantiate<GameObject>(val.spawnObjects[1], ((Component)PlayerController.instance).transform.position, Quaternion.identity);
EnemyParent component2 = val3.GetComponent<EnemyParent>();
if (!((Object)(object)component2 != (Object)null))
{
continue;
}
AccessTools.Field(typeof(EnemyParent), "SetupDone").SetValue(component2, true);
val3.GetComponentInChildren<Enemy>().EnemyTeleported(((Component)PlayerController.instance).transform.position);
EnemyDirector.instance.FirstSpawnPointAdd(component2);
EnemyDirector.instance.enemiesSpawned.Add(component2);
foreach (PlayerAvatar player2 in GameDirector.instance.PlayerList)
{
((Enemy)AccessTools.Field(typeof(EnemyParent), "Enemy").GetValue(component2)).PlayerAdded(player2.photonView.ViewID);
}
}
}
}
if (array[1] == "item")
{
Object val4 = null;
try
{
val4 = spawnerKeys[array[2]];
}
catch (KeyNotFoundException)
{
val4 = null;
}
if (val4 == (Object)null)
{
text = "Invalid or null object to spawn!";
return true;
}
for (int k = 0; k < result10; k++)
{
Object.Instantiate(val4, ((Component)PlayerController.instance).transform.position + new Vector3((result10 < 50) ? ((float)k * 0.2f) : 0f, 0f, 0f), ((Component)PlayerController.instance).transform.rotation);
}
}
}
return false;
}
case "!upgrade":
if (array.Length < 3 && (array.Length < 2 || array[1] == "playercount"))
{
return true;
}
switch (array[1])
{
case "strength":
{
if (int.TryParse(array[2], out var result9))
{
StatsManager.instance.playerUpgradeStrength[SemiFunc.PlayerGetSteamID(PlayerAvatar.instance)] = result9;
PlayerAvatar.instance.physGrabber.grabStrength = 1f + 0.2f * (float)result9;
}
return false;
}
case "range":
{
if (int.TryParse(array[2], out var result2))
{
StatsManager.instance.playerUpgradeRange[SemiFunc.PlayerGetSteamID(PlayerAvatar.instance)] = result2;
PlayerAvatar.instance.physGrabber.grabRange = 2.5f + 1f * (float)result2;
}
return false;
}
case "health":
{
if (int.TryParse(array[2], out var result8))
{
AccessTools.Field(typeof(PlayerHealth), "health").SetValue(PlayerAvatar.instance.playerHealth, (result8 - StatsManager.instance.playerUpgradeHealth[SemiFunc.PlayerGetSteamID(PlayerAvatar.instance)]) * 20 + (int)AccessTools.Field(typeof(PlayerHealth), "health").GetValue(PlayerAvatar.instance.playerHealth));
AccessTools.Field(typeof(PlayerHealth), "maxHealth").SetValue(PlayerAvatar.instance.playerHealth, 100 + 20 * result8);
StatsManager.instance.playerUpgradeHealth[SemiFunc.PlayerGetSteamID(PlayerAvatar.instance)] = result8;
}
return false;
}
case "stamina":
{
if (int.TryParse(array[2], out var result6))
{
StatsManager.instance.playerUpgradeStamina[SemiFunc.PlayerGetSteamID(PlayerAvatar.instance)] = result6;
PlayerController.instance.EnergyStart = 40 + 10 * result6;
}
return false;
}
case "speed":
{
if (int.TryParse(array[2], out var result5))
{
StatsManager.instance.playerUpgradeSpeed[SemiFunc.PlayerGetSteamID(PlayerAvatar.instance)] = result5;
PlayerController.instance.SprintSpeed = 5f + (float)result5;
}
return false;
}
case "playercount":
{
if (int.TryParse(array[2], out var result3))
{
StatsManager.instance.playerUpgradeMapPlayerCount[SemiFunc.PlayerGetSteamID(PlayerAvatar.instance)] = result3;
}
else if (array.Length > 2)
{
if (array[2] == "true" || array[2] == "enable" || array[2] == "enabled" || array[2] == "on")
{
StatsManager.instance.playerUpgradeMapPlayerCount[SemiFunc.PlayerGetSteamID(PlayerAvatar.instance)] = 1;
}
else if (array[2] == "false" || array[2] == "disable" || array[2] == "disabled" || array[2] == "off")
{
StatsManager.instance.playerUpgradeMapPlayerCount[SemiFunc.PlayerGetSteamID(PlayerAvatar.instance)] = 0;
}
}
else
{
StatsManager.instance.playerUpgradeMapPlayerCount[SemiFunc.PlayerGetSteamID(PlayerAvatar.instance)] = ((StatsManager.instance.playerUpgradeMapPlayerCount[SemiFunc.PlayerGetSteamID(PlayerAvatar.instance)] == 0) ? 1 : 0);
}
AccessTools.Field(typeof(PlayerAvatar), "upgradeMapPlayerCount").SetValue(PlayerAvatar.instance, StatsManager.instance.playerUpgradeMapPlayerCount[SemiFunc.PlayerGetSteamID(PlayerAvatar.instance)]);
return false;
}
case "jump":
{
if (int.TryParse(array[2], out var result7))
{
StatsManager.instance.playerUpgradeExtraJump[SemiFunc.PlayerGetSteamID(PlayerAvatar.instance)] = result7;
AccessTools.Field(typeof(PlayerController), "JumpExtra").SetValue(PlayerController.instance, result7);
}
return false;
}
case "launch":
{
if (int.TryParse(array[2], out var result4))
{
StatsManager.instance.playerUpgradeLaunch[SemiFunc.PlayerGetSteamID(PlayerAvatar.instance)] = result4;
AccessTools.Field(typeof(PlayerTumble), "tumbleLaunch").SetValue(PlayerAvatar.instance.tumble, result4);
}
return false;
}
case "throw":
{
if (int.TryParse(array[2], out var result))
{
StatsManager.instance.playerUpgradeThrow[SemiFunc.PlayerGetSteamID(PlayerAvatar.instance)] = result;
PlayerAvatar.instance.physGrabber.throwStrength = 0.3f * (float)result;
}
return false;
}
default:
text = "Invalid upgrade!";
return true;
}
default:
return true;
}
}
public static bool PhysGrabObjectImpactDetector_Break_Prefix(bool ___isEnemy)
{
if (itemDamage || ___isEnemy)
{
return true;
}
return false;
}
public static void PlayerHealth_Update_Prefix(ref bool ___godMode, PlayerAvatar ___playerAvatar)
{
if ((bool)AccessTools.Field(typeof(PlayerAvatar), "isLocal").GetValue(___playerAvatar))
{
___godMode = godmode;
}
}
public static bool PlayerHealth_Hurt_Prefix(ref int damage, PlayerAvatar ___playerAvatar, int ___health)
{
if ((bool)AccessTools.Field(typeof(PlayerAvatar), "isLocal").GetValue(___playerAvatar) && godmode)
{
return false;
}
if ((bool)AccessTools.Field(typeof(PlayerAvatar), "isLocal").GetValue(___playerAvatar) && nodeath)
{
damage = Math.Min(damage, ___health - 1);
if (damage == 0)
{
return false;
}
}
return true;
}
public static void ExtractionPoint_Update_Prefix(ExtractionPoint __instance, bool ___isShop)
{
if (!___isShop)
{
return;
}
if (infiniteMoney)
{
if (previousMoney < 0)
{
previousMoney = StatsManager.instance.runStats["currency"];
}
StatsManager.instance.runStats["currency"] = 9999;
}
else
{
if (previousMoney >= 0)
{
StatsManager.instance.runStats["currency"] = previousMoney;
}
previousMoney = -1;
}
}
public static bool ChatManager_MessageSend_Prefix(ChatManager __instance, string ___chatMessage)
{
if (___chatMessage != "")
{
return ParseChat(ref ___chatMessage);
}
return true;
}
public static bool EnemyParent_Despawn_Prefix(float ___SpawnedTimeMin, float ___SpawnedTimeMax, ref float ___SpawnedTimer)
{
if (spawning)
{
spawning = false;
___SpawnedTimer = Random.Range(___SpawnedTimeMin, ___SpawnedTimeMax);
return false;
}
return true;
}
public static bool ChatManager_Update_Prefix(ChatManager __instance, PlayerAvatar ___playerAvatar, List<PossessMessageBatch> ___possessBatchQueue, PossessMessageBatch ___currentBatch)
{
//IL_0160: Unknown result type (might be due to invalid IL or missing references)
//IL_0165: Unknown result type (might be due to invalid IL or missing references)
//IL_0167: Unknown result type (might be due to invalid IL or missing references)
//IL_0169: Unknown result type (might be due to invalid IL or missing references)
//IL_016b: Unknown result type (might be due to invalid IL or missing references)
//IL_0182: Expected I4, but got Unknown
AccessTools.Method(typeof(ChatManager), "PossessionActive", (Type[])null, (Type[])null).Invoke(__instance, null);
if (Object.op_Implicit((Object)(object)___playerAvatar) && (bool)AccessTools.Field(typeof(PlayerAvatar), "isDisabled").GetValue(___playerAvatar) && (___possessBatchQueue.Count > 0 || ___currentBatch != null))
{
AccessTools.Method(typeof(ChatManager), "InterruptCurrentPossessBatch", (Type[])null, (Type[])null).Invoke(__instance, null);
}
if (!LevelGenerator.Instance.Generated)
{
AccessTools.Method(typeof(ChatManager), "NewLevelResets", (Type[])null, (Type[])null).Invoke(__instance, null);
return false;
}
AccessTools.Method(typeof(ChatManager), "ImportantFetches", (Type[])null, (Type[])null).Invoke(__instance, null);
AccessTools.Method(typeof(ChatManager), "PossessChatCustomLogic", (Type[])null, (Type[])null).Invoke(__instance, null);
if (!(bool)AccessTools.Field(typeof(ChatManager), "textMeshFetched").GetValue(__instance) || !(bool)AccessTools.Field(typeof(ChatManager), "localPlayerAvatarFetched").GetValue(__instance))
{
return false;
}
ChatState val = (ChatState)AccessTools.Field(typeof(ChatManager), "chatState").GetValue(__instance);
ChatState val2 = val;
switch ((int)val2)
{
case 0:
AccessTools.Method(typeof(ChatManager), "StateInactive", (Type[])null, (Type[])null).Invoke(__instance, null);
break;
case 1:
AccessTools.Method(typeof(ChatManager), "StateActive", (Type[])null, (Type[])null).Invoke(__instance, null);
break;
case 2:
AccessTools.Method(typeof(ChatManager), "StatePossessed", (Type[])null, (Type[])null).Invoke(__instance, null);
break;
case 3:
AccessTools.Method(typeof(ChatManager), "StateSend", (Type[])null, (Type[])null).Invoke(__instance, null);
break;
}
AccessTools.Method(typeof(ChatManager), "PossessChatCustomLogic", (Type[])null, (Type[])null).Invoke(__instance, null);
FieldInfo fieldInfo = AccessTools.Field(typeof(ChatManager), "spamTimer");
if ((float)fieldInfo.GetValue(__instance) > 0f)
{
fieldInfo.SetValue(__instance, (float)fieldInfo.GetValue(__instance) + Time.deltaTime);
}
if (SemiFunc.FPSImpulse15() && (bool)AccessTools.Field(typeof(ChatManager), "betrayalActive").GetValue(__instance) && (bool)AccessTools.Field(typeof(RoomVolumeCheck), "inTruck").GetValue(PlayerController.instance.playerAvatarScript.RoomVolumeCheck))
{
__instance.PossessCancelSelfDestruction();
}
return false;
}
public static bool EnemyVision_VisionTrigger_Prefix(int playerID, PlayerAvatar player, EnemyVision __instance)
{
if (invisible || noTarget)
{
__instance.VisionTriggered[playerID] = false;
__instance.VisionsTriggered[playerID] = 0;
return false;
}
return true;
}
public static bool EnemyDirector_SetInvestigate_Prefix()
{
if (quiet || noTarget)
{
return false;
}
return true;
}
public static void PhysGrabber_Update_Prefix(PhysGrabber __instance)
{
if (infiniteRange)
{
if (previousGrabRange < 0f)
{
previousGrabRange = __instance.grabRange;
}
__instance.grabRange = 9999f;
__instance.maxDistanceFromPlayer = 9999f;
}
else if (previousGrabRange >= 0f)
{
__instance.grabRange = previousGrabRange;
previousGrabRange = -1f;
__instance.maxDistanceFromPlayer = 6f;
}
if (infiniteStrength)
{
if (previousGrabStrength < 0f)
{
previousGrabStrength = __instance.grabStrength;
}
__instance.grabStrength = (trueInfiniteStrength ? 999f : 8f);
}
else if (previousGrabStrength >= 0f)
{
__instance.grabStrength = previousGrabStrength;
previousGrabStrength = -1f;
}
}
public static void ItemBattery_Update_Postfix(ItemBattery __instance, ref int ___batteryLifeInt)
{
if (!batteryDrain)
{
__instance.batteryLife = 100f;
___batteryLifeInt = 6;
}
}
public static bool LevelGenerator_Generate_Prefix(ref IEnumerator __result)
{
if (enemySpawnerKeys == null)
{
enemySpawnerKeys = new Dictionary<string, EnemySetup>();
foreach (EnemySetup item in EnemyDirector.instance.enemiesDifficulty1)
{
if (((Object)item).name == "Enemy - Ceiling Eye")
{
enemySpawnerKeys.Add("peeper", item);
}
if (((Object)item).name == "Enemy - Duck")
{
enemySpawnerKeys.Add("duck", item);
enemySpawnerKeys.Add("apexpredator", item);
}
if (((Object)item).name == "Enemy - Gnome")
{
enemySpawnerKeys.Add("gnome", item);
}
if (((Object)item).name == "Enemy - Slow Mouth")
{
enemySpawnerKeys.Add("spewer", item);
}
if (((Object)item).name == "Enemy - Thin Man")
{
enemySpawnerKeys.Add("shadowchild", item);
}
}
foreach (EnemySetup item2 in EnemyDirector.instance.enemiesDifficulty2)
{
if (((Object)item2).name == "Enemy - Animal")
{
enemySpawnerKeys.Add("animal", item2);
}
if (((Object)item2).name == "Enemy - Bang")
{
enemySpawnerKeys.Add("banger", item2);
}
if (((Object)item2).name == "Enemy - Bowtie")
{
enemySpawnerKeys.Add("bowtie", item2);
}
if (((Object)item2).name == "Enemy - Floater")
{
enemySpawnerKeys.Add("mentalist", item2);
}
if (((Object)item2).name == "Enemy - Hidden")
{
enemySpawnerKeys.Add("hidden", item2);
}
if (((Object)item2).name == "Enemy - Tumbler")
{
enemySpawnerKeys.Add("chef", item2);
}
if (((Object)item2).name == "Enemy - Upscream")
{
enemySpawnerKeys.Add("upscream", item2);
}
if (((Object)item2).name == "Enemy - Valuable Thrower")
{
enemySpawnerKeys.Add("rugrat", item2);
}
}
foreach (EnemySetup item3 in EnemyDirector.instance.enemiesDifficulty3)
{
if (((Object)item3).name == "Enemy - Beamer")
{
enemySpawnerKeys.Add("clown", item3);
}
if (((Object)item3).name == "Enemy - Head")
{
enemySpawnerKeys.Add("headman", item3);
}
if (((Object)item3).name == "Enemy - Robe")
{
enemySpawnerKeys.Add("robe", item3);
}
if (((Object)item3).name == "Enemy - Runner")
{
enemySpawnerKeys.Add("reaper", item3);
}
if (((Object)item3).name == "Enemy - Slow Walker")
{
enemySpawnerKeys.Add("trudge", item3);
}
}
}
if ((Object)(object)RunManager.instance.levelCurrent == (Object)(object)RunManager.instance.levelMainMenu || (Object)(object)RunManager.instance.levelCurrent == (Object)(object)RunManager.instance.levelLobbyMenu || (Object)(object)RunManager.instance.levelCurrent == (Object)(object)RunManager.instance.levelLobby || (Object)(object)RunManager.instance.levelCurrent == (Object)(object)RunManager.instance.levelRecording || (Object)(object)RunManager.instance.levelCurrent == (Object)(object)RunManager.instance.levelTutorial || (Object)(object)RunManager.instance.levelCurrent == (Object)(object)RunManager.instance.levelArena || (Object)(object)RunManager.instance.levelCurrent == (Object)(object)RunManager.instance.levelShop)
{
logger.LogInfo((object)"Skipping");
return true;
}
if ((Object)(object)savedLevel != (Object)null)
{
RunManager.instance.levelCurrent = savedLevel;
savedLevel = null;
}
if (testHallway)
{
__result = testHallwayGeneration();
return false;
}
return true;
}
public static IEnumerator testHallwayGeneration()
{
logger.LogInfo((object)"Executing alternate generation.");
AccessTools.Field(typeof(LevelGenerator), "AllPlayersReady").SetValue(LevelGenerator.Instance, true);
LevelGenerator.Instance.Level = RunManager.instance.levelCurrent;
AccessTools.Field(typeof(RunManager), "levelPrevious").SetValue(RunManager.instance, LevelGenerator.Instance.Level);
LevelGenerator.Instance.State = (LevelState)2;
FieldInfo levelgrid = AccessTools.Field(typeof(LevelGenerator), "LevelGrid");
Tile[,] grid = new Tile[1, 100];
LevelGenerator.Instance.LevelWidth = 1;
LevelGenerator.Instance.LevelHeight = 100;
for (int i = 0; i < 100; i++)
{
grid[0, i] = new Tile
{
x = 0,
y = i,
active = false
};
}
AccessTools.Field(typeof(LevelGenerator), "ModuleAmount").SetValue(LevelGenerator.Instance, 5 + RunManager.instance.levelsCompleted);
AccessTools.Field(typeof(LevelGenerator), "ExtractionAmount").SetValue(LevelGenerator.Instance, (RunManager.instance.levelsCompleted >= 5) ? 3 : ((RunManager.instance.levelsCompleted >= 3) ? 2 : ((RunManager.instance.levelsCompleted >= 1) ? 1 : 0)));
grid[0, 0].active = true;
grid[0, 0].first = true;
yield return null;
for (int j = 0; j < 100; j++)
{
grid[0, j].active = true;
grid[0, j].type = (Type)1;
}
yield return null;
levelgrid.SetValue(LevelGenerator.Instance, grid);
LevelGenerator.Instance.State = (LevelState)3;
GameObject startRoomInstance = Object.Instantiate<GameObject>(LevelGenerator.Instance.Level.StartRooms[Random.Range(0, LevelGenerator.Instance.Level.StartRooms.Count)]);
startRoomInstance.transform.parent = LevelGenerator.Instance.LevelParent.transform;
FieldInfo waitingCoroutine = AccessTools.Field(typeof(LevelGenerator), "waitingForSubCoroutine");
while ((bool)waitingCoroutine.GetValue(LevelGenerator.Instance))
{
yield return null;
}
LevelGenerator.Instance.State = (LevelState)5;
yield return null;
for (int k = 0; k < 100; k++)
{
GameObject spawnedModule = Object.Instantiate<GameObject>(LevelGenerator.Instance.Level.ModulesPassage1[0], new Vector3(0f, 0f, (float)k * 15f + 7.5f), Quaternion.Euler(Vector3.zero));
spawnedModule.transform.parent = LevelGenerator.Instance.LevelParent.transform;
Module spawnedModuleRealModule = spawnedModule.GetComponent<Module>();
AccessTools.Field(typeof(Module), "GridX").SetValue(spawnedModuleRealModule, 0);
AccessTools.Field(typeof(Module), "GridY").SetValue(spawnedModuleRealModule, k);
AccessTools.Field(typeof(Module), "First").SetValue(spawnedModuleRealModule, grid[0, k].first);
if (k != 99)
{
AccessTools.Field(typeof(Module), "ConnectingTop").SetValue(spawnedModuleRealModule, true);
}
AccessTools.Field(typeof(Module), "ConnectingBottom").SetValue(spawnedModuleRealModule, true);
if (k % 10 == 0)
{
yield return null;
}
}
yield return null;
((MonoBehaviour)LevelGenerator.Instance).StartCoroutine("GenerateBlockObjects");
while ((bool)waitingCoroutine.GetValue(LevelGenerator.Instance))
{
yield return null;
}
FieldInfo modulesSpawnedCount = AccessTools.Field(typeof(LevelGenerator), "ModulesSpawned");
while ((int)modulesSpawnedCount.GetValue(LevelGenerator.Instance) < 100)
{
LevelGenerator.Instance.State = (LevelState)7;
yield return (object)new WaitForSeconds(0.1f);
}
EnvironmentDirector.Instance.Setup();
logger.LogInfo((object)LevelGenerator.Instance);
logger.LogInfo((object)LevelGenerator.Instance.Level);
PostProcessing.Instance.Setup();
LevelMusic.instance.Setup();
ConstantMusic.instance.Setup();
LevelGenerator.Instance.ItemSetup();
LevelGenerator.Instance.NavMeshSetup();
LevelGenerator.Instance.PlayerSpawn();
LevelGenerator.Instance.State = (LevelState)15;
AccessTools.Method(typeof(LevelGenerator), "GenerateDone", (Type[])null, (Type[])null).Invoke(LevelGenerator.Instance, new object[0]);
SessionManager.instance.CrownPlayer();
}
public static void RunManager_Update_Prefix()
{
if (infiniteStamina && (Object)(object)PlayerController.instance != (Object)null)
{
PlayerController.instance.EnergyCurrent = PlayerController.instance.EnergyStart;
}
}
public static void EnemyHealth_Hurt_Prefix(ref int _damage, int ___healthCurrent)
{
if (weakEnemy)
{
_damage = ___healthCurrent;
}
}
public static bool ItemMeleeInflatableHammer_OnHit_Prefix(ItemMeleeInflatableHammer __instance, PhotonView ___photonView)
{
if (verySqueakyHammer)
{
if (SemiFunc.IsMultiplayer())
{
___photonView.RPC("ExplosionRPC", (RpcTarget)0, Array.Empty<object>());
}
else
{
__instance.ExplosionRPC();
}
return false;
}
return true;
}
public static void Enemy_Update_Prefix(ref PlayerAvatar ___TargetPlayerAvatar)
{
if (noTarget)
{
___TargetPlayerAvatar = null;
}
}
public static void EnemyAnimal_Update_Prefix(ref PlayerAvatar ___playerTarget)
{
if (noTarget)
{
___playerTarget = null;
}
}
public static void EnemyBangDirector_Update_Prefix(ref PlayerAvatar ___playerTarget)
{
if (noTarget)
{
___playerTarget = null;
}
}
public static void EnemyBeamer_Update_Prefix(ref PlayerAvatar ___playerTarget)
{
if (noTarget)
{
___playerTarget = null;
}
}
public static void EnemyBowtie_Update_Prefix(ref PlayerAvatar ___playerTarget)
{
if (noTarget)
{
___playerTarget = null;
}
}
public static void EnemyDuck_Update_Prefix(ref PlayerAvatar ___playerTarget)
{
if (noTarget)
{
___playerTarget = null;
}
}
public static void EnemyGnomeDirector_Update_Prefix(ref PlayerAvatar ___playerTarget)
{
if (noTarget)
{
___playerTarget = null;
}
}
public static void EnemyHidden_Update_Prefix(ref PlayerAvatar ___playerTarget)
{
if (noTarget)
{
___playerTarget = null;
}
}
public static void EnemySlowMouth_Update_Prefix(ref PlayerAvatar ___playerTarget)
{
if (noTarget)
{
___playerTarget = null;
}
}
public static void EnemyThinMan_Update_Prefix(ref PlayerAvatar ___playerTarget)
{
if (noTarget)
{
___playerTarget = null;
}
}
public static void EnemyValuableThrower_Update_Prefix(ref PlayerAvatar ___playerTarget)
{
if (noTarget)
{
___playerTarget = null;
}
}
public static void EnemyRobe_Update_Prefix(ref PlayerAvatar ___targetPlayer)
{
if (noTarget)
{
___targetPlayer = null;
}
}
public static void EnemyCeilingEye_Update_Prefix(ref PlayerAvatar ___targetPlayer)
{
if (noTarget)
{
___targetPlayer = null;
}
}
public static void EnemyFloater_Update_Prefix(ref PlayerAvatar ___targetPlayer)
{
if (noTarget)
{
___targetPlayer = null;
}
}
public static void EnemyUpscream_Update_Prefix(ref PlayerAvatar ___targetPlayer)
{
if (noTarget)
{
___targetPlayer = null;
}
}
public static void EnemySlowWalker_Update_Prefix(ref PlayerAvatar ___targetPlayer)
{
if (noTarget)
{
___targetPlayer = null;
}
}
public static void EnemyTumbler_Update_Prefix(ref PlayerAvatar ___targetPlayer)
{
if (noTarget)
{
___targetPlayer = null;
}
}
public static void EnemyRunner_Update_Prefix(ref PlayerAvatar ___targetPlayer)
{
if (noTarget)
{
___targetPlayer = null;
}
}
}