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) |