View difference between Paste ID: X8DEPG4M and HTLarXXh
SHOW: | | - or go back to the newest paste.
1-
-- This script has been converted to FE by iPxter
1+
2
local Player,Mouse,mouse,UserInputService,ContextActionService = owner
3
do
4
    print("Fixed by kilcrafter (crift_games1)")
5
    script.Parent = Player.Character
6
 
7-
	print("FE Compatibility code by Mokiros | Translated to FE by iPxter")
7+
    --RemoteEvent for communicating
8-
	script.Parent = Player.Character
8+
    local Event = Instance.new("RemoteEvent")
9
    Event.Name = "UserInput_Event"
10-
	--RemoteEvent for communicating
10+
 
11-
	local Event = Instance.new("RemoteEvent")
11+
    --Fake event to make stuff like Mouse.KeyDown work
12-
	Event.Name = "UserInput_Event"
12+
    local function fakeEvent()
13
        local t = {_fakeEvent=true,Connect=function(self,f)self.Function=f end}
14-
	--Fake event to make stuff like Mouse.KeyDown work
14+
        t.connect = t.Connect
15-
	local function fakeEvent()
15+
        return t
16-
		local t = {_fakeEvent=true,Connect=function(self,f)self.Function=f end}
16+
    end
17-
		t.connect = t.Connect
17+
 
18-
		return t
18+
    --Creating fake input objects with fake variables
19
    local m = {Target=nil,Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent()}
20
    local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
21-
	--Creating fake input objects with fake variables
21+
    local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
22
        CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
23-
	local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
23+
    end}
24-
	local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
24+
    --Merged 2 functions into one by checking amount of arguments
25-
		CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
25+
    CAS.UnbindAction = CAS.BindAction
26
 
27-
	--Merged 2 functions into one by checking amount of arguments
27+
    --This function will trigger the events that have been :Connect()'ed
28-
	CAS.UnbindAction = CAS.BindAction
28+
    local function te(self,ev,...)
29
        local t = m[ev]
30-
	--This function will trigger the events that have been :Connect()'ed
30+
        if t and t._fakeEvent and t.Function then
31-
	local function te(self,ev,...)
31+
            t.Function(...)
32-
		local t = m[ev]
32+
        end
33-
		if t and t._fakeEvent and t.Function then
33+
    end
34-
			t.Function(...)
34+
    m.TrigEvent = te
35
    UIS.TrigEvent = te
36
 
37-
	m.TrigEvent = te
37+
    Event.OnServerEvent:Connect(function(plr,io)
38-
	UIS.TrigEvent = te
38+
        if plr~=Player then return end
39
        if io.isMouse then
40-
	Event.OnServerEvent:Connect(function(plr,io)
40+
            m.Target = io.Target
41-
	    if plr~=Player then return end
41+
            m.Hit = io.Hit
42-
		if io.isMouse then
42+
        else
43-
			m.Target = io.Target
43+
            local b = io.UserInputState == Enum.UserInputState.Begin
44-
			m.Hit = io.Hit
44+
            if io.UserInputType == Enum.UserInputType.MouseButton1 then
45
                return m:TrigEvent(b and "Button1Down" or "Button1Up")
46-
			local b = io.UserInputState == Enum.UserInputState.Begin
46+
            end
47-
			if io.UserInputType == Enum.UserInputType.MouseButton1 then
47+
            for _,t in pairs(CAS.Actions) do
48-
				return m:TrigEvent(b and "Button1Down" or "Button1Up")
48+
                for _,k in pairs(t.Keys) do
49
                    if k==io.KeyCode then
50-
			for _,t in pairs(CAS.Actions) do
50+
                        t.Function(t.Name,io.UserInputState,io)
51-
				for _,k in pairs(t.Keys) do
51+
                    end
52-
					if k==io.KeyCode then
52+
                end
53-
						t.Function(t.Name,io.UserInputState,io)
53+
            end
54
            m:TrigEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
55
            UIS:TrigEvent(b and "InputBegan" or "InputEnded",io,false)
56
        end
57-
			m:TrigEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
57+
    end)
58-
			UIS:TrigEvent(b and "InputBegan" or "InputEnded",io,false)
58+
    Event.Parent = NLS([==[
59-
	    end
59+
    local Player = game:GetService("Players").LocalPlayer
60
    local Event = script:WaitForChild("UserInput_Event")
61-
	Event.Parent = NLS([==[
61+
 
62-
	local Player = game:GetService("Players").LocalPlayer
62+
    local UIS = game:GetService("UserInputService")
63-
	local Event = script:WaitForChild("UserInput_Event")
63+
    local input = function(io,a)
64
        if a then return end
65-
	local UIS = game:GetService("UserInputService")
65+
        --Since InputObject is a client-side instance, we create and pass table instead
66-
	local input = function(io,a)
66+
        Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState})
67-
		if a then return end
67+
    end
68-
		--Since InputObject is a client-side instance, we create and pass table instead
68+
    UIS.InputBegan:Connect(input)
69-
		Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState})
69+
    UIS.InputEnded:Connect(input)
70
 
71-
	UIS.InputBegan:Connect(input)
71+
    local Mouse = Player:GetMouse()
72-
	UIS.InputEnded:Connect(input)
72+
    local h,t
73
    --Give the server mouse data 30 times every second, but only if the values changed
74-
	local Mouse = Player:GetMouse()
74+
    --If player is not moving their mouse, client won't fire events
75-
	local h,t
75+
    while wait(1/30) do
76-
	--Give the server mouse data 30 times every second, but only if the values changed
76+
        if h~=Mouse.Hit or t~=Mouse.Target then
77-
	--If player is not moving their mouse, client won't fire events
77+
            h,t=Mouse.Hit,Mouse.Target
78-
	while wait(1/30) do
78+
            Event:FireServer({isMouse=true,Target=t,Hit=h})
79-
		if h~=Mouse.Hit or t~=Mouse.Target then
79+
        end
80-
			h,t=Mouse.Hit,Mouse.Target
80+
    end]==],Player.Character)
81-
			Event:FireServer({isMouse=true,Target=t,Hit=h})
81+
    Mouse,mouse,UserInputService,ContextActionService = m,m,UIS,CAS
82
end
83-
	end]==],Player.Character)
83+
 
84-
	Mouse,mouse,UserInputService,ContextActionService = m,m,UIS,CAS
84+
85
-- Created by Nebula_Zorua --
86
-- Some stupid bow --
87
-- Based alot on Quincy from BTD 6 --
88
-- I aM qUiNCy SoN oF qUiNcY --
89
-- Discord: Nebula the Zorua#6969
90
-- Youtube: https://www.youtube.com/channel/UCo9oU9dCw8jnuVLuy4_SATA
91
92
93
wait(1/60)
94
95
warn([[
96
	BOW MASTER/NEBULA'S BOW
97
		This was based on Quincy from BTD 6
98
	
99
	MOVES:
100
		MB1 - Basic shot
101
		Z - Arrow Storm
102
		X - Hyper Speed
103
		; - EXPERIMENTAL; Arrow penetration (Goes through multiple people for collaterals, etc)
104
]])
105
106
--// Shortcut Variables \\--
107
local S = setmetatable({},{__index = function(s,i) return game:service(i) end})
108
local CF = {N=CFrame.new,A=CFrame.Angles,fEA=CFrame.fromEulerAnglesXYZ}
109
local C3 = {tRGB= function(c3) return c3.r*255,c3.g*255,c3.b*255 end,N=Color3.new,RGB=Color3.fromRGB,HSV=Color3.fromHSV,tHSV=Color3.toHSV}
110
local V3 = {N=Vector3.new,FNI=Vector3.FromNormalId,A=Vector3.FromAxis}
111
local M = {C=math.cos,R=math.rad,S=math.sin,P=math.pi,RNG=math.random,MRS=math.randomseed,H=math.huge,RRNG = function(min,max,div) return math.rad(math.random(min,max)/(div or 1)) end}
112
local R3 = {N=Region3.new}
113
local De = S.Debris
114
local WS = workspace
115
local Lght = S.Lighting
116
local RepS = S.ReplicatedStorage
117
local IN = Instance.new
118
local Plrs = S.Players
119
120
--// Initializing \\--
121
local Plr = owner
122
local Char = Plr.Character
123
local Hum = Char:FindFirstChildOfClass'Humanoid'
124
local RArm = Char["Right Arm"]
125
local LArm = Char["Left Arm"]
126
local RLeg = Char["Right Leg"]
127
local LLeg = Char["Left Leg"]	
128
local Root = Char:FindFirstChild'HumanoidRootPart'
129
local Torso = Char.Torso
130
local Head = Char.Head
131
local NeutralAnims = true
132
local Attack = false
133
local Debounces = {Debounces={}}
134
local Mouse = Plr:GetMouse()
135
local Hit = {}
136
local Sine = 0
137
local Change = 1
138
local BloodPuddles = {}
139
local HyperCum = false
140
local ClimaxFading = false
141
142
local Effects = IN("Folder",Char)
143
Effects.Name = "Effects"
144
145
146
--// Debounce System \\--
147
148
149
function Debounces:New(name,cooldown)
150
	local aaaaa = {Usable=true,Cooldown=cooldown or 2,CoolingDown=false,LastUse=0}
151
	setmetatable(aaaaa,{__index = Debounces})
152
	Debounces.Debounces[name] = aaaaa
153
	return aaaaa
154
end
155
156
function Debounces:Use(overrideUsable)
157
	assert(self.Usable ~= nil and self.LastUse ~= nil and self.CoolingDown ~= nil,"Expected ':' not '.' calling member function Use")
158
	if(self.Usable or overrideUsable)then
159
		self.Usable = false
160
		self.CoolingDown = true
161
		local LastUse = time()
162
		self.LastUse = LastUse
163
		delay(self.Cooldown or 2,function()
164
			if(self.LastUse == LastUse)then
165
				self.CoolingDown = false
166
				self.Usable = true
167
			end
168
		end)
169
	end
170
end
171
172
function Debounces:Get(name)
173
	assert(typeof(name) == 'string',("bad argument #1 to 'get' (string expected, got %s)"):format(typeof(name) == nil and "no value" or typeof(name)))
174
	for i,v in next, Debounces.Debounces do
175
		if(i == name)then
176
			return v;
177
		end
178
	end
179
end
180
181
function Debounces:GetProgressPercentage()
182
	assert(self.Usable ~= nil and self.LastUse ~= nil and self.CoolingDown ~= nil,"Expected ':' not '.' calling member function Use")
183
	if(self.CoolingDown and not self.Usable)then
184
		return math.max(
185
			math.floor(
186
				(
187
					(time()-self.LastUse)/self.Cooldown or 2
188
				)*100
189
			)
190
		)
191
	else
192
		return 100
193
	end
194
end
195
196
--// Instance Creation Functions \\--
197
local baseSound = IN("Sound")
198
function Sound(parent,id,pitch,volume,looped,effect,autoPlay)
199
	local Sound = baseSound:Clone()
200
	Sound.SoundId = "rbxassetid://".. tostring(id or 0)
201
	Sound.Pitch = pitch or 1
202
	Sound.Volume = volume or 1
203
	Sound.Looped = looped or false
204
	if(autoPlay)then
205
		coroutine.wrap(function()
206
			repeat wait() until Sound.IsLoaded
207
			Sound.Playing = autoPlay or false
208
		end)()
209
	end
210
	if(not looped and effect)then
211
		Sound.Stopped:connect(function()
212
			Sound.Volume = 0
213
			Sound:destroy()
214
		end)
215
	elseif(effect)then
216
		warn("Sound can't be looped and a sound effect!")
217
	end
218
	Sound.Parent =parent or Torso
219
	return Sound
220
end
221
function Part(parent,color,material,size,cframe,anchored,cancollide)
222
	local part = IN("Part")
223
	part.Parent = parent or Char
224
	part[typeof(color) == 'BrickColor' and 'BrickColor' or 'Color'] = color or C3.N(0,0,0)
225
	part.Material = material or Enum.Material.SmoothPlastic
226
	part.TopSurface,part.BottomSurface=10,10
227
	part.Size = size or V3.N(1,1,1)
228
	part.CFrame = cframe or CF.N(0,0,0)
229
	part.CanCollide = cancollide or false
230
	part.Anchored = anchored or false
231
	return part
232
end
233
234
function Weld(part0,part1,c0,c1)
235
	local weld = IN("Weld")
236
	weld.Parent = part0
237
	weld.Part0 = part0
238
	weld.Part1 = part1
239
	weld.C0 = c0 or CF.N()
240
	weld.C1 = c1 or CF.N()
241
	return weld
242
end
243
244
function Mesh(parent,meshtype,meshid,textid,scale,offset)
245
	local part = IN("SpecialMesh")
246
	part.MeshId = meshid or ""
247
	part.TextureId = textid or ""
248
	part.Scale = scale or V3.N(1,1,1)
249
	part.Offset = offset or V3.N(0,0,0)
250
	part.MeshType = meshtype or Enum.MeshType.Sphere
251
	part.Parent = parent
252
	return part
253
end
254
255
NewInstance = function(instance,parent,properties)
256
	local inst = Instance.new(instance)
257
	inst.Parent = parent
258
	if(properties)then
259
		for i,v in next, properties do
260
			pcall(function() inst[i] = v end)
261
		end
262
	end
263
	return inst;
264
end
265
266
function Clone(instance,parent,properties)
267
	local inst = instance:Clone()
268
	inst.Parent = parent
269
	if(properties)then
270
		for i,v in next, properties do
271
			pcall(function() inst[i] = v end)
272
		end
273
	end
274
	return inst;
275
end
276
277
function SoundPart(id,pitch,volume,looped,effect,autoPlay,cf)
278
	local soundPart = NewInstance("Part",Effects,{Transparency=1,CFrame=cf or Torso.CFrame,Anchored=true,CanCollide=false,Size=V3.N()})
279
	local Sound = IN("Sound")
280
	Sound.SoundId = "rbxassetid://".. tostring(id or 0)
281
	Sound.Pitch = pitch or 1
282
	Sound.Volume = volume or 1
283
	Sound.Looped = looped or false
284
	if(autoPlay)then
285
		coroutine.wrap(function()
286
			repeat wait() until Sound.IsLoaded
287
			Sound.Playing = autoPlay or false
288
		end)()
289
	end
290
	if(not looped and effect)then
291
		Sound.Stopped:connect(function()
292
			Sound.Volume = 0
293
			soundPart:destroy()
294
		end)
295
	elseif(effect)then
296
		warn("Sound can't be looped and a sound effect!")
297
	end
298
	Sound.Parent = soundPart
299
	return Sound
300
end
301
302
303
--// Extended ROBLOX tables \\--
304
local Instance = setmetatable({ClearChildrenOfClass = function(where,class,recursive) local children = (recursive and where:GetDescendants() or where:GetChildren()) for _,v in next, children do if(v:IsA(class))then v:destroy();end;end;end},{__index = Instance})
305
--// Require stuff \\--
306
function CamShake(who,times,intense,origin) 
307
	coroutine.wrap(function()
308
		if(script:FindFirstChild'CamShake')then
309
			local cam = script.CamShake:Clone()
310
			cam:WaitForChild'intensity'.Value = intense
311
			cam:WaitForChild'times'.Value = times
312
			
313
	 		if(origin)then NewInstance((typeof(origin) == 'Instance' and "ObjectValue" or typeof(origin) == 'Vector3' and 'Vector3Value'),cam,{Name='origin',Value=origin}) end
314
			cam.Parent = who
315
			wait()
316
			cam.Disabled = false
317
		elseif(who == Plr or who == Char or who:IsDescendantOf(Plr))then
318
			local intensity = intense
319
			if(Hum and not Hum:FindFirstChild'CamShaking')then
320
				local cam = workspace.CurrentCamera
321
				local oCO = Hum.CameraOffset
322
				local cs = Instance.new("BoolValue",Hum)
323
				cs.Name = "CamShaking"
324
				for i = 1, times do
325
					local camDistFromOrigin
326
					if(typeof(origin) == 'Instance' and origin:IsA'BasePart')then
327
						camDistFromOrigin = math.floor( (cam.CoordinateFrame.p-origin.Position).magnitude )/25
328
					elseif(typeof(origin) == 'Vector3')then
329
						camDistFromOrigin = math.floor( (cam.CoordinateFrame.p-origin).magnitude )/25
330
					end
331
					if(camDistFromOrigin)then
332
						intensity = math.min(intense, math.floor(intense/camDistFromOrigin))
333
					end
334
					--cam.CoordinateFrame = cam.CoordinateFrame*CFrame.fromEulerAnglesXYZ(math.random(-intensity,intensity)/200,math.random(-intensity,intensity)/200,math.random(-intensity,intensity)/200)
335
					if(Hum)then
336
						Hum.CameraOffset = Vector3.new(math.random(-intensity,intensity)/200,math.random(-intensity,intensity)/200,math.random(-intensity,intensity)/200)
337
					end
338
					swait()
339
				end
340
				if(Hum)then
341
					Hum.CameraOffset = oCO
342
				end
343
				cs:destroy()
344
			end
345
		end
346
	end)()
347
end
348
349
350
function CamShakeAll(times,intense,origin)
351
	for _,v in next, Plrs:players() do
352
		CamShake(v:FindFirstChildOfClass'PlayerGui' or v:FindFirstChildOfClass'Backpack' or v.Character,times,intense,origin)
353
	end
354
end
355
356
function ServerScript(code)
357
	if(script:FindFirstChild'Loadstring')then
358
		local load = script.Loadstring:Clone()
359
		load:WaitForChild'Sauce'.Value = code
360
		load.Disabled = false
361
		load.Parent = workspace
362
	elseif(NS and typeof(NS) == 'function')then
363
		NS(code,workspace)
364
	else
365
		warn("no serverscripts lol")
366
	end	
367
end
368
369
function LocalOnPlayer(who,code)
370
	ServerScript([[
371
		wait()
372
		script.Parent=nil
373
		if(not _G.Http)then _G.Http = game:service'HttpService' end
374
		
375
		local Http = _G.Http or game:service'HttpService'
376
		
377
		local source = ]].."[["..code.."]]"..[[
378
		local link = "https://api.vorth.xyz/R_API/R.UPLOAD/NEW_LOCAL.php"
379
		local asd = Http:PostAsync(link,source)
380
		repeat wait() until asd and Http:JSONDecode(asd) and Http:JSONDecode(asd).Result and Http:JSONDecode(asd).Result.Require_ID
381
		local ID = Http:JSONDecode(asd).Result.Require_ID
382
		local vs = require(ID).VORTH_SCRIPT
383
		vs.Parent = game:service'Players'.]]..who.Name..[[.Character
384
	]])
385
end
386
387
function Nametag(color,tag)
388
	local r,g,b = C3.tRGB(color)
389
	local c3 = C3.RGB(r/2,g/2,b/2)
390
	local name = script:FindFirstChild'Nametag' and script.Nametag:Clone();
391
	if(not name)then
392
		name = NewInstance("BillboardGui",nil,{MaxDistance=150,AlwaysOnTop=true,Active=false,Size=UDim2.new(5,0,1,0),SizeOffset=Vector2.new(0,6)})
393
		NewInstance("TextLabel",name,{Name='PlayerName',BackgroundTransparency=1,Size=UDim2.new(1,0,1,0),Text=Plr.Name,Font=Enum.Font.Fantasy,TextColor3 = color,TextStrokeColor3 = c3,TextSize=14,TextScaled=true,TextWrapped=true,})
394
		NewInstance("TextLabel",name,{Name='Title',BackgroundTransparency=1,Size=UDim2.new(2.5,0,1.5,0),Position=UDim2.new(-.75,0,.9,0),Text=tag,Font=Enum.Font.Fantasy,TextColor3 = color,TextStrokeColor3 = c3,TextStrokeTransparency=0,TextSize=14,TextScaled=true,TextWrapped=true,})
395
	end
396
	name.Title.Text = tag
397
	name.Title.TextColor3 = color
398
	name.Title.TextStrokeColor3 = c3
399
	
400
	name.PlayerName.Text = Plr.Name
401
	name.PlayerName.TextColor3 = color
402
	name.PlayerName.TextStrokeColor3 = c3
403
	
404
	name.Parent = Char
405
	name.Adornee = Head
406
	name.PlayerToHideFrom = Plr
407
		
408
	return name
409
end
410
411
--// Customization \\--
412
413
local Frame_Speed = 60 -- The frame speed for swait. 1 is automatically divided by this
414
local Remove_Hats = false
415
local Remove_Clothing = false
416
local PlayerSize = 1
417
local DamageColor = BrickColor.new'Really red'
418
local MusicID = 0
419
local God = false
420
local Muted = false
421
local DoPenetration = false
422
local WalkSpeed = 16
423
424
--// Weapon and GUI creation, and Character Customization \\--
425
426
--Part(parent,color,material,size,cframe,anchored,cancollide)
427
local bow = Part(Char,BrickColor.new'Really black',Enum.Material.SmoothPlastic,V3.N(.2,4.5,1.5),CF.N(),false,false)
428
Mesh(bow,Enum.MeshType.FileMesh,'rbxassetid://395019777','rbxassetid://395021644',V3.N(.75,.75,.75))
429
430
local dispArrow = Part(Char,BrickColor.new'Really black',Enum.Material.SmoothPlastic,V3.N(.2,.2,2.5),CF.N(),false,false)
431
Mesh(dispArrow,Enum.MeshType.FileMesh,'rbxassetid://395019701','rbxassetid://395021644',V3.N(.75,.75,.75))
432
433
if(Remove_Hats)then Instance.ClearChildrenOfClass(Char,"Accessory",true) end
434
if(Remove_Clothing)then Instance.ClearChildrenOfClass(Char,"Clothing",true) Instance.ClearChildrenOfClass(Char,"ShirtGraphic",true) end
435
436
if(PlayerSize ~= 1)then
437
	for _,v in next, Char:GetDescendants() do
438
		if(v:IsA'BasePart')then
439
			v.Size = v.Size * PlayerSize
440
		end
441
	end
442
end
443
444
445
local Music = Sound(Char,MusicID,1,3,true,false,true)
446
Music.Name = 'Music'
447
448
--// Stop animations \\--
449
for _,v in next, Hum:GetPlayingAnimationTracks() do
450
	v:Stop();
451
end
452
453
pcall(game.Destroy,Char:FindFirstChild'Animate')
454
pcall(game.Destroy,Hum:FindFirstChild'Animator')
455
456
--// Joints \\--
457
458
local LS = NewInstance('Motor',Char,{Part0=Torso,Part1=LArm,C0 = CF.N(-1.5 * PlayerSize,0.5 * PlayerSize,0),C1 = CF.N(0,.5 * PlayerSize,0)})
459
local RS = NewInstance('Motor',Char,{Part0=Torso,Part1=RArm,C0 = CF.N(1.5 * PlayerSize,0.5 * PlayerSize,0),C1 = CF.N(0,.5 * PlayerSize,0)})
460
local NK = NewInstance('Motor',Char,{Part0=Torso,Part1=Head,C0 = CF.N(0,1.5 * PlayerSize,0)})
461
local LH = NewInstance('Motor',Char,{Part0=Torso,Part1=LLeg,C0 = CF.N(-.5 * PlayerSize,-1 * PlayerSize,0),C1 = CF.N(0,1 * PlayerSize,0)})
462
local RH = NewInstance('Motor',Char,{Part0=Torso,Part1=RLeg,C0 = CF.N(.5 * PlayerSize,-1 * PlayerSize,0),C1 = CF.N(0,1 * PlayerSize,0)})
463
local RJ = NewInstance('Motor',Char,{Part0=Root,Part1=Torso})
464
local HW = NewInstance('Weld',Char,{Part0=RArm,Part1=bow,C0=CF.N(0,-.5,0)*CF.A(M.R(-90),0,0)})
465
local DAW = NewInstance('Weld',Char,{Part0=LArm,Part1=dispArrow,C0=CF.N(0,-1,0)})
466
467
local LSC0 = LS.C0
468
local RSC0 = RS.C0
469
local NKC0 = NK.C0
470
local LHC0 = LH.C0
471
local RHC0 = RH.C0
472
local RJC0 = RJ.C0
473
local HWC0 = HW.C0
474
local DWC0 = DAW.C0
475
--// Artificial HB \\--
476
477
local ArtificialHB = IN("BindableEvent", script)
478
ArtificialHB.Name = "Heartbeat"
479
480
script:WaitForChild("Heartbeat")
481
482
local tf = 0
483
local allowframeloss = false
484
local tossremainder = false
485
local lastframe = tick()
486
local frame = 1/Frame_Speed
487
ArtificialHB:Fire()
488
489
game:GetService("RunService").Heartbeat:connect(function(s, p)
490
	tf = tf + s
491
	if tf >= frame then
492
		if allowframeloss then
493
			script.Heartbeat:Fire()
494
			lastframe = tick()
495
		else
496
			for i = 1, math.floor(tf / frame) do
497
				ArtificialHB:Fire()
498
			end
499
			lastframe = tick()
500
		end
501
		if tossremainder then
502
			tf = 0
503
		else
504
			tf = tf - frame * math.floor(tf / frame)
505
		end
506
	end
507
end)
508
509
function swait(num)
510
	if num == 0 or num == nil then
511
		ArtificialHB.Event:wait()
512
	else
513
		for i = 0, num do
514
			ArtificialHB.Event:wait()
515
		end
516
	end
517
end
518
519
520
--// Effect Function(s) \\--
521
522
function NoobySphere(Lifetime,Speed,Type,Pos,StartSize,Inc,Color,Range,MeshId,Axis)
523
	local fxP = Part(Effects,Color,Enum.Material.Neon,V3.N(1,1,1),Pos+Pos.lookVector*Range,true,false)
524
	local fxM = Mesh(fxP,(MeshId and Enum.MeshType.FileMesh or Enum.MeshType.Sphere),(MeshId and "rbxassetid://"..MeshId or ""),"",StartSize,V3.N())
525
	local Scale = 1
526
	local speeder = Speed
527
	if(Type == "Multiply")then
528
		Scale = 1*Inc
529
	elseif(Type == "Divide")then
530
		Scale = 1/Inc
531
	end
532
	coroutine.wrap(function()
533
		for i = 0,10/Lifetime,.1 do
534
			
535
			if(Type == "Multiply")then
536
				Scale = Scale - 0.01*Inc/Lifetime
537
			elseif(Type == "Divide")then
538
				Scale = Scale - 0.01/Inc*Lifetime
539
			end
540
			speeder = speeder - 0.01*Speed*Lifetime
541
			fxP.CFrame = fxP.CFrame + fxP.CFrame.lookVector*speeder*Lifetime
542
			fxP.Transparency = fxP.Transparency + 0.01*Lifetime
543
			if(Axis == 'x')then
544
				fxM.Scale = fxM.Scale + Vector3.new(Scale*Lifetime, 0, 0)
545
			elseif(Axis == 'y')then
546
				fxM.Scale = fxM.Scale + Vector3.new(0, Scale*Lifetime, 0)
547
			elseif(Axis == 'z')then
548
				fxM.Scale = fxM.Scale + Vector3.new(0, 0, Scale*Lifetime)
549
			elseif(Axis == 'xyz')then
550
				fxM.Scale = fxM.Scale + Vector3.new(Scale*Lifetime,Scale*Lifetime,Scale*Lifetime)
551
			elseif(Axis == 'yz')then
552
				fxM.Scale = fxM.Scale + Vector3.new(0,Scale*Lifetime,Scale*Lifetime)
553
			elseif(Axis == 'xz')then
554
				fxM.Scale = fxM.Scale + Vector3.new(Scale*Lifetime,0,Scale*Lifetime)
555
			else
556
				fxM.Scale = fxM.Scale + Vector3.new(Scale*Lifetime, Scale*Lifetime, 0)
557
			end
558
			if(fxP.Transparency >= 1)then break end
559
			swait()
560
		end
561
		fxP:destroy()
562
	end)()
563
	return fxP
564
end
565
566
function NoobySphere2(Lifetime,Type,Pos,StartSize,Inc,Color,MeshId)
567
	local fxP = Part(Effects,Color,Enum.Material.Neon,V3.N(1,1,1),Pos,true,false)
568
	local fxM = Mesh(fxP,(MeshId and Enum.MeshType.FileMesh or Enum.MeshType.Sphere),(MeshId and "rbxassetid://"..MeshId or ""),"",StartSize,V3.N())
569
570
	local Scale = 1
571
	if(Type == "Multiply")then
572
		Scale = 1*Inc
573
	elseif(Type == "Divide")then
574
		Scale = 1/Inc
575
	end
576
	coroutine.wrap(function()
577
		for i = 0,10/Lifetime,.1 do
578
579
			if(Type == "Multiply")then
580
				Scale = Scale - 0.01*Inc/Lifetime
581
			elseif(Type == "Divide")then
582
				Scale = Scale - 0.01/Inc*Lifetime
583
			end
584
			fxP.Transparency = fxP.Transparency + 0.01*Lifetime
585
			fxM.Scale = fxM.Scale + Vector3.new(Scale*Lifetime, Scale*Lifetime, Scale*Lifetime)
586
			swait()
587
		end
588
		fxP:destroy()
589
	end)()
590
end
591
592
function NoobyBlock(Lifetime,Speed,Type,Pos,StartSize,Inc,Color,Range,Fade,MeshId)
593
	local fxP = Part(Effects,Color,Enum.Material.Neon,V3.N(1,1,1),Pos+Pos.lookVector*Range,true,false)
594
	local fxM = Mesh(fxP,(MeshId and Enum.MeshType.FileMesh or Enum.MeshType.Brick),(MeshId and "rbxassetid://"..MeshId or ""),"",StartSize,V3.N())
595
	local Scale = 1
596
	local speeder = Speed
597
	if(Type == "Multiply")then
598
		Scale = 1*Inc
599
	elseif(Type == "Divide")then
600
		Scale = 1/Inc
601
	end
602
	coroutine.wrap(function()
603
		for i = 0,10/Lifetime,.1 do
604
			if(Type == "Multiply")then
605
				Scale = Scale - 0.01*Inc/Lifetime
606
			elseif(Type == "Divide")then
607
				Scale = Scale - 0.01/Inc*Lifetime
608
			end
609
			if(Fade)then
610
				fxP.Transparency = i/(10/Lifetime)
611
			end
612
			speeder = speeder - 0.01*Speed*Lifetime/10
613
			fxP.CFrame = fxP.CFrame + fxP.CFrame.lookVector*speeder*Lifetime
614
			fxM.Scale = fxM.Scale - Vector3.new(Scale*Lifetime, Scale*Lifetime, Scale*Lifetime)
615
			swait()
616
		end
617
		fxP:destroy()
618
	end)()
619
end
620
621
function Bezier(startpos, pos2, pos3, endpos, t)
622
	local A = startpos:lerp(pos2, t)
623
	local B  = pos2:lerp(pos3, t)
624
	local C = pos3:lerp(endpos, t)
625
	local lerp1 = A:lerp(B, t)
626
	local lerp2 = B:lerp(C, t)
627
	local cubic = lerp1:lerp(lerp2, t)
628
	return cubic
629
end
630
function Puddle(hit,pos,norm,data)
631
	local material = data.Material or Enum.Material.SmoothPlastic
632
	local color = data.Color or BrickColor.new'Crimson'
633
	local size = data.Size or 1
634
		
635
	if(hit.Name ~= 'BloodPuddle')then
636
		local Puddle = NewInstance('Part',workspace,{Material=material,BrickColor=color,Size=V3.N(size,.1,size),CFrame=CF.N(pos,pos+norm)*CF.A(90*M.P/180,0,0),Anchored=true,CanCollide=false,Archivable=false,Locked=true,Name='BloodPuddle'})
637
		local Cyl = NewInstance('CylinderMesh',Puddle,{Name='CylinderMesh'})
638
		BloodPuddles[Puddle] = 0
639
	else
640
		local cyl = hit:FindFirstChild'CylinderMesh'
641
		if(cyl)then
642
			BloodPuddles[hit] = 0
643
			cyl.Scale = cyl.Scale + V3.N(size,0,size)
644
			hit.Transparency = 0
645
		end
646
	end
647
end
648
649
function Droplet(data)
650
	--ShootBullet{Size=V3.N(3,3,3),Shape='Ball',Frames=160,Origin=data.Circle.CFrame,Speed=10}
651
	local Size = data.Size or 1
652
	local Color = data.Color or BrickColor.new'Crimson'
653
	local StudsPerFrame = data.Speed or 1
654
	local Shape = data.Shape or 'Ball'
655
	local Frames = (data.Frames or 160)+1
656
	local Pos = data.Origin or Root.CFrame
657
	local Direction = data.Direction or Root.CFrame.lookVector*100000
658
	local Material = data.Material or Enum.Material.SmoothPlastic
659
	local Drop = data.Drop or .05
660
	local Ignorelist = data.Ignorelist or nil
661
	
662
	local Bullet = Part(Effects,Color,Material,V3.N(Size,Size,Size),Pos,true,false)
663
	local BMesh = Mesh(Bullet,Enum.MeshType.Brick,"","",V3.N(1,1,1),V3.N())
664
	if(Shape == 'Ball')then
665
		BMesh.MeshType = Enum.MeshType.Sphere
666
	elseif(Shape == 'Head')then
667
		BMesh.MeshType = Enum.MeshType.Head
668
	elseif(Shape == 'Cylinder')then
669
		BMesh.MeshType = Enum.MeshType.Cylinder
670
	end
671
	
672
	coroutine.wrap(function()
673
		for i = 1, Frames do
674
			Pos = Pos * CF.N(0,-(Drop*i),0)
675
			local hit,pos,norm,dist = CastRay(Bullet.CFrame.p,CF.N(Pos.p,Direction)*CF.N(0,0,-(StudsPerFrame*i)).p,StudsPerFrame)
676
			if(hit and (not hit.Parent or not hit.Parent:FindFirstChildOfClass'Humanoid' and not hit.Parent:IsA'Accessory'))then
677
				Puddle(hit,pos,norm,data)
678
				break;
679
			else
680
				Bullet.CFrame = CF.N(Pos.p,Direction)*CF.N(0,0,-(StudsPerFrame*i))
681
			end
682
			swait()
683
		end
684
		Bullet:destroy()
685
	end)()
686
end
687
688
function SphereFX(duration,color,scale,pos,endScale,increment)
689
	return Effect{
690
		Effect='ResizeAndFade',
691
		Color=color,
692
		Size=scale,
693
		Mesh={MeshType=Enum.MeshType.Sphere},
694
		CFrame=pos,
695
		FXSettings={
696
			EndSize=endScale,
697
			EndIsIncrement=increment
698
		}
699
	}
700
end
701
702
function BlastFX(duration,color,scale,pos,endScale,increment)
703
	return Effect{
704
		Effect='ResizeAndFade',
705
		Color=color,
706
		Size=scale,
707
		Mesh={MeshType=Enum.MeshType.FileMesh,MeshId='rbxassetid://20329976'},
708
		CFrame=pos,
709
		FXSettings={
710
			EndSize=endScale,
711
			EndIsIncrement=increment
712
		}
713
	}
714
end
715
716
function BlockFX(duration,color,scale,pos,endScale,increment)
717
	return Effect{
718
		Effect='ResizeAndFade',
719
		Color=color,
720
		Size=scale,
721
		CFrame=pos,
722
		FXSettings={
723
			EndSize=endScale,
724
			EndIsIncrement=increment
725
		}
726
	}
727
end
728
729
function ShootBullet(data)
730
	--ShootBullet{Size=V3.N(3,3,3),Shape='Ball',Frames=160,Origin=data.Circle.CFrame,Speed=10}
731
	local Size = data.Size or V3.N(2,2,2)
732
	local Color = data.Color or BrickColor.new'Crimson'
733
	local StudsPerFrame = data.Speed or 10
734
	local Shape = data.Shape or 'Ball'
735
	local Frames = data.Frames or 160
736
	local Pos = data.Origin or Torso.CFrame
737
	local Direction = data.Direction or Mouse.Hit
738
	local Material = data.Material or Enum.Material.Neon
739
	local OnHit = data.HitFunction or function(hit,pos)
740
		Effect{
741
			Effect='ResizeAndFade',
742
			Color=Color,
743
			Size=V3.N(10,10,10),
744
			Mesh={MeshType=Enum.MeshType.Sphere},
745
			CFrame=CF.N(pos),
746
			FXSettings={
747
				EndSize=V3.N(.05,.05,.05),
748
				EndIsIncrement=true
749
			}
750
		}
751
		for i = 1, 5 do
752
			local angles = CF.A(M.RRNG(-180,180),M.RRNG(-180,180),M.RRNG(-180,180))
753
			Effect{
754
				Effect='Fade',
755
				Frames=65,
756
				Size=V3.N(5,5,10),
757
				CFrame=CF.N(CF.N(pos)*angles*CF.N(0,0,-10).p,pos),
758
				Mesh = {MeshType=Enum.MeshType.Sphere},
759
				Material=Enum.Material.Neon,
760
				Color=Color,
761
				MoveDirection=CF.N(CF.N(pos)*angles*CF.N(0,0,-50).p,pos).p,
762
			}	
763
		end
764
	end	
765
	
766
	local Bullet = Part(Effects,Color,Material,Size,Pos,true,false)
767
	local BMesh = Mesh(Bullet,Enum.MeshType.Brick,"","",V3.N(1,1,1),V3.N())
768
	if(Shape == 'Ball')then
769
		BMesh.MeshType = Enum.MeshType.Sphere
770
	elseif(Shape == 'Head')then
771
		BMesh.MeshType = Enum.MeshType.Head
772
	elseif(Shape == 'Cylinder')then
773
		BMesh.MeshType = Enum.MeshType.Cylinder
774
	end
775
	
776
	coroutine.wrap(function()
777
		for i = 1, Frames+1 do
778
			local hit,pos,norm,dist = CastRay(Bullet.CFrame.p,CF.N(Bullet.CFrame.p,Direction.p)*CF.N(0,0,-StudsPerFrame).p,StudsPerFrame)
779
			if(hit)then
780
				OnHit(hit,pos,norm,dist)
781
				break;
782
			else
783
				Bullet.CFrame = CF.N(Bullet.CFrame.p,Direction.p)*CF.N(0,0,-StudsPerFrame)
784
			end
785
			swait()
786
		end
787
		Bullet:destroy()
788
	end)()
789
	
790
end
791
792
793
function weldBetween(a, b)
794
	local weldd = Instance.new("ManualWeld")
795
	weldd.Part0 = a
796
	weldd.Part1 = b
797
	weldd.C0 = CFrame.new()
798
	weldd.C1 = b.CFrame:inverse() * a.CFrame
799
	weldd.Parent = a
800
	return weldd
801
end
802
803
804
function ShootArrow(data)
805
	--ShootBullet{Size=V3.N(3,3,3),Shape='Ball',Frames=160,Origin=data.Circle.CFrame,Speed=10}
806
	local Size = data.Size or V3.N(2,2,2)
807
	local Color = data.Color or BrickColor.new'Crimson'
808
	local StudsPerFrame = data.Speed or 10
809
	local Shape = data.Shape or 'Ball'
810
	local Frames = data.Frames or 160
811
	local Pos = (data.Origin or Torso.CFrame)
812
	local Direction = data.Direction or Mouse.Hit
813
	local Material = data.Material or Enum.Material.Neon
814
	local Penetration = data.Penetration or (DoPenetration and 5 or 0)
815
	local OnHit = data.HitFunction or function(arrow,hit,pos,norm,dist,pen)
816
		
817
		local h = (hit and hit.Parent and hit.Parent:FindFirstChildOfClass'Humanoid') or (hit and hit.Parent and hit.Parent.Parent and hit.Parent.Parent:FindFirstChildOfClass'Humanoid')
818
		if(h)then
819
			local critChance = 5
820
			local critMult = 2
821
			if(hit.Name == 'Head')then
822
				critChance = 100
823
				critMult = 4
824
			end
825
			DealDamage{Who=h.Parent,MinDamage=25,MaxDamage=45,Crit={Chance=critChance,Multiplier=critMult}}
826
			
827
		end
828
		if(pen < 1)then
829
			arrow.Anchored = false
830
			weldBetween(hit,arrow)
831
		end
832
	end
833
	
834
	local Bullet = Part(Char,Color,Material,dispArrow.Size,Pos,true,false)
835
	Mesh(Bullet,Enum.MeshType.FileMesh,'rbxassetid://395019701','rbxassetid://395021644',V3.N(.75,.75,.75))
836
	
837
	local igrone = {Char,workspace.CurrentCamera}
838
	--[[coroutine.wrap(function()
839
		for i = 1, Frames+1 do
840
			local hit,pos,norm,dist = CastRay(Bullet.CFrame.p,CF.N(Bullet.CFrame.p,Direction.p)*CF.N(0,0,-StudsPerFrame).p,StudsPerFrame,igrone)
841
			Bullet.CFrame = CF.N(Bullet.CFrame.p,Direction.p)*CF.N(0,0,-StudsPerFrame)
842
			if(hit and not hit.Parent:IsA'Accessory' and hit.Transparency < .99 and hit.Material ~= Enum.Material.Glass)then
843
				OnHit(Bullet,hit,pos,norm,dist)
844
				break;
845
			elseif(hit)then
846
				if(hit.Material == Enum.Material.Glass)then
847
					hit:destroy()				
848
				else
849
					table.insert(igrone,hit)
850
				end
851
				
852
			end
853
			
854
			if(i >= Frames)then
855
				Bullet:destroy()
856
				break;
857
			end
858
			swait()
859
		end
860
		
861
	end)()]]
862
	coroutine.wrap(function()
863
		while true do
864
			local hit,pos,norm,dist = CastRay(Pos.p,Direction.p,2048,igrone)
865
			Bullet.CFrame = CF.N(pos,pos+norm)*CF.A(M.R(180),0,0)
866
			--local hitscan = Part(Effects,C3.N(1,1,1),Enum.Material.Neon,V3.N(.1,.1,dist),CF.N(Pos.p,pos+norm)*CF.N(0,0,-dist/2),true,false)
867
			Effect{
868
				CFrame=CF.N(Pos.p,Bullet.CFrame.p)*CF.N(0,0,-dist/2)*CF.A(0,M.R(90),0),
869
				StartSize=V3.N(dist,.1,.1),
870
				EndSize=V3.N(dist,.1,.1),
871
				Mesh={Type=Enum.MeshType.Cylinder},
872
				Color=C3.N(1,1,1)
873
			}
874
			if(hit and not hit.Parent:IsA'Accessory' and hit.Transparency < .99 and hit.Material ~= Enum.Material.Glass)then
875
				OnHit(Bullet,hit,pos,norm,dist,Penetration)
876
				local h = (hit and hit.Parent and hit.Parent:FindFirstChildOfClass'Humanoid') or (hit and hit.Parent and hit.Parent.Parent and hit.Parent.Parent:FindFirstChildOfClass'Humanoid')
877
				if(not h or Penetration < 1)then
878
					break;
879
				else
880
					Penetration = Penetration - 1
881
					table.insert(igrone,h.Parent)
882
				end
883
			elseif(hit)then
884
				if(hit.Material == Enum.Material.Glass)then
885
					hit:destroy()			
886
				else
887
					table.insert(igrone,hit)
888
				end
889
				
890
			end
891
			swait()
892
		end
893
		
894
		S.Debris:AddItem(Bullet,5)
895
	end)()
896
	
897
	
898
end
899
900
function Zap(data)
901
	local sCF,eCF = data.StartCFrame,data.EndCFrame
902
	assert(sCF,"You need a start CFrame!")
903
	assert(eCF,"You need an end CFrame!")
904
	local parts = data.PartCount or 15
905
	local zapRot = data.ZapRotation or {-5,5}
906
	local startThick = data.StartSize or 3;
907
	local endThick = data.EndSize or startThick/2;
908
	local color = data.Color or BrickColor.new'Electric blue'
909
	local delay = data.Delay or 35
910
	local delayInc = data.DelayInc or 0
911
	local lastLightning;
912
	local MagZ = (sCF.p - eCF.p).magnitude
913
	local thick = startThick
914
	local inc = (startThick/parts)-(endThick/parts)
915
	
916
	for i = 1, parts do
917
		local pos = sCF.p
918
		if(lastLightning)then
919
			pos = lastLightning.CFrame*CF.N(0,0,MagZ/parts/2).p
920
		end
921
		delay = delay + delayInc
922
		local zapPart = Part(Effects,color,Enum.Material.Neon,V3.N(thick,thick,MagZ/parts),CF.N(pos),true,false)
923
		local posie = CF.N(pos,eCF.p)*CF.N(0,0,MagZ/parts).p+V3.N(M.RNG(unpack(zapRot)),M.RNG(unpack(zapRot)),M.RNG(unpack(zapRot)))
924
		if(parts == i)then
925
			local MagZ = (pos-eCF.p).magnitude
926
			zapPart.Size = V3.N(endThick,endThick,MagZ)
927
			zapPart.CFrame = CF.N(pos, eCF.p)*CF.N(0,0,-MagZ/2)
928
			Effect{Effect='ResizeAndFade',Size=V3.N(thick,thick,thick),CFrame=eCF*CF.A(M.RRNG(-180,180),M.RRNG(-180,180),M.RRNG(-180,180)),Color=color,Frames=delay*2,FXSettings={EndSize=V3.N(thick*8,thick*8,thick*8)}}
929
		else
930
			zapPart.CFrame = CF.N(pos,posie)*CF.N(0,0,MagZ/parts/2)
931
		end
932
		
933
		lastLightning = zapPart
934
		Effect{Effect='Fade',Manual=zapPart,Frames=delay}
935
		
936
		thick=thick-inc
937
		
938
	end
939
end
940
941
function Zap2(data)
942
	local Color = data.Color or BrickColor.new'Electric blue'
943
	local StartPos = data.Start or Torso.Position
944
	local EndPos = data.End or Mouse.Hit.p
945
	local SegLength = data.SegL or 2
946
	local Thicc = data.Thickness or 0.5
947
	local Fades = data.Fade or 45
948
	local Parent = data.Parent or Effects
949
	local MaxD = data.MaxDist or 200
950
	local Branch = data.Branches or false
951
	local Material = data.Material or Enum.Material.Neon
952
	local Raycasts = data.Raycasts or false
953
	local Offset = data.Offset or {0,360}
954
	local AddMesh = (data.Mesh == nil and true or data.Mesh)
955
	if((StartPos-EndPos).magnitude > MaxD)then
956
		EndPos = CF.N(StartPos,EndPos)*CF.N(0,0,-MaxD).p
957
	end
958
	local hit,pos,norm,dist=nil,EndPos,nil,(StartPos-EndPos).magnitude
959
	if(Raycasts)then
960
		hit,pos,norm,dist = CastRay(StartPos,EndPos,MaxD)	
961
	end
962
	local segments = dist/SegLength
963
	local model = IN("Model",Parent)
964
	model.Name = 'Lightning'
965
	local Last;
966
	for i = 1, segments do
967
		local size = (segments-i)/25
968
		local prt = Part(model,Color,Material,V3.N(Thicc+size,SegLength,Thicc+size),CF.N(),true,false)
969
		if(AddMesh)then IN("CylinderMesh",prt) end
970
		if(Last and math.floor(segments) == i)then
971
			local MagZ = (Last.CFrame*CF.N(0,-SegLength/2,0).p-EndPos).magnitude
972
			prt.Size = V3.N(Thicc+size,MagZ,Thicc+size)
973
			prt.CFrame = CF.N(Last.CFrame*CF.N(0,-SegLength/2,0).p,EndPos)*CF.A(M.R(90),0,0)*CF.N(0,-MagZ/2,0)	
974
		elseif(not Last)then
975
			prt.CFrame = CF.N(StartPos,pos)*CF.A(M.R(90),0,0)*CF.N(0,-SegLength/2,0)	
976
		else
977
			prt.CFrame = CF.N(Last.CFrame*CF.N(0,-SegLength/2,0).p,CF.N(pos)*CF.A(M.R(M.RNG(0,360)),M.R(M.RNG(0,360)),M.R(M.RNG(0,360)))*CF.N(0,0,SegLength/3+(segments-i)).p)*CF.A(M.R(90),0,0)*CF.N(0,-SegLength/2,0)
978
		end
979
		Last = prt
980
		if(Branch)then
981
			local choice = M.RNG(1,7+((segments-i)*2))
982
			if(choice == 1)then
983
				local LastB;
984
				for i2 = 1,M.RNG(2,5) do
985
					local size2 = ((segments-i)/35)/i2
986
					local prt = Part(model,Color,Material,V3.N(Thicc+size2,SegLength,Thicc+size2),CF.N(),true,false)
987
					if(AddMesh)then IN("CylinderMesh",prt) end
988
					if(not LastB)then
989
						prt.CFrame = CF.N(Last.CFrame*CF.N(0,-SegLength/2,0).p,Last.CFrame*CF.N(0,-SegLength/2,0)*CF.A(0,0,M.RRNG(0,360))*CF.N(0,Thicc*7,0)*CF.N(0,0,-1).p)*CF.A(M.R(90),0,0)*CF.N(0,-SegLength/2,0)
990
					else
991
						prt.CFrame = CF.N(LastB.CFrame*CF.N(0,-SegLength/2,0).p,LastB.CFrame*CF.N(0,-SegLength/2,0)*CF.A(0,0,M.RRNG(0,360))*CF.N(0,Thicc*7,0)*CF.N(0,0,-1).p)*CF.A(M.R(90),0,0)*CF.N(0,-SegLength/2,0)
992
					end
993
					LastB = prt
994
				end
995
			end
996
		end
997
	end
998
	if(Fades > 0)then
999
		coroutine.wrap(function()
1000
			for i = 1, Fades do
1001
				for _,v in next, model:children() do
1002
					if(v:IsA'BasePart')then
1003
						v.Transparency = (i/Fades)
1004
					end
1005
				end
1006
				swait()
1007
			end
1008
			model:destroy()
1009
		end)()
1010
	else
1011
		S.Debris:AddItem(model,.01)
1012
	end
1013
	return {End=(Last and Last.CFrame*CF.N(0,-Last.Size.Y/2,0).p),Last=Last,Model=model}
1014
end
1015
1016
function Tween(obj,props,time,easing,direction,repeats,backwards)
1017
	local info = TweenInfo.new(time or .5, easing or Enum.EasingStyle.Quad, direction or Enum.EasingDirection.Out, repeats or 0, backwards or false)
1018
	local tween = S.TweenService:Create(obj, info, props)
1019
	
1020
	tween:Play()
1021
end
1022
1023
function Effect(data)
1024
	local Color = data.Color or C3.N(0,0,0)
1025
	local Material = data.Material or Enum.Material.Neon;
1026
	local MeshD = data.Mesh or {};
1027
	local SoundD = data.Sound or nil;
1028
	local Shape = data.Shape or Enum.PartType.Block;
1029
	local Size = data.StartSize or V3.N(.1,.1,.1);
1030
	local ESize = data.EndSize or V3.N(6,6,6);
1031
	local Direction = data.Direction or nil;
1032
	local Speed = data.Speed or .1; -- studs per second
1033
	local Boomerang = data.Boomerang or {Enabled=false,SizeBoomerang=0,MoveBoomerang=0};
1034
	local Pos = data.CFrame or Torso.CFrame;
1035
	local Frames = data.Frames or 60;
1036
	local RotInc = data.RotInc or {0,0,0}
1037
	local StartTrans = data.TransStart or 0;
1038
	local EndTrans = data.TransEnd or 1;
1039
	
1040
	if(typeof(RotInc) == 'number')then RotInc = {RotInc,RotInc,RotInc}; end
1041
	local S,PM,P;
1042
	
1043
	coroutine.wrap(function()
1044
		P = Part(Effects,Color,Material,V3.N(1,1,1),Pos,true,false)
1045
		
1046
		if(MeshD == "Blast")then
1047
			PM = Mesh(P,Enum.MeshType.FileMesh,'rbxassetid://20329976','',Size,V3.N(0,0,-Size.X/8))
1048
		elseif(MeshD == 'Ring')then
1049
			PM = Mesh(P,Enum.MeshType.FileMesh,'rbxassetid://559831844','',Size,V3.N(0,0,0))
1050
		elseif(MeshD == 'Slash1')then
1051
			PM = Mesh(P,Enum.MeshType.FileMesh,'rbxassetid://662586858','',V3.N(Size.X/10,.001,Size.Z/10),V3.N(0,0,0))
1052
		elseif(MeshD == 'Slash2')then
1053
			PM = Mesh(P,Enum.MeshType.FileMesh,'rbxassetid://448386996','',V3.N(Size.X/1000,Size.Y/100,Size.Z/100),V3.N(0,0,0))
1054
		elseif(MeshD == 'Slash3')then
1055
			PM = Mesh(P,Enum.MeshType.FileMesh,'rbxassetid://4770583','',Size,V3.N(0,0,0))
1056
		elseif(MeshD == 'Tornado1')then
1057
			PM = Mesh(P,Enum.MeshType.FileMesh,'rbxassetid://443529437','',Size/10,V3.N(0,0,0))
1058
		elseif(MeshD == 'Tornado2')then
1059
			PM = Mesh(P,Enum.MeshType.FileMesh,'rbxassetid://168892432','',Size/4,V3.N(0,0,0))
1060
		elseif(MeshD == 'Skull')then
1061
			PM = Mesh(P,Enum.MeshType.FileMesh,'rbxassetid://4770583','',Size*2,V3.N(0,0,0))
1062
		elseif(MeshD == 'Crystal')then
1063
			PM = Mesh(P,Enum.MeshType.FileMesh,'rbxassetid://9756362','',Size,V3.N(0,0,0))
1064
		elseif(MeshD == 'Cloud')then
1065
			PM = Mesh(P,Enum.MeshType.FileMesh,'rbxassetid://1095708','',Size,V3.N(0,0,0))
1066
		elseif(typeof(MeshD) == 'table')then
1067
			local Type = MeshD.Type or Enum.MeshType.Brick
1068
			local ID = MeshD.ID or '';
1069
			local Tex = MeshD.Texture or '';
1070
			local Offset = MeshD.Offset or V3.N(0,0,0)
1071
			PM = Mesh(P,Type,ID,Tex,Size,Offset)
1072
		else
1073
			PM = Mesh(P,Enum.MeshType.Brick,'','',Size)
1074
		end
1075
		
1076
		if(typeof(SoundD) == 'table')then
1077
			local ID = SoundD.ID or '';
1078
			local Pitch = SoundD.Pitch or 1;
1079
			local Volume = SoundD.Volume or 1;
1080
			S = Sound(P,ID,Pitch,Volume,false,true,true)
1081
		elseif(typeof(SoundD) == 'string' or typeof(SoundD) == 'number')then
1082
			S = Sound(P,SoundD,1,1,false,true,true)
1083
		end
1084
		local grow = (Size - ESize)
1085
		local SizeBoomer = 1+Boomerang.SizeBoomerang/50
1086
		local MoveBoomer = 1+Boomerang.MoveBoomerang/50
1087
		if(Boomerang and Boomerang.Enabled)then
1088
			grow = (Size - ESize)*(SizeBoomer+1)
1089
		end	
1090
		local TransChange = StartTrans - EndTrans
1091
		for i = 0, Frames do
1092
			local MoveSpeed = -Speed
1093
			local scaleGay = grow/Frames
1094
			if(Boomerang and Boomerang.Enabled)then -- thanks shack
1095
				MoveSpeed = -(Speed)*((1-(i/Frames)*MoveBoomer))
1096
				scaleGay = (V3.N((grow.X)*((1 - (i/Frames)*SizeBoomer)),(grow.Y)*((1 - (i/Frames)*SizeBoomer)),(grow.Z)*((1 - (i/Frames)*SizeBoomer)))*SizeBoomer)/Frames
1097
			end
1098
			if(PM.MeshId == 'rbxassetid://20329976')then
1099
				PM.Offset = V3.N(0,0,-PM.Scale.Z/8)
1100
			elseif(PM.MeshId == 'rbxassetid://4770583')then
1101
				scaleGay = scaleGay*2
1102
			elseif(PM.MeshId == 'rbxassetid://168892432')then
1103
				scaleGay = scaleGay/4
1104
			elseif(PM.MeshId == 'rbxassetid://443529437')then
1105
				scaleGay = scaleGay/10
1106
			elseif(PM.MeshId == 'rbxassetid://443529437')then
1107
				scaleGay = scaleGay/10
1108
			end
1109
			PM.Scale = PM.Scale - scaleGay
1110
			P.Transparency = P.Transparency - TransChange/Frames
1111
			if(RotInc == 'random')then
1112
				P.CFrame=P.CFrame*CF.A(M.RRNG(-180,180),M.RRNG(-180,180),M.RRNG(-180,180))
1113
			elseif(typeof(RotInc) == 'table')then
1114
				P.CFrame=P.CFrame*CF.A(unpack(RotInc))
1115
			end
1116
			
1117
			
1118
			if(Direction and Speed)then
1119
				local Orientation = P.Orientation
1120
				P.CFrame = CF.N(P.Position,P.Position+Direction)*CF.N(0,0,MoveSpeed)
1121
				P.Orientation = Orientation
1122
			end
1123
			swait()
1124
		end
1125
1126
		P.Transparency = 1
1127
		if(S and S.Playing)then
1128
			repeat swait() until not S.Parent or not S.Playing
1129
		end
1130
		if(S and S.Parent)then
1131
			S:destroy()
1132
		end
1133
	end)()
1134
	
1135
	
1136
end
1137
1138
function SoulSteal(whom)
1139
	local torso = (whom:FindFirstChild'Head' or whom:FindFirstChild'Torso' or whom:FindFirstChild'UpperTorso' or whom:FindFirstChild'LowerTorso' or whom:FindFirstChild'HumanoidRootPart')
1140
	print(torso)
1141
	if(torso and torso:IsA'BasePart')then
1142
		local Model = Instance.new("Model",Effects)
1143
		Model.Name = whom.Name.."'s Soul"
1144
		whom:BreakJoints()
1145
		local Soul = Part(Model,BrickColor.new'Really red','Glass',V3.N(.5,.5,.5),torso.CFrame,true,false)
1146
		Soul.Name = 'Head'
1147
		NewInstance("Humanoid",Model,{Health=0,MaxHealth=0})
1148
		Effect{
1149
			Effect="Arc",
1150
			Manual = Soul,
1151
			FXSettings={
1152
				Start=torso.CFrame,
1153
				Home = Torso,
1154
				RemoveOnGoal = true,
1155
			}
1156
		}
1157
		local lastPoint = Soul.CFrame.p
1158
	
1159
		for i = 0, 1, 0.01 do 
1160
				local point = CFrame.new(lastPoint, Soul.Position) * CFrame.Angles(-math.pi/2, 0, 0)
1161
				local mag = (lastPoint - Soul.Position).magnitude
1162
				Effect{
1163
					Effect = "Fade",
1164
					CFrame = point * CF.N(0, mag/2, 0),
1165
					Size = V3.N(.5,mag+.5,.5),
1166
					Color = Soul.BrickColor
1167
				}
1168
				lastPoint = Soul.CFrame.p
1169
			swait()
1170
		end
1171
		for i = 1, 5 do
1172
			Effect{
1173
				Effect="Fade",
1174
				Color = BrickColor.new'Really red',
1175
				MoveDirection = (Torso.CFrame*CFrame.new(M.RNG(-40,40),M.RNG(-40,40),M.RNG(-40,40))).p
1176
			}	
1177
		end
1178
	end
1179
end
1180
1181
--// Other Functions \\ --
1182
1183
function CastRay(startPos,endPos,range,ignoreList)
1184
	local ray = Ray.new(startPos,(endPos-startPos).unit*range)
1185
	local part,pos,norm = workspace:FindPartOnRayWithIgnoreList(ray,ignoreList or {Char},false,true)
1186
	return part,pos,norm,(pos and (startPos-pos).magnitude)
1187
end
1188
1189
function getRegion(point,range,ignore)
1190
    return workspace:FindPartsInRegion3WithIgnoreList(R3.N(point-V3.N(1,1,1)*range/2,point+V3.N(1,1,1)*range/2),ignore,100)
1191
end
1192
1193
function clerp(startCF,endCF,alpha)
1194
	return startCF:lerp(endCF, alpha)
1195
end
1196
1197
function GetTorso(char)
1198
	return char:FindFirstChild'Torso' or char:FindFirstChild'UpperTorso' or char:FindFirstChild'LowerTorso' or char:FindFirstChild'HumanoidRootPart'
1199
end
1200
1201
1202
function ShowDamage(Pos, Text, Time, Color)
1203
	coroutine.wrap(function()
1204
	local Rate = (1 / Frame_Speed)
1205
	local Pos = (Pos or Vector3.new(0, 0, 0))
1206
	local Text = (Text or "")
1207
	local Time = (Time or 2)
1208
	local Color = (Color or Color3.new(1, 0, 1))
1209
	local EffectPart = NewInstance("Part",Effects,{
1210
		Material=Enum.Material.SmoothPlastic,
1211
		Reflectance = 0,
1212
		Transparency = 1,
1213
		BrickColor = BrickColor.new(Color),
1214
		Name = "Effect",
1215
		Size = Vector3.new(0,0,0),
1216
		Anchored = true,
1217
		CFrame = CF.N(Pos)
1218
	})
1219
	local BillboardGui = NewInstance("BillboardGui",EffectPart,{
1220
		Size = UDim2.new(1.25, 0, 1.25, 0),
1221
		Adornee = EffectPart,
1222
	})
1223
	local TextLabel = NewInstance("TextLabel",BillboardGui,{
1224
		BackgroundTransparency = 1,
1225
		Size = UDim2.new(1, 0, 1, 0),
1226
		Text = Text,
1227
		Font = "Bodoni",
1228
		TextColor3 = Color,
1229
		TextStrokeColor3 = Color3.new(0,0,0),
1230
		TextStrokeTransparency=0,
1231
		TextScaled = true,
1232
	})
1233
	S.Debris:AddItem(EffectPart, (Time))
1234
	EffectPart.Parent = workspace
1235
	delay(0, function()
1236
		Tween(EffectPart,{CFrame=CF.N(Pos)*CF.N(0,3,0)},Time,Enum.EasingStyle.Elastic,Enum.EasingDirection.Out)
1237
		local Frames = (Time / Rate)
1238
		for Frame = 1, Frames do
1239
			swait()
1240
			local Percent = (Frame / Frames)
1241
			TextLabel.TextTransparency = Percent
1242
			TextLabel.TextStrokeTransparency = Percent
1243
		end
1244
		if EffectPart and EffectPart.Parent then
1245
			EffectPart:Destroy()
1246
		end
1247
	end) end)()
1248
end
1249
1250
function DealDamage(data)
1251
	local Who = data.Who;
1252
	local MinDam = data.MinimumDamage or 15;
1253
	local MaxDam = data.MaximumDamage or 30;
1254
	local MaxHP = data.MaxHP or 1e5; 
1255
	
1256
	local DB = data.Debounce or .2;
1257
	
1258
	local CritData = data.Crit or {}
1259
	local CritChance = CritData.Chance or 0;
1260
	local CritMultiplier = CritData.Multiplier or 1;
1261
	
1262
	local DamageEffects = data.DamageFX or {}
1263
	local DamageType = DamageEffects.Type or "Normal"
1264
	local DeathFunction = DamageEffects.DeathFunction
1265
	
1266
	assert(Who,"Specify someone to damage!")	
1267
	
1268
	local Humanoid = Who:FindFirstChildOfClass'Humanoid'
1269
	local DoneDamage = M.RNG(MinDam,MaxDam) * (M.RNG(1,100) <= CritChance and CritMultiplier or 1)
1270
	
1271
	local canHit = true
1272
	if(Humanoid)then
1273
		for _, p in pairs(Hit) do
1274
			if p[1] == Humanoid then
1275
				if(time() - p[2] <= DB) then
1276
					canHit = false
1277
				else
1278
					Hit[_] = nil
1279
				end
1280
			end
1281
		end
1282
		if(canHit)then
1283
			table.insert(Hit,{Humanoid,time()})
1284
			local HitTorso = GetTorso(Who)
1285
			local player = S.Players:GetPlayerFromCharacter(Who)
1286
			if(not player or player.UserId ~= 5719877 and player.UserId ~= 19081129)then
1287
				if(Humanoid.MaxHealth >= MaxHP and Humanoid.Health > 0)then
1288
					print'Got kill'
1289
					Humanoid.Health = 0;
1290
					Who:BreakJoints();
1291
					if(DeathFunction)then DeathFunction(Who,Humanoid) end
1292
				else
1293
					local  c = Instance.new("ObjectValue",Hum)
1294
					c.Name = "creator"
1295
					c.Value = Plr
1296
					S.Debris:AddItem(c,0.35)	
1297
					if(Who:FindFirstChild'Head' and Humanoid.Health > 0)then
1298
						ShowDamage((Who.Head.CFrame * CF.N(0, 0, (Who.Head.Size.Z / 2)).p+V3.N(0,1.5,0)+V3.N(M.RNG(-2,2),0,M.RNG(-2,2))), DoneDamage, 1.5, DamageColor.Color)
1299
					end
1300
					if(Humanoid.Health > 0 and Humanoid.Health-DoneDamage <= 0)then print'Got kill' if(DeathFunction)then DeathFunction(Who,Humanoid) end end
1301
					Humanoid.Health = Humanoid.Health - DoneDamage
1302
					
1303
					if(DamageType == 'Knockback' and HitTorso)then
1304
						local up = DamageEffects.KnockUp or 25
1305
						local back = DamageEffects.KnockBack or 25
1306
						local origin = DamageEffects.Origin or Root
1307
						local decay = DamageEffects.Decay or .5;
1308
						
1309
						local bfos = Instance.new("BodyVelocity",HitTorso)
1310
						bfos.P = 20000	
1311
						bfos.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
1312
						bfos.Velocity = Vector3.new(0,up,0) + (origin.CFrame.lookVector * back)
1313
						S.Debris:AddItem(bfos,decay)
1314
					end
1315
				end
1316
			end
1317
		end
1318
	end		
1319
end
1320
1321
function AOEDamage(where,range,options)
1322
	local hit = {}
1323
	for _,v in next, getRegion(where,range,{Char}) do
1324
		if(v.Parent and v.Parent:FindFirstChildOfClass'Humanoid' and not hit[v.Parent])then
1325
			local callTable = {Who=v.Parent}
1326
			hit[v.Parent] = true
1327
			for _,v in next, options do callTable[_] = v end
1328
			DealDamage(callTable)
1329
		end
1330
	end
1331
	return hit
1332
end
1333
1334
function AOEHeal(where,range,amount)
1335
	local healed = {}
1336
	for _,v in next, getRegion(where,range,{Char}) do
1337
		local hum = (v.Parent and v.Parent:FindFirstChildOfClass'Humanoid' or nil)
1338
		if(hum and not healed[hum])then
1339
			hum.Health = hum.Health + amount
1340
			if(v.Parent:FindFirstChild'Head' and hum.Health > 0)then
1341
				ShowDamage((v.Parent.Head.CFrame * CF.N(0, 0, (v.Parent.Head.Size.Z / 2)).p+V3.N(0,1.5,0)), "+"..amount, 1.5, BrickColor.new'Lime green'.Color)
1342
			end
1343
		end
1344
	end
1345
end
1346
1347
function Shoot()
1348
	Attack = true
1349
	NeutralAnims = false
1350
	Hum.AutoRotate = false
1351
	local lim = 5
1352
	if(HyperCum)then lim = 1.5 end
1353
	for i = 0, lim, .1 do
1354
		local Alpha = .2
1355
		Root.CFrame = Root.CFrame:lerp(CF.N(Root.CFrame.p,CF.N(Mouse.Hit.x,Root.CFrame.y,Mouse.Hit.z).p),.2)
1356
		RJ.C0 = RJ.C0:lerp(RJC0*CF.N(0,-.1+.05*M.C(Sine/18),0)*CF.A(0,M.R(90),0),Alpha)
1357
		NK.C0 = NK.C0:lerp(NKC0*CF.A(0,M.R(-90),0),Alpha)
1358
		LS.C0 = LS.C0:lerp(LSC0*CF.N(1.5,.3+.1*M.S(Sine/18),-.4)*CF.A(M.R(45),M.R(0),M.R(90)),Alpha)
1359
		RS.C0 = RS.C0:lerp(RSC0*CF.N(0,0+.1*M.S(Sine/18),0)*CF.A(M.R(45),M.R(0),M.R(90)),Alpha)
1360
		LH.C0 = LH.C0:lerp(LHC0*CF.N(0,0-.05*M.C(Sine/18),0)*CF.A(0,0,M.R(-10)),Alpha)
1361
		RH.C0 = RH.C0:lerp(RHC0*CF.N(0,0-.05*M.C(Sine/18),-.2),Alpha)
1362
		HW.C0 = HW.C0:lerp(HWC0*CF.A(0,0,0),Alpha)
1363
		DAW.C0 = DAW.C0:lerp(DWC0*CF.N(0,-.8,0)*CF.A(M.R(-90),0,0)*CF.A(M.R(0),0,0),Alpha)
1364
		swait()
1365
	end
1366
	for i = 0, lim, .1 do
1367
		local Alpha = i/lim
1368
		Root.CFrame = Root.CFrame:lerp(CF.N(Root.CFrame.p,CF.N(Mouse.Hit.x,Root.CFrame.y,Mouse.Hit.z).p),.2)
1369
		RJ.C0 = RJ.C0:lerp(RJC0*CF.N(0,-.1+.05*M.C(Sine/18),0)*CF.A(0,M.R(90),0),Alpha)
1370
		NK.C0 = NK.C0:lerp(NKC0*CF.A(0,M.R(-90),0),Alpha)
1371
		LS.C0 = LS.C0:lerp(LSC0*CF.N(.8,.3+.1*M.S(Sine/18),-.4)*CF.A(M.R(45),M.R(0),M.R(90)),Alpha)
1372
		RS.C0 = RS.C0:lerp(RSC0*CF.N(0,0+.1*M.S(Sine/18),0)*CF.A(M.R(45),M.R(0),M.R(90)),Alpha)
1373
		LH.C0 = LH.C0:lerp(LHC0*CF.N(0,0-.05*M.C(Sine/18),0)*CF.A(0,0,M.R(-10)),Alpha)
1374
		RH.C0 = RH.C0:lerp(RHC0*CF.N(0,0-.05*M.C(Sine/18),-.2),Alpha)
1375
		HW.C0 = HW.C0:lerp(HWC0*CF.A(0,0,0),Alpha)
1376
		DAW.C0 = DAW.C0:lerp(DWC0*CF.N(0,-.8,0)*CF.A(M.R(-90),0,0)*CF.A(M.R(0),0,0),Alpha)
1377
		swait()
1378
	end
1379
	
1380
	dispArrow.Transparency = 1
1381
	ShootArrow{Frames=Frame_Speed*7,Origin=bow.CFrame,Speed=5}
1382
	NeutralAnims = true
1383
	Hum.AutoRotate = true
1384
	if(not HyperCum)then wait(2) else wait(.1) end
1385
	dispArrow.Transparency = 0
1386
	Attack = false
1387
end
1388
1389
function ShootFast()
1390
	if(HyperCum or ClimaxFading)then return end
1391
	HyperCum = true
1392
	Effect{
1393
		Frames=30,
1394
		StartSize=V3.N(.05,.05,.05),
1395
		EndSize=V3.N(10,10,10),
1396
		Mesh='Tornado2',
1397
		CFrame=Torso.CFrame,
1398
		Color=C3.N(1,0,0),
1399
		RotInc={0,1,0},
1400
	}
1401
	delay(7, function()
1402
		HyperCum = false
1403
		ClimaxFading = true
1404
		wait(2)
1405
		ClimaxFading = false
1406
	end)
1407
end
1408
1409
function ArrowRain()
1410
	Attack = true
1411
	NeutralAnims = false
1412
	Hum.AutoRotate = false
1413
	local lim = 5
1414
	if(HyperCum)then lim = 1.5 end
1415
	for i = 0, lim, .1 do
1416
		local Alpha = .2
1417
		Root.CFrame = Root.CFrame:lerp(CF.N(Root.CFrame.p,CF.N(Mouse.Hit.x,Root.CFrame.y,Mouse.Hit.z).p),.2)
1418
		RJ.C0 = RJ.C0:lerp(RJC0*CF.N(0,-.1+.05*M.C(Sine/18),0)*CF.A(0,M.R(90),0),Alpha)
1419
		NK.C0 = NK.C0:lerp(NKC0*CF.A(0,M.R(-90),0),Alpha)
1420
		LS.C0 = LS.C0:lerp(LSC0*CF.N(1.5,.3+.1*M.S(Sine/18),-.4)*CF.A(M.R(45),M.R(0),M.R(90)),Alpha)
1421
		RS.C0 = RS.C0:lerp(RSC0*CF.N(0,0+.1*M.S(Sine/18),0)*CF.A(M.R(45),M.R(0),M.R(90)),Alpha)
1422
		LH.C0 = LH.C0:lerp(LHC0*CF.N(0,0-.05*M.C(Sine/18),0)*CF.A(0,0,M.R(-10)),Alpha)
1423
		RH.C0 = RH.C0:lerp(RHC0*CF.N(0,0-.05*M.C(Sine/18),-.2),Alpha)
1424
		HW.C0 = HW.C0:lerp(HWC0*CF.A(0,0,0),Alpha)
1425
		DAW.C0 = DAW.C0:lerp(DWC0*CF.N(0,-.8,0)*CF.A(M.R(-90),0,0)*CF.A(M.R(0),0,0),Alpha)
1426
		swait()
1427
	end
1428
	for i = 0, lim, .1 do
1429
		local Alpha = i/lim
1430
		Root.CFrame = Root.CFrame:lerp(CF.N(Root.CFrame.p,CF.N(Mouse.Hit.x,Root.CFrame.y,Mouse.Hit.z).p),.2)
1431
		RJ.C0 = RJ.C0:lerp(RJC0*CF.N(0,-.1+.05*M.C(Sine/18),0)*CF.A(0,M.R(90),0),Alpha)
1432
		NK.C0 = NK.C0:lerp(NKC0*CF.A(0,M.R(-90),0),Alpha)
1433
		LS.C0 = LS.C0:lerp(LSC0*CF.N(.8,.3+.1*M.S(Sine/18),-.4)*CF.A(M.R(45),M.R(0),M.R(90)),Alpha)
1434
		RS.C0 = RS.C0:lerp(RSC0*CF.N(0,0+.1*M.S(Sine/18),0)*CF.A(M.R(45),M.R(0),M.R(90)),Alpha)
1435
		LH.C0 = LH.C0:lerp(LHC0*CF.N(0,0-.05*M.C(Sine/18),0)*CF.A(0,0,M.R(-10)),Alpha)
1436
		RH.C0 = RH.C0:lerp(RHC0*CF.N(0,0-.05*M.C(Sine/18),-.2),Alpha)
1437
		HW.C0 = HW.C0:lerp(HWC0*CF.A(0,0,0),Alpha)
1438
		DAW.C0 = DAW.C0:lerp(DWC0*CF.N(0,-.8,0)*CF.A(M.R(-90),0,0)*CF.A(M.R(0),0,0),Alpha)
1439
		swait()
1440
	end
1441
	dispArrow.Transparency = 1
1442
	ShootArrow{Penetration=0,Frames=Frame_Speed*7,Origin=bow.CFrame,Speed=5,HitFunction = function(arrow,hit,pos)
1443
		arrow:destroy()
1444
		for i = 1, 25 do
1445
			local pos = CF.N(pos)*CF.N(M.RNG(-10,10),0,M.RNG(-10,10))
1446
			ShootArrow{Penetration=0,Frames=Frame_Speed*7,Origin=pos*CF.N(0,1048,0),Direction=pos,Speed=5,HitFunction = function(arrow,hit,pos)
1447
				arrow.Anchored = false
1448
				weldBetween(hit,arrow)
1449
				AOEDamage(pos,4,{MinimumDamage=25,MaximumDamage=45})
1450
				Effect{
1451
					StartSize=V3.N(.25,.25,.25),
1452
					EndSize=V3.N(2,2,2),
1453
					CFrame=CF.N(pos),
1454
					RotInc='random',
1455
					Color=C3.N(1,1,1)
1456
				}
1457
			end}
1458
			swait()
1459
		end
1460
	end}
1461
	NeutralAnims = true
1462
	Hum.AutoRotate = true
1463
	if(not HyperCum)then wait(2) else wait(.1) end
1464
	dispArrow.Transparency = 0
1465
	Attack = false
1466
end
1467
1468
--// Wrap it all up \\--
1469
1470
Mouse.Button1Down:connect(function()
1471
	if(Attack)then return end
1472
	Shoot()	
1473
end)
1474
1475
Mouse.KeyDown:connect(function(k)
1476
	if(k == 'z')then
1477
		ArrowRain()
1478
	elseif(k == 'x')then
1479
		ShootFast()
1480
	elseif(k == ';')then
1481
		DoPenetration = not DoPenetration
1482
		warn("Penetrating arrows is "..tostring(DoPenetration))
1483
	end
1484
end)
1485
1486
coroutine.wrap(function()
1487
	while true do
1488
		swait(5)
1489
		if(HyperCum)then
1490
				Effect{
1491
				Frames=30,
1492
				StartSize=V3.N(.25,.25,.25),
1493
				EndSize=V3.N(5,5,5),
1494
				Mesh='Tornado2',
1495
				CFrame=Torso.CFrame,
1496
				Color=C3.N(1,0,0),
1497
				RotInc={0,.5,0},
1498
			}
1499
		end
1500
	end
1501
end)()
1502
while true do
1503
	swait()
1504
	Sine = Sine + Change
1505
	if(not Music or not Music.Parent)then
1506
		local tp = (Music and Music.TimePosition)
1507
		Music = Sound(Char,MusicID,1,10,true,false,true)
1508
		Music.Name = 'Music'
1509
		Music.TimePosition = tp
1510
	end
1511
	Music.SoundId = "rbxassetid://"..MusicID
1512
	Music.Parent = Torso
1513
	Music.Pitch = 1
1514
	Music.Volume = 3
1515
	if(not Muted)then
1516
		Music:Resume()
1517
	else
1518
		Music:Pause()
1519
	end
1520
	
1521
	
1522
	if(God)then
1523
		Hum.MaxHealth = 1e100
1524
		Hum.Health = 1e100
1525
		if(not Char:FindFirstChildOfClass'ForceField')then IN("ForceField",Char).Visible = false end
1526
		Hum.Name = M.RNG()*100
1527
	end
1528
	
1529
	local hitfloor,posfloor = workspace:FindPartOnRay(Ray.new(Root.CFrame.p,((CFrame.new(Root.Position,Root.Position - Vector3.new(0,1,0))).lookVector).unit * (4*PlayerSize)), Char)
1530
	
1531
	local Walking = (math.abs(Root.Velocity.x) > 1 or math.abs(Root.Velocity.z) > 1)
1532
	local State = (Hum.PlatformStand and 'Paralyzed' or Hum.Sit and 'Sit' or not hitfloor and Root.Velocity.y < -1 and "Fall" or not hitfloor and Root.Velocity.y > 1 and "Jump" or hitfloor and Walking and (Hum.WalkSpeed < 24 and "Walk" or "Run") or hitfloor and "Idle")
1533
	if(not Effects or not Effects.Parent)then
1534
		Effects = IN("Model",Char)
1535
		Effects.Name = "Effects"
1536
	end																																																																																																				
1537
	if(State == 'Run')then
1538
		local wsVal = 7 / (Hum.WalkSpeed/16)
1539
		local Alpha = math.min(.2 * (Hum.WalkSpeed/16),1)
1540
		Change = 1
1541
		RH.C1 = RH.C1:lerp(CF.N(0,1*PlayerSize-.1*M.C(Sine/wsVal),0+.2*M.C(Sine/wsVal))*CF.A(M.R(8-0*M.C(Sine/wsVal))+-M.S(Sine/wsVal)/1.5,0,0),.2)
1542
		LH.C1 = LH.C1:lerp(CF.N(0,1*PlayerSize+.1*M.C(Sine/wsVal),0-.2*M.C(Sine/wsVal))*CF.A(M.R(8+0*M.C(Sine/wsVal))+M.S(Sine/wsVal)/1.5,0,0),.2)
1543
	elseif(State == 'Walk')then
1544
		local wsVal = 7 / (Hum.WalkSpeed/16)
1545
		local Alpha = math.min(.2 * (Hum.WalkSpeed/16),1)
1546
		Change = 1
1547
		RH.C1 = RH.C1:lerp(CF.N(0,1*PlayerSize-.5*M.C(Sine/wsVal)/2,0+.5*M.C(Sine/wsVal)/2)*CF.A(M.R(15-25*M.C(Sine/wsVal))+-M.S(Sine/wsVal)/2.5,0,0),Alpha)
1548
		LH.C1 = LH.C1:lerp(CF.N(0,1*PlayerSize+.5*M.C(Sine/wsVal)/2,0-.5*M.C(Sine/wsVal)/2)*CF.A(M.R(15+25*M.C(Sine/wsVal))+M.S(Sine/wsVal)/2.5,0,0),Alpha)
1549
	else
1550
		RH.C1 = RH.C1:lerp(CF.N(0,1,0),.2)
1551
		LH.C1 = LH.C1:lerp(CF.N(0,1,0),.2)
1552
	end
1553
	Hum.WalkSpeed = WalkSpeed
1554
	if(Remove_Hats)then Instance.ClearChildrenOfClass(Char,"Accessory",true) end
1555
	if(Remove_Clothing)then Instance.ClearChildrenOfClass(Char,"Clothing",true) Instance.ClearChildrenOfClass(Char,"ShirtGraphic",true) end
1556
1557
	if(NeutralAnims)then	
1558
		if(State == 'Idle')then
1559
			local Alpha = .1
1560
			Change = 1
1561
			RJ.C0 = RJ.C0:lerp(RJC0*CF.N(0,-.1+.05*M.C(Sine/18),0),Alpha)
1562
			NK.C0 = NK.C0:lerp(NKC0,Alpha)
1563
			LS.C0 = LS.C0:lerp(LSC0*CF.N(.5,0+.1*M.S(Sine/18),-.1)*CF.A(M.R(90),M.R(5),M.R(25)),Alpha)
1564
			RS.C0 = RS.C0:lerp(RSC0*CF.N(-.3,0+.1*M.S(Sine/18),-.1)*CF.A(M.R(90),M.R(-5),M.R(-35)),Alpha)
1565
			LH.C0 = LH.C0:lerp(LHC0*CF.N(0,0-.05*M.C(Sine/18),0)*CF.A(0,0,M.R(-10)),Alpha)
1566
			RH.C0 = RH.C0:lerp(RHC0*CF.N(0,0-.05*M.C(Sine/18),-.2),Alpha)
1567
			HW.C0 = HW.C0:lerp(HWC0*CF.A(0,0,M.R(25)),Alpha)
1568
			DAW.C0 = DAW.C0:lerp(DWC0*CF.N(.5,0,0)*CF.A(M.R(-90),M.R(25),0),Alpha)
1569
			-- idle
1570
		elseif(State == 'Run')then
1571
			local wsVal = 7 / (Hum.WalkSpeed/16)
1572
			local Alpha = math.min(.2 * (Hum.WalkSpeed/16),1)
1573
			RJ.C0 = RJ.C0:lerp(CF.N(0,0-.1*M.C(Sine/(wsVal/2)),0)*CF.A(M.R(-15+2.5*M.C(Sine/(wsVal/2))),M.R(8*M.C(Sine/wsVal)),0),Alpha)
1574
			NK.C0 = NK.C0:lerp(NKC0,Alpha)
1575
			LS.C0 = LS.C0:lerp(LSC0*CF.N(.5,0+.1*M.C(Sine/(wsVal/2)),-.1)*CF.A(M.R(90),M.R(5),M.R(25)),Alpha)
1576
			RS.C0 = RS.C0:lerp(RSC0*CF.N(-.3,0+.1*M.C(Sine/(wsVal/2)),-.1)*CF.A(M.R(90),M.R(-5),M.R(-35)),Alpha)
1577
			LH.C0 = LH.C0:lerp(LHC0*CF.N(0,0+.1*M.C(Sine/(wsVal/2)),0)*CF.A(0,-M.R(4*M.C(Sine/wsVal)),0),Alpha)
1578
			RH.C0 = RH.C0:lerp(RHC0*CF.N(0,0+.1*M.C(Sine/(wsVal/2)),0)*CF.A(0,-M.R(4*M.C(Sine/wsVal)),0),Alpha)
1579
			HW.C0 = HW.C0:lerp(HWC0*CF.A(0,0,M.R(25)),Alpha)
1580
			DAW.C0 = DAW.C0:lerp(DWC0*CF.N(.5,0,0)*CF.A(M.R(-90),M.R(25),0),Alpha)
1581
		elseif(State == 'Walk')then
1582
			local wsVal = 7 / (Hum.WalkSpeed/16)
1583
			local Alpha = math.min(.2 * (Hum.WalkSpeed/16),1)
1584
			local Alpha2 = math.min(.15 * (Hum.WalkSpeed/16),1)
1585
			RJ.C0 = RJ.C0:lerp(CF.N(0,-.075+.1*M.C(Sine/(wsVal/2)+-M.S(Sine/(wsVal/2))/7),0)*CF.A(M.R(-9-2.5*M.C(Sine/(wsVal/2))),M.R(10*M.C(Sine/wsVal)),Root.RotVelocity.y/75),Alpha2)
1586
			NK.C0 = NK.C0:lerp(NKC0*CF.A(0,-Head.RotVelocity.y/75,0),Alpha)
1587
			LS.C0 = LS.C0:lerp(LSC0*CF.N(.5,0+.1*M.C(Sine/(wsVal/2)),-.1)*CF.A(M.R(90),M.R(5),M.R(25)),Alpha)
1588
			RS.C0 = RS.C0:lerp(RSC0*CF.N(-.3,0+.1*M.C(Sine/(wsVal/2)),-.1)*CF.A(M.R(90),M.R(-5),M.R(-35)),Alpha)
1589
			LH.C0 = LH.C0:lerp(LHC0*CF.N(0,0-.1*M.C(Sine/(wsVal/2)),0)*CF.A(0,0,0),Alpha)
1590
			RH.C0 = RH.C0:lerp(RHC0*CF.N(0,0-.1*M.C(Sine/(wsVal/2)),0)*CF.A(0,0,0),Alpha)
1591
			HW.C0 = HW.C0:lerp(HWC0*CF.A(0,0,M.R(25)),Alpha)
1592
			DAW.C0 = DAW.C0:lerp(DWC0*CF.N(.5,0,0)*CF.A(M.R(-90),M.R(25),0),Alpha)
1593
		elseif(State == 'Jump')then
1594
			local Alpha = .1
1595
			local idk = math.min(math.max(Root.Velocity.Y/50,-M.R(90)),M.R(90))
1596
			LS.C0 = LS.C0:lerp(LSC0*CF.N(.5,0+.1*M.S(Sine/18),-.1)*CF.A(M.R(90),M.R(5),M.R(25)),Alpha)
1597
			RS.C0 = RS.C0:lerp(RSC0*CF.N(-.3,0+.1*M.S(Sine/18),-.1)*CF.A(M.R(90),M.R(-5),M.R(-35)),Alpha)
1598
			RJ.C0 = RJ.C0:lerp(RJC0*CF.A(math.min(math.max(Root.Velocity.Y/100,-M.R(45)),M.R(45)),0,0),Alpha)
1599
			NK.C0 = NK.C0:lerp(NKC0*CF.A(math.min(math.max(Root.Velocity.Y/100,-M.R(45)),M.R(45)),0,0),Alpha)
1600
			LH.C0 = LH.C0:lerp(LHC0*CF.A(0,0,M.R(-5)),Alpha)
1601
			RH.C0 = RH.C0:lerp(RHC0*CF.N(0,1,-1)*CF.A(M.R(-5),0,M.R(5)),Alpha)
1602
			HW.C0 = HW.C0:lerp(HWC0*CF.A(0,0,M.R(25)),Alpha)
1603
			DAW.C0 = DAW.C0:lerp(DWC0*CF.N(.5,0,0)*CF.A(M.R(-90),M.R(25),0),Alpha)
1604
		elseif(State == 'Fall')then
1605
			local Alpha = .1
1606
			local idk = math.min(math.max(Root.Velocity.Y/50,-M.R(90)),M.R(90))
1607
			LS.C0 = LS.C0:lerp(LSC0*CF.N(.5,0+.1*M.S(Sine/18),-.1)*CF.A(M.R(90),M.R(5),M.R(25)),Alpha)
1608
			RS.C0 = RS.C0:lerp(RSC0*CF.N(-.3,0+.1*M.S(Sine/18),-.1)*CF.A(M.R(90),M.R(-5),M.R(-35)),Alpha)
1609
			RJ.C0 = RJ.C0:lerp(RJC0*CF.A(math.min(math.max(Root.Velocity.Y/100,-M.R(45)),M.R(45)),0,0),Alpha)
1610
			NK.C0 = NK.C0:lerp(NKC0*CF.A(math.min(math.max(Root.Velocity.Y/100,-M.R(45)),M.R(45)),0,0),Alpha)
1611
			LH.C0 = LH.C0:lerp(LHC0*CF.A(0,0,M.R(-5)),Alpha)
1612
			RH.C0 = RH.C0:lerp(RHC0*CF.N(0,1,-1)*CF.A(M.R(-5),0,M.R(5)),Alpha)
1613
			HW.C0 = HW.C0:lerp(HWC0*CF.A(0,0,M.R(25)),Alpha)
1614
			DAW.C0 = DAW.C0:lerp(DWC0*CF.N(.5,0,0)*CF.A(M.R(-90),M.R(25),0),Alpha)
1615
		elseif(State == 'Paralyzed')then
1616
			-- paralyzed
1617
		elseif(State == 'Sit')then
1618
			-- sit
1619
		end
1620
	end
1621
	
1622
	for i,v in next, BloodPuddles do
1623
		local mesh = i:FindFirstChild'CylinderMesh'
1624
		BloodPuddles[i] = v + 1
1625
		if(not mesh or i.Transparency >= 1)then
1626
			i:destroy() 
1627
			BloodPuddles[i] = nil
1628
		elseif(v >= Frame_Speed*4)then
1629
			local trans = (v-Frame_Speed*4)/(Frame_Speed*2)
1630
			i.Transparency = trans
1631
	            if(mesh.Scale.Z > 0)then
1632
	                mesh.Scale = mesh.Scale-V3.N(.05,0,.05)
1633
	            end
1634
		else
1635
			i.Transparency = 0
1636
		end
1637
	end
1638
end