diff --git a/soh/src/code/z_play.c b/soh/src/code/z_play.c index 981f5b975..418eff501 100644 --- a/soh/src/code/z_play.c +++ b/soh/src/code/z_play.c @@ -874,7 +874,7 @@ void Play_Update(PlayState* play) { // Also don't save when you first load a file to prevent consumables like magic from being lost // Also don't save if there's a pending shop sale to prevent getting the item for a discount! if ((CVarGetInteger("gAutosave", 0) >= 1) && (CVarGetInteger("gAutosave", 0) <= 3) && - (gSaveContext.cutsceneIndex == 0) && (play->gameplayFrames > 60) && (gSaveContext.pendingSale == ITEM_NONE) && + (gSaveContext.cutsceneIndex < 0xFFF0) && (play->gameplayFrames > 60) && (gSaveContext.pendingSale == ITEM_NONE) && (play->sceneNum != SCENE_YOUSEI_IZUMI_TATE) && (play->sceneNum != SCENE_KAKUSIANA) && (play->sceneNum != SCENE_KENJYANOMA)) { Play_PerformSave(play); } diff --git a/soh/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c b/soh/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c index 1d9ea6608..1e55d073b 100644 --- a/soh/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c +++ b/soh/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c @@ -13,6 +13,7 @@ #include "objects/object_mastergolon/object_mastergolon.h" #include "objects/object_masterzoora/object_masterzoora.h" #include "objects/object_masterkokirihead/object_masterkokirihead.h" +#include "soh/Enhancements/randomizer/randomizer_entrance.h" #define FLAGS (ACTOR_FLAG_0 | ACTOR_FLAG_3 | ACTOR_FLAG_4) @@ -934,7 +935,12 @@ void EnOssan_State_StartConversation(EnOssan* this, PlayState* play, Player* pla EnOssan_TryPaybackMask(this, play); return; case OSSAN_HAPPY_STATE_ANGRY: - play->nextEntranceIndex = 0x1D1; + // In ER, handle happy mask throwing link out with not enough rupees + if (gSaveContext.n64ddFlag && Randomizer_GetSettingValue(RSK_SHUFFLE_ENTRANCES)) { + play->nextEntranceIndex = Entrance_OverrideNextIndex(0x1D1); + } else { + play->nextEntranceIndex = 0x1D1; + } play->sceneLoadFlag = 0x14; play->fadeTransition = 0x2E; return; diff --git a/soh/src/overlays/actors/ovl_player_actor/z_player.c b/soh/src/overlays/actors/ovl_player_actor/z_player.c index cd9d50e00..8196058f1 100644 --- a/soh/src/overlays/actors/ovl_player_actor/z_player.c +++ b/soh/src/overlays/actors/ovl_player_actor/z_player.c @@ -12604,7 +12604,8 @@ s32 func_8084DFF4(PlayState* play, Player* this) { } this->unk_84F = 1; equipItem = giEntry.itemId; - equipNow = CVarGetInteger("gAskToEquip", 0) && equipItem >= ITEM_SWORD_KOKIRI && equipItem <= ITEM_TUNIC_ZORA && + equipNow = CVarGetInteger("gAskToEquip", 0) && giEntry.modIndex == MOD_NONE && + equipItem >= ITEM_SWORD_KOKIRI && equipItem <= ITEM_TUNIC_ZORA && ((gItemAgeReqs[equipItem] == 9 || gItemAgeReqs[equipItem] == gSaveContext.linkAge) || CVarGetInteger("gTimelessEquipment", 0));