-- Sponsored by ntfofficial -- max damage is actually 95 so u can set it to that local Workspace = cloneref(game:GetService("Workspace")) local Players = cloneref(game:GetService("Players")) local ReplicatedStorage = cloneref(game:GetService("ReplicatedStorage")) local RunService = cloneref(game:GetService("RunService")) -- we aint even using this!!! las go local UserInputService = cloneref(game:GetService("UserInputService")) local CurrentCamera = Workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer local Module = { Setupped = false, Character = nil, Humanoid = nil, RootPart = nil, Limits = { Velocity = 150 } Moves = { Punched = false, Posing = false, OldWalkSpeed = 16, OldJumpPower = 50, Limitless = false, Invisible = false, Blocking = false, }, ArmPatterns = { Both = {"larm", "rarm"}, Left = {"larm"}, Right = {"rarm"}, }, Cooldowns = {} } local Remotes = { Trail = ReplicatedStorage:FindFirstChild("Trail"), Damage = ReplicatedStorage:FindFirstChild("Damage"), Berserk = ReplicatedStorage:FindFirstChild("Berserk"), StrongPunch = ReplicatedStorage:FindFirstChild("PlayerStrongPunch"), Knock = ReplicatedStorage:FindFirstChild("Knock"), Menacing = ReplicatedStorage:FindFirstChild("Menacing"), Damage2WS = ReplicatedStorage:FindFirstChild("Damage2WS"), Transparency = ReplicatedStorage:FindFirstChild("Transparency"), Jump = ReplicatedStorage:FindFirstChild("Jump"), Block = ReplicatedStorage:FindFirstChild("Block"), Dodge = ReplicatedStorage:FindFirstChild("Dodge"), } local AnimationsIds = { -- JabPunch rbxassetid://108138428955468 Kick rbxassetid://112759849039654 Shove rbxassetid://137042661991140 LeftPunch = "rbxassetid://109168458498490", RightPunch = "rbxassetid://104315753597984", Barrage = "rbxassetid://122520151681707", StrongPunch = "rbxassetid://116595636182833", Kick = "rbxassetid://112759849039654", -- Uppercut = "rbxassetid://126577765659099", BloodSuck = "rbxassetid://85438652357440", Pose = "rbxassetid://93555492332778", StandJump = "rbxassetid://73672319194239", Block = "rbxassetid://99732276379513", -- Roll = "rbxassetid://131582989683380", Slide = "rbxassetid://101914879017648", Dash = "rbxassetid://117275109630985", } local AnimationInstances = {} for Name, Id in pairs(AnimationsIds) do local Animation = Instance.new("Animation") Animation.AnimationId = Id AnimationInstances[Name] = Animation end local AnimationTracks = {} do function Module:Setup(Character) task.spawn(function() repeat task.wait() until Module.Setupped Module.Setupped = false for _, Child in pairs(LocalPlayer.Backpack:GetChildren()) do if Child:IsA("LocalScript") and Child.Name ~= "Client" then Child.Disabled = true break end end end) repeat task.wait() until Character:FindFirstChildOfClass("Humanoid") local Humanoid = Character:FindFirstChildOfClass("Humanoid") local RootPart = Humanoid.RootPart Module.Character = Character Module.Humanoid = Humanoid Module.RootPart = RootPart -- Module.Sounds = nil task.spawn(function() repeat task.wait() until Character:FindFirstChild("Stand") for _, Child in pairs(Character:GetDescendants()) do if Child ~= RootPart and Child:FindFirstChildOfClass("Sound") then Module.Sounds = Child break end end end) local Animator = Humanoid:FindFirstChildOfClass("Animator") if Animator then for Name, Animation in pairs(AnimationInstances) do local Track = Animator:LoadAnimation(Animation) Track.Looped = Name == "Barrage" or Name == "Pose" or Name == "Block" Track.Priority = Enum.AnimationPriority.Action4 AnimationTracks[Name] = Track end end end function Module:UseMove(Move) if not Move then return end if Module.Character and Module.Humanoid and (Module.Humanoid.Health > 0 or Module.Humanoid.Health ~= Module.Humanoid.Health) and Module.RootPart then if Module.Moves.Posing and Move ~= Module.Moves.Pose or Module.Moves.Blocking and Move ~= Module.Moves.Block then return end Move() end end function Module:Hitbox(CFrame, Size, Bypass) local Instances = Workspace:GetPartBoundsInBox(CFrame, Size, OverlapParams.new()) local Hit = {} local Hits = {} for _, Instance in pairs(Instances) do local Character = Instance:FindFirstAncestorOfClass("Model") if Character and Character.Name == "Stand" then Character = Character:FindFirstAncestorOfClass("Model") if not Character then continue end end local Humanoid = (Character and Character:FindFirstChildOfClass("Humanoid")) local RootPart = (Humanoid and Humanoid.RootPart) if RootPart and Humanoid ~= Module.Humanoid and (Bypass or not table.find(Module.Cooldowns, Humanoid)) and not Hit[Humanoid] then Hit[Humanoid] = true table.insert(Hits, { Character = Character, Humanoid = Humanoid, RootPart = RootPart }) end end local Hitbox = Instance.new("Part") -- Hitbox.Name = "Hitbox" Hitbox.CastShadow = false Hitbox.Color = #Hits == 0 and Color3.fromRGB(255, 0, 0) or Color3.fromRGB(0, 255, 0) Hitbox.Material = Enum.Material.ForceField Hitbox.Size = Size Hitbox.CFrame = CFrame Hitbox.CanCollide = false Hitbox.Anchored = true Hitbox.Parent = Workspace task.spawn(function() for I = 0, 1, 0.05 do Hitbox.Transparency = I task.wait() end Hitbox:Destroy() end) return Hits end function Module:UseRemote(Remote, ...) if Remote then Remote:FireServer(...) end end function Module:ToggleTrail(Side, Toggle) local Stand = Module.Character:FindFirstChild("Stand") if not Stand then return end local Patterns = Module.ArmPatterns[Side or "Both"] for _, Child in pairs(Stand:GetChildren()) do if not Child:IsA("BasePart") then continue end local Trail = Child:FindFirstChildOfClass("Trail") if not Trail then continue end local MatchedPattern = false for _, Pattern in pairs(Patterns) do if string.find(Child.Name:lower(), Pattern) then MatchedPattern = true Module:UseRemote(Remotes.Trail, Trail, Toggle ) break end end if not MatchedPattern then Module:UseRemote(Remotes.Trail, Trail, false ) end end end function Module:PlaySound(SoundName) if not Module.Sounds or Module.Moves.Invisible then return end local Sound = nil if typeof(SoundName) == "string" then Sound = Module.Sounds:FindFirstChild(SoundName) if not Sound then -- retarded devs cant stick with the same name for _, Child in pairs(Module.Sounds:GetChildren()) do if Child:IsA("Sound") and Child.Name:lower() == SoundName:lower() then Sound = Child break end end end else for _, SoundName in pairs(SoundName) do -- retarded devs cant stick with the same name part 2 Sound = Module.Sounds:FindFirstChild(SoundName) if Sound then break end end end if Sound then Sound:Play() end end function Module:Damage(Remote, Humanoid, Cooldown, ...) if table.find(Module.Cooldowns, Humanoid) then return end Module:UseRemote(Remote, ... ) if Cooldown > 0 then task.spawn(function() table.insert(Module.Cooldowns, Humanoid) task.wait(Cooldown) local Index = table.find(Module.Cooldowns, Humanoid) if Index then table.remove(Module.Cooldowns, Index) end end) end end function Module:GetLookVector(Multiplier) return Vector3.new( Module.RootPart.CFrame.LookVector.X, CurrentCamera.CFrame.LookVector.Y, Module.RootPart.CFrame.LookVector.Z ).Unit * (Multiplier - 2) -- they have a limit and coz of latency u be gettin kicked end function Module.Moves:Punch() AnimationTracks.LeftPunch:Stop() AnimationTracks.RightPunch:Stop() if Module.Moves.Punched then Module:ToggleTrail("Left", true) AnimationTracks.LeftPunch:Play() else Module:ToggleTrail("Right", true) AnimationTracks.RightPunch:Play() end Module:PlaySound({"Swing", "Punch"}) task.wait(0.2) for _ = 1, 15 do local Hits = Module:Hitbox( Module.RootPart.CFrame * CFrame.new(0, 0, -3.75), Vector3.new(7.5, 7.5, 7.5) ) for _, Hit in pairs(Hits) do Module:Damage(Remotes.Damage, Hit.Humanoid, 0.5, Hit.Humanoid, Hit.RootPart.CFrame, 5, 0.25, Module.RootPart.CFrame.LookVector * 20, "rbxassetid://241837157", 0.035, Color3.new(255, 255, 255), "rbxassetid://260430079", 1, 1 / #Hits ) end task.wait() end Module:ToggleTrail() Module.Moves.Punched = not Module.Moves.Punched end function Module.Moves:Barrage() Module:ToggleTrail("Both", true) AnimationTracks.Barrage:Play() repeat local Hits = Module:Hitbox( Module.RootPart.CFrame * CFrame.new(0, 0, -3.75), Vector3.new(7.5, 7.5, 7.5) ) for _, Hit in pairs(Hits) do Module:Damage(Remotes.Damage, Hit.Humanoid, 0.05, Hit.Humanoid, Hit.RootPart.CFrame, 15, 0.25, Module.RootPart.CFrame.LookVector * 5, "rbxassetid://241837157", 0.035, Color3.new(255, 255, 255), "rbxassetid://260430079", 1, 1 / #Hits ) Module:UseRemote(Remotes.Berserk, Hit.Humanoid ) end task.wait() until not UserInputService:IsKeyDown("E") AnimationTracks.Barrage:Stop() Module:ToggleTrail() end function Module.Moves:StrongPunch() Module:ToggleTrail("Right", true) AnimationTracks.StrongPunch:Play() task.wait(0.4) if not Module.Moves.Invisible then -- Module:PlaySound("HeavyPunch") Module:UseRemote(Remotes.StrongPunch, Vector3.new(1, 0.5, 1), Vector3.new(0.3, 0.15, 0.3), BrickColor.new("Institutional white") ) end for _ = 1, 15 do local Hits = Module:Hitbox( Module.RootPart.CFrame * CFrame.new(0, 0, -3.75), Vector3.new(7.5, 7.5, 7.5) ) for _, Hit in pairs(Hits) do Module:Damage(Remotes.Damage, Hit.Humanoid, 0.5, Hit.Humanoid, Hit.RootPart.CFrame, 25, 0.25, Module.RootPart.CFrame.LookVector * 40, "rbxassetid://241837157", 0.035, Color3.new(255, 255, 255), "rbxassetid://260430079", 1, 1 / #Hits ) Module:UseRemote(Remotes.Knock, Hit.Humanoid ) Module:UseRemote(Remotes.Berserk, Hit.Humanoid ) end task.wait() end Module:ToggleTrail() end function Module.Moves:Kick() AnimationTracks.Kick:Play() task.wait(0.2) for _ = 1, 15 do local Hits = Module:Hitbox( Module.RootPart.CFrame * CFrame.new(0, 0, -3.75), Vector3.new(7.5, 7.5, 7.5) ) for _, Hit in pairs(Hits) do Module:Damage(Remotes.Damage, Hit.Humanoid, 0.5, Hit.Humanoid, Hit.RootPart.CFrame, 35, 0.25, Module:GetLookVector(150), "rbxassetid://241837157", 0.035, Color3.new(255, 255, 255), "rbxassetid://260430079", 1, 1 / #Hits ) Module:UseRemote(Remotes.Knock, Hit.Humanoid ) end task.wait() end end function Module.Moves:Pose() if Module.Moves.Posing then AnimationTracks.Pose:Stop() Module.Humanoid.WalkSpeed = Module.Moves.OldWalkSpeed Module.Humanoid.JumpPower = Module.Moves.OldJumpPower else AnimationTracks.Pose:Play() Module.Moves.OldWalkSpeed = Module.Humanoid.WalkSpeed Module.Moves.OldJumpPower = Module.Humanoid.JumpPower Module.Humanoid.WalkSpeed = 0 Module.Humanoid.JumpPower = 0 end if not Module.Moves.Invisible then Module:UseRemote(Remotes.Menacing, not Module.Moves.Posing ) end Module.Moves.Posing = not Module.Moves.Posing end function Module.Moves:BloodSuck() Module:ToggleTrail("Right", true) AnimationTracks.BloodSuck:Play() task.wait(0.5) for _ = 1, 15 do local Hits = Module:Hitbox( Module.RootPart.CFrame * CFrame.new(0, 0, -3.75), Vector3.new(7.5, 7.5, 7.5) ) for _, Hit in pairs(Hits) do Module:Damage(Remotes.Damage2WS, Hit.Humanoid, 0.5, Hit.Humanoid, CFrame.new(), 0, 0.25, Vector3.new(), 0.075, "rbxassetid://1067205170", 1, 0.36 / #Hits ) end task.wait() end Module:ToggleTrail() end function Module.Moves:Infinity() Module.Moves.Limitless = not Module.Moves.Limitless while Module.Moves.Limitless do local Hits = Module:Hitbox( Module.RootPart.CFrame, Vector3.new(12.5, 12.5, 12.5) ) for _, Hit in pairs(Hits) do local Origin = Module.RootPart.CFrame.Position local Distance = (Hit.RootPart.CFrame.Position - Origin).Magnitude local Direction = (Hit.RootPart.CFrame.Position - Origin).Unit * Distance local RaycastParams = RaycastParams.new() RaycastParams.FilterDescendantsInstances = {Module.Character} local RaycastResult = Workspace:Raycast(Origin, Direction, RaycastParams) if RaycastResult and RaycastResult.Instance and RaycastResult.Instance:IsDescendantOf(Hit.Character) then if Distance < 5 then Module:Damage(Remotes.Damage2WS, Hit.Humanoid, 0, Hit.Humanoid, CFrame.new(), 0, 0, Vector3.new(), 0.075, "rbxassetid://1067205170", 1, 0.36 / #Hits ) end Module:Damage(Remotes.Damage, Hit.Humanoid, 0.25, Hit.Humanoid, CFrame.new(), 0, 0.25, Vector3.new(), "rbxassetid://241837157", 0.035, Color3.new(255, 255, 255), "rbxassetid://260430079", 1, 1 / #Hits ) end end task.wait() end end function Module.Moves:Invisiblity() for _, Child in pairs(Module.Character:GetChildren()) do local TargetPart = Child:IsA("Part") and Child or Child.Name ~= "Stand" and Child:FindFirstChildOfClass("Part") if TargetPart and TargetPart.Name ~= "HumanoidRootPart" then Module:UseRemote(Remotes.Transparency, TargetPart, Module.Moves.Invisible and 0 or 1 ) if TargetPart.Name == "Head" then TargetPart = TargetPart:FindFirstChildOfClass("Decal") Module:UseRemote(Remotes.Transparency, TargetPart, Module.Moves.Invisible and 0 or 1 ) end end end Module.Moves.Invisible = not Module.Moves.Invisible if Module.Moves.Invisible then while Module.Moves.Invisible and Module.Character do if Module.Character.Dodge and not Module.Character.Dodge.Value then Module:UseRemote(Remotes.Dodge) end task.wait() end end end function Module.Moves:Jump() AnimationTracks.StandJump:Play() if not Module.Moves.Invisible then Module:PlaySound("StandJumpSFX") Module:UseRemote(Remotes.Jump, BrickColor.new("Institutional white") ) end if Module.RootPart:FindFirstChild("BodyPosition") then Module.RootPart.BodyPosition.Parent = nil end local BodyPosition = Instance.new("BodyPosition") BodyPosition.MaxForce = Vector3.new(100000, 100000, 100000) BodyPosition.Position = Module.RootPart.CFrame * CFrame.new(0, 75, -150).Position BodyPosition.Parent = Module.RootPart task.wait(1) BodyPosition:Destroy() end function Module.Moves:Block() Module.Moves.Blocking = true AnimationTracks.Block:Play() Module:PlaySound("Guard") Module:UseRemote(Remotes.Block, true ) repeat task.wait() until not UserInputService:IsKeyDown("X") Module:UseRemote(Remotes.Block, false ) AnimationTracks.Block:Stop() Module.Moves.Blocking = false end function Module.Moves:Dodge() AnimationTracks.Slide:Play() Module:PlaySound("Dodge") Module:UseRemote(Remotes.Dodge) if Module.RootPart:FindFirstChild("BodyVelocity") then Module.RootPart.BodyVelocity.Parent = nil end local BodyVelocity = Instance.new("BodyVelocity") BodyVelocity.MaxForce = Vector3.new(100000, 0, 100000) BodyVelocity.Velocity = Module.RootPart.CFrame.LookVector * 75 BodyVelocity.Parent = Module.RootPart for _ = 1, 15 do local Hits = Module:Hitbox( Module.RootPart.CFrame * CFrame.new(0, 0, -3.75), Vector3.new(7.5, 7.5, 7.5) ) for _, Hit in pairs(Hits) do Module:UseRemote(Remotes.Knock, Hit.Humanoid ) end task.wait() end task.wait(0.25) BodyVelocity:Destroy() task.wait(0.15) AnimationTracks.Slide:Stop() end function Module.Moves:Dash() AnimationTracks.Dash:Play() Module:PlaySound("Dodge") Module:UseRemote(Remotes.Dodge) if Module.RootPart:FindFirstChild("BodyVelocity") then Module.RootPart.BodyVelocity.Parent = nil end local BodyVelocity = Instance.new("BodyVelocity") BodyVelocity.MaxForce = Vector3.new(100000, 100000, 100000) BodyVelocity.Velocity = Module.RootPart.CFrame.LookVector * 80 + Vector3.new(0, 3.5, 0) BodyVelocity.Parent = Module.RootPart task.wait(0.25) BodyVelocity:Destroy() task.wait(0.15) AnimationTracks.Dash:Stop() end Module.Binds = { ["MouseButton1"] = Module.Moves.Punch, ["E"] = Module.Moves.Barrage, ["R"] = Module.Moves.StrongPunch, ["T"] = Module.Moves.Kick, ["P"] = Module.Moves.Pose, ["F"] = Module.Moves.BloodSuck, -- ["G"] = Module.Moves.Infinity, -- scrapped since i fucked smth up ["H"] = Module.Moves.Invisiblity, ["Z"] = Module.Moves.Jump, ["X"] = Module.Moves.Block, ["C"] = Module.Moves.Dodge, ["V"] = Module.Moves.Dash, } end if LocalPlayer.Character then Module.Setupped = true Module:Setup(LocalPlayer.Character) end LocalPlayer.CharacterAdded:Connect(function(Character) Module:Setup(Character) end) UserInputService.InputBegan:Connect(function(Input, GameProcessedEvent) if GameProcessedEvent then return end local KeyPress = Input.UserInputType.Name == "Keyboard" local Move = nil if KeyPress then Move = Module.Binds[Input.KeyCode.Name] else Move = Module.Binds[Input.UserInputType.Name] end Module:UseMove(Move) end) if hookmetamethod then local Namecall; Namecall = hookmetamethod(game, "__namecall", function(Self, ...) local Method = getnamecallmethod() local Args = {...} if not checkcaller() and Method == "FireServer" then -- god mode basicly if Self.Name == "Stand" then Module.Setupped = true -- Args[2] = 100 Args[3] *= 100 return Namecall(Self, unpack(Args)) end end return Namecall(Self, ...) end) end