Makuta Luroka Posted March 22, 2014 Share Posted March 22, 2014 My question here is pretty straight forward. Man, 2001-2003 LEGO really loved those nintendo-hard randomization mazes. I was wondering if there is a specific way you could determine your way through the drifts, because it seems to me that it is endless. I have no idea even how many "rooms" there are in it or what any of the mechanics are, other than that if you keep going straight, you will eventually find either Kantai's hut, the Temple of Peace, or the cliff. In my current instance of the game, Hahli enters from the northern edge of the first room. Heading west leads to the cliff. Heading straight from the first room, continuing in the direction Hahli faces for each room she enters leads to Kantai's hut, after 11 rooms. That is all I know. Quote Link to comment Share on other sites More sharing options...
Gatanui Posted March 22, 2014 Share Posted March 22, 2014 Last time I played it, I tried to figure it out and played. I did find some patterns by which I reached certain destinations, but the exit was not among them. I think it's totally different each time but I don't know by which logic the maze is generated. May be worth a look at the source code. -Gata Quote - Gata Please don't use my avatar or signature without permission, thanks! Link to comment Share on other sites More sharing options...
Kanakalackin Posted March 22, 2014 Share Posted March 22, 2014 If you don't want to get lost, just use the flags. It's so much easier in the long run, although gathering the materials may take a little time. But make sure you have a large supply of them, because the snow constantly falls and covers them up. Gosh, LEGO really did have it out for us when we said MNOG I was too easy... Quote I have an Instagram page where you can see these pictures and more like them! Just click HERE! Link to comment Share on other sites More sharing options...
Gatanui Posted March 22, 2014 Share Posted March 22, 2014 If you don't want to get lost, just use the flags. It's so much easier in the long run, although gathering the materials may take a little time. But make sure you have a large supply of them, because the snow constantly falls and covers them up. Gosh, LEGO really did have it out for us when we said MNOG I was too easy...From my experience, the flags are basically useless as they disappear too fast. -Gata Quote - Gata Please don't use my avatar or signature without permission, thanks! Link to comment Share on other sites More sharing options...
Makuta Luroka Posted March 22, 2014 Author Share Posted March 22, 2014 If you don't want to get lost, just use the flags. It's so much easier in the long run, although gathering the materials may take a little time. But make sure you have a large supply of them, because the snow constantly falls and covers them up. Gosh, LEGO really did have it out for us when we said MNOG I was too easy...From my experience, the flags are basically useless as they disappear too fast. -Gata I hate that the flags disappear so quickly. Makes it even more nintendo hard. I'm never gonna get the crystal of peace. Quote Link to comment Share on other sites More sharing options...
Art Vandelay Posted March 22, 2014 Share Posted March 22, 2014 I just aimlessly trek through the Drifts until I end up at either the hermit's house or the Temple of Peace. You'll get there eventually if you keep at it for long enough. I tried using flags once, but they weren't much help at all. It'd be pretty hilarious to see BZP do a playthrough of MNOLG II and get stuck in the Drifts... Quote Link to comment Share on other sites More sharing options...
JrMasterModelBuilder Posted March 22, 2014 Share Posted March 22, 2014 (edited) Here is the function resposible for creating the maze. Yes, it is randomly generated, though the scenes as consistently linked. I haven't tried to reverse-engineer the logic, but it appears that KantaisEntrance is set to the furthest link from the entrance, and KokoroRuinsApproach and KokoroWastesDeadEnd and positioned next to each other in a ramdon location somewhere in the maze. function createMaze() { connectionsList = []; var i = 1; while (i < 10) { connectionsList.push({name: "Scene" + i, direction: "north", link: ""}); connectionsList.push({name: "Scene" + i, direction: "south", link: ""}); connectionsList.push({name: "Scene" + i, direction: "east", link: ""}); connectionsList.push({name: "Scene" + i, direction: "west", link: ""}); ++i; } finalResults = []; startNode = connectionsList[random(connectionsList.length)]; startNode.link = {name: "KokoroWastesEntrance"}; var j = 0; while (j < connectionsList.length) { if (0 != (connectionsList[j].name == startNode.name) & 0 != (connectionsList[j].direction == startNode.direction)) { connectionsList.splice(j, 1); --j; break; } ++j; } finalResults.push(startNode); var picking = 1; while (picking == 1) { fromNode = connectionsList[random(connectionsList.length)]; if (fromNode.name == startNode.name) { picking = 0; } } safetyCount = 0; while (connectionsList.length > 1) { var toNode = connectionsList[random(connectionsList.length)]; ++safetyCount; if (0 != safetyCount > 10 & 0 != (0 != (toNode.name != fromNode.name) | 0 != (toNode.direction != fromNode.direction))) { safetyCheck = 1; } else { safetyCheck = 0; } if (0 != (toNode.name != fromNode.name) | 0 != (safetyCheck == 1)) { safetyCount = 0; fromNode.link = toNode; toNode.link = fromNode; finalResults.push(fromNode); finalResults.push(toNode); var j = 0; while (j < connectionsList.length) { if (0 != (connectionsList[j].name == fromNode.name) & 0 != (connectionsList[j].direction == fromNode.direction)) { connectionsList.splice(j, 1); --j; } else if (0 != (connectionsList[j].name == toNode.name) & 0 != (connectionsList[j].direction == toNode.direction)) { connectionsList.splice(j, 1); --j; } ++j; } var picking = 1; while (picking == 1) { fromNode = connectionsList[random(connectionsList.length)]; if (fromNode.name == toNode.name) { picking = 0; } } } } lastNode = connectionsList[0]; lastNode.link = {name: "KantaisEntrance"}; finalResults.push(lastNode); selectingNode = 1; while (selectingNode == 1) { secondExitNode = finalResults[random(finalResults.length)]; if (0 != (secondExitNode.link != "start") & 0 != (secondExitNode.link != "exit")) { selectingNode = 0; thirdExitNode = secondExitNode.link; secondExitNode.link = {name: "KokoroRuinsApproach"}; thirdExitNode.link = {name: "KokoroWastesDeadEnd"}; } } _root.KokoroWastesMaze = finalResults; _root.KokoroWastesFlags = []; } Since the code is mostly JavaScript compliant, here is a JavaScript copy you can use to use if you want to analyze what it's doing, but basically it's creating a bunch of scenes, and asigning links between them: _root = {}; function random(max) { return Math.floor(Math.random()*max) } function createMaze() { connectionsList = []; var i = 1; while (i < 10) { connectionsList.push({name: "Scene" + i, direction: "north", link: ""}); connectionsList.push({name: "Scene" + i, direction: "south", link: ""}); connectionsList.push({name: "Scene" + i, direction: "east", link: ""}); connectionsList.push({name: "Scene" + i, direction: "west", link: ""}); ++i; } finalResults = []; startNode = connectionsList[random(connectionsList.length)]; startNode.link = {name: "KokoroWastesEntrance"}; var j = 0; while (j < connectionsList.length) { if (0 != (connectionsList[j].name == startNode.name) & 0 != (connectionsList[j].direction == startNode.direction)) { connectionsList.splice(j, 1); --j; break; } ++j; } finalResults.push(startNode); var picking = 1; while (picking == 1) { fromNode = connectionsList[random(connectionsList.length)]; if (fromNode.name == startNode.name) { picking = 0; } } safetyCount = 0; while (connectionsList.length > 1) { var toNode = connectionsList[random(connectionsList.length)]; ++safetyCount; if (0 != safetyCount > 10 & 0 != (0 != (toNode.name != fromNode.name) | 0 != (toNode.direction != fromNode.direction))) { safetyCheck = 1; } else { safetyCheck = 0; } if (0 != (toNode.name != fromNode.name) | 0 != (safetyCheck == 1)) { safetyCount = 0; fromNode.link = toNode; toNode.link = fromNode; finalResults.push(fromNode); finalResults.push(toNode); var j = 0; while (j < connectionsList.length) { if (0 != (connectionsList[j].name == fromNode.name) & 0 != (connectionsList[j].direction == fromNode.direction)) { connectionsList.splice(j, 1); --j; } else if (0 != (connectionsList[j].name == toNode.name) & 0 != (connectionsList[j].direction == toNode.direction)) { connectionsList.splice(j, 1); --j; } ++j; } var picking = 1; while (picking == 1) { fromNode = connectionsList[random(connectionsList.length)]; if (fromNode.name == toNode.name) { picking = 0; } } } } lastNode = connectionsList[0]; lastNode.link = {name: "KantaisEntrance"}; finalResults.push(lastNode); selectingNode = 1; while (selectingNode == 1) { secondExitNode = finalResults[random(finalResults.length)]; if (0 != (secondExitNode.link != "start") & 0 != (secondExitNode.link != "exit")) { selectingNode = 0; thirdExitNode = secondExitNode.link; secondExitNode.link = {name: "KokoroRuinsApproach"}; thirdExitNode.link = {name: "KokoroWastesDeadEnd"}; } } _root.KokoroWastesMaze = finalResults; _root.KokoroWastesFlags = []; } createMaze(); for(var o, i = -1; o = _root.KokoroWastesMaze[++i] { console.dir(o); } Edited March 22, 2014 by JrMasterModelBuilder 1 Quote Are signatures still a thing? Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.