diff options
-rw-r--r-- | src/ap_state.cpp | 6 | ||||
-rw-r--r-- | src/ap_state.h | 2 | ||||
-rw-r--r-- | src/tracker_state.cpp | 5 |
3 files changed, 13 insertions, 0 deletions
diff --git a/src/ap_state.cpp b/src/ap_state.cpp index 8bc7ed0..50601d4 100644 --- a/src/ap_state.cpp +++ b/src/ap_state.cpp | |||
@@ -59,6 +59,7 @@ struct APState { | |||
59 | int level_2_requirement = 223; | 59 | int level_2_requirement = 223; |
60 | LocationChecks location_checks = kNORMAL_LOCATIONS; | 60 | LocationChecks location_checks = kNORMAL_LOCATIONS; |
61 | VictoryCondition victory_condition = kTHE_END; | 61 | VictoryCondition victory_condition = kTHE_END; |
62 | bool early_color_hallways = false; | ||
62 | 63 | ||
63 | std::map<std::string, std::string> painting_mapping; | 64 | std::map<std::string, std::string> painting_mapping; |
64 | 65 | ||
@@ -119,6 +120,7 @@ struct APState { | |||
119 | level_2_requirement = 223; | 120 | level_2_requirement = 223; |
120 | location_checks = kNORMAL_LOCATIONS; | 121 | location_checks = kNORMAL_LOCATIONS; |
121 | victory_condition = kTHE_END; | 122 | victory_condition = kTHE_END; |
123 | early_color_hallways = false; | ||
122 | 124 | ||
123 | connected = false; | 125 | connected = false; |
124 | has_connection_result = false; | 126 | has_connection_result = false; |
@@ -211,6 +213,8 @@ struct APState { | |||
211 | location_checks = slot_data["location_checks"].get<LocationChecks>(); | 213 | location_checks = slot_data["location_checks"].get<LocationChecks>(); |
212 | victory_condition = | 214 | victory_condition = |
213 | slot_data["victory_condition"].get<VictoryCondition>(); | 215 | slot_data["victory_condition"].get<VictoryCondition>(); |
216 | early_color_hallways = slot_data.contains("early_color_hallways") && | ||
217 | slot_data["early_color_hallways"].get<int>() == 1; | ||
214 | 218 | ||
215 | if (painting_shuffle && slot_data.contains("painting_entrance_to_exit")) { | 219 | if (painting_shuffle && slot_data.contains("painting_entrance_to_exit")) { |
216 | painting_mapping.clear(); | 220 | painting_mapping.clear(); |
@@ -394,3 +398,5 @@ VictoryCondition AP_GetVictoryCondition() { | |||
394 | bool AP_HasAchievement(const std::string& achievement_name) { | 398 | bool AP_HasAchievement(const std::string& achievement_name) { |
395 | return GetState().HasAchievement(achievement_name); | 399 | return GetState().HasAchievement(achievement_name); |
396 | } | 400 | } |
401 | |||
402 | bool AP_HasEarlyColorHallways() { return GetState().early_color_hallways; } | ||
diff --git a/src/ap_state.h b/src/ap_state.h index 64caeea..3fd51aa 100644 --- a/src/ap_state.h +++ b/src/ap_state.h | |||
@@ -40,4 +40,6 @@ VictoryCondition AP_GetVictoryCondition(); | |||
40 | 40 | ||
41 | bool AP_HasAchievement(const std::string& achievement_name); | 41 | bool AP_HasAchievement(const std::string& achievement_name); |
42 | 42 | ||
43 | bool AP_HasEarlyColorHallways(); | ||
44 | |||
43 | #endif /* end of include guard: AP_STATE_H_664A4180 */ | 45 | #endif /* end of include guard: AP_STATE_H_664A4180 */ |
diff --git a/src/tracker_state.cpp b/src/tracker_state.cpp index 0976461..002f447 100644 --- a/src/tracker_state.cpp +++ b/src/tracker_state.cpp | |||
@@ -148,6 +148,11 @@ void RecalculateReachability() { | |||
148 | std::list<Exit> flood_boundary; | 148 | std::list<Exit> flood_boundary; |
149 | flood_boundary.push_back({.destination_room = GD_GetRoomByName("Menu")}); | 149 | flood_boundary.push_back({.destination_room = GD_GetRoomByName("Menu")}); |
150 | 150 | ||
151 | if (AP_HasEarlyColorHallways()) { | ||
152 | flood_boundary.push_back( | ||
153 | {.destination_room = GD_GetRoomByName("Outside The Undeterred")}); | ||
154 | } | ||
155 | |||
151 | bool reachable_changed = true; | 156 | bool reachable_changed = true; |
152 | while (reachable_changed) { | 157 | while (reachable_changed) { |
153 | reachable_changed = false; | 158 | reachable_changed = false; |