From 21a3bd9f5c6c948d70b22a2cd51ebed7439c8c9f Mon Sep 17 00:00:00 2001 From: Adam Bird Date: Fri, 31 Mar 2023 22:05:14 -0400 Subject: [PATCH] Fix: Actually display correct GS token count in message for vanilla and rando (#2651) * Revert "fix skulltula token count message on vanilla (#2597)" This reverts commit 2117d98178af72e6abdcd2aec66a26d5d8711411. * fix vanilla vs rando gs token count to be correct --- soh/soh/OTRGlobals.cpp | 5 +++- soh/src/overlays/actors/ovl_En_Si/z_en_si.c | 30 +++++++++++---------- 2 files changed, 20 insertions(+), 15 deletions(-) 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); }