diff --git a/src/d/actor/d_a_alink_demo.inc b/src/d/actor/d_a_alink_demo.inc index d0dda1b36f..47c165d8a8 100644 --- a/src/d/actor/d_a_alink_demo.inc +++ b/src/d/actor/d_a_alink_demo.inc @@ -4322,6 +4322,10 @@ int daAlink_c::procGanonFinishInit() { dusk::m_speedrunInfo.stopRun(); } } + + if (dusk::archi::ArchipelagoContext::IsConnected()) { + dusk::archi::ArchipelagoContext::TryHandleGameComplete(); + } #endif return 1; diff --git a/src/dusk/archipelago/archipelago_context.cpp b/src/dusk/archipelago/archipelago_context.cpp index 0964c4bbcf..2cec97ef9b 100644 --- a/src/dusk/archipelago/archipelago_context.cpp +++ b/src/dusk/archipelago/archipelago_context.cpp @@ -727,6 +727,12 @@ void ArchipelagoContext::TryHandleDeathLink() { } } +bool ArchipelagoContext::TryHandleGameComplete() { + // TODO: maybe add support for other game completion types? + AP_StoryComplete(); + return true; +} + void ArchipelagoContext::RequestAllLocationScout(bool isHint) { std::set locations; // TEMP: apworld has 475 locations with ids in sequential order, so add them all individually to location set diff --git a/src/dusk/archipelago/archipelago_context.hpp b/src/dusk/archipelago/archipelago_context.hpp index b2b8660d19..084c3f92c5 100644 --- a/src/dusk/archipelago/archipelago_context.hpp +++ b/src/dusk/archipelago/archipelago_context.hpp @@ -119,6 +119,8 @@ namespace dusk::archi static void TryHandleDeathLink(); + static bool TryHandleGameComplete(); + // State Requesters static void RequestAllLocationScout(bool isHint = false);