From 7025e33961ad2dc83ccf7d0a85f2a6f4396777eb Mon Sep 17 00:00:00 2001 From: Patrick Fifield Date: Wed, 22 Mar 2017 16:55:29 -0400 Subject: [PATCH] Randomized map part 1 --- DW3Randomizer/Form1.Designer.cs | 16 + DW3Randomizer/Form1.cs | 1284 ++++++++++++++++++++- DW3Randomizer/bin/Debug/DW3Randomizer.exe | Bin 62464 -> 81920 bytes DW3Randomizer/obj/Debug/DW3Randomizer.exe | Bin 62464 -> 81920 bytes 4 files changed, 1299 insertions(+), 1 deletion(-) diff --git a/DW3Randomizer/Form1.Designer.cs b/DW3Randomizer/Form1.Designer.cs index 8ae17b7..4ef5207 100644 --- a/DW3Randomizer/Form1.Designer.cs +++ b/DW3Randomizer/Form1.Designer.cs @@ -73,6 +73,7 @@ private void InitializeComponent() this.optMonsterHeavy = new System.Windows.Forms.RadioButton(); this.optMonsterMedium = new System.Windows.Forms.RadioButton(); this.optMonsterLight = new System.Windows.Forms.RadioButton(); + this.chkSmallMap = new System.Windows.Forms.CheckBox(); this.grpMonsterStat.SuspendLayout(); this.SuspendLayout(); // @@ -507,11 +508,25 @@ private void InitializeComponent() this.optMonsterLight.Text = "Light"; this.optMonsterLight.UseVisualStyleBackColor = true; // + // chkSmallMap + // + this.chkSmallMap.AutoSize = true; + this.chkSmallMap.Checked = true; + this.chkSmallMap.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkSmallMap.Enabled = false; + this.chkSmallMap.Location = new System.Drawing.Point(186, 275); + this.chkSmallMap.Name = "chkSmallMap"; + this.chkSmallMap.Size = new System.Drawing.Size(125, 17); + this.chkSmallMap.TabIndex = 40; + this.chkSmallMap.Text = "Small Map (128x128)"; + this.chkSmallMap.UseVisualStyleBackColor = true; + // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(537, 507); + this.Controls.Add(this.chkSmallMap); this.Controls.Add(this.label9); this.Controls.Add(this.grpMonsterStat); this.Controls.Add(this.lblIntensityDesc); @@ -611,6 +626,7 @@ private void InitializeComponent() private System.Windows.Forms.RadioButton optMonsterHeavy; private System.Windows.Forms.RadioButton optMonsterMedium; private System.Windows.Forms.RadioButton optMonsterLight; + private System.Windows.Forms.CheckBox chkSmallMap; } } diff --git a/DW3Randomizer/Form1.cs b/DW3Randomizer/Form1.cs index 9ae02a7..4ed079b 100644 --- a/DW3Randomizer/Form1.cs +++ b/DW3Randomizer/Form1.cs @@ -3,6 +3,7 @@ using System.Security.Cryptography; using System.IO; using System.Collections.Generic; +using System.Linq; namespace DW3Randomizer { @@ -19,6 +20,12 @@ public partial class Form1 : Form 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x66, 0x67, 0x53, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x88, 0x89, 0x65, 0x84, 0x81, 0x82, 0x83 }; // 129 normal monsters, 7 bosses. Skip Zoma, "frozen" Zoma, Ortega + int[,] map = new int[256, 256]; + int[,] map2 = new int[132, 156]; + int[,] island = new int[256, 256]; + int[,] zone = new int[16, 16]; + int[] maxIsland = new int[4]; + List islands = new List(); public Form1() { @@ -341,6 +348,1274 @@ private void saveRom() txtCompare.Text = finalFile; } + private bool randomizeMapv5(Random r1) + { + for (int lnI = 0; lnI < 256; lnI++) + for (int lnJ = 0; lnJ < 256; lnJ++) + { + if (chkSmallMap.Checked && (lnI >= 128 || lnJ >= 128)) + { + map[lnI, lnJ] = 0x06; + island[lnI, lnJ] = 200; + } + else + { + map[lnI, lnJ] = 0x00; + island[lnI, lnJ] = -1; + } + } + + for (int lnI = 0; lnI < 132; lnI++) + for (int lnJ = 0; lnJ < 156; lnJ++) + map2[lnI, lnJ] = 0x00; + + + int islandSize = (r1.Next() % 20000) + 30000; // (lnI == 0 ? 1500 : lnI == 1 ? 2500 : lnI == 2 ? 1500 : lnI == 3 ? 1500 : lnI == 4 ? 5000 : 5000); + int islandSize2 = islandSize * 3 / 10; // For Tantegel + islandSize /= (chkSmallMap.Checked ? 4 : 1); + + // Set up three special zones. Zone 1000 = 25 squares and has Cannock stuff. Zone 2000 = 30 squares and has Moonbrooke stuff. + // Zone 3000 = 48 squares and has Hargon stuff. It will be surrounded by eight tiles of mountains. + // This takes up 94 / 256 of the total squares available. + + bool zonesCreated = false; + while (!zonesCreated) + { + zone = new int[16, 16]; + if (createZone(3000, 1, false, r1) && createZone(1000, 20, false, r1) && createZone(2000, 40, false, r1)) + zonesCreated = true; + } + + markZoneSides(); + generateZoneMap(1000, false, islandSize * 20 / 256, r1); + generateZoneMap(2000, false, islandSize * 40 / 256, r1); + generateZoneMap(0, false, islandSize * 195 / 256, r1); + generateZoneMap(-1000, false, islandSize2, r1); // About 31% of the regular map + createBridges(r1); + resetIslands(); + + // We should mark islands and inaccessible land... + int lakeNumber = 256; + + int maxPlots = 0; + int maxLake = 0; + for (int lnI = 0; lnI < 256; lnI++) + for (int lnJ = 0; lnJ < 256; lnJ++) + { + if (island[lnI, lnJ] == -1) + { + int plots = lakePlot(lakeNumber, lnI, lnJ); + if (plots > maxPlots) + { + maxPlots = plots; + maxLake = lakeNumber; + } + lakeNumber++; + } + } + + // Establish Aliahan location + bool midenOK = false; + int[] midenX = new int[4]; + int[] midenY = new int[4]; + while (!midenOK) + { + midenX[1] = r1.Next() % (chkSmallMap.Checked ? 122 : 250); + midenY[1] = r1.Next() % (chkSmallMap.Checked ? 122 : 250); + if (validPlot(midenY[1], midenX[1], 2, 2, new int[] { maxIsland[1] })) + midenOK = true; + } + + // Shrine South Of Romaly + midenOK = false; + while (!midenOK) + { + midenX[2] = r1.Next() % (chkSmallMap.Checked ? 122 : 250); + midenY[2] = r1.Next() % (chkSmallMap.Checked ? 122 : 250); + if (validPlot(midenY[2], midenX[2], 1, 1, new int[] { maxIsland[2] })) + midenOK = true; + } + + // Norud Cave (East) + midenOK = false; + while (!midenOK) + { + midenX[0] = r1.Next() % (chkSmallMap.Checked ? 122 : 250); + midenY[0] = r1.Next() % (chkSmallMap.Checked ? 122 : 250); + if (validPlot(midenY[0], midenX[0], 1, 1, new int[] { maxIsland[0] })) + midenOK = true; + } + + // Tantegel + midenOK = false; + while (!midenOK) + { + midenX[3] = r1.Next() % 156; + midenY[3] = r1.Next() % 132; + if (validPlot(midenY[3], midenX[3], 1, 1, new int[] { -1000 })) + midenOK = true; + } + + + islands.Remove(maxIsland[1]); + islands.Remove(maxIsland[2]); + islands.Remove(maxIsland[3]); + + string[] locTypes = { "C", "C", "C", "C", "S", "X", "T", "C", "C", "V", "T", "T", "T", "X", "T", "T", + "T", "T", "T", "V", "V", "V", "V", "V", "V", "V", "V", "S", "S", "S", "S", "S", + "S", "S", "S", "C", "S", "S", "S", "S", "S", "S", "S", "S", "S", "V", "V", "V", + "V", "V", "V", "C", "V", "V", "V", "V", "V", "V", "V", "P", "W", "W", "W", "W", "W", + "?", "?", "X", "X", "X", "X", "X", "X", "?", "X", "?", "?", "?", "?", "?", "?" }; + + int[] locIslands = { 1, 2, 4, 3, 4, -100, 4, -1, -2, 1, 0, 2, 2, -100, 0, 4, + -1, -1, -1, 4, 2, 4, 4, 4, 4, 4, -1, 1, 4, 4, -100, 4, + 10, 4, 4, 4, 4, 4, 4, 4, -1, -1, -1, 4, 4, 1, 2, 2, + 0, 4, 10, 4, 0, 4, 4, 4, -1, -1, -1, 2, 11, 4, 4, 2, -1, + 4, 2, -100, -100, -100, -100, -100, -100, 2, -100, 4, 2, 1, 1, -1, 4 }; + + for (int lnI = 0; lnI < locTypes.Length; lnI++) + { + int x = 300; + int y = 300; + if (lnI == 0) { x = midenX[1]; y = midenY[1]; } + else if (lnI == 48) { x = midenX[0]; y = midenY[0]; } + else if (lnI == 77) { x = midenX[2]; y = midenY[2]; } + else if (lnI == 7) { x = midenX[3]; y = midenY[3]; } + else if (locIslands[lnI] == -1 || locIslands[lnI] == -2) + { + // Subtract 3 for room + x = r1.Next() % 153; + y = r1.Next() % 129; + } else if (locIslands[lnI] == -100) + { + continue; + } else + { + // Subtract 3 for room + x = r1.Next() % (chkSmallMap.Checked ? 125 : 253); + y = r1.Next() % (chkSmallMap.Checked ? 125 : 253); + } + + // TODO: Ship return points, human return points, bird return points + // If branches on locTypes, possibly a case. + switch(locTypes[lnI]) + { + case "C": + if (validPlot(y, x, 2, 2, (lnI == 0 || lnI == 1 ? new int[] { maxIsland[1] } : lnI == 6 ? new int[] { maxIsland[3] } : islands.ToArray())) && reachable(y, x, (lnI != 0 && lnI != 1), + lnI == 6 ? midenX[3] : midenX[1], lnI == 6 ? midenY[3] : midenY[1], maxLake)) + { + map[y + 0, x + 0] = 0x00; + map[y + 0, x + 1] = 0x12; + map[y + 1, x + 0] = 0x10; + map[y + 1, x + 1] = 0x11; + + int byteToUse = (lnI == 0 ? 0xa28f : lnI == 1 ? 0xa295 : lnI == 2 ? 0xa29b : lnI == 3 ? 0xa2a1 : lnI == 4 ? 0xa2a4 : lnI == 5 ? 0xa2e9 : 0xa2b3); + romData[byteToUse] = (byte)(x + 1); + romData[byteToUse + 1] = (byte)(y + 1); + if (lnI == 5) // Charlock castle, out of order as far as byte sequence is concerned. + { + romData[0xa334] = (byte)(x); + romData[0xa335] = (byte)(y + 1); + } + else + { + romData[byteToUse + 0x7e] = (byte)(x); + romData[byteToUse + 1 + 0x7e] = (byte)(y + 1); + } + if (lnI == 3) + { + // Replace Tantegel music with the zone surrounding Tantegel. + romData[0x3e356] = (byte)((x / 8) * 8); + romData[0x3e35a] = (byte)(((x / 8) + 1) * 8); + romData[0x3e360] = (byte)((y / 8) * 8); + romData[0x3e364] = (byte)(((y / 8) + 1) * 8); + } + + // Return points + if (lnI == 0 || lnI == 1 || lnI == 3 || lnI == 4) + { + int byteMultiplier = lnI - (lnI >= 3 ? 1 : 0); + romData[0xa27a + (3 * byteMultiplier)] = (byte)x; + if (map[y + 2, x] == 0x04) + romData[0xa27a + (3 * byteMultiplier) + 1] = (byte)(y + 2); + else + romData[0xa27a + (3 * byteMultiplier) + 1] = (byte)(y + 1); + shipPlacement(0x1bf84 + (2 * byteMultiplier), y, x, maxLake); + } + } + + break; + case "T": + break; + case "S": + break; + case "V": + break; + case "P": + break; + case "W": + break; + case "X": + continue; + break; + } + } + + // We'll place all of the castles now. + // Midenhall can go anywhere. But Cannock has to be 15-30 squares or less away from there. + // Don't place Hargon's Castle for now. OK, place it for now. But I may change my mind later. + for (int lnI = 0; lnI < 7; lnI++) + { + int x = 300; + int y = 300; + if (lnI == 0) { x = midenX[1]; y = midenY[1]; } + else + { + x = r1.Next() % (chkSmallMap.Checked ? 125 : 253); + y = r1.Next() % (chkSmallMap.Checked ? 125 : 253); + } + + if (validPlot(y, x, 2, 2, (lnI == 0 || lnI == 1 ? new int[] { maxIsland[1] } : lnI == 6 ? new int[] { maxIsland[3] } : islands.ToArray())) && reachable(y, x, (lnI != 0 && lnI != 1), + lnI == 6 ? midenX[3] : midenX[1], lnI == 6 ? midenY[3] : midenY[1], maxLake)) + { + map[y + 0, x + 0] = 0x00; + map[y + 0, x + 1] = 0x12; + map[y + 1, x + 0] = 0x10; + map[y + 1, x + 1] = 0x11; + + int byteToUse = (lnI == 0 ? 0xa28f : lnI == 1 ? 0xa295 : lnI == 2 ? 0xa29b : lnI == 3 ? 0xa2a1 : lnI == 4 ? 0xa2a4 : lnI == 5 ? 0xa2e9 : 0xa2b3); + romData[byteToUse] = (byte)(x + 1); + romData[byteToUse + 1] = (byte)(y + 1); + if (lnI == 5) // Charlock castle, out of order as far as byte sequence is concerned. + { + romData[0xa334] = (byte)(x); + romData[0xa335] = (byte)(y + 1); + } + else + { + romData[byteToUse + 0x7e] = (byte)(x); + romData[byteToUse + 1 + 0x7e] = (byte)(y + 1); + } + if (lnI == 3) + { + // Replace Tantegel music with the zone surrounding Tantegel. + romData[0x3e356] = (byte)((x / 8) * 8); + romData[0x3e35a] = (byte)(((x / 8) + 1) * 8); + romData[0x3e360] = (byte)((y / 8) * 8); + romData[0x3e364] = (byte)(((y / 8) + 1) * 8); + } + //if (lnI == 6) + //{ + // romData[0xa301] = (byte)(x); + // romData[0xa302] = (byte)(y + 1); + // romData[0xfd95] = 0x80; + // romData[0xfd96] = 0x0d; + // romData[0xfd97] = 0x18; + //} + + // Return points + if (lnI == 0 || lnI == 1 || lnI == 3 || lnI == 4) + { + int byteMultiplier = lnI - (lnI >= 3 ? 1 : 0); + romData[0xa27a + (3 * byteMultiplier)] = (byte)x; + if (map[y + 2, x] == 0x04) + romData[0xa27a + (3 * byteMultiplier) + 1] = (byte)(y + 2); + else + romData[0xa27a + (3 * byteMultiplier) + 1] = (byte)(y + 1); + shipPlacement(0x1bf84 + (2 * byteMultiplier), y, x, maxLake); + } + } + else + lnI--; + } + + // Now we'll place all of the towns now. + // Leftwyne must be 15/30 squares or less away from Midenhall. Hamlin has to be 30/60 squares or less away from Midenhall. + for (int lnI = 0; lnI < 7; lnI++) + { + //if (lnI == 6) lnI = lnI; + int x = r1.Next() % (chkSmallMap.Checked ? 125 : 253); + int y = r1.Next() % (chkSmallMap.Checked ? 125 : 253); + + if (validPlot(y, x, 1, 2, (lnI == 0 ? new int[] { maxIsland[1] } : lnI == 1 ? new int[] { maxIsland[2] } : lnI == 2 ? new int[] { maxIsland[0] } : islands.ToArray())) + && reachable(y, x, (lnI != 0 && lnI != 1 && lnI != 2), (lnI == 1 ? midenX[2] : lnI == 2 ? midenX[0] : midenX[1]), (lnI == 1 ? midenY[2] : lnI == 2 ? midenY[0] : midenY[1]), maxLake)) + { + map[y, x + 0] = 0x0e; + map[y, x + 1] = 0x0f; + + int byteToUse2 = (lnI == 0 ? 0xa292 : lnI == 1 ? 0xa298 : lnI == 2 ? 0xa29e : lnI == 3 ? 0xa2a7 : lnI == 4 ? 0xa2aa : lnI == 5 ? 0xa2ad : 0xa2b0); + romData[byteToUse2] = (byte)(x + 1); + romData[byteToUse2 + 1] = (byte)(y); + romData[byteToUse2 + 0x7e] = (byte)(x); + romData[byteToUse2 + 1 + 0x7e] = (byte)(y); + + // Return points + if (lnI == 2) + shipPlacement(0x3d6be, y, x, maxLake); + // Return points + else if (lnI == 1) + { + romData[0xa27a + 18] = (byte)(x); + if (map[y + 1, x] == 0x04) + romData[0xa27a + 19] = (byte)(y); + else + romData[0xa27a + 19] = (byte)(y + 1); + shipPlacement(0x1bf84 + 12, y, x, maxLake); + } + else if (lnI == 6) + { + romData[0xa27a + 12] = (byte)(x); + if (map[y + 1, x] == 0x04) + romData[0xa27a + 13] = (byte)(y); + else + romData[0xa27a + 13] = (byte)(y + 1); + // We are placing the ship in both Beran and the Rhone Shrine at the same time. + shipPlacement(0x1bf84 + 8, y, x, maxLake); + shipPlacement(0x1bf84 + 10, y, x, maxLake); + } + } + else + lnI--; + } + + // Then the monoliths. + // All of these can go anywhere. + for (int lnI = 0; lnI < 13; lnI++) + { + if ((lnI == 0) && chkSmallMap.Checked) continue; // Remove the Midenhall Island shrine which is of no importance. + // lnI == 1 is probably the Cannock shrine... want to put that in Zone 1... + + int x = r1.Next() % (chkSmallMap.Checked ? 125 : 253); + int y = r1.Next() % (chkSmallMap.Checked ? 125 : 253); + if (lnI == 6) + { + x = midenX[3]; + y = midenY[3]; + } + else if (lnI == 7) + { + x = midenX[0]; + y = midenY[0]; + } + + if (validPlot(y, x, 1, 1, (lnI == 1 || lnI == 12 ? new int[] { maxIsland[1] } : lnI == 6 ? new int[] { maxIsland[3] } : lnI == 7 ? new int[] { maxIsland[0] } : lnI == 8 ? new int[] { maxIsland[2] } : islands.ToArray())) + && reachable(y, x, (lnI != 1 && lnI != 12 && lnI != 7 && lnI != 6), lnI == 6 ? midenX[3] : lnI == 7 ? midenX[0] : lnI == 8 ? midenX[2] : midenX[1], + lnI == 6 ? midenY[3] : lnI == 7 ? midenY[0] : lnI == 8 ? midenY[2] : midenY[1], maxLake)) + { + map[y, x] = 0x0b; + + int byteToUse2 = 0xa2b6 + (lnI * 3); // (lnI < 11 ? 0xa2b6 + (lnI * 3) : 0xa2da); + romData[byteToUse2] = (byte)(x); + romData[byteToUse2 + 1] = (byte)(y); + + // Return points + if (lnI == 6) + { + romData[0xa27a + 15] = (byte)(x); + if (map[y + 1, x] == 0x04) + romData[0xa27a + 16] = (byte)(y); + else + romData[0xa27a + 16] = (byte)(y + 1); + } + } + else + lnI--; + } + + // Then the caves. + // Make sure the lake and spring cave is no more than 16/32 squares outside of Midenhall + for (int lnI = 0; lnI < 9; lnI++) + { + int x = 300; + int y = 300; + if (lnI == 6) + { + x = midenX[2]; + y = midenY[2]; + } + else + { + x = r1.Next() % (chkSmallMap.Checked ? 125 : 253); + y = r1.Next() % (chkSmallMap.Checked ? 125 : 253); + } + + if (validPlot(y, x, 1, 1, (lnI == 0 || lnI == 6 ? new int[] { maxIsland[2] } : lnI == 1 || lnI == 5 ? new int[] { maxIsland[1] } : lnI == 7 ? new int[] { maxIsland[3] } : islands.ToArray())) + && reachable(y, x, (lnI != 0 && lnI != 1 && lnI != 5 && lnI != 6 && lnI != 7), + lnI == 0 || lnI == 6 ? midenX[2] : lnI == 7 ? midenX[3] : midenX[1], lnI == 0 || lnI == 6 ? midenY[2] : lnI == 7 ? midenY[3] : midenY[1], maxLake)) + { + map[y, x] = 0x0c; + + int byteToUse2 = (lnI == 0 ? 0xa2dd : lnI == 1 ? 0xa2e0 : lnI == 2 ? 0xa2e3 : lnI == 3 ? 0xa2ef : lnI == 4 ? 0xa2fb : lnI == 5 ? 0xa2fe : lnI == 6 ? 0xa304 : lnI == 7 ? 0xa307 : 0xa30a); + romData[byteToUse2] = (byte)x; + romData[byteToUse2 + 1] = (byte)(y); + } + else + lnI--; + } + + // Finally the towers + // Need to make sure the wind tower is no more than 14/28 squares outside of Midenhall + for (int lnI = 0; lnI < 5; lnI++) + { + if ((lnI == 3 || lnI == 4) && chkSmallMap.Checked) continue; // Remove the Dragon's Horns from the small map + int x = r1.Next() % (chkSmallMap.Checked ? 122 : 250); + int y = r1.Next() % (chkSmallMap.Checked ? 122 : 250); + + // Need to make sure it's a valid 7x7 plot due to dropping with the Cloak of wind... + if (validPlot(y, x, 3, 3, (lnI == 0 ? new int[] { maxIsland[2] } : islands.ToArray())) + && reachable(y, x, (lnI != 0), lnI == 0 ? midenX[2] : midenX[1], lnI == 0 ? midenY[2] : midenY[1], maxLake)) + { + map[y + 3, x + 3] = 0x0a; + + int byteToUse2 = (lnI == 0 ? 0xa2e6 : lnI == 1 ? 0xa2ec : lnI == 2 ? 0xa2f2 : lnI == 3 ? 0xa2f5 : 0xa2f8); + romData[byteToUse2] = (byte)(x + 3); + romData[byteToUse2 + 1] = (byte)(y + 3); + } + else + lnI--; + } + + int[,] monsterZones = new int[16, 16]; + for (int lnI = 0; lnI < 16; lnI++) + for (int lnJ = 0; lnJ < 16; lnJ++) + monsterZones[lnI, lnJ] = 0xff; + + int midenMZX = midenX[1] / 8; + int midenMZY = midenY[1] / 8; + + for (int mzX = 0; mzX < 16; mzX++) + for (int mzY = 0; mzY < 16; mzY++) + { + if (zone[mzX, mzY] / 1000 == 1) + { + if (Math.Abs(midenMZX - mzX) == 0 && Math.Abs(midenMZY - mzY) == 0) + monsterZones[mzY, mzX] = 0; + else if (Math.Abs(midenMZX - mzX) <= 1 && Math.Abs(midenMZY - mzY) <= 1) + monsterZones[mzY, mzX] = 2; + else if (Math.Abs(midenMZX - mzX) <= 1 || Math.Abs(midenMZY - mzY) <= 1) + monsterZones[mzY, mzX] = 1; + else if (Math.Abs(midenMZX - mzX) <= 2 || Math.Abs(midenMZY - mzY) <= 2) + monsterZones[mzY, mzX] = r1.Next() % 9; + else + monsterZones[mzY, mzX] = r1.Next() % 18; + } + else if (zone[mzX, mzY] / 1000 == 2) + monsterZones[mzY, mzX] = r1.Next() % 5 + 0x0d; + else if (zone[mzX, mzY] / 1000 == 3) + monsterZones[mzY, mzX] = r1.Next() % 2 + 0x32; + else + { + while (monsterZones[mzY, mzX] > 0x27 || (monsterZones[mzY, mzX] >= 0x1c && monsterZones[mzY, mzX] <= 0x1f)) + monsterZones[mzY, mzX] = r1.Next() % 19 + 0x15; + if (monsterZones[mzY, mzX] == 0x26) monsterZones[mzY, mzX] = 0x39; + if (monsterZones[mzY, mzX] == 0x27) monsterZones[mzY, mzX] = 0x3b; + } + + monsterZones[mzY, mzX] += (64 * (r1.Next() % 4)); + } + + // Now let's enter all of this into the ROM... + int lnPointer = 0x9f97; + + for (int lnI = 0; lnI <= 256; lnI++) // <---- There is a final pointer for lnI = 256, probably indicating the conclusion of the map. + { + romData[0xdda5 + (lnI * 2)] = (byte)(lnPointer % 256); + romData[0xdda6 + (lnI * 2)] = (byte)(lnPointer / 256); + + int lnJ = 0; + while (lnI < 256 && lnJ < 256) + { + if (map[lnI, lnJ] >= 1 && map[lnI, lnJ] <= 7) + { + int tileNumber = 0; + int numberToMatch = map[lnI, lnJ]; + while (lnJ < 256 && tileNumber < 32 && map[lnI, lnJ] == numberToMatch && tileNumber < 32) + { + tileNumber++; + lnJ++; + } + romData[lnPointer + 0x4010] = (byte)((0x20 * numberToMatch) + (tileNumber - 1)); + lnPointer++; + } + else + { + romData[lnPointer + 0x4010] = (byte)map[lnI, lnJ]; + lnPointer++; + lnJ++; + } + } + } + //lnPointer = lnPointer; + if (lnPointer >= 0xb8f7) + { + MessageBox.Show("WARNING: The map might have taken too much ROM space..."); + // Might have to compress further to remove one byte stuff + // Must compress the map by getting rid of further 1 byte lakes + } + + // Ensure monster zones are 8x8 + if (chkSmallMap.Checked) + { + romData[0x10083] = 0x85; + romData[0x10084] = 0xd5; + romData[0x10085] = 0xa5; + romData[0x10086] = 0x17; + romData[0x10087] = 0x29; + romData[0x10088] = 0x78; + romData[0x10089] = 0x0a; + } + + // Enter monster zones + for (int lnI = 0; lnI < 16; lnI++) + for (int lnJ = 0; lnJ < 16; lnJ++) + { + if (monsterZones[lnI, lnJ] == 0xff) + monsterZones[lnI, lnJ] = (r1.Next() % 60) + ((r1.Next() % 4) * 64); + romData[0x103d6 + (lnI * 16) + lnJ] = (byte)monsterZones[lnI, lnJ]; + } + + return true; + } + + private void markZoneSides() + { + for (int x = 0; x < 16; x++) + for (int y = 0; y < 16; y++) + { + // 1 = north, 2 = east, 4 = south, 8 = west + if (y == 0) zone[x, y] += 1; + else if (zone[x, y - 1] / 1000 != zone[x, y] / 1000) zone[x, y] += 1; + + if (x == 15) zone[x, y] += 2; + else if (zone[x + 1, y] / 1000 != zone[x, y] / 1000) zone[x, y] += 2; + + if (y == 15) zone[x, y] += 4; + else if (zone[x, y + 1] / 1000 != zone[x, y] / 1000) zone[x, y] += 4; + + if (x == 0) zone[x, y] += 8; + else if (zone[x - 1, y] / 1000 != zone[x, y] / 1000) zone[x, y] += 8; + } + } + + private void generateZoneMap(int zoneToUse, bool mountains, int islandSize, Random r1) + { + int xMax = (zoneToUse != -1000 ? 128 : 156) - 4; + int yMax = (zoneToUse != -1000 ? 128 : 132) - 4; + + if (mountains) + for (int x = 0; x < 16; x++) + for (int y = 0; y < 16; y++) + if (zone[x, y] / 1000 == zoneToUse / 1000 && zone[x, y] % 1000 > 0) + for (int x2 = x * 8; x2 < (x * 8) + 8; x2++) + for (int y2 = y * 8; y2 < (y * 8) + 8; y2++) + map[y2, x2] = 0x06; + + int[] terrainTypes = { 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 7 }; + + for (int lnI = 0; lnI < 100; lnI++) + { + int swapper1 = r1.Next() % terrainTypes.Length; + int swapper2 = r1.Next() % terrainTypes.Length; + int temp = terrainTypes[swapper1]; + terrainTypes[swapper1] = terrainTypes[swapper2]; + terrainTypes[swapper2] = temp; + } + + int lnMarker = -1; + int totalLand = 0; + + while (totalLand < islandSize) + { + lnMarker++; + lnMarker = (lnMarker >= terrainTypes.Length ? 0 : lnMarker); + int sizeToUse = (r1.Next() % 400) + 150; + //if (terrainTypes[lnMarker] == 5) sizeToUse /= 2; + + List points = new List { (r1.Next() % xMax) + 2, (r1.Next() % yMax) + 2 }; + if (validPoint(points[0], points[1], zoneToUse, mountains)) + { + while (sizeToUse > 0) + { + List newPoints = new List(); + for (int lnI = 0; lnI < points.Count; lnI += 2) + { + int lnX = points[lnI]; + int lnY = points[lnI + 1]; + + //if (lnX <= 1 || lnY <= 1 || lnY >= 126 || lnY >= 126) continue; + + int direction = (r1.Next() % 16); + if (zoneToUse != -1000) + map[lnY, lnX] = terrainTypes[lnMarker]; + else + map2[lnY, lnX] = terrainTypes[lnMarker]; + island[lnY, lnX] = zoneToUse; + // 1 = North, 2 = east, 4 = south, 8 = west + if (direction % 8 >= 4 && lnY <= 125) + { + if (validPoint(lnX, lnY + 1, zoneToUse, mountains)) + { + if (zoneToUse == -1000) + { + if (map2[lnY + 1, lnX] == 4) + totalLand++; + map2[lnY + 1, lnX] = terrainTypes[lnMarker]; + } + else + { + if (map[lnY + 1, lnX] == 4) + totalLand++; + map[lnY + 1, lnX] = terrainTypes[lnMarker]; + island[lnY + 1, lnX] = zoneToUse; + } + + newPoints.Add(lnX); + newPoints.Add(lnY + 1); + } + } + if (direction % 2 >= 1 && lnY >= 2) + { + if (validPoint(lnX, lnY - 1, zoneToUse, mountains)) + { + if (zoneToUse == -1000) + { + if (map2[lnY - 1, lnX] == 4) + totalLand++; + map2[lnY - 1, lnX] = terrainTypes[lnMarker]; + } + else + { + if (map[lnY - 1, lnX] == 4) + totalLand++; + map[lnY - 1, lnX] = terrainTypes[lnMarker]; + island[lnY - 1, lnX] = zoneToUse; + } + newPoints.Add(lnX); + newPoints.Add(lnY - 1); + } + } + if (direction % 4 >= 2 && lnX <= 125) + { + if (validPoint(lnX + 1, lnY, zoneToUse, mountains)) + { + if (zoneToUse == -1000) + { + if (map2[lnY, lnX + 1] == 4) + totalLand++; + map2[lnY, lnX + 1] = terrainTypes[lnMarker]; + } + else + { + if (map[lnY, lnX + 1] == 4) + totalLand++; + map[lnY, lnX + 1] = terrainTypes[lnMarker]; + island[lnY, lnX + 1] = zoneToUse; + } + newPoints.Add(lnX + 1); + newPoints.Add(lnY); + } + } + if (direction % 16 >= 8 && lnX >= 2) + { + if (validPoint(lnX - 1, lnY, zoneToUse, mountains)) + { + if (zoneToUse == -1000) + { + if (map2[lnY, lnX - 1] == 4) + totalLand++; + map2[lnY, lnX - 1] = terrainTypes[lnMarker]; + } else + { + if (map[lnY, lnX - 1] == 4) + totalLand++; + map[lnY, lnX - 1] = terrainTypes[lnMarker]; + island[lnY, lnX - 1] = zoneToUse; + } + newPoints.Add(lnX - 1); + newPoints.Add(lnY); + } + } + + int takeaway = 1 + (direction > 8 ? 1 : 0) + (direction % 8 > 4 ? 1 : 0) + (direction % 4 > 2 ? 1 : 0) + (direction % 2 > 1 ? 1 : 0); + sizeToUse--; + } + if (sizeToUse <= 0) break; + if (newPoints.Count != 0) + points = newPoints; + } + } + } + + // Fill in water... + List land = new List { 1, 2, 3, 4, 5, 6, 7 }; + if (zoneToUse != -1000) + { + for (int lnY = 0; lnY < 128; lnY++) + for (int lnX = 0; lnX < 125; lnX++) + { + if (island[lnY, lnX] == zoneToUse && island[lnY, lnX + 1] == zoneToUse && island[lnY, lnX + 2] == zoneToUse && island[lnY, lnX + 3] == zoneToUse) + { + if (map[lnY, lnX] == map[lnY, lnX + 2] && map[lnY, lnX] != map[lnY, lnX + 1]) { map[lnY, lnX + 1] = map[lnY, lnX]; island[lnY, lnX + 1] = island[lnY, lnX]; } + if (lnX < 124 && land.Contains(map[lnY, lnX]) && !land.Contains(map[lnY, lnX + 1]) && !land.Contains(map[lnY, lnX + 2]) && land.Contains(map[lnY, lnX + 3])) + { + map[lnY, lnX + 1] = map[lnY, lnX]; + map[lnY, lnX + 2] = map[lnY, lnX + 3]; + island[lnY, lnX + 1] = island[lnY, lnX]; + island[lnY, lnX + 2] = island[lnY, lnX + 3]; + } + } + } + } else + { + for (int lnY = 0; lnY < 132; lnY++) + for (int lnX = 0; lnX < 153; lnX++) + { + if (map2[lnY, lnX] == map2[lnY, lnX + 2] && map2[lnY, lnX] != map2[lnY, lnX + 1]) { map2[lnY, lnX + 1] = map2[lnY, lnX]; } + if (lnX < 124 && land.Contains(map2[lnY, lnX]) && !land.Contains(map2[lnY, lnX + 1]) && !land.Contains(map2[lnY, lnX + 2]) && land.Contains(map2[lnY, lnX + 3])) + { + map2[lnY, lnX + 1] = map2[lnY, lnX]; + map2[lnY, lnX + 2] = map2[lnY, lnX + 3]; + } + } + } + + + markIslands(zoneToUse); + } + + private bool validPoint(int x, int y, int zoneToUse, bool mountains = false) + { + // Establish zone + int zoneX = x / 8; + int zoneY = y / 8; + int zoneSides = zone[zoneX, zoneY] % 1000; + if (zone[zoneX, zoneY] % 1000 != 0 && mountains) return false; + if (zone[zoneX, zoneY] / 1000 != zoneToUse / 1000) return false; + // 1 = north, 2 = east, 4 = south, 8 = west + if (y % 8 == 0 && zoneSides % 2 == 1) return false; + if (x % 8 == 7 && zoneSides % 4 >= 2) return false; + if (y % 8 == 7 && zoneSides % 8 >= 4) return false; + if (x % 8 == 0 && zoneSides % 16 >= 8) return false; + + return true; + } + + private void markIslands(int zoneToUse) + { + // We should mark islands and inaccessible land... + int landNumber = zoneToUse + 1; + int maxLand = -2; + + int maxLandPlots = 0; + int lastIsland = 0; + for (int lnI = 0; lnI < 256; lnI++) + for (int lnJ = 0; lnJ < 256; lnJ++) + { + if (island[lnI, lnJ] == zoneToUse && map[lnI, lnJ] != 0x05) + { + int plots = landPlot(landNumber, lnI, lnJ, zoneToUse); + if (plots > maxLandPlots) + { + maxLandPlots = plots; + maxLand = landNumber; + + } + islands.Add(landNumber); + landNumber++; + + lastIsland = island[lnI, lnJ]; + } + } + + maxIsland[zoneToUse / 1000] = maxLand; + } + + private void resetIslands() + { + for (int y = 0; y < 256; y++) + for (int x = 0; x < 256; x++) + { + if (island[y, x] != 200 && island[y, x] != -1) + { + island[y, x] /= 1000; + island[y, x] *= 1000; + } + } + + islands.Clear(); + + markIslands(3000); + markIslands(1000); + markIslands(2000); + markIslands(0); + } + + private void createBridges(Random r1) + { + List bridgePossible = new List(); + List islandPossible = new List(); + // Create bridges for points two spaces or less from two distinctly numbered islands. Extend islands if there is interference. + for (int y = 1; y < 252; y++) + for (int x = 1; x < 252; x++) + { + if (y == 78 && x == 3) map[y, x] = map[y, x]; + if (map[y, x] == 0x05 || map[y, x] == 0x04) continue; + + for (int lnI = 2; lnI <= 4; lnI++) + { + if (island[y, x] != island[y + lnI, x] && island[y, x] / 1000 == island[y + lnI, x] / 1000 && map[y + lnI, x] != 0x04 && map[y + lnI, x] != 0x05) + { + bool fail = false; + for (int lnJ = 1; lnJ < lnI; lnJ++) + { + if (map[y + lnJ, x] == 0x04) + { + map[y + lnJ, x - 1] = 0x04; map[y + lnJ, x + 1] = 0x04; + island[y + lnJ, x - 1] = 0x04; island[y + lnJ, x + 1] = 0x04; + } + else + { + fail = true; + } + //if (map[y + lnJ, x] != 0x04 || map[y + lnJ, x + 1] != 0x04 || map[y + lnJ, x - 1] != 0x04) fail = true; + } + if (!fail) + { + bridgePossible.Add(new BridgeList(x, y, true, lnI, island[y, x], island[y + lnI, x])); + if (islandPossible.Where(c => c.island1 == island[y, x] && c.island2 == island[y + lnI, x]).Count() == 0) + islandPossible.Add(new islandLinks(island[y, x], island[y + lnI, x])); + } + } + + if (island[y, x] != island[y, x + lnI] && island[y, x] / 1000 == island[y, x + lnI] / 1000 && map[y, x + lnI] != 0x04 && map[y, x + lnI] != 0x05) + { + bool fail = false; + for (int lnJ = 1; lnJ < lnI; lnJ++) + { + if (map[y, x + lnJ] == 0x04) + { + map[y - 1, x + lnJ] = 0x04; map[y + 1, x + lnJ] = 0x04; + island[y - 1, x + lnJ] = 200; island[y + 1, x + lnJ] = 200; + } + else + { + fail = true; + } + + //if (map[y, x + lnJ] != 0x04 || map[y + 1, x + lnJ] != 0x04 || map[y - 1, x + lnJ] != 0x04) fail = true; + } + if (!fail) + { + bridgePossible.Add(new BridgeList(x, y, false, lnI, island[y, x], island[y, x + lnI])); + if (islandPossible.Where(c => c.island1 == island[y, x] && c.island2 == island[y, x + lnI]).Count() == 0) + islandPossible.Add(new islandLinks(island[y, x], island[y, x + lnI])); + } + } + } + } + + foreach (islandLinks islandLink in islandPossible) + { + List test = bridgePossible.Where(c => c.island1 == islandLink.island1 && c.island2 == islandLink.island2).ToList(); + // Choose one bridge out of the possibilities + BridgeList bridgeToBuild = test[r1.Next() % test.Count]; + for (int lnI = 1; lnI <= bridgeToBuild.distance - 1; lnI++) + { + if (bridgeToBuild.south) + { + map[bridgeToBuild.y + lnI, bridgeToBuild.x] = 0x0d; + island[bridgeToBuild.y + lnI, bridgeToBuild.x] = bridgeToBuild.island1; + } + else + { + map[bridgeToBuild.y, bridgeToBuild.x + lnI] = 0x09; + island[bridgeToBuild.y, bridgeToBuild.x + lnI] = bridgeToBuild.island1; + } + } + } + } + + private class islandLinks + { + public int island1; + public int island2; + + public islandLinks(int pI1, int pI2) + { + island1 = pI1; island2 = pI2; + } + } + + private class BridgeList + { + public int x; + public int y; + public bool south; + public int distance; + public int island1; + public int island2; + + public BridgeList(int pX, int pY, bool pS, int pDist, int pI1, int pI2) + { + x = pX; y = pY; south = pS; distance = pDist; island1 = pI1; island2 = pI2; + } + } + + private bool createZone(int zoneNumber, int size, bool rectangle, Random r1) + { + int tries = 1000; + bool firstZone = true; + + if (!rectangle) + { + while (size > 0 && tries > 0) + { + int x = r1.Next() % 16; + int y = r1.Next() % 16; + int minX = x, maxX = x, minY = y, maxY = y; + if (!firstZone && zone[x, y] != zoneNumber) + { + continue; + } + if (firstZone) + { + firstZone = false; + zone[x, y] = zoneNumber; + } + + tries--; + int direction = r1.Next() % 16; + int totalDirections = 0; + if (direction % 16 >= 8) totalDirections++; + if (direction % 8 >= 4) totalDirections++; + if (direction % 4 >= 2) totalDirections++; + if (direction % 2 >= 1) totalDirections++; + if (totalDirections > size) continue; + + // 1 = north, 2 = east, 4 = south, 8 = west + if (direction % 16 >= 8 && x != 0 && zone[x - 1, y] == 0 && (minX <= (x - 1) || maxX - minX <= 11)) + { + zone[x - 1, y] = zoneNumber; + minX = (x - 1 < minX ? x - 1 : minX); + size--; + tries = 100; + } + if (direction % 8 >= 4 && y != 15 && zone[x, y + 1] == 0 && (maxY >= (y + 1) || maxY - minY <= 11)) + { + zone[x, y + 1] = zoneNumber; + maxY = (y + 1 > maxY ? y + 1 : maxY); + size--; + tries = 100; + } + if (direction % 4 >= 2 && x != 15 && zone[x + 1, y] == 0 && (minX >= (x + 1) || maxX - minX <= 11)) + { + zone[x + 1, y] = zoneNumber; + maxX = (x + 1 > maxX ? x + 1 : maxX); + size--; + tries = 100; + } + if (direction % 2 >= 1 && y != 0 && zone[x, y - 1] == 0 && (minY <= (y - 1) || maxY - minY <= 11)) + { + zone[x, y - 1] = zoneNumber; + minY = (y - 1 < minY ? y - 1 : minY); + size--; + tries = 100; + } + } + return (size <= 0); + } + else + { + int minMeasurement = (int)Math.Ceiling((double)size / 12); + int maxMeasurement = (int)Math.Ceiling((double)size / minMeasurement); + + int length = ((r1.Next() % (maxMeasurement - minMeasurement)) + minMeasurement); + int width = size / length; + + int x = (r1.Next() % (16 - length)); + int y = (r1.Next() % (16 - width)); + + for (int i = x; i < x + length; i++) + for (int j = y; j < y + width; j++) + zone[i, j] = zoneNumber; + + // Snow definition + romData[0x3e2b6] = (byte)(y * 8); + romData[0x3e2ba] = (byte)((y + width) * 8); + romData[0x3e2ac] = (byte)(x * 8); + romData[0x3e2b0] = (byte)((x + length) * 8); + + // Tantegel definition - TODO: Find romData location, then change so it's on an 8x8 grid around Tantegel + //romData[0x3e2b6] = (byte)(y * 8); + //romData[0x3e2ba] = (byte)((y + width) * 8); + //romData[0x3e2ac] = (byte)(x * 8); + //romData[0x3e2b0] = (byte)((x + length) * 8); + + return true; + } + } + + private bool reachable(int startY, int startX, bool water, int finishX, int finishY, int maxLake) + { + int x = startX; + int y = startY; + + List validPlots = new List { 0, 1, 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 }; + if (water) validPlots.Add(4); + + bool first = true; + List toPlot = new List(); + bool[,] plotted = new bool[256, 256]; + + while (first || toPlot.Count != 0) + { + if (!first) + { + y = toPlot[0]; + toPlot.RemoveAt(0); + x = toPlot[0]; + toPlot.RemoveAt(0); + } + else + { + first = false; + } + + for (int dir = 0; dir < 5; dir++) + { + int dirX = (dir == 4 ? x - 1 : dir == 2 ? x + 1 : x); + dirX = (dirX == 256 ? 0 : dirX == -1 ? 255 : dirX); + int dirY = (dir == 1 ? y - 1 : dir == 3 ? y + 1 : y); + dirY = (dirY == 256 ? 0 : dirY == -1 ? 255 : dirY); + + if (validPlots.Contains(map[dirY, dirX]) && (map[dirY, dirX] != 4 || island[dirY, dirX] == maxLake)) + { + if (dir != 0 && plotted[dirY, dirX] == false) + { + if (finishX == dirX && finishY == dirY) + return true; + toPlot.Add(dirY); + toPlot.Add(dirX); + plotted[dirY, dirX] = true; + } + } + } + } + + return false; + } + + private int landPlot(int landNumber, int y, int x, int zoneToUse = 0) + { + bool first = true; + List toPlot = new List(); + int plots = 1; + while (first || toPlot.Count != 0) + { + if (!first) + { + y = toPlot[0]; + toPlot.RemoveAt(0); + x = toPlot[0]; + toPlot.RemoveAt(0); + } + else + { + first = false; + } + + for (int dir = 0; dir < 5; dir++) + { + int dirX = (dir == 4 ? x - 1 : dir == 2 ? x + 1 : x); + dirX = (dirX == 256 ? 0 : dirX == -1 ? 255 : dirX); + int dirY = (dir == 1 ? y - 1 : dir == 3 ? y + 1 : y); + dirY = (dirY == 256 ? 0 : dirY == -1 ? 255 : dirY); + + if (island[dirY, dirX] == zoneToUse) + { + plots++; + island[dirY, dirX] = landNumber; + + if (dir != 0) + { + toPlot.Add(dirY); + toPlot.Add(dirX); + } + } + } + } + + return plots; + } + + private bool validPlot(int y, int x, int height, int width, int[] legalIsland) + { + //y++; + //x++; + for (int lnI = 0; lnI < height; lnI++) + for (int lnJ = 0; lnJ < width; lnJ++) + { + if (y + lnI >= (chkSmallMap.Checked ? 128 : 256) || x + lnJ >= (chkSmallMap.Checked ? 128 : 256)) return false; + + int legalY = (y + lnI >= 256 ? y - 256 + lnI : y + lnI); + int legalX = (x + lnJ >= 256 ? x - 256 + lnJ : x + lnJ); + + bool ok = false; + for (int lnK = 0; lnK < legalIsland.Length; lnK++) + if (island[legalY, legalX] == legalIsland[lnK]) + ok = true; + if (!ok) return false; + // map[legalY, legalX] == 0x04 || + if (map[legalY, legalX] == 0x00 || map[legalY, legalX] == 0x05 || map[legalY, legalX] == 0x0a || map[legalY, legalX] == 0x0b || map[legalY, legalX] == 0x0c || + map[legalY, legalX] == 0x0e || map[legalY, legalX] == 0x0f || map[legalY, legalX] == 0x10 || map[legalY, legalX] == 0x11 || map[legalY, legalX] == 0x12 || map[legalY, legalX] == 0x13) + return false; + } + return true; + } + + private int lakePlot(int lakeNumber, int y, int x, bool fill = false, int islandNumber = -1) + { + bool first = true; + List toPlot = new List(); + int plots = 1; + //if (islandNumber >= 0) plots = 1; + while (first || toPlot.Count != 0) + { + if (!first) + { + y = toPlot[0]; + toPlot.RemoveAt(0); + x = toPlot[0]; + toPlot.RemoveAt(0); + } + else + { + if (fill) + map[y, x] = (islandNumber == 0 ? 0x01 : islandNumber == 1 ? 0x06 : islandNumber == 2 ? 0x03 : islandNumber == 3 ? 0x02 : islandNumber == 4 ? 0x07 : 0x05); + first = false; + } + + for (int dir = 0; dir < 5; dir++) + { + int dirX = (dir == 4 ? x - 1 : dir == 2 ? x + 1 : x); + dirX = (dirX == 256 ? 0 : dirX == -1 ? 255 : dirX); + int dirY = (dir == 1 ? y - 1 : dir == 3 ? y + 1 : y); + dirY = (dirY == 256 ? 0 : dirY == -1 ? 255 : dirY); + + if (island[dirY, dirX] == -1 || (island[dirY, dirX] == lakeNumber && fill)) + { + plots++; + island[dirY, dirX] = (fill ? islandNumber : lakeNumber); + if (fill) + map[dirY, dirX] = (islandNumber == 0 ? 0x01 : islandNumber == 1 ? 0x06 : islandNumber == 2 ? 0x03 : islandNumber == 3 ? 0x02 : islandNumber == 4 ? 0x07 : 0x05); + + if (dir != 0) + { + toPlot.Add(dirY); + toPlot.Add(dirX); + } + //plots += lakePlot(lakeNumber, y, x, fill); + } + } + } + + return plots; + } + + private void shipPlacement(int byteToUse, int top, int left, int maxLake = 0) + { + int minDirection = -99; + int minDistance = 999; + int finalX = 0; + int finalY = 0; + int distance = 0; + int lnJ = top; + int lnK = left; + for (int lnI = 0; lnI < 4; lnI++) + { + lnJ = top; + lnK = left; + if (lnI == 0) + { + while (island[lnJ, lnK] != maxLake && distance < 200) + { + distance++; + lnJ = (lnJ == 0 ? 255 : lnJ - 1); + } + } + else if (lnI == 1) + { + while (island[lnJ, lnK] != maxLake && distance < 200) + { + distance++; + lnJ = (lnJ == 255 ? 0 : lnJ + 1); + } + } + else if (lnI == 2) + { + while (island[lnJ, lnK] != maxLake && distance < 200) + { + distance++; + lnK = (lnK == 255 ? 0 : lnK + 1); + } + } + else + { + while (island[lnJ, lnK] != maxLake && distance < 200) + { + distance++; + lnK = (lnK == 0 ? 255 : lnK - 1); + } + } + if (distance < minDistance) + { + minDistance = distance; + minDirection = lnI; + finalX = lnK; + finalY = lnJ; + } + distance = 0; + } + romData[byteToUse] = (byte)(finalX); + romData[byteToUse + 1] = (byte)(finalY); + if (minDirection == 0) + { + lnJ = (finalY == 255 ? 0 : finalY + 1); + while (map[lnJ, finalX] == 0x05) + { + map[lnJ, finalX] = 0x07; + lnJ = (lnJ == 255 ? 0 : lnJ + 1); + } + } + else if (minDirection == 1) + { + lnJ = (finalY == 0 ? 255 : finalY - 1); + while (map[lnJ, finalX] == 0x05) + { + map[lnJ, finalX] = 0x07; + lnJ = (lnJ == 0 ? 255 : lnJ - 1); + } + } + else if (minDirection == 2) + { + lnK = (finalX == 0 ? 255 : finalX - 1); + while (map[finalY, lnK] == 0x05) + { + map[finalY, lnK] = 0x07; + lnK = (lnK == 0 ? 255 : lnK - 1); + } + } + else + { + lnK = (finalX == 255 ? 0 : finalX + 1); + while (map[finalY, lnK] == 0x05) + { + map[finalY, lnK] = 0x07; + lnK = (lnK == 255 ? 0 : lnK + 1); + } + } + } + private void doubleExp() { //// Divide encounter rates by three, rounding as needed. @@ -1542,7 +2817,14 @@ private void superRandomize() heroL41Gains[lnI, lnJ] += (r1.Next() % difference); } if (optMonsterHeavy.Checked) - heroL41Gains[lnI, lnJ] = (r1.Next() % (lnJ == 2 ? 170 : 220)) + (lnJ == 2 ? 80 : 32); + { + if (lnJ == 2) + heroL41Gains[lnI, lnJ] = (r1.Next() % (lnI == 0 || lnI >= 4 ? 140 : 170)) + (lnI == 0 || lnI >= 4 ? 110 : 80); + else if (lnJ == 0) + heroL41Gains[lnI, lnJ] = (r1.Next() % (lnI == 0 || lnI >= 4 ? 180 : 220)) + (lnI == 0 || lnI >= 4 ? 70 : 30); + else + heroL41Gains[lnI, lnJ] = (r1.Next() % (lnJ == 4 && lnI <= 3 ? 180 : 210) + (lnJ == 4 && lnI <= 3 ? 70 : 40)); + } int[] levels = { 0, 0, 0, 0, 99 }; for (int lnK = 0; lnK < 4; lnK++) diff --git a/DW3Randomizer/bin/Debug/DW3Randomizer.exe b/DW3Randomizer/bin/Debug/DW3Randomizer.exe index 236a8ae09e098481a351e378d18c3c3822dd2d17..2d00fbaf68cae855ee3d23e175b75689f4648010 100644 GIT binary patch literal 81920 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
B(f)6kr|1Zo>+qobVuOQ{7?3o#6$m6X zI2e_jf%cWuhz<-7M#+i}#-dU^Hq2i@iE^obqz5SGW}!fIU`J#yDut0~bT~FR5R;nb zM;DO+x`{?35&nxaEE-0stMKv_URsRX?zI=+7rgiSdtSKd_@i2{ zE`ZZK5CDt7r+^;2G>3HVRI z?*hLE{66r9z#jlfV8@-sN#V!%@=t4esasFzYcaV(+QGr0q2U{D#Id>cHt}kVQ*+Nf zZ@KUOL^7RwKx~No_5-3XHtJlFnUFWc=7|03-GBA^))Z~=8_@gmxKe9(Py>6nw!WgA z26S5!Uwoa#y$Jyh^bA;Wt z7AGZ%4#=3J)DIt-k*CDuagZ)%TaPtP-}?I!?9-$Vc}_|m7?rni{w`NuRtp zf3YUcKO21bQz;NZ{?b!#KW3%M^ec~~H1N?vYRVp4#yr;^Lsm*g4rwP>vH~(cc}lqd zBPJpKCp6v711IuT9eIznOM&hB5SbKuuW!4N>KkdE(`_7P)6{d5r$OcM+OO8`_va$& z&w7~t&wu(eCmz1GRE_g(I{9qagNL}qa3~(s=IUi`Ks)9#o|Nw7{yx}*sNcU1_Y?Pb gh(LuC_lGMahb4dC-y`O)!hKZK?*IS&KSzQ84Jjpl-T(jq delta 25293 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
B(f)6kr|1Zo>+qobVuOQ{7?3o#6$m6X zI2e_jf%cWuhz<-7M#+i}#-dU^Hq2i@iE^obqz5SGW}!fIU`J#yDut0~bT~FR5R;nb zM;DO+x`{?35&nxaEE-0stMKv_URsRX?zI=+7rgiSdtSKd_@i2{ zE`ZZK5CDt7r+^;2G>3HVRI z?*hLE{66r9z#jlfV8@-sN#V!%@=t4esasFzYcaV(+QGr0q2U{D#Id>cHt}kVQ*+Nf zZ@KUOL^7RwKx~No_5-3XHtJlFnUFWc=7|03-GBA^))Z~=8_@gmxKe9(Py>6nw!WgA z26S5!Uwoa#y$Jyh^bA;Wt z7AGZ%4#=3J)DIt-k*CDuagZ)%TaPtP-}?I!?9-$Vc}_|m7?rni{w`NuRtp zf3YUcKO21bQz;NZ{?b!#KW3%M^ec~~H1N?vYRVp4#yr;^Lsm*g4rwP>vH~(cc}lqd zBPJpKCp6v711IuT9eIznOM&hB5SbKuuW!4N>KkdE(`_7P)6{d5r$OcM+OO8`_va$& z&w7~t&wu(eCmz1GRE_g(I{9qagNL}qa3~(s=IUi`Ks)9#o|Nw7{yx}*sNcU1_Y?Pb gh(LuC_lGMahb4dC-y`O)!hKZK?*IS&KSzQ84Jjpl-T(jq delta 25293 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