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