local originalFire local function fireHook(self, origin, direction, speed, userData, isReplicated, ...) local ok, result = pcall(function() return direction end) if not isReplicated then if ok and type(result) == "string" then direction = result end end return originalFire(self, origin, direction, speed, userData, isReplicated, ...) end originalFire = function(self, origin, direction, speed, userData, isReplicated, ...) print("orig", self.name, origin, direction, speed, userData, isReplicated, select("#", ...), ...) return origin, direction, speed end local obj = {name = "controller"} obj.Fire = fireHook print(obj:Fire("origin", "dir", 123, "user", nil, "x", "y"))