diff options
Diffstat (limited to 'src/tracker_state.cpp')
-rw-r--r-- | src/tracker_state.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/tracker_state.cpp b/src/tracker_state.cpp index a4134f9..c475fb7 100644 --- a/src/tracker_state.cpp +++ b/src/tracker_state.cpp | |||
@@ -486,6 +486,28 @@ class StateCalculator { | |||
486 | return IsDoorReachable(*painting.door); | 486 | return IsDoorReachable(*painting.door); |
487 | } | 487 | } |
488 | 488 | ||
489 | if (panel_obj.panel_door != -1 && AP_GetDoorShuffleMode() == kPANELS_MODE) { | ||
490 | const PanelDoor& panel_door_obj = GD_GetPanelDoor(panel_obj.panel_door); | ||
491 | |||
492 | if (AP_AreDoorsGrouped() && panel_door_obj.group_ap_item_id != -1) { | ||
493 | return AP_HasItem(panel_door_obj.group_ap_item_id) ? kYes : kNo; | ||
494 | } else { | ||
495 | bool has_item = AP_HasItem(panel_door_obj.ap_item_id); | ||
496 | |||
497 | if (!has_item) { | ||
498 | for (const ProgressiveRequirement& prog_req : | ||
499 | panel_door_obj.progressives) { | ||
500 | if (AP_HasItem(prog_req.ap_item_id, prog_req.quantity)) { | ||
501 | has_item = true; | ||
502 | break; | ||
503 | } | ||
504 | } | ||
505 | } | ||
506 | |||
507 | return has_item ? kYes : kNo; | ||
508 | } | ||
509 | } | ||
510 | |||
489 | return kYes; | 511 | return kYes; |
490 | } | 512 | } |
491 | 513 | ||