158 lines
3.7 KiB
Lua
158 lines
3.7 KiB
Lua
--Made by Luckymaxer
|
|
|
|
Tool = script.Parent
|
|
Handle = Tool:WaitForChild("Handle")
|
|
|
|
Sound = Handle:WaitForChild("Sound")
|
|
|
|
Players = game:GetService("Players")
|
|
Debris = game:GetService("Debris")
|
|
|
|
Debounce = false
|
|
|
|
Tool.Enabled = true
|
|
|
|
local function spawnSound(s)
|
|
local sound = s:Clone()
|
|
sound.Parent = s.Parent
|
|
sound:Play()
|
|
sound.Ended:Connect(function ()
|
|
sound:Destroy()
|
|
end)
|
|
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 FindCharacterAncestor(Parent)
|
|
if Parent and Parent ~= game:GetService("Workspace") then
|
|
local humanoid = Parent:FindFirstChild("Humanoid")
|
|
if humanoid then
|
|
return Parent, humanoid
|
|
else
|
|
return FindCharacterAncestor(Parent.Parent)
|
|
end
|
|
end
|
|
return nil
|
|
end
|
|
|
|
function Blow(Hit)
|
|
RightGrip = RightGrip:Clone()
|
|
if Hit and Hit.Parent then
|
|
local humanoid = Hit.Parent:FindFirstChild("Humanoid")
|
|
if humanoid == Humanoid then
|
|
return
|
|
end
|
|
if humanoid then
|
|
Propel(Hit)
|
|
UntagHumanoid(humanoid)
|
|
TagHumanoid(humanoid, Player)
|
|
humanoid.Health = humanoid.Health - 49
|
|
else
|
|
Explode(Hit)
|
|
end
|
|
end
|
|
end
|
|
|
|
function Propel(Part)
|
|
if not Part or not Part.Parent or Part.Anchored then
|
|
return
|
|
end
|
|
local character, humanoid = FindCharacterAncestor(Part)
|
|
if character == Character then
|
|
return
|
|
end
|
|
local Direction = (Part.Position - Torso.Position).unit
|
|
Direction = Direction + Vector3.new(0, 1, 0)
|
|
Direction = Direction * 200
|
|
Part.Velocity = Part.Velocity + Direction
|
|
end
|
|
|
|
function Explode(Part)
|
|
if not Part or not Part.Parent or Debounce then
|
|
return
|
|
end
|
|
Debounce = true
|
|
local Direction = (Part.Position - Torso.Position).unit
|
|
local Position = Direction * 12 + Torso.Position
|
|
local Explosion = Instance.new("Explosion")
|
|
Explosion.ExplosionType = Enum.ExplosionType.NoCraters
|
|
Explosion.BlastRadius = 4
|
|
Explosion.BlastPressure = 1
|
|
Explosion.Position = Position
|
|
Explosion.Hit:connect(function(Part, Distance)
|
|
Propel(Part)
|
|
end)
|
|
local owner = Instance.new("ObjectValue")
|
|
owner.Name = "Owner"
|
|
owner.Value = Player
|
|
owner.Parent = Explosion
|
|
Explosion.Parent = game:GetService("Workspace")
|
|
wait(0.1)
|
|
local GripClone = RightGrip:Clone()
|
|
GripClone.Parent = RightArm
|
|
Debounce = false
|
|
end
|
|
|
|
function Attack()
|
|
spawnSound(Sound)
|
|
local Anim = Instance.new("StringValue")
|
|
Anim.Name = "toolanim"
|
|
Anim.Value = "Slash"
|
|
Debris:AddItem(Anim, 2)
|
|
Anim.Parent = Tool
|
|
end
|
|
|
|
function Lunge()
|
|
Attack()
|
|
local Force = Instance.new("BodyPosition")
|
|
Force.maxForce = Vector3.new(1e+005, 1e+004, 1e+005)
|
|
local Direction = Humanoid.targetPoint
|
|
if ((Direction - Handle.Position).magnitude > 15) then
|
|
return
|
|
end
|
|
Force.position = Direction
|
|
Debris:AddItem(Force, 0.25)
|
|
Force.Parent = Handle
|
|
end
|
|
|
|
function Activated()
|
|
if not Tool.Enabled or not Humanoid.Parent or Humanoid.Health == 0 or not Torso.Parent or not RightArm.Parent or not RightGrip then
|
|
return
|
|
end
|
|
Tool.Enabled = false
|
|
connection = Handle.Touched:connect(Blow)
|
|
Lunge()
|
|
wait(0.4)
|
|
connection:disconnect()
|
|
Tool.Enabled = true
|
|
end
|
|
|
|
function Equipped()
|
|
Character = Tool.Parent
|
|
Player = Players:GetPlayerFromCharacter(Character)
|
|
Humanoid = Character:FindFirstChild("Humanoid")
|
|
Torso = Character:FindFirstChild("Torso")
|
|
RightArm = Character:FindFirstChild("Right Arm")
|
|
if RightArm then
|
|
RightGrip = RightArm:WaitForChild("RightGrip",1)
|
|
end
|
|
if not Player or not Humanoid or Humanoid.Health == 0 or not Torso or not RightArm or not RightGrip then
|
|
return
|
|
end
|
|
end
|
|
|
|
Tool.Activated:connect(Activated)
|
|
Tool.Equipped:connect(Equipped) |