diff options
author | Star Rauchenberger <fefferburbia@gmail.com> | 2025-03-01 10:26:49 -0500 |
---|---|---|
committer | Star Rauchenberger <fefferburbia@gmail.com> | 2025-03-01 10:26:49 -0500 |
commit | 1dbfd6c6731eda35b6aa2dfd89642d0a1df8b748 (patch) | |
tree | e9b3f52da6f7f0a72e44c0a3ecb89bf661a0b737 | |
parent | 1a5383e84e84faefa009ffb72cd725e66812bc6c (diff) | |
download | manifold-garden-archipelago-1dbfd6c6731eda35b6aa2dfd89642d0a1df8b748.tar.gz manifold-garden-archipelago-1dbfd6c6731eda35b6aa2dfd89642d0a1df8b748.tar.bz2 manifold-garden-archipelago-1dbfd6c6731eda35b6aa2dfd89642d0a1df8b748.zip |
Entrance randomizer stuff
-rw-r--r-- | ArchipelagoManager.cs | 22 | ||||
-rw-r--r-- | GameData.cs | 33 | ||||
-rw-r--r-- | GameplayPatches.cs | 56 | ||||
-rw-r--r-- | game_data.yaml | 430 |
4 files changed, 541 insertions, 0 deletions
diff --git a/ArchipelagoManager.cs b/ArchipelagoManager.cs index 5aebffa..d96bd05 100644 --- a/ArchipelagoManager.cs +++ b/ArchipelagoManager.cs | |||
@@ -3,6 +3,7 @@ using Archipelago.MultiClient.Net.Enums; | |||
3 | using Archipelago.MultiClient.Net.MessageLog.Messages; | 3 | using Archipelago.MultiClient.Net.MessageLog.Messages; |
4 | using Archipelago.MultiClient.Net.Models; | 4 | using Archipelago.MultiClient.Net.Models; |
5 | using Archipelago.MultiClient.Net.Packets; | 5 | using Archipelago.MultiClient.Net.Packets; |
6 | using Newtonsoft.Json.Linq; | ||
6 | using System; | 7 | using System; |
7 | using System.Collections.Generic; | 8 | using System.Collections.Generic; |
8 | using System.Threading.Tasks; | 9 | using System.Threading.Tasks; |
@@ -17,6 +18,11 @@ namespace ManifoldGardenArchipelago | |||
17 | private HashSet<string> _items = []; | 18 | private HashSet<string> _items = []; |
18 | private HashSet<string> _locations = []; | 19 | private HashSet<string> _locations = []; |
19 | 20 | ||
21 | private bool _roomShuffle = false; | ||
22 | public bool RoomShuffle => _roomShuffle; | ||
23 | |||
24 | public Dictionary<EntranceIdentifier, EntranceIdentifier> EntranceMapping = []; | ||
25 | |||
20 | public async Task<LoginResult> Connect(string url, string slotName, string password) | 26 | public async Task<LoginResult> Connect(string url, string slotName, string password) |
21 | { | 27 | { |
22 | LoginResult result; | 28 | LoginResult result; |
@@ -35,6 +41,22 @@ namespace ManifoldGardenArchipelago | |||
35 | return new LoginFailure(ex.GetBaseException().Message); | 41 | return new LoginFailure(ex.GetBaseException().Message); |
36 | } | 42 | } |
37 | 43 | ||
44 | LoginSuccessful login = result as LoginSuccessful; | ||
45 | if (login.SlotData.ContainsKey("connections")) | ||
46 | { | ||
47 | _roomShuffle = true; | ||
48 | |||
49 | foreach (var connection in (JArray)login.SlotData["connections"]) | ||
50 | { | ||
51 | var connList = (JArray)connection; | ||
52 | EntranceIdentifier ei1 = new((string)connList[0], (string)connList[1]); | ||
53 | EntranceIdentifier ei2 = new((string)connList[2], (string)connList[3]); | ||
54 | |||
55 | EntranceMapping[ei1] = ei2; | ||
56 | EntranceMapping[ei2] = ei1; | ||
57 | } | ||
58 | } | ||
59 | |||
38 | return result; | 60 | return result; |
39 | } | 61 | } |
40 | 62 | ||
diff --git a/GameData.cs b/GameData.cs index a111b6a..107b408 100644 --- a/GameData.cs +++ b/GameData.cs | |||
@@ -15,12 +15,29 @@ namespace ManifoldGardenArchipelago | |||
15 | } | 15 | } |
16 | } | 16 | } |
17 | 17 | ||
18 | public readonly struct EntranceIdentifier(string region, string name) | ||
19 | { | ||
20 | public readonly string region = region; | ||
21 | public readonly string name = name; | ||
22 | |||
23 | public override string ToString() | ||
24 | { | ||
25 | return $"Entrance({region},{name})"; | ||
26 | } | ||
27 | } | ||
28 | |||
18 | public readonly struct LocationDescription(string name_arg, Requirement requirement_arg) | 29 | public readonly struct LocationDescription(string name_arg, Requirement requirement_arg) |
19 | { | 30 | { |
20 | public readonly string name = name_arg; | 31 | public readonly string name = name_arg; |
21 | public readonly Requirement requirement = requirement_arg; | 32 | public readonly Requirement requirement = requirement_arg; |
22 | } | 33 | } |
23 | 34 | ||
35 | public readonly struct PortalDescription(string scene, string name) | ||
36 | { | ||
37 | public readonly string scene = scene; | ||
38 | public readonly string name = name; | ||
39 | } | ||
40 | |||
24 | public class SceneDescription | 41 | public class SceneDescription |
25 | { | 42 | { |
26 | public readonly List<LocationDescription> locations = []; | 43 | public readonly List<LocationDescription> locations = []; |
@@ -28,6 +45,7 @@ namespace ManifoldGardenArchipelago | |||
28 | public readonly Dictionary<int, Requirement> smokeWalls = []; | 45 | public readonly Dictionary<int, Requirement> smokeWalls = []; |
29 | public readonly Dictionary<int, Requirement> worldGrows = []; | 46 | public readonly Dictionary<int, Requirement> worldGrows = []; |
30 | public readonly Dictionary<int, Requirement> lasers = []; | 47 | public readonly Dictionary<int, Requirement> lasers = []; |
48 | public readonly Dictionary<string, EntranceIdentifier> portals = []; | ||
31 | } | 49 | } |
32 | 50 | ||
33 | public class GameStateListeners | 51 | public class GameStateListeners |
@@ -51,6 +69,8 @@ namespace ManifoldGardenArchipelago | |||
51 | public static readonly Dictionary<SceneItemReference, GameStateListeners> listenersBySphere = []; | 69 | public static readonly Dictionary<SceneItemReference, GameStateListeners> listenersBySphere = []; |
52 | public static readonly Dictionary<string, GameStateListeners> listenersByItem = []; | 70 | public static readonly Dictionary<string, GameStateListeners> listenersByItem = []; |
53 | 71 | ||
72 | public static readonly Dictionary<EntranceIdentifier, PortalDescription> portal_by_entrance = []; | ||
73 | |||
54 | public static Requirement ParseRequirement(string scene, Dictionary<object, object> yamlReq) | 74 | public static Requirement ParseRequirement(string scene, Dictionary<object, object> yamlReq) |
55 | { | 75 | { |
56 | List<Requirement> reqs = []; | 76 | List<Requirement> reqs = []; |
@@ -512,6 +532,19 @@ namespace ManifoldGardenArchipelago | |||
512 | } | 532 | } |
513 | } | 533 | } |
514 | 534 | ||
535 | if (sceneDetails.ContainsKey("portals")) | ||
536 | { | ||
537 | foreach (var portalPair in (Dictionary<object, object>)sceneDetails["portals"]) | ||
538 | { | ||
539 | string portalName = (string)portalPair.Key; | ||
540 | var portalData = (Dictionary<object, object>)portalPair.Value; | ||
541 | EntranceIdentifier entranceIdentifier = new((string)portalData["region"], (string)portalData["connection"]); | ||
542 | |||
543 | sceneDescription.portals[portalName] = entranceIdentifier; | ||
544 | portal_by_entrance[entranceIdentifier] = new(scenePair.Key, portalName); | ||
545 | } | ||
546 | } | ||
547 | |||
515 | scenes[scenePair.Key] = sceneDescription; | 548 | scenes[scenePair.Key] = sceneDescription; |
516 | } | 549 | } |
517 | } | 550 | } |
diff --git a/GameplayPatches.cs b/GameplayPatches.cs index 03e3f13..5e551ea 100644 --- a/GameplayPatches.cs +++ b/GameplayPatches.cs | |||
@@ -453,4 +453,60 @@ namespace ManifoldGardenArchipelago | |||
453 | return true; | 453 | return true; |
454 | } | 454 | } |
455 | } | 455 | } |
456 | |||
457 | [HarmonyPatch(typeof(LevelSystems), nameof(LevelSystems.InitializeAndLoadLevel))] | ||
458 | static class LevelSystemsInitializeAndLoadLevelPatch | ||
459 | { | ||
460 | static void Prefix(LevelSystems __instance) | ||
461 | { | ||
462 | if (Plugin.archipelagoManager.RoomShuffle) | ||
463 | { | ||
464 | if (GameData.scenes.TryGetValue(__instance.levelName, out SceneDescription sceneDescription)) | ||
465 | { | ||
466 | foreach (var portal in __instance.LevelInfo.portalList) | ||
467 | { | ||
468 | if (sceneDescription.portals.TryGetValue(portal.portalName, out EntranceIdentifier exitId) && | ||
469 | Plugin.archipelagoManager.EntranceMapping.TryGetValue(exitId, out EntranceIdentifier enterId) && | ||
470 | GameData.portal_by_entrance.TryGetValue(enterId, out PortalDescription pairedPortalDescription)) | ||
471 | { | ||
472 | SceneLink secondLink = new() | ||
473 | { | ||
474 | portalName = pairedPortalDescription.name, | ||
475 | sceneName = pairedPortalDescription.scene.Substring(0, pairedPortalDescription.scene.Length - 10), | ||
476 | gravity = GravityDirection.DownBlue, | ||
477 | targetScene = portal, | ||
478 | }; | ||
479 | portal.targetScene = secondLink; | ||
480 | } | ||
481 | } | ||
482 | } | ||
483 | } | ||
484 | |||
485 | /*if (__instance.gameObject.scene.name == "World_000_Optimized") | ||
486 | { | ||
487 | // 0: Portal_W001 | ||
488 | SceneLink sceneLink = __instance.LevelInfo.portalList[0]; | ||
489 | SceneLink secondLink = new() | ||
490 | { | ||
491 | portalName = "Portal_W063", | ||
492 | sceneName = "Hallway_W045_W073", | ||
493 | gravity = GravityDirection.DownBlue, | ||
494 | targetScene = sceneLink | ||
495 | }; | ||
496 | sceneLink.targetScene = secondLink; | ||
497 | } | ||
498 | else if (__instance.gameObject.scene.name == "Hallway_W045_W073_Optimized") | ||
499 | { | ||
500 | SceneLink sceneLink = __instance.LevelInfo.portalList[3]; | ||
501 | SceneLink secondLink = new() | ||
502 | { | ||
503 | portalName = "Portal_W001", | ||
504 | sceneName = "World_000", | ||
505 | gravity = GravityDirection.DownBlue, | ||
506 | targetScene = sceneLink | ||
507 | }; | ||
508 | sceneLink.targetScene = secondLink; | ||
509 | }*/ | ||
510 | } | ||
511 | } | ||
456 | } | 512 | } |
diff --git a/game_data.yaml b/game_data.yaml index 7ca4d4a..29709a2 100644 --- a/game_data.yaml +++ b/game_data.yaml | |||
@@ -10,6 +10,34 @@ World_000_Optimized: | |||
10 | - button: | 10 | - button: |
11 | scene: Hallway_W000_W052_Optimized | 11 | scene: Hallway_W000_W052_Optimized |
12 | index: 0 | 12 | index: 0 |
13 | portals: | ||
14 | Portal_W001: | ||
15 | region: "000" | ||
16 | connection: A | ||
17 | Portal_W052: | ||
18 | region: "000" | ||
19 | connection: B | ||
20 | Hallway_W000_W001_Optimized: | ||
21 | portals: | ||
22 | Portal_W000: | ||
23 | region: "000_001" | ||
24 | connection: A | ||
25 | Portal_W001: | ||
26 | region: "000_001" | ||
27 | connection: B | ||
28 | Portal_W900: | ||
29 | region: "000_001" | ||
30 | connection: C | ||
31 | World_900_Garnier_Optimized: | ||
32 | portals: | ||
33 | Portal_W000: | ||
34 | region: "900" | ||
35 | connection: A | ||
36 | Hallway_W062_W900_Optimized: | ||
37 | portals: | ||
38 | Portal_W062: | ||
39 | region: "900" | ||
40 | connection: B | ||
13 | World_062_LargeGap_Optimized: | 41 | World_062_LargeGap_Optimized: |
14 | locations: | 42 | locations: |
15 | Large Gap Puzzle Solved: | 43 | Large Gap Puzzle Solved: |
@@ -65,6 +93,22 @@ World_062_LargeGap_Optimized: | |||
65 | - button: | 93 | - button: |
66 | scene: Hallway_W062_W063_Optimized | 94 | scene: Hallway_W062_W063_Optimized |
67 | index: 0 | 95 | index: 0 |
96 | portals: | ||
97 | Portal_W052: | ||
98 | region: "062/Outside" | ||
99 | connection: A | ||
100 | Portal_W073: | ||
101 | region: "062/Inside" | ||
102 | connection: B | ||
103 | Portal_W026: | ||
104 | region: "062/Inside" | ||
105 | connection: C | ||
106 | Portal_W604: | ||
107 | region: "062/SecretHub" | ||
108 | connection: A | ||
109 | Portal_W900: | ||
110 | region: "062/SecretHub" | ||
111 | connection: C | ||
68 | Hallway_W062_W063_Optimized: | 112 | Hallway_W062_W063_Optimized: |
69 | doors: | 113 | doors: |
70 | 0: | 114 | 0: |
@@ -74,6 +118,10 @@ Hallway_W062_W063_Optimized: | |||
74 | - socket: | 118 | - socket: |
75 | scene: World_063_TowerX_Optimized | 119 | scene: World_063_TowerX_Optimized |
76 | index: 0 | 120 | index: 0 |
121 | portals: | ||
122 | Portal_W063: | ||
123 | region: "062/SecretHub" | ||
124 | connection: B | ||
77 | World_001_Optimized: | 125 | World_001_Optimized: |
78 | locations: | 126 | locations: |
79 | Blue - Red Laser Activated: | 127 | Blue - Red Laser Activated: |
@@ -95,6 +143,15 @@ World_001_Optimized: | |||
95 | 149: | 143 | 149: |
96 | item: Blue - Red Laser | 144 | item: Blue - Red Laser |
97 | socket: 5 | 145 | socket: 5 |
146 | portals: | ||
147 | Portal_To_W000: | ||
148 | region: "001" | ||
149 | connection: A | ||
150 | Hallway_W044_W001A_Optimized: | ||
151 | portals: | ||
152 | Portal_W044: | ||
153 | region: "001" | ||
154 | connection: B | ||
98 | World_044_CubicSpaceDivision_Optimized: | 155 | World_044_CubicSpaceDivision_Optimized: |
99 | locations: | 156 | locations: |
100 | Blue God Cube Planted: | 157 | Blue God Cube Planted: |
@@ -126,6 +183,25 @@ World_044_CubicSpaceDivision_Optimized: | |||
126 | doors: | 183 | doors: |
127 | 12: | 184 | 12: |
128 | item: Orange Garden | 185 | item: Orange Garden |
186 | portals: | ||
187 | Portal_W001: | ||
188 | region: "044" | ||
189 | connection: A | ||
190 | Portal_W003: | ||
191 | region: "044" | ||
192 | connection: C | ||
193 | Portal_W053: | ||
194 | region: "044" | ||
195 | connection: E | ||
196 | Portal_W002: | ||
197 | region: "044" | ||
198 | connection: G | ||
199 | Portal_W051: | ||
200 | region: "044" | ||
201 | connection: I | ||
202 | Portal_W063: | ||
203 | region: "044" | ||
204 | connection: K | ||
129 | World_044B_CubicSpaceDivision_Optimized: | 205 | World_044B_CubicSpaceDivision_Optimized: |
130 | doors: | 206 | doors: |
131 | 0: | 207 | 0: |
@@ -135,6 +211,10 @@ World_044B_CubicSpaceDivision_Optimized: | |||
135 | - button: | 211 | - button: |
136 | scene: Hallway_W044_W015_Optimized | 212 | scene: Hallway_W044_W015_Optimized |
137 | index: 1 | 213 | index: 1 |
214 | portals: | ||
215 | Portal_W015: | ||
216 | region: "044" | ||
217 | connection: B | ||
138 | Hallway_W044_W015_Optimized: | 218 | Hallway_W044_W015_Optimized: |
139 | locations: | 219 | locations: |
140 | Tower Orange Tree Puzzle Solved: | 220 | Tower Orange Tree Puzzle Solved: |
@@ -151,6 +231,13 @@ Hallway_W044_W015_Optimized: | |||
151 | - button: | 231 | - button: |
152 | scene: World_015_Stepwell_Optimized | 232 | scene: World_015_Stepwell_Optimized |
153 | index: 1 | 233 | index: 1 |
234 | portals: | ||
235 | Portal_W045: | ||
236 | region: "044_014" | ||
237 | connection: A | ||
238 | Portal_W613: | ||
239 | region: "044_014" | ||
240 | connection: C | ||
154 | World_613_LongBridgeLongTower_Optimized: | 241 | World_613_LongBridgeLongTower_Optimized: |
155 | locations: | 242 | locations: |
156 | Long Bridge Long Tower Puzzle Solved: | 243 | Long Bridge Long Tower Puzzle Solved: |
@@ -169,6 +256,13 @@ World_613_LongBridgeLongTower_Optimized: | |||
169 | or: | 256 | or: |
170 | - button: 0 | 257 | - button: 0 |
171 | - pad: 0 | 258 | - pad: 0 |
259 | portals: | ||
260 | Portal_W026: | ||
261 | region: "613" | ||
262 | connection: A | ||
263 | Portal_W015: | ||
264 | region: "613" | ||
265 | connection: B | ||
172 | World_015_Stepwell_Optimized: | 266 | World_015_Stepwell_Optimized: |
173 | doors: | 267 | doors: |
174 | 1: | 268 | 1: |
@@ -198,6 +292,10 @@ Hallway_W015_W041_Optimized: | |||
198 | - button: | 292 | - button: |
199 | scene: World_045_FirstHub_Optimized | 293 | scene: World_045_FirstHub_Optimized |
200 | index: 0 | 294 | index: 0 |
295 | portals: | ||
296 | Portal_W041: | ||
297 | region: "PathToPyramid" | ||
298 | connection: B | ||
201 | World_045_FirstHub_Optimized: | 299 | World_045_FirstHub_Optimized: |
202 | locations: | 300 | locations: |
203 | Pyramid First Exit Opened: | 301 | Pyramid First Exit Opened: |
@@ -249,6 +347,25 @@ World_045_FirstHub_Optimized: | |||
249 | - button: 0 | 347 | - button: 0 |
250 | - inverted: | 348 | - inverted: |
251 | pad: 1 | 349 | pad: 1 |
350 | portals: | ||
351 | Portal_W015: | ||
352 | region: "045" | ||
353 | connection: A | ||
354 | Portal_W018: | ||
355 | region: "045" | ||
356 | connection: B | ||
357 | Portal_W053: | ||
358 | region: "045" | ||
359 | connection: D | ||
360 | Portal_W037: | ||
361 | region: "045" | ||
362 | connection: F | ||
363 | Portal_W044: | ||
364 | region: "045/RedExit" | ||
365 | connection: A | ||
366 | Portal_W057: | ||
367 | region: "045/GreenExit" | ||
368 | connection: A | ||
252 | Hallway_W045_W018_Optimized: | 369 | Hallway_W045_W018_Optimized: |
253 | locations: | 370 | locations: |
254 | Purple/Orange Tree Puzzle Solved: | 371 | Purple/Orange Tree Puzzle Solved: |
@@ -260,6 +377,13 @@ Hallway_W045_W018_Optimized: | |||
260 | - button: | 377 | - button: |
261 | scene: Hallway_W041_W018_Optimized | 378 | scene: Hallway_W041_W018_Optimized |
262 | index: 0 | 379 | index: 0 |
380 | portals: | ||
381 | Portal_W045: | ||
382 | region: "045_018" | ||
383 | connection: A | ||
384 | Portal_W018: | ||
385 | region: "045_018" | ||
386 | connection: B | ||
263 | Hallway_W041_W018_Optimized: | 387 | Hallway_W041_W018_Optimized: |
264 | doors: | 388 | doors: |
265 | 0: | 389 | 0: |
@@ -268,6 +392,13 @@ Hallway_W041_W018_Optimized: | |||
268 | - button: | 392 | - button: |
269 | scene: World_018_PastaTile_Optimized | 393 | scene: World_018_PastaTile_Optimized |
270 | index: 0 | 394 | index: 0 |
395 | portals: | ||
396 | Portal_W041: | ||
397 | region: "041_018" | ||
398 | connection: A | ||
399 | Portal_W018: | ||
400 | region: "041_018" | ||
401 | connection: B | ||
271 | World_612_BlindSpherePuzzle_Optimized: | 402 | World_612_BlindSpherePuzzle_Optimized: |
272 | locations: | 403 | locations: |
273 | Blind Sphere Puzzle Solved: | 404 | Blind Sphere Puzzle Solved: |
@@ -283,6 +414,10 @@ World_612_BlindSpherePuzzle_Optimized: | |||
283 | - button: | 414 | - button: |
284 | scene: Hallway_W612_W057_Optimized | 415 | scene: Hallway_W612_W057_Optimized |
285 | index: 0 | 416 | index: 0 |
417 | portals: | ||
418 | Portal_W057: | ||
419 | region: "041_018" | ||
420 | connection: C | ||
286 | World_018_PastaTile_Optimized: | 421 | World_018_PastaTile_Optimized: |
287 | doors: | 422 | doors: |
288 | 0: | 423 | 0: |
@@ -303,6 +438,19 @@ World_018_PastaTile_Optimized: | |||
303 | index: 0 | 438 | index: 0 |
304 | - scene: Hallway_W018_W063_Optimized | 439 | - scene: Hallway_W018_W063_Optimized |
305 | index: 1 | 440 | index: 1 |
441 | portals: | ||
442 | Portal_W041: | ||
443 | region: "018/Inside" | ||
444 | connection: A | ||
445 | Portal_W003: | ||
446 | region: "018/Outside" | ||
447 | connection: B | ||
448 | Portal_W073: | ||
449 | region: "018/Secret" | ||
450 | connection: A | ||
451 | Portal_W063: | ||
452 | region: "018/Secret" | ||
453 | connection: B | ||
306 | Hallway_W018_W003B_Optimized: | 454 | Hallway_W018_W003B_Optimized: |
307 | locations: | 455 | locations: |
308 | Mini Sphere Puzzle Solved: | 456 | Mini Sphere Puzzle Solved: |
@@ -317,10 +465,26 @@ Hallway_W018_W003B_Optimized: | |||
317 | or: | 465 | or: |
318 | - button: 1 | 466 | - button: 1 |
319 | - entry: World_003_SpherePipe_Optimized | 467 | - entry: World_003_SpherePipe_Optimized |
468 | portals: | ||
469 | Portal_W018: | ||
470 | region: "018_003B" | ||
471 | connection: A | ||
472 | Portal_W003: | ||
473 | region: "018_003B" | ||
474 | connection: B | ||
320 | World_003_SpherePipe_Optimized: | 475 | World_003_SpherePipe_Optimized: |
321 | locations: | 476 | locations: |
322 | Red - Tree Purified: | 477 | Red - Tree Purified: |
323 | entry: AudioVisual_003_Optimized | 478 | entry: AudioVisual_003_Optimized |
479 | portals: | ||
480 | Portal_W018: | ||
481 | region: "003" | ||
482 | connection: A | ||
483 | Hallway_W044_W003_Optimized: | ||
484 | portals: | ||
485 | Portal_W044: | ||
486 | region: "003" | ||
487 | connection: B | ||
324 | World_044C_CubicSpaceDivision_Optimized: | 488 | World_044C_CubicSpaceDivision_Optimized: |
325 | doors: | 489 | doors: |
326 | 1: | 490 | 1: |
@@ -330,6 +494,10 @@ World_044C_CubicSpaceDivision_Optimized: | |||
330 | - button: | 494 | - button: |
331 | scene: Hallway_W044_W045_Optimized | 495 | scene: Hallway_W044_W045_Optimized |
332 | index: 0 | 496 | index: 0 |
497 | portals: | ||
498 | Portal_W045-053: | ||
499 | region: "044" | ||
500 | connection: D | ||
333 | Hallway_W044_W045_Optimized: | 501 | Hallway_W044_W045_Optimized: |
334 | locations: | 502 | locations: |
335 | Final Test Puzzle Solved: | 503 | Final Test Puzzle Solved: |
@@ -350,6 +518,16 @@ Hallway_W044_W045_Optimized: | |||
350 | pad: | 518 | pad: |
351 | scene: World_045_FirstHub_Optimized | 519 | scene: World_045_FirstHub_Optimized |
352 | index: 0 | 520 | index: 0 |
521 | portals: | ||
522 | Portal_W044: | ||
523 | region: "044_045" | ||
524 | connection: A | ||
525 | Portal_W045: | ||
526 | region: "044_045" | ||
527 | connection: B | ||
528 | Portal_W804: | ||
529 | region: "044_045" | ||
530 | connection: D | ||
353 | Hallway_W045_W053_Optimized: | 531 | Hallway_W045_W053_Optimized: |
354 | doors: | 532 | doors: |
355 | 1: | 533 | 1: |
@@ -357,6 +535,13 @@ Hallway_W045_W053_Optimized: | |||
357 | or: | 535 | or: |
358 | - button: 0 | 536 | - button: 0 |
359 | - entry: World_053_WaterTechingPuzzle_Optimized | 537 | - entry: World_053_WaterTechingPuzzle_Optimized |
538 | portals: | ||
539 | Portal_W041: | ||
540 | region: "045_053" | ||
541 | connection: A | ||
542 | Portal_053: | ||
543 | region: "045_053" | ||
544 | connection: B | ||
360 | World_053_WaterTechingPuzzle_Optimized: | 545 | World_053_WaterTechingPuzzle_Optimized: |
361 | locations: | 546 | locations: |
362 | Green - Blue Waterwheel Activated: | 547 | Green - Blue Waterwheel Activated: |
@@ -366,6 +551,15 @@ World_053_WaterTechingPuzzle_Optimized: | |||
366 | doors: | 551 | doors: |
367 | 4: | 552 | 4: |
368 | item: Green - Water Room Entrance | 553 | item: Green - Water Room Entrance |
554 | portals: | ||
555 | Portal_W045A: | ||
556 | region: "053" | ||
557 | connection: A | ||
558 | Hallway_W044_W053_Optimized: | ||
559 | portals: | ||
560 | Portal_W044: | ||
561 | region: "053" | ||
562 | connection: B | ||
369 | World_044E_CubicSpaceDivision_Optimized: | 563 | World_044E_CubicSpaceDivision_Optimized: |
370 | doors: | 564 | doors: |
371 | 1: | 565 | 1: |
@@ -375,6 +569,10 @@ World_044E_CubicSpaceDivision_Optimized: | |||
375 | - socket: | 569 | - socket: |
376 | scene: Hallway_W044_W057_Optimized | 570 | scene: Hallway_W044_W057_Optimized |
377 | index: 0 | 571 | index: 0 |
572 | portals: | ||
573 | Portal_W057: | ||
574 | region: "044" | ||
575 | connection: F | ||
378 | Hallway_W044_W057_Optimized: | 576 | Hallway_W044_W057_Optimized: |
379 | doors: | 577 | doors: |
380 | 1: | 578 | 1: |
@@ -383,6 +581,13 @@ Hallway_W044_W057_Optimized: | |||
383 | - waterwheel: | 581 | - waterwheel: |
384 | scene: World_057_WaterAndPortals_Optimized | 582 | scene: World_057_WaterAndPortals_Optimized |
385 | index: 0 | 583 | index: 0 |
584 | portals: | ||
585 | Portal_W044: | ||
586 | region: "044_057" | ||
587 | connection: A | ||
588 | Portal_W057: | ||
589 | region: "044_057" | ||
590 | connection: B | ||
386 | Hallway_W612_W057_Optimized: | 591 | Hallway_W612_W057_Optimized: |
387 | doors: | 592 | doors: |
388 | 2: | 593 | 2: |
@@ -391,6 +596,13 @@ Hallway_W612_W057_Optimized: | |||
391 | - button: | 596 | - button: |
392 | scene: World_057_WaterAndPortals_Optimized | 597 | scene: World_057_WaterAndPortals_Optimized |
393 | index: 0 | 598 | index: 0 |
599 | portals: | ||
600 | Portal_W612: | ||
601 | region: "612_057" | ||
602 | connection: A | ||
603 | Portal_W015: | ||
604 | region: "612_057" | ||
605 | connection: B | ||
394 | World_057_WaterAndPortals_Optimized: | 606 | World_057_WaterAndPortals_Optimized: |
395 | locations: | 607 | locations: |
396 | Water Through Portals Puzzle Solved: | 608 | Water Through Portals Puzzle Solved: |
@@ -407,6 +619,13 @@ World_057_WaterAndPortals_Optimized: | |||
407 | or: | 619 | or: |
408 | - waterwheel: 0 | 620 | - waterwheel: 0 |
409 | - button: 0 | 621 | - button: 0 |
622 | portals: | ||
623 | Portal_W044: | ||
624 | region: "057" | ||
625 | connection: A | ||
626 | Portal_W612: | ||
627 | region: "057" | ||
628 | connection: B | ||
410 | Hallway_W057_W045_Optimized: | 629 | Hallway_W057_W045_Optimized: |
411 | doors: | 630 | doors: |
412 | 1: | 631 | 1: |
@@ -416,6 +635,10 @@ Hallway_W057_W045_Optimized: | |||
416 | pad: | 635 | pad: |
417 | scene: World_045_FirstHub_Optimized | 636 | scene: World_045_FirstHub_Optimized |
418 | index: 1 | 637 | index: 1 |
638 | portals: | ||
639 | Portal_W045: | ||
640 | region: "057" | ||
641 | connection: C | ||
419 | Hallway_W045_W073_Optimized: | 642 | Hallway_W045_W073_Optimized: |
420 | locations: | 643 | locations: |
421 | Apartments Waterwheel Activated: | 644 | Apartments Waterwheel Activated: |
@@ -436,6 +659,19 @@ Hallway_W045_W073_Optimized: | |||
436 | - button: | 659 | - button: |
437 | scene: Hallway_W073_W018_Optimized | 660 | scene: Hallway_W073_W018_Optimized |
438 | index: 0 | 661 | index: 0 |
662 | portals: | ||
663 | Portal_W045: | ||
664 | region: "045_073" | ||
665 | connection: A | ||
666 | Portal_W073: | ||
667 | region: "045_073" | ||
668 | connection: B | ||
669 | Portal_W018: | ||
670 | region: "045_073" | ||
671 | connection: C | ||
672 | Portal_W063: | ||
673 | region: "045_073" | ||
674 | connection: D | ||
439 | Hallway_W073_W018_Optimized: | 675 | Hallway_W073_W018_Optimized: |
440 | doors: | 676 | doors: |
441 | 1: | 677 | 1: |
@@ -444,6 +680,13 @@ Hallway_W073_W018_Optimized: | |||
444 | - button: | 680 | - button: |
445 | scene: World_018_PastaTile_Optimized | 681 | scene: World_018_PastaTile_Optimized |
446 | index: 1 | 682 | index: 1 |
683 | portals: | ||
684 | Portal_W073: | ||
685 | region: "073_018" | ||
686 | connection: A | ||
687 | Portal_W018: | ||
688 | region: "073_018" | ||
689 | connection: B | ||
447 | Hallway_W018_W063_Optimized: | 690 | Hallway_W018_W063_Optimized: |
448 | doors: | 691 | doors: |
449 | 0: | 692 | 0: |
@@ -453,6 +696,16 @@ Hallway_W018_W063_Optimized: | |||
453 | or: | 696 | or: |
454 | - button: [0, 1] | 697 | - button: [0, 1] |
455 | - entry: World_063_TowerX_Optimized | 698 | - entry: World_063_TowerX_Optimized |
699 | portals: | ||
700 | Portal_W018: | ||
701 | region: "018_063" | ||
702 | connection: A | ||
703 | Portal_H044-073: | ||
704 | region: "018_063" | ||
705 | connection: B | ||
706 | Portal_W063: | ||
707 | region: "018_063" | ||
708 | connection: C | ||
456 | World_073_WaterThruStairs_Optimized: | 709 | World_073_WaterThruStairs_Optimized: |
457 | locations: | 710 | locations: |
458 | Skylight Room Waterwheel Activated: | 711 | Skylight Room Waterwheel Activated: |
@@ -487,6 +740,16 @@ World_073_WaterThruStairs_Optimized: | |||
487 | - button: | 740 | - button: |
488 | scene: Hallway_W044_W045_Optimized | 741 | scene: Hallway_W044_W045_Optimized |
489 | index: 0 | 742 | index: 0 |
743 | portals: | ||
744 | Portal_W045: | ||
745 | region: "073" | ||
746 | connection: A | ||
747 | Portal_W062: | ||
748 | region: "073" | ||
749 | connection: B | ||
750 | Portal_W026: | ||
751 | region: "073" | ||
752 | connection: C | ||
490 | Hallway_W073_W062_Optimized: | 753 | Hallway_W073_W062_Optimized: |
491 | doors: | 754 | doors: |
492 | 1: | 755 | 1: |
@@ -496,6 +759,13 @@ Hallway_W073_W062_Optimized: | |||
496 | - socket: | 759 | - socket: |
497 | scene: World_062_LargeGap_Optimized | 760 | scene: World_062_LargeGap_Optimized |
498 | index: 0 | 761 | index: 0 |
762 | portals: | ||
763 | Portal_W073: | ||
764 | region: "073_062" | ||
765 | connection: A | ||
766 | Portal_W062: | ||
767 | region: "073_062" | ||
768 | connection: B | ||
499 | Hallway_W000_W052_Optimized: | 769 | Hallway_W000_W052_Optimized: |
500 | doors: | 770 | doors: |
501 | 2: | 771 | 2: |
@@ -504,6 +774,13 @@ Hallway_W000_W052_Optimized: | |||
504 | - button: | 774 | - button: |
505 | scene: World_052_JerryMcGuirePuzzle_Optimized | 775 | scene: World_052_JerryMcGuirePuzzle_Optimized |
506 | index: 1 | 776 | index: 1 |
777 | portals: | ||
778 | Portal_W000: | ||
779 | region: "000_052" | ||
780 | connection: A | ||
781 | Portal_W052: | ||
782 | region: "000_052" | ||
783 | connection: B | ||
507 | World_052_JerryMcGuirePuzzle_Optimized: | 784 | World_052_JerryMcGuirePuzzle_Optimized: |
508 | locations: | 785 | locations: |
509 | Jerry McGuire Puzzle Solved: | 786 | Jerry McGuire Puzzle Solved: |
@@ -527,6 +804,13 @@ World_052_JerryMcGuirePuzzle_Optimized: | |||
527 | - button: | 804 | - button: |
528 | scene: Hallway_W052_W062_Optimized | 805 | scene: Hallway_W052_W062_Optimized |
529 | index: 0 | 806 | index: 0 |
807 | portals: | ||
808 | Portal_W000: | ||
809 | region: "052" | ||
810 | connection: A | ||
811 | Portal_W062: | ||
812 | region: "052" | ||
813 | connection: B | ||
530 | Hallway_W052_W062_Optimized: | 814 | Hallway_W052_W062_Optimized: |
531 | doors: | 815 | doors: |
532 | 2: | 816 | 2: |
@@ -536,6 +820,13 @@ Hallway_W052_W062_Optimized: | |||
536 | - button: | 820 | - button: |
537 | scene: World_062_LargeGap_Optimized | 821 | scene: World_062_LargeGap_Optimized |
538 | index: 0 | 822 | index: 0 |
823 | portals: | ||
824 | Portal_W052: | ||
825 | region: "052_062" | ||
826 | connection: A | ||
827 | Portal_W062: | ||
828 | region: "052_062" | ||
829 | connection: B | ||
539 | Hallway_W062_W026_Optimized: | 830 | Hallway_W062_W026_Optimized: |
540 | doors: | 831 | doors: |
541 | 1: | 832 | 1: |
@@ -543,6 +834,13 @@ Hallway_W062_W026_Optimized: | |||
543 | or: | 834 | or: |
544 | - button: 0 | 835 | - button: 0 |
545 | - entry: World_026_Library_Optimized | 836 | - entry: World_026_Library_Optimized |
837 | portals: | ||
838 | Portal_W062: | ||
839 | region: "062_026" | ||
840 | connection: A | ||
841 | Portal_W026: | ||
842 | region: "062_026" | ||
843 | connection: B | ||
546 | World_026_Library_Optimized: | 844 | World_026_Library_Optimized: |
547 | locations: | 845 | locations: |
548 | Single Socket Puzzle Solved: | 846 | Single Socket Puzzle Solved: |
@@ -566,6 +864,19 @@ World_026_Library_Optimized: | |||
566 | 3: | 864 | 3: |
567 | item: Library - Yellow Smoke Wall | 865 | item: Library - Yellow Smoke Wall |
568 | entry: World_026_Library_Optimized | 866 | entry: World_026_Library_Optimized |
867 | portals: | ||
868 | Portal_W062: | ||
869 | region: "026" | ||
870 | connection: A | ||
871 | Portal_W002: | ||
872 | region: "026" | ||
873 | connection: B | ||
874 | Portal_W051: | ||
875 | region: "026" | ||
876 | connection: D | ||
877 | Portal_W044 (051): | ||
878 | region: "026/YellowExit" | ||
879 | connection: A | ||
569 | Hallway_W026_W002_Optimized: | 880 | Hallway_W026_W002_Optimized: |
570 | locations: | 881 | locations: |
571 | Yellow Cube Fetch Quest Completed: | 882 | Yellow Cube Fetch Quest Completed: |
@@ -578,6 +889,13 @@ Hallway_W026_W002_Optimized: | |||
578 | - button: | 889 | - button: |
579 | scene: Hallway_W026_W015_Optimized | 890 | scene: Hallway_W026_W015_Optimized |
580 | index: 0 | 891 | index: 0 |
892 | portals: | ||
893 | Portal_W26: | ||
894 | region: "026_002" | ||
895 | connection: A | ||
896 | Portal_W015: | ||
897 | region: "026_002" | ||
898 | connection: C | ||
581 | Hallway_W026_W015_Optimized: | 899 | Hallway_W026_W015_Optimized: |
582 | doors: | 900 | doors: |
583 | 0: | 901 | 0: |
@@ -586,6 +904,13 @@ Hallway_W026_W015_Optimized: | |||
586 | - pad: | 904 | - pad: |
587 | scene: World_613_LongBridgeLongTower_Optimized | 905 | scene: World_613_LongBridgeLongTower_Optimized |
588 | index: 0 | 906 | index: 0 |
907 | portals: | ||
908 | Portal_W026: | ||
909 | region: "026_015" | ||
910 | connection: A | ||
911 | Portal_W613: | ||
912 | region: "026_015" | ||
913 | connection: B | ||
589 | Hallway_W026_W002_PuzzleRoom_Optimized: | 914 | Hallway_W026_W002_PuzzleRoom_Optimized: |
590 | locations: | 915 | locations: |
591 | Yellow Entrance Puzzle Solved: | 916 | Yellow Entrance Puzzle Solved: |
@@ -596,6 +921,10 @@ Hallway_W026_W002_PuzzleRoom_Optimized: | |||
596 | or: | 921 | or: |
597 | - socket: [0, 1] | 922 | - socket: [0, 1] |
598 | - entry: World_002_Optimized | 923 | - entry: World_002_Optimized |
924 | portals: | ||
925 | Portal_W002: | ||
926 | region: "026_002/PuzzleRoom" | ||
927 | connection: B | ||
599 | World_002_Optimized: | 928 | World_002_Optimized: |
600 | locations: | 929 | locations: |
601 | Yellow - Blue Tower Solved: | 930 | Yellow - Blue Tower Solved: |
@@ -606,6 +935,15 @@ World_002_Optimized: | |||
606 | socket: 4 | 935 | socket: 4 |
607 | Yellow - Tree Purified: | 936 | Yellow - Tree Purified: |
608 | entry: AudioVisual_002_Optimized | 937 | entry: AudioVisual_002_Optimized |
938 | portals: | ||
939 | Portal_W026: | ||
940 | region: "002" | ||
941 | connection: A | ||
942 | Hallway_W044_W002_Optimized: | ||
943 | portals: | ||
944 | Portal_W044: | ||
945 | region: "002" | ||
946 | connection: B | ||
609 | World_044D_CubicSpaceDivision_Optimized: | 947 | World_044D_CubicSpaceDivision_Optimized: |
610 | doors: | 948 | doors: |
611 | 0: | 949 | 0: |
@@ -615,6 +953,10 @@ World_044D_CubicSpaceDivision_Optimized: | |||
615 | - button: | 953 | - button: |
616 | scene: Hallway_W044_W026_Optimized | 954 | scene: Hallway_W044_W026_Optimized |
617 | index: 0 | 955 | index: 0 |
956 | portals: | ||
957 | Portal_W026: | ||
958 | region: "044" | ||
959 | connection: H | ||
618 | Hallway_W044_W026_Optimized: | 960 | Hallway_W044_W026_Optimized: |
619 | doors: | 961 | doors: |
620 | 2: | 962 | 2: |
@@ -628,6 +970,16 @@ Hallway_W044_W026_Optimized: | |||
628 | or: | 970 | or: |
629 | - button: 0 | 971 | - button: 0 |
630 | - button: 1 | 972 | - button: 1 |
973 | portals: | ||
974 | Portal_W044: | ||
975 | region: "044_026" | ||
976 | connection: A | ||
977 | Portal_W026: | ||
978 | region: "044_026" | ||
979 | connection: B | ||
980 | Portal_W073: | ||
981 | region: "044_026" | ||
982 | connection: C | ||
631 | Hallway_W073_W026_Optimized: | 983 | Hallway_W073_W026_Optimized: |
632 | doors: | 984 | doors: |
633 | 1: | 985 | 1: |
@@ -636,6 +988,13 @@ Hallway_W073_W026_Optimized: | |||
636 | - button: | 988 | - button: |
637 | scene: Hallway_W044_W026_Optimized | 989 | scene: Hallway_W044_W026_Optimized |
638 | index: 1 | 990 | index: 1 |
991 | portals: | ||
992 | Portal_W073: | ||
993 | region: "073_026" | ||
994 | connection: A | ||
995 | Portal_W026: | ||
996 | region: "073_026" | ||
997 | connection: B | ||
639 | Hallway_W026_W051_Optimized: | 998 | Hallway_W026_W051_Optimized: |
640 | doors: | 999 | doors: |
641 | 0: | 1000 | 0: |
@@ -643,10 +1002,26 @@ Hallway_W026_W051_Optimized: | |||
643 | or: | 1002 | or: |
644 | - button: 0 | 1003 | - button: 0 |
645 | - entry: World_051_CeilingSuspendPuzzle_Optimized | 1004 | - entry: World_051_CeilingSuspendPuzzle_Optimized |
1005 | portals: | ||
1006 | Portal_W026: | ||
1007 | region: "026_051" | ||
1008 | connection: A | ||
1009 | Portal_W051: | ||
1010 | region: "026_051" | ||
1011 | connection: B | ||
646 | World_051_CeilingSuspendPuzzle_Optimized: | 1012 | World_051_CeilingSuspendPuzzle_Optimized: |
647 | locations: | 1013 | locations: |
648 | Purple - Tree Purified: | 1014 | Purple - Tree Purified: |
649 | entry: AudioVisual_051_Optimized | 1015 | entry: AudioVisual_051_Optimized |
1016 | portals: | ||
1017 | Portal_W026: | ||
1018 | region: "051" | ||
1019 | connection: A | ||
1020 | Hallway_W044_W051A_Optimized: | ||
1021 | portals: | ||
1022 | Portal_W044: | ||
1023 | region: "051" | ||
1024 | connection: B | ||
650 | World_044G_CubicSpaceDivision_Optimized: | 1025 | World_044G_CubicSpaceDivision_Optimized: |
651 | doors: | 1026 | doors: |
652 | 1: | 1027 | 1: |
@@ -656,6 +1031,10 @@ World_044G_CubicSpaceDivision_Optimized: | |||
656 | - button: | 1031 | - button: |
657 | scene: Hallway_W033_W063_Optimized | 1032 | scene: Hallway_W033_W063_Optimized |
658 | index: 0 | 1033 | index: 0 |
1034 | portals: | ||
1035 | Portal_W051: | ||
1036 | region: "044" | ||
1037 | connection: J | ||
659 | Hallway_W033_W063_Optimized: | 1038 | Hallway_W033_W063_Optimized: |
660 | locations: | 1039 | locations: |
661 | Shattered Bridges Puzzle Solved: | 1040 | Shattered Bridges Puzzle Solved: |
@@ -672,6 +1051,13 @@ Hallway_W033_W063_Optimized: | |||
672 | - socket: | 1051 | - socket: |
673 | scene: World_063_TowerX_Optimized | 1052 | scene: World_063_TowerX_Optimized |
674 | index: 0 | 1053 | index: 0 |
1054 | portals: | ||
1055 | Portal_W044: | ||
1056 | region: "033_063" | ||
1057 | connection: A | ||
1058 | Portal_W063: | ||
1059 | region: "033_063" | ||
1060 | connection: B | ||
675 | World_611_SecretRoom1_Optimized: | 1061 | World_611_SecretRoom1_Optimized: |
676 | locations: | 1062 | locations: |
677 | Shattered Bridges Secret Puzzle Solved: | 1063 | Shattered Bridges Secret Puzzle Solved: |
@@ -688,6 +1074,10 @@ World_611_SecretRoom1_Optimized: | |||
688 | - socket: | 1074 | - socket: |
689 | scene: World_604_TetrominoNonEuclidean_Optimized | 1075 | scene: World_604_TetrominoNonEuclidean_Optimized |
690 | index: 0 | 1076 | index: 0 |
1077 | portals: | ||
1078 | Portal_W604: | ||
1079 | region: "611" | ||
1080 | connection: B | ||
691 | World_604_TetrominoNonEuclidean_Optimized: | 1081 | World_604_TetrominoNonEuclidean_Optimized: |
692 | locations: | 1082 | locations: |
693 | Non-Euclidean Tetromino Puzzle Solved: | 1083 | Non-Euclidean Tetromino Puzzle Solved: |
@@ -703,6 +1093,13 @@ World_604_TetrominoNonEuclidean_Optimized: | |||
703 | - button: | 1093 | - button: |
704 | scene: Hallway_W604_W062_Optimized | 1094 | scene: Hallway_W604_W062_Optimized |
705 | index: 0 | 1095 | index: 0 |
1096 | portals: | ||
1097 | Portal_W611: | ||
1098 | region: "604" | ||
1099 | connection: A | ||
1100 | Portal_W062: | ||
1101 | region: "604" | ||
1102 | connection: B | ||
706 | Hallway_W604_W062_Optimized: | 1103 | Hallway_W604_W062_Optimized: |
707 | doors: | 1104 | doors: |
708 | 0: | 1105 | 0: |
@@ -721,6 +1118,13 @@ Hallway_W604_W062_Optimized: | |||
721 | - button: | 1118 | - button: |
722 | scene: World_062_LargeGap_Optimized | 1119 | scene: World_062_LargeGap_Optimized |
723 | index: 4 | 1120 | index: 4 |
1121 | portals: | ||
1122 | Portal_W604: | ||
1123 | region: "604_062" | ||
1124 | connection: A | ||
1125 | Portal_W062: | ||
1126 | region: "604_062" | ||
1127 | connection: B | ||
724 | World_063_TowerX_Optimized: | 1128 | World_063_TowerX_Optimized: |
725 | locations: | 1129 | locations: |
726 | Orange - Inside Puzzle Solved: | 1130 | Orange - Inside Puzzle Solved: |
@@ -733,6 +1137,21 @@ World_063_TowerX_Optimized: | |||
733 | or: | 1137 | or: |
734 | - socket: 0 | 1138 | - socket: 0 |
735 | - socket: 1 | 1139 | - socket: 1 |
1140 | portals: | ||
1141 | Portal_W044B: | ||
1142 | region: "063/Inside" | ||
1143 | connection: A | ||
1144 | Portal_W062: | ||
1145 | region: "063/Inside" | ||
1146 | connection: B | ||
1147 | Portal_W018: | ||
1148 | region: "063/Outside" | ||
1149 | connection: B | ||
1150 | Hallway_W044_W063_Optimized: | ||
1151 | portals: | ||
1152 | Portal_W044: | ||
1153 | region: "063/Inside" | ||
1154 | connection: D | ||
736 | Hallway_W045_W804_Optimized: | 1155 | Hallway_W045_W804_Optimized: |
737 | doors: | 1156 | doors: |
738 | 0: | 1157 | 0: |
@@ -740,6 +1159,13 @@ Hallway_W045_W804_Optimized: | |||
740 | or: | 1159 | or: |
741 | - button: 0 | 1160 | - button: 0 |
742 | - entry: World_804_Optimized | 1161 | - entry: World_804_Optimized |
1162 | portals: | ||
1163 | Portal_W045: | ||
1164 | region: "045_804" | ||
1165 | connection: A | ||
1166 | Portal_W804: | ||
1167 | region: "045_804" | ||
1168 | connection: B | ||
743 | World_801_Optimized: | 1169 | World_801_Optimized: |
744 | locations: | 1170 | locations: |
745 | Rainbow - Orange Tree Puzzle Solved: | 1171 | Rainbow - Orange Tree Puzzle Solved: |
@@ -760,6 +1186,10 @@ World_804_Optimized: | |||
760 | locations: | 1186 | locations: |
761 | Rainbow - Double Gravity Puzzle Solved: | 1187 | Rainbow - Double Gravity Puzzle Solved: |
762 | socket: [0, 1] | 1188 | socket: [0, 1] |
1189 | portals: | ||
1190 | Portal_W045: | ||
1191 | region: "804" | ||
1192 | connection: B | ||
763 | World_807_TetrominoWaterAndGears_Optimized: | 1193 | World_807_TetrominoWaterAndGears_Optimized: |
764 | locations: | 1194 | locations: |
765 | Rainbow - First Water Tetromino Puzzle Solved: | 1195 | Rainbow - First Water Tetromino Puzzle Solved: |