Tool = script.Parent Handle = Tool:WaitForChild("Handle")
Sparkles1 = Handle:WaitForChild("Sparkles1") Sparkles2 = Handle:WaitForChild("Sparkles2") Light1 = Handle:WaitForChild("Light1") Light2 = Handle:WaitForChild("Light2")
Players = game:GetService("Players") Debris = game:GetService("Debris") RunService = game:GetService("RunService")
DamageValues = { BaseDamage = 60, SlashDamage = 300, LungeDamage = 502 }
NormalSpeed = 32 RegularSpeed = (NormalSpeed + 2)
Damage = DamageValues.BaseDamage
Grips = { Up = CFrame.new(0, 0, -1.70000005, 0, 0, 1, 1, 0, 0, 0, 1, 0), Out = CFrame.new(0, 0, -1.70000005, 0, 1, 0, 1, -0, 0, 0, 0, -1) }
Sounds = { Slash = Handle:WaitForChild("SwordSlash"), Lunge = Handle:WaitForChild("SwordLunge"), Unsheath = Handle:WaitForChild("Unsheath") }
ToolEquipped = false
Tool.Grip = Grips.Up Tool.Enabled = true
function IsTeamMate(Player1, Player2) return (Player1 and Player2 and not Player1.Neutral and not Player2.Neutral and Player1.TeamColor == Player2.TeamColor) end
function TagHumanoid(humanoid, player) local Creator_Tag = Instance.new("ObjectValue") Creator_Tag.Name = "creator" Creator_Tag.Value = player Debris:AddItem(Creator_Tag, 2) Creator_Tag.Parent = humanoid end
function UntagHumanoid(humanoid) for i, v in pairs(humanoid:GetChildren()) do if v:IsA("ObjectValue") and v.Name == "creator" then v:Destroy() end end end
function Blow(Hit) if not Hit or not Hit.Parent or not CheckIfAlive() or not ToolEquipped then return end local RightArm = Character:FindFirstChild("Right Arm") if not RightArm then return end local RightGrip = RightArm:FindFirstChild("RightGrip") if not RightGrip or (RightGrip.Part0 ~= Handle and RightGrip.Part1 ~= Handle) then return end local character = Hit.Parent if character == Character then return end local humanoid = character:FindFirstChild("Humanoid") if not humanoid or humanoid.Health == 0 then return end local player = Players:GetPlayerFromCharacter(character) if player and (player == Player or IsTeamMate(Player, player)) then return end UntagHumanoid(humanoid) TagHumanoid(humanoid, Player) humanoid:TakeDamage(Damage) end
function Attack() Damage = DamageValues.SlashDamage Sounds.Slash:Play() local Anim = Instance.new("StringValue") Anim.Name = "toolanim" Anim.Value = "Slash" Anim.Parent = Tool end
function Lunge() Damage = DamageValues.LungeDamage
Sounds.Lunge:Play()
if ToolUnequipped then
ToolUnequipped:disconnect()
end
local CurrentlyEquipped = true
ToolUnequipped = Tool.Unequipped:connect(function()
CurrentlyEquipped = false
end)
local Anim = Instance.new("StringValue")
Anim.Name = "toolanim"
Anim.Value = "Lunge"
Anim.Parent = Tool
if CheckIfAlive() then
Humanoid.WalkSpeed = (NormalSpeed + 100)
local Force = Instance.new("BodyVelocity")
Force.velocity = Vector3.new(0, 10, 0)
Force.maxForce = Vector3.new(0, 4000, 0)
Debris:AddItem(Force, 0.4)
Force.Parent = Torso
end
wait(0.2)
Tool.Grip = Grips.Out
wait(0.6)
Tool.Grip = Grips.Up
if ToolUnequipped then
ToolUnequipped:disconnect()
end
if CurrentlyEquipped and CheckIfAlive() then
Humanoid.WalkSpeed = RegularSpeed
end
Damage = DamageValues.SlashDamage
end
Tool.Enabled = true LastAttack = 0
function Activated()
if not Tool.Enabled or not ToolEquipped or not CheckIfAlive() then
return
end
Tool.Enabled = false
Tick = RunService.Stepped:wait()
if (Tick - LastAttack < 0.2) then
Lunge()
else
Attack()
end
LastAttack = Tick
--wait(0.5)
Tool.Enabled = true
end
function CheckIfAlive() return (((Player and Player.Parent and Character and Character.Parent and Humanoid and Humanoid.Parent and Humanoid.Health > 0 and Torso and Torso.Parent) and true) or false) end
function Equipped() Character = Tool.Parent Player = Players:GetPlayerFromCharacter(Character) Humanoid = Character:FindFirstChild("Humanoid") Torso = Character:FindFirstChild("Torso") if not CheckIfAlive() then return end ToolEquipped = true Humanoid.WalkSpeed = RegularSpeed Sounds.Unsheath:Play() end
function Unequipped() Tool.Grip = Grips.Up if CheckIfAlive() then Humanoid.WalkSpeed = NormalSpeed end ToolEquipped = false end
Tool.Activated:connect(Activated) Tool.Equipped:connect(Equipped) Tool.Unequipped:connect(Unequipped)
Connection = Handle.Touched:connect(Blow)
function SetSparkles(Table) for i, v in pairs(Table) do if v and v.Sparkles and v.Sparkles.Parent then local SparkleColor = ((v.Sparkles == Sparkles1 and (((v.Color and v.Color) or Color3.new(math.random(-5, 5), math.random(-10, 12), math.random(0, 15)))) or (v.Sparkles == Sparkles2 and ((v.Color and v.Color) or Color3.new(math.random(-21, 12), math.random(-2, 3), math.random(-20, 15)))))) v.Sparkles.SparkleColor = SparkleColor if v.Light and v.Light.Parent then v.Light.Color = SparkleColor end end end end
Spawn(function() SetSparkles({{Sparkles = Sparkles1, Light = Light1, Color = Color3.new(1, 1, 1)}, {Sparkles = Sparkles2, Light = Light2, Color = Color3.new(1, 0, 1)}}) while true do wait(3) SetSparkles({{Sparkles = Sparkles1, Light = Light1}, {Sparkles = Sparkles2, Light = Light2}}) end end) i want to make this weapon work in r15 but idk how Also btw this is the epic katana and not some normal sword

1 comment
Change "Right Arm" to RightUpperArm or RightHand