Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Whisland Deviate:
- -- Charges like ArmorCannon, and then gives the user a ShadowSneak-like melee.
- -- ArmorCannon-like projectiles are gradually unleashed in all 8 directions, in a random order.
- -- Holy Charmeleon Deviate:
- -- Three warnings appear on the ground. After 1 second, collidable balls drop from the sky and remain for 10 min.
- -- These instakill the user and despawn upon doing so. Other players take normal damage.
- -- Strange Souvenir Deviate:
- -- Thunder strikes in a line in front of the user.
- -- Then, eighteen bursts of classic FlashCannon, ZapCannon, and AncientPower are unleashed toward random spots.
- -- Gmax charizard Deviate:
- --
- -- SETTINGS
- -- SETTINGS
- -- melee
- local meleeBaseDMG = 30
- local chargeDuration = 1
- local size1 = Vector3.new(7, 7, 7)
- -- color and material are same as aoe cuz im lazy
- -- aoe
- local aoeBaseDMG = 30
- local radius = 18
- local transparency = 0.7
- local color = BrickColor.new("Bright orange")
- local material = "Neon"
- local size2 = Vector3.new(30, 30, 30)
- -- cannon shot
- local initProj = game:GetService("ServerStorage").Items.WhislandProjectile -- change this to the thing of your choosing
- local initProjTrail = game:GetService("ServerStorage").Items.WhislandProjectileTrail -- change this to the focusblast one probvably
- local projBaseDMG = 60
- local DamageService = require(game.ServerScriptService.Libraries.DamageService)
- -- SETTINGS
- local initBolt = game:GetService("ServerStorage").Items.BigThunderbolt
- local initXurkBolt = game:GetService("ServerStorage").Items.BlueThunderbolt
- local sizeScale = 0.9 -- This determines how big the thunderbolt ends up being.
- local offsetBy = CFrame.new(0, initBolt.Size.Y*sizeScale/2, 0)
- local ShakeEvent = game:GetService("ReplicatedStorage"):WaitForChild("ShakeEvent")
- -- Creates a ParticleEmitter that emits fire particles. Taken from TriAttack.
- local function makeFireParticles()
- local p = Instance.new("ParticleEmitter")
- p.Color = ColorSequence.new(Color3.fromRGB(255, 0, 0), Color3.fromRGB(255, 247, 0))
- p.LightEmission = 1
- p.LightInfluence = 1
- p.Orientation = Enum.ParticleOrientation.FacingCamera
- p.Size = NumberSequence.new(2.57, 0.1)
- p.Texture = "rbxassetid://5872447086"
- p.Transparency = NumberSequence.new(0.2)
- p.EmissionDirection = Enum.NormalId.Top
- p.Lifetime = NumberRange.new(2)--NumberRange.new(1)
- --p.Rate = 30
- p.Rotation = NumberRange.new(-360, 360)
- p.RotSpeed = NumberRange.new(70)
- p.Speed = NumberRange.new(4, 5)
- p.SpreadAngle = Vector2.new(360, 360)
- p.Shape = Enum.ParticleEmitterShape.Box
- p.ShapeInOut = Enum.ParticleEmitterShapeInOut.Outward
- p.ShapeStyle = Enum.ParticleEmitterShapeStyle.Volume
- p.Acceleration = Vector3.new(0, 2, 0)
- p.TimeScale = 1
- return p
- end
- -- SCRIPT
- function Whisland(...)
- local args = {...}
- local Debris = game:GetService("Debris")
- local TweenService = game:GetService("TweenService")
- local Stats = require(game.ServerScriptService.Stats)
- -- Beginning melee
- local meleeDMG = math.random(1, 10)==1 and meleeBaseDMG*2 or meleeBaseDMG
- local melee = Instance.new("Part")
- melee.Transparency, melee.CanCollide, melee.Anchored, melee.Massless, melee.Size, melee.BrickColor, melee.Material =
- 0, false, false, true, size1, color, material
- melee.CFrame = args[1].Character.Torso.CFrame
- local meleeParticles = makeFireParticles()
- meleeParticles.Lifetime = NumberRange.new(0.3, 0.45)
- meleeParticles.Size = NumberSequence.new(10, 0.1)
- meleeParticles.Transparency = NumberSequence.new({NumberSequenceKeypoint.new(0, 1),
- NumberSequenceKeypoint.new(0.1, 0.8),
- NumberSequenceKeypoint.new(0.2, 0),
- NumberSequenceKeypoint.new(0.9, 0),
- NumberSequenceKeypoint.new(1, 1)})
- meleeParticles.Speed = NumberRange.new(0)
- meleeParticles.Rate = 0
- meleeParticles.LockedToPart = true
- meleeParticles.Parent = args[1].Character.Torso
- local weld = Instance.new("WeldConstraint")
- weld.Part0, weld.Part1 = args[1].Character.Torso, melee
- weld.Parent = melee
- Debris:AddItem(melee, chargeDuration+0.3)
- DamageService:RegisterWeaponPart(args[1], {melee}, meleeDMG)
- TweenService:Create(melee, TweenInfo.new(chargeDuration*2/3), {Transparency = 1}):Play()
- melee.Parent = workspace
- -- trolling
- for i = 0, chargeDuration, 0.1 do
- meleeParticles:Emit(1)
- meleeParticles.Size = NumberSequence.new(2.57+4*i, 0.1)
- task.wait(0.1)
- end
- -- The melee is destroyed on its own, so don't worry.
- -- The lifetime is slightly longer than the desired one because despawning parts are buggy with this damage system.
- -- (eg hitting the end of a melee)
- -- AoE
- coroutine.wrap(function()
- meleeParticles.LockedToPart = false
- meleeParticles.Lifetime = NumberRange.new(1)
- meleeParticles.Size = NumberSequence.new(5, 0.1)
- meleeParticles.Transparency = NumberSequence.new(0.2)
- meleeParticles.Speed = NumberRange.new(6, 25)
- meleeParticles.Rate = 0
- task.wait(0.2)
- meleeParticles:Emit(50)
- Debris:AddItem(meleeParticles, 15)
- end)()
- local aoePart = Instance.new("Part")
- aoePart.CanCollide, aoePart.Anchored, aoePart.CFrame = false, true, args[1].Character.Torso.CFrame
- aoePart.Transparency, aoePart.Size, aoePart.Material, aoePart.BrickColor =
- transparency, size2, material, color
- local size = aoePart.Size
- local endSize = Vector3.new(size.X*1.2+1.2, size.Y*1.2+1.2, size.Z*1.2+1.2)
- local SizeMod = TweenService:Create(aoePart, TweenInfo.new(3.7, Enum.EasingStyle.Quint), {Size = endSize, Transparency = 1})
- SizeMod.Completed:Connect(function() aoePart:Destroy() end)
- SizeMod:Play()
- DamageService:RegisterRangeDamage(args[1], radius, aoeBaseDMG) -- aoes have 0 crit rate
- aoePart.Parent = workspace
- -- Screenshake from AoE
- local myPos = args[1].Character.Torso.Position
- for i, player in pairs(game.Players:GetPlayers()) do
- if player.Character and player.Character:FindFirstChild("Torso") then
- if (player.Character.Torso.Position-myPos).Magnitude <= 60 then
- ShakeEvent:FireClient(player, 2.5, 400) -- first number is how long the shake lasts, second is strength
- end
- end
- end
- local melee = game.ServerStorage.Items.WhislandMelee:Clone()
- game:GetService("Debris"):AddItem(melee, 10)
- melee.CFrame = args[1].Character.Torso.CFrame
- local weld = Instance.new("WeldConstraint")
- weld.Part0, weld.Part1, weld.Parent = melee, args[1].Character.Torso, melee
- melee.Parent = workspace
- DamageService:RegisterWeaponPart(args[1], {melee}, 50)
- task.wait(0.1)
- melee.whiscash:Play()
- local directions = {1, 2, 3, 4, 5, 6, 7, 8}
- local myLevel = Stats.GetStat(args[1], args[1].Character.BaseStat.Value)
- for i = 1, 8 do
- args[1].Character.Humanoid.WalkSpeed = args[1].Character.BaseSpeed.Value*2 * (myLevel*0.0035 + 0.25)
- coroutine.wrap(function()
- -- Projectile
- local projDamage = math.random(1, 10)==1 and projBaseDMG*2 or projBaseDMG
- local proj = initProj:Clone()
- proj.CanCollide, proj.Anchored = false, false
- proj.CFrame = args[1].Character.Torso.CFrame*CFrame.Angles(
- math.rad(math.random(0, 360)), math.rad(math.random(0, 360)), math.rad(math.random(0, 360)))
- local velocity = Instance.new("BodyVelocity")
- local generated = math.random(1, #directions)
- velocity.MaxForce, velocity.Velocity =
- Vector3.new(math.huge, math.huge, math.huge), (args[1].Character.Torso.CFrame*CFrame.Angles(0, math.rad(45*directions[generated]), 0)).LookVector*90
- table.remove(directions, generated)
- velocity.Parent = proj
- local att = Instance.new("Attachment", proj)
- local av = Instance.new("AngularVelocity")
- av.Attachment0, av.MaxTorque, av.AngularVelocity =
- att, math.huge, Vector3.new((math.random()*4-2)*math.pi, (math.random()*4-2)*math.pi, (math.random()*4-2)*math.pi)
- av.Parent = proj
- DamageService:RegisterWeaponPart(args[1], {proj}, projDamage, function(hit)
- local hitTorso
- if hit:IsA("Player") then
- hitTorso = hit.Character.Torso
- else
- hitTorso = hit.Torso
- end
- local sickParticles = makeFireParticles()
- sickParticles.Speed = NumberRange.new(6, 25)
- sickParticles.Rate = 0
- sickParticles.Parent = hitTorso
- task.wait(0.2)
- sickParticles:Emit(40)
- Debris:AddItem(sickParticles, 15)
- task.wait(0.5)
- end)
- proj.Parent = workspace
- local timeBetweenTrail = 0.5
- for i = 1, 15, timeBetweenTrail do
- local sillyTrail = initProjTrail:Clone()
- sillyTrail.CanCollide, sillyTrail.Anchored = false, true
- sillyTrail.CFrame = proj.CFrame
- local disappearing = TweenService:Create(sillyTrail, TweenInfo.new(1), {Transparency = 1, Size = sillyTrail.Size*1.3})
- disappearing.Completed:Connect(function() sillyTrail:Destroy() end)
- disappearing:Play()
- sillyTrail.Parent = workspace
- task.wait(timeBetweenTrail)
- end
- proj:Destroy()
- end)()
- task.wait(0.25)
- end
- weld:Destroy()
- melee.Transparency = 1
- melee.ParticleEmitter.Rate = 0
- args[1].Character.Humanoid.WalkSpeed = args[1].Character.BaseSpeed.Value * (myLevel*0.0025 + 0.25)
- task.wait(5)
- melee:Destroy()
- end
- function HolyCharmeleon(...)
- local args = {...}
- local initTarget = game.ServerStorage.Items.HolyCharmeleonTarget
- local initBall = game.ServerStorage.Items.HolyCharmeleonSphere
- local startAt = args[1].Character.Torso.CFrame*CFrame.new(0, -2.5, 0)
- for offset = 14, -14, -14 do
- coroutine.wrap(function()
- local target = initTarget:Clone()
- target.CFrame = startAt*CFrame.new(0, 0, offset)
- target.Parent = workspace
- task.wait(0.1)
- target.wailord:Play()
- task.wait(0.9)
- local ball = initBall:Clone()
- ball.CFrame = target.CFrame*CFrame.new(0, 20, 0)
- game:GetService("Debris"):AddItem(ball, 6000)
- local explosion = Instance.new("Explosion")
- explosion.Position = target.Position+Vector3.new(0, 20, 0)
- game:GetService("Debris"):AddItem(explosion, 5)
- explosion.Parent = workspace
- DamageService:RegisterWeaponPart(nil, {ball}, 100, function(hit)
- if hit==args[1] then
- args[1].Character.Humanoid.Health=0
- end
- end)
- local connections = {}
- connections[1] = args[1].Character.Humanoid.Died:Connect(function()
- ball:Destroy()
- for i, connection in pairs(connections) do connection:Disconnect() end
- end)
- connections[2] = args[1]:GetPropertyChangedSignal("Parent"):Connect(function()
- ball:Destroy()
- for i, connection in pairs(connections) do connection:Disconnect() end
- end)
- ball.Parent = workspace
- target:Destroy()
- end)()
- task.wait(0.5)
- end
- end
- function StrangeSouvenir(...)
- local args = {...}
- local Stats = require(game.ServerScriptService.Stats)
- for j = -45, 45, 45 do
- coroutine.wrap(function()
- for i = -3, -103, -10 do
- coroutine.wrap(function()
- local particles = Instance.new("ParticleEmitter")
- particles.Brightness = 1
- particles.Color = ColorSequence.new(Color3.fromRGB(255, 232, 140))
- particles.LightEmission = 1
- particles.Orientation = Enum.ParticleOrientation.VelocityPerpendicular
- particles.Size = NumberSequence.new({
- NumberSequenceKeypoint.new(0, 0),
- NumberSequenceKeypoint.new(0.7, 10),
- NumberSequenceKeypoint.new(1, 10)})
- particles.Texture = "rbxassetid://1057939773"
- particles.Transparency = NumberSequence.new({
- NumberSequenceKeypoint.new(0, 0),
- NumberSequenceKeypoint.new(0.7, 0.75),
- NumberSequenceKeypoint.new(0.9, 0.95),
- NumberSequenceKeypoint.new(1, 1)})
- particles.EmissionDirection = Enum.NormalId.Top
- particles.Lifetime = NumberRange.new(0.8)
- particles.Rate = 0
- particles.Rotation = NumberRange.new(0)
- particles.RotSpeed = NumberRange.new(0)
- particles.Speed = NumberRange.new(0.1)
- particles.SpreadAngle = Vector2.new(0, 0)
- particles.Shape = Enum.ParticleEmitterShape.Box
- particles.ShapeInOut = Enum.ParticleEmitterShapeInOut.Outward
- particles.ShapeStyle = Enum.ParticleEmitterShapeStyle.Volume
- particles.Parent = args[1].Character.Torso
- task.wait(0.2) -- necessary for the game to properly emit the particle
- local myMon = Stats.GetStat(args[1], "Current_Pokemon")
- local theBolt = myMon=="Ivysaur" and initXurkBolt or (myMon=="Xurkitree" and initXurkBolt or initBolt)
- local bolt = theBolt:Clone()
- bolt.Size *= sizeScale
- bolt.CanCollide, bolt.Anchored = false, true
- bolt.CFrame = args[1].Character.Torso.CFrame*offsetBy*CFrame.Angles(0, math.rad(j), 0)*CFrame.new(0, 0, i)*CFrame.Angles(0, math.rad(math.random(0, 360)), 0)
- bolt.Parent = workspace
- DamageService:RegisterWeaponPart(args[1], {bolt}, 40)
- local disappearing = game:GetService("TweenService"):Create(bolt, TweenInfo.new(0.7), {Transparency = 1})
- disappearing.Completed:Connect(function() bolt:Destroy() end)
- disappearing:Play()
- particles:Emit(1)
- local myPos = (args[1].Character.Torso.CFrame*CFrame.Angles(0, math.rad(j), 0)*CFrame.new(0, 0, i)).Position
- for i, player in pairs(game.Players:GetPlayers()) do
- if player.Character and player.Character:FindFirstChild("Torso") then
- if (player.Character.Torso.Position-myPos).Magnitude <= 60 then
- ShakeEvent:FireClient(player, 0.7, 400) -- first number is how long the shake lasts, second is strength
- end
- end
- end
- end)()
- task.wait(0.5)
- end
- end)()
- end
- task.wait(0.6)
- for i = 1, 18 do
- local roll = math.random(1,3)
- local lockOnto = args[1].Character.Torso.Position+Vector3.new((math.random(0, 60)+60)*(math.random(0,1)-0.5)*2, math.random(-2, 4), (math.random(0, 60)+60)*(math.random(0,1)-0.5)*2)
- if roll==1 then -- zapcannon
- local part1 = Instance.new("Part")
- part1.CanCollide, part1.Size, part1.BrickColor, part1.Transparency, part1.Material =
- false, Vector3.new(7,7,7), BrickColor.new("Olive"), 0.6, "Neon"
- local part2 = Instance.new("Part")
- part2.CanCollide, part2.Size, part2.BrickColor, part2.Transparency, part2.Material =
- false, Vector3.new(3,3,3), BrickColor.new("Bright red"), 0.2, "Neon"
- local light = Instance.new("PointLight")
- light.Brightness, light.Color, light.Range = 5, Color3.new(1,1,0), 10
- light.Parent = part1
- part1.CFrame = args[1].Character.Torso.CFrame*CFrame.new(0, 0, -7)
- part2.CFrame = part1.CFrame
- local bv = Instance.new("BodyVelocity")
- bv.MaxForce, bv.Velocity = Vector3.new(math.huge, math.huge, math.huge), lockOnto - part1.Position
- bv.Parent = part1
- bv = Instance.new("BodyVelocity")
- bv.MaxForce, bv.Velocity = Vector3.new(math.huge, math.huge, math.huge), lockOnto - part2.Position
- bv.Parent = part2
- game:GetService("Debris"):AddItem(part1, 7)
- game:GetService("Debris"):AddItem(part2, 7)
- DamageService:RegisterWeaponPart(args[1], {part1, part2}, 40)
- part1.Parent = workspace
- part2.Parent = workspace
- elseif roll==2 then -- flashcannon
- for i = 1, 16 do
- local part = Instance.new("Part")
- part.CanCollide, part.Size, part.BrickColor, part.Transparency, part.Reflectance, part.Material =
- false, Vector3.new(math.random(6,8),math.random(6,8),math.random(6,8)), BrickColor.new("White"), 0.4, 0.4, "Neon"
- local light = Instance.new("PointLight")
- light.Brightness, light.Color, light.Range = 10, Color3.new(1,1,1), 10
- light.Parent = part
- part.CFrame = args[1].Character.Torso.CFrame*CFrame.new(0, 0, -7)
- part.Parent = workspace
- local bv = Instance.new("BodyVelocity")
- bv.MaxForce, bv.Velocity = Vector3.new(math.huge, math.huge, math.huge), lockOnto - part.Position
- bv.Parent = part
- game:GetService("Debris"):AddItem(part, 7)
- DamageService:RegisterWeaponPart(args[1], {part}, 4)
- task.wait(0.02)
- end
- else -- ancientpower
- local part1 = Instance.new("Part")
- part1.CanCollide, part1.Size, part1.BrickColor, part1.Transparency, part1.Material =
- false, Vector3.new(6, 6, 6), BrickColor.new("Br. yellowish orange"), 0.7, "Neon"
- local part2 = Instance.new("Part")
- part2.CanCollide, part2.Size, part2.BrickColor, part2.Transparency, part2.Material =
- false, Vector3.new(5, 5, 5), BrickColor.new("Bright yellow"), 0.3, "Neon"
- local light = Instance.new("PointLight")
- light.Brightness, light.Color, light.Range = 5, Color3.new(1,1,0), 10
- light.Parent = part1
- part1.CFrame = args[1].Character.Torso.CFrame*CFrame.new(0, 0, -7)
- part2.CFrame = part1.CFrame
- local bv = Instance.new("BodyVelocity")
- bv.MaxForce, bv.Velocity = Vector3.new(math.huge, math.huge, math.huge), lockOnto - part1.Position
- bv.Parent = part1
- bv = Instance.new("BodyVelocity")
- bv.MaxForce, bv.Velocity = Vector3.new(math.huge, math.huge, math.huge), lockOnto - part2.Position
- bv.Parent = part2
- game:GetService("Debris"):AddItem(part1, 7)
- game:GetService("Debris"):AddItem(part2, 7)
- DamageService:RegisterWeaponPart(args[1], {part1, part2}, 40)
- part1.Parent = workspace
- part2.Parent = workspace
- end
- task.wait(0.2)
- end
- end
- function GmaxCharizard(...)
- local args = {...}
- local initToilet = game.ServerStorage.Items.GmaxCharizardToilet
- local initSpike = game.ServerStorage.Items.GmaxCharizardSpike
- local myPos = args[1].Character.Torso.Position
- for i, player in pairs(game.Players:GetPlayers()) do
- if player.Character and player.Character:FindFirstChild("Torso") then
- if (player.Character.Torso.Position-myPos).Magnitude <= 500 then
- ShakeEvent:FireClient(player, 7, 200) -- first number is how long the shake lasts, second is strength
- end
- end
- end
- for i = 1, 10 do
- coroutine.wrap(function() -- Here lies: the game's memory (bros about to crash the server)
- local toilets = {}
- local spikes = {}
- for i = 1, 5 do
- local toilet = initToilet:Clone()
- toilet.CFrame = args[1].Character.Torso.CFrame*CFrame.new(math.random(-100, 100), 0, math.random(-100, 100))
- toilet.Parent = workspace
- table.insert(toilets, toilet)
- local spike = initSpike:Clone()
- spike.CFrame = toilet.CFrame*CFrame.new(-1, 1.9, 0)*CFrame.new(0, -40, 0)
- spike.Parent = workspace
- table.insert(spikes, spike)
- DamageService:RegisterWeaponPart(args[1], {spike}, 0, function(hit)
- local hitTorso, hitHum
- if hit:IsA("Player") then hitTorso = hit.Character.Torso hitHum = hit.Character.Humanoid else hitTorso = hit.Torso hitHum = hit.Humanoid end
- local count = 1
- -- swiping
- local invis = Instance.new("Part")
- invis.Transparency, invis.CanCollide, invis.Massless, invis.Size, invis.CFrame =
- 1, false, true, Vector3.new(15, 8, 15), hitTorso.CFrame
- invis.Parent = workspace
- local weld = Instance.new("WeldConstraint")
- weld.Part0, weld.Part1 =
- hitTorso, invis
- weld.Parent = invis
- local pe = Instance.new("ParticleEmitter", invis)
- pe.Texture, pe.Rate, pe.Size, pe.Lifetime, pe.Speed =
- "rbxassetid://16948342514", 0, NumberSequence.new(2), NumberRange.new(0.6), NumberRange.new(30)
- pe.Shape, pe.ShapeInOut, pe.ShapeStyle, pe.LockedToPart =
- Enum.ParticleEmitterShape.Sphere, Enum.ParticleEmitterShapeInOut.Inward, Enum.ParticleEmitterShapeStyle.Surface, true
- task.wait(0.1)
- for i = 1, 7 do
- pe:Emit(1)
- task.wait(0.17)
- hitHum:TakeDamage(73/7)
- end
- hitHum.Health = math.round(hitHum.Health)
- task.wait(0.5)
- invis:Destroy()
- end)
- end
- task.wait(0.7)
- for i = 1, 10 do
- for i, spike in pairs(spikes) do
- spike.CFrame*=CFrame.new(0, 5, 0)
- end
- task.wait()
- end
- task.wait(10)
- for i = 1, 10 do
- for i, spike in pairs(spikes) do
- spike.CFrame*=CFrame.new(0, -5, 0)
- end
- task.wait()
- end
- for i, toilet in pairs(toilets) do
- toilet:Destroy()
- end
- for i, spike in pairs(spikes) do
- spike:Destroy()
- end
- end)()
- task.wait(0.5)
- end
- end
- -- SCRIPT
- function Use(...)
- local args = {...}
- local Stats = require(game.ServerScriptService.Stats)
- local cMon = Stats.GetStat(args[1], "Current_Pokemon")
- if cMon=="Whisland" then
- Whisland(...)
- elseif cMon=="Holy Charmeleon" then
- HolyCharmeleon(...)
- elseif cMon=="Strange Souvenir" then
- StrangeSouvenir(...)
- elseif cMon=="Gmax charizard" then
- GmaxCharizard(...)
- else
- Whisland(...)
- end
- end
- return Use
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement