diff --git a/soh/soh/OTRGlobals.cpp b/soh/soh/OTRGlobals.cpp index 4459e3b19..549b69ed1 100644 --- a/soh/soh/OTRGlobals.cpp +++ b/soh/soh/OTRGlobals.cpp @@ -1512,3 +1512,32 @@ extern "C" int Randomizer_GetCustomGetItemMessage(GetItemID giid, char* buffer, } return CopyStringToCharBuffer(getItemText, buffer, maxBufferSize); } + +extern "C" int CustomMessage_RetrieveIfExists(GlobalContext* globalCtx, char* buffer, const int maxBufferSize) { + MessageContext* msgCtx = &globalCtx->msgCtx; + Font* font = &msgCtx->font; + if (gSaveContext.n64ddFlag) { + if (msgCtx->textId == 0xF8) { + if (msgCtx->msgLength = font->msgLength = Randomizer_GetCustomGetItemMessage( + (GetItemID)GET_PLAYER(globalCtx)->getItemId, font->msgBuf, sizeof(font->msgBuf))) { + font->charTexBuf[0] = 0x23; + return true; + } else { + switch (gSaveContext.language) { + case LANGUAGE_FRA: + return msgCtx->msgLength = font->msgLength = CopyStringToCharBuffer( + "Il n'y a pas de message personnalisé pour cet élément.", buffer, maxBufferSize); + case LANGUAGE_GER: + return msgCtx->msgLength = font->msgLength = CopyStringToCharBuffer( + "Für diesen Artikel gibt es keine benutzerdefinierte Nachricht.", buffer, + maxBufferSize); + case LANGUAGE_ENG: + default: + return msgCtx->msgLength = font->msgLength = CopyStringToCharBuffer( + "There is no custom message for this item.", buffer, maxBufferSize); + } + } + } + } + return false; +} diff --git a/soh/soh/OTRGlobals.h b/soh/soh/OTRGlobals.h index d999f1bda..0110d7ad1 100644 --- a/soh/soh/OTRGlobals.h +++ b/soh/soh/OTRGlobals.h @@ -97,6 +97,7 @@ s32 GetItemIDFromGetItemID(s32 getItemId); s32 GetRandomizedItemId(GetItemID ogId, s16 actorId, s16 actorParams, s16 sceneNum); s32 GetRandomizedItemIdFromKnownCheck(RandomizerCheck randomizerCheck, GetItemID ogId); int Randomizer_GetCustomGetItemMessage(GetItemID giid, char* buffer, const int maxBufferSize); +int CustomMessage_RetrieveIfExists(GlobalContext* globalCtx, char* buffer, const int maxBufferSize); #endif #endif diff --git a/soh/src/code/z_message_PAL.c b/soh/src/code/z_message_PAL.c index 87bc255ab..432c05cfd 100644 --- a/soh/src/code/z_message_PAL.c +++ b/soh/src/code/z_message_PAL.c @@ -1662,7 +1662,9 @@ void Message_OpenText(GlobalContext* globalCtx, u16 textId) { gSaveContext.eventInf[0] = gSaveContext.eventInf[1] = gSaveContext.eventInf[2] = gSaveContext.eventInf[3] = 0; } - if (sTextIsCredits) { + if (CustomMessage_RetrieveIfExists(globalCtx, font->msgBuf, sizeof(font->msgBuf))) { + osSyncPrintf("Found custom message"); + } else if (sTextIsCredits) { Message_FindCreditsMessage(globalCtx, textId); msgCtx->msgLength = font->msgLength; char* src = (uintptr_t)font->msgOffset; @@ -1735,11 +1737,11 @@ void Message_OpenText(GlobalContext* globalCtx, u16 textId) { } else { msgCtx->msgLength = font->msgLength = CopyGanonHintText(font->msgBuf, sizeof(font->msgBuf)); } - } else if (gSaveContext.n64ddFlag && textId == 0xF8) { + } /*else if (gSaveContext.n64ddFlag && textId == 0xF8) { msgCtx->msgLength = font->msgLength = Randomizer_GetCustomGetItemMessage( GET_PLAYER(globalCtx)->getItemId, font->msgBuf, sizeof(font->msgBuf)); font->charTexBuf[0] = 0x23; - } else { + }*/ else { msgCtx->msgLength = font->msgLength; char* src = (uintptr_t)font->msgOffset; memcpy(font->msgBuf, src, font->msgLength);