diff --git a/CMakeLists.txt b/CMakeLists.txt index 88278ba7d..b5a6707b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,8 +7,8 @@ set(CMAKE_CXX_STANDARD 20 CACHE STRING "The C++ standard to use") set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version" FORCE) project(Ship LANGUAGES C CXX - VERSION 5.0.0) -set(PROJECT_BUILD_NAME "FLYNN ALFA" CACHE STRING "") + VERSION 5.0.1) +set(PROJECT_BUILD_NAME "FLYNN BRAVO" CACHE STRING "") set(PROJECT_TEAM "github.com/harbourmasters" CACHE STRING "") set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT soh) diff --git a/soh/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c b/soh/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c index 3781df076..5aa33a911 100644 --- a/soh/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c +++ b/soh/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c @@ -118,7 +118,10 @@ void func_808C12C4(u8* arg1, s16 arg2) { } void func_808C1554(void* arg0, void* floorTex, s32 arg2, f32 arg3) { - arg0 = ResourceMgr_LoadTexByName(arg0); + // Entering the King Dodongo boss battle was crashing when using only an mq otr + // because it was trying to load a texture from a non-mq path + // HACK: LoadTexByName doesn't account for mq vs non-mq paths, LoadTexOrDListByName does. + arg0 = ResourceMgr_LoadTexOrDListByName(arg0); floorTex = ResourceMgr_LoadTexByName(floorTex); u16* temp_s3 = SEGMENTED_TO_VIRTUAL(arg0); diff --git a/soh/src/overlays/actors/ovl_En_Kz/z_en_kz.c b/soh/src/overlays/actors/ovl_En_Kz/z_en_kz.c index 6b2d4970e..337f136e9 100644 --- a/soh/src/overlays/actors/ovl_En_Kz/z_en_kz.c +++ b/soh/src/overlays/actors/ovl_En_Kz/z_en_kz.c @@ -75,6 +75,10 @@ u16 EnKz_GetTextNoMaskChild(PlayState* play, EnKz* this) { if ((gSaveContext.n64ddFlag && Flags_GetRandomizerInf(RAND_INF_DUNGEONS_DONE_JABU_JABUS_BELLY)) || (!gSaveContext.n64ddFlag && CHECK_QUEST_ITEM(QUEST_ZORA_SAPPHIRE))) { + // Allow turning in Ruto's letter even if you have already rescued her + if (gSaveContext.n64ddFlag && !(gSaveContext.eventChkInf[3] & 8)) { + player->exchangeItemId = EXCH_ITEM_LETTER_RUTO; + } return 0x402B; } else if (gSaveContext.eventChkInf[3] & 8) { return 0x401C; diff --git a/soh/src/overlays/actors/ovl_En_Rr/z_en_rr.c b/soh/src/overlays/actors/ovl_En_Rr/z_en_rr.c index 9e63d7bc7..237b87d9d 100644 --- a/soh/src/overlays/actors/ovl_En_Rr/z_en_rr.c +++ b/soh/src/overlays/actors/ovl_En_Rr/z_en_rr.c @@ -303,7 +303,7 @@ void EnRr_SetupReleasePlayer(EnRr* this, PlayState* play) { this->retreat = true; } } - if (CUR_EQUIP_VALUE(EQUIP_TUNIC) != 1 /* Kokiri tunic */) { + if (CUR_EQUIP_VALUE(EQUIP_TUNIC) != 1 /* Kokiri tunic */ && !gSaveContext.n64ddFlag /* Randomizer Save File */) { tunic = Inventory_DeleteEquipment(play, EQUIP_TUNIC); if (tunic != 0) { this->eatenTunic = tunic; diff --git a/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c b/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c index ece2ff48b..9d75c5753 100644 --- a/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c +++ b/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c @@ -488,6 +488,7 @@ void FileChoose_UpdateMainMenu(GameState* thisx) { this->configMode = CM_ROTATE_TO_QUEST_MENU; } else { this->configMode = CM_ROTATE_TO_NAME_ENTRY; + gSaveContext.isMasterQuest = MIN_QUEST == MASTER_QUEST; this->questType[this->buttonIndex] = MIN_QUEST; CVar_SetS32("gOnFileSelectNameEntry", 1); this->kbdButton = FS_KBD_BTN_NONE;