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