local Remote = script.Parent local Combo = 1 local DoingCombo = 0 local Debounce = false local BlockingDebounce = false local HeavyDebounce = false local isBlocking = false local Equipped = false local EquipDebounce = false local RS = game:GetService("ReplicatedStorage") local RAYCAST_HITBOX = require(RS:WaitForChild("RaycastHitboxV3")) local CanDoAnything = true local TweenService = game:GetService("TweenService") -- If you haven't already go subscribe to my YT: PeteTheSpeed -- Made by PeteTheSpeed (Exploit Protected) Remote.OnServerEvent:Connect(function(Player,Action,Bool) local Char = Player.Character local Hum = Char:WaitForChild("Humanoid") local HumRP = Char:WaitForChild("HumanoidRootPart") local RightArm = Char:WaitForChild("Right Arm") if Hum.Jump == false then local FX = script:WaitForChild("FX") local SoundFolder = script:WaitForChild("Sounds") local StopAnims = function() local AnimationTracks = Hum:GetPlayingAnimationTracks() for i, track in pairs (AnimationTracks) do track:Stop() end end local StopEnemyAnims = function(Target) local AnimationTracks = Target:GetPlayingAnimationTracks() for i, track in pairs (AnimationTracks) do track:Stop() end end local HiteffectBall = function(Target,Pos) local ClonedBall = FX.Thing:Clone() ClonedBall.Parent = Target ClonedBall.CFrame = Pos ClonedBall.CFrame = CFrame.new(ClonedBall.Position, Target.Position) game.Debris:AddItem(ClonedBall,1) if DoingCombo == 4 then ClonedBall.BrickColor = BrickColor.new("Neon orange") end TweenService:Create(ClonedBall,TweenInfo.new(0.5,Enum.EasingStyle.Quad,Enum.EasingDirection.InOut),{CFrame = ClonedBall.CFrame + ClonedBall.CFrame.lookVector * -7,Transparency = 1,Size = Vector3.new(0.087, 0.08, 3.35)}):Play() end -- My Soundcloud really has some banger beats local Sounds = function(Action2,Target) if Action2 == "HeavySound" then elseif Action2 == "NormalSound" then local NormalSound = SoundFolder.Normal:Clone() NormalSound.Parent = HumRP NormalSound.PlaybackSpeed = math.random(85,110)/100 NormalSound:Play() game.Debris:AddItem(NormalSound,.4) elseif Action2 == "BlockingSound" then local BlockSound = SoundFolder.Block:Clone() BlockSound.Parent = Target BlockSound.PlaybackSpeed = math.random(90,110)/100 BlockSound:Play() game.Debris:AddItem(BlockSound,.4) elseif Action2 == "Hit" then local HitSound = SoundFolder.Hit:Clone() HitSound.Parent = Target HitSound.PlaybackSpeed = math.random(90,125)/100 HitSound:Play() game.Debris:AddItem(HitSound,1) elseif Action2 == "ClashingSound" then local ClashSound = SoundFolder.Clash:Clone() ClashSound.Parent = Target ClashSound.PlaybackSpeed = math.random(90,110)/100 ClashSound:Play() game.Debris:AddItem(ClashSound,1) elseif Action2 == "HeavySound" then local HeavySound = SoundFolder.Heavy:Clone() HeavySound.Parent = HumRP HeavySound.PlaybackSpeed = math.random(45,65)/100 HeavySound:Play() game.Debris:AddItem(HeavySound,.8) elseif Action2 == "BlockBreak" then local BlockBreakSound = SoundFolder.BlockBreak:Clone() BlockBreakSound.Parent = Target BlockBreakSound:Play() game.Debris:AddItem(BlockBreakSound,.4) elseif Action2 == "Sheathing" then local SheatheSound = SoundFolder.Sheathing:Clone() SheatheSound.Parent = Target SheatheSound:Play() game.Debris:AddItem(SheatheSound,1.8) elseif Action2 == "UnSheathe" then local SheatheSound = SoundFolder.Unsheathe:Clone() SheatheSound.Parent = Target SheatheSound:Play() game.Debris:AddItem(SheatheSound,.7) end end local ignoreList = {Char} local InsertDisabled = function(Target,Time) local Disabled = Instance.new("BoolValue",Target) Disabled.Name = "Disabled" game.Debris:AddItem(Disabled,Time) end local BlockBreakAn = script:WaitForChild("Anims"):WaitForChild("BlockBreak") local Anims = script:WaitForChild("Anims") local Combo1Anim = Hum:LoadAnimation(Anims.Combo1) local Combo2Anim = Hum:LoadAnimation(Anims.Combo2) local Combo3Anim = Hum:LoadAnimation(Anims.Combo3) local Combo4Anim = Hum:LoadAnimation(Anims.Combo4) local HeavyAnim = Hum:LoadAnimation(Anims.Heavy) local BlockingAnim = Hum:LoadAnimation(Anims.Blocking) local UnSheatheAnim = Hum:LoadAnimation(Anims.Unsheathe) local SheatheAnim = Hum:LoadAnimation(Anims.Sheathe) -- Have you ever heard of Garli? if Action == "Slash" then if Debounce == false and Char:FindFirstChild("Disabled") == nil and CanDoAnything == true and Char:FindFirstChild("Blocking") == nil and Equipped == true then CanDoAnything = false Debounce = true delay(0.4,function() if DoingCombo == 4 then delay(0.4,function() Debounce = false CanDoAnything = true end) else CanDoAnything = true Debounce = false end end) if Combo == 1 then Combo = 2 DoingCombo = 1 delay(1,function() if Combo == 2 then Combo = 1 end end) Combo1Anim:Play() elseif Combo == 2 then Combo = 3 DoingCombo = 2 delay(1,function() if Combo == 3 then Combo = 1 end end) Combo2Anim:Play() elseif Combo == 3 then Combo = 4 DoingCombo = 3 delay(1,function() if Combo == 4 then Combo = 1 end end) Combo3Anim:Play() elseif Combo == 4 then Combo = 1 DoingCombo = 4 delay(0.6,function() DoingCombo = 0 end) Combo4Anim:Play() end Hum.JumpPower = 0 delay(0.18,function() newHitbox:HitStart() Sounds("NormalSound",nil) local TrailCloned = FX.Trail:Clone() TrailCloned.Parent = Char.Katana.Blade TrailCloned.Attachment0 = Char.Katana.Blade.Attachment0 TrailCloned.Attachment1 = Char.Katana.Blade.Attachment1 game.Debris:AddItem(TrailCloned,0.2) delay(0.15,function() newHitbox:HitStop() Hum.JumpPower = 50 end) end) end elseif Action == "Equip" then if Char:FindFirstChild("Katana") and EquipDebounce == false and isBlocking == false and Char:FindFirstChild("Disabled") == nil and CanDoAnything == true then Equipped = false -- Unequip CanDoAnything = false Hum.WalkSpeed = 0 Hum.JumpPower = 0 delay(0.4,function() Sounds("Sheathing",HumRP) end) EquipDebounce = true delay(0.7,function() EquipDebounce = false local Sword = Char:FindFirstChild("Katana"):Destroy() CanDoAnything = true Hum.WalkSpeed = 16 Hum.JumpPower = 50 end) SheatheAnim:Play() elseif Char:FindFirstChild("Katana") == nil and EquipDebounce == false and isBlocking == false and Char:FindFirstChild("Disabled") == nil and CanDoAnything == true then CanDoAnything = false Equipped = true EquipDebounce = true delay(0.5,function() EquipDebounce = false end) Sounds("UnSheathe",HumRP) local Sword = script:WaitForChild("Katana"):Clone() Sword.Parent = Char local Weld = Instance.new("Weld",RightArm) Weld.Part0 = RightArm Weld.Part1 = Sword.Handle Weld.C1 = CFrame.new(0.801995277, -0.00268554688, -1.8551712, -0.0109109292, 0.997559488, -0.0689636171, 0.99906683, 0.0137578184, 0.0409418531, 0.0417907275, -0.0684525371, -0.996778786)-- Equip UnSheatheAnim:Play() Hum.WalkSpeed = 0 Hum.JumpPower = 0 delay(0.4,function() Hum.WalkSpeed = 16 Hum.JumpPower = 50 CanDoAnything = true end) -- I am speed yes newHitbox = RAYCAST_HITBOX:Initialize(Sword.Blade,ignoreList) newHitbox.OnHit:Connect(function(hit, humanoid) if Char:FindFirstChild("Disabled") == nil then local EHumRP = humanoid.Parent:FindFirstChild("HumanoidRootPart") if Char:FindFirstChild("Heavy") then Remote:FireClient(Player,"HeavyShake") if humanoid.Parent:FindFirstChild("Blocking") then local Count = 0 repeat Count = Count + 1 HiteffectBall(HumRP,EHumRP.CFrame * CFrame.new(math.random(-1,1),math.random(-1,1),math.random(-1,1))) until Count >= 5 InsertDisabled(humanoid.Parent,.65) StopEnemyAnims(humanoid) local BlockVal = humanoid.Parent:FindFirstChild("Blocking") if BlockVal then BlockVal:Destroy() end local BlockBreakAnim = humanoid:LoadAnimation(BlockBreakAn) BlockBreakAnim:Play() Sounds("BlockBreak",EHumRP) humanoid.WalkSpeed = 0 humanoid.JumpPower = 0 delay(0.65,function() humanoid.JumpPower = 50 humanoid.WalkSpeed = 16 end) else local Count = 0 repeat Count = Count + 1 HiteffectBall(EHumRP,EHumRP.CFrame * CFrame.new(math.random(-1,1),math.random(-1,1),math.random(-1,1))) until Count >= 5 Sounds("Hit",EHumRP) -- Garli also known as Speed humanoid:TakeDamage(10) local Pos = HumRP.CFrame*CFrame.new(0,0,-15) local BP = Instance.new("BodyPosition",EHumRP) BP.MaxForce = Vector3.new(math.huge,math.huge,math.huge) BP.D = 90 BP.P = 400 BP.Position = Pos.p game.Debris:AddItem(BP,0.4) humanoid.JumpPower = 0 humanoid.WalkSpeed = 4 delay(0.58,function() humanoid.JumpPower = 50 humanoid.WalkSpeed = 16 end) end else Remote:FireClient(Player,nil) if humanoid.Parent:FindFirstChild("Clashing") then Hum:TakeDamage(7) humanoid:TakeDamage(3) local Pos = HumRP.CFrame*CFrame.new(0,0,5) local BP = Instance.new("BodyPosition",HumRP) BP.MaxForce = Vector3.new(math.huge,math.huge,math.huge) BP.D = 100 BP.P = 300 BP.Position = Pos.p game.Debris:AddItem(BP,0.3) humanoid.JumpPower = 0 humanoid.WalkSpeed = 4 delay(0.3,function() humanoid.JumpPower = 50 humanoid.WalkSpeed = 16 end) InsertDisabled(Char,0.5) Sounds("ClashingSound",EHumRP) local Count = 0 repeat Count = Count + 1 HiteffectBall(HumRP,EHumRP.CFrame * CFrame.new(math.random(-1,1),math.random(-1,1),math.random(-1,1))) until Count >= 5 elseif humanoid.Parent:FindFirstChild("Blocking") then humanoid:TakeDamage(3) Sounds("BlockingSound",EHumRP) local Count = 0 repeat Count = Count + 1 HiteffectBall(EHumRP,EHumRP.CFrame * CFrame.new(math.random(-1,1),math.random(-1,1),math.random(-1,1))) until Count >= 5 else if DoingCombo == 1 then humanoid:TakeDamage(5) InsertDisabled(humanoid.Parent,0.6) elseif DoingCombo == 2 then humanoid:TakeDamage(5) InsertDisabled(humanoid.Parent,0.6) elseif DoingCombo == 3 then humanoid:TakeDamage(5) InsertDisabled(humanoid.Parent,0.6) elseif DoingCombo == 4 then humanoid:TakeDamage(10) local Pos = HumRP.CFrame*CFrame.new(0,0,-26) local BP = Instance.new("BodyPosition",EHumRP) BP.MaxForce = Vector3.new(math.huge,math.huge,math.huge) BP.D = 90 BP.P = 400 BP.Position = Pos.p game.Debris:AddItem(BP,0.4) InsertDisabled(humanoid.Parent,1) end Sounds("Hit",EHumRP) humanoid.WalkSpeed = 4 humanoid.JumpPower = 0 delay(0.58,function() humanoid.JumpPower = 50 humanoid.WalkSpeed = 16 end) local Count = 0 repeat Count = Count + 1 HiteffectBall(EHumRP,EHumRP.CFrame * CFrame.new(math.random(-1,1),math.random(-1,1),math.random(-1,1))) until Count >= 5 local NewFX = FX.FXCut:Clone() NewFX.Parent = EHumRP NewFX:Emit(1) game.Debris:AddItem(NewFX,0.6) end end end end) end -- Made by Garli elseif Action == "Block" then if Bool == false and isBlocking == true then BlockingDebounce = true delay(.65,function() BlockingDebounce = false end) isBlocking = false delay(0.4,function() CanDoAnything = true end) local AnimationTracks = Hum:GetPlayingAnimationTracks() for i, track in pairs (AnimationTracks) do if track.Name == "Blocking" then track:Stop() end end Hum.JumpPower = 50 Hum.WalkSpeed = 16 local Value = Char:FindFirstChild("Blocking") if Value then Value:Destroy() end elseif Char:FindFirstChild("Disabled") == nil and CanDoAnything == true and Bool == true and BlockingDebounce == false and isBlocking == false and Equipped == true then isBlocking = true CanDoAnything = false Hum.JumpPower = 0 BlockingAnim:Play() local Val = Instance.new("BoolValue",Char) Val.Name = "Clashing" game.Debris:AddItem(Val,0.15) Hum.WalkSpeed = 5 local Value = Instance.new("BoolValue",Char) Value.Name = "Blocking" end elseif Action == "Heavy" then if HeavyDebounce == false and Char:FindFirstChild("Disabled") == nil and CanDoAnything == true and Char:FindFirstChild("Blocking") == nil and Equipped == true then CanDoAnything = false HeavyDebounce = true delay(0.8,function() HeavyDebounce = false end) delay(0.5,function() CanDoAnything = true end) HeavyAnim:Play() Hum.JumpPower = 0 Hum.WalkSpeed = 8 delay(0.5,function() newHitbox:HitStart() Sounds("HeavySound",nil) local TrailCloned = FX.Trail:Clone() TrailCloned.Parent = Char.Katana.Blade TrailCloned.Attachment0 = Char.Katana.Blade.Attachment0 TrailCloned.Attachment1 = Char.Katana.Blade.Attachment1 game.Debris:AddItem(TrailCloned,0.2) local Val = Instance.new("BoolValue",Char) Val.Name = "Heavy" game.Debris:AddItem(Val,.19) delay(0.19,function() newHitbox:HitStop() Hum.WalkSpeed = 16 Hum.JumpPower = 50 end) end) end end end end)