using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using BiggerShip.Compatibility;
using BiggerShip.Definitions;
using BiggerShip.Enums;
using BiggerShip.NetcodePatcher;
using BiggerShip.Patches.TooManySuit;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using MrovLib;
using MrovLib.Compatibility;
using MrovLib.Events;
using ScienceBirdTweaks.Patches;
using TooManySuits;
using Unity.AI.Navigation;
using UnityEngine;
using UnityEngine.AI;
using UniversalRadar.Patches;
[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("com.olegknyazev.softmask")]
[assembly: IgnoresAccessChecksTo("DissonanceVoip")]
[assembly: IgnoresAccessChecksTo("EasyTextEffects")]
[assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")]
[assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")]
[assembly: IgnoresAccessChecksTo("MrovLib")]
[assembly: IgnoresAccessChecksTo("ScienceBird.ScienceBirdTweaks")]
[assembly: IgnoresAccessChecksTo("ScienceBird.UniversalRadar")]
[assembly: IgnoresAccessChecksTo("TooManySuits")]
[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: IgnoresAccessChecksTo("WeatherRegistry")]
[assembly: AssemblyCompany("BiggerShip")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyDescription("A template for Lethal Company")]
[assembly: AssemblyFileVersion("1.0.5.0")]
[assembly: AssemblyInformationalVersion("1.0.5+64fe4c6e438d64ec44cfda8676b3d7ed36eb2e98")]
[assembly: AssemblyProduct("BiggerShip")]
[assembly: AssemblyTitle("BiggerShip")]
[assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/AndreyMrovol/LethalTemplate/")]
[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 BiggerShip
{
internal class BuildNavmesh
{
private static Dictionary<GameObject, Vector3> OriginalOffMeshLinkPositions = new Dictionary<GameObject, Vector3>();
private static GameObject NavmeshBlockers;
public static void ReplaceNavmeshes()
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
GameObject val = GameObject.FindGameObjectWithTag("OutsideLevelNavMesh");
if ((Object)(object)val == (Object)null)
{
((Logger)Plugin.debugLogger).LogWarning("No GameObject with tag 'OutsideLevelNavMesh' found");
return;
}
RemoveVanillaNavmesh(val);
ChangeOffMeshLinks(val);
SpawnNavmeshBlockers(val);
RebuildNavmesh(val);
stopwatch.Stop();
((Logger)Plugin.debugLogger).LogDebug($"Navmesh rebuilt in {stopwatch.ElapsedMilliseconds} ms");
}
public static void RemoveVanillaNavmesh(GameObject Environment)
{
GameObject gameObject = ((Component)Environment.transform.Find("NavMeshColliders")).gameObject;
Transform val = gameObject.transform.Find("OffMeshLinks");
if ((Object)(object)val == (Object)null)
{
((Logger)Plugin.debugLogger).LogWarning("No OffMeshLinks found under NavMeshColliders");
return;
}
Transform obj = val.Find("ShipLadder");
if (obj != null)
{
((Component)obj).gameObject.SetActive(false);
}
Transform obj2 = val.Find("ShipLadder2");
if (obj2 != null)
{
((Component)obj2).gameObject.SetActive(false);
}
Transform val2 = gameObject.transform.Find("PlayerShipNavmesh");
if (val2 != null)
{
((Component)val2).gameObject.SetActive(false);
}
}
public static void ChangeOffMeshLinks(GameObject Environment)
{
//IL_0027: Unknown result type (might be due to invalid IL or missing references)
//IL_002d: Expected O, but got Unknown
//IL_004d: Unknown result type (might be due to invalid IL or missing references)
//IL_0052: Unknown result type (might be due to invalid IL or missing references)
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
Transform val = Variables.HangarShip.transform.Find("ShipExtended(Clone)/ShipExtended/ShipNavmesh/OffMeshLinks");
RaycastHit val3 = default(RaycastHit);
foreach (Transform item in val)
{
Transform val2 = item;
GameObject gameObject = ((Component)val2.Find("Bottom")).gameObject;
OffMeshLink component = ((Component)val2).GetComponent<OffMeshLink>();
Vector3 localPosition = component.endTransform.localPosition;
OriginalOffMeshLinkPositions[((Component)val2).gameObject] = localPosition;
if (Physics.Raycast(gameObject.transform.position, Vector3.down, ref val3, 5f, LayerMask.GetMask(new string[2] { "Default", "Room" })))
{
gameObject.transform.position = ((RaycastHit)(ref val3)).point;
component.endTransform = gameObject.transform;
((Logger)Plugin.debugLogger).LogDebug($"Adjusted OffMeshLink {((Object)val2).name} from {localPosition} to {component.endTransform.localPosition}");
}
if (component.costOverride != 0f)
{
component.costOverride = 0f;
}
component.UpdatePositions();
}
}
public static void SpawnNavmeshBlockers(GameObject Environment)
{
//IL_006a: Unknown result type (might be due to invalid IL or missing references)
//IL_008d: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
GameObject val = null;
if ((Object)(object)NavmeshBlockers == (Object)null)
{
val = (NavmeshBlockers = Variables.BiggerShipBundle.LoadAsset<GameObject>("assets/lethalcompany/biggership/navmeshblockerextended.prefab"));
}
if ((Object)(object)val != (Object)null)
{
NavmeshBlockers = Object.Instantiate<GameObject>(val);
NavmeshBlockers.transform.SetParent(Environment.transform);
NavmeshBlockers.transform.position = new Vector3(3.5811f, 0.8754f, -14.5813f);
NavmeshBlockers.transform.rotation = Quaternion.Euler(-90f, 0f, 0f);
NavmeshBlockers.transform.localScale = new Vector3(100f, 100f, 100f);
((Logger)Plugin.debugLogger).LogDebug($"Instantiated NavmeshBlockers at position {NavmeshBlockers.transform.position}");
}
}
public static void RebuildNavmesh(GameObject Environment)
{
Environment.GetComponent<NavMeshSurface>().BuildNavMesh();
}
public static void RestoreOffMeshLinks()
{
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
foreach (KeyValuePair<GameObject, Vector3> originalOffMeshLinkPosition in OriginalOffMeshLinkPositions)
{
if ((Object)(object)originalOffMeshLinkPosition.Key != (Object)null)
{
OffMeshLink component = originalOffMeshLinkPosition.Key.GetComponent<OffMeshLink>();
if ((Object)(object)component != (Object)null)
{
component.endTransform.localPosition = originalOffMeshLinkPosition.Value;
component.UpdatePositions();
}
}
}
}
}
internal class ConfigManager
{
public static ConfigFile configFile;
internal static ConfigEntry<LoggingType> Debug { get; private set; }
internal static ConfigEntry<ChargeStationPlacement> ChargeStation { get; private set; }
internal static ConfigEntry<MagnetLeverPlacement> MagnetLever { get; private set; }
internal static ConfigEntry<DoorControlPanelPlacement> DoorControlPanel { get; private set; }
internal static ConfigEntry<bool> ShipPillars { get; private set; }
internal static ConfigEntry<bool> SuitRack { get; private set; }
public static ConfigManager Instance { get; private set; }
private ConfigManager(ConfigFile config)
{
configFile = config;
Debug = configFile.Bind<LoggingType>("General", "Logging levels", (LoggingType)0, "Enable debug logging");
ChargeStation = configFile.Bind<ChargeStationPlacement>("Placement", "Charge Station", ChargeStationPlacement.Right, "Change the charge station's placement");
MagnetLever = configFile.Bind<MagnetLeverPlacement>("Placement", "Magnet Lever", MagnetLeverPlacement.Front, "Change the magnet lever's placement");
DoorControlPanel = configFile.Bind<DoorControlPanelPlacement>("Placement", "Door Control Panel", DoorControlPanelPlacement.Vanilla, "Change the door control panel's placement");
ShipPillars = configFile.Bind<bool>("Placement", "Pillars", true, "Should the ship have pillars inside?");
SuitRack = configFile.Bind<bool>("Placement", "Suit Rack", true, "Should the ship have a suit rack? This is only visual, the suits will still spawn!");
}
internal static void Init(ConfigFile config)
{
Instance = new ConfigManager(config);
}
}
public class Logger : Logger
{
public Logger(string SourceName, LoggingType defaultLoggingType = 1)
: base(SourceName, defaultLoggingType)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
((Logger)this).ModName = SourceName;
((Logger)this).LogSource = Logger.CreateLogSource("BiggerShip");
((Logger)this)._name = SourceName;
}
public override bool ShouldLog(LoggingType type)
{
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
return LocalConfigManager.Debug.Value >= type;
}
}
public static class PlacementManager
{
public static Dictionary<MagnetLeverPlacement, ObjectNewPosition> MagnetLeverPositions = new Dictionary<MagnetLeverPlacement, ObjectNewPosition>
{
{
MagnetLeverPlacement.Front,
new ObjectNewPosition
{
Name = "MagnetLever",
Position = new Vector3(-7.4955f, 2.114f, -9.733f),
Rotation = new Vector3(90f, 180f, 0f)
}
},
{
MagnetLeverPlacement.Back,
new ObjectNewPosition
{
Name = "MagnetLever",
Position = new Vector3(10.499f, 1.614f, -10.033f),
Rotation = new Vector3(90f, 57.878f, 0f)
}
},
{
MagnetLeverPlacement.Inside,
new ObjectNewPosition
{
Name = "MagnetLever",
Position = new Vector3(9.85f, 2.7868f, -5.5257f),
Rotation = new Vector3(90f, 180f, 0f),
Scale = new Vector3(1.2141f, 1.3141f, 1.4141f)
}
}
};
public static Dictionary<ChargeStationPlacement, ObjectNewPosition> ChargeStationPositions = new Dictionary<ChargeStationPlacement, ObjectNewPosition> {
{
ChargeStationPlacement.Left,
new ObjectNewPosition
{
Name = "ShipModels2b/ChargeStation",
Position = new Vector3(-5.9898f, 1.2561f, -4.902f),
Rotation = new Vector3(270f, 180f, 0f)
}
} };
public static Dictionary<DoorControlPanelPlacement, List<ObjectNewPosition>> DoorControlPanelPositions = new Dictionary<DoorControlPanelPlacement, List<ObjectNewPosition>>
{
{
DoorControlPanelPlacement.Vanilla,
new List<ObjectNewPosition>
{
new ObjectNewPosition
{
Name = "ShipModels2b/MonitorWall/SingleScreen",
Position = new Vector3(-11.798f, -1.186f, -5.1814f)
},
new ObjectNewPosition
{
Name = "AnimatedShipDoor/HangarDoorButtonPanel",
Position = new Vector3(-5.4f, 2.2f, -10.1f)
}
}
},
{
DoorControlPanelPlacement.Compact,
new List<ObjectNewPosition>
{
new ObjectNewPosition
{
Name = "AnimatedShipDoor/HangarDoorButtonPanel",
Position = new Vector3(-6f, 2.188f, -10.446f)
},
new ObjectNewPosition
{
Name = "ShipModels2b/MonitorWall/SingleScreen",
Position = new Vector3(-12.269f, -1.267f, -5.525f)
}
}
}
};
public static void SetNewPlacement(ObjectNewPosition position)
{
//IL_0088: Unknown result type (might be due to invalid IL or missing references)
//IL_008d: Unknown result type (might be due to invalid IL or missing references)
//IL_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_009b: Unknown result type (might be due to invalid IL or missing references)
//IL_0133: Unknown result type (might be due to invalid IL or missing references)
//IL_0138: Unknown result type (might be due to invalid IL or missing references)
//IL_0100: Unknown result type (might be due to invalid IL or missing references)
//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
//IL_0146: Unknown result type (might be due to invalid IL or missing references)
Transform val = Variables.HangarShip.transform.Find(position.Name);
if ((Object)(object)val == (Object)null)
{
Plugin.logger.LogWarning((object)("Object " + position.Name + " not found on ship, skipping."));
return;
}
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append(position.Name + ": ");
if (position.ToRemove)
{
stringBuilder.Append("has been removed.");
Object.Destroy((Object)(object)((Component)val).gameObject);
return;
}
GameObject gameObject = ((Component)val).gameObject;
if (position.Position != Vector3.zero)
{
val.localPosition = position.Position;
if ((Object)(object)gameObject.GetComponent<AutoParentToShip>() != (Object)null)
{
gameObject.GetComponent<AutoParentToShip>().positionOffset = position.Position;
}
stringBuilder.Append("position: " + ((object)(Vector3)(ref position.Position)).ToString() + "; ");
}
if (position.Rotation != Vector3.zero)
{
val.localEulerAngles = position.Rotation;
stringBuilder.Append("rotation: " + ((object)(Vector3)(ref position.Rotation)).ToString() + "; ");
}
if (position.Scale != Vector3.zero)
{
val.localScale = position.Scale;
stringBuilder.Append("scale: " + ((object)(Vector3)(ref position.Scale)).ToString() + "; ");
}
((Logger)Plugin.debugLogger).LogDebug(stringBuilder.ToString());
}
}
[BepInPlugin("BiggerShip", "BiggerShip", "1.0.5")]
[BepInIncompatibility("mborsh.WiderShipMod")]
[BepInIncompatibility("MelanieMelicious.2StoryShip")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class Plugin : BaseUnityPlugin
{
internal static ManualLogSource logger;
internal static Logger debugLogger = new Logger("Debug", (LoggingType)2);
internal static Harmony harmony = new Harmony("BiggerShip");
internal static TooManySuitsCompat TooManySuitsCompat;
internal static ScienceBirdTweaksCompat ScienceBirdTweaksCompat;
internal static UniversalRadarCompat UniversalRadarCompat;
private void Awake()
{
logger = ((BaseUnityPlugin)this).Logger;
harmony.PatchAll();
ConfigManager.Init(((BaseUnityPlugin)this).Config);
logger.LogWarning((object)"Enabling full debug logging!");
ConfigManager.Debug.Value = (LoggingType)2;
EventManager.SceneLoaded.AddListener((ParameterEvent<string>)delegate(string scene)
{
if (scene == "SampleSceneRelay")
{
ReplaceVanillaShip.Init();
}
});
TooManySuitsCompat = new TooManySuitsCompat("TooManySuits");
TooManySuitsCompat.Init();
ScienceBirdTweaksCompat = new ScienceBirdTweaksCompat("ScienceBird.ScienceBirdTweaks");
ScienceBirdTweaksCompat.Init();
UniversalRadarCompat = new UniversalRadarCompat("ScienceBird.UniversalRadar");
UniversalRadarCompat.Init();
((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin BiggerShip is loaded!");
}
}
public static class ReplaceVanillaShip
{
internal static Dictionary<ShipPart, GameObject> vanillaObjects = new Dictionary<ShipPart, GameObject>();
internal static Dictionary<ShipPart, GameObject> replacementObjects = new Dictionary<ShipPart, GameObject>();
internal static GameObject HangarShip
{
get
{
return Variables.HangarShip;
}
set
{
Variables.HangarShip = value;
}
}
public static void Init()
{
HangarShip = GameObject.Find("HangarShip");
vanillaObjects[ShipPart.Plane_001] = ((Component)HangarShip.transform.Find("Plane.001")).gameObject;
vanillaObjects[ShipPart.ShipElectricLights] = ((Component)HangarShip.transform.Find("ShipElectricLights")).gameObject;
if ((Object)(object)Variables.BiggerShipBundle == (Object)null)
{
string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string text = Path.Combine(directoryName, "biggership.assetbundle");
Variables.BiggerShipBundle = AssetBundle.LoadFromFile(text);
if ((Object)(object)Variables.BiggerShipBundle == (Object)null)
{
Plugin.logger.LogError((object)"Failed to load AssetBundle!!!");
return;
}
}
List<string> list = Variables.BiggerShipBundle.GetAllAssetNames().ToList();
foreach (string item in list)
{
((Logger)Plugin.debugLogger).LogWarning("assetname: " + item);
}
ReplaceVanillaObjects();
AlignShipPartsToBiggerShip();
}
public static void ReplaceVanillaObjects()
{
string text = "assets/lethalcompany/biggership/";
foreach (ShipPart value2 in Enum.GetValues(typeof(ShipPart)))
{
GameObject value;
GameObject val = (vanillaObjects.TryGetValue(value2, out value) ? value : null);
string text2 = text + value2.ToString().ToLowerInvariant() + "extended.prefab";
GameObject val2 = Variables.BiggerShipBundle.LoadAsset<GameObject>(text2);
if ((Object)(object)val2 != (Object)null)
{
GameObject val3 = Object.Instantiate<GameObject>(val2, HangarShip.transform);
val3.AddComponent<MeshCollider>();
val3.GetComponent<MeshCollider>().convex = false;
replacementObjects[value2] = val3;
if ((Object)(object)val == (Object)null)
{
((Logger)Plugin.debugLogger).LogCustom($"Vanilla object for {value2} is null, skipping replacement.", (LogLevel)4, (LoggingType)1);
continue;
}
val.SetActive(false);
((Object)val3).name = ((Object)val).name;
Object.Destroy((Object)(object)val);
}
else
{
Plugin.logger.LogError((object)("Failed to load asset for " + text2));
}
}
Variables.RightmostSuitPosition = replacementObjects[ShipPart.SuitRack].transform.Find("RightmostSuitPlacement");
Variables.ShipLights = ((Component)replacementObjects[ShipPart.ShipElectricLights].transform.Find("ShipElectricLights")).GetComponentInChildren<ShipLights>();
if (!ConfigManager.ShipPillars.Value)
{
((Component)replacementObjects[ShipPart.Ship].transform.Find("ShipExtended/ShipWalls/ShipRibs")).gameObject.SetActive(false);
}
if (!ConfigManager.SuitRack.Value)
{
((Component)replacementObjects[ShipPart.SuitRack].transform).gameObject.SetActive(false);
}
Plugin.logger.LogInfo((object)"Replaced vanilla ship parts with bigger versions.");
}
public static void AlignShipPartsToBiggerShip()
{
//IL_002d: 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_0156: Unknown result type (might be due to invalid IL or missing references)
//IL_015b: Unknown result type (might be due to invalid IL or missing references)
//IL_018c: Unknown result type (might be due to invalid IL or missing references)
//IL_0191: Unknown result type (might be due to invalid IL or missing references)
//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
//IL_0264: Unknown result type (might be due to invalid IL or missing references)
//IL_0269: Unknown result type (might be due to invalid IL or missing references)
//IL_027f: Unknown result type (might be due to invalid IL or missing references)
//IL_0284: Unknown result type (might be due to invalid IL or missing references)
//IL_0306: Unknown result type (might be due to invalid IL or missing references)
//IL_030b: Unknown result type (might be due to invalid IL or missing references)
//IL_033c: Unknown result type (might be due to invalid IL or missing references)
//IL_0341: Unknown result type (might be due to invalid IL or missing references)
//IL_0372: Unknown result type (might be due to invalid IL or missing references)
//IL_0377: Unknown result type (might be due to invalid IL or missing references)
//IL_038d: Unknown result type (might be due to invalid IL or missing references)
//IL_0392: Unknown result type (might be due to invalid IL or missing references)
//IL_03f9: Unknown result type (might be due to invalid IL or missing references)
//IL_03fe: Unknown result type (might be due to invalid IL or missing references)
//IL_042f: Unknown result type (might be due to invalid IL or missing references)
//IL_0434: Unknown result type (might be due to invalid IL or missing references)
//IL_0465: Unknown result type (might be due to invalid IL or missing references)
//IL_046a: Unknown result type (might be due to invalid IL or missing references)
//IL_049b: Unknown result type (might be due to invalid IL or missing references)
//IL_04a0: Unknown result type (might be due to invalid IL or missing references)
//IL_04b6: Unknown result type (might be due to invalid IL or missing references)
//IL_04bb: Unknown result type (might be due to invalid IL or missing references)
//IL_04ec: Unknown result type (might be due to invalid IL or missing references)
//IL_04f1: Unknown result type (might be due to invalid IL or missing references)
//IL_0522: Unknown result type (might be due to invalid IL or missing references)
//IL_0527: Unknown result type (might be due to invalid IL or missing references)
//IL_0558: Unknown result type (might be due to invalid IL or missing references)
//IL_055d: Unknown result type (might be due to invalid IL or missing references)
//IL_0573: Unknown result type (might be due to invalid IL or missing references)
//IL_0578: Unknown result type (might be due to invalid IL or missing references)
//IL_05a9: Unknown result type (might be due to invalid IL or missing references)
//IL_05ae: Unknown result type (might be due to invalid IL or missing references)
//IL_0666: Unknown result type (might be due to invalid IL or missing references)
//IL_066b: Unknown result type (might be due to invalid IL or missing references)
//IL_069c: Unknown result type (might be due to invalid IL or missing references)
//IL_06a1: Unknown result type (might be due to invalid IL or missing references)
//IL_06d2: Unknown result type (might be due to invalid IL or missing references)
//IL_06d7: Unknown result type (might be due to invalid IL or missing references)
List<ObjectNewPosition> list = new List<ObjectNewPosition>(44)
{
new ObjectNewPosition
{
Name = "AnimatedShipDoor/HangarDoorButtonPanel",
Position = new Vector3(-6f, 2.188f, -10.446f)
},
new ObjectNewPosition
{
Name = "BezierCurve"
},
new ObjectNewPosition
{
Name = "CatwalkRailLining"
},
new ObjectNewPosition
{
Name = "CatwalkRailLiningB"
},
new ObjectNewPosition
{
Name = "CatwalkShip"
},
new ObjectNewPosition
{
Name = "CatwalkUnderneathSupports"
},
new ObjectNewPosition
{
Name = "Cube.005"
},
new ObjectNewPosition
{
Name = "Cube.006"
},
new ObjectNewPosition
{
Name = "Cube.007"
},
new ObjectNewPosition
{
Name = "Cube.008"
},
new ObjectNewPosition
{
Name = "GiantCylinderMagnet",
Position = new Vector3(2.5f, 2.44f, -11.1f)
},
new ObjectNewPosition
{
Name = "LadderShort",
Position = new Vector3(6.63f, -2.48f, -0.38f)
},
new ObjectNewPosition
{
Name = "LadderShort (1)",
Position = new Vector3(-7f, -2.4955f, -12.2756f)
},
new ObjectNewPosition
{
Name = "LightSwitchContainer"
},
new ObjectNewPosition
{
Name = "MeterBoxDevice.001"
},
new ObjectNewPosition
{
Name = "NurbsPath.002"
},
new ObjectNewPosition
{
Name = "NurbsPath.004"
},
new ObjectNewPosition
{
Name = "OutsideShipRoom/Ladder",
Position = new Vector3(-0.1785f, -0.1324f, -2.65f),
Scale = new Vector3(0.5805f, 0.541f, 0.5805f)
},
new ObjectNewPosition
{
Name = "Pipework2.002"
},
new ObjectNewPosition
{
Name = "Railing"
},
new ObjectNewPosition
{
Name = "RightmostSuitPlacement"
},
new ObjectNewPosition
{
Name = "ScavengerModelSuitParts/Circle.004",
Position = new Vector3(-7.26f, -3.37f, -3.98f)
},
new ObjectNewPosition
{
Name = "ShipElectricLights/LightSwitchContainer",
Position = new Vector3(0.9935f, 1.4172f, -3.036f)
},
new ObjectNewPosition
{
Name = "ShipInnerRoomBoundsTrigger",
Position = new Vector3(1.4367f, 1.781f, -6.7f),
Scale = new Vector3(17.523226f, 5.341722f, 7.51f)
},
new ObjectNewPosition
{
Name = "ShipInside"
},
new ObjectNewPosition
{
Name = "ShipInside.001"
},
new ObjectNewPosition
{
Name = "ShipModels2b/ChargeStation",
Position = new Vector3(0.957f, 1.2561f, -4.802f)
},
new ObjectNewPosition
{
Name = "ShipModels2b/Cube.005 (1)",
Position = new Vector3(-6.192f, 2.637f, -5.18f)
},
new ObjectNewPosition
{
Name = "ShipModels2b/Cube.005 (2)",
Position = new Vector3(-6.29f, 2.64f, -5.18f)
},
new ObjectNewPosition
{
Name = "ShipModels2b/Light",
Position = new Vector3(-6.1517f, 3.23f, -4.5148f),
Rotation = new Vector3(270f, 180f, 0f)
},
new ObjectNewPosition
{
Name = "ShipModels2b/Light (1)",
Position = new Vector3(1.0879f, 3.0727f, -11.8577f)
},
new ObjectNewPosition
{
Name = "ShipModels2b/Light (2)",
Position = new Vector3(-6.1443f, 3.25f, -10.9433f)
},
new ObjectNewPosition
{
Name = "ShipModels2b/Light (3)",
Position = new Vector3(1.0957f, 3.13f, -4.399f),
Rotation = new Vector3(270f, 0f, 0f)
},
new ObjectNewPosition
{
Name = "ShipModels2b/MonitorWall/SingleScreen",
Position = new Vector3(-12.269f, -1.267f, -5.525f)
},
new ObjectNewPosition
{
Name = "ShipRailPosts"
},
new ObjectNewPosition
{
Name = "ShipRails"
},
new ObjectNewPosition
{
Name = "SideMachineryLeft"
},
new ObjectNewPosition
{
Name = "SideMachineryRight"
},
new ObjectNewPosition
{
Name = "Square"
},
new ObjectNewPosition
{
Name = "StorageCloset",
Position = new Vector3(-3.2237f, -0.1303f, -3.3999f)
},
new ObjectNewPosition
{
Name = "Terminal",
Position = new Vector3(6.2022f, 0.9266f, -9.3018f)
},
new ObjectNewPosition
{
Name = "VentEntrance",
Position = new Vector3(1.499f, 0.693f, -10.473f)
},
new ObjectNewPosition
{
Name = "WallInsulator"
},
new ObjectNewPosition
{
Name = "WallInsulator2"
}
};
foreach (ObjectNewPosition item in list)
{
PlacementManager.SetNewPlacement(item);
}
if (ConfigManager.MagnetLever.Value != 0)
{
MagnetLeverPlacement value = ConfigManager.MagnetLever.Value;
if (PlacementManager.MagnetLeverPositions.TryGetValue(value, out var value2))
{
PlacementManager.SetNewPlacement(value2);
}
}
if (ConfigManager.ChargeStation.Value != 0)
{
ChargeStationPlacement value3 = ConfigManager.ChargeStation.Value;
if (PlacementManager.ChargeStationPositions.TryGetValue(value3, out var value4))
{
PlacementManager.SetNewPlacement(value4);
}
}
DoorControlPanelPlacement value5 = ConfigManager.DoorControlPanel.Value;
if (!PlacementManager.DoorControlPanelPositions.TryGetValue(value5, out var value6))
{
return;
}
foreach (ObjectNewPosition item2 in value6)
{
PlacementManager.SetNewPlacement(item2);
}
}
}
public static class Variables
{
public static AssetBundle BiggerShipBundle { get; internal set; }
public static GameObject HangarShip { get; set; }
public static Transform RightmostSuitPosition { get; internal set; }
public static ShipLights ShipLights { get; internal set; }
}
public static class PluginInfo
{
public const string PLUGIN_GUID = "BiggerShip";
public const string PLUGIN_NAME = "BiggerShip";
public const string PLUGIN_VERSION = "1.0.5";
}
}
namespace BiggerShip.Patches
{
[HarmonyPatch(typeof(HangarShipDoor))]
public static class HangarShipDoorStartPatch
{
[HarmonyPostfix]
[HarmonyPatch("Start")]
public static void PatchMethod(HangarShipDoor __instance)
{
((Logger)Plugin.debugLogger).LogDebug("Applying HangarShipDoor Start Patch");
if ((Object)(object)Variables.BiggerShipBundle == (Object)null)
{
Plugin.logger.LogError((object)"BiggerShipBundle is null in HangarShipDoor Start Patch!");
return;
}
RuntimeAnimatorController val = Variables.BiggerShipBundle.LoadAsset<RuntimeAnimatorController>("assets/lethalcompany/biggership/assets/animatedshipdoor.controller");
if ((Object)(object)val == (Object)null)
{
Plugin.logger.LogError((object)"Failed to load AnimatedShipDoor Animator Controller from AssetBundle!");
return;
}
((Component)__instance).gameObject.GetComponent<Animator>().runtimeAnimatorController = val;
if (((CompatibilityBase)Plugin.TooManySuitsCompat).IsModPresent)
{
((Logger)Plugin.debugLogger).LogDebug("Reloading TooManySuits!");
Plugin.TooManySuitsCompat.ReloadSuitRack();
}
}
}
[HarmonyPatch(typeof(RoundManager))]
public static class SpawnOutsideHazardsPatch
{
[HarmonyPostfix]
[HarmonyPatch(typeof(RoundManager), "SpawnOutsideHazards")]
public static void RebakeNavmeshOnLanding(RoundManager __instance)
{
((Logger)Plugin.debugLogger).LogDebug("Patching RoundManager.SpawnOutsideHazards");
BuildNavmesh.ReplaceNavmeshes();
}
}
[HarmonyPatch(typeof(StartOfRound))]
internal class SetPlanetsWeatherPatch
{
[HarmonyPatch("SetPlanetsWeather")]
[HarmonyPostfix]
public static void RestoreOffLinks()
{
BuildNavmesh.RestoreOffMeshLinks();
}
}
[HarmonyPatch(typeof(StartOfRound))]
internal class SuitPositionPatch
{
[HarmonyPatch("PositionSuitsOnRack")]
[HarmonyPostfix]
public static void AdjustSuitPosition(StartOfRound __instance)
{
//IL_0070: Unknown result type (might be due to invalid IL or missing references)
//IL_007b: 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)
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0091: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Unknown result type (might be due to invalid IL or missing references)
//IL_009a: Unknown result type (might be due to invalid IL or missing references)
//IL_009c: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)Variables.BiggerShipBundle == (Object)null)
{
Plugin.logger.LogError((object)"BiggerShipBundle is null, skipping!");
return;
}
UnlockableSuit[] source = Object.FindObjectsOfType<UnlockableSuit>();
UnlockableSuit[] array = source.OrderBy((UnlockableSuit suit) => suit.syncedSuitID.Value).ToArray();
for (int i = 0; i < array.Length; i++)
{
UnlockableItem component = ((Component)array[i]).GetComponent<UnlockableItem>();
AutoParentToShip component2 = ((Component)array[i]).gameObject.GetComponent<AutoParentToShip>();
Vector3 positionOffset = __instance.rightmostSuitPosition.localPosition + __instance.rightmostSuitPosition.forward * 0.18f * (float)i;
component2.positionOffset = positionOffset;
}
}
}
[HarmonyPatch(typeof(StartOfRound))]
public static class StartOfRoundStartPatch
{
[HarmonyPrefix]
[HarmonyPatch(typeof(StartOfRound), "Start")]
[HarmonyBefore(new string[] { "TooManySuits", "mrov.TooManySuits" })]
public static void ChangeRightMostPosition(StartOfRound __instance)
{
((Logger)Plugin.debugLogger).LogDebug("Patching StartOfRound.Start");
__instance.rightmostSuitPosition = ReplaceVanillaShip.replacementObjects[ShipPart.SuitRack].transform.Find("RightmostSuitPlacement");
__instance.shipRoomLights = Variables.ShipLights;
}
}
}
namespace BiggerShip.Patches.TooManySuit
{
internal class TooManySuitsPatches
{
internal static bool DisplaySuitsPrefix(PaginationController __instance)
{
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: 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)
//IL_0143: Unknown result type (might be due to invalid IL or missing references)
//IL_0152: Unknown result type (might be due to invalid IL or missing references)
//IL_015d: Unknown result type (might be due to invalid IL or missing references)
//IL_0162: 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_017d: Unknown result type (might be due to invalid IL or missing references)
//IL_0182: Unknown result type (might be due to invalid IL or missing references)
int num = __instance.CurrentPage * __instance.SuitsPerPage;
int num2 = Mathf.Min(num + __instance.SuitsPerPage, __instance._allSuits.Length);
Transform val = StartOfRound.Instance.rightmostSuitPosition.parent.Find("NurbsPath.002");
Bounds bounds = ((Renderer)((Component)val).GetComponent<MeshRenderer>()).bounds;
float num3 = ((Bounds)(ref bounds)).size.x - 0.3f;
float num4 = num3 / (float)__instance.SuitsPerPage;
int num5 = 0;
for (int i = 0; i < __instance._allSuits.Length; i++)
{
UnlockableSuit val2 = __instance._allSuits[i];
AutoParentToShip component = ((Component)val2).gameObject.GetComponent<AutoParentToShip>();
if (!((Object)(object)component == (Object)null))
{
bool flag = i >= num && i < num2;
Renderer[] componentsInChildren = ((Component)val2).gameObject.GetComponentsInChildren<Renderer>();
foreach (Renderer val3 in componentsInChildren)
{
val3.enabled = flag;
}
Collider[] componentsInChildren2 = ((Component)val2).gameObject.GetComponentsInChildren<Collider>();
foreach (Collider val4 in componentsInChildren2)
{
val4.enabled = flag;
}
InteractTrigger component2 = ((Component)val2).gameObject.GetComponent<InteractTrigger>();
((Behaviour)component2).enabled = flag;
component2.interactable = flag;
if (flag)
{
component.overrideOffset = true;
component.positionOffset = StartOfRound.Instance.rightmostSuitPosition.localPosition + StartOfRound.Instance.rightmostSuitPosition.forward * (num4 * (float)num5);
component.rotationOffset = new Vector3(0f, 90f, 0f);
num5++;
}
}
}
((MonoBehaviour)__instance).StartCoroutine(__instance.UpdateLabel());
return false;
}
internal static bool PatchesPrefix(Patches __instance)
{
//IL_0005: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Expected O, but got Unknown
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_0041: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
GameObject val = new GameObject("TooManySuitsPageLabel");
val.SetActive(false);
RectTransform val2 = val.AddComponent<RectTransform>();
((Transform)val2).SetParent(StartOfRound.Instance.rightmostSuitPosition, false);
((Transform)val2).localPosition = Vector3.zero;
((Transform)val2).localEulerAngles = Vector3.zero;
((Transform)val2).localScale = Vector3.one * TooManySuits.Config.LabelScale * 0.05f;
PaginationController val3 = val.AddComponent<PaginationController>();
val3.SuitsPerPage = (int)((double)TooManySuits.Config.SuitsPerPage * 1.75);
AutoParentToShip val4 = val.AddComponent<AutoParentToShip>();
val4.overrideOffset = true;
val4.positionOffset = new Vector3(-2.125f, 2.958f, -9.902f);
val4.rotationOffset = new Vector3(0f, 180f, 0f);
val.SetActive(true);
TooManySuits.SuitManager.UpdateSuits();
return false;
}
}
}
namespace BiggerShip.Enums
{
public enum ChargeStationPlacement
{
Right,
Left
}
public enum DoorControlPanelPlacement
{
Vanilla,
Compact
}
public enum MagnetLeverPlacement
{
Back,
Front,
Inside
}
public enum ShipPart
{
Ship,
ShipElectricLights,
SideMachineries,
SuitRack,
Pipes,
Plane_001
}
}
namespace BiggerShip.Definitions
{
public struct ObjectNewPosition
{
public Vector3 Position;
public Vector3 Rotation;
public Vector3 Scale;
public string Name { get; set; }
public bool ToRemove
{
get
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_0013: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_0025: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
if (Position == Vector3.zero && Rotation == Vector3.zero)
{
return Scale == Vector3.zero;
}
return false;
}
}
}
}
namespace BiggerShip.Compatibility
{
internal class ScienceBirdTweaksCompat : CompatibilityBase
{
public ScienceBirdTweaksCompat(string guid, string version = null)
: base(guid, version)
{
}
[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
public void Init()
{
if (((CompatibilityBase)this).IsModPresent)
{
((Logger)Plugin.debugLogger).LogDebug("ScienceBirdTweaks detected, applying patches.");
PatchThings();
}
}
public void PatchThings()
{
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Expected O, but got Unknown
Plugin.harmony.Patch((MethodBase)AccessTools.Method(typeof(OccupancyPatch), "UpdatePoster", (Type[])null, (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(typeof(ScienceBirdTweaksCompat), "OccupancyTranspiler", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null);
}
[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
public static IEnumerable<CodeInstruction> OccupancyTranspiler(IEnumerable<CodeInstruction> instructions)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Expected O, but got Unknown
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_0037: Expected O, but got Unknown
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Expected O, but got Unknown
CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
try
{
val.MatchForward(false, (CodeMatch[])(object)new CodeMatch[2]
{
new CodeMatch((OpCode?)OpCodes.Stsfld, (object)AccessTools.Field(typeof(OccupancyPatch), "playerCount"), (string)null),
new CodeMatch((OpCode?)OpCodes.Ldstr, (object)"HangarShip/Plane.001", (string)null)
});
if (val.IsInvalid)
{
((Logger)Plugin.debugLogger).LogWarning("OccupancyTranspiler: Could not find target pattern, returning original instructions");
return instructions;
}
val.Advance(1);
if (val.Opcode != OpCodes.Ldstr || (string)val.Operand != "HangarShip/Plane.001")
{
((Logger)Plugin.debugLogger).LogWarning("OccupancyTranspiler: Unexpected instruction found, returning original instructions");
return instructions;
}
val.SetOperandAndAdvance((object)"HangarShip/Plane.001/Posters/Poster6");
((Logger)Plugin.debugLogger).LogInfo("OccupancyTranspiler: Successfully replaced GameObject path");
}
catch (Exception ex)
{
((Logger)Plugin.debugLogger).LogError("OccupancyTranspiler: Exception occurred - " + ex.Message);
return instructions;
}
return val.InstructionEnumeration();
}
}
internal class TooManySuitsCompat : CompatibilityBase
{
public TooManySuitsCompat(string guid, string version = null)
: base(guid, version)
{
}
[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
public void Init()
{
if (((CompatibilityBase)this).IsModPresent)
{
PatchThings();
}
}
public void PatchThings()
{
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Expected O, but got Unknown
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_0073: Expected O, but got Unknown
Plugin.harmony.Patch((MethodBase)AccessTools.Method(typeof(PaginationController), "DisplayCurrentPage", (Type[])null, (Type[])null), new HarmonyMethod(typeof(TooManySuitsPatches), "DisplaySuitsPrefix", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
Plugin.harmony.Patch((MethodBase)AccessTools.Method(typeof(Patches), "StartPatch", (Type[])null, (Type[])null), new HarmonyMethod(typeof(TooManySuitsPatches), "PatchesPrefix", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
}
[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
public void ReloadSuitRack()
{
if (((CompatibilityBase)this).IsModPresent)
{
PaginationController componentInChildren = ((Component)StartOfRound.Instance.rightmostSuitPosition).gameObject.GetComponentInChildren<PaginationController>();
if (componentInChildren != null)
{
componentInChildren.UpdateSuits();
}
}
}
}
internal class UniversalRadarCompat : CompatibilityBase
{
public UniversalRadarCompat(string guid, string version = null)
: base(guid, version)
{
}
[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
public void Init()
{
if (((CompatibilityBase)this).IsModPresent)
{
((Logger)Plugin.debugLogger).LogDebug("UniversalRadar detected, applying patches.");
PatchThings();
}
}
public void PatchThings()
{
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Expected O, but got Unknown
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_0073: Expected O, but got Unknown
Plugin.harmony.Patch((MethodBase)AccessTools.Method(typeof(RadarExtraPatches), "SetCamParameters", (Type[])null, (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(typeof(UniversalRadarCompat), "ShipContourTranspiler", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null);
Plugin.harmony.Patch((MethodBase)AccessTools.Method(typeof(RadarExtraPatches), "SetShipSpriteColour", (Type[])null, (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(typeof(UniversalRadarCompat), "ShipContourTranspiler", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null);
}
[MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
public static IEnumerable<CodeInstruction> ShipContourTranspiler(IEnumerable<CodeInstruction> instructions)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Expected O, but got Unknown
//IL_0022: Unknown result type (might be due to invalid IL or missing references)
//IL_0028: Expected O, but got Unknown
CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
try
{
val.MatchForward(false, (CodeMatch[])(object)new CodeMatch[1]
{
new CodeMatch((OpCode?)OpCodes.Ldstr, (object)"Environment/HangarShip/Square", (string)null)
});
val.Repeat((Action<CodeMatcher>)delegate(CodeMatcher match)
{
match.SetOperandAndAdvance((object)"Environment/HangarShip/ShipExtended(Clone)/ShipExtended/ShipContour");
((Logger)Plugin.debugLogger).LogInfo("ShipContourTranspiler: Replaced GameObject path");
}, (Action<string>)null);
}
catch (Exception ex)
{
((Logger)Plugin.debugLogger).LogError("ShipContourTranspiler: Exception occurred - " + ex.Message);
return instructions;
}
return val.InstructionEnumeration();
}
}
}
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
internal sealed class IgnoresAccessChecksToAttribute : Attribute
{
public IgnoresAccessChecksToAttribute(string assemblyName)
{
}
}
}
namespace BiggerShip.NetcodePatcher
{
[AttributeUsage(AttributeTargets.Module)]
internal class NetcodePatchedAssemblyAttribute : Attribute
{
}
}