Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local plr = owner.Name
- local tool = Instance.new("Tool")
- tool.Parent = game.Players:FindFirstChild(plr).Backpack
- tool.Name = "WaterTooler"
- tool.ToolTip = "Water Fighter!"
- local mouse = Instance.new("RemoteEvent",tool)
- mouse.Name = "Mouse"
- local deb1 = {}
- local deb2 = {}
- function debris(instnace,time)
- local num = 1
- table.insert(deb1,instnace)
- delay(time,function()
- instnace:Destroy()
- end)
- end
- function biggify2(water,FT)
- local waters = game.Workspace:FindFirstChild("WaterFolder123"):GetChildren()
- local stop = false
- for i=1, #waters do
- if not stop then
- local c = waters[i]
- local dist = (waters[i].Position-water.Position).Magnitude
- if dist*1.999<waters[i].Size.Z+water.Size.Z and waters[i] ~= water then
- stop = true
- game:GetService("TweenService"):Create(waters[i],TweenInfo.new(0.5,Enum.EasingStyle.Quad,Enum.EasingDirection.InOut),{Size = Vector3.new(0.1,waters[i].WaterSize.Value.Y+water.WaterSize.Value.Y,waters[i].WaterSize.Value.Y+water.WaterSize.Value.Y)}):Play()
- waters[i].WaterSize.Value = Vector3.new(0.1,waters[i].WaterSize.Value.Y+water.WaterSize.Value.Y,waters[i].WaterSize.Value.Y+water.WaterSize.Value.Y)
- debris(water,FT)
- waters[i]:Destroy()
- biggify2(water,FT)
- end
- end
- end
- end
- function biggify(water,FADETIM)
- local waters = game.Workspace:FindFirstChild("WaterFolder123"):GetChildren()
- local stop = false
- for i=1, #waters do
- if not stop then
- local c = waters[i]
- local dist = (waters[i].Position-water.Position).Magnitude
- if dist*1.999<waters[i].Size.Z+water.Size.Z and waters[i] ~= water then
- stop = true
- game:GetService("TweenService"):Create(waters[i],TweenInfo.new(0.5,Enum.EasingStyle.Quad,Enum.EasingDirection.InOut),{Size = Vector3.new(0.1,waters[i].WaterSize.Value.Y+water.WaterSize.Value.Y,waters[i].WaterSize.Value.Y+water.WaterSize.Value.Y)}):Play()
- waters[i].WaterSize.Value = Vector3.new(0.1,waters[i].WaterSize.Value.Y+water.WaterSize.Value.Y,waters[i].WaterSize.Value.Y+water.WaterSize.Value.Y)
- debris(waters[i],FADETIM)
- water:Destroy()
- biggify2(waters[i],FADETIM)
- end
- end
- end
- end
- NLS('local tool = game.Players.LocalPlayer.Backpack:WaitForChild("WaterTooler") local mouse = game.Players.LocalPlayer:GetMouse() mouse.Button1Down:Connect(function() print("clicked") tool:FindFirstChild("Mouse"):FireServer(mouse.Hit) end)',game.Players:FindFirstChild(owner.Name).Character)
- function realWater(Position,VelPos,Size,PuddleSize,GravityStart,GravityIncrease,Color,Material,Parent,FadeTime,Transparency,disapearOnPlayer,ignore)
- if not game.Workspace:FindFirstChild("WaterFolder123") then
- local wtrFold = Instance.new("Folder",workspace)
- wtrFold.Name = "WaterFolder123"
- end
- local waterDrop = Instance.new("Part",game.Workspace:FindFirstChild("WaterFolder123"))
- waterDrop.Shape = "Ball"
- waterDrop.Name = "DROPOFTHEWATETER"
- waterDrop.Size = Vector3.new(Size,Size,Size)
- waterDrop.Anchored = true
- waterDrop.CanCollide = false
- waterDrop.Position = Position
- waterDrop.Material = Material
- waterDrop.Color = Color
- waterDrop.Transparency = Transparency
- debris(waterDrop,FadeTime)
- local gravity = GravityStart
- local stop = false
- local rsr
- rsr = game:GetService("RunService").Heartbeat:Connect(function()
- if not stop then
- local raycastParams = RaycastParams.new()
- table.insert(ignore,game.Workspace:FindFirstChild("WaterFolder123"))
- raycastParams.FilterDescendantsInstances = ignore
- raycastParams.FilterType = Enum.RaycastFilterType.Exclude
- raycastParams.IgnoreWater = true
- local ray = workspace:Raycast(waterDrop.Position,(VelPos+Vector3.new(0,gravity,0)),raycastParams)
- if ray then
- if disapearOnPlayer then
- if not ray.Instance.Parent:FindFirstChildWhichIsA("Humanoid") then
- if not ray.Instance.Parent.Parent:FindFirstChildWhichIsA("Humanoid") then
- stop = true
- waterDrop.Shape = "Cylinder"
- waterDrop.Anchored = true
- waterDrop.Size = Vector3.new(0.1,Size,Size)
- waterDrop.CanCollide = false
- waterDrop.Material = Material
- waterDrop.Color = Color
- waterDrop.Position = ray.Position
- waterDrop.Transparency = Transparency
- waterDrop.CFrame = CFrame.new(ray.Position,ray.Position+ray.Normal) * CFrame.Angles(0, math.pi / 2, 0)
- game:GetService("TweenService"):Create(waterDrop,TweenInfo.new(0.5,Enum.EasingStyle.Quad,Enum.EasingDirection.InOut),{Size = Vector3.new(0.1,PuddleSize,PuddleSize)}):Play()
- local waterSize = Instance.new("Vector3Value",waterDrop)
- waterSize.Name = "WaterSize"
- waterSize.Value = waterDrop.Size
- delay(1, function()
- local waterSize = Instance.new("Vector3Value",waterDrop)
- waterSize.Name = "WaterSize"
- waterSize.Value = waterDrop.Size
- biggify(waterDrop,FadeTime)
- end)
- return waterDrop, ray.Instance
- else
- stop = true
- waterDrop:Destroy()
- if not ray.Instance:FindFirstChild("WATERCOVER") and ray.Instance.Name ~= "WATERCOVER" then
- local cover
- if ray.Instance.Name == "HumanoidRootPart" then
- if ray.Instance.Parent.Parent:FindFirstChild("LowerTorso") then
- cover = ray.Instance.Parent.Parent.UpperTorso:Clone()
- else
- cover = ray.Instance.Parent.Parent.Torso:Clone()
- end
- else
- cover = ray.Instance:Clone()
- end
- for i=1, #cover:GetDescendants() do
- cover:GetDescendants()[i]:Destroy()
- end
- local CoverSize = cover.Size*1.1
- cover.Size = Vector3.new(0.001,0.001,0.001)
- cover.Parent = ray.Instance
- cover.CanCollide = false
- cover.Position = Position
- cover.Material = Material
- cover.Color = Color
- cover.Name = "WATERCOVER"
- cover.Transparency = Transparency
- local weld = Instance.new("Weld")
- weld.Parent = cover
- weld.Part0 = cover
- weld.Part1 = ray.Instance
- game.Debris:AddItem(cover,FadeTime)
- game:GetService("TweenService"):Create(cover,TweenInfo.new(0.5,Enum.EasingStyle.Quad,Enum.EasingDirection.InOut),{Size = CoverSize}):Play()
- end
- return ray.Instance.Parent.Parent, "Parent2"
- end
- else
- stop = true
- waterDrop:Destroy()
- if not ray.Instance:FindFirstChild("WATERCOVER") and ray.Instance.Name ~= "WATERCOVER" then
- local cover
- if ray.Instance.Name == "HumanoidRootPart" then
- if ray.Instance.Parent:FindFirstChild("LowerTorso") then
- cover = ray.Instance.Parent.UpperTorso:Clone()
- else
- cover = ray.Instance.Parent.Torso:Clone()
- end
- else
- cover = ray.Instance:Clone()
- end
- for i=1, #cover:GetDescendants() do
- local c = cover:GetDescendants()[i]
- if c ~= nil then
- c:Destroy()
- end
- end
- local CoverSize = cover.Size*1.1
- cover.Size = Vector3.new(0.001,0.001,0.001)
- cover.Parent = ray.Instance
- cover.CanCollide = false
- cover.Position = Position
- cover.Material = Material
- cover.Color = Color
- cover.Name = "WATERCOVER"
- cover.Transparency = Transparency
- local weld = Instance.new("Weld")
- weld.Parent = cover
- weld.Part0 = cover
- weld.Part1 = ray.Instance
- game.Debris:AddItem(cover,FadeTime)
- game:GetService("TweenService"):Create(cover,TweenInfo.new(0.5,Enum.EasingStyle.Quad,Enum.EasingDirection.InOut),{Size = CoverSize}):Play()
- end
- return ray.Instance.Parent, "Parent1"
- end
- else
- stop = true
- waterDrop.Shape = "Cylinder"
- waterDrop.Anchored = true
- waterDrop.Size = Vector3.new(0.1,Size,Size)
- waterDrop.CanCollide = false
- waterDrop.Material = Material
- waterDrop.Color = Color
- waterDrop.Position = ray.Position
- waterDrop.Transparency = Transparency
- waterDrop.CFrame = CFrame.new(ray.Position,ray.Position+ray.Normal) * CFrame.Angles(0, math.pi / 2, 0)
- game:GetService("TweenService"):Create(waterDrop,TweenInfo.new(0.5,Enum.EasingStyle.Quad,Enum.EasingDirection.InOut),{Size = Vector3.new(0.1,PuddleSize,PuddleSize)}):Play()
- delay(1, function()
- local waterSize = Instance.new("Vector3Value",waterDrop)
- waterSize.Name = "WaterSize"
- waterSize.Value = waterDrop.Size
- biggify(waterDrop,FadeTime)
- end)
- return waterDrop, ray.Instance
- end
- end
- if not stop then
- waterDrop.CFrame += (VelPos+Vector3.new(0,gravity,0))
- gravity -= GravityIncrease
- else
- rsr:Disconnect()
- end
- end
- end)
- end
- function DripWater(water,instance,Speed,ignore,array)
- local e = game:GetService("RunService").Heartbeat:Connect(function()
- if water ~= nil then
- if not water:FindFirstChild("Wait") then
- local waitbool = Instance.new("BoolValue",water)
- waitbool.Name = "Wait"
- game.Debris:AddItem(waitbool,1)
- local drip = realWater(Vector3.new(water.Position.X+math.random(-water.Size.X,water.Size.X),water.Position.Y-(water.Size.Z/3)/2,water.Position.Z+math.random(-water.Size.Z,water.Size.Z)),Vector3.new(0,0,0),water.Size.Z/3,water.Size.Z/2,0,0.005,water.Color,water.Material,water,30,water.Transparency,true,{})
- table.insert(array,drip)
- end
- end
- end)
- local dis
- dis = game.Workspace.DescendantRemoving:Connect(function(objectWhichWasRemoved)
- if objectWhichWasRemoved == water then
- e:Disconnect()
- dis:Disconnect()
- end
- end)
- end
- mouse.OnServerEvent:Connect(function(p,mouseHit)
- local pos = tool.Parent:WaitForChild("HumanoidRootPart").Position
- local velocity = (mouseHit.p-tool.Parent:WaitForChild("HumanoidRootPart").Position).Unit
- local size = 1
- local puddleSize = 3
- local gravityStart = 0.1
- local gravityIncrease = 0.01
- local WaterColor = Color3.new(0.0784314, 0.603922, 0.603922)
- local Material = Enum.Material.Glass
- local parent = workspace
- local Fadetime = 15
- local transparency = 0.5
- local disapearOnPlayer = true
- local ignore = {tool.Parent}
- local water, other = realWater(pos,velocity,size,puddleSize,gravityStart,gravityIncrease,WaterColor,Material,parent,Fadetime,transparency,disapearOnPlayer,ignore)
- if other ~= "Parent1" and other ~= "Parent2" then
- local drippedWaters = {}
- DripWater(water,other,1,ignore,drippedWaters)
- end
- if other == "Parent1" then
- local char = water.Parent
- end
- if other == "Parent2" then
- local char = water.Parent.Parent
- end
- end)
Advertisement
Add Comment
Please, Sign In to add comment