diff --git a/soh/soh/Enhancements/Fishing.cpp b/soh/soh/Enhancements/Fishing.cpp new file mode 100644 index 0000000000..109533f984 --- /dev/null +++ b/soh/soh/Enhancements/Fishing.cpp @@ -0,0 +1,21 @@ +#include "soh/Enhancements/game-interactor/GameInteractor.h" +#include "soh/ShipInit.hpp" + +extern "C" { +#include + +f32 Fishing_GetMinimumRequiredScore(); +} + +void BuildFishingMessage(uint16_t* textId, bool* loadFromMessageTable) { + if (gSaveContext.minigameScore == 0) { + gSaveContext.minigameScore = Fishing_GetMinimumRequiredScore(); + } +} + +void RegisterFishingMessages() { + COND_ID_HOOK(OnOpenText, 0x40AE, CVarGetInteger(CVAR_ENHANCEMENT("CustomizeFishing"), 0), BuildFishingMessage); + COND_ID_HOOK(OnOpenText, 0x4080, CVarGetInteger(CVAR_ENHANCEMENT("CustomizeFishing"), 0), BuildFishingMessage); +} + +static RegisterShipInitFunc initFunc(RegisterFishingMessages, { CVAR_ENHANCEMENT("CustomizeFishing") }); diff --git a/soh/src/overlays/actors/ovl_Fishing/z_fishing.c b/soh/src/overlays/actors/ovl_Fishing/z_fishing.c index 77e16a147c..41aee59654 100644 --- a/soh/src/overlays/actors/ovl_Fishing/z_fishing.c +++ b/soh/src/overlays/actors/ovl_Fishing/z_fishing.c @@ -432,6 +432,8 @@ static FishingEffect sFishingEffects[FISHING_EFFECT_COUNT]; static Vec3f sStreamSoundProjectedPos; static s16 sFishOnHandParams; +f32 Fishing_GetMinimumRequiredScore(); + u8 AllHyruleLoaches() { return CVarGetInteger(CVAR_ENHANCEMENT("CustomizeFishing"), 0) && CVarGetInteger(CVAR_ENHANCEMENT("AllHyruleLoaches"), 0); @@ -904,12 +906,16 @@ void Fishing_Init(Actor* thisx, PlayState* play2) { if (sLinkAge == LINK_AGE_CHILD) { if ((HIGH_SCORE(HS_FISHING) & HS_FISH_LENGTH_CHILD) != 0) { sFishingRecordLength = HIGH_SCORE(HS_FISHING) & HS_FISH_LENGTH_CHILD; + } else if (CVarGetInteger(CVAR_ENHANCEMENT("CustomizeFishing"), 0)) { + sFishingRecordLength = Fishing_GetMinimumRequiredScore(); } else { sFishingRecordLength = 40.0f; // 6 lbs } } else { if ((HIGH_SCORE(HS_FISHING) & HS_FISH_LENGTH_ADULT) != 0) { sFishingRecordLength = (HIGH_SCORE(HS_FISHING) & HS_FISH_LENGTH_ADULT) >> 0x18; + } else if (CVarGetInteger(CVAR_ENHANCEMENT("CustomizeFishing"), 0)) { + sFishingRecordLength = Fishing_GetMinimumRequiredScore(); } else { sFishingRecordLength = 45.0f; // 7 lbs }