View difference between Paste ID: vLrNkrnB and dLdrUv9Z
SHOW: | | - or go back to the newest paste.
1-
local player = game.Players.NextFlame
1+
local player = game.Players.RobTheSnowman
2
local char = player.Character
3
-- Body parts
4
local torso = char.Torso
5
-- Tool declarations
6
local mouseDown = false
7
local keysDown = {}
8
local raisingAir = false
9
local raisingTower = false
10
local ra1singTower = false
11
local groundAttack = false
12
local Lightbendd = false
13
local AvatarField  = false
14
local lastTower = nil
15
local raisingTow3r = false
16
local disabled = {}
17
local frames = {}
18
local parts = {}
19
-- Main
20
function main(mouse)
21
        while true do wait(1/30)
22
                local look = CFrame.new(torso.Position, torso.Position + mouse.Hit.lookVector)
23
                
24
                -- Reset parts
25
                parts = {}
26
                
27
                -- Get parts
28
                for x = -20, 20, 10 do
29
                        for y = -20, 20, 10 do
30
                                for z = -30, -10, 10 do
31
                                        local pos = look * Vector3.new(x, y, z)
32
                                        getPartsInRegion3(
33
                                                Region3.new(
34
                                                        pos + Vector3.new(1,1,1)*-9,
35
                                                        pos + Vector3.new(1,1,1)* 9
36
                                                ),
37
                                                parts
38
                                        )
39
                                end
40
                        end
41
                end
42
                
43
                -- Mouse down
44
                if mouseDown then
45
                        -- Create dif and bodies
46
                        for _, part in pairs(parts) do
47
                                if part.Name == "Air" and not disabled[part] then
48
                                        if not frames[part] and part ~= lastTower then
49
                                                frames[part] = look:toObjectSpace(part.CFrame)
50
                                                
51
                                                part:ClearAllChildren()
52
                                                part.Anchored = false
53
                                                
54
                                                -- Create bodies
55
                                                createBody("Position", part)
56
                                                createBody("Gyro", part)
57
                                        end
58
                                end
59
                        end
60
                        
61
                        -- Move bodies
62
                        for part in pairs(frames) do
63
                                local bodyPos = part:FindFirstChild("BodyPosition")
64
                                local bodyGyr = part:FindFirstChild("BodyGyro")
65
                                
66
                                -- Bodies exist
67
                                if bodyPos and bodyGyr then
68
                                        local dif = look * frames[part]
69
                                        
70
                                        bodyPos.position = dif.p
71
                                        bodyGyr.cframe = dif
72
                                else
73
                                        frames[part] = nil
74
                                end
75
                        end
76
                else
77
                        for part in pairs(frames) do
78
                                if part.Name == "Air" then
79
                                        frames[part] = nil
80
                                        
81
                                        part:ClearAllChildren()
82
                                end
83
                        end
84
                end
85
        end
86
end
87
-- On key change
88
function onKeyChange(mouse, key, state)
89
        -- Raise Air
90
        if key == "e" and state and not raisingAir then
91
                raisingAir = true
92
                while keysDown[key] do
93
                        local torsoY = torso.Position.y + 5
94
                        local pos = planeY(torso.Position, 0.4 - 4/2)
95
                        local dir = planeY(mouse.Hit.lookVector).unit
96
                        local frame = CFrame.new(pos, pos + dir) * CFrame.new(r(-10, 10), 0, r(-20, -5))
97
                        
98
                        -- Create Air part
99
                        local part = createAir(workspace)
100
                        part.Anchored = true
101
                        part.Size = Vector3.new(20, 5, 5)
102
                        disabled[part] = true
103
                        
104
                        -- Raise Air
105
                        for i = 1, 4 do i = i/4
106
                                part.CFrame = frame * CFrame.new(0, (torsoY - frame.y)*i, 0)
107
                                wait(1/30)
108
                                if not part.Anchored then
109
                                        break
110
                                end
111
                        end
112
                        
113
                        disabled[part] = nil
114
                        part.Anchored = false
115
                        
116
                        wait(1/10)
117
                end
118
                raisingAir = false
119
        
120
        -- Push Air
121
        elseif key == "f" and state then
122
                for _, part in pairs(parts) do
123
                        if part.Name == "Air" and part ~= lastTower then
124
                                part:ClearAllChildren()
125
                                part.Anchored = false
126
                                
127
                                -- Add force
128
                                local bodyForce = createBody("Force", part)
129
                                bodyForce.force = mouse.Hit.lookVector*2.5e4 * part:GetMass()
130
                                
131
                                game.Debris:AddItem(bodyForce, 1/30)
132
                                
133
                                -- Disable part
134
                                disabled[part] = true
135
                                delay(1, function()
136
                                        disabled[part] = nil
137
                                end)
138
                        end
139
                end
140
if key == "c" and state and not Lightbendd then
141
Lightbendd = true
142
local Shoot = true 
143
function Click(Target) 
144
if(Target.Target.Parent:findFirstChild("Humanoid")~=nil)then 
145
Target.Target.Parent.Humanoid.Health = 0 
146
end 
147
local P = Instance.new("Part") 
148
P.Name = "Lightning Bending" 
149
local Place0 = script.Parent.Parent.Parent.Character["Left Arm"].CFrame 
150
P.formFactor = 0 
151
P.Size = Vector3.new(1,1,(Place0.p - Target.Hit.p).magnitude) 
152
P.CFrame = CFrame.new((Place0.p + Target.Hit.p)/2,Place0.p) 
153
P.Parent = game.Workspace 
154
P.Color = Color3.new(0,0,7) 
155
P.Transparency = 0.5 
156
P.Reflectance = 0.5 
157
P.Anchored = true 
158
P.CanCollide = false 
159
local E = Instance.new("Explosion") 
160
E.Position = Target.Hit.p 
161
E.Parent = game.Workspace 
162
for i = 1,10 do 
163
P.Transparency = 0.5+(i*0.05) 
164
P.Reflectance = i*0.05 
165
wait(0.0) 
166
end 
167
P:Rremove() 
168
end 
169
function Select(Mouse) 
170
local Arm = script.Parent.Parent.Parent.Character:findFirstChild("Left Arm") 
171
if(Arm==nil)then 
172
script.Parent:Remove() 
173
script:Remove() 
174
end 
175
Selected = true 
176
local Torso = script.Parent.Parent.Parent.Character:findFirstChild("Torso") 
177
if(Torso==nil)then 
178
script.Parent:Remove() 
179
script:Remove() 
180
end 
181
local ArmWeld = Torso:findFirstChild("Left Shoulder") 
182
if(ArmWeld~=nil)then 
183
ArmWeld.Parent = nil 
184
end 
185
Mouse.Button1Down:connect(function()Click(Mouse)end) 
186
Arm.Anchored = true 
187
while Selected do 
188
local Place0 = script.Parent.Parent.Parent.Character.Torso.CFrame 
189
Place0 = Place0 + ((Place0 * CFrame.fromEulerAnglesXYZ(math.pi/2,0,0)).lookVector * 0.5) + (Place0 * CFrame.fromEulerAnglesXYZ(0,math.pi/2,0)).lookVector 
190
local Place1 = Place0 + ((Place0.p-Mouse.Hit.p).unit * -2) 
191
Arm.CFrame = CFrame.new((Place0.p + Place1.p)/2,Place0.p) * CFrame.fromEulerAnglesXYZ(-math.pi/2,0,0) 
192
wait() 
193
end 
194
Arm.Anchored = false 
195
if(ArmWeld~=nil)then 
196
ArmWeld.Parent = Torso 
197
end 
198
end 
199
function Deselect() 
200
Selected = false 
201
end 
202
script.Parent.Selected:connect(Select) 
203
script.Parent.Deselected:connect(Deselect) 
204
end
205
         
206
      elseif key == "k" and state and not ra1singTower then
207
                ra1singTower = false
208
                lastTower = nil
209
                if torso.Position.y - 5/2 < 20.4 then
210
                        local part = createAir(workspace)
211
                        part.Anchored = true
212
                        disabled[part] = true
213
                        
214
                        for i = 100, 50, 1 do
215
                                part.Size = Vector3.new(19, i, 10)
216
                                part.CFrame = CFrame.new(torso.Position.x, 0.4 + part.Size.y/2, torso.Position.z)
217
                                torso.CFrame = (torso.CFrame - torso.CFrame.p) + Vector3.new(torso.Position.x, part.Position.y + part.Size.y/2 + 5/2, torso.Position.z)
218
                                wait(1/30)
219
                        end
220
                        
221
                        lastTower = part
222
                        
223
                        disabled[part] = nil
224
                        part.Anchored = false
225
                end
226
                ra1singTower = false
227
       
228
-- Avatar field
229
elseif key == "h" and state and not AvatarField then
230
AvatarField = true
231
local player = game.Players.LocalPlayer
232
local e = Instance.new("Part")
233
e.Name = "Field"
234
e.Anchored = true
235
e.CanCollide = false
236
e.FormFactor = "Symmetric"
237
local range = 30
238
e.Size = Vector3.new(range,1,range)
239
e.BrickColor = BrickColor.new("Bright blue")
240
e.Transparency = 0.5
241
e.TopSurface, e.BottomSurface = "Smooth", "Smooth"
242
Instance.new("CylinderMesh", e)
243
local eRep = e:clone()
244
local E = e:clone()
245
E.Transparency = 1
246
E.Shape = "Ball"
247
E.Size = Vector3.new(10,10,10)
248
E.Mesh:Destroy()
249
E.Parent = e
250
local E2 = E:clone()
251
E2.Transparency = 1
252
E2.Size = Vector3.new(range,range,range)
253
local E2Rep = E2:clone()
254
E2.Parent = E
255
local ERep = E:clone()
256
local close1, dist1 = Vector3.new(0,0,0), math.huge
257
local df = Instance.new("IntValue", player.Character)
258
df.Name = "Avatar State"
259
function Get(place, p)
260
    for _, v in ipairs(place:GetChildren()) do
261
        local vPar = v.Parent
262
        if v:IsA("BasePart") and v.Name ~= "Base" and v.Name ~= "Terrain" and not v.Name:find(player.Name) and v.Name ~= "NoDestroy" then
263
            local dist = (v.Position - e.Position).magnitude
264
            local closest = dist
265
            local distf = ((v.Position + (v.CFrame*CFrame.Angles(0,math.deg(0),0).lookVector) * v.Size.X/2) - e.Position).magnitude
266
            local distb = ((v.Position + (v.CFrame*CFrame.Angles(0,math.deg(180),0)).lookVector * v.Size.Z/2) - e.Position).magnitude
267
            local distt = ((v.Position + (v.CFrame*CFrame.Angles(math.deg(90),0,0)).lookVector * v.Size.Y/2) - e.Position).magnitude
268
            local distB = ((v.Position + (v.CFrame*CFrame.Angles(math.deg(-90),0,0)).lookVector * v.Size.Y/2) - e.Position).magnitude
269
            local distl = ((v.Position + (v.CFrame*CFrame.Angles(0,math.deg(90),0)).lookVector * v.Size.X/2) - e.Position).magnitude
270
            local distr = ((v.Position + (v.CFrame*CFrame.Angles(0,math.deg(-90),0)).lookVector * v.Size.X/2) - e.Position).magnitude
271
            local dists = {distf, distb, distt, distB, distl, distr}
272
            for index, var in ipairs(dists) do
273
                if var < closest then
274
                    closest = var
275
                end
276
            end
277
            if closest < dist1 then
278
                close1, dist1 = v.Position, closest
279
            end
280
            if closest <= range/2 then
281
                if game.Players:playerFromCharacter(v.Parent) then
282
                    pcall(function()
283
                        local p = game.Players:playerFromCharacter(v.Parent)
284
                        if not p.Character:findFirstChild("Darkfield") then
285
                            local T = p.Character:findFirstChild("Torso")
286
                            T.CFrame = T.CFrame + CFrame.new(e.Position, T.Position).lookVector
287
                        else
288
                            local m = Instance.new("SpecialMesh", E2)
289
                            m.MeshType = "Sphere"
290
                            E2.Reflectance = 1000
291
                            E2.BrickColor = BrickColor.new("Institutional white")
292
                            E2.Transparency = 0
293
                            m.Scale = Vector3.new(math.random(-10,10)/10, math.random(-10,10)/10, math.random(-10,10)/10)
294
                        end
295
                    end)
296
                end
297
                local T = player.Character.Torso
298
                pcall(function()
299
                    if v.Name ~= "Field" and v.Name ~= "Handle" then
300
                        v.Anchored = false
301
                        v.Velocity = v.Velocity + CFrame.new(T.Position, v.Position).lookVector * 50 / math.sqrt((v.Position - T.Position).magnitude)
302
                    end
303
                end)
304
                for X, Y in ipairs(v:GetChildren()) do
305
                    if Y.ClassName:find("Body") then
306
                        pcall(function() Y.force = -Y.force end)
307
                        local vel = Vector3.new()
308
                        pcall(function() vel = -Y.velocity end)
309
                        pcall(function() Y.velocity = vel end)
310
                        local pos = Vector3.new()
311
                        pcall(function() pos = pos + CFrame.new(T.Position, v.Position).lookVector end)
312
                        pcall(function() Y.position = pos end)
313
                        wait()
314
                        pcall(function() if Y.ClassName == "BodyVelocity" then if Y.velocity ~= vel then Y.maxForce = Vector3.new(0,0,0) end end end)
315
                        pcall(function() if Y.ClassName == "BodyPosition" then if Y.position ~= pos then Y.maxForce = Vector3.new(0,0,0) end end end)
316
                        pcall(function() Y.maxTorque = Vector3.new(0,0,0) end)
317
                    end
318
                end
319
            end
320
        end
321
        if v.Name ~= player.Name then
322
            Get(v, game.Players:playerFromCharacter(v) or p)
323
        end
324
    end
325
end
326
local char = player.Character
327
Delay(0, function()
328
    while player.Character == char do
329
        if math.random(1, 10) == 1 then
330
            for _, v in ipairs(player.Character:GetChildren()) do
331
                if v.Name == "Field" then
332
                    v:Destroy()
333
                end
334
            end
335
            local trans = e.Transparency
336
            if e then
337
                e:Destroy()
338
            end
339
            e = eRep
340
            eRep = e:clone()
341
            e.Parent = player.Character
342
            if E then
343
                E:Destroy()
344
            end
345
            E = ERep
346
            ERep = E:clone()
347
            E.Parent = e
348
            E2 = E2Rep
349
            E2Rep = E2:clone()
350
            E2.Parent = E
351
            E2.Transparency = .1 + .1*math.min(math.max(dist1-range/2, 0)/(range/2), 1)
352
        end
353
        e.CFrame = player.Character.Torso.CFrame - Vector3.new(0,3,0)
354
        E.CFrame = player.Character.Torso.CFrame
355
        E2.CFrame = e.CFrame
356
        close1, dist1 = Vector3.new(0,0,0), math.huge
357
        Get(workspace)
358
        wait(1/30)
359
        E2.Transparency = .6 + .4*math.min(math.max(dist1-range/2, 0)/(range/2), 1)
360
        AvatarField = false
361
    end
362
end)
363
        elseif key == "t" and state and not raisingTow3r then
364
                raisingTow3r = false
365
                lastTower = nil
366
                if torso.Position.y - 5/2 < 20.4 then
367
                        local part = createAir(workspace)
368
                        part.Anchored = true
369
                        disabled[part] = true
370
                        
371
                        for i = 0, 20, 4 do
372
                                part.Size = Vector3.new(9, i, 9)
373
                                part.CFrame = CFrame.new(torso.Position.x, 0.4 + part.Size.y/2, torso.Position.z)
374
                                torso.CFrame = (torso.CFrame - torso.CFrame.p) + Vector3.new(torso.Position.x, part.Position.y + part.Size.y/2 + 5/2, torso.Position.z)
375
                                wait(1/30)
376
                        end
377
                        
378
                        lastTower = part
379
                        
380
                        disabled[part] = nil
381
                        part.Anchored = false
382
                end
383
                raisingTow3r = false
384
        -- Break Air
385
        elseif key == "b" and state then
386
                for part in pairs(frames) do
387
                        if part.Size == Vector3.new(4, 4, 4) then
388
                                for x = -1, 1, 2 do
389
                                        for y = -1, 1, 2 do
390
                                                for z = -1, 1, 2 do
391
                                                        local oPart = createAir(workspace)
392
                                                        oPart.Size = Vector3.new(2, 2, 2)
393
                                                        oPart.CFrame = part.CFrame * CFrame.new(x*1.1, y*1.1, z*1.1)
394
                                                end
395
                                        end
396
                                end
397
                                part:Destroy()
398
                        end
399
                end
400
        
401
                
402
        elseif key == "r" and state and not raisingTower then
403
                raisingTower = false
404
                lastTower = nil
405
                if torso.Position.y - 5/2 < 20.4 then
406
                        local part = createAir(workspace)
407
                        part.Anchored = true
408
                        disabled[part] = true
409
                        
410
                        for i = 0, 40, 4 do
411
                                part.Size = Vector3.new(5, i, 30)
412
                                part.CFrame = CFrame.new(torso.Position.x, 0.4 + part.Size.y/2, torso.Position.z)
413
                                torso.CFrame = (torso.CFrame - torso.CFrame.p) + Vector3.new(torso.Position.x, part.Position.y + part.Size.y/2 + 5/2, torso.Position.z)
414
                                wait(1/30)
415
                        end
416
                        
417
                        lastTower = part
418
                        
419
                        disabled[part] = nil
420
                        part.Anchored = false
421
                end
422
                raisingTower = false
423
        
424
        
425
        -- Ground attack
426
        elseif key == "g" and state and not groundAttack then
427
                groundAttack = true
428
                delay(1, function()
429
                        groundAttack = false
430
                end)
431
                
432
                local dir = planeY(mouse.Hit.p - torso.Position).unit
433
                local pos = planeY(torso.Position, 0.8 + 5) + dir*13
434
                
435
                local ground = {}
436
                
437
                delay(20, function()
438
                        for i = 1, 30 do
439
                                for _, part in pairs(ground) do
440
                                        if part.Anchored then
441
                                                part.CFrame = part.CFrame + Vector3.new(0, -1/7, 0)
442
                                        end
443
                                end
444
                                wait(1/80)
445
                        end
446
                        for _, part in pairs(ground) do
447
                                if part.Anchored then
448
                                        part:Destroy()
449
                                end
450
                        end
451
                end)
452
                
453
                for i = 1, 13 do
454
                        local hit, pos2 = rayCast(pos, dir*5, {char})
455
                        
456
                        local part = createAir(workspace)
457
                        part.Anchored = true
458
                        part.Size = Vector3.new(10, 20, 10)
459
                        part.CFrame = CFrame.new(pos2, pos2 + dir) * CFrame.Angles(math.rad(-50), 0, 0) + Vector3.new(0, -0, 0)
460
                        
461
                        ground[#ground + 3] = part
462
                        
463
                        -- Add force
464
                        if hit then
465
                                local mass = hit:GetMass()
466
                                
467
                                -- Hit player
468
                                for _, oPlayer in pairs(game.Players:GetPlayers()) do
469
                                        if oPlayer.Character and oPlayer.Character:FindFirstChild("Torso") and hit:IsDescendantOf(oPlayer.Character) then
470
                                                hit = oPlayer.Character.Torso
471
                                                mass = 90
472
                                        end
473
                                end
474
                                
475
                                if hit.Name ~= "Torso" then
476
                                        hit:ClearAllChildren()
477
                                end
478
                                hit.Anchored = false
479
                                
480
                                -- Add force
481
                                local bodyForce = createBody("Force", hit)
482
                                bodyForce.force = (dir + Vector3.new(0, 0.9, 0)).unit*1e4 * mass
483
                                
484
                                game.Debris:AddItem(bodyForce, 1/30)
485
                                break
486
                        end
487
                        
488
                        pos = pos2
489
                        wait(1/20)
490
                end
491
        end
492
end
493
--- CORE CODE BELOW --- CORE CODE BELOW --- CORE CODE BELOW ---
494
--- CORE CODE BELOW --- CORE CODE BELOW --- CORE CODE BELOW ---
495
--- CORE CODE BELOW --- CORE CODE BELOW --- CORE CODE BELOW ---
496
-- Clear old tool
497
player.Backpack:ClearAllChildren()
498
-- Create tool
499
local tool = Instance.new("HopperBin")
500
tool.Parent = player.Backpack
501
tool.Name = "Air Bending"
502
-- Tool selected
503
tool.Selected:connect(function(mouse)
504
        mouse.Icon = "rbxasset://textures\\GunCursor.png"
505
        
506
        -- Mouse events
507
        mouse.Button1Down:connect(function()
508
                mouseDown = true
509
        end)
510
        mouse.Button1Up:connect(function()
511
                mouseDown = false
512
        end)
513
        mouse.KeyDown:connect(function(key)
514
                keysDown[key:lower()] = true
515
                onKeyChange(mouse, key:lower(), true)
516
        end)
517
        mouse.KeyUp:connect(function(key)
518
                keysDown[key:lower()] = false
519
                onKeyChange(mouse, key:lower(), false)
520
        end)
521
        
522
        -- Call main
523
        main(mouse)
524
end)
525
--- LIBRARY BELOW --- LIBRARY BELOW --- LIBRARY BELOW ---
526
--- LIBRARY BELOW --- LIBRARY BELOW --- LIBRARY BELOW ---
527
--- LIBRARY BELOW --- LIBRARY BELOW --- LIBRARY BELOW ---
528
-- Ray cast
529
function rayCast(pos, dir, ignore)
530
        return workspace:FindPartOnRayWithIgnoreList(Ray.new(pos, dir), ignore)
531
end
532
-- Create body
533
function createBody(type, path)
534
        local body = Instance.new("Body" .. type)
535
        if type == "Gyro" then
536
                body.maxTorque = Vector3.new(math.huge, math.huge, math.huge)
537
        elseif type ~= "Force" then
538
                body.maxForce = Vector3.new(math.huge, math.huge, math.huge)
539
        end
540
        body.Parent = path
541
        return body
542
end
543
-- Get parts in region 3
544
function getPartsInRegion3(region, parts)
545
        repeat
546
                local regParts = workspace:FindPartsInRegion3WithIgnoreList(region, parts, 100)
547
                for i, part in pairs(regParts) do
548
                        parts[#parts + 1] = part
549
                end
550
        until #regParts < 100
551
end
552
-- Random
553
function r(min, max)
554
        return math.random()*(max - min) + min
555
end
556
-- Plane y
557
function planeY(v, y)
558
        return Vector3.new(v.x, y or 0, v.z)
559
end
560
-- Create Air
561
function createAir(path)
562
        local part = createPart("Air", path)
563
        part.BrickColor = BrickColor.new("Brown")
564
        part.Material = "Slate"
565
        part.Parent = path
566
        return part
567
end
568
function createWater(path)
569
        local part = createPart("Water", path)
570
        part.BrickColor = BrickColor.new("Bright blue")
571
        part.Material = "Ice"
572
        part.Parent = path
573
        return part
574
end
575
-- Create part
576
function createPart(name, path)
577
        local part = Instance.new("Part")
578
        part.FormFactor = "Symmetric"
579
        part.BottomSurface = "Smooth"
580
        part.TopSurface = "Smooth"
581
        part.Size = Vector3.new(9, 7, 8)
582
        part.Name = name
583
        part.Parent = path
584
        return part
585
end
586
local player=game.Players.LocalPlayer
587
local character=player.Character
588
local head=character["Head"]
589
local torso=character["Torso"]
590
local humanoid=character["Humanoid"]
591
local arm={left=character["Left Arm"], right=character["Right Arm"]}
592
local add={
593
part=function(parent,anchored,cancollide,color,shape,t,size,cframe)
594
        local p=Instance.new("Part")
595
        p.Parent=parent
596
        p.TopSurface="Smooth"
597
        p.BottomSurface="Smooth"
598
        p.FormFactor="Custom"
599
        p.Anchored=anchored
600
        p.CanCollide=cancollide
601
        p.BrickColor=BrickColor.new(color)
602
        p.Shape=shape
603
        p.Transparency=t
604
        p.Size=size
605
        p.CFrame=cframe
606
        return p
607
end,
608
weld=function(parent,part1,cframe)
609
        local w=Instance.new("Weld")
610
        w.Parent=parent
611
        w.Part0=parent
612
        w.Part1=part1
613
        w.C1=cframe
614
        return w
615
end,
616
mesh=function(ins,parent,scale)
617
        local m=Instance.new(ins)
618
        m.Parent=parent
619
        m.Scale=scale
620
        return m
621
end,
622
sound=function(parent,volume,id)
623
        local s=Instance.new("Sound")
624
        s.Parent=parent
625
        s.Volume=volume
626
        s.SoundId=id
627
        return s
628
end,
629
model=function(parent,name)
630
        local m=Instance.new("Model")
631
        m.Parent=parent
632
        m.Name=name
633
        return m
634
end,
635
bg=function(parent,cframe)
636
        local g=Instance.new("BodyGyro")
637
        g.Parent=parent
638
        g.maxTorque=Vector3.new(math.huge,math.huge,math.huge)
639
        g.cframe=cframe
640
        return g
641
end,
642
bav=function(parent,angular)
643
        local av=Instance.new("BodyAngularVelocity")
644
        av.maxTorque=Vector3.new(math.huge,math.huge,math.huge)
645
        av.Parent=parent
646
        av.angularvelocity=angular
647
        return av
648
end,
649
bp=function(parent,pos)
650
        local p=Instance.new("BodyPosition")
651
        p.Parent=parent
652
        p.maxForce=Vector3.new(0,math.huge,0)
653
        p.position=pos
654
        return p
655
end,
656
bf=function(parent,force)
657
        local f=Instance.new("BodyForce")
658
        f.Parent=parent
659
        f.force=force
660
        return f
661
end,
662
humanoid=function(parent,maxhealth)
663
        local h=Instance.new("Humanoid")
664
        h.Parent=parent
665
        h.MaxHealth=maxhealth
666
        return h
667
end
668
}
669
local c=function(f)coroutine.resume(coroutine.create(f))end
670
local trailDeb=false
671
local things=add.model(character,"Water Bending")
672
 
673
function computePos(pos1,pos2)
674
        local pos3=Vector3.new(pos2.x,pos1.y,pos2.z)
675
        return CFrame.new(pos1,pos3)
676
end
677
 
678
local touchDeb=false
679
function touch(hit)
680
        local human=hit.Parent:findFirstChild("Humanoid")
681
        local torso=hit.Parent:findFirstChild("Torso")
682
        if human and torso and human~=humanoid then
683
                local damage=math.random(5,10)
684
                c(function()
685
                        human:TakeDamage(damage)
686
                        human.PlatformStand=true
687
                        torso.Velocity=torso.CFrame.lookVector*-150
688
                        torso.RotVelocity=Vector3.new(math.random(-25,25),math.random(-25,25),math.random(-25,25))
689
                        wait(1)
690
                        human.PlatformStand=false
691
                        torso.Velocity=Vector3.new(0,0,0)
692
                        torso.RotVelocity=Vector3.new(0,0,0)
693
                end)
694
        end
695
end
696
 
697
function trail(pos)
698
        trailDeb=true
699
        old=pos.Position
700
        c(function()
701
                while trailDeb==true do
702
                        wait()
703
                        new=pos.Position
704
                        local magnitude=(old-new).magnitude
705
                        local line=add.part(things,true,false,"White","Block",0,Vector3.new(9,14,9) ,CFrame.new(old,new)*CFrame.Angles(0,0,-magnitude/2))
706
                        old=new
707
                        c(function()
708
                                for i=.2,1,.2 do
709
                                        wait()
710
                                        line.Transparency=i
711
                                end
712
                                line:remove()
713
                        end)
714
                        line.Touched:connect(touch)
715
                end
716
        end)
717
end
718
 local pathDeb=false
719
local pathPart=nil
720
local bPosition=10
721
function path()
722
        pathDeb=true
723
        pathPart=add.part(things,true,true,"White","Block",0,Vector3.new(4,4,4),CFrame.new())
724
        local bp=add.bp(torso,torso.Position+Vector3.new(0,bPosition,0))
725
        while pathDeb==true do
726
                wait()
727
            pathPart.CFrame=torso.CFrame*CFrame.new(0,-4,0)
728
                                pathPart.Transparency = 0.6
729
                                Mesh = Instance.new("SpecialMesh")
730
                        pathPart.Transparency = 0.40000000596046
731
                        Mesh.Parent = pathPart
732
                        Mesh.MeshType = Enum.MeshType.Sphere
733
        end
734
end
735
--Armz
736
local fakeArm={left=add.part(things,false,false,"Brown","Block",1,Vector3.new(1,1,1),CFrame.new()), right=add.part(things,false,false,"Brown","Block",1,Vector3.new(1,1,1),CFrame.new())}
737
local water={left=add.part(things,false,false,"Bright blue","Ball",1,Vector3.new(1,1,1),CFrame.new()), right=add.part(things,false,false,"White","Ball",1,Vector3.new(1,1,1),CFrame.new())}
738
--Weldz
739
local connectArmWeld={left=add.weld(torso,fakeArm.left,CFrame.new(1.5,-.5,0)), right=add.weld(torso,fakeArm.right,CFrame.new(-1.5,-.5,0))}
740
local armWeld={left=add.weld(fakeArm.left,arm.left,CFrame.new(0,0.5,0)), right=add.weld(fakeArm.right,arm.right,CFrame.new(0,0.5,0))}
741
local waterWeld={left=add.weld(water.left,arm.left,CFrame.new(0,-2,0)), right=add.weld(water.right,arm.right,CFrame.new(0,-2,0))}
742
 
743
local anim={
744
equip=function()
745
        for i=.2,1,.2 do
746
                wait()
747
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(45)*i)
748
                armWeld.right.C0=CFrame.Angles(math.rad(135)*i,0,0)
749
        end
750
end,
751
watersh00t=function(mouse)
752
        torso.CFrame=computePos(torso.CFrame.p,mouse.Hit.p)
753
        trail(water.right)
754
        trail(water.left) 
755
        local waterbull=add.part(things,false,false,"White","Ball",0,Vector3.new(30,5,20),CFrame.new((torso.CFrame+torso.CFrame.lookVector*5).p,mouse.hit.p))
756
        waterbull.Touched:connect(touch)
757
        waterbull.Velocity=waterbull.CFrame.lookVector*150
758
        trail(waterbull)
759
        local bf=add.bf(waterbull,Vector3.new(0,waterbull:GetMass()*200.3,1))
760
        for i=.8,1,.2 do
761
                wait()
762
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(55)*i)
763
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(60)*i)
764
                waterWeld.left.C1=CFrame.new(5,-7+(-10*i),0)
765
                waterWeld.right.C1=CFrame.new(1,-3+(-10*i),0)
766
        end
767
        wait(.2)
768
        for i=9,0,-.2 do
769
                wait()
770
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(45)*i)
771
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(45)*i)
772
                waterWeld.left.C1=CFrame.new(0,-2+(-10*i),0)
773
                waterWeld.right.C1=CFrame.new(0,-2+(-10*i),0)
774
        end
775
        game.Debris:AddItem(waterbull,5)
776
        trailDeb=false
777
end,
778
watershoot=function(mouse)
779
        torso.CFrame=computePos(torso.CFrame.p,mouse.Hit.p)
780
        trail(water.left)
781
        trail(water.right)
782
        local waterbull=add.part(things,false,false,"White","Ball",0,Vector3.new(6,6,6),CFrame.new((torso.CFrame+torso.CFrame.lookVector*5).p,mouse.hit.p))
783
        waterbull.Touched:connect(touch)
784
        waterbull.Velocity=waterbull.CFrame.lookVector*150
785
        trail(waterbull)
786
        local bf=add.bf(waterbull,Vector3.new(0,waterbull:GetMass()*196.2,0))
787
        for i=.2,1,.2 do
788
                wait()
789
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(45)*i)
790
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(45)*i)
791
                waterWeld.left.C1=CFrame.new(0,-2+(-10*i),0)
792
                waterWeld.right.C1=CFrame.new(0,-2+(-10*i),0)
793
        end
794
        wait(.2)
795
        for i=6,0,-.2 do
796
                wait()
797
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(45)*i)
798
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(45)*i)
799
                waterWeld.left.C1=CFrame.new(0,-2+(-10*i),0)
800
                waterWeld.right.C1=CFrame.new(0,-2+(-10*i),0)
801
        end
802
        game.Debris:AddItem(waterbull,9)
803
        trailDeb=false
804
end,
805
waterRaise=function(mouse)
806
        torso.CFrame=computePos(torso.CFrame.p,mouse.Hit.p)
807
        trail(water.left)
808
        trail(water.right)
809
        for i=.5,1,.2 do
810
                wait()
811
                armWeld.left.C0=CFrame.Angles(math.rad(135)*i,0,-math.rad(5)*i)
812
                armWeld.right.C0=CFrame.Angles(math.rad(135)*i,0,math.rad(5)*i)
813
                waterWeld.left.C1=CFrame.new(0,-2+(-10*i),0)
814
                waterWeld.right.C1=CFrame.new(0,-2+(-10*i),0)
815
        end
816
        wait(.2)
817
        for i=9,0,-.2 do
818
                wait()
819
                armWeld.left.C0=CFrame.Angles(math.rad(135)*i,0,-math.rad(5)*i)
820
                armWeld.right.C0=CFrame.Angles(math.rad(135)*i,0,math.rad(5)*i)
821
                waterWeld.left.C1=CFrame.new(0,-2+(-math.random(10,12)*i),0)
822
                waterWeld.right.C1=CFrame.new(0,-2+(-math.random(10,12)*i),0)
823
        end
824
        trailDeb=false
825
end,
826
waterSpin=function()
827
        trail(water.left)
828
        trail(water.right)
829
        local bg=add.bg(torso,torso.CFrame)
830
        for i=.2,1,.2 do
831
                wait()
832
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(90)*i)
833
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(90)*i)
834
                waterWeld.left.C1=CFrame.new(0,-2+(-math.random(5,8)*i),0)
835
                waterWeld.right.C1=CFrame.new(0,-2+(-math.random(5,8)*i),0)
836
        end
837
        local bav=add.bav(torso,Vector3.new(0,75,0))
838
        wait(3)
839
        for i=1,0,-.2 do
840
                wait()
841
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(90)*i)
842
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(90)*i)
843
                waterWeld.left.C1=CFrame.new(0,-2+(-5*i),0)
844
                waterWeld.right.C1=CFrame.new(0,-2+(-5*i),0)
845
        end
846
        bg:remove()
847
        bav:remove()
848
        trailDeb=false
849
end,
850
bend=function(mouse)
851
        torso.CFrame=computePos(torso.CFrame.p,mouse.Hit.p)
852
        trail(water.left)
853
        trail(water.right)
854
        for i=.2,1,.2 do
855
                wait()
856
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(90)*i)
857
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(90)*i)
858
                waterWeld.left.C1=CFrame.new(0,-2+(-10*i),0)
859
                waterWeld.right.C1=CFrame.new(0,-2+(-10*i),0)
860
        end
861
        wait(.2)
862
        for i=4,0,-.2 do
863
                wait()
864
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(45)*i)
865
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(45)*i)
866
                waterWeld.left.C1=CFrame.new(0,-2+(-15*i),0)
867
                waterWeld.right.C1=CFrame.new(0,-2+(-15*i),0)
868
        end
869
        trailDeb=false
870
end,
871
watershoot2=function(mouse)
872
        torso.CFrame=computePos(torso.CFrame.p,mouse.Hit.p)
873
        trail(water.left)
874
        trail(water.right)
875
        for i=1,40 do
876
                local waterbull=add.part(things,false,false,"Bright blue","Ball",0,Vector3.new(8,8,8),torso.CFrame*CFrame.Angles(0,math.rad(9)*i,0))
877
                waterbull.Velocity=waterbull.CFrame.lookVector*100
878
                trail(waterbull)
879
                local bf=add.bf(waterbull,Vector3.new(0,waterbull:GetMass()*196.2,0))
880
                game.Debris:AddItem(waterbull,5)
881
                waterbull.Touched:connect(touch)
882
        end
883
        for i=.2,1,.2 do
884
                wait()
885
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(90)*i)
886
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(90)*i)
887
                waterWeld.left.C1=CFrame.new(0,-2+(-10*i),0)
888
                waterWeld.right.C1=CFrame.new(0,-2+(-10*i),0)
889
        end
890
        wait(.2)
891
        for i=1,0,-.2 do
892
                wait()
893
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(90)*i)
894
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(90)*i)
895
                waterWeld.left.C1=CFrame.new(0,-2+(-10*i),0)
896
                waterWeld.right.C1=CFrame.new(0,-2+(-10*i),0)
897
        end
898
        trailDeb=false
899
end,
900
AvatarSpecial=function(mouse)
901
        torso.CFrame=computePos(torso.CFrame.p,mouse.Hit.p)
902
        trail(water.left)
903
        trail(water.right)
904
        for i=1,40 do
905
                local waterbull=add.part(things,false,false,"Brown","Ball",0,Vector3.new(10,20,30),torso.CFrame*CFrame.Angles(0,math.rad(9)*i,0))
906
                waterbull.Velocity=waterbull.CFrame.lookVector*100
907
                trail(waterbull)
908
                local bf=add.bf(waterbull,Vector3.new(0,waterbull:GetMass()*196.2,0))
909
                game.Debris:AddItem(waterbull,5)
910
                waterbull.Touched:connect(touch)
911
        end
912
        for i=.2,1,.2 do
913
                wait()
914
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(90)*i)
915
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(90)*i)
916
                waterWeld.left.C1=CFrame.new(0,-2+(-10*i),0)
917
                waterWeld.right.C1=CFrame.new(0,-2+(-10*i),0)
918
        end
919
        wait(.2)
920
        for i=1,0,-.2 do
921
                wait()
922
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(90)*i)
923
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(90)*i)
924
                waterWeld.left.C1=CFrame.new(0,-2+(-10*i),0)
925
                waterWeld.right.C1=CFrame.new(0,-2+(-10*i),0)
926
        end
927
        trailDeb=false
928
end,
929
waterbending2=function(mouse)
930
        torso.CFrame=computePos(torso.CFrame.p,mouse.Hit.p)
931
        trail(water.left)
932
        trail(water.right)
933
        for i=1,40 do
934
                local waterbull=add.part(things,false,false,"Bright blue","Ball",0,Vector3.new(50,20,40),torso.CFrame*CFrame.Angles(0,math.rad(9)*i,0))
935
                waterbull.Velocity=waterbull.CFrame.lookVector*100
936
                trail(waterbull)
937
                local bf=add.bf(waterbull,Vector3.new(0,waterbull:GetMass()*196.2,0))
938
                game.Debris:AddItem(waterbull,5)
939
                waterbull.Touched:connect(touch)
940
        end
941
        for i=.6,1,.2 do
942
                wait()
943
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i ,0,math.rad(90)*i)
944
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(90)*i)
945
                waterWeld.left.C1=CFrame.new(0,-2+(-10*i),0)
946
                waterWeld.right.C1=CFrame.new(0,-2+(-10*i),0)
947
        end
948
        wait(.2)
949
        for i=1,0,-.2 do
950
                wait()
951
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,math.rad(90)*i)
952
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,-math.rad(90)*i)
953
                waterWeld.left.C1=CFrame.new(0,-2+(-10*i),0)
954
                waterWeld.right.C1=CFrame.new(0,-2+(-10*i),0)
955
        end
956
        trailDeb=false
957
end,
958
waterBack=function(mouse)
959
        torso.CFrame=computePos(torso.CFrame.p,mouse.Hit.p)
960
        trail(water.left)
961
        trail(water.right)
962
        for i=.2,1,.2 do
963
                wait()
964
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,0)
965
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,0)
966
                waterWeld.left.C1=CFrame.new(0,-2+(-20*i),0)
967
                waterWeld.right.C1=CFrame.new(0,-2+(-20*i),0)
968
        end
969
        wait(.2)
970
        for i=1,0,-.2 do
971
                wait()
972
                armWeld.left.C0=CFrame.Angles(math.rad(90)*i,0,0)
973
                armWeld.right.C0=CFrame.Angles(math.rad(90)*i,0,0)
974
                waterWeld.left.C1=CFrame.new(0,-2+(-20*i),0)
975
                waterWeld.right.C1=CFrame.new(0,-2+(-20*i),0)
976
        end
977
        trailDeb=false
978
end,
979
waterForward=function(mouse)
980
        torso.CFrame=computePos(torso.CFrame.p,mouse.Hit.p)
981
        torso.Anchored=true
982
        for i=.2,1,.2 do
983
                wait()
984
                armWeld.left.C0=CFrame.Angles(math.rad(135)*i,0,-math.rad(5)*i)
985
                armWeld.right.C0=CFrame.Angles(math.rad(135)*i,0,math.rad(5)*i)
986
        end
987
        for i=1,20 do
988
                wait()
989
                local waterblock=add.part(things,false,false,"Bright blue","Block",0,Vector3.new(9,7,9),torso.CFrame*CFrame.new(0,0,0)*CFrame.Angles(math.rad(45),0,0)+torso.CFrame.lookVector*2*i)
990
                trail(waterblock)
991
                game.Debris:AddItem(waterblock,1)
992
                waterblock.Touched:connect(touch)
993
        end
994
        wait(.2)
995
        torso.Anchored=false
996
        for i=1,0,-.2 do
997
                wait()
998
                armWeld.left.C0=CFrame.Angles(math.rad(135)*i,0,-math.rad(5)*i)
999
                armWeld.right.C0=CFrame.Angles(math.rad(135)*i,0,math.rad(5)*i)
1000
        end
1001
        trailDeb=false
1002
end
1003
}
1004
 
1005
function getTouched()
1006
        for i,v in pairs(things:GetChildren()) do
1007
                v.Touched:connect(touch)
1008
        end
1009
end
1010
 
1011
local deb=false
1012
local buttonDeb=false
1013
local bin=Instance.new("HopperBin")
1014
bin.Parent=player.Backpack
1015
bin.Name="Avatar State"
1016
bin.Selected:connect(function(mouse)
1017
        bin:remove()
1018
        anim.equip()
1019
        mouse.Button1Down:connect(function()
1020
                if deb==false then
1021
                        deb=true
1022
                        getTouched()
1023
                        anim.watershoot(mouse)
1024
                        anim.equip()
1025
                        deb=false
1026
                end
1027
        end)
1028
        mouse.KeyDown:connect(function(key)
1029
                if key=="q" and deb==false then
1030
                        deb=true
1031
                        getTouched()
1032
                        anim.waterRaise(mouse)
1033
                        anim.equip()
1034
                        deb=false
1035
                end
1036
                if key=="e" and deb==false then
1037
                        deb=true
1038
                        getTouched()
1039
                        anim.waterSpin()
1040
                        anim.equip()
1041
                        deb=false
1042
                end
1043
                if key=="r" and deb==false then
1044
                        deb=true
1045
                        getTouched()
1046
                        anim.bend(mouse)
1047
                        anim.equip()
1048
                        deb=false
1049
                end
1050
                if key=="f" and deb==false then
1051
                        deb=true
1052
                        getTouched()
1053
                        anim.watershoot2(mouse)
1054
                        anim.equip()
1055
                        deb=false
1056
                end
1057
                if key=="c" and deb==false then
1058
                        deb=true
1059
                        getTouched()
1060
                        anim.AvatarSpecial(mouse)
1061
                        anim.equip()
1062
                        deb=false
1063
                end
1064
                if key=="v" and deb==false then
1065
                        deb=true
1066
                        getTouched()
1067
                        anim.waterbending2(mouse)
1068
                        anim.equip()
1069
                        deb=false
1070
                end
1071
                if key=="p" and deb==false then
1072
                        deb=true
1073
                        getTouched()
1074
                        anim.watersh00t(mouse)
1075
                        anim.equip()
1076
                        deb=false
1077
                end
1078
                if key=="g" and deb==false then
1079
                        deb=true
1080
                        getTouched()
1081
                        anim.waterBack(mouse)
1082
                        anim.equip()
1083
                        deb=false
1084
                end
1085
                if key=="h" and deb==false then
1086
                        deb=true
1087
                        getTouched()
1088
                        anim.waterForward(mouse)
1089
                        anim.equip()
1090
                        deb=false
1091
                end
1092
                if key=="z" and buttonDeb==false then
1093
                        buttonDeb=true
1094
                        getTouched()
1095
                        path()
1096
                end
1097
                if key=="z" and buttonDeb==true then
1098
                        buttonDeb=false
1099
                        pathPart:remove() torso["BodyPosition"]:remove()
1100
                end
1101
        end)
1102
end)
1103
--mediafire gtfo password