From beb414eb0a53b3fdf732803ac604b150f9fad955 Mon Sep 17 00:00:00 2001 From: Garrett Cox Date: Mon, 23 Jan 2023 16:28:50 -0600 Subject: [PATCH] Add cheat for extending hookshot reach (#2178) * Add cheat for extending hookshot reach * Adjust cvar usage --- soh/soh/GameMenuBar.cpp | 1 + soh/src/code/z_player_lib.c | 2 +- soh/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/soh/soh/GameMenuBar.cpp b/soh/soh/GameMenuBar.cpp index 0de6cfc7e..955e39f1d 100644 --- a/soh/soh/GameMenuBar.cpp +++ b/soh/soh/GameMenuBar.cpp @@ -1001,6 +1001,7 @@ namespace GameMenuBar { UIWidgets::Tooltip("Makes every surface in the game climbable"); UIWidgets::PaddedEnhancementCheckbox("Hookshot Everything", "gHookshotEverything", true, false); UIWidgets::Tooltip("Makes every surface in the game hookshot-able"); + UIWidgets::EnhancementSliderFloat("Hookshot Reach Multiplier: %.1fx", "##gCheatHookshotReachMultiplier", "gCheatHookshotReachMultiplier", 1.0f, 5.0f, "", 1.0f, false); UIWidgets::PaddedEnhancementCheckbox("Moon Jump on L", "gMoonJumpOnL", true, false); UIWidgets::Tooltip("Holding L makes you float into the air"); UIWidgets::PaddedEnhancementCheckbox("Super Tunic", "gSuperTunic", true, false); diff --git a/soh/src/code/z_player_lib.c b/soh/src/code/z_player_lib.c index 43b22988b..6569c2a5c 100644 --- a/soh/src/code/z_player_lib.c +++ b/soh/src/code/z_player_lib.c @@ -1510,7 +1510,7 @@ void func_80090D20(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void if (func_8002DD78(this) != 0) { Matrix_Translate(500.0f, 300.0f, 0.0f, MTXMODE_APPLY); Player_DrawHookshotReticle( - play, this, (this->heldItemAction == PLAYER_IA_HOOKSHOT) ? 38600.0f : 77600.0f); + play, this, ((this->heldItemAction == PLAYER_IA_HOOKSHOT) ? 38600.0f : 77600.0f) * CVarGetFloat("gCheatHookshotReachMultiplier", 1.0f)); } } } diff --git a/soh/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c b/soh/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c index bcb66e56f..e2318dd9a 100644 --- a/soh/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c +++ b/soh/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c @@ -85,7 +85,7 @@ void ArmsHook_Wait(ArmsHook* this, PlayState* play) { if (this->actor.parent == NULL) { Player* player = GET_PLAYER(play); // get correct timer length for hookshot or longshot - s32 length = (player->heldItemAction == PLAYER_IA_HOOKSHOT) ? 13 : 26; + s32 length = ((player->heldItemAction == PLAYER_IA_HOOKSHOT) ? 13 : 26) * CVarGetFloat("gCheatHookshotReachMultiplier", 1.0f); ArmsHook_SetupAction(this, ArmsHook_Shoot); func_8002D9A4(&this->actor, 20.0f);