Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions include/apcommon.h
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ RECOMP_IMPORT(".", u32 rando_get_majora_remains_required());
RECOMP_IMPORT(".", u32 rando_get_random_seed());
RECOMP_IMPORT(".", bool rando_is_magic_trap());
RECOMP_IMPORT(".", bool rando_skulltulas_enabled());
RECOMP_IMPORT(".", bool rando_great_fairy_rewards_disabled());
RECOMP_IMPORT(".", bool rando_shopsanity_enabled());
RECOMP_IMPORT(".", bool rando_advanced_shops_enabled());
RECOMP_IMPORT(".", bool rando_get_curiostity_shop_trades());
Expand Down
6 changes: 6 additions & 0 deletions include/yaml_generation.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,12 @@ typedef enum {
RANDO_SKULLSANITY_MAX = 0xFFFFFFFF
} RandoSkullSanity;

typedef enum {
RANDO_SHUFFLE_GREAT_FAIRY_REWARDS_VANILLA = 0,
RANDO_SHUFFLE_GREAT_FAIRY_REWARDS_ENABLED = 1,
RANDO_SHUFFLE_GREAT_FAIRY_REWARDS_ADVANCED = 2
} RandoShuffleGreatFairyRewards;

typedef enum {
RANDO_SHOP_PRICES_VANILLA = 0,
RANDO_SHOP_PRICES_FREE = 1,
Expand Down
1 change: 1 addition & 0 deletions mod.toml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ native_libraries = [
"rando_get_tunic_color",
"rando_get_shop_price",
"rando_skulltulas_enabled",
"rando_great_fairy_rewards_disabled",
"rando_shopsanity_enabled",
"rando_advanced_shops_enabled",
"rando_scrubs_enabled",
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_great_fairy_rewards_disabled())
{
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
8 changes: 7 additions & 1 deletion src/yaml_generation_menu.c
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,12 @@ static EnumOptionValue rando_skullsanity_options[] = {
{ "ignore", NULL },
};

static EnumOptionValue rando_shuffle_great_fairy_rewards_options[] ={
{ "vanilla", NULL },
{ "anything", NULL },
{ "ignore", NULL},
};

static EnumOptionValue rando_shopsanity_options[] = {
{ "vanilla", NULL },
{ "enabled", NULL },
Expand Down Expand Up @@ -498,7 +504,7 @@ void randoCreateYamlConfigMenu() {
randoCreateBoolPropOption(&yaml_config_menu, "shuffle_spiderhouse_reward", "Shuffle Spiderhouse Rewards:", false);
randoCreateIntSliderOption(&yaml_config_menu, "required_skull_tokens", "Required Skulltula Tokens:", 0, 30, 1, 30);
randoCreateRadioOption(&yaml_config_menu, "skullsanity", "Skull-Sanity Mode:", rando_skullsanity_options, ARRAY_COUNT(rando_skullsanity_options), RANDO_SKULLSANITY_VANILLA);
randoCreateBoolPropOption(&yaml_config_menu, "shuffle_great_fairy_rewards", "Shuffle Great Fairy Rewards:", false);
randoCreateRadioOption(&yaml_config_menu, "shuffle_great_fairy_rewards", "Shuffle Great Fairy Rewards:", rando_shuffle_great_fairy_rewards_options, ARRAY_COUNT(rando_shuffle_great_fairy_rewards_options), RANDO_SHUFFLE_GREAT_FAIRY_REWARDS_VANILLA);
randoCreateIntSliderOption(&yaml_config_menu, "required_stray_fairies", "Required Stray Fairies:", 0, 15, 1, 15);
randoCreateBoolPropOption(&yaml_config_menu, "fairysanity", "Fairy-Sanity:", false);
randoCreateRadioOption(&yaml_config_menu, "shop_prices", "Shop Prices:", shop_prices_options, ARRAY_COUNT(shop_prices_options), RANDO_SHOP_PRICES_VANILLA);
Expand Down