-- 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(1,1,3) handle.Name = "Handle" local mesh = Instance.new("SpecialMesh",handle) mesh.Scale = Vector3.new(1.9,1.9,1.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=146163534" 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 =