about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorjbzdarkid <jbzdarkid@gmail.com>2018-10-24 22:13:56 -0700
committerjbzdarkid <jbzdarkid@gmail.com>2018-10-24 22:13:56 -0700
commita96cea16828973b92c465fb84de2554779f07101 (patch)
treeca10bab4bed674c935ce497ad56751247c8fc34f
parent69a8f903ef70845894ff07e0805d9cc60597cc7c (diff)
downloadwitness-tutorializer-a96cea16828973b92c465fb84de2554779f07101.tar.gz
witness-tutorializer-a96cea16828973b92c465fb84de2554779f07101.tar.bz2
witness-tutorializer-a96cea16828973b92c465fb84de2554779f07101.zip
Lots of progress, lots of ideas.
-rw-r--r--WitnessRandomizer/Panels.h682
-rw-r--r--WitnessRandomizer/WitnessRandomizer.cpp54
2 files changed, 365 insertions, 371 deletions
diff --git a/WitnessRandomizer/Panels.h b/WitnessRandomizer/Panels.h index 8d594b1..fff7053 100644 --- a/WitnessRandomizer/Panels.h +++ b/WitnessRandomizer/Panels.h
@@ -1,6 +1,7 @@
1#pragma once 1#pragma once
2#include <vector> 2#include <vector>
3 3
4// Some of these (the puzzle ones) are duplicated elsewhere
4std::vector<int> lasers = { 5std::vector<int> lasers = {
5 0x0360D, // Symmetry 6 0x0360D, // Symmetry
6 0x03615, // Swamp 7 0x03615, // Swamp
@@ -11,8 +12,10 @@ std::vector<int> lasers = {
11// 0x03608, // Desert 12// 0x03608, // Desert
12 0x03612, // Quarry 13 0x03612, // Quarry
13 0x03616, // Jungle 14 0x03616, // Jungle
15 0x19650, // Shadows
14}; 16};
15 17
18// Note: Some of these (non-desert) are duplicated elsewhere
16std::vector<int> burnablePanels = { 19std::vector<int> burnablePanels = {
17 0x17D9C, // Treehouse Yellow 7 20 0x17D9C, // Treehouse Yellow 7
18 0x17DC2, // Treehouse Yellow 8 21 0x17DC2, // Treehouse Yellow 8
@@ -31,19 +34,233 @@ std::vector<int> burnablePanels = {
31 0x28ACB, // Town Blue 4 34 0x28ACB, // Town Blue 4
32 0x28ACC, // Town Blue 5 35 0x28ACC, // Town Blue 5
33 0x17CF0, // Mill Discard 36 0x17CF0, // Mill Discard
37 0x17C31, // Desert Final Transparent
38
39 0x00698, // Desert Surface 1
40 0x0048F, // Desert Surface 2
41 0x09F92, // Desert Surface 3
42 0x0A036, // Desert Surface 4
43 0x09DA6, // Desert Surface 5
44 0x0A049, // Desert Surface 6
45 0x0A053, // Desert Surface 7
46 0x09F94, // Desert Surface 8
47 0x00422, // Desert Light 1
48 0x006E3, // Desert Light 2
49 0x0A02D, // Desert Light 3
50 0x00C72, // Desert Pond 1
51 0x0129D, // Desert Pond 2
52 0x008BB, // Desert Pond 3
53 0x0078D, // Desert Pond 4
54 0x18313, // Desert Pond 5
55 0x04D18, // Desert Flood 1
56 0x01205, // Desert Flood 2
57 0x181AB, // Desert Flood 3
58 0x0117A, // Desert Flood 4
59 0x17ECA, // Desert Flood 5
60 0x012D7, // Desert Final Far
61};
62
63// Note: Some of these (non-switches) are duplicated elsewhere
64std::vector<int> leftRightPanels = {
65 0x17D02, // Town Windmill Control
66};
67
68// Note: Some of these (non-switches) are duplicated elsewhere
69std::vector<int> upDownPanels = {
70 0x0A3B5, // Tutorial Back Left
71 0x17CC4, // Mill Elevator Control
72};
73
74std::vector<int> leftForwardRightPanels = {
75 0x17DD1, // Treehouse Left Orange 9 has to pivot
76 0x17CE3, // Treehouse Right Orange 4 has to pivot
77 0x17DB7, // Treehouse Right Orange 10 has to pivot
78 0x17E52, // Treehouse Green 4 has to pivot
79};
80
81std::vector<int> pillars = {
82 0x0383D, // Mountain 3 Left Pillar 1
83 0x0383F, // Mountain 3 Left Pillar 2
84 0x03859, // Mountain 3 Left Pillar 3
85 0x339BB, // Mountain 3 Left Pillar 4
86 0x0383A, // Mountain 3 Right Pillar 1
87 0x09E56, // Mountain 3 Right Pillar 2
88 0x09E5A, // Mountain 3 Right Pillar 3
89 0x33961, // Mountain 3 Right Pillar 4
90 0x09DD5, // UTM Challenge Pillar
91// 0x1C31A, // Challenge Left Pillar
92// 0x1C319, // Challenge Right Pillar
93};
94
95std::vector<int> mountainMultipanel = {
96 0x09FCC, // Mountain 2 Multipanel 1
97 0x09FCE, // Mountain 2 Multipanel 2
98 0x09FCF, // Mountain 2 Multipanel 3
99 0x09FD0, // Mountain 2 Multipanel 4
100 0x09FD1, // Mountain 2 Multipanel 5
101 0x09FD2, // Mountain 2 Multipanel 6
34}; 102};
35 103
36std::vector<int> tutorialPanels = { 104// There might be something to do with these, I haven't decided yet.
37// 0x0A3B5, // Back Left 105std::vector<int> nothingPanels = {
38 0x0A3B2, // Back Right 106// Doors & Shortcuts & Shortcut doors & Door controls
39 0x00295, // Center Left 107 0x0C339, // Desert Surface Door
40 0x00293, // Front Center 108 0x0A249, // Desert Pond Exit Door
41 0x002C2, // Front Left 109 0x275ED, // Mill EP Door
42 0x0C335, // Pillar 110 0x17CAC, // Mill Stairs Shortcut Door
43 0x0C373, // Patio floor 111 0x38663, // Boathouse Shortcut
112 0x09E49, // Keep Shadows Shortcut
113 0x0361B, // Keep Tower Shortcut
114 0x334DC, // Shadows Inner Door Control
115 0x334DB, // Shadows Outer Door Control
116 0x2700B, // Treehouse Exterior Door Control
117 0x17CBC, // Treehouse Interior Door Control
118// 0x337FA, // Jungle Shortcut
119
120// Controls (?)
121 0x09FA0, // Desert Surface 3 Control
122 0x09F86, // Desert Surface 8 Control
123 0x1C2DF, // Desert Flood Control Lower Far Left
124 0x1831E, // Desert Flood Control Lower Far Right
125 0x1C260, // Desert Flood Control Lower Near Left
126 0x1831C, // Desert Flood Control Lower Near Right
127 0x1C2F3, // Desert Flood Control Raise Far Left
128 0x1831D, // Desert Flood Control Raise Far Right
129 0x1C2B1, // Desert Flood Control Raise Near Left
130 0x1831B, // Desert Flood Control Raise Near Right
131 0x0A015, // Desert Final Far Control
132 0x03678, // Mill Lower Ramp Contol
133 0x03679, // Mill Lower Lift Control
134 0x03675, // Mill Upper Lift Control
135 0x03676, // Mill Upper Ramp Control
136 0x03852, // Boathouse Ramp Angle Control
137 0x03858, // Boathouse Ramp Position Control
138 0x275FA, // Boathouse Hook Control
139 0x037FF, // Treehouse Drawbridge Control
140 0x09F98, // Town Laser Redirect Control
141 0x334D8, // Town RGB Light Control
142 0x17E2B, // Swamp Flood Gate Control
143 0x00609, // Swamp Surface Sliding Bridge Control
144 0x18488, // Swamp Underwater Sliding Bridge Control
145 0x17C0A, // Swamp Island Control 1
146 0x17E07, // Swamp Island Control 2
147 0x181F5, // Swamp Rotating Bridge Control
148
149// Vault Boxes
150 0x03481, // Outside Tutorial Vault Box
151 0x0339E, // Desert Vault Box
152 0x03535, // Shipwreck Vault Box
153 0x03702, // Jungle Vault Box
154 0x03542, // Mountainside Vault Box
155
156// Boat Summons
157 0x17CC8, // Glass Factory Summon Boat
158 0x17CA6, // Boathouse Summon Boat
159 0x17C95, // Treehouse Summon Boat
160 0x0A054, // Town Summon Boat
161 0x09DB8, // Swamp Summon Boat
162 0x17CDF, // Jungle Summon Boat
163
164// Identical sets
165 0x00143, // Orchard Apple Tree 1
166 0x0003B, // Orchard Apple Tree 2
167 0x00055, // Orchard Apple Tree 3
168 0x032F7, // Orchard Apple Tree 4
169 0x032FF, // Orchard Apple Tree 5
170 0x009B8, // Symmetry Island Transparent 1
171 0x003E8, // Symmetry Island Transparent 2
172 0x00A15, // Symmetry Island Transparent 3
173 0x00B53, // Symmetry Island Transparent 4
174 0x00B8D, // Symmetry Island Transparent 5
175
176// Misc
177 0x03629, // Tutorial Gate Open
178 0x09FAA, // Desert Lightswitch
179 0x0C335, // Tutorial Pillar
180 0x0C373, // Tutorial Patio floor
181 0x1C349, // Symmetry Island Door 2 - Collision fails here, sadly
182 0x18076, // Desert Flood Exit - I am doing something with this -- but it's a very unique panel.
183 0x0A15C, // Desert Final Left Convex
184 0x09FFF, // Desert Final Left Concave
185 0x0A15F, // Desert Final Near
186 0x033EA, // Keep Yellow Pressure Plates
187 0x0A3A8, // Keep Yellow Reset
188 0x01BE9, // Keep Purple Pressure Plates
189 0x0A3B9, // Keep Purple Reset
190 0x01CD3, // Keep Green Pressure Plates
191 0x0A3BB, // Keep Green Reset
192 0x01D3F, // Keep Blue Pressure Plates
193 0x0A3AD, // Keep Blue Reset
194 0x2896A, // Town Bridge
195 0x28A69, // Town Lattice
196 0x28A79, // Town Maze
197 0x28B39, // Town Red Hexagonal
198 0x034E3, // Town Soundproof Dots
199 0x034E4, // Town Soundproof Waves
200 0x079DF, // Town Triple
201 0x00815, // Theater Video Input
202 0x03553, // Theater Tutorial Video
203 0x03552, // Theater Desert Video
204 0x0354E, // Theater Jungle Video
205 0x03549, // Theater Challenge Video
206 0x0354F, // Theater Shipwreck Video
207 0x03545, // Theater Mountain Video
208 0x18590, // Town Transparent
209 0x28AE3, // Town Wire
210
211
212// 0x09E39, // Mountain 1 Purple Pathway
213// 0x33AF5, // Mountain 1 Blue 1
214// 0x33AF7, // Mountain 1 Blue 2
215// 0x09F6E, // Mountain 1 Blue 3
216// 0x09FD8, // Mountain 2 Rainbow 5
217// 0x09E86, // Mountain 2 Blue Pathway
218// 0x09ED8, // Mountain 2 Orange Pathway
219// 0x09EEB, // Mountain 2 Elevator
220 0x09F8E, // Mountain 3 Near Right Floor
221 0x09FC1, // Mountain 3 Near Left Floor
222 0x09F01, // Mountain 3 Far Right Floor
223 0x09EFF, // Mountain 3 Far Left Floor
224 0x09FDA, // Mountain 3 Giant Floor
225// 0x01983, // Mountain 3 Left Peekaboo
226// 0x01987, // Mountain 3 Right Peekaboo
227// 0x3D9A6, // Mountain 3 Left Close Door
228// 0x3D9A7, // Mountain 3 Right Close Door
229// 0x3D9AA, // Mountain 3 Left Activate Elevator
230// 0x3D9A8, // Mountain 3 Right Activate Elevator
231// 0x3D9A9, // Mountain 3 Launch Elevator
232// 0x3C113, // Mountain 3 Left Open Door
233// 0x3C114, // Mountain 3 Right Open Door
234// 0x09F7F, // Mountaintop Laser Box
235// 0x17C34, // Mountaintop Perspective
236// 0x0A16E, // UTM Challenge Entrance
237// 0x335AB, // UTM In Elevator Control
238// 0x3369D, // UTM Lower Elevator Control
239// 0x288EA, // UTM Perspective 1
240// 0x288FC, // UTM Perspective 2
241// 0x289E7, // UTM Perspective 3
242// 0x288AA, // UTM Perspective 4
243// 0x334E1, // UTM Secret Door Control
244// 0x335AC, // UTM Upper Elevator Control
245// 0x2773D, // Tunnels Desert Shortcut
246// 0x27732, // Tunnels Theater Shortcut
247// 0x2FAF6, // Tunnels Vault Box
248// 0x0A099, // Bunker Glass Door
249// 0x34BC5, // Bunker Open Ultraviolet
250// 0x34BC6, // Bunker Close Ultraviolet
251// 0x15ADD, // Jungle Vault
252// 0x17CAA, // Jungle Courtyard Gate
253// 0x17CAB, // Jungle Pop-up Wall
254 0x0005C, // Glass Factory Vertical Symmetry 5
44}; 255};
45 256
46std::vector<int> outsideTutorialPanels = { 257std::vector<int> squarePanels = {
258 0x00064, // Tutorial Straight
259 0x00182, // Tutorial Bend
260 0x0A3B2, // Tutorial Back Right
261 0x00295, // Tutorial Center Left
262 0x00293, // Tutorial Front Center
263 0x002C2, // Tutorial Front Left
47 0x0005D, // Outside Tutorial Dots Tutorial 1 264 0x0005D, // Outside Tutorial Dots Tutorial 1
48 0x0005E, // Outside Tutorial Dots Tutorial 2 265 0x0005E, // Outside Tutorial Dots Tutorial 2
49 0x0005F, // Outside Tutorial Dots Tutorial 3 266 0x0005F, // Outside Tutorial Dots Tutorial 3
@@ -59,33 +276,21 @@ std::vector<int> outsideTutorialPanels = {
59 0x00020, // Outside Tutorial Stones Tutorial 8 276 0x00020, // Outside Tutorial Stones Tutorial 8
60 0x00021, // Outside Tutorial Stones Tutorial 9 277 0x00021, // Outside Tutorial Stones Tutorial 9
61 0x033D4, // Outside Tutorial Vault 278 0x033D4, // Outside Tutorial Vault
62// 0x03481, // Outside Tutorial Vault Box
63 0x0A171, // Tutorial Optional Door 1 279 0x0A171, // Tutorial Optional Door 1
64 0x04CA4, // Tutorial Optional Door 2 280 0x04CA4, // Tutorial Optional Door 2
65 0x17CFB, // Outside Tutorial Discard 281 0x17CFB, // Outside Tutorial Discard
66// 0x00143, // Orchard Apple Tree 1
67// 0x0003B, // Orchard Apple Tree 2
68// 0x00055, // Orchard Apple Tree 3
69// 0x032F7, // Orchard Apple Tree 4
70// 0x032FF, // Orchard Apple Tree 5
71};
72
73std::vector<int> symmetryPanels = {
74 0x3C12B, // Glass Factory Discard 282 0x3C12B, // Glass Factory Discard
75 0x01A54, // Glass Factory Entry 283 0x01A54, // Glass Factory Entry
76 0x00086, // Glass Factory Vertical Symmetry 1 284 0x00086, // Glass Factory Vertical Symmetry 1
77 0x00087, // Glass Factory Vertical Symmetry 2 285 0x00087, // Glass Factory Vertical Symmetry 2
78 0x00059, // Glass Factory Vertical Symmetry 3 286 0x00059, // Glass Factory Vertical Symmetry 3
79 0x00062, // Glass Factory Vertical Symmetry 4 287 0x00062, // Glass Factory Vertical Symmetry 4
80 0x0005C, // Glass Factory Vertical Symmetry 5
81// 0x17CC8, // Glass Factory Summon Boat
82 0x0008D, // Glass Factory Rotational Symmetry 1 288 0x0008D, // Glass Factory Rotational Symmetry 1
83 0x00081, // Glass Factory Rotational Symmetry 2 289 0x00081, // Glass Factory Rotational Symmetry 2
84 0x00083, // Glass Factory Rotational Symmetry 3 290 0x00083, // Glass Factory Rotational Symmetry 3
85 0x00084, // Glass Factory Melting 1 291 0x00084, // Glass Factory Melting 1
86 0x00082, // Glass Factory Melting 2 292 0x00082, // Glass Factory Melting 2
87 0x0343A, // Glass Factory Melting 3 293 0x0343A, // Glass Factory Melting 3
88
89 0x000B0, // Symmetry Island Door 1 294 0x000B0, // Symmetry Island Door 1
90 0x00022, // Symmetry Island Black Dots 1 295 0x00022, // Symmetry Island Black Dots 1
91 0x00023, // Symmetry Island Black Dots 2 296 0x00023, // Symmetry Island Black Dots 2
@@ -105,12 +310,6 @@ std::vector<int> symmetryPanels = {
105 0x00070, // Symmetry Island Fading Lines 5 310 0x00070, // Symmetry Island Fading Lines 5
106 0x00071, // Symmetry Island Fading Lines 6 311 0x00071, // Symmetry Island Fading Lines 6
107 0x00076, // Symmetry Island Fading Lines 7 312 0x00076, // Symmetry Island Fading Lines 7
108// 0x009B8, // Symmetry Island Transparent 1 // Too mean for right now
109// 0x003E8, // Symmetry Island Transparent 2 // Too mean for right now
110// 0x00A15, // Symmetry Island Transparent 3 // Too mean for right now
111// 0x00B53, // Symmetry Island Transparent 4 // Too mean for right now
112// 0x00B8D, // Symmetry Island Transparent 5 // Too mean for right now
113// 0x1C349, // Symmetry Island Door 2 - Collision fails here, sadly
114 0x00A52, // Symmetry Island Laser Yellow 1 313 0x00A52, // Symmetry Island Laser Yellow 1
115 0x00A57, // Symmetry Island Laser Yellow 2 314 0x00A57, // Symmetry Island Laser Yellow 2
116 0x00A5B, // Symmetry Island Laser Yellow 3 315 0x00A5B, // Symmetry Island Laser Yellow 3
@@ -119,64 +318,15 @@ std::vector<int> symmetryPanels = {
119 0x00A68, // Symmetry Island Laser Blue 3 318 0x00A68, // Symmetry Island Laser Blue 3
120 0x17CE7, // Desert Discard 319 0x17CE7, // Desert Discard
121 0x0CC7B, // Desert Vault 320 0x0CC7B, // Desert Vault
122}; 321 0x17C31, // Desert Final Transparent
123
124std::vector<int> desertPanels = {
125// 0x0339E, // Desert Vault Box
126 0x00698, // Desert Surface 1
127 0x0048F, // Desert Surface 2
128 0x09F92, // Desert Surface 3
129// 0x09FA0, // Desert Surface 3 Control
130 0x0A036, // Desert Surface 4
131 0x09DA6, // Desert Surface 5
132 0x0A049, // Desert Surface 6
133 0x0A053, // Desert Surface 7
134 0x09F94, // Desert Surface 8
135// 0x09F86, // Desert Surface 8 Control
136// 0x0C339, // Desert Surface Door
137// 0x09FAA, // Desert Lightswitch
138 0x00422, // Desert Light 1
139 0x006E3, // Desert Light 2
140// 0x0A02D, // Desert Light 3
141 0x00C72, // Desert Pond 1
142 0x0129D, // Desert Pond 2
143 0x008BB, // Desert Pond 3
144 0x0078D, // Desert Pond 4
145 0x18313, // Desert Pond 5
146// 0x0A249, // Desert Pond Exit Door
147// 0x1C2DF, // Desert Flood Control Lower Far Left
148// 0x1831E, // Desert Flood Control Lower Far Right
149// 0x1C260, // Desert Flood Control Lower Near Left
150// 0x1831C, // Desert Flood Control Lower Near Right
151// 0x1C2F3, // Desert Flood Control Raise Far Left
152// 0x1831D, // Desert Flood Control Raise Far Right
153// 0x1C2B1, // Desert Flood Control Raise Near Left
154// 0x1831B, // Desert Flood Control Raise Near Right
155 0x04D18, // Desert Flood 1
156 0x01205, // Desert Flood 2
157 0x181AB, // Desert Flood 3
158 0x0117A, // Desert Flood 4
159 0x17ECA, // Desert Flood 5
160// 0x18076, // Desert Flood Exit
161// 0x0A15C, // Desert Final Left Convex
162// 0x09FFF, // Desert Final Left Concave
163// 0x0A15F, // Desert Final Near
164// 0x17C31, // Desert Final Transparent
165 0x012D7, // Desert Final Far
166// 0x0A015, // Desert Final Far Control
167};
168
169std::vector<int> quarryPanels = {
170 0x01E5A, // Mill Entry Door Left 322 0x01E5A, // Mill Entry Door Left
171 0x01E59, // Mill Entry Door Right 323 0x01E59, // Mill Entry Door Right
172// 0x03678, // Mill Lower Ramp Contol
173 0x00E0C, // Mill Lower Row 1 324 0x00E0C, // Mill Lower Row 1
174 0x01489, // Mill Lower Row 2 325 0x01489, // Mill Lower Row 2
175 0x0148A, // Mill Lower Row 3 326 0x0148A, // Mill Lower Row 3
176 0x014D9, // Mill Lower Row 4 327 0x014D9, // Mill Lower Row 4
177 0x014E7, // Mill Lower Row 5 328 0x014E7, // Mill Lower Row 5
178 0x014E8, // Mill Lower Row 6 329 0x014E8, // Mill Lower Row 6
179// 0x03679, // Mill Lower Lift Control
180 0x00557, // Mill Upper Row 1 330 0x00557, // Mill Upper Row 1
181 0x005F1, // Mill Upper Row 2 331 0x005F1, // Mill Upper Row 2
182 0x00620, // Mill Upper Row 3 332 0x00620, // Mill Upper Row 3
@@ -186,25 +336,17 @@ std::vector<int> quarryPanels = {
186 0x03686, // Mill Upper Row 7 336 0x03686, // Mill Upper Row 7
187 0x014E9, // Mill Upper Row 8 337 0x014E9, // Mill Upper Row 8
188 0x0367C, // Mill Control Room 1 338 0x0367C, // Mill Control Room 1
189// 0x03675, // Mill Upper Lift Control
190// 0x03676, // Mill Upper Ramp Control
191 0x3C125, // Mill Control Room 2 339 0x3C125, // Mill Control Room 2
192// 0x275ED, // Mill EP Door
193// 0x17CAC, // Mill Stairs Shortcut Door
194 0x03677, // Mill Stairs Control 340 0x03677, // Mill Stairs Control
195 0x17CF0, // Mill Discard 341 0x17CF0, // Mill Discard
196// 0x17CC4, // Mill Elevator Control 342 0x03612, // Quarry Laser
197 0x021D5, // Boathouse Ramp Activation Shapers 343 0x021D5, // Boathouse Ramp Activation Shapers
198 0x034D4, // Boathouse Ramp Activation Stars 344 0x034D4, // Boathouse Ramp Activation Stars
199// 0x03852, // Boathouse Ramp Angle Control
200 0x021B3, // Boathouse Erasers and Shapers 1 345 0x021B3, // Boathouse Erasers and Shapers 1
201 0x021B4, // Boathouse Erasers and Shapers 2 346 0x021B4, // Boathouse Erasers and Shapers 2
202 0x021B0, // Boathouse Erasers and Shapers 3 347 0x021B0, // Boathouse Erasers and Shapers 3
203 0x021AF, // Boathouse Erasers and Shapers 4 348 0x021AF, // Boathouse Erasers and Shapers 4
204 0x021AE, // Boathouse Erasers and Shapers 5 349 0x021AE, // Boathouse Erasers and Shapers 5
205// 0x17CA6, // Boathouse Summon Boat
206// 0x03858, // Boathouse Ramp Position Control
207// 0x38663, // Boathouse Shortcut
208 0x021B5, // Boathouse Erasers and Stars 1 350 0x021B5, // Boathouse Erasers and Stars 1
209 0x021B6, // Boathouse Erasers and Stars 2 351 0x021B6, // Boathouse Erasers and Stars 2
210 0x021B7, // Boathouse Erasers and Stars 3 352 0x021B7, // Boathouse Erasers and Stars 3
@@ -217,13 +359,8 @@ std::vector<int> quarryPanels = {
217 0x0A3CB, // Boathouse Erasers Shapers and Stars 3 359 0x0A3CB, // Boathouse Erasers Shapers and Stars 3
218 0x0A3CC, // Boathouse Erasers Shapers and Stars 4 360 0x0A3CC, // Boathouse Erasers Shapers and Stars 4
219 0x0A3D0, // Boathouse Erasers Shapers and Stars 5 361 0x0A3D0, // Boathouse Erasers Shapers and Stars 5
220// 0x275FA, // Boathouse Hook Control
221 0x09E57, // Quarry Entry Gate 1 362 0x09E57, // Quarry Entry Gate 1
222 0x17C09, // Quarry Entry Gate 2 363 0x17C09, // Quarry Entry Gate 2
223};
224
225std::vector<int> treehousePanels = { //worked fine until I commented out pivoting panels, puzzles solve fine if you know solution but star and dot colors are all messed up
226// 0x17C95, // Treehouse Summon Boat
227 0x0288C, // Treehouse Door 1 364 0x0288C, // Treehouse Door 1
228 0x02886, // Treehouse Door 2 365 0x02886, // Treehouse Door 2
229 0x17D72, // Treehouse Yellow 1 366 0x17D72, // Treehouse Yellow 1
@@ -256,7 +393,6 @@ std::vector<int> treehousePanels = { //worked fine until I commented out pivotin
256 0x17DD9, // Treehouse Left Orange 6 393 0x17DD9, // Treehouse Left Orange 6
257 0x17DB8, // Treehouse Left Orange 7 394 0x17DB8, // Treehouse Left Orange 7
258 0x17DDC, // Treehouse Left Orange 8 395 0x17DDC, // Treehouse Left Orange 8
259// 0x17DD1, // Treehouse Left Orange 9 has to pivot
260 0x17DDE, // Treehouse Left Orange 10 396 0x17DDE, // Treehouse Left Orange 10
261 0x17DE3, // Treehouse Left Orange 11 397 0x17DE3, // Treehouse Left Orange 11
262 0x17DEC, // Treehouse Left Orange 12 398 0x17DEC, // Treehouse Left Orange 12
@@ -266,80 +402,31 @@ std::vector<int> treehousePanels = { //worked fine until I commented out pivotin
266 0x17D88, // Treehouse Right Orange 1 402 0x17D88, // Treehouse Right Orange 1
267 0x17DB4, // Treehouse Right Orange 2 403 0x17DB4, // Treehouse Right Orange 2
268 0x17D8C, // Treehouse Right Orange 3 404 0x17D8C, // Treehouse Right Orange 3
269 0x17CE3, // Treehouse Right Orange 4 405 0x17DCD, // Treehouse Right Orange 5
270// 0x17DCD, // Treehouse Right Orange 5 has to pivot
271 0x17DB2, // Treehouse Right Orange 6 406 0x17DB2, // Treehouse Right Orange 6
272 0x17DCC, // Treehouse Right Orange 7 407 0x17DCC, // Treehouse Right Orange 7
273 0x17DCA, // Treehouse Right Orange 8 408 0x17DCA, // Treehouse Right Orange 8
274 0x17D8E, // Treehouse Right Orange 9 409 0x17D8E, // Treehouse Right Orange 9
275// 0x17DB7, // Treehouse Right Orange 10 has to pivot
276 0x17DB1, // Treehouse Right Orange 11 410 0x17DB1, // Treehouse Right Orange 11
277 0x17DA2, // Treehouse Right Orange 12 411 0x17DA2, // Treehouse Right Orange 12
278 0x17E3C, // Treehouse Green 1 412 0x17E3C, // Treehouse Green 1
279 0x17E4D, // Treehouse Green 2 413 0x17E4D, // Treehouse Green 2
280 0x17E4F, // Treehouse Green 3 414 0x17E4F, // Treehouse Green 3
281// 0x17E52, // Treehouse Green 4 has to pivot
282 0x17E5B, // Treehouse Green 5 415 0x17E5B, // Treehouse Green 5
283 0x17E5F, // Treehouse Green 6 416 0x17E5F, // Treehouse Green 6
284 0x17E61, // Treehouse Green 7 417 0x17E61, // Treehouse Green 7
285 0x17FA9, // Treehouse Green Bridge Discard 418 0x17FA9, // Treehouse Green Bridge Discard
286 0x17FA0, // Treehouse Laser Discard 419 0x17FA0, // Treehouse Laser Discard
287// 0x2700B, // Treehouse Exterior Door Control
288// 0x17CBC, // Treehouse Interior Door Control
289// 0x037FF, // Treehouse Drawbridge Control
290};
291
292std::vector<int> keepPanels = {
293 0x00139, // Keep Hedges 1 420 0x00139, // Keep Hedges 1
294 0x019DC, // Keep Hedges 2 421 0x019DC, // Keep Hedges 2
295 0x019E7, // Keep Hedges 3 422 0x019E7, // Keep Hedges 3
296 0x01A0F, // Keep Hedges 4 423 0x01A0F, // Keep Hedges 4
297// 0x033EA, // Keep Yellow Pressure Plates
298// 0x0A3A8, // Keep Yellow Reset
299// 0x01BE9, // Keep Purple Pressure Plates
300// 0x0A3B9, // Keep Purple Reset
301// 0x01CD3, // Keep Green Pressure Plates
302// 0x0A3BB, // Keep Green Reset
303// 0x01D3F, // Keep Blue Pressure Plates
304// 0x0A3AD, // Keep Blue Reset
305 0x0360E, // Keep Front Laser 424 0x0360E, // Keep Front Laser
306 0x03317, // Keep Back Laser 425 0x03317, // Keep Back Laser
307// 0x09E49, // Keep Shadows Shortcut
308// 0x0361B, // Keep Tower Shortcut
309 0x17D27, // Keep Discard 426 0x17D27, // Keep Discard
310 0x17D28, // Shipwreck Discard 427 0x17D28, // Shipwreck Discard
311 0x00AFB, // Shipwreck Vault 428 0x00AFB, // Shipwreck Vault
312// 0x03535, // Shipwreck Vault Box
313};
314
315std::vector<int> shadowsPanels = { // works beautifully, can solve based on panel color and where start/end points are if your memory is good
316 0x386FA, // Shadows Avoid 1
317 0x1C33F, // Shadows Avoid 2
318 0x196E2, // Shadows Avoid 3
319 0x1972A, // Shadows Avoid 4
320 0x19809, // Shadows Avoid 5
321 0x19806, // Shadows Avoid 6
322 0x196F8, // Shadows Avoid 7
323 0x1972F, // Shadows Avoid 8
324 0x19797, // Shadows Follow 1
325 0x1979A, // Shadows Follow 2
326 0x197E0, // Shadows Follow 3
327 0x197E8, // Shadows Follow 4
328 0x197E5, // Shadows Follow 5
329// 0x334DC, // Shadows Inner Door Control
330 0x19650, // Shadows Laser 429 0x19650, // Shadows Laser
331// 0x334DB, // Shadows Outer Door Control
332 0x198B5, // Shadows Tutorial 1
333 0x198BD, // Shadows Tutorial 2
334 0x198BF, // Shadows Tutorial 3
335 0x19771, // Shadows Tutorial 4
336 0x0A8DC, // Shadows Tutorial 5
337 0x0AC74, // Shadows Tutorial 6
338 0x0AC7A, // Shadows Tutorial 7
339 0x0A8E0, // Shadows Tutorial 8
340};
341
342std::vector<int> townPanels = { // appears to be ok but keeps crashing game?
343 0x2899C, // Town 25 Dots 1 430 0x2899C, // Town 25 Dots 1
344 0x28A33, // Town 25 Dots 2 431 0x28A33, // Town 25 Dots 2
345 0x28ABF, // Town 25 Dots 3 432 0x28ABF, // Town 25 Dots 3
@@ -351,103 +438,21 @@ std::vector<int> townPanels = { // appears to be ok but keeps crashing game?
351 0x28ACA, // Town Blue 3 438 0x28ACA, // Town Blue 3
352 0x28ACB, // Town Blue 4 439 0x28ACB, // Town Blue 4
353 0x28ACC, // Town Blue 5 440 0x28ACC, // Town Blue 5
354// 0x0A054, // Town Summon Boat
355// 0x2896A, // Town Bridge
356 0x28A0D, // Town Church Stars 441 0x28A0D, // Town Church Stars
357 0x28AD9, // Town Eraser 442 0x28AD9, // Town Eraser
358 0x28998, // Town Green Door 443 0x28998, // Town Green Door
359// 0x09F98, // Town Laser Redirect Control
360// 0x1C344, // Town Laser Redirect Panel 1
361// 0x1C343, // Town Laser Redirect Panel 2
362// 0x28A69, // Town Lattice
363// 0x28A79, // Town Maze
364 0x0A0C8, // Town Orange Crate 444 0x0A0C8, // Town Orange Crate
365 0x17D01, // Town Orange Crate Discard 445 0x17D01, // Town Orange Crate Discard
366// 0x28B39, // Town Red Hexagonal
367// 0x334D8, // Town RGB Light Control
368 0x03C08, // Town RGB Stars 446 0x03C08, // Town RGB Stars
369 0x03C0C, // Town RGB Stones 447 0x03C0C, // Town RGB Stones
370 0x17C71, // Town Rooftop Discard 448 0x17C71, // Town Rooftop Discard
371// 0x034E3, // Town Soundproof Dots panels in their locations must match so can't swap unless that is fixed
372// 0x034E4, // Town Soundproof Waves
373 0x18590, // Town Transparent
374// 0x079DF, // Town Triple
375 0x17D02, // Town Windmill Control
376 0x17F5F, // Town Windmill Door 449 0x17F5F, // Town Windmill Door
377 0x28AE3, // Town Wire
378 0x17F89, // Theater Entrance 450 0x17F89, // Theater Entrance
379// 0x00815, // Theater Video Input
380// 0x03553, // Theater Tutorial Video
381// 0x03552, // Theater Desert Video
382// 0x0354E, // Theater Jungle Video
383// 0x03549, // Theater Challenge Video
384// 0x0354F, // Theater Shipwreck Video
385// 0x03545, // Theater Mountain Video
386 0x17CF7, // Theater Discard 451 0x17CF7, // Theater Discard
387 0x33AB2, // Theater Corona Exit 452 0x33AB2, // Theater Corona Exit
388 0x0A168, // Theater Sun Exit 453 0x0A168, // Theater Sun Exit
389}; 454 0x00B10, // Monastery Left Door
390 455 0x00C92, // Monastery Right Door
391std::vector<int> monasteryPanels = {
392// 0x00B10, // Monastery Left Door
393// 0x00C92, // Monastery Right Door
394 0x00290, // Monastery Exterior 1
395 0x00038, // Monastery Exterior 2
396 0x00037, // Monastery Exterior 3
397// 0x09D9B, // Monastery Bonsai
398 0x193A7, // Monastery Interior 1
399 0x193AA, // Monastery Interior 2
400 0x193AB, // Monastery Interior 3
401 0x193A6, // Monastery Interior 4
402// 0x03713, // Monastery Shortcut
403};
404
405std::vector<int> junglePanels = {
406// 0x17CDF, // Jungle Summon Boat
407 0x17F9B, // Jungle Discard
408 0x002C4, // Jungle Waves 1
409 0x00767, // Jungle Waves 2
410 0x002C6, // Jungle Waves 3
411 0x0070E, // Jungle Waves 4
412 0x0070F, // Jungle Waves 5
413 0x0087D, // Jungle Waves 6
414 0x002C7, // Jungle Waves 7
415// 0x15ADD, // Jungle Vault
416// 0x03702, // Jungle Vault Box
417// 0x17CAA, // Jungle Courtyard Gate
418 0x0026D, // Jungle Dots 1
419 0x0026E, // Jungle Dots 2
420 0x0026F, // Jungle Dots 3
421 0x00C3F, // Jungle Dots 4
422 0x00C41, // Jungle Dots 5
423 0x014B2, // Jungle Dots 6
424// 0x17CAB, // Jungle Pop-up Wall
425// 0x337FA, // Jungle Shortcut
426};
427
428std::vector<int> bunkerPanels = { // this doesn't want to behave, I have no idea
429 0x17C2E, // Bunker Entry Door
430 0x09F7D, // Bunker Tutorial 1
431 0x09FDC, // Bunker Tutorial 2
432 0x09FF7, // Bunker Tutorial 3
433 0x09F82, // Bunker Tutorial 4
434 0x09FF8, // Bunker Tutorial 5
435 0x09D9F, // Bunker Advanced 1
436 0x09DA1, // Bunker Advanced 2
437 0x09DA2, // Bunker Advanced 3
438 0x09DAF, // Bunker Advanced 4
439// 0x0A099, // Bunker Glass Door
440 0x0A010, // Bunker Glass 1
441 0x0A01B, // Bunker Glass 2
442 0x0A01F, // Bunker Glass 3
443 0x34BC5, // Bunker Open Ultraviolet
444 0x34BC6, // Bunker Close Ultraviolet
445 0x17E63, // Bunker Ultraviolet 1
446 0x17E67, // Bunker Ultraviolet 2
447 0x0A079, // Bunker Elevator
448};
449
450std::vector<int> swampPanels = { // appears to work ok swapping panels but keeps crashing game?
451 0x0056E, // Swamp Entry 456 0x0056E, // Swamp Entry
452 0x00469, // Swamp Tutorial 1 457 0x00469, // Swamp Tutorial 1
453 0x00472, // Swamp Tutorial 2 458 0x00472, // Swamp Tutorial 2
@@ -463,7 +468,6 @@ std::vector<int> swampPanels = { // appears to work ok swapping panels but keeps
463 0x00985, // Swamp Tutorial 12 468 0x00985, // Swamp Tutorial 12
464 0x00987, // Swamp Tutorial 13 469 0x00987, // Swamp Tutorial 13
465 0x181A9, // Swamp Tutorial 14 470 0x181A9, // Swamp Tutorial 14
466// 0x00609, // Swamp Surface Sliding Bridge Control
467 0x00982, // Swamp Red 1 471 0x00982, // Swamp Red 1
468 0x0097F, // Swamp Red 2 472 0x0097F, // Swamp Red 2
469 0x0098F, // Swamp Red 3 473 0x0098F, // Swamp Red 3
@@ -478,7 +482,6 @@ std::vector<int> swampPanels = { // appears to work ok swapping panels but keeps
478 0x00008, // Swamp Rotation Tutorial 2 482 0x00008, // Swamp Rotation Tutorial 2
479 0x00009, // Swamp Rotation Tutorial 3 483 0x00009, // Swamp Rotation Tutorial 3
480 0x0000A, // Swamp Rotation Tutorial 4 484 0x0000A, // Swamp Rotation Tutorial 4
481// 0x181F5, // Swamp Rotating Bridge Control
482 0x009AB, // Swamp Blue Underwater 1 485 0x009AB, // Swamp Blue Underwater 1
483 0x009AD, // Swamp Blue Underwater 2 486 0x009AD, // Swamp Blue Underwater 2
484 0x009AE, // Swamp Blue Underwater 3 487 0x009AE, // Swamp Blue Underwater 3
@@ -488,10 +491,7 @@ std::vector<int> swampPanels = { // appears to work ok swapping panels but keeps
488 0x00A1E, // Swamp Rotation Advanced 2 491 0x00A1E, // Swamp Rotation Advanced 2
489 0x00C2E, // Swamp Rotation Advanced 3 492 0x00C2E, // Swamp Rotation Advanced 3
490 0x00E3A, // Swamp Rotation Advanced 4 493 0x00E3A, // Swamp Rotation Advanced 4
491// 0x17E2B, // Swamp Flood Gate Control
492// 0x09DB8, // Swamp Summon Boat
493 0x009A6, // Swamp Purple Tetris 494 0x009A6, // Swamp Purple Tetris
494// 0x18488, // Swamp Underwater Sliding Bridge Control
495 0x00002, // Swamp Teal Underwater 1 495 0x00002, // Swamp Teal Underwater 1
496 0x00004, // Swamp Teal Underwater 2 496 0x00004, // Swamp Teal Underwater 2
497 0x00005, // Swamp Teal Underwater 3 497 0x00005, // Swamp Teal Underwater 3
@@ -501,14 +501,9 @@ std::vector<int> swampPanels = { // appears to work ok swapping panels but keeps
501 0x014D2, // Swamp Red Underwater 2 501 0x014D2, // Swamp Red Underwater 2
502 0x014D4, // Swamp Red Underwater 3 502 0x014D4, // Swamp Red Underwater 3
503 0x014D1, // Swamp Red Underwater 4 503 0x014D1, // Swamp Red Underwater 4
504// 0x17C0A, // Swamp Island Control 1
505// 0x17E07, // Swamp Island Control 2
506 0x17C05, // Swamp Laser Shortcut 1 504 0x17C05, // Swamp Laser Shortcut 1
507 0x17C02, // Swamp Laser Shortcut 2 505 0x17C02, // Swamp Laser Shortcut 2
508}; 506 0x17F9B, // Jungle Discard
509
510std::vector<int> mountainPanels = {
511// 0x09E39, // Mountain 1 Purple Pathway
512 0x09E73, // Mountain 1 Orange 1 507 0x09E73, // Mountain 1 Orange 1
513 0x09E75, // Mountain 1 Orange 2 508 0x09E75, // Mountain 1 Orange 2
514 0x09E78, // Mountain 1 Orange 3 509 0x09E78, // Mountain 1 Orange 3
@@ -516,9 +511,6 @@ std::vector<int> mountainPanels = {
516 0x09E6C, // Mountain 1 Orange 5 511 0x09E6C, // Mountain 1 Orange 5
517 0x09E6F, // Mountain 1 Orange 6 512 0x09E6F, // Mountain 1 Orange 6
518 0x09E6B, // Mountain 1 Orange 7 513 0x09E6B, // Mountain 1 Orange 7
519// 0x33AF5, // Mountain 1 Blue 1
520// 0x33AF7, // Mountain 1 Blue 2
521// 0x09F6E, // Mountain 1 Blue 3
522 0x09EAD, // Mountain 1 Purple 1 514 0x09EAD, // Mountain 1 Purple 1
523 0x09EAF, // Mountain 1 Purple 2 515 0x09EAF, // Mountain 1 Purple 2
524 0x09E7A, // Mountain 1 Green 1 516 0x09E7A, // Mountain 1 Green 1
@@ -530,112 +522,124 @@ std::vector<int> mountainPanels = {
530 0x09FD4, // Mountain 2 Rainbow 2 522 0x09FD4, // Mountain 2 Rainbow 2
531 0x09FD6, // Mountain 2 Rainbow 3 523 0x09FD6, // Mountain 2 Rainbow 3
532 0x09FD7, // Mountain 2 Rainbow 4 524 0x09FD7, // Mountain 2 Rainbow 4
533// 0x09FD8, // Mountain 2 Rainbow 5
534// 0x09E86, // Mountain 2 Blue Pathway
535// 0x09ED8, // Mountain 2 Orange Pathway
536// 0x09EEB, // Mountain 2 Elevator
537 0x17F93, // Mountain 2 Discard 525 0x17F93, // Mountain 2 Discard
538 0x09F8E, // Mountain 3 Near Right Floor
539 0x09FC1, // Mountain 3 Near Left Floor
540 0x09F01, // Mountain 3 Far Right Floor
541 0x09EFF, // Mountain 3 Far Left Floor
542 0x09FDA, // Mountain 3 Giant Floor
543 0x17FA2, // Mountain 3 Secret Door 526 0x17FA2, // Mountain 3 Secret Door
544// 0x01983, // Mountain 3 Left Peekaboo
545// 0x01987, // Mountain 3 Right Peekaboo
546// 0x3D9A6, // Mountain 3 Left Close Door
547// 0x3D9A7, // Mountain 3 Right Close Door
548// 0x3D9AA, // Mountain 3 Left Activate Elevator
549// 0x3D9A8, // Mountain 3 Right Activate Elevator
550// 0x3D9A9, // Mountain 3 Launch Elevator
551// 0x3C113, // Mountain 3 Left Open Door
552// 0x3C114, // Mountain 3 Right Open Door
553 0x17C42, // Mountainside Discard 527 0x17C42, // Mountainside Discard
554 0x002A6, // Mountainside Vault 528 0x002A6, // Mountainside Vault
555// 0x03542, // Mountainside Vault Box 529 0x0042D, // Mountaintop River
556// 0x09F7F, // Mountaintop Laser Box 530 0x00FF8, // UTM Entrance Door
557// 0x17C34, // Mountaintop Perspective 531 0x0A16B, // UTM Green Dots 1
558// 0x0042D, // Mountaintop River 532 0x0A2CE, // UTM Green Dots 2
533 0x0A2D7, // UTM Green Dots 3
534 0x0A2DD, // UTM Green Dots 4
535 0x0A2EA, // UTM Green Dots 5
536 0x17FB9, // UTM Green Dots 6
537 0x0008F, // UTM Invisible Dots 1
538 0x0006B, // UTM Invisible Dots 2
539 0x0008B, // UTM Invisible Dots 3
540 0x0008C, // UTM Invisible Dots 4
541 0x0008A, // UTM Invisible Dots 5
542 0x00089, // UTM Invisible Dots 6
543 0x0006A, // UTM Invisible Dots 7
544 0x0006C, // UTM Invisible Dots 8
545 0x00027, // UTM Invisible Dots Symmetry 1
546 0x00028, // UTM Invisible Dots Symmetry 2
547 0x00029, // UTM Invisible Dots Symmetry 3
548 0x021D7, // UTM Mountainside Shortcut
549 0x00B71, // UTM Quarry
550 0x01A31, // UTM Rainbow
551 0x32962, // UTM Swamp
552 0x32966, // UTM Treehouse
553 0x17CF2, // UTM Waterfall Shortcut
554 0x00A72, // UTM Blue Cave In
555 0x009A4, // UTM Blue Discontinuous
556 0x018A0, // UTM Blue Easy Symmetry
557 0x01A0D, // UTM Blue Hard Symmetry
558 0x008B8, // UTM Blue Left 1
559 0x00973, // UTM Blue Left 2
560 0x0097B, // UTM Blue Left 3
561 0x0097D, // UTM Blue Left 4
562 0x0097E, // UTM Blue Left 5
563 0x00994, // UTM Blue Right Far 1
564 0x334D5, // UTM Blue Right Far 2
565 0x00995, // UTM Blue Right Far 3
566 0x00996, // UTM Blue Right Far 4
567 0x00998, // UTM Blue Right Far 5
568 0x00190, // UTM Blue Right Near 1
569 0x00558, // UTM Blue Right Near 2
570 0x00567, // UTM Blue Right Near 3
571 0x006FE, // UTM Blue Right Near 4
572 0x039B4, // Tunnels Theater Catwalk
573 0x09E85, // Tunnels Town Shortcut
559}; 574};
560 575
561std::vector<int> pillars = { 576std::vector<int> shadowsPanels = { // works beautifully, can solve based on panel color and where start/end points are if your memory is good
562 0x0383D, // Mountain 3 Left Pillar 1 577 0x386FA, // Shadows Avoid 1
563 0x0383F, // Mountain 3 Left Pillar 2 578 0x1C33F, // Shadows Avoid 2
564 0x03859, // Mountain 3 Left Pillar 3 579 0x196E2, // Shadows Avoid 3
565 0x339BB, // Mountain 3 Left Pillar 4 580 0x1972A, // Shadows Avoid 4
566 0x0383A, // Mountain 3 Right Pillar 1 581 0x19809, // Shadows Avoid 5
567 0x09E56, // Mountain 3 Right Pillar 2 582 0x19806, // Shadows Avoid 6
568 0x09E5A, // Mountain 3 Right Pillar 3 583 0x196F8, // Shadows Avoid 7
569 0x33961, // Mountain 3 Right Pillar 4 584 0x1972F, // Shadows Avoid 8
570 0x09DD5, // UTM Challenge Pillar 585 0x19797, // Shadows Follow 1
571// 0x1C31A, // Challenge Left Pillar 586 0x1979A, // Shadows Follow 2
572// 0x1C319, // Challenge Right Pillar 587 0x197E0, // Shadows Follow 3
588 0x197E8, // Shadows Follow 4
589 0x197E5, // Shadows Follow 5
590 0x198B5, // Shadows Tutorial 1
591 0x198BD, // Shadows Tutorial 2
592 0x198BF, // Shadows Tutorial 3
593 0x19771, // Shadows Tutorial 4
594 0x0A8DC, // Shadows Tutorial 5
595 0x0AC74, // Shadows Tutorial 6
596 0x0AC7A, // Shadows Tutorial 7
597 0x0A8E0, // Shadows Tutorial 8
573}; 598};
574 599
575std::vector<int> mountainMultipanel = { 600std::vector<int> monasteryPanels = {
576 0x09FCC, // Mountain 2 Multipanel 1 601 0x00290, // Monastery Exterior 1
577 0x09FCE, // Mountain 2 Multipanel 2 602 0x00038, // Monastery Exterior 2
578 0x09FCF, // Mountain 2 Multipanel 3 603 0x00037, // Monastery Exterior 3
579 0x09FD0, // Mountain 2 Multipanel 4 604// 0x09D9B, // Monastery Bonsai
580 0x09FD1, // Mountain 2 Multipanel 5 605 0x193A7, // Monastery Interior 1
581 0x09FD2, // Mountain 2 Multipanel 6 606 0x193AA, // Monastery Interior 2
607 0x193AB, // Monastery Interior 3
608 0x193A6, // Monastery Interior 4
609// 0x03713, // Monastery Shortcut
610};
611
612std::vector<int> bunkerPanels = { // this doesn't want to behave, I have no idea
613 0x17C2E, // Bunker Entry Door
614 0x09F7D, // Bunker Tutorial 1
615 0x09FDC, // Bunker Tutorial 2
616 0x09FF7, // Bunker Tutorial 3
617 0x09F82, // Bunker Tutorial 4
618 0x09FF8, // Bunker Tutorial 5
619 0x09D9F, // Bunker Advanced 1
620 0x09DA1, // Bunker Advanced 2
621 0x09DA2, // Bunker Advanced 3
622 0x09DAF, // Bunker Advanced 4
623 0x0A010, // Bunker Glass 1
624 0x0A01B, // Bunker Glass 2
625 0x0A01F, // Bunker Glass 3
626 0x17E63, // Bunker Ultraviolet 1
627 0x17E67, // Bunker Ultraviolet 2
628 0x0A079, // Bunker Elevator
582}; 629};
583 630
584std::vector<int> utmPanels = { // this looks like it swaps ok but crashes to much to tell, not sure why it's not happy 631std::vector<int> junglePanels = {
585// 0x0A16E, // UTM Challenge Entrance 632 0x002C4, // Jungle Waves 1
586// 0x00FF8, // UTM Entrance Door 633 0x00767, // Jungle Waves 2
587// 0x0A16B, // UTM Green Dots 1 634 0x002C6, // Jungle Waves 3
588// 0x0A2CE, // UTM Green Dots 2 635 0x0070E, // Jungle Waves 4
589// 0x0A2D7, // UTM Green Dots 3 636 0x0070F, // Jungle Waves 5
590// 0x0A2DD, // UTM Green Dots 4 637 0x0087D, // Jungle Waves 6
591// 0x0A2EA, // UTM Green Dots 5 638 0x002C7, // Jungle Waves 7
592// 0x17FB9, // UTM Green Dots 6 639 0x0026D, // Jungle Dots 1
593// 0x335AB, // UTM In Elevator Control 640 0x0026E, // Jungle Dots 2
594// 0x0008F, // UTM Invisible Dots 1 641 0x0026F, // Jungle Dots 3
595// 0x0006B, // UTM Invisible Dots 2 642 0x00C3F, // Jungle Dots 4
596// 0x0008B, // UTM Invisible Dots 3 643 0x00C41, // Jungle Dots 5
597// 0x0008C, // UTM Invisible Dots 4 644 0x014B2, // Jungle Dots 6
598// 0x0008A, // UTM Invisible Dots 5 645};
599// 0x00089, // UTM Invisible Dots 6
600// 0x0006A, // UTM Invisible Dots 7
601// 0x0006C, // UTM Invisible Dots 8
602// 0x00027, // UTM Invisible Dots Symmetry 1
603// 0x00028, // UTM Invisible Dots Symmetry 2
604// 0x00029, // UTM Invisible Dots Symmetry 3
605// 0x3369D, // UTM Lower Elevator Control
606// 0x021D7, // UTM Mountainside Shortcut
607// // 0x288EA, // UTM Perspective 1
608// // 0x288FC, // UTM Perspective 2
609// // 0x289E7, // UTM Perspective 3
610// // 0x288AA, // UTM Perspective 4
611// 0x00B71, // UTM Quarry
612// 0x01A31, // UTM Rainbow
613// // 0x334E1, // UTM Secret Door Control
614// 0x32962, // UTM Swamp
615// 0x32966, // UTM Treehouse
616// 0x335AC, // UTM Upper Elevator Control
617// 0x17CF2, // UTM Waterfall Shortcut
618// 0x00A72, // UTM Blue Cave In
619// 0x009A4, // UTM Blue Discontinuous
620// 0x018A0, // UTM Blue Easy Symmetry
621// 0x01A0D, // UTM Blue Hard Symmetry
622// 0x008B8, // UTM Blue Left 1
623// 0x00973, // UTM Blue Left 2
624// 0x0097B, // UTM Blue Left 3
625// 0x0097D, // UTM Blue Left 4
626// 0x0097E, // UTM Blue Left 5
627// 0x00994, // UTM Blue Right Far 1
628// 0x334D5, // UTM Blue Right Far 2
629// 0x00995, // UTM Blue Right Far 3
630// 0x00996, // UTM Blue Right Far 4
631// 0x00998, // UTM Blue Right Far 5
632// 0x00190, // UTM Blue Right Near 1
633// 0x00558, // UTM Blue Right Near 2
634// 0x00567, // UTM Blue Right Near 3
635// 0x006FE, // UTM Blue Right Near 4
636// // 0x2773D, // Tunnels Desert Shortcut
637// 0x039B4, // Tunnels Theater Catwalk
638// // 0x27732, // Tunnels Theater Shortcut
639// // 0x2FAF6, // Tunnels Vault Box
640// 0x09E85, // Tunnels Town Shortcut
641}; \ No newline at end of file
diff --git a/WitnessRandomizer/WitnessRandomizer.cpp b/WitnessRandomizer/WitnessRandomizer.cpp index 79fb721..2a06ee2 100644 --- a/WitnessRandomizer/WitnessRandomizer.cpp +++ b/WitnessRandomizer/WitnessRandomizer.cpp
@@ -1,15 +1,14 @@
1/* 1/*
2 * BUGS:
3 * Bunker has physical panel objects which I can't move :(
4 * Shipwreck vault does not copy well
5 * FEATURES: 2 * FEATURES:
6 * SWAP_TARGETS should still require the full panel sequence (and have ways to prevent softlocks?) 3 * SWAP_TARGETS should still require the full panel sequence (and have ways to prevent softlocks?)
4 ** Jungle(?), Bunker, Monastery, Challenge(!), Shadows
7 * Randomize audio logs 5 * Randomize audio logs
8 * List of panels which can be valid "Burn" (aka desert) substitutes: Prevent (or limit) panel counting
9 * List of panels which split left/right (for left/right controls) 6 * List of panels which split left/right (for left/right controls)
10 * List of panels which split up/down (for up/down controls) 7 * List of panels which split up/down (for up/down controls)
11 * Swap sounds in jungle (along with panels) -- maybe impossible 8 * Swap sounds in jungle (along with panels) -- maybe impossible
12 * Make orange 7 (all of oranges?) hard. Like big = hard. 9 * Make orange 7 (all of oranges?) hard. Like big = hard.
10 * Kill panel slowdown in tutorial
11 * Fix desert elevator (laser rando) / Add keep?
13 * TRY: 12 * TRY:
14 * Swap treehouse pivots 13 * Swap treehouse pivots
15*/ 14*/
@@ -27,25 +26,21 @@ int main(int argc, char** argv)
27 srand(atoi(argv[1])); // Seed with RNG from command line 26 srand(atoi(argv[1])); // Seed with RNG from command line
28 } 27 }
29 28
30 // randomizer.Randomize(bunkerPanels, SWAP_LINES | SWAP_STYLE); 29 //*
31 /*
32 randomizer.Randomize(lasers, SWAP_TARGETS); 30 randomizer.Randomize(lasers, SWAP_TARGETS);
33 randomizer.Randomize(tutorialPanels, SWAP_TARGETS);
34 randomizer.Randomize(monasteryPanels, SWAP_TARGETS);
35 randomizer.Randomize(shadowsPanels, SWAP_TARGETS);
36 31
37 randomizer.Randomize(desertPanels, SWAP_LINES);
38 randomizer.Randomize(treehousePanels, SWAP_LINES);
39
40 std::vector<int> squarePanels;
41 for (auto panelSet : {outsideTutorialPanels, symmetryPanels, quarryPanels, keepPanels, townPanels, bunkerPanels, swampPanels, mountainPanels, utmPanels}) {
42 squarePanels.insert(squarePanels.end(), panelSet.begin(), panelSet.end());
43 }
44 randomizer.Randomize(squarePanels, SWAP_LINES | SWAP_STYLE); 32 randomizer.Randomize(squarePanels, SWAP_LINES | SWAP_STYLE);
33 randomizer.Randomize(burnablePanels, SWAP_LINES | SWAP_STYLE);
34
35
36 // randomizer.Randomize(monasteryPanels, SWAP_TARGETS);
37 // randomizer.Randomize(shadowsPanels, SWAP_TARGETS);
38 // randomizer.Randomize(bunkerPanels, SWAP_TARGETS);
39
40 // randomizer.Randomize(junglePanels, SWAP_LINES | SWAP_STYLE);
41 // randomizer.Randomize(mountainMultipanel, SWAP_LINES | SWAP_STYLE);
42 // randomizer.Randomize(pillars, SWAP_LINES | SWAP_STYLE | SWAP_BACK_DISTANCE);
45 43
46 randomizer.Randomize(junglePanels, SWAP_LINES | SWAP_STYLE);
47 randomizer.Randomize(mountainMultipanel, SWAP_LINES | SWAP_STYLE);
48 randomizer.Randomize(pillars, SWAP_LINES | SWAP_STYLE | SWAP_BACK_DISTANCE);
49 /*/ 44 /*/
50 int BOATH_3_1 = 0x21B5; 45 int BOATH_3_1 = 0x21B5;
51 int MILL_L_1 = 0xE0C; 46 int MILL_L_1 = 0xE0C;
@@ -65,14 +60,6 @@ int main(int argc, char** argv)
65 int DESERT_L_2 = 0x006E3; 60 int DESERT_L_2 = 0x006E3;
66 int TOWN_S_1 = 0x28AC7; 61 int TOWN_S_1 = 0x28AC7;
67 62
68 std::vector<int> squarePanels;
69 for (auto panelSet : {outsideTutorialPanels, symmetryPanels, quarryPanels, keepPanels, townPanels, bunkerPanels, swampPanels, mountainPanels, utmPanels, treehousePanels}) {
70 squarePanels.insert(squarePanels.end(), panelSet.begin(), panelSet.end());
71 }
72 for (int panel : squarePanels) {
73 randomizer.SwapPanels(DESERT_L_2, panel, SWAP_LINES | SWAP_STYLE);
74 }
75
76 63
77 //randomizer.SwapPanels(PILLAR_L_1, PILLAR_C_L, SWAP_LINES | SWAP_STYLE | SWAP_BACK_DISTANCE); 64 //randomizer.SwapPanels(PILLAR_L_1, PILLAR_C_L, SWAP_LINES | SWAP_STYLE | SWAP_BACK_DISTANCE);
78 //randomizer.SwapPanelData(PILLAR_L_1, PILLAR_C_L, 0x200, 0x50); 65 //randomizer.SwapPanelData(PILLAR_L_1, PILLAR_C_L, 0x200, 0x50);
@@ -89,10 +76,13 @@ WitnessRandomizer::WitnessRandomizer() : _memory("witness64_d3d11.exe")
89 _memory.WriteData<float>({0x5B28C0, 0x18, 0x18076*8, 0x2A8}, {0.0f, 0.0f}); 76 _memory.WriteData<float>({0x5B28C0, 0x18, 0x18076*8, 0x2A8}, {0.0f, 0.0f});
90 // Change desert floating target to desert flood final 77 // Change desert floating target to desert flood final
91 _memory.WriteData<int>({0x5B28C0, 0x18, 0x17ECA*8, 0x2BC}, {0x18077}); 78 _memory.WriteData<int>({0x5B28C0, 0x18, 0x17ECA*8, 0x2BC}, {0x18077});
79 // Distance-gate shadows laser to prevent sniping through the bars
80 _memory.WriteData<float>({0x5B28C0, 0x18, 0x19650*8, 0x3C0}, {2.0f});
81
92 // Explicitly set back-off distance for the challenge entry & final 2 pillars 82 // Explicitly set back-off distance for the challenge entry & final 2 pillars
93 _memory.WriteData<float>({0x5B28C0, 0x18, 0x9DD5*8, 0x22C}, {2.5f}); 83// _memory.WriteData<float>({0x5B28C0, 0x18, 0x9DD5*8, 0x22C}, {2.5f});
94 _memory.WriteData<float>({0x5B28C0, 0x18, 0x1C31A*8, 0x22C}, {3.0f}); 84// _memory.WriteData<float>({0x5B28C0, 0x18, 0x1C31A*8, 0x22C}, {3.0f});
95 _memory.WriteData<float>({0x5B28C0, 0x18, 0x1C319*8, 0x22C}, {3.0f}); 85// _memory.WriteData<float>({0x5B28C0, 0x18, 0x1C319*8, 0x22C}, {3.0f});
96} 86}
97 87
98void WitnessRandomizer::Randomize(std::vector<int> panels, int flags) { 88void WitnessRandomizer::Randomize(std::vector<int> panels, int flags) {
@@ -196,8 +186,8 @@ void WitnessRandomizer::SwapPanelData(int panel1, int panel2, int finalOffset, i
196 std::vector<int> panel2Offset = {0x5B28C0, 0x18, panel2*8, finalOffset}; 186 std::vector<int> panel2Offset = {0x5B28C0, 0x18, panel2*8, finalOffset};
197 187
198 std::vector<byte> panel1Data = _memory.ReadData<byte>(panel1Offset, dataSize); 188 std::vector<byte> panel1Data = _memory.ReadData<byte>(panel1Offset, dataSize);
199 //std::vector<byte> panel2Data = _memory.ReadData<byte>(panel2Offset, dataSize); 189 std::vector<byte> panel2Data = _memory.ReadData<byte>(panel2Offset, dataSize);
200 190
201 _memory.WriteData<byte>(panel2Offset, panel1Data); 191 _memory.WriteData<byte>(panel2Offset, panel1Data);
202 //_memory.WriteData<byte>(panel1Offset, panel2Data); 192 _memory.WriteData<byte>(panel1Offset, panel2Data);
203} 193}