diff --git a/ClairObscur/dllmain.cpp b/ClairObscur/dllmain.cpp index 41d0f2e..ed339c9 100644 --- a/ClairObscur/dllmain.cpp +++ b/ClairObscur/dllmain.cpp @@ -261,7 +261,7 @@ static void ProcessEvent() { } if (!object || !func) return; - UC::int32 comparisonIndex = func->Name.ComparisonIndex; + UC::int32 comparisonIndex = func->Name.ComparisonIndex; // Make function comparision faster than allocating std::srting if (NAME_FindPlayerStart == -1 && func->Name.ToString() == "FindPlayerStart") NAME_FindPlayerStart = comparisonIndex; if (!bootStrap && NAME_FindPlayerStart == comparisonIndex && object->IsA(ABP_jRPG_GM_Bootstrap_C::StaticClass())) @@ -322,9 +322,9 @@ static void HUDUpdate(bool writeLog) { if (g_MainMenu) { g_MainMenu->SetMinAspectRatio(g_UIAspect); g_MainMenu->SetMaxAspectRatio(g_UIAspect); } if (g_merchantPanel) { g_merchantPanel->SetMinAspectRatio(g_UIAspect); g_merchantPanel->SetMaxAspectRatio(g_UIAspect); } if (g_gameMenu) { g_gameMenu->SetMinAspectRatio(g_UIAspect); g_gameMenu->SetMaxAspectRatio(g_UIAspect); } - ApplyTransformOffset(g_PopupWidget, -HUDoffset); - ApplyTransformOffset(g_PromptWidget, -HUDoffset * ((float)1080 / screenHeight)); - CenterWidget(g_ExplorationHUDWidget, HUDoffset, screenWidth, screenHeight, 1920, 1080); + if (g_PopupWidget) ApplyTransformOffset(g_PopupWidget, -HUDoffset); + if (g_PromptWidget) ApplyTransformOffset(g_PromptWidget, -HUDoffset * ((float)1080 / screenHeight)); + if (g_ExplorationHUDWidget) CenterWidget(g_ExplorationHUDWidget, HUDoffset, screenWidth, screenHeight, 1920, 1080); } static void FOVFixEnabled() { @@ -416,14 +416,17 @@ static void EnableCheats(Cheat cheat) { UObject* object = (UObject*)ctx.rbx; if (!object || !object->Class) return; + auto* actor = static_cast(object); + if (actor && actor->IsA(ABP_jRPG_Enemy_World_Base_Seamless_C::StaticClass())) + actor->CustomTimeDilation = g_TimeDilation_fix_enabled ? g_AITimeDilationValue : 1.f; + + auto* pawn = GetPawnFromObject(object); + if (!pawn) return; ULONGLONG now = GetTickCount64(); if (now - lastActorScanTick >= DEFAULT_ACTORS_SCAN_BETWEEN_TICKS) { lastActorScanTick = now; - auto* playerPawn = GetPawnFromWorld(); - if (!playerPawn) return; - - if (playerPawn->IsA(ABP_jRPG_Character_Battle_Base_C::StaticClass())) { - auto* playerBattle = static_cast(playerPawn); + if (pawn->IsA(ABP_jRPG_Character_Battle_Base_C::StaticClass())) { + auto* playerBattle = static_cast(pawn); if (playerBattle && playerBattle->AC_jRPG_CharacterStats) { double maxHP; playerBattle->AC_jRPG_CharacterStats->GetMaxHP(&maxHP); @@ -431,18 +434,13 @@ static void EnableCheats(Cheat cheat) { playerBattle->DEBUG_IgnoreDamages = g_GodMode_fix_enabled; // God mode } } - - if (playerPawn->IsA(ABP_jRPG_Character_World_C::StaticClass())) { - auto* playerWorld = static_cast(playerPawn); + else if (pawn->IsA(ABP_jRPG_Character_World_C::StaticClass())) { + auto* playerWorld = static_cast(pawn); if (g_fix_enabled && g_camera_fix_enabled && playerWorld->SmartSpringArm_MainCamera) g_PlayerSpringArm = playerWorld->SmartSpringArm_MainCamera; // Store custom player Springarm component playerWorld->DEBUG_IsInvisible = g_Stealth_fix_enabled; // Stealth mode } - } - AActor* actor = static_cast(object); - if (actor && actor->IsA(ABP_jRPG_Enemy_World_Base_Seamless_C::StaticClass())) { - actor->CustomTimeDilation = g_TimeDilation_fix_enabled ? g_AITimeDilationValue : 1.f; } }); }