using System;
using System.Collections;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using GameNetcodeStuff;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using MysteryButton.ExtensionMethod;
using MysteryButton.MonoBehaviors;
using MysteryButton.NetcodePatcher;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.Audio;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Controls;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")]
[assembly: IgnoresAccessChecksTo("UnityEngine")]
[assembly: IgnoresAccessChecksTo("UnityEngine.UI")]
[assembly: AssemblyCompany("MysteryButton")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("A new type of scrap")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("MysteryButton")]
[assembly: AssemblyTitle("MysteryButton")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
[module: NetcodePatchedAssembly]
internal class <Module>
{
static <Module>()
{
}
}
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace MysteryButton
{
[BepInPlugin("gloveman.ScrapButton", "ScrapButton", "1.0.0.0")]
[BepInProcess("Lethal Company.exe")]
public class Plugin : BaseUnityPlugin
{
private const string GUID = "gloveman.ScrapButton";
private AssetBundle assets;
public Item buttonItem;
public ConfigEntry<double> bombChance;
public ConfigEntry<double> floodChance;
private ConfigEntry<int> spawnRate;
public ConfigEntry<bool> leaveScrap;
private readonly Harmony harmony = new Harmony("gloveman.ScrapButton");
public ManualLogSource logger;
public static Plugin Instance;
public GameObject networkManagerObject;
public GameObject indoorFlooding;
private AudioClip waterRush;
private AudioClip burstSFX;
private void Awake()
{
logger = Logger.CreateLogSource("gloveman.ScrapButton");
logger.LogInfo((object)"ScrapButton is awake!");
if ((Object)(object)Instance == (Object)null)
{
Instance = this;
}
bombChance = ((BaseUnityPlugin)this).Config.Bind<double>("General", "Bomb_Chance", 0.3, "Chance that a button press will explode (out of 1)");
floodChance = ((BaseUnityPlugin)this).Config.Bind<double>("General", "Flood_Chance", 0.001, "Chance that a button press will flood the facility (out of 1)");
spawnRate = ((BaseUnityPlugin)this).Config.Bind<int>("General", "Spawn Rate", 20, "How much the device will spawn as scrap. Higher is more common.");
leaveScrap = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Leave Scrap", false, "Should players drop scrap when teleporting with the device?");
assets = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "assets"));
UnpackAssets(assets);
DoPatches();
Type[] types = Assembly.GetExecutingAssembly().GetTypes();
Type[] array = types;
foreach (Type type in array)
{
MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic);
MethodInfo[] array2 = methods;
foreach (MethodInfo methodInfo in array2)
{
object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false);
if (customAttributes.Length != 0)
{
methodInfo.Invoke(null, null);
}
}
}
}
public void UnpackAssets(AssetBundle assetBundle)
{
this.buttonItem = assetBundle.LoadAsset<Item>("Assets/AssetBundles/Bundle/ButtonItem.asset");
Material blueGlow = assetBundle.LoadAsset<Material>("Assets/AssetBundles/Bundle/glow2.mat");
Material redGlow = assetBundle.LoadAsset<Material>("Assets/AssetBundles/Bundle/glow.mat");
AudioClip pressed = assetBundle.LoadAsset<AudioClip>("Assets/AssetBundles/Bundle/Press.ogg");
burstSFX = assetBundle.LoadAsset<AudioClip>("Assets/AssetBundles/Bundle/Burst2.ogg");
waterRush = assetBundle.LoadAsset<AudioClip>("Assets/AssetBundles/Bundle/WaterRush.ogg");
ButtonItem buttonItem = this.buttonItem.spawnPrefab.AddComponent<ButtonItem>();
((GrabbableObject)buttonItem).grabbable = true;
((GrabbableObject)buttonItem).grabbableToEnemies = true;
((GrabbableObject)buttonItem).itemProperties = this.buttonItem;
buttonItem.redGlow = redGlow;
buttonItem.blueGlow = blueGlow;
buttonItem.mainAudio = this.buttonItem.spawnPrefab.GetComponent<AudioSource>();
buttonItem.pressed = pressed;
AudioSource[] componentsInChildren = this.buttonItem.spawnPrefab.GetComponentsInChildren<AudioSource>();
AudioSource[] array = componentsInChildren;
foreach (AudioSource val in array)
{
AudioMixerGroup val2 = val.outputAudioMixerGroup.audioMixer.FindMatchingGroups(((Object)val.outputAudioMixerGroup).name)[0];
if ((Object)(object)val2 != (Object)null)
{
val.outputAudioMixerGroup = val2;
}
}
}
public void DoPatches()
{
//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
//IL_00f9: Expected O, but got Unknown
//IL_0104: Unknown result type (might be due to invalid IL or missing references)
//IL_0112: Expected O, but got Unknown
//IL_011d: Unknown result type (might be due to invalid IL or missing references)
//IL_012b: Expected O, but got Unknown
//IL_0136: Unknown result type (might be due to invalid IL or missing references)
//IL_0144: Expected O, but got Unknown
MethodInfo methodInfo = AccessTools.Method(typeof(Terminal), "Awake", (Type[])null, (Type[])null);
MethodInfo method = typeof(Plugin).GetMethod("TerminalAwake");
MethodInfo methodInfo2 = AccessTools.Method(typeof(StartOfRound), "Update", (Type[])null, (Type[])null);
MethodInfo method2 = typeof(Plugin).GetMethod("Debug");
MethodInfo methodInfo3 = AccessTools.Method(typeof(GameNetworkManager), "Start", (Type[])null, (Type[])null);
MethodInfo method3 = typeof(Plugin).GetMethod("NetworkStart");
MethodInfo methodInfo4 = AccessTools.Method(typeof(StartOfRound), "openingDoorsSequence", (Type[])null, (Type[])null);
MethodInfo method4 = typeof(Plugin).GetMethod("OpenDoors");
MethodInfo methodInfo5 = AccessTools.Method(typeof(EntranceTeleport), "TeleportPlayer", (Type[])null, (Type[])null);
MethodInfo method5 = typeof(Plugin).GetMethod("TeleportPlayer");
harmony.Patch((MethodBase)methodInfo, (HarmonyMethod)null, new HarmonyMethod(method), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
harmony.Patch((MethodBase)methodInfo3, new HarmonyMethod(method3), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
harmony.Patch((MethodBase)methodInfo4, new HarmonyMethod(method4), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
harmony.Patch((MethodBase)methodInfo5, new HarmonyMethod(method5), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
}
public static void TerminalAwake()
{
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Expected O, but got Unknown
StartOfRound instance = StartOfRound.Instance;
SelectableLevel[] levels = instance.levels;
foreach (SelectableLevel val in levels)
{
SpawnableItemWithRarity item = new SpawnableItemWithRarity
{
rarity = Instance.spawnRate.Value,
spawnableItem = Instance.buttonItem
};
if (val.spawnableScrap.TrueForAll((SpawnableItemWithRarity scrap) => (Object)(object)scrap.spawnableItem != (Object)(object)Instance.buttonItem))
{
val.spawnableScrap.Add(item);
}
}
instance.allItemsList.itemsList.Add(Instance.buttonItem);
if ((Object)(object)Instance.indoorFlooding == (Object)null)
{
try
{
Instance.indoorFlooding = Object.Instantiate<GameObject>(GameObject.Find("Systems/GameSystems/TimeAndWeather/Flooding"));
Instance.indoorFlooding.SetActive(false);
Object.Destroy((Object)(object)Instance.indoorFlooding.GetComponent<FloodWeather>());
IndoorFlood indoorFlood = Instance.indoorFlooding.AddComponent<IndoorFlood>();
indoorFlood.waterAudio = Instance.indoorFlooding.GetComponentInChildren<AudioSource>();
indoorFlood.burstSFX = Instance.burstSFX;
indoorFlood.waterRush = Instance.waterRush;
}
catch (Exception ex)
{
Instance.logger.LogError((object)("Encountered error grabbing GameObject: " + ex.Message));
Instance.floodChance.Value = 0.0;
}
}
}
public static void Debug(StartOfRound __instance)
{
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
if (((ButtonControl)Keyboard.current[(Key)94]).wasPressedThisFrame)
{
GameObject val = Object.Instantiate<GameObject>(Instance.buttonItem.spawnPrefab, ((Component)__instance.localPlayerController.gameplayCamera).transform.position, Quaternion.identity);
val.GetComponent<NetworkObject>().Spawn(false);
}
}
public static void NetworkStart(GameNetworkManager __instance)
{
if (!NetworkManager.Singleton.NetworkConfig.Prefabs.Contains(Instance.buttonItem.spawnPrefab))
{
NetworkManager.Singleton.AddNetworkPrefab(Instance.buttonItem.spawnPrefab);
}
}
public static void OpenDoors()
{
ButtonItem.NewSeed();
}
public static void spawnNetPrefab(StartOfRound __instance)
{
if (((NetworkBehaviour)__instance).IsHost)
{
GameObject val = Object.Instantiate<GameObject>(Instance.networkManagerObject);
val.GetComponent<NetworkObject>().Spawn(false);
}
}
public static bool TeleportPlayer(EntranceTeleport __instance)
{
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
if (!__instance.isEntranceToBuilding)
{
return true;
}
IndoorFlood[] array = Object.FindObjectsOfType<IndoorFlood>();
IndoorFlood[] array2 = array;
foreach (IndoorFlood indoorFlood in array2)
{
if (((Behaviour)indoorFlood).enabled && ((Component)indoorFlood).transform.position.y > RoundManager.FindMainEntrancePosition(false, false).y)
{
HUDManager.Instance.DisplayTip("???", "The entrance appears to be blocked.", false, false, "LC_Tip1");
return false;
}
}
return true;
}
}
public static class PluginInfo
{
public const string PLUGIN_GUID = "MysteryButton";
public const string PLUGIN_NAME = "MysteryButton";
public const string PLUGIN_VERSION = "1.0.0";
}
}
namespace MysteryButton.Network
{
public class MyButtonNetworkManager : NetworkBehaviour
{
public static MyButtonNetworkManager instance;
private void Awake()
{
instance = this;
}
protected override void __initializeVariables()
{
((NetworkBehaviour)this).__initializeVariables();
}
protected internal override string __getTypeName()
{
return "MyButtonNetworkManager";
}
}
}
namespace MysteryButton.MonoBehaviors
{
internal class ButtonItem : PhysicsProp
{
private Random random;
private int bomb;
private int flood;
private float boomTimer = 0f;
public AudioSource mainAudio;
public AudioClip beep;
public AudioClip detonate;
public AudioClip pressed;
private Light light;
private MeshRenderer innerRenderer;
public Material redGlow;
public Material blueGlow;
public Material defMat;
private bool lastLit = true;
public bool exploding = false;
public PlayerControllerB playerLastHeldBy;
public AudioClip beamUpAudio;
public AudioClip beamUpAudio2;
public AudioClip tpSFX;
public AudioClip inverseSFX;
private static Random tpSeed;
public override void Start()
{
((GrabbableObject)this).Start();
random = new Random(StartOfRound.Instance.randomMapSeed);
bomb = (int)(Plugin.Instance.bombChance.Value * 10000.0);
flood = 0;
light = ((Component)this).GetComponentInChildren<Light>();
Transform child = ((Component)this).gameObject.transform.GetChild(0).GetChild(4);
innerRenderer = ((Component)child).GetComponent<MeshRenderer>();
defMat = ((Renderer)innerRenderer).GetMaterial();
mainAudio = ((Component)this).gameObject.GetComponent<AudioSource>();
if ((Object)(object)beamUpAudio == (Object)null || (Object)(object)beamUpAudio2 == (Object)null || (Object)(object)tpSFX == (Object)null || (Object)(object)inverseSFX == (Object)null)
{
try
{
Plugin.Instance.logger.LogInfo((object)"Grabbing vanilla assets (2)");
ShipTeleporter[] array = Object.FindObjectsOfType<ShipTeleporter>();
beamUpAudio = array[0].beamUpPlayerBodySFX;
beamUpAudio2 = array[0].teleporterBeamUpSFX;
ShipTeleporter[] array2 = array;
foreach (ShipTeleporter val in array2)
{
if ((Object)(object)tpSFX != (Object)null && (Object)(object)inverseSFX != (Object)null)
{
break;
}
if ((Object)(object)tpSFX == (Object)null && !val.isInverseTeleporter)
{
tpSFX = val.teleporterSpinSFX;
}
if ((Object)(object)inverseSFX == (Object)null && val.isInverseTeleporter)
{
inverseSFX = val.teleporterSpinSFX;
}
}
ButtonItem component = Plugin.Instance.buttonItem.spawnPrefab.GetComponent<ButtonItem>();
if ((Object)(object)component.beamUpAudio == (Object)null || (Object)(object)component.beamUpAudio2 == (Object)null || (Object)(object)component.tpSFX == (Object)null || (Object)(object)inverseSFX == (Object)null)
{
component.beamUpAudio = beamUpAudio;
component.beamUpAudio2 = beamUpAudio2;
component.tpSFX = tpSFX;
component.inverseSFX = inverseSFX;
}
}
catch (Exception ex)
{
Plugin.Instance.logger.LogError((object)("Encountered error grabbing AudioClips: " + ex.Message));
}
}
if (!((Object)(object)beep == (Object)null) && !((Object)(object)detonate == (Object)null))
{
return;
}
try
{
Plugin.Instance.logger.LogInfo((object)"Grabbing vanilla assets (3)");
Landmine componentInChildren = RoundManager.Instance.spawnableMapObjects[0].prefabToSpawn.GetComponentInChildren<Landmine>();
beep = componentInChildren.mineTrigger;
detonate = componentInChildren.mineDetonate;
ButtonItem component2 = Plugin.Instance.buttonItem.spawnPrefab.GetComponent<ButtonItem>();
if ((Object)(object)component2.beep == (Object)null || (Object)(object)component2.detonate == (Object)null)
{
component2.beep = componentInChildren.mineTrigger;
component2.detonate = componentInChildren.mineDetonate;
}
}
catch (Exception ex2)
{
Plugin.Instance.logger.LogError((object)("Encountered error grabbing AudioClips: " + ex2.Message));
}
}
public static void NewSeed()
{
tpSeed = new Random(StartOfRound.Instance.randomMapSeed + 17 + (int)GameNetworkManager.Instance.localPlayerController.playerClientId);
}
public override void ItemActivate(bool used, bool buttonDown = true)
{
//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
((GrabbableObject)this).ItemActivate(used, buttonDown);
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if ((Object)(object)networkManager == (Object)null || !networkManager.IsListening || (Object)(object)((GrabbableObject)this).playerHeldBy == (Object)null)
{
return;
}
((GrabbableObject)this).currentUseCooldown = 3.5f;
ulong playerClientId = ((GrabbableObject)this).playerHeldBy.playerClientId;
mainAudio.PlayOneShot(pressed);
if (!StartOfRound.Instance.inShipPhase)
{
if (((NetworkBehaviour)this).IsHost || ((NetworkBehaviour)this).IsServer)
{
ExecuteButtonPressOnServer(playerClientId);
}
else
{
RequestButtonPressServerRpc();
}
}
}
public override void Update()
{
//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
((GrabbableObject)this).Update();
if ((Object)(object)((GrabbableObject)this).playerHeldBy != (Object)null)
{
playerLastHeldBy = ((GrabbableObject)this).playerHeldBy;
}
if (boomTimer > 0f)
{
boomTimer -= Time.deltaTime;
bool flag = Math.Sin(Math.PI * ((double)boomTimer + 0.1) / 0.2) > 0.0;
if (flag != lastLit)
{
if (flag)
{
((Renderer)innerRenderer).SetMaterial(redGlow);
light.color = Color.red;
((Behaviour)light).enabled = true;
}
else
{
((Renderer)innerRenderer).SetMaterial(defMat);
((Behaviour)light).enabled = false;
}
}
lastLit = flag;
}
else if (exploding)
{
Detonate();
Object.Destroy((Object)(object)((Component)this).gameObject);
}
}
public override void OnDestroy()
{
((MonoBehaviour)this).StopAllCoroutines();
}
public void ExecuteButtonPressOnServer(ulong id)
{
((MonoBehaviour)this).StartCoroutine(DecideFunction(id));
}
public IEnumerator DecideFunction(ulong id)
{
yield return (object)new WaitForSeconds(1f);
int i = random.Next(10000);
if (i < flood)
{
ExecuteFloodOnServer();
}
else if (i < bomb + flood)
{
ExecuteBombTriggerOnServer();
}
else
{
ExecuteTeleportOnServer(id);
}
}
public void ExecuteTeleportOnServer(ulong id)
{
ExecuteTeleportClientRpc(Plugin.Instance.leaveScrap.Value, id);
}
public void ExecuteBombTriggerOnServer()
{
boomTimer = 1.7f;
exploding = true;
StartBlinkingClientRpc();
}
public void Detonate()
{
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
mainAudio.pitch = Random.Range(0.93f, 1.07f);
mainAudio.PlayOneShot(detonate, 1f);
Landmine.SpawnExplosion(((Component)this).transform.position + Vector3.up, true, 1f, 4.4f);
}
public void ExecuteFloodOnServer()
{
if (IndoorFlood.CheckBounds())
{
StartFloodClientRpc();
}
else
{
ExecuteErrorOnServer();
}
}
public void ExecuteErrorOnServer()
{
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_0046: Unknown result type (might be due to invalid IL or missing references)
Plugin.Instance.logger.LogError((object)$"Flood function can't find the level bounds on: ${((Object)RoundManager.Instance.currentLevel).name}. If this is a custom map, please fill out a bug report with a link to the map. For now, get a prize.");
PlayPrizeSoundClientRpc();
GameObject val = Object.Instantiate<GameObject>(GameObject.Find("GoldBar"), ((Component)this).transform.position, Quaternion.identity);
((GrabbableObject)val.GetComponent<PhysicsProp>()).SetScrapValue(210);
val.GetComponent<NetworkObject>().Spawn(false);
Object.Destroy((Object)(object)((Component)this).gameObject);
}
[ClientRpc]
public void PlayPrizeSoundClientRpc()
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(662338345u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 662338345u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
{
mainAudio.PlayOneShot(Object.FindObjectOfType<GiftBoxItem>().openGiftAudio);
}
}
}
[ClientRpc]
public void StartFloodClientRpc()
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2094321251u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2094321251u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
{
((Renderer)innerRenderer).SetMaterial(blueGlow);
light.color = Color.cyan;
((Behaviour)light).enabled = true;
GameObject val3 = Object.Instantiate<GameObject>(Plugin.Instance.indoorFlooding);
val3.SetActive(true);
}
}
}
[ServerRpc(RequireOwnership = false)]
public void RequestButtonPressServerRpc(ServerRpcParams serverRpcParams = default(ServerRpcParams))
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
FastBufferWriter val = ((NetworkBehaviour)this).__beginSendServerRpc(3887845519u, serverRpcParams, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendServerRpc(ref val, 3887845519u, serverRpcParams, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
ulong senderClientId = serverRpcParams.Receive.SenderClientId;
ExecuteButtonPressOnServer(senderClientId);
}
}
}
[ClientRpc]
public void StartBlinkingClientRpc()
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(357737398u, val, (RpcDelivery)0);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 357737398u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
{
boomTimer = 1.7f;
exploding = true;
mainAudio.PlayOneShot(beep);
((Renderer)innerRenderer).SetMaterial(redGlow);
light.color = Color.red;
((Behaviour)light).enabled = true;
}
}
}
[ClientRpc]
public void ExecuteTeleportClientRpc(bool dropScrap, ulong id)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
//IL_00be: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(744666155u, val, (RpcDelivery)0);
((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref dropScrap, default(ForPrimitives));
BytePacker.WriteValueBitPacked(val2, id);
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 744666155u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost))
{
Bounds bounds = StartOfRound.Instance.shipInnerRoomBounds.bounds;
if (((Bounds)(ref bounds)).Contains(((Component)this).transform.position))
{
((MonoBehaviour)this).StartCoroutine(BeamToFactory(dropScrap, id));
}
else
{
((MonoBehaviour)this).StartCoroutine(BeamToShip(dropScrap, id));
}
}
}
public IEnumerator BeamToFactory(bool dropScrap, ulong id)
{
PlayerControllerB playerToTp = ((GrabbableObject)this).playerHeldBy;
if ((Object)(object)((GrabbableObject)this).playerHeldBy == (Object)null)
{
playerToTp = StartOfRound.Instance.allPlayerObjects[(uint)id].GetComponent<PlayerControllerB>();
}
playerToTp.beamOutBuildupParticle.Play();
playerToTp.movementAudio.PlayOneShot(beamUpAudio);
mainAudio.PlayOneShot(inverseSFX, 0.6f);
yield return (object)new WaitForSeconds(5f);
if (!((Object)(object)playerToTp != (Object)null))
{
yield break;
}
Vector3 vector2 = RoundManager.Instance.insideAINodes[tpSeed.Next(0, RoundManager.Instance.insideAINodes.Length)].transform.position;
vector2 = RoundManager.Instance.GetRandomNavMeshPositionInBoxPredictable(vector2, 10f, default(NavMeshHit), tpSeed, -1);
if ((Object)(object)playerToTp.deadBody != (Object)null)
{
DeadBodyInfo deadBody = playerToTp.deadBody;
if ((Object)(object)deadBody != (Object)null)
{
deadBody.attachedTo = null;
deadBody.attachedLimb = null;
deadBody.secondaryAttachedLimb = null;
deadBody.secondaryAttachedTo = null;
if ((Object)(object)deadBody.grabBodyObject != (Object)null && deadBody.grabBodyObject.isHeld && (Object)(object)deadBody.grabBodyObject.playerHeldBy != (Object)null)
{
deadBody.grabBodyObject.playerHeldBy.DropAllHeldItems(true, false);
}
deadBody.isInShip = false;
deadBody.parentedToShip = false;
((Component)deadBody).transform.SetParent((Transform)null, true);
deadBody.SetRagdollPositionSafely(vector2, true);
}
}
else
{
if (dropScrap)
{
playerToTp.DropAllHeldItemsExcept((GrabbableObject)(object)this);
}
playerToTp.isInElevator = false;
playerToTp.isInHangarShipRoom = false;
playerToTp.isInsideFactory = true;
playerToTp.averageVelocity = 0f;
playerToTp.velocityLastFrame = Vector3.zero;
playerToTp.TeleportPlayer(vector2, false, 0f, false, true);
playerToTp.beamOutParticle.Play();
playerToTp.movementAudio.PlayOneShot(beamUpAudio2);
if ((Object)(object)playerToTp == (Object)(object)GameNetworkManager.Instance.localPlayerController)
{
HUDManager.Instance.ShakeCamera((ScreenShakeType)1);
}
}
}
public IEnumerator BeamToShip(bool dropScrap, ulong id)
{
PlayerControllerB playerToTp = ((GrabbableObject)this).playerHeldBy;
if ((Object)(object)((GrabbableObject)this).playerHeldBy == (Object)null)
{
playerToTp = StartOfRound.Instance.allPlayerObjects[(uint)id].GetComponent<PlayerControllerB>();
}
playerToTp.beamUpParticle.Play();
playerToTp.movementAudio.PlayOneShot(beamUpAudio);
mainAudio.PlayOneShot(tpSFX, 0.6f);
ShipTeleporter[] tpers = Object.FindObjectsOfType<ShipTeleporter>();
ShipTeleporter[] array = tpers;
foreach (ShipTeleporter tp2 in array)
{
if (!tp2.isInverseTeleporter)
{
tp2.shipTeleporterAudio.PlayOneShot(tp2.teleporterSpinSFX);
tp2.teleporterAnimator.SetTrigger("useTeleporter");
tp2.cooldownTime = tp2.cooldownAmount;
tp2.buttonTrigger.interactable = false;
break;
}
}
yield return (object)new WaitForSeconds(3f);
ShipTeleporter tpOptional = null;
ShipTeleporter[] tpOptionals = Object.FindObjectsOfType<ShipTeleporter>();
ShipTeleporter[] array2 = tpOptionals;
foreach (ShipTeleporter tp in array2)
{
if (!tp.isInverseTeleporter)
{
tpOptional = tp;
}
}
Vector3 shipPos = ((!((Object)(object)tpOptional != (Object)null)) ? StartOfRound.Instance.middleOfShipNode.position : tpOptional.teleporterPosition.position);
if (!((Object)(object)playerToTp != (Object)null))
{
yield break;
}
if ((Object)(object)playerToTp.deadBody != (Object)null)
{
if ((Object)(object)playerToTp.deadBody.grabBodyObject == (Object)null || !playerToTp.deadBody.grabBodyObject.isHeldByEnemy)
{
playerToTp.deadBody.attachedTo = null;
playerToTp.deadBody.attachedLimb = null;
playerToTp.deadBody.secondaryAttachedLimb = null;
playerToTp.deadBody.secondaryAttachedTo = null;
playerToTp.deadBody.SetRagdollPositionSafely(shipPos, true);
((Component)playerToTp.deadBody).transform.SetParent(StartOfRound.Instance.elevatorTransform, true);
if ((Object)(object)playerToTp.deadBody.grabBodyObject != (Object)null && playerToTp.deadBody.grabBodyObject.isHeld && (Object)(object)playerToTp.deadBody.grabBodyObject.playerHeldBy != (Object)null)
{
playerToTp.deadBody.grabBodyObject.playerHeldBy.DropAllHeldItems(true, false);
}
}
yield break;
}
if (dropScrap)
{
playerToTp.DropAllHeldItemsExcept((GrabbableObject)(object)this);
}
if (Object.op_Implicit((Object)(object)Object.FindObjectOfType<AudioReverbPresets>()))
{
Object.FindObjectOfType<AudioReverbPresets>().audioPresets[3].ChangeAudioReverbForPlayer(playerToTp);
}
playerToTp.isInElevator = true;
playerToTp.isInHangarShipRoom = true;
playerToTp.isInsideFactory = false;
playerToTp.averageVelocity = 0f;
playerToTp.velocityLastFrame = Vector3.zero;
playerToTp.TeleportPlayer(shipPos, true, 160f, false, true);
playerToTp.movementAudio.PlayOneShot(beamUpAudio2);
if (GameNetworkManager.Instance.localPlayerController.isInHangarShipRoom)
{
HUDManager.Instance.ShakeCamera((ScreenShakeType)1);
}
playerToTp.beamUpParticle.Stop();
}
protected override void __initializeVariables()
{
((PhysicsProp)this).__initializeVariables();
}
[RuntimeInitializeOnLoadMethod]
internal static void InitializeRPCS_ButtonItem()
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Expected O, but got Unknown
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: 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_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Expected O, but got Unknown
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Expected O, but got Unknown
NetworkManager.__rpc_func_table.Add(662338345u, new RpcReceiveHandler(__rpc_handler_662338345));
NetworkManager.__rpc_func_table.Add(2094321251u, new RpcReceiveHandler(__rpc_handler_2094321251));
NetworkManager.__rpc_func_table.Add(3887845519u, new RpcReceiveHandler(__rpc_handler_3887845519));
NetworkManager.__rpc_func_table.Add(357737398u, new RpcReceiveHandler(__rpc_handler_357737398));
NetworkManager.__rpc_func_table.Add(744666155u, new RpcReceiveHandler(__rpc_handler_744666155));
}
private static void __rpc_handler_662338345(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0029: 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)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
target.__rpc_exec_stage = (__RpcExecStage)2;
((ButtonItem)(object)target).PlayPrizeSoundClientRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_2094321251(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0029: 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)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
target.__rpc_exec_stage = (__RpcExecStage)2;
((ButtonItem)(object)target).StartFloodClientRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_3887845519(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
ServerRpcParams server = rpcParams.Server;
target.__rpc_exec_stage = (__RpcExecStage)1;
((ButtonItem)(object)target).RequestButtonPressServerRpc(server);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_357737398(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_0029: 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)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
target.__rpc_exec_stage = (__RpcExecStage)2;
((ButtonItem)(object)target).StartBlinkingClientRpc();
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_744666155(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: 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)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
bool dropScrap = default(bool);
((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref dropScrap, default(ForPrimitives));
ulong id = default(ulong);
ByteUnpacker.ReadValueBitPacked(reader, ref id);
target.__rpc_exec_stage = (__RpcExecStage)2;
((ButtonItem)(object)target).ExecuteTeleportClientRpc(dropScrap, id);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
protected internal override string __getTypeName()
{
return "ButtonItem";
}
}
public class IndoorFlood : MonoBehaviour
{
public AudioSource waterAudio;
public AudioClip burstSFX;
public AudioClip waterRush;
public AudioClip warningSFX;
public float entranceY;
public float factoryBoundsY;
public float surfaceBoundsY;
public float floodLevel;
public float age;
public void Awake()
{
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
((Component)this).transform.position = new Vector3(0f, 0f, 0f);
age = 0f;
}
public static bool CheckBounds()
{
float[] array = FindBounds();
float num = array[0];
float num2 = array[1];
if (float.IsNaN(num) || float.IsNaN(num2) || num == num2)
{
return false;
}
return true;
}
public void OnEnable()
{
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
float[] array = FindBounds();
factoryBoundsY = Mathf.Min(array);
surfaceBoundsY = Mathf.Max(array);
((Component)this).transform.position = new Vector3(0f, factoryBoundsY, 0f);
entranceY = RoundManager.FindMainEntrancePosition(false, false).y;
}
public void Start()
{
((MonoBehaviour)this).StartCoroutine(PlayEffects());
}
private static float[] FindBounds()
{
//IL_0046: Unknown result type (might be due to invalid IL or missing references)
int num = 0;
float[] array = new float[2]
{
float.NaN,
float.NaN
};
OutOfBoundsTrigger[] array2 = Object.FindObjectsOfType<OutOfBoundsTrigger>();
OutOfBoundsTrigger[] array3 = array2;
foreach (OutOfBoundsTrigger val in array3)
{
if (((Behaviour)val).enabled)
{
array[num] = ((Component)val).transform.position.y;
num++;
if (num > 1)
{
break;
}
}
}
return array;
}
public void OnDisable()
{
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
waterAudio.volume = 0f;
floodLevel = 0f;
((Component)this).transform.position = new Vector3(0f, -50f, 0f);
}
public void Update()
{
//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
//IL_00da: Unknown result type (might be due to invalid IL or missing references)
//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
//IL_0103: Unknown result type (might be due to invalid IL or missing references)
//IL_0113: Unknown result type (might be due to invalid IL or missing references)
//IL_0085: Unknown result type (might be due to invalid IL or missing references)
age += Time.deltaTime;
if (!GameNetworkManager.Instance.localPlayerController.isInsideFactory)
{
waterAudio.volume = 0f;
return;
}
if (age < 46f)
{
((Component)this).transform.position = new Vector3(0f, Mathf.Lerp(factoryBoundsY, entranceY + 40f, age / 45f), 0f);
}
((Component)waterAudio).transform.position = new Vector3(((Component)GameNetworkManager.Instance.localPlayerController).transform.position.x, ((Component)this).transform.position.y + 3f, ((Component)GameNetworkManager.Instance.localPlayerController).transform.position.z);
if (Physics.Linecast(((Component)GameNetworkManager.Instance.localPlayerController.gameplayCamera).transform.position, ((Component)waterAudio).transform.position, StartOfRound.Instance.collidersAndRoomMaskAndDefault, (QueryTriggerInteraction)1))
{
waterAudio.volume = Mathf.Lerp(waterAudio.volume, 0f, 0.5f * Time.deltaTime);
}
else
{
waterAudio.volume = Mathf.Lerp(waterAudio.volume, 1f, 0.5f * Time.deltaTime);
}
}
public IEnumerator PlayEffects()
{
if (GameNetworkManager.Instance.localPlayerController.isInsideFactory)
{
SoundManager.Instance.PlaySoundAroundLocalPlayer(burstSFX, 1f);
}
else
{
SoundManager.Instance.PlaySoundAroundLocalPlayer(burstSFX, 0.2f);
}
yield return (object)new WaitForSeconds(1f);
if (GameNetworkManager.Instance.localPlayerController.isInsideFactory)
{
HUDManager.Instance.ShakeCamera((ScreenShakeType)3);
}
else
{
HUDManager.Instance.ShakeCamera((ScreenShakeType)0);
}
yield return (object)new WaitForSeconds(2f);
HUDManager.Instance.DisplayFloodWarning();
if (!GameNetworkManager.Instance.localPlayerController.isInsideFactory)
{
}
}
}
}
namespace MysteryButton.ExtensionMethod
{
public static class PlayerControllerExtension
{
public static void DropAllHeldItemsExcept(this PlayerControllerB pcb, GrabbableObject except, bool itemsFall = true, bool disconnecting = false)
{
//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
//IL_00f2: 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_0181: Unknown result type (might be due to invalid IL or missing references)
for (int i = 0; i < pcb.ItemSlots.Length; i++)
{
GrabbableObject val = pcb.ItemSlots[i];
if (!((Object)(object)val != (Object)null) || (Object)(object)val == (Object)(object)except)
{
continue;
}
if (itemsFall)
{
val.parentObject = null;
val.heldByPlayerOnServer = false;
if (pcb.isInElevator)
{
((Component)val).transform.SetParent(pcb.playersManager.elevatorTransform, true);
}
else
{
((Component)val).transform.SetParent(pcb.playersManager.propsContainer, true);
}
pcb.SetItemInElevator(pcb.isInHangarShipRoom, pcb.isInElevator, val);
val.EnablePhysics(true);
val.EnableItemMeshes(true);
((Component)val).transform.localScale = val.originalScale;
val.isHeld = false;
val.isPocketed = false;
val.startFallingPosition = ((Component)val).transform.parent.InverseTransformPoint(((Component)val).transform.position);
val.FallToGround(true);
val.fallTime = Random.Range(-0.3f, 0.05f);
if (((NetworkBehaviour)pcb).IsOwner)
{
val.DiscardItemOnClient();
}
else if (!val.itemProperties.syncDiscardFunction)
{
val.playerHeldBy = null;
}
}
if (((NetworkBehaviour)pcb).IsOwner && !disconnecting)
{
((Behaviour)HUDManager.Instance.holdingTwoHandedItem).enabled = false;
((Behaviour)HUDManager.Instance.itemSlotIcons[i]).enabled = false;
HUDManager.Instance.ClearControlTips();
pcb.activatingItem = false;
}
pcb.ItemSlots[i] = null;
}
if (pcb.isHoldingObject)
{
pcb.isHoldingObject = false;
if ((Object)(object)pcb.currentlyHeldObjectServer != (Object)null)
{
pcb.SetSpecialGrabAnimationBool(false, pcb.currentlyHeldObjectServer);
}
pcb.playerBodyAnimator.SetBool("cancelHolding", true);
pcb.playerBodyAnimator.SetTrigger("Throw");
}
pcb.activatingItem = false;
pcb.twoHanded = false;
pcb.carryWeight = 1f;
pcb.currentlyHeldObjectServer = null;
}
}
public static class HUDManagerExtension
{
public static void DisplayFloodWarning(this HUDManager hm)
{
hm.DisplayTip("Facility is flooding.", "Leave now. You have 45 seconds.", true, false, "LC_Tip1");
}
}
}
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
internal sealed class IgnoresAccessChecksToAttribute : Attribute
{
public IgnoresAccessChecksToAttribute(string assemblyName)
{
}
}
}
namespace MysteryButton.NetcodePatcher
{
[AttributeUsage(AttributeTargets.Module)]
internal class NetcodePatchedAssemblyAttribute : Attribute
{
}
}