local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local Workspace = game:GetService("Workspace") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local plr = Players.LocalPlayer local cam = Workspace.CurrentCamera local settings = { fovEnabled = true, fovColor = Color3.fromRGB(255, 255, 255), fovRadius = 300, fovTransparency = 0.5, hitpart = "HumanoidRootPart", enabled = true, hitchance = 100, } local fov = nil local function refreshFOV() if fov then fov.Visible = false fov:Remove() fov = nil end if not settings.fovEnabled then return end fov = Drawing.new("Circle") fov.Thickness = 1 fov.Color = settings.fovColor fov.Transparency = settings.fovTransparency fov.Filled = false fov.Visible = true fov.Radius = settings.fovRadius fov.NumSides = 200 fov.Position = UserInputService:GetMouseLocation() end local function getTarget() local found = nil local closest = settings.fovRadius local mouse = UserInputService:GetMouseLocation() for _, p in ipairs(Players:GetPlayers()) do if p == plr or not p.Character then continue end local part = p.Character:FindFirstChild(settings.hitpart) local hum = p.Character:FindFirstChildOfClass("Humanoid") if not part or not hum or hum.Health <= 0 then continue end local pos, onscreen = cam:WorldToViewportPoint(part.Position) if not onscreen then continue end local dist = (Vector2.new(pos.X, pos.Y) - mouse).Magnitude if dist < closest then closest = dist found = p.Character end end return found end local function init() local ok, err = pcall(function() local wm = require(ReplicatedStorage.Common.Managers.WeaponManager) local real = wm.cast wm.cast = newcclosure(function(...) local args = {...} if settings.enabled and math.random(100) <= settings.hitchance then local target = getTarget() if target then local part = target:FindFirstChild(settings.hitpart) or target:FindFirstChild("Head") if part then args[2] = (part.Position - args[1]).Unit end end end return real(table.unpack(args)) end) end) if not ok then warn(err) end end RunService.RenderStepped:Connect(refreshFOV) init()