Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Initial stuff
- math.randomseed(tick())
- -- Wait for character
- repeat wait() until game.Players.LocalPlayer.Character ~= nil
- -- Useful shortcuts
- local plr = game:GetService("Players").LocalPlayer
- local char = plr.Character
- local plrgui = plr.PlayerGui
- local backpack = plr.Backpack
- local torso = char.Torso
- local head = char.Head
- local hum = char.Humanoid
- local larm = char["Left Arm"]
- local lleg = char["Left Leg"]
- local rarm = char["Right Arm"]
- local rleg = char["Right Leg"]
- local LS = torso["Left Shoulder"]
- local LH = torso["Left Hip"]
- local RS = torso["Right Shoulder"]
- local RH = torso["Right Hip"]
- local neck = torso.Neck
- local it = Instance.new
- local vt = Vector3.new
- local cf = CFrame.new
- local euler = CFrame.fromEulerAnglesXYZ
- local angles = CFrame.Angles
- local neckC0 = cf(0, 1, 0, -1, -0, -0, 0, 0, 1, 0, 1, 0)
- local neckC1 = cf(0, -0.5, 0, -1, -0, -0, 0, 0, 1, 0, 1, 0)
- local LSC0 = cf(-1.5,.5,0)
- local LSC1 = cf(0,.5,0)
- local RSC0 = cf(1.5,.5,0)
- local RSC1 = cf(0,.5,0)
- local LHC0 = cf(-1,-1,0,-0,-0,-1,0,1,0,1,0,0)
- local LHC1 = cf(-0.5,1,0,-0,-0,-1,0,1,0,1,0,0)
- local RHC0 = cf(1,-1,0,0,0,1,0,1,0,-1,-0,-0)
- local RHC1 = cf(0.5,1,0,0,0,1,0,1,0,-1,-0,-0)
- local RP = char.HumanoidRootPart
- local RJ = RP.RootJoint
- local RJC0 = euler(-1.57,0,3.14)
- -- Build the weapon
- local build = function()
- local model = Instance.new("Model")
- model.Name = "Cane"
- local handle = Instance.new("Part", model)
- handle.FormFactor = Enum.FormFactor.Symmetric
- handle.CanCollide = false
- handle.Size = Vector3.new(2,2,6)
- handle.Name = "Handle"
- local mesh = Instance.new("SpecialMesh",handle)
- mesh.Scale = Vector3.new(2.9,2.9,2.9)
- mesh.MeshId = "http://www.roblox.com/asset/?id=419221487"
- mesh.TextureId = "http://www.roblox.com/asset/?id=419221538"
- mesh.MeshType = Enum.MeshType.FileMesh
- return model
- end
- -- Wait for mouse
- local mouse
- while true do
- mouse = plr:GetMouse()
- if mouse then break end
- wait(.1)
- end
- -- Create welds
- local RW, LW = Instance.new("Weld",torso), Instance.new("Weld",torso)
- RW.Name = "Right Weld" LW.Name = "Left Weld"
- RW.Part0 = torso LW.Part0 = torso
- RW.C0 = RSC0 RW.C1 = RSC1 LW.C0 = LSC0 LW.C1 = LSC1
- -- Attach weapon
- local canemodel = build()
- local cane = canemodel:FindFirstChild("Handle")
- canemodel.Parent = char
- local caneweld = Instance.new("Weld", rarm)
- caneweld.Part0 = rarm
- caneweld.Part1 = cane
- caneweldC0 = caneweld.C0 * CFrame.new(0,-1,1) * CFrame.Angles(math.rad(180),0,math.rad(90))
- caneweld.C0 = caneweldC0
- -- Weapon variables
- local caneEnd = cf(-.225,0,-1.5)
- -- Sound effects
- local sounds = {}
- sounds.explosion = "http://www.roblox.com/asset/?id=1542642349"
- sounds.bewm = "http://www.roblox.com/asset/?id=0"
- sounds.slice = "http://www.roblox.com/asset/?id=1542642349"
- sounds.charge = "http://roblox.com/asset/?id=1542642349"
- sounds.sharpblast = "http://roblox.com/asset/?id=1542642349"
- sounds.woosh = "http://roblox.com/asset/?id=1542642349"
- sounds.metalhit = "http://roblox.com/asset/?id=0"
- sounds.mechblast = "http://roblox.com/asset/?id=1542642349"
- sounds.chargepulse = "http://roblox.com/asset/?id=1542642349"
- sounds.heal = "http://roblox.com/asset/?id=1542642349"
- sounds.zap = "http://roblox.com/asset/?id=0"
- sounds.powernote = "http://roblox.com/asset/?id=1542642349"
- sounds.swing = "http://roblox.com/asset/?id=1542642349"
- sounds.hit = "http://roblox.com/asset/?id=0"
- -- Base functions
- local wait = function(t)
- if t ~= nil then
- return wait(t)
- else
- local t = tick()
- game:GetService("RunService").RenderStepped:wait()
- return tick() - t, time()
- end
- end
- local nolines = function(p)
- p.TopSurface, p.BottomSurface, p.LeftSurface, p.RightSurface, p.FrontSurface, p.BackSurface = 10, 10, 10, 10, 10, 10
- end
- local part = function(formfactor,parent,reflectance,transparency,brickcolor,name,size)
- local fp = it("Part")
- fp.formFactor = formfactor
- fp.Parent = parent
- fp.Reflectance = reflectance
- fp.Transparency = transparency
- fp.CanCollide = false
- fp.Locked = true
- fp.BrickColor = brickcolor
- fp.Name = name
- fp.Size = size
- fp.Position = torso.Position
- fp.Material = "SmoothPlastic"
- fp:BreakJoints()
- nolines(fp)
- return fp
- end
- local mesh = function(instance,part,meshtype,meshid,offset,scale)
- local mesh = it(instance)
- mesh.Parent = part
- if instance == "SpecialMesh" then
- mesh.MeshType = meshtype
- if meshid ~= nil then
- mesh.MeshId = "http://www.roblox.com/asset/?id="..meshid
- end
- end
- mesh.Offset=offset
- mesh.Scale=scale
- return mesh
- end
- local weld = function(parent,part0,part1,c0)
- local weld = it("Weld")
- weld.Parent = parent
- weld.Part0 = part0
- weld.Part1 = part1
- weld.C0 = c0
- return weld
- end
- local rayCast = function(Pos, Dir, Max, Ignore) -- Origin Position , Direction, MaxDistance , IgnoreDescendants
- return game:service("Workspace"):FindPartOnRay(Ray.new(Pos, Dir.unit * (Max or 999.999)), Ignore)
- end
- local rad = function(x,y,z)
- return euler(math.rad(x or 0),math.rad(y or 0),math.rad(z or 0))
- end
- local random = function(a, b)
- local num = math.random(a*100, b*100)
- return num/100
- end
- local randomRot = function()
- return rad(random(0,360),random(0,360),random(0,360))
- end
- local sound = function(id, par, vol, pit)
- coroutine.resume(coroutine.create(function()
- local sou = Instance.new("Sound", par or workspace)
- sou.Volume = vol
- --sou.Pitch = pit or 1
- sou.SoundId = id
- wait()
- sou:play()
- game:GetService("Debris"):AddItem(sou, 6)
- end))
- end
- local damage = function(hit, minim, maxim, knockback, Type, Property, Delay, KnockbackType, incstun, stagger, staghit, ranged)
- -- Fen's nasty and messy damage function
- if hit.Parent == nil then
- return
- end
- local h = hit.Parent:FindFirstChild("Humanoid")
- for _, v in pairs(hit.Parent:children()) do
- if v:IsA("Humanoid") then
- h = v
- end
- end
- if hit.Parent.Parent:FindFirstChild("Torso") ~= nil then
- h = hit.Parent.Parent:FindFirstChild("Humanoid")
- end
- if hit.Parent.className == "Hat" then
- hit = hit.Parent.Parent:findFirstChild("Head")
- end
- if h ~= nil and hit.Parent.Name ~= char.Name and hit.Parent:FindFirstChild("Torso") ~= nil then
- if hit.Parent:findFirstChild("DebounceHit") ~= nil then
- if hit.Parent.DebounceHit.Value == true then
- return
- end
- end
- local c = Instance.new("ObjectValue")
- c.Name = "creator"
- c.Value = game:service("Players").LocalPlayer
- c.Parent = h
- game:GetService("Debris"):AddItem(c, .5)
- local Damage = 666 --random(minim, maxim)
- local blocked = false
- local enblock = nil
- local Stats = hit.Parent:findFirstChild("Stats")
- if Stats ~= nil then
- enblock = Stats:findFirstChild("Block")
- if Stats:findFirstChild("Defense") ~= nil then
- Damage = Damage / Stats.Defense.Value
- end
- if Stats:findFirstChild("Stun") ~= nil then
- Stats.Stun.Value = Stats.Stun.Value + incstun
- end
- if Stats:findFirstChild("Stagger") ~= nil then
- if stagger == true then
- Stats.Stagger.Value = true
- end
- end
- end
- if enblock ~= nil then
- if enblock.Value == true then
- blocked = true
- end
- end
- if blocked == true then
- if ranged ~= true then
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement