summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorjbzdarkid <jbzdarkid@gmail.com>2019-11-08 09:13:28 -0800
committerjbzdarkid <jbzdarkid@gmail.com>2019-11-08 09:14:09 -0800
commit0e6b61f87b676028fcfd75bbf576f48a0ef91632 (patch)
treef727207008e55cc3d56ea549206d09705037f153
parent0f568de726da77bfb0964f20d5be6691245b3da9 (diff)
downloadwitness-tutorializer-0e6b61f87b676028fcfd75bbf576f48a0ef91632.tar.gz
witness-tutorializer-0e6b61f87b676028fcfd75bbf576f48a0ef91632.tar.bz2
witness-tutorializer-0e6b61f87b676028fcfd75bbf576f48a0ef91632.zip
Add orchard + transparent swapping
-rw-r--r--App/Version.h4
-rw-r--r--Installer/Installer.vdproj14
-rw-r--r--Source/Memory.h4
-rw-r--r--Source/Panel.cpp2
-rw-r--r--Source/Panels.h29
-rw-r--r--Source/Randomizer.cpp18
6 files changed, 49 insertions, 22 deletions
diff --git a/App/Version.h b/App/Version.h index 32753aa..8068f03 100644 --- a/App/Version.h +++ b/App/Version.h
@@ -4,8 +4,8 @@
4#define TO_STRING(s) TO_STRING2(s) 4#define TO_STRING(s) TO_STRING2(s)
5 5
6#define MAJOR 5 6#define MAJOR 5
7#define MINOR 1 7#define MINOR 2
8#define PATCH 1 8#define PATCH 0
9 9
10#define VERSION_STR TO_STRING(MAJOR) L"." TO_STRING(MINOR) L"." TO_STRING(PATCH) 10#define VERSION_STR TO_STRING(MAJOR) L"." TO_STRING(MINOR) L"." TO_STRING(PATCH)
11#define VERSION MAJOR, MINOR, PATCH 11#define VERSION MAJOR, MINOR, PATCH
diff --git a/Installer/Installer.vdproj b/Installer/Installer.vdproj index de202fb..e791590 100644 --- a/Installer/Installer.vdproj +++ b/Installer/Installer.vdproj
@@ -44,6 +44,14 @@
44 "PrerequisitesLocation" = "2:1" 44 "PrerequisitesLocation" = "2:1"
45 "Url" = "8:" 45 "Url" = "8:"
46 "ComponentsUrl" = "8:" 46 "ComponentsUrl" = "8:"
47 "Items"
48 {
49 "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.6.1"
50 {
51 "Name" = "8:Microsoft .NET Framework 4.6.1 (x86 and x64)"
52 "ProductCode" = "8:.NETFramework,Version=v4.6.1"
53 }
54 }
47 } 55 }
48 } 56 }
49 "Release" 57 "Release"
@@ -154,15 +162,15 @@
154 { 162 {
155 "Name" = "8:Microsoft Visual Studio" 163 "Name" = "8:Microsoft Visual Studio"
156 "ProductName" = "8:Witness Randomizer" 164 "ProductName" = "8:Witness Randomizer"
157 "ProductCode" = "8:{BF672BB2-4FD0-44B6-B279-C5F7346649DC}" 165 "ProductCode" = "8:{5A3C6188-EA4B-4FEE-94EE-BF7D91681792}"
158 "PackageCode" = "8:{F55A05A7-103A-4E8D-B88F-94C00188B9A6}" 166 "PackageCode" = "8:{E8C66354-4ED4-4958-9D6C-A0DC3BD6C3EA}"
159 "UpgradeCode" = "8:{4CB5496B-A47E-41D3-B4A7-677E29AB7513}" 167 "UpgradeCode" = "8:{4CB5496B-A47E-41D3-B4A7-677E29AB7513}"
160 "AspNetVersion" = "8:2.0.50727.0" 168 "AspNetVersion" = "8:2.0.50727.0"
161 "RestartWWWService" = "11:FALSE" 169 "RestartWWWService" = "11:FALSE"
162 "RemovePreviousVersions" = "11:TRUE" 170 "RemovePreviousVersions" = "11:TRUE"
163 "DetectNewerInstalledVersion" = "11:TRUE" 171 "DetectNewerInstalledVersion" = "11:TRUE"
164 "InstallAllUsers" = "11:FALSE" 172 "InstallAllUsers" = "11:FALSE"
165 "ProductVersion" = "8:5.1.1" 173 "ProductVersion" = "8:5.2.0"
166 "Manufacturer" = "8:jbzdarkid" 174 "Manufacturer" = "8:jbzdarkid"
167 "ARPHELPTELEPHONE" = "8:" 175 "ARPHELPTELEPHONE" = "8:"
168 "ARPHELPLINK" = "8:https://www.github.com/jbzdarkid/witness-randomizer/issues" 176 "ARPHELPLINK" = "8:https://www.github.com/jbzdarkid/witness-randomizer/issues"
diff --git a/Source/Memory.h b/Source/Memory.h index 6e0c7b1..c19d92b 100644 --- a/Source/Memory.h +++ b/Source/Memory.h
@@ -5,8 +5,8 @@
5#include <vector> 5#include <vector>
6#include <windows.h> 6#include <windows.h>
7 7
8#define GLOBALS 0x5B28C0 8// #define GLOBALS 0x5B28C0
9// #define GLOBALS 0x62D0A0 9#define GLOBALS 0x62D0A0
10 10
11#define HEARTBEAT 0x401 11#define HEARTBEAT 0x401
12enum class ProcStatus { 12enum class ProcStatus {
diff --git a/Source/Panel.cpp b/Source/Panel.cpp index ea65142..43e9763 100644 --- a/Source/Panel.cpp +++ b/Source/Panel.cpp
@@ -4,6 +4,8 @@
4#include "Randomizer.h" 4#include "Randomizer.h"
5#include <sstream> 5#include <sstream>
6 6
7#pragma warning (disable:26451)
8
7template <class T> 9template <class T>
8int find(const std::vector<T> &data, T search, size_t startIndex = 0) { 10int find(const std::vector<T> &data, T search, size_t startIndex = 0) {
9 for (size_t i=startIndex ; i<data.size(); i++) { 11 for (size_t i=startIndex ; i<data.size(); i++) {
diff --git a/Source/Panels.h b/Source/Panels.h index 5b4e085..7959e21 100644 --- a/Source/Panels.h +++ b/Source/Panels.h
@@ -544,7 +544,6 @@ std::vector<int> junglePanels = {
544 0x03616, // Jungle Laser 544 0x03616, // Jungle Laser
545}; 545};
546 546
547
548std::vector<int> audiologs = { 547std::vector<int> audiologs = {
549 0x3C0F7, // Boat Treehouse Rock 548 0x3C0F7, // Boat Treehouse Rock
550 0x3C0FD, // Boat Broken Boat 549 0x3C0FD, // Boat Broken Boat
@@ -610,6 +609,22 @@ std::vector<int> audiologs = {
610// 0x338CA, // UTM Invisible Dots 609// 0x338CA, // UTM Invisible Dots
611}; 610};
612 611
612std::vector<int> orchard {
613 0x00143, // Orchard Apple Tree 1
614 0x0003B, // Orchard Apple Tree 2
615 0x00055, // Orchard Apple Tree 3
616 0x032F7, // Orchard Apple Tree 4
617 0x032FF, // Orchard Apple Tree 5
618};
619
620std::vector<int> transparent {
621 0x009B8, // Symmetry Island Transparent 1
622 0x003E8, // Symmetry Island Transparent 2
623 0x00A15, // Symmetry Island Transparent 3
624 0x00B53, // Symmetry Island Transparent 4
625 0x00B8D, // Symmetry Island Transparent 5
626};
627
613// There might be something to do with these, I haven't decided yet. 628// There might be something to do with these, I haven't decided yet.
614std::vector<int> nothingPanels = { 629std::vector<int> nothingPanels = {
615// Doors & Shortcuts & Shortcut doors & Door controls 630// Doors & Shortcuts & Shortcut doors & Door controls
@@ -671,18 +686,6 @@ std::vector<int> nothingPanels = {
671 0x09DB8, // Swamp Summon Boat 686 0x09DB8, // Swamp Summon Boat
672 0x17CDF, // Jungle Summon Boat 687 0x17CDF, // Jungle Summon Boat
673 688
674// Identical sets
675 0x00143, // Orchard Apple Tree 1
676 0x0003B, // Orchard Apple Tree 2
677 0x00055, // Orchard Apple Tree 3
678 0x032F7, // Orchard Apple Tree 4
679 0x032FF, // Orchard Apple Tree 5
680 0x009B8, // Symmetry Island Transparent 1
681 0x003E8, // Symmetry Island Transparent 2
682 0x00A15, // Symmetry Island Transparent 3
683 0x00B53, // Symmetry Island Transparent 4
684 0x00B8D, // Symmetry Island Transparent 5
685
686// Misc 689// Misc
687 0x03629, // Tutorial Gate Open 690 0x03629, // Tutorial Gate Open
688 0x09FAA, // Desert Lightswitch 691 0x09FAA, // Desert Lightswitch
diff --git a/Source/Randomizer.cpp b/Source/Randomizer.cpp index 9b877cd..14583f8 100644 --- a/Source/Randomizer.cpp +++ b/Source/Randomizer.cpp
@@ -139,18 +139,18 @@ void Randomizer::Randomize() {
139 139
140 // Individual area modifications 140 // Individual area modifications
141 RandomizeTutorial(); 141 RandomizeTutorial();
142 RandomizeSymmetry();
143 RandomizeDesert(); 142 RandomizeDesert();
144 RandomizeQuarry(); 143 RandomizeQuarry();
145 RandomizeTreehouse(); 144 RandomizeTreehouse();
146 RandomizeKeep(); 145 RandomizeKeep();
147 RandomizeShadows(); 146 RandomizeShadows();
148 RandomizeTown();
149 RandomizeMonastery(); 147 RandomizeMonastery();
150 RandomizeBunker(); 148 RandomizeBunker();
151 RandomizeJungle(); 149 RandomizeJungle();
152 RandomizeSwamp(); 150 RandomizeSwamp();
153 RandomizeMountain(); 151 RandomizeMountain();
152 RandomizeTown();
153 RandomizeSymmetry();
154 // RandomizeAudioLogs(); 154 // RandomizeAudioLogs();
155} 155}
156 156
@@ -188,6 +188,10 @@ void Randomizer::RandomizeTutorial() {
188} 188}
189 189
190void Randomizer::RandomizeSymmetry() { 190void Randomizer::RandomizeSymmetry() {
191 std::vector<int> randomOrder(transparent.size(), 0);
192 std::iota(randomOrder.begin(), randomOrder.end(), 0);
193 RandomizeRange(randomOrder, SWAP::NONE, 1, 5);
194 ReassignTargets(transparent, randomOrder);
191} 195}
192 196
193void Randomizer::RandomizeDesert() { 197void Randomizer::RandomizeDesert() {
@@ -238,6 +242,16 @@ void Randomizer::RandomizeShadows() {
238} 242}
239 243
240void Randomizer::RandomizeTown() { 244void Randomizer::RandomizeTown() {
245 // @Hack...? To open the gate at the end
246 std::vector<int> randomOrder(orchard.size() + 1, 0);
247 std::iota(randomOrder.begin(), randomOrder.end(), 0);
248 RandomizeRange(randomOrder, SWAP::NONE, 1, 5);
249 // Ensure that we open the gate before the final puzzle (by swapping)
250 int panel3Index = find(randomOrder, 3);
251 int panel4Index = find(randomOrder, 4);
252 randomOrder[min(panel3Index, panel4Index)] = 3;
253 randomOrder[max(panel3Index, panel4Index)] = 4;
254 ReassignTargets(orchard, randomOrder);
241} 255}
242 256
243void Randomizer::RandomizeMonastery() { 257void Randomizer::RandomizeMonastery() {