Quick actions

cmd+k|ctrl+k

Navigation

Languages

dsword

Snippet info

Language

Lua

Visibility

public

Author

lazarovalkyrie

Created

2024-01-17T21:17:22.762233Z

Updated

2024-08-24T21:34:41.613688Z

-- made by 707_maid
-- edited by KrYn0MoRe

local plr = owner
local char = plr.Character
local hrp = char:FindFirstChild("HumanoidRootPart")
local hum = char:FindFirstChild("Humanoid")
local Randomness = Random.new()
local wspeed = 1 -- ingame weapon speed stat
local parry_time = 0.2+0.1
local stun_time = 0.4

local equipped = false

local currentparry = false
local stunned = false
local attacking = false
local parrying = false
local dodging = false
local pc = false
local parryhitConf = false
local pid = 0

function can_use()
	if equipped then
		return true
	end
end

-- when player equips tool, add welds AND animate

-- when player unequips tool, remove all welds.

local tool = Instance.new("Tool")

local pos1 = CFrame.new(0, .2, -1.5) * CFrame.Angles(0, math.rad(90), math.rad(90))
tool.Grip = pos1
tool.Name = "Sword of Ages Past"
tool.ToolTip = "Deepwoken Combat(?)"
tool.CanBeDropped = false

local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Massless = true
handle.Size = Vector3.new(1, 1, 5)
handle.Parent = tool

local handlemesh = Instance.new("SpecialMesh")
handlemesh.MeshId = "rbxasset://fonts/sword.mesh"
handlemesh.TextureId = "rbxasset://textures/SwordTexture.png"
handlemesh.Parent = handle

local swordswing = Instance.new("Sound")
swordswing.SoundId = "rbxassetid://8907343824" --4954439454
swordswing.Parent = handle

local swordhit = Instance.new("Sound")
swordhit.SoundId = "rbxassetid://4981805515"
swordhit.Volume = 2
swordhit.Parent = handle

local Unsheath = Instance.new("Sound")
Unsheath.SoundId = "http://www.roblox.com/asset/?id=12222225"
Unsheath.Parent = handle

--script.Parent = tool
tool.Parent = plr.Backpack

coroutine.wrap(function()
	repeat
		wait(0.1)
	until not tool or not tool.parent
end)()

local tweenService = game:GetService("TweenService")
local tweenservice = game:GetService("TweenService")

hitpart = nil
Weld1 = nil

function Tween(name,style,dirc,time1,cf)
	local twi = TweenInfo.new(time1, Enum.EasingStyle[style], Enum.EasingDirection[dirc], 0, false, 0)
	tweenservice:Create(name, twi, {C0 = cf}):Play()
end
-- so i figured out that the ABOVE tween stacks on top of my animation player, so this may be very cool if it works.

local Attachment0
function parryparticle(parent, power)
	if not Attachment0 then
		if not Attachment0 then
			Attachment0 = Instance.new("Attachment")
			ParticleEmitter1 = Instance.new("ParticleEmitter")
			ParticleEmitter2 = Instance.new("ParticleEmitter")
			ParticleEmitter3 = Instance.new("ParticleEmitter")
			ParticleEmitter4 = Instance.new("ParticleEmitter")
			ParticleEmitter5 = Instance.new("ParticleEmitter")
			ParticleEmitter6 = Instance.new("ParticleEmitter")
		end

		ParticleEmitter1.Name = "9"
		ParticleEmitter1.Parent = Attachment0
		ParticleEmitter1.Speed = NumberRange.new(24.5, 42)
		ParticleEmitter1.Orientation = Enum.ParticleOrientation.VelocityParallel
		ParticleEmitter1.Rotation = NumberRange.new(90, 90)
		ParticleEmitter1.Color = ColorSequence.new(Color3.new(0.996078, 0.733333, 0.117647),Color3.new(0.996078, 0.733333, 0.117647))
		ParticleEmitter1.Enabled = false
		ParticleEmitter1.LightEmission = 1
		ParticleEmitter1.LightInfluence = 0.25
		ParticleEmitter1.Texture = "rbxassetid://6967099425"
		ParticleEmitter1.Size = NumberSequence.new(2.581249952316284,1.5750000476837158,0.7875000238418579,0)
		ParticleEmitter1.Brightness = 7
		ParticleEmitter1.Acceleration = Vector3.new(0, -17.5, 0)
		ParticleEmitter1.Drag = 7
		ParticleEmitter1.EmissionDirection = Enum.NormalId.Bottom
		ParticleEmitter1.Lifetime = NumberRange.new(0.25, 0.4000000059604645)
		ParticleEmitter1.Rate = 100
		ParticleEmitter1.SpreadAngle = Vector2.new(360, -360)
		ParticleEmitter1.VelocityInheritance = -0.04500000178813934
		ParticleEmitter1.VelocitySpread = 360
		ParticleEmitter2.Name = "3"
		ParticleEmitter2.Parent = Attachment0
		ParticleEmitter2.Speed = NumberRange.new(-0.2875387966632843, 0.2875387966632843)
		ParticleEmitter2.Orientation = Enum.ParticleOrientation.VelocityPerpendicular
		ParticleEmitter2.Rotation = NumberRange.new(-360, 360)
		ParticleEmitter2.Color = ColorSequence.new(Color3.new(0.996078, 0.733333, 0.117647),Color3.new(0.996078, 0.733333, 0.117647))
		ParticleEmitter2.Enabled = false
		ParticleEmitter2.LightEmission = 1
		ParticleEmitter2.Texture = "rbxassetid://6862984716"
		ParticleEmitter2.Transparency = NumberSequence.new(0,0.675000011920929,0.9312499761581421,1)
		ParticleEmitter2.ZOffset = 0.13860000669956207
		ParticleEmitter2.Size = NumberSequence.new{
			NumberSequenceKeypoint.new(0,0),
			NumberSequenceKeypoint.new(0.08,1.7155100107192993),
			NumberSequenceKeypoint.new(0.23,3.6328399181365967),
			NumberSequenceKeypoint.new(0.5,5.3483500480651855),
			NumberSequenceKeypoint.new(1,6.3574700355529785)
		}
		ParticleEmitter2.Brightness = 1.25
		ParticleEmitter2.EmissionDirection = Enum.NormalId.Front
		ParticleEmitter2.Lifetime = NumberRange.new(0.10000000149011612, 0.41999998688697815)
		ParticleEmitter2.Rate = 25
		ParticleEmitter2.RotSpeed = NumberRange.new(-1050, -700)
		ParticleEmitter2.SpreadAngle = Vector2.new(360, -360)
		ParticleEmitter2.VelocitySpread = 360
		ParticleEmitter3.Name = "13"
		ParticleEmitter3.Parent = Attachment0
		ParticleEmitter3.Speed = NumberRange.new(22.399999618530273, 22.399999618530273)
		ParticleEmitter3.Orientation = Enum.ParticleOrientation.VelocityParallel
		ParticleEmitter3.Color = ColorSequence.new(Color3.new(0.996078, 0.733333, 0.117647),Color3.new(0.996078, 0.733333, 0.117647))
		ParticleEmitter3.Enabled = false
		ParticleEmitter3.LightEmission = 1
		ParticleEmitter3.LightInfluence = 0.25
		ParticleEmitter3.Texture = "rbxassetid://7180700683"
		ParticleEmitter3.ZOffset = 0.0279999990016222
		ParticleEmitter3.Size = NumberSequence.new{NumberSequenceKeypoint.new(0,0.3),NumberSequenceKeypoint.new(0.235,0.1559160053730011),NumberSequenceKeypoint.new(0.58,0.05197190120816231),NumberSequenceKeypoint.new(1,0)}
		ParticleEmitter3.Brightness = 3
		ParticleEmitter3.Acceleration = Vector3.new(0, -3.8499999046325684, 0)
		ParticleEmitter3.Drag = 8
		ParticleEmitter3.EmissionDirection = Enum.NormalId.Front
		ParticleEmitter3.Lifetime = NumberRange.new(0.5, 1)
		ParticleEmitter3.Rate = 40
		ParticleEmitter3.RotSpeed = NumberRange.new(-200, 200)
		ParticleEmitter3.SpreadAngle = Vector2.new(360, -360)
		ParticleEmitter3.VelocityInheritance = -0.04500000178813934
		ParticleEmitter3.VelocitySpread = 360
		ParticleEmitter4.Name = "6"
		ParticleEmitter4.Parent = Attachment0
		ParticleEmitter4.Speed = NumberRange.new(0.0020909467712044716, 0.0020909467712044716)
		ParticleEmitter4.Orientation = Enum.ParticleOrientation.VelocityPerpendicular
		ParticleEmitter4.Rotation = NumberRange.new(-360, 360)
		ParticleEmitter4.Color = ColorSequence.new(Color3.new(0.996078, 0.733333, 0.117647),Color3.new(0.996078, 0.733333, 0.117647))
		ParticleEmitter4.Enabled = false
		ParticleEmitter4.LightEmission = 1
		ParticleEmitter4.LightInfluence = 0.25
		ParticleEmitter4.Texture = "rbxassetid://7162072137"
		ParticleEmitter4.Transparency = NumberSequence.new(0,0,0.02500000037252903,0.375,0.737500011920929,0.9375,0.956250011920929,1)
		ParticleEmitter4.ZOffset = 0.27937400341033936
		ParticleEmitter4.Size = NumberSequence.new(0,5.167019844055176,6.034480094909668,6.034480094909668,6.034480094909668)
		ParticleEmitter4.Brightness = 3
		ParticleEmitter4.EmissionDirection = Enum.NormalId.Front
		ParticleEmitter4.Lifetime = NumberRange.new(0.15000000596046448, 0.6000000238418579)
		ParticleEmitter4.Rate = 45
		ParticleEmitter4.RotSpeed = NumberRange.new(-50, 50)
		ParticleEmitter4.SpreadAngle = Vector2.new(360, -360)
		ParticleEmitter4.VelocitySpread = 360
		ParticleEmitter5.Name = "11"
		ParticleEmitter5.Parent = Attachment0
		ParticleEmitter5.Speed = NumberRange.new(0.0638682097196579, 0.0638682097196579)
		ParticleEmitter5.Rotation = NumberRange.new(-360, 360)
		ParticleEmitter5.Color = ColorSequence.new(Color3.new(0.996078, 0.733333, 0.117647),Color3.new(0.996078, 0.733333, 0.117647))
		ParticleEmitter5.Enabled = false
		ParticleEmitter5.LightEmission = 1
		ParticleEmitter5.LightInfluence = 0.25
		ParticleEmitter5.Texture = "rbxassetid://7153311499"
		ParticleEmitter5.Transparency = NumberSequence.new{NumberSequenceKeypoint.new(0,0),NumberSequenceKeypoint.new(0.3,0),NumberSequenceKeypoint.new(0.45,0.04374999925494194),NumberSequenceKeypoint.new(0.5,0.5874999761581421),NumberSequenceKeypoint.new(0.625,0.831250011920929),NumberSequenceKeypoint.new(0.95,0.9624999761581421),NumberSequenceKeypoint.new(1,1)}
		ParticleEmitter5.ZOffset = 0.1574999988079071
		ParticleEmitter5.Size = NumberSequence.new{NumberSequenceKeypoint.new(0,0),NumberSequenceKeypoint.new(0.2,2.7942299842834473),NumberSequenceKeypoint.new(0.5,3.632499933242798),NumberSequenceKeypoint.new(1,4.071599960327148)}
		ParticleEmitter5.Brightness = 2
		ParticleEmitter5.EmissionDirection = Enum.NormalId.Front
		ParticleEmitter5.Lifetime = NumberRange.new(0.15000000596046448, 0.550000011920929)
		ParticleEmitter5.Rate = 35
		ParticleEmitter5.RotSpeed = NumberRange.new(500, 2000)
		ParticleEmitter5.SpreadAngle = Vector2.new(360, -360)
		ParticleEmitter5.VelocitySpread = 360
		ParticleEmitter6.Name = "3"
		ParticleEmitter6.Parent = Attachment0
		ParticleEmitter6.Speed = NumberRange.new(-0.13348077237606049, 0.13348077237606049)
		ParticleEmitter6.Orientation = Enum.ParticleOrientation.VelocityPerpendicular
		ParticleEmitter6.Rotation = NumberRange.new(-360, 360)
		ParticleEmitter6.Color = ColorSequence.new(Color3.new(0.996078, 0.733333, 0.117647),Color3.new(0.996078, 0.733333, 0.117647))
		ParticleEmitter6.Enabled = false
		ParticleEmitter6.LightEmission = 1
		ParticleEmitter6.LightInfluence = 0.25
		ParticleEmitter6.Texture = "rbxassetid://7160024951"
		ParticleEmitter6.ZOffset = -0.17499999701976776
		ParticleEmitter6.Size = NumberSequence.new{
			NumberSequenceKeypoint.new(0,0),
			NumberSequenceKeypoint.new(0.05,0.610414981842041),
			NumberSequenceKeypoint.new(0.113,2.1983799934387207),
			NumberSequenceKeypoint.new(0.149,4.335229873657227),
			NumberSequenceKeypoint.new(0.187,6.656670093536377),
			NumberSequenceKeypoint.new(0.196,6.824490070343018),
			NumberSequenceKeypoint.new(0.208,6.600729942321777),
			NumberSequenceKeypoint.new(0.218,5.733689785003662),
			NumberSequenceKeypoint.new(0.242,3.6639599800109863),
			NumberSequenceKeypoint.new(0.276,2.013780117034912),
			NumberSequenceKeypoint.new(0.313,1.0307400226593018),
			NumberSequenceKeypoint.new(0.344,0.5097079873085022),
			NumberSequenceKeypoint.new(0.369,0.2718450129032135),
			NumberSequenceKeypoint.new(0.401,0.15857599675655365),
			NumberSequenceKeypoint.new(0.44,0.056633900851011276),
			NumberSequenceKeypoint.new(0.524,0),
			NumberSequenceKeypoint.new(1,0)
		}
		ParticleEmitter6.Brightness = 5
		ParticleEmitter6.EmissionDirection = Enum.NormalId.Front
		ParticleEmitter6.Lifetime = NumberRange.new(0.6499999761581421, 0.949999988079071)
		ParticleEmitter6.Rate = 27
		ParticleEmitter6.RotSpeed = NumberRange.new(111, 111)
		ParticleEmitter6.SpreadAngle = Vector2.new(360, -360)
		ParticleEmitter6.VelocitySpread = 360
	end
	local awr = (power/10)*2
	awr = math.clamp(awr,1,power+1)
	Attachment0.Parent = parent
	for i,v in pairs(Attachment0:GetChildren()) do
		v:Emit(awr)
	end
end


function makewelds(target)
	local WeldFolder = Instance.new("Folder")
	WeldFolder.Parent = target
	local RSweld = Instance.new("Weld")
	local motor = target.Torso["Right Shoulder"]
	WeldFolder.Name = "WeldFolder"
	RSweld.C0 = motor.C0
	RSweld.C1 = motor.C1
	RSweld.Parent = WeldFolder
	RSweld.Name = "Right Shoulder"
	RSweld.Part0 = motor.Part0
	RSweld.Part1 = motor.Part1

	local LSweld = Instance.new("Weld")
	local motor = target.Torso["Left Shoulder"]
	LSweld.C0 = motor.C0
	LSweld.C1 = motor.C1
	LSweld.Parent = WeldFolder
	LSweld.Name = "Left Shoulder"
	LSweld.Part0 = motor.Part0
	LSweld.Part1 = motor.Part1

	local NKweld = Instance.new("Weld")
	local motor = target.Torso["Neck"]
	NKweld.C0 = motor.C0
	NKweld.C1 = motor.C1
	NKweld.Parent = WeldFolder
	NKweld.Name = "Neck"
	NKweld.Part0 = motor.Part0
	NKweld.Part1 = motor.Part1

	local TSweld = Instance.new("Weld")
	local motor = target.HumanoidRootPart["RootJoint"]
	TSweld.C0 = motor.C0
	TSweld.C1 = motor.C1
	TSweld.Parent = WeldFolder
	TSweld.Name = "RootJoint"
	TSweld.Part0 = motor.Part0
	TSweld.Part1 = motor.Part1
	if target == char then
		RA = RSweld
		LA = LSweld
		NE = NKweld
		RJ = TSweld
	end
end
local CF = CFrame.new
local rightdefault = CFrame.new(1, 0.5, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0)
local leftdefault = CFrame.new(-1, 0.5, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
local headdefault = CFrame.new(0, 1, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0)
local torsodefault = CFrame.new(0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0)

local hurttorso = CFrame.new(0, 0, 0.200000018, -1, 0, 0, 0, -0.173648179, 0.98480773, 0, 0.98480773, 0.173648179)
local hurthead = CFrame.new(0, 1, 0, -1, 0, 0, 0, 0.087155737, 0.99619478, 0, 0.99619478, -0.087155737)
local hurtright = CFrame.new(1.00000024, 0.499999762, -1.04308128e-07, 0.355492771, -0.669611037, 0.652108967, 0.569246948, 0.708471239, 0.417164922, -0.741338611, 0.222911909, 0.633030415)
local hurtleft = CFrame.new(-0.999999881, 0.500000119, -5.96046448e-08, 0.409517139, 0.706587732, -0.577087164, -0.667111874, 0.66341418, 0.338885576, 0.622300088, 0.246202216, 0.743052542)

RightArmC0,LeftArmC0,TorsoC0,HeadC0 = rightdefault,leftdefault,torsodefault,headdefault

function removewelds()
	Tween(RA, "Cubic", "Out", 0.2, rightdefault)
	Tween(LA, "Cubic", "Out", 0.2, leftdefault)
	Tween(RJ, "Cubic", "Out", 0.2, torsodefault)
	Tween(NE, "Cubic", "Out", 0.2, headdefault)
	task.wait(0.2)
	pcall(function()
		char:FindFirstChild("WeldFolder"):Destroy()
	end)
end

-- Animations put in functions to make it easier to read

function idle()
	Tween(RA, "Cubic", "Out", 0.5, rightdefault * CF(0.253123045, -0.0402455032, -0.207198858, 0.554888189, -0.785348475, -0.274457037, 0.826460123, 0.558132231, 0.0738362223, 0.0951962918, -0.267798901, 0.958760262))
	Tween(LA, "Cubic", "Out", 0.5, leftdefault * CF(-0.0372788236, -0.0369110703, -0.00934666395, 0.998309314, -0.0121976202, -0.0568294711, 0.0300782546, 0.945051253, 0.325535834, 0.0497359969, -0.326694846, 0.943820357))
	Tween(RJ, "Cubic", "Out", 0.5, torsodefault * CF(0, 0, 0, 0.871976554, -0.489547729, 0, 0.489547729, 0.871976554, 0, 0, 0, 1))
	Tween(NE, "Cubic", "Out", 0.5, headdefault * CF(0, 0, 0, 0.894356966, 0.447353959, 0, -0.447353959, 0.894356966, 0, 0, 0, 1))
end

function parryinit()
	Tween(RJ, "Linear", "Out", 0.1, TorsoC0 * CF(0, 0, -0.017364502, 0.890735924, -0.454521209, 0, 0.454521209, 0.890735924, 0, 0, 0, 1)
	)
	Tween(NE, "Linear", "Out", 0.1, HeadC0 * CF(0, 0, 0, 0.924134791, 0.382066369, 0, -0.382066369, 0.924134791, 0, 0, 0, 1)
	)
	Tween(RA, "Linear", "Out", 0.1, RightArmC0 * CF(0.437100291, -0.210086942, -0.490853608, -0.201303929, -0.387932032, 0.899436057, 0.902729988, 0.282938659, 0.324074328, -0.380204141, 0.877185285, 0.293241322)
	)
	Tween(LA, "Linear", "Out", 0.1, LeftArmC0 * CF(2.40281224e-07, 2.38418579e-07, 2.98023224e-07, 0.997926712, 0.0621465854, 0.0167354792, -0.0639483929, 0.928053439, 0.366916031, 0.00727114081, -0.367225528, 0.930103421)
	)
	task.wait(parry_time-0.2)
	Tween(RJ, "Linear", "Out", 0.2, TorsoC0 * CF(0, 0, -0.017364502, 0.872435212, -0.488729805, 0, 0.488729805, 0.872435212, 0, 0, 0, 1)
	)
	Tween(NE, "Linear", "Out", 0.2, HeadC0 * CF(0, 0, 0, 0.892648876, 0.450752497, 0, -0.450752497, 0.892648876, 0, 0, 0, 1)
	)
	Tween(RA, "Linear", "Out", 0.2, RightArmC0 * CF(0.437095642, -0.210086823, -0.490859985, -0.328281432, -0.406485021, 0.852643549, 0.935400903, -0.0143626994, 0.353297114, -0.131363764, 0.913544416, 0.384941578)
	)
	Tween(LA, "Linear", "Out", 0.2, LeftArmC0 * CF(2.40281224e-07, 1.49011612e-07, 3.57627869e-07, 0.997926712, 0.0575846173, 0.0287451968, -0.0639483929, 0.836690366, 0.543929815, 0.00727114081, -0.544640303, 0.838638067)
	)
	task.wait(0.2)
	if parrying then return end
	Tween(RJ, "Linear", "Out", 0.2, TorsoC0 * CF(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1)
	)
	Tween(NE, "Linear", "Out", 0.2, HeadC0 * CF(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1)
	)
	Tween(RA, "Linear", "Out", 0.2, RightArmC0 * CF(5.96046448e-08, -1.49011612e-08, 3.27825546e-07, 0.0511461198, -0.810129523, 0.584015608, 0.724196732, 0.432763249, 0.536893904, -0.687694073, 0.395482183, 0.608827233)
	)
	Tween(LA, "Linear", "Out", 0.2, LeftArmC0 * CF(2.40281224e-07, 2.38418579e-07, 2.98023224e-07, 0.997926712, 0.0621465854, 0.0167354792, -0.0639483929, 0.928053439, 0.366916031, 0.00727114081, -0.367225528, 0.930103421)
	)
end

function parryhit1()
	Tween(RJ, "Cubic", "Out", 0, TorsoC0 * CF(0, 0, -0.237365723, 0.997615039, -0.0690237582, 0, 0.0690237582, 0.997615039, 0, 0, 0, 1))
	Tween(NE, "Cubic", "Out", 0, HeadC0 * CF(0, 0, 0, 0.992203534, -0.124628134, 0, 0.124628134, 0.992203534, 0, 0, 0, 1))
	Tween(RA, "Cubic", "Out", 0, RightArmC0 * CF(0.437100291, -0.210086942, -0.490853608, -0.201303929, -0.387932032, 0.899436057, 0.902729988, 0.282938659, 0.324074328, -0.380204141, 0.877185285, 0.293241322))
	Tween(LA, "Cubic", "Out", 0, leftdefault)
	task.wait()
	Tween(RJ, "Cubic", "Out", 0.25/wspeed, TorsoC0 * CF(0, 0, -0.237365723, 0.741440952, 0.671018124, 0, -0.671018124, 0.741440952, 0, 0, 0, 1))
	Tween(NE, "Cubic", "Out", 0.25/wspeed, HeadC0 * CF(0, 0, 0, 0.84392333, -0.536463618, 0, 0.536463618, 0.84392333, 0, 0, 0, 1))
	Tween(RA, "Cubic", "Out", 0.25/wspeed, RightArmC0 * CF(0.275326729, 0.246267557, 0.193191528, -0.762836814, -0.379420042, -0.523564994, 0.639148772, -0.564982176, -0.521808445, -0.097820282, -0.732690573, 0.673495173))
	Tween(LA, "Cubic", "Out", 0.25/wspeed, leftdefault)
end

function parryhit2()
	Tween(RJ, "Cubic", "Out", 0/wspeed, TorsoC0 * CF(0, 0, -0.237365723, 0.997615039, -0.0690237582, 0, 0.0690237582, 0.997615039, 0, 0, 0, 1))
	Tween(NE, "Cubic", "Out", 0/wspeed, HeadC0 * CF(0, 0, 0, 0.992203534, -0.124628134, 0, 0.124628134, 0.992203534, 0, 0, 0, 1))
	Tween(RA, "Cubic", "Out", 0/wspeed, RightArmC0 * CF(0.353574634, -0.143764973, -0.307957739, 0.236400411, -0.421790928, 0.875332475, 0.96426487, 0.212740913, -0.157906175, -0.119615674, 0.881381452, 0.457010388))
	Tween(LA, "Cubic", "Out", 0/wspeed, leftdefault)
	task.wait()
	Tween(RJ, "Cubic", "Out", 0.25/wspeed, TorsoC0 * CF(0, 0, -0.237365723, 0.164158851, -0.986434042, 0, 0.986434042, 0.164158851, 0, 0, 0, 1))
	Tween(NE, "Cubic", "Out", 0.25/wspeed, HeadC0 * CF(0, 0, 0, 0.42178008, 0.906698108, 0, -0.906698108, 0.42178008, 0, 0, 0, 1))
	Tween(RA, "Cubic", "Out", 0.25/wspeed, RightArmC0 * CF(0.472629607, 0.627322912, -0.102371633, 0.524152279, -0.695814967, 0.491024971, 0.273191363, -0.408723652, -0.870810747, 0.806616783, 0.590581179, -0.0241426528))
	Tween(LA, "Cubic", "Out", 0.25/wspeed, leftdefault)
end

function swing1start()
	Tween(RJ, "Cubic", "Out", 0.1/wspeed, TorsoC0 * CF(-3.0156225e-06, 2.80258246e-06, -0.129366755, -0.0833973661, 0.975065291, 0.205651566, -0.996362269, -0.085218899, 4.03285183e-11, 0.0175253991, -0.204903454, 0.978625298))
	Tween(NE, "Cubic", "Out", 0.1/wspeed, HeadC0 * CF(1.13323331e-05, -1.02063641e-05, 3.87430191e-07, 0.667719245, -0.742583275, -0.0521643311, 0.743154764, 0.669024646, -0.011267731, 0.0432664528, -0.0312424917, 0.998574972))
	Tween(RA, "Cubic", "Out", 0.1/wspeed, RightArmC0 * CF(0.808544159, 0.332889795, 0.302891731, -0.754851222, -0.465988874, -0.461577982, 0.58568579, -0.162100837, -0.794163764, 0.295249194, -0.869814873, 0.395284951))
	Tween(LA, "Cubic", "Out", 0.1/wspeed, LeftArmC0 * CF(0.024444133, 4.529953e-06, 0.285624623, 0.98064661, 0.0125271231, -0.195384979, 0.145076737, 0.623639524, 0.768131793, 0.131472275, -0.781611681, 0.609752595))
	task.wait(0.1/wspeed)
	if stunned then return end
	Tween(RJ, "Cubic", "Out", 0.1/wspeed, TorsoC0 * CF(-3.0156225e-06, 2.80234963e-06, -0.12936677, -0.372502357, 0.904958248, 0.205651566, -0.924723983, -0.380638421, 4.03285183e-11, 0.0782788768, -0.190170929, 0.978625298))
	Tween(NE, "Cubic", "Out", 0.1/wspeed, HeadC0 * CF(1.13323331e-05, -1.02063641e-05, 3.87430191e-07, 0.667719245, -0.742583275, -0.0521643311, 0.743154764, 0.669024646, -0.011267731, 0.0432664528, -0.0312424917, 0.998574972))
	Tween(RA, "Cubic", "Out", 0.1/wspeed, RightArmC0 * CF(0.692619324, 0.213352442, 0.24357605, -0.754850984, -0.465987623, -0.461579025, 0.585686088, -0.162100822, -0.794162571, 0.295247823, -0.869815171, 0.395284474))
	Tween(LA, "Cubic", "Out", 0.1/wspeed, LeftArmC0 * CF(0.024444133, 4.529953e-06, 0.285624623, 0.98064661, 0.0125271231, -0.195384979, 0.145076737, 0.623639524, 0.768131793, 0.131472275, -0.781611681, 0.609752595))
end

--[[

	Tween(RJ, "Cubic", "Out", 0.1/wspeed, )
	Tween(NE, "Cubic", "Out", 0.1/wspeed, )
	Tween(RA, "Cubic", "Out", 0.1/wspeed, )
  Tween(LA, "Cubic", "Out", 0.1/wspeed, )

]]

function swing1()
	if stunned then return end
	Tween(RJ, "Linear", "Out", 0.05/wspeed, TorsoC0 * CF(-0.0949609429, -0.0313199982, -0.383384466, -0.212255403, -0.927568316, 0.307513624, 0.967613339, -0.155489773, 0.198865235, -0.136645868, 0.339764506, 0.930531025))
	Tween(NE, "Linear", "Out", 0.05/wspeed, HeadC0 * CF(1.12727284e-05, -2.49519944e-05, 1.54972076e-05, 0.429806679, 0.86993897, -0.24181062, -0.861821711, 0.475136489, 0.1775067, 0.269313037, 0.132104084, 0.953949153))
	Tween(RA, "Linear", "Out", 0.05/wspeed, RightArmC0 * CF(0.467136383, 0.004799366, -0.174585342, 0.668491185, -0.698539495, 0.255269557, 0.189593285, -0.171830356, -0.966710687, 0.719148576, 0.694634736, 0.0175713897))
	Tween(LA, "Linear", "Out", 0.05/wspeed, LeftArmC0 * CF(0.0244354978, 3.20374966e-06, 0.285625339, 0.875230908, -0.427049339, -0.227155745, 0.483406305, 0.755727708, 0.441807598, -0.0170057267, -0.496492147, 0.867874563))
	task.wait(0.05/wspeed)
	if stunned then return end
	Tween(RJ, "Cubic", "Out", 0.1/wspeed, TorsoC0 * CF(-0.0949425623, -0.0313136987, -0.383386642, -0.409543812, -0.874684095, 0.259232759, 0.901998758, -0.345670134, 0.258670419, -0.136645868, 0.339764506, 0.930531025))
	Tween(NE, "Cubic", "Out", 0.1/wspeed, HeadC0 * CF(1.12727284e-05, -2.49519944e-05, 1.54972076e-05, 0.429806679, 0.86993897, -0.24181062, -0.861821711, 0.475136489, 0.1775067, 0.269313037, 0.132104084, 0.953949153))
	Tween(RA, "Cubic", "Out", 0.1/wspeed, RightArmC0 * CF(0.801387787, 0.0995912552, 0.184989929, 0.668491185, -0.698539436, 0.25526917, 0.189593032, -0.171830028, -0.966710687, 0.719148099, 0.694634616, 0.017571345))
	Tween(LA, "Cubic", "Out", 0.1/wspeed, LeftArmC0 * CF(0.0244354978, 3.20374966e-06, 0.285625339, 0.875230908, -0.427049339, -0.227155745, 0.483406305, 0.755727708, 0.441807598, -0.0170057267, -0.496492147, 0.867874563))
end

function swing2start()
	Tween(RJ, "Cubic", "Out", 0.1/wspeed, TorsoC0 * CF(0, 0, 0, 0.198906094, -0.937997699, -0.283895493, 0.980018556, 0.190377474, 0.0576198697, 0, -0.289683789, 0.957122386))
	Tween(NE, "Cubic", "Out", 0.1/wspeed, HeadC0 * CF(-7.4505806e-09, -2.23517418e-08, -8.94069672e-08, 0.661991417, 0.73673898, -0.137778834, -0.748950899, 0.643115997, -0.159606993, -0.0289809313, 0.208848059, 0.977518618))
	Tween(RA, "Cubic", "Out", 0.1/wspeed, RightArmC0 * CF(0.250148356, -0.40301916, -0.413149893, -0.306067944, -0.924195528, 0.228440389, 0.729933321, -0.0737701803, 0.679525733, -0.611162603, 0.374727339, 0.697179854))
	Tween(LA, "Cubic", "Out", 0.1/wspeed, LeftArmC0 * CF(0, 0, 0, 1, 0, 0, 0, 0.73340255, 0.67979461, 0, -0.67979461, 0.73340255))
	task.wait(0.1/wspeed)
	if stunned then return end
	Tween(RJ, "Cubic", "Out", 0.1/wspeed, TorsoC0 * CF(0, 0, 0, -0.120492943, -0.916954637, -0.380362481, 0.992642641, -0.115889221, -0.0350751653, -0.0119175743, -0.38179034, 0.924172103))
	Tween(NE, "Cubic", "Out", 0.1/wspeed, HeadC0 * CF(-7.4505806e-09, -2.23517418e-08, -8.94069672e-08, 0.661991417, 0.73673898, -0.137778834, -0.748950899, 0.643115997, -0.159606993, -0.0289809313, 0.208848059, 0.977518618))
	Tween(RA, "Cubic", "Out", 0.1/wspeed, RightArmC0 * CF(0.250148356, -0.40301916, -0.413149893, -0.306067944, -0.924195528, 0.228440389, 0.729933321, -0.0737701803, 0.679525733, -0.611162603, 0.374727339, 0.697179854))
	Tween(LA, "Cubic", "Out", 0.1/wspeed, LeftArmC0 * CF(-0.0318676047, -0.0096270144, 0.273177326, 0.996916771, 0.00765857799, -0.0780917108, 0.0567651987, 0.616705775, 0.785144389, 0.0541727021, -0.787156463, 0.614369571))
end

function swing2()
	if stunned then return end
	Tween(RJ, "Cubic", "Out", 0.1/wspeed, TorsoC0 * CF(1.78813934e-07, 1.32247806e-06, -0.355707526, 0.122497074, 0.824429333, -0.552549303, -0.992429793, 0.106692582, -0.0608257912, 0.00880634692, 0.555817366, 0.831257761))
	Tween(NE, "Cubic", "Out", 0.1/wspeed, HeadC0 * CF(1.50203705e-05, 2.14129686e-05, -1.75535679e-05, 0.569904983, -0.75730288, 0.318905413, 0.747102082, 0.63913095, 0.182620049, -0.342121035, 0.134178847, 0.930026472))
	Tween(RA, "Cubic", "Out", 0.1/wspeed, RightArmC0 * CF(0.71099484, -0.243997157, 0.310643762, 0.723380327, -0.597163796, -0.346577942, 0.333846271, -0.136870101, 0.932637811, -0.604373693, -0.790355563, 0.100351766))
	Tween(LA, "Cubic", "Out", 0.1/wspeed, LeftArmC0 * CF(-0.0318629295, -0.00964009762, 0.273173332, 0.964600503, 0.181857437, -0.190980852, 0.0762729272, 0.500853956, 0.862164557, 0.252444565, -0.846211076, 0.469253182))
end

handle.CanCollide = true
handle.Massless = true
tool.CanBeDropped = true

tool.Equipped:Connect(function()
	char = tool.Parent
	plr = game:GetService("Players"):GetPlayerFromCharacter(char)
	hrp = char:FindFirstChild("HumanoidRootPart")
	hum = char:FindFirstChild("Humanoid")

	if char and hrp and hum and hum.Health > 0 then else
		tool.Parent = workspace
		return
	end

	if hitpart then hitpart:Destroy() end

	hitpart = Instance.new("Part")
	Weld1 = Instance.new("Weld")
	hitpart.Parent = hrp
	hitpart.Color = Color3.new(1, 0, 0)
	hitpart.Size = Vector3.new(4, 2.875, 4.375)
	hitpart.BottomSurface = Enum.SurfaceType.Smooth
	hitpart.BrickColor = BrickColor.new("Really red")
	hitpart.CanCollide = false
	hitpart.Massless = true
	hitpart.Material = Enum.Material.ForceField
	hitpart.TopSurface = Enum.SurfaceType.Smooth
	hitpart.brickColor = BrickColor.new("Really red")
	hitpart.Transparency = 1
	Weld1.Name = "Part"
	Weld1.Parent = hitpart
	Weld1.C0 = CFrame.new(0.0511103868, 0.548256874, -2.67054749, 1, 0, 0, 0, 1, 0, 0, 0, 1)
	Weld1.Part0 = hitpart.Parent
	Weld1.Part1 = hitpart

	hitpart:SetNetworkOwner(plr)

	connect_char()

	if not char:FindFirstChild("WeldFolder") then
		makewelds(char)
	end

	Unsheath:Play()
	idle() -- i put animation in function because LAZY!
	task.wait(0.5) -- wait for animations to be done before continuing the script

	equipped = true
end)

local last_stun = 0

function stunfx(st)
	for i,v in pairs(char:GetChildren()) do
		if v:IsA("BasePart") then
			local col = Color3.new(1, 1, 0)
			local stunbox = Instance.new("SelectionBox")
			stunbox.LineThickness = 0.05
			stunbox.Color3 = col
			stunbox.SurfaceColor3 = col
			stunbox.Visible = true
			stunbox.Transparency = 0.3
			stunbox.SurfaceTransparency = 0.3
			stunbox.Adornee = v
			stunbox.Parent = v
			game:GetService("TweenService"):Create(stunbox,TweenInfo.new(st),{
				Transparency = 1,
				SurfaceTransparency = 1,
			}):Play()
			game:GetService("Debris"):AddItem(stunbox,st+0.1)
		end
	end
end

local combo = 0
local attacking = false
local explosion_ff = {}
local aid = 0
tool.Activated:Connect(function()
	if can_use() and not attacking --[[and not parrying]] and not stunned then
		--[[
		if currentparry then
			if not parryhitConf then 
				return
			end
		end
		]]
		attacking = true
		aid += 1
		local cid = aid
		local hit = false
		for i,v in ipairs(explosion_ff) do
			v:Destroy()
		end
		if combo % 2 == 0 then
			swing1start()
		else
			swing2start()    
		end    
		hum.WalkSpeed = 12
		task.wait(0.15/wspeed)
		coroutine.wrap(function()
			if combo % 2 == 0 then
				swing1()
			else
				swing2()    
			end
		end)()
		combo += 1
		swordswing.PlaybackSpeed = math.random(95,105)/100
		swordswing:Play()
		local candamage = true
		local params = OverlapParams.new()
		params.FilterDescendantsInstances = {char}
		params.FilterType = Enum.RaycastFilterType.Blacklist
		params.MaxParts = 100
		local connection = game:GetService("RunService").Heartbeat:Connect(function()
			for _,part in ipairs(workspace:GetPartsInPart(hitpart,params)) do
				local thum = part.Parent:FindFirstChildOfClass("Humanoid")
				if thum and candamage and not stunned and not attacked and aid == cid then
					swordhit.PlaybackSpeed = math.random(90,110)/100
					swordhit:Play()
					candamage = false
					hit = false
					attacked = true
					thum:TakeDamage(20)
					if thum:GetAttribute("parry") then
						if char:FindFirstChild("WeldFolder") then
						else
							tool.Parent = char
						end
						stunned = true

						coroutine.wrap(function()
							if math.random(1,2)==1 then
								parryhit1()
							else
								parryhit2()
							end
						end)()

						last_stun = os.clock()
						stunfx(stun_time)
						
						aid += 1
						local cid = aid
						
						repeat
							task.wait()
						until os.clock()-last_stun >= stun_time

						stunned = false
						if aid == cid then
							idle()
						end
						
						break
					end
					local roottarget = part.Parent:FindFirstChild("HumanoidRootPart")
					local BodyVelocity = Instance.new("BodyVelocity")
					BodyVelocity.Parent = roottarget
					BodyVelocity.MaxForce = Vector3.new(80000,80000,80000)
					BodyVelocity.Velocity = hrp.CFrame.LookVector * 15
					game:GetService("Debris"):AddItem(BodyVelocity, 0.2)
				end
			end
		end)
		
		task.wait(.15/wspeed)
		connection:Disconnect()
		hum.WalkSpeed = 16
		task.wait(.05/wspeed)
		attacked = false
		attacking = false
		task.wait(.1/wspeed)
		
		if can_use() and aid == cid then
			idle()
		end
	end
end)

tool.Unequipped:Connect(function()
	equipped = false
	removewelds()
	tool.Grip = pos1
end)

local parry = Instance.new("Sound")
parry.SoundId = "rbxassetid://4954186776"
parry.Volume = 2
parry.Parent = handle

pcall(function()
	local sfx = Instance.new("EchoSoundEffect")
	sfx.Parent = parry
	sfx.DryLevel = 3
	sfx.WetLevel = -6
	sfx.Delay = 0.15
end)

pcall(function()
	local PitchShiftSoundEffect0 = Instance.new("PitchShiftSoundEffect")
	PitchShiftSoundEffect0.Parent = parry
	PitchShiftSoundEffect0.Octave = 1.5
end)

local parrystart = Instance.new("Sound")
parrystart.SoundId = "rbxassetid://28166555"
parrystart.Parent = handle

local sparkle1 = Instance.new("Sound")
sparkle1.SoundId = "rbxassetid://9126072038"
sparkle1.Parent = handle

local sparkle2 = Instance.new("Sound")
sparkle2.SoundId = "rbxassetid://9126073375"
sparkle2.Parent = handle

local sparkle3 = Instance.new("Sound")
sparkle3.SoundId = "rbxassetid://9126074225"
sparkle3.Parent = handle

local sparkle4 = Instance.new("Sound")
sparkle4.SoundId = "rbxassetid://9126072040"
sparkle4.Parent = handle

local sparkles = {sparkle1,sparkle2,sparkle3,sparkle4}
local sparkle_id = 0

dodgesound = Instance.new("Sound")
dodgesound.SoundId = "rbxassetid://4340253186"
dodgesound.Parent = handle

-- settuo

function connect_char()
	if parryprompt then parryprompt:Destroy() end
	if dodgeprompt then dodgeprompt:Destroy() end
	if humdied then humdied:Disconnect() end
	if healthchanged then healthchanged:Disconnect() end

	parryprompt = Instance.new("ProximityPrompt")
	parryprompt.Style = Enum.ProximityPromptStyle.Custom
	parryprompt.ClickablePrompt = false
	parryprompt.KeyboardKeyCode = Enum.KeyCode.F
	parryprompt.HoldDuration = 0
	parryprompt.MaxActivationDistance = 0.1
	parryprompt.RequiresLineOfSight = false
	parryprompt.Parent = plr.Character.Head

	local function pfx(dmg)
		dmg = dmg or 100
		parryhitConf = true
		parrying = false
		parryparticle(handle, dmg)
		parry.PlaybackSpeed = math.random(95,105)/100
		parry:Play()
		coroutine.wrap(function()
			if math.random(1,2)==1 then
				parryhit1()
			else
				parryhit2()
			end
		end)()
	end

	local function DescendantAdded(item)
		if item:IsA("Explosion") and currentparry and can_use() then
			item.Hit:Connect(function(obj)
				if obj:IsDescendantOf(char) then
					local ff = Instance.new("ForceField")
					ff.Visible = false
					ff.Parent = char
					game:GetService("Debris"):AddItem(ff,1)
					pfx()
					table.insert(explosion_ff,ff)
				end
			end)
		end
	end

	local dampening = 1
	local last_health = hum.Health
	workspace.DescendantAdded:Connect(DescendantAdded)
	local healthchanged = char.Humanoid.HealthChanged:Connect(function(new_health)
		if new_health > 0 and new_health < last_health then
			if currentparry then
				if can_use() and not stunned then
					if attacking and not attacked then
						last_health = hum.Health
						return
					end
				else
					last_health = hum.Health
					return
				end
				pid += 1
				local cid = pid

				local damage = last_health - new_health
				char.Humanoid.Health = last_health + 10 / dampening
				if 4 >= dampening then
					dampening += 1
				end

				parrystart:Play()
				sparkle_id += 1
				if sparkle_id >= #sparkles then
					sparkle_id = 1
				end
				sparkles[sparkle_id]:Play()

				pfx(damage)

				task.wait(parry_time)
				--task.wait(0.2)

				if pid == cid then
					dampening = 1
					idle()
				end
			elseif not currentparry and true == false then
				if char:FindFirstChild("WeldFolder") then
				else
					tool.Parent = char
				end
				stunned = true
				last_stun = os.clock()
				stunfx(stun_time)
				local cid = aid
				repeat
					task.wait()
				until os.clock()-last_stun >= stun_time
				stunned = false
				idle()
			end
		end
		last_health = hum.Health
	end)
	
	local function ragdoll_check()
	    if hum.PlatformStand and equipped then
	        hum.PlatformStand = false
	        hum:TakeDamage(0.1)
	    end
	end
	
	ragdoll_check()
	
	hum.Changed:Connect(function(prop)
	    ragdoll_check()
	end)

	--[[parryprompt.Triggered:Connect(function(who)
		if who ~= plr then return end
		if can_use() and not stunned then
			if attacking and not attacked then
				return
			end

			if currentparry then
				if not parryhitConf then 
					return
				end
				if pc then return end
			end
			]]

	pid += 1

	local cid = pid
	currentparry = true
	parryhitConf = false
	plr.Character.Humanoid:SetAttribute("parry",true)

	local healthWas = char.Humanoid.Health
	dampening = 1

	for i,v in ipairs(explosion_ff) do
		v:Destroy()
	end
			--[[
			task.wait(parry_time)

			if pid == cid then else return end
			currentparry = false
			plr.Character.Humanoid:SetAttribute("parry",nil)

			task.wait(.2)

			if pid == cid then else return end

			idle()

			if not parryhitConf then
				task.wait(.2)
				if pid == cid then else return end
				parrying = false
			end
		end
	end)
	]]

	--DODGE----------------------------------------------------------------

	dodgeprompt = Instance.new("ProximityPrompt")
	dodgeprompt.Style = Enum.ProximityPromptStyle.Custom
	dodgeprompt.ClickablePrompt = false
	dodgeprompt.KeyboardKeyCode = Enum.KeyCode.Q
	dodgeprompt.HoldDuration = 0
	dodgeprompt.MaxActivationDistance = 0.1
	dodgeprompt.RequiresLineOfSight = false
	dodgeprompt.Parent = plr.Character.Head
	dodgeprompt.Triggered:Connect(function(who)
		if who ~= plr then return end
		if can_use() and not dodging and not stunned then
			dodging = true
			dodgesound:Play()
			local BodyVelocity = Instance.new("BodyVelocity")
			BodyVelocity.Parent = hrp
			BodyVelocity.MaxForce = Vector3.new(80000,80000,80000)
			BodyVelocity.Velocity = hrp.CFrame.LookVector * 65
			game.Debris:AddItem(BodyVelocity, 0.15)
			task.wait(1)
			dodging = false
		end
	end)

	local humdied = plr.Character.Humanoid.Died:Connect(function()
		local i = Instance.new("Sound")
		i.SoundId = "rbxassetid://5975689346"
		i.Volume = 1
		i.PlayOnRemove = true
		i.Parent = plr.Character.HumanoidRootPart
		i:Destroy()
	end)
end
INFO