Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bike feet fix, more ep checks #564

Merged
merged 3 commits into from
Aug 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ Also available for [Max Payne 3](https://github.com/ThirteenAG/MaxPayne3.FusionF
- **Screen Filter**, an option to change color filters in main game and episodes
- **Distant Blur**, controls how intense the distant blur is during gameplay
- **Depth Of Field**, toggles the effect globally
- **Tree Lighting**, offers "PC", "PC" with vertex AO ("PC+") and "Console" style tree lighting
- **Tree Lighting**, offers "PC", "PC" with fixed orange glow ("PC+") and "Console" style tree lighting
- **Always Run**, allows to run by default, like in classic GTA games
- **LightSyncRGB**, only Logitech hardware is supported, requires Logitech G HUB app

Expand Down
200 changes: 198 additions & 2 deletions source/episodiccontent.ixx
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,22 @@ public:
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);

pattern = hook::pattern("83 3D ? ? ? ? ? 75 59 83 F8 02"); // CExplosions__addExplosion
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 75 57 83 F8 02");
injector::MakeNOP(pattern.get_first(7), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 75 1B 8B 46 40"); // CExplosions__addExplosion disable ped rolling on any explosive from aa12/apc shots
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 75 1B 8B 56 40");
injector::MakeNOP(pattern.get_first(7), 2, true);
}

pattern = hook::pattern("8B 1D ? ? ? ? 83 C4 04 83 FB 02"); // buzzard rocket particles
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(12), 2, true);
Expand All @@ -94,9 +110,101 @@ public:
injector::MakeNOP(pattern.get_first(7), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 7C 10 FF 76 18 E8 ? ? ? ? 83 C4 04 83 38 27 74 07"); // BUZZARD rubble effects
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 7C 11 8B 4F 18");
injector::MakeNOP(pattern.get_first(7), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 89 44 24 38"); // buzzard rockets sound and minigun sounds
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(11), 6, true);

pattern = hook::pattern("83 3D ? ? ? ? ? 7C 64"); // EpisodicVehicleSupport (BUZZARD & SWIFT) smoke effects
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);

pattern = hook::pattern("83 3D ? ? ? ? ? 7C 10 FF 76 18 E8 ? ? ? ? 83 C4 04 83 38 27 74 0A"); // BUZZARD BULLET_IMPACT_WATER
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 7C 11 8B 46 18");
injector::MakeNOP(pattern.get_first(7), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 75 48 3B 05"); // smuggler, floater, blade support
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 75 5A 3B 05");
injector::MakeNOP(pattern.get_first(7), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 75 54 3B 05 ? ? ? ? 75 19 8B CF"); // smuggler, floater, blade support
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 75 2C 3B 05");
injector::MakeNOP(pattern.get_first(7), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 75 3B 3B 05 ? ? ? ? 75 19"); // smuggler, floater, blade support
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 75 28 3B 05 ? ? ? ? 74 C3");
injector::MakeNOP(pattern.get_first(7), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 75 3B 3B 05 ? ? ? ? 74 08"); // smuggler, floater, blade support
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 75 30 3B 05");
injector::MakeNOP(pattern.get_first(7), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 75 54 3B 05 ? ? ? ? 75 19 8B CE"); // smuggler, floater, blade support
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 75 28 3B 05 ? ? ? ? 74 82");
injector::MakeNOP(pattern.get_first(7), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 75 2E 3B 05"); // smuggler
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 75 32 3B 05");
injector::MakeNOP(pattern.get_first(7), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 75 3A 3B 05 ? ? ? ? 75 0C C7 86 ? ? ? ? ? ? ? ? EB 26 3B 05 ? ? ? ? 75 0C C7 86 ? ? ? ? ? ? ? ? EB 12 3B 05 ? ? ? ? 75 0A C7 86 ? ? ? ? ? ? ? ? 8B CE E8 ? ? ? ? 83 3D ? ? ? ? ? 8B 45 1C"); // smuggler
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 75 3C 3B 05 ? ? ? ? 75 0A F3 0F 10 05 ? ? ? ? EB 22 3B 05 ? ? ? ? 75 0A F3 0F 10 05 ? ? ? ? EB 10 3B 05 ? ? ? ? 75 10 F3 0F 10 05 ? ? ? ? F3 0F 11 86 ? ? ? ? 8B CE E8 ? ? ? ? 83 3D ? ? ? ? ? D9 44 24 10");
injector::MakeNOP(pattern.get_first(7), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 75 3A 3B 05 ? ? ? ? 75 0C C7 86 ? ? ? ? ? ? ? ? EB 26 3B 05 ? ? ? ? 75 0C C7 86 ? ? ? ? ? ? ? ? EB 12 3B 05 ? ? ? ? 75 0A C7 86 ? ? ? ? ? ? ? ? 8B CE E8 ? ? ? ? 83 3D ? ? ? ? ? 8B 45 10"); // smuggler
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 75 3C 3B 05 ? ? ? ? 75 0A F3 0F 10 05 ? ? ? ? EB 22 3B 05 ? ? ? ? 75 0A F3 0F 10 05 ? ? ? ? EB 10 3B 05 ? ? ? ? 75 10 F3 0F 10 05 ? ? ? ? F3 0F 11 86 ? ? ? ? 8B CE E8 ? ? ? ? 83 3D ? ? ? ? ? D9 EE");
injector::MakeNOP(pattern.get_first(7), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 75 20 0F BF 46 2E"); // floater camera height
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 75 20 0F BF 56 2E");
injector::MakeNOP(pattern.get_first(7), 2, true);
}
}

if (bEpisodicWeapons)
Expand Down Expand Up @@ -177,6 +285,62 @@ public:
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);

pattern = hook::pattern("83 3D ? ? ? ? ? 0F 8C ? ? ? ? 8D 8E"); // Sticky bomb faster throw in vehicle
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 6, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 7C 69");
injector::MakeNOP(pattern.get_first(7), 2, true);
}

pattern = hook::pattern("0F 8C ? ? ? ? 8B 44 24 14 83 78 18 24"); // Sticky bomb faster throw in vehicle
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(0), 6, true);
else {
pattern = hook::pattern("0F 8C ? ? ? ? 83 7B 18 24");
injector::MakeNOP(pattern.get_first(7), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 75 2D 83 7E 14 19"); // Grenade launcher explode on impact from E2
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 75 30 83 7E 14 19");
injector::MakeNOP(pattern.get_first(27), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 8B 3D ? ? ? ? F3 0F 10 05"); // Weapon sounds slow motion?
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(31), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? F3 0F 10 15");
injector::MakeNOP(pattern.get_first(27), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 0F 85 ? ? ? ? 8B 3D ? ? ? ? F3 0F 10 05"); // SHOTGUN_EXPLOSION
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 6, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 75 7C");
injector::MakeNOP(pattern.get_first(7), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? F3 0F 10 0D ? ? ? ? F3 0F 11 4C 24 ? 75 14"); // APC_EXPLOSION
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(21), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? F3 0F 10 05 ? ? ? ? F3 0F 11 44 24 ? 75 4C");
injector::MakeNOP(pattern.get_first(21), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 0F 85 ? ? ? ? 8B 3D ? ? ? ? F3 0F 11 4C 24"); // GRENADE_EXPLOSION
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 6, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 0F 85 ? ? ? ? 84 C0");
injector::MakeNOP(pattern.get_first(7), 6, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 0F 8C ? ? ? ? 83 7F 54 20"); // P90 scroll block
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 6, true);
Expand Down Expand Up @@ -231,7 +395,31 @@ public:
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 75 0D 80 7E 7D 00");
injector::MakeNOP(pattern.get_first(7), 2, true);
}
}

pattern = hook::pattern("83 3D ? ? ? ? ? 5D 75 1E"); // Give parachute during load save
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(8), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 75 1E E8");
injector::MakeNOP(pattern.get_first(7), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 53 57 8B 7C 24 20"); // TBoGT counter anims fix
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(15), 2, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? 53 55 8B 6C 24 20");
injector::MakeNOP(pattern.get_first(21), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 75 36 80 7B 28 00"); // TBoGT counter anims fix
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 2, true);
else {
pattern = hook::pattern("39 1D ? ? ? ? 75 2A 80 7F 28 00");
injector::MakeNOP(pattern.get_first(7), 2, true);
}
}

if (bExplosiveAnnihilator)
Expand Down Expand Up @@ -309,11 +497,19 @@ public:

pattern = hook::pattern("83 3D ? ? ? ? ? BB ? ? ? ? B8"); // E2_landing marker
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(24), 3, true);
injector::MakeNOP(pattern.get_first(17), 3, true);
else {
pattern = hook::pattern("83 3D ? ? ? ? ? BB ? ? ? ? 75 05");
injector::MakeNOP(pattern.get_first(12), 2, true);
}

pattern = hook::pattern("83 3D ? ? ? ? ? 0F 85 ? ? ? ? 66 83 3E 09"); // E2_landing marker
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 6, true);
else {
pattern = hook::pattern("39 3D ? ? ? ? 0F 85 ? ? ? ? 66 83 7E");
injector::MakeNOP(pattern.get_first(6), 6, true);
}
}

if (bTBoGTHelicopterHeightLimit)
Expand Down
12 changes: 12 additions & 0 deletions source/fixes.ixx
Original file line number Diff line number Diff line change
Expand Up @@ -520,6 +520,18 @@ public:
injector::MakeNOP(pattern.get_first(0), 9, true);
}
}

// Bike standing still feet fix
{
auto pattern = hook::pattern("83 3D ? ? ? ? ? 0F 85 ? ? ? ? 68 ? ? ? ? 68");
if (!pattern.empty())
injector::MakeNOP(pattern.get_first(7), 6, true);
else
{
pattern = hook::pattern("39 05 ? ? ? ? 0F 85 ? ? ? ? 68");
injector::MakeNOP(pattern.get_first(6), 6, true);
}
}
};
}
} Fixes;
Loading