View difference between Paste ID: 8hwDUWcw and Jfb27M5e
SHOW: | | - or go back to the newest paste.
1
-- This script has convert to FE by who i don't know?
2
3
-----------------------------------------------------
4
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
5
local Player,game,owner = owner,game
6
local RealPlayer = Player
7
do
8
    print("FE Compatibility code by Mokiros | Showcase by Bacon Hair!")
9
    local rp = RealPlayer
10
    script.Parent = rp.Character
11
   
12
    --RemoteEvent for communicating
13
    local Event = Instance.new("RemoteEvent")
14
    Event.Name = "UserInput_Event"
15
 
16
    --Fake event to make stuff like Mouse.KeyDown work
17
    local function fakeEvent()
18
        local t = {_fakeEvent=true,Functions={},Connect=function(self,f)table.insert(self.Functions,f) end}
19
        t.connect = t.Connect
20
        return t
21
    end
22
 
23
    --Creating fake input objects with fake variables
24
    local m = {Target=nil,Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent()}
25
    local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
26
    local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
27
        CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
28
    end}
29
    --Merged 2 functions into one by checking amount of arguments
30
    CAS.UnbindAction = CAS.BindAction
31
 
32
    --This function will trigger the events that have been :Connect()'ed
33
    local function te(self,ev,...)
34
        local t = m[ev]
35
        if t and t._fakeEvent then
36
            for _,f in pairs(t.Functions) do
37
                f(...)
38
            end
39
        end
40
    end
41
    m.TrigEvent = te
42
    UIS.TrigEvent = te
43
 
44
    Event.OnServerEvent:Connect(function(plr,io)
45
        if plr~=rp then return end
46
        m.Target = io.Target
47
        m.Hit = io.Hit
48
        if not io.isMouse then
49
            local b = io.UserInputState == Enum.UserInputState.Begin
50
            if io.UserInputType == Enum.UserInputType.MouseButton1 then
51
                return m:TrigEvent(b and "Button1Down" or "Button1Up")
52
            end
53
            for _,t in pairs(CAS.Actions) do
54
                for _,k in pairs(t.Keys) do
55
                    if k==io.KeyCode then
56
                        t.Function(t.Name,io.UserInputState,io)
57
                    end
58
                end
59
            end
60
            m:TrigEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
61
            UIS:TrigEvent(b and "InputBegan" or "InputEnded",io,false)
62
        end
63
    end)
64
    Event.Parent = NLS([==[
65
    local Player = game:GetService("Players").LocalPlayer
66
    local Event = script:WaitForChild("UserInput_Event")
67
 
68
    local Mouse = Player:GetMouse()
69
    local UIS = game:GetService("UserInputService")
70
    local input = function(io,a)
71
        if a then return end
72
        --Since InputObject is a client-side instance, we create and pass table instead
73
        Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
74
    end
75
    UIS.InputBegan:Connect(input)
76
    UIS.InputEnded:Connect(input)
77
 
78
    local h,t
79
    --Give the server mouse data 30 times every second, but only if the values changed
80
    --If player is not moving their mouse, client won't fire events
81
    while wait(1/30) do
82
        if h~=Mouse.Hit or t~=Mouse.Target then
83
            h,t=Mouse.Hit,Mouse.Target
84
            Event:FireServer({isMouse=true,Target=t,Hit=h})
85
        end
86
    end]==],Player.Character)
87
 
88
    ----Sandboxed game object that allows the usage of client-side methods and services
89
    --Real game object
90
    local _rg = game
91
 
92
    --Metatable for fake service
93
    local fsmt = {
94
        __index = function(self,k)
95
            local s = rawget(self,"_RealService")
96
            if s then return s[k] end
97
        end,
98
        __newindex = function(self,k,v)
99
            local s = rawget(self,"_RealService")
100
            if s then s[k]=v end
101
        end,
102
        __call = function(self,...)
103
            local s = rawget(self,"_RealService")
104
            if s then return s(...) end
105
        end
106
    }
107
    local function FakeService(t,RealService)
108
        t._RealService = typeof(RealService)=="string" and _rg:GetService(RealService) or RealService
109
        return setmetatable(t,fsmt)
110
    end
111
 
112
    --Fake game object
113
    local g = {
114
        GetService = function(self,s)
115
            return self[s]
116
        end,
117
        Players = FakeService({
118
            LocalPlayer = FakeService({GetMouse=function(self)return m end},Player)
119
        },"Players"),
120
        UserInputService = FakeService(UIS,"UserInputService"),
121
        ContextActionService = FakeService(CAS,"ContextActionService"),
122
    }
123
    rawset(g.Players,"localPlayer",g.Players.LocalPlayer)
124
    g.service = g.GetService
125
   
126
    g.RunService = FakeService({
127
        RenderStepped = _rg:GetService("RunService").Heartbeat,
128
        BindToRenderStep = function(self,name,_,fun)
129
 
130
        end,
131
        UnbindFromRenderStep = function(self,name)
132
            self._btrs[name]:Disconnect()
133
        end,
134
    },"RunService")
135
 
136
    setmetatable(g,{
137
        __index=function(self,s)
138
            return _rg:GetService(s) or typeof(_rg[s])=="function"
139
            and function(_,...)return _rg[s](_rg,...)end or _rg[s]
140
        end,
141
        __newindex = fsmt.__newindex,
142
        __call = fsmt.__call
143
    })
144
    --Changing owner to fake player object to support owner:GetMouse()
145
    game,owner = g,g.Players.LocalPlayer
146
end
147
-- The Murderer
148
-- Created by Nebula_Zorua
149
-- Youtube channel: https://www.youtube.com/channel/UCo9oU9dCw8jnuVLuy4_SATA
150
-- Discord account: Nebula the Zorua#6666
151
152
-- Credit to Shackluster for the inspiration for this
153
-- I might update this in the future.
154
155
--[[
156
	CONTROLS:
157
		Left Mouse Button Click - Attack
158
		Left Mouse Button Click - Get knife back once thrown (You must be near the thrown knife)
159
		T - Throw (You cant attack until you get it back with the above control)
160
		; - Machete
161
	TO BECOME BLOODLUSTFUL:
162
		Kill 12 people/dummies quickly. You must keep killing to keep the bloodlust.
163
		Once you're bloodlustful, you charge forward when you attack
164
]]
165
166
--[[
167
TO EDITORS/RESKINNERS:
168
	You can edit BloodColor, BloodMaterial, and BloodlustBlood to change the color of the blood, material of the blood, and the 
169
	number of blood you need to become bloodlustful. You get 30 blood with each kill. 
170
]]
171
172
wait()
173
script.Parent = nil
174
local S = setmetatable({},{
175
	__index = function(self,index)
176
		local service = game:GetService(index)
177
		if(service)then
178
			self[index] = service
179
			return service
180
		end
181
	end
182
})
183
184
185
local plr = S.Players.LocalPlayer
186
local char = plr.Character
187
local hum = char.Humanoid
188
local rarm = char["Right Arm"]
189
local larm= char["Left Arm"]
190
local rleg= char["Right Leg"]
191
local lleg = char["Left Leg"]	
192
local root = char:FindFirstChild'HumanoidRootPart'
193
local torso = char.Torso
194
local head = char.Head
195
local sine = 0;
196
local lastTwitch = 0;
197
local combo = 1;
198
local ThrownKnife = false
199
local KnifePosition = CFrame.new(0,0,0)
200
local lastClick = time()
201
local change = 1;
202
local runService = S.RunService
203
local mouse = plr:GetMouse()
204
local Attack = false
205
local neutralAnims = true
206
local WalkSine = 0
207
local Debounces = {Debounces={}}
208
local Hit = {}
209
local BloodPuddles = {}
210
local Bloodied = 0
211
local Teamed = {}
212
local WalkSpeed = 6
213
hum.WalkSpeed = WalkSpeed
214
local BloodColor = BrickColor.new'Maroon'
215
local BloodMaterial = Enum.Material.Granite
216
local BloodTime = time()
217
local Twitch = false
218
local BloodlustBlood = 350
219
hum.DisplayDistanceType = "None"
220
hum.MaxHealth = 3000
221
hum.Health = 3000
222
223
function Debounces:New(name,cooldown)
224
	local aaaaa = {Usable=true,Cooldown=cooldown or 2,CoolingDown=false,LastUse=0}
225
	setmetatable(aaaaa,{__index = Debounces})
226
	Debounces.Debounces[name] = aaaaa
227
	return aaaaa
228
end
229
230
function Debounces:Use(overrideUsable)
231
	assert(self.Usable ~= nil and self.LastUse ~= nil and self.CoolingDown ~= nil,"Expected ':' not '.' calling member function Use")
232
	if(self.Usable or overrideUsable)then
233
		self.Usable = false
234
		self.CoolingDown = true
235
		local LastUse = time()
236
		self.LastUse = LastUse
237
		delay(self.Cooldown or 2,function()
238
			if(self.LastUse == LastUse)then
239
				self.CoolingDown = false
240
				self.Usable = true
241
			end
242
		end)
243
	end
244
end
245
246
function Debounces:Get(name)
247
	assert(typeof(name) == 'string',("bad argument #1 to 'get' (string expected, got %s)"):format(typeof(name) == nil and "no value" or typeof(name)))
248
	for i,v in next, Debounces.Debounces do
249
		if(i == name)then
250
			return v;
251
		end
252
	end
253
end
254
255
function Debounces:GetProgressPercentage()
256
	assert(self.Usable ~= nil and self.LastUse ~= nil and self.CoolingDown ~= nil,"Expected ':' not '.' calling member function Use")
257
	if(self.CoolingDown and not self.Usable)then
258
		return math.max(
259
			math.floor(
260
				(
261
					(time()-self.LastUse)/self.Cooldown or 2
262
				)*100
263
			)
264
		)
265
	else
266
		return 100
267
	end
268
end
269
270
local CF = {N=CFrame.new,A=CFrame.Angles,fEA=CFrame.fromEulerAnglesXYZ}
271
local V3 = {N=Vector3.new}
272
local M = {C=math.cos,R=math.rad,S=math.sin,P=math.pi,RNG=math.random,MRS=math.randomseed,H=math.huge}
273
274
local Hold = CF.N(0,-1,-1)*CF.A(M.R(-90),M.R(90),0)
275
local BeheadHold =  CF.A(0,0,0)
276
local Effects,Sounds = {},{};
277
--Stop animations
278
for _,v in next, hum:GetPlayingAnimationTracks() do
279
	v:Stop();
280
end
281
282
pcall(game.Destroy,char:FindFirstChild'Animate')
283
pcall(game.Destroy,hum:FindFirstChild'Animator')
284
285
-- Sounds
286
Sounds['Wet'] = {Id=256738023,Loop=false,Pitch=1}
287
Sounds['Swoosh1'] = {Id=320557353,Loop=false,Pitch=1,Volume=6}
288
Sounds['Swoosh2'] = {Id=320557382,Loop=false,Pitch=1,Volume=6}
289
Sounds['Swoosh3'] = {Id=320557413,Loop=false,Pitch=1,Volume=6}
290
Sounds['Swoosh4'] = {Id=320557453,Loop=false,Pitch=1,Volume=6}
291
Sounds['Swoosh5'] = {Id=320557487,Loop=false,Pitch=1,Volume=6}
292
Sounds['Swoosh6'] = {Id=320557537,Loop=false,Pitch=1,Volume=6}
293
Sounds['Swoosh7'] = {Id=320557563,Loop=false,Pitch=1,Volume=6}
294
Sounds['Swoosh8'] = {Id=320557518,Loop=false,Pitch=1,Volume=6}
295
Sounds['SmallBoom'] = {Id=341336485,Loop=false,Volume=5,Pitch=1}
296
Sounds['ChaosBuster'] = {Id=333534812,Loop=false,Volume=5,Pitch=0.75}
297
Sounds['Magic'] = {Id=315743350,Loop=false,Volume=5,Pitch=1}
298
Sounds['ShrekRemix'] = {Id=163306929,Loop=true,Pitch=1,Volume = 4}
299
Sounds['CreoDimension'] = {Id=927529620,Loop=true,Pitch=1,Volume=4}
300
Sounds['BlackBlizzard'] = {Id=657626121,Loop=true,Pitch=1,Volume=4}
301
Sounds['ColbreakzFantasy'] = {Id=876981900,Loop=true,Pitch=1,Volume=4}
302
Sounds['NeflCrystals'] = {Id=340106355,Loop=true,Pitch=1,Volume=4}
303
Sounds['EvilMortyRemix'] = {Id=1057401232,Loop=true,Pitch=1,Volume=10}
304
Sounds['Psycho'] = {Id=579524490,Loop=true,Pitch=1,Volume=10}
305
-- Functions
306
local NewInstance = function(instance,parent,properties)
307
	local inst = Instance.new(instance,parent)
308
	if(properties)then
309
		for i,v in next, properties do
310
			pcall(function() inst[i] = v end)
311
		end
312
	end
313
	return inst;
314
end
315
316
ArtificialHB = NewInstance("BindableEvent", script,{
317
	Parent = script,
318
	Name = "Heartbeat",
319
})
320
321
script:WaitForChild("Heartbeat")
322
323
frame = 1 / 60
324
tf = 0
325
allowframeloss = false
326
tossremainder = false
327
lastframe = tick()
328
script.Heartbeat:Fire()
329
330
game:GetService("RunService").Heartbeat:connect(function(s, p)
331
	tf = tf + s
332
	if tf >= frame then
333
		if allowframeloss then
334
			script.Heartbeat:Fire()
335
			lastframe = tick()
336
		else
337
			for i = 1, math.floor(tf / frame) do
338
				script.Heartbeat:Fire()
339
			end
340
			lastframe = tick()
341
		end
342
		if tossremainder then
343
			tf = 0
344
		else
345
			tf = tf - frame * math.floor(tf / frame)
346
		end
347
	end
348
end)
349
350
function swait(num)
351
	if num == 0 or num == nil then
352
		ArtificialHB.Event:wait()
353
	else
354
		for i = 0, num do
355
			ArtificialHB.Event:wait()
356
		end
357
	end
358
end
359
360
361
function clerp(startCF,endCF,alpha)
362
	return startCF:lerp(endCF, alpha)
363
end
364
local sndFromData = function(data,parent)
365
	assert(typeof(data) == 'table',"sndFromData's first argument must be a table!")
366
	local snd = NewInstance("Sound",parent or char,{SoundId = "rbxassetid://"..data.Id,Looped=data.Loop or false,Pitch = data.Pitch or 1,Volume = data.Volume or 1})
367
	return snd;
368
end
369
370
local FX = function(ID,vol,pitch,parent)
371
	local snd = NewInstance("Sound",parent or torso, {Pitch=pitch or 1, Volume = vol or 1,SoundId = "rbxassetid://"..ID})
372
	snd:Play()
373
	repeat wait() until snd.IsLoaded and snd.IsPlaying
374
	delay(snd.TimePosition+.5,function()
375
		snd:Stop()
376
		snd:Destroy()
377
	end)
378
end
379
function UnbindLoops()
380
	pcall(runService.UnbindFromRenderStep,runService,"N_Effects")
381
	pcall(runService.UnbindFromRenderStep,runService,"N_Animations")
382
end;
383
384
UnbindLoops() -- Just so if the loops already exist from previously running a script using this template, there's no errors
385
386
-- Model
387
388
local Music = sndFromData(Sounds.Psycho,torso)
389
Music:Play()
390
Music.MaxDistance = 500
391
392
local Handle = NewInstance('Part',char,{CanCollide=false,Size=V3.N(0.46,3.82,0.37),Name='Handle'})
393
local Mesh = NewInstance('SpecialMesh',Handle,{MeshId='rbxassetid://471401475',TextureId='rbxassetid://471401476',Scale=V3.N(.01,.01,.01)})
394
local Decal = NewInstance('Decal',Handle,{Transparency=1,Texture='rbxassetid://116830967'})
395
-- Joints and Lerp
396
local LS = NewInstance('Motor',char,{Part0=torso,Part1=larm,C0 = CF.N(-1.5,0.5,0),C1 = CF.N(0,.5,0)})
397
local RS = NewInstance('Motor',char,{Part0=torso,Part1=rarm,C0 = CF.N(1.5,0.5,0),C1 = CF.N(0,.5,0)})
398
local NK = NewInstance('Motor',char,{Part0=torso,Part1=head,C0 = CF.N(0,1.5,0)})
399
local LH = NewInstance('Motor',char,{Part0=torso,Part1=lleg,C0 = CF.N(-.5,-1,0),C1 = CF.N(0,1,0)})
400
local RH = NewInstance('Motor',char,{Part0=torso,Part1=rleg,C0 = CF.N(.5,-1,0),C1 = CF.N(0,1,0)})
401
local RJ = NewInstance('Motor',char,{Part0=root,Part1=torso})
402
local HW = NewInstance('Motor',char,{Part0=rarm,Part1=Handle,C0 = CF.N(0,-1,-1)*CF.A(M.R(-90),M.R(90),0)})
403
404
-- watevr
405
406
-- Default C0s
407
local LSD=LS.C0
408
local RSD=RS.C0	
409
local HD=NK.C0
410
local TD=RJ.C0
411
local LHD=LH.C0
412
local RHD=RH.C0
413
414
-- Check State
415
function CheckState(rPart)
416
	if(rPart.Velocity.y > .35 and hum:GetState() == Enum.HumanoidStateType.Freefall)then
417
		return 'Jump';		
418
	elseif(rPart.Velocity.y < -.35 and hum:GetState() == Enum.HumanoidStateType.Freefall)then
419
		return 'Fall';
420
	elseif(math.abs(rPart.Velocity.x) > 2 or math.abs(rPart.Velocity.z) > 2 and hum:GetState() ~= Enum.HumanoidStateType.Freefall)then
421
		return 'Walk';
422
	end
423
	return 'Idle';
424
end
425
426
-- Effect Functions
427
function SphereFX(duration,color,scale,pos,endScale)
428
	local rng = Instance.new("Part", char)
429
	rng.Anchored = true
430
	rng.BrickColor = color
431
	rng.CanCollide = false
432
	rng.FormFactor = 3
433
	rng.Name = "Ring"
434
	rng.Size = Vector3.new(1,1,1)
435
	rng.Transparency = 0
436
	rng.TopSurface = 0
437
	rng.BottomSurface = 0
438
	rng.CFrame = pos
439
	local rngm = Instance.new("SpecialMesh", rng)
440
	rngm.MeshType = "Sphere"
441
	rngm.Scale = scale
442
	table.insert(Effects, {Frame = 0, Effect="Sphere", Duration = duration or 30, Part=rng, Mesh = rngm, Scale = scale, EndScale = endScale or scale*2, Position = pos})
443
	return rng
444
end
445
446
function BlastFX(duration,color,scale,pos,endScale)
447
	local rng = Instance.new("Part", char)
448
	rng.Anchored = true
449
	rng.BrickColor = color
450
	rng.CanCollide = false
451
	rng.FormFactor = 3
452
	rng.Name = "Ring"
453
	rng.Size = Vector3.new(1,1,1)
454
	rng.Transparency = 0
455
	rng.TopSurface = 0
456
	rng.BottomSurface = 0
457
	rng.CFrame = pos
458
	local rngm = Instance.new("SpecialMesh", rng)
459
	rngm.MeshType = "FileMesh"
460
	rngm.MeshId = 'rbxassetid://20329976'
461
	rngm.Scale = scale
462
	table.insert(Effects, {Frame = 0, Effect="Sphere", Duration = duration or 30, Part=rng, Mesh = rngm, Scale = scale, EndScale = endScale or scale*2, Position = pos})
463
	return rng
464
end
465
466
function BlockFX(duration,color,scale,pos,endScale)
467
	local rng = Instance.new("Part", char)
468
	rng.Anchored = true
469
	rng.BrickColor = color
470
	rng.CanCollide = false
471
	rng.FormFactor = 3
472
	rng.Name = "Ring"
473
	rng.Size = Vector3.new(1,1,1)
474
	rng.Transparency = 0
475
	rng.TopSurface = 0
476
	rng.BottomSurface = 0
477
	rng.CFrame = pos
478
	local rngm = Instance.new("BlockMesh", rng)
479
	rngm.Scale = scale
480
	table.insert(Effects, {Frame = 0, Effect="Block", Duration = duration or 30, Part=rng, Mesh = rngm, Scale = scale, EndScale = endScale or scale*2, Position = pos})
481
	return rng
482
end
483
484
function LaserFX(duration,color,cframe,scale,endScale)
485
	local rng = Instance.new("Part", char)
486
	rng.Anchored = true
487
	rng.BrickColor = color
488
	rng.CanCollide = false
489
	rng.FormFactor = 3
490
	rng.Material = Enum.Material.Neon
491
	rng.Name = "Laser"
492
	rng.Size = Vector3.new(.5,.5,.5)
493
	rng.Transparency = 0
494
	rng.TopSurface = 0
495
	rng.BottomSurface = 0
496
	rng.CFrame = cframe
497
	local rngm = Instance.new("CylinderMesh", rng)
498
	rngm.Scale = scale
499
	table.insert(Effects, {Frame = 0, Effect="Sphere", Duration = duration or 30, Part=rng, Mesh = rngm, Scale = scale, EndScale = endScale or scale*2, Position = cframe})
500
	return rng
501
end
502
503
function BloodDrop(pos,dir,maxsize)
504
	local owo = NewInstance("Part",char,{Material=BloodMaterial,BrickColor=BloodColor,Shape=Enum.PartType.Ball,Size=V3.N(.25,.25,.25), CanCollide = false})
505
	owo.CFrame=CF.N(pos,dir)
506
	local bv = Instance.new("BodyVelocity",owo) 
507
	bv.maxForce = Vector3.new(1e9, 1e9, 1e9)
508
	bv.velocity = CF.N(pos,dir+V3.N(M.RNG(-3,3)/30,M.RNG(-3,3)/30,M.RNG(-3,3)/30)).lookVector*15
509
	bv.Name = "MOVE"
510
	game:service'Debris':AddItem(bv,0.05)
511
	local touch 
512
	touch = owo.Touched:connect(function(hit)
513
		if(hit.Anchored==true)then
514
			touch:disconnect()
515
			BloodPuddle(owo.Position+V3.N(0,1,0),10,maxsize,owo)
516
			owo:destroy()
517
		end
518
	end)
519
end
520
function BloodPuddle(position,range,maxSize,where)
521
	local hit, pos, norm = workspace:FindPartOnRayWithIgnoreList(Ray.new(
522
		position,CF.N(position,position+V3.N(0,-1,0)).lookVector * range			
523
	),{where,char},false,true)
524
	if(hit)then
525
		if(BloodPuddles[hit])then
526
			BloodPuddles[hit].Frame = 0
527
			if(hit:FindFirstChild'CylinderMesh' and hit.CylinderMesh.Scale.Z < BloodPuddles[hit].MaxSize)then
528
				hit.CylinderMesh.Scale = hit.CylinderMesh.Scale + V3.N(.1,0,.1)
529
			end
530
		else
531
			local Puddle = NewInstance('Part',workspace,{Material=BloodMaterial,BrickColor=BloodColor,Size=V3.N(1,.1,1),CFrame=CF.N(pos,pos+norm)*CF.A(90*M.P/180,0,0),Anchored=true,CanCollide=false,Archivable=false,Locked=true,Name='BloodPuddle'})
532
			local Cyl = NewInstance('CylinderMesh',Puddle,{Name='CylinderMesh'})
533
			BloodPuddles[Puddle] = {MaxSize=maxSize or 7,Frame=0}
534
		end
535
	end
536
end
537
538
function ShatterFX(duration,color,scale,cframe)
539
	local rng = Instance.new("Part", char)
540
	rng.Anchored = true
541
	rng.BrickColor = color
542
	rng.CanCollide = false
543
	rng.FormFactor = 3
544
	rng.Name = "Ring"
545
	rng.Size = Vector3.new(1,1,1)
546
	rng.Transparency = 0
547
	rng.TopSurface = 0
548
	rng.BottomSurface = 0
549
	rng.CFrame = cframe * CF.fEA(M.RNG(-50, 50), M.RNG(-50, 50), M.RNG(-50, 50))
550
	local rngm = Instance.new("SpecialMesh", rng)
551
	rngm.Scale = scale
552
	rngm.MeshType = "Sphere"
553
	table.insert(Effects, {Frame = 0, Effect="Shatter", Duration = duration or 30, Part=rng, Mesh = rngm, Scale = scale,Position=rng.CFrame})
554
end
555
556
function RingFX(duration,color,scale,pos,endScale)
557
	local type = type
558
	local rng = Instance.new("Part", char)
559
	rng.Anchored = true
560
	rng.BrickColor = color
561
	rng.CanCollide = false
562
	rng.FormFactor = 3
563
	rng.Name = "Ring"
564
	rng.Size = Vector3.new(1,1,1)
565
	rng.Transparency = 0
566
	rng.TopSurface = 0
567
	rng.BottomSurface = 0
568
	rng.CFrame = pos
569
	local rngm = Instance.new("SpecialMesh", rng)
570
	rngm.MeshId = "rbxassetid://3270017"
571
	rngm.Scale = scale
572
	table.insert(Effects, {Frame = 0, Effect="Sphere", Duration = duration or 30, Part=rng, Mesh = rngm, Scale = scale, EndScale = endScale or scale*2, Position = pos})
573
	return rng
574
end
575
576
function Shoot(StartCF,EndCF,Spread,Speed,Num,Color,Drop,MinDamage,MaxDamage)
577
	local Spread = V3.N(M.RNG(-Spread,Spread),M.RNG(-Spread,Spread),M.RNG(-Spread,Spread))
578
	local Start = StartCF.p
579
	local End = EndCF.p
580
	local SpreadPos = End + Spread
581
	local Look = CF.N((Start + SpreadPos) / 2, SpreadPos)
582
	local Count = Num
583
	spawn(function()
584
		repeat
585
			wait()
586
			local hit, pos = workspace:findPartOnRay(Ray.new(
587
				Start,(Look.lookVector).unit * Speed		
588
			),char,false,true)
589
			local dist = (Start-pos).magnitude
590
			local yScale = dist * (Speed / (Speed/2))
591
			local aa = CF.N((Start + pos) / 2, pos) * CFrame.Angles(1.57, 0, 0)
592
			LaserFX(25,Color,aa,Vector3.new(1,yScale,1),Vector3.new(-1,yScale,-1))
593
			Start = Start + Look.lookVector	* Speed
594
			Look = Look * CF.A(M.R(Drop or -1),0,0)
595
			Count = Count - 1
596
			
597
			if(hit)then
598
				Count = 0
599
				MagniDamage(pos,10,MinDamage,MaxDamage,0,'Normal')
600
			end
601
			if(Count <= 0)then
602
				local sphere = SphereFX(25,Color,Vector3.new(5,5,5),CF.N(pos),Vector3.new(15,15,15))
603
				local ring = RingFX(25,Color,Vector3.new(6,6,6),CF.N(pos) * CF.A(0,M.R(90),0)  * CF.A(M.R(M.RNG(-360,360)),M.R(M.RNG(-360,360)),M.R(M.RNG(-360,360))),Vector3.new(16,16,16))
604
			end
605
		until Count <= 0
606
	end)
607
end
608
609
-- Effect Loop
610
611
runService:BindToRenderStep("N_Effects",Enum.RenderPriority.Character.Value + 2,function()
612
	for _,data in next, Effects do
613
		local frame,effect,duration = data.Frame,data.Effect,data.Duration
614
		local transparency = (frame / duration)
615
		local opacity = 1 - transparency
616
		if(frame > duration)then
617
			Effects[_] = nil
618
		end
619
		frame = frame + 1
620
		data.Frame = frame	
621
		if(effect == 'Sphere')then
622
			local Part,Mesh,Scale,CF,eScale = data.Part,data.Mesh,data.Scale,data.Position,data.EndScale 
623
			Mesh.Scale = Mesh.Scale:lerp(eScale, transparency/6)
624
			Part.Transparency = transparency
625
			if(frame > duration)then
626
				Part:destroy()
627
			end
628
		elseif(effect == 'Shatter')then	
629
			local Part,Mesh,Scale,Position,Thingie,Thingie2,Inc = data.Part,
630
																data.Mesh,
631
																data.Scale,
632
																data.Position,
633
																(data.Thingie or 0),
634
																(data.Thingie2 or M.RNG(50, 100) / 100),
635
																(data.Inc or M.RNG() - M.RNG())
636
			Part.Transparency = transparency
637
			Position = Position * CF.N(0,Thingie2,0)
638
			Part.CFrame = Position * CF.fEA(Thingie,0,0)
639
			Thingie = Thingie + Inc
640
			
641
			data.Position = Position
642
			data.Thingie = Thingie
643
			data.Thingie2 = Thingie2
644
			data.Inc = Inc
645
		elseif(effect == 'Block')then
646
			local Part,Mesh,Scale,CF,eScale = data.Part,data.Mesh,data.Scale,data.Position,data.EndScale 
647
			Mesh.Scale = Mesh.Scale:lerp(eScale, transparency/6)
648
			Part.Transparency = transparency
649
			Part.CFrame = CF * CFrame.Angles(M.R(M.RNG(-360,360)),M.R(M.RNG(-360,360)),M.R(M.RNG(-360,360)))
650
			if(frame > duration)then
651
				Part:destroy()
652
			end
653
		end
654
	end
655
	for puddle,data in next, BloodPuddles do
656
		if(puddle.Transparency > 0.9)then
657
			BloodPuddles[puddle] = nil
658
			puddle:destroy()
659
		end
660
		data.Frame = data.Frame + 1
661
		if(data.Frame > 105)then
662
			local trans = (data.Frame-105)/30
663
			puddle.Transparency = trans
664
			if(puddle:FindFirstChild'CylinderMesh' and puddle.CylinderMesh.Scale.Z > 0)then
665
				puddle.CylinderMesh.Scale = puddle.CylinderMesh.Scale-V3.N(.1,0,.1)
666
			end
667
		else
668
			puddle.Transparency = 0
669
		end
670
	end
671
end)
672
673
674
-- Nametag
675
local naeeym2 = Instance.new("BillboardGui",char)
676
naeeym2.AlwaysOnTop = true
677
naeeym2.Size = UDim2.new(5,35,2,35)
678
naeeym2.StudsOffset = Vector3.new(0,1,0)
679
naeeym2.Adornee = head
680
naeeym2.Name = "Name"
681
naeeym2.PlayerToHideFrom = plr
682
local tecks2 = Instance.new("TextLabel",naeeym2)
683
tecks2.BackgroundTransparency = 1
684
tecks2.TextScaled = true
685
tecks2.BorderSizePixel = 0
686
tecks2.Text = "Psychopathic Murderer"
687
tecks2.Font = "Antique"
688
tecks2.TextSize = 30
689
tecks2.TextStrokeTransparency = 0
690
tecks2.TextColor3 = Color3.new(0.8,0,0)
691
tecks2.TextStrokeColor3 = Color3.new(0,0,0)
692
tecks2.Size = UDim2.new(1,0,0.5,0)
693
tecks2.Parent = naeeym2
694
695
coroutine.wrap(function()
696
	while true do
697
		swait(15)
698
		hum.Health = hum.Health + 15
699
		local chance = 200
700
		if(Bloodied/4 > 25)then
701
			chance = Bloodied/4
702
		elseif(Bloodied/2 ~= 0)then
703
			chance = 25
704
		end
705
		local name = M.RNG(1,45)
706
		if(name == 1)then
707
			tecks2.Text = "M#rd@r3r"
708
		elseif(name == 2)then
709
			tecks2.Text = "Murder"
710
		elseif(name == 3)then
711
			tecks2.Text = "Murderrrrrrrr"
712
		elseif(M.RNG(1,chance) == math.ceil(chance/2))then
713
			tecks2.Text = "Hahahaahahhahahahahahahahaaha"
714
		else
715
			tecks2.Text = "Murderer"
716
		end
717
		if(tecks2.Text~="Hahahaahahhahahahahahahahaaha")then
718
			if(Bloodied > BloodlustBlood)then
719
				tecks2.Text = "Bloodlustful "..tecks2.Text
720
			else
721
				tecks2.Text = "Psychopathic "..tecks2.Text
722
			end
723
		end
724
		if(Twitch)then
725
			tecks2.Text = tecks2.Text:gsub("",string.char(M.RNG(1,127)))
726
		end
727
	end
728
end)()
729
-- Animation Loop
730
runService:BindToRenderStep("N_Animations",Enum.RenderPriority.Character.Value + 1,function()
731
	sine=sine+change
732
	if(not ThrownKnife)then Decal.Transparency = 1-(Bloodied/150) end
733
	local twitchVal = M.RNG(1,400)
734
	if(Bloodied >= BloodlustBlood)then
735
		local twitchVal = M.RNG(1,100)
736
	end
737
	if(twitchVal == 1 and not Twitch and time()-lastTwitch > 1.5)then
738
		Twitch = true
739
		lastTwitch = time()
740
	end
741
	if(time()-lastTwitch > M.RNG(50,100)/100)then
742
		Twitch = false
743
	end
744
	if(Decal.Transparency <= 0.7)then
745
		if(time()-BloodTime > .25)then
746
			if(not ThrownKnife)then
747
				BloodDrop((Handle.CFrame*CF.N(0,1.5,0)).p,(CF.N(Handle.CFrame.p)*CF.N(0,-25,0)).p,8)
748
				BloodTime = time()
749
				Bloodied = Bloodied-1
750
			end
751
		end
752
	end
753
	if(Bloodied > BloodlustBlood)then
754
		if(not Twitch)then
755
			Music.Pitch = 0.85
756
		end
757
		WalkSpeed = 16
758
	else
759
		if(not Twitch)then
760
			Music.Pitch = 1
761
		end
762
		WalkSpeed = 6
763
	end
764
	hum.WalkSpeed = WalkSpeed
765
766
	if(Twitch)then
767
		Music.Pitch = 0.65
768
		NK.C1 = clerp(NK.C1,CF.A(-M.R(15+M.RNG(0,25)),-M.R(25+M.RNG(-15,15)/15),0),.5)
769
	else
770
		NK.C1 = clerp(NK.C1,CF.N(),.3)
771
	end
772
773
	local wsVal = 5 / (hum.WalkSpeed / 16)
774
	if(CheckState(root) == 'Walk')then
775
		-- Walk anim
776
		change = 2/3
777
		RH.C1 = clerp(RH.C1,CF.N(0,.975-.1*M.S(sine/wsVal),-.1*M.C(sine/9))	*CF.A(M.R(25+35*M.C(sine/wsVal)),0,0),.6)
778
		LH.C1 = clerp(LH.C1,CF.N(0,.975+.1*M.S(sine/wsVal),.1*M.C(sine/9))*CF.A(M.R(25+35*-M.C(sine/wsVal)),0,0),.6)
779
	else
780
		RH.C1 = clerp(RH.C1,CF.N(0,1,0),.3)
781
		LH.C1 = clerp(LH.C1,CF.N(0,1,0),.3)
782
	end
783
	if(neutralAnims)then
784
		if(CheckState(root) == 'Idle')then
785
			-- Idle anim
786
			NK.C0 = clerp(NK.C0,HD*CF.N(0,.1,-.25)*CF.A(M.R(-25),0,0),.1)
787
			RH.C0 = clerp(RH.C0,CF.N(.5,-1-.1*M.C(time()),0),.1)
788
			LH.C0 = clerp(LH.C0,CF.N(-.5,-1-.1*M.C(time()),0),.1)
789
			RJ.C0 = clerp(RJ.C0,CF.N(0,0+.1*M.C(time()),0),.1)
790
			LS.C0 = clerp(LS.C0,CF.N(-1.5,.5,0)*CF.A(0,0,M.R(-12)-.1*M.C(time())),.1)
791
			RS.C0 = clerp(RS.C0,CF.N(1.5,.5,0)*CF.A(0,0,M.R(6+6*M.C(time()))),.1)
792
		elseif(CheckState(root) == 'Walk')then
793
			NK.C0 = clerp(NK.C0,HD*CF.N(0,.1,-.25)*CF.A(M.R(-25),0,0),.1)
794
			RJ.C0 = clerp(RJ.C0,CF.N(0,0+.1*M.C(sine/(wsVal/2)),0),.3)
795
			RH.C0 = clerp(RH.C0,RHD*CF.N(0,0-.1*M.C(sine/(wsVal/2)),0),.3)
796
			LH.C0 = clerp(LH.C0,LHD*CF.N(0,0-.1*M.C(sine/(wsVal/2)),0),.3)
797
			RS.C0 = clerp(RS.C0,RSD*CF.A(M.R(0+25*M.C(sine/wsVal)),0,0),.3)
798
			LS.C0 = clerp(LS.C0,LSD*CF.A(M.R(0+25*-M.C(sine/wsVal)),0,0),.3)
799
		elseif(CheckState(root) == 'Jump')then
800
			RJ.C0 = clerp(RJ.C0,CFrame.new(3.20309751e-13, 0.00628912123, 1.38760515e-06, 0.999999225, 5.09317033e-11, 0, -4.38656264e-11, 0.999980271, -0.00628618058, 0, 0.00628617639, 0.999979496),0.1)
801
			LH.C0 = clerp(LH.C0,CFrame.new(-0.496501386, -0.990816772, 0.0216115266, 0.999877751, -4.38656264e-11, 0.0156119959, -9.81397825e-05, 0.999980271, 0.0062854127, -0.0156116877, -0.00628618058, 0.999858022),0.1)
802
			RH.C0 = clerp(RH.C0,CFrame.new(0.951985836, -0.878642321, 0.00768248737, 0.807899356, 0.589113057, 0.0156119959, -0.58925271, 0.80792439, 0.0062854127, -0.0089104902, -0.0142773949, 0.999858022),0.1)
803
			LS.C0 = clerp(LS.C0,CFrame.new(-1.46314824, 0.504732132, -0.0780580789, 0.996319413, 0.084279716, 0.0156119959, -0.0843861476, 0.996413291, 0.0062854127, -0.0150262676, -0.00757971918, 0.999858022),0.1)
804
			RS.C0 = clerp(RS.C0,CFrame.new(1.41746354, 0.490631759, 0.0355827622, 0.983217537, -0.181765735, 0.0156119959, 0.181687862, 0.98333621, 0.0062854127, -0.0164943133, -0.0033434222, 0.999858022),0.1)
805
			NK.C0 = clerp(NK.C0,HD*CF.N(0,.1,-.25)*CF.A(M.R(-25),0,0),.1)
806
		elseif(CheckState(root) == 'Fall')then
807
			RJ.C0 = clerp(RJ.C0,CFrame.new(3.20309751e-13, 0.00628912123, 1.38760515e-06, 0.999999225, 5.09317033e-11, 0, -4.38656264e-11, 0.999980271, -0.00628618058, 0, 0.00628617639, 0.999979496),0.1)
808
			LH.C0 = clerp(LH.C0,CFrame.new(-0.496501386, -0.990816772, 0.0216115266, 0.999877751, -4.38656264e-11, 0.0156119959, -9.81397825e-05, 0.999980271, 0.0062854127, -0.0156116877, -0.00628618058, 0.999858022),0.1)
809
			RH.C0 = clerp(RH.C0,CFrame.new(0.951985836, -0.878642321, 0.00768248737, 0.807899356, 0.589113057, 0.0156119959, -0.58925271, 0.80792439, 0.0062854127, -0.0089104902, -0.0142773949, 0.999858022),0.1)
810
			LS.C0 = clerp(LS.C0,CFrame.new(-1.39294851, 0.589963198, 0.0808894783, 0.976439953, 0.21526964, 0.0149493031, -0.210034028, 0.932227492, 0.294682175, 0.0494999699, -0.29087922, 0.955478072),0.1)
811
			RS.C0 = clerp(RS.C0,CFrame.new(1.29713261, 0.551729858, 0.0523524433, 0.920970082, -0.389345646, 0.0149465948, 0.368037164, 0.88187921, 0.294682831, -0.127914533, -0.265893161, 0.955477953),0.1)
812
			NK.C0 = clerp(NK.C0,HD*CF.N(0,.1,-.25)*CF.A(M.R(-25),0,0),.1)
813
		end
814
	end
815
end)
816
817
-- Died event
818
819
hum.Died:connect(function() -- When the player dies
820
	UnbindLoops() -- Unbind all of the loops used
821
end)
822
823
824
-- Everything else
825
826
827
function GetTorso(char)
828
	return char:FindFirstChild'Torso' or char:FindFirstChild'UpperTorso' or char:FindFirstChild'LowerTorso' or char:FindFirstChild'HumanoidRootPart'
829
end
830
831
function Projectile(what)
832
	what.Archivable = true
833
	local projectile = what:Clone()
834
	projectile.Parent = char
835
	projectile.Transparency = 0
836
	projectile.Name = "Projectile"
837
	projectile.CFrame = CFrame.new(head.CFrame.p,mouse.Hit.p)*CFrame.Angles(math.rad(0),math.rad(90),math.rad(-90))
838
	projectile.Anchored = true
839
	projectile.Velocity = Vector3.new(0,0,0)
840
	projectile.RotVelocity = Vector3.new(0,0,0)
841
	projectile.Anchored = false
842
	--character.Head.Position).unit
843
	local Velocity = (mouse.Hit.p-head.CFrame.p).unit
844
	projectile.Velocity = Velocity*160
845
	local force = Instance.new("BodyForce")
846
	force.force = Vector3.new(0, 196.2, 0) * projectile:GetMass() * .8
847
	force.Parent = projectile
848
	local touchie
849
	coroutine.wrap(function()
850
		repeat wait() KnifePosition = projectile.CFrame until not projectile or not projectile.Parent or not ThrownKnife
851
		projectile:destroy()
852
		print'knifu'
853
		ThrownKnife = false
854
		Attack = false
855
		Handle.Transparency = 0
856
		KnifePosition = CF.N(0,0,0)
857
	end)()
858
	touchie = projectile.Touched:connect(function(h)
859
		if(not char:IsAncestorOf(h))then
860
			force:destroy()
861
			projectile.Velocity = V3.N(0,0,0)
862
			touchie:disconnect()
863
			local rag = Ragdoll(h.Parent)
864
			swait()
865
			local name = (h.Name == 'Head' and 'FakeHead' or h.Name)
866
			local asd = CF.N((projectile.CFrame.p + h.CFrame.p) * .5)
867
			
868
			if(not h.Parent and rag and rag:FindFirstChild(name,true))then h = rag:FindFirstChild(name,true)  end
869
			local C0 = projectile.CFrame:inverse() * asd
870
			if(not h.Anchored)then
871
				local w = NewInstance('Weld',char,{Part0=projectile,Part1=h,C0 = C0,C1=h.CFrame:inverse() * asd})
872
			else
873
				projectile.Anchored = true
874
			end
875
			if(rag)then
876
				Bloodied = Bloodied + 30
877
				local bloodie = NewInstance('Part',rag,{Anchored = false,CanCollide=false,Size=V3.N(.02,.02,.02),Transparency=1})
878
				local w = NewInstance('Weld',rag,{Part0=bloodie,Part1=h,C0 = C0,C1=h.CFrame:inverse() * asd})
879
				coroutine.wrap(function() repeat wait(M.RNG(2,10)/100)
880
					local spread = V3.N(M.RNG(-85,85)/100,M.RNG(-85,85)/100,M.RNG(-85,85)/100)
881
					BloodDrop(bloodie.CFrame*CF.N(0,.02,0).p,bloodie.CFrame * CF.N(0,100,0).p+spread,10)
882
				until not bloodie or not bloodie.Parent or not rag or not rag.Parent end)()
883
				repeat wait() until not ThrownKnife
884
				delay(5, function()
885
					if(rag)then
886
						rag:destroy()
887
					end
888
				end)
889
			end
890
		end
891
	end)
892
end
893
function Decapitate(target)
894
	if(target and target ~= char and GetTorso(target) and target:FindFirstChildOfClass'Humanoid' and target:FindFirstChildOfClass'Humanoid'.Name ~= 'Corpse' and target:FindFirstChildOfClass'Humanoid'.Health > 0 and target:FindFirstChild'Head')then
895
		--BloodPuddle(start,direction,range,maxSize)
896
		Bloodied = Bloodied + 60
897
		target.Archivable = true
898
		local Clone = target:Clone()
899
		target:destroy()	
900
		Clone.Parent = workspace
901
		local FakeHead = Clone.Head:Clone()
902
		Clone.Head:destroy()
903
		Clone:FindFirstChildOfClass'Humanoid'.PlatformStand = true
904
		Clone.Name = 'Ragdoll of '..target.Name
905
		FakeHead.Name = 'FakeHead'
906
		FakeHead.Parent = Clone
907
		Clone:FindFirstChildOfClass'Humanoid'.Name = 'Corpse'
908
		local head = FakeHead
909
		local torso = GetTorso(Clone)
910
		local cut = FX(756072587)
911
		local bv = Instance.new("BodyVelocity",torso) 
912
		bv.maxForce = Vector3.new(1e9, 1e9, 1e9)
913
		bv.velocity = CF.N(Handle.Position,torso.Position).lookVector*20
914
		bv.Name = "MOVE"
915
		game:service'Debris':AddItem(bv,0.2)
916
		local bv = Instance.new("BodyVelocity",FakeHead) 
917
		bv.maxForce = Vector3.new(1e9, 1e9, 1e9)
918
		bv.velocity = CF.N(Handle.Position,FakeHead.Position).lookVector*20
919
		bv.Name = "MOVE"
920
		game:service'Debris':AddItem(bv,0.2)
921
		
922
		game:service'Debris':AddItem(Clone,10)
923
		for i = 1, 500 do
924
			wait(M.RNG(2,10)/100)
925
			BloodDrop(torso.CFrame * CF.N(0,torso.Size.Y/2,0).p,(torso.CFrame * CF.N(0,torso.Size.Y,0)).p,10)
926
			BloodDrop(head.CFrame * CF.N(0,-.25,0).p,(head.CFrame * CF.N(0,-.7,0)).p,5)
927
			if not head or not torso or not Clone or not Clone.Parent or not Clone.Parent.Parent then break end
928
		end
929
	end
930
end
931
932
function Ragdoll(target,bloodPos)
933
	if(target and target ~= char and GetTorso(target) and target:FindFirstChildOfClass'Humanoid' and target:FindFirstChildOfClass'Humanoid'.Name ~= 'Corpse' and target:FindFirstChildOfClass'Humanoid'.Health > 0 and target:FindFirstChild'Head')then
934
		--BloodPuddle(start,direction,range,maxSize)
935
		target.Archivable = true
936
		local Clone = target:Clone()
937
		local torso = GetTorso(Clone)
938
		target:destroy()	
939
		Clone.Parent = workspace
940
		Clone:FindFirstChildOfClass'Humanoid'.PlatformStand = true
941
		Clone.Name = 'Ragdoll of '..target.Name
942
		Clone:FindFirstChildOfClass'Humanoid'.Name = 'Corpse'
943
		local fHead = Clone.Head:Clone()
944
		Clone.Head:destroy()
945
		fHead.Name = 'FakeHead'
946
		fHead.Parent = Clone
947
		NewInstance("Motor6D",torso,{Name='Neck',Part0=torso,Part1=fHead,C0 = HD})
948
		return Clone;
949
	end
950
end
951
952
function DealDamage(who,minDam,maxDam,Knock,Type)
953
	if(who)then
954
		local hum = who:FindFirstChildOfClass'Humanoid'
955
		local Damage = M.RNG(minDam,maxDam)
956
		local canHit = true
957
		if(hum)then
958
			for _, p in pairs(Hit) do
959
				if p[1] == hum then
960
					if(time() - p[2] < 0.1) then
961
						canHit = false
962
					else
963
						Hit[_] = nil
964
					end
965
				end
966
			end
967
			if(canHit)then
968
				if(hum.Health >= math.huge)then
969
					who:BreakJoints()
970
				else
971
					local player = S.Players:GetPlayerFromCharacter(who)
972
					if(not player or not Teamed[player])then
973
						if(Type == "Fire")then
974
							--idk..
975
						else
976
							local  c = Instance.new("ObjectValue",hum)
977
							c.Name = "creator"
978
							c.Value = plr
979
							game:service'Debris':AddItem(c,0.35)
980
							hum.Health = hum.Health - Damage
981
							if(Type == 'Knockback' and GetTorso(who))then
982
								local angle = GetTorso(who).Position - root.Position + Vector3.new(0, 0, 0).unit
983
								local body = NewInstance('BodyVelocity',GetTorso(who),{
984
									P = 500,
985
									maxForce = V3.N(math.huge,0,math.huge),
986
									velocity = root.CFrame.lookVector * Knock + root.Velocity / 1.05
987
								})
988
								game:service'Debris':AddItem(body,.5)	
989
							elseif(Type == 'Knockdown' and GetTorso(who))then
990
								local rek = GetTorso(who)
991
								print(rek)
992
								hum.PlatformStand = true
993
								delay(1,function()
994
									hum.PlatformStand = false
995
								end)
996
								local angle = (GetTorso(who).Position - (root.Position + Vector3.new(0, 0, 0))).unit
997
								local bodvol = NewInstance("BodyVelocity",rek,{
998
									velocity = angle * Knock,
999
									P = 5000,
1000
									maxForce = Vector3.new(8e+003, 8e+003, 8e+003),
1001
								})
1002
								local rl = NewInstance("BodyAngularVelocity",rek,{
1003
									P = 3000,
1004
									maxTorque = Vector3.new(500000, 500000, 500000) * 50000000000000,
1005
									angularvelocity = Vector3.new(math.random(-10, 10), math.random(-10, 10), math.random(-10, 10)),
1006
								})
1007
								game:GetService("Debris"):AddItem(bodvol, .5)
1008
								game:GetService("Debris"):AddItem(rl, .5)
1009
							end
1010
						end
1011
					end
1012
				end
1013
				table.insert(Hit,{hum,time()})
1014
			end
1015
		end
1016
	end
1017
end
1018
1019
function MagniDamage(pos,radius,mindamage,maxdamage,knockback,damagetype)
1020
	local Recursive
1021
	Recursive = function(whom)	
1022
		for _,c in next, whom:children() do
1023
			local hum = c:FindFirstChildOfClass'Humanoid'
1024
			local hed = c:FindFirstChild'Torso' or c:FindFirstChild'UpperTorso' or c:FindFirstChild'LowerTorso'
1025
			if(hum and hed)then
1026
				local mag = (hed.CFrame.p - pos).magnitude
1027
				if(mag <= radius and c ~= char)then
1028
					DealDamage(c,mindamage,maxdamage,knockback,damagetype)
1029
				end
1030
			end
1031
			Recursive(c)
1032
		end
1033
	end
1034
	Recursive(workspace)
1035
end
1036
1037
function MagniHeal(pos,radius,heal,needsTeamed)
1038
	for _,v in next, workspace:GetDescendants() do
1039
		local player = S.Players:GetPlayerFromCharacter(v)
1040
		local hum = v:FindFirstChildOfClass'Humanoid'
1041
		if(hum and v:IsA'Model')then
1042
			if(not needsTeamed or player and (not plr.Neutral and player.TeamColor == plr.TeamColor))then
1043
				local pp = v.PrimaryPart or v:FindFirstChild'Torso' or v:FindFirstChild'UpperTorso' or v:FindFirstChild'LowerTorso'
1044
				if(pp and (pp.CFrame.p-pos).magnitude <= radius)then
1045
					hum.Health = hum.Health + heal
1046
				end
1047
			end
1048
		end
1049
	end	
1050
end
1051
1052
1053
Debounces:New('how2use',1) -- name, cooldown
1054
1055
function TestDebounce()
1056
	if(Debounces:Get('how2use').Usable)then
1057
		-- code
1058
		Debounces:Get('how2use'):Use() -- use it up
1059
	end
1060
end
1061
1062
function Throw()
1063
	Attack = true
1064
	neutralAnims = false	
1065
	for i = 0, 0.5, 0.01 do
1066
		swait()
1067
		RJ.C0 = clerp(RJ.C0,CFrame.new(3.20297608e-13, 0.00628888281, 1.38610631e-06, 0.999999225, 5.09317033e-11, 0, -4.38656264e-11, 0.999980271, -0.00628618058, 0, 0.00628617639, 0.999979496),i)
1068
		LH.C0 = clerp(LH.C0,CFrame.new(-0.496501386, -0.990817726, 0.0216115303, 0.999877751, -4.38656264e-11, 0.0156119959, -9.81397825e-05, 0.999980271, 0.0062854127, -0.0156116877, -0.00628618058, 0.999858022),i)
1069
		RH.C0 = clerp(RH.C0,CFrame.new(0.498532087, -0.990986288, 0.0154690417, 0.999877751, -4.38656264e-11, 0.0156119959, -9.81397825e-05, 0.999980271, 0.0062854127, -0.0156116877, -0.00628618058, 0.999858022),i)
1070
		LS.C0 = clerp(LS.C0,CFrame.new(-1.46255744, 0.505245924, -0.00366198737, 0.996415496, 0.083136864, 0.0156119959, -0.0832431838, 0.996509492, 0.0062854127, -0.0150349522, -0.007562479, 0.999858022),i)
1071
		RS.C0 = clerp(RS.C0,CFrame.new(1.45461845, 0.798322797, -0.0251020491, 0.992853343, 0.114112578, -0.0349269882, 0.119324632, -0.944872856, 0.304921478, 0.00179381669, -0.306909949, -0.951736629),i)
1072
		NK.C0 = clerp(NK.C0,HD*CF.N(0,.1,-.25)*CF.A(M.R(-25),0,0),i)
1073
	end
1074
	wait(.25)
1075
	for i = 0, 0.5, 0.1 do
1076
		swait()
1077
		RJ.C0 = clerp(RJ.C0,CFrame.new(3.20297608e-13, 0.00628888281, 1.38610631e-06, 0.999999225, 5.09317033e-11, 0, -4.38656264e-11, 0.999980271, -0.00628618058, 0, 0.00628617639, 0.999979496),i)
1078
		LH.C0 = clerp(LH.C0,CFrame.new(-0.496501386, -0.990817726, 0.0216115303, 0.999877751, -4.38656264e-11, 0.0156119959, -9.81397825e-05, 0.999980271, 0.0062854127, -0.0156116877, -0.00628618058, 0.999858022),i)
1079
		RH.C0 = clerp(RH.C0,CFrame.new(0.498532087, -0.990986288, 0.0154690417, 0.999877751, -4.38656264e-11, 0.0156119959, -9.81397825e-05, 0.999980271, 0.0062854127, -0.0156116877, -0.00628618058, 0.999858022),i)
1080
		LS.C0 = clerp(LS.C0,CFrame.new(-1.46255744, 0.505245924, -0.00366198737, 0.996415496, 0.083136864, 0.0156119959, -0.0832431838, 0.996509492, 0.0062854127, -0.0150349522, -0.007562479, 0.999858022),i)
1081
		RS.C0 = clerp(RS.C0,CFrame.new(1.47101879, 0.662136793, -0.0487503409, 0.99285394, -0.0636505187, 0.100939959, 0.119318806, 0.516643643, -0.847845852, 0.00181584992, 0.853831172, 0.520546317),i)
1082
		NK.C0 = clerp(NK.C0,HD*CF.N(0,.1,-.25)*CF.A(M.R(-25),0,0),i)
1083
	end
1084
	ThrownKnife = true
1085
	Handle.Transparency = 1
1086
	Projectile(Handle)
1087
	Decal.Transparency = 1
1088
	wait(.5)
1089
	neutralAnims = true
1090
end
1091
1092
function ClickCombo()
1093
	Attack = true
1094
	neutralAnims = false
1095
	for i = 0, 1, 0.1 do
1096
		swait()
1097
		RJ.C0 = clerp(RJ.C0,CFrame.new(-0.0288643427, 0.00628663553, 0.0650177076, 0.795387626, -0.00380940945, -0.606089413, 0, 0.99998033, -0.0062851035, 0.606101394, 0.00499909231, 0.79537189),0.3)
1098
		LH.C0 = clerp(LH.C0,CFrame.new(-0.636930108, -0.990812421, 0.0222794991, 0.785828114, 0, 0.618445039, -0.00388699071, 0.99998033, 0.00493901037, -0.61843282, -0.0062851035, 0.785812557),0.3)
1099
		RH.C0 = clerp(RH.C0,CFrame.new(0.52050519, -0.991459012, -0.0594233908, 0.785828114, 0, 0.618445039, -0.00388699071, 0.99998033, 0.00493901037, -0.61843282, -0.0062851035, 0.785812557),0.3)
1100
		LS.C0 = clerp(LS.C0,CFrame.new(-1.3529017, 0.445256352, -0.140841246, 0.946949303, 0.32137382, 0.00244083256, -0.0499903522, 0.154793665, -0.986681402, -0.317471415, 0.934215069, 0.162647352),0.3)
1101
		RS.C0 = clerp(RS.C0,CFrame.new(1.27564776, 0.466243029, 0.284559131, 0.129886121, -0.885094404, -0.446920156, 0.991494656, 0.112184346, 0.0659796819, -0.00826080143, -0.451688766, 0.892137289),0.3)
1102
		NK.C0 = clerp(NK.C0,CFrame.new(-0.0194674022, 1.49851632, -0.0826113448, 0.795387626, -0.0348471925, 0.605098784, -0.00380940945, 0.998038769, 0.0624837019, -0.606089413, -0.0520038158, 0.793694794),0.3)	
1103
	end
1104
	local swoosh = coroutine.wrap(FX)(1306070008,1,M.RNG(95,125)/100)
1105
	Handle.CanCollide = true
1106
	local touched = Handle.Touched:connect(function(t)
1107
		Decapitate(t.Parent)
1108
	end)
1109
	for i = 0, 1, 0.05 do
1110
		swait()
1111
		if((root.Velocity * V3.N(1, 0, 1)).magnitude > 0.3 and WalkSpeed == 16)then
1112
			root.CFrame = root.CFrame*CF.N(0,0,-1)
1113
		end
1114
		RJ.C0 = clerp(RJ.C0,CFrame.new(-0.0220096968, 0.00628673984, -0.0231647622, 0.894043028, 0.00281593157, 0.447972536, 0, 0.99998033, -0.00628582342, -0.447981387, 0.00561979692, 0.894025445),0.3)
1115
		LH.C0 = clerp(LH.C0,CFrame.new(-0.526260316, -0.99155879, -0.0964359194, 0.900927901, 0, -0.433968931, 0.00272785197, 0.99998033, 0.00566307362, 0.433960348, -0.00628582342, 0.900910139),0.3)
1116
		RH.C0 = clerp(RH.C0,CFrame.new(0.494664222, -0.99110806, -0.00358221633, 0.900927901, 0, -0.433968931, 0.00272785197, 0.99998033, 0.00566307362, 0.433960348, -0.00628582342, 0.900910139),0.3)
1117
		LS.C0 = clerp(LS.C0,CFrame.new(-1.35400736, 0.608840644, 0.230960667, 0.920430303, 0.226487458, 0.318608999, -0.244053409, 0.969633698, 0.0157693904, -0.305362433, -0.092272222, 0.947755098),0.3)
1118
		RS.C0 = clerp(RS.C0,CFrame.new(1.13865554, 0.477464586, -0.481917799, 0.129889846, 0.658138037, 0.7416085, 0.99149406, -0.0799742565, -0.102683425, -0.0082702823, 0.748637795, -0.662927747),0.3)
1119
		NK.C0 = clerp(NK.C0,CFrame.new(0.0115462095, 1.49914026, 0.0166844055, 0.894043028, 0.0257562418, -0.447240323, 0.00281593157, 0.998003125, 0.0631033778, 0.447972536, -0.0576765276, 0.892185211),0.3)
1120
		HW.C0 = clerp(HW.C0,CFrame.new(0.0201188885, -1.41869056, -0.559928358, -1.8030405e-06, -3.1888485e-06, 1.00000012, -0.698006153, -0.716091871, -3.54647636e-06, 0.716091871, -0.698006153, -9.38773155e-07)*BeheadHold,0.3)
1121
	end
1122
	wait(.1)
1123
	Handle.CanCollide = false
1124
	touched:disconnect()
1125
	coroutine.wrap(function()
1126
		for i = 0, 1, 0.1 do
1127
			swait()
1128
			HW.C0 = Hold
1129
		end
1130
	end)()
1131
	neutralAnims = true
1132
	Attack = false
1133
end
1134
function AttemptGetKnife()
1135
	if((torso.CFrame.p-KnifePosition.p).magnitude < 6)then
1136
		ThrownKnife = false
1137
	end
1138
end
1139
mouse.Button1Down:connect(function()
1140
	if(not ThrownKnife)then 
1141
		if(Attack)then return end
1142
		ClickCombo() 
1143
	else
1144
		AttemptGetKnife()
1145
	end
1146
end)
1147
mouse.KeyDown:connect(function(k)
1148
	if(Attack)then return end	
1149
	if(k == "t")then
1150
		Throw()
1151
	elseif(k == 'm')then
1152
		if(Music.Volume ~= 0)then
1153
			Music.Volume =0
1154
		else
1155
			Music.Volume = Sounds.Psycho.Volume
1156
		end
1157
	elseif(k == ';')then
1158
		if(Mesh.MeshId ~= 'http://www.roblox.com/asset/?id=123248347')then
1159
			Mesh.MeshId = 'http://www.roblox.com/asset/?id=123248347'
1160
			Mesh.TextureId = 'http://www.roblox.com/asset/?id=123248449'
1161
			Mesh.Scale = V3.N(.4,.4,.4)
1162
			Hold = CF.N(0,-1,-1.35)*CF.A(M.R(-90),0,0)
1163
			BeheadHold = CF.N(0,.5,0)*CF.A(0,M.R(-90),0)
1164
		else
1165
			Mesh.MeshId='rbxassetid://471401475'
1166
			Mesh.TextureId='rbxassetid://471401476'
1167
			Mesh.Scale = V3.N(.01,.01,.01)
1168
			Hold = CF.N(0,-1,-1)*CF.A(M.R(-90),M.R(90),0)
1169
			BeheadHold = CF.A(0,0,0)
1170
		end
1171
		HW.C0 = Hold
1172
	end
1173
end)