View difference between Paste ID: Rm1gnGbm and E9KrbUpr
SHOW: | | - or go back to the newest paste.
1-
local player = game.Players.Zororion
1+
local player = game.Players.TheOfficalNoob4788
2
local char = player.Character
3
4
-- Body parts
5
local torso = char.Torso
6
7
-- Tool declarations
8
local mouseDown = false
9
local keysDown = {}
10
11
-- Earth bending declarations
12
local raisingEarth = false
13
local raisingTower = false
14
local wall = false
15
local groundAttack = false
16
local lastTower = nil
17
local disabled = {}
18
local frames = {}
19
local parts = {}
20
local Taunts = {"Foolish.", "Take that!", "Heh.", "You have no hope.", "Grow up.", "DIE!", "EARTH, SHOOT!", "GOOD LUCK STAYING ALIVE!", "You pitiful being."}
21
local raisechats = {"Earth, raise!", "Get Ready to DIE!", "Heheh..", "Time to die.","Fool.", "Worthless.","Muhahah.","Good Luck, You'll Need it.","TROLLFAIC"}
22
23
-- Main
24
function main(mouse)
25
while true do wait(1/30)
26
local look = CFrame.new(torso.Position, torso.Position + mouse.Hit.lookVector)
27
28
-- Reset parts
29
parts = {}
30
31
-- Get parts
32
for x = -20, 20, 10 do
33
for y = -20, 20, 10 do
34
for z = -30, -10, 10 do
35
local pos = look * Vector3.new(x, y, z)
36
getPartsInRegion3(
37
Region3.new(
38
pos + Vector3.new(1,1,1)*-9,
39
pos + Vector3.new(1,1,1)* 9
40
),
41
parts
42
)
43
end
44
end
45
end
46
47
-- Mouse down
48
if mouseDown then
49
-- Create dif and bodies
50
for _, part in pairs(parts) do
51
if part.Name == "Earth" and not disabled[part] then
52
if not frames[part] and part ~= lastTower then
53
frames[part] = look:toObjectSpace(part.CFrame)
54
55
part:ClearAllChildren()
56
part.Anchored = false
57
58
-- Create bodies
59
createBody("Position", part)
60
createBody("Gyro", part)
61
end
62
end
63
end
64
65
-- Move bodies
66
for part in pairs(frames) do
67
local bodyPos = part:FindFirstChild("BodyPosition")
68
local bodyGyr = part:FindFirstChild("BodyGyro")
69
70
-- Bodies exist
71
if bodyPos and bodyGyr then
72
local dif = look * frames[part]
73
74
bodyPos.position = dif.p
75
bodyGyr.cframe = dif
76
else
77
frames[part] = nil
78
end
79
end
80
else
81
for part in pairs(frames) do
82
if part.Name == "Earth" then
83
frames[part] = nil
84
85
part:ClearAllChildren()
86
end
87
end
88
end
89
end
90
end
91
92
-- On key change
93
function onKeyChange(mouse, key, state)
94
-- Raise earth
95
if key == "e" and state and not raisingEarth then
96
game:GetService("Chat"):Chat(char.Head, raisechats[math.random(1,#raisechats)], Enum.ChatColor.Red)
97
raisingEarth = true
98
while keysDown[key] do
99
local torsoY = torso.Position.y + 3
100
local pos = planeY(torso.Position, 0.4 - 4/2)
101
local dir = planeY(mouse.Hit.lookVector).unit
102
local frame = CFrame.new(pos, pos + dir) * CFrame.new(r(-10, 10), 0, r(-20, -5))
103
104
-- Create earth part
105
local part = createEarth(workspace)
106
part.Anchored = true
107
part.Size = Vector3.new(4, 4, 4)
108
disabled[part] = true
109
110
-- Raise earth
111
for i = 1, 4 do i = i/4
112
part.CFrame = frame * CFrame.new(0, (torsoY - frame.y)*i, 0)
113
wait(1/10000000)
114
if not part.Anchored then
115
break
116
end
117
end
118
119
disabled[part] = nil
120
part.Anchored = false
121
122
wait(1/100)
123
end
124
raisingEarth = false
125
126
127
128
129
130
elseif key == "c" and state and not raisingEarth then
131
game:GetService("Chat"):Chat(char.Head, raisechats[math.random(1,#raisechats)], Enum.ChatColor.Red)
132
raisingEarth = true
133
while keysDown[key] do
134
local torsoY = torso.Position.y + 3
135
local pos = planeY(torso.Position, 0.4 - 4/2)
136
local dir = planeY(mouse.Hit.lookVector).unit
137
local frame = CFrame.new(pos, pos + dir) * CFrame.new(r(-10, 10), 0, r(-20, -5))
138
139
-- Create earth part
140
local part = createEarth(workspace)
141
part.Anchored = true
142
part.Size = Vector3.new(2, 2, 2)
143
disabled[part] = true
144
145
-- Raise earth
146
for i = 1, 4 do i = i/4
147
part.CFrame = frame * CFrame.new(0, (torsoY - frame.y)*i, 0)
148
wait(1/10000000)
149
if not part.Anchored then
150
break
151
end
152
end
153
154
disabled[part] = nil
155
part.Anchored = false
156
157
wait(1/100)
158
end
159
raisingEarth = false
160
161
162
163
-- Push earth
164
elseif key == "f" and state then
165
game:GetService("Chat"):Chat(char.Head, Taunts[math.random(1,#Taunts)], Enum.ChatColor.Red)
166
for _, part in pairs(parts) do
167
if part.Name == "Earth" and part ~= lastTower then
168
part:ClearAllChildren()
169
part.Anchored = false
170
171
-- Add force
172
local bodyForce = createBody("Force", part)
173
bodyForce.force = mouse.Hit.lookVector*1.5e4 * part:GetMass()
174
175
game.Debris:AddItem(bodyForce, 1/30)
176
177
-- Disable part
178
disabled[part] = true
179
delay(1, function()
180
disabled[part] = nil
181
end)
182
end
183
end
184
185
-- Break earth
186
elseif key == "b" and state then
187
game:GetService("Chat"):Chat(char.Head, "Earth, BREAK!", Enum.ChatColor.Red)
188
for part in pairs(frames) do
189
if part.Size == Vector3.new(4, 4, 4) then
190
for x = -1, 2, 2 do
191
for y = -1, 2, 2 do
192
for z = -1, 1, 2 do
193
local oPart = createEarth(workspace)
194
oPart.Size = Vector3.new(2, 2, 2)
195
oPart.CFrame = part.CFrame * CFrame.new(x*1.1, y*1.1, z*1.1)
196
end
197
end
198
end
199
part:Destroy()
200
end
201
202
end
203
204
for part in pairs(frames) do
205
if part.Size == Vector3.new(25, 15, 25) then
206
for x = -3, 2, 2 do
207
for y = -3, 2, 2 do
208
for z = -3, 1, 2 do
209
local oPart = createEarth(workspace)
210
oPart.Size = Vector3.new(2, 2, 2)
211
oPart.CFrame = part.CFrame * CFrame.new(x*1.1, y*1.1, z*1.1)
212
end
213
end
214
end
215
part:Destroy()
216
end
217
218
end
219
220
for part in pairs(frames) do
221
if part.Size == Vector3.new(2, 2, 2) then
222
for x = -0.5, 2, 2 do
223
for y = -0.5, 2, 2 do
224
for z = -0.5, 1, 2 do
225
local oPart = createEarth(workspace)
226
oPart.Size = Vector3.new(1, 1, 1)
227
oPart.CFrame = part.CFrame * CFrame.new(x*1.1, y*1.1, z*1.1)
228
end
229
end
230
end
231
part:Destroy()
232
end
233
234
end
235
236
237
238
239
-- Raise tower
240
elseif key == "r" and state and not raisingTower then
241
game:GetService("Chat"):Chat(char.Head, raisechats[math.random(1,#raisechats)], Enum.ChatColor.Red)
242
raisingTower = true
243
lastTower = nil
244
if torso.Position.y - 5/2 < 20.4 then
245
local part = createEarth(workspace)
246
part.Anchored = true
247
disabled[part] = true
248
249
for i = 0, 20, 4 do
250
part.Size = Vector3.new(5, i, 5)
251
part.CFrame = CFrame.new(torso.Position.x, 0.4 + part.Size.y/2, torso.Position.z)
252
torso.CFrame = (torso.CFrame - torso.CFrame.p) + Vector3.new(torso.Position.x, part.Position.y + part.Size.y/2 + 5/2, torso.Position.z)
253
wait(1/30)
254
end
255
256
lastTower = part
257
258
disabled[part] = nil
259
part.Anchored = false
260
end
261
raisingTower = false
262
263
264
-- Raise wall
265
elseif key == "t" and state and not wall then
266
game:GetService("Chat"):Chat(char.Head, raisechats[math.random(1,#raisechats)], Enum.ChatColor.Red)
267
wall = true
268
lastWall = nil
269
if torso.Position.y - 5/2 < 20.4 then
270
local part = createEarth(workspace)
271
part.Anchored = true
272
disabled[part] = true
273
274
for i = 0, 1, 20 do
275
part.Size = Vector3.new(25, 15, 25)
276
part.CFrame = CFrame.new(torso.Position.x, 0.4 + part.Size.y/2, torso.Position.z)
277
torso.CFrame = (torso.CFrame - torso.CFrame.p) + Vector3.new(torso.Position.x, part.Position.y + part.Size.y/2 + 5/2, torso.Position.z)
278
wait(1/30)
279
end
280
281
lastWall = part
282
283
disabled[part] = nil
284
part.Anchored = false
285
end
286
wall = false
287
288
-- Ground attack
289
elseif key == "g" and state and not groundAttack then
290
game:GetService("Chat"):Chat(char.Head, Taunts[math.random(1,#Taunts)], Enum.ChatColor.Red)
291
groundAttack = true
292
delay(1, function()
293
groundAttack = false
294
end)
295
296
local dir = planeY(mouse.Hit.p - torso.Position).unit
297
local pos = planeY(torso.Position, 0.4 + 1) + dir*5
298
299
local ground = {}
300
301
delay(5, function()
302
for i = 1, 20 do
303
for _, part in pairs(ground) do
304
if part.Anchored then
305
part.CFrame = part.CFrame + Vector3.new(0, -1/7, 0)
306
end
307
end
308
wait(1/30)
309
end
310
for _, part in pairs(ground) do
311
if part.Anchored then
312
part:Destroy()
313
end
314
end
315
end)
316
317
for i = 1, 10 do
318
local hit, pos2 = rayCast(pos, dir*5, {char})
319
320
local part = createEarth(workspace)
321
part.Anchored = true
322
part.Size = Vector3.new(4, 4, 4)
323
part.CFrame = CFrame.new(pos2, pos2 + dir) * CFrame.Angles(math.rad(-50), 0, 0) + Vector3.new(0, -0, 0)
324
325
ground[#ground + 1] = part
326
327
-- Add force
328
if hit then
329
local mass = hit:GetMass()
330
331
-- Hit player
332
for _, oPlayer in pairs(game.Players:GetPlayers()) do
333
if oPlayer.Character and oPlayer.Character:FindFirstChild("Torso") and hit:IsDescendantOf(oPlayer.Character) then
334
hit = oPlayer.Character.Torso
335
mass = 20
336
end
337
end
338
339
if hit.Name ~= "Torso" then
340
hit:ClearAllChildren()
341
end
342
hit.Anchored = false
343
344
-- Add force
345
local bodyForce = createBody("Force", hit)
346
bodyForce.force = (dir + Vector3.new(0, 0.2, 0)).unit*1e4 * mass
347
348
game.Debris:AddItem(bodyForce, 1/30)
349
break
350
end
351
352
pos = pos2
353
wait(1/20)
354
end
355
end
356
end
357
358
--- CORE CODE BELOW --- CORE CODE BELOW --- CORE CODE BELOW ---
359
--- CORE CODE BELOW --- CORE CODE BELOW --- CORE CODE BELOW ---
360
--- CORE CODE BELOW --- CORE CODE BELOW --- CORE CODE BELOW ---
361
362
-- Clear old tool
363
player.Backpack:ClearAllChildren()
364
365
-- Create tool
366
local tool = Instance.new("HopperBin")
367
tool.Parent = player.Backpack
368
tool.Name = "Dark Bending"
369
370
-- Tool selected
371
tool.Selected:connect(function(mouse)
372
mouse.Icon = "rbxasset://textures\\GunCursor.png"
373
374
-- Mouse events
375
mouse.Button1Down:connect(function()
376
mouseDown = true
377
end)
378
mouse.Button1Up:connect(function()
379
mouseDown = false
380
end)
381
mouse.KeyDown:connect(function(key)
382
keysDown[key:lower()] = true
383
onKeyChange(mouse, key:lower(), true)
384
end)
385
mouse.KeyUp:connect(function(key)
386
keysDown[key:lower()] = false
387
onKeyChange(mouse, key:lower(), false)
388
end)
389
390
-- Call main
391
main(mouse)
392
end)
393
394
--- LIBRARY BELOW --- LIBRARY BELOW --- LIBRARY BELOW ---
395
--- LIBRARY BELOW --- LIBRARY BELOW --- LIBRARY BELOW ---
396
--- LIBRARY BELOW --- LIBRARY BELOW --- LIBRARY BELOW ---
397
398
-- Ray cast
399
function rayCast(pos, dir, ignore)
400
return workspace:FindPartOnRayWithIgnoreList(Ray.new(pos, dir), ignore)
401
end
402
403
-- Create body
404
function createBody(type, path)
405
local body = Instance.new("Body" .. type)
406
if type == "Gyro" then
407
body.maxTorque = Vector3.new(math.huge, math.huge, math.huge)
408
elseif type ~= "Force" then
409
body.maxForce = Vector3.new(math.huge, math.huge, math.huge)
410
end
411
body.Parent = path
412
return body
413
end
414
415
-- Get parts in region 3
416
function getPartsInRegion3(region, parts)
417
repeat
418
local regParts = workspace:FindPartsInRegion3WithIgnoreList(region, parts, 100)
419
for i, part in pairs(regParts) do
420
parts[#parts + 1] = part
421
end
422
until #regParts < 100
423
end
424
425
-- Random
426
function r(min, max)
427
return math.random()*(max - min) + min
428
end
429
430
-- Plane y
431
function planeY(v, y)
432
return Vector3.new(v.x, y or 0, v.z)
433
end
434
435
-- Create earth
436
function createEarth(path)
437
local part = createPart("Earth", path)
438
part.BrickColor = BrickColor.new("Really black")
439
part.Material = "Slate"
440
m = Instance.new("Fire",part)
441
m.Heat = 10
442
part.Parent = path
443
return part
444
end
445
446
-- Create part
447
function createPart(name, path)
448
local part = Instance.new("Part")
449
part.FormFactor = "Symmetric"
450
part.BottomSurface = "Smooth"
451
part.TopSurface = "Smooth"
452
part.Size = Vector3.new(1, 1, 1)
453
part.Name = name
454
part.Parent = path
455
return part
456
end