Skip to content

Commit f59af4b

Browse files
committed
adjust shocking events for snow
1 parent c05383c commit f59af4b

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

source/snow/snow.ixx

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,68 @@ namespace phMaterialGta
240240
}
241241
}
242242

243+
namespace ShockingEvents
244+
{
245+
enum eShockingEvents
246+
{
247+
SexyCar,
248+
RunningPed,
249+
VisibleWeapon,
250+
VisibleWeaponMELEE,
251+
VisibleWeaponTHROWN,
252+
VisibleWeaponHANDGUN,
253+
VisibleWeaponSHOTGUN,
254+
VisibleWeaponSMG,
255+
VisibleWeaponSNIPER,
256+
VisibleWeaponRIFLE,
257+
VisibleWeaponHEAVY,
258+
HornSounded,
259+
PlaneFlyby,
260+
SeenCarStolen,
261+
HelicopterOverhead,
262+
SeenMeleeAction,
263+
SeenGangFight,
264+
PedRunOver,
265+
PanickedPed,
266+
InjuredPed,
267+
DeadBody,
268+
DrivingOnPavement,
269+
MadDriver,
270+
CarCrash,
271+
CarPileUp,
272+
Fire,
273+
GunshotFired,
274+
PedShot,
275+
GunFight,
276+
Explosion,
277+
};
278+
279+
constexpr auto ShockingEventIndexSize = 4;
280+
constexpr auto ShockingEventDataFullSize = 52;
281+
constexpr auto ShockingEventSize = ShockingEventDataFullSize - ShockingEventIndexSize;
282+
283+
void** pShockingEvents = nullptr;
284+
static std::array<uint8_t, ShockingEventSize> originalDrivingOnPavement;
285+
static std::array<uint8_t, ShockingEventSize> originalMadDriver;
286+
287+
static void SetShockingEventsParams()
288+
{
289+
if (bEnableSnow)
290+
{
291+
memcpy(originalDrivingOnPavement.data(), pShockingEvents + ((ShockingEventDataFullSize * DrivingOnPavement) / sizeof(void*)) + (ShockingEventIndexSize / sizeof(void*)), ShockingEventSize);
292+
memcpy(originalMadDriver.data(), pShockingEvents + ((ShockingEventDataFullSize * MadDriver) / sizeof(void*)) + (ShockingEventIndexSize / sizeof(void*)), ShockingEventSize);
293+
294+
memset(pShockingEvents + ((ShockingEventDataFullSize * DrivingOnPavement) / sizeof(void*)) + (ShockingEventIndexSize / sizeof(void*)), 0, ShockingEventSize);
295+
memset(pShockingEvents + ((ShockingEventDataFullSize * MadDriver) / sizeof(void*)) + (ShockingEventIndexSize / sizeof(void*)), 0, ShockingEventSize);
296+
}
297+
else
298+
{
299+
memcpy(pShockingEvents + ((ShockingEventDataFullSize * DrivingOnPavement) / sizeof(void*)) + (ShockingEventIndexSize / sizeof(void*)), originalDrivingOnPavement.data(), ShockingEventSize);
300+
memcpy(pShockingEvents + ((ShockingEventDataFullSize * MadDriver) / sizeof(void*)) + (ShockingEventIndexSize / sizeof(void*)), originalMadDriver.data(), ShockingEventSize);
301+
}
302+
}
303+
}
304+
243305
class Snow
244306
{
245307
private:
@@ -692,6 +754,7 @@ public:
692754
CTimeCycle::Initialise();
693755
SetRainRenderParams();
694756
phMaterialGta::SetMaterialsDatParams();
757+
ShockingEvents::SetShockingEventsParams();
695758
}
696759

697760
Snow()
@@ -890,6 +953,9 @@ public:
890953

891954
pattern = find_pattern("81 EC ? ? ? ? A1 ? ? ? ? 33 C4 89 84 24 ? ? ? ? 56 8B F1 8D 4C 24", "81 EC ? ? ? ? A1 ? ? ? ? 33 C4 89 84 24 ? ? ? ? 56 F3 0F 10 84 24");
892955
phMaterialGta::shparse = safetyhook::create_inline(pattern.get_first(), phMaterialGta::parse);
956+
957+
pattern = find_pattern("34 05 ? ? ? ? 56 8B C8 E8 ? ? ? ? 6A", "81 C1 ? ? ? ? E8 ? ? ? ? 6A ? 55");
958+
ShockingEvents::pShockingEvents = *pattern.get_first<void**>(2);
893959

894960
// LCS Snow test
895961
//CRenderPhaseDrawScene::onBeforePostFX() += []()

0 commit comments

Comments
 (0)