From 0c79b916c2b03c7eeb98ebe4770ba80c6836a0f3 Mon Sep 17 00:00:00 2001 From: Veloscocity Date: Wed, 15 Nov 2023 14:13:15 -0500 Subject: [PATCH] New Effect: Reckless Drivers --- ChaosMod/ChaosMod.vcxproj | 1 + ChaosMod/Effects/db/Peds/PedsNearbyFlee.cpp | 3 +- ChaosMod/Effects/db/Peds/PedsReckless.cpp | 38 ++++++++++++++++++++ ChaosMod/Effects/db/Vehs/VehsGTAOTraffic.cpp | 3 +- ConfigApp/Effects.cs | 1 + 5 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 ChaosMod/Effects/db/Peds/PedsReckless.cpp diff --git a/ChaosMod/ChaosMod.vcxproj b/ChaosMod/ChaosMod.vcxproj index 6d21948f5..a78db8967 100644 --- a/ChaosMod/ChaosMod.vcxproj +++ b/ChaosMod/ChaosMod.vcxproj @@ -151,6 +151,7 @@ + diff --git a/ChaosMod/Effects/db/Peds/PedsNearbyFlee.cpp b/ChaosMod/Effects/db/Peds/PedsNearbyFlee.cpp index 13242f4fc..16d7230e7 100644 --- a/ChaosMod/Effects/db/Peds/PedsNearbyFlee.cpp +++ b/ChaosMod/Effects/db/Peds/PedsNearbyFlee.cpp @@ -19,6 +19,7 @@ static void OnStart() REGISTER_EFFECT(OnStart, nullptr, nullptr, EffectInfo { .Name = "All Nearby Peds Are Fleeing", - .Id = "peds_flee" + .Id = "peds_flee", + .IncompatibleWith = { "peds_reckless" } } ); \ No newline at end of file diff --git a/ChaosMod/Effects/db/Peds/PedsReckless.cpp b/ChaosMod/Effects/db/Peds/PedsReckless.cpp new file mode 100644 index 000000000..40529e4b9 --- /dev/null +++ b/ChaosMod/Effects/db/Peds/PedsReckless.cpp @@ -0,0 +1,38 @@ +#include + +static std::unordered_map crazyPeds; + +static void OnTick() +{ + for (auto ped : GetAllPeds()) + { + if (ped == PLAYER_PED_ID() || !IS_PED_IN_ANY_VEHICLE(ped, false) || crazyPeds[ped]) + continue; + + Vector3 vec = GET_ENTITY_COORDS(ped, false); + TASK_SMART_FLEE_COORD(ped, vec.x, vec.y, vec.z, 9999.f, -1, false, false); + // TASK_VEHICLE_DRIVE_WANDER(ped, veh, 100.f, 0x423C0B6C); + + SET_DRIVE_TASK_DRIVING_STYLE(ped, 0x423C0A6C); + SET_DRIVE_TASK_MAX_CRUISE_SPEED(ped, 200.f); + SET_DRIVER_ABILITY(ped, 1.f); + SET_DRIVER_AGGRESSIVENESS(ped, 1.f); + + crazyPeds[ped] = true; + } +} + +static void OnStop() +{ + crazyPeds.clear(); +} + +// clang-format off +REGISTER_EFFECT(nullptr, OnStop, OnTick, EffectInfo + { + .Name = "Reckless Drivers", + .Id = "peds_reckless", + .IsTimed = true, + .IncompatibleWith = { "traffic_gtao" } + } +); \ No newline at end of file diff --git a/ChaosMod/Effects/db/Vehs/VehsGTAOTraffic.cpp b/ChaosMod/Effects/db/Vehs/VehsGTAOTraffic.cpp index aa0ae12b4..a91f27f29 100644 --- a/ChaosMod/Effects/db/Vehs/VehsGTAOTraffic.cpp +++ b/ChaosMod/Effects/db/Vehs/VehsGTAOTraffic.cpp @@ -42,6 +42,7 @@ REGISTER_EFFECT(nullptr, nullptr, OnTick, EffectInfo { .Name = "Traffic Magnet", .Id = "traffic_gtao", - .IsTimed = true + .IsTimed = true, + .IncompatibleWith = { "peds_reckless" } } ); \ No newline at end of file diff --git a/ConfigApp/Effects.cs b/ConfigApp/Effects.cs index b03e5efe6..a0c12a343 100644 --- a/ConfigApp/Effects.cs +++ b/ConfigApp/Effects.cs @@ -415,6 +415,7 @@ public enum EffectTimedType { "screen_realfp", new EffectInfo("Real First Person", EffectCategory.Screen, true) }, { "screen_hueshift", new EffectInfo("Hue Shift", EffectCategory.Screen, true) }, { "player_copyforce", new EffectInfo("Use The Force", EffectCategory.Player, true, true) }, + { "peds_reckless", new EffectInfo("Reckless Drivers", EffectCategory.Peds, true) }, }; } }