From 9c3d023274e5203da0702b98435f22772ca2e876 Mon Sep 17 00:00:00 2001 From: YesseYesseY Date: Thu, 17 Jul 2025 01:11:14 +0200 Subject: [PATCH] 8.40 - Sleepy rune event --- Project Reboot 3.0/calendar.h | 14 ++++++++++ Project Reboot 3.0/die.h | 1 + Project Reboot 3.0/dllmain.cpp | 7 ++++- Project Reboot 3.0/gui.h | 47 +++++++++++++++++++++++++++++++++- 4 files changed, 67 insertions(+), 2 deletions(-) diff --git a/Project Reboot 3.0/calendar.h b/Project Reboot 3.0/calendar.h index 2df83ef..bd97f5f 100644 --- a/Project Reboot 3.0/calendar.h +++ b/Project Reboot 3.0/calendar.h @@ -156,4 +156,18 @@ namespace Calendar NewYearTimer->ProcessEvent(StartNYE, nullptr); } } + + static void (*OnDamageServerSleepyOriginal)(UObject* SleepyProp, FFrame& Stack, void* Ret); + static void OnDamageServerSleepyHook(UObject* SleepyProp, FFrame& Stack, void* Ret) + { + // TODO: Fix damage im too tired and stupid to fix it rn + float Damage = 50.0f; + Stack.StepCompiledIn(&Damage); + + static UObject* SleepyM = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap:PersistentLevel.BP_Sleepy_M_2"); + static UFunction* RootUpdateDamage = SleepyM->FindFunction("RootUpdateDamage"); + SleepyM->ProcessEvent(RootUpdateDamage, &Damage); + OnDamageServerSleepyOriginal(SleepyProp, Stack, Ret); + + } } \ No newline at end of file diff --git a/Project Reboot 3.0/die.h b/Project Reboot 3.0/die.h index b76e421..fafea28 100644 --- a/Project Reboot 3.0/die.h +++ b/Project Reboot 3.0/die.h @@ -152,6 +152,7 @@ static inline void ProcessEventHook(UObject* Object, UFunction* Function, void* !strstr(FunctionName.c_str(), "SpinCubeTimeline__UpdateFunc") && !strstr(ObjectName.c_str(), "FortPhysicsObjectComponent") && !strstr(FunctionName.c_str(), "GetTextValue") && + !strstr(FunctionName.c_str(), "ServerUpdateLevelVisibility") && !strstr(FunctionName.c_str(), "ExecuteUbergraph_BGA_Petrol_Pickup")) { LOG_INFO(LogDev, "Function called: {} with {}", FunctionFullName, ObjectName); diff --git a/Project Reboot 3.0/dllmain.cpp b/Project Reboot 3.0/dllmain.cpp index fd565a9..3e712dd 100644 --- a/Project Reboot 3.0/dllmain.cpp +++ b/Project Reboot 3.0/dllmain.cpp @@ -987,6 +987,12 @@ DWORD WINAPI Main(LPVOID) } */ + //if (Fortnite_Version == 8.40) + //{ + // Hooking::MinHook::Hook((PVOID)(__int64(GetModuleHandleW(0)) + 0x8BC410), (PVOID)GetMeshNetworkNodeTypeHook, nullptr); + // Hooking::MinHook::Hook((PVOID)(__int64(GetModuleHandleW(0)) + 0x8BC450), (PVOID)GetMeshNetworkNodeTypeHook, nullptr); + //} + if (Fortnite_Version >= 16 && Fortnite_Version < 19) { // Bus crash (only needed if we are calling StartAircraftPhase on seperate thread I THINK) (sometimes) @@ -1230,7 +1236,6 @@ DWORD WINAPI Main(LPVOID) // HookInstruction(Addresses::UpdateTrackedAttributesLea, (PVOID)AFortPlayerControllerAthena::UpdateTrackedAttributesHook, "/Script/Engine.PlayerController.EnableCheats", ERelativeOffsets::LEA, FortPlayerControllerAthenaDefault); // HookInstruction(Addresses::CombinePickupLea, (PVOID)AFortPickup::CombinePickupHook, "/Script/Engine.PlayerController.SetVirtualJoystickVisibility", ERelativeOffsets::LEA, FortPlayerControllerAthenaDefault); - if (Fortnite_Version == 13.40) { // HookInstruction(__int64(GetModuleHandleW(0)) + 0x1FC835D, (PVOID)UFortAthenaAIBotCustomizationData::ApplyOverrideCharacterCustomizationHook, "/Script/Engine.PlayerController.SetVirtualJoystickVisibility", ERelativeOffsets::CALL, nullptr); diff --git a/Project Reboot 3.0/gui.h b/Project Reboot 3.0/gui.h index e095582..7254995 100644 --- a/Project Reboot 3.0/gui.h +++ b/Project Reboot 3.0/gui.h @@ -116,7 +116,7 @@ static inline void SetIsLategame(bool Value) static inline bool HasAnyCalendarModification() { - return Calendar::HasSnowModification() || Calendar::HasNYE() || std::floor(Fortnite_Version) == 13; + return Calendar::HasSnowModification() || Calendar::HasNYE() || (Fortnite_Version >= 8.40 && Fortnite_Version < 9.0) || std::floor(Fortnite_Version) == 13; } static inline void Restart() // todo move? @@ -956,6 +956,51 @@ static inline void MainUI() } } + /* + * Notes: + * + * Dopey (8.?? to 8.??) mining stones + * + * Rune events: + * Sleepy (8.40) hit the rune and it moves + * Leaky (8.40) rotate 3 beams onto the rune + * Sneezy (8.50) dance for progress + */ + if (Fortnite_Version == 8.40) + { + static UObject* SAR = FindObject("/Game/Athena/Maps/Athena_POI_Foundations.Athena_POI_Foundations:PersistentLevel.BP_SnowAlwaysRelevant_2"); + if (SAR) + { + static bool LoadedSleepy = false; + static bool InitSleepy = false; + if (!LoadedSleepy) + { + if (ImGui::Button("Load Sleepy")) + { + SAR->ProcessEvent(SAR->FindFunction("LoadSleepy")); + //SAR->ProcessEvent(SAR->FindFunction("LoadLeaky")); + LoadedSleepy = true; + } + } + if (LoadedSleepy && !InitSleepy) + { + UObject* SleepyProp = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap:PersistentLevel.BP_Sleepy_Prop_0"); + UObject* SleepyM = FindObject("/Game/Athena/Maps/Test/S8/SleepyMap.SleepyMap:PersistentLevel.BP_Sleepy_M_2"); + + if (SleepyProp && SleepyM) + { + InitSleepy = true; + + Hooking::MinHook::Hook(SleepyProp, SleepyProp->FindFunction("OnDamageServer"), Calendar::OnDamageServerSleepyHook, (void**)&Calendar::OnDamageServerSleepyOriginal, false, true); + } + } + } + else + { + ImGui::Text("Failed to find BP_SnowAlwaysRelevant_C"); + } + } + if (std::floor(Fortnite_Version) == 13) { static UObject* WL = FindObject("/Game/Athena/Apollo/Maps/Apollo_POI_Foundations.Apollo_POI_Foundations.PersistentLevel.Apollo_WaterSetup_2");