diff --git a/soh/soh/Enhancements/randomizer/BigPoes.cpp b/soh/soh/Enhancements/randomizer/BigPoes.cpp index b117914dce..9cae1e1273 100644 --- a/soh/soh/Enhancements/randomizer/BigPoes.cpp +++ b/soh/soh/Enhancements/randomizer/BigPoes.cpp @@ -29,13 +29,20 @@ void RegisterBigPoeHooks() { *should = false; }); COND_VB_SHOULD(VB_SELL_POES_TO_POE_COLLECTOR, IS_RANDO, { - if (!Flags_GetRandomizerInf(RAND_INF_10_BIG_POES) && HIGH_SCORE(HS_POE_POINTS) >= 1000 && - !(GET_PLAYER(gPlayState)->stateFlags1 & PLAYER_STATE1_IN_ITEM_CS)) { - EnGb* enGb = va_arg(args, EnGb*); - enGb->textId = 0x70F8; - Message_ContinueTextbox(gPlayState, enGb->textId); - enGb->actionFunc = func_80A2FB40; - *should = false; + if (!Flags_GetRandomizerInf(RAND_INF_10_BIG_POES) && HIGH_SCORE(HS_POE_POINTS) >= 1000) { + if (GET_PLAYER(gPlayState)->stateFlags1 & PLAYER_STATE1_IN_ITEM_CS) { + // Handing over bottled big poe pays out on exactly 1000 points. + // Drop to 900 so its +100 lands on payout. + if (Actor_GetPlayerExchangeItemId(gPlayState) == EXCH_ITEM_BIG_POE) { + HIGH_SCORE(HS_POE_POINTS) = 900; + } + } else { + EnGb* enGb = va_arg(args, EnGb*); + enGb->textId = 0x70F8; + Message_ContinueTextbox(gPlayState, enGb->textId); + enGb->actionFunc = func_80A2FB40; + *should = false; + } } }); COND_VB_SHOULD(VB_GIVE_ITEM_FROM_POE_COLLECTOR, IS_RANDO, {