From 92b91d6703c96f1724168e5e4845cfba6c802de4 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sat, 17 May 2025 12:10:41 -0400 Subject: Add static painting logic This goes alongside https://github.com/ArchipelagoMW/Archipelago/pull/5005, but it can't be merged into main until an AP release containing that PR happens. --- src/game_data.cpp | 4 ++++ src/game_data.h | 1 + src/tracker_state.cpp | 7 ++++--- 3 files changed, 9 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/game_data.cpp b/src/game_data.cpp index 94b9888..588ffc8 100644 --- a/src/game_data.cpp +++ b/src/game_data.cpp @@ -127,6 +127,10 @@ struct GameData { exit_obj.type = EntranceType::kCrossroadsRoofAccess; } + if (option["static_painting"] && option["static_painting"].as()) { + exit_obj.type = EntranceType::kStaticPainting; + } + rooms_[from_room_id].exits.push_back(exit_obj); }; diff --git a/src/game_data.h b/src/game_data.h index ac911e5..8d3db4b 100644 --- a/src/game_data.h +++ b/src/game_data.h @@ -31,6 +31,7 @@ enum class EntranceType { kWarp, kPilgrimage, kCrossroadsRoofAccess, + kStaticPainting, }; enum class DoorType { diff --git a/src/tracker_state.cpp b/src/tracker_state.cpp index bf2725a..674f68a 100644 --- a/src/tracker_state.cpp +++ b/src/tracker_state.cpp @@ -342,7 +342,7 @@ class StateCalculator { new_boundary.push_back( {.source_room = room_exit.destination_room, .destination_room = GD_GetRoomByName("Color Hallways"), - .type = EntranceType::kPainting}); + .type = EntranceType::kStaticPainting}); } if (AP_IsPilgrimageEnabled()) { @@ -368,7 +368,7 @@ class StateCalculator { .destination_room = GD_GetRoomByName("Pilgrim Antechamber"), .door = GD_GetDoorByName("Pilgrim Antechamber - Sun Painting"), - .type = EntranceType::kPainting}); + .type = EntranceType::kStaticPainting}); } } @@ -650,7 +650,8 @@ class StateCalculator { !AP_DoesPilgrimageAllowRoofAccess()) { return kNo; } - if (room_exit.type == EntranceType::kPainting && + if ((room_exit.type == EntranceType::kPainting || + room_exit.type == EntranceType::kStaticPainting) && !AP_DoesPilgrimageAllowPaintings()) { return kNo; } -- cgit 1.4.1