View difference between Paste ID: whMT9dpb and 0p0PZ2Fh
SHOW: | | - or go back to the newest paste.
1
--https://github.com/Mokiros/roblox-FE-compatibility
2
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
3
local Player,game,owner = owner,game
4
local RealPlayer = Player
5
do
6
	print("FE Compatibility code V2 by Mokiros")
7
	local RealPlayer = RealPlayer
8
	script.Parent = RealPlayer.Character
9
10
	--Fake event to make stuff like Mouse.KeyDown work
11
	local Disconnect_Function = function(this)
12
		this[1].Functions[this[2]] = nil
13
	end
14
	local Disconnect_Metatable = {__index={disconnect=Disconnect_Function,Disconnect=Disconnect_Function}}
15
	local FakeEvent_Metatable = {__index={
16
		Connect = function(this,f)
17
			local i = tostring(math.random(0,10000))
18
			while this.Functions[i] do
19
				i = tostring(math.random(0,10000))
20
			end
21
			this.Functions[i] = f
22
			return setmetatable({this,i},Disconnect_Metatable)
23
		end
24
	}}
25
	FakeEvent_Metatable.__index.connect = FakeEvent_Metatable.__index.Connect
26
	local function fakeEvent()
27
		return setmetatable({Functions={}},FakeEvent_Metatable)
28
	end
29
30
	--Creating fake input objects with fake variables
31
    local FakeMouse = {Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent(),Button2Up=fakeEvent(),Button2Down=fakeEvent()}
32
    FakeMouse.keyUp = FakeMouse.KeyUp
33
    FakeMouse.keyDown = FakeMouse.KeyDown
34
	local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
35
	local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
36
		CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
37
	end}
38
	--Merged 2 functions into one by checking amount of arguments
39
	CAS.UnbindAction = CAS.BindAction
40
41
	--This function will trigger the events that have been :Connect()'ed
42
	local function TriggerEvent(self,ev,...)
43
		for _,f in pairs(self[ev].Functions) do
44
			f(...)
45
		end
46
	end
47
	FakeMouse.TriggerEvent = TriggerEvent
48
	UIS.TriggerEvent = TriggerEvent
49
50
	--Client communication
51
	local Event = Instance.new("RemoteEvent")
52
	Event.Name = "UserInput_Event"
53
	Event.OnServerEvent:Connect(function(plr,io)
54
	    if plr~=RealPlayer then return end
55
		FakeMouse.Target = io.Target
56
		FakeMouse.Hit = io.Hit
57
		if not io.isMouse then
58
			local b = io.UserInputState == Enum.UserInputState.Begin
59
			if io.UserInputType == Enum.UserInputType.MouseButton1 then
60
				return FakeMouse:TriggerEvent(b and "Button1Down" or "Button1Up")
61
			end
62
			if io.UserInputType == Enum.UserInputType.MouseButton2 then
63
				return FakeMouse:TriggerEvent(b and "Button2Down" or "Button2Up")
64
			end
65
			for _,t in pairs(CAS.Actions) do
66
				for _,k in pairs(t.Keys) do
67
					if k==io.KeyCode then
68
						t.Function(t.Name,io.UserInputState,io)
69
					end
70
				end
71
			end
72
			FakeMouse:TriggerEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
73
			UIS:TriggerEvent(b and "InputBegan" or "InputEnded",io,false)
74
	    end
75
	end)
76
	Event.Parent = NLS([==[local Event = script:WaitForChild("UserInput_Event")
77
	local Mouse = owner:GetMouse()
78
	local UIS = game:GetService("UserInputService")
79
	local input = function(io,RobloxHandled)
80
		if RobloxHandled then return end
81
		--Since InputObject is a client-side instance, we create and pass table instead
82
		Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
83
	end
84
	UIS.InputBegan:Connect(input)
85
	UIS.InputEnded:Connect(input)
86
87
	local h,t
88
	--Give the server mouse data every second frame, but only if the values changed
89
	--If player is not moving their mouse, client won't fire events
90
	local HB = game:GetService("RunService").Heartbeat
91
	while true do
92
		if h~=Mouse.Hit or t~=Mouse.Target then
93
			h,t=Mouse.Hit,Mouse.Target
94
			Event:FireServer({isMouse=true,Target=t,Hit=h})
95
		end
96
		--Wait 2 frames
97
		for i=1,2 do
98
			HB:Wait()
99
		end
100
	end]==],script)
101
102
	----Sandboxed game object that allows the usage of client-side methods and services
103
	--Real game object
104
	local RealGame = game
105
106
	--Metatable for fake service
107
	local FakeService_Metatable = {
108
		__index = function(self,k)
109
			local s = rawget(self,"_RealService")
110
			if s then
111
				return typeof(s[k])=="function"
112
				and function(_,...)return s[k](s,...)end or s[k]
113
			end
114
		end,
115
		__newindex = function(self,k,v)
116
			local s = rawget(self,"_RealService")
117
			if s then s[k]=v end
118
		end
119
	}
120
	local function FakeService(t,RealService)
121
		t._RealService = typeof(RealService)=="string" and RealGame:GetService(RealService) or RealService
122
		return setmetatable(t,FakeService_Metatable)
123
	end
124
125
	--Fake game object
126
	local FakeGame = {
127
		GetService = function(self,s)
128
			return rawget(self,s) or RealGame:GetService(s)
129
		end,
130
		Players = FakeService({
131
			LocalPlayer = FakeService({GetMouse=function(self)return FakeMouse end},Player)
132
		},"Players"),
133
		UserInputService = FakeService(UIS,"UserInputService"),
134
		ContextActionService = FakeService(CAS,"ContextActionService"),
135
		RunService = FakeService({
136
			_btrs = {},
137
			RenderStepped = RealGame:GetService("RunService").Heartbeat,
138
			BindToRenderStep = function(self,name,_,fun)
139
				self._btrs[name] = self.Heartbeat:Connect(fun)
140
			end,
141
			UnbindFromRenderStep = function(self,name)
142
				self._btrs[name]:Disconnect()
143
			end,
144
		},"RunService")
145
	}
146
	rawset(FakeGame.Players,"localPlayer",FakeGame.Players.LocalPlayer)
147
	FakeGame.service = FakeGame.GetService
148
	FakeService(FakeGame,game)
149
	--Changing owner to fake player object to support owner:GetMouse()
150
	game,owner = FakeGame,FakeGame.Players.LocalPlayer
151
end
152
153
-- pcall(function()
154
-- script.DSource.Value = ""
155
-- script.DSource:Destroy()
156
-- end)
157
-- script.Parent = nil
158
159
game:service'RunService':UnbindFromRenderStep('Mug_Anims')
160
ply=game:service'Players'.LocalPlayer
161
162
repeat wait()until ply~=nil
163
164
char=ply.Character
165
torso=char.Torso
166
167
rarm,larm=char['Right Arm'],char['Left Arm']
168
rleg,lleg=char['Right Leg'],char['Left Leg']
169
rshl,lshl=torso['Right Shoulder'],torso['Left Shoulder']
170
rhip,lhip=torso['Right Hip'],torso['Left Hip']
171
172
bcol=BrickColor.new
173
cfn,md,mr,v3n=CFrame.new,math.rad,math.random,Vector3.new
174
ang=function(x,y,z)return CFrame.Angles(x or 0,y or 0,z or 0)end
175
Debris=game:service'Debris'
176
m={}
177
m.tau=math.pi*2
178
m.floatforce = 196.25
179
numkp=NumberSequenceKeypoint.new
180
181
hum_root=char.HumanoidRootPart
182
183
mouse=ply:GetMouse()
184
185
function l(a,x,y,z,xx,yy,zz)
186
    if string.find(tostring(a),',') == nil then
187
    return (a.CFrame*CFrame.new(x or 0,y or 0,z or 0))*CFrame.Angles(xx or 0,yy or 0, zz or 0)
188
    else return (a * CFrame.new(x or 0,y or 0,z or 0))*CFrame.Angles(xx or 0,yy or 0,zz or 0)
189
    end
190
end
191
192
pcall(function() char.Stick:Destroy() end) --- Destroys Physical Tool
193
Weapon = Instance.new("Model",char) Weapon.Name = 'Stick'
194
Instance.new('BoolValue',Weapon).Name='Mug_Did'
195
do --UTILITIES
196
197
function Create(ClassName)
198
    local obj=Instance.new(ClassName)
199
    return function(props)
200
        obj.Parent=Weapon
201
        for key,val in pairs(props)do
202
            if key=='_P'then
203
                obj['Parent']=val
204
            elseif i=='_C'then
205
                obj[val[1]]:connect(val[2])
206
            else
207
                obj[key]=val
208
            end
209
        end
210
        return obj
211
    end
212
end
213
214
do --CREATION
215
216
Weld = function(p0,p1,x,y,z,rx,ry,rz,par)
217
        p0.Position = p1.Position
218
        local w = Instance.new('Motor',game:service'JointsService')
219
        w.Part0 = p1
220
        w.Part1 = p0
221
        w.C0 = CFrame.new(x or 0,y or 0,z or 0)*CFrame.Angles(rx or 0,ry or 0,rz or 0)
222
        w.MaxVelocity = .1
223
        return w
224
end
225
Cur_Parent=nil
226
current_mat=nil
227
anchor=false
228
Part = function(x,y,z,color,tr,cc,an,parent)
229
        local p = Instance.new('Part',parent or Cur_Parent or Weapon)
230
        p.formFactor = 'Custom'
231
        p.Locked = true
232
        p.Position=torso.Position
233
        p.Size = Vector3.new(x,y,z)
234
        p.BrickColor = BrickColor.new(color or 'White')
235
        p.CanCollide = cc or false
236
        p.Anchored = an or anchor or false
237
        p.Transparency = tr or 0
238
        p.Material=current_mat or'SmoothPlastic'
239
        for i,v in pairs{'TopSurface','BottomSurface','FrontSurface','BackSurface','LeftSurface','RightSurface'}do
240
                p[v]=10
241
        end
242
        return p
243
end
244
Wedge = function(x,y,z,color,tr,cc,an,parent)
245
    local p = Instance.new('WedgePart',parent or Cur_Parent or Weapon)
246
    p.formFactor = 'Custom'
247
    p.Size = Vector3.new(x,y,z)
248
    p.BrickColor = BrickColor.new(color or 'White')
249
    p.CanCollide = cc or false
250
    p.Anchored = an or false
251
    p.Transparency = tr or 0
252
    p.Material=current_mat or'SmoothPlastic'
253
    for i,v in pairs{'TopSurface','BottomSurface','FrontSurface','BackSurface','LeftSurface','RightSurface'}do
254
        p[v]=10
255
    end
256
    return p
257
end
258
259
Meshes = {Diamond='9756362';Spikeball='9982590';Table='111868131';
260
Egg='1527559';Ring='3270017';Bullet='2697549';Grass='1080954';
261
Shark='82821384';Sword='12221720';Crown='10688643';Spike='1033714';
262
Leaf='48100239';Fist='65322375';Chakram='19251107';Crown='20329976';Spring='9753878';
263
Tree='8564125';Fireball='10587413';DiamondBall='10917418'}
264
265
Textures = {Leaf='rbxassetid://48047287';White='rbxassetid://5736319'}
266
267
Mesh = function(par,num,x,y,z,tex)
268
        local msh = _
269
        if num == 1 then msh = Instance.new("CylinderMesh",par)
270
        elseif num == 2 then msh = Instance.new("SpecialMesh",par) msh.MeshType = 3
271
        elseif num == 3 then msh = Instance.new("SpecialMesh",par) msh.MeshType = 6
272
        elseif num == 4 then msh = Instance.new("SpecialMesh",par) msh.MeshType = 'Wedge'
273
        elseif type(num) == 'string' then msh = Instance.new("SpecialMesh",par)
274
            if num=='Torso'then msh.MeshType=1 else
275
        msh.MeshId = string.find(num,'://') == nil and 'rbxassetid://'..Meshes[num] or num end
276
        end
277
        msh.Scale = Vector3.new(x or 1,y or 1,z or 1)
278
        if tex then
279
            msh.TextureId = Textures[tex] or tex or ''
280
        end
281
        return msh
282
end
283
284
end
285
286
function HSVtoRGB(h, s, v)
287
    h = (h % 1) * 6
288
    local f = h % 1
289
    local p = v * (1 - s)
290
    local q = v * (1 - s * f)
291
    local t = v * (1 - s * (1 - f))
292
    if h < 1 then
293
        return v, t, p
294
    elseif h < 2 then
295
        return q, v, p
296
    elseif h < 3 then
297
        return p, v, t
298
    elseif h < 4 then
299
        return p, q, v
300
    elseif h < 5 then
301
        return t, p, v
302
    else
303
        return v, p, q
304
    end
305
end
306
307
function Edit(obj,props)
308
    local objects={}
309
    if type(obj)=='table'then objects=obj
310
    return function(props)
311
        obj.Parent=Weapon
312
        for _,obj in pairs(objects)do
313
            for key,val in pairs(props)do
314
                if key=='_P'then
315
                    obj['Parent']=val
316
                elseif i=='_F'then
317
                    val(objects)()
318
                else
319
                    succes,err=pcall(function()return obj[key]end)
320
                    if succes then
321
                        obj[key]=val
322
                    end
323
                end
324
            end
325
        end    
326
    end
327
end
328
329
end
330
331
function calcgrav(obj)
332
local total=0
333
local function add(a)
334
    for i,v in pairs(a:children())do
335
        if v:IsA'BasePart'then
336
            total=total+v:GetMass()*m.floatforce
337
        elseif v:IsA'Hat'then
338
            total=total+v.Handle:GetMass()*m.floatforce
339
        else add(v)end
340
    end
341
end
342
add(obj or char)
343
return total
344
end
345
346
function findHum(pos,rad,hum2)
347
    local hums={}
348
    function check(a)
349
        local res=false
350
        for i,ho in pairs(hums)do
351
            if a==ho then res=true end
352
        end
353
        return res
354
    end
355
    for i,v in pairs(Workspace:children())do
356
        if v:IsA'Model'and v~=char and v~=(hum2 or char) then
357
            for i,q in pairs(v:children())do
358
            if q:IsA'Humanoid' and q.Parent:FindFirstChild'Torso'and(q.Torso.Position-pos).magnitude < rad then
359
                    if not check(q)then
360
                        table.insert(hums,q)
361
                    end
362
                end
363
            end
364
        end
365
    end
366
    return hums,pos
367
end
368
369
udim=function(a,b,c,d)
370
if type(a)=='string'then
371
x,y=tostring(a):match('(%d*%.*%d*),(%d*%.*%d*)')
372
return UDim2.new(x or 0,x2 or 0,y or 0,y2 or 0)
373
else
374
return UDim2.new(a or 0,c or 0,b or 0,d or 0)
375
end end
376
377
function getHum(what,b)local res
378
    for i,v in pairs(what:children())do
379
        if v:IsA'Humanoid' then
380
            res=v
381
        end
382
    end
383
    return res
384
end
385
386
end
387
388
do --ANIMATIONSYSTEM DECLARATIONS
389
cont_anim=true
390
391
rarm,larm=char['Right Arm'],char['Left Arm']
392
rleg,lleg=char['Right Leg'],char['Left Leg']
393
394
torw=char.HumanoidRootPart.RootJoint
395
neck=torso.Neck
396
rs,ls=torso['Right Shoulder'],torso['Left Shoulder']
397
rh,lh=torso['Right Hip'],torso['Left Hip']
398
399
ort=cfn(0,0,0,-1,0,0,0,0,1,0,1,-0)
400
norig=cfn(0,1,0,-1,-0,-0,0,0,1,0,1,0)
401
402
rw,lw=nil,nil
403
arms=nil
404
405
r_shl_c0=cfn(1,0.5,0)--,0,0,1,0,1,0,-1,-0,-0)
406
r_shl_c1=cfn(-0.5,0.5,0)--,0,0,1,0,1,0,-1,-0,-0)
407
408
l_shl_c0=cfn(-1,0.5,0)--,0,0,1,0,1,0,-1,-0,-0)
409
l_shl_c1=cfn(0.5,0.5,0)--,0,0,1,0,1,0,-1,-0,-0)
410
411
-- l_shl_c0=cfn(-1,0.5,0)--,-0,-0,-1,0,1,0,1,0,0)
412
-- l_shl_c1=cfn(0.5,0.5,0)--,-0,-0,-1,0,1,0,1,0,0)
413
414
r_hip_c0=cfn(1,-1,0)--,0,0,1,0,1,0,-1,-0,-0)
415
r_hip_c1=cfn(0.5,1,0)--,0,0,1,0,1,0,-1,-0,-0)
416
417
l_hip_c0=cfn(-1,-1,0)--,-0,-0,-1,0,1,0,1,0,0)
418
l_hip_c1=cfn(-0.5,1,0)--,-0,-0,-1,0,1,0,1,0,0)
419
420
421
orig_rhip_c0=cfn(1,-1,0,0,0,1,0,1,0,-1,-0,-0)
422
orig_lhip_c0=cfn(-1,-1,0,-0,-0,-1,0,1,0,1,0,0)
423
424
rw_cf=r_shl_c0
425
lw_cf=l_shl_c0
426
427
rw2_cf=r_hip_c0
428
lw2_cf=l_hip_c0
429
end
430
431
do ---ANIMATIONSYSTEM
432
function Lock(which)
433
    arms={char:FindFirstChild'Right Arm',char:FindFirstChild'Left Arm'}
434
    legs={char:FindFirstChild'Right Leg',char:FindFirstChild'Left Leg'}
435
    local sh={torso:FindFirstChild'Right Shoulder',torso:FindFirstChild'Left Shoulder'}
436
    local sh2={torso:FindFirstChild'Right Hip',torso:FindFirstChild'Left Hip'}
437
    -- print(unpack(sh),unpack(arms))
438
    if arms and torso and sh and legs and sh2 then
439
        if which=='R'then
440
            if not rw then
441
                sh[1].Part1=nil
442
                rw=Instance.new('Weld')
443
                rw.Part0=torso
444
                rw.Parent=torso
445
                rw.Part1=arms[1]
446
                rw.C0=rw_cf
447
                rw.C1=r_shl_c1
448
            else
449
                rw:Destroy() rw=nil
450
                sh[1].Part0=torso sh[1].Part1=arms[1]
451
            end
452
        elseif which=='L'then
453
             if not lw then
454
                sh[2].Part1=nil
455
                lw=Instance.new('Weld')
456
                lw.Part0=torso
457
                lw.Parent=torso
458
                lw.Part1=arms[2]
459
                lw.C0=lw_cf
460
                lw.C1=l_shl_c1
461
            else
462
                lw:Destroy()lw=nil
463
                sh[2].Part0=torso sh[2].Part1=arms[2]
464
            end
465
        end
466
        if which=='RR'then
467
            if not rw2 then
468
                sh2[1].Part1=nil
469
                rw2=Instance.new('Weld')
470
                rw2.Part0=torso
471
                rw2.Parent=torso
472
                rw2.Part1=legs[1]
473
                rw2.C0=rw2_cf
474
                rw2.C1=r_hip_c1
475
            else
476
                rw2.Parent=nil rw2=nil
477
                sh2[1].Part0=torso sh2[1].Part1=legs[1]
478
            end
479
        elseif which=='LL'then
480
             if not lw2 then
481
                sh2[2].Part1=nil
482
                lw2=Instance.new('Weld')
483
                lw2.Part0=torso
484
                lw2.Parent=torso
485
                lw2.Part1=legs[2]
486
                lw2.C0=lw2_cf
487
                lw2.C1=l_hip_c1
488
            else
489
                lw2.Parent=nil lw2=nil
490
                sh2[2].Part0=torso sh2[2].Part1=legs[2]
491
            end
492
        end
493
    end
494
end
495
496
function Anim(what)
497
    local weld=getfenv()[what]
498
    return function(where)
499
        if weld then
500
            target_pos[what]=def_pos[what]*where
501
            -- waitfor(weld,where)
502
        end
503
    end
504
end
505
506
char_hum=getHum(char)
507
    
508
spd={
509
    rw=.1;lw=.1;rw2=.1;lw2=.1;torw=.1;neck=.1;hw=.1;
510
}
511
setmetatable(spd,{
512
    __newindex=function(tab,i,v)
513
        if i=='all'then
514
            for o,q in pairs(spd)do
515
                spd[o]=v
516
            end
517
    end   end
518
})
519
def_pos={
520
    rw=rw_cf;
521
    lw=lw_cf;
522
    rw2=rw2_cf;
523
    lw2=lw2_cf;
524
    torw=ort;
525
    neck=norig;
526
    hw=cfn();
527
    -- shield_w=cfn(-.25,0,0)*ang(math.pi,math.pi/2);
528
}
529
target_pos={
530
    rw=rw_cf;
531
    lw=lw_cf;
532
    rw2=def_pos.rw2;
533
    lw2=def_pos.lw2;
534
    torw=def_pos.torw;
535
    neck=def_pos.neck;
536
    hw=cfn();
537
}
538
can_anim={
539
    rw=true;lw=true;rw2=true;lw2=true;torw=true;neck=true;
540
}
541
game:service'RunService':BindToRenderStep('Mug_Anims',5,function()
542
    if cont_anim then
543
        if rw and can_anim.rw then
544
            rw.C0=rw.C0:lerp(target_pos.rw,spd.rw)
545
        end
546
        if lw and can_anim.lw then
547
            lw.C0=lw.C0:lerp(target_pos.lw,spd.lw)
548
        end
549
        if rw2 and can_anim.rw2 then
550
            rw2.C0=rw2.C0:lerp(target_pos.rw2,spd.rw2)
551
        end
552
        if lw2 and can_anim.lw2 then
553
            lw2.C0=lw2.C0:lerp(target_pos.lw2,spd.lw2)
554
        end
555
        if torw and can_anim.torw then
556
            torw.C0=torw.C0:lerp(target_pos.torw,spd.torw)
557
        end
558
        if neck and can_anim.neck then
559
            neck.C0=neck.C0:lerp(target_pos.neck,spd.neck)
560
        end
561
        if hw then
562
            hw.C1=hw.C1:lerp(target_pos.hw,spd.hw)
563
        end
564
    end
565
end)
566
end
567
568
function tag(a,b)
569
    if type(b)=='string'then
570
        if not getfenv()[b]then
571
            getfenv()[b]={}
572
        end
573
        table.insert(getfenv()[b],a)
574
    else
575
        table.insert(b,a)
576
    end
577
end
578
hinge=Part(.25,.5,.25)Mesh(hinge,1)
579
hw=Weld(hinge,torso,.9,-.85,0,0,-math.pi/2,math.pi/2)
580
restpos=hw.C0
581
582
d=Part(.1,.1,.1,'Black')Weld(d,hinge,0,.25)Mesh(d,1,1,.1)
583
d=Part(.1,.1,.1,'Black')Weld(d,hinge,0,-.25)Mesh(d,1,1,.1)
584
585
p=Part(.75,.5,.1)Mesh(p,3,1,1,.75)
586
Create'Motor'{_P=p;Part0=p;Part1=hinge;
587
    C0=cfn(.75/2,0,0)*ang(math.pi/2);
588
    C1=cfn(0,0,0)*ang(math.pi/2);
589
    MaxVelocity=.1
590
}
591
592
p=Part(.75,.5,.1)Mesh(p,3,1,1,.5)
593
mo=Create'Motor'{_P=p;Part0=p;Part1=hinge;
594
    C0=cfn(-.75/2,0,0)*ang(-math.pi/2,0);
595
    C1=cfn(0,0,-.15/2)*ang(-math.pi/2,0,md'45'+md'135');
596
    MaxVelocity=.15
597
}
598
599
local tas={}
600
601
Spawn(function()
602
    while wait()do
603
        for e,o in ipairs(tas)do
604
            if o[2].Parent~=nil then
605
                o[1]=o[1]*ang(0,md'5')          
606
                for i,v in ipairs(o[2]:children())do
607
                    if v:IsA'Part'then
608
                        v.CFrame=l(o[1],math.cos(i*m.tau/6)*o[2].MVal.Value,0,math.sin(i*m.tau/6)*o[2].MVal.Value)
609
                    end
610
                end
611
            else
612
                table.remove(tas,e)
613
            end
614
        end
615
    end
616
end)
617
whirr_snd=Create'Sound'{_P=Weapn;SoundId='rbxassetid://278329638';Pitch=1.5;Volume=1}
618
droning_snd=Create'Sound'{_P=Weapon;SoundId='rbxassetid://275641634';Pitch=1.75;Volume=.1;Looped=true}
619
function lol()
620
    Lock'R'
621
    
622
    whirr_snd:Play()
623
    Anim'rw'(ang(md'75')*ang(0,md'90'))
624
    hw.Part0=rarm hw.C0=cfn(0,-1.1,0)*ang(-math.pi/2,md'25')
625
    mo.DesiredAngle=md'-135'
626
    wait'.25'
627
    cone=Part(1,1,1,'Cyan',.5)msh=Mesh(cone,'Spike',0,0,0)
628
    w=Weld(cone,p,0,0,0,math.pi/2)
629
    for i=0,1,.1 do
630
        w.C0=cfn(0,0,-1.75*i)*ang(math.pi/2)
631
        msh.Scale=v3n(i*.75,i*4.5,i*.75)
632
        wait()
633
    end
634
    wait()
635
    local obj,pos=Workspace:FindPartOnRay(Ray.new(l(cone).p,v3n(0,-10,0)),char)
636
    if obj and pos then
637
        local r=.75
638
        local ps={}
639
        local center=cfn(pos)
640
        local model=Create'Model'{_P=Weapon}
641
        for i=0,m.tau,m.tau/6 do
642
            local p=Part(.1,.1,.1) p.Anchored=true Mesh(p,2).Name='m'
643
            p.Color=Color3.new(HSVtoRGB(0,0,1))
644
            p.Parent=model
645
            p.CFrame=l(center,math.cos(i)*r,0,math.sin(i)*r)
646
            
647
        end
648
        local rv=Create'NumberValue'{_P=model;Name='MVal'}rv.Value=r
649
        local t={center,model}
650
        local snd=Create'Sound'{_P=model;SoundId='http://www.roblox.com/Asset/?id=15666462';
651
            Pitch=.5;Looped=true}
652
        local snd2=Create'Sound'{_P=model;SoundId='http://www.roblox.com/Asset/?id=2101157';Pitch=1.15}
653
        local snd3=Create'Sound'{_P=model;SoundId='http://www.roblox.com/Asset/?id=2974249';Pitch=2}
654
        
655
        Edit{snd,snd2,snd3}{Volume=.25}
656
657
        Spawn(function()
658
            snd:Play()
659
            local ptick=tick()
660
            repeat
661
                snd.Pitch=snd.Pitch+(.05*3)
662
                wait()
663
            until (tick()-ptick)>1
664
            snd:Stop()snd3:Play()
665
            for i=0,1,.1 do
666
                for _,v in pairs(model:children())do
667
                    if v:IsA'Part'then
668
                        -- v.Transparency=i
669
                        v.Color=Color3.new(HSVtoRGB(.5,0,1-i))
670
                    end
671
                end
672
                wait()
673
            end
674
            snd2:Play()
675
            for i=0,1,.05 do
676
                rv.Value=rv.Value+.5
677
                local pillar=Part(rv.Value,1,rv.Value,'Black',.75)local msh=Mesh(pillar,1)pillar.Anchored=true
678
                local cf=center*ang(mr(-5,5),mr(-5,5),mr(-5,5))
679
                pillar.CFrame=cf
680
                Spawn(function()
681
                    for i=0,1,.1 do
682
                        pillar.Size=v3n(rv.Value,10*i,rv.Value)
683
                        pillar.CFrame=cf*cfn(0,pillar.Size.y/2,0)
684
                        pillar.Transparency=.75+i*(1-.75)
685
                        wait()
686
                    end
687
                end)
688
                for _,v in pairs(model:children())do
689
                    if v:IsA'Part'then
690
                        v.Transparency=i
691
                        v.m.Scale=v3n(1+i*30,1+i*30,1+i*30)
692
                        -- v.Color=Color3.new(HSVtoRGB(0,.5,1-i*.5))
693
                    end
694
                end
695
                for i,v in pairs(findHum(center.p,rv.Value))do
696
                    v:TakeDamage'10'
697
                end
698
                wait()
699
            end
700
            model:Destroy()
701
        end)
702
        table.insert(tas,t)
703
    end
704
    wait(.15)
705
    for i=1,0,-.1 do
706
        w.C0=cfn(0,0,-1.75*i)*ang(math.pi/2)
707
        msh.Scale=v3n(i*.75,i*4.5,i*.75)
708
        wait()
709
    end cone:destroy()
710
    whirr_snd:Play()
711
    Anim'rw'(cfn())
712
    mo.DesiredAngle=0
713
    wait'.25'
714
    hw.Part0=torso hw.C0=cfn(.9,-.85,0)*ang(0,-math.pi/2,math.pi/2)
715
    Lock'R'
716
end
717
718
local pd_snd=Create'Sound'{_P=Weapon;SoundId='http://www.roblox.com/Asset/?id=2785493';Pitch=1.35}
719
function lol2()
720
    Lock'R'
721
    Anim'rw'(ang(md'135',0,md'15')*ang(0,md'15'))
722
    hw.Part0=rarm hw.C0=cfn(0,-1.1,0)*ang(math.pi,md'-10')
723
    wait'.15'
724
    mo.DesiredAngle=md'-90'
725
    wait'.5'
726
    local laz=Part(.5,1,.5,'Cyan',.5)laz.Material='Neon'local msh=Mesh(laz,2)
727
    pd_snd:Play()
728
729
    laz.Anchored=true
730
    spos=l(hinge,0,0)
731
    laz.CFrame=spos
732
733
    local ignorelist={}
734
    for i=0,1,.25 do spos=l(hinge,0,0)
735
        table.insert(ignorelist,char)
736
        local hit,pos=Workspace:FindPartOnRayWithIgnoreList(Ray.new(l(laz,0,0,-laz.Size.z/2).p,l(laz).lookVector*4),ignorelist)
737
        if hit and pos then
738
            for lo=1,1 do
739
                if hit:IsDescendantOf(char)then break end
740
                local sx,sy,sz=hit.Size.X,hit.Size.y,hit.Size.z
741
                local as=(sx+sy+sz)/3
742
                if as>20 then break end
743
                table.insert(ignorelist,hit)
744
                Create'ParticleEmitter'{_P=hit;
745
                    Size=NumberSequence.new{numkp(0,as*.1);numkp(1,as*.5)};
746
                    Transparency=NumberSequence.new{numkp(0,0);numkp(1,1)};
747
                    Color=ColorSequence.new(bcol'Cyan'.Color,bcol'Deep blue'.Color);
748
                    Lifetime=NumberRange.new(.1,.4);
749
                    VelocitySpread=360;
750
                    Speed=NumberRange.new(as*.5);
751
                }
752
                Spawn(function()
753
                for i=hit.Transparency,1,.05 do
754
                    hit.Transparency=i wait()
755
                end hit:Destroy()end)
756
            end
757
        end
758
        
759
        tpos=l(torso,0,0,-7)
760
        local mag=(spos.p-tpos.p).magnitude
761
        laz.Size=v3n(.5,.5,mag*i)
762
        laz.CFrame=cfn(spos.p,tpos.p)*cfn(0,0,(-mag/2)*i)
763
        wait()
764
    end
765
    local cf=laz.CFrame
766
    for i=0,1,.1 do
767
        msh.Scale=v3n(1-i,1-i,1)
768
        laz.Transparency=.5+i*.5
769
        wait()
770
    end laz:Destroy()
771
    mo.DesiredAngle=0
772
    wait'.25'
773
    Anim'rw'(cfn())
774
    wait'.25'
775
    hw.Part0=torso hw.C0=restpos
776
    Lock'R'
777
end
778
779
shoot_snd=Create'Sound'{_P=Weapon;SoundId='rbxassetid://384105511';Pitch=1.15}
780
function kiball()
781
    holding=true
782
    local ptick=tick()
783
    local bg=Create'BodyGyro'{_P=torso;maxTorque=v3n(1,1,1)*9e+008;P=9e+006}
784
    Lock'L'Anim'lw'(ang(0,0,md'-90'))wait'.25'
785
    while holding do
786
        bg.cframe=cfn(l(torso).p,v3n(mouse.hit.x,l(torso).y,mouse.hit.z))*ang(0,-math.pi/2,0)
787
        
788
        if (tick()-ptick)>.25 then shoot_snd:Play()
789
            local ki=Part(1,1,1)ki.Anchored=true ki.CFrame=l(bl) local msh=Mesh(ki,3)
790
            tar=mouse.hit 
791
            local dir=mr(-1,1)
792
            Spawn(function()
793
                for i=0,1,.1 do
794
                    ki.CFrame=ki.CFrame*cfn(-math.abs(math.sin((tick()+1)))*3,0,0)
795
                    ki.CFrame=ki.CFrame:lerp(tar,i)
796
                    wait()
797
                end
798
                for i=0,1,.1 do
799
                    Edit{msh,ki}{Transparency=i;Size=v3n(1+i*3,1+i*3,1+i*3)}
800
                    wait()
801
                end ki:destroy()
802
            end)
803
            ptick=tick()
804
        end
805
        wait()
806
    end bg:Destroy() Anim'lw'(cfn())wait'.5'Lock'L'
807
end
808
809
function getAverageSize(val)
810
    local value_is_object=pcall(function()return val.className end)
811
    local x,y,z
812
    if value_is_object then
813
        x,y,z=val.Size.x,val.Size.y,val.Size.z
814
    else 
815
        x,y,z=val.x,val.y,val.z
816
    end
817
    return (x+y+z)/3
818
end
819
820
bl=Part(.1,.1,.1,'New Yeller')Mesh(bl,2)Weld(bl,larm,-.25,-.6)
821
function lol3()
822
    Lock'L'
823
    Anim'lw'(cfn(.2,0,-.15)*ang(md'25',0,md'65')*ang(0,md'-75'))
824
    wait'.25'bl.Material='Neon'
825
    local shield=Part(5,5,.1,'New Yeller',.75)shield.Material='Neon'shield.Anchored=true
826
    shield.CanCollide=true
827
    -- shield.Parent=Workspace.CurrentCamera
828
    shield.Touched:connect(function(a)
829
        if a.Parent and (not a:IsDescendantOf(char)) then
830
            -- a:BreakJoints()
831
            for i,v in pairs(a:children())do
832
                if v:IsA'BodyMover'then v:Destroy()end
833
            end
834
            
835
        end
836
    end)
837
        
838
    local msh=Mesh(shield,3,0,0,0)
839
    shield.CFrame=l(torso)
840
    droning_snd:Play()
841
    for i=0,1,.1 do
842
        shield.CFrame=shield.CFrame:lerp(l(torso,0,0,-3),.8)
843
        shield.Velocity=shield.CFrame.lookVector*400
844
        msh.Scale=v3n(i,i,i)
845
        wait()
846
    end
847
    holding=true
848
    local ptick=tick()
849
    local dir=1
850
    local bol=false
851
852
    while holding do
853
        if (tick()-ptick)>.5 then dir=dir*-1 ptick=tick()end
854
        shield.Transparency=shield.Transparency+dir*.005
855
        shield.CFrame=shield.CFrame:lerp(l(torso,0,0,-3),.8)
856
        shield.Velocity=shield.CFrame.lookVector*400
857
        local pp=Part(.1,.1,.1,'New Yeller',.75)pp.Material='Neon'Mesh(pp,3,.5,.5,.5)
858
        pp.CFrame=l(bl)
859
        Create'BodyPosition'{_P=pp;position=l(shield,mr(-2.5,2.5),mr(-2.5,2.5),0).p}
860
        Debris:AddItem(pp,.4)
861
        
862
        wait()
863
    end
864
    droning_snd:Stop()
865
    for i=1,0,-.1 do
866
        shield.CFrame=shield.CFrame:lerp(l(torso,0,0,-3),.8)
867
        msh.Scale=v3n(i,i,i)
868
        wait()
869
    end
870
    shield:Destroy()
871
    bl.Material='Plastic'
872
    Anim'lw'(cfn())
873
    wait'.25'Lock'L'
874
end
875
876
klist={
877
    f=lol2;
878
    e=lol;
879
    cq=lol3;
880
    rq=kiball;
881
}
882
883
local con,con2
884
con=mouse.KeyUp:connect(function(key)
885
    for i,v in pairs(klist)do
886
        if key==i:sub(1,1) and i:sub(2,2)=='q'then
887
            holding=false
888
        end
889
    end
890
end)
891
con2=mouse.KeyDown:connect(function(key)
892
    if attacking then return end
893
    attacking=true
894
    for i,v in pairs(klist)do
895
        if key==i:sub(1,1) then
896
            v()
897
        end
898
    end
899
    attacking=false
900
end)
901
tag(con,'cons')tag(con2,'cons')
902
903
char.ChildAdded:connect(function(a)
904
    if a:IsA'Script'then for i,v in pairs(cons)do v:disconnect()end end end)