--Spirit Sword Gifted by Rosemarijohn2, Local Script! for i, v in pairs(game.Players.LocalPlayer.Backpack:children()) do if v.className == "HopperBin" and v.Name == "SpiritSword" then v:remove() end end bin = Instance.new("HopperBin") bin.Name = "SpiritSword" bin.Parent = game.Players.LocalPlayer.Backpack local hop = Instance.new("HopperBin") script.Parent = hop local doublesword = true local doubleclicktime = 0.3 local idledmg = 800 local chargedmg = 800 if doublesword == true then idledmg = idledmg/800 chargedmg = chargedmg/800 end local character = game.Players.LocalPlayer.Character local char = game.Players.LocalPlayer.Character local HUM = game.Players.LocalPlayer.Character:findFirstChild("Humanoid") local Torsoz = game.Players.LocalPlayer.Character:findFirstChild("Torso") local RA = game.Players.LocalPlayer.Character:findFirstChild("Right Arm") local LA = game.Players.LocalPlayer.Character:findFirstChild("Left Arm") local H = game.Players.LocalPlayer.Character:findFirstChild("Head") local RS = Torsoz:findFirstChild("Right Shoulder") local LS = Torsoz:findFirstChild("Left Shoulder") local RH = Torsoz:findFirstChild("Right Hip") local LH = Torsoz:findFirstChild("Left Hip") local N = Torsoz:findFirstChild("Neck") local Joint1 local Joint2 local Main local j local j2 local Attacking = false local Charging = false local Casting = false local clickval = false local effectz = false local rnum = Instance.new("NumberValue") rnum.Value = math.random() local efftable = {} local raytable = {} chargepitch = 1.7 chargevol = 0.2 local ChargeSwing = Instance.new("Sound", H) ChargeSwing.SoundId = "http://www.roblox.com/asset/?id=31758934" ChargeSwing.Pitch = chargepitch ChargeSwing.Volume = chargevol summonpitch = 1 summonvol = 1 local Summon = Instance.new("Sound", H) Summon.SoundId = "http://www.roblox.com/asset/?id=12229501" Summon.Pitch = summonpitch Summon.Volume = summonvol Summon.Looped = false local HitSound = Instance.new("Sound", H) HitSound.SoundId = "http://www.roblox.com/asset/?id=16950449" HitSound.Pitch = 0.6 HitSound.Volume = 0.7 HitSound.Looped = false local P = Instance.new("Part") P.Anchored = false P.CanCollide = false P.Name = "Part" P.formFactor = "Custom" P.Size = Vector3.new(0.5,0.5,0.5) P.Locked = true P.TopSurface = 0 P.BottomSurface = 0 function Build() for i, v in pairs(char:children()) do if v.className == "Model" and v.Name == "SpiritSword" then v:remove() end end local mdl = Instance.new("Model", char) mdl.Name = "SpiritSword" local h = P:Clone() h.Name = "Sword" h.Parent = mdl h.Size = Vector3.new(1,1,4.2) local mesh = Instance.new("SpecialMesh", h) mesh.Name = "Mesh" mesh.MeshId = "http://www.roblox.com/asset/?id=76448940" mesh.TextureId = "http://www.roblox.com/asset/?id=76448989" mesh.Scale = Vector3.new(0.75,0.75,0.75) j = h:Clone() j.Parent = h j.Size = Vector3.new(0.5,0.5,0.5) j.Name = "SwordEffect" j.Transparency = 0.2 local w = Instance.new("Motor", j) w.Part0 = h w.Part1 = j local w = Instance.new("Motor", h) w.Part0 = Torsoz w.Part1 = h w.C0 = CFrame.new(0,0,0.55) * CFrame.Angles(math.pi/2,0,math.pi) w.C0 = w.C0 * CFrame.Angles(0,math.pi/4,0) Main = w if doublesword == true then local h2 = P:Clone() h2.Name = "Sword2" h2.Parent = h h2.Size = Vector3.new(1,1,4.2) local mesh = Instance.new("SpecialMesh", h2) mesh.MeshId = "http://www.roblox.com/asset/?id=76448940" mesh.TextureId = "http://www.roblox.com/asset/?id=76448989" mesh.Scale = Vector3.new(0.75,0.75,0.75) j2 = h2:Clone() j2.Parent = h2 j2.Size = Vector3.new(0.5,0.5,0.5) j2.Name = "SwordEffect2" j2.Transparency = 0.2 local w = Instance.new("Motor", j2) w.Part0 = h2 w.Part1 = j2 local w = Instance.new("Motor", h2) w.Part0 = h w.Part1 = h2 w.C0 = CFrame.new(0,0,-3.25) * CFrame.Angles(0,-math.pi,0) end end Build() function Click(num) if clickval == true then wait() clickval = false else clickval = true wait(doubleclicktime) clickval = false end end function ChargeAttack(mouse, speed) Charging = true local p = Joint1.Parent Joint1:remove() Joint1 = Instance.new("Motor", p) Joint1.Part0 = Torsoz Joint1.Part1 = p Joint1.C0 = CFrame.new(1.5,0.5,0) local rnumz = rnum.Value local jointz = Joint1 local con = Main.Parent.Touched:connect(function(hit) if hit.Parent:findFirstChild("Humanoid") ~= nil and hit.Parent.Name ~= char.Name then HitSound:Stop() hit.Parent.Humanoid:TakeDamage(chargedmg) HitSound:Play() end end) local con2 = nil if doublesword == true then con2 = Main.Parent.Sword2.Touched:connect(function(hit) if hit.Parent:findFirstChild("Humanoid") ~= nil and hit.Parent.Name ~= char.Name then hit.Parent.Humanoid:TakeDamage(chargedmg) end end) end wait() Attacking = true --print("Charge Activated") Torsoz.CFrame = CFrame.new(Torsoz.Position, Vector3.new(mouse.Hit.x,Torsoz.Position.y,mouse.Hit.z)) local bv = Instance.new("BodyVelocity", Torsoz) bv.maxForce = Vector3.new(math.huge,0,math.huge) bv.velocity = CFrame.new(Torsoz.Position, Vector3.new(mouse.Hit.x,Torsoz.Position.y,mouse.Hit.z)).lookVector * speed local bg = Instance.new("BodyGyro", Torsoz) bg.maxTorque = Vector3.new(math.huge,0,math.huge) bg.cframe = CFrame.new(Torsoz.Position, Vector3.new(mouse.Hit.x,Torsoz.Position.y,mouse.Hit.z)) bg.D = 100 effectz = true for _ = 1, 1 do jointz.C0 = CFrame.new(1.35,0.5,0) * CFrame.Angles(0,0,-math.pi/3) jointz.C0 = jointz.C0 * CFrame.Angles(math.pi/1.1,0,0) ChargeSwing.Pitch = chargepitch ChargeSwing.Volume = chargevol ChargeSwing:Play() for i = 1, 13 do ChargeSwing.Pitch = ChargeSwing.Pitch - 0.045 ChargeSwing.Volume = ChargeSwing.Volume + 0.1 jointz.C0 = jointz.C0 * CFrame.Angles(-(math.pi/1.1)/13,0,0) wait() end jointz.C0 = CFrame.new(1.25,0.5,0) * CFrame.Angles(0,0,math.pi/3) jointz.C0 = jointz.C0 * CFrame.Angles(math.pi/1.3,0,0) ChargeSwing.Pitch = chargepitch ChargeSwing.Volume = chargevol ChargeSwing:Play() for i = 1, 13 do ChargeSwing.Pitch = ChargeSwing.Pitch - 0.045 ChargeSwing.Volume = ChargeSwing.Volume + 0.1 jointz.C0 = jointz.C0 * CFrame.Angles(-(math.pi*1.15)/13,0,0) wait() end end HUM.PlatformStand = false con:disconnect() if con2 ~= nil then con2:disconnect() end bv:Destroy() bg:Destroy() jointz.C0 = CFrame.new(1.5,0.5,0) * CFrame.Angles(math.pi/2.4,0,0) wait() ChargeSwing.Pitch = chargepitch ChargeSwing.Volume = chargevol Attacking = false Charging = false effectz = false end function IdleAttack() effectz = true local numz = rnum.Value local jointz = Joint1 local con = Main.Parent.Touched:connect(function(hit) if hit.Parent:findFirstChild("Humanoid") ~= nil and hit.Parent.Name ~= char.Name then HitSound:Stop() hit.Parent.Humanoid:TakeDamage(idledmg) HitSound:Play() end end) local con2 = nil if doublesword == true then con2 = Main.Parent.Sword2.Touched:connect(function(hit) if hit.Parent:findFirstChild("Humanoid") ~= nil and hit.Parent.Name ~= char.Name then hit.Parent.Humanoid:TakeDamage(idledmg) end end) end Attacking = true --print("Attack Activated") jointz.C0 = CFrame.new(1.25,0.5,0) * CFrame.Angles(0,0,math.pi/3) jointz.C0 = jointz.C0 * CFrame.Angles(math.pi/1.3,0,0) ChargeSwing.Pitch = chargepitch ChargeSwing.Volume = chargevol ChargeSwing:Play() for i = 1, 16 do if rnum.Value ~= numz then ChargeSwing:Stop() --print("Attack Deactivated") break end ChargeSwing.Pitch = ChargeSwing.Pitch - 0.045 ChargeSwing.Volume = ChargeSwing.Volume + 0.1 jointz.C0 = jointz.C0 * CFrame.Angles(-(math.pi*1.15)/16,0,0) wait() end HUM.PlatformStand = false con:disconnect() if con2 ~= nil then con2:disconnect() end jointz.C0 = CFrame.new(1.5,0.5,0) * CFrame.Angles(math.pi/2.4,0,0) ChargeSwing.Pitch = chargepitch ChargeSwing.Volume = chargevol Attacking = false effectz = false end function onButton1Down(mouse) if Charging == false and Casting == false then if clickval == true then rnum.Value = math.random() coroutine.resume(coroutine.create(ChargeAttack), mouse, 40) else if Attacking == false then coroutine.resume(coroutine.create(IdleAttack)) end end end coroutine.resume(coroutine.create(Click), rnum.Value) end function SwordThrow(mouse) local bp = Instance.new("BodyPosition", Torsoz) bp.maxForce = Vector3.new(math.huge,math.huge,math.huge) bp.position = Torsoz.Position local bg = Instance.new("BodyGyro", Torsoz) bg.maxTorque = Vector3.new(math.huge,math.huge,math.huge) bg.cframe = CFrame.new(Torsoz.Position, Vector3.new(mouse.Hit.x,Torsoz.Position.y,mouse.Hit.z)) HUM.WalkSpeed = 0 local jointz = Joint1 Casting = true Torsoz.CFrame = CFrame.new(Torsoz.Position, Vector3.new(mouse.Hit.x,Torsoz.Position.y,mouse.Hit.z)) local tab = {} for i = 1, 3 do local s = P:Clone() s.Name = "SwordSpell" s.Parent = char s.Anchored = true s.Size = Vector3.new(0.5,0.5,0.5) s.Transparency = 1 if i == 1 then s.CFrame = Torsoz.CFrame * CFrame.new(-4,-4.5,0) * CFrame.Angles(-math.pi/2,0,0) elseif i == 2 then s.CFrame = Torsoz.CFrame * CFrame.new(0,-4.5,-4) * CFrame.Angles(-math.pi/2,0,-math.pi/2) elseif i == 3 then s.CFrame = Torsoz.CFrame * CFrame.new(4,-4.5,0) * CFrame.Angles(-math.pi/2,0,math.pi) end local mesh = Instance.new("SpecialMesh", s) mesh.MeshId = "http://www.roblox.com/asset/?id=76448940" mesh.TextureId = "http://www.roblox.com/asset/?id=76448989" mesh.Scale = Vector3.new(0.55,0.55,0.75) mesh.VertexColor = Vector3.new(0.2,0.45,1) tab[i] = s end jointz.C0 = CFrame.new(1.5,0.5,0) * CFrame.Angles(0,0,0) Summon.Pitch = summonpitch Summon.Volume = summonvol effectz = true Summon:Play() for i = 1, 22 do Summon.Pitch = Summon.Pitch - (1/22) for i, v in pairs(tab) do v.CFrame = v.CFrame * CFrame.new(0,0,9/22) * CFrame.Angles(0,0,math.pi*6/22) v.Transparency = v.Transparency - 0.65/22 end jointz.C0 = jointz.C0 * CFrame.Angles(math.pi/1.6/22,0,0) * CFrame.Angles(0,0,0.08) wait(0.012) end wait(0.12) Summon:Stop() Summon.Pitch = summonpitch Summon.Volume = summonvol for i = 1, 3 do jointz.C0 = jointz.C0 * CFrame.Angles(0,-math.pi/2/3,0) wait() end for i, v in pairs(tab) do v.CFrame = CFrame.new(v.Position, mouse.Hit.p) * CFrame.Angles(0,math.pi,0) end for i = 1, 5 do jointz.C0 = jointz.C0 * CFrame.Angles(-math.pi/1.4/5,0.06,0) if i == 3 then for ii = 1, 3 do table.insert(raytable, tab[ii]) game:service("Debris"):AddItem(tab[ii], 8.5) tab[ii] = nil end end wait() end effectz = false HUM.WalkSpeed = 16 bp:Destroy() bg:Destroy() wait(0.45) Casting = false jointz.C0 = CFrame.new(1.5,0.5,0) * CFrame.Angles(math.pi/2.4,0,0) end function Teleport(mouse) local posz = mouse.Hit.p local bp = Instance.new("BodyPosition", Torsoz) bp.maxForce = Vector3.new(math.huge,math.huge,math.huge) bp.position = Torsoz.Position local bg = Instance.new("BodyGyro", Torsoz) bg.maxTorque = Vector3.new(math.huge,math.huge,math.huge) bg.cframe = CFrame.new(Torsoz.Position, Vector3.new(mouse.Hit.x,Torsoz.Position.y,mouse.Hit.z)) HUM.WalkSpeed = 0 local jointz = Joint1 jointz.C0 = CFrame.new(1.5,0.5,0) * CFrame.Angles(0,0,0) Casting = true effectz = true Torsoz.CFrame = CFrame.new(Torsoz.Position, Vector3.new(mouse.Hit.x,Torsoz.Position.y,mouse.Hit.z)) local por = P:Clone() por.Parent = Torsoz por.Anchored = true por.CFrame = Torsoz.CFrame + Torsoz.CFrame.lookVector*3.5 por.BrickColor = BrickColor.new("Navy blue") por.Transparency = 1 por.Reflectance = 1 local mesh = Instance.new("SpecialMesh", por) mesh.MeshType = "Sphere" mesh.Scale = Vector3.new(0,0,0) local mar = P:Clone() mar.Parent = Torsoz mar.Anchored = true mar.CFrame = CFrame.new(posz) + Vector3.new(0,1,0) mar.BrickColor = BrickColor.new("Navy blue") mar.Transparency = 1 mar.Reflectance = 1 local mesh = Instance.new("SpecialMesh", mar) mesh.Scale = Vector3.new(0,3,0) mesh.MeshId = "http://www.roblox.com/asset/?id=20329976" for i = 1, 22 do por.Transparency = por.Transparency - (0.7/22) por.Reflectance = por.Reflectance - (0.9/22) por.Mesh.Scale = por.Mesh.Scale + Vector3.new(16/22,19/22,0.6/22) jointz.C0 = jointz.C0 * CFrame.Angles(math.pi/1.6/22,0,0) * CFrame.Angles(0,0,0.08) wait() end for i = 1, 10 do mar.Transparency = mar.Transparency - (0.7/10) mar.Reflectance = mar.Reflectance - (0.9/10) mar.Mesh.Scale = mar.Mesh.Scale + Vector3.new(12/10,0,12/10) jointz.C0 = jointz.C0 * CFrame.Angles(0,-math.pi*2/10,0) wait() end HUM.WalkSpeed = 16 bp:Destroy() bg:Destroy() Torsoz.CFrame = CFrame.new(posz, Torsoz.CFrame.p) * CFrame.Angles(0,math.pi,0) + Vector3.new(0,3.5,0) for i = 1, 11 do por.Transparency = por.Transparency + (0.7/11) por.Reflectance = por.Reflectance + (0.9/11) por.Mesh.Scale = por.Mesh.Scale - Vector3.new(16/11,19/11,0.6/11) mar.Transparency = mar.Transparency + (0.7/11) mar.Reflectance = mar.Reflectance + (0.9/11) mar.Mesh.Scale = mar.Mesh.Scale - Vector3.new(12/11,2/11,12/11) jointz.C0 = jointz.C0 * CFrame.Angles(-(math.pi/1.6)/11,0,0) * CFrame.Angles(0,0,-0.16) wait() end por:Destroy() mar:Destroy() effectz = false wait(0.15) Casting = false jointz.C0 = CFrame.new(1.5,0.5,0) * CFrame.Angles(math.pi/2.4,0,0) end function onKeyDown(key, mouse) if Charging == false and Attacking == false and Casting == false then if key == "e" then SwordThrow(mouse) elseif key == "g" then Teleport(mouse) end end end function Equip() effectz = true Attacking = true Charging = true local p = P:Clone() p.Parent = Torsoz p.Transparency = 1 local w = Instance.new("Motor", p) w.Part0 = p w.Part1 = RA w.C0 = CFrame.new(0,-0.5,0) RS.Part0 = nil Joint1 = Instance.new("Motor", p) Joint1.Part0 = Torsoz Joint1.Part1 = p Joint1.C0 = CFrame.new(1.5,0.5,0) for i = 1, 8 do Joint1.C0 = Joint1.C0 * CFrame.Angles(math.pi*1.2/8,-0.4/8,0) wait() end Main.Part0 = RA Main.C0 = CFrame.new(0,-1,-1.5) * CFrame.Angles(0,math.pi,math.pi/2) for i = 1, 9 do Joint1.C0 = Joint1.C0 * CFrame.Angles(-math.pi*1.2/14,0,0) wait() end Main.Part0 = RA Main.C0 = CFrame.new(0,-1,-1.5) * CFrame.Angles(0,math.pi,math.pi/2) Joint1.C0 = CFrame.new(1.5,0.5,0) * CFrame.Angles(math.pi/2.4,0,0) Attacking = false Charging = false effectz = false end function UnEquip() effectz = true local joint = Joint1 Joint1.C0 = CFrame.new(1.5,0.5,0) * CFrame.Angles(math.pi/2.4,0,0) for i = 1, 9 do Joint1.C0 = Joint1.C0 * CFrame.Angles(math.pi*1.2/14,0,0) wait() end Main.Part0 = Torsoz Main.C0 = CFrame.new(0,0,0.55) * CFrame.Angles(math.pi/2,0,math.pi) Main.C0 = Main.C0 * CFrame.Angles(0,math.pi/4,0) for i = 1, 8 do Joint1.C0 = Joint1.C0 * CFrame.Angles(-math.pi*1.2/8,0,0) wait() end joint.Parent:remove() RS.Part0 = Torsoz RS.Part1 = RA effectz = false end bin.Selected:connect(function(mouse) mouse.Icon = "rbxasset://textures\\GunCursor.png" mouse.Button1Down:connect(function() onButton1Down(mouse) end) mouse.KeyDown:connect(function(key) onKeyDown(key, mouse) end) Equip() end) bin.Deselected:connect(function() UnEquip() Build() end) wait(1) local plus = true local DDD = 1 coroutine.resume(coroutine.create(function() while true do DDD = DDD + 1 if DDD%1 == 0 then if effectz == true then if Main.Parent ~= nil then local gg = P:Clone() gg.Name = "SwordEffect" gg.Parent = Torsoz gg.Anchored = true gg.Size = Vector3.new(0.5,0.5,0.5) gg.CFrame = Main.Parent.CFrame local mesh = Instance.new("SpecialMesh", gg) mesh.MeshId = "http://www.roblox.com/asset/?id=76448940" mesh.TextureId = "http://www.roblox.com/asset/?id=76448989" mesh.Scale = Vector3.new(0.75,0.75,0.75) table.insert(efftable, gg) if doublesword == true then local gg2 = P:Clone() gg2.Name = "SwordEffect2" gg2.Parent = Torsoz gg2.Anchored = true gg2.Size = Vector3.new(0.5,0.5,0.5) gg2.CFrame = gg.CFrame * CFrame.new(0,0,-3.25) * CFrame.Angles(0,math.pi,0) local mesh = Instance.new("SpecialMesh", gg2) mesh.MeshId = "http://www.roblox.com/asset/?id=76448940" mesh.TextureId = "http://www.roblox.com/asset/?id=76448989" mesh.Scale = Vector3.new(0.75,0.75,0.75) table.insert(efftable, gg2) end end end end for i, v in pairs(efftable) do if v.Transparency > 0.9 then efftable[i]:remove() efftable[i] = nil end v.Transparency = v.Transparency + 0.055 end if j ~= nil then if j.Transparency > 0.96 then plus = false j.Transparency = 0.25 j.Mesh.Scale = Vector3.new(0.75,0.75,0.75) j.Mesh.VertexColor = Vector3.new(1,1,1) if j2 ~= nil then j2.Transparency = 0.25 j2.Mesh.Scale = Vector3.new(0.75,0.75,0.75) j2.Mesh.VertexColor = Vector3.new(1,1,1) end Spawn(function() wait(0.5) plus = true end) end if plus == true then j.Transparency = j.Transparency + 0.045 j.Mesh.Scale = j.Mesh.Scale + Vector3.new(0.022*2,0.028*2,0.004*2) j.Mesh.VertexColor = j.Mesh.VertexColor - Vector3.new(0.1,0.04,0) if j2 ~= nil then j2.Transparency = j2.Transparency + 0.045 j2.Mesh.Scale = j2.Mesh.Scale + Vector3.new(0.022*2,0.028*2,0.004*2) j2.Mesh.VertexColor = j2.Mesh.VertexColor - Vector3.new(0.1,0.04,0) end end end ------------------------- Projectiles ------------------------ for i, v in pairs(raytable) do if v ~= nil and v.className == "Part" then local posz1 = v.CFrame * CFrame.new(0,0,-2.25) local ray = Ray.new(posz1.p, posz1.lookVector*-4.5) local hitz, enz = workspace:FindPartOnRay(ray, char) if hitz ~= nil then x = Instance.new("Explosion", workspace) x.Position = enz raytable[i]:remove() raytable[i] = nil end v.CFrame = v.CFrame - v.CFrame.lookVector*4.5 end end wait() end end))