Please disclose if your mod was created primarily using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of TonightWeDine v1.0.2
TonightWeDine.dll
Decompiled a year agousing System; 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.Bootstrap; using BepInEx.Configuration; using HarmonyLib; using Microsoft.CodeAnalysis; using Unity.AI.Navigation; using UnityEngine; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("TonightWeDine")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyDescription("Changes the layout of Dine's exterior.")] [assembly: AssemblyFileVersion("1.0.2.0")] [assembly: AssemblyInformationalVersion("1.0.2+be052c04676427ad77a675481d56cdf0a5a0110f")] [assembly: AssemblyProduct("TonightWeDine")] [assembly: AssemblyTitle("TonightWeDine")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.2.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 TonightWeDine { internal class TonightWeDineConfig { internal enum DineLayoutEnum { V60 = -1, V50, Hybrid } internal static ConfigEntry<DineLayoutEnum> dineLayout; public static void Bind(ConfigFile config) { dineLayout = config.Bind<DineLayoutEnum>("7-Dine", "Layout", DineLayoutEnum.V50, "Dine's Exterior Layout\n\nV60 = V60's exterior\n\nV50 = V50's exterior\n\nHybrid = V50's exterior with V49's entrances"); } } [BepInPlugin("TonightWeDine", "TonightWeDine", "1.0.2")] public class Plugin : BaseUnityPlugin { private readonly Harmony harmony = new Harmony("TonightWeDine"); public static Plugin Instance; private void Awake() { if (Instance == null) { Instance = this; } ((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin TonightWeDine is loaded!"); TonightWeDineConfig.Bind(((BaseUnityPlugin)this).Config); Assets.LoadAssets(); harmony.PatchAll(typeof(DineOverridePatch)); if (Chainloader.PluginInfos.ContainsKey("butterystancakes.lethalcompany.chameleon")) { harmony.PatchAll(typeof(ChameleonFancyDoorPatch)); } SceneManager.sceneUnloaded += delegate { DineOverride.executed = false; DineOverride.fancyExecuted = false; }; } public static void Log(string msg) { ((BaseUnityPlugin)Instance).Logger.LogInfo((object)msg); } public static void LogError(string msg) { ((BaseUnityPlugin)Instance).Logger.LogError((object)msg); } public static void LogDebug(string msg) { ((BaseUnityPlugin)Instance).Logger.LogDebug((object)msg); } } internal class DineOverridePatch { [HarmonyPatch(typeof(RoundManager), "FinishGeneratingNewLevelClientRpc")] [HarmonyPriority(900)] [HarmonyPostfix] private static void FinishGeneratingNewLevel_DineOverridePatch() { if (((Object)StartOfRound.Instance.currentLevel).name == "DineLevel" && !DineOverride.executed) { DineOverride.executed = true; if (TonightWeDineConfig.dineLayout.Value >= TonightWeDineConfig.DineLayoutEnum.V50) { Plugin.LogDebug("Dine's layout is \"" + TonightWeDineConfig.dineLayout.Value.ToString() + "\""); DineOverride.DineSceneOverride((int)TonightWeDineConfig.dineLayout.Value); } Plugin.LogDebug("Fixing Dine's pits"); DineOverride.DineFixes(); } } } internal class ChameleonFancyDoorPatch { [HarmonyPatch(typeof(RoundManager), "FinishGeneratingNewLevelClientRpc")] [HarmonyPriority(300)] [HarmonyPostfix] private static void FancyDoorsPatch() { if (((Object)StartOfRound.Instance.currentLevel).name == "DineLevel" && TonightWeDineConfig.dineLayout.Value >= TonightWeDineConfig.DineLayoutEnum.V50 && !DineOverride.fancyExecuted) { DineOverride.fancyExecuted = true; DineOverride.FancyDoorOverride(); } } } internal static class Assets { internal static AssetBundle assetBundle; internal static Mesh newSurfaceMesh; internal static Mesh metalWallMesh; internal static GameObject treeNearFire; internal static GameObject leavesNearFire; internal static void LoadAssets() { try { assetBundle = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "tonightwedine")); newSurfaceMesh = assetBundle.LoadAsset<Mesh>("DineHybridTerrain"); metalWallMesh = assetBundle.LoadAsset<Mesh>("Cube.001_0"); treeNearFire = assetBundle.LoadAsset<GameObject>("NearFireTree"); leavesNearFire = assetBundle.LoadAsset<GameObject>("NearFireLeaves"); assetBundle.Unload(false); } catch { Plugin.LogError("Failed to load mod assets!"); } } } internal static class DineOverride { internal static bool executed; internal static bool fancyExecuted; internal static void DineSceneOverride(int dineVersion) { //IL_0088: 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_00c1: 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_0129: Unknown result type (might be due to invalid IL or missing references) //IL_0148: 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_03ea: Unknown result type (might be due to invalid IL or missing references) //IL_0409: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0241: Unknown result type (might be due to invalid IL or missing references) //IL_0446: Unknown result type (might be due to invalid IL or missing references) //IL_0461: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_02ef: Unknown result type (might be due to invalid IL or missing references) //IL_0309: Unknown result type (might be due to invalid IL or missing references) //IL_032c: Unknown result type (might be due to invalid IL or missing references) //IL_034b: Unknown result type (might be due to invalid IL or missing references) //IL_049e: Unknown result type (might be due to invalid IL or missing references) //IL_04b9: Unknown result type (might be due to invalid IL or missing references) //IL_036e: 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_03a7: Unknown result type (might be due to invalid IL or missing references) //IL_04f6: Unknown result type (might be due to invalid IL or missing references) //IL_0516: Unknown result type (might be due to invalid IL or missing references) //IL_0553: 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_05b0: Unknown result type (might be due to invalid IL or missing references) //IL_05d0: Unknown result type (might be due to invalid IL or missing references) //IL_060d: Unknown result type (might be due to invalid IL or missing references) //IL_062d: Unknown result type (might be due to invalid IL or missing references) //IL_066a: Unknown result type (might be due to invalid IL or missing references) //IL_068a: Unknown result type (might be due to invalid IL or missing references) //IL_06c7: Unknown result type (might be due to invalid IL or missing references) //IL_06e7: Unknown result type (might be due to invalid IL or missing references) //IL_0702: Unknown result type (might be due to invalid IL or missing references) if (dineVersion < 0) { return; } GameObject obj = GameObject.Find("/Environment/NeonLightsSingle"); if (obj != null) { obj.SetActive(false); } GameObject obj2 = GameObject.Find("/Environment/Map/CementFacility1/Cube.002"); Transform val = ((obj2 != null) ? obj2.transform : null); GameObject obj3 = GameObject.Find("/Environment/FireExitDoorContainer/FireExitDoor"); Transform val2 = ((obj3 != null) ? obj3.transform : null); GameObject obj4 = GameObject.Find("/Environment/Teleports/EntranceTeleportB"); Transform val3 = ((obj4 != null) ? obj4.transform : null); switch (dineVersion) { case 0: if ((Object)(object)val != (Object)null) { val.localPosition = new Vector3(21.48f, 1.69f, 54.77f); val.localRotation = new Quaternion(0.043608133f, -0.70601994f, -0.7056099f, -0.04182105f); val.localScale = new Vector3(0.6834142f, 0.8991681f, 0.6834142f); } if ((Object)(object)val2 != (Object)null) { val2.localPosition = new Vector3(-73.69555f, 9.62243f, 48.685997f); val2.localRotation = new Quaternion(0f, 0.85768974f, 0f, -0.51416767f); } if ((Object)(object)val3 != (Object)null) { val3.localPosition = new Vector3(137.39407f, -15.564064f, 46.236385f); val3.localRotation = new Quaternion(0f, 0.9981922f, 0f, 0.06010294f); val3.localScale = new Vector3(1.9334757f, 3.462273f, 0.5321793f); } break; case 1: { GameObject val4 = GameObject.Find("/Environment/NewDineTerrainCutdown"); if ((Object)(object)val4 != (Object)null) { val4.GetComponent<MeshFilter>().mesh = Assets.newSurfaceMesh; val4.GetComponent<MeshCollider>().sharedMesh = Assets.newSurfaceMesh; } GameObject obj5 = GameObject.Find("/Environment/ReverbTriggers (1)/WindTriggers"); Transform val5 = ((obj5 != null) ? obj5.transform : null); GameObject val6 = GameObject.Find("/Environment/ReverbTriggers (1)/WindTriggers/shipWindTrigger2"); if ((Object)(object)val6 != (Object)null && (Object)(object)val5 != (Object)null) { GameObject obj6 = Object.Instantiate<GameObject>(val6, val5); obj6.transform.localPosition = new Vector3(-193.03427f, 7.074562f, -83.64745f); obj6.transform.localRotation = new Quaternion(0f, 0f, 0f, 1f); obj6.transform.localScale = new Vector3(12.9657545f, 6.9007154f, 11.519966f); } if ((Object)(object)RoundManager.Instance.mapPropsContainer == (Object)null) { RoundManager.Instance.mapPropsContainer = GameObject.FindGameObjectWithTag("MapPropsContainer"); } if ((Object)(object)RoundManager.Instance.mapPropsContainer != (Object)null) { Object.Instantiate<GameObject>(Assets.treeNearFire, RoundManager.Instance.mapPropsContainer.transform); Object.Instantiate<GameObject>(Assets.leavesNearFire, RoundManager.Instance.mapPropsContainer.transform); } if ((Object)(object)val != (Object)null) { val.localPosition = new Vector3(-15.267663f, 5.13949f, 29.441992f); val.localRotation = new Quaternion(-0.2334155f, -0.66771203f, -0.66668123f, 0.23497672f); val.localScale = new Vector3(0.5241794f, 0.64612794f, 0.4780146f); } if ((Object)(object)val2 != (Object)null) { val2.localPosition = new Vector3(-218.79054f, 32.197186f, -177.6566f); val2.localRotation = new Quaternion(0f, 0.5992887f, 0f, -0.800533f); } if ((Object)(object)val3 != (Object)null) { val3.localPosition = new Vector3(-28.067f, 1.4099998f, -70.185f); val3.localRotation = new Quaternion(0f, 0.94372284f, 0f, -0.33073732f); val3.localScale = new Vector3(1.9334757f, 3.462273f, 0.5321793f); } break; } } GameObject val7 = GameObject.Find("/Environment/Map/Cube.001 (16)"); if ((Object)(object)val7 != (Object)null) { val7.GetComponent<MeshFilter>().mesh = Assets.metalWallMesh; val7.transform.localPosition = new Vector3(179.3406f, -20.249994f, -22.0728f); val7.transform.localScale = new Vector3(1f, 1.4000261f, 1.1451999f); } GameObject obj7 = GameObject.Find("/Environment/Map/Cube.001 (8)"); BoxCollider val8 = ((obj7 != null) ? obj7.GetComponent<BoxCollider>() : null); if ((Object)(object)val8 != (Object)null) { val8.center = new Vector3(-0.14010677f, -2.7291498f, -0.26022604f); val8.size = new Vector3(0.53314275f, 6.8050165f, 4.480085f); } GameObject obj8 = GameObject.Find("/Environment/Map/Cube.001 (4)"); BoxCollider val9 = ((obj8 != null) ? obj8.GetComponent<BoxCollider>() : null); if ((Object)(object)val9 != (Object)null) { val9.center = new Vector3(-0.14010829f, -1.0517684f, -0.26022604f); val9.size = new Vector3(0.53314275f, 10.159763f, 4.480085f); } GameObject obj9 = GameObject.Find("/Environment/Plane"); Transform val10 = ((obj9 != null) ? obj9.transform : null); if ((Object)(object)val10 != (Object)null) { val10.localPosition = new Vector3(178.84203f, -20.405f, -16.50813f); val10.localRotation = new Quaternion(0.5249201f, -0.4737709f, -0.4737702f, -0.52492076f); } GameObject obj10 = GameObject.Find("/Environment/SteelDoorFake"); Transform val11 = ((obj10 != null) ? obj10.transform : null); if ((Object)(object)val11 != (Object)null) { val11.localPosition = new Vector3(178.729f, -20.34f, -15.17f); val11.localRotation = new Quaternion(0.038197827f, -0.7060744f, -0.70607436f, -0.03819688f); } GameObject obj11 = GameObject.Find("/Environment/SteelDoorFake (1)"); Transform val12 = ((obj11 != null) ? obj11.transform : null); if ((Object)(object)val12 != (Object)null) { val12.localPosition = new Vector3(179.06046f, -20.340002f, -18.119337f); val12.localRotation = new Quaternion(0.03954247f, -0.7060007f, -0.706f, -0.039542507f); } GameObject obj12 = GameObject.Find("/Environment/DoorFrame (1)"); Transform val13 = ((obj12 != null) ? obj12.transform : null); if ((Object)(object)val13 != (Object)null) { val13.localPosition = new Vector3(178.902f, -23.807f, -16.656f); val13.localRotation = new Quaternion(0.03933583f, -0.7060121f, -0.70601153f, -0.03933586f); } GameObject obj13 = GameObject.Find("/Environment/Teleports/EntranceTeleportA"); Transform val14 = ((obj13 != null) ? obj13.transform : null); if ((Object)(object)val14 != (Object)null) { val14.localPosition = new Vector3(178.67831f, -21.2327f, -16.662853f); val14.localRotation = new Quaternion(0f, 0.99843365f, 0f, 0.055948973f); } GameObject obj14 = GameObject.Find("/Environment/ScanNodes/ScanNode"); Transform val15 = ((obj14 != null) ? obj14.transform : null); if ((Object)(object)val15 != (Object)null) { val15.localPosition = new Vector3(175.7f, -24.01f, -19.5f); val15.localRotation = new Quaternion(0.7071068f, -0.7071068f, -2.43634E-06f, 2.43634E-06f); val15.localScale = new Vector3(9.139909f, 138.73448f, 4.0328393f); } GameObject val16 = GameObject.Find("/Environment"); if ((Object)(object)val16 != (Object)null) { val16.GetComponent<NavMeshSurface>().RemoveData(); val16.GetComponent<NavMeshSurface>().BuildNavMesh(); } } internal static void FancyDoorOverride() { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) GameObject obj = GameObject.Find("/Environment/MapPropsContainer/WideDoorFrame(Clone)"); Transform val = ((obj != null) ? obj.transform : null); if ((Object)(object)val != (Object)null) { Plugin.LogDebug("Found Chameleon's fancy door, moving them"); ((Component)val).transform.position = new Vector3(-156.553f, -15.126f, 12.155f); ((Component)val).transform.rotation = new Quaternion(-0.70618117f, -0.036169115f, -0.036169115f, 0.70618117f); } } internal static void DineFixes() { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) GameObject obj = GameObject.Find("/Environment/Map/KillTrigger (1)"); Transform val = ((obj != null) ? obj.transform : null); if ((Object)(object)val != (Object)null) { val.localScale = new Vector3(349.60406f, 0.69064f, 181.3727f); } GameObject obj2 = GameObject.Find("/Environment/Map/KillTrigger (4)"); Transform val2 = ((obj2 != null) ? obj2.transform : null); if ((Object)(object)val2 != (Object)null) { val2.localScale = new Vector3(42.223473f, 0.69064f, 81.23343f); } } } public static class PluginInfo { public const string PLUGIN_GUID = "TonightWeDine"; public const string PLUGIN_NAME = "TonightWeDine"; public const string PLUGIN_VERSION = "1.0.2"; } }