Skip to content

Commit

Permalink
Make rando final eban cost 99 and clean up Text IDs
Browse files Browse the repository at this point in the history
  • Loading branch information
Pepper0ni committed Nov 13, 2023
1 parent 30ab8e9 commit 02f84c2
Show file tree
Hide file tree
Showing 4 changed files with 163 additions and 65 deletions.
140 changes: 104 additions & 36 deletions soh/soh/Enhancements/custom-message/CustomMessageTypes.h
Original file line number Diff line number Diff line change
@@ -1,58 +1,126 @@
#pragma once

typedef enum {
TEXT_CURSED_SKULLTULA_PEOPLE = 0x22,
TEXT_SARIAS_SONG_FACE_TO_FACE= 0x160,
TEXT_SARIAS_SONG_TEXT_START = 0x160,
TEXT_SARIAS_SONG_TEXT_END = 0x16D,
TEXT_SARIA_SFM = 0x10AD,
TEXT_ITEM_KEY_SMALL = 0x60,
TEXT_ITEM_DUNGEON_MAP = 0x66,
TEXT_ITEM_COMPASS = 0x67,
TEXT_ITEM_KEY_BOSS = 0xC7,
TEXT_DAMPES_DIARY = 0x5003,
TEXT_CHEST_GAME_PROCEED = 0x704C,
TEXT_BUY_BOMBCHU_10_PROMPT = 0x8C,
TEXT_BUY_BOMBCHU_10_DESC = 0xBC,
TEXT_GS_NO_FREEZE = 0xB4,
TEXT_GS_FREEZE = 0xB5,
TEXT_RANDOMIZER_CUSTOM_ITEM = 0xF8,
TEXT_CURSED_SKULLTULA_PEOPLE = 0x0022,
TEXT_ITEM_KEY_SMALL = 0x0060,
TEXT_ITEM_DUNGEON_MAP = 0x0066,
TEXT_CHEST_GAME_REAL_GAMBLER = 0x006E,
TEXT_ITEM_COMPASS = 0x0067,
TEXT_CHEST_GAME_THANKS_A_LOT = 0x0084,
TEXT_BUY_BOMBCHU_10_PROMPT = 0x008C,
TEXT_GS_NO_FREEZE = 0x00B4,
TEXT_GS_FREEZE = 0x00B5,
TEXT_BUY_BOMBCHU_10_DESC = 0x00BC,
TEXT_HEART_PIECE = 0x00C2,
TEXT_HEART_CONTAINER = 0x00C6,
TEXT_ITEM_KEY_BOSS = 0x00C7,
TEXT_BLUE_RUPEE = 0x00CC,
TEXT_RED_RUPEE = 0x00F0,
TEXT_PURPLE_RUPEE = 0x00F1,
TEXT_HUGE_RUPEE = 0x00F2,
TEXT_RANDOMIZER_CUSTOM_ITEM = 0x00F8,
TEXT_NAVI_DEKU_TREE_SUMMONS = 0x0140,
TEXT_NAVI_CMON_BE_BRAVE = 0x0141,
TEXT_NAVI_VISIT_THE_PRINCESS = 0x0142,
TEXT_NAVI_FIND_MALONS_FATHER = 0x0143,
TEXT_NAVI_FIND_THE_PRINCESS = 0x0144,
TEXT_NAVI_WHAT_WOULD_SARIA_SAY = 0x0145,
TEXT_NAVI_IMPA_SAID_DEATH_MOUNTAIN = 0x0146,
TEXT_NAVI_USE_BOMB_FLOWER = 0x0147,
TEXT_NAVI_FAIRY_LIVES_ON_DEATH_MOUNTAIN = 0x0148,
TEXT_NAVI_SARIA_KNOWS_ABOUT_STONES = 0x0149,
TEXT_NAVI_RUTO_INSIDE_JABUS_BELLY = 0x014A,
TEXT_NAVI_COLLECTED_THREE_STONES = 0x014B,
TEXT_NAVI_THREW_SOMETHING_IN_MOAT = 0x014C,
TEXT_NAVI_CHECK_TEMPLE_OF_TIME = 0x014D,
TEXT_NAVI_SHOULD_WE_BELIEVE_SHEIK = 0x014E,
TEXT_UNUSED_014F = 0x014F,
TEXT_NAVI_WHATS_GOING_ON_IN_FOREST = 0x0150,
TEXT_NAVI_CLOUD_OVER_DEATH_MOUNTAIN = 0x0151,
TEXT_NAVI_ARTIC_WIND_IS_BLOWING = 0x0152,
TEXT_NAVI_IRON_BOOTS_WEIGH_A_TON = 0x0153,
TEXT_NAVI_LOOK_FOR_SOMONE_WHO_KNOWS = 0x0154,
TEXT_NAVI_IT_CAME_OUT_OF_THE_WELL = 0x0155,
TEXT_NAVI_WHO_BUILT_THE_SPIRIT_TEMPLE = 0x0156,
TEXT_NAVI_HAVE_YOU_EVER_PLAYED_NOCTURNE = 0x0157,
TEXT_NAVI_WHERE_GANONDORF_WAS_BORN = 0x0158,
TEXT_UNUSED_0159 = 0x0159,
TEXT_NAVI_EQUIP_THE_SILVER_GAUNTLETS = 0x015A,
TEXT_NAVI_WHO_IS_WAITING_FOR_US = 0x015B,
TEXT_NAVI_SAVE_PRINCESS_ZELDA = 0x015C,
TEXT_UNUSED_015D = 0x015D,
TEXT_UNUSED_015E = 0x015E,
TEXT_NAVI_TRY_TO_KEEP_MOVING = 0x015F,
TEXT_SARIAS_SONG_FACE_TO_FACE = 0x0160,
TEXT_SARIAS_SONG_CONNECTED = 0x0161,
TEXT_SARIAS_SONG_MR_DARUNIA = 0x0162,
TEXT_SARIAS_SONG_SPIRITUAL_WATER = 0x0163,
TEXT_SARIAS_SONG_SPIRITUAL_FIRE = 0x0164,
TEXT_SARIAS_SONG_DREAD_CASTLE = 0x0165,
TEXT_SARIAS_SONG_DIFFERENT_OCARINA = 0x0166,
TEXT_SARIAS_SONG_EYES_DARKNESS_STORM = 0x0167,
TEXT_SARIAS_SONG_DESERT_GODDESS = 0x0168,
TEXT_SARIAS_SONG_TEMPLES = 0x0169,
TEXT_SARIAS_SONG_YOURE_SAFE = 0x016A,
TEXT_SARIAS_SONG_GLAD_NOW = 0x016B,
TEXT_SARIAS_SONG_IMPRISON_GANONDORF = 0x016C,
TEXT_SARIAS_SONG_CHANNELING_POWER = 0x016D,
TEXT_LAKE_HYLIA_WATER_SWITCH_NAVI = 0x01B3, // 0x1yy for Navi msg range
TEXT_FROGS_UNDERWATER = 0x022E,
TEXT_LAKE_HYLIA_WATER_SWITCH_SIGN = 0x0346, // 0x3yy for cuttable sign range
TEXT_WARP_MINUET_OF_FOREST = 0x088D,
TEXT_WARP_BOLERO_OF_FIRE = 0x088E,
TEXT_WARP_SERENADE_OF_WATER = 0x088F,
TEXT_WARP_REQUIEM_OF_SPIRIT = 0x0890,
TEXT_WARP_NOCTURNE_OF_SHADOW = 0x0891,
TEXT_WARP_PRELUDE_OF_LIGHT = 0x0892,
TEXT_SCRUB_POH = 0x10A2,
TEXT_SARIA_SFM = 0x10AD,
TEXT_SCRUB_STICK_UPGRADE = 0x10DC,
TEXT_SCRUB_NUT_UPGRADE = 0x10DD,
TEXT_RANDOMIZER_GOSSIP_STONE_HINTS = 0x2053,
TEXT_ALTAR_CHILD = 0x7040,
TEXT_ALTAR_ADULT = 0x7088,
TEXT_GANONDORF = 0x70CC,
TEXT_GANONDORF_NOHINT = 0x70CD,
TEXT_HEART_CONTAINER = 0xC6,
TEXT_HEART_PIECE = 0xC2,
TEXT_BLUE_RUPEE = 0xCC,
TEXT_RED_RUPEE = 0xF0,
TEXT_PURPLE_RUPEE = 0xF1,
TEXT_HUGE_RUPEE = 0xF2,
TEXT_FROGS_UNDERWATER = 0x22E,
TEXT_BEAN_SALESMAN = 0x405E,
TEXT_MEDIGORON = 0x304C,
TEXT_FIRE_TEMPLE_GORON_OWE_YOU_BIG_TIME = 0x3052,
TEXT_FIRE_TEMPLE_GORON_FALLING_DOORS_SECRET = 0x3069,
TEXT_FIRE_TEMPLE_GORON_FIRE_SECRET = 0x306A,
TEXT_FIRE_TEMPLE_GORON_FLAME_DANCER_SECRET = 0x306B,
TEXT_FIRE_TEMPLE_GORON_SWITCH_SECRET = 0x306C,
TEXT_FIRE_TEMPLE_GORON_OCARINA_SECRET = 0x306D,
TEXT_FIRE_TEMPLE_GORON_PILLAR_SECRET = 0x306E,
TEXT_FIRE_TEMPLE_GORON_HIDDEN_DOOR_SECRET = 0x306F,
TEXT_FIRE_TEMPLE_GORON_SOUNDS_DIFFERENT_SECRET = 0x3070,
TEXT_BEAN_SALESMAN_BUY_FOR_10 = 0x405E,
TEXT_BEAN_SALESMAN_BUY_FOR_20 = 0x405F,
TEXT_BEAN_SALESMAN_BUY_FOR_30 = 0x4060,
TEXT_BEAN_SALESMAN_BUY_FOR_40 = 0x4061,
TEXT_BEAN_SALESMAN_BUY_FOR_50 = 0x4062,
TEXT_BEAN_SALESMAN_BUY_FOR_60 = 0x4063,
TEXT_BEAN_SALESMAN_BUY_FOR_70 = 0x4064,
TEXT_BEAN_SALESMAN_BUY_FOR_80 = 0x4065,
TEXT_BEAN_SALESMAN_BUY_FOR_90 = 0x4066,
TEXT_BEAN_SALESMAN_BUY_FOR_100 = 0x4067,
TEXT_BEAN_SALESMAN_OH_WELL = 0x4068,
TEXT_BEAN_SALESMAN_NOT_ENOUGH_MONEY = 0x4069,
TEXT_BEAN_SALESMAN_SET_A_BEAN_TO_C = 0x406A,
TEXT_BEAN_SALESMAN_SOLD_OUT = 0x406B,
TEXT_BEAN_SALESMAN_WANT_TO_PLANT = 0x406C,
TEXT_DAMPES_DIARY = 0x5003,
TEXT_GRANNYS_SHOP = 0x500C,
TEXT_CARPET_SALESMAN_1 = 0x6077,
TEXT_CARPET_SALESMAN_2 = 0x6078,
TEXT_MARKET_GUARD_NIGHT = 0x7003,
TEXT_SHEIK_NEED_HOOK = 0x700F,
TEXT_SHEIK_HAVE_HOOK = 0x7010,
TEXT_ALTAR_CHILD = 0x7040,
TEXT_CHEST_GAME_PROCEED = 0x704C,
TEXT_ALTAR_ADULT = 0x7088,
TEXT_GANONDORF = 0x70CC,
TEXT_GANONDORF_NOHINT = 0x70CD,
TEXT_SCRUB_RANDOM = 0x9000,
TEXT_SCRUB_RANDOM_FREE = 0x9001,
TEXT_SHOP_ITEM_RANDOM = 0x9100,
TEXT_SHOP_ITEM_RANDOM_CONFIRM = 0x9101,
TEXT_WARP_MINUET_OF_FOREST = 0x88D,
TEXT_WARP_BOLERO_OF_FIRE = 0x88E,
TEXT_WARP_SERENADE_OF_WATER = 0x88F,
TEXT_WARP_REQUIEM_OF_SPIRIT = 0x890,
TEXT_WARP_NOCTURNE_OF_SHADOW = 0x891,
TEXT_WARP_PRELUDE_OF_LIGHT = 0x892,
TEXT_WARP_RANDOM_REPLACED_TEXT = 0x9200,
TEXT_LAKE_HYLIA_WATER_SWITCH_SIGN = 0x346, // 0x3yy for cuttable sign range
TEXT_LAKE_HYLIA_WATER_SWITCH_NAVI = 0x1B3, // 0x1yy for Navi msg range
} TextIDs;

#ifdef __cplusplus
Expand Down
11 changes: 8 additions & 3 deletions soh/soh/Enhancements/randomizer/randomizer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -553,13 +553,18 @@ void Randomizer::LoadMerchantMessages(const char* spoilerFileName) {
"\x12\x38\x82" "Aufgeben! Ich verkaufe dir einen&%g{{item}}%w&für %r{{price}} Rubine%w!\x07\x10\xA3",
"\x12\x38\x82" "J'abandonne! Tu veux bien m'acheter&un %g{{item}}%w?&Ça fera %r{{price}} Rubis%w!\x07\x10\xA3"));
CustomMessageManager::Instance->CreateMessage(
Randomizer::merchantMessageTableID, TEXT_BEAN_SALESMAN,
Randomizer::merchantMessageTableID, TEXT_BEAN_SALESMAN_BUY_FOR_10,
CustomMessage("I tried to be a %rmagic bean%w salesman,&but it turns out my marketing skills&weren't worth "
"beans!^Anyway, want to buy my&%gmysterious item%w for 60 Rupees?\x1B&%gYes&No%w",
"Möchten Sie einen geheimnisvollen&Gegenstand für 60 Rubine?\x1B&%gJa&Nein%w",
"J'ai essayé d'être un vendeur de&%rharicots magiques%w, mais j'étais&mauvais au niveau du marketing et&ça "
"me courait sur le haricot...^Enfin bref, ça te dirait de m'acheter un&"
"%gobjet mystérieux%w pour 60 Rubis?\x1B&%gOui&Non%w"));
CustomMessageManager::Instance->CreateMessage(
Randomizer::merchantMessageTableID, TEXT_BEAN_SALESMAN_BUY_FOR_100,
CustomMessage("I never thought I'd say this, but I'm &selling the last %rMagic Bean%w. %r99%w Rupees...\x1B&%gYes&No%w",
"",
"\x1B&%gOui&Non%w"));


//Setup for merchant text boxes
Expand All @@ -571,7 +576,7 @@ void Randomizer::LoadMerchantMessages(const char* spoilerFileName) {
"Wie wäre es mit %g&{{item}}%w für %y200 Rubine?%w\x1B&%gJa!&Nein!%w",
"Veux-tu acheter %g&{{item}}%w pour %y200 rubis?%w\x1B&%gOui&Non&w"));

//Granny Shopy
//Granny Shop
//RANDOTODO: Implement obscure/ambiguous hints
CustomMessageManager::Instance->CreateMessage(
Randomizer::merchantMessageTableID, TEXT_GRANNYS_SHOP,
Expand Down Expand Up @@ -5342,7 +5347,7 @@ CustomMessage Randomizer::GetSheikMessage(s16 scene, u16 originalTextId) {
}

CustomMessage Randomizer::GetSariaMessage(u16 originalTextId) {
if (originalTextId == TEXT_SARIA_SFM || (originalTextId >= TEXT_SARIAS_SONG_TEXT_START && originalTextId <= TEXT_SARIAS_SONG_TEXT_END)) {
if (originalTextId == TEXT_SARIA_SFM || (originalTextId >= TEXT_SARIAS_SONG_FACE_TO_FACE && originalTextId <= TEXT_SARIAS_SONG_CHANNELING_POWER)) {
CustomMessage messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::hintMessageTableID, TEXT_SARIAS_SONG_FACE_TO_FACE);
CustomMessage messageEntry2 = messageEntry;
std::string code = originalTextId == TEXT_SARIA_SFM ? "" : "\x0B";
Expand Down
20 changes: 11 additions & 9 deletions soh/soh/OTRGlobals.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2380,11 +2380,11 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) {
textId == TEXT_HUGE_RUPEE)) {
messageEntry = Randomizer::GetRupeeMessage(textId);
// In rando, replace Navi's general overworld hints with rando-related gameplay tips
} else if (CVarGetInteger("gRandoRelevantNavi", 1) && textId >= 0x0140 && textId <= 0x015F) {
} else if (CVarGetInteger("gRandoRelevantNavi", 1) && textId >= TEXT_NAVI_DEKU_TREE_SUMMONS && textId <= TEXT_NAVI_TRY_TO_KEEP_MOVING) {
u16 naviTextId = Random(0, NUM_NAVI_MESSAGES);
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::NaviRandoMessageTableID, naviTextId);
} else if (Randomizer_GetSettingValue(RSK_SHUFFLE_MAGIC_BEANS) && textId == TEXT_BEAN_SALESMAN) {
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::merchantMessageTableID, TEXT_BEAN_SALESMAN);
} else if (Randomizer_GetSettingValue(RSK_SHUFFLE_MAGIC_BEANS) && textId == TEXT_BEAN_SALESMAN_BUY_FOR_10) {
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::merchantMessageTableID, TEXT_BEAN_SALESMAN_BUY_FOR_10);
} else if (Randomizer_GetSettingValue(RSK_SHUFFLE_MERCHANTS) != RO_SHUFFLE_MERCHANTS_OFF && (textId == TEXT_MEDIGORON ||
(textId == TEXT_GRANNYS_SHOP && !Flags_GetRandomizerInf(RAND_INF_MERCHANTS_GRANNYS_SHOP) &&
(Randomizer_GetSettingValue(RSK_SHUFFLE_ADULT_TRADE) || INV_CONTENT(ITEM_CLAIM_CHECK) == ITEM_CLAIM_CHECK)) ||
Expand Down Expand Up @@ -2412,22 +2412,24 @@ extern "C" int CustomMessage_RetrieveIfExists(PlayState* play) {
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::randoMiscHintsTableID, TEXT_DAMPES_DIARY);
} else if (play->sceneNum == SCENE_TREASURE_BOX_SHOP &&
Randomizer_GetSettingValue(RSK_GREG_HINT) &&
(textId == 0x704C || textId == 0x6E || textId == 0x84)) {
(textId == TEXT_CHEST_GAME_PROCEED || textId == TEXT_CHEST_GAME_REAL_GAMBLER || textId == TEXT_CHEST_GAME_THANKS_A_LOT)) {
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::randoMiscHintsTableID, TEXT_CHEST_GAME_PROCEED);
} else if (Randomizer_GetSettingValue(RSK_SHUFFLE_WARP_SONGS) &&
(textId >= TEXT_WARP_MINUET_OF_FOREST && textId <= TEXT_WARP_PRELUDE_OF_LIGHT)) {
messageEntry = OTRGlobals::Instance->gRandomizer->GetWarpSongMessage(textId, Randomizer_GetSettingValue(RSK_WARP_SONG_HINTS) == RO_GENERIC_OFF);
} else if (textId == TEXT_LAKE_HYLIA_WATER_SWITCH_NAVI || textId == TEXT_LAKE_HYLIA_WATER_SWITCH_SIGN) {
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::hintMessageTableID, textId);
} else if (textId == 0x3052 || (textId >= 0x3069 && textId <= 0x3070)) { //Fire Temple gorons
} else if (textId == TEXT_FIRE_TEMPLE_GORON_OWE_YOU_BIG_TIME ||
(textId >= TEXT_FIRE_TEMPLE_GORON_FALLING_DOORS_SECRET && textId <= TEXT_FIRE_TEMPLE_GORON_SOUNDS_DIFFERENT_SECRET)) {
u16 choice = Random(0, NUM_GORON_MESSAGES);
messageEntry = OTRGlobals::Instance->gRandomizer->GetGoronMessage(choice);
} else if (Randomizer_GetSettingValue(RSK_FROGS_HINT) && textId == TEXT_FROGS_UNDERWATER) {
messageEntry = OTRGlobals::Instance->gRandomizer->GetFrogsMessage(textId);
} else if (Randomizer_GetSettingValue(RSK_SARIA_HINT)) {
if ((gPlayState->sceneNum == SCENE_SACRED_FOREST_MEADOW && textId == TEXT_SARIA_SFM) || (textId >= TEXT_SARIAS_SONG_TEXT_START && textId <= TEXT_SARIAS_SONG_TEXT_END)) {
messageEntry = OTRGlobals::Instance->gRandomizer->GetSariaMessage(textId);
}
} else if (Randomizer_GetSettingValue(RSK_SARIA_HINT) &&
(gPlayState->sceneNum == SCENE_SACRED_FOREST_MEADOW && textId == TEXT_SARIA_SFM) || (textId >= TEXT_SARIAS_SONG_FACE_TO_FACE && textId <= TEXT_SARIAS_SONG_CHANNELING_POWER)) {
messageEntry = OTRGlobals::Instance->gRandomizer->GetSariaMessage(textId);
} else if (textId == TEXT_BEAN_SALESMAN_BUY_FOR_100) {
messageEntry = CustomMessageManager::Instance->RetrieveMessage(Randomizer::merchantMessageTableID, TEXT_BEAN_SALESMAN_BUY_FOR_100);
}
}
if (textId == TEXT_GS_NO_FREEZE || textId == TEXT_GS_FREEZE) {
Expand Down
57 changes: 40 additions & 17 deletions soh/src/overlays/actors/ovl_En_Ms/z_en_ms.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ void EnMs_SetOfferText(EnMs* this, PlayState* play);
void EnMs_Wait(EnMs* this, PlayState* play);
void EnMs_Talk(EnMs* this, PlayState* play);
void EnMs_Sell(EnMs* this, PlayState* play);
void EnMs_Sell_Rando(EnMs* this, PlayState* play);
void EnMs_TalkAfterPurchase(EnMs* this, PlayState* play);

const ActorInit En_Ms_InitVars = {
Expand Down Expand Up @@ -49,6 +50,10 @@ static s16 sPrices[] = {
10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
};

static s16 sRandoPrices[] = {
10, 20, 30, 40, 50, 60, 70, 80, 90, 99,
};

static u16 sOfferTextIDs[] = {
0x405E, 0x405F, 0x4060, 0x4061, 0x4062, 0x4063, 0x4064, 0x4065, 0x4066, 0x4067,
};
Expand Down Expand Up @@ -127,21 +132,30 @@ void EnMs_Talk(EnMs* this, PlayState* play) {
} else if (Message_ShouldAdvance(play)) {
switch (play->msgCtx.choiceIndex) {
case 0: // yes
if (gSaveContext.rupees <
((IS_RANDO && Randomizer_GetSettingValue(RSK_SHUFFLE_MAGIC_BEANS))
? 60
: sPrices[BEANS_BOUGHT])) {
Message_ContinueTextbox(play, 0x4069); // not enough rupees text
//Randomizer Mechanic: Magic bean salesman
if (IS_RANDO){
if (gSaveContext.rupees < ((Randomizer_GetSettingValue(RSK_SHUFFLE_MAGIC_BEANS)) ? 60 : sRandoPrices[BEANS_BOUGHT])) {
Message_ContinueTextbox(play, 0x4069); // TEXT_BEAN_SALESMAN_NOT_ENOUGH_MONEY
return;
}
if (Randomizer_GetSettingValue(RSK_SHUFFLE_MAGIC_BEANS)){
GiveItemEntryFromActor(&this->actor, play,
Randomizer_GetItemFromKnownCheck(RC_ZR_MAGIC_BEAN_SALESMAN, GI_BEAN), 90.0f, 10.0f);
} else {
func_8002F434(&this->actor, play, GI_BEAN, 90.0f, 10.0f);
}
this->actionFunc = EnMs_Sell_Rando;
return;
}
if (IS_RANDO && Randomizer_GetSettingValue(RSK_SHUFFLE_MAGIC_BEANS)) {
GiveItemEntryFromActor(&this->actor, play,
Randomizer_GetItemFromKnownCheck(RC_ZR_MAGIC_BEAN_SALESMAN, GI_BEAN), 90.0f, 10.0f);
} else {
} else { // vanilla code
if(gSaveContext.rupees < sPrices[BEANS_BOUGHT]){
Message_ContinueTextbox(play, 0x4069); // TEXT_BEAN_SALESMAN_NOT_ENOUGH_MONEY
return;
}
func_8002F434(&this->actor, play, GI_BEAN, 90.0f, 10.0f);
this->actionFunc = EnMs_Sell;
return;
}
this->actionFunc = EnMs_Sell;
return;
//Randomizer Mechanic end
case 1: // no
Message_ContinueTextbox(play, 0x4068);
default:
Expand All @@ -150,14 +164,13 @@ void EnMs_Talk(EnMs* this, PlayState* play) {
}
}

void EnMs_Sell(EnMs* this, PlayState* play) {
void EnMs_Sell_Rando(EnMs* this, PlayState* play) {
if (Actor_HasParent(&this->actor, play)) {
Rupees_ChangeBy((IS_RANDO && Randomizer_GetSettingValue(RSK_SHUFFLE_MAGIC_BEANS)) ? -60 : -sPrices[BEANS_BOUGHT]);
Rupees_ChangeBy((Randomizer_GetSettingValue(RSK_SHUFFLE_MAGIC_BEANS)) ? -60 : -sRandoPrices[BEANS_BOUGHT]);
this->actor.parent = NULL;
this->actionFunc =
(IS_RANDO && Randomizer_GetSettingValue(RSK_SHUFFLE_MAGIC_BEANS)) ? EnMs_Wait : EnMs_TalkAfterPurchase;
this->actionFunc = (Randomizer_GetSettingValue(RSK_SHUFFLE_MAGIC_BEANS)) ? EnMs_Wait : EnMs_TalkAfterPurchase;
} else {
if (IS_RANDO && Randomizer_GetSettingValue(RSK_SHUFFLE_MAGIC_BEANS)) {
if (Randomizer_GetSettingValue(RSK_SHUFFLE_MAGIC_BEANS)) {
GetItemEntry itemEntry = Randomizer_GetItemFromKnownCheck(RC_ZR_MAGIC_BEAN_SALESMAN, GI_BEAN);
gSaveContext.pendingSale = itemEntry.itemId;
gSaveContext.pendingSaleMod = itemEntry.modIndex;
Expand All @@ -172,6 +185,16 @@ void EnMs_Sell(EnMs* this, PlayState* play) {
}
}

void EnMs_Sell(EnMs* this, PlayState* play) {
if (Actor_HasParent(&this->actor, play)) {
Rupees_ChangeBy(-sPrices[BEANS_BOUGHT]);
this->actor.parent = NULL;
this->actionFunc = EnMs_TalkAfterPurchase;
} else {
func_8002F434(&this->actor, play, GI_BEAN, 90.0f, 10.0f);
}
}

void EnMs_TalkAfterPurchase(EnMs* this, PlayState* play) {
// if dialog state is 6 and player responded to textbox
if ((Message_GetState(&play->msgCtx)) == TEXT_STATE_DONE && Message_ShouldAdvance(play)) {
Expand Down

0 comments on commit 02f84c2

Please sign in to comment.