diff --git a/data/menu/nullifiedcat/visuals/world.xml b/data/menu/nullifiedcat/visuals/world.xml
index d53a4da6..e469b67f 100755
--- a/data/menu/nullifiedcat/visuals/world.xml
+++ b/data/menu/nullifiedcat/visuals/world.xml
@@ -33,7 +33,7 @@
-
+
diff --git a/include/MiscTemporary.hpp b/include/MiscTemporary.hpp
index c8a8fcc1..e5fb36cc 100755
--- a/include/MiscTemporary.hpp
+++ b/include/MiscTemporary.hpp
@@ -20,6 +20,7 @@ extern std::array timers;
extern Timer DelayTimer;
extern bool firstcm;
extern bool ignoredc;
+extern bool user_sensitivity_ratio_set;
extern bool calculated_can_shoot;
extern float prevflow;
@@ -27,6 +28,7 @@ extern int prevflowticks;
#if ENABLE_VISUALS
extern int spectator_target;
extern CLC_VoiceData *voicecrash;
+extern bool freecam_is_toggled;
#endif
extern settings::Boolean clean_chat;
@@ -37,15 +39,13 @@ extern float backup_lerp;
extern settings::Int fakelag_amount;
extern settings::Boolean fakelag_midair;
extern settings::Boolean no_zoom;
+extern settings::Boolean no_scope;
extern settings::Boolean disable_visuals;
extern settings::Int print_r;
extern settings::Int print_g;
extern settings::Int print_b;
extern Color menu_color;
extern int stored_buttons;
-#if ENABLE_VISUALS
-extern bool freecam_is_toggled;
-#endif
typedef void (*CL_SendMove_t)();
extern DetourHook cl_warp_sendmovedetour;
extern DetourHook cl_nospread_sendmovedetour;
diff --git a/include/common.hpp b/include/common.hpp
index 3421581e..e13127ac 100644
--- a/include/common.hpp
+++ b/include/common.hpp
@@ -79,10 +79,6 @@
#include "copypasted/Netvar.h"
#include "copypasted/CSignature.h"
-#if ENABLE_GUI
-// FIXME add gui
-#endif
-
#include
template constexpr T _clamp(T _min, T _max, T _val)
diff --git a/src/hooks/visual/OverrideView.cpp b/src/hooks/visual/OverrideView.cpp
index edcf059a..b193b461 100644
--- a/src/hooks/visual/OverrideView.cpp
+++ b/src/hooks/visual/OverrideView.cpp
@@ -14,6 +14,8 @@ static settings::Button zoom_key{ "visual.zoom-key", "" };
static settings::Int zoom_fov{ "visual.zoom-key.fov", "20" };
bool freecam_is_toggled{ false };
bool zoomed_last_tick{ false };
+bool user_sensitivity_ratio_set{ true };
+float zoom_sensitivity_ratio_user;
namespace hooked_methods
{
@@ -119,6 +121,36 @@ DEFINE_HOOKED_METHOD(OverrideView, void, void *this_, CViewSetup *setup)
freecam_is_toggled = false;
draw::fov = setup->fov;
+
+ auto zoom_sensitivity_ratio = g_ICvar->FindVar("zoom_sensitivity_ratio");
+
+ if (g_pLocalPlayer->bZoomed)
+ {
+ static bool last_zoom_state = false;
+ bool current_zoom_state = no_zoom && no_scope;
+ if (current_zoom_state != last_zoom_state)
+ {
+ if (user_sensitivity_ratio_set)
+ zoom_sensitivity_ratio_user = zoom_sensitivity_ratio->GetFloat();
+
+ // No removing zoom, so user zoom_sensitivity_ratio will be reset to what they had it to on zoom
+ if (no_zoom && no_scope)
+ {
+ if (!user_sensitivity_ratio_set)
+ {
+ zoom_sensitivity_ratio->SetValue(zoom_sensitivity_ratio_user);
+ user_sensitivity_ratio_set = true;
+ }
+ }
+ // Both requirements are true, so change the zoom_sensitivity_ratio to 4
+ else
+ {
+ zoom_sensitivity_ratio->SetValue(4);
+ user_sensitivity_ratio_set = false;
+ }
+ }
+ last_zoom_state = current_zoom_state;
+ }
}
static InitRoutine override_init([]() {
EC::Register(