diff options
Diffstat (limited to 'src/tracker_state.cpp')
-rw-r--r-- | src/tracker_state.cpp | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/src/tracker_state.cpp b/src/tracker_state.cpp index 640a159..1881513 100644 --- a/src/tracker_state.cpp +++ b/src/tracker_state.cpp | |||
@@ -199,7 +199,7 @@ class StateCalculator { | |||
199 | case kSUNWARP_ACCESS_PROGRESSIVE: | 199 | case kSUNWARP_ACCESS_PROGRESSIVE: |
200 | return IsNonGroupedDoorReachable(door_obj); | 200 | return IsNonGroupedDoorReachable(door_obj); |
201 | } | 201 | } |
202 | } else if (AP_GetDoorShuffleMode() == kNO_DOORS || door_obj.skip_item) { | 202 | } else if (AP_GetDoorShuffleMode() != kDOORS_MODE || door_obj.skip_item) { |
203 | if (!reachable_rooms_.count(door_obj.room)) { | 203 | if (!reachable_rooms_.count(door_obj.room)) { |
204 | return kMaybe; | 204 | return kMaybe; |
205 | } | 205 | } |
@@ -211,7 +211,7 @@ class StateCalculator { | |||
211 | } | 211 | } |
212 | 212 | ||
213 | return kYes; | 213 | return kYes; |
214 | } else if (AP_GetDoorShuffleMode() == kSIMPLE_DOORS && | 214 | } else if (AP_GetDoorShuffleMode() == kDOORS_MODE && AP_AreDoorsGrouped() && |
215 | !door_obj.group_name.empty()) { | 215 | !door_obj.group_name.empty()) { |
216 | return AP_HasItem(door_obj.group_ap_item_id) ? kYes : kNo; | 216 | return AP_HasItem(door_obj.group_ap_item_id) ? kYes : kNo; |
217 | } else { | 217 | } else { |
@@ -309,6 +309,28 @@ class StateCalculator { | |||
309 | } | 309 | } |
310 | } | 310 | } |
311 | 311 | ||
312 | if (panel_obj.panel_door != -1 && AP_GetDoorShuffleMode() == kPANELS_MODE) { | ||
313 | const PanelDoor& panel_door_obj = GD_GetPanelDoor(panel_obj.panel_door); | ||
314 | |||
315 | if (AP_AreDoorsGrouped() && panel_door_obj.group_ap_item_id != -1) { | ||
316 | return AP_HasItem(panel_door_obj.group_ap_item_id) ? kYes : kNo; | ||
317 | } else { | ||
318 | bool has_item = AP_HasItem(panel_door_obj.ap_item_id); | ||
319 | |||
320 | if (!has_item) { | ||
321 | for (const ProgressiveRequirement& prog_req : | ||
322 | panel_door_obj.progressives) { | ||
323 | if (AP_HasItem(prog_req.ap_item_id, prog_req.quantity)) { | ||
324 | has_item = true; | ||
325 | break; | ||
326 | } | ||
327 | } | ||
328 | } | ||
329 | |||
330 | return has_item ? kYes : kNo; | ||
331 | } | ||
332 | } | ||
333 | |||
312 | return kYes; | 334 | return kYes; |
313 | } | 335 | } |
314 | 336 | ||