From b7a69c69869030d857ff08c5cc59109139ea8a23 Mon Sep 17 00:00:00 2001 From: PJB3005 Date: Tue, 31 Mar 2026 03:17:56 +0200 Subject: [PATCH] Fast iron boots tweak --- include/d/actor/d_a_alink.h | 6 ++++++ src/d/actor/d_a_alink.cpp | 19 +++++++++++++++++++ src/dusk/imgui/ImGuiMenuGame.cpp | 6 ++++++ 3 files changed, 31 insertions(+) diff --git a/include/d/actor/d_a_alink.h b/include/d/actor/d_a_alink.h index 7c70ea54e5..a4d38efc43 100644 --- a/include/d/actor/d_a_alink.h +++ b/include/d/actor/d_a_alink.h @@ -8425,4 +8425,10 @@ inline daAlink_c* daAlink_getAlinkActorClass() { return (daAlink_c*)dComIfGp_getLinkPlayer(); } +#if TARGET_PC +namespace dusk::tweaks { + extern bool FastIronBoots; +} +#endif + #endif /* D_A_D_A_ALINK_H */ diff --git a/src/d/actor/d_a_alink.cpp b/src/d/actor/d_a_alink.cpp index 4f106ece22..5e2530bdf3 100644 --- a/src/d/actor/d_a_alink.cpp +++ b/src/d/actor/d_a_alink.cpp @@ -54,6 +54,10 @@ #include "res/Object/Alink.h" #include +#if TARGET_PC +bool dusk::tweaks::FastIronBoots = false; +#endif + static int daAlink_Create(fopAc_ac_c* i_this); static int daAlink_Delete(daAlink_c* i_this); static int daAlink_Execute(daAlink_c* i_this); @@ -7509,6 +7513,11 @@ void daAlink_c::setBlendMoveAnime(f32 i_morf) { f32 sp28 = mpHIO->mMove.m.mFootPositionRatio; BOOL sp24 = checkEventRun(); BOOL sp20 = checkBootsMoveAnime(1); +#if TARGET_PC + if (dusk::tweaks::FastIronBoots) { + sp20 = FALSE; + } +#endif f32 var_f29; @@ -9469,6 +9478,11 @@ void daAlink_c::setStickData() { } else { mHeavySpeedMultiplier = mpHIO->mItem.mIronBoots.m.mInputFactor; } +#if TARGET_PC + if (dusk::tweaks::FastIronBoots) { + mHeavySpeedMultiplier = 1.0f; + } +#endif mStickValue *= mHeavySpeedMultiplier; } else if (checkBootsOrArmorHeavy()) { if (checkZoraWearAbility()) { @@ -9476,6 +9490,11 @@ void daAlink_c::setStickData() { } else { mHeavySpeedMultiplier = mpHIO->mItem.mIronBoots.m.mWaterInputFactor; } +#if TARGET_PC + if (dusk::tweaks::FastIronBoots) { + mHeavySpeedMultiplier = 1.0f; + } +#endif mStickValue *= mHeavySpeedMultiplier; } else if ((checkWolf() && field_0x2fbc == 11 && checkWaterPolygonUnder()) || mGndPolyAtt0 == 11) diff --git a/src/dusk/imgui/ImGuiMenuGame.cpp b/src/dusk/imgui/ImGuiMenuGame.cpp index ff1ef73205..2e6a4fac32 100644 --- a/src/dusk/imgui/ImGuiMenuGame.cpp +++ b/src/dusk/imgui/ImGuiMenuGame.cpp @@ -7,6 +7,7 @@ #include #include "JSystem/JUtility/JUTGamePad.h" +#include "d/actor/d_a_alink.h" #include "dusk/audio/DuskAudioSystem.h" #include "m_Do/m_Do_audio.h" #include "m_Do/m_Do_controller_pad.h" @@ -71,6 +72,11 @@ namespace dusk { ImGui::EndMenu(); } + if (ImGui::BeginMenu("Tweaks")) { + ImGui::MenuItem("Fast iron boots", nullptr, &tweaks::FastIronBoots); + ImGui::EndMenu(); + } + ImGui::EndMenu(); }