using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using MrovLib;
using Unity.Netcode;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: IgnoresAccessChecksTo("ClientNetworkTransform")]
[assembly: IgnoresAccessChecksTo("DissonanceVoip")]
[assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")]
[assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")]
[assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")]
[assembly: IgnoresAccessChecksTo("Unity.Burst")]
[assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")]
[assembly: IgnoresAccessChecksTo("Unity.Collections")]
[assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")]
[assembly: IgnoresAccessChecksTo("Unity.Jobs")]
[assembly: IgnoresAccessChecksTo("Unity.Mathematics")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")]
[assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")]
[assembly: IgnoresAccessChecksTo("Unity.Services.QoS")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Relay")]
[assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")]
[assembly: IgnoresAccessChecksTo("Unity.Timeline")]
[assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")]
[assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.UI")]
[assembly: AssemblyCompany("OrbitRecharge")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyDescription("Recharge all items on ship when in orbit")]
[assembly: AssemblyFileVersion("0.1.0.0")]
[assembly: AssemblyInformationalVersion("0.1.0+0762f91fbde6bae0e83e73675748f906c01c1d93")]
[assembly: AssemblyProduct("OrbitRecharge")]
[assembly: AssemblyTitle("OrbitRecharge")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace OrbitRecharge
{
public class ConfigManager
{
public static ConfigFile configFile;
public static ConfigEntry<bool> TurnOffFlashlights;
public static ConfigEntry<bool> TurnOffWalkies;
public static ConfigEntry<bool> TurnOffBoosters;
public static ConfigEntry<bool> RefillSprayCans;
public static ConfigEntry<bool> RefillTZPs;
public static ConfigEntry<bool> Debug;
public static ConfigManager Instance { get; internal set; }
public static void Init(ConfigFile config)
{
Instance = new ConfigManager(config);
}
public ConfigManager(ConfigFile config)
{
configFile = config;
TurnOffFlashlights = configFile.Bind<bool>("General", "TurnOffFlashlights", true, "Turn off flashlights at the end of the round");
TurnOffWalkies = configFile.Bind<bool>("General", "TurnOffWalkies", true, "Turn off walkies at the end of the round");
TurnOffBoosters = configFile.Bind<bool>("General", "TurnOffBoosters", true, "Turn off boosters at the end of the round");
RefillSprayCans = configFile.Bind<bool>("General", "RefillSprayCans", true, "Refill spray cans at the end of the round");
RefillTZPs = configFile.Bind<bool>("General", "RefillTZPs", true, "Refill TZPs at the end of the round");
Debug = configFile.Bind<bool>("Debug", "Debug", false, "Enable debug logging");
}
}
public class ImprovedBattery : Battery
{
public ImprovedBattery(bool isRechargeable, float charge)
: base(isRechargeable, charge)
{
}
public override string ToString()
{
return $"Charged {base.charge * 100f}%";
}
}
[BepInPlugin("OrbitRecharge", "OrbitRecharge", "0.1.0")]
public class Plugin : BaseUnityPlugin
{
internal static Logger logger;
private void Awake()
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
//IL_0034: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Expected O, but got Unknown
((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin OrbitRecharge is loaded!");
logger = new Logger("OrbitRecharge", ConfigManager.Debug);
ConfigManager.Init(((BaseUnityPlugin)this).Config);
Harmony val = new Harmony("OrbitRecharge");
val.PatchAll();
}
}
[HarmonyPatch(typeof(StartOfRound))]
public static class StartOfRound_SetShipReadyToLand_Patch
{
private static void RechargeItem(GrabbableObject itemToCharge, string playerHeldBy = "on ship")
{
if (!((NetworkBehaviour)StartOfRound.Instance).IsHost)
{
Plugin.logger.LogDebug((object)"Not a host!!");
return;
}
Plugin.logger.LogDebug((object)$"Recharging {itemToCharge.itemProperties.itemName} ({playerHeldBy}) - {Math.Ceiling(itemToCharge.insertedBattery.charge) * 100.0}%");
itemToCharge.SyncBatteryServerRpc(100);
}
[HarmonyPatch("SetShipReadyToLand")]
[HarmonyPrefix]
public static void Prefix(StartOfRound __instance)
{
GrabbableObject[] array = Object.FindObjectsOfType<GrabbableObject>();
GrabbableObject[] array2 = array;
foreach (GrabbableObject val in array2)
{
if (!((Object)(object)val == (Object)null) && val.insertedBattery != null)
{
RechargeItem(val);
}
}
if (ConfigManager.TurnOffFlashlights.Value)
{
FlashlightItem[] array3 = Object.FindObjectsOfType<FlashlightItem>();
FlashlightItem[] array4 = array3;
foreach (FlashlightItem val2 in array4)
{
try
{
if (!((GrabbableObject)val2).heldByPlayerOnServer)
{
val2.SwitchFlashlight(false);
((Behaviour)val2.flashlightBulb).enabled = false;
((Behaviour)val2.flashlightBulbGlow).enabled = false;
((GrabbableObject)val2).isBeingUsed = false;
}
}
catch (Exception ex)
{
Plugin.logger.LogDebug((object)"Failed to turn off flashlight");
Plugin.logger.LogDebug((object)ex);
}
}
}
if (ConfigManager.TurnOffWalkies.Value)
{
WalkieTalkie[] array5 = Object.FindObjectsOfType<WalkieTalkie>();
WalkieTalkie[] array6 = array5;
foreach (WalkieTalkie val3 in array6)
{
try
{
if (!((GrabbableObject)val3).heldByPlayerOnServer)
{
val3.SwitchWalkieTalkieOn(false);
}
}
catch
{
Plugin.logger.LogDebug((object)"Failed to turn off walkie");
}
}
}
if (ConfigManager.TurnOffBoosters.Value)
{
RadarBoosterItem[] array7 = Object.FindObjectsOfType<RadarBoosterItem>();
RadarBoosterItem[] array8 = array7;
foreach (RadarBoosterItem val4 in array8)
{
try
{
val4.EnableRadarBooster(false);
}
catch
{
Plugin.logger.LogDebug((object)"Failed to turn off radar booster");
}
}
}
if (ConfigManager.RefillSprayCans.Value)
{
SprayPaintItem[] array9 = Object.FindObjectsOfType<SprayPaintItem>();
SprayPaintItem[] array10 = array9;
foreach (SprayPaintItem val5 in array10)
{
try
{
val5.sprayCanTank = 100f;
}
catch
{
Plugin.logger.LogDebug((object)"Failed to turn off spray paint");
}
}
}
if (ConfigManager.RefillTZPs.Value)
{
TetraChemicalItem[] array11 = Object.FindObjectsOfType<TetraChemicalItem>();
TetraChemicalItem[] array12 = array11;
foreach (TetraChemicalItem val6 in array12)
{
try
{
val6.fuel = 100f;
}
catch
{
Plugin.logger.LogDebug((object)"Failed to turn off spray paint");
}
}
}
LungProp[] array13 = Object.FindObjectsOfType<LungProp>();
LungProp[] array14 = array13;
foreach (LungProp val7 in array14)
{
try
{
((Component)val7).gameObject.GetComponent<AudioSource>().Stop();
}
catch
{
Plugin.logger.LogDebug((object)"Failed to turn off lung");
}
}
}
}
public static class PluginInfo
{
public const string PLUGIN_GUID = "OrbitRecharge";
public const string PLUGIN_NAME = "OrbitRecharge";
public const string PLUGIN_VERSION = "0.1.0";
}
}
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
internal sealed class IgnoresAccessChecksToAttribute : Attribute
{
public IgnoresAccessChecksToAttribute(string assemblyName)
{
}
}
}