fix epona fixes
This commit is contained in:
parent
0f92410620
commit
1ba9c43f2e
|
@ -546,6 +546,9 @@ extern s16 sPictoPhotoBeingTaken;
|
||||||
extern void* gWorkBuffer;
|
extern void* gWorkBuffer;
|
||||||
u16 func_801A5100(void);
|
u16 func_801A5100(void);
|
||||||
|
|
||||||
|
#define ON_EPONA (player->stateFlags1 & PLAYER_STATE1_800000)
|
||||||
|
#define EPONA_FIX_ACTIVE (no_bow_epona_fix && ON_EPONA)
|
||||||
|
|
||||||
// @recomp Patched to update status of extra buttons via set_extra_item_slot_status.
|
// @recomp Patched to update status of extra buttons via set_extra_item_slot_status.
|
||||||
RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) {
|
RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) {
|
||||||
InterfaceContext* interfaceCtx = &play->interfaceCtx;
|
InterfaceContext* interfaceCtx = &play->interfaceCtx;
|
||||||
|
@ -555,11 +558,11 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) {
|
||||||
|
|
||||||
if (gSaveContext.save.cutsceneIndex < 0xFFF0) {
|
if (gSaveContext.save.cutsceneIndex < 0xFFF0) {
|
||||||
gSaveContext.hudVisibilityForceButtonAlphasByStatus = false;
|
gSaveContext.hudVisibilityForceButtonAlphasByStatus = false;
|
||||||
if ((player->stateFlags1 & PLAYER_STATE1_800000) || CHECK_WEEKEVENTREG(WEEKEVENTREG_08_01) ||
|
if (ON_EPONA || CHECK_WEEKEVENTREG(WEEKEVENTREG_08_01) ||
|
||||||
(!CHECK_EVENTINF(EVENTINF_41) && (play->unk_1887C >= 2))) {
|
(!CHECK_EVENTINF(EVENTINF_41) && (play->unk_1887C >= 2))) {
|
||||||
// Riding Epona OR Honey & Darling minigame OR Horseback balloon minigame OR related to swamp boat
|
// Riding Epona OR Honey & Darling minigame OR Horseback balloon minigame OR related to swamp boat
|
||||||
// (non-minigame?)
|
// (non-minigame?)
|
||||||
if ((player->stateFlags1 & PLAYER_STATE1_800000) && (player->currentMask == PLAYER_MASK_BLAST) &&
|
if (ON_EPONA && (player->currentMask == PLAYER_MASK_BLAST) &&
|
||||||
(gSaveContext.bButtonStatus == BTN_DISABLED)) {
|
(gSaveContext.bButtonStatus == BTN_DISABLED)) {
|
||||||
// Riding Epona with blast mask?
|
// Riding Epona with blast mask?
|
||||||
restoreHudVisibility = true;
|
restoreHudVisibility = true;
|
||||||
|
@ -611,7 +614,7 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) {
|
||||||
set_extra_item_slot_status(BTN_DISABLED);
|
set_extra_item_slot_status(BTN_DISABLED);
|
||||||
} else {
|
} else {
|
||||||
// @recomp_use_export_var no_bow_epona_fix: Part of the no bow Epona fix.
|
// @recomp_use_export_var no_bow_epona_fix: Part of the no bow Epona fix.
|
||||||
if (no_bow_epona_fix) {
|
if (EPONA_FIX_ACTIVE) {
|
||||||
if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOW] == ITEM_BOW) {
|
if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOW] == ITEM_BOW) {
|
||||||
BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW;
|
BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW;
|
||||||
BUTTON_STATUS(EQUIP_SLOT_B) = BTN_ENABLED;
|
BUTTON_STATUS(EQUIP_SLOT_B) = BTN_ENABLED;
|
||||||
|
@ -624,7 +627,7 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) {
|
||||||
Interface_LoadItemIconImpl(play, EQUIP_SLOT_B);
|
Interface_LoadItemIconImpl(play, EQUIP_SLOT_B);
|
||||||
} else if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOW] == ITEM_NONE) {
|
} else if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOW] == ITEM_NONE) {
|
||||||
// @recomp_use_export_var no_bow_epona_fix: Part of the no bow Epona fix.
|
// @recomp_use_export_var no_bow_epona_fix: Part of the no bow Epona fix.
|
||||||
if (no_bow_epona_fix) {
|
if (EPONA_FIX_ACTIVE) {
|
||||||
gSaveContext.buttonStatus[EQUIP_SLOT_B] = BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B);
|
gSaveContext.buttonStatus[EQUIP_SLOT_B] = BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B);
|
||||||
BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED;
|
BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED;
|
||||||
} else {
|
} else {
|
||||||
|
@ -635,7 +638,7 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// @recomp_use_export_var no_bow_epona_fix: If the B button does not contain a sword, don't disable the UI.
|
// @recomp_use_export_var no_bow_epona_fix: If the B button does not contain a sword, don't disable the UI.
|
||||||
if (!no_bow_epona_fix || BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) < ITEM_SWORD_KOKIRI ||
|
if (!EPONA_FIX_ACTIVE || BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) < ITEM_SWORD_KOKIRI ||
|
||||||
BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) > ITEM_SWORD_GILDED) {
|
BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) > ITEM_SWORD_GILDED) {
|
||||||
BUTTON_STATUS(EQUIP_SLOT_C_LEFT) = BTN_DISABLED;
|
BUTTON_STATUS(EQUIP_SLOT_C_LEFT) = BTN_DISABLED;
|
||||||
BUTTON_STATUS(EQUIP_SLOT_C_DOWN) = BTN_DISABLED;
|
BUTTON_STATUS(EQUIP_SLOT_C_DOWN) = BTN_DISABLED;
|
||||||
|
@ -669,12 +672,12 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) {
|
||||||
BUTTON_STATUS(EQUIP_SLOT_C_RIGHT) = BTN_DISABLED;
|
BUTTON_STATUS(EQUIP_SLOT_C_RIGHT) = BTN_DISABLED;
|
||||||
set_extra_item_slot_status(BTN_DISABLED);
|
set_extra_item_slot_status(BTN_DISABLED);
|
||||||
Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP);
|
Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP);
|
||||||
} else if (player->stateFlags1 & PLAYER_STATE1_800000) {
|
} else if (ON_EPONA) {
|
||||||
Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP);
|
Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (player->stateFlags1 & PLAYER_STATE1_800000) {
|
if (ON_EPONA) {
|
||||||
Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP);
|
Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -692,7 +695,7 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) {
|
||||||
set_extra_item_slot_status(BTN_DISABLED);
|
set_extra_item_slot_status(BTN_DISABLED);
|
||||||
} else {
|
} else {
|
||||||
// @recomp_use_export_var no_bow_epona_fix: Part of the no bow Epona fix.
|
// @recomp_use_export_var no_bow_epona_fix: Part of the no bow Epona fix.
|
||||||
if (no_bow_epona_fix) {
|
if (EPONA_FIX_ACTIVE) {
|
||||||
if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOW] == ITEM_BOW) {
|
if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOW] == ITEM_BOW) {
|
||||||
BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW;
|
BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B) = ITEM_BOW;
|
||||||
BUTTON_STATUS(EQUIP_SLOT_B) = BTN_ENABLED;
|
BUTTON_STATUS(EQUIP_SLOT_B) = BTN_ENABLED;
|
||||||
|
@ -706,7 +709,7 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) {
|
||||||
Interface_LoadItemIconImpl(play, EQUIP_SLOT_B);
|
Interface_LoadItemIconImpl(play, EQUIP_SLOT_B);
|
||||||
} else if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOW] == ITEM_NONE) {
|
} else if (gSaveContext.save.saveInfo.inventory.items[SLOT_BOW] == ITEM_NONE) {
|
||||||
// @recomp_use_export_var no_bow_epona_fix: Part of the no bow Epona fix.
|
// @recomp_use_export_var no_bow_epona_fix: Part of the no bow Epona fix.
|
||||||
if (no_bow_epona_fix) {
|
if (EPONA_FIX_ACTIVE) {
|
||||||
gSaveContext.buttonStatus[EQUIP_SLOT_B] = BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B);
|
gSaveContext.buttonStatus[EQUIP_SLOT_B] = BUTTON_ITEM_EQUIP(CUR_FORM, EQUIP_SLOT_B);
|
||||||
BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED;
|
BUTTON_STATUS(EQUIP_SLOT_B) = BTN_DISABLED;
|
||||||
} else {
|
} else {
|
||||||
|
@ -753,7 +756,7 @@ RECOMP_PATCH void Interface_UpdateButtonsPart1(PlayState* play) {
|
||||||
BUTTON_STATUS(EQUIP_SLOT_C_RIGHT) = BTN_DISABLED;
|
BUTTON_STATUS(EQUIP_SLOT_C_RIGHT) = BTN_DISABLED;
|
||||||
set_extra_item_slot_status(BTN_DISABLED);
|
set_extra_item_slot_status(BTN_DISABLED);
|
||||||
Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP);
|
Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP);
|
||||||
} else if (player->stateFlags1 & PLAYER_STATE1_800000) {
|
} else if (ON_EPONA) {
|
||||||
Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP);
|
Interface_SetHudVisibility(HUD_VISIBILITY_A_B_MINIMAP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue