about summary refs log tree commit diff stats
path: root/src/tracker_state.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tracker_state.cpp')
-rw-r--r--src/tracker_state.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/tracker_state.cpp b/src/tracker_state.cpp index 37a7da8..b0e7ccc 100644 --- a/src/tracker_state.cpp +++ b/src/tracker_state.cpp
@@ -45,6 +45,25 @@ bool IsPanelReachable_Helper(int panel_id,
45 return (achievements_accessible >= AP_GetMasteryRequirement()); 45 return (achievements_accessible >= AP_GetMasteryRequirement());
46 } 46 }
47 47
48 if (panel_obj.name == "LEVEL 2" && AP_GetVictoryCondition() == kLEVEL_2) {
49 int counting_panels_accessible = 0;
50
51 for (int reachable_room : reachable_rooms) {
52 const Room& room = GD_GetRoom(reachable_room);
53
54 for (int roomed_panel_id : room.panels) {
55 const Panel& roomed_panel = GD_GetPanel(roomed_panel_id);
56
57 if (!roomed_panel.non_counting &&
58 IsPanelReachable_Helper(roomed_panel_id, reachable_rooms)) {
59 counting_panels_accessible++;
60 }
61 }
62 }
63
64 return (counting_panels_accessible >= AP_GetLevel2Requirement());
65 }
66
48 for (int room_id : panel_obj.required_rooms) { 67 for (int room_id : panel_obj.required_rooms) {
49 if (!reachable_rooms.count(room_id)) { 68 if (!reachable_rooms.count(room_id)) {
50 return false; 69 return false;
@@ -57,6 +76,12 @@ bool IsPanelReachable_Helper(int panel_id,
57 } 76 }
58 } 77 }
59 78
79 for (int panel_id : panel_obj.required_panels) {
80 if (!IsPanelReachable_Helper(panel_id, reachable_rooms)) {
81 return false;
82 }
83 }
84
60 if (AP_IsColorShuffle()) { 85 if (AP_IsColorShuffle()) {
61 for (LingoColor color : panel_obj.colors) { 86 for (LingoColor color : panel_obj.colors) {
62 if (!AP_HasColorItem(color)) { 87 if (!AP_HasColorItem(color)) {