diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index f6e5bc5d8..e76576f39 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1677,8 +1677,11 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) { } else { textId = TEXT_GS_FREEZE; } + // In vanilla, GS token count is incremented prior to the text box displaying + // In rando we need to bump the token count by one to show the correct count + s16 gsCount = gSaveContext.inventory.gsTokens + (gSaveContext.n64ddFlag ? 1 : 0); messageEntry = CustomMessageManager::Instance->RetrieveMessage(customMessageTableID, textId); - CustomMessageManager::ReplaceStringInMessage(messageEntry, "{{gsCount}}", std::to_string(gSaveContext.inventory.gsTokens)); + CustomMessageManager::ReplaceStringInMessage(messageEntry, "{{gsCount}}", std::to_string(gsCount)); } } if (textId == TEXT_HEART_CONTAINER && CVarGetInteger("gInjectItemCounts", 0)) { diff --git a/soh/src/overlays/actors/ovl_En_Si/z_en_si.c b/soh/src/overlays/actors/ovl_En_Si/z_en_si.c index d9eb19ebe..344173805 100644 --- a/soh/src/overlays/actors/ovl_En_Si/z_en_si.c +++ b/soh/src/overlays/actors/ovl_En_Si/z_en_si.c @@ -103,11 +103,6 @@ void func_80AFB768(EnSi* this, PlayState* play) { if (gSaveContext.n64ddFlag) { Randomizer_UpdateSkullReward(this, play); - if (getItemId != RG_ICE_TRAP) { - Randomizer_GiveSkullReward(this, play); - } else { - gSaveContext.pendingIceTrapCount++; - } } else { Item_Give(play, giveItemId); } @@ -122,8 +117,14 @@ void func_80AFB768(EnSi* this, PlayState* play) { Message_StartTextbox(play, textId, NULL); - if (gSaveContext.n64ddFlag && getItemId != RG_ICE_TRAP) { - Audio_PlayFanfare_Rando(getItem); + if (gSaveContext.n64ddFlag) { + if (getItemId != RG_ICE_TRAP) { + Randomizer_GiveSkullReward(this, play); + Audio_PlayFanfare_Rando(getItem); + } else { + gSaveContext.pendingIceTrapCount++; + Audio_PlayFanfare(NA_BGM_SMALL_ITEM_GET); + } } else { Audio_PlayFanfare(NA_BGM_SMALL_ITEM_GET); } @@ -148,19 +149,20 @@ void func_80AFB89C(EnSi* this, PlayState* play) { if (!CHECK_FLAG_ALL(this->actor.flags, ACTOR_FLAG_13)) { if (gSaveContext.n64ddFlag) { Randomizer_UpdateSkullReward(this, play); - if (getItemId != RG_ICE_TRAP) { - Randomizer_GiveSkullReward(this, play); - } else { - gSaveContext.pendingIceTrapCount++; - } } else { Item_Give(play, giveItemId); } Message_StartTextbox(play, textId, NULL); - if (gSaveContext.n64ddFlag && getItemId != RG_ICE_TRAP) { - Audio_PlayFanfare_Rando(getItem); + if (gSaveContext.n64ddFlag) { + if (getItemId != RG_ICE_TRAP) { + Randomizer_GiveSkullReward(this, play); + Audio_PlayFanfare_Rando(getItem); + } else { + gSaveContext.pendingIceTrapCount++; + Audio_PlayFanfare(NA_BGM_SMALL_ITEM_GET); + } } else { Audio_PlayFanfare(NA_BGM_SMALL_ITEM_GET); }