Skip to content
2,235 changes: 2,235 additions & 0 deletions include/eztr_api.h

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions mod.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ https://github.com/RecompRando/MMRecompRando"""
short_description = "hey game different now"

# Authors of this mod.
authors = [ "LittleCube", "ThatHypedPerson", "PixelShake92", "Muervo_", "G4M3RL1F3", "dcvz", "CelestialKitsune", "VincentsSin" ]
authors = [ "LittleCube", "ThatHypedPerson", "PixelShake92", "Muervo_", "G4M3R L1F3", "dcvz", "CelestialKitsune", "VincentsSin" ]

# ID of the target recomp game.
game_id = "mm"
Expand All @@ -37,7 +37,8 @@ minimum_recomp_version = "1.2.0"
dependencies = [
"owls_never_quit:1.0.0",
"mm_recomp_better_double_sot:0.0.1",
"mm_recomp_colors:0.5.0"
"mm_recomp_colors:0.5.0",
"MM_EZ_Text_Replacer_API:2.3.0"
]

# Native libraries (e.g. DLLs) and the functions they export.
Expand Down
308 changes: 308 additions & 0 deletions src/eztr_replacements.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,308 @@
//#include "apcommon.h"
//#include "eztr_api.h"
//#include "modding.h"

//EZTR_MSG_CALLBACK(cursed_spider_first_time_callback) {
// if ((s16) rando_get_slotdata_u32("shuffle_spiderhouse_reward") == 0) {
// EZTR_MsgSContent_Sprintf(buf->data.content, "I have nothing to give you." EZTR_CC_NEWLINE "Go away." EZTR_CC_EVENT2 EZTR_CC_END);
// }
//}
//EZTR_ON_INIT void cursed_spider_first_time_text() {
// EZTR_Basic_ReplaceText(
// 0x910, // Text ID
// EZTR_STANDARD_TEXT_BOX_I, // Text box type
// 0, // Text box Y axis offset
// EZTR_ICON_NO_ICON, // Icon display
// 0x911, // Next message text ID
// EZTR_NO_VALUE, // First item rupee cost
// EZTR_NO_VALUE, // Second item rupee cose
// false,
// "Ah! Help me!" EZTR_CC_NEWLINE "I am not a monster!" EZTR_CC_NEWLINE
// "The spider's curse..." EZTR_CC_NEWLINE "It made me this way..." EZTR_CC_CONTINUE
// /*"I beg of you..." EZTR_CC_COLOR_RED "In here" EZTR_CC_COLOR_DEFAULT "...Find them" EZTR_CC_NEWLINE
// EZTR_CC_COLOR_RED "all" EZTR_CC_COLOR_DEFAULT "...The" EZTR_CC_COLOR_RED "gold" EZTR_CC_COLOR_DEFAULT "ones...The cursed" EZTR_CC_NEWLINE
// EZTR_CC_COLOR_RED "spiders" EZTR_CC_COLOR_DEFAULT "...Defeat them...Quickly!" EZTR_CC_EVENT2 EZTR_CC_END*/,
// cursed_spider_first_time_callback // Callback
// );
//}
//
//EZTR_MSG_CALLBACK(curse_spider_recurring_callback) {
// if ((s16) rando_get_slotdata_u32("shuffle_spiderhouse_reward") == 0) {
// EZTR_MsgSContent_Sprintf(buf->data.content,
// "Do not bother lifting the curse." EZTR_CC_NEWLINE
// "The mask is mine!" EZTR_CC_EVENT2 EZTR_CC_END
// );
// }
//}
//EZTR_ON_INIT void cursed_spider_recurring_text() {
// EZTR_Basic_ReplaceText(
// 0x914,
// EZTR_STANDARD_TEXT_BOX_I,
// 0,
// EZTR_ICON_NO_ICON,
// 0x915,
// EZTR_NO_VALUE,
// EZTR_NO_VALUE,
// false,
// EZTR_CC_COLOR_RED "In here" EZTR_CC_COLOR_DEFAULT "...The gold ones...The cursed" EZTR_CC_NEWLINE
// EZTR_CC_COLOR_RED "spiders" EZTR_CC_COLOR_DEFAULT "...Defeat them " EZTR_CC_COLOR_RED "all" EZTR_CC_COLOR_DEFAULT "...Make me" EZTR_CC_NEWLINE
// "normal...again..." EZTR_CC_EVENT2 EZTR_CC_END,
// curse_spider_recurring_callback
// );
//}
//
//EZTR_MSG_CALLBACK(ssh_guy_first_time_callback) {
// if ((s16) rando_get_slotdata_u32("shuffle_spiderhouse_reward") == 0) {
// EZTR_MsgSContent_Sprintf(buf->data.content,
// "I am not giving you my mask." EZTR_CC_NEWLINE
// "It's mine and mine only!" EZTR_CC_EVENT2 EZTR_CC_END
// );
// }
//}
//EZTR_ON_INIT void ssh_guy_first_time_text() {
// EZTR_Basic_ReplaceText(
// 0x91B,
// EZTR_STANDARD_TEXT_BOX_I,
// 0,
// EZTR_ICON_NO_ICON,
// EZTR_NO_VALUE,
// EZTR_NO_VALUE,
// EZTR_NO_VALUE,
// false,
// "As soon as I calm down, I'm going" EZTR_CC_NEWLINE "to get rid of it." EZTR_CC_EVENT2 EZTR_CC_END,
// ssh_guy_first_time_callback
// );
//}
//
//EZTR_MSG_CALLBACK(ssh_guy_recurring_callback) {
// if ((s16) rando_get_slotdata_u32("shuffle_spiderhouse_reward") == 0) {
// EZTR_MsgSContent_Sprintf(buf->data.content,
// "Great, now my mask is gone. That" EZTR_CC_NEWLINE
// "mask was giving me infinite riches."
// EZTR_CC_BOX_BREAK "Now what?" EZTR_CC_EVENT2 EZTR_CC_END);
// }
//}
//EZTR_ON_INIT void ssh_guy_recurring_text() {
// EZTR_Basic_ReplaceText(
// 0x918,
// EZTR_STANDARD_TEXT_BOX_I,
// 0,
// EZTR_ICON_NO_ICON,
// EZTR_NO_VALUE,
// EZTR_NO_VALUE,
// EZTR_NO_VALUE,
// false,
// "I've had enough of this..." EZTR_CC_BOX_BREAK
// "As soon as I get it together," EZTR_CC_NEWLINE
// "I'm going home." EZTR_CC_EVENT2 EZTR_CC_END,
// ssh_guy_recurring_callback
// );
//}

//EZTR_MSG_CALLBACK(chest_game_init_as_human_callback) {
// if ((s16) rando_get_slotdata_u32("shuffle_treasure_chest_game") == 0) {
// EZTR_MsgSContent_Sprintf(buf->data.content, "Oh! A customer! Unfortunately," EZTR_CC_NEWLINE "we are under construction." EZTR_CC_CONTINUE);
// }
// else if ((s16) rando_get_slotdata_u32("shuffle_treasure_chest_game") == 1) {
// EZTR_MsgSContent_Sprintf(buf->data.content,
// "Sorry, but we only accept" EZTR_CC_NEWLINE EZTR_CC_COLOR_RED "strong and burly" EZTR_CC_COLOR_DEFAULT "customers." EZTR_CC_CONTINUE
// );
// }
//}
//EZTR_ON_INIT void chest_game_init_as_human_text() {
// EZTR_Basic_ReplaceText(
// 0x76D,
// EZTR_STANDARD_TEXT_BOX_I,
// 0,
// EZTR_ICON_NO_ICON,
// 0x771,
// EZTR_NO_VALUE,
// EZTR_NO_VALUE,
// false,
// "Come in! Oh, is the kid collecting" EZTR_CC_NEWLINE
// "masks? How about it? Wanna" EZTR_CC_NEWLINE
// "play?" EZTR_CC_CONTINUE,
// NULL
// );
//}

//EZTR_MSG_CALLBACK(chest_game_init_as_deku_callback) {
// if ((s16) rando_get_slotdata_u32("shuffle_treasure_chest_game") == 0) {
// EZTR_MsgSContent_Sprintf(buf->data.content, "Oh! A customer! Unfortunately," EZTR_CC_NEWLINE "we are under construction." EZTR_CC_CONTINUE);
// }
// else if ((s16) rando_get_slotdata_u32("shuffle_treasure_chest_game") == 1) {
// EZTR_MsgSContent_Sprintf(buf->data.content,
// "Sorry, but we only accept" EZTR_CC_NEWLINE EZTR_CC_COLOR_RED "strong and burly" EZTR_CC_COLOR_DEFAULT "customers." EZTR_CC_CONTINUE
// );
// }
//}
//EZTR_ON_INIT void chest_game_init_as_deku_text() {
// EZTR_Basic_ReplaceText(
// 0x76C,
// EZTR_STANDARD_TEXT_BOX_I,
// 0,
// EZTR_ICON_NO_ICON,
// EZTR_NO_VALUE,//0x770,
// EZTR_NO_VALUE,
// EZTR_NO_VALUE,
// false,
// "Oh, what a cute little customer!" EZTR_CC_NEWLINE
// "So, do you want to play?" EZTR_CC_CONTINUE,
// chest_game_init_as_deku_callback
// );
//}

//EZTR_MSG_CALLBACK(chest_game_init_as_goron_callback) {
// if ((s16) rando_get_slotdata_u32("shuffle_treasure_chest_game") == 0) {
// EZTR_MsgSContent_Sprintf(buf->data.content, "Oh! A customer! Unfortunately," EZTR_CC_NEWLINE "we are under construction." EZTR_CC_CONTINUE);
// }
//}
//EZTR_ON_INIT void chest_game_init_as_goron_text() {
// EZTR_Basic_ReplaceText(
// 0x76E,
// EZTR_STANDARD_TEXT_BOX_I,
// 0,
// EZTR_ICON_NO_ICON,
// EZTR_NO_VALUE,//0x772,
// EZTR_NO_VALUE,
// EZTR_NO_VALUE,
// false,
// "Well, aren't you a fit fellow!" EZTR_CC_NEWLINE
// "Wanna play?" EZTR_CC_CONTINUE,
// chest_game_init_as_goron_callback
// );
//}

//EZTR_MSG_CALLBACK(chest_game_init_as_zora_callback) {
// if ((s16) rando_get_slotdata_u32("shuffle_treasure_chest_game") == 0) {
// EZTR_MsgSContent_Sprintf(buf->data.content, "Oh! A customer! Unfortunately," EZTR_CC_NEWLINE "we are under construction." EZTR_CC_CONTINUE);
// }
// else if ((s16) rando_get_slotdata_u32("shuffle_treasure_chest_game") == 1) {
// EZTR_MsgSContent_Sprintf(buf->data.content,
// "Sorry, but we only accept" EZTR_CC_NEWLINE EZTR_CC_COLOR_RED "strong and burly" EZTR_CC_COLOR_DEFAULT "customers." EZTR_CC_CONTINUE
// );
// }
//}
//EZTR_ON_INIT void chest_game_init_as_zora_text() {
// EZTR_Basic_ReplaceText(
// 0x76F,
// EZTR_STANDARD_TEXT_BOX_I,
// 0,
// EZTR_ICON_NO_ICON,
// EZTR_NO_VALUE,//0x773,
// EZTR_NO_VALUE,
// EZTR_NO_VALUE,
// false,
// "Well, hello there, handsome!" EZTR_CC_NEWLINE
// "Wanna play?" EZTR_CC_CONTINUE,
// chest_game_init_as_zora_callback
// );
//}

//EZTR_MSG_CALLBACK(chest_game_selection_as_human_callback) {
// Player* player = GET_PLAYER(play);
// if ((s16) rando_get_slotdata_u32("shuffle_treasure_chest_game") == 0) {
// EZTR_MsgSContent_Sprintf(buf->data.content,
// "We'll be opening " EZTR_CC_COLOR_RED "after the carnival" EZTR_CC_COLOR_DEFAULT "." EZTR_CC_NEWLINE
// "We hope to see you!" EZTR_CC_EVENT2 EZTR_CC_END
// );
// }
// else if ((s16) rando_get_slotdata_u32("shuffle_treasure_chest_game") == 1 && player->transformation == !PLAYER_FORM_GORON) {
// EZTR_MsgSContent_Sprintf(buf->data.content,
// "Looks like you're collecting " EZTR_CC_COLOR_RED "masks" EZTR_CC_COLOR_DEFAULT "!" EZTR_CC_NEWLINE
// "There's " EZTR_CC_COLOR_RED "one I like" EZTR_CC_COLOR_DEFAULT ", but I don't" EZTR_CC_NEWLINE
// "know if you have it..." EZTR_CC_EVENT2 EZTR_CC_END
// );
// }
//}
//EZTR_ON_INIT void chest_game_selection_as_human_text() {
// EZTR_Basic_ReplaceText(
// 0x771,
// EZTR_STANDARD_TEXT_BOX_I,
// 0,
// EZTR_ICON_NO_ICON,
// EZTR_NO_VALUE,
// EZTR_NO_VALUE,
// EZTR_NO_VALUE,
// false,
// "For you, it's " EZTR_CC_COLOR_PINK "20 Rupees" EZTR_CC_COLOR_DEFAULT "." EZTR_CC_NEWLINE
// EZTR_CC_NEWLINE
// EZTR_CC_COLOR_GREEN EZTR_CC_TWO_CHOICE "OK" EZTR_CC_NEWLINE
// "No thanks" EZTR_CC_EVENT2 EZTR_CC_END,
// chest_game_selection_as_human_callback
// );
//}
//
//EZTR_MSG_CALLBACK(chest_game_selection_as_deku_callback) {
// Player* player = GET_PLAYER(play);
// if ((s16) rando_get_slotdata_u32("shuffle_treasure_chest_game") == 0) {
// EZTR_MsgSContent_Sprintf(buf->data.content,
// "We'll be opening " EZTR_CC_COLOR_RED "after the carnival" EZTR_CC_COLOR_DEFAULT "." EZTR_CC_NEWLINE
// "We hope to see you!" EZTR_CC_EVENT2 EZTR_CC_END
// );
// }
// else if ((s16) rando_get_slotdata_u32("shuffle_treasure_chest_game") == 1 && player->transformation == !PLAYER_FORM_GORON) {
// EZTR_MsgSContent_Sprintf(buf->data.content,
// "Which is unfortunate because you" EZTR_CC_NEWLINE
// "are so cute!!!" EZTR_CC_EVENT2 EZTR_CC_END
// );
// }
//}
//EZTR_ON_INIT void chest_game_selection_as_deku_text() {
// EZTR_Basic_ReplaceText(
// 0x770,
// EZTR_STANDARD_TEXT_BOX_I,
// 0,
// EZTR_ICON_NO_ICON,
// EZTR_NO_VALUE,
// EZTR_NO_VALUE,
// EZTR_NO_VALUE,
// false,
// "Which is unfortunate because you" EZTR_CC_NEWLINE
// "are so cute!!!" EZTR_CC_EVENT2 EZTR_CC_END,
// chest_game_selection_as_deku_callback
// );
//}
//
//EZTR_ON_INIT void chest_game_selection_as_goron_text() {
// EZTR_Basic_ReplaceText(
// 0x772,
// EZTR_STANDARD_TEXT_BOX_I,
// 0,
// EZTR_ICON_NO_ICON,
// EZTR_NO_VALUE,
// EZTR_NO_VALUE,
// EZTR_NO_VALUE,
// false,
// "We'll be opening " EZTR_CC_COLOR_RED "after the carnival" EZTR_CC_COLOR_DEFAULT "." EZTR_CC_NEWLINE
// "We hope to see you!" EZTR_CC_EVENT2 EZTR_CC_END,
// NULL
// );
//}
//
//EZTR_MSG_CALLBACK(chest_game_selection_as_zora_callback) {
// Player* player = GET_PLAYER(play);
// if ((s16) rando_get_slotdata_u32("shuffle_treasure_chest_game") == 0) {
// EZTR_MsgSContent_Sprintf(buf->data.content,
// "We'll be opening " EZTR_CC_COLOR_RED "after the carnival" EZTR_CC_COLOR_DEFAULT "." EZTR_CC_NEWLINE
// "We hope to see you!" EZTR_CC_EVENT2 EZTR_CC_END
// );
// }
// else if ((s16) rando_get_slotdata_u32("shuffle_treasure_chest_game") == 1 && player->transformation == !PLAYER_FORM_GORON) {
// EZTR_MsgSContent_Sprintf(buf->data.content, "It's too bad... You look like my type..." EZTR_CC_EVENT2 EZTR_CC_END);
// }
//}
//EZTR_ON_INIT void chest_game_selection_as_zora_text() {
// EZTR_Basic_ReplaceText(
// 0x773,
// EZTR_STANDARD_TEXT_BOX_I,
// 0,
// EZTR_ICON_NO_ICON,
// EZTR_NO_VALUE,
// EZTR_NO_VALUE,
// EZTR_NO_VALUE,
// false,
// "It's too bad... You look like my type..." EZTR_CC_EVENT2 EZTR_CC_END,
// NULL
// );
//}
4 changes: 2 additions & 2 deletions src/fisherman_hooks.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ RECOMP_PATCH void func_80C14554(EnJgameTsn* this, PlayState* play) {
SET_WEEKEVENTREG(WEEKEVENTREG_82_10);
}
func_80C145FC(this);
// } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_82_10)) {
// Actor_OfferGetItem(&this->actor, play, GI_RUPEE_PURPLE, 500.0f, 100.0f);
} else if ((s16) rando_get_slotdata_u32("shuffle_minigames") != 0) {
Actor_OfferGetItem(&this->actor, play, GI_RUPEE_PURPLE, 500.0f, 100.0f);
} else {
Actor_OfferGetItem(&this->actor, play, GI_HEART_PIECE, 500.0f, 100.0f);
}
Expand Down
5 changes: 5 additions & 0 deletions src/great_fairy_hooks.c
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,11 @@ RECOMP_PATCH void EnElfgrp_Init(Actor* thisx, PlayState* play) {

void EnElfgrp_OfferLoop(EnElfgrp* this, PlayState* play) {
s32 type = ENELFGRP_GET_TYPE(&this->actor);
if (rando_get_slotdata_u32("shuffle_great_fairy_rewards") == 0)
{
return;
}

bool hasFairies = type == ENELFGRP_TYPE_MAGIC ? rando_has_item(0x01007F) : rando_has_item(0x010000 | (type - 1)) >= rando_get_slotdata_u32("required_stray_fairies");

if (hasFairies && !rando_location_is_checked(LOCATION_GREAT_FAIRY)) {
Expand Down
6 changes: 5 additions & 1 deletion src/honey_and_darling_hooks.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,15 @@ typedef struct EnFu {
void func_80963610(EnFu* this);

RECOMP_PATCH void func_80963560(EnFu* this, PlayState* play) {
if (Actor_HasParent(&this->actor, play)) {
if ((s16) rando_get_slotdata_u32("shuffle_minigames") == 0) {
Actor_OfferGetItemHook(&this->actor, play, GI_RUPEE_PURPLE, 0, 500.0f, 100.0f, false, false);
} else if (Actor_HasParent(&this->actor, play)) {
this->actor.parent = NULL;
func_80963610(this);
} else if ((this->unk_552 == 0x2880) && !rando_location_is_checked(LOCATION_HONEY_AND_DARLING_ALL_DAYS)) {
Actor_OfferGetItem(&this->actor, play, GI_HEART_PIECE, 500.0f, 100.0f);
} else if ((s16) rando_get_slotdata_u32("shuffle_minigames") == 1) {
Actor_OfferGetItemHook(&this->actor, play, GI_RUPEE_PURPLE, 0, 500.0f, 100.0f, false, false);
} else if (!rando_location_is_checked(LOCATION_HONEY_AND_DARLING_ANY_DAY)) {
Actor_OfferGetItem(&this->actor, play, GI_RUPEE_PURPLE, 500.0f, 100.0f);
} else {
Expand Down
Loading