From 95e699fb63c89af3fae1cd988c601a2cad3c105d Mon Sep 17 00:00:00 2001 From: gymnast86 Date: Wed, 6 May 2026 03:48:06 -0700 Subject: [PATCH] don't transform in twilight fog if the player doesn't have shadow crystal --- src/d/actor/d_a_alink.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/d/actor/d_a_alink.cpp b/src/d/actor/d_a_alink.cpp index 8766bface1..e088319225 100644 --- a/src/d/actor/d_a_alink.cpp +++ b/src/d/actor/d_a_alink.cpp @@ -55,6 +55,13 @@ #include "res/Object/Alink.h" #include +#include "dusk/randomizer/game/flags.h" +#include "dusk/randomizer/game/stages.h" + +#if TARGET_PC +#include "dusk/randomizer/game/tools.h" +#endif + static int daAlink_Create(fopAc_ac_c* i_this); static int daAlink_Delete(daAlink_c* i_this); static int daAlink_Execute(daAlink_c* i_this); @@ -12265,6 +12272,14 @@ BOOL daAlink_c::checkGroundSpecialMode() { if (mLinkAcch.ChkGroundHit() && !checkModeFlg(MODE_PLAYER_FLY) && !checkMagneBootsOn() && checkEndResetFlg0(ERFLG0_FORCE_WOLF_CHANGE)) { +#if TARGET_PC + u8 stage = getStageID(); + // In rando, don't transform in twilight fog unless we have shadow crystal + if (randomizer_IsActive() && !dComIfGs_isEventBit(TRANSFORMING_UNLOCKED) && + (stage == Palace_of_Twilight || stage == Phantom_Zant_1 || stage == Phantom_Zant_2)) { + return 0; + } +#endif return procCoMetamorphoseInit(); }