diff options
| -rw-r--r-- | mm/2s2h/BenGui/BenMenuBar.cpp | 2 | ||||
| -rw-r--r-- | mm/2s2h/BenGui/SearchableMenuItems.h | 2 | ||||
| -rw-r--r-- | mm/2s2h/Enhancements/Cheats/Cheats.h | 1 | ||||
| -rw-r--r-- | mm/2s2h/Enhancements/Cheats/ElegyAnywhere.cpp | 10 | ||||
| -rw-r--r-- | mm/2s2h/Enhancements/Enhancements.cpp | 1 | ||||
| -rw-r--r-- | mm/2s2h/GameInteractor/GameInteractor.h | 1 | ||||
| -rw-r--r-- | mm/src/code/z_message.c | 14 |
7 files changed, 25 insertions, 6 deletions
diff --git a/mm/2s2h/BenGui/BenMenuBar.cpp b/mm/2s2h/BenGui/BenMenuBar.cpp index 6c329fe8e..04a96eaf8 100644 --- a/mm/2s2h/BenGui/BenMenuBar.cpp +++ b/mm/2s2h/BenGui/BenMenuBar.cpp @@ -792,6 +792,8 @@ void DrawCheatsMenu() { { .tooltip = "Holding L makes you float into the air" })) { RegisterMoonJumpOnL(); } + UIWidgets::CVarCheckbox("Elegy of Emptiness Anywhere", "gCheats.ElegyAnywhere", + { .tooltip = "Allows Elegy of Emptiness outside of Ikana" }); UIWidgets::CVarCombobox( "Stop Time in Dungeons", "gCheats.TempleTimeStop", timeStopOptions, { .tooltip = "Stops time from advancing in selected areas. Requires a room change to update.\n\n" diff --git a/mm/2s2h/BenGui/SearchableMenuItems.h b/mm/2s2h/BenGui/SearchableMenuItems.h index 8325ff7a5..f0c3ed129 100644 --- a/mm/2s2h/BenGui/SearchableMenuItems.h +++ b/mm/2s2h/BenGui/SearchableMenuItems.h @@ -973,6 +973,8 @@ void AddEnhancements() { WIDGET_CVAR_CHECKBOX, {}, [](widgetInfo& info) { RegisterMoonJumpOnL(); } }, + { "Elegy of Emptiness Anywhere", "gCheats.ElegyAnywhere", "Allows Elegy of Emptiness outside of Ikana", + WIDGET_CVAR_CHECKBOX }, { "Stop Time in Dungeons", "gCheats.TempleTimeStop", "Stops time from advancing in selected areas. Requires a room change to update.\n\n" diff --git a/mm/2s2h/Enhancements/Cheats/Cheats.h b/mm/2s2h/Enhancements/Cheats/Cheats.h index f89dc877c..d429064b8 100644 --- a/mm/2s2h/Enhancements/Cheats/Cheats.h +++ b/mm/2s2h/Enhancements/Cheats/Cheats.h @@ -7,5 +7,6 @@ void RegisterMoonJumpOnL(); void RegisterTimeStopInTemples(); void RegisterUnbreakableRazorSword(); void RegisterUnrestrictedItems(); +void RegisterElegyAnywhere(); #endif // CHEATS_H diff --git a/mm/2s2h/Enhancements/Cheats/ElegyAnywhere.cpp b/mm/2s2h/Enhancements/Cheats/ElegyAnywhere.cpp new file mode 100644 index 000000000..ee04b4f5c --- /dev/null +++ b/mm/2s2h/Enhancements/Cheats/ElegyAnywhere.cpp @@ -0,0 +1,10 @@ +#include <libultraship/bridge.h> +#include "2s2h/GameInteractor/GameInteractor.h" + +void RegisterElegyAnywhere() { + REGISTER_VB_SHOULD(VB_ELEGY_CHECK_SCENE, { + if (CVarGetInteger("gCheats.ElegyAnywhere", 0)) { + *should = true; + } + }); +} diff --git a/mm/2s2h/Enhancements/Enhancements.cpp b/mm/2s2h/Enhancements/Enhancements.cpp index c8f31b28c..4f58b9755 100644 --- a/mm/2s2h/Enhancements/Enhancements.cpp +++ b/mm/2s2h/Enhancements/Enhancements.cpp @@ -13,6 +13,7 @@ void InitEnhancements() { RegisterUnbreakableRazorSword(); RegisterUnrestrictedItems(); RegisterTimeStopInTemples(); + RegisterElegyAnywhere(); // Clock RegisterTextBasedClock(); diff --git a/mm/2s2h/GameInteractor/GameInteractor.h b/mm/2s2h/GameInteractor/GameInteractor.h index 7937b076b..a49f350fe 100644 --- a/mm/2s2h/GameInteractor/GameInteractor.h +++ b/mm/2s2h/GameInteractor/GameInteractor.h @@ -65,6 +65,7 @@ typedef enum { VB_ZTARGET_SPEED_CHECK, VB_THIEF_BIRD_STEAL, VB_PLAY_CREMIA_HUG_CUTSCENE, + VB_ELEGY_CHECK_SCENE, } GIVanillaBehavior; typedef enum { diff --git a/mm/src/code/z_message.c b/mm/src/code/z_message.c index 7f0c82be5..68d1fa5e7 100644 --- a/mm/src/code/z_message.c +++ b/mm/src/code/z_message.c @@ -4821,12 +4821,14 @@ void Message_DrawMain(PlayState* play, Gfx** gfxP) { if (msgCtx->ocarinaAction == OCARINA_ACTION_FREE_PLAY_DONE) { if (sLastPlayedSong == OCARINA_SONG_ELEGY) { - if ((play->sceneId == SCENE_F40) || (play->sceneId == SCENE_F41) || - (play->sceneId == SCENE_IKANAMAE) || (play->sceneId == SCENE_CASTLE) || - (play->sceneId == SCENE_IKNINSIDE) || (play->sceneId == SCENE_IKANA) || - (play->sceneId == SCENE_INISIE_N) || (play->sceneId == SCENE_INISIE_R) || - (play->sceneId == SCENE_INISIE_BS) || (play->sceneId == SCENE_RANDOM) || - (play->sceneId == SCENE_REDEAD) || (play->sceneId == SCENE_TOUGITES)) { + if (GameInteractor_Should( + VB_ELEGY_CHECK_SCENE, + (play->sceneId == SCENE_F40) || (play->sceneId == SCENE_F41) || + (play->sceneId == SCENE_IKANAMAE) || (play->sceneId == SCENE_CASTLE) || + (play->sceneId == SCENE_IKNINSIDE) || (play->sceneId == SCENE_IKANA) || + (play->sceneId == SCENE_INISIE_N) || (play->sceneId == SCENE_INISIE_R) || + (play->sceneId == SCENE_INISIE_BS) || (play->sceneId == SCENE_RANDOM) || + (play->sceneId == SCENE_REDEAD) || (play->sceneId == SCENE_TOUGITES))) { play->msgCtx.ocarinaMode = OCARINA_MODE_EVENT; } else { sLastPlayedSong = 0xFF; |
