diff --git a/.gitignore b/.gitignore
index b5f8e5d5..34783a5f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -338,5 +338,7 @@ data/update/common/shaders/dcl/gta_trees_new.dcl
data/update/common/shaders/db/gta_wire.sps
data/update/common/shaders/preload.list
data/update/pc/textures/*.wtd
+data/update/TBoGT/pc/textures/*.wtd
+data/update/TLAD/pc/textures/*.wtd
data/plugins/GTAIV.EFLC.FusionFix.asi
GTAIV.EFLC.FusionFix.zip
diff --git a/data/plugins/GTAIV.EFLC.FusionFix.ini b/data/plugins/GTAIV.EFLC.FusionFix.ini
index d2982aee..120442a5 100644
--- a/data/plugins/GTAIV.EFLC.FusionFix.ini
+++ b/data/plugins/GTAIV.EFLC.FusionFix.ini
@@ -22,6 +22,7 @@ PedDeathAnimFixFromTBOGT = 1
FixRainDrops = 1
RainDropsBlur = 2 // 1, 2 or 4 only
WalkKey = 0x12 // VK_MENU, used by Always Run option
+DoNotRunInside = 0 // do not run inside interiors, used by Always Run option
FixAutoExposure = 1
ExtraCutsceneFix = 1
ExtraInfo = 1 // shows extra info in the pause menu (loaded img files amount)
diff --git a/data/update/TBoGT/common/data/frontend_menus.xml b/data/update/TBoGT/common/data/frontend_menus.xml
index 53963084..a4483276 100644
--- a/data/update/TBoGT/common/data/frontend_menus.xml
+++ b/data/update/TBoGT/common/data/frontend_menus.xml
@@ -425,12 +425,6 @@
-
-
-
-
-
-
@@ -489,7 +483,7 @@
-
+
diff --git a/data/update/TLAD/common/data/frontend_menus.xml b/data/update/TLAD/common/data/frontend_menus.xml
index 8bd197d8..d10dddb1 100644
--- a/data/update/TLAD/common/data/frontend_menus.xml
+++ b/data/update/TLAD/common/data/frontend_menus.xml
@@ -501,11 +501,6 @@
-
-
-
-
-
diff --git a/data/update/common/data/frontend_menus.xml b/data/update/common/data/frontend_menus.xml
index 61beb29c..78e94a3c 100644
--- a/data/update/common/data/frontend_menus.xml
+++ b/data/update/common/data/frontend_menus.xml
@@ -360,12 +360,6 @@
-
-
-
-
-
-
@@ -430,7 +424,7 @@
-
+
@@ -868,7 +862,7 @@
-
+
diff --git a/source/ikeeponwalking.ixx b/source/ikeeponwalking.ixx
index 0a7f0088..9d460128 100644
--- a/source/ikeeponwalking.ixx
+++ b/source/ikeeponwalking.ixx
@@ -17,6 +17,7 @@ public:
{
CIniReader iniReader("");
static int32_t nWalkKey = iniReader.ReadInteger("MISC", "WalkKey", VK_MENU);
+ static bool bDoNotRunInside = iniReader.ReadInteger("MISC", "DoNotRunInside", 0) != 0;
auto pattern = hook::pattern("D9 44 24 18 5F 5B 5D");
static auto flag = false;
if (!pattern.empty())
@@ -37,8 +38,8 @@ public:
*(uintptr_t*)(regs.esp - 4) = loc_A2A60F;
}
auto alwaysrunPref = FusionFixSettings.GetRef("PREF_ALWAYSRUN");
- auto bShouldRun = (alwaysrunPref->get() == FusionFixSettings.AlwaysRunText.eMO_ON) || (alwaysrunPref->get() == FusionFixSettings.AlwaysRunText.eOutside);
- auto bDontRunNow = (alwaysrunPref->get() == FusionFixSettings.AlwaysRunText.eOutside) && Natives::IsInteriorScene();
+ auto bShouldRun = alwaysrunPref->get();
+ auto bDontRunNow = bShouldRun && bDoNotRunInside && Natives::IsInteriorScene();
if (!FusionFixSettings.Get("PREF_SPRINT")) // toggle
{
@@ -70,12 +71,12 @@ public:
static raw_mem GamepadCB(pattern.get_first(0), { 0x90, 0x90 }); // NOP
FusionFixSettings.SetCallback("PREF_ALWAYSRUN", [](int32_t value)
{
- if ((value == FusionFixSettings.AlwaysRunText.eMO_ON) || (value == FusionFixSettings.AlwaysRunText.eOutside))
+ if (value)
GamepadCB.Write();
else
GamepadCB.Restore();
});
- if ((FusionFixSettings("PREF_ALWAYSRUN") == FusionFixSettings.AlwaysRunText.eMO_ON) || (FusionFixSettings("PREF_ALWAYSRUN") == FusionFixSettings.AlwaysRunText.eOutside))
+ if (FusionFixSettings("PREF_ALWAYSRUN"))
GamepadCB.Write();
};
}
diff --git a/source/settings.ixx b/source/settings.ixx
index 0a540e33..3a634319 100644
--- a/source/settings.ixx
+++ b/source/settings.ixx
@@ -155,6 +155,7 @@ public:
{ 0, "PREF_DEFINITION", "MAIN", "Definition", "MENU_DISPLAY_DEFINITION", 6, nullptr, DefinitionText.eClassic, std::distance(std::begin(DefinitionText.data), std::end(DefinitionText.data)) - 1 },
{ 0, "PREF_BLOOM", "MAIN", "Bloom", "", 1, nullptr, 0, 1 },
{ 0, "PREF_FPSCOUNTER", "FRAMELIMIT", "DisplayFpsCounter", "", 0, nullptr, 0, 1 },
+ { 0, "PREF_ALWAYSRUN", "MISC", "AlwaysRun", "", 0, nullptr, 0, 1 },
{ 0, "PREF_ALTDIALOGUE", "MISC", "AltDialogue", "", 0, nullptr, 0, 1 },
{ 0, "PREF_COVERCENTERING", "MISC", "CameraCenteringInCover", "", 0, nullptr, 0, 1 },
{ 0, "PREF_KBCAMCENTERDELAY", "MISC", "DelayBeforeCenteringCameraKB", "", 0, nullptr, 0, 9 },
@@ -165,7 +166,6 @@ public:
{ 0, "PREF_LETTERBOX", "MISC", "Letterbox", "", 1, nullptr, 0, 1 },
{ 0, "PREF_PILLARBOX", "MISC", "Pillarbox", "", 1, nullptr, 0, 1 },
{ 0, "PREF_ANTIALIASING", "MISC", "Antialiasing", "MENU_DISPLAY_ANTIALIASING", 1, nullptr, AntialiasingText.eMO_OFF, std::distance(std::begin(AntialiasingText.data), std::end(AntialiasingText.data)) - 1 },
- { 0, "PREF_ALWAYSRUN", "MISC", "AlwaysRun", "MENU_DISPLAY_ALWAYSRUN", 5, nullptr, AlwaysRunText.eMO_OFF, std::distance(std::begin(AlwaysRunText.data), std::end(AlwaysRunText.data)) - 1 },
};
auto i = firstCustomID;
@@ -383,12 +383,6 @@ public:
std::vector data = { "Low", "Medium", "High", "Very High", "Highest", "MO_OFF", "FXAA", "SMAA" };
} AntialiasingText;
- struct
- {
- enum eAlwaysRunText { eOff, eLow, eMedium, eHigh, eVeryHigh, eMO_OFF, eMO_ON, eOutside };
- std::vector data = { "Off", "Low", "Medium", "High", "Very High", "MO_OFF", "MO_ON", "Outside" };
- } AlwaysRunText;
-
} FusionFixSettings;
class Settings