using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text.RegularExpressions; using Benchwarp.Benches; using Benchwarp.Components; using Benchwarp.Data; using Benchwarp.Deploy; using Benchwarp.Doors; using Benchwarp.Doors.Obstacles; using Benchwarp.Events; using Benchwarp.Hotkeys; using Benchwarp.Patches; using Benchwarp.Settings; using Benchwarp.Util; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using GlobalEnums; using HarmonyLib; using HutongGames.PlayMaker; using HutongGames.PlayMaker.Actions; using Microsoft.CodeAnalysis; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using PrepatcherPlugin; using Silksong.AssetHelper.ManagedAssets; using Silksong.DataManager; using Silksong.FsmUtil; using Silksong.ModMenu.Elements; using Silksong.ModMenu.Plugin; using TeamCherry.Localization; using TeamCherry.NestedFadeGroup; using TeamCherry.SharedUtils; using UnityEngine; using UnityEngine.Events; using UnityEngine.SceneManagement; using UnityEngine.UI; [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("Benchwarp")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.2.0.0")] [assembly: AssemblyInformationalVersion("1.2.0+f0c6c37a4a1b7e85197233c19d4b7598f49ebcbf")] [assembly: AssemblyProduct("Benchwarp")] [assembly: AssemblyTitle("Benchwarp")] [assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/homothetyhk/Silksong.Benchwarp")] [assembly: NeutralResourcesLanguage("EN")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.2.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [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 System.Diagnostics.CodeAnalysis { [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate, Inherited = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class ExperimentalAttribute : Attribute { public string DiagnosticId { get; } public string? UrlFormat { get; set; } public ExperimentalAttribute(string diagnosticId) { DiagnosticId = diagnosticId; } } [AttributeUsage(AttributeTargets.Constructor, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class SetsRequiredMembersAttribute : Attribute { } [AttributeUsage(AttributeTargets.Parameter, Inherited = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class ConstantExpectedAttribute : Attribute { public object? Min { get; set; } public object? Max { get; set; } } [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class StringSyntaxAttribute : Attribute { public const string CompositeFormat = "CompositeFormat"; public const string DateOnlyFormat = "DateOnlyFormat"; public const string DateTimeFormat = "DateTimeFormat"; public const string EnumFormat = "EnumFormat"; public const string GuidFormat = "GuidFormat"; public const string Json = "Json"; public const string NumericFormat = "NumericFormat"; public const string Regex = "Regex"; public const string TimeOnlyFormat = "TimeOnlyFormat"; public const string TimeSpanFormat = "TimeSpanFormat"; public const string Uri = "Uri"; public const string Xml = "Xml"; public string Syntax { get; } public object?[] Arguments { get; } public StringSyntaxAttribute(string syntax) { Syntax = syntax; Arguments = new object[0]; } public StringSyntaxAttribute(string syntax, params object?[] arguments) { Syntax = syntax; Arguments = arguments; } } [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class UnscopedRefAttribute : Attribute { } [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, Inherited = false, AllowMultiple = true)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class MemberNotNullWhenAttribute : Attribute { public bool ReturnValue { get; } public string[] Members { get; } public MemberNotNullWhenAttribute(bool returnValue, string member) { ReturnValue = returnValue; Members = new string[1] { member }; } public MemberNotNullWhenAttribute(bool returnValue, params string[] members) { ReturnValue = returnValue; Members = members; } } [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, Inherited = false, AllowMultiple = true)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class MemberNotNullAttribute : Attribute { public string[] Members { get; } public MemberNotNullAttribute(string member) { Members = new string[1] { member }; } public MemberNotNullAttribute(params string[] members) { Members = members; } } } namespace System.Runtime.Versioning { [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate, Inherited = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class RequiresPreviewFeaturesAttribute : Attribute { public string? Message { get; } public string? Url { get; set; } public RequiresPreviewFeaturesAttribute() { } public RequiresPreviewFeaturesAttribute(string? message) { Message = message; } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Event | AttributeTargets.Interface, Inherited = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class SkipLocalsInitAttribute : Attribute { } [AttributeUsage(AttributeTargets.Parameter, Inherited = false)] [EditorBrowsable(EditorBrowsableState.Never)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class RequiresLocationAttribute : Attribute { } [EditorBrowsable(EditorBrowsableState.Never)] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Delegate, Inherited = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class ExtensionMarkerAttribute : Attribute { public string Name { get; } public ExtensionMarkerAttribute(string name) { Name = name; } } [AttributeUsage(AttributeTargets.Parameter, Inherited = true, AllowMultiple = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class ParamCollectionAttribute : Attribute { } [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Interface, Inherited = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class CollectionBuilderAttribute : Attribute { public Type BuilderType { get; } public string MethodName { get; } public CollectionBuilderAttribute(Type builderType, string methodName) { BuilderType = builderType; MethodName = methodName; } } [AttributeUsage(AttributeTargets.Method, Inherited = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class ModuleInitializerAttribute : Attribute { } [AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class CompilerFeatureRequiredAttribute : Attribute { public const string RefStructs = "RefStructs"; public const string RequiredMembers = "RequiredMembers"; public string FeatureName { get; } public bool IsOptional { get; set; } public CompilerFeatureRequiredAttribute(string featureName) { FeatureName = featureName; } } [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class InterpolatedStringHandlerArgumentAttribute : Attribute { public string[] Arguments { get; } public InterpolatedStringHandlerArgumentAttribute(string argument) { Arguments = new string[1] { argument }; } public InterpolatedStringHandlerArgumentAttribute(params string[] arguments) { Arguments = arguments; } } [AttributeUsage(AttributeTargets.Class, Inherited = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class CompilerLoweringPreserveAttribute : Attribute { } [EditorBrowsable(EditorBrowsableState.Never)] [ExcludeFromCodeCoverage] [Embedded] internal static class IsExternalInit { } [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class CallerArgumentExpressionAttribute : Attribute { public string ParameterName { get; } public CallerArgumentExpressionAttribute(string parameterName) { ParameterName = parameterName; } } [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class RequiredMemberAttribute : Attribute { } [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class InterpolatedStringHandlerAttribute : Attribute { } [AttributeUsage(AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = false, Inherited = false)] [ExcludeFromCodeCoverage] [Embedded] internal sealed class OverloadResolutionPriorityAttribute : Attribute { public int Priority { get; } public OverloadResolutionPriorityAttribute(int priority) { Priority = priority; } } } namespace BepInEx { [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] [Conditional("CodeGeneration")] [Embedded] internal sealed class BepInAutoPluginAttribute : Attribute { public BepInAutoPluginAttribute(string? id = null, string? name = null, string? version = null) { } } } namespace BepInEx.Preloader.Core.Patching { [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] [Conditional("CodeGeneration")] [Embedded] internal sealed class PatcherAutoPluginAttribute : Attribute { public PatcherAutoPluginAttribute(string? id = null, string? name = null, string? version = null) { } } } namespace Microsoft.CodeAnalysis { [Embedded] [AttributeUsage(AttributeTargets.All)] [ExcludeFromCodeCoverage] internal sealed class EmbeddedAttribute : Attribute { } } namespace Benchwarp { [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.*/)] [BepInPlugin("io.github.homothetyhk.benchwarp", "Benchwarp", "1.2.0")] public class BenchwarpPlugin : BaseUnityPlugin, IModMenuCustomElement, IModMenuInterface, ISaveDataMod, IRawSaveDataMod, IGlobalDataMod, IRawGlobalDataMod { private static BenchwarpPlugin? _instance; [CompilerGenerated] private TextButton k__BackingField; public const string Id = "io.github.homothetyhk.benchwarp"; public ManualLogSource Logger => ((BaseUnityPlugin)this).Logger; public static BenchwarpPlugin Instance => _instance ?? throw new NullReferenceException("Benchwarp has not loaded yet!"); private bool StartCalled { get; set; } private string HarmonyID { get; } = Name + " (io.github.homothetyhk.benchwarp)"; internal TextButton ModMenuEntryButton { get { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown if (k__BackingField == null || !Object.op_Implicit((Object)(object)k__BackingField.MenuButton)) { SelectableElement val = default(SelectableElement); new ConfigEntryFactory().GenerateEntryButton(LocalizedText.op_Implicit("Benchwarp"), (BaseUnityPlugin)(object)this, ref val); k__BackingField = (TextButton)val; } return k__BackingField; } } public static ConfigSettings ConfigSettings { get; private set; } = null; public static SaveSettings SaveSettings { get; } = new SaveSettings(new SaveSettingsData()); public static SharedSettings SharedSettings { get; } = new SharedSettings(new SharedSettingsData()); SaveSettingsData? ISaveDataMod.SaveData { get { return SaveSettings.GetSerializationData(); } set { SaveSettings.Load(value ?? new SaveSettingsData()); } } SharedSettingsData? IGlobalDataMod.GlobalData { get { return SharedSettings.GetSerializationData(); } set { SharedSettings.Load(value ?? new SharedSettingsData()); } } public static string Name => "Benchwarp"; public static string Version => "1.2.0"; private BenchwarpPlugin() { _instance = this; ConfigSettings = DefineConfig(); } private void Awake() { try { ((Component)this).gameObject.AddComponent(); LoadAssets(); LogHelper.Log("Plugin " + Name + " (io.github.homothetyhk.benchwarp) has loaded!"); } catch (Exception e) { LogHelper.LogError(GetErrorMsg(e, "Awake")); } } private void OnEnable() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) if (!StartCalled) { return; } try { new Harmony(HarmonyID).PatchAll(((object)this).GetType().Assembly); ShakraPDHook.Hook(); DataManagerFix.Hook(); RedeployPatch.Hook(); StyxBenchFix.Hook(); GUIController.Setup(); } catch (Exception e) { LogHelper.LogError(GetErrorMsg(e, "OnEnable")); } } private void Start() { StartCalled = true; try { OnEnable(); GUIController.LateSetup(); } catch (Exception e) { LogHelper.LogError(GetErrorMsg(e, "Start")); } } private void OnDisable() { try { Harmony.UnpatchID(HarmonyID); ShakraPDHook.Unhook(); DataManagerFix.Unhook(); RedeployPatch.Unhook(); StyxBenchFix.Unhook(); GUIController.Unload(); } catch (Exception e) { LogHelper.LogError(GetErrorMsg(e, "OnDisable")); } } private string GetErrorMsg(Exception e, [CallerMemberName] string? caller = "") { return $"Error during {((object)this).GetType().Name}.{caller}:\n{e}"; } private void LoadAssets() { DeployAssets.Bench = ManagedAsset.FromSceneAsset("Bone_04", "RestBench"); } SelectableElement IModMenuCustomElement.BuildCustomElement() { return (SelectableElement)(object)ModMenuEntryButton; } private ConfigSettings DefineConfig() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown //IL_002b: Expected O, but got Unknown //IL_003c: 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_0057: Expected O, but got Unknown //IL_0057: Expected O, but got Unknown //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Expected O, but got Unknown //IL_0083: Expected O, but got Unknown //IL_0094: 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_00af: Expected O, but got Unknown //IL_00af: Expected O, but got Unknown //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Expected O, but got Unknown //IL_00db: Expected O, but got Unknown //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Expected O, but got Unknown //IL_0108: Expected O, but got Unknown ConfigEntry menuMode = ((BaseUnityPlugin)this).Config.Bind(new ConfigDefinition("Menu", "MenuMode"), MenuMode.StandardBenchwarp, new ConfigDescription("See README.md for details on modes.", (AcceptableValueBase)null, Array.Empty())); ConfigEntry showScene = ((BaseUnityPlugin)this).Config.Bind(new ConfigDefinition("Menu", "ShowScene"), false, new ConfigDescription("Displays a panel in the bottom-left with the active scene name.", (AcceptableValueBase)null, Array.Empty())); ConfigEntry alwaysToggleAll = ((BaseUnityPlugin)this).Config.Bind(new ConfigDefinition("Menu", "AlwaysToggleAll"), false, new ConfigDescription("Auto-expand all dropdown panels.", (AcceptableValueBase)null, Array.Empty())); ConfigEntry enableDeploy = ((BaseUnityPlugin)this).Config.Bind(new ConfigDefinition("Menu", "EnableDeploy"), true, new ConfigDescription("Enables placing a bench at the current location through the menu.", (AcceptableValueBase)null, Array.Empty())); ConfigEntry enableHotkeys = ((BaseUnityPlugin)this).Config.Bind(new ConfigDefinition("Menu", "EnableHotkeys"), false, new ConfigDescription("See README.md for information on supported commands.", (AcceptableValueBase)null, Array.Empty())); ConfigEntry recoveryMode = ((BaseUnityPlugin)this).Config.Bind(new ConfigDefinition("Menu", "RecoveryMode"), false, new ConfigDescription("Use if you get stuck. While active, any file loaded will spawn into the starting area in Moss Grotto.", (AcceptableValueBase)null, Array.Empty())); return new ConfigSettings(new ConfigSettingsData { MenuMode = menuMode, ShowScene = showScene, AlwaysToggleAll = alwaysToggleAll, EnableDeploy = enableDeploy, EnableHotkeys = enableHotkeys, RecoveryMode = recoveryMode }); } } public static class ChangeScene { private class DoorwarpSceneLoadInfo(IObstacleHandler handler, RoomData room, DoorData gate, IObstacleProvider provider) : SceneLoadInfo() { public override void NotifyFetchComplete() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown ((SceneLoadInfo)this).NotifyFetchComplete(); GameManager.instance.sceneLoad.ActivationComplete += new ActivationCompleteDelegate(ActivationComplete); } private void ActivationComplete() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) GameManager.instance.sceneLoad.ActivationComplete -= new ActivationCompleteDelegate(ActivationComplete); Scene activeScene = SceneManager.GetActiveScene(); handler.OnSceneChange(activeScene, room, gate, provider); } } public static void WarpToRespawn() { GameManager gm = GameManager.instance; if ((Object)(object)gm == (Object)null) { LogHelper.LogError("WarpToRespawn called while GameManager is null, aborting..."); return; } ModEvents.InvokeOnBenchwarp(); PlayerDataAccess.atBench = false; gm.SaveGame((Action)delegate(bool worked) { if (worked) { gm.LoadGameFromUI(gm.profileID); } }); ((MonoBehaviour)gm).StartCoroutine(gm.PauseGameToggle(false)); } public static void WarpToDoor(RoomData room, DoorData gate) { if ((Object)(object)GameManager.instance == (Object)null) { LogHelper.LogError("WarpToRespawn called while GameManager is null, aborting..."); return; } ModEvents.InvokeOnDoorwarp(room, gate); ((MonoBehaviour)BenchwarpPlugin.Instance).StartCoroutine(DoWarpToDoor(room, gate)); } private static IEnumerator DoWarpToDoor(RoomData room, DoorData gate) { if (GameManager.instance.IsGamePaused()) { yield return GameManager.instance.PauseGameToggleByMenu(); } PlayerDataAccess.atBench = false; if ((Object)(object)HeroController.SilentInstance != (Object)null) { if (HeroController.instance.cState.onConveyor || HeroController.instance.cState.onConveyorV || HeroController.instance.cState.inConveyorZone) { ConveyorMovementHero component = ((Component)HeroController.instance).GetComponent(); if (component != null) { component.StopConveyorMove(); } HeroController.instance.cState.inConveyorZone = false; HeroController.instance.cState.onConveyor = false; HeroController.instance.cState.onConveyorV = false; } HeroController.instance.cState.nearBench = false; } SceneLoad sceneLoad = GameManager.instance.sceneLoad; if (sceneLoad != null) { sceneLoad.Finish += new FinishDelegate(Warp); } else { Warp(); } void Warp() { //IL_0079: Unknown result type (might be due to invalid IL or missing references) IObstacleHandler doorwarpObstacleHandler = ModEvents.DoorwarpObstacleHandler; IObstacleProvider doorwarpObstacleProvider = ModEvents.DoorwarpObstacleProvider; doorwarpObstacleHandler.BeforeTransition(room, gate, doorwarpObstacleProvider); GameManager.instance.BeginSceneTransition((SceneLoadInfo)(object)new DoorwarpSceneLoadInfo(doorwarpObstacleHandler, room, gate, doorwarpObstacleProvider) { SceneName = gate.Self.SceneName, EntryGateName = gate.Self.GateName, PreventCameraFadeOut = false, WaitForSceneTransitionCameraFade = true, Visualization = (SceneLoadVisualizations)0, AlwaysUnloadUnusedAssets = true, IsFirstLevelForPlayer = false }); } } } } namespace Benchwarp.Util { public static class JsonUtil { private class Vector2Converter : JsonConverter { public override Vector2 ReadJson(JsonReader reader, Type objectType, Vector2 existingValue, bool hasExistingValue, JsonSerializer serializer) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Invalid comparison between Unknown and I4 //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Invalid comparison between Unknown and I4 float num = 0f; float num2 = 0f; while (reader.Read()) { if ((int)reader.TokenType == 4) { string text = (string)reader.Value; if (!(text == "x")) { if (text == "y") { num2 = (float)reader.ReadAsDouble().Value; } } else { num = (float)reader.ReadAsDouble().Value; } } else if ((int)reader.TokenType == 13) { break; } } return new Vector2(num, num2); } public override void WriteJson(JsonWriter writer, Vector2 value, JsonSerializer serializer) { //IL_0012: 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) writer.WriteStartObject(); writer.WritePropertyName("x"); writer.WriteValue(value.x); writer.WritePropertyName("y"); writer.WriteValue(value.y); writer.WriteEndObject(); } } private class Vector3Converter : JsonConverter { public override Vector3 ReadJson(JsonReader reader, Type objectType, Vector3 existingValue, bool hasExistingValue, JsonSerializer serializer) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Invalid comparison between Unknown and I4 //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Invalid comparison between Unknown and I4 float num = 0f; float num2 = 0f; float num3 = 0f; while (reader.Read()) { if ((int)reader.TokenType == 4) { switch ((string)reader.Value) { case "x": num = (float)reader.ReadAsDouble().Value; break; case "y": num2 = (float)reader.ReadAsDouble().Value; break; case "z": num3 = (float)reader.ReadAsDouble().Value; break; } } else if ((int)reader.TokenType == 13) { break; } } return new Vector3(num, num2, num3); } public override void WriteJson(JsonWriter writer, Vector3 value, JsonSerializer serializer) { //IL_0012: 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_0040: Unknown result type (might be due to invalid IL or missing references) writer.WriteStartObject(); writer.WritePropertyName("x"); writer.WriteValue(value.x); writer.WritePropertyName("y"); writer.WriteValue(value.y); writer.WritePropertyName("z"); writer.WriteValue(value.z); writer.WriteEndObject(); } } public static readonly JsonSerializer _js; public static T Deserialize(string embeddedResourcePath) { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Expected O, but got Unknown using StreamReader streamReader = new StreamReader(typeof(JsonUtil).Assembly.GetManifestResourceStream(embeddedResourcePath)); JsonTextReader val = new JsonTextReader((TextReader)streamReader); try { return _js.Deserialize((JsonReader)(object)val); } finally { ((IDisposable)val)?.Dispose(); } } public static T DeserializeString(string json) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown using StringReader stringReader = new StringReader(json); JsonTextReader val = new JsonTextReader((TextReader)stringReader); try { return _js.Deserialize((JsonReader)(object)val); } finally { ((IDisposable)val)?.Dispose(); } } public static T DeserializeFile(string filepath) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Expected O, but got Unknown using StreamReader streamReader = new StreamReader(File.OpenRead(filepath)); JsonTextReader val = new JsonTextReader((TextReader)streamReader); try { return _js.Deserialize((JsonReader)(object)val); } finally { ((IDisposable)val)?.Dispose(); } } public static void SerializeFile(object o, string filePath) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Expected O, but got Unknown using StreamWriter streamWriter = File.CreateText(filePath); JsonTextWriter val = new JsonTextWriter((TextWriter)streamWriter); try { _js.Serialize((JsonWriter)(object)val, o); } finally { ((IDisposable)val)?.Dispose(); } } public static void SerializeFileNearDLL(object o, string fileName) { File.WriteAllText(Path.Combine(Path.GetDirectoryName(typeof(JsonUtil).Assembly.Location), fileName), Serialize(o)); } public static string Serialize(object o) { using StringWriter stringWriter = new StringWriter(); _js.Serialize((TextWriter)stringWriter, o); stringWriter.Flush(); return stringWriter.ToString(); } static JsonUtil() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000c: 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_001f: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown _js = new JsonSerializer { DefaultValueHandling = (DefaultValueHandling)1, Formatting = (Formatting)1, TypeNameHandling = (TypeNameHandling)4 }; ((Collection)(object)_js.Converters).Add((JsonConverter)new StringEnumConverter()); ((Collection)(object)_js.Converters).Add((JsonConverter)(object)new Vector2Converter()); ((Collection)(object)_js.Converters).Add((JsonConverter)(object)new Vector3Converter()); } } public class KeyedEvent where TDelegate : Delegate { public interface IKeyedEventOwner { TDelegate? GetDelegate(TKey key); } private class KeyedEventOwner(KeyedEvent e) : IKeyedEventOwner { public TDelegate? GetDelegate(TKey key) { if (!P.lookup.TryGetValue(key, out TDelegate value)) { return null; } return value; } } private readonly Dictionary lookup = new Dictionary(); private readonly IKeyedEventOwner _owner; public KeyedEvent(out IKeyedEventOwner owner) { owner = (_owner = new KeyedEventOwner(this)); } public void Add(TKey key, TDelegate? value) { if (lookup.TryGetValue(key, out TDelegate value2)) { lookup[key] = (TDelegate)Delegate.Combine(value2, value); } else { lookup.Add(key, value); } } public void Remove(TKey key, TDelegate? value) { if (lookup.TryGetValue(key, out TDelegate value2)) { lookup[key] = (TDelegate)Delegate.Remove(value2, value); } } } public static class KeyedEventOwnerExtensions { [SpecialName] public sealed class $C6A9B8DD00F1E45F26342E72D02C8C27<$T0> { [SpecialName] public static class $E0AA760A0F8D6A1A9BBB3F6C99B2F6C4 { } [ExtensionMarker("$E0AA760A0F8D6A1A9BBB3F6C99B2F6C4")] public void Invoke($T0 key, [CallerMemberName] string? caller = "") { throw new NotSupportedException(); } } [SpecialName] public sealed class $526F89CC70AF37E7C53F29AE13CF9C13<$T0, $T1> { [SpecialName] public static class $75DC55BFFF8E5AD2F3C72A4A5C4E024A { } [ExtensionMarker("$75DC55BFFF8E5AD2F3C72A4A5C4E024A")] public void Invoke($T0 key, $T1 arg, [CallerMemberName] string? caller = "") { throw new NotSupportedException(); } } [SpecialName] public sealed class $AD3E2172C724280323F6120772B0167B<$T0, $T1, $T2> { [SpecialName] public static class $CFD08ADC185F78A9B822255600266AF9 { } [ExtensionMarker("$CFD08ADC185F78A9B822255600266AF9")] public void Invoke($T0 key, $T1 arg1, $T2 arg2, [CallerMemberName] string? caller = "") { throw new NotSupportedException(); } } public static void Invoke(this KeyedEvent.IKeyedEventOwner owner, TKey key, [CallerMemberName] string? caller = "") { try { owner.GetDelegate(key)?.Invoke(); } catch (Exception arg) { LogHelper.LogError($"Error invoking delegate from {caller} for key {key}:\n{arg}"); } } public static void Invoke(this KeyedEvent>.IKeyedEventOwner owner, TKey key, TArg arg, [CallerMemberName] string? caller = "") { try { owner.GetDelegate(key)?.Invoke(arg); } catch (Exception ex) { LogHelper.LogError($"Error invoking delegate from {caller} for key {key} with arg {arg}:\n{ex}"); } } public static void Invoke(this KeyedEvent>.IKeyedEventOwner owner, TKey key, TArg1 arg1, TArg2 arg2, [CallerMemberName] string? caller = "") { try { owner.GetDelegate(key)?.Invoke(arg1, arg2); } catch (Exception ex) { LogHelper.LogError($"Error invoking delegate from {caller} for key {key} with args {arg1}, {arg2}:\n{ex}"); } } } internal static class Localization { private const string Sheet = "Mods.io.github.homothetyhk.benchwarp"; public static string GetLanguageString(this string key) { return Language.Get(key, "Mods.io.github.homothetyhk.benchwarp"); } } internal static class LogHelper { public static void Log(object? o) { BenchwarpPlugin.Instance.Logger.LogInfo(o); } public static void LogError(object? o) { BenchwarpPlugin.Instance.Logger.LogError(o); } public static void LogWarn(object? o) { BenchwarpPlugin.Instance.Logger.LogWarning(o); } } internal static class SceneExtensions { private static readonly List rootObjects = new List(500); public static GameObject? FindGameObject(this Scene s, string path, bool warnIfNotFound) { //IL_0103: Unknown result type (might be due to invalid IL or missing references) ((Scene)(ref s)).GetRootGameObjects(rootObjects); int num = path.IndexOf('/'); GameObject val = null; if (num >= 0) { string text = path.Substring(0, num); foreach (GameObject rootObject in rootObjects) { if (!(((Object)rootObject).name != text)) { Transform obj = rootObject.transform.Find(path.Substring(num + 1)); val = ((obj != null) ? ((Component)obj).gameObject : null); if ((Object)(object)val != (Object)null) { break; } } } } else { val = ((IEnumerable)rootObjects).FirstOrDefault((Func)((GameObject g) => ((Object)g).name == path)); } if (!Object.op_Implicit((Object)(object)val) && warnIfNotFound) { LogHelper.LogWarn("Failed to find object " + path + " in scene " + ((Scene)(ref s)).name + ". Existing objects are " + s.Dump() + "."); } rootObjects.Clear(); return val; } private static string Dump(this Scene s) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) return string.Join("\n", from p in s.Traverse() select p.path); } private static List<(string path, GameObject go)> Traverse(this Scene s) { ((Scene)(ref s)).GetRootGameObjects(rootObjects); List<(string, GameObject)> list = new List<(string, GameObject)>(); foreach (GameObject rootObject in rootObjects) { TraverseInternal(string.Empty, rootObject.transform, list); } return list; } private static void TraverseInternal(string path, Transform t, List<(string, GameObject)> results) { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Expected O, but got Unknown path = path + "/" + ((Object)t).name; results.Add((path, ((Component)t).gameObject)); foreach (Transform item in t) { Transform t2 = item; TraverseInternal(path, t2, results); } } } public class SequentialEvent where TDelegate : Delegate { public interface ISequentialEventOwner { event Action? OnSubscribersChanged; IReadOnlyList GetSubscribers(); } private class SequentialEventOwner(SequentialEvent e) : ISequentialEventOwner { event Action? ISequentialEventOwner.OnSubscribersChanged { add { P.OnSubscribersChanged += value; } remove { P.OnSubscribersChanged -= value; } } IReadOnlyList ISequentialEventOwner.GetSubscribers() { return P.modifiers; } } private readonly List modifiers = new List(); private event Action? OnSubscribersChanged; public SequentialEvent(out ISequentialEventOwner owner) { owner = new SequentialEventOwner(this); } public void Add(TDelegate value) { modifiers.Add(value); this.OnSubscribersChanged?.Invoke(); } public void Remove(TDelegate value) { modifiers.Remove(value); this.OnSubscribersChanged?.Invoke(); } } public static class SequentialEventOwnerExtensions { [SpecialName] public sealed class $CB57ABAC9FA4DBD61648592FA42C6095<$T0> { [SpecialName] public static class $4243BAC63842EF50C4174920157E6FF2 { } [ExtensionMarker("$4243BAC63842EF50C4174920157E6FF2")] public $T0 InvokeToTransform($T0 seed, [CallerMemberName] string? caller = "") { throw new NotSupportedException(); } } [SpecialName] public sealed class $F4F1B1619584B33AEBBA06C2121E2406<$T0, $T1> { [SpecialName] public static class $5EF27F45C57A844E76D1FCF3BDDAC56E { } [ExtensionMarker("$5EF27F45C57A844E76D1FCF3BDDAC56E")] public $T0 InvokeToTransform($T1 arg, $T0 seed, [CallerMemberName] string? caller = "") { throw new NotSupportedException(); } } [SpecialName] public sealed class $881BC38AE16CB7B346ABE66097582785<$T0> { [SpecialName] public static class $6F70E36BFD44005BEBACCCB3BC775833 { } [ExtensionMarker("$6F70E36BFD44005BEBACCCB3BC775833")] public List<$T0> InvokeAndCollect([CallerMemberName] string? caller = "") { throw new NotSupportedException(); } [ExtensionMarker("$6F70E36BFD44005BEBACCCB3BC775833")] public TResult InvokeAndAggregate(TResult seed, Func combiner, [CallerMemberName] string? caller = "") { throw new NotSupportedException(); } } [SpecialName] public sealed class $DFECCCE3C66174E09FBA0B45DD8E5E82<$T0, $T1> { [SpecialName] public static class $3142026A3634B7EA2AB5FCFAB1CBE662 { } [ExtensionMarker("$3142026A3634B7EA2AB5FCFAB1CBE662")] public List<$T0> InvokeAndCollect($T1 arg, [CallerMemberName] string? caller = "") { throw new NotSupportedException(); } [ExtensionMarker("$3142026A3634B7EA2AB5FCFAB1CBE662")] public TResult InvokeAndAggregate($T1 arg, TResult seed, Func combiner, [CallerMemberName] string? caller = "") { throw new NotSupportedException(); } } [SpecialName] public sealed class $6E033FA2D58B6339F639C8FC929EA571<$T0> { [SpecialName] public static class $DCF101354DBCC7F6F23431DACBC4D482 { } [ExtensionMarker("$DCF101354DBCC7F6F23431DACBC4D482")] public List<$T0> InvokeAndCollectFlat([CallerMemberName] string? caller = "") { throw new NotSupportedException(); } } public static TValue InvokeToTransform(this SequentialEvent>.ISequentialEventOwner owner, TValue seed, [CallerMemberName] string? caller = "") { foreach (Func subscriber in owner.GetSubscribers()) { try { seed = subscriber(seed); } catch (Exception arg) { LogHelper.LogError($"Error invoking sequential transformer from {caller}:\n{arg}"); } } return seed; } public static TValue InvokeToTransform(this SequentialEvent>.ISequentialEventOwner owner, TArg arg, TValue seed, [CallerMemberName] string? caller = "") { foreach (Func subscriber in owner.GetSubscribers()) { try { seed = subscriber(arg, seed); } catch (Exception arg2) { LogHelper.LogError($"Error invoking sequential transformer from {caller}:\n{arg2}"); } } return seed; } public static List InvokeAndCollect(this SequentialEvent>.ISequentialEventOwner owner, [CallerMemberName] string? caller = "") { IReadOnlyList> subscribers = owner.GetSubscribers(); List list = new List(subscribers.Count); foreach (Func item2 in subscribers) { try { TValue item = item2(); list.Add(item); } catch (Exception arg) { LogHelper.LogError($"Error invoking subscriber to {caller}:\n{arg}"); } } return list; } public static TResult InvokeAndAggregate(this SequentialEvent>.ISequentialEventOwner owner, TResult seed, Func combiner, [CallerMemberName] string? caller = "") { foreach (Func subscriber in owner.GetSubscribers()) { try { TValue arg = subscriber(); seed = combiner(seed, arg); } catch (Exception arg2) { LogHelper.LogError($"Error invoking sequential aggreator from {caller}:\n{arg2}"); } } return seed; } public static List InvokeAndCollect(this SequentialEvent>.ISequentialEventOwner owner, TArg arg, [CallerMemberName] string? caller = "") { IReadOnlyList> subscribers = owner.GetSubscribers(); List list = new List(subscribers.Count); foreach (Func item2 in subscribers) { try { TValue item = item2(arg); list.Add(item); } catch (Exception arg2) { LogHelper.LogError($"Error invoking subscriber to {caller}:\n{arg2}"); } } return list; } public static TResult InvokeAndAggregate(this SequentialEvent>.ISequentialEventOwner owner, TArg arg, TResult seed, Func combiner, [CallerMemberName] string? caller = "") { foreach (Func subscriber in owner.GetSubscribers()) { try { TValue arg2 = subscriber(arg); seed = combiner(seed, arg2); } catch (Exception arg3) { LogHelper.LogError($"Error invoking sequential aggreator from {caller} with arg {arg}:\n{arg3}"); } } return seed; } public static List InvokeAndCollectFlat(this SequentialEvent>>.ISequentialEventOwner owner, [CallerMemberName] string? caller = "") { IReadOnlyList>> subscribers = owner.GetSubscribers(); List list = new List(subscribers.Count); foreach (Func> item in subscribers) { try { IEnumerable collection = item(); list.AddRange(collection); } catch (Exception arg) { LogHelper.LogError($"Error invoking subscriber to {caller}:\n{arg}"); } } return list; } } internal static class SpriteManager { public static Texture2D LoadTexFromAssembly(string resourceName) { //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Expected O, but got Unknown //IL_007f: Expected O, but got Unknown using Stream stream = typeof(SpriteManager).Assembly.GetManifestResourceStream(resourceName); if (stream == null) { LogHelper.LogError("Failed to load " + resourceName + ". The embedded resources are " + string.Join(", ", typeof(SpriteManager).Assembly.GetManifestResourceNames())); throw new KeyNotFoundException(resourceName); } byte[] array = new byte[stream.Length]; stream.Read(array, 0, array.Length); Texture2D val = new Texture2D(2, 2, (TextureFormat)72, false); ImageConversion.LoadImage(val, array); return val; } } internal class StableComparer : IComparer> { private readonly IComparer comparer; public StableComparer(IComparer comparison) { comparer = comparison; } public static Comparison> GetStableComparison(Comparison comparison) { return CompareTo; int CompareTo(KeyValuePair x, KeyValuePair y) { int num = comparison(x.Value, y.Value); if (num == 0) { return x.Key - y.Key; } return num; } } public int Compare(KeyValuePair x, KeyValuePair y) { int num = comparer.Compare(x.Value, y.Value); if (num == 0) { return x.Key - y.Key; } return num; } } internal static class StableSortExtension { internal static void StableSort(this IList ts, Comparison comparison) { KeyValuePair[] array = new KeyValuePair[ts.Count]; for (int i = 0; i < ts.Count; i++) { array[i] = new KeyValuePair(i, ts[i]); } Array.Sort(array, StableComparer.GetStableComparison(comparison)); for (int j = 0; j < ts.Count; j++) { ts[j] = array[j].Value; } } } } namespace Benchwarp.Settings { public class ConfigSettings { private readonly ConfigSettingsData data; public MenuMode MenuMode { get { return data.MenuMode.Value; } set { data.MenuMode.Value = value; } } public bool ShowScene { get { return data.ShowScene.Value; } set { data.ShowScene.Value = value; } } public bool AlwaysToggleAll { get { return data.AlwaysToggleAll.Value; } set { data.AlwaysToggleAll.Value = value; } } public bool EnableDeploy { get { return data.EnableDeploy.Value; } set { data.EnableDeploy.Value = value; } } public bool EnableHotkeys { get { return data.EnableHotkeys.Value; } set { data.EnableHotkeys.Value = value; } } public bool RecoveryMode { get { return data.RecoveryMode.Value; } set { data.RecoveryMode.Value = value; } } internal static event Action? OnMenuModeChanged; internal static event Action? OnShowSceneChanged; internal static event Action? OnAlwaysToggleAllChanged; internal static event Action? OnEnableDeployChanged; internal static event Action? OnEnableHotkeysChanged; internal static event Action? OnRecoveryModeChanged; public ConfigSettings(ConfigSettingsData data) { this.data = data; data.MenuMode.SettingChanged += delegate { Invoke(ConfigSettings.OnMenuModeChanged, ".ctor"); }; data.ShowScene.SettingChanged += delegate { Invoke(ConfigSettings.OnShowSceneChanged, ".ctor"); }; data.AlwaysToggleAll.SettingChanged += delegate { Invoke(ConfigSettings.OnAlwaysToggleAllChanged, ".ctor"); }; data.EnableHotkeys.SettingChanged += delegate { Invoke(ConfigSettings.OnEnableHotkeysChanged, ".ctor"); }; data.EnableDeploy.SettingChanged += delegate { Invoke(ConfigSettings.OnEnableDeployChanged, ".ctor"); }; data.RecoveryMode.SettingChanged += delegate { Invoke(ConfigSettings.OnRecoveryModeChanged, ".ctor"); }; } internal static void Invoke(Action? a, [CallerMemberName] string? caller = "") { try { a?.Invoke(); } catch (Exception arg) { LogHelper.LogError($"Error in update event for {caller}:\n{arg}"); } } internal static void Invoke(Action? a, T arg, [CallerMemberName] string? caller = "") { try { a?.Invoke(arg); } catch (Exception arg2) { LogHelper.LogError($"Error in update event for {caller}:\n{arg2}"); } } } public class ConfigSettingsData { public required ConfigEntry MenuMode { get; init; } public required ConfigEntry ShowScene { get; init; } public required ConfigEntry AlwaysToggleAll { get; init; } public required ConfigEntry EnableDeploy { get; init; } public required ConfigEntry EnableHotkeys { get; init; } public required ConfigEntry RecoveryMode { get; init; } } public enum MenuMode { [Description("StandardBenchwarp: warp to visited benches only.")] StandardBenchwarp, [Description("WarpOnly: warp to current respawn only.")] WarpOnly, [Description("UnlockAll: warp to any bench.")] UnlockAll, [Description("DoorWarp: warp to room transitions.")] DoorWarp } public class SaveSettings(SaveSettingsData data) { private SaveSettingsData data = data; private static readonly KeyedEvent>.IKeyedEventOwner onSetVisitedLocalOwner; private static readonly KeyedEvent>.IKeyedEventOwner onSetLockedLocalOwner; internal static KeyedEvent> OnSetVisitedLocal { get; } = new KeyedEvent>(out onSetVisitedLocalOwner); internal static KeyedEvent> OnSetLockedLocal { get; } = new KeyedEvent>(out onSetLockedLocalOwner); public DeployInfo? DeployInfo { get { return data.DeployInfo; } set { data.DeployInfo = value; Invoke(SaveSettings.OnDeployInfoChanged, "DeployInfo"); } } internal static event Action? OnSetVisitedGlobal; internal static event Action? OnSetLocked; internal static event Action? OnDeployInfoChanged; internal static event Action? OnNewSettingsLoaded; public bool IsVisited(BenchKey key) { return data.VisitedBenches.Contains(key); } public bool IsLocked(BenchKey key) { return data.LockedBenches.Contains(key); } public void SetVisited(BenchKey key, bool value) { if (IsLocked(key)) { return; } if (value) { if (data.VisitedBenches.Add(key)) { Invoke(SaveSettings.OnSetVisitedGlobal, key, value, "SetVisited"); onSetVisitedLocalOwner.Invoke(key, value, "SetVisited"); } } else if (data.VisitedBenches.Remove(key)) { Invoke(SaveSettings.OnSetVisitedGlobal, key, value, "SetVisited"); onSetVisitedLocalOwner.Invoke(key, value, "SetVisited"); } } public void SetLocked(BenchKey key, bool value) { if (value) { if (data.LockedBenches.Add(key)) { Invoke(SaveSettings.OnSetLocked, key, value, "SetLocked"); onSetLockedLocalOwner.Invoke(key, value, "SetLocked"); } } else if (data.LockedBenches.Remove(key)) { Invoke(SaveSettings.OnSetLocked, key, value, "SetLocked"); onSetLockedLocalOwner.Invoke(key, value, "SetLocked"); } } private static void Invoke(Action? a, [CallerMemberName] string? caller = "") { try { a?.Invoke(); } catch (Exception arg) { LogHelper.LogError($"Error in update event for {caller}:\n{arg}"); } } private static void Invoke(Action? a, T1 arg1, T2 arg2, [CallerMemberName] string? caller = "") { try { a?.Invoke(arg1, arg2); } catch (Exception arg3) { LogHelper.LogError($"Error invoking global update event for {caller}:\n{arg3}"); } } internal SaveSettingsData GetSerializationData() { return data; } internal void Load(SaveSettingsData data) { this.data = data; try { SaveSettings.OnNewSettingsLoaded?.Invoke(); } catch (Exception arg) { LogHelper.LogError($"Error invoking OnNewSettingsLoaded:\n{arg}"); } } } public class SaveSettingsData { public DeployInfo? DeployInfo; public HashSet VisitedBenches = new HashSet(); public HashSet LockedBenches = new HashSet(); } public class SharedSettings(SharedSettingsData data) { private SharedSettingsData data = data; public DeployStyles DeployStyle { get { return data.DeployStyle; } set { data.DeployStyle = value; Invoke(SharedSettings.OnDeployStyleChanged, "DeployStyle"); } } internal static event Action? OnDeployStyleChanged; internal static event Action? OnNewSettingsLoaded; internal string GetHotkey(string code) { if (!data.HotkeyOverrides.TryGetValue(code, out string value)) { return code; } return value; } internal SharedSettingsData GetSerializationData() { return data; } internal void Load(SharedSettingsData data) { this.data = data; try { SharedSettings.OnNewSettingsLoaded?.Invoke(); } catch (Exception arg) { LogHelper.LogError($"Error invoking OnNewSettingsLoaded:\n{arg}"); } } internal static void Invoke(Action? a, [CallerMemberName] string? caller = "") { try { a?.Invoke(); } catch (Exception arg) { LogHelper.LogError($"Error in update event for {caller}:\n{arg}"); } } } public class SharedSettingsData { public DeployStyles DeployStyle = DeployStyles.Bone; public Dictionary HotkeyOverrides = new Dictionary(); internal static SharedSettingsData CreateDefault() { return new SharedSettingsData { HotkeyOverrides = new Dictionary { ["LB"] = "LB", ["SB"] = "SB", ["DW"] = "DW", ["NP"] = "NP", ["WD"] = "WD", ["DB"] = "DB" } }; } } } namespace Benchwarp.Patches { internal static class DataManagerFix { internal static void Hook() { SceneManager.activeSceneChanged += OnMenu; } internal static void Unhook() { SceneManager.activeSceneChanged -= OnMenu; } private static void OnMenu(Scene from, Scene to) { if (((Scene)(ref to)).name == "Menu_Title") { BenchwarpPlugin.SaveSettings.Load(new SaveSettingsData()); } } } [HarmonyPatch(typeof(SceneAdditiveLoadConditional), "OnWasLoaded")] internal static class FleaGamesStartBenchFix { [HarmonyPostfix] public static void OnWasLoaded(SceneAdditiveLoadConditional __instance) { //IL_00b5: 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_00db: Unknown result type (might be due to invalid IL or missing references) if (!(__instance.SceneNameToLoad == "Aqueduct_05_festival") || !PlayerDataAccess.FleaGamesCanStart || PlayerDataAccess.FleaGamesStarted) { return; } RespawnInfo respawnInfo = RespawnInfo.FromPlayerData(); if (!(respawnInfo.SceneName == "Aqueduct_05") || (!(respawnInfo.RespawnMarkerName == "RestBench") && !(respawnInfo.RespawnMarkerName == "RestBench Festival"))) { return; } Scene s = Enumerable.Range(0, SceneManager.sceneCount).Select((Func)SceneManager.GetSceneAt).First((Scene val2) => ((Scene)(ref val2)).name == "Aqueduct_05_festival"); string[] array = new string[2] { "Caravan_States/Flea Festival/Festival_Feast/RestBench Festival", "Caravan_States/Flea Festival/Festival_Feast/Bench (1)" }; foreach (string path in array) { GameObject val = s.FindGameObject(path, warnIfNotFound: true); if (!((Object)(object)val == (Object)null)) { val.transform.SetParent((Transform)null, true); val.SetActive(true); } } if (respawnInfo.RespawnMarkerName != "RestBench Festival") { PlayerDataAccess.respawnMarkerName = "RestBench Festival"; } } } [HarmonyPatch(typeof(GameManager), "GetRespawnInfo")] internal static class OverrideKnownRespawnPatch { [HarmonyPrefix] private static bool OverrideGetRespawnInfo(ref string scene, ref string marker) { DeployInfo deployInfo = BenchwarpPlugin.SaveSettings.DeployInfo; if ((object)deployInfo != null && deployInfo.IsCurrentRespawn()) { scene = deployInfo.RespawnInfo.SceneName; marker = deployInfo.RespawnInfo.RespawnMarkerName; return false; } BenchData currentBenchRespawn = BenchList.CurrentBenchRespawn; if ((object)currentBenchRespawn != null) { RespawnInfo respawnInfo = currentBenchRespawn.RespawnInfo.GetRespawnInfo(); scene = respawnInfo.SceneName; marker = respawnInfo.RespawnMarkerName; return false; } RespawnInfo startDef = BenchListModifiers.GetStartDef(); if (startDef.IsCurrentRespawn()) { scene = startDef.SceneName; marker = startDef.RespawnMarkerName; return false; } return true; } [HarmonyPostfix] private static void RecordGetRespawnInfoFallthrough(GameManager __instance, ref string scene, ref string marker) { if (scene == "Tut_01" && __instance.playerData.respawnScene != "Tut_01") { BenchwarpPlugin.Instance.Logger.LogWarning((object)("Unrecognized respawn at " + __instance.playerData.respawnMarkerName + " in " + __instance.playerData.respawnScene + ", GameManager.GetRespawnInfo will fall through to Tut_01.")); } } } [HarmonyPatch(typeof(GameManager), "ContinueGame")] internal static class RecoveryModePatch { [HarmonyPrefix] private static void ModifyRespawn() { if (BenchwarpPlugin.ConfigSettings.RecoveryMode) { LogHelper.LogWarn("Recovery mode is enabled. Setting respawn location to Tut_01..."); new RespawnInfo("Tut_01", "Death Respawn Marker Init", 0, (MapZone)13).SetRespawn(); } } } internal static class RedeployPatch { internal static void Hook() { SceneManager.activeSceneChanged += OnActiveSceneChanged; } internal static void Unhook() { SceneManager.activeSceneChanged -= OnActiveSceneChanged; } private static void OnActiveSceneChanged(Scene from, Scene to) { DeployManager.Redeploy(); } } internal static class ShakraPDHook { internal static void Hook() { PlayerDataVariableEvents.OnSetBool += UpdateShakraBenches; } internal static void Unhook() { PlayerDataVariableEvents.OnSetBool -= UpdateShakraBenches; } private static bool UpdateShakraBenches(PlayerData pd, string fieldName, bool current) { if (!(fieldName == "MapperLeftGreymoor")) { if (fieldName == "MapperLeftPeak" && current) { BenchwarpPlugin.SaveSettings.SetVisited(BaseBenchList.ShakraMountFay, value: true); } } else if (current) { BenchwarpPlugin.SaveSettings.SetVisited(BaseBenchList.ShakraGreymoor, value: true); } return current; } } internal class StyxBenchFix { internal static void Hook() { SceneManager.activeSceneChanged += OnActiveSceneChanged; } internal static void Unhook() { SceneManager.activeSceneChanged -= OnActiveSceneChanged; } private static void OnActiveSceneChanged(Scene from, Scene to) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) if (!(((Scene)(ref to)).name == "Dust_11") || (int)PlayerDataAccess.permadeathMode != 0 || !GameManager.instance.RespawningHero || !BaseBenchList.Styx.RespawnInfo.IsCurrentRespawn() || !(PlayerDataAccess.blackThreadWorld ? (!PlayerDataAccess.silkFarmAbyssCoresCleared) : (!PlayerDataAccess.silkFarmBattle1_complete))) { return; } GameObject val = to.FindGameObject("Steel Soul States/Regular/NPC Control/Grub Farmer NPC", warnIfNotFound: true); if (Object.op_Implicit((Object)(object)val)) { PlayMakerFSM val2 = FSMUtility.LocateMyFSM(val, "Control"); string[] array = new string[2] { "Battle Active", "Abyss Battle Active" }; foreach (string text in array) { FsmUtil.RemoveFirstActionOfType(FsmUtil.MustGetState(val2, text)); } } } } } namespace Benchwarp.Hotkeys { public static class HotkeyActions { public const string LastBench = "LB"; public const string StartBench = "SB"; public const string DoorWarp = "DW"; public const string NextPage = "NP"; public const string WarpDeploy = "WD"; public const string DeployBench = "DB"; private static readonly Dictionary _hotkeys; public static ReadOnlyDictionary CurrentHotkeys { get; } public static ReadOnlyDictionary BaseHotkeys { get; } static HotkeyActions() { CurrentHotkeys = new ReadOnlyDictionary(_hotkeys = new Dictionary()); BaseHotkeys = new ReadOnlyDictionary(new Dictionary { ["LB"] = ChangeScene.WarpToRespawn, ["SB"] = (Action)Delegate.Combine(new Action(BenchListModifiers.MenuSetToStart), new Action(ChangeScene.WarpToRespawn)), ["WD"] = (Action)Delegate.Combine(new Action(DeployManager.MenuSetRespawnToDeploy), new Action(ChangeScene.WarpToRespawn)), ["DW"] = delegate { if (BenchwarpPlugin.ConfigSettings.MenuMode != MenuMode.DoorWarp) { BenchwarpPlugin.ConfigSettings.MenuMode = MenuMode.DoorWarp; } else { BenchwarpPlugin.ConfigSettings.MenuMode = MenuMode.StandardBenchwarp; } }, ["DB"] = delegate { DeployManager.DeployAtHero(); }, ["NP"] = delegate { GUIController.Instance.NextPage(); } }); RefreshHotkeys(); } public static void RefreshHotkeys() { _hotkeys.Clear(); foreach (var (code, a) in BaseHotkeys) { AddHotkey(_hotkeys, code, a); } foreach (var (text2, action2) in ModEvents.GetHotkeyRequests()) { if (action2 == null) { _hotkeys.Remove(text2); } else { AddHotkey(_hotkeys, text2, action2); } } } internal static void AddHotkey(Dictionary dict, string code, Action a) { code = BenchwarpPlugin.SharedSettings.GetHotkey(code); if (code.Length != 2 || !char.IsLetter(code[0]) || !char.IsLetter(code[1])) { LogHelper.LogError("Invalid hotkey " + code + ": hotkeys must consist of exactly two letters."); } else { dict[code] = a; } } public static bool TryDoHotkeyAction(int groupIndex, int benchIndex) { if (BenchList.BenchGroups.Count > groupIndex && BenchList.BenchGroups[groupIndex].Benches.Count > benchIndex) { BenchList.BenchGroups[groupIndex].Benches[benchIndex].MenuSetBench(); ChangeScene.WarpToRespawn(); return true; } return false; } public static bool TryDoHotkeyAction(string code) { if (CurrentHotkeys.TryGetValue(code, out Action value)) { try { value?.Invoke(); } catch (Exception arg) { LogHelper.LogError($"Error invoking hotkey bound to {code}:\n{arg}"); } return true; } return false; } } public readonly record struct HotkeyCode(HotkeyInput First, HotkeyInput Second) { public static HotkeyCode None { get; } = new HotkeyCode(HotkeyInput.None, HotkeyInput.None); public bool IsComplete { get { if (!First.IsNone) { return !Second.IsNone; } return false; } } public static HotkeyCode operator +(HotkeyCode code, HotkeyInput input) { return new HotkeyCode(code.Second, input); } public bool TryGetLetterNumCode(out int firstIndex, out int secondIndex) { if (First.IsLetter && Second.IsNum) { firstIndex = First.Num; secondIndex = Second.Num; return true; } firstIndex = 0; secondIndex = 0; return false; } public bool TryGetNumericCode(out int code) { if (First.IsNum && Second.IsNum) { code = First.Num * 10 + Second.Num; return true; } code = 0; return false; } public bool TryGetStringCode(out string code) { if (First.IsLetter && Second.IsLetter) { code = $"{First.Letter}{Second.Letter}"; return true; } code = string.Empty; return false; } } public readonly record struct HotkeyInput(HotkeyType Type, int Num) { public static HotkeyInput None { get; } = new HotkeyInput(HotkeyType.None, 0); public bool IsNone => Type == HotkeyType.None; public bool IsLetter => Type == HotkeyType.Letter; public bool IsNum => Type == HotkeyType.Number; public char Letter => (char)(65 + Num); } public enum HotkeyType { None, Letter, Number } } namespace Benchwarp.Events { public static class BenchListModifiers { private static readonly SequentialEvent>.ISequentialEventOwner onGetStartDefOwner; private static readonly SequentialEvent>.ISequentialEventOwner benchSuppressorsOwner; private static readonly SequentialEvent>>.ISequentialEventOwner benchInjectorsOwner; private static readonly SequentialEvent>.ISequentialEventOwner benchComparisonsOwner; public static SequentialEvent> OnGetStartDef { get; } public static SequentialEvent> BenchSuppressors { get; } public static SequentialEvent>> BenchInjectors { get; } public static SequentialEvent> BenchComparisons { get; } public static RespawnInfo GetStartDef() { return onGetStartDefOwner.InvokeToTransform(new RespawnInfo("Tut_01", "Death Respawn Marker Init", 0, (MapZone)13), "GetStartDef"); } public static bool AtStart() { return GetStartDef().IsCurrentRespawn(); } public static void MenuSetToStart() { if (BenchwarpPlugin.ConfigSettings.MenuMode != MenuMode.WarpOnly) { GetStartDef().SetRespawn(); } } internal static bool ShouldSuppressBench(BenchData bench) { return benchSuppressorsOwner.InvokeAndAggregate(bench, seed: false, (bool b1, bool b2) => b1 || b2, "ShouldSuppressBench"); } internal static IEnumerable GetInjectedBenches() { return benchInjectorsOwner.InvokeAndCollectFlat("GetInjectedBenches"); } internal static void SortBenchList(List benches) { foreach (Comparison subscriber in benchComparisonsOwner.GetSubscribers()) { benches.StableSort(subscriber); } } static BenchListModifiers() { OnGetStartDef = new SequentialEvent>(out onGetStartDefOwner); BenchSuppressors = new SequentialEvent>(out benchSuppressorsOwner); BenchInjectors = new SequentialEvent>>(out benchInjectorsOwner); BenchComparisons = new SequentialEvent>(out benchComparisonsOwner); benchSuppressorsOwner.OnSubscribersChanged += BenchList.RefreshBenchList; benchInjectorsOwner.OnSubscribersChanged += BenchList.RefreshBenchList; } } public static class ModEvents { private static readonly SequentialEvent>.ISequentialEventOwner hotkeyRequestsOwner; public static IObstacleHandler DoorwarpObstacleHandler { get; set; } public static IObstacleProvider DoorwarpObstacleProvider { get; set; } public static SequentialEvent> HotkeyRequests { get; } public static event Action? OnBenchSelected; public static event Action? OnBenchwarp; public static event Action? OnDoorwarp; internal static void InvokeOnBenchSelected() { try { ModEvents.OnBenchSelected?.Invoke(); } catch (Exception o) { LogHelper.LogError(o); } } internal static void InvokeOnBenchwarp() { try { ModEvents.OnBenchwarp?.Invoke(); } catch (Exception o) { LogHelper.LogError(o); } } internal static void InvokeOnDoorwarp(RoomData room, DoorData gate) { try { ModEvents.OnDoorwarp?.Invoke(room, gate); } catch (Exception o) { LogHelper.LogError(o); } } internal static IEnumerable<(string, Action?)> GetHotkeyRequests() { return hotkeyRequestsOwner.InvokeAndCollect("GetHotkeyRequests"); } static ModEvents() { DoorwarpObstacleHandler = new NoSaveObstacleHandler(); DoorwarpObstacleProvider = new BaseObstacleProvider(); HotkeyRequests = new SequentialEvent>(out hotkeyRequestsOwner); hotkeyRequestsOwner.OnSubscribersChanged += HotkeyActions.RefreshHotkeys; } } public static class WorldEvents { public static event Action? OnRespawnChanged; internal static void InvokeOnRespawnChanged(RespawnInfo info) { BenchList.UpdateRespawn(info); try { WorldEvents.OnRespawnChanged?.Invoke(info, BenchList.CurrentBenchRespawn); } catch (Exception o) { LogHelper.LogError(o); } } } } namespace Benchwarp.Doors { public class AreaRoomGroup { public required string MenuArea { get; init; } public required ReadOnlyCollection Rooms { get; init; } } public class DoorData { private static readonly ReadOnlyCollection emptyDynamicTargets = new ReadOnlyCollection(new List()); private static readonly ReadOnlyCollection emptyObstacles = new ReadOnlyCollection(new List()); public TransitionKey Self { get; } public TransitionKey? Target { get; } public TransitionKey? Source { get; } public ReadOnlyCollection DynamicTargets { get; init; } = emptyDynamicTargets; public ReadOnlyCollection Obstacles { get; init; } = emptyObstacles; public DoorData(TransitionKey self) { Self = self; Target = self; } public DoorData(TransitionKey self, TransitionKey sourcetarget) { Self = self; Target = sourcetarget; Source = sourcetarget; } public DoorData(TransitionKey self, TransitionKey? source, TransitionKey? target) { Self = self; Target = target; Source = source; } } public static class DoorList { public static ReadOnlyDictionary Rooms { get; } public static ReadOnlyDictionary Doors { get; } public static ReadOnlyCollection RoomGroups { get; } public static int RoomCount { get; } public static int DoorCount { get; } public static int MaxRoomsPerArea { get; } public static int MaxDoorsPerRoom { get; } static DoorList() { Rooms = new ReadOnlyDictionary((from p in typeof(BaseRoomList).GetProperties(BindingFlags.Static | BindingFlags.Public) where p.PropertyType == typeof(RoomData) select (RoomData)p.GetValue(null)).ToDictionary((RoomData d) => d.Name, (RoomData d) => d)); Doors = new ReadOnlyDictionary(Rooms.Values.SelectMany((RoomData r) => r.Gates).ToDictionary((DoorData g) => g.Self)); List list = new List(); list.AddRange(from g in (from r in Rooms.Values group r by r.TitledArea).Select(delegate(IGrouping g) { AreaRoomGroup obj = new AreaRoomGroup { MenuArea = g.Key }; List list2 = new List(); list2.AddRange(g); obj.Rooms = new ReadOnlyCollection(list2); return obj; }) orderby g.MenuArea select g); RoomGroups = new ReadOnlyCollection(list); RoomCount = ((IEnumerable)RoomGroups).Sum((Func)CountRooms); DoorCount = RoomGroups.Sum((AreaRoomGroup g) => ((IEnumerable)g.Rooms).Sum((Func)CountGates)); MaxRoomsPerArea = ((IEnumerable)RoomGroups).Max((Func)CountRooms); MaxDoorsPerRoom = RoomGroups.Max((AreaRoomGroup g) => ((IEnumerable)g.Rooms).Max((Func)CountGates)); static int CountGates(RoomData r) { return r.Gates.Count; } static int CountRooms(AreaRoomGroup g) { return g.Rooms.Count; } } } public class RoomData { public required string Name { get; init; } public required MapZone MapZone { get; init; } public required string MapArea { get; init; } public required string TitledArea { get; init; } public required ReadOnlyCollection Gates { get; init; } } public readonly record struct TransitionKey(string SceneName, string GateName) { public string Name { get; } = SceneName + "[" + GateName + "]"; private static readonly Regex r = new Regex("^(\\w+)\\[([\\w\\s]+)\\]$"); public static TransitionKey FromName(string name) { Match match = r.Match(name); if (match == null || !match.Success) { throw new ArgumentException("Illformated transition name" + name, "name"); } return new TransitionKey(match.Groups[1].Value, match.Groups[2].Value); } } } namespace Benchwarp.Doors.Obstacles { public class BaseObstacleProvider : IObstacleProvider { public IEnumerable GetGateObstacles(RoomData room, DoorData gate) { return gate.Obstacles; } } public record BehaviourObstacleInfo : ObstacleInfo where T : Behaviour { public bool Enable { get; init; } public int Index { get; init; } public BehaviourObstacleInfo(string ObjPath, bool Enable, ObstacleType Type, ObstacleSeverity Severity, ObstacleSaveInfo? SaveInfo = null, int Index = 0) { this.Enable = Enable; this.Index = Index; base..ctor(ObjPath, Type, Severity, SaveInfo); } public Behaviour? FindBehaviour(Scene scene, bool warnIfNotFound = false) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) GameObject val = FindObj(scene, warnIfNotFound); if (!Object.op_Implicit((Object)(object)val)) { return null; } object obj = val.GetComponents().ElementAtOrDefault(Index); if (!Object.op_Implicit((Object)obj) && warnIfNotFound) { LogHelper.LogWarn($"GameObject at {base.ObjPath} did not have {Index + 1} components of type {typeof(T).Name}."); } return (Behaviour?)obj; } public override void Open(Scene scene) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) Behaviour val = FindBehaviour(scene); if (val != null && Object.op_Implicit((Object)(object)val)) { val.enabled = Enable; } } [CompilerGenerated] public void Deconstruct(out string ObjPath, out bool Enable, out ObstacleType Type, out ObstacleSeverity Severity, out ObstacleSaveInfo? SaveInfo, out int Index) { ObjPath = base.ObjPath; Enable = this.Enable; Type = base.Type; Severity = base.Severity; SaveInfo = base.SaveInfo; Index = this.Index; } } public record FsmEventObstacleInfo : FsmObstacleInfo { public string FsmEventName { get; init; } public FsmEventObstacleInfo(string ObjPath, string FsmName, string FsmEventName, ObstacleType Type, ObstacleSeverity Severity, ObstacleSaveInfo? SaveInfo = null) { this.FsmEventName = FsmEventName; base..ctor(ObjPath, FsmName, Type, Severity, SaveInfo); } public override void Open(PlayMakerFSM fsm) { fsm.SendEvent(FsmEventName); } [CompilerGenerated] public void Deconstruct(out string ObjPath, out string FsmName, out string FsmEventName, out ObstacleType Type, out ObstacleSeverity Severity, out ObstacleSaveInfo? SaveInfo) { ObjPath = base.ObjPath; FsmName = base.FsmName; FsmEventName = this.FsmEventName; Type = base.Type; Severity = base.Severity; SaveInfo = base.SaveInfo; } } public abstract record FsmObstacleInfo : ObstacleInfo { public string FsmName { get; init; } protected FsmObstacleInfo(string ObjPath, string FsmName, ObstacleType Type, ObstacleSeverity Severity, ObstacleSaveInfo? SaveInfo = null) { this.FsmName = FsmName; base..ctor(ObjPath, Type, Severity, SaveInfo); } public abstract void Open(PlayMakerFSM fsm); public sealed override void Open(Scene scene) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) GameObject val = FindObj(scene); if (!((Object)(object)val == (Object)null)) { PlayMakerFSM val2 = FSMUtility.LocateMyFSM(val, FsmName); if (!((Object)(object)val2 == (Object)null)) { Open(val2); } } } [CompilerGenerated] public void Deconstruct(out string ObjPath, out string FsmName, out ObstacleType Type, out ObstacleSeverity Severity, out ObstacleSaveInfo? SaveInfo) { ObjPath = base.ObjPath; FsmName = this.FsmName; Type = base.Type; Severity = base.Severity; SaveInfo = base.SaveInfo; } } public record FsmTransitionObstacleInfo : FsmObstacleInfo { public string FsmStateName { get; init; } public string FsmEventName { get; init; } public string ToState { get; init; } public FsmTransitionObstacleInfo(string ObjPath, string FsmName, string FsmStateName, string FsmEventName, string ToState, ObstacleType Type, ObstacleSeverity Severity, ObstacleSaveInfo? SaveInfo = null) { this.FsmStateName = FsmStateName; this.FsmEventName = FsmEventName; this.ToState = ToState; base..ctor(ObjPath, FsmName, Type, Severity, SaveInfo); } public override void Open(PlayMakerFSM fsm) { FsmUtil.ChangeTransition(FsmUtil.MustGetState(fsm, FsmStateName), FsmEventName, ToState); } [CompilerGenerated] public void Deconstruct(out string ObjPath, out string FsmName, out string FsmStateName, out string FsmEventName, out string ToState, out ObstacleType Type, out ObstacleSeverity Severity, out ObstacleSaveInfo? SaveInfo) { ObjPath = base.ObjPath; FsmName = base.FsmName; FsmStateName = this.FsmStateName; FsmEventName = this.FsmEventName; ToState = this.ToState; Type = base.Type; Severity = base.Severity; SaveInfo = base.SaveInfo; } } public record GameObjectActiveObstacleInfo : ObstacleInfo { public bool Active { get; init; } public GameObjectActiveObstacleInfo(string ObjPath, bool Active, ObstacleType Type, ObstacleSeverity Severity, ObstacleSaveInfo? SaveInfo = null) { this.Active = Active; base..ctor(ObjPath, Type, Severity, SaveInfo); } public override void Open(Scene scene) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) GameObject? obj = FindObj(scene); if (obj != null) { obj.SetActive(Active); } } [CompilerGenerated] public void Deconstruct(out string ObjPath, out bool Active, out ObstacleType Type, out ObstacleSeverity Severity, out ObstacleSaveInfo? SaveInfo) { ObjPath = base.ObjPath; Active = this.Active; Type = base.Type; Severity = base.Severity; SaveInfo = base.SaveInfo; } } public interface IObstacleHandler { void BeforeTransition(RoomData room, DoorData gate, IObstacleProvider obstacleProvider); void OnSceneChange(Scene scene, RoomData room, DoorData gate, IObstacleProvider obstacleProvider); } public interface IObstacleProvider { IEnumerable GetGateObstacles(RoomData room, DoorData gate); } public class NoSaveObstacleHandler : ObstacleHandler { protected override bool HandleObstacleOnActiveSceneChange(Scene scene, RoomData room, DoorData gate, ObstacleInfo o, bool handledBeforeTransition) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return HandleObstacle(scene, room, gate, o); } public static bool HandleObstacle(Scene scene, RoomData room, DoorData gate, ObstacleInfo o) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) o.Open(scene); return true; } } public abstract class ObstacleHandler : IObstacleHandler { protected readonly HashSet handledObstacles = new HashSet(); public void BeforeTransition(RoomData room, DoorData gate, IObstacleProvider obstacleProvider) { handledObstacles.Clear(); foreach (ObstacleInfo gateObstacle in obstacleProvider.GetGateObstacles(room, gate)) { try { if (HandleObstacleBeforeTransition(room, gate, gateObstacle)) { handledObstacles.Add(gateObstacle); } } catch (Exception arg) { LogHelper.LogError($"Error handling obstacle {gateObstacle} before transition for gate {gate.Self}:\n{arg}"); } } } public void OnSceneChange(Scene scene, RoomData room, DoorData gate, IObstacleProvider obstacleProvider) { //IL_0019: Unknown result type (might be due to invalid IL or missing references) foreach (ObstacleInfo gateObstacle in obstacleProvider.GetGateObstacles(room, gate)) { try { if (HandleObstacleOnActiveSceneChange(scene, room, gate, gateObstacle, handledObstacles.Contains(gateObstacle))) { handledObstacles.Add(gateObstacle); } } catch (Exception arg) { LogHelper.LogError($"Error handling obstacle {gateObstacle} on scene change for gate {gate.Self}:\n{arg}"); } } IEnumerable enumerable = gate.Obstacles.Where((ObstacleInfo o) => !handledObstacles.Contains(o)); if (enumerable.Any()) { LogHelper.LogWarn("ObstacleHandler " + GetType().Name + " for gate " + gate.Self.Name + " did not handle the following obstacles: " + string.Join("; ", enumerable)); } handledObstacles.Clear(); } protected virtual bool HandleObstacleBeforeTransition(RoomData room, DoorData gate, ObstacleInfo o) { return false; } protected virtual bool HandleObstacleOnActiveSceneChange(Scene scene, RoomData room, DoorData gate, ObstacleInfo o, bool handledBeforeTransition) { return false; } } public record ObstacleInfo(string ObjPath, ObstacleType Type, ObstacleSeverity Severity, ObstacleSaveInfo? SaveInfo = null) { public string GetObjName() { return ObjPath.Split('/').Last(); } public GameObject? FindObj(Scene scene, bool warnIfNotFound = false) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) return scene.FindGameObject(ObjPath, warnIfNotFound); } public void DestroyObj(Scene scene, bool warnIfNotFound = false) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) Object.Destroy((Object)(object)FindObj(scene, warnIfNotFound)); } public virtual void Open(Scene scene) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) DestroyObj(scene); } public bool TrySave(RoomData room, DoorData gate) { if ((object)SaveInfo != null) { SaveInfo.Save(room, gate, GetObjName()); return true; } return false; } } public abstract record ObstacleSaveInfo { public abstract void Save(RoomData room, DoorData gate, string objName); } [Flags] public enum ObstacleSeverity { ModifiesSaveData = 1, InterruptsEntry = 2, LimitsRoomAccess = 4, LimitsExitAccess = 8, LimitsVisibility = 0x10, AbnormalVisual = 0x20 } public enum ObstacleType { Mask, OneWayBreakableEntry, OneWayBreakableExit, TwoWayBreakable, OneWayMechanismEntry, OneWayMechanismExit, TwoWayMechanism, OpenAfterProgression, ClosedAfterProgression, Cutscene, Other } public class OverrideObstacleProvider : IObstacleProvider { public required IEnumerable Obstacles { get; init; } public IEnumerable GetGateObstacles(RoomData room, DoorData gate) { return gate.Obstacles; } } public class PermanentObstacleHandler : ObstacleHandler { protected override bool HandleObstacleBeforeTransition(RoomData room, DoorData gate, ObstacleInfo o) { return HandleObstacle(room, gate, o); } protected override bool HandleObstacleOnActiveSceneChange(Scene scene, RoomData room, DoorData gate, ObstacleInfo o, bool handledBeforeTransition) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) if (handledBeforeTransition) { return false; } return NoSaveObstacleHandler.HandleObstacle(scene, room, gate, o); } public static bool HandleObstacle(RoomData room, DoorData gate, ObstacleInfo o) { return o.TrySave(room, gate); } } public record PersistentBoolSaveInfo(string? SceneName = null, string? ID = null) : ObstacleSaveInfo() { public override void Save(RoomData room, DoorData gate, string objName) { SceneData.instance.PersistentBools.SetValue(new PersistentItemData { SceneName = (SceneName ?? room.Name), ID = (ID ?? objName), Value = true }); } } public record PlayerDataBoolSaveInfo(string PlayerDataBoolName) : ObstacleSaveInfo() { public override void Save(RoomData room, DoorData gate, string objName) { PlayerData.instance.SetBool(PlayerDataBoolName, true); } } public record PlayerDataIntSaveInfo(string PlayerDataIntName, int Value) : ObstacleSaveInfo() { public override void Save(RoomData room, DoorData gate, string objName) { PlayerData.instance.SetInt(PlayerDataIntName, Value); } } public record TestObjObstacleInfo : BehaviourObstacleInfo { public bool Activate { get; init; } public TestObjObstacleInfo(string ObjPath, bool Activate, ObstacleType Type, ObstacleSeverity Severity, ObstacleSaveInfo? SaveInfo = null, int Index = 0) { this.Activate = Activate; base..ctor(ObjPath, Activate, Type, Severity, SaveInfo, Index); } public override void Open(Scene scene) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) Behaviour? obj = FindBehaviour(scene); TestGameObjectActivator val = (TestGameObjectActivator)(object)((obj is TestGameObjectActivator) ? obj : null); if (val != null && Object.op_Implicit((Object)(object)val)) { ((Behaviour)val).enabled = false; GameObject activateGameObject = val.activateGameObject; if (activateGameObject != null) { activateGameObject.SetActive(Activate); } GameObject deactivateGameObject = val.deactivateGameObject; if (deactivateGameObject != null) { deactivateGameObject.SetActive(!Activate); } } } [CompilerGenerated] public override int GetHashCode() { return base.GetHashCode() * -1521134295 + EqualityComparer.Default.GetHashCode(Activate); } [CompilerGenerated] protected TestObjObstacleInfo(TestObjObstacleInfo original) : base((BehaviourObstacleInfo)original) { Activate = original.Activate; } [CompilerGenerated] public new void Deconstruct(out string ObjPath, out bool Activate, out ObstacleType Type, out ObstacleSeverity Severity, out ObstacleSaveInfo? SaveInfo, out int Index) { ObjPath = base.ObjPath; Activate = this.Activate; Type = base.Type; Severity = base.Severity; SaveInfo = base.SaveInfo; Index = base.Index; } } public record TransitionObstacleInfo : BehaviourObstacleInfo { public bool Enabled { get; init; } public TransitionObstacleInfo(string ObjPath, bool Enabled, ObstacleType Type, ObstacleSeverity Severity, ObstacleSaveInfo? SaveInfo = null) { this.Enabled = Enabled; base..ctor(ObjPath, Enabled, Type, Severity, SaveInfo, 0); } public override void Open(Scene scene) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) Behaviour? obj = FindBehaviour(scene); TransitionPoint val = (TransitionPoint)(object)((obj is TransitionPoint) ? obj : null); if (val != null && Object.op_Implicit((Object)(object)val)) { ((Behaviour)val).enabled = Enabled; val.isInactive = !Enabled; ((InteractableBase)val).IsDisabled = !Enabled; } } [CompilerGenerated] public override int GetHashCode() { return base.GetHashCode() * -1521134295 + EqualityComparer.Default.GetHashCode(Enabled); } [CompilerGenerated] protected TransitionObstacleInfo(TransitionObstacleInfo original) : base((BehaviourObstacleInfo)original) { Enabled = original.Enabled; } [CompilerGenerated] public void Deconstruct(out string ObjPath, out bool Enabled, out ObstacleType Type, out ObstacleSeverity Severity, out ObstacleSaveInfo? SaveInfo) { ObjPath = base.ObjPath; Enabled = this.Enabled; Type = base.Type; Severity = base.Severity; SaveInfo = base.SaveInfo; } } public record UnmaskerInfo : BehaviourObstacleInfo { public UnmaskerInfo(string ObjPath, ObstacleSaveInfo? SaveInfo = null) : base(ObjPath, Enable: true, ObstacleType.Mask, ObstacleSeverity.LimitsVisibility, SaveInfo, 0) { } public override void Open(Scene scene) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) Behaviour? obj = FindBehaviour(scene); Unmasker val = (Unmasker)(object)((obj is Unmasker) ? obj : null); if (val != null && Object.op_Implicit((Object)(object)val)) { val.Uncover(); } } [CompilerGenerated] public override int GetHashCode() { return base.GetHashCode(); } [CompilerGenerated] protected UnmaskerInfo(UnmaskerInfo original) : base((BehaviourObstacleInfo)original) { } [CompilerGenerated] public void Deconstruct(out string ObjPath, out ObstacleSaveInfo? SaveInfo) { ObjPath = base.ObjPath; SaveInfo = base.SaveInfo; } } } namespace Benchwarp.Deploy { internal static class DeployAssets { public const string DeployedRespawnMarkerName = "Benchwarp Deployed Respawn"; public static ManagedAsset? Bench { get; set; } public static GameObject CreateMarker() { //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) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Expected O, but got Unknown //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown GameObject val = new GameObject("Benchwarp Deployed Respawn"); RespawnMarker obj = val.AddComponent(); obj.customFadeDuration = new OverrideFloat(); obj.overrideMapZone = new OverrideMapZone(); val.AddComponent(); return val; } public static void PlaceMarkerRelativeToHero(GameObject go, Vector3 heroPos) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) go.transform.position = heroPos; } public static GameObject CreateBench() { //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) ((ManagedAssetBase)(object)Bench).Load().WaitForCompletion(); GameObject obj = ManagedAssetExtensions.InstantiateAsset(Bench); ((Object)obj).name = "Benchwarp Deployed Respawn"; ModifyBench(obj); obj.AddComponent(); return obj; } public static void PlaceBenchRelativeToHero(GameObject go, Vector3 heroPos) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) heroPos.y -= 0.6677f; heroPos.z += 0.0087f; go.transform.position = heroPos; } private static void ModifyBench(GameObject bench) { PlayMakerFSM obj = FSMUtility.LocateMyFSM(bench, "Bench Control"); FsmUtil.ChangeTransition(FsmUtil.GetState(obj, "Craw Summons?"), "FINISHED", "Start Locked?").ThrowIfFalse(); FsmUtil.ReplaceAllActions(FsmUtil.GetState(obj, "Craw Summons?"), Array.Empty()); FsmUtil.ChangeTransition(FsmUtil.GetState(obj, "Craw summons check"), "FINISHED", "Resting").ThrowIfFalse(); FsmUtil.ReplaceAllActions(FsmUtil.GetState(obj, "Craw summons check"), Array.Empty()); FsmUtil.ReplaceAllActions(FsmUtil.GetState(obj, "Craw Summons Instant?"), Array.Empty()); } private static void ThrowIfFalse(this bool b) { if (!b) { throw new InvalidOperationException(); } } } internal class DeployComponent : MonoBehaviour { private static DeployComponent? instance; private void Awake() { if (Object.op_Implicit((Object)(object)instance)) { Object.Destroy((Object)(object)((Component)instance).gameObject); } instance = this; } private void OnDestroy() { if ((Object)(object)instance == (Object)(object)this) { instance = null; } } public static void DestroyAll() { if (Object.op_Implicit((Object)(object)instance)) { Object.Destroy((Object)(object)((Component)instance).gameObject); } } } public record DeployInfo : IRespawnInfo { public required RespawnInfo RespawnInfo { get; init; } public required float HeroX { get; init; } public required float HeroY { get; init; } public required float HeroZ { get; init; } public required DeployStyles Style { get; init; } [JsonIgnore] public string SceneName => RespawnInfo.SceneName; [JsonIgnore] public Vector3 HeroPosition => new Vector3(HeroX, HeroY, HeroZ); RespawnInfo IRespawnInfo.GetRespawnInfo() { return RespawnInfo; } [CompilerGenerated] [SetsRequiredMembers] protected DeployInfo(DeployInfo original) { RespawnInfo = original.RespawnInfo; HeroX = original.HeroX; HeroY = original.HeroY; HeroZ = original.HeroZ; Style = original.Style; } public DeployInfo() { } } internal static class DeployManager { public static GameObject DeployAtHero() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: 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_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0090: 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) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) try { DeployStyles deployStyle = BenchwarpPlugin.SharedSettings.DeployStyle; Vector3 position = HeroController.instance.transform.position; object result = deployStyle switch { DeployStyles.Marker => DeployMarkerAtHero(position), DeployStyles.Bone => DeployBenchAtHero(position), _ => throw new NotImplementedException($"Unimplemented deploy style: {BenchwarpPlugin.SharedSettings.DeployStyle}"), }; BenchwarpPlugin.SaveSettings.DeployInfo = new DeployInfo { RespawnInfo = new RespawnInfo(GameManager.instance.GetSceneNameString(), "Benchwarp Deployed Respawn", deployStyle.ToRespawnType(), GameManager.instance.sm.mapZone), HeroX = position.x, HeroY = position.y, HeroZ = position.z, Style = deployStyle }; return (GameObject)result; } catch (Exception o) { LogHelper.LogError(o); throw; } } public static GameObject? Redeploy() { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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) //IL_004c: Unknown result type (might be due to invalid IL or missing references) DeployInfo deployInfo = BenchwarpPlugin.SaveSettings.DeployInfo; if ((object)deployInfo == null || GameManager.instance.GetSceneNameString() != deployInfo.SceneName) { return null; } try { Vector3 heroPosition = deployInfo.HeroPosition; return (GameObject?)(BenchwarpPlugin.SharedSettings.DeployStyle switch { DeployStyles.Marker => DeployMarkerAtHero(heroPosition), DeployStyles.Bone => DeployBenchAtHero(heroPosition), _ => throw new NotImplementedException($"Unimplemented deploy style: {BenchwarpPlugin.SharedSettings.DeployStyle}"), }); } catch (Exception o) { LogHelper.LogError(o); throw; } } public static GameObject DeployMarkerAtHero(Vector3 heroPos) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) GameObject obj = DeployAssets.CreateMarker(); DeployAssets.PlaceMarkerRelativeToHero(obj, heroPos); return obj; } public static GameObject DeployBenchAtHero(Vector3 heroPos) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) GameObject obj = DeployAssets.CreateBench(); DeployAssets.PlaceBenchRelativeToHero(obj, heroPos); return obj; } public static void Undeploy() { DeployComponent.DestroyAll(); DeployInfo? deployInfo = BenchwarpPlugin.SaveSettings.DeployInfo; if ((object)deployInfo != null && deployInfo.IsCurrentRespawn()) { BenchListModifiers.GetStartDef().SetRespawn(); } BenchwarpPlugin.SaveSettings.DeployInfo = null; } public static void MenuSetRespawnToDeploy() { if (BenchwarpPlugin.ConfigSettings.MenuMode != MenuMode.WarpOnly) { BenchwarpPlugin.SaveSettings.DeployInfo?.SetRespawn(); } } } public enum DeployStyles { Marker, Bone } public static class DeployStylesExtensions { [SpecialName] public sealed class $D1CB0754BA300FE0865F6D28E6537FAA { [SpecialName] public static class $0D16585C25657F0B27D8B3CE724D86E0 { } [ExtensionMarker("$0D16585C25657F0B27D8B3CE724D86E0")] public int ToRespawnType() { throw new NotSupportedException(); } } public static int ToRespawnType(this DeployStyles style) { if (style == DeployStyles.Marker) { return 0; } return 1; } } } namespace Benchwarp.Data { public static class BaseBenchList { public static BenchData RuinedChapel { get; } = new BenchData("Ruined Chapel", "Mosslands", new RespawnInfo("Tut_03", "RestBench", 1, (MapZone)18)); public static BenchData BoneBottom { get; } = new BenchData("Bone Bottom", "Mosslands", new RespawnInfo("Bonetown", "RestBench", 1, (MapZone)12)); public static BenchData MossDruid { get; } = new BenchData("Moss Druid", "Mosslands", new RespawnInfo("Mosstown_02c", "RestBench", 1, (MapZone)19)); public static BenchData SnailShamans { get; } = new BenchData("Snail Shamans", "Mosslands", new RespawnInfo("Tut_04", "RestBench", 1, (MapZone)18)); public static BenchData TollMarrow { get; } = new BenchData("Toll", "The Marrow", new RespawnInfo("Bone_01c", "RestBench", 1, (MapZone)2)); public static BenchData MosshomeGate { get; } = new BenchData("Mosshome Gate", "The Marrow", new RespawnInfo("Bone_04", "RestBench", 1, (MapZone)19)); public static BenchData BellshrineMarrow { get; } = new BenchData("Bellshrine", "The Marrow", new RespawnInfo("Bellshrine", "RestBench", 1, (MapZone)2)); public static BenchData ShootingGallery { get; } = new BenchData("Shooting Gallery", "The Marrow", new PDConditionalRespawnInfo("act3_wokeUp", new RespawnInfo("Bone_12", "RestBench (1)", 1, (MapZone)2), new RespawnInfo("Bone_12", "RestBench", 1, (MapZone)2))); public static BenchData FleaCaravanMarrow { get; } = new BenchData("Flea Caravan", "The Marrow", new RespawnInfo("Bone_10", "RestBench", 1, (MapZone)2)); public static BenchData TrapMarch { get; } = new BenchData("Trap", "Hunter's March", new PDConditionalRespawnInfo("antBenchTrapDefused", new RespawnInfo("Ant_17", "RestBench", 1, (MapZone)11), new RespawnInfo("Ant_17", "RestBench", 0, (MapZone)11))); public static BenchData TollDocks { get; } = new BenchData("Toll", "Deep Docks", new RespawnInfo("Dock_01", "RestBench", 1, (MapZone)15)); public static BenchData Forge { get; } = new BenchData("Forge", "Deep Docks", new RespawnInfo("Room_Forge", "RestBench", 1, (MapZone)15)); public static BenchData BellshrineDocks { get; } = new BenchData("Bellshrine", "Deep Docks", new RespawnInfo("Bellshrine_05", "RestBench", 1, (MapZone)15)); public static BenchData Sauna { get; } = new BenchData("Sauna", "Deep Docks", new RespawnInfo("Dock_10", "RestBench", 1, (MapZone)15)); public static BenchData DivingBell { get; } = new BenchData("Diving Bell", "Deep Docks", new RespawnInfo("Room_Diving_Bell", "RestBench", 1, (MapZone)15)); public static BenchData AbyssExit { get; } = new BenchData("Abyss Exit", "Deep Docks", new RespawnInfo("Dock_06_Church", "RestBench (1)", 1, (MapZone)15)); public static BenchData BellwayFields { get; } = new BenchData("Bellway", "Far Fields", new RespawnInfo("Bellway_03", "RestBench", 1, (MapZone)16)); public static BenchData Seamstress { get; } = new BenchData("Seamstress", "Far Fields", new RespawnInfo("Bone_East_Umbrella", "RestBench", 1, (MapZone)16)); public static BenchData PilgrimsRest { get; } = new BenchData("Pilgrim's Rest", "Far Fields", new RespawnInfo("Bone_East_10_Room", "RestBench", 1, (MapZone)30)); public static BenchData GatedToll { get; } = new BenchData("Gated Toll", "Far Fields", new RespawnInfo("Bone_East_15", "RestBench", 1, (MapZone)16)); public static BenchData Sprintmaster { get; } = new BenchData("Sprintmaster", "Far Fields", new RespawnInfo("Sprintmaster_Cave", "RestBench", 1, (MapZone)16)); public static BenchData Karmelita { get; } = new BenchData("Karmelita", "Far Fields", new RespawnInfo("Bone_East_27", "RestBench", 1, (MapZone)16)); public static BenchData ShakraGreymoor { get; } = new BenchData("Shakra", "Greymoor", new RespawnInfo("Greymoor_02", "RestBench", 1, (MapZone)3)); public static BenchData BellshrineGreymoor { get; } = new BenchData("Bellshrine", "Greymoor", new RespawnInfo("Bellshrine_02", "RestBench", 1, (MapZone)3)); public static BenchData HalfwayHouse { get; } = new BenchData("Halfway House", "Greymoor", new RespawnInfo("Halfway_01", "RestBench", 1, (MapZone)31)); public static BenchData FleaCaravanGreymoor { get; } = new BenchData("Flea Caravan", "Greymoor", new RespawnInfo("Greymoor_08", "RestBench", 1, (MapZone)3)); public static BenchData WispThicket { get; } = new BenchData("Wisp Thicket", "Greymoor", new RespawnInfo("Wisp_04", "RestBench", 1, (MapZone)35)); public static BenchData Verdania { get; } = new BenchData("Verdania", "Greymoor", new RespawnInfo("Clover_20", "RestBench", 1, (MapZone)21)); public static BenchData Bellhart { get; } = new BenchData("Bellhart", "Bellhart", new RespawnInfo("Belltown", "RestBench", 1, (MapZone)10)); public static BenchData Widow { get; } = new BenchData("Widow", "Bellhart", new RespawnInfo("Belltown_Shrine", "RestBench", 1, (MapZone)10)); public static BenchData Bellhome { get; } = new BenchData("Bellhome", "Bellhart", new RespawnInfo("Belltown_Room_Spare", "RestBench", 1, (MapZone)10)); public static BenchData CentralTollShellwood { get; } = new BenchData("Central Toll", "Shellwood", new RespawnInfo("Shellwood_01b", "RestBench", 1, (MapZone)4)); public static BenchData BellshrineShellwood { get; } = new BenchData("Bellshrine", "Shellwood", new RespawnInfo("Bellshrine_03", "RestBench", 1, (MapZone)4)); public static BenchData OvergrownWest { get; } = new BenchData("Overgrown West", "Shellwood", new RespawnInfo("Shellwood_08c", "RestBench", 1, (MapZone)4)); public static BenchData ChapelExit { get; } = new BenchData("Chapel Exit", "Shellwood", new RespawnInfo("Mosstown_03", "RestBench", 1, (MapZone)4)); public static BenchData TollSteps { get; } = new BenchData("Toll", "Blasted Steps", new RespawnInfo("Coral_02", "RestBench", 1, (MapZone)32)); public static BenchData BellwaySteps { get; } = new BenchData("Bellway", "Blasted Steps", new RespawnInfo("Bellway_08", "RestBench", 1, (MapZone)32)); public static BenchData FleaCaravanSteps { get; } = new BenchData("Flea Caravan", "Blasted Steps", new RespawnInfo("Coral_Judge_Arena", "RestBench", 1, (MapZone)32)); public static BenchData Pinstress { get; } = new BenchData("Pinstress", "Blasted Steps", new RespawnInfo("Room_Pinstress", "RestBench", 1, (MapZone)32)); public static BenchData PlasmiumLab { get; } = new BenchData("Plasmium Lab", "Wormways", new RespawnInfo("Crawl_08", "RestBench", 1, (MapZone)34)); public static BenchData BrokenToll { get; } = new BenchData("Broken Toll", "Sinner's Road", new RespawnInfo("Dust_10", "RestBench", 1, (MapZone)9)); public static BenchData Styx { get; } = new BenchData("Styx", "Sinner's Road", new PDTestRespawnInfo(new Test { FieldName = "permadeathMode", IntValue = 0, NumType = (NumTestType)0, Type = (TestType)3 }, new RespawnInfo("Dust_11", "RestBench", 1, (MapZone)9), new RespawnInfo("Dust_11", "RestBench (1)", 1, (MapZone)9))); public static BenchData BrokenElevator { get; } = new BenchData("Broken Elevator", "Underworks & Whiteward", new RespawnInfo("Under_01b", "RestBench", 1, (MapZone)22)); public static BenchData ConfessionToll { get; } = new BenchData("Confession Toll", "Underworks & Whiteward", new RespawnInfo("Under_08", "RestBench", 1, (MapZone)22)); public static BenchData TwelfthArchitect { get; } = new BenchData("Twelfth Architect", "Underworks & Whiteward", new RespawnInfo("Under_17", "RestBench", 1, (MapZone)22)); public static BenchData Whiteward { get; } = new BenchData("Whiteward", "Underworks & Whiteward", new RespawnInfo("Ward_01", "RestBench", 1, (MapZone)26)); public static BenchData OutsideUnderworks { get; } = new BenchData("Outside Underworks", "Choral Chambers", new RespawnInfo("Under_07b", "RestBench", 1, (MapZone)6)); public static BenchData BelowDining { get; } = new BenchData("Below Dining", "Choral Chambers", new RespawnInfo("Song_18", "RestBench", 1, (MapZone)6)); public static BenchData SpaCitadel { get; } = new BenchData("Spa", "Choral Chambers", new RespawnInfo("Song_10", "RestBench", 1, (MapZone)6)); public static BenchData HighHallsEntrance { get; } = new BenchData("High Halls Entrance", "Choral Chambers", new RespawnInfo("Hang_01", "RestBench", 1, (MapZone)6)); public static BenchData FirstShrine { get; } = new BenchData("First Shrine", "Choral Chambers", new RespawnInfo("Bellshrine_Enclave", "RestBench", 1, (MapZone)6)); public static BenchData Songclave { get; } = new BenchData("Songclave", "Choral Chambers", new RespawnInfo("Song_Enclave", "RestBench", 1, (MapZone)6)); public static BenchData GrandBellway { get; } = new BenchData("Grand Bellway", "Choral Chambers", new RespawnInfo("Bellway_City", "RestBench", 1, (MapZone)6)); public static BenchData CogworkCore { get; } = new BenchData("Cogwork Core", "Outlying Citadel", new RespawnInfo("Cog_Bench", "RestBench", 1, (MapZone)23)); public static BenchData HighHallsVentrica { get; } = new BenchData("High Halls Ventrica", "Outlying Citadel", new RespawnInfo("Hang_06b", "RestBench", 1, (MapZone)27)); public static BenchData Memorium { get; } = new BenchData("Memorium", "Outlying Citadel", new RespawnInfo("Arborium_04", "RestBench", 1, (MapZone)28)); public static BenchData Library { get; } = new BenchData("Library", "Outlying Citadel", new RespawnInfo("Library_08", "RestBench", 1, (MapZone)6)); public static BenchData SacredVault { get; } = new BenchData("Sacred Vault", "Outlying Citadel", new RespawnInfo("Library_10", "RestBench", 1, (MapZone)6)); public static BenchData BellwayBilewater { get; } = new BenchData("Bellway", "Bilewater", new RespawnInfo("Bellway_Shadow", "RestBench", 1, (MapZone)36)); public static BenchData CorpseSackChamber { get; } = new BenchData("Corpse Sack Chamber", "Bilewater", new RespawnInfo("Shadow_08", "RestBench", 1, (MapZone)36)); public static BenchData Bilehaven { get; } = new BenchData("Bilehaven", "Bilewater", new RespawnInfo("Shadow_18", "RestBench", 1, (MapZone)36)); public static BenchData ExhaustOrgan { get; } = new BenchData("Exhaust Organ", "Bilewater", new RespawnInfo("Organ_01", "RestBench", 1, (MapZone)6)); public static BenchData BellwayDucts { get; } = new BenchData("Bellway", "Putrified Ducts", new RespawnInfo("Bellway_Aqueduct", "RestBench", 1, (MapZone)38)); public static BenchData Huntress { get; } = new BenchData("Huntress", "Putrified Ducts", new RespawnInfo("Room_Huntress", "RestBench", 1, (MapZone)38)); public static BenchData Fleatopia { get; } = new BenchData("Fleatopia", "Putrified Ducts", new PDTestRespawnInfo(new Test { FieldName = "CaravanTroupeLocation", IntValue = 3, NumType = (NumTestType)1, Type = (TestType)3 }, new RespawnInfo("Aqueduct_05", "RestBench", 1, (MapZone)38), new PDConditionalRespawnInfo("FleaGamesCanStart", new RespawnInfo("Aqueduct_05", "RestBench Festival", 1, (MapZone)38), new RespawnInfo("Aqueduct_05", "RestBench", 1, (MapZone)38)))); public static BenchData BellwaySlab { get; } = new BenchData("Bellway", "The Slab", new RespawnInfo("Slab_06", "RestBench", 1, (MapZone)7)); public static BenchData MappersTunnel { get; } = new BenchData("Mapper's Tunnel", "The Slab", new RespawnInfo("Slab_20", "RestBench", 1, (MapZone)7)); public static BenchData WindowSlab { get; } = new BenchData("Window", "The Slab", new RespawnInfo("Slab_16", "RestBench", 1, (MapZone)7)); public static BenchData HereticKeyArena { get; } = new BenchData("Heretic Key Arena", "The Slab", new RespawnInfo("Slab_16", "RestBench (1)", 1, (MapZone)7)); public static BenchData ShakraMountFay { get; } = new BenchData("Shakra", "Mount Fay", new RespawnInfo("Peak_02", "RestBench", 1, (MapZone)24)); public static BenchData TollMountFay { get; } = new BenchData("Toll", "Mount Fay", new RespawnInfo("Bellway_Peak", "RestBench", 1, (MapZone)24)); public static BenchData FinalClimbMountFay { get; } = new BenchData("Final Climb", "Mount Fay", new RespawnInfo("Peak_07", "RestBench", 1, (MapZone)24)); public static BenchData WorkbenchMountFay { get; } = new BenchData("Workbench", "Mount Fay", new RespawnInfo("Peak_12", "RestBench (1)", 1, (MapZone)24)); public static BenchData SandsOfKarak { get; } = new BenchData("Sands of Karak", "Sands of Karak", new RespawnInfo("Bellshrine_Coral", "RestBench", 1, (MapZone)32)); public static BenchData CoralTower { get; } = new BenchData("Coral Tower", "Sands of Karak", new RespawnInfo("Coral_Tower_01", "RestBench", 1, (MapZone)32)); public static BenchData Terminus { get; } = new BenchData("Terminus", "The Cradle", new RespawnInfo("Tube_Hub", "RestBench", 1, (MapZone)6)); public static BenchData SurfaceAscent { get; } = new BenchData("Surface Ascent", "The Cradle", new RespawnInfo("Cradle_Destroyed_Challenge_Bench", "RestBench", 1, (MapZone)29)); public static BenchData VoidTendrils { get; } = new BenchData("Void Tendrils", "Abyss", new RespawnInfo("Abyss_12", "RestBench", 1, (MapZone)37)); public static BenchData EscapeAbyss { get; } = new BenchData("Escape", "Abyss", new RespawnInfo("Abyss_09", "RestBench", 1, (MapZone)37)); public static BenchData WeavenestAtla { get; } = new BenchData("Atla", "Weavenest", new RespawnInfo("Weave_07", "RestBench", 1, (MapZone)17)); public static BenchData WeavenestCindril { get; } = new BenchData("Cindril", "Weavenest", new RespawnInfo("Bone_East_Weavehome", "RestBench", 1, (MapZone)16)); public static ReadOnlyCollection BaseBenches { get; } = new ReadOnlyCollection(new List(81) { RuinedChapel, BoneBottom, MossDruid, SnailShamans, TollMarrow, MosshomeGate, BellshrineMarrow, ShootingGallery, FleaCaravanMarrow, TrapMarch, TollDocks, Forge, BellshrineDocks, Sauna, DivingBell, AbyssExit, BellwayFields, Seamstress, PilgrimsRest, GatedToll, Sprintmaster, Karmelita, ShakraGreymoor, BellshrineGreymoor, HalfwayHouse, FleaCaravanGreymoor, WispThicket, Verdania, Bellhart, Widow, Bellhome, CentralTollShellwood, BellshrineShellwood, OvergrownWest, ChapelExit, TollSteps, BellwaySteps, FleaCaravanSteps, Pinstress, PlasmiumLab, BrokenToll, Styx, BrokenElevator, ConfessionToll, TwelfthArchitect, Whiteward, OutsideUnderworks, BelowDining, SpaCitadel, HighHallsEntrance, FirstShrine, Songclave, GrandBellway, CogworkCore, HighHallsVentrica, Memorium, Library, SacredVault, BellwayBilewater, CorpseSackChamber, Bilehaven, ExhaustOrgan, BellwayDucts, Huntress, Fleatopia, BellwaySlab, MappersTunnel, WindowSlab, HereticKeyArena, ShakraMountFay, TollMountFay, FinalClimbMountFay, WorkbenchMountFay, SandsOfKarak, CoralTower, Terminus, SurfaceAscent, VoidTendrils, EscapeAbyss, WeavenestAtla, WeavenestCindril }); } public static class BaseGateList { public static DoorData Abandoned_town__bot1 { get; } = new DoorData(new TransitionKey("Abandoned_town", "bot1"), new TransitionKey("Cradle_Destroyed_Challenge_01", "top1")); public static DoorData Abandoned_town__door1 { get; } = new DoorData(new TransitionKey("Abandoned_town", "door1"), new TransitionKey("Cradle_Destroyed_Challenge_Bench", "door1")); public static DoorData Abyss_01__left1 { get; } = new DoorData(new TransitionKey("Abyss_01", "left1"), new TransitionKey("Abyss_06", "right1")); public static DoorData Abyss_01__right2 { get; } = new DoorData(new TransitionKey("Abyss_01", "right2"), new TransitionKey("Abyss_02b", "left2")); public static DoorData Abyss_01__right3 { get; } = new DoorData(new TransitionKey("Abyss_01", "right3"), new TransitionKey("Abyss_04", "left1")); public static DoorData Abyss_01__right4 { get; } = new DoorData(new TransitionKey("Abyss_01", "right4"), new TransitionKey("Abyss_07", "left1")); public static DoorData Abyss_02__left1 { get; } = new DoorData(new TransitionKey("Abyss_02", "left1"), new TransitionKey("Abyss_02b", "right1")); public static DoorData Abyss_02__right1 { get; } = new DoorData(new TransitionKey("Abyss_02", "right1"), new TransitionKey("Abyss_03", "left1")); public static DoorData Abyss_02b__left2 { get; } = new DoorData(new TransitionKey("Abyss_02b", "left2"), new TransitionKey("Abyss_01", "right2")); public static DoorData Abyss_02b__right1 { get; } = new DoorData(new TransitionKey("Abyss_02b", "right1"), new TransitionKey("Abyss_02", "left1")); public static DoorData Abyss_02b__top1 { get; } = new DoorData(new TransitionKey("Abyss_02b", "top1"), new TransitionKey("Abyss_11", "bot1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("top_blocker_set", ObstacleType.OneWayBreakableExit, ObstacleSeverity.InterruptsEntry, new PersistentBoolSaveInfo("Abyss_11", "Abyss_Collapse_Wall_bot")) }) }; public static DoorData Abyss_03__door1 { get; } = new DoorData(new TransitionKey("Abyss_03", "door1"), new TransitionKey("Room_Diving_Bell_Abyss", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new TestObjObstacleInfo("Diving Bell States", Activate: false, ObstacleType.ClosedAfterProgression, ObstacleSeverity.ModifiesSaveData | ObstacleSeverity.InterruptsEntry) }) }; public static DoorData Abyss_03__door2 { get; } = new DoorData(new TransitionKey("Abyss_03", "door2"), new TransitionKey("Room_Diving_Bell_Abyss_Fixed", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new TestObjObstacleInfo("Diving Bell States", Activate: true, ObstacleType.ClosedAfterProgression, ObstacleSeverity.InterruptsEntry), new TestObjObstacleInfo("Diving Bell States/Gone", Activate: true, ObstacleType.OpenAfterProgression, ObstacleSeverity.InterruptsEntry) }) }; public static DoorData Abyss_03__left1 { get; } = new DoorData(new TransitionKey("Abyss_03", "left1"), new TransitionKey("Abyss_02", "right1")); public static DoorData Abyss_03__left2 { get; } = new DoorData(new TransitionKey("Abyss_03", "left2"), new TransitionKey("Abyss_13", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Shaman_Collapse_Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Abyss_04__left1 { get; } = new DoorData(new TransitionKey("Abyss_04", "left1"), new TransitionKey("Abyss_01", "right3")); public static DoorData Abyss_05__left2 { get; } = new DoorData(new TransitionKey("Abyss_05", "left2"), new TransitionKey("Abyss_12", "right2")); public static DoorData Abyss_05__right1 { get; } = new DoorData(new TransitionKey("Abyss_05", "right1"), new TransitionKey("Abyss_08", "left1")); public static DoorData Abyss_06__right1 { get; } = new DoorData(new TransitionKey("Abyss_06", "right1"), new TransitionKey("Abyss_01", "left1")); public static DoorData Abyss_07__left1 { get; } = new DoorData(new TransitionKey("Abyss_07", "left1"), new TransitionKey("Abyss_01", "right4")); public static DoorData Abyss_07__right1 { get; } = new DoorData(new TransitionKey("Abyss_07", "right1"), new TransitionKey("Abyss_12", "left1")); public static DoorData Abyss_08__left1 { get; } = new DoorData(new TransitionKey("Abyss_08", "left1"), new TransitionKey("Abyss_05", "right1")); public static DoorData Abyss_09__bot1 { get; } = new DoorData(new TransitionKey("Abyss_09", "bot1"), new TransitionKey("Abyss_13", "top1")); public static DoorData Abyss_09__top1 { get; } = new DoorData(new TransitionKey("Abyss_09", "top1"), new TransitionKey("Dock_06_Church", "bot1")); public static DoorData Abyss_11__bot1 { get; } = new DoorData(new TransitionKey("Abyss_11", "bot1"), new TransitionKey("Abyss_02b", "top1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Abyss_Collapse_Wall (1)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo(null, "Abyss_Collapse_Wall_bot")) }) }; public static DoorData Abyss_11__right1 { get; } = new DoorData(new TransitionKey("Abyss_11", "right1"), new TransitionKey("Abyss_13", "left1")); public static DoorData Abyss_12__left1 { get; } = new DoorData(new TransitionKey("Abyss_12", "left1"), new TransitionKey("Abyss_07", "right1")); public static DoorData Abyss_12__right2 { get; } = new DoorData(new TransitionKey("Abyss_12", "right2"), new TransitionKey("Abyss_05", "left2")); public static DoorData Abyss_13__left1 { get; } = new DoorData(new TransitionKey("Abyss_13", "left1"), new TransitionKey("Abyss_11", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Abyss_Collapse_Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Abyss_13__right1 { get; } = new DoorData(new TransitionKey("Abyss_13", "right1"), new TransitionKey("Abyss_03", "left2")); public static DoorData Abyss_13__top1 { get; } = new DoorData(new TransitionKey("Abyss_13", "top1"), new TransitionKey("Abyss_09", "bot1")); public static DoorData Abyss_Cocoon__door_entry { get; } = new DoorData(new TransitionKey("Abyss_Cocoon", "door_entry")); public static DoorData Ant_02__left1 { get; } = new DoorData(new TransitionKey("Ant_02", "left1"), new TransitionKey("Bone_08", "right3")); public static DoorData Ant_02__right1 { get; } = new DoorData(new TransitionKey("Ant_02", "right1"), new TransitionKey("Ant_03", "left2")); public static DoorData Ant_03__left2 { get; } = new DoorData(new TransitionKey("Ant_03", "left2"), new TransitionKey("Ant_02", "right1")); public static DoorData Ant_03__right3 { get; } = new DoorData(new TransitionKey("Ant_03", "right3"), new TransitionKey("Ant_04_left", "left1")); public static DoorData Ant_04__left1 { get; } = new DoorData(new TransitionKey("Ant_04", "left1"), new TransitionKey("Ant_04_mid", "right1")); public static DoorData Ant_04__right1 { get; } = new DoorData(new TransitionKey("Ant_04", "right1"), new TransitionKey("Ant_14", "left3")); public static DoorData Ant_04_left__left1 { get; } = new DoorData(new TransitionKey("Ant_04_left", "left1"), new TransitionKey("Ant_03", "right3")); public static DoorData Ant_04_left__right1 { get; } = new DoorData(new TransitionKey("Ant_04_left", "right1"), new TransitionKey("Ant_04_mid", "left1")); public static DoorData Ant_04_mid__left1 { get; } = new DoorData(new TransitionKey("Ant_04_mid", "left1"), new TransitionKey("Ant_04_left", "right1")); public static DoorData Ant_04_mid__right1 { get; } = new DoorData(new TransitionKey("Ant_04_mid", "right1"), new TransitionKey("Ant_04", "left1")); public static DoorData Ant_05b__bot1 { get; } = new DoorData(new TransitionKey("Ant_05b", "bot1"), new TransitionKey("Bone_East_04b", "top1")); public static DoorData Ant_05b__bot2 { get; } = new DoorData(new TransitionKey("Ant_05b", "bot2"), new TransitionKey("Bone_East_04", "top2")); public static DoorData Ant_05b__right1 { get; } = new DoorData(new TransitionKey("Ant_05b", "right1"), new TransitionKey("Ant_14", "left4")); public static DoorData Ant_05c__left1 { get; } = new DoorData(new TransitionKey("Ant_05c", "left1"), new TransitionKey("Ant_14", "right2")); public static DoorData Ant_05c__right1 { get; } = new DoorData(new TransitionKey("Ant_05c", "right1"), new TransitionKey("Ant_09", "left1")); public static DoorData Ant_08__top1 { get; } = new DoorData(new TransitionKey("Ant_08", "top1"), new TransitionKey("Halfway_01", "bot1")); public static DoorData Ant_09__left1 { get; } = new DoorData(new TransitionKey("Ant_09", "left1"), new TransitionKey("Ant_05c", "right1")); public static DoorData Ant_09__right1 { get; } = new DoorData(new TransitionKey("Ant_09", "right1"), new TransitionKey("Bone_East_11", "left1")); public static DoorData Ant_14__left1 { get; } = new DoorData(new TransitionKey("Ant_14", "left1"), new TransitionKey("Ant_Merchant", "right1")); public static DoorData Ant_14__left2 { get; } = new DoorData(new TransitionKey("Ant_14", "left2"), new TransitionKey("Ant_17", "right1")); public static DoorData Ant_14__left3 { get; } = new DoorData(new TransitionKey("Ant_14", "left3"), new TransitionKey("Ant_04", "right1")); public static DoorData Ant_14__left4 { get; } = new DoorData(new TransitionKey("Ant_14", "left4"), new TransitionKey("Ant_05b", "right1")); public static DoorData Ant_14__left5 { get; } = new DoorData(new TransitionKey("Ant_14", "left5"), new TransitionKey("Ant_21", "right1")); public static DoorData Ant_14__right2 { get; } = new DoorData(new TransitionKey("Ant_14", "right2"), new TransitionKey("Ant_05c", "left1")); public static DoorData Ant_14__right3 { get; } = new DoorData(new TransitionKey("Ant_14", "right3"), new TransitionKey("Ant_20", "left1")); public static DoorData Ant_17__right1 { get; } = new DoorData(new TransitionKey("Ant_17", "right1"), new TransitionKey("Ant_14", "left2")); public static DoorData Ant_19__door_memoryEnd { get; } = new DoorData(new TransitionKey("Ant_19", "door_memoryEnd")); public static DoorData Ant_19__left1 { get; } = new DoorData(new TransitionKey("Ant_19", "left1"), new TransitionKey("Ant_20", "door1")); public static DoorData Ant_20__door1 { get; } = new DoorData(new TransitionKey("Ant_20", "door1"), new TransitionKey("Ant_19", "left1")) { Obstacles = new ReadOnlyCollection(new List(3) { new BehaviourObstacleInfo("Chapel Door Control", Enable: false, ObstacleType.ClosedAfterProgression, ObstacleSeverity.ModifiesSaveData | ObstacleSeverity.LimitsExitAccess), new TransitionObstacleInfo("Chapel Door Control/door1", Enabled: true, ObstacleType.ClosedAfterProgression, ObstacleSeverity.LimitsExitAccess), new GameObjectActiveObstacleInfo("Chapel Door Control/Door Open", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Ant_20__left1 { get; } = new DoorData(new TransitionKey("Ant_20", "left1"), new TransitionKey("Ant_14", "right3")); public static DoorData Ant_21__right1 { get; } = new DoorData(new TransitionKey("Ant_21", "right1"), new TransitionKey("Ant_14", "left5")); public static DoorData Ant_Merchant__right1 { get; } = new DoorData(new TransitionKey("Ant_Merchant", "right1"), new TransitionKey("Ant_14", "left1")); public static DoorData Ant_Queen__door_wakeOnGround { get; } = new DoorData(new TransitionKey("Ant_Queen", "door_wakeOnGround")); public static DoorData Ant_Queen__left1 { get; } = new DoorData(new TransitionKey("Ant_Queen", "left1"), new TransitionKey("Bone_East_25", "door1")); public static DoorData Aqueduct_01__left1 { get; } = new DoorData(new TransitionKey("Aqueduct_01", "left1"), new TransitionKey("Arborium_11", "right1")) { Obstacles = new ReadOnlyCollection(new List(3) { new ObstacleInfo("Breakable Wall Aqueduct Start", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new ObstacleInfo("Camera Locks", ObstacleType.Other, ObstacleSeverity.LimitsVisibility), new UnmaskerInfo("Masks") }) }; public static DoorData Aqueduct_01__right1 { get; } = new DoorData(new TransitionKey("Aqueduct_01", "right1"), new TransitionKey("Aqueduct_02", "left1")); public static DoorData Aqueduct_02__left1 { get; } = new DoorData(new TransitionKey("Aqueduct_02", "left1"), new TransitionKey("Aqueduct_01", "right1")); public static DoorData Aqueduct_02__left2 { get; } = new DoorData(new TransitionKey("Aqueduct_02", "left2"), new TransitionKey("Aqueduct_04", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Aqueduct_02__left3 { get; } = new DoorData(new TransitionKey("Aqueduct_02", "left3"), new TransitionKey("Aqueduct_07", "right1")); public static DoorData Aqueduct_02__right1 { get; } = new DoorData(new TransitionKey("Aqueduct_02", "right1"), new TransitionKey("Aqueduct_03", "left1")); public static DoorData Aqueduct_02__right2 { get; } = new DoorData(new TransitionKey("Aqueduct_02", "right2"), new TransitionKey("Bellway_Aqueduct", "left1")); public static DoorData Aqueduct_02__right3 { get; } = new DoorData(new TransitionKey("Aqueduct_02", "right3"), new TransitionKey("Aqueduct_08", "left1")) { Obstacles = new ReadOnlyCollection(new List(3) { new BehaviourObstacleInfo("right_break_gate", Enable: false, ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo("Aqueduct_08", "Breakable Wall_Silhouette")), new GameObjectActiveObstacleInfo("right_break_gate/Closed", Active: false, ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility), new GameObjectActiveObstacleInfo("right_break_gate/Open", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Aqueduct_03__left1 { get; } = new DoorData(new TransitionKey("Aqueduct_03", "left1"), new TransitionKey("Aqueduct_02", "right1")); public static DoorData Aqueduct_03__right1 { get; } = new DoorData(new TransitionKey("Aqueduct_03", "right1"), new TransitionKey("Aqueduct_05", "left1")); public static DoorData Aqueduct_03__top1 { get; } = new DoorData(new TransitionKey("Aqueduct_03", "top1"), new TransitionKey("Aqueduct_06", "bot1")); public static DoorData Aqueduct_04__bot1 { get; } = new DoorData(new TransitionKey("Aqueduct_04", "bot1"), new TransitionKey("Shadow_01", "top1")); public static DoorData Aqueduct_04__door1 { get; } = new DoorData(new TransitionKey("Aqueduct_04", "door1"), new TransitionKey("Room_Huntress", "left1")); public static DoorData Aqueduct_04__right1 { get; } = new DoorData(new TransitionKey("Aqueduct_04", "right1"), new TransitionKey("Aqueduct_02", "left2")); public static DoorData Aqueduct_05__door_caravanTravelEnd { get; } = new DoorData(new TransitionKey("Aqueduct_05", "door_caravanTravelEnd")); public static DoorData Aqueduct_05__door2 { get; } = new DoorData(new TransitionKey("Aqueduct_05", "door2"), new TransitionKey("Room_Caravan_Spa", "left1"), null); public static DoorData Aqueduct_05__left1 { get; } = new DoorData(new TransitionKey("Aqueduct_05", "left1"), new TransitionKey("Aqueduct_03", "right1")); public static DoorData Aqueduct_06__bot1 { get; } = new DoorData(new TransitionKey("Aqueduct_06", "bot1"), new TransitionKey("Aqueduct_03", "top1")); public static DoorData Aqueduct_06__left1 { get; } = new DoorData(new TransitionKey("Aqueduct_06", "left1"), new TransitionKey("Bellway_Aqueduct", "right1")); public static DoorData Aqueduct_06__left2 { get; } = new DoorData(new TransitionKey("Aqueduct_06", "left2"), new TransitionKey("Aqueduct_08", "right1")); public static DoorData Aqueduct_07__right1 { get; } = new DoorData(new TransitionKey("Aqueduct_07", "right1"), new TransitionKey("Aqueduct_02", "left3")); public static DoorData Aqueduct_08__left1 { get; } = new DoorData(new TransitionKey("Aqueduct_08", "left1"), new TransitionKey("Aqueduct_02", "right3")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Breakable Wall_Silhouette", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility) }) }; public static DoorData Aqueduct_08__right1 { get; } = new DoorData(new TransitionKey("Aqueduct_08", "right1"), new TransitionKey("Aqueduct_06", "left2")); public static DoorData Arborium_01__bot1 { get; } = new DoorData(new TransitionKey("Arborium_01", "bot1"), new TransitionKey("Song_25", "top1")); public static DoorData Arborium_01__left1 { get; } = new DoorData(new TransitionKey("Arborium_01", "left1"), new TransitionKey("Arborium_09", "right1")); public static DoorData Arborium_01__left2 { get; } = new DoorData(new TransitionKey("Arborium_01", "left2"), new TransitionKey("Arborium_09", "right2")) { Obstacles = new ReadOnlyCollection(new List(3) { new BehaviourObstacleInfo("Arborium 09 Break Wall", Enable: false, ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess), new GameObjectActiveObstacleInfo("Arborium 09 Break Wall/Unbroken", Active: false, ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess), new GameObjectActiveObstacleInfo("Arborium 09 Break Wall/Broken", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Arborium_01__left3 { get; } = new DoorData(new TransitionKey("Arborium_01", "left3"), new TransitionKey("Arborium_Tube", "right1")); public static DoorData Arborium_01__right1 { get; } = new DoorData(new TransitionKey("Arborium_01", "right1"), new TransitionKey("Arborium_08", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("one_way_inner_craw", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("arborium_08_oneWay")) }) }; public static DoorData Arborium_01__right2 { get; } = new DoorData(new TransitionKey("Arborium_01", "right2"), new TransitionKey("Arborium_07", "left1")); public static DoorData Arborium_01__right3 { get; } = new DoorData(new TransitionKey("Arborium_01", "right3"), new TransitionKey("Arborium_06", "left1")); public static DoorData Arborium_01__right4 { get; } = new DoorData(new TransitionKey("Arborium_01", "right4"), new TransitionKey("Arborium_02", "left1")); public static DoorData Arborium_01__right5 { get; } = new DoorData(new TransitionKey("Arborium_01", "right5"), new TransitionKey("Arborium_04", "left1")); public static DoorData Arborium_02__left1 { get; } = new DoorData(new TransitionKey("Arborium_02", "left1"), new TransitionKey("Arborium_01", "right4")); public static DoorData Arborium_02__right1 { get; } = new DoorData(new TransitionKey("Arborium_02", "right1"), new TransitionKey("Arborium_03", "left3")); public static DoorData Arborium_03__left1 { get; } = new DoorData(new TransitionKey("Arborium_03", "left1"), new TransitionKey("Arborium_06", "right1")); public static DoorData Arborium_03__left2 { get; } = new DoorData(new TransitionKey("Arborium_03", "left2"), new TransitionKey("Arborium_05", "right1")); public static DoorData Arborium_03__left3 { get; } = new DoorData(new TransitionKey("Arborium_03", "left3"), new TransitionKey("Arborium_02", "right1")); public static DoorData Arborium_03__left4 { get; } = new DoorData(new TransitionKey("Arborium_03", "left4"), new TransitionKey("Arborium_04", "right1")); public static DoorData Arborium_03__right1 { get; } = new DoorData(new TransitionKey("Arborium_03", "right1"), new TransitionKey("Arborium_10", "left1")); public static DoorData Arborium_03__right2 { get; } = new DoorData(new TransitionKey("Arborium_03", "right2"), new TransitionKey("Arborium_11", "left1")); public static DoorData Arborium_04__left1 { get; } = new DoorData(new TransitionKey("Arborium_04", "left1"), new TransitionKey("Arborium_01", "right5")); public static DoorData Arborium_04__right1 { get; } = new DoorData(new TransitionKey("Arborium_04", "right1"), new TransitionKey("Arborium_03", "left4")); public static DoorData Arborium_05__right1 { get; } = new DoorData(new TransitionKey("Arborium_05", "right1"), new TransitionKey("Arborium_03", "left2")); public static DoorData Arborium_05__top1 { get; } = new DoorData(new TransitionKey("Arborium_05", "top1"), new TransitionKey("Arborium_06", "bot1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Coral Crust Wall Sphere", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.InterruptsEntry, new PersistentBoolSaveInfo()) }) }; public static DoorData Arborium_06__bot1 { get; } = new DoorData(new TransitionKey("Arborium_06", "bot1"), new TransitionKey("Arborium_05", "top1")); public static DoorData Arborium_06__left1 { get; } = new DoorData(new TransitionKey("Arborium_06", "left1"), new TransitionKey("Arborium_01", "right3")); public static DoorData Arborium_06__right1 { get; } = new DoorData(new TransitionKey("Arborium_06", "right1"), new TransitionKey("Arborium_03", "left1")) { Obstacles = new ReadOnlyCollection(new List(5) { new ObstacleInfo("Coral Crust Wall Tall (3)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new ObstacleInfo("Coral Crust Wall Small (1)", ObstacleType.Other, ObstacleSeverity.AbnormalVisual, new PersistentBoolSaveInfo()), new ObstacleInfo("Coral Goomba Ambush/Crust Wall", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new ObstacleInfo("Coral Goomba Ambush/Coral Goomba Large (1)", ObstacleType.Other, ObstacleSeverity.AbnormalVisual), new ObstacleInfo("Coral Crust Wall Tall (1)", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Arborium_07__left1 { get; } = new DoorData(new TransitionKey("Arborium_07", "left1"), new TransitionKey("Arborium_01", "right2")); public static DoorData Arborium_07__top1 { get; } = new DoorData(new TransitionKey("Arborium_07", "top1"), new TransitionKey("Arborium_08", "bot1")); public static DoorData Arborium_08__bot1 { get; } = new DoorData(new TransitionKey("Arborium_08", "bot1"), new TransitionKey("Arborium_07", "top1")); public static DoorData Arborium_08__left1 { get; } = new DoorData(new TransitionKey("Arborium_08", "left1"), new TransitionKey("Arborium_01", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("One Way Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Arborium_09__right1 { get; } = new DoorData(new TransitionKey("Arborium_09", "right1"), new TransitionKey("Arborium_01", "left1")); public static DoorData Arborium_09__right2 { get; } = new DoorData(new TransitionKey("Arborium_09", "right2"), new TransitionKey("Arborium_01", "left2")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Moss Vine Cluster", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new ObstacleInfo("Moss Vine Cluster (1)", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Arborium_10__left1 { get; } = new DoorData(new TransitionKey("Arborium_10", "left1"), new TransitionKey("Arborium_03", "right1")); public static DoorData Arborium_11__left1 { get; } = new DoorData(new TransitionKey("Arborium_11", "left1"), new TransitionKey("Arborium_03", "right2")); public static DoorData Arborium_11__right1 { get; } = new DoorData(new TransitionKey("Arborium_11", "right1"), new TransitionKey("Aqueduct_01", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Breakable Wall (1)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks") }) }; public static DoorData Arborium_Tube__door_tubeEnter { get; } = new DoorData(new TransitionKey("Arborium_Tube", "door_tubeEnter")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("City Travel Tube/tube_toll_machine", ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Arborium_Tube__right1 { get; } = new DoorData(new TransitionKey("Arborium_Tube", "right1"), new TransitionKey("Arborium_01", "left3")); public static DoorData Aspid_01__bot1 { get; } = new DoorData(new TransitionKey("Aspid_01", "bot1"), null, new TransitionKey("Bonetown", "top3")); public static DoorData Aspid_01__bot2 { get; } = new DoorData(new TransitionKey("Aspid_01", "bot2"), new TransitionKey("Bonetown", "top2")); public static DoorData Aspid_01__bot3 { get; } = new DoorData(new TransitionKey("Aspid_01", "bot3"), null, new TransitionKey("Bonetown", "top3")); public static DoorData Aspid_01__bot4 { get; } = new DoorData(new TransitionKey("Aspid_01", "bot4"), null, new TransitionKey("Bonetown", "top4")); public static DoorData Aspid_01__bot5 { get; } = new DoorData(new TransitionKey("Aspid_01", "bot5"), null, new TransitionKey("Bonetown", "top5")); public static DoorData Aspid_01__bot6 { get; } = new DoorData(new TransitionKey("Aspid_01", "bot6"), null, new TransitionKey("Bonetown", "top6")); public static DoorData Aspid_01__bot7 { get; } = new DoorData(new TransitionKey("Aspid_01", "bot7"), null, new TransitionKey("Bonetown", "top6")); public static DoorData Aspid_01__bot8 { get; } = new DoorData(new TransitionKey("Aspid_01", "bot8"), null, new TransitionKey("Bonetown", "top6")); public static DoorData Aspid_01__left1 { get; } = new DoorData(new TransitionKey("Aspid_01", "left1"), new TransitionKey("Crawl_01", "right1")); public static DoorData Aspid_01__left2 { get; } = new DoorData(new TransitionKey("Aspid_01", "left2"), new TransitionKey("Crawl_04", "right1")); public static DoorData Aspid_01__right2 { get; } = new DoorData(new TransitionKey("Aspid_01", "right2"), new TransitionKey("Shellwood_08c", "left1")); public static DoorData Aspid_01__right3 { get; } = new DoorData(new TransitionKey("Aspid_01", "right3"), new TransitionKey("Mosstown_02", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("one way break from moss", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo("Mosstown_02", "Breakable Wall")) }) }; public static DoorData Aspid_01__right4 { get; } = new DoorData(new TransitionKey("Aspid_01", "right4"), new TransitionKey("Bone_11", "left1")); public static DoorData Aspid_01__top1 { get; } = new DoorData(new TransitionKey("Aspid_01", "top1"), new TransitionKey("Coral_19", "bot1"), null); public static DoorData Aspid_01__top2 { get; } = new DoorData(new TransitionKey("Aspid_01", "top2"), new TransitionKey("Coral_19", "bot2"), null); public static DoorData Aspid_01__top3 { get; } = new DoorData(new TransitionKey("Aspid_01", "top3"), new TransitionKey("Coral_19", "bot3"), null); public static DoorData Aspid_01__top4 { get; } = new DoorData(new TransitionKey("Aspid_01", "top4"), new TransitionKey("Coral_19", "bot4"), null); public static DoorData Aspid_01__top5 { get; } = new DoorData(new TransitionKey("Aspid_01", "top5"), new TransitionKey("Coral_19", "bot5"), null); public static DoorData Aspid_01__top6 { get; } = new DoorData(new TransitionKey("Aspid_01", "top6"), new TransitionKey("Coral_19", "bot6"), null); public static DoorData Aspid_01__top7 { get; } = new DoorData(new TransitionKey("Aspid_01", "top7"), new TransitionKey("Coral_19", "bot7"), null); public static DoorData Bellshrine__left1 { get; } = new DoorData(new TransitionKey("Bellshrine", "left1"), new TransitionKey("Bone_05", "right1")); public static DoorData Bellshrine__right1 { get; } = new DoorData(new TransitionKey("Bellshrine", "right1"), new TransitionKey("Bone_03", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Whole Scene/bellshrine_gate_curved", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess, new PlayerDataBoolSaveInfo("bellShrineBoneForest")) }) }; public static DoorData Bellshrine_02__left1 { get; } = new DoorData(new TransitionKey("Bellshrine_02", "left1"), new TransitionKey("Greymoor_01", "right2")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("bellshrine_gate_curved", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess, new PlayerDataBoolSaveInfo("bellShrineGreymoor")) }) }; public static DoorData Bellshrine_02__right1 { get; } = new DoorData(new TransitionKey("Bellshrine_02", "right1"), new TransitionKey("Greymoor_02", "left2")); public static DoorData Bellshrine_03__left1 { get; } = new DoorData(new TransitionKey("Bellshrine_03", "left1"), new TransitionKey("Shellwood_08", "right1")); public static DoorData Bellshrine_03__right1 { get; } = new DoorData(new TransitionKey("Bellshrine_03", "right1"), new TransitionKey("Shellwood_19", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("bellshrine_gate_curved (1)", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess, new PlayerDataBoolSaveInfo("bellShrineShellwood")) }) }; public static DoorData Bellshrine_05__left1 { get; } = new DoorData(new TransitionKey("Bellshrine_05", "left1"), new TransitionKey("Bone_East_12", "right1")); public static DoorData Bellshrine_05__right1 { get; } = new DoorData(new TransitionKey("Bellshrine_05", "right1"), new TransitionKey("Bone_East_02", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("bellshrine_gate_curved", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess, new PlayerDataBoolSaveInfo("bellShrineWilds")) }) }; public static DoorData Bellshrine_Coral__left1 { get; } = new DoorData(new TransitionKey("Bellshrine_Coral", "left1"), new TransitionKey("Coral_38", "right1")); public static DoorData Bellshrine_Enclave__left1 { get; } = new DoorData(new TransitionKey("Bellshrine_Enclave", "left1"), new TransitionKey("Song_Enclave", "door1")); public static DoorData Belltown__door1 { get; } = new DoorData(new TransitionKey("Belltown", "door1"), new TransitionKey("Belltown_basement", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Cutscene Loader", ObstacleType.Cutscene, ObstacleSeverity.ModifiesSaveData) }) }; public static DoorData Belltown__door3 { get; } = new DoorData(new TransitionKey("Belltown", "door3"), new TransitionKey("Belltown_Room_pinsmith", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new TestObjObstacleInfo("hanging_bell_house_Pinsmith", Activate: true, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsExitAccess | ObstacleSeverity.AbnormalVisual), new ObstacleInfo("Cutscene Loader", ObstacleType.Cutscene, ObstacleSeverity.ModifiesSaveData) }) }; public static DoorData Belltown__door4 { get; } = new DoorData(new TransitionKey("Belltown", "door4"), new TransitionKey("Belltown_Room_Relic", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new TestObjObstacleInfo("hanging_bell_house 2", Activate: true, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsExitAccess | ObstacleSeverity.AbnormalVisual), new ObstacleInfo("Cutscene Loader", ObstacleType.Cutscene, ObstacleSeverity.ModifiesSaveData) }) }; public static DoorData Belltown__door5 { get; } = new DoorData(new TransitionKey("Belltown", "door5"), new TransitionKey("Belltown_Room_Spare", "left1")) { Obstacles = new ReadOnlyCollection(new List(7) { new BehaviourObstacleInfo("Hornet House States", Enable: false, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsExitAccess | ObstacleSeverity.AbnormalVisual), new BehaviourObstacleInfo("Hornet House States", Enable: false, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsExitAccess | ObstacleSeverity.AbnormalVisual, null, 1), new BehaviourObstacleInfo("Hornet House States", Enable: false, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsExitAccess | ObstacleSeverity.AbnormalVisual, null, 2), new GameObjectActiveObstacleInfo("Hornet House States/Full", Active: true, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsExitAccess | ObstacleSeverity.AbnormalVisual), new ObstacleInfo("Hornet House States/Door Lock", ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsExitAccess), new TransitionObstacleInfo("Hornet House States/door5", Enabled: true, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsExitAccess), new ObstacleInfo("Cutscene Loader", ObstacleType.Cutscene, ObstacleSeverity.ModifiesSaveData) }) }; public static DoorData Belltown__left3 { get; } = new DoorData(new TransitionKey("Belltown", "left3"), new TransitionKey("Belltown_07", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Cutscene Loader", ObstacleType.Cutscene, ObstacleSeverity.ModifiesSaveData) }) }; public static DoorData Belltown__right2 { get; } = new DoorData(new TransitionKey("Belltown", "right2"), new TransitionKey("Belltown_06", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Cutscene Loader", ObstacleType.Cutscene, ObstacleSeverity.ModifiesSaveData) }) }; public static DoorData Belltown_04__bot1 { get; } = new DoorData(new TransitionKey("Belltown_04", "bot1"), new TransitionKey("Belltown_Shrine", "top1")); public static DoorData Belltown_04__left1 { get; } = new DoorData(new TransitionKey("Belltown_04", "left1"), new TransitionKey("Shellwood_13", "right1")); public static DoorData Belltown_04__left2 { get; } = new DoorData(new TransitionKey("Belltown_04", "left2"), new TransitionKey("Shellwood_15", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Bell Wall Tall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Belltown_06__left1 { get; } = new DoorData(new TransitionKey("Belltown_06", "left1"), new TransitionKey("Belltown", "right2")); public static DoorData Belltown_06__left3 { get; } = new DoorData(new TransitionKey("Belltown_06", "left3"), new TransitionKey("Belltown_Shrine", "right1")); public static DoorData Belltown_06__right1 { get; } = new DoorData(new TransitionKey("Belltown_06", "right1"), new TransitionKey("Greymoor_08", "left2")); public static DoorData Belltown_07__left1 { get; } = new DoorData(new TransitionKey("Belltown_07", "left1"), new TransitionKey("Shellwood_01", "right2")); public static DoorData Belltown_07__right1 { get; } = new DoorData(new TransitionKey("Belltown_07", "right1"), new TransitionKey("Belltown", "left3")); public static DoorData Belltown_08__right1 { get; } = new DoorData(new TransitionKey("Belltown_08", "right1"), new TransitionKey("Wisp_02", "left1")); public static DoorData Belltown_basement__bot1 { get; } = new DoorData(new TransitionKey("Belltown_basement", "bot1"), new TransitionKey("Belltown_basement_03", "top1")); public static DoorData Belltown_basement__door_fastTravelExit { get; } = new DoorData(new TransitionKey("Belltown_basement", "door_fastTravelExit")); public static DoorData Belltown_basement__left1 { get; } = new DoorData(new TransitionKey("Belltown_basement", "left1"), new TransitionKey("Belltown", "door1")); public static DoorData Belltown_basement_03__left1 { get; } = new DoorData(new TransitionKey("Belltown_basement_03", "left1"), new TransitionKey("Bone_08", "right2")); public static DoorData Belltown_basement_03__top1 { get; } = new DoorData(new TransitionKey("Belltown_basement_03", "top1"), new TransitionKey("Belltown_basement", "bot1")); public static DoorData Belltown_Room_doctor__left1 { get; } = new DoorData(new TransitionKey("Belltown_Room_doctor", "left1"), new TransitionKey("Wisp_03", "door1")); public static DoorData Belltown_Room_pinsmith__left1 { get; } = new DoorData(new TransitionKey("Belltown_Room_pinsmith", "left1"), new TransitionKey("Belltown", "door3")); public static DoorData Belltown_Room_Relic__left1 { get; } = new DoorData(new TransitionKey("Belltown_Room_Relic", "left1"), new TransitionKey("Belltown", "door4")); public static DoorData Belltown_Room_shellwood__left1 { get; } = new DoorData(new TransitionKey("Belltown_Room_shellwood", "left1"), new TransitionKey("Shellwood_01", "right1")); public static DoorData Belltown_Room_Spare__left1 { get; } = new DoorData(new TransitionKey("Belltown_Room_Spare", "left1"), new TransitionKey("Belltown", "door5")); public static DoorData Belltown_Shrine__door_wakeOnGround { get; } = new DoorData(new TransitionKey("Belltown_Shrine", "door_wakeOnGround")); public static DoorData Belltown_Shrine__right1 { get; } = new DoorData(new TransitionKey("Belltown_Shrine", "right1"), new TransitionKey("Belltown_06", "left3")); public static DoorData Belltown_Shrine__top1 { get; } = new DoorData(new TransitionKey("Belltown_Shrine", "top1"), new TransitionKey("Belltown_04", "bot1")); public static DoorData Bellway_01__door_fastTravelExit { get; } = new DoorData(new TransitionKey("Bellway_01", "door_fastTravelExit")); public static DoorData Bellway_01__left1 { get; } = new DoorData(new TransitionKey("Bellway_01", "left1"), new TransitionKey("Bonetown", "door1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Black Thread States Thread Only Variant/Black Thread World/Breakable Wall", ObstacleType.ClosedAfterProgression, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo(null, "Act3_Bellway_01_Breakable_wall")) }) }; public static DoorData Bellway_02__door_fastTravelExit { get; } = new DoorData(new TransitionKey("Bellway_02", "door_fastTravelExit")); public static DoorData Bellway_02__left1 { get; } = new DoorData(new TransitionKey("Bellway_02", "left1"), new TransitionKey("Dock_16", "right1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks") }) }; public static DoorData Bellway_02__right1 { get; } = new DoorData(new TransitionKey("Bellway_02", "right1"), new TransitionKey("Bone_East_01", "left2")); public static DoorData Bellway_03__door_fastTravelExit { get; } = new DoorData(new TransitionKey("Bellway_03", "door_fastTravelExit")); public static DoorData Bellway_03__left1 { get; } = new DoorData(new TransitionKey("Bellway_03", "left1"), new TransitionKey("Bone_East_07", "right2")); public static DoorData Bellway_03__right1 { get; } = new DoorData(new TransitionKey("Bellway_03", "right1"), new TransitionKey("Bone_East_09b", "left1")); public static DoorData Bellway_04__bot1 { get; } = new DoorData(new TransitionKey("Bellway_04", "bot1"), new TransitionKey("Greymoor_16", "top1")); public static DoorData Bellway_04__door_fastTravelExit { get; } = new DoorData(new TransitionKey("Bellway_04", "door_fastTravelExit")); public static DoorData Bellway_04__left1 { get; } = new DoorData(new TransitionKey("Bellway_04", "left1"), new TransitionKey("Greymoor_05", "right2")); public static DoorData Bellway_08__door_fastTravelExit { get; } = new DoorData(new TransitionKey("Bellway_08", "door_fastTravelExit")); public static DoorData Bellway_08__left1 { get; } = new DoorData(new TransitionKey("Bellway_08", "left1"), new TransitionKey("Coral_35", "right1")); public static DoorData Bellway_08__right1 { get; } = new DoorData(new TransitionKey("Bellway_08", "right1"), new TransitionKey("Coral_03", "left1")); public static DoorData Bellway_Aqueduct__door_fastTravelExit { get; } = new DoorData(new TransitionKey("Bellway_Aqueduct", "door_fastTravelExit")); public static DoorData Bellway_Aqueduct__left1 { get; } = new DoorData(new TransitionKey("Bellway_Aqueduct", "left1"), new TransitionKey("Aqueduct_02", "right2")); public static DoorData Bellway_Aqueduct__right1 { get; } = new DoorData(new TransitionKey("Bellway_Aqueduct", "right1"), new TransitionKey("Aqueduct_06", "left1")); public static DoorData Bellway_Centipede_Arena__top1 { get; } = new DoorData(new TransitionKey("Bellway_Centipede_Arena", "top1")); public static DoorData Bellway_City__door_fastTravelExit { get; } = new DoorData(new TransitionKey("Bellway_City", "door_fastTravelExit")); public static DoorData Bellway_City__door_tubeEnter { get; } = new DoorData(new TransitionKey("Bellway_City", "door_tubeEnter")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("City Travel Tube/tube_toll_machine", ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Bellway_City__left1 { get; } = new DoorData(new TransitionKey("Bellway_City", "left1"), new TransitionKey("Song_20", "right6"), new TransitionKey("Song_20", "right_cutsceneEntry")); public static DoorData Bellway_City__right1 { get; } = new DoorData(new TransitionKey("Bellway_City", "right1"), new TransitionKey("Library_11", "left2")); public static DoorData Bellway_Peak__left1 { get; } = new DoorData(new TransitionKey("Bellway_Peak", "left1"), new TransitionKey("Peak_04c", "right1")); public static DoorData Bellway_Peak__left2 { get; } = new DoorData(new TransitionKey("Bellway_Peak", "left2"), new TransitionKey("Peak_04c", "right2")); public static DoorData Bellway_Peak__right1 { get; } = new DoorData(new TransitionKey("Bellway_Peak", "right1"), new TransitionKey("Peak_04", "left1")); public static DoorData Bellway_Peak__right2 { get; } = new DoorData(new TransitionKey("Bellway_Peak", "right2"), new TransitionKey("Bellway_Peak_02", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks") }) }; public static DoorData Bellway_Peak__top1 { get; } = new DoorData(new TransitionKey("Bellway_Peak", "top1"), new TransitionKey("Peak_05", "bot1")); public static DoorData Bellway_Peak_02__left1 { get; } = new DoorData(new TransitionKey("Bellway_Peak_02", "left1"), new TransitionKey("Bellway_Peak", "right2")); public static DoorData Bellway_Shadow__door_fastTravelExit { get; } = new DoorData(new TransitionKey("Bellway_Shadow", "door_fastTravelExit")); public static DoorData Bellway_Shadow__left1 { get; } = new DoorData(new TransitionKey("Bellway_Shadow", "left1"), new TransitionKey("Shadow_04", "right2")); public static DoorData Bone_01__left2 { get; } = new DoorData(new TransitionKey("Bone_01", "left2"), new TransitionKey("Bonetown", "right2")); public static DoorData Bone_01__right1 { get; } = new DoorData(new TransitionKey("Bone_01", "right1"), new TransitionKey("Bone_01c", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks") }) }; public static DoorData Bone_01__right2 { get; } = new DoorData(new TransitionKey("Bone_01", "right2"), new TransitionKey("Bone_01c", "left2")); public static DoorData Bone_01__top2 { get; } = new DoorData(new TransitionKey("Bone_01", "top2"), new TransitionKey("Bone_04", "bot2")); public static DoorData Bone_01b__left1 { get; } = new DoorData(new TransitionKey("Bone_01b", "left1"), new TransitionKey("Bone_11b", "right1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks") }) }; public static DoorData Bone_01b__left2 { get; } = new DoorData(new TransitionKey("Bone_01b", "left2"), new TransitionKey("Bonetown", "right1")); public static DoorData Bone_01c__left1 { get; } = new DoorData(new TransitionKey("Bone_01c", "left1"), new TransitionKey("Bone_01", "right1")); public static DoorData Bone_01c__left2 { get; } = new DoorData(new TransitionKey("Bone_01c", "left2"), new TransitionKey("Bone_01", "right2")); public static DoorData Bone_01c__right1 { get; } = new DoorData(new TransitionKey("Bone_01c", "right1"), new TransitionKey("Bone_02", "left1")); public static DoorData Bone_02__left1 { get; } = new DoorData(new TransitionKey("Bone_02", "left1"), new TransitionKey("Bone_01c", "right1")); public static DoorData Bone_02__right1 { get; } = new DoorData(new TransitionKey("Bone_02", "right1"), new TransitionKey("Bone_16", "left1")); public static DoorData Bone_02__top1 { get; } = new DoorData(new TransitionKey("Bone_02", "top1"), new TransitionKey("Bone_03", "bot1")); public static DoorData Bone_02__top2 { get; } = new DoorData(new TransitionKey("Bone_02", "top2"), new TransitionKey("Bone_10", "bot1")); public static DoorData Bone_03__bot1 { get; } = new DoorData(new TransitionKey("Bone_03", "bot1"), new TransitionKey("Bone_02", "top1")); public static DoorData Bone_03__left1 { get; } = new DoorData(new TransitionKey("Bone_03", "left1"), new TransitionKey("Bellshrine", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Bellshrine gate", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess, new PlayerDataBoolSaveInfo("bellShrineBoneForest")) }) }; public static DoorData Bone_03__left2 { get; } = new DoorData(new TransitionKey("Bone_03", "left2"), new TransitionKey("Bone_04", "right1")); public static DoorData Bone_03__left4 { get; } = new DoorData(new TransitionKey("Bone_03", "left4"), new TransitionKey("Bone_17", "right1")); public static DoorData Bone_03__right1 { get; } = new DoorData(new TransitionKey("Bone_03", "right1"), new TransitionKey("Bone_14", "left1")); public static DoorData Bone_03__right3 { get; } = new DoorData(new TransitionKey("Bone_03", "right3"), new TransitionKey("Bone_10", "left1")); public static DoorData Bone_03__top1 { get; } = new DoorData(new TransitionKey("Bone_03", "top1"), new TransitionKey("Bone_06", "bot1")); public static DoorData Bone_04__bot2 { get; } = new DoorData(new TransitionKey("Bone_04", "bot2"), new TransitionKey("Bone_01", "top2"), new TransitionKey("Bone_01", "top2 extra")); public static DoorData Bone_04__left1 { get; } = new DoorData(new TransitionKey("Bone_04", "left1"), new TransitionKey("Bone_11", "right1")); public static DoorData Bone_04__left2 { get; } = new DoorData(new TransitionKey("Bone_04", "left2"), new TransitionKey("Bone_11", "right2")); public static DoorData Bone_04__right1 { get; } = new DoorData(new TransitionKey("Bone_04", "right1"), new TransitionKey("Bone_03", "left2")); public static DoorData Bone_04__top1 { get; } = new DoorData(new TransitionKey("Bone_04", "top1"), new TransitionKey("Bone_05", "bot1")); public static DoorData Bone_05__bot1 { get; } = new DoorData(new TransitionKey("Bone_05", "bot1"), new TransitionKey("Bone_04", "top1")); public static DoorData Bone_05__door_cinematicEnd { get; } = new DoorData(new TransitionKey("Bone_05", "door_cinematicEnd")); public static DoorData Bone_05__door_fastTravelExit { get; } = new DoorData(new TransitionKey("Bone_05", "door_fastTravelExit")); public static DoorData Bone_05__left1 { get; } = new DoorData(new TransitionKey("Bone_05", "left1"), new TransitionKey("Mosstown_01", "right1")); public static DoorData Bone_05__right1 { get; } = new DoorData(new TransitionKey("Bone_05", "right1"), new TransitionKey("Bellshrine", "left1")); public static DoorData Bone_05b__left1 { get; } = new DoorData(new TransitionKey("Bone_05b", "left1"), new TransitionKey("Mosstown_01", "right2")); public static DoorData Bone_05b__top1 { get; } = new DoorData(new TransitionKey("Bone_05b", "top1"), new TransitionKey("Mosstown_02", "bot2")); public static DoorData Bone_06__bot1 { get; } = new DoorData(new TransitionKey("Bone_06", "bot1"), new TransitionKey("Bone_03", "top1")); public static DoorData Bone_06__left1 { get; } = new DoorData(new TransitionKey("Bone_06", "left1"), new TransitionKey("Mosstown_03", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Bone_face_shortcut", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("explodeWallMosstown3")) }) }; public static DoorData Bone_06__right1 { get; } = new DoorData(new TransitionKey("Bone_06", "right1"), new TransitionKey("Bone_18", "left1")); public static DoorData Bone_07__left1 { get; } = new DoorData(new TransitionKey("Bone_07", "left1"), new TransitionKey("Bone_14", "right1")); public static DoorData Bone_07__right1 { get; } = new DoorData(new TransitionKey("Bone_07", "right1"), new TransitionKey("Bone_08", "left2")); public static DoorData Bone_07__right2 { get; } = new DoorData(new TransitionKey("Bone_07", "right2"), new TransitionKey("Bone_08", "left3")); public static DoorData Bone_07__top1 { get; } = new DoorData(new TransitionKey("Bone_07", "top1"), new TransitionKey("Bone_19", "bot1")); public static DoorData Bone_08__bot1 { get; } = new DoorData(new TransitionKey("Bone_08", "bot1"), new TransitionKey("Bone_09", "top1")); public static DoorData Bone_08__door1 { get; } = new DoorData(new TransitionKey("Bone_08", "door1"), new TransitionKey("Bone_12", "left1")); public static DoorData Bone_08__left2 { get; } = new DoorData(new TransitionKey("Bone_08", "left2"), new TransitionKey("Bone_07", "right1")); public static DoorData Bone_08__left3 { get; } = new DoorData(new TransitionKey("Bone_08", "left3"), new TransitionKey("Bone_07", "right2")); public static DoorData Bone_08__right2 { get; } = new DoorData(new TransitionKey("Bone_08", "right2"), new TransitionKey("Belltown_basement_03", "left1")); public static DoorData Bone_08__right3 { get; } = new DoorData(new TransitionKey("Bone_08", "right3"), new TransitionKey("Ant_02", "left1")); public static DoorData Bone_09__left1 { get; } = new DoorData(new TransitionKey("Bone_09", "left1"), new TransitionKey("Bone_16", "right1")); public static DoorData Bone_09__right1 { get; } = new DoorData(new TransitionKey("Bone_09", "right1"), new TransitionKey("Dock_08", "left1")); public static DoorData Bone_09__right2 { get; } = new DoorData(new TransitionKey("Bone_09", "right2"), new TransitionKey("Dock_08", "left2")); public static DoorData Bone_09__top1 { get; } = new DoorData(new TransitionKey("Bone_09", "top1"), new TransitionKey("Bone_08", "bot1")); public static DoorData Bone_10__bot1 { get; } = new DoorData(new TransitionKey("Bone_10", "bot1"), new TransitionKey("Bone_02", "top2")); public static DoorData Bone_10__door2 { get; } = new DoorData(new TransitionKey("Bone_10", "door2"), new TransitionKey("Room_Caravan_Spa", "left1"), null) { Obstacles = new ReadOnlyCollection(new List(3) { new BehaviourObstacleInfo("Black Thread States Thread Only Variant/Normal World/Caravan", Enable: false, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsExitAccess), new BehaviourObstacleInfo("Black Thread States Thread Only Variant/Normal World/Caravan/Caravan_Spa", Enable: false, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsExitAccess), new TransitionObstacleInfo("Black Thread States Thread Only Variant/Normal World/Caravan/Caravan_Spa/door2", Enabled: true, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsExitAccess) }) }; public static DoorData Bone_10__left1 { get; } = new DoorData(new TransitionKey("Bone_10", "left1"), new TransitionKey("Bone_03", "right3")); public static DoorData Bone_10__right1 { get; } = new DoorData(new TransitionKey("Bone_10", "right1"), new TransitionKey("Bone_15", "left1")); public static DoorData Bone_11__bot1 { get; } = new DoorData(new TransitionKey("Bone_11", "bot1"), new TransitionKey("Bone_11b", "top1")) { Obstacles = new ReadOnlyCollection(new List(3) { new ObstacleInfo("Plaza_closed", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsExitAccess, new PlayerDataBoolSaveInfo("BonePlazaOpened")), new BehaviourObstacleInfo("Plaza_open", Enable: false, ObstacleType.Other, ObstacleSeverity.AbnormalVisual), new ObstacleInfo("Pilgrim 03 (1)", ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Bone_11__left1 { get; } = new DoorData(new TransitionKey("Bone_11", "left1"), new TransitionKey("Aspid_01", "right4")); public static DoorData Bone_11__right1 { get; } = new DoorData(new TransitionKey("Bone_11", "right1"), new TransitionKey("Bone_04", "left1")); public static DoorData Bone_11__right2 { get; } = new DoorData(new TransitionKey("Bone_11", "right2"), new TransitionKey("Bone_04", "left2")); public static DoorData Bone_11__top1 { get; } = new DoorData(new TransitionKey("Bone_11", "top1"), new TransitionKey("Mosstown_01", "bot1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("trapdoor", ObstacleType.OneWayMechanismExit, ObstacleSeverity.InterruptsEntry, new PersistentBoolSaveInfo("Mosstown_01", "Trapdoor Lever")) }) }; public static DoorData Bone_11b__right1 { get; } = new DoorData(new TransitionKey("Bone_11b", "right1"), new TransitionKey("Bone_01b", "left1")); public static DoorData Bone_11b__top1 { get; } = new DoorData(new TransitionKey("Bone_11b", "top1"), new TransitionKey("Bone_11", "bot1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Bone Drop Plat Sequence", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.InterruptsEntry, new PersistentBoolSaveInfo(null, "Plate")) }) }; public static DoorData Bone_12__left1 { get; } = new DoorData(new TransitionKey("Bone_12", "left1"), new TransitionKey("Bone_08", "door1")); public static DoorData Bone_14__left1 { get; } = new DoorData(new TransitionKey("Bone_14", "left1"), new TransitionKey("Bone_03", "right1")); public static DoorData Bone_14__right1 { get; } = new DoorData(new TransitionKey("Bone_14", "right1"), new TransitionKey("Bone_07", "left1")); public static DoorData Bone_15__bot1 { get; } = new DoorData(new TransitionKey("Bone_15", "bot1"), new TransitionKey("Bone_16", "top1")); public static DoorData Bone_15__left1 { get; } = new DoorData(new TransitionKey("Bone_15", "left1"), new TransitionKey("Bone_10", "right1")); public static DoorData Bone_16__left1 { get; } = new DoorData(new TransitionKey("Bone_16", "left1"), new TransitionKey("Bone_02", "right1")); public static DoorData Bone_16__right1 { get; } = new DoorData(new TransitionKey("Bone_16", "right1"), new TransitionKey("Bone_09", "left1")); public static DoorData Bone_16__top1 { get; } = new DoorData(new TransitionKey("Bone_16", "top1"), new TransitionKey("Bone_15", "bot1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Breakable Wall (2)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks") }) }; public static DoorData Bone_17__right1 { get; } = new DoorData(new TransitionKey("Bone_17", "right1"), new TransitionKey("Bone_03", "left4")); public static DoorData Bone_18__left1 { get; } = new DoorData(new TransitionKey("Bone_18", "left1"), new TransitionKey("Bone_06", "right1")); public static DoorData Bone_19__bot1 { get; } = new DoorData(new TransitionKey("Bone_19", "bot1"), new TransitionKey("Bone_07", "top1")); public static DoorData Bone_East_01__left1 { get; } = new DoorData(new TransitionKey("Bone_East_01", "left1"), new TransitionKey("Dock_01", "right2")); public static DoorData Bone_East_01__left2 { get; } = new DoorData(new TransitionKey("Bone_East_01", "left2"), new TransitionKey("Bellway_02", "right1")); public static DoorData Bone_East_01__right1 { get; } = new DoorData(new TransitionKey("Bone_East_01", "right1"), new TransitionKey("Bone_East_03", "left1")); public static DoorData Bone_East_01__right2 { get; } = new DoorData(new TransitionKey("Bone_East_01", "right2"), new TransitionKey("Dock_05", "left1")); public static DoorData Bone_East_01__right3 { get; } = new DoorData(new TransitionKey("Bone_East_01", "right3"), new TransitionKey("Bone_East_12", "left1")); public static DoorData Bone_East_02__left1 { get; } = new DoorData(new TransitionKey("Bone_East_02", "left1"), new TransitionKey("Bellshrine_05", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Bellshrine gate", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess, new PlayerDataBoolSaveInfo("bellShrineWilds")) }) }; public static DoorData Bone_East_02__right1 { get; } = new DoorData(new TransitionKey("Bone_East_02", "right1"), new TransitionKey("Bone_East_02b", "left1")); public static DoorData Bone_East_02__top1 { get; } = new DoorData(new TransitionKey("Bone_East_02", "top1"), new TransitionKey("Bone_East_15", "bot1")); public static DoorData Bone_East_02b__left1 { get; } = new DoorData(new TransitionKey("Bone_East_02b", "left1"), new TransitionKey("Bone_East_02", "right1")); public static DoorData Bone_East_02b__right1 { get; } = new DoorData(new TransitionKey("Bone_East_02b", "right1"), new TransitionKey("Bone_East_07", "left1")); public static DoorData Bone_East_02b__right2 { get; } = new DoorData(new TransitionKey("Bone_East_02b", "right2"), new TransitionKey("Bone_East_07", "left2")); public static DoorData Bone_East_02b__top3 { get; } = new DoorData(new TransitionKey("Bone_East_02b", "top3"), new TransitionKey("Bone_East_16", "bot1")); public static DoorData Bone_East_03__left1 { get; } = new DoorData(new TransitionKey("Bone_East_03", "left1"), new TransitionKey("Bone_East_01", "right1")); public static DoorData Bone_East_03__top1 { get; } = new DoorData(new TransitionKey("Bone_East_03", "top1"), new TransitionKey("Bone_East_04", "bot1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("explode_wall_norck", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.InterruptsEntry, new PersistentBoolSaveInfo(null, "DockDashExplodeRock")) }) }; public static DoorData Bone_East_04__bot1 { get; } = new DoorData(new TransitionKey("Bone_East_04", "bot1"), new TransitionKey("Bone_East_03", "top1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Bottom Block", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsExitAccess, new PersistentBoolSaveInfo("Bone_East_03", "DockDashExplodeRock")) }) }; public static DoorData Bone_East_04__left1 { get; } = new DoorData(new TransitionKey("Bone_East_04", "left1"), new TransitionKey("Bone_East_04b", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("explode_wall", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Bone_East_04__right1 { get; } = new DoorData(new TransitionKey("Bone_East_04", "right1"), new TransitionKey("Bone_East_15", "left1")); public static DoorData Bone_East_04__right2 { get; } = new DoorData(new TransitionKey("Bone_East_04", "right2"), new TransitionKey("Bone_East_04c", "left1")); public static DoorData Bone_East_04__top2 { get; } = new DoorData(new TransitionKey("Bone_East_04", "top2"), new TransitionKey("Ant_05b", "bot2")); public static DoorData Bone_East_04b__left1 { get; } = new DoorData(new TransitionKey("Bone_East_04b", "left1"), new TransitionKey("Bone_East_05", "right1")); public static DoorData Bone_East_04b__right1 { get; } = new DoorData(new TransitionKey("Bone_East_04b", "right1"), new TransitionKey("Bone_East_04", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("explode_wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("Bone_East_04b_ExplodeWall")) }) }; public static DoorData Bone_East_04b__top1 { get; } = new DoorData(new TransitionKey("Bone_East_04b", "top1"), new TransitionKey("Ant_05b", "bot1")); public static DoorData Bone_East_04c__left1 { get; } = new DoorData(new TransitionKey("Bone_East_04c", "left1"), new TransitionKey("Bone_East_04", "right2")); public static DoorData Bone_East_05__left1 { get; } = new DoorData(new TransitionKey("Bone_East_05", "left1"), new TransitionKey("Dock_01", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Song_Gate_small", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo()) }) }; public static DoorData Bone_East_05__right1 { get; } = new DoorData(new TransitionKey("Bone_East_05", "right1"), new TransitionKey("Bone_East_04b", "left1")); public static DoorData Bone_East_07__left1 { get; } = new DoorData(new TransitionKey("Bone_East_07", "left1"), new TransitionKey("Bone_East_02b", "right1")); public static DoorData Bone_East_07__left2 { get; } = new DoorData(new TransitionKey("Bone_East_07", "left2"), new TransitionKey("Bone_East_02b", "right2")); public static DoorData Bone_East_07__left3 { get; } = new DoorData(new TransitionKey("Bone_East_07", "left3"), new TransitionKey("Dock_03b", "right1")); public static DoorData Bone_East_07__left4 { get; } = new DoorData(new TransitionKey("Bone_East_07", "left4"), new TransitionKey("Bone_East_17", "right1")); public static DoorData Bone_East_07__right1 { get; } = new DoorData(new TransitionKey("Bone_East_07", "right1"), new TransitionKey("Bone_East_10", "left2")); public static DoorData Bone_East_07__right2 { get; } = new DoorData(new TransitionKey("Bone_East_07", "right2"), new TransitionKey("Bellway_03", "left1")); public static DoorData Bone_East_07__right3 { get; } = new DoorData(new TransitionKey("Bone_East_07", "right3"), new TransitionKey("Bone_East_08", "left1")); public static DoorData Bone_East_07__right4 { get; } = new DoorData(new TransitionKey("Bone_East_07", "right4"), new TransitionKey("Bone_East_22", "left1")); public static DoorData Bone_East_07__right5 { get; } = new DoorData(new TransitionKey("Bone_East_07", "right5"), new TransitionKey("Bone_East_21", "left1")); public static DoorData Bone_East_07__top1 { get; } = new DoorData(new TransitionKey("Bone_East_07", "top1"), new TransitionKey("Bone_East_11", "bot1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("trapdoor/closed", ObstacleType.OneWayMechanismExit, ObstacleSeverity.InterruptsEntry, new PlayerDataBoolSaveInfo("openedGeyserShaft")) }) }; public static DoorData Bone_East_08__door_cinematicEnd { get; } = new DoorData(new TransitionKey("Bone_East_08", "door_cinematicEnd")); public static DoorData Bone_East_08__left1 { get; } = new DoorData(new TransitionKey("Bone_East_08", "left1"), new TransitionKey("Bone_East_07", "right3")); public static DoorData Bone_East_08__right1 { get; } = new DoorData(new TransitionKey("Bone_East_08", "right1"), new TransitionKey("Bone_East_09", "left2")); public static DoorData Bone_East_09__door1 { get; } = new DoorData(new TransitionKey("Bone_East_09", "door1"), new TransitionKey("Bone_East_Umbrella", "left1")); public static DoorData Bone_East_09__left2 { get; } = new DoorData(new TransitionKey("Bone_East_09", "left2"), new TransitionKey("Bone_East_08", "right1")); public static DoorData Bone_East_09__left3 { get; } = new DoorData(new TransitionKey("Bone_East_09", "left3"), new TransitionKey("Bone_East_20", "right1")); public static DoorData Bone_East_09__right1 { get; } = new DoorData(new TransitionKey("Bone_East_09", "right1"), new TransitionKey("Bone_East_14", "left1")); public static DoorData Bone_East_09__right2 { get; } = new DoorData(new TransitionKey("Bone_East_09", "right2"), new TransitionKey("Bone_East_14", "left2")); public static DoorData Bone_East_09__top1 { get; } = new DoorData(new TransitionKey("Bone_East_09", "top1"), new TransitionKey("Bone_East_09b", "bot1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("top_explode_wall", ObstacleType.OneWayBreakableExit, ObstacleSeverity.InterruptsEntry, new PlayerDataBoolSaveInfo("openedCauldronShortcut")) }) }; public static DoorData Bone_East_09b__bot1 { get; } = new DoorData(new TransitionKey("Bone_East_09b", "bot1"), new TransitionKey("Bone_East_09", "top1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("explode_wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.AbnormalVisual, new PlayerDataBoolSaveInfo("openedCauldronShortcut")) }) }; public static DoorData Bone_East_09b__left1 { get; } = new DoorData(new TransitionKey("Bone_East_09b", "left1"), new TransitionKey("Bellway_03", "right1")); public static DoorData Bone_East_09b__top1 { get; } = new DoorData(new TransitionKey("Bone_East_09b", "top1"), new TransitionKey("Bone_East_10_Church", "bot1")); public static DoorData Bone_East_10__door1 { get; } = new DoorData(new TransitionKey("Bone_East_10", "door1"), new TransitionKey("Bone_East_10_Room", "right1")) { Obstacles = new ReadOnlyCollection(new List(4) { new BehaviourObstacleInfo("Black Thread States Thread Only Variant/Normal World/toll door interactible", Enable: false, ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsExitAccess, new PersistentBoolSaveInfo("Pilgrims Rest", "Toll Door")), new BehaviourObstacleInfo("Black Thread States Thread Only Variant/Normal World/toll door interactible", Enable: false, ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsExitAccess), new ObstacleInfo("Black Thread States Thread Only Variant/Normal World/toll door interactible/door", ObstacleType.Other, ObstacleSeverity.AbnormalVisual), new TransitionObstacleInfo("door1", Enabled: true, ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsExitAccess) }) }; public static DoorData Bone_East_10__left1 { get; } = new DoorData(new TransitionKey("Bone_East_10", "left1"), new TransitionKey("Bone_East_11", "right2")); public static DoorData Bone_East_10__left2 { get; } = new DoorData(new TransitionKey("Bone_East_10", "left2"), new TransitionKey("Bone_East_07", "right1")); public static DoorData Bone_East_10__right1 { get; } = new DoorData(new TransitionKey("Bone_East_10", "right1"), new TransitionKey("Bone_East_18c", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("one way wall", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("explodeWallBoneEast18c")) }) }; public static DoorData Bone_East_10__right2 { get; } = new DoorData(new TransitionKey("Bone_East_10", "right2"), new TransitionKey("Bone_East_10_Church", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Rhino Scene/Gate Smashing", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsExitAccess, new PersistentBoolSaveInfo("Bone_East_10_Church", "Song_lever_side")) }) }; public static DoorData Bone_East_10_Church__bot1 { get; } = new DoorData(new TransitionKey("Bone_East_10_Church", "bot1"), new TransitionKey("Bone_East_09b", "top1")); public static DoorData Bone_East_10_Church__left1 { get; } = new DoorData(new TransitionKey("Bone_East_10_Church", "left1"), new TransitionKey("Bone_East_10", "right2")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Rhino Scene/Song_Gate_small (1)", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo()) }) }; public static DoorData Bone_East_10_Room__right1 { get; } = new DoorData(new TransitionKey("Bone_East_10_Room", "right1"), new TransitionKey("Bone_East_10", "door1")); public static DoorData Bone_East_11__bot1 { get; } = new DoorData(new TransitionKey("Bone_East_11", "bot1"), new TransitionKey("Bone_East_07", "top1")) { Obstacles = new ReadOnlyCollection(new List(6) { new ObstacleInfo("Song Trapdoor/Closed Collider", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsExitAccess, new PersistentBoolSaveInfo(null, "Song_lever_side")), new BehaviourObstacleInfo("Song Trapdoor", Enable: false, ObstacleType.Other, ObstacleSeverity.AbnormalVisual), new GameObjectActiveObstacleInfo("Song Trapdoor/open", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual), new GameObjectActiveObstacleInfo("Song Trapdoor/Open Collider", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual), new ObstacleInfo("Song Trapdoor/Door L", ObstacleType.Other, ObstacleSeverity.AbnormalVisual), new ObstacleInfo("Song Trapdoor/Door R", ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Bone_East_11__left1 { get; } = new DoorData(new TransitionKey("Bone_East_11", "left1"), new TransitionKey("Ant_09", "right1")); public static DoorData Bone_East_11__right1 { get; } = new DoorData(new TransitionKey("Bone_East_11", "right1"), new TransitionKey("Bone_East_24", "left1")) { Obstacles = new ReadOnlyCollection(new List(3) { new ObstacleInfo("Bone East 11 Cross Over Group/Gate/right_gate", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo(null, "Bone East 11 Cross Over Group")), new ObstacleInfo("Bone East 11 Cross Over Group/Gate/unmasker_right", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility), new ObstacleInfo("Bone East 11 Cross Over Group/Gate/centre_mask", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility) }) }; public static DoorData Bone_East_11__right2 { get; } = new DoorData(new TransitionKey("Bone_East_11", "right2"), new TransitionKey("Bone_East_10", "left1")); public static DoorData Bone_East_11__top1 { get; } = new DoorData(new TransitionKey("Bone_East_11", "top1"), new TransitionKey("Greymoor_01", "bot1")) { Obstacles = new ReadOnlyCollection(new List(3) { new ObstacleInfo("Greymoor Entry/crashExit", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.InterruptsEntry, new PlayerDataBoolSaveInfo("crashedIntoGreymoor")), new GameObjectActiveObstacleInfo("Greymoor Entry/top1", Active: true, ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsExitAccess), new BehaviourObstacleInfo("Greymoor Entry/top1", Enable: false, ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsExitAccess) }) }; public static DoorData Bone_East_12__bot1 { get; } = new DoorData(new TransitionKey("Bone_East_12", "bot1"), new TransitionKey("Room_Forge", "top1")); public static DoorData Bone_East_12__left1 { get; } = new DoorData(new TransitionKey("Bone_East_12", "left1"), new TransitionKey("Bone_East_01", "right3")); public static DoorData Bone_East_12__right1 { get; } = new DoorData(new TransitionKey("Bone_East_12", "right1"), new TransitionKey("Bellshrine_05", "left1")); public static DoorData Bone_East_13__left1 { get; } = new DoorData(new TransitionKey("Bone_East_13", "left1"), new TransitionKey("Dock_04", "right2")); public static DoorData Bone_East_14__left1 { get; } = new DoorData(new TransitionKey("Bone_East_14", "left1"), new TransitionKey("Bone_East_09", "right1")); public static DoorData Bone_East_14__left2 { get; } = new DoorData(new TransitionKey("Bone_East_14", "left2"), new TransitionKey("Bone_East_09", "right2")); public static DoorData Bone_East_14__right1 { get; } = new DoorData(new TransitionKey("Bone_East_14", "right1"), new TransitionKey("Bone_East_14b", "left1")); public static DoorData Bone_East_14__right2 { get; } = new DoorData(new TransitionKey("Bone_East_14", "right2"), new TransitionKey("Bone_East_14b", "left2")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("explode_wall (4)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Bone_East_14b__door1 { get; } = new DoorData(new TransitionKey("Bone_East_14b", "door1"), new TransitionKey("Bone_East_LavaChallenge", "left1")); public static DoorData Bone_East_14b__left1 { get; } = new DoorData(new TransitionKey("Bone_East_14b", "left1"), new TransitionKey("Bone_East_14", "right1")); public static DoorData Bone_East_14b__left2 { get; } = new DoorData(new TransitionKey("Bone_East_14b", "left2"), new TransitionKey("Bone_East_14", "right2")); public static DoorData Bone_East_14b__right1 { get; } = new DoorData(new TransitionKey("Bone_East_14b", "right1"), new TransitionKey("Bone_East_Weavehome", "left1")); public static DoorData Bone_East_15__bot1 { get; } = new DoorData(new TransitionKey("Bone_East_15", "bot1"), new TransitionKey("Bone_East_02", "top1")); public static DoorData Bone_East_15__left1 { get; } = new DoorData(new TransitionKey("Bone_East_15", "left1"), new TransitionKey("Bone_East_04", "right1")); public static DoorData Bone_East_15__right1 { get; } = new DoorData(new TransitionKey("Bone_East_15", "right1"), new TransitionKey("Bone_East_17", "left1")); public static DoorData Bone_East_16__bot1 { get; } = new DoorData(new TransitionKey("Bone_East_16", "bot1"), new TransitionKey("Bone_East_02b", "top3")); public static DoorData Bone_East_16__right1 { get; } = new DoorData(new TransitionKey("Bone_East_16", "right1"), new TransitionKey("Bone_East_17b", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Breakable Wall", ObstacleType.TwoWayBreakable, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Bone_East_17__bot1 { get; } = new DoorData(new TransitionKey("Bone_East_17", "bot1"), new TransitionKey("Bone_East_17b", "top1")); public static DoorData Bone_East_17__left1 { get; } = new DoorData(new TransitionKey("Bone_East_17", "left1"), new TransitionKey("Bone_East_15", "right1")); public static DoorData Bone_East_17__right1 { get; } = new DoorData(new TransitionKey("Bone_East_17", "right1"), new TransitionKey("Bone_East_07", "left4")); public static DoorData Bone_East_17b__left1 { get; } = new DoorData(new TransitionKey("Bone_East_17b", "left1"), new TransitionKey("Bone_East_16", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Breakable Wall", ObstacleType.TwoWayBreakable, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Bone_East_17b__top1 { get; } = new DoorData(new TransitionKey("Bone_East_17b", "top1"), new TransitionKey("Bone_East_17", "bot1")); public static DoorData Bone_East_18__left1 { get; } = new DoorData(new TransitionKey("Bone_East_18", "left1"), new TransitionKey("Bone_East_18c", "right1")); public static DoorData Bone_East_18__right1 { get; } = new DoorData(new TransitionKey("Bone_East_18", "right1"), new TransitionKey("Bone_East_18b", "left1")); public static DoorData Bone_East_18__top1 { get; } = new DoorData(new TransitionKey("Bone_East_18", "top1"), new TransitionKey("Bone_East_24", "bot1")); public static DoorData Bone_East_18b__door1 { get; } = new DoorData(new TransitionKey("Bone_East_18b", "door1"), new TransitionKey("Sprintmaster_Cave", "left1")); public static DoorData Bone_East_18b__left1 { get; } = new DoorData(new TransitionKey("Bone_East_18b", "left1"), new TransitionKey("Bone_East_18", "right1")); public static DoorData Bone_East_18b__top1 { get; } = new DoorData(new TransitionKey("Bone_East_18b", "top1"), new TransitionKey("Bone_East_26", "bot1")); public static DoorData Bone_East_18c__left1 { get; } = new DoorData(new TransitionKey("Bone_East_18c", "left1"), new TransitionKey("Bone_East_10", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("explode_wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("explodeWallBoneEast18c")) }) }; public static DoorData Bone_East_18c__right1 { get; } = new DoorData(new TransitionKey("Bone_East_18c", "right1"), new TransitionKey("Bone_East_18", "left1")); public static DoorData Bone_East_20__right1 { get; } = new DoorData(new TransitionKey("Bone_East_20", "right1"), new TransitionKey("Bone_East_09", "left3")); public static DoorData Bone_East_21__left1 { get; } = new DoorData(new TransitionKey("Bone_East_21", "left1"), new TransitionKey("Bone_East_07", "right5")); public static DoorData Bone_East_22__left1 { get; } = new DoorData(new TransitionKey("Bone_East_22", "left1"), new TransitionKey("Bone_East_07", "right4")); public static DoorData Bone_East_24__bot1 { get; } = new DoorData(new TransitionKey("Bone_East_24", "bot1"), new TransitionKey("Bone_East_18", "top1")); public static DoorData Bone_East_24__left1 { get; } = new DoorData(new TransitionKey("Bone_East_24", "left1"), new TransitionKey("Bone_East_11", "right1")); public static DoorData Bone_East_24__right1 { get; } = new DoorData(new TransitionKey("Bone_East_24", "right1"), new TransitionKey("Bone_East_27", "left1")); public static DoorData Bone_East_25__door1 { get; } = new DoorData(new TransitionKey("Bone_East_25", "door1"), new TransitionKey("Ant_Queen", "left1")); public static DoorData Bone_East_25__left1 { get; } = new DoorData(new TransitionKey("Bone_East_25", "left1"), new TransitionKey("Bone_East_27", "right1")); public static DoorData Bone_East_26__bot1 { get; } = new DoorData(new TransitionKey("Bone_East_26", "bot1"), new TransitionKey("Bone_East_18b", "top1")); public static DoorData Bone_East_26__top1 { get; } = new DoorData(new TransitionKey("Bone_East_26", "top1"), new TransitionKey("Bone_East_27", "bot1")); public static DoorData Bone_East_27__bot1 { get; } = new DoorData(new TransitionKey("Bone_East_27", "bot1"), new TransitionKey("Bone_East_26", "top1")); public static DoorData Bone_East_27__left1 { get; } = new DoorData(new TransitionKey("Bone_East_27", "left1"), new TransitionKey("Bone_East_24", "right1")); public static DoorData Bone_East_27__right1 { get; } = new DoorData(new TransitionKey("Bone_East_27", "right1"), new TransitionKey("Bone_East_25", "left1")); public static DoorData Bone_East_LavaChallenge__left1 { get; } = new DoorData(new TransitionKey("Bone_East_LavaChallenge", "left1"), new TransitionKey("Bone_East_14b", "door1")); public static DoorData Bone_East_Umbrella__left1 { get; } = new DoorData(new TransitionKey("Bone_East_Umbrella", "left1"), new TransitionKey("Bone_East_09", "door1")); public static DoorData Bone_East_Weavehome__left1 { get; } = new DoorData(new TransitionKey("Bone_East_Weavehome", "left1"), new TransitionKey("Bone_East_14b", "right1")); public static DoorData Bone_Steel_Servant__right1 { get; } = new DoorData(new TransitionKey("Bone_Steel_Servant", "right1"), new TransitionKey("Bonegrave", "left1")); public static DoorData Bonegrave__door1 { get; } = new DoorData(new TransitionKey("Bonegrave", "door1"), new TransitionKey("Chapel_Wanderer", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new BehaviourObstacleInfo("Chapel Door Control", Enable: false, ObstacleType.ClosedAfterProgression, ObstacleSeverity.ModifiesSaveData | ObstacleSeverity.LimitsExitAccess), new TransitionObstacleInfo("Chapel Door Control/door1", Enabled: true, ObstacleType.ClosedAfterProgression, ObstacleSeverity.LimitsExitAccess) }) }; public static DoorData Bonegrave__left1 { get; } = new DoorData(new TransitionKey("Bonegrave", "left1"), new TransitionKey("Bone_Steel_Servant", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new TestObjObstacleInfo("Steel_Servant_Tunnel", Activate: true, ObstacleType.OpenAfterProgression, ObstacleSeverity.InterruptsEntry) }) }; public static DoorData Bonegrave__right1 { get; } = new DoorData(new TransitionKey("Bonegrave", "right1"), new TransitionKey("Bonetown", "left1")); public static DoorData Bonegrave__right2 { get; } = new DoorData(new TransitionKey("Bonegrave", "right2"), new TransitionKey("Bonetown", "left2")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Moss Vine Cluster", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new ObstacleInfo("church_gate/bone_gate_02004", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("bonegraveOpen")) }) }; public static DoorData Bonegrave__top1 { get; } = new DoorData(new TransitionKey("Bonegrave", "top1"), new TransitionKey("Crawl_07", "bot1")); public static DoorData Bonetown__bot1 { get; } = new DoorData(new TransitionKey("Bonetown", "bot1"), new TransitionKey("Tut_03", "top1")) { Obstacles = new ReadOnlyCollection(new List(2) { new FsmTransitionObstacleInfo("Churchkeeper Intro Scene", "Control", "Init", "FINISHED", "Completed", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("churchKeeperIntro")), new GameObjectActiveObstacleInfo("Weakness Scene", Active: false, ObstacleType.Cutscene, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Bonetown__bot2 { get; } = new DoorData(new TransitionKey("Bonetown", "bot2"), new TransitionKey("Tut_01", "top1")) { Obstacles = new ReadOnlyCollection(new List(1) { new FsmTransitionObstacleInfo("Churchkeeper Intro Scene", "Control", "Init", "FINISHED", "Completed", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("churchKeeperIntro")) }) }; public static DoorData Bonetown__door1 { get; } = new DoorData(new TransitionKey("Bonetown", "door1"), new TransitionKey("Bellway_01", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new FsmTransitionObstacleInfo("Churchkeeper Intro Scene", "Control", "Init", "FINISHED", "Completed", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("churchKeeperIntro")), new ObstacleInfo("Black Thread States/Black Thread World/Breakable Wall", ObstacleType.ClosedAfterProgression, ObstacleSeverity.AbnormalVisual, new PersistentBoolSaveInfo("Bellway_01", "Act3_Bellway_01_Breakable_wall")) }) }; public static DoorData Bonetown__left1 { get; } = new DoorData(new TransitionKey("Bonetown", "left1"), new TransitionKey("Bonegrave", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new FsmTransitionObstacleInfo("Churchkeeper Intro Scene", "Control", "Init", "FINISHED", "Completed", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("churchKeeperIntro")) }) }; public static DoorData Bonetown__left2 { get; } = new DoorData(new TransitionKey("Bonetown", "left2"), new TransitionKey("Bonegrave", "right2")) { Obstacles = new ReadOnlyCollection(new List(2) { new FsmTransitionObstacleInfo("Churchkeeper Intro Scene", "Control", "Init", "FINISHED", "Completed", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("churchKeeperIntro")), new ObstacleInfo("bone_gate_02004", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("bonegraveOpen")) }) }; public static DoorData Bonetown__right1 { get; } = new DoorData(new TransitionKey("Bonetown", "right1"), new TransitionKey("Bone_01b", "left2")) { Obstacles = new ReadOnlyCollection(new List(1) { new FsmTransitionObstacleInfo("Churchkeeper Intro Scene", "Control", "Init", "FINISHED", "Completed", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("churchKeeperIntro")) }) }; public static DoorData Bonetown__right2 { get; } = new DoorData(new TransitionKey("Bonetown", "right2"), new TransitionKey("Bone_01", "left2")) { Obstacles = new ReadOnlyCollection(new List(1) { new FsmTransitionObstacleInfo("Churchkeeper Intro Scene", "Control", "Init", "FINISHED", "Completed", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("churchKeeperIntro")) }) }; public static DoorData Bonetown__top1 { get; } = new DoorData(new TransitionKey("Bonetown", "top1"), new TransitionKey("Aspid_01", "bot1"), null) { Obstacles = new ReadOnlyCollection(new List(1) { new FsmTransitionObstacleInfo("Churchkeeper Intro Scene", "Control", "Init", "FINISHED", "Completed", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("churchKeeperIntro")) }) }; public static DoorData Bonetown__top2 { get; } = new DoorData(new TransitionKey("Bonetown", "top2"), new TransitionKey("Aspid_01", "bot2")) { Obstacles = new ReadOnlyCollection(new List(1) { new FsmTransitionObstacleInfo("Churchkeeper Intro Scene", "Control", "Init", "FINISHED", "Completed", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("churchKeeperIntro")) }) }; public static DoorData Bonetown__top3 { get; } = new DoorData(new TransitionKey("Bonetown", "top3"), new TransitionKey("Aspid_01", "bot3"), null) { Obstacles = new ReadOnlyCollection(new List(1) { new FsmTransitionObstacleInfo("Churchkeeper Intro Scene", "Control", "Init", "FINISHED", "Completed", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("churchKeeperIntro")) }) }; public static DoorData Bonetown__top4 { get; } = new DoorData(new TransitionKey("Bonetown", "top4"), new TransitionKey("Aspid_01", "bot4"), null) { Obstacles = new ReadOnlyCollection(new List(1) { new FsmTransitionObstacleInfo("Churchkeeper Intro Scene", "Control", "Init", "FINISHED", "Completed", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("churchKeeperIntro")) }) }; public static DoorData Bonetown__top5 { get; } = new DoorData(new TransitionKey("Bonetown", "top5"), new TransitionKey("Aspid_01", "bot5"), null) { Obstacles = new ReadOnlyCollection(new List(1) { new FsmTransitionObstacleInfo("Churchkeeper Intro Scene", "Control", "Init", "FINISHED", "Completed", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("churchKeeperIntro")) }) }; public static DoorData Bonetown__top6 { get; } = new DoorData(new TransitionKey("Bonetown", "top6"), new TransitionKey("Aspid_01", "bot6"), null) { Obstacles = new ReadOnlyCollection(new List(1) { new FsmTransitionObstacleInfo("Churchkeeper Intro Scene", "Control", "Init", "FINISHED", "Completed", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("churchKeeperIntro")) }) }; public static DoorData Chapel_Wanderer__door_memoryEnd { get; } = new DoorData(new TransitionKey("Chapel_Wanderer", "door_memoryEnd")); public static DoorData Chapel_Wanderer__left1 { get; } = new DoorData(new TransitionKey("Chapel_Wanderer", "left1"), new TransitionKey("Bonegrave", "door1")); public static DoorData Clover_01__door_wakeOnGround { get; } = new DoorData(new TransitionKey("Clover_01", "door_wakeOnGround")); public static DoorData Clover_01__left1 { get; } = new DoorData(new TransitionKey("Clover_01", "left1"), new TransitionKey("Greymoor_15b", "right1")); public static DoorData Clover_01__right1 { get; } = new DoorData(new TransitionKey("Clover_01", "right1"), new TransitionKey("Clover_20", "left1")); public static DoorData Clover_01b__door_wakeInMemory { get; } = new DoorData(new TransitionKey("Clover_01b", "door_wakeInMemory")); public static DoorData Clover_01b__right1 { get; } = new DoorData(new TransitionKey("Clover_01b", "right1"), new TransitionKey("Clover_02c", "left1")); public static DoorData Clover_02c__left1 { get; } = new DoorData(new TransitionKey("Clover_02c", "left1"), new TransitionKey("Clover_01b", "right1")); public static DoorData Clover_02c__left2 { get; } = new DoorData(new TransitionKey("Clover_02c", "left2"), new TransitionKey("Clover_05c", "right3")); public static DoorData Clover_02c__right1 { get; } = new DoorData(new TransitionKey("Clover_02c", "right1"), new TransitionKey("Clover_03", "left2")); public static DoorData Clover_03__left1 { get; } = new DoorData(new TransitionKey("Clover_03", "left1"), new TransitionKey("Clover_04b", "right1")); public static DoorData Clover_03__left2 { get; } = new DoorData(new TransitionKey("Clover_03", "left2"), new TransitionKey("Clover_02c", "right1")); public static DoorData Clover_03__right1 { get; } = new DoorData(new TransitionKey("Clover_03", "right1"), new TransitionKey("Clover_18", "left1")); public static DoorData Clover_04b__door1 { get; } = new DoorData(new TransitionKey("Clover_04b", "door1")) { DynamicTargets = new ReadOnlyCollection(new List(2) { new TransitionKey("Clover_10", "left1"), new TransitionKey("Clover_10_web", "left1") }), Obstacles = new ReadOnlyCollection(new List(3) { new BehaviourObstacleInfo("palace_control", Enable: false, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsExitAccess | ObstacleSeverity.AbnormalVisual), new BehaviourObstacleInfo("palace_control/palace_top/door1", Enable: false, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsExitAccess | ObstacleSeverity.AbnormalVisual), new GameObjectActiveObstacleInfo("palace_control/palace_missing", Active: false, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Clover_04b__left1 { get; } = new DoorData(new TransitionKey("Clover_04b", "left1"), new TransitionKey("Clover_11", "right1")); public static DoorData Clover_04b__left2 { get; } = new DoorData(new TransitionKey("Clover_04b", "left2"), new TransitionKey("Clover_05c", "right1")); public static DoorData Clover_04b__right1 { get; } = new DoorData(new TransitionKey("Clover_04b", "right1"), new TransitionKey("Clover_03", "left1")); public static DoorData Clover_05c__left1 { get; } = new DoorData(new TransitionKey("Clover_05c", "left1"), new TransitionKey("Clover_16", "right1")); public static DoorData Clover_05c__left2 { get; } = new DoorData(new TransitionKey("Clover_05c", "left2"), new TransitionKey("Clover_21", "right1")); public static DoorData Clover_05c__right1 { get; } = new DoorData(new TransitionKey("Clover_05c", "right1"), new TransitionKey("Clover_04b", "left2")); public static DoorData Clover_05c__right2 { get; } = new DoorData(new TransitionKey("Clover_05c", "right2"), new TransitionKey("Clover_19", "left1")); public static DoorData Clover_05c__right3 { get; } = new DoorData(new TransitionKey("Clover_05c", "right3"), new TransitionKey("Clover_02c", "left2")); public static DoorData Clover_06__bot1 { get; } = new DoorData(new TransitionKey("Clover_06", "bot1"), new TransitionKey("Clover_16", "top1")); public static DoorData Clover_06__bot2 { get; } = new DoorData(new TransitionKey("Clover_06", "bot2"), new TransitionKey("Clover_19", "top1")); public static DoorData Clover_10__left1 { get; } = new DoorData(new TransitionKey("Clover_10", "left1"), new TransitionKey("Clover_04b", "door1"), null); public static DoorData Clover_10_web__left1 { get; } = new DoorData(new TransitionKey("Clover_10_web", "left1"), new TransitionKey("Clover_04b", "door1"), null); public static DoorData Clover_11__right1 { get; } = new DoorData(new TransitionKey("Clover_11", "right1"), new TransitionKey("Clover_04b", "left1")); public static DoorData Clover_16__right1 { get; } = new DoorData(new TransitionKey("Clover_16", "right1"), new TransitionKey("Clover_05c", "left1")); public static DoorData Clover_16__top1 { get; } = new DoorData(new TransitionKey("Clover_16", "top1"), new TransitionKey("Clover_06", "bot1")); public static DoorData Clover_18__left1 { get; } = new DoorData(new TransitionKey("Clover_18", "left1"), new TransitionKey("Clover_03", "right1")); public static DoorData Clover_19__left1 { get; } = new DoorData(new TransitionKey("Clover_19", "left1"), new TransitionKey("Clover_05c", "right2")); public static DoorData Clover_19__top1 { get; } = new DoorData(new TransitionKey("Clover_19", "top1"), new TransitionKey("Clover_06", "bot2")); public static DoorData Clover_20__left1 { get; } = new DoorData(new TransitionKey("Clover_20", "left1"), new TransitionKey("Clover_01", "right1")); public static DoorData Clover_21__right1 { get; } = new DoorData(new TransitionKey("Clover_21", "right1"), new TransitionKey("Clover_05c", "left2")); public static DoorData Cog_04__door1 { get; } = new DoorData(new TransitionKey("Cog_04", "door1"), new TransitionKey("Cog_Bench", "left1")); public static DoorData Cog_04__door2 { get; } = new DoorData(new TransitionKey("Cog_04", "door2"), new TransitionKey("Cog_Pass", "left2")); public static DoorData Cog_04__left2 { get; } = new DoorData(new TransitionKey("Cog_04", "left2"), new TransitionKey("Cog_05", "right2")); public static DoorData Cog_04__right2 { get; } = new DoorData(new TransitionKey("Cog_04", "right2"), new TransitionKey("Cog_06", "left2")); public static DoorData Cog_04__right3 { get; } = new DoorData(new TransitionKey("Cog_04", "right3"), new TransitionKey("Cog_07", "left1")); public static DoorData Cog_04__top1 { get; } = new DoorData(new TransitionKey("Cog_04", "top1"), new TransitionKey("Cog_Dancers", "bot1")); public static DoorData Cog_04__top2 { get; } = new DoorData(new TransitionKey("Cog_04", "top2"), new TransitionKey("Cog_Dancers", "bot2")); public static DoorData Cog_05__left1 { get; } = new DoorData(new TransitionKey("Cog_05", "left1"), new TransitionKey("Song_09", "right1")); public static DoorData Cog_05__right2 { get; } = new DoorData(new TransitionKey("Cog_05", "right2"), new TransitionKey("Cog_04", "left2")); public static DoorData Cog_05__top1 { get; } = new DoorData(new TransitionKey("Cog_05", "top1"), new TransitionKey("Cog_10", "bot1")); public static DoorData Cog_06__left2 { get; } = new DoorData(new TransitionKey("Cog_06", "left2"), new TransitionKey("Cog_04", "right2")); public static DoorData Cog_06__right1 { get; } = new DoorData(new TransitionKey("Cog_06", "right1"), new TransitionKey("Song_20b", "left4")) { Obstacles = new ReadOnlyCollection(new List(4) { new BehaviourObstacleInfo("cog_door_open", Enable: false, ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo(null, "cog_lever")), new GameObjectActiveObstacleInfo("cog_door_open/terrain collider", Active: false, ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess), new GameObjectActiveObstacleInfo("cog_door_open/front_ver", Active: false, ObstacleType.Other, ObstacleSeverity.AbnormalVisual), new GameObjectActiveObstacleInfo("cog_door_open/back_ver", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Cog_07__left1 { get; } = new DoorData(new TransitionKey("Cog_07", "left1"), new TransitionKey("Cog_04", "right3")); public static DoorData Cog_08__bot1 { get; } = new DoorData(new TransitionKey("Cog_08", "bot1"), new TransitionKey("Cog_Dancers", "top1")); public static DoorData Cog_08__top1 { get; } = new DoorData(new TransitionKey("Cog_08", "top1"), new TransitionKey("Cog_09", "bot1")); public static DoorData Cog_09__bot1 { get; } = new DoorData(new TransitionKey("Cog_09", "bot1"), new TransitionKey("Cog_08", "top1")); public static DoorData Cog_09_Destroyed__right1 { get; } = new DoorData(new TransitionKey("Cog_09_Destroyed", "right1"), new TransitionKey("Cog_10_Destroyed", "left1")); public static DoorData Cog_09_Destroyed__top1 { get; } = new DoorData(new TransitionKey("Cog_09_Destroyed", "top1"), new TransitionKey("Song_Tower_Destroyed", "bot1")); public static DoorData Cog_10__bot1 { get; } = new DoorData(new TransitionKey("Cog_10", "bot1"), new TransitionKey("Cog_05", "top1")); public static DoorData Cog_10_Destroyed__bot1 { get; } = new DoorData(new TransitionKey("Cog_10_Destroyed", "bot1"), new TransitionKey("Song_25", "top2")); public static DoorData Cog_10_Destroyed__left1 { get; } = new DoorData(new TransitionKey("Cog_10_Destroyed", "left1"), new TransitionKey("Cog_09_Destroyed", "right1")); public static DoorData Cog_Bench__left1 { get; } = new DoorData(new TransitionKey("Cog_Bench", "left1"), new TransitionKey("Cog_04", "door1")); public static DoorData Cog_Dancers__bot1 { get; } = new DoorData(new TransitionKey("Cog_Dancers", "bot1"), new TransitionKey("Cog_04", "top1")); public static DoorData Cog_Dancers__bot2 { get; } = new DoorData(new TransitionKey("Cog_Dancers", "bot2"), new TransitionKey("Cog_04", "top2")); public static DoorData Cog_Dancers__door_arriveFromTower { get; } = new DoorData(new TransitionKey("Cog_Dancers", "door_arriveFromTower")); public static DoorData Cog_Dancers__door1 { get; } = new DoorData(new TransitionKey("Cog_Dancers", "door1"), new TransitionKey("Cog_Pass", "left1")); public static DoorData Cog_Dancers__left1 { get; } = new DoorData(new TransitionKey("Cog_Dancers", "left1"), new TransitionKey("Hang_07", "right1")); public static DoorData Cog_Dancers__right1 { get; } = new DoorData(new TransitionKey("Cog_Dancers", "right1"), new TransitionKey("Song_25", "left1")); public static DoorData Cog_Dancers__top1 { get; } = new DoorData(new TransitionKey("Cog_Dancers", "top1"), new TransitionKey("Cog_08", "bot1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Black Thread States/Normal World/harpoon_ring_gate/slide_gate_trapdoor", ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo(null, "slide_gate_ring")), new ObstacleInfo("Boss Scene/Battle Gates/gate ground/hero blocker top", ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsRoomAccess) }) }; public static DoorData Cog_Pass__left1 { get; } = new DoorData(new TransitionKey("Cog_Pass", "left1"), new TransitionKey("Cog_Dancers", "door1")); public static DoorData Cog_Pass__left2 { get; } = new DoorData(new TransitionKey("Cog_Pass", "left2"), new TransitionKey("Cog_04", "door2")); public static DoorData Coral_02__bot2 { get; } = new DoorData(new TransitionKey("Coral_02", "bot2"), new TransitionKey("Coral_19", "top2")); public static DoorData Coral_02__right1 { get; } = new DoorData(new TransitionKey("Coral_02", "right1"), new TransitionKey("Coral_03", "left3")); public static DoorData Coral_03__bot1 { get; } = new DoorData(new TransitionKey("Coral_03", "bot1"), new TransitionKey("Coral_19", "top3"), null); public static DoorData Coral_03__bot2 { get; } = new DoorData(new TransitionKey("Coral_03", "bot2"), new TransitionKey("Coral_19", "top4"), null); public static DoorData Coral_03__bot3 { get; } = new DoorData(new TransitionKey("Coral_03", "bot3"), new TransitionKey("Coral_19", "top5"), null); public static DoorData Coral_03__bot4 { get; } = new DoorData(new TransitionKey("Coral_03", "bot4"), new TransitionKey("Coral_19", "top6"), null); public static DoorData Coral_03__bot5 { get; } = new DoorData(new TransitionKey("Coral_03", "bot5"), new TransitionKey("Coral_19", "top7"), null); public static DoorData Coral_03__bot6 { get; } = new DoorData(new TransitionKey("Coral_03", "bot6"), new TransitionKey("Coral_19", "top8"), null); public static DoorData Coral_03__left1 { get; } = new DoorData(new TransitionKey("Coral_03", "left1"), new TransitionKey("Bellway_08", "right1")); public static DoorData Coral_03__left2 { get; } = new DoorData(new TransitionKey("Coral_03", "left2"), new TransitionKey("Coral_11", "right1")); public static DoorData Coral_03__left3 { get; } = new DoorData(new TransitionKey("Coral_03", "left3"), new TransitionKey("Coral_02", "right1")); public static DoorData Coral_03__right1 { get; } = new DoorData(new TransitionKey("Coral_03", "right1"), new TransitionKey("Coral_32", "left1")); public static DoorData Coral_03__right2 { get; } = new DoorData(new TransitionKey("Coral_03", "right2"), new TransitionKey("Coral_12", "left2")); public static DoorData Coral_03__right3 { get; } = new DoorData(new TransitionKey("Coral_03", "right3"), new TransitionKey("Coral_12", "left3")); public static DoorData Coral_10__left_firstEntrance { get; } = new DoorData(new TransitionKey("Coral_10", "left_firstEntrance")); public static DoorData Coral_10__left1 { get; } = new DoorData(new TransitionKey("Coral_10", "left1"), new TransitionKey("Coral_Judge_Arena", "right1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("closed gate", ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsRoomAccess), new ObstacleInfo("Gate Quest Ender", ObstacleType.Other, ObstacleSeverity.ModifiesSaveData) }) }; public static DoorData Coral_10__right1 { get; } = new DoorData(new TransitionKey("Coral_10", "right1"), new TransitionKey("Song_19_entrance", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Song Gate Entrance Right", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo(null, "Coral10rightsidegate")) }) }; public static DoorData Coral_11__left1 { get; } = new DoorData(new TransitionKey("Coral_11", "left1"), new TransitionKey("Coral_11b", "right1")); public static DoorData Coral_11__right1 { get; } = new DoorData(new TransitionKey("Coral_11", "right1"), new TransitionKey("Coral_03", "left2")); public static DoorData Coral_11b__left1 { get; } = new DoorData(new TransitionKey("Coral_11b", "left1"), new TransitionKey("Coral_34", "right1")); public static DoorData Coral_11b__right1 { get; } = new DoorData(new TransitionKey("Coral_11b", "right1"), new TransitionKey("Coral_11", "left1")); public static DoorData Coral_12__left2 { get; } = new DoorData(new TransitionKey("Coral_12", "left2"), new TransitionKey("Coral_03", "right2")); public static DoorData Coral_12__left3 { get; } = new DoorData(new TransitionKey("Coral_12", "left3"), new TransitionKey("Coral_03", "right3")); public static DoorData Coral_12__right1 { get; } = new DoorData(new TransitionKey("Coral_12", "right1"), new TransitionKey("Coral_37", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks") }) }; public static DoorData Coral_19__bot1 { get; } = new DoorData(new TransitionKey("Coral_19", "bot1"), new TransitionKey("Aspid_01", "top1"), null); public static DoorData Coral_19__bot2 { get; } = new DoorData(new TransitionKey("Coral_19", "bot2"), new TransitionKey("Aspid_01", "top2"), null); public static DoorData Coral_19__bot3 { get; } = new DoorData(new TransitionKey("Coral_19", "bot3"), new TransitionKey("Aspid_01", "top3"), null); public static DoorData Coral_19__bot4 { get; } = new DoorData(new TransitionKey("Coral_19", "bot4"), new TransitionKey("Aspid_01", "top4"), null); public static DoorData Coral_19__bot5 { get; } = new DoorData(new TransitionKey("Coral_19", "bot5"), new TransitionKey("Aspid_01", "top5"), null); public static DoorData Coral_19__bot6 { get; } = new DoorData(new TransitionKey("Coral_19", "bot6"), new TransitionKey("Aspid_01", "top6"), null); public static DoorData Coral_19__bot7 { get; } = new DoorData(new TransitionKey("Coral_19", "bot7"), new TransitionKey("Aspid_01", "top7"), null); public static DoorData Coral_19__right1 { get; } = new DoorData(new TransitionKey("Coral_19", "right1"), new TransitionKey("Shellwood_08", "left1")); public static DoorData Coral_19__top1 { get; } = new DoorData(new TransitionKey("Coral_19", "top1"), new TransitionKey("Coral_19b", "bot1")); public static DoorData Coral_19__top2 { get; } = new DoorData(new TransitionKey("Coral_19", "top2"), new TransitionKey("Coral_02", "bot2")); public static DoorData Coral_19__top3 { get; } = new DoorData(new TransitionKey("Coral_19", "top3"), new TransitionKey("Coral_19", "top3"), new TransitionKey("Coral_03", "bot1")); public static DoorData Coral_19__top4 { get; } = new DoorData(new TransitionKey("Coral_19", "top4"), new TransitionKey("Coral_19", "top3"), new TransitionKey("Coral_03", "bot2")); public static DoorData Coral_19__top5 { get; } = new DoorData(new TransitionKey("Coral_19", "top5"), new TransitionKey("Coral_19", "top3"), new TransitionKey("Coral_03", "bot3")); public static DoorData Coral_19__top6 { get; } = new DoorData(new TransitionKey("Coral_19", "top6"), new TransitionKey("Coral_19", "top3"), new TransitionKey("Coral_03", "bot4")); public static DoorData Coral_19__top7 { get; } = new DoorData(new TransitionKey("Coral_19", "top7"), new TransitionKey("Coral_19", "top3"), new TransitionKey("Coral_03", "bot5")); public static DoorData Coral_19__top8 { get; } = new DoorData(new TransitionKey("Coral_19", "top8"), new TransitionKey("Coral_19", "top3"), new TransitionKey("Coral_03", "bot6")); public static DoorData Coral_19b__bot1 { get; } = new DoorData(new TransitionKey("Coral_19b", "bot1"), new TransitionKey("Coral_19", "top1")); public static DoorData Coral_23__left1 { get; } = new DoorData(new TransitionKey("Coral_23", "left1"), new TransitionKey("Coral_25", "right1")); public static DoorData Coral_23__left2 { get; } = new DoorData(new TransitionKey("Coral_23", "left2"), new TransitionKey("Coral_39", "right1")); public static DoorData Coral_23__right1 { get; } = new DoorData(new TransitionKey("Coral_23", "right1"), new TransitionKey("Coral_35b", "left3")); public static DoorData Coral_24__left1 { get; } = new DoorData(new TransitionKey("Coral_24", "left1"), new TransitionKey("Coral_35b", "right2")); public static DoorData Coral_24__right1 { get; } = new DoorData(new TransitionKey("Coral_24", "right1"), new TransitionKey("Coral_26", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Coral Crust Wall Tall (4)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Coral_25__bot1 { get; } = new DoorData(new TransitionKey("Coral_25", "bot1"), new TransitionKey("Coral_34", "top1")); public static DoorData Coral_25__right1 { get; } = new DoorData(new TransitionKey("Coral_25", "right1"), new TransitionKey("Coral_23", "left1")); public static DoorData Coral_26__left1 { get; } = new DoorData(new TransitionKey("Coral_26", "left1"), new TransitionKey("Coral_24", "right1")); public static DoorData Coral_26__left2 { get; } = new DoorData(new TransitionKey("Coral_26", "left2"), new TransitionKey("Coral_44", "right1")); public static DoorData Coral_26__right1 { get; } = new DoorData(new TransitionKey("Coral_26", "right1"), new TransitionKey("Coral_38", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Coral Crust Wall Tall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Coral_27__left1 { get; } = new DoorData(new TransitionKey("Coral_27", "left1"), new TransitionKey("Coral_28", "right1")); public static DoorData Coral_27__right1 { get; } = new DoorData(new TransitionKey("Coral_27", "right1"), new TransitionKey("Coral_35b", "left2")); public static DoorData Coral_28__door1 { get; } = new DoorData(new TransitionKey("Coral_28", "door1"), new TransitionKey("Coral_Tower_01", "left1")); public static DoorData Coral_28__right1 { get; } = new DoorData(new TransitionKey("Coral_28", "right1"), new TransitionKey("Coral_27", "left1")); public static DoorData Coral_29__left1 { get; } = new DoorData(new TransitionKey("Coral_29", "left1"), new TransitionKey("Coral_35b", "door1")); public static DoorData Coral_32__left1 { get; } = new DoorData(new TransitionKey("Coral_32", "left1"), new TransitionKey("Coral_03", "right1")); public static DoorData Coral_32__right1 { get; } = new DoorData(new TransitionKey("Coral_32", "right1"), new TransitionKey("Coral_Judge_Arena", "left1")); public static DoorData Coral_32__top1 { get; } = new DoorData(new TransitionKey("Coral_32", "top1"), new TransitionKey("Coral_38", "bot1")); public static DoorData Coral_33__right1 { get; } = new DoorData(new TransitionKey("Coral_33", "right1"), new TransitionKey("Coral_43", "left1")); public static DoorData Coral_34__door1 { get; } = new DoorData(new TransitionKey("Coral_34", "door1"), new TransitionKey("Room_Pinstress", "left1")); public static DoorData Coral_34__right1 { get; } = new DoorData(new TransitionKey("Coral_34", "right1"), new TransitionKey("Coral_11b", "left1")); public static DoorData Coral_34__top1 { get; } = new DoorData(new TransitionKey("Coral_34", "top1"), new TransitionKey("Coral_25", "bot1")); public static DoorData Coral_35__left1 { get; } = new DoorData(new TransitionKey("Coral_35", "left1"), new TransitionKey("Coral_43", "right1")); public static DoorData Coral_35__left2 { get; } = new DoorData(new TransitionKey("Coral_35", "left2"), new TransitionKey("Coral_42", "right1")); public static DoorData Coral_35__right1 { get; } = new DoorData(new TransitionKey("Coral_35", "right1"), new TransitionKey("Bellway_08", "left1")); public static DoorData Coral_35__right2 { get; } = new DoorData(new TransitionKey("Coral_35", "right2"), new TransitionKey("Coral_36", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks") }) }; public static DoorData Coral_35__top1 { get; } = new DoorData(new TransitionKey("Coral_35", "top1"), new TransitionKey("Coral_35b", "bot1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("boulder_shortcut (1)", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo("Coral_35b", "Stalactite Group Bottom")) }) }; public static DoorData Coral_35b__bot1 { get; } = new DoorData(new TransitionKey("Coral_35b", "bot1"), new TransitionKey("Coral_35", "top1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("boulder_shortcut", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsExitAccess, new PersistentBoolSaveInfo(null, "Stalactite Group Bottom")), new ObstacleInfo("boulder_shortcut/shortcut_block", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsExitAccess) }) }; public static DoorData Coral_35b__door1 { get; } = new DoorData(new TransitionKey("Coral_35b", "door1"), new TransitionKey("Coral_29", "left1")); public static DoorData Coral_35b__left2 { get; } = new DoorData(new TransitionKey("Coral_35b", "left2"), new TransitionKey("Coral_27", "right1")); public static DoorData Coral_35b__left3 { get; } = new DoorData(new TransitionKey("Coral_35b", "left3"), new TransitionKey("Coral_23", "right1")); public static DoorData Coral_35b__left4 { get; } = new DoorData(new TransitionKey("Coral_35b", "left4"), new TransitionKey("Coral_40", "right1")); public static DoorData Coral_35b__left5 { get; } = new DoorData(new TransitionKey("Coral_35b", "left5"), new TransitionKey("Coral_41", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Coral Crust Wall Tall (2)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Coral_35b__right1 { get; } = new DoorData(new TransitionKey("Coral_35b", "right1"), new TransitionKey("Coral_44", "left1")); public static DoorData Coral_35b__right2 { get; } = new DoorData(new TransitionKey("Coral_35b", "right2"), new TransitionKey("Coral_24", "left1")); public static DoorData Coral_36__left1 { get; } = new DoorData(new TransitionKey("Coral_36", "left1"), new TransitionKey("Coral_35", "right2")); public static DoorData Coral_37__left1 { get; } = new DoorData(new TransitionKey("Coral_37", "left1"), new TransitionKey("Coral_12", "right1")); public static DoorData Coral_38__bot1 { get; } = new DoorData(new TransitionKey("Coral_38", "bot1"), new TransitionKey("Coral_32", "top1")); public static DoorData Coral_38__left1 { get; } = new DoorData(new TransitionKey("Coral_38", "left1"), new TransitionKey("Coral_26", "right1")); public static DoorData Coral_38__right1 { get; } = new DoorData(new TransitionKey("Coral_38", "right1"), new TransitionKey("Bellshrine_Coral", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Coral Crust Wall Tall (2)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Coral_39__right1 { get; } = new DoorData(new TransitionKey("Coral_39", "right1"), new TransitionKey("Coral_23", "left2")); public static DoorData Coral_40__right1 { get; } = new DoorData(new TransitionKey("Coral_40", "right1"), new TransitionKey("Coral_35b", "left4")); public static DoorData Coral_41__right1 { get; } = new DoorData(new TransitionKey("Coral_41", "right1"), new TransitionKey("Coral_35b", "left5")); public static DoorData Coral_42__right1 { get; } = new DoorData(new TransitionKey("Coral_42", "right1"), new TransitionKey("Coral_35", "left2")); public static DoorData Coral_43__left1 { get; } = new DoorData(new TransitionKey("Coral_43", "left1"), new TransitionKey("Coral_33", "right1")); public static DoorData Coral_43__right1 { get; } = new DoorData(new TransitionKey("Coral_43", "right1"), new TransitionKey("Coral_35", "left1")); public static DoorData Coral_44__left1 { get; } = new DoorData(new TransitionKey("Coral_44", "left1"), new TransitionKey("Coral_35b", "right1")); public static DoorData Coral_44__right1 { get; } = new DoorData(new TransitionKey("Coral_44", "right1"), new TransitionKey("Coral_26", "left2")); public static DoorData Coral_Judge_Arena__door_caravanTravelEnd { get; } = new DoorData(new TransitionKey("Coral_Judge_Arena", "door_caravanTravelEnd")); public static DoorData Coral_Judge_Arena__door2 { get; } = new DoorData(new TransitionKey("Coral_Judge_Arena", "door2"), new TransitionKey("Room_Caravan_Spa", "left1"), null); public static DoorData Coral_Judge_Arena__left1 { get; } = new DoorData(new TransitionKey("Coral_Judge_Arena", "left1"), new TransitionKey("Coral_32", "right1")); public static DoorData Coral_Judge_Arena__right1 { get; } = new DoorData(new TransitionKey("Coral_Judge_Arena", "right1"), new TransitionKey("Coral_10", "left1")) { Obstacles = new ReadOnlyCollection(new List(3) { new BehaviourObstacleInfo("Boss Scene/Great Gate/terrain collider", Enable: false, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsExitAccess), new ObstacleInfo("Boss Scene/Great Gate/Gate/Gate", ObstacleType.Other, ObstacleSeverity.AbnormalVisual), new ObstacleInfo("Black Thread States Thread Only Variant/Black Thread World/Big Battle Gate", ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Coral_Tower_01__door_wakeOnGround { get; } = new DoorData(new TransitionKey("Coral_Tower_01", "door_wakeOnGround")); public static DoorData Coral_Tower_01__left1 { get; } = new DoorData(new TransitionKey("Coral_Tower_01", "left1"), new TransitionKey("Coral_28", "door1")); public static DoorData Cradle_01__left1 { get; } = new DoorData(new TransitionKey("Cradle_01", "left1"), new TransitionKey("Cradle_02", "right2")); public static DoorData Cradle_01__right1 { get; } = new DoorData(new TransitionKey("Cradle_01", "right1"), new TransitionKey("Tube_Hub", "left4")); public static DoorData Cradle_01_Destroyed__bot1 { get; } = new DoorData(new TransitionKey("Cradle_01_Destroyed", "bot1"), new TransitionKey("Song_Tower_Destroyed", "top1")); public static DoorData Cradle_01_Destroyed__top1 { get; } = new DoorData(new TransitionKey("Cradle_01_Destroyed", "top1"), new TransitionKey("Cradle_03_Destroyed", "bot1")); public static DoorData Cradle_02__left2 { get; } = new DoorData(new TransitionKey("Cradle_02", "left2"), new TransitionKey("Cradle_02b", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("breakable blocker struts", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Cradle_02__right1 { get; } = new DoorData(new TransitionKey("Cradle_02", "right1"), new TransitionKey("Cradle_03", "left2")); public static DoorData Cradle_02__right2 { get; } = new DoorData(new TransitionKey("Cradle_02", "right2"), new TransitionKey("Cradle_01", "left1")); public static DoorData Cradle_02b__right1 { get; } = new DoorData(new TransitionKey("Cradle_02b", "right1"), new TransitionKey("Cradle_02", "left2")); public static DoorData Cradle_03__left2 { get; } = new DoorData(new TransitionKey("Cradle_03", "left2"), new TransitionKey("Cradle_02", "right1")); public static DoorData Cradle_03__right2 { get; } = new DoorData(new TransitionKey("Cradle_03", "right2"), new TransitionKey("Tube_Hub", "left3")); public static DoorData Cradle_03_Destroyed__bot1 { get; } = new DoorData(new TransitionKey("Cradle_03_Destroyed", "bot1"), new TransitionKey("Cradle_01_Destroyed", "top1")); public static DoorData Cradle_03_Destroyed__door1 { get; } = new DoorData(new TransitionKey("Cradle_03_Destroyed", "door1"), new TransitionKey("Cradle_Destroyed_Challenge_02", "left1")); public static DoorData Cradle_Destroyed_Challenge_01__left1 { get; } = new DoorData(new TransitionKey("Cradle_Destroyed_Challenge_01", "left1"), new TransitionKey("Cradle_Destroyed_Challenge_Bench", "right1")); public static DoorData Cradle_Destroyed_Challenge_01__top1 { get; } = new DoorData(new TransitionKey("Cradle_Destroyed_Challenge_01", "top1"), new TransitionKey("Abandoned_town", "bot1")); public static DoorData Cradle_Destroyed_Challenge_02__left1 { get; } = new DoorData(new TransitionKey("Cradle_Destroyed_Challenge_02", "left1"), new TransitionKey("Cradle_03_Destroyed", "door1")); public static DoorData Cradle_Destroyed_Challenge_02__top1 { get; } = new DoorData(new TransitionKey("Cradle_Destroyed_Challenge_02", "top1"), new TransitionKey("Cradle_Destroyed_Challenge_Bench", "bot1")); public static DoorData Cradle_Destroyed_Challenge_Bench__bot1 { get; } = new DoorData(new TransitionKey("Cradle_Destroyed_Challenge_Bench", "bot1"), new TransitionKey("Cradle_Destroyed_Challenge_02", "top1")); public static DoorData Cradle_Destroyed_Challenge_Bench__door1 { get; } = new DoorData(new TransitionKey("Cradle_Destroyed_Challenge_Bench", "door1"), new TransitionKey("Abandoned_town", "door1")); public static DoorData Cradle_Destroyed_Challenge_Bench__right1 { get; } = new DoorData(new TransitionKey("Cradle_Destroyed_Challenge_Bench", "right1"), new TransitionKey("Cradle_Destroyed_Challenge_01", "left1")); public static DoorData Crawl_01__left1 { get; } = new DoorData(new TransitionKey("Crawl_01", "left1"), new TransitionKey("Crawl_02", "right1")); public static DoorData Crawl_01__right1 { get; } = new DoorData(new TransitionKey("Crawl_01", "right1"), new TransitionKey("Aspid_01", "left1")); public static DoorData Crawl_02__left1 { get; } = new DoorData(new TransitionKey("Crawl_02", "left1"), new TransitionKey("Crawl_03", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("One Way Wall", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("crawl03_oneWayWall")) }) }; public static DoorData Crawl_02__left2 { get; } = new DoorData(new TransitionKey("Crawl_02", "left2"), new TransitionKey("Crawl_03b", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("aspid_sealed_gate_stone", ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Crawl_02__right1 { get; } = new DoorData(new TransitionKey("Crawl_02", "right1"), new TransitionKey("Crawl_01", "left1")); public static DoorData Crawl_02__right2 { get; } = new DoorData(new TransitionKey("Crawl_02", "right2"), new TransitionKey("Crawl_04", "left1")); public static DoorData Crawl_02__right3 { get; } = new DoorData(new TransitionKey("Crawl_02", "right3"), new TransitionKey("Crawl_06", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Breakable Wall (1)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Crawl_03__bot1 { get; } = new DoorData(new TransitionKey("Crawl_03", "bot1"), new TransitionKey("Crawl_03b", "top1")); public static DoorData Crawl_03__left1 { get; } = new DoorData(new TransitionKey("Crawl_03", "left1"), new TransitionKey("Crawl_05", "right1")); public static DoorData Crawl_03__right1 { get; } = new DoorData(new TransitionKey("Crawl_03", "right1"), new TransitionKey("Crawl_02", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Breakable Wall (1)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Crawl_03__top1 { get; } = new DoorData(new TransitionKey("Crawl_03", "top1"), new TransitionKey("Crawl_08", "bot1")); public static DoorData Crawl_03b__bot1 { get; } = new DoorData(new TransitionKey("Crawl_03b", "bot1"), new TransitionKey("Crawl_07", "top1")); public static DoorData Crawl_03b__right1 { get; } = new DoorData(new TransitionKey("Crawl_03b", "right1"), new TransitionKey("Crawl_02", "left2")); public static DoorData Crawl_03b__top1 { get; } = new DoorData(new TransitionKey("Crawl_03b", "top1"), new TransitionKey("Crawl_03", "bot1")); public static DoorData Crawl_04__left1 { get; } = new DoorData(new TransitionKey("Crawl_04", "left1"), new TransitionKey("Crawl_02", "right2")); public static DoorData Crawl_04__right1 { get; } = new DoorData(new TransitionKey("Crawl_04", "right1"), new TransitionKey("Aspid_01", "left2")); public static DoorData Crawl_05__right1 { get; } = new DoorData(new TransitionKey("Crawl_05", "right1"), new TransitionKey("Crawl_03", "left1")); public static DoorData Crawl_06__left1 { get; } = new DoorData(new TransitionKey("Crawl_06", "left1"), new TransitionKey("Crawl_02", "right3")); public static DoorData Crawl_07__bot1 { get; } = new DoorData(new TransitionKey("Crawl_07", "bot1"), new TransitionKey("Bonegrave", "top1")); public static DoorData Crawl_07__left1 { get; } = new DoorData(new TransitionKey("Crawl_07", "left1"), new TransitionKey("Crawl_09", "right1")); public static DoorData Crawl_07__top1 { get; } = new DoorData(new TransitionKey("Crawl_07", "top1"), new TransitionKey("Crawl_03b", "bot1")); public static DoorData Crawl_08__bot1 { get; } = new DoorData(new TransitionKey("Crawl_08", "bot1"), new TransitionKey("Crawl_03", "top1")); public static DoorData Crawl_09__left1 { get; } = new DoorData(new TransitionKey("Crawl_09", "left1"), new TransitionKey("Crawl_10", "right1")) { Obstacles = new ReadOnlyCollection(new List(3) { new UnmaskerInfo("Breakable Wall/Masks"), new ObstacleInfo("Breakable Wall (1)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.AbnormalVisual, new PersistentBoolSaveInfo()) }) }; public static DoorData Crawl_09__right1 { get; } = new DoorData(new TransitionKey("Crawl_09", "right1"), new TransitionKey("Crawl_07", "left1")); public static DoorData Crawl_10__right1 { get; } = new DoorData(new TransitionKey("Crawl_10", "right1"), new TransitionKey("Crawl_09", "left1")); public static DoorData Dock_01__left1 { get; } = new DoorData(new TransitionKey("Dock_01", "left1"), new TransitionKey("Dock_08", "right1")); public static DoorData Dock_01__right1 { get; } = new DoorData(new TransitionKey("Dock_01", "right1"), new TransitionKey("Bone_East_05", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Song_Gate_small", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo("Bone_East_05", "Song_lever_side")) }) }; public static DoorData Dock_01__right2 { get; } = new DoorData(new TransitionKey("Dock_01", "right2"), new TransitionKey("Bone_East_01", "left1")); public static DoorData Dock_02__left1 { get; } = new DoorData(new TransitionKey("Dock_02", "left1"), new TransitionKey("Room_Forge", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Song Knight Gate Backside", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("openedSongGateDocks")) }) }; public static DoorData Dock_02__left2 { get; } = new DoorData(new TransitionKey("Dock_02", "left2"), new TransitionKey("Dock_09", "right1")); public static DoorData Dock_02__right1 { get; } = new DoorData(new TransitionKey("Dock_02", "right1"), new TransitionKey("Dock_02b", "left1")); public static DoorData Dock_02__right2 { get; } = new DoorData(new TransitionKey("Dock_02", "right2"), new TransitionKey("Dock_02b", "left2")); public static DoorData Dock_02__right3 { get; } = new DoorData(new TransitionKey("Dock_02", "right3"), new TransitionKey("Dock_02b", "left3")); public static DoorData Dock_02b__left1 { get; } = new DoorData(new TransitionKey("Dock_02b", "left1"), new TransitionKey("Dock_02", "right1")); public static DoorData Dock_02b__left2 { get; } = new DoorData(new TransitionKey("Dock_02b", "left2"), new TransitionKey("Dock_02", "right2")); public static DoorData Dock_02b__left3 { get; } = new DoorData(new TransitionKey("Dock_02b", "left3"), new TransitionKey("Dock_02", "right3")); public static DoorData Dock_02b__right1 { get; } = new DoorData(new TransitionKey("Dock_02b", "right1"), new TransitionKey("Dock_03", "left1")); public static DoorData Dock_02b__right2 { get; } = new DoorData(new TransitionKey("Dock_02b", "right2"), new TransitionKey("Dock_03c", "left2")); public static DoorData Dock_03__bot1 { get; } = new DoorData(new TransitionKey("Dock_03", "bot1"), new TransitionKey("Dock_03c", "top2")); public static DoorData Dock_03__left1 { get; } = new DoorData(new TransitionKey("Dock_03", "left1"), new TransitionKey("Dock_02b", "right1")); public static DoorData Dock_03__right1 { get; } = new DoorData(new TransitionKey("Dock_03", "right1"), new TransitionKey("Dock_03b", "left1")) { Obstacles = new ReadOnlyCollection(new List(3) { new ObstacleInfo("Breakable Wall_Silhouette", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo()), new ObstacleInfo("Camera Locks", ObstacleType.Other, ObstacleSeverity.AbnormalVisual), new UnmaskerInfo("Masks") }) }; public static DoorData Dock_03b__left1 { get; } = new DoorData(new TransitionKey("Dock_03b", "left1"), new TransitionKey("Dock_03", "right1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks") }) }; public static DoorData Dock_03b__right1 { get; } = new DoorData(new TransitionKey("Dock_03b", "right1"), new TransitionKey("Bone_East_07", "left3")); public static DoorData Dock_03c__left2 { get; } = new DoorData(new TransitionKey("Dock_03c", "left2"), new TransitionKey("Dock_02b", "right2")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("explode_wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Dock_03c__top1 { get; } = new DoorData(new TransitionKey("Dock_03c", "top1"), new TransitionKey("Dock_03d", "bot1")); public static DoorData Dock_03c__top2 { get; } = new DoorData(new TransitionKey("Dock_03c", "top2"), new TransitionKey("Dock_03", "bot1")); public static DoorData Dock_03d__bot1 { get; } = new DoorData(new TransitionKey("Dock_03d", "bot1"), new TransitionKey("Dock_03c", "top1")); public static DoorData Dock_04__left1 { get; } = new DoorData(new TransitionKey("Dock_04", "left1"), new TransitionKey("Dock_06_Church", "right1")); public static DoorData Dock_04__right1 { get; } = new DoorData(new TransitionKey("Dock_04", "right1"), new TransitionKey("Room_Forge", "left1")); public static DoorData Dock_04__right2 { get; } = new DoorData(new TransitionKey("Dock_04", "right2"), new TransitionKey("Bone_East_13", "left1")); public static DoorData Dock_04__right3 { get; } = new DoorData(new TransitionKey("Dock_04", "right3"), new TransitionKey("Dock_10", "left1")); public static DoorData Dock_05__left1 { get; } = new DoorData(new TransitionKey("Dock_05", "left1"), new TransitionKey("Bone_East_01", "right2")); public static DoorData Dock_06_Church__bot1 { get; } = new DoorData(new TransitionKey("Dock_06_Church", "bot1"), new TransitionKey("Abyss_09", "top1")); public static DoorData Dock_06_Church__right1 { get; } = new DoorData(new TransitionKey("Dock_06_Church", "right1"), new TransitionKey("Dock_04", "left1")); public static DoorData Dock_08__left1 { get; } = new DoorData(new TransitionKey("Dock_08", "left1"), new TransitionKey("Bone_09", "right1")); public static DoorData Dock_08__left2 { get; } = new DoorData(new TransitionKey("Dock_08", "left2"), new TransitionKey("Bone_09", "right2")); public static DoorData Dock_08__right1 { get; } = new DoorData(new TransitionKey("Dock_08", "right1"), new TransitionKey("Dock_01", "left1")); public static DoorData Dock_09__left1 { get; } = new DoorData(new TransitionKey("Dock_09", "left1"), new TransitionKey("Dock_15", "right1")); public static DoorData Dock_09__right1 { get; } = new DoorData(new TransitionKey("Dock_09", "right1"), new TransitionKey("Dock_02", "left2")); public static DoorData Dock_10__left1 { get; } = new DoorData(new TransitionKey("Dock_10", "left1"), new TransitionKey("Dock_04", "right3")); public static DoorData Dock_10__right1 { get; } = new DoorData(new TransitionKey("Dock_10", "right1"), new TransitionKey("Dock_15", "left1")); public static DoorData Dock_11__left1 { get; } = new DoorData(new TransitionKey("Dock_11", "left1"), new TransitionKey("Dock_15", "right3")); public static DoorData Dock_11__right1 { get; } = new DoorData(new TransitionKey("Dock_11", "right1"), new TransitionKey("Dock_12", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Dock Pipe Grate Door (2)", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo(null, "Song_lever_side (2)")) }) }; public static DoorData Dock_12__door1 { get; } = new DoorData(new TransitionKey("Dock_12", "door1"), new TransitionKey("Room_Diving_Bell", "left1")) { Obstacles = new ReadOnlyCollection(new List(3) { new TestObjObstacleInfo("Diving Bell/States", Activate: false, ObstacleType.ClosedAfterProgression, ObstacleSeverity.LimitsExitAccess), new TransitionObstacleInfo("Diving Bell/States/Standard/door1", Enabled: true, ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsExitAccess), new ObstacleInfo("Diving Bell/States/Standard/Diving Bell Door", ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Dock_12__left1 { get; } = new DoorData(new TransitionKey("Dock_12", "left1"), new TransitionKey("Dock_11", "right1")); public static DoorData Dock_13__right1 { get; } = new DoorData(new TransitionKey("Dock_13", "right1"), new TransitionKey("Dock_15", "left2")); public static DoorData Dock_14__left1 { get; } = new DoorData(new TransitionKey("Dock_14", "left1"), new TransitionKey("Dock_15", "right2")); public static DoorData Dock_15__left1 { get; } = new DoorData(new TransitionKey("Dock_15", "left1"), new TransitionKey("Dock_10", "right1")); public static DoorData Dock_15__left2 { get; } = new DoorData(new TransitionKey("Dock_15", "left2"), new TransitionKey("Dock_13", "right1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks") }) }; public static DoorData Dock_15__right1 { get; } = new DoorData(new TransitionKey("Dock_15", "right1"), new TransitionKey("Dock_09", "left1")); public static DoorData Dock_15__right2 { get; } = new DoorData(new TransitionKey("Dock_15", "right2"), new TransitionKey("Dock_14", "left1")); public static DoorData Dock_15__right3 { get; } = new DoorData(new TransitionKey("Dock_15", "right3"), new TransitionKey("Dock_11", "left1")); public static DoorData Dock_16__right1 { get; } = new DoorData(new TransitionKey("Dock_16", "right1"), new TransitionKey("Bellway_02", "left1")); public static DoorData Dust_01__left1 { get; } = new DoorData(new TransitionKey("Dust_01", "left1"), new TransitionKey("Greymoor_03", "right1")); public static DoorData Dust_01__right1 { get; } = new DoorData(new TransitionKey("Dust_01", "right1"), new TransitionKey("Dust_02", "left2")); public static DoorData Dust_02__left1 { get; } = new DoorData(new TransitionKey("Dust_02", "left1"), new TransitionKey("Dust_10", "right1")); public static DoorData Dust_02__left2 { get; } = new DoorData(new TransitionKey("Dust_02", "left2"), new TransitionKey("Dust_01", "right1")); public static DoorData Dust_02__right1 { get; } = new DoorData(new TransitionKey("Dust_02", "right1"), new TransitionKey("Dust_04", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("grey_lever_gate_right_top", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo(null, "Dust_02Gate")) }) }; public static DoorData Dust_02__right2 { get; } = new DoorData(new TransitionKey("Dust_02", "right2"), new TransitionKey("Dust_04", "left2")); public static DoorData Dust_02__right3 { get; } = new DoorData(new TransitionKey("Dust_02", "right3"), new TransitionKey("Dust_03", "left1")); public static DoorData Dust_02__top1 { get; } = new DoorData(new TransitionKey("Dust_02", "top1"), new TransitionKey("Dust_05", "bot1")); public static DoorData Dust_03__bot1 { get; } = new DoorData(new TransitionKey("Dust_03", "bot1"), new TransitionKey("Dust_Barb", "top1")); public static DoorData Dust_03__left1 { get; } = new DoorData(new TransitionKey("Dust_03", "left1"), new TransitionKey("Dust_02", "right3")); public static DoorData Dust_03__top1 { get; } = new DoorData(new TransitionKey("Dust_03", "top1"), new TransitionKey("Dust_Chef", "bot1")); public static DoorData Dust_04__door1 { get; } = new DoorData(new TransitionKey("Dust_04", "door1"), new TransitionKey("Dust_Shack", "left1")); public static DoorData Dust_04__left1 { get; } = new DoorData(new TransitionKey("Dust_04", "left1"), new TransitionKey("Dust_02", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("grey_lever_gate", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo("Dust_02", "Dust_02Gate")) }) }; public static DoorData Dust_04__left2 { get; } = new DoorData(new TransitionKey("Dust_04", "left2"), new TransitionKey("Dust_02", "right2")); public static DoorData Dust_04__right1 { get; } = new DoorData(new TransitionKey("Dust_04", "right1"), new TransitionKey("Dust_Chef", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("gate", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo("Dust_Chef", "greymoor_lever_simple")) }) }; public static DoorData Dust_05__bot1 { get; } = new DoorData(new TransitionKey("Dust_05", "bot1"), new TransitionKey("Dust_02", "top1")); public static DoorData Dust_05__left1 { get; } = new DoorData(new TransitionKey("Dust_05", "left1")) { DynamicTargets = new ReadOnlyCollection(new List(2) { new TransitionKey("Dust_Maze_09_entrance", "right1"), new TransitionKey("Dust_Maze_08_completed", "right1") }) }; public static DoorData Dust_05__right1 { get; } = new DoorData(new TransitionKey("Dust_05", "right1"), new TransitionKey("Dust_06", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("greymoor_metal_gate/Gate Parent", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess, new PlayerDataBoolSaveInfo("openedDust05Gate")) }) }; public static DoorData Dust_06__left1 { get; } = new DoorData(new TransitionKey("Dust_06", "left1"), new TransitionKey("Dust_05", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new TestObjObstacleInfo("Dust_05 Gate", Activate: true, ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess, new PlayerDataBoolSaveInfo("openedDust05Gate")) }) }; public static DoorData Dust_06__right1 { get; } = new DoorData(new TransitionKey("Dust_06", "right1"), new TransitionKey("Shadow_05", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Breakable Wall", ObstacleType.TwoWayBreakable, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo("Shadow_05")) }) }; public static DoorData Dust_06__right2 { get; } = new DoorData(new TransitionKey("Dust_06", "right2"), new TransitionKey("Dust_11", "left1")); public static DoorData Dust_06__right3 { get; } = new DoorData(new TransitionKey("Dust_06", "right3"), new TransitionKey("Dust_12", "left1")); public static DoorData Dust_09__door1 { get; } = new DoorData(new TransitionKey("Dust_09", "door1"), new TransitionKey("Organ_01", "left1")); public static DoorData Dust_09__door2 { get; } = new DoorData(new TransitionKey("Dust_09", "door2"), new TransitionKey("Organ_01", "left2")); public static DoorData Dust_09__left2 { get; } = new DoorData(new TransitionKey("Dust_09", "left2")) { DynamicTargets = new ReadOnlyCollection(new List(2) { new TransitionKey("Dust_Maze_Last_Hall", "right1"), new TransitionKey("Dust_Maze_08_completed", "right2") }) }; public static DoorData Dust_09__right1 { get; } = new DoorData(new TransitionKey("Dust_09", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("right_wall_one_way", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo("Shadow_04", "Breakable Wall")) }), DynamicTargets = new ReadOnlyCollection(new List(2) { new TransitionKey("Dust_Maze_Last_Hall", "left1"), new TransitionKey("Shadow_04", "left1") }) }; public static DoorData Dust_10__right1 { get; } = new DoorData(new TransitionKey("Dust_10", "right1"), new TransitionKey("Dust_02", "left1")); public static DoorData Dust_11__bot1 { get; } = new DoorData(new TransitionKey("Dust_11", "bot1"), new TransitionKey("Greymoor_17", "top1")); public static DoorData Dust_11__left1 { get; } = new DoorData(new TransitionKey("Dust_11", "left1"), new TransitionKey("Dust_06", "right2")); public static DoorData Dust_12__left1 { get; } = new DoorData(new TransitionKey("Dust_12", "left1"), new TransitionKey("Dust_06", "right3")); public static DoorData Dust_Barb__top1 { get; } = new DoorData(new TransitionKey("Dust_Barb", "top1"), new TransitionKey("Dust_03", "bot1")); public static DoorData Dust_Chef__bot1 { get; } = new DoorData(new TransitionKey("Dust_Chef", "bot1"), new TransitionKey("Dust_03", "top1")); public static DoorData Dust_Chef__left1 { get; } = new DoorData(new TransitionKey("Dust_Chef", "left1"), new TransitionKey("Dust_04", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("dust_chef_door_inner/gate", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo(null, "greymoor_lever_simple")) }) }; public static DoorData Dust_Maze_01__left1 { get; } = new DoorData(new TransitionKey("Dust_Maze_01", "left1")); public static DoorData Dust_Maze_01__right1 { get; } = new DoorData(new TransitionKey("Dust_Maze_01", "right1")); public static DoorData Dust_Maze_01__top1 { get; } = new DoorData(new TransitionKey("Dust_Maze_01", "top1")); public static DoorData Dust_Maze_02__bot1 { get; } = new DoorData(new TransitionKey("Dust_Maze_02", "bot1")); public static DoorData Dust_Maze_02__left1 { get; } = new DoorData(new TransitionKey("Dust_Maze_02", "left1")); public static DoorData Dust_Maze_02__left2 { get; } = new DoorData(new TransitionKey("Dust_Maze_02", "left2")); public static DoorData Dust_Maze_02__right1 { get; } = new DoorData(new TransitionKey("Dust_Maze_02", "right1")); public static DoorData Dust_Maze_02__top1 { get; } = new DoorData(new TransitionKey("Dust_Maze_02", "top1")); public static DoorData Dust_Maze_03__left1 { get; } = new DoorData(new TransitionKey("Dust_Maze_03", "left1")); public static DoorData Dust_Maze_03__left2 { get; } = new DoorData(new TransitionKey("Dust_Maze_03", "left2")); public static DoorData Dust_Maze_03__right1 { get; } = new DoorData(new TransitionKey("Dust_Maze_03", "right1")); public static DoorData Dust_Maze_03__top1 { get; } = new DoorData(new TransitionKey("Dust_Maze_03", "top1")); public static DoorData Dust_Maze_04__bot1 { get; } = new DoorData(new TransitionKey("Dust_Maze_04", "bot1")); public static DoorData Dust_Maze_04__left1 { get; } = new DoorData(new TransitionKey("Dust_Maze_04", "left1")); public static DoorData Dust_Maze_04__right1 { get; } = new DoorData(new TransitionKey("Dust_Maze_04", "right1")); public static DoorData Dust_Maze_04__top1 { get; } = new DoorData(new TransitionKey("Dust_Maze_04", "top1")); public static DoorData Dust_Maze_04__top1_1 { get; } = new DoorData(new TransitionKey("Dust_Maze_04", "top1 (1)")); public static DoorData Dust_Maze_05__bot1 { get; } = new DoorData(new TransitionKey("Dust_Maze_05", "bot1")); public static DoorData Dust_Maze_05__left1 { get; } = new DoorData(new TransitionKey("Dust_Maze_05", "left1")); public static DoorData Dust_Maze_05__right1 { get; } = new DoorData(new TransitionKey("Dust_Maze_05", "right1")); public static DoorData Dust_Maze_05__right2 { get; } = new DoorData(new TransitionKey("Dust_Maze_05", "right2")); public static DoorData Dust_Maze_05__top1 { get; } = new DoorData(new TransitionKey("Dust_Maze_05", "top1")); public static DoorData Dust_Maze_06__left1 { get; } = new DoorData(new TransitionKey("Dust_Maze_06", "left1")); public static DoorData Dust_Maze_06__right1 { get; } = new DoorData(new TransitionKey("Dust_Maze_06", "right1")); public static DoorData Dust_Maze_06__top1 { get; } = new DoorData(new TransitionKey("Dust_Maze_06", "top1")); public static DoorData Dust_Maze_07__bot1 { get; } = new DoorData(new TransitionKey("Dust_Maze_07", "bot1")); public static DoorData Dust_Maze_07__left1 { get; } = new DoorData(new TransitionKey("Dust_Maze_07", "left1")); public static DoorData Dust_Maze_07__top1 { get; } = new DoorData(new TransitionKey("Dust_Maze_07", "top1")); public static DoorData Dust_Maze_08__left1 { get; } = new DoorData(new TransitionKey("Dust_Maze_08", "left1")); public static DoorData Dust_Maze_08__right2 { get; } = new DoorData(new TransitionKey("Dust_Maze_08", "right2")); public static DoorData Dust_Maze_08__right3 { get; } = new DoorData(new TransitionKey("Dust_Maze_08", "right3")); public static DoorData Dust_Maze_08__top1 { get; } = new DoorData(new TransitionKey("Dust_Maze_08", "top1")); public static DoorData Dust_Maze_08_completed__right1 { get; } = new DoorData(new TransitionKey("Dust_Maze_08_completed", "right1"), new TransitionKey("Dust_05", "left1"), null) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility) }) }; public static DoorData Dust_Maze_08_completed__right2 { get; } = new DoorData(new TransitionKey("Dust_Maze_08_completed", "right2"), new TransitionKey("Dust_09", "left2"), null); public static DoorData Dust_Maze_09_entrance__left1 { get; } = new DoorData(new TransitionKey("Dust_Maze_09_entrance", "left1")); public static DoorData Dust_Maze_09_entrance__right1 { get; } = new DoorData(new TransitionKey("Dust_Maze_09_entrance", "right1")); public static DoorData Dust_Maze_crossing__left1 { get; } = new DoorData(new TransitionKey("Dust_Maze_crossing", "left1")); public static DoorData Dust_Maze_crossing__right1 { get; } = new DoorData(new TransitionKey("Dust_Maze_crossing", "right1")); public static DoorData Dust_Maze_Last_Hall__left1 { get; } = new DoorData(new TransitionKey("Dust_Maze_Last_Hall", "left1")); public static DoorData Dust_Maze_Last_Hall__right1 { get; } = new DoorData(new TransitionKey("Dust_Maze_Last_Hall", "right1")); public static DoorData Dust_Shack__left1 { get; } = new DoorData(new TransitionKey("Dust_Shack", "left1"), new TransitionKey("Dust_04", "door1")); public static DoorData Greymoor_01__bot1 { get; } = new DoorData(new TransitionKey("Greymoor_01", "bot1"), new TransitionKey("Bone_East_11", "top1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Floor Control Scene/Floor Unbroken", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsExitAccess, new PlayerDataBoolSaveInfo("crashedIntoGreymoor")), new GameObjectActiveObstacleInfo("Floor Control Scene/Floor Broken", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Greymoor_01__left1 { get; } = new DoorData(new TransitionKey("Greymoor_01", "left1"), new TransitionKey("Greymoor_12", "right1")); public static DoorData Greymoor_01__left2 { get; } = new DoorData(new TransitionKey("Greymoor_01", "left2"), new TransitionKey("Greymoor_13", "right1")); public static DoorData Greymoor_01__right1 { get; } = new DoorData(new TransitionKey("Greymoor_01", "right1"), new TransitionKey("Greymoor_02", "left1")); public static DoorData Greymoor_01__right2 { get; } = new DoorData(new TransitionKey("Greymoor_01", "right2"), new TransitionKey("Bellshrine_02", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Bellshrine gate", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess, new PlayerDataBoolSaveInfo("bellShrineGreymoor")) }) }; public static DoorData Greymoor_01__right3 { get; } = new DoorData(new TransitionKey("Greymoor_01", "right3"), new TransitionKey("Greymoor_02", "left3")); public static DoorData Greymoor_02__left1 { get; } = new DoorData(new TransitionKey("Greymoor_02", "left1"), new TransitionKey("Greymoor_01", "right1")); public static DoorData Greymoor_02__left2 { get; } = new DoorData(new TransitionKey("Greymoor_02", "left2"), new TransitionKey("Bellshrine_02", "right1")); public static DoorData Greymoor_02__left3 { get; } = new DoorData(new TransitionKey("Greymoor_02", "left3"), new TransitionKey("Greymoor_01", "right3")); public static DoorData Greymoor_02__right1 { get; } = new DoorData(new TransitionKey("Greymoor_02", "right1"), new TransitionKey("Greymoor_15", "left1")); public static DoorData Greymoor_02__right2 { get; } = new DoorData(new TransitionKey("Greymoor_02", "right2"), new TransitionKey("Greymoor_17", "left1")) { Obstacles = new ReadOnlyCollection(new List(3) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks"), new ObstacleInfo("Camera Locks", ObstacleType.Mask, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Greymoor_02__right3 { get; } = new DoorData(new TransitionKey("Greymoor_02", "right3"), new TransitionKey("Greymoor_15", "left3")); public static DoorData Greymoor_03__left1 { get; } = new DoorData(new TransitionKey("Greymoor_03", "left1"), new TransitionKey("Greymoor_04", "right1")); public static DoorData Greymoor_03__left2 { get; } = new DoorData(new TransitionKey("Greymoor_03", "left2"), new TransitionKey("Greymoor_04", "right2")); public static DoorData Greymoor_03__left3 { get; } = new DoorData(new TransitionKey("Greymoor_03", "left3"), new TransitionKey("Halfway_01", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Grey Door", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo("Halfway_01", "Hornet_pressure_plate_small_persistent")) }) }; public static DoorData Greymoor_03__right1 { get; } = new DoorData(new TransitionKey("Greymoor_03", "right1"), new TransitionKey("Dust_01", "left1")); public static DoorData Greymoor_03__right2 { get; } = new DoorData(new TransitionKey("Greymoor_03", "right2"), new TransitionKey("Greymoor_12", "left1")); public static DoorData Greymoor_03__right3 { get; } = new DoorData(new TransitionKey("Greymoor_03", "right3"), new TransitionKey("Greymoor_13", "left1")); public static DoorData Greymoor_03__right4 { get; } = new DoorData(new TransitionKey("Greymoor_03", "right4"), new TransitionKey("Halfway_01", "left1")); public static DoorData Greymoor_03__right5 { get; } = new DoorData(new TransitionKey("Greymoor_03", "right5"), new TransitionKey("Greymoor_24", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks") }) }; public static DoorData Greymoor_04__left1 { get; } = new DoorData(new TransitionKey("Greymoor_04", "left1"), new TransitionKey("Greymoor_11", "right1")); public static DoorData Greymoor_04__left2 { get; } = new DoorData(new TransitionKey("Greymoor_04", "left2"), new TransitionKey("Greymoor_10", "right1")); public static DoorData Greymoor_04__left3 { get; } = new DoorData(new TransitionKey("Greymoor_04", "left3"), new TransitionKey("Greymoor_05", "right1")); public static DoorData Greymoor_04__right1 { get; } = new DoorData(new TransitionKey("Greymoor_04", "right1"), new TransitionKey("Greymoor_03", "left1")); public static DoorData Greymoor_04__right2 { get; } = new DoorData(new TransitionKey("Greymoor_04", "right2"), new TransitionKey("Greymoor_03", "left2")); public static DoorData Greymoor_05__left1 { get; } = new DoorData(new TransitionKey("Greymoor_05", "left1"), new TransitionKey("Greymoor_06", "right3")); public static DoorData Greymoor_05__left2 { get; } = new DoorData(new TransitionKey("Greymoor_05", "left2"), new TransitionKey("Greymoor_06", "right4")); public static DoorData Greymoor_05__right1 { get; } = new DoorData(new TransitionKey("Greymoor_05", "right1"), new TransitionKey("Greymoor_04", "left3")); public static DoorData Greymoor_05__right2 { get; } = new DoorData(new TransitionKey("Greymoor_05", "right2"), new TransitionKey("Bellway_04", "left1")); public static DoorData Greymoor_06__left1 { get; } = new DoorData(new TransitionKey("Greymoor_06", "left1"), new TransitionKey("Wisp_03", "right1")); public static DoorData Greymoor_06__left2 { get; } = new DoorData(new TransitionKey("Greymoor_06", "left2"), new TransitionKey("Greymoor_07", "right1")); public static DoorData Greymoor_06__left3 { get; } = new DoorData(new TransitionKey("Greymoor_06", "left3"), new TransitionKey("Greymoor_07", "right2")); public static DoorData Greymoor_06__right1 { get; } = new DoorData(new TransitionKey("Greymoor_06", "right1"), new TransitionKey("Greymoor_11", "left1")); public static DoorData Greymoor_06__right2 { get; } = new DoorData(new TransitionKey("Greymoor_06", "right2"), new TransitionKey("Greymoor_10", "left1")); public static DoorData Greymoor_06__right3 { get; } = new DoorData(new TransitionKey("Greymoor_06", "right3"), new TransitionKey("Greymoor_05", "left1")); public static DoorData Greymoor_06__right4 { get; } = new DoorData(new TransitionKey("Greymoor_06", "right4"), new TransitionKey("Greymoor_05", "left2")); public static DoorData Greymoor_06__top1 { get; } = new DoorData(new TransitionKey("Greymoor_06", "top1"), new TransitionKey("Wisp_04", "bot1")); public static DoorData Greymoor_07__bot1 { get; } = new DoorData(new TransitionKey("Greymoor_07", "bot1"), new TransitionKey("Greymoor_08", "top1")); public static DoorData Greymoor_07__left1 { get; } = new DoorData(new TransitionKey("Greymoor_07", "left1"), new TransitionKey("Greymoor_20b", "right1")); public static DoorData Greymoor_07__right1 { get; } = new DoorData(new TransitionKey("Greymoor_07", "right1"), new TransitionKey("Greymoor_06", "left2")); public static DoorData Greymoor_07__right2 { get; } = new DoorData(new TransitionKey("Greymoor_07", "right2"), new TransitionKey("Greymoor_06", "left3")); public static DoorData Greymoor_08__door_caravanTravelEnd { get; } = new DoorData(new TransitionKey("Greymoor_08", "door_caravanTravelEnd")); public static DoorData Greymoor_08__door1 { get; } = new DoorData(new TransitionKey("Greymoor_08", "door1"), new TransitionKey("Room_Caravan_Interior", "right1")); public static DoorData Greymoor_08__door2 { get; } = new DoorData(new TransitionKey("Greymoor_08", "door2"), new TransitionKey("Room_Caravan_Spa", "left1"), null); public static DoorData Greymoor_08__left2 { get; } = new DoorData(new TransitionKey("Greymoor_08", "left2"), new TransitionKey("Belltown_06", "right1")); public static DoorData Greymoor_08__right1 { get; } = new DoorData(new TransitionKey("Greymoor_08", "right1"), new TransitionKey("Greymoor_16", "left1")); public static DoorData Greymoor_08__top1 { get; } = new DoorData(new TransitionKey("Greymoor_08", "top1"), new TransitionKey("Greymoor_07", "bot1")); public static DoorData Greymoor_10__left1 { get; } = new DoorData(new TransitionKey("Greymoor_10", "left1"), new TransitionKey("Greymoor_06", "right2")); public static DoorData Greymoor_10__right1 { get; } = new DoorData(new TransitionKey("Greymoor_10", "right1"), new TransitionKey("Greymoor_04", "left2")); public static DoorData Greymoor_11__left1 { get; } = new DoorData(new TransitionKey("Greymoor_11", "left1"), new TransitionKey("Greymoor_06", "right1")); public static DoorData Greymoor_11__right1 { get; } = new DoorData(new TransitionKey("Greymoor_11", "right1"), new TransitionKey("Greymoor_04", "left1")); public static DoorData Greymoor_12__left1 { get; } = new DoorData(new TransitionKey("Greymoor_12", "left1"), new TransitionKey("Greymoor_03", "right2")); public static DoorData Greymoor_12__right1 { get; } = new DoorData(new TransitionKey("Greymoor_12", "right1"), new TransitionKey("Greymoor_01", "left1")); public static DoorData Greymoor_13__bot1 { get; } = new DoorData(new TransitionKey("Greymoor_13", "bot1"), new TransitionKey("Greymoor_21", "top1")); public static DoorData Greymoor_13__left1 { get; } = new DoorData(new TransitionKey("Greymoor_13", "left1"), new TransitionKey("Greymoor_03", "right3")); public static DoorData Greymoor_13__right1 { get; } = new DoorData(new TransitionKey("Greymoor_13", "right1"), new TransitionKey("Greymoor_01", "left2")); public static DoorData Greymoor_15__left1 { get; } = new DoorData(new TransitionKey("Greymoor_15", "left1"), new TransitionKey("Greymoor_02", "right1")); public static DoorData Greymoor_15__left3 { get; } = new DoorData(new TransitionKey("Greymoor_15", "left3"), new TransitionKey("Greymoor_02", "right3")); public static DoorData Greymoor_15__right2 { get; } = new DoorData(new TransitionKey("Greymoor_15", "right2"), new TransitionKey("Greymoor_15b", "left2")); public static DoorData Greymoor_15__right3 { get; } = new DoorData(new TransitionKey("Greymoor_15", "right3"), new TransitionKey("Greymoor_15b", "left3")); public static DoorData Greymoor_15b__door1 { get; } = new DoorData(new TransitionKey("Greymoor_15b", "door1"), new TransitionKey("Room_CrowCourt", "left1")); public static DoorData Greymoor_15b__left2 { get; } = new DoorData(new TransitionKey("Greymoor_15b", "left2"), new TransitionKey("Greymoor_15", "right2")); public static DoorData Greymoor_15b__left3 { get; } = new DoorData(new TransitionKey("Greymoor_15b", "left3"), new TransitionKey("Greymoor_15", "right3")); public static DoorData Greymoor_15b__right1 { get; } = new DoorData(new TransitionKey("Greymoor_15b", "right1"), new TransitionKey("Clover_01", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Clover Entry Gate (1)", ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataIntSaveInfo("GreenPrinceLocation", 3)) }) }; public static DoorData Greymoor_15b__top1 { get; } = new DoorData(new TransitionKey("Greymoor_15b", "top1"), new TransitionKey("Greymoor_22", "bot1")); public static DoorData Greymoor_16__left1 { get; } = new DoorData(new TransitionKey("Greymoor_16", "left1"), new TransitionKey("Greymoor_08", "right1")); public static DoorData Greymoor_16__top1 { get; } = new DoorData(new TransitionKey("Greymoor_16", "top1"), new TransitionKey("Bellway_04", "bot1")); public static DoorData Greymoor_17__left1 { get; } = new DoorData(new TransitionKey("Greymoor_17", "left1"), new TransitionKey("Greymoor_02", "right2")); public static DoorData Greymoor_17__top1 { get; } = new DoorData(new TransitionKey("Greymoor_17", "top1"), new TransitionKey("Dust_11", "bot1")); public static DoorData Greymoor_20b__door1 { get; } = new DoorData(new TransitionKey("Greymoor_20b", "door1"), new TransitionKey("Greymoor_20c", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new BehaviourObstacleInfo("Chapel Door Control", Enable: false, ObstacleType.ClosedAfterProgression, ObstacleSeverity.ModifiesSaveData | ObstacleSeverity.LimitsExitAccess), new TransitionObstacleInfo("Chapel Door Control/door1", Enabled: true, ObstacleType.ClosedAfterProgression, ObstacleSeverity.LimitsExitAccess) }) }; public static DoorData Greymoor_20b__right1 { get; } = new DoorData(new TransitionKey("Greymoor_20b", "right1"), new TransitionKey("Greymoor_07", "left1")); public static DoorData Greymoor_20c__door_memoryEnd { get; } = new DoorData(new TransitionKey("Greymoor_20c", "door_memoryEnd")); public static DoorData Greymoor_20c__left1 { get; } = new DoorData(new TransitionKey("Greymoor_20c", "left1"), new TransitionKey("Greymoor_20b", "door1")); public static DoorData Greymoor_21__top1 { get; } = new DoorData(new TransitionKey("Greymoor_21", "top1"), new TransitionKey("Greymoor_13", "bot1")); public static DoorData Greymoor_22__bot1 { get; } = new DoorData(new TransitionKey("Greymoor_22", "bot1"), new TransitionKey("Greymoor_15b", "top1")); public static DoorData Greymoor_24__left1 { get; } = new DoorData(new TransitionKey("Greymoor_24", "left1"), new TransitionKey("Greymoor_03", "right5")); public static DoorData Halfway_01__bot1 { get; } = new DoorData(new TransitionKey("Halfway_01", "bot1"), new TransitionKey("Ant_08", "top1")); public static DoorData Halfway_01__left1 { get; } = new DoorData(new TransitionKey("Halfway_01", "left1"), new TransitionKey("Greymoor_03", "right4")); public static DoorData Halfway_01__right1 { get; } = new DoorData(new TransitionKey("Halfway_01", "right1"), new TransitionKey("Greymoor_03", "left3")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Grey Door Container", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo(null, "Hornet_pressure_plate_small_persistent")) }) }; public static DoorData Hang_01__right1 { get; } = new DoorData(new TransitionKey("Hang_01", "right1"), new TransitionKey("Hang_02", "left1")); public static DoorData Hang_01__right2 { get; } = new DoorData(new TransitionKey("Hang_01", "right2"), new TransitionKey("Song_17", "left1")); public static DoorData Hang_02__left1 { get; } = new DoorData(new TransitionKey("Hang_02", "left1"), new TransitionKey("Hang_01", "right1")); public static DoorData Hang_02__right1 { get; } = new DoorData(new TransitionKey("Hang_02", "right1"), new TransitionKey("Hang_03", "left1")); public static DoorData Hang_03__left1 { get; } = new DoorData(new TransitionKey("Hang_03", "left1"), new TransitionKey("Hang_02", "right1")); public static DoorData Hang_03__left2 { get; } = new DoorData(new TransitionKey("Hang_03", "left2"), new TransitionKey("Hang_15", "right1")); public static DoorData Hang_03__right1 { get; } = new DoorData(new TransitionKey("Hang_03", "right1"), new TransitionKey("Hang_13", "left1")); public static DoorData Hang_03__right2 { get; } = new DoorData(new TransitionKey("Hang_03", "right2"), new TransitionKey("Hang_10", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("sauna_grate", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("hang_10_oneWay")) }) }; public static DoorData Hang_03__top1 { get; } = new DoorData(new TransitionKey("Hang_03", "top1"), new TransitionKey("Hang_03_top", "bot1")); public static DoorData Hang_03_top__bot1 { get; } = new DoorData(new TransitionKey("Hang_03_top", "bot1"), new TransitionKey("Hang_03", "top1")); public static DoorData Hang_04__left1 { get; } = new DoorData(new TransitionKey("Hang_04", "left1"), new TransitionKey("Hang_12", "right1")); public static DoorData Hang_04__right1 { get; } = new DoorData(new TransitionKey("Hang_04", "right1"), new TransitionKey("Hang_06", "left1")); public static DoorData Hang_06__bot1 { get; } = new DoorData(new TransitionKey("Hang_06", "bot1"), new TransitionKey("Hang_07", "top1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Bot Blocker", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.AbnormalVisual, new PersistentBoolSaveInfo()) }) }; public static DoorData Hang_06__door1 { get; } = new DoorData(new TransitionKey("Hang_06", "door1"), new TransitionKey("Hang_06_bank", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new BehaviourObstacleInfo("door1", Enable: true, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsExitAccess), new ObstacleInfo("bank_door", ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Hang_06__left1 { get; } = new DoorData(new TransitionKey("Hang_06", "left1"), new TransitionKey("Hang_04", "right1")); public static DoorData Hang_06__right1 { get; } = new DoorData(new TransitionKey("Hang_06", "right1"), new TransitionKey("Hang_06b", "left1")); public static DoorData Hang_06__top1 { get; } = new DoorData(new TransitionKey("Hang_06", "top1"), new TransitionKey("Hang_08", "bot1")); public static DoorData Hang_06_bank__left1 { get; } = new DoorData(new TransitionKey("Hang_06_bank", "left1"), new TransitionKey("Hang_06", "door1")); public static DoorData Hang_06b__door_tubeEnter { get; } = new DoorData(new TransitionKey("Hang_06b", "door_tubeEnter")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("new_scene/City Travel Tube/tube_toll_machine", ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Hang_06b__left1 { get; } = new DoorData(new TransitionKey("Hang_06b", "left1"), new TransitionKey("Hang_06", "right1")); public static DoorData Hang_07__bot1 { get; } = new DoorData(new TransitionKey("Hang_07", "bot1"), new TransitionKey("Song_09", "top1")); public static DoorData Hang_07__left1 { get; } = new DoorData(new TransitionKey("Hang_07", "left1"), new TransitionKey("Song_11", "right2")) { Obstacles = new ReadOnlyCollection(new List(3) { new BehaviourObstacleInfo("shortcut_states", Enable: false, ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("song_11_oneway")), new GameObjectActiveObstacleInfo("shortcut_states/closed", Active: false, ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility), new GameObjectActiveObstacleInfo("shortcut_states/open", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Hang_07__right1 { get; } = new DoorData(new TransitionKey("Hang_07", "right1"), new TransitionKey("Cog_Dancers", "left1")); public static DoorData Hang_07__top1 { get; } = new DoorData(new TransitionKey("Hang_07", "top1"), new TransitionKey("Hang_06", "bot1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Song Knight Quest Parent/Blocker", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo("Hang_06", "Bot Blocker")) }) }; public static DoorData Hang_08__bot1 { get; } = new DoorData(new TransitionKey("Hang_08", "bot1"), new TransitionKey("Hang_06", "top1")); public static DoorData Hang_08__left1 { get; } = new DoorData(new TransitionKey("Hang_08", "left1"), new TransitionKey("Hang_13", "right1")); public static DoorData Hang_08__left2 { get; } = new DoorData(new TransitionKey("Hang_08", "left2"), new TransitionKey("Hang_09", "right1")); public static DoorData Hang_08__left3 { get; } = new DoorData(new TransitionKey("Hang_08", "left3"), new TransitionKey("Hang_10", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo()) }) }; public static DoorData Hang_08__left4 { get; } = new DoorData(new TransitionKey("Hang_08", "left4"), new TransitionKey("Hang_16", "right1")); public static DoorData Hang_08__right1 { get; } = new DoorData(new TransitionKey("Hang_08", "right1"), new TransitionKey("Hang_17b", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new TestObjObstacleInfo("Song_Knight_Wall", Activate: true, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility) }) }; public static DoorData Hang_09__right1 { get; } = new DoorData(new TransitionKey("Hang_09", "right1"), new TransitionKey("Hang_08", "left2")); public static DoorData Hang_10__left1 { get; } = new DoorData(new TransitionKey("Hang_10", "left1"), new TransitionKey("Hang_03", "right2")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Breakable Wall (1)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks") }) }; public static DoorData Hang_10__right1 { get; } = new DoorData(new TransitionKey("Hang_10", "right1"), new TransitionKey("Hang_08", "left3")); public static DoorData Hang_12__right1 { get; } = new DoorData(new TransitionKey("Hang_12", "right1"), new TransitionKey("Hang_04", "left1")); public static DoorData Hang_13__left1 { get; } = new DoorData(new TransitionKey("Hang_13", "left1"), new TransitionKey("Hang_03", "right1")); public static DoorData Hang_13__right1 { get; } = new DoorData(new TransitionKey("Hang_13", "right1"), new TransitionKey("Hang_08", "left1")); public static DoorData Hang_14__left1 { get; } = new DoorData(new TransitionKey("Hang_14", "left1"), new TransitionKey("Hang_16", "door1")); public static DoorData Hang_15__right1 { get; } = new DoorData(new TransitionKey("Hang_15", "right1"), new TransitionKey("Hang_03", "left2")); public static DoorData Hang_16__door1 { get; } = new DoorData(new TransitionKey("Hang_16", "door1"), new TransitionKey("Hang_14", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Black Thread States Thread Only Variant/Black Thread World/Roof Collider_Basic", ObstacleType.ClosedAfterProgression, ObstacleSeverity.LimitsRoomAccess), new ObstacleInfo("Black Thread States Thread Only Variant/Black Thread World/city_collapse_chunk_generic", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility) }) }; public static DoorData Hang_16__right1 { get; } = new DoorData(new TransitionKey("Hang_16", "right1"), new TransitionKey("Hang_08", "left4")); public static DoorData Hang_17b__left1 { get; } = new DoorData(new TransitionKey("Hang_17b", "left1"), new TransitionKey("Hang_08", "right1")); public static DoorData Last_Dive__door_cutscenePosition { get; } = new DoorData(new TransitionKey("Last_Dive", "door_cutscenePosition")); public static DoorData Last_Dive_Return__door_cutscenePosition { get; } = new DoorData(new TransitionKey("Last_Dive_Return", "door_cutscenePosition")); public static DoorData Library_01__left1 { get; } = new DoorData(new TransitionKey("Library_01", "left1"), new TransitionKey("Library_02", "right1")); public static DoorData Library_01__left2 { get; } = new DoorData(new TransitionKey("Library_01", "left2"), new TransitionKey("Library_03", "right1")); public static DoorData Library_01__left3 { get; } = new DoorData(new TransitionKey("Library_01", "left3"), new TransitionKey("Library_15", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Black Thread States/Normal World/Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Library_01__right1 { get; } = new DoorData(new TransitionKey("Library_01", "right1"), new TransitionKey("Library_04", "left1")); public static DoorData Library_01__right2 { get; } = new DoorData(new TransitionKey("Library_01", "right2"), new TransitionKey("Library_04", "left2")); public static DoorData Library_02__left1 { get; } = new DoorData(new TransitionKey("Library_02", "left1"), new TransitionKey("Song_20b", "right3")); public static DoorData Library_02__left2 { get; } = new DoorData(new TransitionKey("Library_02", "left2"), new TransitionKey("Song_20b", "right2")); public static DoorData Library_02__right1 { get; } = new DoorData(new TransitionKey("Library_02", "right1"), new TransitionKey("Library_01", "left1")); public static DoorData Library_02__right2 { get; } = new DoorData(new TransitionKey("Library_02", "right2"), new TransitionKey("Song_Enclave", "left2")); public static DoorData Library_03__left1 { get; } = new DoorData(new TransitionKey("Library_03", "left1"), new TransitionKey("Song_20", "right4")); public static DoorData Library_03__right1 { get; } = new DoorData(new TransitionKey("Library_03", "right1"), new TransitionKey("Library_01", "left2")); public static DoorData Library_04__left1 { get; } = new DoorData(new TransitionKey("Library_04", "left1"), new TransitionKey("Library_01", "right1")); public static DoorData Library_04__left2 { get; } = new DoorData(new TransitionKey("Library_04", "left2"), new TransitionKey("Library_01", "right2")); public static DoorData Library_04__left3 { get; } = new DoorData(new TransitionKey("Library_04", "left3"), new TransitionKey("Library_13b", "right1")); public static DoorData Library_04__left4 { get; } = new DoorData(new TransitionKey("Library_04", "left4"), new TransitionKey("Library_16", "right1")); public static DoorData Library_04__right1 { get; } = new DoorData(new TransitionKey("Library_04", "right1"), new TransitionKey("Library_09", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("secret wall library slide/closed", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("libraryRoofShortcut")) }) }; public static DoorData Library_04__right2 { get; } = new DoorData(new TransitionKey("Library_04", "right2"), new TransitionKey("Library_08", "left1")); public static DoorData Library_04__right3 { get; } = new DoorData(new TransitionKey("Library_04", "right3"), new TransitionKey("Library_05", "left1")); public static DoorData Library_04__right4 { get; } = new DoorData(new TransitionKey("Library_04", "right4"), new TransitionKey("Library_05", "left2")); public static DoorData Library_04__right5 { get; } = new DoorData(new TransitionKey("Library_04", "right5"), new TransitionKey("Library_10", "left1")); public static DoorData Library_04__right6 { get; } = new DoorData(new TransitionKey("Library_04", "right6"), new TransitionKey("Library_14", "left1")); public static DoorData Library_04__top1 { get; } = new DoorData(new TransitionKey("Library_04", "top1"), new TransitionKey("Song_Enclave", "bot1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("shortcut/One Way Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.InterruptsEntry, new PersistentBoolSaveInfo(null, "Top Shortcut")), new GameObjectActiveObstacleInfo("shortcut/after_wall_glows", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Library_05__left1 { get; } = new DoorData(new TransitionKey("Library_05", "left1"), new TransitionKey("Library_04", "right3")); public static DoorData Library_05__left2 { get; } = new DoorData(new TransitionKey("Library_05", "left2"), new TransitionKey("Library_04", "right4")); public static DoorData Library_05__right1 { get; } = new DoorData(new TransitionKey("Library_05", "right1"), new TransitionKey("Library_06", "left1")); public static DoorData Library_05__right2 { get; } = new DoorData(new TransitionKey("Library_05", "right2"), new TransitionKey("Library_06", "left2")); public static DoorData Library_06__left1 { get; } = new DoorData(new TransitionKey("Library_06", "left1"), new TransitionKey("Library_05", "right1")); public static DoorData Library_06__left2 { get; } = new DoorData(new TransitionKey("Library_06", "left2"), new TransitionKey("Library_05", "right2")); public static DoorData Library_06__right1 { get; } = new DoorData(new TransitionKey("Library_06", "right1"), new TransitionKey("Library_07", "left2")); public static DoorData Library_07__bot1 { get; } = new DoorData(new TransitionKey("Library_07", "bot1"), new TransitionKey("Shadow_22", "top1")); public static DoorData Library_07__bot2 { get; } = new DoorData(new TransitionKey("Library_07", "bot2"), new TransitionKey("Shadow_22", "top2")); public static DoorData Library_07__bot3 { get; } = new DoorData(new TransitionKey("Library_07", "bot3"), new TransitionKey("Shadow_22", "top3")); public static DoorData Library_07__left1 { get; } = new DoorData(new TransitionKey("Library_07", "left1"), new TransitionKey("Library_08", "right1")); public static DoorData Library_07__left2 { get; } = new DoorData(new TransitionKey("Library_07", "left2"), new TransitionKey("Library_06", "right1")); public static DoorData Library_07__top1 { get; } = new DoorData(new TransitionKey("Library_07", "top1"), new TransitionKey("Library_09", "bot1")); public static DoorData Library_08__left1 { get; } = new DoorData(new TransitionKey("Library_08", "left1"), new TransitionKey("Library_04", "right2")); public static DoorData Library_08__right1 { get; } = new DoorData(new TransitionKey("Library_08", "right1"), new TransitionKey("Library_07", "left1")); public static DoorData Library_09__bot1 { get; } = new DoorData(new TransitionKey("Library_09", "bot1"), new TransitionKey("Library_07", "top1")); public static DoorData Library_09__left1 { get; } = new DoorData(new TransitionKey("Library_09", "left1"), new TransitionKey("Library_04", "right1")); public static DoorData Library_10__bot1 { get; } = new DoorData(new TransitionKey("Library_10", "bot1"), new TransitionKey("Library_12b", "top1")); public static DoorData Library_10__left1 { get; } = new DoorData(new TransitionKey("Library_10", "left1"), new TransitionKey("Library_04", "right5")); public static DoorData Library_11__left1 { get; } = new DoorData(new TransitionKey("Library_11", "left1"), new TransitionKey("Library_13", "right2")); public static DoorData Library_11__left2 { get; } = new DoorData(new TransitionKey("Library_11", "left2"), new TransitionKey("Bellway_City", "right1")); public static DoorData Library_11__left3 { get; } = new DoorData(new TransitionKey("Library_11", "left3"), new TransitionKey("Library_11b", "right1")) { Obstacles = new ReadOnlyCollection(new List(12) { new ObstacleInfo("Understore Big Plate Gate/terrain collider whole", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo(null, "Understore Big Plate Gate")), new ObstacleInfo("Understore Big Plate Gate/Lever", ObstacleType.Other, ObstacleSeverity.LimitsVisibility), new ObstacleInfo("Understore Big Plate Gate/Mid Joiner", ObstacleType.Other, ObstacleSeverity.LimitsVisibility), new ObstacleInfo("Understore Big Plate Gate/Back Strut Top F", ObstacleType.Other, ObstacleSeverity.AbnormalVisual), new ObstacleInfo("Understore Big Plate Gate/Back Strut Top B", ObstacleType.Other, ObstacleSeverity.AbnormalVisual), new ObstacleInfo("Understore Big Plate Gate/Plate Top 1", ObstacleType.Other, ObstacleSeverity.LimitsVisibility), new ObstacleInfo("Understore Big Plate Gate/Plate Bot 1", ObstacleType.Other, ObstacleSeverity.LimitsVisibility), new ObstacleInfo("Understore Big Plate Gate/Block Top", ObstacleType.Other, ObstacleSeverity.LimitsVisibility), new ObstacleInfo("Understore Big Plate Gate/Block Bot", ObstacleType.Other, ObstacleSeverity.LimitsVisibility), new ObstacleInfo("Understore Big Plate Gate/Back Plate Top 1", ObstacleType.Other, ObstacleSeverity.AbnormalVisual), new ObstacleInfo("Understore Big Plate Gate/Back Plate Bot 1", ObstacleType.Other, ObstacleSeverity.AbnormalVisual), new ObstacleInfo("Understore Big Plate Gate/Masks", ObstacleType.Other, ObstacleSeverity.LimitsVisibility) }) }; public static DoorData Library_11__right1 { get; } = new DoorData(new TransitionKey("Library_11", "right1"), new TransitionKey("Library_12", "left1")); public static DoorData Library_11__right2 { get; } = new DoorData(new TransitionKey("Library_11", "right2"), new TransitionKey("Library_12", "left2")); public static DoorData Library_11b__left3 { get; } = new DoorData(new TransitionKey("Library_11b", "left3"), new TransitionKey("Under_17", "right1")); public static DoorData Library_11b__right1 { get; } = new DoorData(new TransitionKey("Library_11b", "right1"), new TransitionKey("Library_11", "left3")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("door states (1)/Understore Big Plate Gate", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo("Library_11")) }) }; public static DoorData Library_12__door1 { get; } = new DoorData(new TransitionKey("Library_12", "door1"), new TransitionKey("Organ_01", "left3")); public static DoorData Library_12__left1 { get; } = new DoorData(new TransitionKey("Library_12", "left1"), new TransitionKey("Library_11", "right1")); public static DoorData Library_12__left2 { get; } = new DoorData(new TransitionKey("Library_12", "left2"), new TransitionKey("Library_11", "right2")); public static DoorData Library_12__right1 { get; } = new DoorData(new TransitionKey("Library_12", "right1"), new TransitionKey("Library_12b", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("breakable blocker struts", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo()) }) }; public static DoorData Library_12b__left1 { get; } = new DoorData(new TransitionKey("Library_12b", "left1"), new TransitionKey("Library_12", "right1")); public static DoorData Library_12b__top1 { get; } = new DoorData(new TransitionKey("Library_12b", "top1"), new TransitionKey("Library_10", "bot1")); public static DoorData Library_13__left1 { get; } = new DoorData(new TransitionKey("Library_13", "left1"), new TransitionKey("Song_20", "right5")); public static DoorData Library_13__right1 { get; } = new DoorData(new TransitionKey("Library_13", "right1"), new TransitionKey("Library_13b", "left1")); public static DoorData Library_13__right2 { get; } = new DoorData(new TransitionKey("Library_13", "right2"), new TransitionKey("Library_11", "left1")); public static DoorData Library_13b__left1 { get; } = new DoorData(new TransitionKey("Library_13b", "left1"), new TransitionKey("Library_13", "right1")); public static DoorData Library_13b__right1 { get; } = new DoorData(new TransitionKey("Library_13b", "right1"), new TransitionKey("Library_04", "left3")); public static DoorData Library_14__left1 { get; } = new DoorData(new TransitionKey("Library_14", "left1"), new TransitionKey("Library_04", "right6")); public static DoorData Library_15__right1 { get; } = new DoorData(new TransitionKey("Library_15", "right1"), new TransitionKey("Library_01", "left3")); public static DoorData Library_16__right1 { get; } = new DoorData(new TransitionKey("Library_16", "right1"), new TransitionKey("Library_04", "left4")); public static DoorData Memory_Ant_Queen__door_wakeInMemory { get; } = new DoorData(new TransitionKey("Memory_Ant_Queen", "door_wakeInMemory")); public static DoorData Memory_Coral_Tower__door_wakeInMemory { get; } = new DoorData(new TransitionKey("Memory_Coral_Tower", "door_wakeInMemory")); public static DoorData Memory_First_Sinner__door_wakeOnGround { get; } = new DoorData(new TransitionKey("Memory_First_Sinner", "door_wakeOnGround")); public static DoorData Memory_Needolin__door_wakeOnGround { get; } = new DoorData(new TransitionKey("Memory_Needolin", "door_wakeOnGround")); public static DoorData Memory_Needolin__left1 { get; } = new DoorData(new TransitionKey("Memory_Needolin", "left1"), new TransitionKey("Memory_Needolin", "right1")); public static DoorData Memory_Needolin__right1 { get; } = new DoorData(new TransitionKey("Memory_Needolin", "right1"), new TransitionKey("Memory_Needolin", "left1")); public static DoorData Memory_Red__door_enterRedMemory_Beast { get; } = new DoorData(new TransitionKey("Memory_Red", "door_enterRedMemory Beast"), new TransitionKey("Memory_Red", "door_wakeInRedMemory Beast"), null) { Obstacles = new ReadOnlyCollection(new List(1) { new GameObjectActiveObstacleInfo("Scenery Groups/Deepnest Scenery", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Memory_Red__door_enterRedMemory_Hive { get; } = new DoorData(new TransitionKey("Memory_Red", "door_enterRedMemory Hive"), new TransitionKey("Memory_Red", "door_wakeInRedMemory Hive"), null) { Obstacles = new ReadOnlyCollection(new List(1) { new GameObjectActiveObstacleInfo("Scenery Groups/Hive Scenery", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Memory_Red__door_enterRedMemory_Weaver { get; } = new DoorData(new TransitionKey("Memory_Red", "door_enterRedMemory Weaver"), new TransitionKey("Memory_Red", "door_wakeInRedMemory Weaver"), null) { Obstacles = new ReadOnlyCollection(new List(1) { new GameObjectActiveObstacleInfo("Scenery Groups/Entry Scenery", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Memory_Red__door_wakeInMemory { get; } = new DoorData(new TransitionKey("Memory_Red", "door_wakeInMemory")); public static DoorData Memory_Red__door_wakeInRedMemory_Beast { get; } = new DoorData(new TransitionKey("Memory_Red", "door_wakeInRedMemory Beast"), null, new TransitionKey("Memory_Red", "door_enterRedMemory Beast")); public static DoorData Memory_Red__door_wakeInRedMemory_Hive { get; } = new DoorData(new TransitionKey("Memory_Red", "door_wakeInRedMemory Hive"), null, new TransitionKey("Memory_Red", "door_enterRedMemory Hive")); public static DoorData Memory_Red__door_wakeInRedMemory_Root { get; } = new DoorData(new TransitionKey("Memory_Red", "door_wakeInRedMemory Root")); public static DoorData Memory_Red__door_wakeInRedMemory_Weaver { get; } = new DoorData(new TransitionKey("Memory_Red", "door_wakeInRedMemory Weaver"), null, new TransitionKey("Memory_Red", "door_enterRedMemory Weaver")); public static DoorData Memory_Red__top1 { get; } = new DoorData(new TransitionKey("Memory_Red", "top1")); public static DoorData Memory_Silk_Heart_BellBeast__door_wakeOnGround { get; } = new DoorData(new TransitionKey("Memory_Silk_Heart_BellBeast", "door_wakeOnGround")); public static DoorData Memory_Silk_Heart_LaceTower__door_wakeOnGround { get; } = new DoorData(new TransitionKey("Memory_Silk_Heart_LaceTower", "door_wakeOnGround")); public static DoorData Memory_Silk_Heart_WardBoss__door_wakeOnGround { get; } = new DoorData(new TransitionKey("Memory_Silk_Heart_WardBoss", "door_wakeOnGround")); public static DoorData Mosstown_01__bot1 { get; } = new DoorData(new TransitionKey("Mosstown_01", "bot1"), new TransitionKey("Bone_11", "top1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Bone Trapdoor Slide", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsExitAccess, new PlayerDataBoolSaveInfo("mosstown01_shortcut")) }) }; public static DoorData Mosstown_01__right1 { get; } = new DoorData(new TransitionKey("Mosstown_01", "right1"), new TransitionKey("Bone_05", "left1")); public static DoorData Mosstown_01__right2 { get; } = new DoorData(new TransitionKey("Mosstown_01", "right2"), new TransitionKey("Bone_05b", "left1")); public static DoorData Mosstown_01__top1 { get; } = new DoorData(new TransitionKey("Mosstown_01", "top1"), new TransitionKey("Mosstown_02", "bot1")); public static DoorData Mosstown_02__bot1 { get; } = new DoorData(new TransitionKey("Mosstown_02", "bot1"), new TransitionKey("Mosstown_01", "top1")); public static DoorData Mosstown_02__bot2 { get; } = new DoorData(new TransitionKey("Mosstown_02", "bot2"), new TransitionKey("Bone_05b", "top1")); public static DoorData Mosstown_02__left1 { get; } = new DoorData(new TransitionKey("Mosstown_02", "left1"), new TransitionKey("Aspid_01", "right3")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks") }) }; public static DoorData Mosstown_02__right1 { get; } = new DoorData(new TransitionKey("Mosstown_02", "right1"), new TransitionKey("Mosstown_02c", "left2")); public static DoorData Mosstown_02c__left2 { get; } = new DoorData(new TransitionKey("Mosstown_02c", "left2"), new TransitionKey("Mosstown_02", "right1")); public static DoorData Mosstown_03__right1 { get; } = new DoorData(new TransitionKey("Mosstown_03", "right1"), new TransitionKey("Bone_06", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("explode_wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("explodeWallMosstown3")) }) }; public static DoorData Mosstown_03__right2 { get; } = new DoorData(new TransitionKey("Mosstown_03", "right2"), new TransitionKey("Shellwood_25", "left1")); public static DoorData Mosstown_03__top1 { get; } = new DoorData(new TransitionKey("Mosstown_03", "top1"), new TransitionKey("Shellwood_03", "bot1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Shellwood Twig Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.InterruptsEntry, new PersistentBoolSaveInfo()) }) }; public static DoorData Organ_01__left1 { get; } = new DoorData(new TransitionKey("Organ_01", "left1"), new TransitionKey("Dust_09", "door1")); public static DoorData Organ_01__left2 { get; } = new DoorData(new TransitionKey("Organ_01", "left2"), new TransitionKey("Dust_09", "door2")); public static DoorData Organ_01__left3 { get; } = new DoorData(new TransitionKey("Organ_01", "left3"), new TransitionKey("Library_12", "door1")); public static DoorData Peak_01__left1 { get; } = new DoorData(new TransitionKey("Peak_01", "left1"), new TransitionKey("Peak_02", "right4")); public static DoorData Peak_01__left2 { get; } = new DoorData(new TransitionKey("Peak_01", "left2"), new TransitionKey("Peak_02", "right1")); public static DoorData Peak_01__left3 { get; } = new DoorData(new TransitionKey("Peak_01", "left3"), new TransitionKey("Peak_02", "right2")); public static DoorData Peak_01__left4 { get; } = new DoorData(new TransitionKey("Peak_01", "left4"), new TransitionKey("Peak_02", "right3")); public static DoorData Peak_01__right1 { get; } = new DoorData(new TransitionKey("Peak_01", "right1"), new TransitionKey("Slab_16", "left1")); public static DoorData Peak_01__right2 { get; } = new DoorData(new TransitionKey("Peak_01", "right2"), new TransitionKey("Slab_15", "left1")); public static DoorData Peak_01__right3 { get; } = new DoorData(new TransitionKey("Peak_01", "right3"), new TransitionKey("Slab_13", "left1")); public static DoorData Peak_01__right4 { get; } = new DoorData(new TransitionKey("Peak_01", "right4"), new TransitionKey("Slab_06", "left1")); public static DoorData Peak_01__top1 { get; } = new DoorData(new TransitionKey("Peak_01", "top1"), new TransitionKey("Peak_07", "bot1")); public static DoorData Peak_01__top2 { get; } = new DoorData(new TransitionKey("Peak_01", "top2"), new TransitionKey("Peak_07", "bot2")); public static DoorData Peak_01__top3 { get; } = new DoorData(new TransitionKey("Peak_01", "top3"), new TransitionKey("Peak_07", "bot3"), new TransitionKey("Peak_07", "bot5")); public static DoorData Peak_01__top4 { get; } = new DoorData(new TransitionKey("Peak_01", "top4"), new TransitionKey("Peak_07", "bot3"), null); public static DoorData Peak_02__left1 { get; } = new DoorData(new TransitionKey("Peak_02", "left1"), new TransitionKey("Peak_04d", "right1")); public static DoorData Peak_02__left2 { get; } = new DoorData(new TransitionKey("Peak_02", "left2"), new TransitionKey("Peak_10", "right1")); public static DoorData Peak_02__left3 { get; } = new DoorData(new TransitionKey("Peak_02", "left3"), new TransitionKey("Peak_05e", "right1")); public static DoorData Peak_02__right1 { get; } = new DoorData(new TransitionKey("Peak_02", "right1"), new TransitionKey("Peak_01", "left2")); public static DoorData Peak_02__right2 { get; } = new DoorData(new TransitionKey("Peak_02", "right2"), new TransitionKey("Peak_01", "left3")); public static DoorData Peak_02__right3 { get; } = new DoorData(new TransitionKey("Peak_02", "right3"), new TransitionKey("Peak_01", "left4")); public static DoorData Peak_02__right4 { get; } = new DoorData(new TransitionKey("Peak_02", "right4"), new TransitionKey("Peak_01", "left1")); public static DoorData Peak_04__left1 { get; } = new DoorData(new TransitionKey("Peak_04", "left1"), new TransitionKey("Bellway_Peak", "right1")); public static DoorData Peak_04__right1 { get; } = new DoorData(new TransitionKey("Peak_04", "right1"), new TransitionKey("Peak_04d", "left1")); public static DoorData Peak_04c__right1 { get; } = new DoorData(new TransitionKey("Peak_04c", "right1"), new TransitionKey("Bellway_Peak", "left1")); public static DoorData Peak_04c__right2 { get; } = new DoorData(new TransitionKey("Peak_04c", "right2"), new TransitionKey("Bellway_Peak", "left2")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("One Way Wall Crystal", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Peak_04d__left1 { get; } = new DoorData(new TransitionKey("Peak_04d", "left1"), new TransitionKey("Peak_04", "right1")); public static DoorData Peak_04d__right1 { get; } = new DoorData(new TransitionKey("Peak_04d", "right1"), new TransitionKey("Peak_02", "left1")); public static DoorData Peak_05__bot1 { get; } = new DoorData(new TransitionKey("Peak_05", "bot1"), new TransitionKey("Bellway_Peak", "top1")); public static DoorData Peak_05__right3 { get; } = new DoorData(new TransitionKey("Peak_05", "right3"), new TransitionKey("Peak_05c", "left2")); public static DoorData Peak_05__top2 { get; } = new DoorData(new TransitionKey("Peak_05", "top2"), new TransitionKey("Peak_08", "bot1")); public static DoorData Peak_05c__left2 { get; } = new DoorData(new TransitionKey("Peak_05c", "left2"), new TransitionKey("Peak_05", "right3")); public static DoorData Peak_05c__right1 { get; } = new DoorData(new TransitionKey("Peak_05c", "right1"), new TransitionKey("Peak_05e", "left1")); public static DoorData Peak_05d__bot1 { get; } = new DoorData(new TransitionKey("Peak_05d", "bot1"), new TransitionKey("Peak_08", "top1")); public static DoorData Peak_05d__door1 { get; } = new DoorData(new TransitionKey("Peak_05d", "door1"), new TransitionKey("Peak_Mask_Maker", "right1")); public static DoorData Peak_05e__left1 { get; } = new DoorData(new TransitionKey("Peak_05e", "left1"), new TransitionKey("Peak_05c", "right1")); public static DoorData Peak_05e__right1 { get; } = new DoorData(new TransitionKey("Peak_05e", "right1"), new TransitionKey("Peak_02", "left3")); public static DoorData Peak_05e__right2 { get; } = new DoorData(new TransitionKey("Peak_05e", "right2"), new TransitionKey("Peak_06b", "left1")); public static DoorData Peak_06__left1 { get; } = new DoorData(new TransitionKey("Peak_06", "left1"), new TransitionKey("Peak_06b", "door1")); public static DoorData Peak_06b__door1 { get; } = new DoorData(new TransitionKey("Peak_06b", "door1"), new TransitionKey("Peak_06", "left1")); public static DoorData Peak_06b__left1 { get; } = new DoorData(new TransitionKey("Peak_06b", "left1"), new TransitionKey("Peak_05e", "right2")); public static DoorData Peak_07__bot1 { get; } = new DoorData(new TransitionKey("Peak_07", "bot1"), new TransitionKey("Peak_01", "top1")); public static DoorData Peak_07__bot3 { get; } = new DoorData(new TransitionKey("Peak_07", "bot3"), new TransitionKey("Peak_01", "top3"), new TransitionKey("Peak_01", "top4")); public static DoorData Peak_07__bot4 { get; } = new DoorData(new TransitionKey("Peak_07", "bot4"), new TransitionKey("Peak_01", "top3"), null); public static DoorData Peak_07__bot5 { get; } = new DoorData(new TransitionKey("Peak_07", "bot5"), new TransitionKey("Peak_01", "top3"), null); public static DoorData Peak_07__top1 { get; } = new DoorData(new TransitionKey("Peak_07", "top1"), new TransitionKey("Peak_08b", "bot4")); public static DoorData Peak_07__top2 { get; } = new DoorData(new TransitionKey("Peak_07", "top2"), new TransitionKey("Peak_08b", "bot5"), new TransitionKey("Peak_08b", "bot6")); public static DoorData Peak_08__bot1 { get; } = new DoorData(new TransitionKey("Peak_08", "bot1"), new TransitionKey("Peak_05", "top2")); public static DoorData Peak_08__right1 { get; } = new DoorData(new TransitionKey("Peak_08", "right1"), new TransitionKey("Peak_08b", "left1")); public static DoorData Peak_08__top1 { get; } = new DoorData(new TransitionKey("Peak_08", "top1"), new TransitionKey("Peak_05d", "bot1")); public static DoorData Peak_08b__bot4 { get; } = new DoorData(new TransitionKey("Peak_08b", "bot4"), new TransitionKey("Peak_07", "top1")); public static DoorData Peak_08b__bot5 { get; } = new DoorData(new TransitionKey("Peak_08b", "bot5"), new TransitionKey("Peak_07", "top2")); public static DoorData Peak_08b__bot6 { get; } = new DoorData(new TransitionKey("Peak_08b", "bot6"), new TransitionKey("Peak_07", "top2"), null); public static DoorData Peak_08b__left1 { get; } = new DoorData(new TransitionKey("Peak_08b", "left1"), new TransitionKey("Peak_08", "right1")); public static DoorData Peak_08b__left2 { get; } = new DoorData(new TransitionKey("Peak_08b", "left2"), new TransitionKey("Peak_12", "right1")); public static DoorData Peak_10__right1 { get; } = new DoorData(new TransitionKey("Peak_10", "right1"), new TransitionKey("Peak_02", "left2")); public static DoorData Peak_12__right1 { get; } = new DoorData(new TransitionKey("Peak_12", "right1"), new TransitionKey("Peak_08b", "left2")); public static DoorData Peak_Mask_Maker__right1 { get; } = new DoorData(new TransitionKey("Peak_Mask_Maker", "right1"), new TransitionKey("Peak_05d", "door1")); public static DoorData Room_Caravan_Interior__right1 { get; } = new DoorData(new TransitionKey("Room_Caravan_Interior", "right1"), new TransitionKey("Greymoor_08", "door1")); public static DoorData Room_Caravan_Spa__left1 { get; } = new DoorData(new TransitionKey("Room_Caravan_Spa", "left1")) { DynamicTargets = new ReadOnlyCollection(new List(4) { new TransitionKey("Bone_10", "door2"), new TransitionKey("Greymoor_08", "door2"), new TransitionKey("Coral_Judge_Arena", "door2"), new TransitionKey("Aqueduct_05", "door2") }) }; public static DoorData Room_CrowCourt__bot1 { get; } = new DoorData(new TransitionKey("Room_CrowCourt", "bot1"), new TransitionKey("Room_CrowCourt_02", "top1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("court_door", ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("OpenedCrowSummonsDoor")), new ObstacleInfo("Door Mask", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility) }) }; public static DoorData Room_CrowCourt__left1 { get; } = new DoorData(new TransitionKey("Room_CrowCourt", "left1"), new TransitionKey("Greymoor_15b", "door1")); public static DoorData Room_CrowCourt_02__top1 { get; } = new DoorData(new TransitionKey("Room_CrowCourt_02", "top1"), new TransitionKey("Room_CrowCourt", "bot1")); public static DoorData Room_Diving_Bell__door_cinematicEnd { get; } = new DoorData(new TransitionKey("Room_Diving_Bell", "door_cinematicEnd")); public static DoorData Room_Diving_Bell__left1 { get; } = new DoorData(new TransitionKey("Room_Diving_Bell", "left1"), new TransitionKey("Dock_12", "door1")); public static DoorData Room_Diving_Bell_Abyss__door_wakeOnGround { get; } = new DoorData(new TransitionKey("Room_Diving_Bell_Abyss", "door_wakeOnGround")); public static DoorData Room_Diving_Bell_Abyss__left1 { get; } = new DoorData(new TransitionKey("Room_Diving_Bell_Abyss", "left1"), new TransitionKey("Abyss_03", "door1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("diving_bell_door_breakable", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.AbnormalVisual, new PersistentBoolSaveInfo()) }) }; public static DoorData Room_Diving_Bell_Abyss_Fixed__door_cinematicEnd { get; } = new DoorData(new TransitionKey("Room_Diving_Bell_Abyss_Fixed", "door_cinematicEnd")); public static DoorData Room_Diving_Bell_Abyss_Fixed__left1 { get; } = new DoorData(new TransitionKey("Room_Diving_Bell_Abyss_Fixed", "left1"), new TransitionKey("Abyss_03", "door2")); public static DoorData Room_Forge__left1 { get; } = new DoorData(new TransitionKey("Room_Forge", "left1"), new TransitionKey("Dock_04", "right1")); public static DoorData Room_Forge__right1 { get; } = new DoorData(new TransitionKey("Room_Forge", "right1"), new TransitionKey("Dock_02", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("dock_sealed_gate/gate", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo("dock_sealed_gate")), new ObstacleInfo("dock_sealed_gate/song_knight_lock", ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Room_Forge__top1 { get; } = new DoorData(new TransitionKey("Room_Forge", "top1"), new TransitionKey("Bone_East_12", "bot1")); public static DoorData Room_Huntress__left1 { get; } = new DoorData(new TransitionKey("Room_Huntress", "left1"), new TransitionKey("Aqueduct_04", "door1")); public static DoorData Room_Pinstress__left1 { get; } = new DoorData(new TransitionKey("Room_Pinstress", "left1"), new TransitionKey("Coral_34", "door1")); public static DoorData Room_Witch__left1 { get; } = new DoorData(new TransitionKey("Room_Witch", "left1"), new TransitionKey("Shellwood_Witch", "door1")); public static DoorData Shadow_01__left1 { get; } = new DoorData(new TransitionKey("Shadow_01", "left1"), new TransitionKey("Shadow_15", "right1")); public static DoorData Shadow_01__left2 { get; } = new DoorData(new TransitionKey("Shadow_01", "left2"), new TransitionKey("Shadow_14", "right1")); public static DoorData Shadow_01__left3 { get; } = new DoorData(new TransitionKey("Shadow_01", "left3"), new TransitionKey("Shadow_15", "right2")); public static DoorData Shadow_01__right1 { get; } = new DoorData(new TransitionKey("Shadow_01", "right1"), new TransitionKey("Shadow_16", "left1")); public static DoorData Shadow_01__right2 { get; } = new DoorData(new TransitionKey("Shadow_01", "right2"), new TransitionKey("Shadow_26", "left1")); public static DoorData Shadow_01__right3 { get; } = new DoorData(new TransitionKey("Shadow_01", "right3"), new TransitionKey("Shadow_18", "left1")); public static DoorData Shadow_01__top1 { get; } = new DoorData(new TransitionKey("Shadow_01", "top1"), new TransitionKey("Aqueduct_04", "bot1")); public static DoorData Shadow_02__left1 { get; } = new DoorData(new TransitionKey("Shadow_02", "left1"), new TransitionKey("Shadow_14", "right2")); public static DoorData Shadow_02__left2 { get; } = new DoorData(new TransitionKey("Shadow_02", "left2"), new TransitionKey("Shadow_04b", "right1")); public static DoorData Shadow_02__right1 { get; } = new DoorData(new TransitionKey("Shadow_02", "right1"), new TransitionKey("Shadow_26", "left2")); public static DoorData Shadow_02__right2 { get; } = new DoorData(new TransitionKey("Shadow_02", "right2"), new TransitionKey("Shadow_03", "left1")); public static DoorData Shadow_02__right3 { get; } = new DoorData(new TransitionKey("Shadow_02", "right3"), new TransitionKey("Shadow_23", "left1")); public static DoorData Shadow_03__left1 { get; } = new DoorData(new TransitionKey("Shadow_03", "left1"), new TransitionKey("Shadow_02", "right2")); public static DoorData Shadow_03__right1 { get; } = new DoorData(new TransitionKey("Shadow_03", "right1"), new TransitionKey("Shadow_09", "left1")); public static DoorData Shadow_03__top1 { get; } = new DoorData(new TransitionKey("Shadow_03", "top1"), new TransitionKey("Shadow_21", "bot1")); public static DoorData Shadow_04__left1 { get; } = new DoorData(new TransitionKey("Shadow_04", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }), DynamicTargets = new ReadOnlyCollection(new List(2) { new TransitionKey("Dust_Maze_09_entrance", "right1"), new TransitionKey("Dust_09", "right1") }) }; public static DoorData Shadow_04__right1 { get; } = new DoorData(new TransitionKey("Shadow_04", "right1"), new TransitionKey("Shadow_04b", "left1")); public static DoorData Shadow_04__right2 { get; } = new DoorData(new TransitionKey("Shadow_04", "right2"), new TransitionKey("Bellway_Shadow", "left1")); public static DoorData Shadow_04__top1 { get; } = new DoorData(new TransitionKey("Shadow_04", "top1"), new TransitionKey("Shadow_20", "bot1")); public static DoorData Shadow_04b__left1 { get; } = new DoorData(new TransitionKey("Shadow_04b", "left1"), new TransitionKey("Shadow_04", "right1")); public static DoorData Shadow_04b__right1 { get; } = new DoorData(new TransitionKey("Shadow_04b", "right1"), new TransitionKey("Shadow_02", "left2")); public static DoorData Shadow_05__left1 { get; } = new DoorData(new TransitionKey("Shadow_05", "left1"), new TransitionKey("Dust_06", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Breakable Wall", ObstacleType.TwoWayBreakable, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Shadow_05__right1 { get; } = new DoorData(new TransitionKey("Shadow_05", "right1"), new TransitionKey("Shadow_09", "left2")); public static DoorData Shadow_08__left1 { get; } = new DoorData(new TransitionKey("Shadow_08", "left1"), new TransitionKey("Shadow_27", "right1")) { Obstacles = new ReadOnlyCollection(new List(3) { new UnmaskerInfo("Masks"), new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo()), new ObstacleInfo("Breakable Wall Swamp Shortcut", ObstacleType.Other, ObstacleSeverity.AbnormalVisual, new PersistentBoolSaveInfo(null, "BreakableWallSwampBenchShortcut")) }) }; public static DoorData Shadow_08__top1 { get; } = new DoorData(new TransitionKey("Shadow_08", "top1"), new TransitionKey("Shadow_10", "bot1")); public static DoorData Shadow_09__left1 { get; } = new DoorData(new TransitionKey("Shadow_09", "left1"), new TransitionKey("Shadow_03", "right1")); public static DoorData Shadow_09__left2 { get; } = new DoorData(new TransitionKey("Shadow_09", "left2"), new TransitionKey("Shadow_05", "right1")); public static DoorData Shadow_09__left3 { get; } = new DoorData(new TransitionKey("Shadow_09", "left3"), new TransitionKey("Shadow_28", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Shadow_09__right1 { get; } = new DoorData(new TransitionKey("Shadow_09", "right1"), new TransitionKey("Shadow_Weavehome", "left1")); public static DoorData Shadow_10__bot1 { get; } = new DoorData(new TransitionKey("Shadow_10", "bot1"), new TransitionKey("Shadow_08", "top1")) { Obstacles = new ReadOnlyCollection(new List(2) { new UnmaskerInfo("Masks"), new ObstacleInfo("Breakable Wall", ObstacleType.Other, ObstacleSeverity.AbnormalVisual, new PersistentBoolSaveInfo()) }) }; public static DoorData Shadow_10__left1 { get; } = new DoorData(new TransitionKey("Shadow_10", "left1"), new TransitionKey("Shadow_16", "right1")); public static DoorData Shadow_10__right1 { get; } = new DoorData(new TransitionKey("Shadow_10", "right1"), new TransitionKey("Shadow_19", "left2")); public static DoorData Shadow_11__left1 { get; } = new DoorData(new TransitionKey("Shadow_11", "left1"), new TransitionKey("Shadow_26", "right1")); public static DoorData Shadow_11__right1 { get; } = new DoorData(new TransitionKey("Shadow_11", "right1"), new TransitionKey("Shadow_13", "left1")); public static DoorData Shadow_12__left1 { get; } = new DoorData(new TransitionKey("Shadow_12", "left1"), new TransitionKey("Shadow_18", "right1")); public static DoorData Shadow_12__right1 { get; } = new DoorData(new TransitionKey("Shadow_12", "right1"), new TransitionKey("Shadow_19", "left1")); public static DoorData Shadow_13__left1 { get; } = new DoorData(new TransitionKey("Shadow_13", "left1"), new TransitionKey("Shadow_11", "right1")); public static DoorData Shadow_14__right1 { get; } = new DoorData(new TransitionKey("Shadow_14", "right1"), new TransitionKey("Shadow_01", "left2")); public static DoorData Shadow_14__right2 { get; } = new DoorData(new TransitionKey("Shadow_14", "right2"), new TransitionKey("Shadow_02", "left1")); public static DoorData Shadow_15__right1 { get; } = new DoorData(new TransitionKey("Shadow_15", "right1"), new TransitionKey("Shadow_01", "left1")); public static DoorData Shadow_15__right2 { get; } = new DoorData(new TransitionKey("Shadow_15", "right2"), new TransitionKey("Shadow_01", "left3")); public static DoorData Shadow_16__left1 { get; } = new DoorData(new TransitionKey("Shadow_16", "left1"), new TransitionKey("Shadow_01", "right1")); public static DoorData Shadow_16__right1 { get; } = new DoorData(new TransitionKey("Shadow_16", "right1"), new TransitionKey("Shadow_10", "left1")); public static DoorData Shadow_18__door1 { get; } = new DoorData(new TransitionKey("Shadow_18", "door1"), new TransitionKey("Shadow_Bilehaven_Room", "left1")); public static DoorData Shadow_18__left1 { get; } = new DoorData(new TransitionKey("Shadow_18", "left1"), new TransitionKey("Shadow_01", "right3")); public static DoorData Shadow_18__right1 { get; } = new DoorData(new TransitionKey("Shadow_18", "right1"), new TransitionKey("Shadow_12", "left1")); public static DoorData Shadow_19__left1 { get; } = new DoorData(new TransitionKey("Shadow_19", "left1"), new TransitionKey("Shadow_12", "right1")); public static DoorData Shadow_19__left2 { get; } = new DoorData(new TransitionKey("Shadow_19", "left2"), new TransitionKey("Shadow_10", "right1")); public static DoorData Shadow_19__right1 { get; } = new DoorData(new TransitionKey("Shadow_19", "right1"), new TransitionKey("Shadow_25", "left1")); public static DoorData Shadow_19__right2 { get; } = new DoorData(new TransitionKey("Shadow_19", "right2"), new TransitionKey("Shadow_24", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new TestObjObstacleInfo("Shakra Trail Quest Parent (1)", Activate: true, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility) }) }; public static DoorData Shadow_20__bot1 { get; } = new DoorData(new TransitionKey("Shadow_20", "bot1"), new TransitionKey("Shadow_04", "top1")); public static DoorData Shadow_20__top1 { get; } = new DoorData(new TransitionKey("Shadow_20", "top1"), new TransitionKey("Shadow_22", "bot1")); public static DoorData Shadow_21__bot1 { get; } = new DoorData(new TransitionKey("Shadow_21", "bot1"), new TransitionKey("Shadow_03", "top1")); public static DoorData Shadow_22__bot1 { get; } = new DoorData(new TransitionKey("Shadow_22", "bot1"), new TransitionKey("Shadow_20", "top1")); public static DoorData Shadow_22__top1 { get; } = new DoorData(new TransitionKey("Shadow_22", "top1"), new TransitionKey("Library_07", "bot1")); public static DoorData Shadow_22__top2 { get; } = new DoorData(new TransitionKey("Shadow_22", "top2"), new TransitionKey("Library_07", "bot2")); public static DoorData Shadow_22__top3 { get; } = new DoorData(new TransitionKey("Shadow_22", "top3"), new TransitionKey("Library_07", "bot3")); public static DoorData Shadow_23__left1 { get; } = new DoorData(new TransitionKey("Shadow_23", "left1"), new TransitionKey("Shadow_02", "right3")); public static DoorData Shadow_24__left1 { get; } = new DoorData(new TransitionKey("Shadow_24", "left1"), new TransitionKey("Shadow_19", "right2")); public static DoorData Shadow_25__left1 { get; } = new DoorData(new TransitionKey("Shadow_25", "left1"), new TransitionKey("Shadow_19", "right1")); public static DoorData Shadow_26__left1 { get; } = new DoorData(new TransitionKey("Shadow_26", "left1"), new TransitionKey("Shadow_01", "right2")); public static DoorData Shadow_26__left2 { get; } = new DoorData(new TransitionKey("Shadow_26", "left2"), new TransitionKey("Shadow_02", "right1")); public static DoorData Shadow_26__right1 { get; } = new DoorData(new TransitionKey("Shadow_26", "right1"), new TransitionKey("Shadow_11", "left1")); public static DoorData Shadow_26__right2 { get; } = new DoorData(new TransitionKey("Shadow_26", "right2"), new TransitionKey("Shadow_27", "left1")); public static DoorData Shadow_27__left1 { get; } = new DoorData(new TransitionKey("Shadow_27", "left1"), new TransitionKey("Shadow_26", "right2")); public static DoorData Shadow_27__right1 { get; } = new DoorData(new TransitionKey("Shadow_27", "right1"), new TransitionKey("Shadow_08", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("shortcut", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo("Shadow_08", "BreakableWallSwampBenchShortcut")) }) }; public static DoorData Shadow_28__right1 { get; } = new DoorData(new TransitionKey("Shadow_28", "right1"), new TransitionKey("Shadow_09", "left3")); public static DoorData Shadow_Bilehaven_Room__left1 { get; } = new DoorData(new TransitionKey("Shadow_Bilehaven_Room", "left1"), new TransitionKey("Shadow_18", "door1")); public static DoorData Shadow_Weavehome__left1 { get; } = new DoorData(new TransitionKey("Shadow_Weavehome", "left1"), new TransitionKey("Shadow_09", "right1")); public static DoorData Shellgrave__bot1 { get; } = new DoorData(new TransitionKey("Shellgrave", "bot1"), new TransitionKey("Shellwood_04b", "top2")); public static DoorData Shellwood_01__left1 { get; } = new DoorData(new TransitionKey("Shellwood_01", "left1"), new TransitionKey("Shellwood_01b", "right2")); public static DoorData Shellwood_01__left2 { get; } = new DoorData(new TransitionKey("Shellwood_01", "left2"), new TransitionKey("Shellwood_02", "right2")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("GameObject (3)/Shellwood_large_gates (1)/Gate Parent/Gate", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo("Shellwood_02", "Hornet_pressure_plate")) }) }; public static DoorData Shellwood_01__right1 { get; } = new DoorData(new TransitionKey("Shellwood_01", "right1"), new TransitionKey("Belltown_Room_shellwood", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Wasp Scene/Hive Scene/Shellwood Hive", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo()) }) }; public static DoorData Shellwood_01__right2 { get; } = new DoorData(new TransitionKey("Shellwood_01", "right2"), new TransitionKey("Belltown_07", "left1")); public static DoorData Shellwood_01b__left1 { get; } = new DoorData(new TransitionKey("Shellwood_01b", "left1"), new TransitionKey("Shellwood_20", "right1")); public static DoorData Shellwood_01b__left2 { get; } = new DoorData(new TransitionKey("Shellwood_01b", "left2"), new TransitionKey("Shellwood_02", "right1")); public static DoorData Shellwood_01b__right1 { get; } = new DoorData(new TransitionKey("Shellwood_01b", "right1"), new TransitionKey("Shellwood_13", "left2")); public static DoorData Shellwood_01b__right2 { get; } = new DoorData(new TransitionKey("Shellwood_01b", "right2"), new TransitionKey("Shellwood_01", "left1")); public static DoorData Shellwood_01b__right3 { get; } = new DoorData(new TransitionKey("Shellwood_01b", "right3"), new TransitionKey("Shellwood_15", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("wall_patch", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("shellwoodTwigShortcut")) }) }; public static DoorData Shellwood_02__left2 { get; } = new DoorData(new TransitionKey("Shellwood_02", "left2"), new TransitionKey("Shellwood_16", "right1")); public static DoorData Shellwood_02__left3 { get; } = new DoorData(new TransitionKey("Shellwood_02", "left3"), new TransitionKey("Shellwood_Witch", "right1")); public static DoorData Shellwood_02__right1 { get; } = new DoorData(new TransitionKey("Shellwood_02", "right1"), new TransitionKey("Shellwood_01b", "left2")); public static DoorData Shellwood_02__right2 { get; } = new DoorData(new TransitionKey("Shellwood_02", "right2"), new TransitionKey("Shellwood_01", "left2")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Shellwood_large_gates-EDITED (1)/Gate Parent", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo(null, "Hornet_pressure_plate")) }) }; public static DoorData Shellwood_03__bot1 { get; } = new DoorData(new TransitionKey("Shellwood_03", "bot1"), new TransitionKey("Mosstown_03", "top1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("One Way Wall", ObstacleType.OneWayBreakableExit, ObstacleSeverity.AbnormalVisual, new PersistentBoolSaveInfo(null, "Shellwood Twig Wall")) }) }; public static DoorData Shellwood_03__left1 { get; } = new DoorData(new TransitionKey("Shellwood_03", "left1"), new TransitionKey("Shellwood_19", "right1")); public static DoorData Shellwood_03__left3 { get; } = new DoorData(new TransitionKey("Shellwood_03", "left3"), new TransitionKey("Shellwood_04b", "right1")); public static DoorData Shellwood_03__right1 { get; } = new DoorData(new TransitionKey("Shellwood_03", "right1"), new TransitionKey("Shellwood_10", "left3")); public static DoorData Shellwood_03__right2 { get; } = new DoorData(new TransitionKey("Shellwood_03", "right2"), new TransitionKey("Shellwood_14", "left1")); public static DoorData Shellwood_03__right3 { get; } = new DoorData(new TransitionKey("Shellwood_03", "right3"), new TransitionKey("Shellwood_16", "left1")); public static DoorData Shellwood_04b__left1 { get; } = new DoorData(new TransitionKey("Shellwood_04b", "left1"), new TransitionKey("Shellwood_08c", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Shellwood Twig Wall (1)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Shellwood_04b__right1 { get; } = new DoorData(new TransitionKey("Shellwood_04b", "right1"), new TransitionKey("Shellwood_03", "left3")); public static DoorData Shellwood_04b__top1 { get; } = new DoorData(new TransitionKey("Shellwood_04b", "top1"), new TransitionKey("Shellwood_04c", "bot1")); public static DoorData Shellwood_04b__top2 { get; } = new DoorData(new TransitionKey("Shellwood_04b", "top2"), new TransitionKey("Shellgrave", "bot1")); public static DoorData Shellwood_04c__bot1 { get; } = new DoorData(new TransitionKey("Shellwood_04c", "bot1"), new TransitionKey("Shellwood_04b", "top1")); public static DoorData Shellwood_04c__top1 { get; } = new DoorData(new TransitionKey("Shellwood_04c", "top1"), new TransitionKey("Shellwood_08", "bot1")); public static DoorData Shellwood_08__bot1 { get; } = new DoorData(new TransitionKey("Shellwood_08", "bot1"), new TransitionKey("Shellwood_04c", "top1")); public static DoorData Shellwood_08__left1 { get; } = new DoorData(new TransitionKey("Shellwood_08", "left1"), new TransitionKey("Coral_19", "right1")); public static DoorData Shellwood_08__right1 { get; } = new DoorData(new TransitionKey("Shellwood_08", "right1"), new TransitionKey("Bellshrine_03", "left1")); public static DoorData Shellwood_08c__left1 { get; } = new DoorData(new TransitionKey("Shellwood_08c", "left1"), new TransitionKey("Aspid_01", "right2")); public static DoorData Shellwood_08c__right1 { get; } = new DoorData(new TransitionKey("Shellwood_08c", "right1"), new TransitionKey("Shellwood_04b", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Shellwood Twig Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Shellwood_10__left1 { get; } = new DoorData(new TransitionKey("Shellwood_10", "left1"), new TransitionKey("Shellwood_11", "right1")); public static DoorData Shellwood_10__left2 { get; } = new DoorData(new TransitionKey("Shellwood_10", "left2"), new TransitionKey("Shellwood_11", "right2")); public static DoorData Shellwood_10__left3 { get; } = new DoorData(new TransitionKey("Shellwood_10", "left3"), new TransitionKey("Shellwood_03", "right1")); public static DoorData Shellwood_10__right1 { get; } = new DoorData(new TransitionKey("Shellwood_10", "right1"), new TransitionKey("Shellwood_26", "left1")); public static DoorData Shellwood_10__right2 { get; } = new DoorData(new TransitionKey("Shellwood_10", "right2"), new TransitionKey("Shellwood_20", "left1")); public static DoorData Shellwood_10__right3 { get; } = new DoorData(new TransitionKey("Shellwood_10", "right3"), new TransitionKey("Shellwood_18", "left1")); public static DoorData Shellwood_11__right1 { get; } = new DoorData(new TransitionKey("Shellwood_11", "right1"), new TransitionKey("Shellwood_10", "left1")); public static DoorData Shellwood_11__right2 { get; } = new DoorData(new TransitionKey("Shellwood_11", "right2"), new TransitionKey("Shellwood_10", "left2")); public static DoorData Shellwood_11b__door_wakeOnGround { get; } = new DoorData(new TransitionKey("Shellwood_11b", "door_wakeOnGround")); public static DoorData Shellwood_11b__right1 { get; } = new DoorData(new TransitionKey("Shellwood_11b", "right1"), new TransitionKey("Shellwood_22", "door1")); public static DoorData Shellwood_11b_Memory__door_wakeInMemory { get; } = new DoorData(new TransitionKey("Shellwood_11b_Memory", "door_wakeInMemory")); public static DoorData Shellwood_13__left1 { get; } = new DoorData(new TransitionKey("Shellwood_13", "left1"), new TransitionKey("Shellwood_18", "right1")); public static DoorData Shellwood_13__left2 { get; } = new DoorData(new TransitionKey("Shellwood_13", "left2"), new TransitionKey("Shellwood_01b", "right1")); public static DoorData Shellwood_13__right1 { get; } = new DoorData(new TransitionKey("Shellwood_13", "right1"), new TransitionKey("Belltown_04", "left1")) { Obstacles = new ReadOnlyCollection(new List(3) { new ObstacleInfo("Bell Wall Tall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new ObstacleInfo("Bell Wall Tall (1)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new ObstacleInfo("Bell Wall Tall (2)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Shellwood_14__left1 { get; } = new DoorData(new TransitionKey("Shellwood_14", "left1"), new TransitionKey("Shellwood_03", "right2")); public static DoorData Shellwood_15__left1 { get; } = new DoorData(new TransitionKey("Shellwood_15", "left1"), new TransitionKey("Shellwood_01b", "right3")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Shellwood Twig Wall (1)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Shellwood_15__right1 { get; } = new DoorData(new TransitionKey("Shellwood_15", "right1"), new TransitionKey("Belltown_04", "left2")); public static DoorData Shellwood_16__left1 { get; } = new DoorData(new TransitionKey("Shellwood_16", "left1"), new TransitionKey("Shellwood_03", "right3")); public static DoorData Shellwood_16__right1 { get; } = new DoorData(new TransitionKey("Shellwood_16", "right1"), new TransitionKey("Shellwood_02", "left2")); public static DoorData Shellwood_18__left1 { get; } = new DoorData(new TransitionKey("Shellwood_18", "left1"), new TransitionKey("Shellwood_10", "right3")); public static DoorData Shellwood_18__right1 { get; } = new DoorData(new TransitionKey("Shellwood_18", "right1"), new TransitionKey("Shellwood_13", "left1")); public static DoorData Shellwood_18__top1 { get; } = new DoorData(new TransitionKey("Shellwood_18", "top1"), new TransitionKey("Shellwood_26", "bot1")); public static DoorData Shellwood_19__door_fastTravelExit { get; } = new DoorData(new TransitionKey("Shellwood_19", "door_fastTravelExit")); public static DoorData Shellwood_19__left1 { get; } = new DoorData(new TransitionKey("Shellwood_19", "left1"), new TransitionKey("Bellshrine_03", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Bellshrine gate (1)", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess, new PlayerDataBoolSaveInfo("bellShrineShellwood")) }) }; public static DoorData Shellwood_19__right1 { get; } = new DoorData(new TransitionKey("Shellwood_19", "right1"), new TransitionKey("Shellwood_03", "left1")); public static DoorData Shellwood_20__left1 { get; } = new DoorData(new TransitionKey("Shellwood_20", "left1"), new TransitionKey("Shellwood_10", "right2")); public static DoorData Shellwood_20__right1 { get; } = new DoorData(new TransitionKey("Shellwood_20", "right1"), new TransitionKey("Shellwood_01b", "left1")); public static DoorData Shellwood_22__door1 { get; } = new DoorData(new TransitionKey("Shellwood_22", "door1"), new TransitionKey("Shellwood_11b", "right1")); public static DoorData Shellwood_22__right1 { get; } = new DoorData(new TransitionKey("Shellwood_22", "right1"), new TransitionKey("Under_27", "left1")); public static DoorData Shellwood_25__door1 { get; } = new DoorData(new TransitionKey("Shellwood_25", "door1"), new TransitionKey("Shellwood_25b", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new TransitionObstacleInfo("door1", Enabled: true, ObstacleType.ClosedAfterProgression, ObstacleSeverity.LimitsExitAccess), new ObstacleInfo("Witch Chapel Door Control", ObstacleType.ClosedAfterProgression, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Shellwood_25__left1 { get; } = new DoorData(new TransitionKey("Shellwood_25", "left1"), new TransitionKey("Mosstown_03", "right2")) { Obstacles = new ReadOnlyCollection(new List(4) { new ObstacleInfo("Shellwood Twig Wall (3)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new ObstacleInfo("Shellwood Twig Wall (2)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new ObstacleInfo("Shellwood Twig Wall (1)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new ObstacleInfo("Shellwood Twig Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Shellwood_25b__door_curseSequenceEnd { get; } = new DoorData(new TransitionKey("Shellwood_25b", "door_curseSequenceEnd")); public static DoorData Shellwood_25b__left1 { get; } = new DoorData(new TransitionKey("Shellwood_25b", "left1"), new TransitionKey("Shellwood_25", "door1")); public static DoorData Shellwood_26__bot1 { get; } = new DoorData(new TransitionKey("Shellwood_26", "bot1"), new TransitionKey("Shellwood_18", "top1")); public static DoorData Shellwood_26__left1 { get; } = new DoorData(new TransitionKey("Shellwood_26", "left1"), new TransitionKey("Shellwood_10", "right1")); public static DoorData Shellwood_Witch__door1 { get; } = new DoorData(new TransitionKey("Shellwood_Witch", "door1"), new TransitionKey("Room_Witch", "left1")); public static DoorData Shellwood_Witch__right1 { get; } = new DoorData(new TransitionKey("Shellwood_Witch", "right1"), new TransitionKey("Shellwood_02", "left3")); public static DoorData Slab_01__left1 { get; } = new DoorData(new TransitionKey("Slab_01", "left1"), new TransitionKey("Slab_02", "right1")); public static DoorData Slab_01__right1 { get; } = new DoorData(new TransitionKey("Slab_01", "right1"), new TransitionKey("Song_04", "left1")); public static DoorData Slab_02__left1 { get; } = new DoorData(new TransitionKey("Slab_02", "left1"), new TransitionKey("Slab_03", "right5")) { Obstacles = new ReadOnlyCollection(new List(6) { new ObstacleInfo("slab_gate_simple (1)", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo(null, "slab_jail_lever")), new ObstacleInfo("slab_gate_simple", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess), new ObstacleInfo("slab_gate_simple (7)", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility), new ObstacleInfo("slab_gate_simple (5)", ObstacleType.Mask, ObstacleSeverity.LimitsVisibility), new ObstacleInfo("slab_gate_simple (4)", ObstacleType.Mask, ObstacleSeverity.AbnormalVisual), new ObstacleInfo("slab_gate_simple (6)", ObstacleType.Mask, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Slab_02__right1 { get; } = new DoorData(new TransitionKey("Slab_02", "right1"), new TransitionKey("Slab_01", "left1")); public static DoorData Slab_03__door_slabCaged { get; } = new DoorData(new TransitionKey("Slab_03", "door_slabCaged")); public static DoorData Slab_03__left1 { get; } = new DoorData(new TransitionKey("Slab_03", "left1"), new TransitionKey("Slab_16", "right1")); public static DoorData Slab_03__left2 { get; } = new DoorData(new TransitionKey("Slab_03", "left2"), new TransitionKey("Slab_15", "right1")); public static DoorData Slab_03__left3 { get; } = new DoorData(new TransitionKey("Slab_03", "left3"), new TransitionKey("Slab_14", "right1")); public static DoorData Slab_03__left4 { get; } = new DoorData(new TransitionKey("Slab_03", "left4"), new TransitionKey("Slab_13", "right1")); public static DoorData Slab_03__left5 { get; } = new DoorData(new TransitionKey("Slab_03", "left5"), new TransitionKey("Slab_04", "right1")); public static DoorData Slab_03__left6 { get; } = new DoorData(new TransitionKey("Slab_03", "left6"), new TransitionKey("Slab_05", "right1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Jail Gate Door (1)", ObstacleType.TwoWayMechanism, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo(null, "Slab Lock (2)")), new BehaviourObstacleInfo("Slab Lock (2)", Enable: false, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Slab_03__left7 { get; } = new DoorData(new TransitionKey("Slab_03", "left7"), new TransitionKey("Slab_07", "right1")); public static DoorData Slab_03__left8 { get; } = new DoorData(new TransitionKey("Slab_03", "left8"), new TransitionKey("Slab_07", "right2")); public static DoorData Slab_03__right1 { get; } = new DoorData(new TransitionKey("Slab_03", "right1"), new TransitionKey("Slab_17", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Jail Gate Door (2)", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo(null, "Slab Lock (1)")), new BehaviourObstacleInfo("Slab Lock (1)", Enable: false, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Slab_03__right2 { get; } = new DoorData(new TransitionKey("Slab_03", "right2"), new TransitionKey("Slab_18", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new TestObjObstacleInfo("Cage_Rubbish", Activate: true, ObstacleType.OneWayBreakableExit, ObstacleSeverity.InterruptsEntry, new PlayerDataBoolSaveInfo("slab_03_rubbishCleared")) }) }; public static DoorData Slab_03__right3 { get; } = new DoorData(new TransitionKey("Slab_03", "right3"), new TransitionKey("Slab_20", "left1")); public static DoorData Slab_03__right4 { get; } = new DoorData(new TransitionKey("Slab_03", "right4"), new TransitionKey("Slab_23", "left1")); public static DoorData Slab_03__right5 { get; } = new DoorData(new TransitionKey("Slab_03", "right5"), new TransitionKey("Slab_02", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("slab_gate_entrance_inside/slab_gate_simple (2)", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo("Slab_02", "slab_jail_lever")) }) }; public static DoorData Slab_03__right7 { get; } = new DoorData(new TransitionKey("Slab_03", "right7"), new TransitionKey("Slab_19b", "left1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Jail Gate Door (4)", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo(null, "Slab Lock (4)")), new BehaviourObstacleInfo("Slab Lock (4)", Enable: false, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Slab_03__right8 { get; } = new DoorData(new TransitionKey("Slab_03", "right8"), new TransitionKey("Slab_08", "left1")); public static DoorData Slab_03__right9 { get; } = new DoorData(new TransitionKey("Slab_03", "right9"), new TransitionKey("Slab_12", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Coral Crust Wall Tall (2)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Slab_04__bot1 { get; } = new DoorData(new TransitionKey("Slab_04", "bot1"), new TransitionKey("Slab_05", "top1")); public static DoorData Slab_04__right1 { get; } = new DoorData(new TransitionKey("Slab_04", "right1"), new TransitionKey("Slab_03", "left5")); public static DoorData Slab_04__top1 { get; } = new DoorData(new TransitionKey("Slab_04", "top1"), new TransitionKey("Slab_13", "bot1")); public static DoorData Slab_05__bot1 { get; } = new DoorData(new TransitionKey("Slab_05", "bot1"), new TransitionKey("Slab_06", "top1")); public static DoorData Slab_05__right1 { get; } = new DoorData(new TransitionKey("Slab_05", "right1"), new TransitionKey("Slab_03", "left6")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Jail Gate Door (2)", ObstacleType.TwoWayMechanism, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo(null, "Slab Lock (2)")), new BehaviourObstacleInfo("Slab Lock (2)", Enable: false, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Slab_05__top1 { get; } = new DoorData(new TransitionKey("Slab_05", "top1"), new TransitionKey("Slab_04", "bot1")); public static DoorData Slab_06__door_fastTravelExit { get; } = new DoorData(new TransitionKey("Slab_06", "door_fastTravelExit")); public static DoorData Slab_06__left1 { get; } = new DoorData(new TransitionKey("Slab_06", "left1"), new TransitionKey("Peak_01", "right4")); public static DoorData Slab_06__top1 { get; } = new DoorData(new TransitionKey("Slab_06", "top1"), new TransitionKey("Slab_05", "bot1")); public static DoorData Slab_07__right1 { get; } = new DoorData(new TransitionKey("Slab_07", "right1"), new TransitionKey("Slab_03", "left7")); public static DoorData Slab_07__right2 { get; } = new DoorData(new TransitionKey("Slab_07", "right2"), new TransitionKey("Slab_03", "left8")); public static DoorData Slab_08__door1 { get; } = new DoorData(new TransitionKey("Slab_08", "door1"), new TransitionKey("Slab_Cell_Quiet", "left2")); public static DoorData Slab_08__left1 { get; } = new DoorData(new TransitionKey("Slab_08", "left1"), new TransitionKey("Slab_03", "right8")); public static DoorData Slab_10b__door_wakeOnGround { get; } = new DoorData(new TransitionKey("Slab_10b", "door_wakeOnGround")); public static DoorData Slab_10b__left1 { get; } = new DoorData(new TransitionKey("Slab_10b", "left1"), new TransitionKey("Slab_10c", "door1")); public static DoorData Slab_10c__door1 { get; } = new DoorData(new TransitionKey("Slab_10c", "door1"), new TransitionKey("Slab_10b", "left1")) { Obstacles = new ReadOnlyCollection(new List(8) { new BehaviourObstacleInfo("Break Gate Group", Enable: false, ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsExitAccess), new TransitionObstacleInfo("Break Gate Group/door1", Enabled: true, ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsExitAccess), new ObstacleInfo("Break Gate Group/slab_break_weaver_gate_ring", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsExitAccess, new PersistentBoolSaveInfo()), new ObstacleInfo("Break Gate Group/slab_break_weaver_gate_ring (1)", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsExitAccess, new PersistentBoolSaveInfo()), new ObstacleInfo("Break Gate Group/slab_break_weaver_gate_ring (2)", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsExitAccess, new PersistentBoolSaveInfo()), new ObstacleInfo("Break Gate Group/slab_break_weaver_gate_ring (3)", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsExitAccess, new PersistentBoolSaveInfo()), new ObstacleInfo("Break Gate Group/Group", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsExitAccess), new ObstacleInfo("Break Gate Group/dampening shield", ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Slab_10c__left1 { get; } = new DoorData(new TransitionKey("Slab_10c", "left1"), new TransitionKey("Slab_19b", "right1")); public static DoorData Slab_12__left1 { get; } = new DoorData(new TransitionKey("Slab_12", "left1"), new TransitionKey("Slab_03", "right9")); public static DoorData Slab_13__bot1 { get; } = new DoorData(new TransitionKey("Slab_13", "bot1"), new TransitionKey("Slab_04", "top1")); public static DoorData Slab_13__door1 { get; } = new DoorData(new TransitionKey("Slab_13", "door1"), new TransitionKey("Slab_Cell", "left1")); public static DoorData Slab_13__left1 { get; } = new DoorData(new TransitionKey("Slab_13", "left1"), new TransitionKey("Peak_01", "right3")); public static DoorData Slab_13__right1 { get; } = new DoorData(new TransitionKey("Slab_13", "right1"), new TransitionKey("Slab_03", "left4")); public static DoorData Slab_14__right1 { get; } = new DoorData(new TransitionKey("Slab_14", "right1"), new TransitionKey("Slab_03", "left3")); public static DoorData Slab_14__top1 { get; } = new DoorData(new TransitionKey("Slab_14", "top1"), new TransitionKey("Slab_15", "bot1")); public static DoorData Slab_15__bot1 { get; } = new DoorData(new TransitionKey("Slab_15", "bot1"), new TransitionKey("Slab_14", "top1")); public static DoorData Slab_15__left1 { get; } = new DoorData(new TransitionKey("Slab_15", "left1"), new TransitionKey("Peak_01", "right2")); public static DoorData Slab_15__right1 { get; } = new DoorData(new TransitionKey("Slab_15", "right1"), new TransitionKey("Slab_03", "left2")); public static DoorData Slab_15__top1 { get; } = new DoorData(new TransitionKey("Slab_15", "top1"), new TransitionKey("Slab_16", "bot1")) { Obstacles = new ReadOnlyCollection(new List(3) { new ObstacleInfo("Breakable Wall Waterways", ObstacleType.TwoWayBreakable, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks"), new ObstacleInfo("Camera Locks", ObstacleType.Other, ObstacleSeverity.LimitsVisibility) }) }; public static DoorData Slab_16__bot1 { get; } = new DoorData(new TransitionKey("Slab_16", "bot1"), new TransitionKey("Slab_15", "top1")); public static DoorData Slab_16__door1 { get; } = new DoorData(new TransitionKey("Slab_16", "door1"), new TransitionKey("Slab_16b", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new GameObjectActiveObstacleInfo("Broodmother_Gate", Active: true, ObstacleType.OpenAfterProgression, ObstacleSeverity.InterruptsEntry | ObstacleSeverity.LimitsExitAccess) }) }; public static DoorData Slab_16__left1 { get; } = new DoorData(new TransitionKey("Slab_16", "left1"), new TransitionKey("Peak_01", "right1")); public static DoorData Slab_16__right1 { get; } = new DoorData(new TransitionKey("Slab_16", "right1"), new TransitionKey("Slab_03", "left1")); public static DoorData Slab_16__top1 { get; } = new DoorData(new TransitionKey("Slab_16", "top1"), new TransitionKey("Slab_22", "bot1")); public static DoorData Slab_16b__left1 { get; } = new DoorData(new TransitionKey("Slab_16b", "left1"), new TransitionKey("Slab_16", "door1")); public static DoorData Slab_17__left1 { get; } = new DoorData(new TransitionKey("Slab_17", "left1"), new TransitionKey("Slab_03", "right1")); public static DoorData Slab_18__left1 { get; } = new DoorData(new TransitionKey("Slab_18", "left1"), new TransitionKey("Slab_03", "right2")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("One Way Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.InterruptsEntry, new PersistentBoolSaveInfo()) }) }; public static DoorData Slab_18__right1 { get; } = new DoorData(new TransitionKey("Slab_18", "right1"), new TransitionKey("Slab_21", "left1")); public static DoorData Slab_19b__left1 { get; } = new DoorData(new TransitionKey("Slab_19b", "left1"), new TransitionKey("Slab_03", "right7")); public static DoorData Slab_19b__right1 { get; } = new DoorData(new TransitionKey("Slab_19b", "right1"), new TransitionKey("Slab_10c", "left1")); public static DoorData Slab_20__left1 { get; } = new DoorData(new TransitionKey("Slab_20", "left1"), new TransitionKey("Slab_03", "right3")); public static DoorData Slab_21__left1 { get; } = new DoorData(new TransitionKey("Slab_21", "left1"), new TransitionKey("Slab_18", "right1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks") }) }; public static DoorData Slab_21__left3 { get; } = new DoorData(new TransitionKey("Slab_21", "left3"), new TransitionKey("Slab_23", "right1")); public static DoorData Slab_21__top1 { get; } = new DoorData(new TransitionKey("Slab_21", "top1"), new TransitionKey("Slab_22", "bot2")); public static DoorData Slab_22__bot1 { get; } = new DoorData(new TransitionKey("Slab_22", "bot1"), new TransitionKey("Slab_16", "top1")); public static DoorData Slab_22__bot2 { get; } = new DoorData(new TransitionKey("Slab_22", "bot2"), new TransitionKey("Slab_21", "top1")); public static DoorData Slab_23__door1 { get; } = new DoorData(new TransitionKey("Slab_23", "door1"), new TransitionKey("Slab_Cell_Creature", "left1")); public static DoorData Slab_23__door2 { get; } = new DoorData(new TransitionKey("Slab_23", "door2"), new TransitionKey("Slab_Cell_Quiet", "left1")); public static DoorData Slab_23__left1 { get; } = new DoorData(new TransitionKey("Slab_23", "left1"), new TransitionKey("Slab_03", "right4")); public static DoorData Slab_23__right1 { get; } = new DoorData(new TransitionKey("Slab_23", "right1"), new TransitionKey("Slab_21", "left3")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Battle Scene/Gates/Battle Gate Slab", ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsRoomAccess), new ObstacleInfo("Battle Scene/Gates/Battle Gate Slab (1)", ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsRoomAccess) }) }; public static DoorData Slab_Cell__left1 { get; } = new DoorData(new TransitionKey("Slab_Cell", "left1"), new TransitionKey("Slab_13", "door1")); public static DoorData Slab_Cell_Creature__left1 { get; } = new DoorData(new TransitionKey("Slab_Cell_Creature", "left1"), new TransitionKey("Slab_23", "door1")); public static DoorData Slab_Cell_Quiet__left1 { get; } = new DoorData(new TransitionKey("Slab_Cell_Quiet", "left1"), new TransitionKey("Slab_23", "door2")); public static DoorData Slab_Cell_Quiet__left2 { get; } = new DoorData(new TransitionKey("Slab_Cell_Quiet", "left2"), new TransitionKey("Slab_08", "door1")); public static DoorData Song_01__bot1 { get; } = new DoorData(new TransitionKey("Song_01", "bot1"), new TransitionKey("Song_01c", "top1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Breakable Floor_basic Song_01", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsExitAccess, new PersistentBoolSaveInfo()) }) }; public static DoorData Song_01__right2 { get; } = new DoorData(new TransitionKey("Song_01", "right2"), new TransitionKey("Under_07b", "left1")); public static DoorData Song_01__top1 { get; } = new DoorData(new TransitionKey("Song_01", "top1"), new TransitionKey("Song_01b", "bot1")); public static DoorData Song_01b__bot1 { get; } = new DoorData(new TransitionKey("Song_01b", "bot1"), new TransitionKey("Song_01", "top1")); public static DoorData Song_01b__door_tubeEnter { get; } = new DoorData(new TransitionKey("Song_01b", "door_tubeEnter")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("City Travel Tube/tube_toll_machine", ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Song_01b__right1 { get; } = new DoorData(new TransitionKey("Song_01b", "right1"), new TransitionKey("Song_02", "left2")); public static DoorData Song_01b__top1 { get; } = new DoorData(new TransitionKey("Song_01b", "top1"), new TransitionKey("Song_03", "bot1")); public static DoorData Song_01c__left1 { get; } = new DoorData(new TransitionKey("Song_01c", "left1"), new TransitionKey("Song_19_entrance", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsExitAccess, new PersistentBoolSaveInfo("Song_19_entrance", "Breakable Wall Entrance Secret")) }) }; public static DoorData Song_01c__top1 { get; } = new DoorData(new TransitionKey("Song_01c", "top1"), new TransitionKey("Song_01", "bot1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("One Way Wall", ObstacleType.OneWayBreakableExit, ObstacleSeverity.InterruptsEntry, new PersistentBoolSaveInfo("Song_01", "Breakable Floor_basic Song_01")) }) }; public static DoorData Song_02__left2 { get; } = new DoorData(new TransitionKey("Song_02", "left2"), new TransitionKey("Song_01b", "right1")); public static DoorData Song_02__right1 { get; } = new DoorData(new TransitionKey("Song_02", "right1"), new TransitionKey("Song_05", "left5")); public static DoorData Song_03__bot1 { get; } = new DoorData(new TransitionKey("Song_03", "bot1"), new TransitionKey("Song_01b", "top1")); public static DoorData Song_03__top1 { get; } = new DoorData(new TransitionKey("Song_03", "top1"), new TransitionKey("Song_04", "bot1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("bot_blocker/before", ObstacleType.OneWayMechanismExit, ObstacleSeverity.InterruptsEntry, new PersistentBoolSaveInfo("Song_04", "Bot Blocker")), new GameObjectActiveObstacleInfo("bot_blocker/after", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Song_04__bot1 { get; } = new DoorData(new TransitionKey("Song_04", "bot1"), new TransitionKey("Song_03", "top1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Bot Blocker", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsExitAccess, new PersistentBoolSaveInfo()) }) }; public static DoorData Song_04__left1 { get; } = new DoorData(new TransitionKey("Song_04", "left1"), new TransitionKey("Slab_01", "right1")); public static DoorData Song_04__right1 { get; } = new DoorData(new TransitionKey("Song_04", "right1"), new TransitionKey("Song_12", "left1")); public static DoorData Song_04__right2 { get; } = new DoorData(new TransitionKey("Song_04", "right2"), new TransitionKey("Song_10", "left1")); public static DoorData Song_05__left3 { get; } = new DoorData(new TransitionKey("Song_05", "left3"), new TransitionKey("Song_11", "right3")); public static DoorData Song_05__left4 { get; } = new DoorData(new TransitionKey("Song_05", "left4"), new TransitionKey("Song_07", "right1")); public static DoorData Song_05__left5 { get; } = new DoorData(new TransitionKey("Song_05", "left5"), new TransitionKey("Song_02", "right1")); public static DoorData Song_05__right2 { get; } = new DoorData(new TransitionKey("Song_05", "right2"), new TransitionKey("Song_18", "left1")); public static DoorData Song_05__right3 { get; } = new DoorData(new TransitionKey("Song_05", "right3"), new TransitionKey("Ward_01", "left1")); public static DoorData Song_05__right4 { get; } = new DoorData(new TransitionKey("Song_05", "right4"), new TransitionKey("Song_27", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Shortcut Wall", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("song_27_opened")) }) }; public static DoorData Song_07__right1 { get; } = new DoorData(new TransitionKey("Song_07", "right1"), new TransitionKey("Song_05", "left4")); public static DoorData Song_08__right1 { get; } = new DoorData(new TransitionKey("Song_08", "right1"), new TransitionKey("Song_12", "left3")); public static DoorData Song_09__bot1 { get; } = new DoorData(new TransitionKey("Song_09", "bot1"), new TransitionKey("Song_09b", "top1")); public static DoorData Song_09__right1 { get; } = new DoorData(new TransitionKey("Song_09", "right1"), new TransitionKey("Cog_05", "left1")); public static DoorData Song_09__top1 { get; } = new DoorData(new TransitionKey("Song_09", "top1"), new TransitionKey("Hang_07", "bot1")); public static DoorData Song_09b__left1 { get; } = new DoorData(new TransitionKey("Song_09b", "left1"), new TransitionKey("Song_11", "right1")); public static DoorData Song_09b__top1 { get; } = new DoorData(new TransitionKey("Song_09b", "top1"), new TransitionKey("Song_09", "bot1")); public static DoorData Song_10__left1 { get; } = new DoorData(new TransitionKey("Song_10", "left1"), new TransitionKey("Song_04", "right2")); public static DoorData Song_10__right1 { get; } = new DoorData(new TransitionKey("Song_10", "right1"), new TransitionKey("Song_11", "left4")) { Obstacles = new ReadOnlyCollection(new List(3) { new ObstacleInfo("Pipe_Vent_Hatch_Gate", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("openedCitadelSpaRight")), new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks") }) }; public static DoorData Song_11__left1 { get; } = new DoorData(new TransitionKey("Song_11", "left1"), new TransitionKey("Song_17", "right1")); public static DoorData Song_11__left2 { get; } = new DoorData(new TransitionKey("Song_11", "left2"), new TransitionKey("Song_15", "right1")); public static DoorData Song_11__left3 { get; } = new DoorData(new TransitionKey("Song_11", "left3"), new TransitionKey("Song_13", "right1")); public static DoorData Song_11__left4 { get; } = new DoorData(new TransitionKey("Song_11", "left4"), new TransitionKey("Song_10", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new TestObjObstacleInfo("Song_10_hidden_gate", Activate: true, ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("openedCitadelSpaRight")) }) }; public static DoorData Song_11__right1 { get; } = new DoorData(new TransitionKey("Song_11", "right1"), new TransitionKey("Song_09b", "left1")); public static DoorData Song_11__right2 { get; } = new DoorData(new TransitionKey("Song_11", "right2"), new TransitionKey("Hang_07", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Plug_Gate", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Song_11__right3 { get; } = new DoorData(new TransitionKey("Song_11", "right3"), new TransitionKey("Song_05", "left3")); public static DoorData Song_12__left1 { get; } = new DoorData(new TransitionKey("Song_12", "left1"), new TransitionKey("Song_04", "right1")); public static DoorData Song_12__left2 { get; } = new DoorData(new TransitionKey("Song_12", "left2"), new TransitionKey("Song_26", "right1")); public static DoorData Song_12__left3 { get; } = new DoorData(new TransitionKey("Song_12", "left3"), new TransitionKey("Song_08", "right1")); public static DoorData Song_12__left4 { get; } = new DoorData(new TransitionKey("Song_12", "left4"), new TransitionKey("Song_28", "right1")); public static DoorData Song_12__right1 { get; } = new DoorData(new TransitionKey("Song_12", "right1"), new TransitionKey("Song_15", "left1")); public static DoorData Song_12__right2 { get; } = new DoorData(new TransitionKey("Song_12", "right2"), new TransitionKey("Song_14", "left1")); public static DoorData Song_12__right3 { get; } = new DoorData(new TransitionKey("Song_12", "right3"), new TransitionKey("Song_13", "left1")); public static DoorData Song_13__left1 { get; } = new DoorData(new TransitionKey("Song_13", "left1"), new TransitionKey("Song_12", "right3")); public static DoorData Song_13__right1 { get; } = new DoorData(new TransitionKey("Song_13", "right1"), new TransitionKey("Song_11", "left3")); public static DoorData Song_14__left1 { get; } = new DoorData(new TransitionKey("Song_14", "left1"), new TransitionKey("Song_12", "right2")); public static DoorData Song_15__left1 { get; } = new DoorData(new TransitionKey("Song_15", "left1"), new TransitionKey("Song_12", "right1")); public static DoorData Song_15__right1 { get; } = new DoorData(new TransitionKey("Song_15", "right1"), new TransitionKey("Song_11", "left2")); public static DoorData Song_17__left1 { get; } = new DoorData(new TransitionKey("Song_17", "left1"), new TransitionKey("Hang_01", "right2")); public static DoorData Song_17__right1 { get; } = new DoorData(new TransitionKey("Song_17", "right1"), new TransitionKey("Song_11", "left1")); public static DoorData Song_18__bot1 { get; } = new DoorData(new TransitionKey("Song_18", "bot1"), new TransitionKey("Song_27", "top1")); public static DoorData Song_18__left1 { get; } = new DoorData(new TransitionKey("Song_18", "left1"), new TransitionKey("Song_05", "right2")); public static DoorData Song_19_entrance__left1 { get; } = new DoorData(new TransitionKey("Song_19_entrance", "left1"), new TransitionKey("Coral_10", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Entrance gate small", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo("Coral_10", "Coral10rightsidegate")) }) }; public static DoorData Song_19_entrance__right1 { get; } = new DoorData(new TransitionKey("Song_19_entrance", "right1"), new TransitionKey("Song_01c", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Breakable Wall Entrance Secret", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo()) }) }; public static DoorData Song_19_entrance__right2 { get; } = new DoorData(new TransitionKey("Song_19_entrance", "right2"), new TransitionKey("Under_01", "left1")); public static DoorData Song_20__left1 { get; } = new DoorData(new TransitionKey("Song_20", "left1"), new TransitionKey("Song_27", "right1")); public static DoorData Song_20__left2 { get; } = new DoorData(new TransitionKey("Song_20", "left2"), new TransitionKey("Song_24", "right1")); public static DoorData Song_20__right_cutsceneEntry { get; } = new DoorData(new TransitionKey("Song_20", "right_cutsceneEntry"), new TransitionKey("Bellway_City", "left1"), null); public static DoorData Song_20__right4 { get; } = new DoorData(new TransitionKey("Song_20", "right4"), new TransitionKey("Library_03", "left1")); public static DoorData Song_20__right5 { get; } = new DoorData(new TransitionKey("Song_20", "right5"), new TransitionKey("Library_13", "left1")); public static DoorData Song_20__right6 { get; } = new DoorData(new TransitionKey("Song_20", "right6"), new TransitionKey("Bellway_City", "left1")); public static DoorData Song_20__top1 { get; } = new DoorData(new TransitionKey("Song_20", "top1"), new TransitionKey("Song_20b", "bot1")); public static DoorData Song_20b__bot1 { get; } = new DoorData(new TransitionKey("Song_20b", "bot1"), new TransitionKey("Song_20", "top1")); public static DoorData Song_20b__left2 { get; } = new DoorData(new TransitionKey("Song_20b", "left2"), new TransitionKey("Song_29", "right1")); public static DoorData Song_20b__left4 { get; } = new DoorData(new TransitionKey("Song_20b", "left4"), new TransitionKey("Cog_06", "right1")); public static DoorData Song_20b__right2 { get; } = new DoorData(new TransitionKey("Song_20b", "right2"), new TransitionKey("Library_02", "left2")); public static DoorData Song_20b__right3 { get; } = new DoorData(new TransitionKey("Song_20b", "right3"), new TransitionKey("Library_02", "left1")); public static DoorData Song_20b__top1 { get; } = new DoorData(new TransitionKey("Song_20b", "top1"), new TransitionKey("Song_25", "bot1")); public static DoorData Song_24__right1 { get; } = new DoorData(new TransitionKey("Song_24", "right1"), new TransitionKey("Song_20", "left2")); public static DoorData Song_25__bot1 { get; } = new DoorData(new TransitionKey("Song_25", "bot1"), new TransitionKey("Song_20b", "top1")); public static DoorData Song_25__left1 { get; } = new DoorData(new TransitionKey("Song_25", "left1"), new TransitionKey("Cog_Dancers", "right1")); public static DoorData Song_25__right1 { get; } = new DoorData(new TransitionKey("Song_25", "right1"), new TransitionKey("Song_Enclave", "left1")); public static DoorData Song_25__top1 { get; } = new DoorData(new TransitionKey("Song_25", "top1"), new TransitionKey("Arborium_01", "bot1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("GameObject (6)/Moss Vine Cluster", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.InterruptsEntry, new PersistentBoolSaveInfo()) }) }; public static DoorData Song_25__top2 { get; } = new DoorData(new TransitionKey("Song_25", "top2"), new TransitionKey("Cog_10_Destroyed", "bot1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Black Thread States/Black Thread World/Weakness Scene Act3 Final", ObstacleType.Cutscene, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Song_26__right1 { get; } = new DoorData(new TransitionKey("Song_26", "right1"), new TransitionKey("Song_12", "left2")); public static DoorData Song_27__left1 { get; } = new DoorData(new TransitionKey("Song_27", "left1"), new TransitionKey("Song_05", "right4")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Citadel Switch Gate", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo(null, "Song_lever_side")) }) }; public static DoorData Song_27__right1 { get; } = new DoorData(new TransitionKey("Song_27", "right1"), new TransitionKey("Song_20", "left1")); public static DoorData Song_27__top1 { get; } = new DoorData(new TransitionKey("Song_27", "top1"), new TransitionKey("Song_18", "bot1")); public static DoorData Song_28__right1 { get; } = new DoorData(new TransitionKey("Song_28", "right1"), new TransitionKey("Song_12", "left4")); public static DoorData Song_29__right1 { get; } = new DoorData(new TransitionKey("Song_29", "right1"), new TransitionKey("Song_20b", "left2")); public static DoorData Song_Enclave__bot1 { get; } = new DoorData(new TransitionKey("Song_Enclave", "bot1"), new TransitionKey("Library_04", "top1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Library_shortcut/before", ObstacleType.OneWayBreakableExit, ObstacleSeverity.LimitsExitAccess, new PersistentBoolSaveInfo("Library_04", "Top Shortcut")), new GameObjectActiveObstacleInfo("Library_shortcut/after", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Song_Enclave__door_act3_wakeUp { get; } = new DoorData(new TransitionKey("Song_Enclave", "door_act3_wakeUp")); public static DoorData Song_Enclave__door1 { get; } = new DoorData(new TransitionKey("Song_Enclave", "door1"), new TransitionKey("Bellshrine_Enclave", "left1")); public static DoorData Song_Enclave__left1 { get; } = new DoorData(new TransitionKey("Song_Enclave", "left1"), new TransitionKey("Song_25", "right1")); public static DoorData Song_Enclave__left2 { get; } = new DoorData(new TransitionKey("Song_Enclave", "left2"), new TransitionKey("Library_02", "right2")); public static DoorData Song_Enclave__top1 { get; } = new DoorData(new TransitionKey("Song_Enclave", "top1"), new TransitionKey("Song_Enclave_Tube", "bot1")); public static DoorData Song_Enclave_Tube__bot1 { get; } = new DoorData(new TransitionKey("Song_Enclave_Tube", "bot1"), new TransitionKey("Song_Enclave", "top1")); public static DoorData Song_Enclave_Tube__door_tubeEnter { get; } = new DoorData(new TransitionKey("Song_Enclave_Tube", "door_tubeEnter")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("City Travel Tube/tube_toll_machine", ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Song_Tower_01__door_cinematicEnd { get; } = new DoorData(new TransitionKey("Song_Tower_01", "door_cinematicEnd")); public static DoorData Song_Tower_01__door_cutsceneEndLaceTower { get; } = new DoorData(new TransitionKey("Song_Tower_01", "door_cutsceneEndLaceTower")); public static DoorData Song_Tower_01__right1 { get; } = new DoorData(new TransitionKey("Song_Tower_01", "right1"), new TransitionKey("Tube_Hub", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("State Control/song_tower_right_gate", ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility) }) }; public static DoorData Song_Tower_Destroyed__bot1 { get; } = new DoorData(new TransitionKey("Song_Tower_Destroyed", "bot1"), new TransitionKey("Cog_09_Destroyed", "top1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Collapser Small", ObstacleType.Other, ObstacleSeverity.AbnormalVisual, new PersistentBoolSaveInfo()) }) }; public static DoorData Song_Tower_Destroyed__top1 { get; } = new DoorData(new TransitionKey("Song_Tower_Destroyed", "top1"), new TransitionKey("Cradle_01_Destroyed", "bot1")); public static DoorData Sprintmaster_Cave__left1 { get; } = new DoorData(new TransitionKey("Sprintmaster_Cave", "left1"), new TransitionKey("Bone_East_18b", "door1")); public static DoorData Tube_Hub__door_tubeEnter { get; } = new DoorData(new TransitionKey("Tube_Hub", "door_tubeEnter")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("City Travel Tube/tube_toll_machine", ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Tube_Hub__left1 { get; } = new DoorData(new TransitionKey("Tube_Hub", "left1"), new TransitionKey("Song_Tower_01", "right1")) { Obstacles = new ReadOnlyCollection(new List(2) { new GameObjectActiveObstacleInfo("Black Thread States/Black Thread World", Active: false, ObstacleType.ClosedAfterProgression, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility), new GameObjectActiveObstacleInfo("Black Thread States/Normal World", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Tube_Hub__left3 { get; } = new DoorData(new TransitionKey("Tube_Hub", "left3"), new TransitionKey("Cradle_03", "right2")) { Obstacles = new ReadOnlyCollection(new List(2) { new GameObjectActiveObstacleInfo("Black Thread States/Black Thread World", Active: false, ObstacleType.ClosedAfterProgression, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility), new GameObjectActiveObstacleInfo("Black Thread States/Normal World", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Tube_Hub__left4 { get; } = new DoorData(new TransitionKey("Tube_Hub", "left4"), new TransitionKey("Cradle_01", "right1")) { Obstacles = new ReadOnlyCollection(new List(2) { new GameObjectActiveObstacleInfo("Black Thread States/Black Thread World", Active: false, ObstacleType.ClosedAfterProgression, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility), new GameObjectActiveObstacleInfo("Black Thread States/Normal World", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Tut_01__left1 { get; } = new DoorData(new TransitionKey("Tut_01", "left1"), new TransitionKey("Tut_03", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Moss Vine Cluster (1)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Tut_01__left2 { get; } = new DoorData(new TransitionKey("Tut_01", "left2"), new TransitionKey("Tut_02", "right1")); public static DoorData Tut_01__left3 { get; } = new DoorData(new TransitionKey("Tut_01", "left3"), new TransitionKey("Tut_02", "right2")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Moss Vine Cluster", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Tut_01__right1 { get; } = new DoorData(new TransitionKey("Tut_01", "right1"), new TransitionKey("Tut_01b", "left1")); public static DoorData Tut_01__right2 { get; } = new DoorData(new TransitionKey("Tut_01", "right2"), new TransitionKey("Tut_01b", "left2")); public static DoorData Tut_01__top1 { get; } = new DoorData(new TransitionKey("Tut_01", "top1"), new TransitionKey("Bonetown", "bot2")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Tutorial Blocker", ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("churchKeeperIntro")) }) }; public static DoorData Tut_01b__left1 { get; } = new DoorData(new TransitionKey("Tut_01b", "left1"), new TransitionKey("Tut_01", "right1")); public static DoorData Tut_01b__left2 { get; } = new DoorData(new TransitionKey("Tut_01b", "left2"), new TransitionKey("Tut_01", "right2")); public static DoorData Tut_01b__right1 { get; } = new DoorData(new TransitionKey("Tut_01b", "right1"), new TransitionKey("Weave_04", "left1")); public static DoorData Tut_02__right1 { get; } = new DoorData(new TransitionKey("Tut_02", "right1"), new TransitionKey("Tut_01", "left2")); public static DoorData Tut_02__right2 { get; } = new DoorData(new TransitionKey("Tut_02", "right2"), new TransitionKey("Tut_01", "left3")); public static DoorData Tut_03__door1 { get; } = new DoorData(new TransitionKey("Tut_03", "door1"), new TransitionKey("Bonetown", "bot1"), null); public static DoorData Tut_03__door2 { get; } = new DoorData(new TransitionKey("Tut_03", "door2"), new TransitionKey("Tut_04", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new TestObjObstacleInfo("Sanctum Door", Activate: true, ObstacleType.OpenAfterProgression, ObstacleSeverity.InterruptsEntry) }) }; public static DoorData Tut_03__right1 { get; } = new DoorData(new TransitionKey("Tut_03", "right1"), new TransitionKey("Tut_01", "left1")); public static DoorData Tut_03__top1 { get; } = new DoorData(new TransitionKey("Tut_03", "top1"), new TransitionKey("Bonetown", "bot1")); public static DoorData Tut_04__door_memoryEnd { get; } = new DoorData(new TransitionKey("Tut_04", "door_memoryEnd")); public static DoorData Tut_04__door_ritualEnd { get; } = new DoorData(new TransitionKey("Tut_04", "door_ritualEnd")); public static DoorData Tut_04__left1 { get; } = new DoorData(new TransitionKey("Tut_04", "left1"), new TransitionKey("Tut_03", "door2")); public static DoorData Tut_04__right1 { get; } = new DoorData(new TransitionKey("Tut_04", "right1"), new TransitionKey("Tut_05", "left1")); public static DoorData Tut_05__door_memoryEnd { get; } = new DoorData(new TransitionKey("Tut_05", "door_memoryEnd")); public static DoorData Tut_05__left1 { get; } = new DoorData(new TransitionKey("Tut_05", "left1"), new TransitionKey("Tut_04", "right1")); public static DoorData Under_01__left1 { get; } = new DoorData(new TransitionKey("Under_01", "left1"), new TransitionKey("Song_19_entrance", "right2")); public static DoorData Under_01__left2 { get; } = new DoorData(new TransitionKey("Under_01", "left2"), new TransitionKey("Under_27", "right1")) { Obstacles = new ReadOnlyCollection(new List(3) { new UnmaskerInfo("Masks"), new ObstacleInfo("break wall/Breakable Wall (1)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess, new PersistentBoolSaveInfo()), new ObstacleInfo("Shellwood Twig Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Under_01__left3 { get; } = new DoorData(new TransitionKey("Under_01", "left3"), new TransitionKey("Under_27", "right2")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Vine Wall Shortcut", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PlayerDataBoolSaveInfo("sethShortcut")) }) }; public static DoorData Under_01__right1 { get; } = new DoorData(new TransitionKey("Under_01", "right1"), new TransitionKey("Under_01b", "left1")); public static DoorData Under_01b__left1 { get; } = new DoorData(new TransitionKey("Under_01b", "left1"), new TransitionKey("Under_01", "right1")); public static DoorData Under_01b__right1 { get; } = new DoorData(new TransitionKey("Under_01b", "right1"), new TransitionKey("Under_02", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Understore Big Plate Gate", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Under_02__left1 { get; } = new DoorData(new TransitionKey("Under_02", "left1"), new TransitionKey("Under_01b", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("door states/Understore Big Plate Gate", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo("Under_01b", "Understore Big Plate Gate")) }) }; public static DoorData Under_02__left3 { get; } = new DoorData(new TransitionKey("Under_02", "left3"), new TransitionKey("Under_16", "right1")); public static DoorData Under_02__right1 { get; } = new DoorData(new TransitionKey("Under_02", "right1"), new TransitionKey("Under_07c", "left2")); public static DoorData Under_02__right2 { get; } = new DoorData(new TransitionKey("Under_02", "right2"), new TransitionKey("Under_07", "left3")); public static DoorData Under_02__right3 { get; } = new DoorData(new TransitionKey("Under_02", "right3"), new TransitionKey("Under_03b", "left1")); public static DoorData Under_02__right4 { get; } = new DoorData(new TransitionKey("Under_02", "right4"), new TransitionKey("Under_14", "left1")); public static DoorData Under_03__right1 { get; } = new DoorData(new TransitionKey("Under_03", "right1"), new TransitionKey("Under_03c", "left2")); public static DoorData Under_03b__left1 { get; } = new DoorData(new TransitionKey("Under_03b", "left1"), new TransitionKey("Under_02", "right3")); public static DoorData Under_03b__right1 { get; } = new DoorData(new TransitionKey("Under_03b", "right1"), new TransitionKey("Under_03c", "left1")); public static DoorData Under_03c__left1 { get; } = new DoorData(new TransitionKey("Under_03c", "left1"), new TransitionKey("Under_03b", "right1")); public static DoorData Under_03c__left2 { get; } = new DoorData(new TransitionKey("Under_03c", "left2"), new TransitionKey("Under_03", "right1")); public static DoorData Under_03c__right1 { get; } = new DoorData(new TransitionKey("Under_03c", "right1"), new TransitionKey("Under_04", "left1")); public static DoorData Under_03d__bot1 { get; } = new DoorData(new TransitionKey("Under_03d", "bot1"), new TransitionKey("Under_04", "top1")); public static DoorData Under_04__left1 { get; } = new DoorData(new TransitionKey("Under_04", "left1"), new TransitionKey("Under_03c", "right1")); public static DoorData Under_04__right1 { get; } = new DoorData(new TransitionKey("Under_04", "right1"), new TransitionKey("Under_05", "left2")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Understore Big Plate Gate", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Under_04__top1 { get; } = new DoorData(new TransitionKey("Under_04", "top1"), new TransitionKey("Under_03d", "bot1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.InterruptsEntry, new PersistentBoolSaveInfo()) }) }; public static DoorData Under_05__left1 { get; } = new DoorData(new TransitionKey("Under_05", "left1"), new TransitionKey("Under_06", "right1")); public static DoorData Under_05__left2 { get; } = new DoorData(new TransitionKey("Under_05", "left2"), new TransitionKey("Under_04", "right1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Understore Big Plate Gate", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo("Under_04")) }) }; public static DoorData Under_05__left3 { get; } = new DoorData(new TransitionKey("Under_05", "left3"), new TransitionKey("Under_23", "right1")); public static DoorData Under_05__right1 { get; } = new DoorData(new TransitionKey("Under_05", "right1"), new TransitionKey("Under_11", "left1")); public static DoorData Under_05__right2 { get; } = new DoorData(new TransitionKey("Under_05", "right2"), new TransitionKey("Under_12", "left1")); public static DoorData Under_05__right3 { get; } = new DoorData(new TransitionKey("Under_05", "right3"), new TransitionKey("Under_10", "left1")); public static DoorData Under_06__left1 { get; } = new DoorData(new TransitionKey("Under_06", "left1"), new TransitionKey("Under_07", "right2")); public static DoorData Under_06__right1 { get; } = new DoorData(new TransitionKey("Under_06", "right1"), new TransitionKey("Under_05", "left1")); public static DoorData Under_06__top1 { get; } = new DoorData(new TransitionKey("Under_06", "top1"), new TransitionKey("Under_08", "bot1")); public static DoorData Under_07__left3 { get; } = new DoorData(new TransitionKey("Under_07", "left3"), new TransitionKey("Under_02", "right2")); public static DoorData Under_07__right2 { get; } = new DoorData(new TransitionKey("Under_07", "right2"), new TransitionKey("Under_06", "left1")); public static DoorData Under_07b__bot1 { get; } = new DoorData(new TransitionKey("Under_07b", "bot1"), new TransitionKey("Under_07c", "top1")) { Obstacles = new ReadOnlyCollection(new List(3) { new ObstacleInfo("Trapdoor Control/Trapdoor Closed", ObstacleType.OneWayMechanismExit, ObstacleSeverity.LimitsExitAccess, new PersistentBoolSaveInfo("Under_07c", "Bot Blocker")), new GameObjectActiveObstacleInfo("Trapdoor Control/Trapdoor Opened", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual), new GameObjectActiveObstacleInfo("Trapdoor Control/Audio Understore Atmos", Active: true, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Under_07b__left1 { get; } = new DoorData(new TransitionKey("Under_07b", "left1"), new TransitionKey("Song_01", "right2")); public static DoorData Under_07c__left2 { get; } = new DoorData(new TransitionKey("Under_07c", "left2"), new TransitionKey("Under_02", "right1")); public static DoorData Under_07c__top1 { get; } = new DoorData(new TransitionKey("Under_07c", "top1"), new TransitionKey("Under_07b", "bot1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Bot Blocker", ObstacleType.OneWayMechanismEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new BehaviourObstacleInfo("top1", Enable: false, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Under_08__bot1 { get; } = new DoorData(new TransitionKey("Under_08", "bot1"), new TransitionKey("Under_06", "top1")); public static DoorData Under_08__top1 { get; } = new DoorData(new TransitionKey("Under_08", "top1"), new TransitionKey("Ward_02", "bot1")); public static DoorData Under_10__left1 { get; } = new DoorData(new TransitionKey("Under_10", "left1"), new TransitionKey("Under_05", "right3")); public static DoorData Under_10__right1 { get; } = new DoorData(new TransitionKey("Under_10", "right1"), new TransitionKey("Under_13", "left2")); public static DoorData Under_11__left1 { get; } = new DoorData(new TransitionKey("Under_11", "left1"), new TransitionKey("Under_05", "right1")); public static DoorData Under_11__right1 { get; } = new DoorData(new TransitionKey("Under_11", "right1"), new TransitionKey("Under_13", "left1")); public static DoorData Under_12__left1 { get; } = new DoorData(new TransitionKey("Under_12", "left1"), new TransitionKey("Under_05", "right2")); public static DoorData Under_13__left1 { get; } = new DoorData(new TransitionKey("Under_13", "left1"), new TransitionKey("Under_11", "right1")); public static DoorData Under_13__left2 { get; } = new DoorData(new TransitionKey("Under_13", "left2"), new TransitionKey("Under_10", "right1")); public static DoorData Under_13__left3 { get; } = new DoorData(new TransitionKey("Under_13", "left3"), new TransitionKey("Under_21", "right1")); public static DoorData Under_13__left4 { get; } = new DoorData(new TransitionKey("Under_13", "left4"), new TransitionKey("Under_22", "right1")); public static DoorData Under_13__right1 { get; } = new DoorData(new TransitionKey("Under_13", "right1"), new TransitionKey("Under_17", "left1")); public static DoorData Under_13__right2 { get; } = new DoorData(new TransitionKey("Under_13", "right2"), new TransitionKey("Under_18", "left1")); public static DoorData Under_13__right3 { get; } = new DoorData(new TransitionKey("Under_13", "right3"), new TransitionKey("Under_19", "left1")); public static DoorData Under_14__left1 { get; } = new DoorData(new TransitionKey("Under_14", "left1"), new TransitionKey("Under_02", "right4")); public static DoorData Under_16__right1 { get; } = new DoorData(new TransitionKey("Under_16", "right1"), new TransitionKey("Under_02", "left3")); public static DoorData Under_17__bot1 { get; } = new DoorData(new TransitionKey("Under_17", "bot1"), new TransitionKey("Under_18", "top1")); public static DoorData Under_17__bot2 { get; } = new DoorData(new TransitionKey("Under_17", "bot2"), new TransitionKey("Under_18", "top2")); public static DoorData Under_17__door1 { get; } = new DoorData(new TransitionKey("Under_17", "door1"), new TransitionKey("Under_20", "left1")) { Obstacles = new ReadOnlyCollection(new List(3) { new BehaviourObstacleInfo("Architect Shrine Door", Enable: false, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsExitAccess), new BehaviourObstacleInfo("Architect Shrine Door/door1", Enable: true, ObstacleType.OpenAfterProgression, ObstacleSeverity.LimitsExitAccess), new GameObjectActiveObstacleInfo("Architect Shrine Door/door", Active: false, ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Under_17__left1 { get; } = new DoorData(new TransitionKey("Under_17", "left1"), new TransitionKey("Under_13", "right1")); public static DoorData Under_17__right1 { get; } = new DoorData(new TransitionKey("Under_17", "right1"), new TransitionKey("Library_11b", "left3")); public static DoorData Under_17__top1 { get; } = new DoorData(new TransitionKey("Under_17", "top1"), new TransitionKey("Ward_06", "bot1")); public static DoorData Under_18__left1 { get; } = new DoorData(new TransitionKey("Under_18", "left1"), new TransitionKey("Under_13", "right2")); public static DoorData Under_18__right1 { get; } = new DoorData(new TransitionKey("Under_18", "right1"), new TransitionKey("Under_19c", "left1")); public static DoorData Under_18__top1 { get; } = new DoorData(new TransitionKey("Under_18", "top1"), new TransitionKey("Under_17", "bot1")); public static DoorData Under_18__top2 { get; } = new DoorData(new TransitionKey("Under_18", "top2"), new TransitionKey("Under_17", "bot2")) { Obstacles = new ReadOnlyCollection(new List(1) { new FsmEventObstacleInfo("Battle Scene/Gates/Pipe_Vent_Hatch (1)", "Battle Gate Control", "BG QUICK OPEN", ObstacleType.OpenAfterProgression, ObstacleSeverity.InterruptsEntry) }) }; public static DoorData Under_19__left1 { get; } = new DoorData(new TransitionKey("Under_19", "left1"), new TransitionKey("Under_13", "right3")); public static DoorData Under_19__top1 { get; } = new DoorData(new TransitionKey("Under_19", "top1"), new TransitionKey("Under_19c", "bot1")); public static DoorData Under_19b__right1 { get; } = new DoorData(new TransitionKey("Under_19b", "right1"), new TransitionKey("Under_19c", "left2")); public static DoorData Under_19c__bot1 { get; } = new DoorData(new TransitionKey("Under_19c", "bot1"), new TransitionKey("Under_19", "top1")); public static DoorData Under_19c__left1 { get; } = new DoorData(new TransitionKey("Under_19c", "left1"), new TransitionKey("Under_18", "right1")); public static DoorData Under_19c__left2 { get; } = new DoorData(new TransitionKey("Under_19c", "left2"), new TransitionKey("Under_19b", "right1")); public static DoorData Under_20__door_memoryEnd { get; } = new DoorData(new TransitionKey("Under_20", "door_memoryEnd")); public static DoorData Under_20__left1 { get; } = new DoorData(new TransitionKey("Under_20", "left1"), new TransitionKey("Under_17", "door1")); public static DoorData Under_21__right1 { get; } = new DoorData(new TransitionKey("Under_21", "right1"), new TransitionKey("Under_13", "left3")); public static DoorData Under_22__door_tubeEnter { get; } = new DoorData(new TransitionKey("Under_22", "door_tubeEnter")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("City Travel Tube/tube_toll_machine", ObstacleType.Other, ObstacleSeverity.AbnormalVisual) }) }; public static DoorData Under_22__right1 { get; } = new DoorData(new TransitionKey("Under_22", "right1"), new TransitionKey("Under_13", "left4")); public static DoorData Under_23__bot1 { get; } = new DoorData(new TransitionKey("Under_23", "bot1"), new TransitionKey("Wisp_09", "top1")); public static DoorData Under_23__right1 { get; } = new DoorData(new TransitionKey("Under_23", "right1"), new TransitionKey("Under_05", "left3")); public static DoorData Under_27__left1 { get; } = new DoorData(new TransitionKey("Under_27", "left1"), new TransitionKey("Shellwood_22", "right1")); public static DoorData Under_27__right1 { get; } = new DoorData(new TransitionKey("Under_27", "right1"), new TransitionKey("Under_01", "left2")); public static DoorData Under_27__right2 { get; } = new DoorData(new TransitionKey("Under_27", "right2"), new TransitionKey("Under_01", "left3")) { Obstacles = new ReadOnlyCollection(new List(3) { new ObstacleInfo("Group (1)/Shellwood Twig Wall (1)", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new TransitionObstacleInfo("Group (1)/right2", Enabled: true, ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsExitAccess), new BehaviourObstacleInfo("Group (1)/right2", Enable: true, ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsExitAccess) }) }; public static DoorData Ward_01__left1 { get; } = new DoorData(new TransitionKey("Ward_01", "left1"), new TransitionKey("Song_05", "right3")); public static DoorData Ward_01__left2 { get; } = new DoorData(new TransitionKey("Ward_01", "left2"), new TransitionKey("Ward_02b", "right1")); public static DoorData Ward_01__left3 { get; } = new DoorData(new TransitionKey("Ward_01", "left3"), new TransitionKey("Ward_02", "right1")); public static DoorData Ward_01__right1 { get; } = new DoorData(new TransitionKey("Ward_01", "right1"), new TransitionKey("Ward_03", "left1")); public static DoorData Ward_01__right2 { get; } = new DoorData(new TransitionKey("Ward_01", "right2"), new TransitionKey("Ward_04", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Ward_01__right3 { get; } = new DoorData(new TransitionKey("Ward_01", "right3"), new TransitionKey("Ward_05", "left1")); public static DoorData Ward_02__bot1 { get; } = new DoorData(new TransitionKey("Ward_02", "bot1"), new TransitionKey("Under_08", "top1")); public static DoorData Ward_02__door_cinematicEnd { get; } = new DoorData(new TransitionKey("Ward_02", "door_cinematicEnd")); public static DoorData Ward_02__right1 { get; } = new DoorData(new TransitionKey("Ward_02", "right1"), new TransitionKey("Ward_01", "left3")); public static DoorData Ward_02__top1 { get; } = new DoorData(new TransitionKey("Ward_02", "top1"), new TransitionKey("Ward_02b", "bot1")); public static DoorData Ward_02b__bot1 { get; } = new DoorData(new TransitionKey("Ward_02b", "bot1"), new TransitionKey("Ward_02", "top1")); public static DoorData Ward_02b__right1 { get; } = new DoorData(new TransitionKey("Ward_02b", "right1"), new TransitionKey("Ward_01", "left2")); public static DoorData Ward_03__bot1 { get; } = new DoorData(new TransitionKey("Ward_03", "bot1"), new TransitionKey("Ward_06", "top1")); public static DoorData Ward_03__door1 { get; } = new DoorData(new TransitionKey("Ward_03", "door1"), new TransitionKey("Ward_09", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new TestObjObstacleInfo("Sherma_Door_Open", Activate: true, ObstacleType.OneWayBreakableEntry, ObstacleSeverity.InterruptsEntry) }) }; public static DoorData Ward_03__left1 { get; } = new DoorData(new TransitionKey("Ward_03", "left1"), new TransitionKey("Ward_01", "right1")); public static DoorData Ward_03__top1 { get; } = new DoorData(new TransitionKey("Ward_03", "top1"), new TransitionKey("Ward_07", "bot1")); public static DoorData Ward_04__left1 { get; } = new DoorData(new TransitionKey("Ward_04", "left1"), new TransitionKey("Ward_01", "right2")); public static DoorData Ward_05__left1 { get; } = new DoorData(new TransitionKey("Ward_05", "left1"), new TransitionKey("Ward_01", "right3")); public static DoorData Ward_06__bot1 { get; } = new DoorData(new TransitionKey("Ward_06", "bot1"), new TransitionKey("Under_17", "top1")); public static DoorData Ward_06__top1 { get; } = new DoorData(new TransitionKey("Ward_06", "top1"), new TransitionKey("Ward_03", "bot1")); public static DoorData Ward_07__bot1 { get; } = new DoorData(new TransitionKey("Ward_07", "bot1"), new TransitionKey("Ward_03", "top1")); public static DoorData Ward_09__left1 { get; } = new DoorData(new TransitionKey("Ward_09", "left1"), new TransitionKey("Ward_03", "door1")); public static DoorData Weave_02__left2 { get; } = new DoorData(new TransitionKey("Weave_02", "left2"), new TransitionKey("Weave_04", "right2")); public static DoorData Weave_02__left3 { get; } = new DoorData(new TransitionKey("Weave_02", "left3"), new TransitionKey("Weave_11", "right1")); public static DoorData Weave_02__left4 { get; } = new DoorData(new TransitionKey("Weave_02", "left4"), new TransitionKey("Weave_07", "right1")); public static DoorData Weave_02__right1 { get; } = new DoorData(new TransitionKey("Weave_02", "right1"), new TransitionKey("Weave_12", "left1")); public static DoorData Weave_02__right2 { get; } = new DoorData(new TransitionKey("Weave_02", "right2"), new TransitionKey("Weave_13", "left1")); public static DoorData Weave_02__right3 { get; } = new DoorData(new TransitionKey("Weave_02", "right3"), new TransitionKey("Weave_10", "left1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("crest_shrine_break_tube", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()) }) }; public static DoorData Weave_03__right1 { get; } = new DoorData(new TransitionKey("Weave_03", "right1"), new TransitionKey("Weave_07", "left1")); public static DoorData Weave_04__left1 { get; } = new DoorData(new TransitionKey("Weave_04", "left1"), new TransitionKey("Tut_01b", "right1")); public static DoorData Weave_04__right2 { get; } = new DoorData(new TransitionKey("Weave_04", "right2"), new TransitionKey("Weave_02", "left2")); public static DoorData Weave_05b__left1 { get; } = new DoorData(new TransitionKey("Weave_05b", "left1"), new TransitionKey("Weave_08", "right1")); public static DoorData Weave_07__left1 { get; } = new DoorData(new TransitionKey("Weave_07", "left1"), new TransitionKey("Weave_03", "right1")); public static DoorData Weave_07__right1 { get; } = new DoorData(new TransitionKey("Weave_07", "right1"), new TransitionKey("Weave_02", "left4")); public static DoorData Weave_08__left1 { get; } = new DoorData(new TransitionKey("Weave_08", "left1"), new TransitionKey("Weave_13", "right1")); public static DoorData Weave_08__right1 { get; } = new DoorData(new TransitionKey("Weave_08", "right1"), new TransitionKey("Weave_05b", "left1")); public static DoorData Weave_10__left1 { get; } = new DoorData(new TransitionKey("Weave_10", "left1"), new TransitionKey("Weave_02", "right3")); public static DoorData Weave_11__right1 { get; } = new DoorData(new TransitionKey("Weave_11", "right1"), new TransitionKey("Weave_02", "left3")); public static DoorData Weave_11__top1 { get; } = new DoorData(new TransitionKey("Weave_11", "top1"), new TransitionKey("Weave_14", "bot1")); public static DoorData Weave_12__left1 { get; } = new DoorData(new TransitionKey("Weave_12", "left1"), new TransitionKey("Weave_02", "right1")); public static DoorData Weave_13__left1 { get; } = new DoorData(new TransitionKey("Weave_13", "left1"), new TransitionKey("Weave_02", "right2")); public static DoorData Weave_13__right1 { get; } = new DoorData(new TransitionKey("Weave_13", "right1"), new TransitionKey("Weave_08", "left1")); public static DoorData Weave_14__bot1 { get; } = new DoorData(new TransitionKey("Weave_14", "bot1"), new TransitionKey("Weave_11", "top1")); public static DoorData Wisp_02__left1 { get; } = new DoorData(new TransitionKey("Wisp_02", "left1"), new TransitionKey("Belltown_08", "right1")); public static DoorData Wisp_02__right1 { get; } = new DoorData(new TransitionKey("Wisp_02", "right1"), new TransitionKey("Wisp_04", "left1")); public static DoorData Wisp_02__top1 { get; } = new DoorData(new TransitionKey("Wisp_02", "top1"), new TransitionKey("Wisp_05", "bot1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("plank_wall_cluster_swamp", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.InterruptsEntry, new PersistentBoolSaveInfo()) }) }; public static DoorData Wisp_03__door1 { get; } = new DoorData(new TransitionKey("Wisp_03", "door1"), new TransitionKey("Belltown_Room_doctor", "left1")); public static DoorData Wisp_03__right1 { get; } = new DoorData(new TransitionKey("Wisp_03", "right1"), new TransitionKey("Greymoor_06", "left1")); public static DoorData Wisp_03__top1 { get; } = new DoorData(new TransitionKey("Wisp_03", "top1"), new TransitionKey("Wisp_06", "bot1")) { Obstacles = new ReadOnlyCollection(new List(1) { new ObstacleInfo("plank_wall_cluster", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.InterruptsEntry, new PersistentBoolSaveInfo()) }) }; public static DoorData Wisp_04__bot1 { get; } = new DoorData(new TransitionKey("Wisp_04", "bot1"), new TransitionKey("Greymoor_06", "top1")); public static DoorData Wisp_04__left1 { get; } = new DoorData(new TransitionKey("Wisp_04", "left1"), new TransitionKey("Wisp_02", "right1")); public static DoorData Wisp_04__right1 { get; } = new DoorData(new TransitionKey("Wisp_04", "right1"), new TransitionKey("Wisp_08", "left1")); public static DoorData Wisp_05__bot1 { get; } = new DoorData(new TransitionKey("Wisp_05", "bot1"), new TransitionKey("Wisp_02", "top1")); public static DoorData Wisp_05__left1 { get; } = new DoorData(new TransitionKey("Wisp_05", "left1"), new TransitionKey("Wisp_09", "right1")) { Obstacles = new ReadOnlyCollection(new List(2) { new ObstacleInfo("Breakable Wall", ObstacleType.OneWayBreakableEntry, ObstacleSeverity.LimitsRoomAccess | ObstacleSeverity.LimitsVisibility, new PersistentBoolSaveInfo()), new UnmaskerInfo("Masks") }) }; public static DoorData Wisp_06__bot1 { get; } = new DoorData(new TransitionKey("Wisp_06", "bot1"), new TransitionKey("Wisp_03", "top1")); public static DoorData Wisp_07__left1 { get; } = new DoorData(new TransitionKey("Wisp_07", "left1"), new TransitionKey("Wisp_08", "right1")); public static DoorData Wisp_08__left1 { get; } = new DoorData(new TransitionKey("Wisp_08", "left1"), new TransitionKey("Wisp_04", "right1")); public static DoorData Wisp_08__right1 { get; } = new DoorData(new TransitionKey("Wisp_08", "right1"), new TransitionKey("Wisp_07", "left1")); public static DoorData Wisp_09__right1 { get; } = new DoorData(new TransitionKey("Wisp_09", "right1"), new TransitionKey("Wisp_05", "left1")); public static DoorData Wisp_09__top1 { get; } = new DoorData(new TransitionKey("Wisp_09", "top1"), new TransitionKey("Under_23", "bot1")); } public static class BaseRoomList { public static RoomData Abandoned_town { get; } = new RoomData { Name = "Abandoned_town", MapZone = (MapZone)39, MapArea = "Cradle", TitledArea = "Nameless Town", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Abandoned_town__bot1, BaseGateList.Abandoned_town__door1 }) }; public static RoomData Abyss_01 { get; } = new RoomData { Name = "Abyss_01", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Abyss_01__left1, BaseGateList.Abyss_01__right2, BaseGateList.Abyss_01__right3, BaseGateList.Abyss_01__right4 }) }; public static RoomData Abyss_02 { get; } = new RoomData { Name = "Abyss_02", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Abyss_02__left1, BaseGateList.Abyss_02__right1 }) }; public static RoomData Abyss_02b { get; } = new RoomData { Name = "Abyss_02b", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Abyss_02b__left2, BaseGateList.Abyss_02b__right1, BaseGateList.Abyss_02b__top1 }) }; public static RoomData Abyss_03 { get; } = new RoomData { Name = "Abyss_03", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Abyss_03__door1, BaseGateList.Abyss_03__door2, BaseGateList.Abyss_03__left1, BaseGateList.Abyss_03__left2 }) }; public static RoomData Abyss_04 { get; } = new RoomData { Name = "Abyss_04", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Abyss_04__left1 }) }; public static RoomData Abyss_05 { get; } = new RoomData { Name = "Abyss_05", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Abyss_05__left2, BaseGateList.Abyss_05__right1 }) }; public static RoomData Abyss_06 { get; } = new RoomData { Name = "Abyss_06", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Abyss_06__right1 }) }; public static RoomData Abyss_07 { get; } = new RoomData { Name = "Abyss_07", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Abyss_07__left1, BaseGateList.Abyss_07__right1 }) }; public static RoomData Abyss_08 { get; } = new RoomData { Name = "Abyss_08", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Abyss_08__left1 }) }; public static RoomData Abyss_09 { get; } = new RoomData { Name = "Abyss_09", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Abyss_09__bot1, BaseGateList.Abyss_09__top1 }) }; public static RoomData Abyss_11 { get; } = new RoomData { Name = "Abyss_11", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Abyss_11__bot1, BaseGateList.Abyss_11__right1 }) }; public static RoomData Abyss_12 { get; } = new RoomData { Name = "Abyss_12", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Abyss_12__left1, BaseGateList.Abyss_12__right2 }) }; public static RoomData Abyss_13 { get; } = new RoomData { Name = "Abyss_13", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Abyss_13__left1, BaseGateList.Abyss_13__right1, BaseGateList.Abyss_13__top1 }) }; public static RoomData Abyss_Cocoon { get; } = new RoomData { Name = "Abyss_Cocoon", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Abyss_Cocoon__door_entry }) }; public static RoomData Ant_02 { get; } = new RoomData { Name = "Ant_02", MapZone = (MapZone)11, MapArea = "Hunter's March", TitledArea = "Hunter’s March", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Ant_02__left1, BaseGateList.Ant_02__right1 }) }; public static RoomData Ant_03 { get; } = new RoomData { Name = "Ant_03", MapZone = (MapZone)11, MapArea = "Hunter's March", TitledArea = "Hunter’s March", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Ant_03__left2, BaseGateList.Ant_03__right3 }) }; public static RoomData Ant_04 { get; } = new RoomData { Name = "Ant_04", MapZone = (MapZone)11, MapArea = "Hunter's March", TitledArea = "Hunter’s March", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Ant_04__left1, BaseGateList.Ant_04__right1 }) }; public static RoomData Ant_04_left { get; } = new RoomData { Name = "Ant_04_left", MapZone = (MapZone)11, MapArea = "Hunter's March", TitledArea = "Hunter’s March", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Ant_04_left__left1, BaseGateList.Ant_04_left__right1 }) }; public static RoomData Ant_04_mid { get; } = new RoomData { Name = "Ant_04_mid", MapZone = (MapZone)11, MapArea = "Hunter's March", TitledArea = "Hunter’s March", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Ant_04_mid__left1, BaseGateList.Ant_04_mid__right1 }) }; public static RoomData Ant_05b { get; } = new RoomData { Name = "Ant_05b", MapZone = (MapZone)11, MapArea = "Hunter's March", TitledArea = "Hunter’s March", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Ant_05b__bot1, BaseGateList.Ant_05b__bot2, BaseGateList.Ant_05b__right1 }) }; public static RoomData Ant_05c { get; } = new RoomData { Name = "Ant_05c", MapZone = (MapZone)11, MapArea = "Hunter's March", TitledArea = "Hunter’s March", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Ant_05c__left1, BaseGateList.Ant_05c__right1 }) }; public static RoomData Ant_08 { get; } = new RoomData { Name = "Ant_08", MapZone = (MapZone)11, MapArea = "Greymoor", TitledArea = "Halfway Home", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Ant_08__top1 }) }; public static RoomData Ant_09 { get; } = new RoomData { Name = "Ant_09", MapZone = (MapZone)11, MapArea = "Hunter's March", TitledArea = "Hunter’s March", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Ant_09__left1, BaseGateList.Ant_09__right1 }) }; public static RoomData Ant_14 { get; } = new RoomData { Name = "Ant_14", MapZone = (MapZone)11, MapArea = "Hunter's March", TitledArea = "Hunter’s March", Gates = new ReadOnlyCollection(new List(7) { BaseGateList.Ant_14__left1, BaseGateList.Ant_14__left2, BaseGateList.Ant_14__left3, BaseGateList.Ant_14__left4, BaseGateList.Ant_14__left5, BaseGateList.Ant_14__right2, BaseGateList.Ant_14__right3 }) }; public static RoomData Ant_17 { get; } = new RoomData { Name = "Ant_17", MapZone = (MapZone)11, MapArea = "Hunter's March", TitledArea = "Hunter’s March", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Ant_17__right1 }) }; public static RoomData Ant_19 { get; } = new RoomData { Name = "Ant_19", MapZone = (MapZone)11, MapArea = "Hunter's March", TitledArea = "Chapel of the Beast", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Ant_19__door_memoryEnd, BaseGateList.Ant_19__left1 }) }; public static RoomData Ant_20 { get; } = new RoomData { Name = "Ant_20", MapZone = (MapZone)11, MapArea = "Hunter's March", TitledArea = "Hunter’s March", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Ant_20__door1, BaseGateList.Ant_20__left1 }) }; public static RoomData Ant_21 { get; } = new RoomData { Name = "Ant_21", MapZone = (MapZone)11, MapArea = "Hunter's March", TitledArea = "Hunter’s March", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Ant_21__right1 }) }; public static RoomData Ant_Merchant { get; } = new RoomData { Name = "Ant_Merchant", MapZone = (MapZone)11, MapArea = "Hunter's March", TitledArea = "Hunter’s March", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Ant_Merchant__right1 }) }; public static RoomData Ant_Queen { get; } = new RoomData { Name = "Ant_Queen", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Ant_Queen__door_wakeOnGround, BaseGateList.Ant_Queen__left1 }) }; public static RoomData Aqueduct_01 { get; } = new RoomData { Name = "Aqueduct_01", MapZone = (MapZone)38, MapArea = "Putrified Ducts", TitledArea = "Putrified Ducts", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Aqueduct_01__left1, BaseGateList.Aqueduct_01__right1 }) }; public static RoomData Aqueduct_02 { get; } = new RoomData { Name = "Aqueduct_02", MapZone = (MapZone)38, MapArea = "Putrified Ducts", TitledArea = "Putrified Ducts", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Aqueduct_02__left1, BaseGateList.Aqueduct_02__left2, BaseGateList.Aqueduct_02__left3, BaseGateList.Aqueduct_02__right1, BaseGateList.Aqueduct_02__right2, BaseGateList.Aqueduct_02__right3 }) }; public static RoomData Aqueduct_03 { get; } = new RoomData { Name = "Aqueduct_03", MapZone = (MapZone)38, MapArea = "Putrified Ducts", TitledArea = "Putrified Ducts", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Aqueduct_03__left1, BaseGateList.Aqueduct_03__right1, BaseGateList.Aqueduct_03__top1 }) }; public static RoomData Aqueduct_04 { get; } = new RoomData { Name = "Aqueduct_04", MapZone = (MapZone)38, MapArea = "Putrified Ducts", TitledArea = "Putrified Ducts", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Aqueduct_04__bot1, BaseGateList.Aqueduct_04__door1, BaseGateList.Aqueduct_04__right1 }) }; public static RoomData Aqueduct_05 { get; } = new RoomData { Name = "Aqueduct_05", MapZone = (MapZone)38, MapArea = "Putrified Ducts", TitledArea = "Putrified Ducts", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Aqueduct_05__door_caravanTravelEnd, BaseGateList.Aqueduct_05__door2, BaseGateList.Aqueduct_05__left1 }) }; public static RoomData Aqueduct_06 { get; } = new RoomData { Name = "Aqueduct_06", MapZone = (MapZone)38, MapArea = "Putrified Ducts", TitledArea = "Putrified Ducts", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Aqueduct_06__bot1, BaseGateList.Aqueduct_06__left1, BaseGateList.Aqueduct_06__left2 }) }; public static RoomData Aqueduct_07 { get; } = new RoomData { Name = "Aqueduct_07", MapZone = (MapZone)38, MapArea = "Putrified Ducts", TitledArea = "Putrified Ducts", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Aqueduct_07__right1 }) }; public static RoomData Aqueduct_08 { get; } = new RoomData { Name = "Aqueduct_08", MapZone = (MapZone)38, MapArea = "Putrified Ducts", TitledArea = "Putrified Ducts", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Aqueduct_08__left1, BaseGateList.Aqueduct_08__right1 }) }; public static RoomData Arborium_01 { get; } = new RoomData { Name = "Arborium_01", MapZone = (MapZone)6, MapArea = "Memorium", TitledArea = "Memorium", Gates = new ReadOnlyCollection(new List(9) { BaseGateList.Arborium_01__bot1, BaseGateList.Arborium_01__left1, BaseGateList.Arborium_01__left2, BaseGateList.Arborium_01__left3, BaseGateList.Arborium_01__right1, BaseGateList.Arborium_01__right2, BaseGateList.Arborium_01__right3, BaseGateList.Arborium_01__right4, BaseGateList.Arborium_01__right5 }) }; public static RoomData Arborium_02 { get; } = new RoomData { Name = "Arborium_02", MapZone = (MapZone)6, MapArea = "Memorium", TitledArea = "Memorium", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Arborium_02__left1, BaseGateList.Arborium_02__right1 }) }; public static RoomData Arborium_03 { get; } = new RoomData { Name = "Arborium_03", MapZone = (MapZone)6, MapArea = "Memorium", TitledArea = "Memorium", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Arborium_03__left1, BaseGateList.Arborium_03__left2, BaseGateList.Arborium_03__left3, BaseGateList.Arborium_03__left4, BaseGateList.Arborium_03__right1, BaseGateList.Arborium_03__right2 }) }; public static RoomData Arborium_04 { get; } = new RoomData { Name = "Arborium_04", MapZone = (MapZone)28, MapArea = "Memorium", TitledArea = "Memorium", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Arborium_04__left1, BaseGateList.Arborium_04__right1 }) }; public static RoomData Arborium_05 { get; } = new RoomData { Name = "Arborium_05", MapZone = (MapZone)6, MapArea = "Memorium", TitledArea = "Memorium", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Arborium_05__right1, BaseGateList.Arborium_05__top1 }) }; public static RoomData Arborium_06 { get; } = new RoomData { Name = "Arborium_06", MapZone = (MapZone)6, MapArea = "Memorium", TitledArea = "Memorium", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Arborium_06__bot1, BaseGateList.Arborium_06__left1, BaseGateList.Arborium_06__right1 }) }; public static RoomData Arborium_07 { get; } = new RoomData { Name = "Arborium_07", MapZone = (MapZone)6, MapArea = "Memorium", TitledArea = "Memorium", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Arborium_07__left1, BaseGateList.Arborium_07__top1 }) }; public static RoomData Arborium_08 { get; } = new RoomData { Name = "Arborium_08", MapZone = (MapZone)6, MapArea = "Memorium", TitledArea = "Memorium", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Arborium_08__bot1, BaseGateList.Arborium_08__left1 }) }; public static RoomData Arborium_09 { get; } = new RoomData { Name = "Arborium_09", MapZone = (MapZone)6, MapArea = "Memorium", TitledArea = "Memorium", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Arborium_09__right1, BaseGateList.Arborium_09__right2 }) }; public static RoomData Arborium_10 { get; } = new RoomData { Name = "Arborium_10", MapZone = (MapZone)6, MapArea = "Memorium", TitledArea = "Memorium", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Arborium_10__left1 }) }; public static RoomData Arborium_11 { get; } = new RoomData { Name = "Arborium_11", MapZone = (MapZone)6, MapArea = "Memorium", TitledArea = "Memorium", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Arborium_11__left1, BaseGateList.Arborium_11__right1 }) }; public static RoomData Arborium_Tube { get; } = new RoomData { Name = "Arborium_Tube", MapZone = (MapZone)6, MapArea = "Memorium", TitledArea = "Memorium", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Arborium_Tube__door_tubeEnter, BaseGateList.Arborium_Tube__right1 }) }; public static RoomData Aspid_01 { get; } = new RoomData { Name = "Aspid_01", MapZone = (MapZone)13, MapArea = "Mosslands", TitledArea = "Bone Bottom", Gates = new ReadOnlyCollection(new List(20) { BaseGateList.Aspid_01__bot1, BaseGateList.Aspid_01__bot2, BaseGateList.Aspid_01__bot3, BaseGateList.Aspid_01__bot4, BaseGateList.Aspid_01__bot5, BaseGateList.Aspid_01__bot6, BaseGateList.Aspid_01__bot7, BaseGateList.Aspid_01__bot8, BaseGateList.Aspid_01__left1, BaseGateList.Aspid_01__left2, BaseGateList.Aspid_01__right2, BaseGateList.Aspid_01__right3, BaseGateList.Aspid_01__right4, BaseGateList.Aspid_01__top1, BaseGateList.Aspid_01__top2, BaseGateList.Aspid_01__top3, BaseGateList.Aspid_01__top4, BaseGateList.Aspid_01__top5, BaseGateList.Aspid_01__top6, BaseGateList.Aspid_01__top7 }) }; public static RoomData Bellshrine { get; } = new RoomData { Name = "Bellshrine", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bellshrine__left1, BaseGateList.Bellshrine__right1 }) }; public static RoomData Bellshrine_02 { get; } = new RoomData { Name = "Bellshrine_02", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bellshrine_02__left1, BaseGateList.Bellshrine_02__right1 }) }; public static RoomData Bellshrine_03 { get; } = new RoomData { Name = "Bellshrine_03", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bellshrine_03__left1, BaseGateList.Bellshrine_03__right1 }) }; public static RoomData Bellshrine_05 { get; } = new RoomData { Name = "Bellshrine_05", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bellshrine_05__left1, BaseGateList.Bellshrine_05__right1 }) }; public static RoomData Bellshrine_Coral { get; } = new RoomData { Name = "Bellshrine_Coral", MapZone = (MapZone)32, MapArea = "Sands of Karak", TitledArea = "Sands of Karak", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bellshrine_Coral__left1 }) }; public static RoomData Bellshrine_Enclave { get; } = new RoomData { Name = "Bellshrine_Enclave", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "First Shrine", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bellshrine_Enclave__left1 }) }; public static RoomData Belltown { get; } = new RoomData { Name = "Belltown", MapZone = (MapZone)10, MapArea = "Bellhart", TitledArea = "Bellhart", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Belltown__door1, BaseGateList.Belltown__door3, BaseGateList.Belltown__door4, BaseGateList.Belltown__door5, BaseGateList.Belltown__left3, BaseGateList.Belltown__right2 }) }; public static RoomData Belltown_04 { get; } = new RoomData { Name = "Belltown_04", MapZone = (MapZone)10, MapArea = "Bellhart", TitledArea = "Bellhart", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Belltown_04__bot1, BaseGateList.Belltown_04__left1, BaseGateList.Belltown_04__left2 }) }; public static RoomData Belltown_06 { get; } = new RoomData { Name = "Belltown_06", MapZone = (MapZone)10, MapArea = "Bellhart", TitledArea = "Bellhart", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Belltown_06__left1, BaseGateList.Belltown_06__left3, BaseGateList.Belltown_06__right1 }) }; public static RoomData Belltown_07 { get; } = new RoomData { Name = "Belltown_07", MapZone = (MapZone)10, MapArea = "Bellhart", TitledArea = "Bellhart", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Belltown_07__left1, BaseGateList.Belltown_07__right1 }) }; public static RoomData Belltown_08 { get; } = new RoomData { Name = "Belltown_08", MapZone = (MapZone)35, MapArea = "Bellhart", TitledArea = "Bellhart", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Belltown_08__right1 }) }; public static RoomData Belltown_basement { get; } = new RoomData { Name = "Belltown_basement", MapZone = (MapZone)10, MapArea = "Bellhart", TitledArea = "Bellhart", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Belltown_basement__door_fastTravelExit, BaseGateList.Belltown_basement__bot1, BaseGateList.Belltown_basement__left1 }) }; public static RoomData Belltown_basement_03 { get; } = new RoomData { Name = "Belltown_basement_03", MapZone = (MapZone)10, MapArea = "Bellhart", TitledArea = "Bellhart", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Belltown_basement_03__left1, BaseGateList.Belltown_basement_03__top1 }) }; public static RoomData Belltown_Room_doctor { get; } = new RoomData { Name = "Belltown_Room_doctor", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Belltown_Room_doctor__left1 }) }; public static RoomData Belltown_Room_pinsmith { get; } = new RoomData { Name = "Belltown_Room_pinsmith", MapZone = (MapZone)10, MapArea = "Bellhart", TitledArea = "Bellhart", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Belltown_Room_pinsmith__left1 }) }; public static RoomData Belltown_Room_Relic { get; } = new RoomData { Name = "Belltown_Room_Relic", MapZone = (MapZone)10, MapArea = "Bellhart", TitledArea = "Bellhart", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Belltown_Room_Relic__left1 }) }; public static RoomData Belltown_Room_shellwood { get; } = new RoomData { Name = "Belltown_Room_shellwood", MapZone = (MapZone)10, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Belltown_Room_shellwood__left1 }) }; public static RoomData Belltown_Room_Spare { get; } = new RoomData { Name = "Belltown_Room_Spare", MapZone = (MapZone)10, MapArea = "Bellhart", TitledArea = "Bellhart", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Belltown_Room_Spare__left1 }) }; public static RoomData Belltown_Shrine { get; } = new RoomData { Name = "Belltown_Shrine", MapZone = (MapZone)10, MapArea = "Bellhart", TitledArea = "Bellhart", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Belltown_Shrine__door_wakeOnGround, BaseGateList.Belltown_Shrine__right1, BaseGateList.Belltown_Shrine__top1 }) }; public static RoomData Bellway_01 { get; } = new RoomData { Name = "Bellway_01", MapZone = (MapZone)12, MapArea = "Mosslands", TitledArea = "Bone Bottom", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bellway_01__door_fastTravelExit, BaseGateList.Bellway_01__left1 }) }; public static RoomData Bellway_02 { get; } = new RoomData { Name = "Bellway_02", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bellway_02__door_fastTravelExit, BaseGateList.Bellway_02__left1, BaseGateList.Bellway_02__right1 }) }; public static RoomData Bellway_03 { get; } = new RoomData { Name = "Bellway_03", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bellway_03__door_fastTravelExit, BaseGateList.Bellway_03__left1, BaseGateList.Bellway_03__right1 }) }; public static RoomData Bellway_04 { get; } = new RoomData { Name = "Bellway_04", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bellway_04__door_fastTravelExit, BaseGateList.Bellway_04__bot1, BaseGateList.Bellway_04__left1 }) }; public static RoomData Bellway_08 { get; } = new RoomData { Name = "Bellway_08", MapZone = (MapZone)32, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bellway_08__door_fastTravelExit, BaseGateList.Bellway_08__left1, BaseGateList.Bellway_08__right1 }) }; public static RoomData Bellway_Aqueduct { get; } = new RoomData { Name = "Bellway_Aqueduct", MapZone = (MapZone)38, MapArea = "Putrified Ducts", TitledArea = "Putrified Ducts", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bellway_Aqueduct__door_fastTravelExit, BaseGateList.Bellway_Aqueduct__left1, BaseGateList.Bellway_Aqueduct__right1 }) }; public static RoomData Bellway_Centipede_Arena { get; } = new RoomData { Name = "Bellway_Centipede_Arena", MapZone = (MapZone)10, MapArea = MapAreaNames.Unknown, TitledArea = TitledAreaNames.Unknown, Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bellway_Centipede_Arena__top1 }) }; public static RoomData Bellway_City { get; } = new RoomData { Name = "Bellway_City", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Bellway_City__door_fastTravelExit, BaseGateList.Bellway_City__door_tubeEnter, BaseGateList.Bellway_City__left1, BaseGateList.Bellway_City__right1 }) }; public static RoomData Bellway_Peak { get; } = new RoomData { Name = "Bellway_Peak", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Bellway_Peak__left1, BaseGateList.Bellway_Peak__left2, BaseGateList.Bellway_Peak__right1, BaseGateList.Bellway_Peak__right2, BaseGateList.Bellway_Peak__top1 }) }; public static RoomData Bellway_Peak_02 { get; } = new RoomData { Name = "Bellway_Peak_02", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bellway_Peak_02__left1 }) }; public static RoomData Bellway_Shadow { get; } = new RoomData { Name = "Bellway_Shadow", MapZone = (MapZone)36, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bellway_Shadow__door_fastTravelExit, BaseGateList.Bellway_Shadow__left1 }) }; public static RoomData Bone_01 { get; } = new RoomData { Name = "Bone_01", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Bone_01__left2, BaseGateList.Bone_01__right1, BaseGateList.Bone_01__right2, BaseGateList.Bone_01__top2 }) }; public static RoomData Bone_01b { get; } = new RoomData { Name = "Bone_01b", MapZone = (MapZone)19, MapArea = "Mosslands", TitledArea = "Bone Bottom", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bone_01b__left1, BaseGateList.Bone_01b__left2 }) }; public static RoomData Bone_01c { get; } = new RoomData { Name = "Bone_01c", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bone_01c__left1, BaseGateList.Bone_01c__left2, BaseGateList.Bone_01c__right1 }) }; public static RoomData Bone_02 { get; } = new RoomData { Name = "Bone_02", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Bone_02__left1, BaseGateList.Bone_02__right1, BaseGateList.Bone_02__top1, BaseGateList.Bone_02__top2 }) }; public static RoomData Bone_03 { get; } = new RoomData { Name = "Bone_03", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(7) { BaseGateList.Bone_03__bot1, BaseGateList.Bone_03__left1, BaseGateList.Bone_03__left2, BaseGateList.Bone_03__left4, BaseGateList.Bone_03__right1, BaseGateList.Bone_03__right3, BaseGateList.Bone_03__top1 }) }; public static RoomData Bone_04 { get; } = new RoomData { Name = "Bone_04", MapZone = (MapZone)19, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Bone_04__bot2, BaseGateList.Bone_04__left1, BaseGateList.Bone_04__left2, BaseGateList.Bone_04__right1, BaseGateList.Bone_04__top1 }) }; public static RoomData Bone_05 { get; } = new RoomData { Name = "Bone_05", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Bone_05__door_cinematicEnd, BaseGateList.Bone_05__door_fastTravelExit, BaseGateList.Bone_05__bot1, BaseGateList.Bone_05__left1, BaseGateList.Bone_05__right1 }) }; public static RoomData Bone_05b { get; } = new RoomData { Name = "Bone_05b", MapZone = (MapZone)19, MapArea = "Mosslands", TitledArea = "Bone Bottom", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bone_05b__left1, BaseGateList.Bone_05b__top1 }) }; public static RoomData Bone_06 { get; } = new RoomData { Name = "Bone_06", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bone_06__bot1, BaseGateList.Bone_06__left1, BaseGateList.Bone_06__right1 }) }; public static RoomData Bone_07 { get; } = new RoomData { Name = "Bone_07", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Bone_07__left1, BaseGateList.Bone_07__right1, BaseGateList.Bone_07__right2, BaseGateList.Bone_07__top1 }) }; public static RoomData Bone_08 { get; } = new RoomData { Name = "Bone_08", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Bone_08__bot1, BaseGateList.Bone_08__door1, BaseGateList.Bone_08__left2, BaseGateList.Bone_08__left3, BaseGateList.Bone_08__right2, BaseGateList.Bone_08__right3 }) }; public static RoomData Bone_09 { get; } = new RoomData { Name = "Bone_09", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Bone_09__left1, BaseGateList.Bone_09__right1, BaseGateList.Bone_09__right2, BaseGateList.Bone_09__top1 }) }; public static RoomData Bone_10 { get; } = new RoomData { Name = "Bone_10", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Bone_10__bot1, BaseGateList.Bone_10__door2, BaseGateList.Bone_10__left1, BaseGateList.Bone_10__right1 }) }; public static RoomData Bone_11 { get; } = new RoomData { Name = "Bone_11", MapZone = (MapZone)19, MapArea = "Mosslands", TitledArea = "Bone Bottom", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Bone_11__bot1, BaseGateList.Bone_11__left1, BaseGateList.Bone_11__right1, BaseGateList.Bone_11__right2, BaseGateList.Bone_11__top1 }) }; public static RoomData Bone_11b { get; } = new RoomData { Name = "Bone_11b", MapZone = (MapZone)19, MapArea = "Mosslands", TitledArea = "Bone Bottom", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bone_11b__right1, BaseGateList.Bone_11b__top1 }) }; public static RoomData Bone_12 { get; } = new RoomData { Name = "Bone_12", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bone_12__left1 }) }; public static RoomData Bone_14 { get; } = new RoomData { Name = "Bone_14", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bone_14__left1, BaseGateList.Bone_14__right1 }) }; public static RoomData Bone_15 { get; } = new RoomData { Name = "Bone_15", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bone_15__bot1, BaseGateList.Bone_15__left1 }) }; public static RoomData Bone_16 { get; } = new RoomData { Name = "Bone_16", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bone_16__left1, BaseGateList.Bone_16__right1, BaseGateList.Bone_16__top1 }) }; public static RoomData Bone_17 { get; } = new RoomData { Name = "Bone_17", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bone_17__right1 }) }; public static RoomData Bone_18 { get; } = new RoomData { Name = "Bone_18", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bone_18__left1 }) }; public static RoomData Bone_19 { get; } = new RoomData { Name = "Bone_19", MapZone = (MapZone)2, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bone_19__bot1 }) }; public static RoomData Bone_East_01 { get; } = new RoomData { Name = "Bone_East_01", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Bone_East_01__left1, BaseGateList.Bone_East_01__left2, BaseGateList.Bone_East_01__right1, BaseGateList.Bone_East_01__right2, BaseGateList.Bone_East_01__right3 }) }; public static RoomData Bone_East_02 { get; } = new RoomData { Name = "Bone_East_02", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bone_East_02__left1, BaseGateList.Bone_East_02__right1, BaseGateList.Bone_East_02__top1 }) }; public static RoomData Bone_East_02b { get; } = new RoomData { Name = "Bone_East_02b", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Bone_East_02b__left1, BaseGateList.Bone_East_02b__right1, BaseGateList.Bone_East_02b__right2, BaseGateList.Bone_East_02b__top3 }) }; public static RoomData Bone_East_03 { get; } = new RoomData { Name = "Bone_East_03", MapZone = (MapZone)16, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bone_East_03__left1, BaseGateList.Bone_East_03__top1 }) }; public static RoomData Bone_East_04 { get; } = new RoomData { Name = "Bone_East_04", MapZone = (MapZone)16, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Bone_East_04__bot1, BaseGateList.Bone_East_04__left1, BaseGateList.Bone_East_04__right1, BaseGateList.Bone_East_04__right2, BaseGateList.Bone_East_04__top2 }) }; public static RoomData Bone_East_04b { get; } = new RoomData { Name = "Bone_East_04b", MapZone = (MapZone)16, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bone_East_04b__left1, BaseGateList.Bone_East_04b__right1, BaseGateList.Bone_East_04b__top1 }) }; public static RoomData Bone_East_04c { get; } = new RoomData { Name = "Bone_East_04c", MapZone = (MapZone)16, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bone_East_04c__left1 }) }; public static RoomData Bone_East_05 { get; } = new RoomData { Name = "Bone_East_05", MapZone = (MapZone)16, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bone_East_05__left1, BaseGateList.Bone_East_05__right1 }) }; public static RoomData Bone_East_07 { get; } = new RoomData { Name = "Bone_East_07", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(10) { BaseGateList.Bone_East_07__left1, BaseGateList.Bone_East_07__left2, BaseGateList.Bone_East_07__left3, BaseGateList.Bone_East_07__left4, BaseGateList.Bone_East_07__right1, BaseGateList.Bone_East_07__right2, BaseGateList.Bone_East_07__right3, BaseGateList.Bone_East_07__right4, BaseGateList.Bone_East_07__right5, BaseGateList.Bone_East_07__top1 }) }; public static RoomData Bone_East_08 { get; } = new RoomData { Name = "Bone_East_08", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bone_East_08__door_cinematicEnd, BaseGateList.Bone_East_08__left1, BaseGateList.Bone_East_08__right1 }) }; public static RoomData Bone_East_09 { get; } = new RoomData { Name = "Bone_East_09", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Bone_East_09__door1, BaseGateList.Bone_East_09__left2, BaseGateList.Bone_East_09__left3, BaseGateList.Bone_East_09__right1, BaseGateList.Bone_East_09__right2, BaseGateList.Bone_East_09__top1 }) }; public static RoomData Bone_East_09b { get; } = new RoomData { Name = "Bone_East_09b", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bone_East_09b__bot1, BaseGateList.Bone_East_09b__left1, BaseGateList.Bone_East_09b__top1 }) }; public static RoomData Bone_East_10 { get; } = new RoomData { Name = "Bone_East_10", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Bone_East_10__door1, BaseGateList.Bone_East_10__left1, BaseGateList.Bone_East_10__left2, BaseGateList.Bone_East_10__right1, BaseGateList.Bone_East_10__right2 }) }; public static RoomData Bone_East_10_Church { get; } = new RoomData { Name = "Bone_East_10_Church", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bone_East_10_Church__bot1, BaseGateList.Bone_East_10_Church__left1 }) }; public static RoomData Bone_East_10_Room { get; } = new RoomData { Name = "Bone_East_10_Room", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bone_East_10_Room__right1 }) }; public static RoomData Bone_East_11 { get; } = new RoomData { Name = "Bone_East_11", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Bone_East_11__bot1, BaseGateList.Bone_East_11__left1, BaseGateList.Bone_East_11__right1, BaseGateList.Bone_East_11__right2, BaseGateList.Bone_East_11__top1 }) }; public static RoomData Bone_East_12 { get; } = new RoomData { Name = "Bone_East_12", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bone_East_12__bot1, BaseGateList.Bone_East_12__left1, BaseGateList.Bone_East_12__right1 }) }; public static RoomData Bone_East_13 { get; } = new RoomData { Name = "Bone_East_13", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bone_East_13__left1 }) }; public static RoomData Bone_East_14 { get; } = new RoomData { Name = "Bone_East_14", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Bone_East_14__left1, BaseGateList.Bone_East_14__left2, BaseGateList.Bone_East_14__right1, BaseGateList.Bone_East_14__right2 }) }; public static RoomData Bone_East_14b { get; } = new RoomData { Name = "Bone_East_14b", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Bone_East_14b__door1, BaseGateList.Bone_East_14b__left1, BaseGateList.Bone_East_14b__left2, BaseGateList.Bone_East_14b__right1 }) }; public static RoomData Bone_East_15 { get; } = new RoomData { Name = "Bone_East_15", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bone_East_15__bot1, BaseGateList.Bone_East_15__left1, BaseGateList.Bone_East_15__right1 }) }; public static RoomData Bone_East_16 { get; } = new RoomData { Name = "Bone_East_16", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bone_East_16__bot1, BaseGateList.Bone_East_16__right1 }) }; public static RoomData Bone_East_17 { get; } = new RoomData { Name = "Bone_East_17", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bone_East_17__bot1, BaseGateList.Bone_East_17__left1, BaseGateList.Bone_East_17__right1 }) }; public static RoomData Bone_East_17b { get; } = new RoomData { Name = "Bone_East_17b", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bone_East_17b__left1, BaseGateList.Bone_East_17b__top1 }) }; public static RoomData Bone_East_18 { get; } = new RoomData { Name = "Bone_East_18", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bone_East_18__left1, BaseGateList.Bone_East_18__right1, BaseGateList.Bone_East_18__top1 }) }; public static RoomData Bone_East_18b { get; } = new RoomData { Name = "Bone_East_18b", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bone_East_18b__door1, BaseGateList.Bone_East_18b__left1, BaseGateList.Bone_East_18b__top1 }) }; public static RoomData Bone_East_18c { get; } = new RoomData { Name = "Bone_East_18c", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bone_East_18c__left1, BaseGateList.Bone_East_18c__right1 }) }; public static RoomData Bone_East_20 { get; } = new RoomData { Name = "Bone_East_20", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bone_East_20__right1 }) }; public static RoomData Bone_East_21 { get; } = new RoomData { Name = "Bone_East_21", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bone_East_21__left1 }) }; public static RoomData Bone_East_22 { get; } = new RoomData { Name = "Bone_East_22", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bone_East_22__left1 }) }; public static RoomData Bone_East_24 { get; } = new RoomData { Name = "Bone_East_24", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bone_East_24__bot1, BaseGateList.Bone_East_24__left1, BaseGateList.Bone_East_24__right1 }) }; public static RoomData Bone_East_25 { get; } = new RoomData { Name = "Bone_East_25", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bone_East_25__door1, BaseGateList.Bone_East_25__left1 }) }; public static RoomData Bone_East_26 { get; } = new RoomData { Name = "Bone_East_26", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Bone_East_26__bot1, BaseGateList.Bone_East_26__top1 }) }; public static RoomData Bone_East_27 { get; } = new RoomData { Name = "Bone_East_27", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Bone_East_27__bot1, BaseGateList.Bone_East_27__left1, BaseGateList.Bone_East_27__right1 }) }; public static RoomData Bone_East_LavaChallenge { get; } = new RoomData { Name = "Bone_East_LavaChallenge", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bone_East_LavaChallenge__left1 }) }; public static RoomData Bone_East_Umbrella { get; } = new RoomData { Name = "Bone_East_Umbrella", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bone_East_Umbrella__left1 }) }; public static RoomData Bone_East_Weavehome { get; } = new RoomData { Name = "Bone_East_Weavehome", MapZone = (MapZone)17, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bone_East_Weavehome__left1 }) }; public static RoomData Bone_Steel_Servant { get; } = new RoomData { Name = "Bone_Steel_Servant", MapZone = (MapZone)2, MapArea = "Mosslands", TitledArea = "Bone Bottom", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Bone_Steel_Servant__right1 }) }; public static RoomData Bonegrave { get; } = new RoomData { Name = "Bonegrave", MapZone = (MapZone)12, MapArea = "Mosslands", TitledArea = "Bone Bottom", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Bonegrave__door1, BaseGateList.Bonegrave__left1, BaseGateList.Bonegrave__right1, BaseGateList.Bonegrave__right2, BaseGateList.Bonegrave__top1 }) }; public static RoomData Bonetown { get; } = new RoomData { Name = "Bonetown", MapZone = (MapZone)12, MapArea = "Mosslands", TitledArea = "Bone Bottom", Gates = new ReadOnlyCollection(new List(13) { BaseGateList.Bonetown__bot1, BaseGateList.Bonetown__bot2, BaseGateList.Bonetown__door1, BaseGateList.Bonetown__left1, BaseGateList.Bonetown__left2, BaseGateList.Bonetown__right1, BaseGateList.Bonetown__right2, BaseGateList.Bonetown__top1, BaseGateList.Bonetown__top2, BaseGateList.Bonetown__top3, BaseGateList.Bonetown__top4, BaseGateList.Bonetown__top5, BaseGateList.Bonetown__top6 }) }; public static RoomData Chapel_Wanderer { get; } = new RoomData { Name = "Chapel_Wanderer", MapZone = (MapZone)17, MapArea = "Mosslands", TitledArea = "Chapel of the Wanderer", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Chapel_Wanderer__door_memoryEnd, BaseGateList.Chapel_Wanderer__left1 }) }; public static RoomData Clover_01 { get; } = new RoomData { Name = "Clover_01", MapZone = (MapZone)21, MapArea = "Verdania", TitledArea = "Lost Verdania", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Clover_01__door_wakeOnGround, BaseGateList.Clover_01__left1, BaseGateList.Clover_01__right1 }) }; public static RoomData Clover_01b { get; } = new RoomData { Name = "Clover_01b", MapZone = (MapZone)21, MapArea = "Verdania", TitledArea = "Lost Verdania", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Clover_01b__door_wakeInMemory, BaseGateList.Clover_01b__right1 }) }; public static RoomData Clover_02c { get; } = new RoomData { Name = "Clover_02c", MapZone = (MapZone)21, MapArea = "Verdania", TitledArea = "Lost Verdania", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Clover_02c__left1, BaseGateList.Clover_02c__left2, BaseGateList.Clover_02c__right1 }) }; public static RoomData Clover_03 { get; } = new RoomData { Name = "Clover_03", MapZone = (MapZone)21, MapArea = "Verdania", TitledArea = "Lost Verdania", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Clover_03__left1, BaseGateList.Clover_03__left2, BaseGateList.Clover_03__right1 }) }; public static RoomData Clover_04b { get; } = new RoomData { Name = "Clover_04b", MapZone = (MapZone)21, MapArea = "Verdania", TitledArea = "Lost Verdania", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Clover_04b__door1, BaseGateList.Clover_04b__left1, BaseGateList.Clover_04b__left2, BaseGateList.Clover_04b__right1 }) }; public static RoomData Clover_05c { get; } = new RoomData { Name = "Clover_05c", MapZone = (MapZone)21, MapArea = "Verdania", TitledArea = "Lost Verdania", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Clover_05c__left1, BaseGateList.Clover_05c__left2, BaseGateList.Clover_05c__right1, BaseGateList.Clover_05c__right2, BaseGateList.Clover_05c__right3 }) }; public static RoomData Clover_06 { get; } = new RoomData { Name = "Clover_06", MapZone = (MapZone)21, MapArea = "Verdania", TitledArea = "Lost Verdania", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Clover_06__bot1, BaseGateList.Clover_06__bot2 }) }; public static RoomData Clover_10 { get; } = new RoomData { Name = "Clover_10", MapZone = (MapZone)21, MapArea = "Verdania", TitledArea = "Lost Verdania", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Clover_10__left1 }) }; public static RoomData Clover_10_web { get; } = new RoomData { Name = "Clover_10_web", MapZone = (MapZone)21, MapArea = "Verdania", TitledArea = "Lost Verdania", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Clover_10_web__left1 }) }; public static RoomData Clover_11 { get; } = new RoomData { Name = "Clover_11", MapZone = (MapZone)21, MapArea = "Verdania", TitledArea = "Lost Verdania", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Clover_11__right1 }) }; public static RoomData Clover_16 { get; } = new RoomData { Name = "Clover_16", MapZone = (MapZone)21, MapArea = "Verdania", TitledArea = "Lost Verdania", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Clover_16__right1, BaseGateList.Clover_16__top1 }) }; public static RoomData Clover_18 { get; } = new RoomData { Name = "Clover_18", MapZone = (MapZone)21, MapArea = "Verdania", TitledArea = "Lost Verdania", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Clover_18__left1 }) }; public static RoomData Clover_19 { get; } = new RoomData { Name = "Clover_19", MapZone = (MapZone)21, MapArea = "Verdania", TitledArea = "Lost Verdania", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Clover_19__left1, BaseGateList.Clover_19__top1 }) }; public static RoomData Clover_20 { get; } = new RoomData { Name = "Clover_20", MapZone = (MapZone)21, MapArea = "Verdania", TitledArea = "Lost Verdania", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Clover_20__left1 }) }; public static RoomData Clover_21 { get; } = new RoomData { Name = "Clover_21", MapZone = (MapZone)21, MapArea = "Verdania", TitledArea = "Lost Verdania", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Clover_21__right1 }) }; public static RoomData Cog_04 { get; } = new RoomData { Name = "Cog_04", MapZone = (MapZone)23, MapArea = "Cogwork Core", TitledArea = "Cogwork Core", Gates = new ReadOnlyCollection(new List(7) { BaseGateList.Cog_04__door1, BaseGateList.Cog_04__door2, BaseGateList.Cog_04__left2, BaseGateList.Cog_04__right2, BaseGateList.Cog_04__right3, BaseGateList.Cog_04__top1, BaseGateList.Cog_04__top2 }) }; public static RoomData Cog_05 { get; } = new RoomData { Name = "Cog_05", MapZone = (MapZone)23, MapArea = "Cogwork Core", TitledArea = "Cogwork Core", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Cog_05__left1, BaseGateList.Cog_05__right2, BaseGateList.Cog_05__top1 }) }; public static RoomData Cog_06 { get; } = new RoomData { Name = "Cog_06", MapZone = (MapZone)6, MapArea = "Cogwork Core", TitledArea = "Cogwork Core", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Cog_06__left2, BaseGateList.Cog_06__right1 }) }; public static RoomData Cog_07 { get; } = new RoomData { Name = "Cog_07", MapZone = (MapZone)6, MapArea = "Cogwork Core", TitledArea = "Cogwork Core", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Cog_07__left1 }) }; public static RoomData Cog_08 { get; } = new RoomData { Name = "Cog_08", MapZone = (MapZone)23, MapArea = "Cogwork Core", TitledArea = "Cogwork Core", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Cog_08__bot1, BaseGateList.Cog_08__top1 }) }; public static RoomData Cog_09 { get; } = new RoomData { Name = "Cog_09", MapZone = (MapZone)23, MapArea = "Cogwork Core", TitledArea = "Cogwork Core", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Cog_09__bot1 }) }; public static RoomData Cog_09_Destroyed { get; } = new RoomData { Name = "Cog_09_Destroyed", MapZone = (MapZone)23, MapArea = "Cogwork Core", TitledArea = "Cogwork Core", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Cog_09_Destroyed__right1, BaseGateList.Cog_09_Destroyed__top1 }) }; public static RoomData Cog_10 { get; } = new RoomData { Name = "Cog_10", MapZone = (MapZone)23, MapArea = "Cogwork Core", TitledArea = "Cogwork Core", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Cog_10__bot1 }) }; public static RoomData Cog_10_Destroyed { get; } = new RoomData { Name = "Cog_10_Destroyed", MapZone = (MapZone)23, MapArea = "Cogwork Core", TitledArea = "Cogwork Core", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Cog_10_Destroyed__bot1, BaseGateList.Cog_10_Destroyed__left1 }) }; public static RoomData Cog_Bench { get; } = new RoomData { Name = "Cog_Bench", MapZone = (MapZone)23, MapArea = "Cogwork Core", TitledArea = "Cogwork Core", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Cog_Bench__left1 }) }; public static RoomData Cog_Dancers { get; } = new RoomData { Name = "Cog_Dancers", MapZone = (MapZone)23, MapArea = "Cogwork Core", TitledArea = "Cogwork Core", Gates = new ReadOnlyCollection(new List(7) { BaseGateList.Cog_Dancers__bot1, BaseGateList.Cog_Dancers__bot2, BaseGateList.Cog_Dancers__door_arriveFromTower, BaseGateList.Cog_Dancers__door1, BaseGateList.Cog_Dancers__left1, BaseGateList.Cog_Dancers__right1, BaseGateList.Cog_Dancers__top1 }) }; public static RoomData Cog_Pass { get; } = new RoomData { Name = "Cog_Pass", MapZone = (MapZone)23, MapArea = "Cogwork Core", TitledArea = "Cogwork Core", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Cog_Pass__left1, BaseGateList.Cog_Pass__left2 }) }; public static RoomData Coral_02 { get; } = new RoomData { Name = "Coral_02", MapZone = (MapZone)32, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Coral_02__bot2, BaseGateList.Coral_02__right1 }) }; public static RoomData Coral_03 { get; } = new RoomData { Name = "Coral_03", MapZone = (MapZone)32, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(12) { BaseGateList.Coral_03__bot1, BaseGateList.Coral_03__bot2, BaseGateList.Coral_03__bot3, BaseGateList.Coral_03__bot4, BaseGateList.Coral_03__bot5, BaseGateList.Coral_03__bot6, BaseGateList.Coral_03__left1, BaseGateList.Coral_03__left2, BaseGateList.Coral_03__left3, BaseGateList.Coral_03__right1, BaseGateList.Coral_03__right2, BaseGateList.Coral_03__right3 }) }; public static RoomData Coral_10 { get; } = new RoomData { Name = "Coral_10", MapZone = (MapZone)6, MapArea = "Grand Gate", TitledArea = "Grand Gate", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Coral_10__left_firstEntrance, BaseGateList.Coral_10__left1, BaseGateList.Coral_10__right1 }) }; public static RoomData Coral_11 { get; } = new RoomData { Name = "Coral_11", MapZone = (MapZone)32, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Coral_11__left1, BaseGateList.Coral_11__right1 }) }; public static RoomData Coral_11b { get; } = new RoomData { Name = "Coral_11b", MapZone = (MapZone)32, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Coral_11b__left1, BaseGateList.Coral_11b__right1 }) }; public static RoomData Coral_12 { get; } = new RoomData { Name = "Coral_12", MapZone = (MapZone)32, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Coral_12__left2, BaseGateList.Coral_12__left3, BaseGateList.Coral_12__right1 }) }; public static RoomData Coral_19 { get; } = new RoomData { Name = "Coral_19", MapZone = (MapZone)5, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(16) { BaseGateList.Coral_19__bot1, BaseGateList.Coral_19__bot2, BaseGateList.Coral_19__bot3, BaseGateList.Coral_19__bot4, BaseGateList.Coral_19__bot5, BaseGateList.Coral_19__bot6, BaseGateList.Coral_19__bot7, BaseGateList.Coral_19__right1, BaseGateList.Coral_19__top1, BaseGateList.Coral_19__top2, BaseGateList.Coral_19__top3, BaseGateList.Coral_19__top4, BaseGateList.Coral_19__top5, BaseGateList.Coral_19__top6, BaseGateList.Coral_19__top7, BaseGateList.Coral_19__top8 }) }; public static RoomData Coral_19b { get; } = new RoomData { Name = "Coral_19b", MapZone = (MapZone)32, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Coral_19b__bot1 }) }; public static RoomData Coral_23 { get; } = new RoomData { Name = "Coral_23", MapZone = (MapZone)41, MapArea = "Sands of Karak", TitledArea = "Sands of Karak", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Coral_23__left1, BaseGateList.Coral_23__left2, BaseGateList.Coral_23__right1 }) }; public static RoomData Coral_24 { get; } = new RoomData { Name = "Coral_24", MapZone = (MapZone)41, MapArea = "Sands of Karak", TitledArea = "Sands of Karak", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Coral_24__left1, BaseGateList.Coral_24__right1 }) }; public static RoomData Coral_25 { get; } = new RoomData { Name = "Coral_25", MapZone = (MapZone)41, MapArea = "Sands of Karak", TitledArea = "Sands of Karak", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Coral_25__bot1, BaseGateList.Coral_25__right1 }) }; public static RoomData Coral_26 { get; } = new RoomData { Name = "Coral_26", MapZone = (MapZone)41, MapArea = "Sands of Karak", TitledArea = "Sands of Karak", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Coral_26__left1, BaseGateList.Coral_26__left2, BaseGateList.Coral_26__right1 }) }; public static RoomData Coral_27 { get; } = new RoomData { Name = "Coral_27", MapZone = (MapZone)41, MapArea = "Sands of Karak", TitledArea = "Sands of Karak", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Coral_27__left1, BaseGateList.Coral_27__right1 }) }; public static RoomData Coral_28 { get; } = new RoomData { Name = "Coral_28", MapZone = (MapZone)41, MapArea = "Sands of Karak", TitledArea = "Sands of Karak", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Coral_28__door1, BaseGateList.Coral_28__right1 }) }; public static RoomData Coral_29 { get; } = new RoomData { Name = "Coral_29", MapZone = (MapZone)41, MapArea = "Sands of Karak", TitledArea = "Voltnest", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Coral_29__left1 }) }; public static RoomData Coral_32 { get; } = new RoomData { Name = "Coral_32", MapZone = (MapZone)32, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Coral_32__left1, BaseGateList.Coral_32__right1, BaseGateList.Coral_32__top1 }) }; public static RoomData Coral_33 { get; } = new RoomData { Name = "Coral_33", MapZone = (MapZone)32, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Coral_33__right1 }) }; public static RoomData Coral_34 { get; } = new RoomData { Name = "Coral_34", MapZone = (MapZone)32, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Coral_34__door1, BaseGateList.Coral_34__right1, BaseGateList.Coral_34__top1 }) }; public static RoomData Coral_35 { get; } = new RoomData { Name = "Coral_35", MapZone = (MapZone)32, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Coral_35__left1, BaseGateList.Coral_35__left2, BaseGateList.Coral_35__right1, BaseGateList.Coral_35__right2, BaseGateList.Coral_35__top1 }) }; public static RoomData Coral_35b { get; } = new RoomData { Name = "Coral_35b", MapZone = (MapZone)41, MapArea = "Sands of Karak", TitledArea = "Sands of Karak", Gates = new ReadOnlyCollection(new List(8) { BaseGateList.Coral_35b__bot1, BaseGateList.Coral_35b__door1, BaseGateList.Coral_35b__left2, BaseGateList.Coral_35b__left3, BaseGateList.Coral_35b__left4, BaseGateList.Coral_35b__left5, BaseGateList.Coral_35b__right1, BaseGateList.Coral_35b__right2 }) }; public static RoomData Coral_36 { get; } = new RoomData { Name = "Coral_36", MapZone = (MapZone)32, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Coral_36__left1 }) }; public static RoomData Coral_37 { get; } = new RoomData { Name = "Coral_37", MapZone = (MapZone)32, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Coral_37__left1 }) }; public static RoomData Coral_38 { get; } = new RoomData { Name = "Coral_38", MapZone = (MapZone)41, MapArea = "Sands of Karak", TitledArea = "Sands of Karak", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Coral_38__bot1, BaseGateList.Coral_38__left1, BaseGateList.Coral_38__right1 }) }; public static RoomData Coral_39 { get; } = new RoomData { Name = "Coral_39", MapZone = (MapZone)41, MapArea = "Sands of Karak", TitledArea = "Sands of Karak", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Coral_39__right1 }) }; public static RoomData Coral_40 { get; } = new RoomData { Name = "Coral_40", MapZone = (MapZone)41, MapArea = "Sands of Karak", TitledArea = "Sands of Karak", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Coral_40__right1 }) }; public static RoomData Coral_41 { get; } = new RoomData { Name = "Coral_41", MapZone = (MapZone)41, MapArea = "Sands of Karak", TitledArea = "Sands of Karak", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Coral_41__right1 }) }; public static RoomData Coral_42 { get; } = new RoomData { Name = "Coral_42", MapZone = (MapZone)32, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Coral_42__right1 }) }; public static RoomData Coral_43 { get; } = new RoomData { Name = "Coral_43", MapZone = (MapZone)32, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Coral_43__left1, BaseGateList.Coral_43__right1 }) }; public static RoomData Coral_44 { get; } = new RoomData { Name = "Coral_44", MapZone = (MapZone)41, MapArea = "Sands of Karak", TitledArea = "Sands of Karak", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Coral_44__left1, BaseGateList.Coral_44__right1 }) }; public static RoomData Coral_Judge_Arena { get; } = new RoomData { Name = "Coral_Judge_Arena", MapZone = (MapZone)32, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Coral_Judge_Arena__door_caravanTravelEnd, BaseGateList.Coral_Judge_Arena__door2, BaseGateList.Coral_Judge_Arena__left1, BaseGateList.Coral_Judge_Arena__right1 }) }; public static RoomData Coral_Tower_01 { get; } = new RoomData { Name = "Coral_Tower_01", MapZone = (MapZone)32, MapArea = "Sands of Karak", TitledArea = "Coral Tower", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Coral_Tower_01__door_wakeOnGround, BaseGateList.Coral_Tower_01__left1 }) }; public static RoomData Cradle_01 { get; } = new RoomData { Name = "Cradle_01", MapZone = (MapZone)29, MapArea = "Cradle", TitledArea = "The Cradle", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Cradle_01__left1, BaseGateList.Cradle_01__right1 }) }; public static RoomData Cradle_01_Destroyed { get; } = new RoomData { Name = "Cradle_01_Destroyed", MapZone = (MapZone)29, MapArea = "Cradle", TitledArea = "The Cradle", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Cradle_01_Destroyed__bot1, BaseGateList.Cradle_01_Destroyed__top1 }) }; public static RoomData Cradle_02 { get; } = new RoomData { Name = "Cradle_02", MapZone = (MapZone)29, MapArea = "Cradle", TitledArea = "The Cradle", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Cradle_02__left2, BaseGateList.Cradle_02__right1, BaseGateList.Cradle_02__right2 }) }; public static RoomData Cradle_02b { get; } = new RoomData { Name = "Cradle_02b", MapZone = (MapZone)29, MapArea = "Cradle", TitledArea = "The Cradle", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Cradle_02b__right1 }) }; public static RoomData Cradle_03 { get; } = new RoomData { Name = "Cradle_03", MapZone = (MapZone)29, MapArea = "Cradle", TitledArea = "The Cradle", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Cradle_03__left2, BaseGateList.Cradle_03__right2 }) }; public static RoomData Cradle_03_Destroyed { get; } = new RoomData { Name = "Cradle_03_Destroyed", MapZone = (MapZone)29, MapArea = "Cradle", TitledArea = "The Cradle", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Cradle_03_Destroyed__bot1, BaseGateList.Cradle_03_Destroyed__door1 }) }; public static RoomData Cradle_Destroyed_Challenge_01 { get; } = new RoomData { Name = "Cradle_Destroyed_Challenge_01", MapZone = (MapZone)39, MapArea = "Cradle", TitledArea = "The Cradle", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Cradle_Destroyed_Challenge_01__left1, BaseGateList.Cradle_Destroyed_Challenge_01__top1 }) }; public static RoomData Cradle_Destroyed_Challenge_02 { get; } = new RoomData { Name = "Cradle_Destroyed_Challenge_02", MapZone = (MapZone)29, MapArea = "Cradle", TitledArea = "The Cradle", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Cradle_Destroyed_Challenge_02__left1, BaseGateList.Cradle_Destroyed_Challenge_02__top1 }) }; public static RoomData Cradle_Destroyed_Challenge_Bench { get; } = new RoomData { Name = "Cradle_Destroyed_Challenge_Bench", MapZone = (MapZone)29, MapArea = "Cradle", TitledArea = "The Cradle", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Cradle_Destroyed_Challenge_Bench__bot1, BaseGateList.Cradle_Destroyed_Challenge_Bench__door1, BaseGateList.Cradle_Destroyed_Challenge_Bench__right1 }) }; public static RoomData Crawl_01 { get; } = new RoomData { Name = "Crawl_01", MapZone = (MapZone)34, MapArea = "Wormways", TitledArea = "Wormways", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Crawl_01__left1, BaseGateList.Crawl_01__right1 }) }; public static RoomData Crawl_02 { get; } = new RoomData { Name = "Crawl_02", MapZone = (MapZone)34, MapArea = "Wormways", TitledArea = "Wormways", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Crawl_02__left1, BaseGateList.Crawl_02__left2, BaseGateList.Crawl_02__right1, BaseGateList.Crawl_02__right2, BaseGateList.Crawl_02__right3 }) }; public static RoomData Crawl_03 { get; } = new RoomData { Name = "Crawl_03", MapZone = (MapZone)34, MapArea = "Wormways", TitledArea = "Wormways", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Crawl_03__bot1, BaseGateList.Crawl_03__left1, BaseGateList.Crawl_03__right1, BaseGateList.Crawl_03__top1 }) }; public static RoomData Crawl_03b { get; } = new RoomData { Name = "Crawl_03b", MapZone = (MapZone)34, MapArea = "Wormways", TitledArea = "Wormways", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Crawl_03b__bot1, BaseGateList.Crawl_03b__right1, BaseGateList.Crawl_03b__top1 }) }; public static RoomData Crawl_04 { get; } = new RoomData { Name = "Crawl_04", MapZone = (MapZone)2, MapArea = "Wormways", TitledArea = "Wormways", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Crawl_04__left1, BaseGateList.Crawl_04__right1 }) }; public static RoomData Crawl_05 { get; } = new RoomData { Name = "Crawl_05", MapZone = (MapZone)34, MapArea = "Wormways", TitledArea = "Weavenest Karn", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Crawl_05__right1 }) }; public static RoomData Crawl_06 { get; } = new RoomData { Name = "Crawl_06", MapZone = (MapZone)34, MapArea = "Wormways", TitledArea = "Wormways", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Crawl_06__left1 }) }; public static RoomData Crawl_07 { get; } = new RoomData { Name = "Crawl_07", MapZone = (MapZone)34, MapArea = "Wormways", TitledArea = "Wormways", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Crawl_07__bot1, BaseGateList.Crawl_07__left1, BaseGateList.Crawl_07__top1 }) }; public static RoomData Crawl_08 { get; } = new RoomData { Name = "Crawl_08", MapZone = (MapZone)34, MapArea = "Wormways", TitledArea = "Wormways", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Crawl_08__bot1 }) }; public static RoomData Crawl_09 { get; } = new RoomData { Name = "Crawl_09", MapZone = (MapZone)34, MapArea = "Wormways", TitledArea = "Wormways", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Crawl_09__left1, BaseGateList.Crawl_09__right1 }) }; public static RoomData Crawl_10 { get; } = new RoomData { Name = "Crawl_10", MapZone = (MapZone)34, MapArea = "Wormways", TitledArea = "Wormways", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Crawl_10__right1 }) }; public static RoomData Dock_01 { get; } = new RoomData { Name = "Dock_01", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Dock_01__left1, BaseGateList.Dock_01__right1, BaseGateList.Dock_01__right2 }) }; public static RoomData Dock_02 { get; } = new RoomData { Name = "Dock_02", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Dock_02__left1, BaseGateList.Dock_02__left2, BaseGateList.Dock_02__right1, BaseGateList.Dock_02__right2, BaseGateList.Dock_02__right3 }) }; public static RoomData Dock_02b { get; } = new RoomData { Name = "Dock_02b", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Dock_02b__left1, BaseGateList.Dock_02b__left2, BaseGateList.Dock_02b__left3, BaseGateList.Dock_02b__right1, BaseGateList.Dock_02b__right2 }) }; public static RoomData Dock_03 { get; } = new RoomData { Name = "Dock_03", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Dock_03__bot1, BaseGateList.Dock_03__left1, BaseGateList.Dock_03__right1 }) }; public static RoomData Dock_03b { get; } = new RoomData { Name = "Dock_03b", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Dock_03b__left1, BaseGateList.Dock_03b__right1 }) }; public static RoomData Dock_03c { get; } = new RoomData { Name = "Dock_03c", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Dock_03c__left2, BaseGateList.Dock_03c__top1, BaseGateList.Dock_03c__top2 }) }; public static RoomData Dock_03d { get; } = new RoomData { Name = "Dock_03d", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Dock_03d__bot1 }) }; public static RoomData Dock_04 { get; } = new RoomData { Name = "Dock_04", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Dock_04__left1, BaseGateList.Dock_04__right1, BaseGateList.Dock_04__right2, BaseGateList.Dock_04__right3 }) }; public static RoomData Dock_05 { get; } = new RoomData { Name = "Dock_05", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Dock_05__left1 }) }; public static RoomData Dock_06_Church { get; } = new RoomData { Name = "Dock_06_Church", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Dock_06_Church__bot1, BaseGateList.Dock_06_Church__right1 }) }; public static RoomData Dock_08 { get; } = new RoomData { Name = "Dock_08", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Dock_08__left1, BaseGateList.Dock_08__left2, BaseGateList.Dock_08__right1 }) }; public static RoomData Dock_09 { get; } = new RoomData { Name = "Dock_09", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Dock_09__left1, BaseGateList.Dock_09__right1 }) }; public static RoomData Dock_10 { get; } = new RoomData { Name = "Dock_10", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Dock_10__left1, BaseGateList.Dock_10__right1 }) }; public static RoomData Dock_11 { get; } = new RoomData { Name = "Dock_11", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Dock_11__left1, BaseGateList.Dock_11__right1 }) }; public static RoomData Dock_12 { get; } = new RoomData { Name = "Dock_12", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Dock_12__door1, BaseGateList.Dock_12__left1 }) }; public static RoomData Dock_13 { get; } = new RoomData { Name = "Dock_13", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Dock_13__right1 }) }; public static RoomData Dock_14 { get; } = new RoomData { Name = "Dock_14", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Dock_14__left1 }) }; public static RoomData Dock_15 { get; } = new RoomData { Name = "Dock_15", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Dock_15__left1, BaseGateList.Dock_15__left2, BaseGateList.Dock_15__right1, BaseGateList.Dock_15__right2, BaseGateList.Dock_15__right3 }) }; public static RoomData Dock_16 { get; } = new RoomData { Name = "Dock_16", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Dock_16__right1 }) }; public static RoomData Dust_01 { get; } = new RoomData { Name = "Dust_01", MapZone = (MapZone)9, MapArea = "Sinner's Road", TitledArea = "Sinner’s Road", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Dust_01__left1, BaseGateList.Dust_01__right1 }) }; public static RoomData Dust_02 { get; } = new RoomData { Name = "Dust_02", MapZone = (MapZone)9, MapArea = "Sinner's Road", TitledArea = "Sinner’s Road", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Dust_02__left1, BaseGateList.Dust_02__left2, BaseGateList.Dust_02__right1, BaseGateList.Dust_02__right2, BaseGateList.Dust_02__right3, BaseGateList.Dust_02__top1 }) }; public static RoomData Dust_03 { get; } = new RoomData { Name = "Dust_03", MapZone = (MapZone)9, MapArea = "Sinner's Road", TitledArea = "Sinner’s Road", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Dust_03__bot1, BaseGateList.Dust_03__left1, BaseGateList.Dust_03__top1 }) }; public static RoomData Dust_04 { get; } = new RoomData { Name = "Dust_04", MapZone = (MapZone)9, MapArea = "Sinner's Road", TitledArea = "Sinner’s Road", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Dust_04__door1, BaseGateList.Dust_04__left1, BaseGateList.Dust_04__left2, BaseGateList.Dust_04__right1 }) }; public static RoomData Dust_05 { get; } = new RoomData { Name = "Dust_05", MapZone = (MapZone)9, MapArea = "Sinner's Road", TitledArea = "Sinner’s Road", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Dust_05__bot1, BaseGateList.Dust_05__left1, BaseGateList.Dust_05__right1 }) }; public static RoomData Dust_06 { get; } = new RoomData { Name = "Dust_06", MapZone = (MapZone)9, MapArea = "Sinner's Road", TitledArea = "Sinner’s Road", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Dust_06__left1, BaseGateList.Dust_06__right1, BaseGateList.Dust_06__right2, BaseGateList.Dust_06__right3 }) }; public static RoomData Dust_09 { get; } = new RoomData { Name = "Dust_09", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Dust_09__door1, BaseGateList.Dust_09__door2, BaseGateList.Dust_09__left2, BaseGateList.Dust_09__right1 }) }; public static RoomData Dust_10 { get; } = new RoomData { Name = "Dust_10", MapZone = (MapZone)9, MapArea = "Sinner's Road", TitledArea = "Sinner’s Road", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Dust_10__right1 }) }; public static RoomData Dust_11 { get; } = new RoomData { Name = "Dust_11", MapZone = (MapZone)9, MapArea = "Sinner's Road", TitledArea = "Sinner’s Road", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Dust_11__bot1, BaseGateList.Dust_11__left1 }) }; public static RoomData Dust_12 { get; } = new RoomData { Name = "Dust_12", MapZone = (MapZone)9, MapArea = "Sinner's Road", TitledArea = "Sinner’s Road", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Dust_12__left1 }) }; public static RoomData Dust_Barb { get; } = new RoomData { Name = "Dust_Barb", MapZone = (MapZone)9, MapArea = "Sinner's Road", TitledArea = "Sinner’s Road", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Dust_Barb__top1 }) }; public static RoomData Dust_Chef { get; } = new RoomData { Name = "Dust_Chef", MapZone = (MapZone)9, MapArea = "Sinner's Road", TitledArea = "Sinner’s Road", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Dust_Chef__bot1, BaseGateList.Dust_Chef__left1 }) }; public static RoomData Dust_Maze_01 { get; } = new RoomData { Name = "Dust_Maze_01", MapZone = (MapZone)25, MapArea = "Sinner's Road", TitledArea = "The Mist", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Dust_Maze_01__left1, BaseGateList.Dust_Maze_01__right1, BaseGateList.Dust_Maze_01__top1 }) }; public static RoomData Dust_Maze_02 { get; } = new RoomData { Name = "Dust_Maze_02", MapZone = (MapZone)25, MapArea = "Sinner's Road", TitledArea = "The Mist", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Dust_Maze_02__bot1, BaseGateList.Dust_Maze_02__left1, BaseGateList.Dust_Maze_02__left2, BaseGateList.Dust_Maze_02__right1, BaseGateList.Dust_Maze_02__top1 }) }; public static RoomData Dust_Maze_03 { get; } = new RoomData { Name = "Dust_Maze_03", MapZone = (MapZone)25, MapArea = "Sinner's Road", TitledArea = "The Mist", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Dust_Maze_03__left1, BaseGateList.Dust_Maze_03__left2, BaseGateList.Dust_Maze_03__right1, BaseGateList.Dust_Maze_03__top1 }) }; public static RoomData Dust_Maze_04 { get; } = new RoomData { Name = "Dust_Maze_04", MapZone = (MapZone)25, MapArea = "Sinner's Road", TitledArea = "The Mist", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Dust_Maze_04__bot1, BaseGateList.Dust_Maze_04__left1, BaseGateList.Dust_Maze_04__right1, BaseGateList.Dust_Maze_04__top1, BaseGateList.Dust_Maze_04__top1_1 }) }; public static RoomData Dust_Maze_05 { get; } = new RoomData { Name = "Dust_Maze_05", MapZone = (MapZone)25, MapArea = "Sinner's Road", TitledArea = "The Mist", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Dust_Maze_05__bot1, BaseGateList.Dust_Maze_05__left1, BaseGateList.Dust_Maze_05__right1, BaseGateList.Dust_Maze_05__right2, BaseGateList.Dust_Maze_05__top1 }) }; public static RoomData Dust_Maze_06 { get; } = new RoomData { Name = "Dust_Maze_06", MapZone = (MapZone)25, MapArea = "Sinner's Road", TitledArea = "The Mist", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Dust_Maze_06__left1, BaseGateList.Dust_Maze_06__right1, BaseGateList.Dust_Maze_06__top1 }) }; public static RoomData Dust_Maze_07 { get; } = new RoomData { Name = "Dust_Maze_07", MapZone = (MapZone)25, MapArea = "Sinner's Road", TitledArea = "The Mist", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Dust_Maze_07__bot1, BaseGateList.Dust_Maze_07__left1, BaseGateList.Dust_Maze_07__top1 }) }; public static RoomData Dust_Maze_08 { get; } = new RoomData { Name = "Dust_Maze_08", MapZone = (MapZone)25, MapArea = "Sinner's Road", TitledArea = "The Mist", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Dust_Maze_08__left1, BaseGateList.Dust_Maze_08__right2, BaseGateList.Dust_Maze_08__right3, BaseGateList.Dust_Maze_08__top1 }) }; public static RoomData Dust_Maze_08_completed { get; } = new RoomData { Name = "Dust_Maze_08_completed", MapZone = (MapZone)9, MapArea = "Sinner's Road", TitledArea = "The Mist", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Dust_Maze_08_completed__right1, BaseGateList.Dust_Maze_08_completed__right2 }) }; public static RoomData Dust_Maze_09_entrance { get; } = new RoomData { Name = "Dust_Maze_09_entrance", MapZone = (MapZone)25, MapArea = "Sinner's Road", TitledArea = "The Mist", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Dust_Maze_09_entrance__left1, BaseGateList.Dust_Maze_09_entrance__right1 }) }; public static RoomData Dust_Maze_crossing { get; } = new RoomData { Name = "Dust_Maze_crossing", MapZone = (MapZone)25, MapArea = "Sinner's Road", TitledArea = "The Mist", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Dust_Maze_crossing__left1, BaseGateList.Dust_Maze_crossing__right1 }) }; public static RoomData Dust_Maze_Last_Hall { get; } = new RoomData { Name = "Dust_Maze_Last_Hall", MapZone = (MapZone)25, MapArea = "Sinner's Road", TitledArea = "The Mist", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Dust_Maze_Last_Hall__left1, BaseGateList.Dust_Maze_Last_Hall__right1 }) }; public static RoomData Dust_Shack { get; } = new RoomData { Name = "Dust_Shack", MapZone = (MapZone)9, MapArea = "Sinner's Road", TitledArea = "Sinner’s Road", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Dust_Shack__left1 }) }; public static RoomData Greymoor_01 { get; } = new RoomData { Name = "Greymoor_01", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Greymoor_01__bot1, BaseGateList.Greymoor_01__left1, BaseGateList.Greymoor_01__left2, BaseGateList.Greymoor_01__right1, BaseGateList.Greymoor_01__right2, BaseGateList.Greymoor_01__right3 }) }; public static RoomData Greymoor_02 { get; } = new RoomData { Name = "Greymoor_02", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Greymoor_02__left1, BaseGateList.Greymoor_02__left2, BaseGateList.Greymoor_02__left3, BaseGateList.Greymoor_02__right1, BaseGateList.Greymoor_02__right2, BaseGateList.Greymoor_02__right3 }) }; public static RoomData Greymoor_03 { get; } = new RoomData { Name = "Greymoor_03", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(8) { BaseGateList.Greymoor_03__left1, BaseGateList.Greymoor_03__left2, BaseGateList.Greymoor_03__left3, BaseGateList.Greymoor_03__right1, BaseGateList.Greymoor_03__right2, BaseGateList.Greymoor_03__right3, BaseGateList.Greymoor_03__right4, BaseGateList.Greymoor_03__right5 }) }; public static RoomData Greymoor_04 { get; } = new RoomData { Name = "Greymoor_04", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Greymoor_04__left1, BaseGateList.Greymoor_04__left2, BaseGateList.Greymoor_04__left3, BaseGateList.Greymoor_04__right1, BaseGateList.Greymoor_04__right2 }) }; public static RoomData Greymoor_05 { get; } = new RoomData { Name = "Greymoor_05", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Greymoor_05__left1, BaseGateList.Greymoor_05__left2, BaseGateList.Greymoor_05__right1, BaseGateList.Greymoor_05__right2 }) }; public static RoomData Greymoor_06 { get; } = new RoomData { Name = "Greymoor_06", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(8) { BaseGateList.Greymoor_06__left1, BaseGateList.Greymoor_06__left2, BaseGateList.Greymoor_06__left3, BaseGateList.Greymoor_06__right1, BaseGateList.Greymoor_06__right2, BaseGateList.Greymoor_06__right3, BaseGateList.Greymoor_06__right4, BaseGateList.Greymoor_06__top1 }) }; public static RoomData Greymoor_07 { get; } = new RoomData { Name = "Greymoor_07", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Greymoor_07__bot1, BaseGateList.Greymoor_07__left1, BaseGateList.Greymoor_07__right1, BaseGateList.Greymoor_07__right2 }) }; public static RoomData Greymoor_08 { get; } = new RoomData { Name = "Greymoor_08", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Greymoor_08__door_caravanTravelEnd, BaseGateList.Greymoor_08__door1, BaseGateList.Greymoor_08__door2, BaseGateList.Greymoor_08__left2, BaseGateList.Greymoor_08__right1, BaseGateList.Greymoor_08__top1 }) }; public static RoomData Greymoor_10 { get; } = new RoomData { Name = "Greymoor_10", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Greymoor_10__left1, BaseGateList.Greymoor_10__right1 }) }; public static RoomData Greymoor_11 { get; } = new RoomData { Name = "Greymoor_11", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Greymoor_11__left1, BaseGateList.Greymoor_11__right1 }) }; public static RoomData Greymoor_12 { get; } = new RoomData { Name = "Greymoor_12", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Greymoor_12__left1, BaseGateList.Greymoor_12__right1 }) }; public static RoomData Greymoor_13 { get; } = new RoomData { Name = "Greymoor_13", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Greymoor_13__bot1, BaseGateList.Greymoor_13__left1, BaseGateList.Greymoor_13__right1 }) }; public static RoomData Greymoor_15 { get; } = new RoomData { Name = "Greymoor_15", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Greymoor_15__left1, BaseGateList.Greymoor_15__left3, BaseGateList.Greymoor_15__right2, BaseGateList.Greymoor_15__right3 }) }; public static RoomData Greymoor_15b { get; } = new RoomData { Name = "Greymoor_15b", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Greymoor_15b__door1, BaseGateList.Greymoor_15b__left2, BaseGateList.Greymoor_15b__left3, BaseGateList.Greymoor_15b__right1, BaseGateList.Greymoor_15b__top1 }) }; public static RoomData Greymoor_16 { get; } = new RoomData { Name = "Greymoor_16", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Greymoor_16__left1, BaseGateList.Greymoor_16__top1 }) }; public static RoomData Greymoor_17 { get; } = new RoomData { Name = "Greymoor_17", MapZone = (MapZone)9, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Greymoor_17__left1, BaseGateList.Greymoor_17__top1 }) }; public static RoomData Greymoor_20b { get; } = new RoomData { Name = "Greymoor_20b", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Greymoor_20b__door1, BaseGateList.Greymoor_20b__right1 }) }; public static RoomData Greymoor_20c { get; } = new RoomData { Name = "Greymoor_20c", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Chapel of the Reaper", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Greymoor_20c__door_memoryEnd, BaseGateList.Greymoor_20c__left1 }) }; public static RoomData Greymoor_21 { get; } = new RoomData { Name = "Greymoor_21", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Greymoor_21__top1 }) }; public static RoomData Greymoor_22 { get; } = new RoomData { Name = "Greymoor_22", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Greymoor_22__bot1 }) }; public static RoomData Greymoor_24 { get; } = new RoomData { Name = "Greymoor_24", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Greymoor_24__left1 }) }; public static RoomData Halfway_01 { get; } = new RoomData { Name = "Halfway_01", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Halfway Home", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Halfway_01__bot1, BaseGateList.Halfway_01__left1, BaseGateList.Halfway_01__right1 }) }; public static RoomData Hang_01 { get; } = new RoomData { Name = "Hang_01", MapZone = (MapZone)27, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Hang_01__right1, BaseGateList.Hang_01__right2 }) }; public static RoomData Hang_02 { get; } = new RoomData { Name = "Hang_02", MapZone = (MapZone)27, MapArea = "High Halls", TitledArea = "High Halls", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Hang_02__left1, BaseGateList.Hang_02__right1 }) }; public static RoomData Hang_03 { get; } = new RoomData { Name = "Hang_03", MapZone = (MapZone)27, MapArea = "High Halls", TitledArea = "High Halls", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Hang_03__left1, BaseGateList.Hang_03__left2, BaseGateList.Hang_03__right1, BaseGateList.Hang_03__right2, BaseGateList.Hang_03__top1 }) }; public static RoomData Hang_03_top { get; } = new RoomData { Name = "Hang_03_top", MapZone = (MapZone)27, MapArea = "High Halls", TitledArea = "High Halls", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Hang_03_top__bot1 }) }; public static RoomData Hang_04 { get; } = new RoomData { Name = "Hang_04", MapZone = (MapZone)27, MapArea = "High Halls", TitledArea = "High Halls", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Hang_04__left1, BaseGateList.Hang_04__right1 }) }; public static RoomData Hang_06 { get; } = new RoomData { Name = "Hang_06", MapZone = (MapZone)27, MapArea = "High Halls", TitledArea = "High Halls", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Hang_06__bot1, BaseGateList.Hang_06__door1, BaseGateList.Hang_06__left1, BaseGateList.Hang_06__right1, BaseGateList.Hang_06__top1 }) }; public static RoomData Hang_06_bank { get; } = new RoomData { Name = "Hang_06_bank", MapZone = (MapZone)27, MapArea = "High Halls", TitledArea = "High Halls", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Hang_06_bank__left1 }) }; public static RoomData Hang_06b { get; } = new RoomData { Name = "Hang_06b", MapZone = (MapZone)27, MapArea = "High Halls", TitledArea = "High Halls", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Hang_06b__door_tubeEnter, BaseGateList.Hang_06b__left1 }) }; public static RoomData Hang_07 { get; } = new RoomData { Name = "Hang_07", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Hang_07__bot1, BaseGateList.Hang_07__left1, BaseGateList.Hang_07__right1, BaseGateList.Hang_07__top1 }) }; public static RoomData Hang_08 { get; } = new RoomData { Name = "Hang_08", MapZone = (MapZone)27, MapArea = "High Halls", TitledArea = "High Halls", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Hang_08__bot1, BaseGateList.Hang_08__left1, BaseGateList.Hang_08__left2, BaseGateList.Hang_08__left3, BaseGateList.Hang_08__left4, BaseGateList.Hang_08__right1 }) }; public static RoomData Hang_09 { get; } = new RoomData { Name = "Hang_09", MapZone = (MapZone)27, MapArea = "High Halls", TitledArea = "High Halls", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Hang_09__right1 }) }; public static RoomData Hang_10 { get; } = new RoomData { Name = "Hang_10", MapZone = (MapZone)27, MapArea = "High Halls", TitledArea = "High Halls", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Hang_10__left1, BaseGateList.Hang_10__right1 }) }; public static RoomData Hang_12 { get; } = new RoomData { Name = "Hang_12", MapZone = (MapZone)27, MapArea = "High Halls", TitledArea = "High Halls", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Hang_12__right1 }) }; public static RoomData Hang_13 { get; } = new RoomData { Name = "Hang_13", MapZone = (MapZone)27, MapArea = "High Halls", TitledArea = "High Halls", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Hang_13__left1, BaseGateList.Hang_13__right1 }) }; public static RoomData Hang_14 { get; } = new RoomData { Name = "Hang_14", MapZone = (MapZone)27, MapArea = "High Halls", TitledArea = "High Halls", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Hang_14__left1 }) }; public static RoomData Hang_15 { get; } = new RoomData { Name = "Hang_15", MapZone = (MapZone)27, MapArea = "High Halls", TitledArea = "High Halls", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Hang_15__right1 }) }; public static RoomData Hang_16 { get; } = new RoomData { Name = "Hang_16", MapZone = (MapZone)27, MapArea = "High Halls", TitledArea = "High Halls", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Hang_16__door1, BaseGateList.Hang_16__right1 }) }; public static RoomData Hang_17b { get; } = new RoomData { Name = "Hang_17b", MapZone = (MapZone)27, MapArea = "High Halls", TitledArea = "High Halls", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Hang_17b__left1 }) }; public static RoomData Last_Dive { get; } = new RoomData { Name = "Last_Dive", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Last_Dive__door_cutscenePosition }) }; public static RoomData Last_Dive_Return { get; } = new RoomData { Name = "Last_Dive_Return", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Last_Dive_Return__door_cutscenePosition }) }; public static RoomData Library_01 { get; } = new RoomData { Name = "Library_01", MapZone = (MapZone)20, MapArea = "Whispering Vaults", TitledArea = "Whispering Vaults", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Library_01__left1, BaseGateList.Library_01__left2, BaseGateList.Library_01__left3, BaseGateList.Library_01__right1, BaseGateList.Library_01__right2 }) }; public static RoomData Library_02 { get; } = new RoomData { Name = "Library_02", MapZone = (MapZone)20, MapArea = "Whispering Vaults", TitledArea = "Whispering Vaults", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Library_02__left1, BaseGateList.Library_02__left2, BaseGateList.Library_02__right1, BaseGateList.Library_02__right2 }) }; public static RoomData Library_03 { get; } = new RoomData { Name = "Library_03", MapZone = (MapZone)20, MapArea = "Whispering Vaults", TitledArea = "Whispering Vaults", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Library_03__left1, BaseGateList.Library_03__right1 }) }; public static RoomData Library_04 { get; } = new RoomData { Name = "Library_04", MapZone = (MapZone)20, MapArea = "Whispering Vaults", TitledArea = "Whispering Vaults", Gates = new ReadOnlyCollection(new List(11) { BaseGateList.Library_04__left1, BaseGateList.Library_04__left2, BaseGateList.Library_04__left3, BaseGateList.Library_04__left4, BaseGateList.Library_04__right1, BaseGateList.Library_04__right2, BaseGateList.Library_04__right3, BaseGateList.Library_04__right4, BaseGateList.Library_04__right5, BaseGateList.Library_04__right6, BaseGateList.Library_04__top1 }) }; public static RoomData Library_05 { get; } = new RoomData { Name = "Library_05", MapZone = (MapZone)20, MapArea = "Whispering Vaults", TitledArea = "Whispering Vaults", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Library_05__left1, BaseGateList.Library_05__left2, BaseGateList.Library_05__right1, BaseGateList.Library_05__right2 }) }; public static RoomData Library_06 { get; } = new RoomData { Name = "Library_06", MapZone = (MapZone)20, MapArea = "Whispering Vaults", TitledArea = "Whispering Vaults", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Library_06__left1, BaseGateList.Library_06__left2, BaseGateList.Library_06__right1 }) }; public static RoomData Library_07 { get; } = new RoomData { Name = "Library_07", MapZone = (MapZone)20, MapArea = "Whispering Vaults", TitledArea = "Whispering Vaults", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Library_07__bot1, BaseGateList.Library_07__bot2, BaseGateList.Library_07__bot3, BaseGateList.Library_07__left1, BaseGateList.Library_07__left2, BaseGateList.Library_07__top1 }) }; public static RoomData Library_08 { get; } = new RoomData { Name = "Library_08", MapZone = (MapZone)20, MapArea = "Whispering Vaults", TitledArea = "Whispering Vaults", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Library_08__left1, BaseGateList.Library_08__right1 }) }; public static RoomData Library_09 { get; } = new RoomData { Name = "Library_09", MapZone = (MapZone)6, MapArea = "Whispering Vaults", TitledArea = "Whispering Vaults", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Library_09__bot1, BaseGateList.Library_09__left1 }) }; public static RoomData Library_10 { get; } = new RoomData { Name = "Library_10", MapZone = (MapZone)20, MapArea = "Whispering Vaults", TitledArea = "Whispering Vaults", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Library_10__bot1, BaseGateList.Library_10__left1 }) }; public static RoomData Library_11 { get; } = new RoomData { Name = "Library_11", MapZone = (MapZone)20, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Library_11__left1, BaseGateList.Library_11__left2, BaseGateList.Library_11__left3, BaseGateList.Library_11__right1, BaseGateList.Library_11__right2 }) }; public static RoomData Library_11b { get; } = new RoomData { Name = "Library_11b", MapZone = (MapZone)9, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Library_11b__left3, BaseGateList.Library_11b__right1 }) }; public static RoomData Library_12 { get; } = new RoomData { Name = "Library_12", MapZone = (MapZone)20, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Library_12__door1, BaseGateList.Library_12__left1, BaseGateList.Library_12__left2, BaseGateList.Library_12__right1 }) }; public static RoomData Library_12b { get; } = new RoomData { Name = "Library_12b", MapZone = (MapZone)20, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Library_12b__left1, BaseGateList.Library_12b__top1 }) }; public static RoomData Library_13 { get; } = new RoomData { Name = "Library_13", MapZone = (MapZone)6, MapArea = "Whispering Vaults", TitledArea = "Whispering Vaults", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Library_13__left1, BaseGateList.Library_13__right1, BaseGateList.Library_13__right2 }) }; public static RoomData Library_13b { get; } = new RoomData { Name = "Library_13b", MapZone = (MapZone)20, MapArea = "Whispering Vaults", TitledArea = "Whispering Vaults", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Library_13b__left1, BaseGateList.Library_13b__right1 }) }; public static RoomData Library_14 { get; } = new RoomData { Name = "Library_14", MapZone = (MapZone)20, MapArea = "Whispering Vaults", TitledArea = "Whispering Vaults", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Library_14__left1 }) }; public static RoomData Library_15 { get; } = new RoomData { Name = "Library_15", MapZone = (MapZone)20, MapArea = "Whispering Vaults", TitledArea = "Whispering Vaults", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Library_15__right1 }) }; public static RoomData Library_16 { get; } = new RoomData { Name = "Library_16", MapZone = (MapZone)20, MapArea = "Whispering Vaults", TitledArea = "Whispering Vaults", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Library_16__right1 }) }; public static RoomData Memory_Ant_Queen { get; } = new RoomData { Name = "Memory_Ant_Queen", MapZone = (MapZone)33, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Memory_Ant_Queen__door_wakeInMemory }) }; public static RoomData Memory_Coral_Tower { get; } = new RoomData { Name = "Memory_Coral_Tower", MapZone = (MapZone)33, MapArea = "Sands of Karak", TitledArea = "Coral Tower", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Memory_Coral_Tower__door_wakeInMemory }) }; public static RoomData Memory_First_Sinner { get; } = new RoomData { Name = "Memory_First_Sinner", MapZone = (MapZone)33, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Memory_First_Sinner__door_wakeOnGround }) }; public static RoomData Memory_Needolin { get; } = new RoomData { Name = "Memory_Needolin", MapZone = (MapZone)33, MapArea = "Bellhart", TitledArea = "Bellhart", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Memory_Needolin__door_wakeOnGround, BaseGateList.Memory_Needolin__left1, BaseGateList.Memory_Needolin__right1 }) }; public static RoomData Memory_Red { get; } = new RoomData { Name = "Memory_Red", MapZone = (MapZone)33, MapArea = "Mosslands", TitledArea = "Ruined Chapel", Gates = new ReadOnlyCollection(new List(9) { BaseGateList.Memory_Red__door_enterRedMemory_Beast, BaseGateList.Memory_Red__door_enterRedMemory_Hive, BaseGateList.Memory_Red__door_enterRedMemory_Weaver, BaseGateList.Memory_Red__door_wakeInMemory, BaseGateList.Memory_Red__door_wakeInRedMemory_Beast, BaseGateList.Memory_Red__door_wakeInRedMemory_Hive, BaseGateList.Memory_Red__door_wakeInRedMemory_Root, BaseGateList.Memory_Red__door_wakeInRedMemory_Weaver, BaseGateList.Memory_Red__top1 }) }; public static RoomData Memory_Silk_Heart_BellBeast { get; } = new RoomData { Name = "Memory_Silk_Heart_BellBeast", MapZone = (MapZone)33, MapArea = "The Marrow", TitledArea = "The Marrow", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Memory_Silk_Heart_BellBeast__door_wakeOnGround }) }; public static RoomData Memory_Silk_Heart_LaceTower { get; } = new RoomData { Name = "Memory_Silk_Heart_LaceTower", MapZone = (MapZone)33, MapArea = "Cradle", TitledArea = "The Cradle", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Memory_Silk_Heart_LaceTower__door_wakeOnGround }) }; public static RoomData Memory_Silk_Heart_WardBoss { get; } = new RoomData { Name = "Memory_Silk_Heart_WardBoss", MapZone = (MapZone)33, MapArea = "Whiteward", TitledArea = "Whiteward", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Memory_Silk_Heart_WardBoss__door_wakeOnGround }) }; public static RoomData Mosstown_01 { get; } = new RoomData { Name = "Mosstown_01", MapZone = (MapZone)19, MapArea = "Mosslands", TitledArea = "Mosshome", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Mosstown_01__bot1, BaseGateList.Mosstown_01__right1, BaseGateList.Mosstown_01__right2, BaseGateList.Mosstown_01__top1 }) }; public static RoomData Mosstown_02 { get; } = new RoomData { Name = "Mosstown_02", MapZone = (MapZone)19, MapArea = "Mosslands", TitledArea = "Mosshome", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Mosstown_02__bot1, BaseGateList.Mosstown_02__bot2, BaseGateList.Mosstown_02__left1, BaseGateList.Mosstown_02__right1 }) }; public static RoomData Mosstown_02c { get; } = new RoomData { Name = "Mosstown_02c", MapZone = (MapZone)19, MapArea = "Mosslands", TitledArea = "Mosshome", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Mosstown_02c__left2 }) }; public static RoomData Mosstown_03 { get; } = new RoomData { Name = "Mosstown_03", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Mosstown_03__right1, BaseGateList.Mosstown_03__right2, BaseGateList.Mosstown_03__top1 }) }; public static RoomData Organ_01 { get; } = new RoomData { Name = "Organ_01", MapZone = (MapZone)6, MapArea = "Bilewater", TitledArea = "Exhaust Organ", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Organ_01__left1, BaseGateList.Organ_01__left2, BaseGateList.Organ_01__left3 }) }; public static RoomData Peak_01 { get; } = new RoomData { Name = "Peak_01", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(12) { BaseGateList.Peak_01__left1, BaseGateList.Peak_01__left2, BaseGateList.Peak_01__left3, BaseGateList.Peak_01__left4, BaseGateList.Peak_01__right1, BaseGateList.Peak_01__right2, BaseGateList.Peak_01__right3, BaseGateList.Peak_01__right4, BaseGateList.Peak_01__top1, BaseGateList.Peak_01__top2, BaseGateList.Peak_01__top3, BaseGateList.Peak_01__top4 }) }; public static RoomData Peak_02 { get; } = new RoomData { Name = "Peak_02", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(7) { BaseGateList.Peak_02__left1, BaseGateList.Peak_02__left2, BaseGateList.Peak_02__left3, BaseGateList.Peak_02__right1, BaseGateList.Peak_02__right2, BaseGateList.Peak_02__right3, BaseGateList.Peak_02__right4 }) }; public static RoomData Peak_04 { get; } = new RoomData { Name = "Peak_04", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Peak_04__left1, BaseGateList.Peak_04__right1 }) }; public static RoomData Peak_04c { get; } = new RoomData { Name = "Peak_04c", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Peak_04c__right1, BaseGateList.Peak_04c__right2 }) }; public static RoomData Peak_04d { get; } = new RoomData { Name = "Peak_04d", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Peak_04d__left1, BaseGateList.Peak_04d__right1 }) }; public static RoomData Peak_05 { get; } = new RoomData { Name = "Peak_05", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Peak_05__bot1, BaseGateList.Peak_05__right3, BaseGateList.Peak_05__top2 }) }; public static RoomData Peak_05c { get; } = new RoomData { Name = "Peak_05c", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Peak_05c__left2, BaseGateList.Peak_05c__right1 }) }; public static RoomData Peak_05d { get; } = new RoomData { Name = "Peak_05d", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Peak_05d__bot1, BaseGateList.Peak_05d__door1 }) }; public static RoomData Peak_05e { get; } = new RoomData { Name = "Peak_05e", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Peak_05e__left1, BaseGateList.Peak_05e__right1, BaseGateList.Peak_05e__right2 }) }; public static RoomData Peak_06 { get; } = new RoomData { Name = "Peak_06", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Peak_06__left1 }) }; public static RoomData Peak_06b { get; } = new RoomData { Name = "Peak_06b", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Peak_06b__door1, BaseGateList.Peak_06b__left1 }) }; public static RoomData Peak_07 { get; } = new RoomData { Name = "Peak_07", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Peak_07__bot1, BaseGateList.Peak_07__bot3, BaseGateList.Peak_07__bot4, BaseGateList.Peak_07__bot5, BaseGateList.Peak_07__top1, BaseGateList.Peak_07__top2 }) }; public static RoomData Peak_08 { get; } = new RoomData { Name = "Peak_08", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Peak_08__bot1, BaseGateList.Peak_08__right1, BaseGateList.Peak_08__top1 }) }; public static RoomData Peak_08b { get; } = new RoomData { Name = "Peak_08b", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Peak_08b__bot4, BaseGateList.Peak_08b__bot5, BaseGateList.Peak_08b__bot6, BaseGateList.Peak_08b__left1, BaseGateList.Peak_08b__left2 }) }; public static RoomData Peak_10 { get; } = new RoomData { Name = "Peak_10", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Peak_10__right1 }) }; public static RoomData Peak_12 { get; } = new RoomData { Name = "Peak_12", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Peak_12__right1 }) }; public static RoomData Peak_Mask_Maker { get; } = new RoomData { Name = "Peak_Mask_Maker", MapZone = (MapZone)24, MapArea = "Mount Fay", TitledArea = "Mount Fay", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Peak_Mask_Maker__right1 }) }; public static RoomData Room_Caravan_Interior { get; } = new RoomData { Name = "Room_Caravan_Interior", MapZone = (MapZone)0, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Room_Caravan_Interior__right1 }) }; public static RoomData Room_Caravan_Spa { get; } = new RoomData { Name = "Room_Caravan_Spa", MapZone = (MapZone)0, MapArea = MapAreaNames.Unknown, TitledArea = TitledAreaNames.Unknown, Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Room_Caravan_Spa__left1 }) }; public static RoomData Room_CrowCourt { get; } = new RoomData { Name = "Room_CrowCourt", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Room_CrowCourt__bot1, BaseGateList.Room_CrowCourt__left1 }) }; public static RoomData Room_CrowCourt_02 { get; } = new RoomData { Name = "Room_CrowCourt_02", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Room_CrowCourt_02__top1 }) }; public static RoomData Room_Diving_Bell { get; } = new RoomData { Name = "Room_Diving_Bell", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Room_Diving_Bell__door_cinematicEnd, BaseGateList.Room_Diving_Bell__left1 }) }; public static RoomData Room_Diving_Bell_Abyss { get; } = new RoomData { Name = "Room_Diving_Bell_Abyss", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Room_Diving_Bell_Abyss__door_wakeOnGround, BaseGateList.Room_Diving_Bell_Abyss__left1 }) }; public static RoomData Room_Diving_Bell_Abyss_Fixed { get; } = new RoomData { Name = "Room_Diving_Bell_Abyss_Fixed", MapZone = (MapZone)37, MapArea = "The Abyss", TitledArea = "The Abyss", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Room_Diving_Bell_Abyss_Fixed__door_cinematicEnd, BaseGateList.Room_Diving_Bell_Abyss_Fixed__left1 }) }; public static RoomData Room_Forge { get; } = new RoomData { Name = "Room_Forge", MapZone = (MapZone)15, MapArea = "Deep Docks", TitledArea = "Deep Docks", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Room_Forge__left1, BaseGateList.Room_Forge__right1, BaseGateList.Room_Forge__top1 }) }; public static RoomData Room_Huntress { get; } = new RoomData { Name = "Room_Huntress", MapZone = (MapZone)38, MapArea = "Putrified Ducts", TitledArea = "Putrified Ducts", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Room_Huntress__left1 }) }; public static RoomData Room_Pinstress { get; } = new RoomData { Name = "Room_Pinstress", MapZone = (MapZone)32, MapArea = "Blasted Steps", TitledArea = "Blasted Steps", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Room_Pinstress__left1 }) }; public static RoomData Room_Witch { get; } = new RoomData { Name = "Room_Witch", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Room_Witch__left1 }) }; public static RoomData Shadow_01 { get; } = new RoomData { Name = "Shadow_01", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(7) { BaseGateList.Shadow_01__left1, BaseGateList.Shadow_01__left2, BaseGateList.Shadow_01__left3, BaseGateList.Shadow_01__right1, BaseGateList.Shadow_01__right2, BaseGateList.Shadow_01__right3, BaseGateList.Shadow_01__top1 }) }; public static RoomData Shadow_02 { get; } = new RoomData { Name = "Shadow_02", MapZone = (MapZone)36, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Shadow_02__left1, BaseGateList.Shadow_02__left2, BaseGateList.Shadow_02__right1, BaseGateList.Shadow_02__right2, BaseGateList.Shadow_02__right3 }) }; public static RoomData Shadow_03 { get; } = new RoomData { Name = "Shadow_03", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Shadow_03__left1, BaseGateList.Shadow_03__right1, BaseGateList.Shadow_03__top1 }) }; public static RoomData Shadow_04 { get; } = new RoomData { Name = "Shadow_04", MapZone = (MapZone)36, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Shadow_04__left1, BaseGateList.Shadow_04__right1, BaseGateList.Shadow_04__right2, BaseGateList.Shadow_04__top1 }) }; public static RoomData Shadow_04b { get; } = new RoomData { Name = "Shadow_04b", MapZone = (MapZone)36, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shadow_04b__left1, BaseGateList.Shadow_04b__right1 }) }; public static RoomData Shadow_05 { get; } = new RoomData { Name = "Shadow_05", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shadow_05__left1, BaseGateList.Shadow_05__right1 }) }; public static RoomData Shadow_08 { get; } = new RoomData { Name = "Shadow_08", MapZone = (MapZone)36, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shadow_08__left1, BaseGateList.Shadow_08__top1 }) }; public static RoomData Shadow_09 { get; } = new RoomData { Name = "Shadow_09", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Shadow_09__left1, BaseGateList.Shadow_09__left2, BaseGateList.Shadow_09__left3, BaseGateList.Shadow_09__right1 }) }; public static RoomData Shadow_10 { get; } = new RoomData { Name = "Shadow_10", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Shadow_10__bot1, BaseGateList.Shadow_10__left1, BaseGateList.Shadow_10__right1 }) }; public static RoomData Shadow_11 { get; } = new RoomData { Name = "Shadow_11", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shadow_11__left1, BaseGateList.Shadow_11__right1 }) }; public static RoomData Shadow_12 { get; } = new RoomData { Name = "Shadow_12", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shadow_12__left1, BaseGateList.Shadow_12__right1 }) }; public static RoomData Shadow_13 { get; } = new RoomData { Name = "Shadow_13", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Shadow_13__left1 }) }; public static RoomData Shadow_14 { get; } = new RoomData { Name = "Shadow_14", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shadow_14__right1, BaseGateList.Shadow_14__right2 }) }; public static RoomData Shadow_15 { get; } = new RoomData { Name = "Shadow_15", MapZone = (MapZone)36, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shadow_15__right1, BaseGateList.Shadow_15__right2 }) }; public static RoomData Shadow_16 { get; } = new RoomData { Name = "Shadow_16", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shadow_16__left1, BaseGateList.Shadow_16__right1 }) }; public static RoomData Shadow_18 { get; } = new RoomData { Name = "Shadow_18", MapZone = (MapZone)36, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Shadow_18__door1, BaseGateList.Shadow_18__left1, BaseGateList.Shadow_18__right1 }) }; public static RoomData Shadow_19 { get; } = new RoomData { Name = "Shadow_19", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Shadow_19__left1, BaseGateList.Shadow_19__left2, BaseGateList.Shadow_19__right1, BaseGateList.Shadow_19__right2 }) }; public static RoomData Shadow_20 { get; } = new RoomData { Name = "Shadow_20", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shadow_20__bot1, BaseGateList.Shadow_20__top1 }) }; public static RoomData Shadow_21 { get; } = new RoomData { Name = "Shadow_21", MapZone = (MapZone)36, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Shadow_21__bot1 }) }; public static RoomData Shadow_22 { get; } = new RoomData { Name = "Shadow_22", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Shadow_22__bot1, BaseGateList.Shadow_22__top1, BaseGateList.Shadow_22__top2, BaseGateList.Shadow_22__top3 }) }; public static RoomData Shadow_23 { get; } = new RoomData { Name = "Shadow_23", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Shadow_23__left1 }) }; public static RoomData Shadow_24 { get; } = new RoomData { Name = "Shadow_24", MapZone = (MapZone)36, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Shadow_24__left1 }) }; public static RoomData Shadow_25 { get; } = new RoomData { Name = "Shadow_25", MapZone = (MapZone)36, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Shadow_25__left1 }) }; public static RoomData Shadow_26 { get; } = new RoomData { Name = "Shadow_26", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Shadow_26__left1, BaseGateList.Shadow_26__left2, BaseGateList.Shadow_26__right1, BaseGateList.Shadow_26__right2 }) }; public static RoomData Shadow_27 { get; } = new RoomData { Name = "Shadow_27", MapZone = (MapZone)36, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shadow_27__left1, BaseGateList.Shadow_27__right1 }) }; public static RoomData Shadow_28 { get; } = new RoomData { Name = "Shadow_28", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Shadow_28__right1 }) }; public static RoomData Shadow_Bilehaven_Room { get; } = new RoomData { Name = "Shadow_Bilehaven_Room", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Bilewater", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Shadow_Bilehaven_Room__left1 }) }; public static RoomData Shadow_Weavehome { get; } = new RoomData { Name = "Shadow_Weavehome", MapZone = (MapZone)9, MapArea = "Bilewater", TitledArea = "Weavenest Murglin", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Shadow_Weavehome__left1 }) }; public static RoomData Shellgrave { get; } = new RoomData { Name = "Shellgrave", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Shellgrave__bot1 }) }; public static RoomData Shellwood_01 { get; } = new RoomData { Name = "Shellwood_01", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Shellwood_01__left1, BaseGateList.Shellwood_01__left2, BaseGateList.Shellwood_01__right1, BaseGateList.Shellwood_01__right2 }) }; public static RoomData Shellwood_01b { get; } = new RoomData { Name = "Shellwood_01b", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Shellwood_01b__left1, BaseGateList.Shellwood_01b__left2, BaseGateList.Shellwood_01b__right1, BaseGateList.Shellwood_01b__right2, BaseGateList.Shellwood_01b__right3 }) }; public static RoomData Shellwood_02 { get; } = new RoomData { Name = "Shellwood_02", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Shellwood_02__left2, BaseGateList.Shellwood_02__left3, BaseGateList.Shellwood_02__right1, BaseGateList.Shellwood_02__right2 }) }; public static RoomData Shellwood_03 { get; } = new RoomData { Name = "Shellwood_03", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Shellwood_03__bot1, BaseGateList.Shellwood_03__left1, BaseGateList.Shellwood_03__left3, BaseGateList.Shellwood_03__right1, BaseGateList.Shellwood_03__right2, BaseGateList.Shellwood_03__right3 }) }; public static RoomData Shellwood_04b { get; } = new RoomData { Name = "Shellwood_04b", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Shellwood_04b__left1, BaseGateList.Shellwood_04b__right1, BaseGateList.Shellwood_04b__top1, BaseGateList.Shellwood_04b__top2 }) }; public static RoomData Shellwood_04c { get; } = new RoomData { Name = "Shellwood_04c", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shellwood_04c__bot1, BaseGateList.Shellwood_04c__top1 }) }; public static RoomData Shellwood_08 { get; } = new RoomData { Name = "Shellwood_08", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Shellwood_08__bot1, BaseGateList.Shellwood_08__left1, BaseGateList.Shellwood_08__right1 }) }; public static RoomData Shellwood_08c { get; } = new RoomData { Name = "Shellwood_08c", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shellwood_08c__left1, BaseGateList.Shellwood_08c__right1 }) }; public static RoomData Shellwood_10 { get; } = new RoomData { Name = "Shellwood_10", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Shellwood_10__left1, BaseGateList.Shellwood_10__left2, BaseGateList.Shellwood_10__left3, BaseGateList.Shellwood_10__right1, BaseGateList.Shellwood_10__right2, BaseGateList.Shellwood_10__right3 }) }; public static RoomData Shellwood_11 { get; } = new RoomData { Name = "Shellwood_11", MapZone = (MapZone)4, MapArea = "Grand Gate", TitledArea = "Grand Gate", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shellwood_11__right1, BaseGateList.Shellwood_11__right2 }) }; public static RoomData Shellwood_11b { get; } = new RoomData { Name = "Shellwood_11b", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shellwood_11b__door_wakeOnGround, BaseGateList.Shellwood_11b__right1 }) }; public static RoomData Shellwood_11b_Memory { get; } = new RoomData { Name = "Shellwood_11b_Memory", MapZone = (MapZone)33, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Shellwood_11b_Memory__door_wakeInMemory }) }; public static RoomData Shellwood_13 { get; } = new RoomData { Name = "Shellwood_13", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Shellwood_13__left1, BaseGateList.Shellwood_13__left2, BaseGateList.Shellwood_13__right1 }) }; public static RoomData Shellwood_14 { get; } = new RoomData { Name = "Shellwood_14", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Shellwood_14__left1 }) }; public static RoomData Shellwood_15 { get; } = new RoomData { Name = "Shellwood_15", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shellwood_15__left1, BaseGateList.Shellwood_15__right1 }) }; public static RoomData Shellwood_16 { get; } = new RoomData { Name = "Shellwood_16", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shellwood_16__left1, BaseGateList.Shellwood_16__right1 }) }; public static RoomData Shellwood_18 { get; } = new RoomData { Name = "Shellwood_18", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Shellwood_18__left1, BaseGateList.Shellwood_18__right1, BaseGateList.Shellwood_18__top1 }) }; public static RoomData Shellwood_19 { get; } = new RoomData { Name = "Shellwood_19", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Shellwood_19__door_fastTravelExit, BaseGateList.Shellwood_19__left1, BaseGateList.Shellwood_19__right1 }) }; public static RoomData Shellwood_20 { get; } = new RoomData { Name = "Shellwood_20", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shellwood_20__left1, BaseGateList.Shellwood_20__right1 }) }; public static RoomData Shellwood_22 { get; } = new RoomData { Name = "Shellwood_22", MapZone = (MapZone)4, MapArea = "Grand Gate", TitledArea = "Grand Gate", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shellwood_22__door1, BaseGateList.Shellwood_22__right1 }) }; public static RoomData Shellwood_25 { get; } = new RoomData { Name = "Shellwood_25", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shellwood_25__door1, BaseGateList.Shellwood_25__left1 }) }; public static RoomData Shellwood_25b { get; } = new RoomData { Name = "Shellwood_25b", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Chapel of the Witch", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shellwood_25b__door_curseSequenceEnd, BaseGateList.Shellwood_25b__left1 }) }; public static RoomData Shellwood_26 { get; } = new RoomData { Name = "Shellwood_26", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shellwood_26__bot1, BaseGateList.Shellwood_26__left1 }) }; public static RoomData Shellwood_Witch { get; } = new RoomData { Name = "Shellwood_Witch", MapZone = (MapZone)4, MapArea = "Shellwood", TitledArea = "Shellwood", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Shellwood_Witch__door1, BaseGateList.Shellwood_Witch__right1 }) }; public static RoomData Slab_01 { get; } = new RoomData { Name = "Slab_01", MapZone = (MapZone)6, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Slab_01__left1, BaseGateList.Slab_01__right1 }) }; public static RoomData Slab_02 { get; } = new RoomData { Name = "Slab_02", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Slab_02__left1, BaseGateList.Slab_02__right1 }) }; public static RoomData Slab_03 { get; } = new RoomData { Name = "Slab_03", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(17) { BaseGateList.Slab_03__door_slabCaged, BaseGateList.Slab_03__left1, BaseGateList.Slab_03__left2, BaseGateList.Slab_03__left3, BaseGateList.Slab_03__left4, BaseGateList.Slab_03__left5, BaseGateList.Slab_03__left6, BaseGateList.Slab_03__left7, BaseGateList.Slab_03__left8, BaseGateList.Slab_03__right1, BaseGateList.Slab_03__right2, BaseGateList.Slab_03__right3, BaseGateList.Slab_03__right4, BaseGateList.Slab_03__right5, BaseGateList.Slab_03__right7, BaseGateList.Slab_03__right8, BaseGateList.Slab_03__right9 }) }; public static RoomData Slab_04 { get; } = new RoomData { Name = "Slab_04", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Slab_04__bot1, BaseGateList.Slab_04__right1, BaseGateList.Slab_04__top1 }) }; public static RoomData Slab_05 { get; } = new RoomData { Name = "Slab_05", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Slab_05__bot1, BaseGateList.Slab_05__right1, BaseGateList.Slab_05__top1 }) }; public static RoomData Slab_06 { get; } = new RoomData { Name = "Slab_06", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Slab_06__door_fastTravelExit, BaseGateList.Slab_06__left1, BaseGateList.Slab_06__top1 }) }; public static RoomData Slab_07 { get; } = new RoomData { Name = "Slab_07", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Slab_07__right1, BaseGateList.Slab_07__right2 }) }; public static RoomData Slab_08 { get; } = new RoomData { Name = "Slab_08", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Slab_08__door1, BaseGateList.Slab_08__left1 }) }; public static RoomData Slab_10b { get; } = new RoomData { Name = "Slab_10b", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Slab_10b__door_wakeOnGround, BaseGateList.Slab_10b__left1 }) }; public static RoomData Slab_10c { get; } = new RoomData { Name = "Slab_10c", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Slab_10c__door1, BaseGateList.Slab_10c__left1 }) }; public static RoomData Slab_12 { get; } = new RoomData { Name = "Slab_12", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Slab_12__left1 }) }; public static RoomData Slab_13 { get; } = new RoomData { Name = "Slab_13", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Slab_13__bot1, BaseGateList.Slab_13__door1, BaseGateList.Slab_13__left1, BaseGateList.Slab_13__right1 }) }; public static RoomData Slab_14 { get; } = new RoomData { Name = "Slab_14", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Slab_14__right1, BaseGateList.Slab_14__top1 }) }; public static RoomData Slab_15 { get; } = new RoomData { Name = "Slab_15", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Slab_15__bot1, BaseGateList.Slab_15__left1, BaseGateList.Slab_15__right1, BaseGateList.Slab_15__top1 }) }; public static RoomData Slab_16 { get; } = new RoomData { Name = "Slab_16", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Slab_16__bot1, BaseGateList.Slab_16__door1, BaseGateList.Slab_16__left1, BaseGateList.Slab_16__right1, BaseGateList.Slab_16__top1 }) }; public static RoomData Slab_16b { get; } = new RoomData { Name = "Slab_16b", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Slab_16b__left1 }) }; public static RoomData Slab_17 { get; } = new RoomData { Name = "Slab_17", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Slab_17__left1 }) }; public static RoomData Slab_18 { get; } = new RoomData { Name = "Slab_18", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Slab_18__left1, BaseGateList.Slab_18__right1 }) }; public static RoomData Slab_19b { get; } = new RoomData { Name = "Slab_19b", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Slab_19b__left1, BaseGateList.Slab_19b__right1 }) }; public static RoomData Slab_20 { get; } = new RoomData { Name = "Slab_20", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Slab_20__left1 }) }; public static RoomData Slab_21 { get; } = new RoomData { Name = "Slab_21", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Slab_21__left1, BaseGateList.Slab_21__left3, BaseGateList.Slab_21__top1 }) }; public static RoomData Slab_22 { get; } = new RoomData { Name = "Slab_22", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Slab_22__bot1, BaseGateList.Slab_22__bot2 }) }; public static RoomData Slab_23 { get; } = new RoomData { Name = "Slab_23", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Slab_23__door1, BaseGateList.Slab_23__door2, BaseGateList.Slab_23__left1, BaseGateList.Slab_23__right1 }) }; public static RoomData Slab_Cell { get; } = new RoomData { Name = "Slab_Cell", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Slab_Cell__left1 }) }; public static RoomData Slab_Cell_Creature { get; } = new RoomData { Name = "Slab_Cell_Creature", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Slab_Cell_Creature__left1 }) }; public static RoomData Slab_Cell_Quiet { get; } = new RoomData { Name = "Slab_Cell_Quiet", MapZone = (MapZone)7, MapArea = "The Slab", TitledArea = "The Slab", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Slab_Cell_Quiet__left1, BaseGateList.Slab_Cell_Quiet__left2 }) }; public static RoomData Song_01 { get; } = new RoomData { Name = "Song_01", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Song_01__bot1, BaseGateList.Song_01__right2, BaseGateList.Song_01__top1 }) }; public static RoomData Song_01b { get; } = new RoomData { Name = "Song_01b", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Song_01b__door_tubeEnter, BaseGateList.Song_01b__bot1, BaseGateList.Song_01b__right1, BaseGateList.Song_01b__top1 }) }; public static RoomData Song_01c { get; } = new RoomData { Name = "Song_01c", MapZone = (MapZone)6, MapArea = "Grand Gate", TitledArea = "Grand Gate", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Song_01c__left1, BaseGateList.Song_01c__top1 }) }; public static RoomData Song_02 { get; } = new RoomData { Name = "Song_02", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Song_02__left2, BaseGateList.Song_02__right1 }) }; public static RoomData Song_03 { get; } = new RoomData { Name = "Song_03", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Song_03__bot1, BaseGateList.Song_03__top1 }) }; public static RoomData Song_04 { get; } = new RoomData { Name = "Song_04", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Song_04__bot1, BaseGateList.Song_04__left1, BaseGateList.Song_04__right1, BaseGateList.Song_04__right2 }) }; public static RoomData Song_05 { get; } = new RoomData { Name = "Song_05", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Song_05__left3, BaseGateList.Song_05__left4, BaseGateList.Song_05__left5, BaseGateList.Song_05__right2, BaseGateList.Song_05__right3, BaseGateList.Song_05__right4 }) }; public static RoomData Song_07 { get; } = new RoomData { Name = "Song_07", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Song_07__right1 }) }; public static RoomData Song_08 { get; } = new RoomData { Name = "Song_08", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Song_08__right1 }) }; public static RoomData Song_09 { get; } = new RoomData { Name = "Song_09", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Song_09__bot1, BaseGateList.Song_09__right1, BaseGateList.Song_09__top1 }) }; public static RoomData Song_09b { get; } = new RoomData { Name = "Song_09b", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Song_09b__left1, BaseGateList.Song_09b__top1 }) }; public static RoomData Song_10 { get; } = new RoomData { Name = "Song_10", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Song_10__left1, BaseGateList.Song_10__right1 }) }; public static RoomData Song_11 { get; } = new RoomData { Name = "Song_11", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(7) { BaseGateList.Song_11__left1, BaseGateList.Song_11__left2, BaseGateList.Song_11__left3, BaseGateList.Song_11__left4, BaseGateList.Song_11__right1, BaseGateList.Song_11__right2, BaseGateList.Song_11__right3 }) }; public static RoomData Song_12 { get; } = new RoomData { Name = "Song_12", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(7) { BaseGateList.Song_12__left1, BaseGateList.Song_12__left2, BaseGateList.Song_12__left3, BaseGateList.Song_12__left4, BaseGateList.Song_12__right1, BaseGateList.Song_12__right2, BaseGateList.Song_12__right3 }) }; public static RoomData Song_13 { get; } = new RoomData { Name = "Song_13", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Song_13__left1, BaseGateList.Song_13__right1 }) }; public static RoomData Song_14 { get; } = new RoomData { Name = "Song_14", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Song_14__left1 }) }; public static RoomData Song_15 { get; } = new RoomData { Name = "Song_15", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Song_15__left1, BaseGateList.Song_15__right1 }) }; public static RoomData Song_17 { get; } = new RoomData { Name = "Song_17", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Song_17__left1, BaseGateList.Song_17__right1 }) }; public static RoomData Song_18 { get; } = new RoomData { Name = "Song_18", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Song_18__bot1, BaseGateList.Song_18__left1 }) }; public static RoomData Song_19_entrance { get; } = new RoomData { Name = "Song_19_entrance", MapZone = (MapZone)6, MapArea = "Grand Gate", TitledArea = "Grand Gate", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Song_19_entrance__left1, BaseGateList.Song_19_entrance__right1, BaseGateList.Song_19_entrance__right2 }) }; public static RoomData Song_20 { get; } = new RoomData { Name = "Song_20", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(7) { BaseGateList.Song_20__left1, BaseGateList.Song_20__left2, BaseGateList.Song_20__right_cutsceneEntry, BaseGateList.Song_20__right4, BaseGateList.Song_20__right5, BaseGateList.Song_20__right6, BaseGateList.Song_20__top1 }) }; public static RoomData Song_20b { get; } = new RoomData { Name = "Song_20b", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Song_20b__bot1, BaseGateList.Song_20b__left2, BaseGateList.Song_20b__left4, BaseGateList.Song_20b__right2, BaseGateList.Song_20b__right3, BaseGateList.Song_20b__top1 }) }; public static RoomData Song_24 { get; } = new RoomData { Name = "Song_24", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Song_24__right1 }) }; public static RoomData Song_25 { get; } = new RoomData { Name = "Song_25", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(5) { BaseGateList.Song_25__bot1, BaseGateList.Song_25__left1, BaseGateList.Song_25__right1, BaseGateList.Song_25__top1, BaseGateList.Song_25__top2 }) }; public static RoomData Song_26 { get; } = new RoomData { Name = "Song_26", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Song_26__right1 }) }; public static RoomData Song_27 { get; } = new RoomData { Name = "Song_27", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Song_27__left1, BaseGateList.Song_27__right1, BaseGateList.Song_27__top1 }) }; public static RoomData Song_28 { get; } = new RoomData { Name = "Song_28", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Song_28__right1 }) }; public static RoomData Song_29 { get; } = new RoomData { Name = "Song_29", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Song_29__right1 }) }; public static RoomData Song_Enclave { get; } = new RoomData { Name = "Song_Enclave", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Song_Enclave__bot1, BaseGateList.Song_Enclave__door_act3_wakeUp, BaseGateList.Song_Enclave__door1, BaseGateList.Song_Enclave__left1, BaseGateList.Song_Enclave__left2, BaseGateList.Song_Enclave__top1 }) }; public static RoomData Song_Enclave_Tube { get; } = new RoomData { Name = "Song_Enclave_Tube", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Song_Enclave_Tube__bot1, BaseGateList.Song_Enclave_Tube__door_tubeEnter }) }; public static RoomData Song_Tower_01 { get; } = new RoomData { Name = "Song_Tower_01", MapZone = (MapZone)29, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Song_Tower_01__door_cinematicEnd, BaseGateList.Song_Tower_01__door_cutsceneEndLaceTower, BaseGateList.Song_Tower_01__right1 }) }; public static RoomData Song_Tower_Destroyed { get; } = new RoomData { Name = "Song_Tower_Destroyed", MapZone = (MapZone)29, MapArea = "Cradle", TitledArea = "The Cradle", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Song_Tower_Destroyed__bot1, BaseGateList.Song_Tower_Destroyed__top1 }) }; public static RoomData Sprintmaster_Cave { get; } = new RoomData { Name = "Sprintmaster_Cave", MapZone = (MapZone)16, MapArea = "Far Fields", TitledArea = "Far Fields", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Sprintmaster_Cave__left1 }) }; public static RoomData Tube_Hub { get; } = new RoomData { Name = "Tube_Hub", MapZone = (MapZone)6, MapArea = "Cradle", TitledArea = "The Cradle", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Tube_Hub__door_tubeEnter, BaseGateList.Tube_Hub__left1, BaseGateList.Tube_Hub__left3, BaseGateList.Tube_Hub__left4 }) }; public static RoomData Tut_01 { get; } = new RoomData { Name = "Tut_01", MapZone = (MapZone)13, MapArea = "Mosslands", TitledArea = "Moss Grotto", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Tut_01__left1, BaseGateList.Tut_01__left2, BaseGateList.Tut_01__left3, BaseGateList.Tut_01__right1, BaseGateList.Tut_01__right2, BaseGateList.Tut_01__top1 }) }; public static RoomData Tut_01b { get; } = new RoomData { Name = "Tut_01b", MapZone = (MapZone)13, MapArea = "Mosslands", TitledArea = "Moss Grotto", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Tut_01b__left1, BaseGateList.Tut_01b__left2, BaseGateList.Tut_01b__right1 }) }; public static RoomData Tut_02 { get; } = new RoomData { Name = "Tut_02", MapZone = (MapZone)13, MapArea = "Mosslands", TitledArea = "Moss Grotto", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Tut_02__right1, BaseGateList.Tut_02__right2 }) }; public static RoomData Tut_03 { get; } = new RoomData { Name = "Tut_03", MapZone = (MapZone)12, MapArea = "Mosslands", TitledArea = "Moss Grotto", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Tut_03__door1, BaseGateList.Tut_03__door2, BaseGateList.Tut_03__right1, BaseGateList.Tut_03__top1 }) }; public static RoomData Tut_04 { get; } = new RoomData { Name = "Tut_04", MapZone = (MapZone)12, MapArea = "Mosslands", TitledArea = "Ruined Chapel", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Tut_04__door_memoryEnd, BaseGateList.Tut_04__door_ritualEnd, BaseGateList.Tut_04__left1, BaseGateList.Tut_04__right1 }) }; public static RoomData Tut_05 { get; } = new RoomData { Name = "Tut_05", MapZone = (MapZone)13, MapArea = "Mosslands", TitledArea = "Ruined Chapel", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Tut_05__door_memoryEnd, BaseGateList.Tut_05__left1 }) }; public static RoomData Under_01 { get; } = new RoomData { Name = "Under_01", MapZone = (MapZone)22, MapArea = "Grand Gate", TitledArea = "Grand Gate", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Under_01__left1, BaseGateList.Under_01__left2, BaseGateList.Under_01__left3, BaseGateList.Under_01__right1 }) }; public static RoomData Under_01b { get; } = new RoomData { Name = "Under_01b", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Under_01b__left1, BaseGateList.Under_01b__right1 }) }; public static RoomData Under_02 { get; } = new RoomData { Name = "Under_02", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Under_02__left1, BaseGateList.Under_02__left3, BaseGateList.Under_02__right1, BaseGateList.Under_02__right2, BaseGateList.Under_02__right3, BaseGateList.Under_02__right4 }) }; public static RoomData Under_03 { get; } = new RoomData { Name = "Under_03", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Under_03__right1 }) }; public static RoomData Under_03b { get; } = new RoomData { Name = "Under_03b", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Under_03b__left1, BaseGateList.Under_03b__right1 }) }; public static RoomData Under_03c { get; } = new RoomData { Name = "Under_03c", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Under_03c__left1, BaseGateList.Under_03c__left2, BaseGateList.Under_03c__right1 }) }; public static RoomData Under_03d { get; } = new RoomData { Name = "Under_03d", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Under_03d__bot1 }) }; public static RoomData Under_04 { get; } = new RoomData { Name = "Under_04", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Under_04__left1, BaseGateList.Under_04__right1, BaseGateList.Under_04__top1 }) }; public static RoomData Under_05 { get; } = new RoomData { Name = "Under_05", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Under_05__left1, BaseGateList.Under_05__left2, BaseGateList.Under_05__left3, BaseGateList.Under_05__right1, BaseGateList.Under_05__right2, BaseGateList.Under_05__right3 }) }; public static RoomData Under_06 { get; } = new RoomData { Name = "Under_06", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Under_06__left1, BaseGateList.Under_06__right1, BaseGateList.Under_06__top1 }) }; public static RoomData Under_07 { get; } = new RoomData { Name = "Under_07", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Under_07__left3, BaseGateList.Under_07__right2 }) }; public static RoomData Under_07b { get; } = new RoomData { Name = "Under_07b", MapZone = (MapZone)6, MapArea = "Choral Chambers", TitledArea = "Choral Chambers", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Under_07b__bot1, BaseGateList.Under_07b__left1 }) }; public static RoomData Under_07c { get; } = new RoomData { Name = "Under_07c", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Under_07c__left2, BaseGateList.Under_07c__top1 }) }; public static RoomData Under_08 { get; } = new RoomData { Name = "Under_08", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Under_08__bot1, BaseGateList.Under_08__top1 }) }; public static RoomData Under_10 { get; } = new RoomData { Name = "Under_10", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Under_10__left1, BaseGateList.Under_10__right1 }) }; public static RoomData Under_11 { get; } = new RoomData { Name = "Under_11", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Under_11__left1, BaseGateList.Under_11__right1 }) }; public static RoomData Under_12 { get; } = new RoomData { Name = "Under_12", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Under_12__left1 }) }; public static RoomData Under_13 { get; } = new RoomData { Name = "Under_13", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(7) { BaseGateList.Under_13__left1, BaseGateList.Under_13__left2, BaseGateList.Under_13__left3, BaseGateList.Under_13__left4, BaseGateList.Under_13__right1, BaseGateList.Under_13__right2, BaseGateList.Under_13__right3 }) }; public static RoomData Under_14 { get; } = new RoomData { Name = "Under_14", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Under_14__left1 }) }; public static RoomData Under_16 { get; } = new RoomData { Name = "Under_16", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Under_16__right1 }) }; public static RoomData Under_17 { get; } = new RoomData { Name = "Under_17", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Under_17__bot1, BaseGateList.Under_17__bot2, BaseGateList.Under_17__door1, BaseGateList.Under_17__left1, BaseGateList.Under_17__right1, BaseGateList.Under_17__top1 }) }; public static RoomData Under_18 { get; } = new RoomData { Name = "Under_18", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Under_18__left1, BaseGateList.Under_18__right1, BaseGateList.Under_18__top1, BaseGateList.Under_18__top2 }) }; public static RoomData Under_19 { get; } = new RoomData { Name = "Under_19", MapZone = (MapZone)6, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Under_19__left1, BaseGateList.Under_19__top1 }) }; public static RoomData Under_19b { get; } = new RoomData { Name = "Under_19b", MapZone = (MapZone)6, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Under_19b__right1 }) }; public static RoomData Under_19c { get; } = new RoomData { Name = "Under_19c", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Under_19c__bot1, BaseGateList.Under_19c__left1, BaseGateList.Under_19c__left2 }) }; public static RoomData Under_20 { get; } = new RoomData { Name = "Under_20", MapZone = (MapZone)0, MapArea = "Underworks", TitledArea = "Chapel of the Architect", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Under_20__door_memoryEnd, BaseGateList.Under_20__left1 }) }; public static RoomData Under_21 { get; } = new RoomData { Name = "Under_21", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Under_21__right1 }) }; public static RoomData Under_22 { get; } = new RoomData { Name = "Under_22", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Under_22__door_tubeEnter, BaseGateList.Under_22__right1 }) }; public static RoomData Under_23 { get; } = new RoomData { Name = "Under_23", MapZone = (MapZone)22, MapArea = "Underworks", TitledArea = "Underworks", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Under_23__bot1, BaseGateList.Under_23__right1 }) }; public static RoomData Under_27 { get; } = new RoomData { Name = "Under_27", MapZone = (MapZone)4, MapArea = "Grand Gate", TitledArea = "Grand Gate", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Under_27__left1, BaseGateList.Under_27__right1, BaseGateList.Under_27__right2 }) }; public static RoomData Ward_01 { get; } = new RoomData { Name = "Ward_01", MapZone = (MapZone)26, MapArea = "Whiteward", TitledArea = "Whiteward", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Ward_01__left1, BaseGateList.Ward_01__left2, BaseGateList.Ward_01__left3, BaseGateList.Ward_01__right1, BaseGateList.Ward_01__right2, BaseGateList.Ward_01__right3 }) }; public static RoomData Ward_02 { get; } = new RoomData { Name = "Ward_02", MapZone = (MapZone)26, MapArea = "Whiteward", TitledArea = "Whiteward", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Ward_02__bot1, BaseGateList.Ward_02__door_cinematicEnd, BaseGateList.Ward_02__right1, BaseGateList.Ward_02__top1 }) }; public static RoomData Ward_02b { get; } = new RoomData { Name = "Ward_02b", MapZone = (MapZone)26, MapArea = "Whiteward", TitledArea = "Whiteward", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Ward_02b__bot1, BaseGateList.Ward_02b__right1 }) }; public static RoomData Ward_03 { get; } = new RoomData { Name = "Ward_03", MapZone = (MapZone)26, MapArea = "Whiteward", TitledArea = "Whiteward", Gates = new ReadOnlyCollection(new List(4) { BaseGateList.Ward_03__bot1, BaseGateList.Ward_03__door1, BaseGateList.Ward_03__left1, BaseGateList.Ward_03__top1 }) }; public static RoomData Ward_04 { get; } = new RoomData { Name = "Ward_04", MapZone = (MapZone)26, MapArea = "Whiteward", TitledArea = "Whiteward", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Ward_04__left1 }) }; public static RoomData Ward_05 { get; } = new RoomData { Name = "Ward_05", MapZone = (MapZone)26, MapArea = "Whiteward", TitledArea = "Whiteward", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Ward_05__left1 }) }; public static RoomData Ward_06 { get; } = new RoomData { Name = "Ward_06", MapZone = (MapZone)26, MapArea = "Whiteward", TitledArea = "Whiteward", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Ward_06__bot1, BaseGateList.Ward_06__top1 }) }; public static RoomData Ward_07 { get; } = new RoomData { Name = "Ward_07", MapZone = (MapZone)26, MapArea = "Whiteward", TitledArea = "Whiteward", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Ward_07__bot1 }) }; public static RoomData Ward_09 { get; } = new RoomData { Name = "Ward_09", MapZone = (MapZone)26, MapArea = "Whiteward", TitledArea = "Whiteward", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Ward_09__left1 }) }; public static RoomData Weave_02 { get; } = new RoomData { Name = "Weave_02", MapZone = (MapZone)17, MapArea = "Weavenest Atla", TitledArea = "Weavenest Atla", Gates = new ReadOnlyCollection(new List(6) { BaseGateList.Weave_02__left2, BaseGateList.Weave_02__left3, BaseGateList.Weave_02__left4, BaseGateList.Weave_02__right1, BaseGateList.Weave_02__right2, BaseGateList.Weave_02__right3 }) }; public static RoomData Weave_03 { get; } = new RoomData { Name = "Weave_03", MapZone = (MapZone)17, MapArea = "Weavenest Atla", TitledArea = "Weavenest Atla", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Weave_03__right1 }) }; public static RoomData Weave_04 { get; } = new RoomData { Name = "Weave_04", MapZone = (MapZone)17, MapArea = "Weavenest Atla", TitledArea = "Weavenest Atla", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Weave_04__left1, BaseGateList.Weave_04__right2 }) }; public static RoomData Weave_05b { get; } = new RoomData { Name = "Weave_05b", MapZone = (MapZone)17, MapArea = "Weavenest Atla", TitledArea = "Weavenest Atla", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Weave_05b__left1 }) }; public static RoomData Weave_07 { get; } = new RoomData { Name = "Weave_07", MapZone = (MapZone)17, MapArea = "Weavenest Atla", TitledArea = "Weavenest Atla", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Weave_07__left1, BaseGateList.Weave_07__right1 }) }; public static RoomData Weave_08 { get; } = new RoomData { Name = "Weave_08", MapZone = (MapZone)17, MapArea = "Weavenest Atla", TitledArea = "Weavenest Atla", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Weave_08__left1, BaseGateList.Weave_08__right1 }) }; public static RoomData Weave_10 { get; } = new RoomData { Name = "Weave_10", MapZone = (MapZone)17, MapArea = "Weavenest Atla", TitledArea = "Weavenest Atla", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Weave_10__left1 }) }; public static RoomData Weave_11 { get; } = new RoomData { Name = "Weave_11", MapZone = (MapZone)17, MapArea = "Weavenest Atla", TitledArea = "Weavenest Atla", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Weave_11__right1, BaseGateList.Weave_11__top1 }) }; public static RoomData Weave_12 { get; } = new RoomData { Name = "Weave_12", MapZone = (MapZone)17, MapArea = "Weavenest Atla", TitledArea = "Weavenest Atla", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Weave_12__left1 }) }; public static RoomData Weave_13 { get; } = new RoomData { Name = "Weave_13", MapZone = (MapZone)17, MapArea = "Weavenest Atla", TitledArea = "Weavenest Atla", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Weave_13__left1, BaseGateList.Weave_13__right1 }) }; public static RoomData Weave_14 { get; } = new RoomData { Name = "Weave_14", MapZone = (MapZone)17, MapArea = "Weavenest Atla", TitledArea = "Weavenest Atla", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Weave_14__bot1 }) }; public static RoomData Wisp_02 { get; } = new RoomData { Name = "Wisp_02", MapZone = (MapZone)35, MapArea = "Greymoor", TitledArea = "Wisp Thicket", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Wisp_02__left1, BaseGateList.Wisp_02__right1, BaseGateList.Wisp_02__top1 }) }; public static RoomData Wisp_03 { get; } = new RoomData { Name = "Wisp_03", MapZone = (MapZone)3, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Wisp_03__door1, BaseGateList.Wisp_03__right1, BaseGateList.Wisp_03__top1 }) }; public static RoomData Wisp_04 { get; } = new RoomData { Name = "Wisp_04", MapZone = (MapZone)35, MapArea = "Greymoor", TitledArea = "Wisp Thicket", Gates = new ReadOnlyCollection(new List(3) { BaseGateList.Wisp_04__bot1, BaseGateList.Wisp_04__left1, BaseGateList.Wisp_04__right1 }) }; public static RoomData Wisp_05 { get; } = new RoomData { Name = "Wisp_05", MapZone = (MapZone)22, MapArea = "Greymoor", TitledArea = "Wisp Thicket", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Wisp_05__bot1, BaseGateList.Wisp_05__left1 }) }; public static RoomData Wisp_06 { get; } = new RoomData { Name = "Wisp_06", MapZone = (MapZone)35, MapArea = "Greymoor", TitledArea = "Greymoor", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Wisp_06__bot1 }) }; public static RoomData Wisp_07 { get; } = new RoomData { Name = "Wisp_07", MapZone = (MapZone)35, MapArea = "Greymoor", TitledArea = "Wisp Thicket", Gates = new ReadOnlyCollection(new List(1) { BaseGateList.Wisp_07__left1 }) }; public static RoomData Wisp_08 { get; } = new RoomData { Name = "Wisp_08", MapZone = (MapZone)35, MapArea = "Greymoor", TitledArea = "Wisp Thicket", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Wisp_08__left1, BaseGateList.Wisp_08__right1 }) }; public static RoomData Wisp_09 { get; } = new RoomData { Name = "Wisp_09", MapZone = (MapZone)35, MapArea = "Greymoor", TitledArea = "Wisp Thicket", Gates = new ReadOnlyCollection(new List(2) { BaseGateList.Wisp_09__right1, BaseGateList.Wisp_09__top1 }) }; } public static class MapAreaNames { public const string Bellhart = "Bellhart"; public const string Bilewater = "Bilewater"; public const string Blasted_Steps = "Blasted Steps"; public const string Choral_Chambers = "Choral Chambers"; public const string Cogwork_Core = "Cogwork Core"; public const string Cradle = "Cradle"; public const string Deep_Docks = "Deep Docks"; public const string Far_Fields = "Far Fields"; public const string Grand_Gate = "Grand Gate"; public const string Greymoor = "Greymoor"; public const string High_Halls = "High Halls"; public const string Hunter_s_March = "Hunter's March"; public const string Memorium = "Memorium"; public const string Mosslands = "Mosslands"; public const string Mount_Fay = "Mount Fay"; public const string Putrified_Ducts = "Putrified Ducts"; public const string Sands_of_Karak = "Sands of Karak"; public const string Shellwood = "Shellwood"; public const string Sinner_s_Road = "Sinner's Road"; public const string The_Abyss = "The Abyss"; public const string The_Marrow = "The Marrow"; public const string The_Slab = "The Slab"; public const string Underworks = "Underworks"; public const string Verdania = "Verdania"; public const string Weavenest_Atla = "Weavenest Atla"; public const string Whispering_Vaults = "Whispering Vaults"; public const string Whiteward = "Whiteward"; public const string Wormways = "Wormways"; public static string Unknown { get; } = "Unknown"; public static ReadOnlyCollection Names { get; } static MapAreaNames() { List list = new List(); list.AddRange(from f in typeof(MapAreaNames).GetFields(BindingFlags.Static | BindingFlags.Public) where f.FieldType == typeof(string) && f.IsLiteral && !f.IsInitOnly select (string)f.GetValue(null)); Names = new ReadOnlyCollection(list); } } public static class PrimitiveGateNames { public const string bot1 = "bot1"; public const string bot1_firstEntry = "bot1 firstEntry"; public const string bot2 = "bot2"; public const string bot3 = "bot3"; public const string bot4 = "bot4"; public const string bot5 = "bot5"; public const string bot6 = "bot6"; public const string bot7 = "bot7"; public const string bot8 = "bot8"; public const string door_act3_wakeUp = "door_act3_wakeUp"; public const string door_arriveFromTower = "door_arriveFromTower"; public const string door_caravanTravelEnd = "door_caravanTravelEnd"; public const string door_cinematicEnd = "door_cinematicEnd"; public const string door_curseSequenceEnd = "door_curseSequenceEnd"; public const string door_cutsceneEndLaceTower = "door_cutsceneEndLaceTower"; public const string door_cutscenePosition = "door_cutscenePosition"; public const string door_enterRedMemory_Beast = "door_enterRedMemory Beast"; public const string door_enterRedMemory_Hive = "door_enterRedMemory Hive"; public const string door_enterRedMemory_Weaver = "door_enterRedMemory Weaver"; public const string door_entry = "door_entry"; public const string door_fastTravelExit = "door_fastTravelExit"; public const string door_memoryEnd = "door_memoryEnd"; public const string door_ritualEnd = "door_ritualEnd"; public const string door_slabCaged = "door_slabCaged"; public const string door_test = "door_test"; public const string door_tubeEnter = "door_tubeEnter"; public const string door_wakeInMemory = "door_wakeInMemory"; public const string door_wakeInRedMemory_Beast = "door_wakeInRedMemory Beast"; public const string door_wakeInRedMemory_Hive = "door_wakeInRedMemory Hive"; public const string door_wakeInRedMemory_Root = "door_wakeInRedMemory Root"; public const string door_wakeInRedMemory_Weaver = "door_wakeInRedMemory Weaver"; public const string door_wakeOnGround = "door_wakeOnGround"; public const string door1 = "door1"; public const string door1_firstExit = "door1 firstExit"; public const string door2 = "door2"; public const string door3 = "door3"; public const string door4 = "door4"; public const string door5 = "door5"; public const string left_firstEntrance = "left_firstEntrance"; public const string left1 = "left1"; public const string left2 = "left2"; public const string left3 = "left3"; public const string left4 = "left4"; public const string left5 = "left5"; public const string left6 = "left6"; public const string left7 = "left7"; public const string left8 = "left8"; public const string right_cutsceneEntry = "right_cutsceneEntry"; public const string right1 = "right1"; public const string right2 = "right2"; public const string right3 = "right3"; public const string right4 = "right4"; public const string right5 = "right5"; public const string right6 = "right6"; public const string right7 = "right7"; public const string right8 = "right8"; public const string right9 = "right9"; public const string top1 = "top1"; public const string top1_1 = "top1 (1)"; public const string top2 = "top2"; public const string top2_extra = "top2 extra"; public const string top3 = "top3"; public const string top4 = "top4"; public const string top5 = "top5"; public const string top6 = "top6"; public const string top7 = "top7"; public const string top8 = "top8"; } public static class RespawnMarkerNames { public const string RestBench = "RestBench"; public const string RestBench__1_ = "RestBench (1)"; public const string RestBench_Festival = "RestBench Festival"; public const string Death_Respawn_Marker_Init = "Death Respawn Marker Init"; } public static class RespawnTypes { public const int Floor = 0; public const int Bench = 1; } public static class SceneNames { public const string Abandoned_town = "Abandoned_town"; public const string Abyss_01 = "Abyss_01"; public const string Abyss_02 = "Abyss_02"; public const string Abyss_02b = "Abyss_02b"; public const string Abyss_03 = "Abyss_03"; public const string Abyss_04 = "Abyss_04"; public const string Abyss_05 = "Abyss_05"; public const string Abyss_06 = "Abyss_06"; public const string Abyss_07 = "Abyss_07"; public const string Abyss_08 = "Abyss_08"; public const string Abyss_09 = "Abyss_09"; public const string Abyss_11 = "Abyss_11"; public const string Abyss_12 = "Abyss_12"; public const string Abyss_13 = "Abyss_13"; public const string Abyss_Cocoon = "Abyss_Cocoon"; public const string Ant_02 = "Ant_02"; public const string Ant_03 = "Ant_03"; public const string Ant_04 = "Ant_04"; public const string Ant_04_left = "Ant_04_left"; public const string Ant_04_mid = "Ant_04_mid"; public const string Ant_05b = "Ant_05b"; public const string Ant_05c = "Ant_05c"; public const string Ant_08 = "Ant_08"; public const string Ant_09 = "Ant_09"; public const string Ant_14 = "Ant_14"; public const string Ant_17 = "Ant_17"; public const string Ant_19 = "Ant_19"; public const string Ant_20 = "Ant_20"; public const string Ant_21 = "Ant_21"; public const string Ant_Merchant = "Ant_Merchant"; public const string Ant_Queen = "Ant_Queen"; public const string Aqueduct_01 = "Aqueduct_01"; public const string Aqueduct_02 = "Aqueduct_02"; public const string Aqueduct_03 = "Aqueduct_03"; public const string Aqueduct_04 = "Aqueduct_04"; public const string Aqueduct_05 = "Aqueduct_05"; public const string Aqueduct_05_caravan = "Aqueduct_05_caravan"; public const string Aqueduct_05_festival = "Aqueduct_05_festival"; public const string Aqueduct_05_pre = "Aqueduct_05_pre"; public const string Aqueduct_06 = "Aqueduct_06"; public const string Aqueduct_07 = "Aqueduct_07"; public const string Aqueduct_08 = "Aqueduct_08"; public const string Arborium_01 = "Arborium_01"; public const string Arborium_02 = "Arborium_02"; public const string Arborium_03 = "Arborium_03"; public const string Arborium_04 = "Arborium_04"; public const string Arborium_05 = "Arborium_05"; public const string Arborium_06 = "Arborium_06"; public const string Arborium_07 = "Arborium_07"; public const string Arborium_08 = "Arborium_08"; public const string Arborium_09 = "Arborium_09"; public const string Arborium_10 = "Arborium_10"; public const string Arborium_11 = "Arborium_11"; public const string Arborium_Tube = "Arborium_Tube"; public const string Aspid_01 = "Aspid_01"; public const string Bellshrine = "Bellshrine"; public const string Bellshrine_02 = "Bellshrine_02"; public const string Bellshrine_03 = "Bellshrine_03"; public const string Bellshrine_05 = "Bellshrine_05"; public const string Bellshrine_Coral = "Bellshrine_Coral"; public const string Bellshrine_Enclave = "Bellshrine_Enclave"; public const string Bellshrine_Lore_Additive = "Bellshrine_Lore_Additive"; public const string Belltown = "Belltown"; public const string Belltown_04 = "Belltown_04"; public const string Belltown_06 = "Belltown_06"; public const string Belltown_07 = "Belltown_07"; public const string Belltown_08 = "Belltown_08"; public const string Belltown_basement = "Belltown_basement"; public const string Belltown_basement_03 = "Belltown_basement_03"; public const string Belltown_cutscene = "Belltown_cutscene"; public const string Belltown_Room_doctor = "Belltown_Room_doctor"; public const string Belltown_Room_pinsmith = "Belltown_Room_pinsmith"; public const string Belltown_Room_Relic = "Belltown_Room_Relic"; public const string Belltown_Room_shellwood = "Belltown_Room_shellwood"; public const string Belltown_Room_Spare = "Belltown_Room_Spare"; public const string Belltown_Shrine = "Belltown_Shrine"; public const string Bellway_01 = "Bellway_01"; public const string Bellway_01_boss = "Bellway_01_boss"; public const string Bellway_02 = "Bellway_02"; public const string Bellway_02_boss = "Bellway_02_boss"; public const string Bellway_03 = "Bellway_03"; public const string Bellway_03_boss = "Bellway_03_boss"; public const string Bellway_04 = "Bellway_04"; public const string Bellway_04_boss = "Bellway_04_boss"; public const string Bellway_08 = "Bellway_08"; public const string Bellway_Aqueduct = "Bellway_Aqueduct"; public const string Bellway_Centipede_additive = "Bellway_Centipede_additive"; public const string Bellway_Centipede_Arena = "Bellway_Centipede_Arena"; public const string Bellway_City = "Bellway_City"; public const string Bellway_Peak = "Bellway_Peak"; public const string Bellway_Peak_02 = "Bellway_Peak_02"; public const string Bellway_Shadow = "Bellway_Shadow"; public const string Bone_01 = "Bone_01"; public const string Bone_01b = "Bone_01b"; public const string Bone_01c = "Bone_01c"; public const string Bone_02 = "Bone_02"; public const string Bone_03 = "Bone_03"; public const string Bone_04 = "Bone_04"; public const string Bone_05 = "Bone_05"; public const string Bone_05_bellway = "Bone_05_bellway"; public const string Bone_05_boss = "Bone_05_boss"; public const string Bone_05b = "Bone_05b"; public const string Bone_06 = "Bone_06"; public const string Bone_07 = "Bone_07"; public const string Bone_08 = "Bone_08"; public const string Bone_09 = "Bone_09"; public const string Bone_10 = "Bone_10"; public const string Bone_11 = "Bone_11"; public const string Bone_11b = "Bone_11b"; public const string Bone_12 = "Bone_12"; public const string Bone_14 = "Bone_14"; public const string Bone_15 = "Bone_15"; public const string Bone_16 = "Bone_16"; public const string Bone_17 = "Bone_17"; public const string Bone_18 = "Bone_18"; public const string Bone_19 = "Bone_19"; public const string Bone_East_01 = "Bone_East_01"; public const string Bone_East_02 = "Bone_East_02"; public const string Bone_East_02b = "Bone_East_02b"; public const string Bone_East_03 = "Bone_East_03"; public const string Bone_East_04 = "Bone_East_04"; public const string Bone_East_04b = "Bone_East_04b"; public const string Bone_East_04c = "Bone_East_04c"; public const string Bone_East_05 = "Bone_East_05"; public const string Bone_East_07 = "Bone_East_07"; public const string Bone_East_08 = "Bone_East_08"; public const string Bone_East_08_boss_beastfly = "Bone_East_08_boss_beastfly"; public const string Bone_East_08_boss_golem = "Bone_East_08_boss_golem"; public const string Bone_East_08_boss_golem_rest = "Bone_East_08_boss_golem_rest"; public const string Bone_East_09 = "Bone_East_09"; public const string Bone_East_09b = "Bone_East_09b"; public const string Bone_East_10 = "Bone_East_10"; public const string Bone_East_10_Church = "Bone_East_10_Church"; public const string Bone_East_10_Room = "Bone_East_10_Room"; public const string Bone_East_11 = "Bone_East_11"; public const string Bone_East_12 = "Bone_East_12"; public const string Bone_East_13 = "Bone_East_13"; public const string Bone_East_14 = "Bone_East_14"; public const string Bone_East_14b = "Bone_East_14b"; public const string Bone_East_15 = "Bone_East_15"; public const string Bone_East_16 = "Bone_East_16"; public const string Bone_East_17 = "Bone_East_17"; public const string Bone_East_17b = "Bone_East_17b"; public const string Bone_East_18 = "Bone_East_18"; public const string Bone_East_18b = "Bone_East_18b"; public const string Bone_East_18c = "Bone_East_18c"; public const string Bone_East_20 = "Bone_East_20"; public const string Bone_East_21 = "Bone_East_21"; public const string Bone_East_22 = "Bone_East_22"; public const string Bone_East_24 = "Bone_East_24"; public const string Bone_East_25 = "Bone_East_25"; public const string Bone_East_26 = "Bone_East_26"; public const string Bone_East_27 = "Bone_East_27"; public const string Bone_East_LavaChallenge = "Bone_East_LavaChallenge"; public const string Bone_East_Umbrella = "Bone_East_Umbrella"; public const string Bone_East_Weavehome = "Bone_East_Weavehome"; public const string Bone_Steel_Servant = "Bone_Steel_Servant"; public const string Bonegrave = "Bonegrave"; public const string Bonetown = "Bonetown"; public const string Bonetown_boss = "Bonetown_boss"; public const string Chapel_Wanderer = "Chapel_Wanderer"; public const string Cinematic_Ending_A = "Cinematic_Ending_A"; public const string Cinematic_Ending_B = "Cinematic_Ending_B"; public const string Cinematic_Ending_C = "Cinematic_Ending_C"; public const string Cinematic_Ending_D = "Cinematic_Ending_D"; public const string Cinematic_Ending_E = "Cinematic_Ending_E"; public const string Cinematic_MrMushroom = "Cinematic_MrMushroom"; public const string Cinematic_Stag_travel = "Cinematic_Stag_travel"; public const string City_Lace_cutscene = "City_Lace_cutscene"; public const string Clover_01 = "Clover_01"; public const string Clover_01b = "Clover_01b"; public const string Clover_02c = "Clover_02c"; public const string Clover_03 = "Clover_03"; public const string Clover_04b = "Clover_04b"; public const string Clover_05c = "Clover_05c"; public const string Clover_06 = "Clover_06"; public const string Clover_10 = "Clover_10"; public const string Clover_10_web = "Clover_10_web"; public const string Clover_11 = "Clover_11"; public const string Clover_16 = "Clover_16"; public const string Clover_18 = "Clover_18"; public const string Clover_19 = "Clover_19"; public const string Clover_20 = "Clover_20"; public const string Clover_21 = "Clover_21"; public const string Cog_04 = "Cog_04"; public const string Cog_05 = "Cog_05"; public const string Cog_06 = "Cog_06"; public const string Cog_07 = "Cog_07"; public const string Cog_08 = "Cog_08"; public const string Cog_09 = "Cog_09"; public const string Cog_09_Destroyed = "Cog_09_Destroyed"; public const string Cog_10 = "Cog_10"; public const string Cog_10_Destroyed = "Cog_10_Destroyed"; public const string Cog_Bench = "Cog_Bench"; public const string Cog_Dancers = "Cog_Dancers"; public const string Cog_Dancers_boss = "Cog_Dancers_boss"; public const string Cog_Pass = "Cog_Pass"; public const string Coral_02 = "Coral_02"; public const string Coral_03 = "Coral_03"; public const string Coral_10 = "Coral_10"; public const string Coral_11 = "Coral_11"; public const string Coral_11b = "Coral_11b"; public const string Coral_12 = "Coral_12"; public const string Coral_19 = "Coral_19"; public const string Coral_19b = "Coral_19b"; public const string Coral_23 = "Coral_23"; public const string Coral_24 = "Coral_24"; public const string Coral_25 = "Coral_25"; public const string Coral_26 = "Coral_26"; public const string Coral_27 = "Coral_27"; public const string Coral_28 = "Coral_28"; public const string Coral_29 = "Coral_29"; public const string Coral_32 = "Coral_32"; public const string Coral_33 = "Coral_33"; public const string Coral_34 = "Coral_34"; public const string Coral_35 = "Coral_35"; public const string Coral_35b = "Coral_35b"; public const string Coral_36 = "Coral_36"; public const string Coral_37 = "Coral_37"; public const string Coral_38 = "Coral_38"; public const string Coral_39 = "Coral_39"; public const string Coral_40 = "Coral_40"; public const string Coral_41 = "Coral_41"; public const string Coral_42 = "Coral_42"; public const string Coral_43 = "Coral_43"; public const string Coral_44 = "Coral_44"; public const string Coral_Judge_Arena = "Coral_Judge_Arena"; public const string Coral_Tower_01 = "Coral_Tower_01"; public const string Cradle_01 = "Cradle_01"; public const string Cradle_01_Destroyed = "Cradle_01_Destroyed"; public const string Cradle_02 = "Cradle_02"; public const string Cradle_02b = "Cradle_02b"; public const string Cradle_03 = "Cradle_03"; public const string Cradle_03_Destroyed = "Cradle_03_Destroyed"; public const string Cradle_Destroyed_Challenge_01 = "Cradle_Destroyed_Challenge_01"; public const string Cradle_Destroyed_Challenge_02 = "Cradle_Destroyed_Challenge_02"; public const string Cradle_Destroyed_Challenge_Bench = "Cradle_Destroyed_Challenge_Bench"; public const string Crawl_01 = "Crawl_01"; public const string Crawl_02 = "Crawl_02"; public const string Crawl_03 = "Crawl_03"; public const string Crawl_03b = "Crawl_03b"; public const string Crawl_04 = "Crawl_04"; public const string Crawl_05 = "Crawl_05"; public const string Crawl_06 = "Crawl_06"; public const string Crawl_07 = "Crawl_07"; public const string Crawl_08 = "Crawl_08"; public const string Crawl_09 = "Crawl_09"; public const string Crawl_10 = "Crawl_10"; public const string Demo_End = "Demo End"; public const string Demo_Start = "Demo Start"; public const string Dock_01 = "Dock_01"; public const string Dock_02 = "Dock_02"; public const string Dock_02b = "Dock_02b"; public const string Dock_03 = "Dock_03"; public const string Dock_03b = "Dock_03b"; public const string Dock_03c = "Dock_03c"; public const string Dock_03d = "Dock_03d"; public const string Dock_04 = "Dock_04"; public const string Dock_05 = "Dock_05"; public const string Dock_06_Church = "Dock_06_Church"; public const string Dock_08 = "Dock_08"; public const string Dock_09 = "Dock_09"; public const string Dock_10 = "Dock_10"; public const string Dock_11 = "Dock_11"; public const string Dock_12 = "Dock_12"; public const string Dock_13 = "Dock_13"; public const string Dock_14 = "Dock_14"; public const string Dock_15 = "Dock_15"; public const string Dock_16 = "Dock_16"; public const string Dust_01 = "Dust_01"; public const string Dust_02 = "Dust_02"; public const string Dust_03 = "Dust_03"; public const string Dust_04 = "Dust_04"; public const string Dust_05 = "Dust_05"; public const string Dust_06 = "Dust_06"; public const string Dust_09 = "Dust_09"; public const string Dust_10 = "Dust_10"; public const string Dust_11 = "Dust_11"; public const string Dust_12 = "Dust_12"; public const string Dust_Barb = "Dust_Barb"; public const string Dust_Chef = "Dust_Chef"; public const string Dust_Maze_01 = "Dust_Maze_01"; public const string Dust_Maze_02 = "Dust_Maze_02"; public const string Dust_Maze_03 = "Dust_Maze_03"; public const string Dust_Maze_04 = "Dust_Maze_04"; public const string Dust_Maze_05 = "Dust_Maze_05"; public const string Dust_Maze_06 = "Dust_Maze_06"; public const string Dust_Maze_07 = "Dust_Maze_07"; public const string Dust_Maze_08 = "Dust_Maze_08"; public const string Dust_Maze_08_completed = "Dust_Maze_08_completed"; public const string Dust_Maze_09_entrance = "Dust_Maze_09_entrance"; public const string Dust_Maze_crossing = "Dust_Maze_crossing"; public const string Dust_Maze_Last_Hall = "Dust_Maze_Last_Hall"; public const string Dust_Shack = "Dust_Shack"; public const string End_Credits = "End_Credits"; public const string End_Credits_Scroll = "End_Credits_Scroll"; public const string End_Game_Completion = "End_Game_Completion"; public const string Greymoor_01 = "Greymoor_01"; public const string Greymoor_02 = "Greymoor_02"; public const string Greymoor_03 = "Greymoor_03"; public const string Greymoor_04 = "Greymoor_04"; public const string Greymoor_05 = "Greymoor_05"; public const string Greymoor_05_boss = "Greymoor_05_boss"; public const string Greymoor_06 = "Greymoor_06"; public const string Greymoor_07 = "Greymoor_07"; public const string Greymoor_08 = "Greymoor_08"; public const string Greymoor_08_boss = "Greymoor_08_boss"; public const string Greymoor_08_caravan = "Greymoor_08_caravan"; public const string Greymoor_08_mapper = "Greymoor_08_mapper"; public const string Greymoor_10 = "Greymoor_10"; public const string Greymoor_11 = "Greymoor_11"; public const string Greymoor_12 = "Greymoor_12"; public const string Greymoor_13 = "Greymoor_13"; public const string Greymoor_15 = "Greymoor_15"; public const string Greymoor_15b = "Greymoor_15b"; public const string Greymoor_16 = "Greymoor_16"; public const string Greymoor_17 = "Greymoor_17"; public const string Greymoor_20b = "Greymoor_20b"; public const string Greymoor_20c = "Greymoor_20c"; public const string Greymoor_21 = "Greymoor_21"; public const string Greymoor_22 = "Greymoor_22"; public const string Greymoor_24 = "Greymoor_24"; public const string Halfway_01 = "Halfway_01"; public const string Hang_01 = "Hang_01"; public const string Hang_02 = "Hang_02"; public const string Hang_03 = "Hang_03"; public const string Hang_03_top = "Hang_03_top"; public const string Hang_04 = "Hang_04"; public const string Hang_04_boss = "Hang_04_boss"; public const string Hang_06 = "Hang_06"; public const string Hang_06_bank = "Hang_06_bank"; public const string Hang_06b = "Hang_06b"; public const string Hang_07 = "Hang_07"; public const string Hang_08 = "Hang_08"; public const string Hang_09 = "Hang_09"; public const string Hang_10 = "Hang_10"; public const string Hang_12 = "Hang_12"; public const string Hang_13 = "Hang_13"; public const string Hang_14 = "Hang_14"; public const string Hang_15 = "Hang_15"; public const string Hang_16 = "Hang_16"; public const string Hang_17b = "Hang_17b"; public const string Last_Dive = "Last_Dive"; public const string Last_Dive_Return = "Last_Dive_Return"; public const string Library_01 = "Library_01"; public const string Library_02 = "Library_02"; public const string Library_03 = "Library_03"; public const string Library_04 = "Library_04"; public const string Library_05 = "Library_05"; public const string Library_06 = "Library_06"; public const string Library_07 = "Library_07"; public const string Library_08 = "Library_08"; public const string Library_09 = "Library_09"; public const string Library_10 = "Library_10"; public const string Library_11 = "Library_11"; public const string Library_11b = "Library_11b"; public const string Library_12 = "Library_12"; public const string Library_12b = "Library_12b"; public const string Library_13 = "Library_13"; public const string Library_13b = "Library_13b"; public const string Library_14 = "Library_14"; public const string Library_15 = "Library_15"; public const string Library_16 = "Library_16"; public const string Memory_Ant_Queen = "Memory_Ant_Queen"; public const string Memory_Coral_Tower = "Memory_Coral_Tower"; public const string Memory_First_Sinner = "Memory_First_Sinner"; public const string Memory_Needolin = "Memory_Needolin"; public const string Memory_Red = "Memory_Red"; public const string Memory_Silk_Heart_BellBeast = "Memory_Silk_Heart_BellBeast"; public const string Memory_Silk_Heart_LaceTower = "Memory_Silk_Heart_LaceTower"; public const string Memory_Silk_Heart_WardBoss = "Memory_Silk_Heart_WardBoss"; public const string Menu_Credits = "Menu_Credits"; public const string Menu_Title = "Menu_Title"; public const string Mosstown_01 = "Mosstown_01"; public const string Mosstown_02 = "Mosstown_02"; public const string Mosstown_02c = "Mosstown_02c"; public const string Mosstown_03 = "Mosstown_03"; public const string Opening_Sequence = "Opening_Sequence"; public const string Opening_Sequence_Act3 = "Opening_Sequence_Act3"; public const string Organ_01 = "Organ_01"; public const string Peak_01 = "Peak_01"; public const string Peak_02 = "Peak_02"; public const string Peak_04 = "Peak_04"; public const string Peak_04c = "Peak_04c"; public const string Peak_04d = "Peak_04d"; public const string Peak_05 = "Peak_05"; public const string Peak_05c = "Peak_05c"; public const string Peak_05d = "Peak_05d"; public const string Peak_05e = "Peak_05e"; public const string Peak_06 = "Peak_06"; public const string Peak_06b = "Peak_06b"; public const string Peak_07 = "Peak_07"; public const string Peak_08 = "Peak_08"; public const string Peak_08b = "Peak_08b"; public const string Peak_10 = "Peak_10"; public const string Peak_12 = "Peak_12"; public const string Peak_Mask_Maker = "Peak_Mask_Maker"; public const string PermaDeath = "PermaDeath"; public const string Pre_Menu_Intro = "Pre_Menu_Intro"; public const string Quit_To_Menu = "Quit_To_Menu"; public const string Room_Caravan_Interior = "Room_Caravan_Interior"; public const string Room_Caravan_Interior_Travel = "Room_Caravan_Interior_Travel"; public const string Room_Caravan_Spa = "Room_Caravan_Spa"; public const string Room_CrowCourt = "Room_CrowCourt"; public const string Room_CrowCourt_02 = "Room_CrowCourt_02"; public const string Room_Diving_Bell = "Room_Diving_Bell"; public const string Room_Diving_Bell_Abyss = "Room_Diving_Bell_Abyss"; public const string Room_Diving_Bell_Abyss_Fixed = "Room_Diving_Bell_Abyss_Fixed"; public const string Room_Forge = "Room_Forge"; public const string Room_Huntress = "Room_Huntress"; public const string Room_Pinstress = "Room_Pinstress"; public const string Room_Witch = "Room_Witch"; public const string Shadow_01 = "Shadow_01"; public const string Shadow_02 = "Shadow_02"; public const string Shadow_03 = "Shadow_03"; public const string Shadow_04 = "Shadow_04"; public const string Shadow_04b = "Shadow_04b"; public const string Shadow_05 = "Shadow_05"; public const string Shadow_08 = "Shadow_08"; public const string Shadow_09 = "Shadow_09"; public const string Shadow_10 = "Shadow_10"; public const string Shadow_11 = "Shadow_11"; public const string Shadow_12 = "Shadow_12"; public const string Shadow_13 = "Shadow_13"; public const string Shadow_14 = "Shadow_14"; public const string Shadow_15 = "Shadow_15"; public const string Shadow_16 = "Shadow_16"; public const string Shadow_18 = "Shadow_18"; public const string Shadow_19 = "Shadow_19"; public const string Shadow_20 = "Shadow_20"; public const string Shadow_21 = "Shadow_21"; public const string Shadow_22 = "Shadow_22"; public const string Shadow_23 = "Shadow_23"; public const string Shadow_24 = "Shadow_24"; public const string Shadow_25 = "Shadow_25"; public const string Shadow_26 = "Shadow_26"; public const string Shadow_27 = "Shadow_27"; public const string Shadow_28 = "Shadow_28"; public const string Shadow_Bilehaven_Room = "Shadow_Bilehaven_Room"; public const string Shadow_Weavehome = "Shadow_Weavehome"; public const string Shellgrave = "Shellgrave"; public const string Shellwood_01 = "Shellwood_01"; public const string Shellwood_01b = "Shellwood_01b"; public const string Shellwood_02 = "Shellwood_02"; public const string Shellwood_03 = "Shellwood_03"; public const string Shellwood_04b = "Shellwood_04b"; public const string Shellwood_04c = "Shellwood_04c"; public const string Shellwood_08 = "Shellwood_08"; public const string Shellwood_08c = "Shellwood_08c"; public const string Shellwood_10 = "Shellwood_10"; public const string Shellwood_11 = "Shellwood_11"; public const string Shellwood_11b = "Shellwood_11b"; public const string Shellwood_11b_Memory = "Shellwood_11b_Memory"; public const string Shellwood_13 = "Shellwood_13"; public const string Shellwood_14 = "Shellwood_14"; public const string Shellwood_15 = "Shellwood_15"; public const string Shellwood_16 = "Shellwood_16"; public const string Shellwood_18 = "Shellwood_18"; public const string Shellwood_19 = "Shellwood_19"; public const string Shellwood_20 = "Shellwood_20"; public const string Shellwood_22 = "Shellwood_22"; public const string Shellwood_25 = "Shellwood_25"; public const string Shellwood_25b = "Shellwood_25b"; public const string Shellwood_26 = "Shellwood_26"; public const string Shellwood_Witch = "Shellwood_Witch"; public const string Slab_01 = "Slab_01"; public const string Slab_02 = "Slab_02"; public const string Slab_03 = "Slab_03"; public const string Slab_04 = "Slab_04"; public const string Slab_05 = "Slab_05"; public const string Slab_06 = "Slab_06"; public const string Slab_07 = "Slab_07"; public const string Slab_08 = "Slab_08"; public const string Slab_10b = "Slab_10b"; public const string Slab_10c = "Slab_10c"; public const string Slab_12 = "Slab_12"; public const string Slab_13 = "Slab_13"; public const string Slab_14 = "Slab_14"; public const string Slab_15 = "Slab_15"; public const string Slab_16 = "Slab_16"; public const string Slab_16b = "Slab_16b"; public const string Slab_17 = "Slab_17"; public const string Slab_18 = "Slab_18"; public const string Slab_19b = "Slab_19b"; public const string Slab_20 = "Slab_20"; public const string Slab_21 = "Slab_21"; public const string Slab_22 = "Slab_22"; public const string Slab_23 = "Slab_23"; public const string Slab_Cell = "Slab_Cell"; public const string Slab_Cell_Creature = "Slab_Cell_Creature"; public const string Slab_Cell_Quiet = "Slab_Cell_Quiet"; public const string Song_01 = "Song_01"; public const string Song_01b = "Song_01b"; public const string Song_01c = "Song_01c"; public const string Song_02 = "Song_02"; public const string Song_03 = "Song_03"; public const string Song_04 = "Song_04"; public const string Song_05 = "Song_05"; public const string Song_07 = "Song_07"; public const string Song_08 = "Song_08"; public const string Song_09 = "Song_09"; public const string Song_09b = "Song_09b"; public const string Song_10 = "Song_10"; public const string Song_11 = "Song_11"; public const string Song_12 = "Song_12"; public const string Song_13 = "Song_13"; public const string Song_14 = "Song_14"; public const string Song_15 = "Song_15"; public const string Song_17 = "Song_17"; public const string Song_18 = "Song_18"; public const string Song_19_entrance = "Song_19_entrance"; public const string Song_20 = "Song_20"; public const string Song_20b = "Song_20b"; public const string Song_24 = "Song_24"; public const string Song_25 = "Song_25"; public const string Song_26 = "Song_26"; public const string Song_27 = "Song_27"; public const string Song_28 = "Song_28"; public const string Song_29 = "Song_29"; public const string Song_Enclave = "Song_Enclave"; public const string Song_Enclave_Tube = "Song_Enclave_Tube"; public const string Song_Tower_01 = "Song_Tower_01"; public const string Song_Tower_Destroyed = "Song_Tower_Destroyed"; public const string Sprintmaster_Cave = "Sprintmaster_Cave"; public const string Tube_Hub = "Tube_Hub"; public const string Tut_01 = "Tut_01"; public const string Tut_01b = "Tut_01b"; public const string Tut_02 = "Tut_02"; public const string Tut_03 = "Tut_03"; public const string Tut_04 = "Tut_04"; public const string Tut_05 = "Tut_05"; public const string Under_01 = "Under_01"; public const string Under_01b = "Under_01b"; public const string Under_02 = "Under_02"; public const string Under_03 = "Under_03"; public const string Under_03b = "Under_03b"; public const string Under_03c = "Under_03c"; public const string Under_03d = "Under_03d"; public const string Under_04 = "Under_04"; public const string Under_05 = "Under_05"; public const string Under_06 = "Under_06"; public const string Under_07 = "Under_07"; public const string Under_07b = "Under_07b"; public const string Under_07c = "Under_07c"; public const string Under_08 = "Under_08"; public const string Under_10 = "Under_10"; public const string Under_11 = "Under_11"; public const string Under_12 = "Under_12"; public const string Under_13 = "Under_13"; public const string Under_14 = "Under_14"; public const string Under_16 = "Under_16"; public const string Under_17 = "Under_17"; public const string Under_18 = "Under_18"; public const string Under_19 = "Under_19"; public const string Under_19b = "Under_19b"; public const string Under_19c = "Under_19c"; public const string Under_20 = "Under_20"; public const string Under_21 = "Under_21"; public const string Under_22 = "Under_22"; public const string Under_23 = "Under_23"; public const string Under_27 = "Under_27"; public const string Ward_01 = "Ward_01"; public const string Ward_02 = "Ward_02"; public const string Ward_02_boss = "Ward_02_boss"; public const string Ward_02b = "Ward_02b"; public const string Ward_03 = "Ward_03"; public const string Ward_04 = "Ward_04"; public const string Ward_05 = "Ward_05"; public const string Ward_06 = "Ward_06"; public const string Ward_07 = "Ward_07"; public const string Ward_09 = "Ward_09"; public const string Weave_02 = "Weave_02"; public const string Weave_03 = "Weave_03"; public const string Weave_04 = "Weave_04"; public const string Weave_05b = "Weave_05b"; public const string Weave_07 = "Weave_07"; public const string Weave_08 = "Weave_08"; public const string Weave_10 = "Weave_10"; public const string Weave_11 = "Weave_11"; public const string Weave_12 = "Weave_12"; public const string Weave_13 = "Weave_13"; public const string Weave_14 = "Weave_14"; public const string Wisp_02 = "Wisp_02"; public const string Wisp_03 = "Wisp_03"; public const string Wisp_04 = "Wisp_04"; public const string Wisp_05 = "Wisp_05"; public const string Wisp_06 = "Wisp_06"; public const string Wisp_07 = "Wisp_07"; public const string Wisp_08 = "Wisp_08"; public const string Wisp_09 = "Wisp_09"; } public static class TitledAreaNames { public const string Bellhart = "Bellhart"; public const string Bilewater = "Bilewater"; public const string Blasted_Steps = "Blasted Steps"; public const string Bone_Bottom = "Bone Bottom"; public const string Brightvein = "Brightvein"; public const string Chapel_of_the_Architect = "Chapel of the Architect"; public const string Chapel_of_the_Beast = "Chapel of the Beast"; public const string Chapel_of_the_Reaper = "Chapel of the Reaper"; public const string Chapel_of_the_Wanderer = "Chapel of the Wanderer"; public const string Chapel_of_the_Witch = "Chapel of the Witch"; public const string Choral_Chambers = "Choral Chambers"; public const string Cogwork_Core = "Cogwork Core"; public const string Coral_Tower = "Coral Tower"; public const string Deep_Docks = "Deep Docks"; public const string Exhaust_Organ = "Exhaust Organ"; public const string Far_Fields = "Far Fields"; public const string First_Shrine = "First Shrine"; public const string Flea_Caravan = "Flea Caravan"; public const string Fleatopia = "Fleatopia"; public const string Grand_Gate = "Grand Gate"; public const string Greymoor = "Greymoor"; public const string Halfway_Home = "Halfway Home"; public const string High_Halls = "High Halls"; public const string Hunter_s_March = "Hunter’s March"; public const string Lost_Verdania = "Lost Verdania"; public const string Memorium = "Memorium"; public const string Moss_Grotto = "Moss Grotto"; public const string Mosshome = "Mosshome"; public const string Mount_Fay = "Mount Fay"; public const string Nameless_Town = "Nameless Town"; public const string Putrified_Ducts = "Putrified Ducts"; public const string Ruined_Chapel = "Ruined Chapel"; public const string Sands_of_Karak = "Sands of Karak"; public const string Shellwood = "Shellwood"; public const string Sinner_s_Road = "Sinner’s Road"; public const string Songclave = "Songclave"; public const string The_Abyss = "The Abyss"; public const string Cradle = "The Cradle"; public const string The_Marrow = "The Marrow"; public const string The_Mist = "The Mist"; public const string The_Slab = "The Slab"; public const string Underworks = "Underworks"; public const string Voltnest = "Voltnest"; public const string Weavenest_Absolom = "Weavenest Absolom"; public const string Weavenest_Atla = "Weavenest Atla"; public const string Weavenest_Cindril = "Weavenest Cindril"; public const string Weavenest_Karn = "Weavenest Karn"; public const string Weavenest_Murglin = "Weavenest Murglin"; public const string Whispering_Vaults = "Whispering Vaults"; public const string Whiteward = "Whiteward"; public const string Wisp_Thicket = "Wisp Thicket"; public const string Wormways = "Wormways"; public static ReadOnlyDictionary TitledToMapArea; public static string Unknown { get; } = "Unknown"; public static ReadOnlyCollection Names { get; } static TitledAreaNames() { List list = new List(); list.AddRange(from f in typeof(TitledAreaNames).GetFields(BindingFlags.Static | BindingFlags.Public) where f.FieldType == typeof(string) && f.IsLiteral && !f.IsInitOnly select (string)f.GetValue(null)); Names = new ReadOnlyCollection(list); TitledToMapArea = new ReadOnlyDictionary(new Dictionary { ["Bellhart"] = "Bellhart", ["Bilewater"] = "Bilewater", ["Blasted Steps"] = "Blasted Steps", ["Bone Bottom"] = "Mosslands", ["Brightvein"] = "Mount Fay", ["Chapel of the Architect"] = "Underworks", ["Chapel of the Beast"] = "Hunter's March", ["Chapel of the Reaper"] = "Greymoor", ["Chapel of the Wanderer"] = "Mosslands", ["Chapel of the Witch"] = "Shellwood", ["Choral Chambers"] = "Choral Chambers", ["Cogwork Core"] = "Cogwork Core", ["Coral Tower"] = "Sands of Karak", ["The Cradle"] = "Cradle", ["Deep Docks"] = "Deep Docks", ["Flea Caravan"] = "Putrified Ducts", ["Fleatopia"] = "Putrified Ducts", ["Exhaust Organ"] = "Bilewater", ["Far Fields"] = "Far Fields", ["First Shrine"] = "Choral Chambers", ["Grand Gate"] = "Grand Gate", ["Greymoor"] = "Greymoor", ["Halfway Home"] = "Greymoor", ["High Halls"] = "High Halls", ["Hunter’s March"] = "Hunter's March", ["Lost Verdania"] = "Verdania", ["Memorium"] = "Memorium", ["Mosshome"] = "Mosslands", ["Moss Grotto"] = "Mosslands", ["Mount Fay"] = "Mount Fay", ["Nameless Town"] = "Cradle", ["Putrified Ducts"] = "Putrified Ducts", ["Ruined Chapel"] = "Mosslands", ["Sands of Karak"] = "Sands of Karak", ["Shellwood"] = "Shellwood", ["Sinner’s Road"] = "Sinner's Road", ["Songclave"] = "Choral Chambers", ["The Abyss"] = "The Abyss", ["The Marrow"] = "The Marrow", ["The Mist"] = "Sinner's Road", ["The Slab"] = "The Slab", ["Underworks"] = "Underworks", ["Voltnest"] = "Sands of Karak", ["Weavenest Absolom"] = "The Abyss", ["Weavenest Atla"] = "Weavenest Atla", ["Weavenest Cindril"] = "Far Fields", ["Weavenest Karn"] = "Wormways", ["Weavenest Murglin"] = "Bilewater", ["Whispering Vaults"] = "Whispering Vaults", ["Whiteward"] = "Whiteward", ["Wisp Thicket"] = "Greymoor", ["Wormways"] = "Wormways" }); } } } namespace Benchwarp.Components { public class AtStartListener : MonoBehaviour { public required Text buttonText; private bool queueRefetchData = true; private bool queueRecolor = true; public bool AtStart { get; private set; } private void Start() { WorldEvents.OnRespawnChanged += OnRespawnChanged; } private void OnDestroy() { WorldEvents.OnRespawnChanged -= OnRespawnChanged; } private void Update() { if (queueRefetchData) { RefetchData(); queueRefetchData = false; queueRecolor = true; } if (queueRecolor) { Recolor(); queueRecolor = false; } } private void RefetchData() { AtStart = BenchListModifiers.AtStart(); } private void Recolor() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) ((Graphic)buttonText).color = (AtStart ? BenchComponent.CurrentBenchColor : BenchComponent.AvailableBenchColor); } private void OnRespawnChanged(RespawnInfo arg1, BenchData? arg2) { queueRefetchData = true; } } [RequireComponent(typeof(Text))] public class AutoLocalizeModdedText : MonoBehaviour { [CompilerGenerated] private string? k__BackingField; public Text? text; public string? Key { [CompilerGenerated] get { return k__BackingField; } set { k__BackingField = value; RefreshText(); } } private void Awake() { if (!Object.op_Implicit((Object)(object)text)) { text = ((Component)this).GetComponent(); } } private void Start() { GameManager.instance.RefreshLanguageText += RefreshText; } private void OnDestroy() { GameManager silentInstance = GameManager.SilentInstance; if (silentInstance != null && Object.op_Implicit((Object)(object)silentInstance)) { silentInstance.RefreshLanguageText -= RefreshText; } } private void RefreshText() { if (Object.op_Implicit((Object)(object)text) && !string.IsNullOrEmpty(Key)) { text.text = Key.GetLanguageString(); } } } public class BenchComponent : MonoBehaviour { public required BenchData data; public required Text buttonText; private bool queueRefetchData = true; private bool queueRecolor = true; public bool Locked { get; private set; } public bool Visited { get; private set; } public bool IsCurrentBench { get; private set; } public static Color LockedBenchColor { get; } = Color.Lerp(Color.magenta, Color.black, 0.5f); public static Color UnvisitedBenchColor { get; } = Color.red; public static Color CurrentBenchColor { get; } = Color.yellow; public static Color AvailableBenchColor { get; } = Color.white; private void Start() { WorldEvents.OnRespawnChanged += OnRespawnChanged; SaveSettings.OnSetVisitedLocal.Add(data, OnSetVisited); SaveSettings.OnSetLockedLocal.Add(data, OnSetLocked); SaveSettings.OnNewSettingsLoaded += OnNewSettingsLoaded; ConfigSettings.OnMenuModeChanged += QueueRecolor; } private void OnDestroy() { WorldEvents.OnRespawnChanged -= OnRespawnChanged; SaveSettings.OnSetVisitedLocal.Remove(data, OnSetVisited); SaveSettings.OnSetLockedLocal.Remove(data, OnSetLocked); SaveSettings.OnNewSettingsLoaded -= OnNewSettingsLoaded; ConfigSettings.OnMenuModeChanged -= QueueRecolor; } private void Update() { if (queueRefetchData) { RefetchData(); queueRefetchData = false; queueRecolor = true; } if (queueRecolor) { UpdateTextColor(); queueRecolor = false; } } private void RefetchData() { Locked = BenchwarpPlugin.SaveSettings.IsLocked(data); Visited = BenchwarpPlugin.SaveSettings.IsVisited(data); IsCurrentBench = data.RespawnInfo.IsCurrentRespawn(); } private void QueueRecolor() { queueRecolor = true; } private void QueueRefetchData() { queueRefetchData = true; } private void UpdateTextColor() { //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_005e: 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) if (BenchwarpPlugin.ConfigSettings.MenuMode != MenuMode.UnlockAll) { if (Locked) { ((Graphic)buttonText).color = LockedBenchColor; } else if (!Visited) { ((Graphic)buttonText).color = UnvisitedBenchColor; } else if (IsCurrentBench) { ((Graphic)buttonText).color = CurrentBenchColor; } else { ((Graphic)buttonText).color = AvailableBenchColor; } } else if (IsCurrentBench) { ((Graphic)buttonText).color = CurrentBenchColor; } else { ((Graphic)buttonText).color = AvailableBenchColor; } } private void OnRespawnChanged(RespawnInfo info, BenchData? data) { IsCurrentBench = (object)this.data == data; queueRecolor = true; } private void OnSetVisited(bool value) { Visited = value; queueRecolor = true; } private void OnSetLocked(bool value) { Locked = value; queueRecolor = true; } private void OnNewSettingsLoaded() { QueueRefetchData(); } } public class BenchDropdown : MonoBehaviour { public string dropdownName = ""; public List buttons = new List(); public bool open; public int page = 1; public void Init(GameObject canvas, string name, IReadOnlyList benches) { //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Expected O, but got Unknown dropdownName = name; _ = GUIController.btnOffsetX; int baseDropdownYOffset = GUIController.baseDropdownYOffset; int btnHeight = GUIController.btnHeight; for (int i = 0; i < benches.Count; i++) { BenchData benchData = benches[i]; buttons.Add(GUIController.BuildButton(canvas, benchData.BenchName, "BENCH_LABEL(" + benchData.BenchName + ")", 0, -(btnHeight + baseDropdownYOffset + (baseDropdownYOffset + btnHeight) * i), GUIController.TopLeftCorner, bg: false, i.ToString())); BenchComponent benchComponent = buttons[i].AddComponent(); benchComponent.data = benchData; benchComponent.buttonText = ((Component)buttons[i].transform.Find("ButtonText")).GetComponent(); ((UnityEvent)buttons[i].GetComponent