summaryrefslogtreecommitdiff
path: root/soh/src/code
diff options
context:
space:
mode:
authorChristopher Leggett <chris@leggett.dev>2023-05-20 09:24:02 -0400
committerGitHub <noreply@github.com>2023-05-20 09:24:02 -0400
commit4d02d89e03727c8e4d71541ff8eb9a5cdf260e8f (patch)
tree8f6ece49d46f58a4aa7f8453f00220f2871306fb /soh/src/code
parent30cc61abce6def547994f64d6563e096d3de320d (diff)
Fixes buying songs crash on Switch (#2899)
Diffstat (limited to 'soh/src/code')
-rw-r--r--soh/src/code/z_parameter.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/soh/src/code/z_parameter.c b/soh/src/code/z_parameter.c
index 954ce1190..42bdbd77a 100644
--- a/soh/src/code/z_parameter.c
+++ b/soh/src/code/z_parameter.c
@@ -15,6 +15,7 @@
#endif
#include "soh/Enhancements/game-interactor/GameInteractor.h"
+#include "soh/Enhancements/game-interactor/GameInteractor_Hooks.h"
#define DO_ACTION_TEX_WIDTH() 48
@@ -1706,7 +1707,7 @@ u8 Return_Item_Entry(GetItemEntry itemEntry, ItemID returnItem ) {
// Processes Item_Give returns
u8 Return_Item(u8 itemID, ModIndex modId, ItemID returnItem) {
- uint32_t get = GetGIID(itemID);
+ int32_t get = GetGIID(itemID);
if (get == -1) {
modId = MOD_RANDOMIZER;
get = itemID;
@@ -6158,8 +6159,13 @@ void Interface_Update(PlayState* play) {
u16 tempSaleMod = gSaveContext.pendingSaleMod;
gSaveContext.pendingSale = ITEM_NONE;
gSaveContext.pendingSaleMod = MOD_NONE;
- if (tempSaleMod == 0) {
- tempSaleItem = GetGIID(tempSaleItem);
+ if (tempSaleMod == MOD_NONE) {
+ s16 giid = GetGIID(tempSaleItem);
+ if (giid == -1) {
+ tempSaleMod = MOD_RANDOMIZER;
+ } else {
+ tempSaleItem = giid;
+ }
}
GameInteractor_ExecuteOnSaleEndHooks(ItemTable_RetrieveEntry(tempSaleMod, tempSaleItem));
}