if _G.AxonicCleanUP then _G.AxonicCleanUP() end print("Enjoy Skids") local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local LocalPlayer = Players.LocalPlayer local AxonicRunning = true local AxonicOld = {} local AxonicShared local AxonicFpShared local AxonicAction local AxonicOldRecoil local spreadKeys = { "Spread", "BaseSpread", "AimSpread", "ScopeSpread", "Bloom", "SpreadIncrease", "MaxSpread" } local recoilVectors = { "MinCamRecoil", "MaxCamRecoil", "MinRotRecoil", "MaxRotRecoil", "MinTransRecoil", "MaxTransRecoil" } local recoilNumbers = { "CamRecoilConstant", "RotRecoilConstant", "TransRecoilConstant", "Recoil", "CameraRecoil" } local function save(settings, key) if not settings or settings[key] == nil then return end AxonicOld[settings] = AxonicOld[settings] or {} if AxonicOld[settings][key] == nil then AxonicOld[settings][key] = settings[key] end end local function patchSettings(settings) if type(settings) ~= "table" then return 0 end local touched = false for _, key in ipairs(spreadKeys) do if type(settings[key]) == "number" then save(settings, key) settings[key] = 0 touched = true end end for _, key in ipairs(recoilVectors) do if typeof(settings[key]) == "Vector3" then save(settings, key) settings[key] = Vector3.zero touched = true end end for _, key in ipairs(recoilNumbers) do if type(settings[key]) == "number" then save(settings, key) settings[key] = 0 touched = true end end print("A") return touched and 1 or 0 end local function refreshRefs() local controller = ReplicatedStorage:FindFirstChild("ControllerStuff") local main = controller and controller:FindFirstChild("NewMainLocal") local shared = main and main:FindFirstChild("Shared") if shared and not AxonicShared then local ok, got = pcall(require, shared) if ok then AxonicShared = got end end local gui = LocalPlayer:FindFirstChild("PlayerGui") local fpGui = gui and gui:FindFirstChild("FirstPersonGUI") local action = fpGui and fpGui:FindFirstChild("ActionHandler") if action and not AxonicAction then local ok, got = pcall(require, action) if ok then AxonicAction = got end end print("X") local fpShared = action and action:FindFirstChild("Shared") if fpShared and not AxonicFpShared then local ok, got = pcall(require, fpShared) if ok then AxonicFpShared = got end end end local function patchTools(shared) if type(shared) ~= "table" then return 0 end local count = 0 print("O") local function patchTool(tool) if type(tool) ~= "table" then return end count += patchSettings(tool.WSettings) count += patchSettings(tool.Settings) end patchTool(shared.CurrTool) if type(shared.Tools) == "table" then for _, tool in pairs(shared.Tools) do patchTool(tool) end end print("N") return count end local function patchModules() local weapons = ReplicatedStorage:FindFirstChild("Weapons") local modules = weapons and weapons:FindFirstChild("Modules") if not modules then return 0 end local count = 0 print("I") for _, module in ipairs(modules:GetDescendants()) do if module:IsA("ModuleScript") then local ok, settings = pcall(require, module) if ok then count += patchSettings(settings) end end end return count end local function hookRecoil() if type(AxonicAction) ~= "table" or type(AxonicAction.WeaponRecoil) ~= "function" then return end if AxonicAction.AxonicRawRecoilHooked then return end AxonicOldRecoil = AxonicOldRecoil or AxonicAction.WeaponRecoil AxonicAction.AxonicRawRecoilHooked = true AxonicAction.WeaponRecoil = function() end end print("C") local function patchAll() refreshRefs() hookRecoil() return patchTools(AxonicShared) + patchTools(AxonicFpShared) + patchModules() end _G.AxonicCleanUP = function() AxonicRunning = false for settings, oldValues in pairs(AxonicOld) do for key, value in pairs(oldValues) do settings[key] = value end end if AxonicAction and AxonicOldRecoil then AxonicAction.WeaponRecoil = AxonicOldRecoil AxonicAction.AxonicRawRecoilHooked = nil end end task.spawn(function() warn("[Axonic HyperShot] patched " .. tostring(patchAll()) .. " weapon tables.") while AxonicRunning do refreshRefs() hookRecoil() patchTools(AxonicShared) patchTools(AxonicFpShared) task.wait(0.5) end end)