View difference between Paste ID: 86cHRT9Z and x2ssUs9C
SHOW: | | - or go back to the newest paste.
1-
--Made by 1ndrew "Steamed Hams"
1+
--https://github.com/Mokiros/roblox-FE-compatibility
2
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
3
local Player,Mouse,mouse,UserInputService,ContextActionService = owner
4
local RealPlayer = Player
5
do print("FE Compatibility code by Mokiros")local a=RealPlayer;script.Parent=a.Character;local b=Instance.new("RemoteEvent")b.Name="UserInput_Event"local function c()local d={_fakeEvent=true,Functions={},Connect=function(self,e)table.insert(self.Functions,e)end}d.connect=d.Connect;return d end;local f={Target=nil,Hit=CFrame.new(),KeyUp=c(),KeyDown=c(),Button1Up=c(),Button1Down=c(),Button2Up=c(),Button2Down=c()}local g={InputBegan=c(),InputEnded=c()}local CAS={Actions={},BindAction=function(self,h,i,j,...)CAS.Actions[h]=i and{Name=h,Function=i,Keys={...}}or nil end}CAS.UnbindAction=CAS.BindAction;local function k(self,l,...)local d=f[l]if d and d._fakeEvent then for m,e in pairs(d.Functions)do e(...)end end end;f.TrigEvent=k;g.TrigEvent=k;b.OnServerEvent:Connect(function(n,o)if n~=a then return end;f.Target=o.Target;f.Hit=o.Hit;if not o.isMouse then local p=o.UserInputState==Enum.UserInputState.Begin;if o.UserInputType==Enum.UserInputType.MouseButton1 then return f:TrigEvent(p and"Button1Down"or"Button1Up")end;if o.UserInputType==Enum.UserInputType.MouseButton2 then return f:TrigEvent(p and"Button2Down"or"Button2Up")end;for m,d in pairs(CAS.Actions)do for m,q in pairs(d.Keys)do if q==o.KeyCode then d.Function(d.Name,o.UserInputState,o)end end end;f:TrigEvent(p and"KeyDown"or"KeyUp",o.KeyCode.Name:lower())g:TrigEvent(p and"InputBegan"or"InputEnded",o,false)end end)b.Parent=NLS([==[local a=game:GetService("Players").LocalPlayer;local b=script:WaitForChild("UserInput_Event")local c=a:GetMouse()local d=game:GetService("UserInputService")local e=function(f,g)if g then return end;b:FireServer({KeyCode=f.KeyCode,UserInputType=f.UserInputType,UserInputState=f.UserInputState,Hit=c.Hit,Target=c.Target})end;d.InputBegan:Connect(e)d.InputEnded:Connect(e)local h,i;while wait(1/30)do if h~=c.Hit or i~=c.Target then h,i=c.Hit,c.Target;b:FireServer({isMouse=true,Target=i,Hit=h})end end]==],Player.Character)local r=game;local s={__index=function(self,q)local t=rawget(self,"_RealService")if t then return typeof(t[q])=="function"and function(m,...)return t[q](t,...)end or t[q]end end,__newindex=function(self,q,u)local t=rawget(self,"_RealService")if t then t[q]=u end end}local function v(d,w)d._RealService=typeof(w)=="string"and r:GetService(w)or w;return setmetatable(d,s)end;local x={GetService=function(self,t)return rawget(self,t)or r:GetService(t)end,Players=v({LocalPlayer=v({GetMouse=function(self)return f end},Player)},"Players"),UserInputService=v(g,"UserInputService"),ContextActionService=v(CAS,"ContextActionService"),RunService=v({_btrs={},RenderStepped=r:GetService("RunService").Heartbeat,BindToRenderStep=function(self,h,m,i)self._btrs[h]=self.Heartbeat:Connect(i)end,UnbindFromRenderStep=function(self,h)self._btrs[h]:Disconnect()end},"RunService")}rawset(x.Players,"localPlayer",x.Players.LocalPlayer)x.service=x.GetService;v(x,game)game,owner=x,x.Players.LocalPlayer end --Made by 1ndrew "Steamed Hams"
6
function sandbox(var,func)
7
	local env = getfenv(func)
8
	local newenv = setmetatable({},{
9
		__index = function(self,k)
10
			if k=="script" then
11
				return var
12
			else
13
				return env[k]
14
			end
15
		end,
16
	})
17
	setfenv(func,newenv)
18
	return func
19
end
20
cors = {}
21
mas = Instance.new("Model",game:GetService("Lighting"))
22
Tool0 = Instance.new("Tool")
23
Part1 = Instance.new("Part")
24
CylinderMesh2 = Instance.new("CylinderMesh")
25
Part3 = Instance.new("Part")
26
CylinderMesh4 = Instance.new("CylinderMesh")
27
Part5 = Instance.new("Part")
28
CylinderMesh6 = Instance.new("CylinderMesh")
29
Part7 = Instance.new("Part")
30
CylinderMesh8 = Instance.new("CylinderMesh")
31
Part9 = Instance.new("Part")
32
CylinderMesh10 = Instance.new("CylinderMesh")
33
Part11 = Instance.new("Part")
34
CylinderMesh12 = Instance.new("CylinderMesh")
35
Part13 = Instance.new("Part")
36
SpecialMesh14 = Instance.new("SpecialMesh")
37
Part15 = Instance.new("Part")
38
CylinderMesh16 = Instance.new("CylinderMesh")
39
Part17 = Instance.new("Part")
40
Part18 = Instance.new("Part")
41
PointLight19 = Instance.new("PointLight")
42
BillboardGui20 = Instance.new("BillboardGui")
43
ImageLabel21 = Instance.new("ImageLabel")
44
CylinderMesh22 = Instance.new("CylinderMesh")
45
Part23 = Instance.new("Part")
46
Sound24 = Instance.new("Sound")
47
Sound25 = Instance.new("Sound")
48
Part26 = Instance.new("Part")
49
CylinderMesh27 = Instance.new("CylinderMesh")
50
Part28 = Instance.new("Part")
51
SpecialMesh29 = Instance.new("SpecialMesh")
52
Part30 = Instance.new("Part")
53
SpecialMesh31 = Instance.new("SpecialMesh")
54
Decal32 = Instance.new("Decal")
55
Decal33 = Instance.new("Decal")
56
Part34 = Instance.new("Part")
57
SpecialMesh35 = Instance.new("SpecialMesh")
58
Part36 = Instance.new("Part")
59
SpecialMesh37 = Instance.new("SpecialMesh")
60
Part38 = Instance.new("Part")
61
CylinderMesh39 = Instance.new("CylinderMesh")
62
Part40 = Instance.new("Part")
63
CylinderMesh41 = Instance.new("CylinderMesh")
64
Part42 = Instance.new("Part")
65
CylinderMesh43 = Instance.new("CylinderMesh")
66
Part44 = Instance.new("Part")
67
SpecialMesh45 = Instance.new("SpecialMesh")
68
Part46 = Instance.new("Part")
69
CylinderMesh47 = Instance.new("CylinderMesh")
70
Part48 = Instance.new("Part")
71
SpecialMesh49 = Instance.new("SpecialMesh")
72
Decal50 = Instance.new("Decal")
73
Decal51 = Instance.new("Decal")
74
Part52 = Instance.new("Part")
75
SpecialMesh53 = Instance.new("SpecialMesh")
76
Part54 = Instance.new("Part")
77
SpecialMesh55 = Instance.new("SpecialMesh")
78
Part56 = Instance.new("Part")
79
CylinderMesh57 = Instance.new("CylinderMesh")
80
Part58 = Instance.new("Part")
81
CylinderMesh59 = Instance.new("CylinderMesh")
82
Part60 = Instance.new("Part")
83
SpecialMesh61 = Instance.new("SpecialMesh")
84
Part62 = Instance.new("Part")
85
CylinderMesh63 = Instance.new("CylinderMesh")
86
Part64 = Instance.new("Part")
87
CylinderMesh65 = Instance.new("CylinderMesh")
88
Part66 = Instance.new("Part")
89
SpecialMesh67 = Instance.new("SpecialMesh")
90
Part68 = Instance.new("Part")
91
SpecialMesh69 = Instance.new("SpecialMesh")
92
Part70 = Instance.new("Part")
93
CylinderMesh71 = Instance.new("CylinderMesh")
94
Part72 = Instance.new("Part")
95
SpecialMesh73 = Instance.new("SpecialMesh")
96
Part74 = Instance.new("Part")
97
CylinderMesh75 = Instance.new("CylinderMesh")
98
Part76 = Instance.new("Part")
99
CylinderMesh77 = Instance.new("CylinderMesh")
100
Part78 = Instance.new("Part")
101
CylinderMesh79 = Instance.new("CylinderMesh")
102
Part80 = Instance.new("Part")
103
CylinderMesh81 = Instance.new("CylinderMesh")
104
Part82 = Instance.new("Part")
105
CylinderMesh83 = Instance.new("CylinderMesh")
106
Part84 = Instance.new("Part")
107
CylinderMesh85 = Instance.new("CylinderMesh")
108
Part86 = Instance.new("Part")
109
CylinderMesh87 = Instance.new("CylinderMesh")
110
Decal88 = Instance.new("Decal")
111
Decal89 = Instance.new("Decal")
112
Part90 = Instance.new("Part")
113
SpecialMesh91 = Instance.new("SpecialMesh")
114
Part92 = Instance.new("Part")
115
SpecialMesh93 = Instance.new("SpecialMesh")
116
Part94 = Instance.new("Part")
117
CylinderMesh95 = Instance.new("CylinderMesh")
118
Part96 = Instance.new("Part")
119
SpecialMesh97 = Instance.new("SpecialMesh")
120
Part98 = Instance.new("Part")
121
SpecialMesh99 = Instance.new("SpecialMesh")
122
Part100 = Instance.new("Part")
123
CylinderMesh101 = Instance.new("CylinderMesh")
124
Part102 = Instance.new("Part")
125
CylinderMesh103 = Instance.new("CylinderMesh")
126
Decal104 = Instance.new("Decal")
127
Part105 = Instance.new("Part")
128
CylinderMesh106 = Instance.new("CylinderMesh")
129
Part107 = Instance.new("Part")
130
CylinderMesh108 = Instance.new("CylinderMesh")
131
Part109 = Instance.new("Part")
132
CylinderMesh110 = Instance.new("CylinderMesh")
133
Part111 = Instance.new("Part")
134
CylinderMesh112 = Instance.new("CylinderMesh")
135
Part113 = Instance.new("Part")
136
CylinderMesh114 = Instance.new("CylinderMesh")
137
Part115 = Instance.new("Part")
138
CylinderMesh116 = Instance.new("CylinderMesh")
139
Decal117 = Instance.new("Decal")
140
Part118 = Instance.new("Part")
141
CylinderMesh119 = Instance.new("CylinderMesh")
142
Decal120 = Instance.new("Decal")
143
Part121 = Instance.new("Part")
144
CylinderMesh122 = Instance.new("CylinderMesh")
145
Part123 = Instance.new("Part")
146
CylinderMesh124 = Instance.new("CylinderMesh")
147
Decal125 = Instance.new("Decal")
148
Decal126 = Instance.new("Decal")
149
Part127 = Instance.new("Part")
150
SpecialMesh128 = Instance.new("SpecialMesh")
151
Part129 = Instance.new("Part")
152
CylinderMesh130 = Instance.new("CylinderMesh")
153
Part131 = Instance.new("Part")
154
CylinderMesh132 = Instance.new("CylinderMesh")
155
Decal133 = Instance.new("Decal")
156
Part134 = Instance.new("Part")
157
CylinderMesh135 = Instance.new("CylinderMesh")
158
Part136 = Instance.new("Part")
159
CylinderMesh137 = Instance.new("CylinderMesh")
160
Part138 = Instance.new("Part")
161
SpecialMesh139 = Instance.new("SpecialMesh")
162
Part140 = Instance.new("Part")
163
SpecialMesh141 = Instance.new("SpecialMesh")
164
Part142 = Instance.new("Part")
165
CylinderMesh143 = Instance.new("CylinderMesh")
166
Part144 = Instance.new("Part")
167
CylinderMesh145 = Instance.new("CylinderMesh")
168
Part146 = Instance.new("Part")
169
SpecialMesh147 = Instance.new("SpecialMesh")
170
Part148 = Instance.new("Part")
171
CylinderMesh149 = Instance.new("CylinderMesh")
172
Part150 = Instance.new("Part")
173
CylinderMesh151 = Instance.new("CylinderMesh")
174
Part152 = Instance.new("Part")
175
CylinderMesh153 = Instance.new("CylinderMesh")
176
Part154 = Instance.new("Part")
177
CylinderMesh155 = Instance.new("CylinderMesh")
178
Part156 = Instance.new("Part")
179
SpecialMesh157 = Instance.new("SpecialMesh")
180
Part158 = Instance.new("Part")
181
SpecialMesh159 = Instance.new("SpecialMesh")
182
Part160 = Instance.new("Part")
183
CylinderMesh161 = Instance.new("CylinderMesh")
184
Part162 = Instance.new("Part")
185
SpecialMesh163 = Instance.new("SpecialMesh")
186
Part164 = Instance.new("Part")
187
CylinderMesh165 = Instance.new("CylinderMesh")
188
Part166 = Instance.new("Part")
189
CylinderMesh167 = Instance.new("CylinderMesh")
190
Part168 = Instance.new("Part")
191
SpecialMesh169 = Instance.new("SpecialMesh")
192
Part170 = Instance.new("Part")
193
SpecialMesh171 = Instance.new("SpecialMesh")
194
Part172 = Instance.new("Part")
195
SpecialMesh173 = Instance.new("SpecialMesh")
196
Part174 = Instance.new("Part")
197
SpecialMesh175 = Instance.new("SpecialMesh")
198
Part176 = Instance.new("Part")
199
CylinderMesh177 = Instance.new("CylinderMesh")
200
Part178 = Instance.new("Part")
201
SpecialMesh179 = Instance.new("SpecialMesh")
202
Part180 = Instance.new("Part")
203
CylinderMesh181 = Instance.new("CylinderMesh")
204
Part182 = Instance.new("Part")
205
CylinderMesh183 = Instance.new("CylinderMesh")
206
Part184 = Instance.new("Part")
207
SpecialMesh185 = Instance.new("SpecialMesh")
208
Part186 = Instance.new("Part")
209
SpecialMesh187 = Instance.new("SpecialMesh")
210
IntValue188 = Instance.new("IntValue")
211
IntValue189 = Instance.new("IntValue")
212
IntValue190 = Instance.new("IntValue")
213
IntValue191 = Instance.new("IntValue")
214
IntValue192 = Instance.new("IntValue")
215
Script193 = Instance.new("Script")
216
ObjectValue194 = Instance.new("ObjectValue")
217
RemoteFunction195 = Instance.new("RemoteFunction")
218
RemoteFunction196 = Instance.new("RemoteFunction")
219
RemoteFunction197 = Instance.new("RemoteFunction")
220
RemoteEvent198 = Instance.new("RemoteEvent")
221
RemoteFunction199 = Instance.new("RemoteFunction")
222
RemoteFunction200 = Instance.new("RemoteFunction")
223
RemoteFunction201 = Instance.new("RemoteFunction")
224
LocalScript202 = Instance.new("LocalScript")
225
IntValue203 = Instance.new("IntValue")
226
RemoteEvent204 = Instance.new("RemoteEvent")
227
RemoteEvent205 = Instance.new("RemoteEvent")
228
RemoteEvent206 = Instance.new("RemoteEvent")
229
RemoteEvent207 = Instance.new("RemoteEvent")
230
LocalScript208 = Instance.new("LocalScript")
231
IntValue209 = Instance.new("IntValue")
232
Folder210 = Instance.new("Folder")
233
ScreenGui211 = Instance.new("ScreenGui")
234
ImageLabel212 = Instance.new("ImageLabel")
235
NumberValue213 = Instance.new("NumberValue")
236
Frame214 = Instance.new("Frame")
237
ImageLabel215 = Instance.new("ImageLabel")
238
TextLabel216 = Instance.new("TextLabel")
239
Frame217 = Instance.new("Frame")
240
TextLabel218 = Instance.new("TextLabel")
241
Frame219 = Instance.new("Frame")
242
TextLabel220 = Instance.new("TextLabel")
243
Frame221 = Instance.new("Frame")
244
TextLabel222 = Instance.new("TextLabel")
245
Frame223 = Instance.new("Frame")
246
TextLabel224 = Instance.new("TextLabel")
247
Frame225 = Instance.new("Frame")
248
Frame226 = Instance.new("Frame")
249
TextLabel227 = Instance.new("TextLabel")
250
TextLabel228 = Instance.new("TextLabel")
251
TextLabel229 = Instance.new("TextLabel")
252
TextLabel230 = Instance.new("TextLabel")
253
TextLabel231 = Instance.new("TextLabel")
254
Frame232 = Instance.new("Frame")
255
TextLabel233 = Instance.new("TextLabel")
256
TextLabel234 = Instance.new("TextLabel")
257
TextLabel235 = Instance.new("TextLabel")
258
Frame236 = Instance.new("Frame")
259
TextLabel237 = Instance.new("TextLabel")
260
Frame238 = Instance.new("Frame")
261
Frame239 = Instance.new("Frame")
262
Frame240 = Instance.new("Frame")
263
Frame241 = Instance.new("Frame")
264
Frame242 = Instance.new("Frame")
265
Frame243 = Instance.new("Frame")
266
Frame244 = Instance.new("Frame")
267
Frame245 = Instance.new("Frame")
268
Frame246 = Instance.new("Frame")
269
Frame247 = Instance.new("Frame")
270
Frame248 = Instance.new("Frame")
271
Frame249 = Instance.new("Frame")
272
Frame250 = Instance.new("Frame")
273
Frame251 = Instance.new("Frame")
274
Frame252 = Instance.new("Frame")
275
Frame253 = Instance.new("Frame")
276
Frame254 = Instance.new("Frame")
277
Frame255 = Instance.new("Frame")
278
Frame256 = Instance.new("Frame")
279
Frame257 = Instance.new("Frame")
280
Frame258 = Instance.new("Frame")
281
Frame259 = Instance.new("Frame")
282
Frame260 = Instance.new("Frame")
283
Frame261 = Instance.new("Frame")
284
Frame262 = Instance.new("Frame")
285
Frame263 = Instance.new("Frame")
286
TextLabel264 = Instance.new("TextLabel")
287
TextLabel265 = Instance.new("TextLabel")
288
Frame266 = Instance.new("Frame")
289
Frame267 = Instance.new("Frame")
290
ImageLabel268 = Instance.new("ImageLabel")
291
TextLabel269 = Instance.new("TextLabel")
292
TextLabel270 = Instance.new("TextLabel")
293
Frame271 = Instance.new("Frame")
294
ImageLabel272 = Instance.new("ImageLabel")
295
TextLabel273 = Instance.new("TextLabel")
296
TextLabel274 = Instance.new("TextLabel")
297
Frame275 = Instance.new("Frame")
298
TextLabel276 = Instance.new("TextLabel")
299
TextLabel277 = Instance.new("TextLabel")
300
TextLabel278 = Instance.new("TextLabel")
301
Frame279 = Instance.new("Frame")
302
Frame280 = Instance.new("Frame")
303
ImageLabel281 = Instance.new("ImageLabel")
304
ImageLabel282 = Instance.new("ImageLabel")
305
Frame283 = Instance.new("Frame")
306
TextLabel284 = Instance.new("TextLabel")
307
Frame285 = Instance.new("Frame")
308
ImageLabel286 = Instance.new("ImageLabel")
309
ImageLabel287 = Instance.new("ImageLabel")
310
Frame288 = Instance.new("Frame")
311
Frame289 = Instance.new("Frame")
312
LocalScript290 = Instance.new("LocalScript")
313
TextLabel291 = Instance.new("TextLabel")
314
Part292 = Instance.new("Part")
315
SpecialMesh293 = Instance.new("SpecialMesh")
316
Weld294 = Instance.new("Weld")
317
Weld295 = Instance.new("Weld")
318
Weld296 = Instance.new("Weld")
319
Weld297 = Instance.new("Weld")
320
Weld298 = Instance.new("Weld")
321
Weld299 = Instance.new("Weld")
322
Weld300 = Instance.new("Weld")
323
Weld301 = Instance.new("Weld")
324
Weld302 = Instance.new("Weld")
325
Weld303 = Instance.new("Weld")
326
Weld304 = Instance.new("Weld")
327
Weld305 = Instance.new("Weld")
328
Weld306 = Instance.new("Weld")
329
Weld307 = Instance.new("Weld")
330
Weld308 = Instance.new("Weld")
331
Weld309 = Instance.new("Weld")
332
Weld310 = Instance.new("Weld")
333
Weld311 = Instance.new("Weld")
334
Weld312 = Instance.new("Weld")
335
Weld313 = Instance.new("Weld")
336
Weld314 = Instance.new("Weld")
337
Weld315 = Instance.new("Weld")
338
Weld316 = Instance.new("Weld")
339
Weld317 = Instance.new("Weld")
340
Weld318 = Instance.new("Weld")
341
Weld319 = Instance.new("Weld")
342
Weld320 = Instance.new("Weld")
343
Weld321 = Instance.new("Weld")
344
Weld322 = Instance.new("Weld")
345
Weld323 = Instance.new("Weld")
346
Weld324 = Instance.new("Weld")
347
Weld325 = Instance.new("Weld")
348
Weld326 = Instance.new("Weld")
349
Weld327 = Instance.new("Weld")
350
Weld328 = Instance.new("Weld")
351
Weld329 = Instance.new("Weld")
352
Weld330 = Instance.new("Weld")
353
Weld331 = Instance.new("Weld")
354
Weld332 = Instance.new("Weld")
355
Weld333 = Instance.new("Weld")
356
Weld334 = Instance.new("Weld")
357
Weld335 = Instance.new("Weld")
358
Weld336 = Instance.new("Weld")
359
Weld337 = Instance.new("Weld")
360
Weld338 = Instance.new("Weld")
361
Weld339 = Instance.new("Weld")
362
Weld340 = Instance.new("Weld")
363
Weld341 = Instance.new("Weld")
364
Weld342 = Instance.new("Weld")
365
Weld343 = Instance.new("Weld")
366
Weld344 = Instance.new("Weld")
367
Weld345 = Instance.new("Weld")
368
Weld346 = Instance.new("Weld")
369
Weld347 = Instance.new("Weld")
370
Weld348 = Instance.new("Weld")
371
Weld349 = Instance.new("Weld")
372
Weld350 = Instance.new("Weld")
373
Weld351 = Instance.new("Weld")
374
Weld352 = Instance.new("Weld")
375
Weld353 = Instance.new("Weld")
376
Weld354 = Instance.new("Weld")
377
Weld355 = Instance.new("Weld")
378
Weld356 = Instance.new("Weld")
379
Weld357 = Instance.new("Weld")
380
Weld358 = Instance.new("Weld")
381
Weld359 = Instance.new("Weld")
382
Weld360 = Instance.new("Weld")
383
Weld361 = Instance.new("Weld")
384
Weld362 = Instance.new("Weld")
385
Weld363 = Instance.new("Weld")
386
Weld364 = Instance.new("Weld")
387
Weld365 = Instance.new("Weld")
388
Weld366 = Instance.new("Weld")
389
Part367 = Instance.new("Part")
390
Sound368 = Instance.new("Sound")
391
Sound369 = Instance.new("Sound")
392
Part370 = Instance.new("Part")
393
Sound371 = Instance.new("Sound")
394
Sound372 = Instance.new("Sound")
395
Model373 = Instance.new("Model")
396
Part374 = Instance.new("Part")
397
Decal375 = Instance.new("Decal")
398
Part376 = Instance.new("Part")
399
Decal377 = Instance.new("Decal")
400
Motor378 = Instance.new("Motor")
401
Motor379 = Instance.new("Motor")
402
Motor380 = Instance.new("Motor")
403
Motor381 = Instance.new("Motor")
404
Motor382 = Instance.new("Motor")
405
Part383 = Instance.new("Part")
406
Part384 = Instance.new("Part")
407
Part385 = Instance.new("Part")
408
Part386 = Instance.new("Part")
409
SpecialMesh387 = Instance.new("SpecialMesh")
410
Decal388 = Instance.new("Decal")
411
Decal389 = Instance.new("Decal")
412
Humanoid390 = Instance.new("Humanoid")
413
Script391 = Instance.new("Script")
414
Shirt392 = Instance.new("Shirt")
415
Pants393 = Instance.new("Pants")
416
Part394 = Instance.new("Part")
417
Tool0.Name = "Steamer"
418
Tool0.Parent = mas
419
Part1.Parent = Tool0
420
Part1.Material = Enum.Material.SmoothPlastic
421
Part1.Transparency = 1
422
Part1.Rotation = Vector3.new(-60, 0, 165)
423
Part1.Anchored = true
424
Part1.CanCollide = false
425
Part1.FormFactor = Enum.FormFactor.Custom
426
Part1.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
427
Part1.CFrame = CFrame.new(1435.38062, 48.6328773, -1311.01868, -0.965924263, -0.258825004, -6.07067022e-07, 0.12940903, -0.482951164, 0.866032064, -0.22415106, 0.836521268, 0.499988496)
428
Part1.BottomSurface = Enum.SurfaceType.Smooth
429
Part1.TopSurface = Enum.SurfaceType.Smooth
430
Part1.Position = Vector3.new(1435.38062, 48.6328773, -1311.01868)
431
Part1.Orientation = Vector3.new(-60, 0, 165)
432
CylinderMesh2.Parent = Part1
433
CylinderMesh2.Scale = Vector3.new(0.291783929, 0.486306548, 0.170207277)
434
CylinderMesh2.Scale = Vector3.new(0.291783929, 0.486306548, 0.170207277)
435
Part3.Parent = Tool0
436
Part3.Material = Enum.Material.SmoothPlastic
437
Part3.BrickColor = BrickColor.new("Nougat")
438
Part3.Transparency = 1
439
Part3.Rotation = Vector3.new(180, 0, 90)
440
Part3.Anchored = true
441
Part3.CanCollide = false
442
Part3.FormFactor = Enum.FormFactor.Custom
443
Part3.Size = Vector3.new(0.39847663, 0.339129031, 0.423911244)
444
Part3.CFrame = CFrame.new(1434.30396, 48.923233, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
445
Part3.BottomSurface = Enum.SurfaceType.Smooth
446
Part3.TopSurface = Enum.SurfaceType.Smooth
447
Part3.Color = Color3.new(0.8, 0.556863, 0.411765)
448
Part3.Position = Vector3.new(1434.30396, 48.923233, -1310.87183)
449
Part3.Orientation = Vector3.new(0, -180, -90)
450
Part3.Color = Color3.new(0.8, 0.556863, 0.411765)
451
CylinderMesh4.Parent = Part3
452
Part5.Parent = Tool0
453
Part5.Material = Enum.Material.SmoothPlastic
454
Part5.BrickColor = BrickColor.new("Dark stone grey")
455
Part5.Transparency = 1
456
Part5.Rotation = Vector3.new(133.479996, 38.0400009, -171.679993)
457
Part5.Anchored = true
458
Part5.CanCollide = false
459
Part5.FormFactor = Enum.FormFactor.Custom
460
Part5.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975)
461
Part5.CFrame = CFrame.new(1435.09131, 49.0662308, -1311.1488, -0.779332995, 0.114002213, 0.616152287, -0.342794985, 0.745554209, -0.571524739, -0.524529994, -0.656622052, -0.54195559)
462
Part5.BottomSurface = Enum.SurfaceType.Smooth
463
Part5.TopSurface = Enum.SurfaceType.Smooth
464
Part5.Color = Color3.new(0.388235, 0.372549, 0.384314)
465
Part5.Position = Vector3.new(1435.09131, 49.0662308, -1311.1488)
466
Part5.Orientation = Vector3.new(34.8600006, 131.330002, -24.6899986)
467
Part5.Color = Color3.new(0.388235, 0.372549, 0.384314)
468
CylinderMesh6.Parent = Part5
469
CylinderMesh6.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
470
CylinderMesh6.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
471
Part7.Parent = Tool0
472
Part7.Material = Enum.Material.SmoothPlastic
473
Part7.BrickColor = BrickColor.new("Black")
474
Part7.Transparency = 1
475
Part7.Rotation = Vector3.new(-105, 75, 90)
476
Part7.Anchored = true
477
Part7.CanCollide = false
478
Part7.FormFactor = Enum.FormFactor.Custom
479
Part7.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
480
Part7.CFrame = CFrame.new(1434.85657, 49.1090851, -1311.08801, 0, -0.258817911, 0.965926111, -0.258811951, 0.93301481, 0.249999404, -0.96592778, -0.24999322, -0.0669851676)
481
Part7.BottomSurface = Enum.SurfaceType.Smooth
482
Part7.TopSurface = Enum.SurfaceType.Smooth
483
Part7.Color = Color3.new(0.105882, 0.164706, 0.207843)
484
Part7.Position = Vector3.new(1434.85657, 49.1090851, -1311.08801)
485
Part7.Orientation = Vector3.new(-14.4799995, 93.9700012, -15.5)
486
Part7.Color = Color3.new(0.105882, 0.164706, 0.207843)
487
CylinderMesh8.Parent = Part7
488
CylinderMesh8.Scale = Vector3.new(0.170207247, 0.705144346, 0.170207277)
489
CylinderMesh8.Scale = Vector3.new(0.170207247, 0.705144346, 0.170207277)
490
Part9.Parent = Tool0
491
Part9.Material = Enum.Material.SmoothPlastic
492
Part9.BrickColor = BrickColor.new("Dark stone grey")
493
Part9.Transparency = 1
494
Part9.Rotation = Vector3.new(15.0099993, 62.4199982, 2.98000002)
495
Part9.Anchored = true
496
Part9.CanCollide = false
497
Part9.FormFactor = Enum.FormFactor.Custom
498
Part9.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975)
499
Part9.CFrame = CFrame.new(1435.07556, 49.067543, -1310.66211, 0.462388188, -0.0240549594, 0.886351287, 0.2793791, 0.95266664, -0.119890675, -0.841513276, 0.303064078, 0.447222203)
500
Part9.BottomSurface = Enum.SurfaceType.Smooth
501
Part9.TopSurface = Enum.SurfaceType.Smooth
502
Part9.Color = Color3.new(0.388235, 0.372549, 0.384314)
503
Part9.Position = Vector3.new(1435.07556, 49.067543, -1310.66211)
504
Part9.Orientation = Vector3.new(6.88999987, 63.2299995, 16.3400002)
505
Part9.Color = Color3.new(0.388235, 0.372549, 0.384314)
506
CylinderMesh10.Parent = Part9
507
CylinderMesh10.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
508
CylinderMesh10.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
509
Part11.Parent = Tool0
510
Part11.Material = Enum.Material.SmoothPlastic
511
Part11.BrickColor = BrickColor.new("Dark stone grey")
512
Part11.Transparency = 1
513
Part11.Rotation = Vector3.new(180, 0, 90)
514
Part11.Anchored = true
515
Part11.CanCollide = false
516
Part11.FormFactor = Enum.FormFactor.Custom
517
Part11.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002)
518
Part11.CFrame = CFrame.new(1433.61292, 48.9232292, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
519
Part11.BottomSurface = Enum.SurfaceType.Smooth
520
Part11.TopSurface = Enum.SurfaceType.Smooth
521
Part11.Color = Color3.new(0.388235, 0.372549, 0.384314)
522
Part11.Position = Vector3.new(1433.61292, 48.9232292, -1310.87183)
523
Part11.Orientation = Vector3.new(0, -180, -90)
524
Part11.Color = Color3.new(0.388235, 0.372549, 0.384314)
525
CylinderMesh12.Parent = Part11
526
CylinderMesh12.Scale = Vector3.new(0.303541601, 0.0314008482, 0.523347139)
527
CylinderMesh12.Scale = Vector3.new(0.303541601, 0.0314008482, 0.523347139)
528
Part13.Parent = Tool0
529
Part13.Material = Enum.Material.SmoothPlastic
530
Part13.BrickColor = BrickColor.new("Really black")
531
Part13.Transparency = 1
532
Part13.Rotation = Vector3.new(0, 90, 0)
533
Part13.Anchored = true
534
Part13.CanCollide = false
535
Part13.FormFactor = Enum.FormFactor.Custom
536
Part13.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975)
537
Part13.CFrame = CFrame.new(1436.875, 48.5038071, -1310.87622, 0, 0, 1, 0, 1, -0, -1, 0, 0)
538
Part13.BackSurface = Enum.SurfaceType.SmoothNoOutlines
539
Part13.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
540
Part13.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
541
Part13.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
542
Part13.RightSurface = Enum.SurfaceType.SmoothNoOutlines
543
Part13.TopSurface = Enum.SurfaceType.SmoothNoOutlines
544
Part13.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
545
Part13.Position = Vector3.new(1436.875, 48.5038071, -1310.87622)
546
Part13.Orientation = Vector3.new(0, 90, 0)
547
Part13.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
548
SpecialMesh14.Parent = Part13
549
SpecialMesh14.Scale = Vector3.new(0.167988077, 0.439353347, 0.245521545)
550
SpecialMesh14.MeshType = Enum.MeshType.Brick
551
SpecialMesh14.Scale = Vector3.new(0.167988077, 0.439353347, 0.245521545)
552
Part15.Parent = Tool0
553
Part15.Material = Enum.Material.SmoothPlastic
554
Part15.BrickColor = BrickColor.new("Brick yellow")
555
Part15.Transparency = 1
556
Part15.Rotation = Vector3.new(-60, 0, 135)
557
Part15.Anchored = true
558
Part15.CanCollide = false
559
Part15.FormFactor = Enum.FormFactor.Custom
560
Part15.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
561
Part15.CFrame = CFrame.new(1435.32275, 48.6293831, -1311.01672, -0.707099199, -0.707114458, 1.28547924e-06, 0.353550076, -0.353540927, 0.866031885, -0.612383127, 0.612370908, 0.499988824)
562
Part15.BottomSurface = Enum.SurfaceType.Smooth
563
Part15.TopSurface = Enum.SurfaceType.Smooth
564
Part15.Color = Color3.new(0.843137, 0.772549, 0.603922)
565
Part15.Position = Vector3.new(1435.32275, 48.6293831, -1311.01672)
566
Part15.Orientation = Vector3.new(-60, 0, 135)
567
Part15.Color = Color3.new(0.843137, 0.772549, 0.603922)
568
CylinderMesh16.Parent = Part15
569
CylinderMesh16.Scale = Vector3.new(0.291783929, 0.705144346, 0.170207277)
570
CylinderMesh16.Scale = Vector3.new(0.291783929, 0.705144346, 0.170207277)
571
Part17.Name = "AimPart"
572
Part17.Parent = Tool0
573
Part17.Material = Enum.Material.SmoothPlastic
574
Part17.Transparency = 1
575
Part17.Rotation = Vector3.new(90, 87.8300018, -90)
576
Part17.Anchored = true
577
Part17.CanCollide = false
578
Part17.FormFactor = Enum.FormFactor.Custom
579
Part17.Size = Vector3.new(0.300000012, 0.200000003, 0.200000003)
580
Part17.CFrame = CFrame.new(1436.29102, 49.267807, -1310.8728, 0, 0.0378389955, 0.99928385, 0, 0.99928385, -0.0378389955, -1, 0, 0)
581
Part17.BottomSurface = Enum.SurfaceType.Smooth
582
Part17.TopSurface = Enum.SurfaceType.Smooth
583
Part17.Position = Vector3.new(1436.29102, 49.267807, -1310.8728)
584
Part17.Orientation = Vector3.new(2.16999984, 90, 0)
585
Part18.Name = "Main"
586
Part18.Parent = Tool0
587
Part18.Material = Enum.Material.SmoothPlastic
588
Part18.BrickColor = BrickColor.new("Really black")
589
Part18.Transparency = 1
590
Part18.Rotation = Vector3.new(0, 0, 90)
591
Part18.Anchored = true
592
Part18.CanCollide = false
593
Part18.FormFactor = Enum.FormFactor.Custom
594
Part18.Size = Vector3.new(0.25, 0.25, 0.25)
595
Part18.CFrame = CFrame.new(1433.32568, 48.9478035, -1310.8728, 0, -1, 0, 1, 0, -0, 0, 0, 1)
596
Part18.BottomSurface = Enum.SurfaceType.Smooth
597
Part18.TopSurface = Enum.SurfaceType.Smooth
598
Part18.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
599
Part18.Position = Vector3.new(1433.32568, 48.9478035, -1310.8728)
600
Part18.Orientation = Vector3.new(0, 0, 90)
601
Part18.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
602
PointLight19.Name = "FlashFX"
603
PointLight19.Parent = Part18
604
PointLight19.Color = Color3.new(0.211765, 1, 0.054902)
605
PointLight19.Enabled = false
606
PointLight19.Brightness = 10
607
PointLight19.Range = 6
608
PointLight19.Shadows = true
609
PointLight19.Color = Color3.new(0.211765, 1, 0.054902)
610
BillboardGui20.Name = "FlashGui"
611
BillboardGui20.Parent = Part18
612
BillboardGui20.Size = UDim2.new(1.10000002, 0, 1.10000002, 0)
613
BillboardGui20.Enabled = false
614
ImageLabel21.Name = "Label"
615
ImageLabel21.Parent = BillboardGui20
616
ImageLabel21.Transparency = 1
617
ImageLabel21.Size = UDim2.new(1, 0, 1, 0)
618
ImageLabel21.BackgroundTransparency = 1
619
ImageLabel21.Image = "http://www.roblox.com/asset/?id=192664810"
620
ImageLabel21.ImageColor3 = Color3.new(0, 1, 0.00392157)
621
CylinderMesh22.Parent = Part18
622
CylinderMesh22.Offset = Vector3.new(0, -0.248999998, 0)
623
CylinderMesh22.Scale = Vector3.new(0.600000024, 1, 0.600000024)
624
CylinderMesh22.Scale = Vector3.new(0.600000024, 1, 0.600000024)
625
Part23.Name = "Handle"
626
Part23.Parent = Tool0
627
Part23.Material = Enum.Material.SmoothPlastic
628
Part23.Transparency = 1
629
Part23.Rotation = Vector3.new(0, 90, 0)
630
Part23.Anchored = true
631
Part23.CanCollide = false
632
Part23.FormFactor = Enum.FormFactor.Custom
633
Part23.Size = Vector3.new(0.200000003, 0.200000003, 0.200000003)
634
Part23.CFrame = CFrame.new(1435.87061, 48.4373131, -1310.86279, 0, 0, 1, 0, 1, -0, -1, 0, 0)
635
Part23.BottomSurface = Enum.SurfaceType.Smooth
636
Part23.TopSurface = Enum.SurfaceType.Smooth
637
Part23.Position = Vector3.new(1435.87061, 48.4373131, -1310.86279)
638
Part23.Orientation = Vector3.new(0, 90, 0)
639
Sound24.Name = "FireSound"
640
Sound24.Parent = Part23
641
Sound24.Pitch = 0.20000000298023
642
Sound24.SoundId = "rbxassetid://823426534"
643
Sound24.Volume = 10
644
Sound25.Name = "ReloadSound"
645
Sound25.Parent = Part23
646
Sound25.Pitch = 0.20000000298023
647
Sound25.SoundId = "rbxassetid://811242564"
648
Sound25.Volume = 10
649
Part26.Parent = Tool0
650
Part26.Material = Enum.Material.SmoothPlastic
651
Part26.BrickColor = BrickColor.new("Nougat")
652
Part26.Transparency = 1
653
Part26.Rotation = Vector3.new(180, 0, 90)
654
Part26.Anchored = true
655
Part26.CanCollide = false
656
Part26.FormFactor = Enum.FormFactor.Custom
657
Part26.Size = Vector3.new(0.27978155, 0.822387338, 0.423911244)
658
Part26.CFrame = CFrame.new(1435.18982, 48.9232292, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
659
Part26.BottomSurface = Enum.SurfaceType.Smooth
660
Part26.TopSurface = Enum.SurfaceType.Smooth
661
Part26.Color = Color3.new(0.8, 0.556863, 0.411765)
662
Part26.Position = Vector3.new(1435.18982, 48.9232292, -1310.87183)
663
Part26.Orientation = Vector3.new(0, -180, -90)
664
Part26.Color = Color3.new(0.8, 0.556863, 0.411765)
665
CylinderMesh27.Parent = Part26
666
Part28.Name = "Smooth Block Model"
667
Part28.Parent = Tool0
668
Part28.Material = Enum.Material.SmoothPlastic
669
Part28.BrickColor = BrickColor.new("Dark stone grey")
670
Part28.Transparency = 1
671
Part28.Rotation = Vector3.new(-90, -15, -90)
672
Part28.Anchored = true
673
Part28.CanCollide = false
674
Part28.FormFactor = Enum.FormFactor.Custom
675
Part28.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
676
Part28.CFrame = CFrame.new(1435.97473, 48.6492271, -1310.87183, 0, 0.965925872, -0.258818984, 0, 0.258818984, 0.965925872, 1, 0, 0)
677
Part28.BackSurface = Enum.SurfaceType.SmoothNoOutlines
678
Part28.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
679
Part28.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
680
Part28.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
681
Part28.RightSurface = Enum.SurfaceType.SmoothNoOutlines
682
Part28.TopSurface = Enum.SurfaceType.SmoothNoOutlines
683
Part28.Color = Color3.new(0.388235, 0.372549, 0.384314)
684
Part28.Position = Vector3.new(1435.97473, 48.6492271, -1310.87183)
685
Part28.Orientation = Vector3.new(-75, -90, 0)
686
Part28.Color = Color3.new(0.388235, 0.372549, 0.384314)
687
SpecialMesh29.Parent = Part28
688
SpecialMesh29.Scale = Vector3.new(0.291783631, 0.170207217, 0.437675893)
689
SpecialMesh29.MeshType = Enum.MeshType.Wedge
690
SpecialMesh29.Scale = Vector3.new(0.291783631, 0.170207217, 0.437675893)
691
Part30.Name = "Mag"
692
Part30.Parent = Tool0
693
Part30.Material = Enum.Material.SmoothPlastic
694
Part30.BrickColor = BrickColor.new("Dark stone grey")
695
Part30.Transparency = 1
696
Part30.Rotation = Vector3.new(0, 90, 0)
697
Part30.Anchored = true
698
Part30.CanCollide = false
699
Part30.FormFactor = Enum.FormFactor.Custom
700
Part30.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
701
Part30.CFrame = CFrame.new(1435.36523, 48.273735, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0)
702
Part30.BottomSurface = Enum.SurfaceType.Smooth
703
Part30.TopSurface = Enum.SurfaceType.Smooth
704
Part30.Color = Color3.new(0.388235, 0.372549, 0.384314)
705
Part30.Position = Vector3.new(1435.36523, 48.273735, -1310.88025)
706
Part30.Orientation = Vector3.new(0, 90, 0)
707
Part30.Color = Color3.new(0.388235, 0.372549, 0.384314)
708
SpecialMesh31.Parent = Part30
709
SpecialMesh31.Scale = Vector3.new(0.630397201, 0.190620154, 0.390246093)
710
SpecialMesh31.MeshType = Enum.MeshType.Brick
711
SpecialMesh31.Scale = Vector3.new(0.630397201, 0.190620154, 0.390246093)
712
Decal32.Parent = Part30
713
Decal32.Texture = "http://www.roblox.com/asset/?id=2276240"
714
Decal32.Face = Enum.NormalId.Right
715
Decal33.Parent = Part30
716
Decal33.Texture = "http://www.roblox.com/asset/?id=2276240"
717
Decal33.Face = Enum.NormalId.Left
718
Part34.Name = "Mag"
719
Part34.Parent = Tool0
720
Part34.Material = Enum.Material.SmoothPlastic
721
Part34.BrickColor = BrickColor.new("Dark stone grey")
722
Part34.Transparency = 1
723
Part34.Rotation = Vector3.new(0, 90, 0)
724
Part34.Anchored = true
725
Part34.CanCollide = false
726
Part34.FormFactor = Enum.FormFactor.Custom
727
Part34.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
728
Part34.CFrame = CFrame.new(1435.31006, 48.3118896, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0)
729
Part34.BottomSurface = Enum.SurfaceType.Smooth
730
Part34.TopSurface = Enum.SurfaceType.Smooth
731
Part34.Color = Color3.new(0.388235, 0.372549, 0.384314)
732
Part34.Position = Vector3.new(1435.31006, 48.3118896, -1310.88025)
733
Part34.Orientation = Vector3.new(0, 90, 0)
734
Part34.Color = Color3.new(0.388235, 0.372549, 0.384314)
735
SpecialMesh35.Parent = Part34
736
SpecialMesh35.Scale = Vector3.new(0.271205842, 0.260836214, 0.0319066234)
737
SpecialMesh35.MeshType = Enum.MeshType.Brick
738
SpecialMesh35.Scale = Vector3.new(0.271205842, 0.260836214, 0.0319066234)
739
Part36.Name = "Mag"
740
Part36.Parent = Tool0
741
Part36.Material = Enum.Material.SmoothPlastic
742
Part36.BrickColor = BrickColor.new("Dark stone grey")
743
Part36.Transparency = 1
744
Part36.Rotation = Vector3.new(0, 90, 0)
745
Part36.Anchored = true
746
Part36.CanCollide = false
747
Part36.FormFactor = Enum.FormFactor.Custom
748
Part36.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
749
Part36.CFrame = CFrame.new(1435.42041, 48.3114662, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0)
750
Part36.BottomSurface = Enum.SurfaceType.Smooth
751
Part36.TopSurface = Enum.SurfaceType.Smooth
752
Part36.Color = Color3.new(0.388235, 0.372549, 0.384314)
753
Part36.Position = Vector3.new(1435.42041, 48.3114662, -1310.88025)
754
Part36.Orientation = Vector3.new(0, 90, 0)
755
Part36.Color = Color3.new(0.388235, 0.372549, 0.384314)
756
SpecialMesh37.Parent = Part36
757
SpecialMesh37.Scale = Vector3.new(0.271205842, 0.260836214, 0.0319066234)
758
SpecialMesh37.MeshType = Enum.MeshType.Brick
759
SpecialMesh37.Scale = Vector3.new(0.271205842, 0.260836214, 0.0319066234)
760
Part38.Name = "Mag"
761
Part38.Parent = Tool0
762
Part38.Material = Enum.Material.SmoothPlastic
763
Part38.BrickColor = BrickColor.new("Cool yellow")
764
Part38.Transparency = 1
765
Part38.Rotation = Vector3.new(0, 90, 0)
766
Part38.Anchored = true
767
Part38.CanCollide = false
768
Part38.FormFactor = Enum.FormFactor.Custom
769
Part38.Size = Vector3.new(1, 1, 1)
770
Part38.CFrame = CFrame.new(1435.36523, 48.3523445, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0)
771
Part38.BottomSurface = Enum.SurfaceType.Smooth
772
Part38.TopSurface = Enum.SurfaceType.Smooth
773
Part38.Color = Color3.new(0.992157, 0.917647, 0.552941)
774
Part38.Position = Vector3.new(1435.36523, 48.3523445, -1310.88025)
775
Part38.Orientation = Vector3.new(0, 90, 0)
776
Part38.Color = Color3.new(0.992157, 0.917647, 0.552941)
777
CylinderMesh39.Parent = Part38
778
CylinderMesh39.Scale = Vector3.new(0.178042755, 0.203477502, 0.194999233)
779
CylinderMesh39.Scale = Vector3.new(0.178042755, 0.203477502, 0.194999233)
780
Part40.Name = "Mag"
781
Part40.Parent = Tool0
782
Part40.Material = Enum.Material.SmoothPlastic
783
Part40.BrickColor = BrickColor.new("Dark stone grey")
784
Part40.Transparency = 1
785
Part40.Rotation = Vector3.new(0, 90, 0)
786
Part40.Anchored = true
787
Part40.CanCollide = false
788
Part40.FormFactor = Enum.FormFactor.Custom
789
Part40.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002)
790
Part40.CFrame = CFrame.new(1435.36523, 48.373539, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0)
791
Part40.BottomSurface = Enum.SurfaceType.Smooth
792
Part40.TopSurface = Enum.SurfaceType.Smooth
793
Part40.Color = Color3.new(0.388235, 0.372549, 0.384314)
794
Part40.Position = Vector3.new(1435.36523, 48.373539, -1310.88025)
795
Part40.Orientation = Vector3.new(0, 90, 0)
796
Part40.Color = Color3.new(0.388235, 0.372549, 0.384314)
797
CylinderMesh41.Parent = Part40
798
CylinderMesh41.Scale = Vector3.new(0.240739763, 0.0314008482, 0.240739793)
799
CylinderMesh41.Scale = Vector3.new(0.240739763, 0.0314008482, 0.240739793)
800
Part42.Name = "Mag"
801
Part42.Parent = Tool0
802
Part42.Material = Enum.Material.SmoothPlastic
803
Part42.BrickColor = BrickColor.new("Bright red")
804
Part42.Transparency = 1
805
Part42.Rotation = Vector3.new(0, 90, 0)
806
Part42.Anchored = true
807
Part42.CanCollide = false
808
Part42.FormFactor = Enum.FormFactor.Custom
809
Part42.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
810
Part42.CFrame = CFrame.new(1435.36523, 48.3438797, -1310.88013, 0, 0, 1, 0, 1, -0, -1, 0, 0)
811
Part42.BottomSurface = Enum.SurfaceType.Smooth
812
Part42.TopSurface = Enum.SurfaceType.Smooth
813
Part42.Color = Color3.new(0.768628, 0.156863, 0.109804)
814
Part42.Position = Vector3.new(1435.36523, 48.3438797, -1310.88013)
815
Part42.Orientation = Vector3.new(0, 90, 0)
816
Part42.Color = Color3.new(0.768628, 0.156863, 0.109804)
817
CylinderMesh43.Parent = Part42
818
CylinderMesh43.Scale = Vector3.new(0.640904009, 0.0300189275, 0.690435052)
819
CylinderMesh43.Scale = Vector3.new(0.640904009, 0.0300189275, 0.690435052)
820
Part44.Name = "Mag"
821
Part44.Parent = Tool0
822
Part44.Material = Enum.Material.SmoothPlastic
823
Part44.BrickColor = BrickColor.new("Dark stone grey")
824
Part44.Transparency = 1
825
Part44.Rotation = Vector3.new(90, 0, -90)
826
Part44.Anchored = true
827
Part44.CanCollide = false
828
Part44.FormFactor = Enum.FormFactor.Custom
829
Part44.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
830
Part44.CFrame = CFrame.new(1435.36548, 48.474556, -1310.88025, 0, 1, 0, 0, 0, -1, -1, 0, 0)
831
Part44.BottomSurface = Enum.SurfaceType.Smooth
832
Part44.TopSurface = Enum.SurfaceType.Smooth
833
Part44.Color = Color3.new(0.388235, 0.372549, 0.384314)
834
Part44.Position = Vector3.new(1435.36548, 48.474556, -1310.88025)
835
Part44.Orientation = Vector3.new(90, 90, 0)
836
Part44.Color = Color3.new(0.388235, 0.372549, 0.384314)
837
SpecialMesh45.Parent = Part44
838
SpecialMesh45.Scale = Vector3.new(0.319065601, 0.31906575, 0.191439345)
839
SpecialMesh45.MeshType = Enum.MeshType.Sphere
840
SpecialMesh45.Scale = Vector3.new(0.319065601, 0.31906575, 0.191439345)
841
Part46.Name = "Mag"
842
Part46.Parent = Tool0
843
Part46.Material = Enum.Material.SmoothPlastic
844
Part46.BrickColor = BrickColor.new("Dark stone grey")
845
Part46.Transparency = 1
846
Part46.Rotation = Vector3.new(0, 90, 0)
847
Part46.Anchored = true
848
Part46.CanCollide = false
849
Part46.FormFactor = Enum.FormFactor.Custom
850
Part46.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002)
851
Part46.CFrame = CFrame.new(1435.36523, 48.4667969, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0)
852
Part46.BottomSurface = Enum.SurfaceType.Smooth
853
Part46.TopSurface = Enum.SurfaceType.Smooth
854
Part46.Color = Color3.new(0.388235, 0.372549, 0.384314)
855
Part46.Position = Vector3.new(1435.36523, 48.4667969, -1310.88025)
856
Part46.Orientation = Vector3.new(0, 90, 0)
857
Part46.Color = Color3.new(0.388235, 0.372549, 0.384314)
858
CylinderMesh47.Parent = Part46
859
CylinderMesh47.Scale = Vector3.new(0.219805866, 0.0314008482, 0.240739793)
860
CylinderMesh47.Scale = Vector3.new(0.219805866, 0.0314008482, 0.240739793)
861
Part48.Name = "Mag"
862
Part48.Parent = Tool0
863
Part48.Material = Enum.Material.SmoothPlastic
864
Part48.BrickColor = BrickColor.new("Dark stone grey")
865
Part48.Transparency = 1
866
Part48.Rotation = Vector3.new(0, 90, 0)
867
Part48.Anchored = true
868
Part48.CanCollide = false
869
Part48.FormFactor = Enum.FormFactor.Custom
870
Part48.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
871
Part48.CFrame = CFrame.new(1435.36108, 48.4771957, -1310.87622, 0, 0, 1, 0, 1, -0, -1, 0, 0)
872
Part48.BottomSurface = Enum.SurfaceType.Smooth
873
Part48.TopSurface = Enum.SurfaceType.Smooth
874
Part48.Color = Color3.new(0.388235, 0.372549, 0.384314)
875
Part48.Position = Vector3.new(1435.36108, 48.4771957, -1310.87622)
876
Part48.Orientation = Vector3.new(0, 90, 0)
877
Part48.Color = Color3.new(0.388235, 0.372549, 0.384314)
878
SpecialMesh49.Parent = Part48
879
SpecialMesh49.Scale = Vector3.new(0.660416245, 0.190620154, 0.180113614)
880
SpecialMesh49.MeshType = Enum.MeshType.Brick
881
SpecialMesh49.Scale = Vector3.new(0.660416245, 0.190620154, 0.180113614)
882
Decal50.Parent = Part48
883
Decal50.Texture = "http://www.roblox.com/asset/?id=2276263"
884
Decal50.Face = Enum.NormalId.Right
885
Decal51.Parent = Part48
886
Decal51.Texture = "http://www.roblox.com/asset/?id=2276263"
887
Decal51.Face = Enum.NormalId.Left
888
Part52.Parent = Tool0
889
Part52.Material = Enum.Material.SmoothPlastic
890
Part52.BrickColor = BrickColor.new("Dark stone grey")
891
Part52.Transparency = 1
892
Part52.Rotation = Vector3.new(-90, 0, 90)
893
Part52.Anchored = true
894
Part52.CanCollide = false
895
Part52.FormFactor = Enum.FormFactor.Custom
896
Part52.Size = Vector3.new(0.430467099, 0.430467129, 0.430467188)
897
Part52.CFrame = CFrame.new(1435.20679, 48.6519432, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0)
898
Part52.BottomSurface = Enum.SurfaceType.Smooth
899
Part52.TopSurface = Enum.SurfaceType.Smooth
900
Part52.Color = Color3.new(0.388235, 0.372549, 0.384314)
901
Part52.Position = Vector3.new(1435.20679, 48.6519432, -1310.87183)
902
Part52.Orientation = Vector3.new(-90, 90, 0)
903
Part52.Color = Color3.new(0.388235, 0.372549, 0.384314)
904
SpecialMesh53.Parent = Part52
905
SpecialMesh53.Scale = Vector3.new(0.236344978, 2.93461728, 0.17725873)
906
SpecialMesh53.MeshType = Enum.MeshType.Brick
907
SpecialMesh53.Scale = Vector3.new(0.236344978, 2.93461728, 0.17725873)
908
Part54.Parent = Tool0
909
Part54.Material = Enum.Material.SmoothPlastic
910
Part54.BrickColor = BrickColor.new("Dark stone grey")
911
Part54.Transparency = 1
912
Part54.Rotation = Vector3.new(0, 90, 0)
913
Part54.Anchored = true
914
Part54.CanCollide = false
915
Part54.FormFactor = Enum.FormFactor.Custom
916
Part54.Size = Vector3.new(1, 1, 1)
917
Part54.CFrame = CFrame.new(1436.06531, 48.6182861, -1310.87183, 0, 0, 1, 0, 1, -0, -1, 0, 0)
918
Part54.BackSurface = Enum.SurfaceType.SmoothNoOutlines
919
Part54.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
920
Part54.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
921
Part54.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
922
Part54.RightSurface = Enum.SurfaceType.SmoothNoOutlines
923
Part54.TopSurface = Enum.SurfaceType.SmoothNoOutlines
924
Part54.Color = Color3.new(0.388235, 0.372549, 0.384314)
925
Part54.Position = Vector3.new(1436.06531, 48.6182861, -1310.87183)
926
Part54.Orientation = Vector3.new(0, 90, 0)
927
Part54.Color = Color3.new(0.388235, 0.372549, 0.384314)
928
SpecialMesh55.Parent = Part54
929
SpecialMesh55.Scale = Vector3.new(0.0339129046, 0.0423911363, 0.593476057)
930
SpecialMesh55.MeshType = Enum.MeshType.Brick
931
SpecialMesh55.Scale = Vector3.new(0.0339129046, 0.0423911363, 0.593476057)
932
Part56.Parent = Tool0
933
Part56.Material = Enum.Material.SmoothPlastic
934
Part56.BrickColor = BrickColor.new("Dark stone grey")
935
Part56.Transparency = 1
936
Part56.Rotation = Vector3.new(180, 0, 90)
937
Part56.Anchored = true
938
Part56.CanCollide = false
939
Part56.FormFactor = Enum.FormFactor.Custom
940
Part56.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
941
Part56.CFrame = CFrame.new(1433.85034, 48.923233, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
942
Part56.BottomSurface = Enum.SurfaceType.Smooth
943
Part56.TopSurface = Enum.SurfaceType.Smooth
944
Part56.Color = Color3.new(0.388235, 0.372549, 0.384314)
945
Part56.Position = Vector3.new(1433.85034, 48.923233, -1310.87183)
946
Part56.Orientation = Vector3.new(0, -180, -90)
947
Part56.Color = Color3.new(0.388235, 0.372549, 0.384314)
948
CylinderMesh57.Parent = Part56
949
CylinderMesh57.Scale = Vector3.new(0.870549083, 0.0300189219, 1.50094521)
950
CylinderMesh57.Scale = Vector3.new(0.870549083, 0.0300189219, 1.50094521)
951
Part58.Parent = Tool0
952
Part58.Material = Enum.Material.SmoothPlastic
953
Part58.BrickColor = BrickColor.new("Dark stone grey")
954
Part58.Transparency = 1
955
Part58.Rotation = Vector3.new(180, 0, 90)
956
Part58.Anchored = true
957
Part58.CanCollide = false
958
Part58.FormFactor = Enum.FormFactor.Custom
959
Part58.Size = Vector3.new(0.228767872, 0.228767842, 0.228767857)
960
Part58.CFrame = CFrame.new(1435.21533, 48.9020348, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
961
Part58.BottomSurface = Enum.SurfaceType.Smooth
962
Part58.TopSurface = Enum.SurfaceType.Smooth
963
Part58.Color = Color3.new(0.388235, 0.372549, 0.384314)
964
Part58.Position = Vector3.new(1435.21533, 48.9020348, -1310.87183)
965
Part58.Orientation = Vector3.new(0, -180, -90)
966
Part58.Color = Color3.new(0.388235, 0.372549, 0.384314)
967
CylinderMesh59.Parent = Part58
968
CylinderMesh59.Scale = Vector3.new(2.00126076, 0.185301825, 2.00126052)
969
CylinderMesh59.Scale = Vector3.new(2.00126076, 0.185301825, 2.00126052)
970
Part60.Parent = Tool0
971
Part60.Material = Enum.Material.SmoothPlastic
972
Part60.BrickColor = BrickColor.new("Dark stone grey")
973
Part60.Transparency = 1
974
Part60.Rotation = Vector3.new(90, 75, -90)
975
Part60.Anchored = true
976
Part60.CanCollide = false
977
Part60.FormFactor = Enum.FormFactor.Custom
978
Part60.Size = Vector3.new(1, 1, 1)
979
Part60.CFrame = CFrame.new(1436.37439, 48.852356, -1310.87183, 0, 0.258818984, 0.965925872, 0, 0.965925872, -0.258818984, -1, 0, 0)
980
Part60.BottomSurface = Enum.SurfaceType.Smooth
981
Part60.TopSurface = Enum.SurfaceType.Smooth
982
Part60.Color = Color3.new(0.388235, 0.372549, 0.384314)
983
Part60.Position = Vector3.new(1436.37439, 48.852356, -1310.87183)
984
Part60.Orientation = Vector3.new(15, 90, 0)
985
Part60.Color = Color3.new(0.388235, 0.372549, 0.384314)
986
SpecialMesh61.Parent = Part60
987
SpecialMesh61.Scale = Vector3.new(0.0339129046, 0.050869368, 0.568041325)
988
SpecialMesh61.MeshType = Enum.MeshType.Brick
989
SpecialMesh61.Scale = Vector3.new(0.0339129046, 0.050869368, 0.568041325)
990
Part62.Parent = Tool0
991
Part62.Material = Enum.Material.SmoothPlastic
992
Part62.BrickColor = BrickColor.new("Medium green")
993
Part62.Reflectance = 0.40000000596046
994
Part62.Transparency = 1
995
Part62.Rotation = Vector3.new(-90, 0, -90)
996
Part62.Anchored = true
997
Part62.CanCollide = false
998
Part62.FormFactor = Enum.FormFactor.Custom
999
Part62.Size = Vector3.new(1, 1, 1)
1000
Part62.CFrame = CFrame.new(1436.0885, 48.923233, -1310.96509, 0, 1, 0, 0, 0, 1, 1, 0, 0)
1001
Part62.BottomSurface = Enum.SurfaceType.Smooth
1002
Part62.TopSurface = Enum.SurfaceType.Smooth
1003
Part62.Color = Color3.new(0.631373, 0.768628, 0.54902)
1004
Part62.Position = Vector3.new(1436.0885, 48.923233, -1310.96509)
1005
Part62.Orientation = Vector3.new(-90, -90, 0)
1006
Part62.Color = Color3.new(0.631373, 0.768628, 0.54902)
1007
CylinderMesh63.Parent = Part62
1008
CylinderMesh63.Scale = Vector3.new(0.101738736, 0.754562199, 0.0339129157)
1009
CylinderMesh63.Scale = Vector3.new(0.101738736, 0.754562199, 0.0339129157)
1010
Part64.Parent = Tool0
1011
Part64.Material = Enum.Material.SmoothPlastic
1012
Part64.BrickColor = BrickColor.new("Dark stone grey")
1013
Part64.Transparency = 1
1014
Part64.Rotation = Vector3.new(-150.599991, 32.2399979, -23.1999989)
1015
Part64.Anchored = true
1016
Part64.CanCollide = false
1017
Part64.FormFactor = Enum.FormFactor.Custom
1018
Part64.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975)
1019
Part64.CFrame = CFrame.new(1434.84216, 49.1045074, -1310.66235, 0.777458727, 0.333219469, 0.533406675, 0.102508962, -0.903908193, 0.415261477, 0.620523751, -0.268169731, -0.73690933)
1020
Part64.BottomSurface = Enum.SurfaceType.Smooth
1021
Part64.TopSurface = Enum.SurfaceType.Smooth
1022
Part64.Color = Color3.new(0.388235, 0.372549, 0.384314)
1023
Part64.Position = Vector3.new(1434.84216, 49.1045074, -1310.66235)
1024
Part64.Orientation = Vector3.new(-24.539999, 144.099991, 173.529999)
1025
Part64.Color = Color3.new(0.388235, 0.372549, 0.384314)
1026
CylinderMesh65.Parent = Part64
1027
CylinderMesh65.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
1028
CylinderMesh65.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
1029
Part66.Parent = Tool0
1030
Part66.Material = Enum.Material.SmoothPlastic
1031
Part66.BrickColor = BrickColor.new("Dark stone grey")
1032
Part66.Transparency = 1
1033
Part66.Rotation = Vector3.new(-90, 0, 90)
1034
Part66.Anchored = true
1035
Part66.CanCollide = false
1036
Part66.FormFactor = Enum.FormFactor.Custom
1037
Part66.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002)
1038
Part66.CFrame = CFrame.new(1435.35938, 48.60532, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0)
1039
Part66.BottomSurface = Enum.SurfaceType.Smooth
1040
Part66.TopSurface = Enum.SurfaceType.Smooth
1041
Part66.Color = Color3.new(0.388235, 0.372549, 0.384314)
1042
Part66.Position = Vector3.new(1435.35938, 48.60532, -1310.87183)
1043
Part66.Orientation = Vector3.new(-90, 90, 0)
1044
Part66.Color = Color3.new(0.388235, 0.372549, 0.384314)
1045
SpecialMesh67.Parent = Part66
1046
SpecialMesh67.Scale = Vector3.new(0.188405082, 0.450078517, 0.177938163)
1047
SpecialMesh67.MeshType = Enum.MeshType.Brick
1048
SpecialMesh67.Scale = Vector3.new(0.188405082, 0.450078517, 0.177938163)
1049
Part68.Parent = Tool0
1050
Part68.Material = Enum.Material.SmoothPlastic
1051
Part68.BrickColor = BrickColor.new("Dark stone grey")
1052
Part68.Transparency = 1
1053
Part68.Rotation = Vector3.new(0, 90, 0)
1054
Part68.Anchored = true
1055
Part68.CanCollide = false
1056
Part68.FormFactor = Enum.FormFactor.Custom
1057
Part68.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
1058
Part68.CFrame = CFrame.new(1436.875, 48.6733971, -1310.87622, 0, 0, 1, 0, 1, -0, -1, 0, 0)
1059
Part68.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1060
Part68.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1061
Part68.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1062
Part68.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1063
Part68.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1064
Part68.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1065
Part68.Color = Color3.new(0.388235, 0.372549, 0.384314)
1066
Part68.Position = Vector3.new(1436.875, 48.6733971, -1310.87622)
1067
Part68.Orientation = Vector3.new(0, 90, 0)
1068
Part68.Color = Color3.new(0.388235, 0.372549, 0.384314)
1069
SpecialMesh69.Parent = Part68
1070
SpecialMesh69.Scale = Vector3.new(0.390246004, 0.180113539, 0.57036072)
1071
SpecialMesh69.MeshType = Enum.MeshType.Brick
1072
SpecialMesh69.Scale = Vector3.new(0.390246004, 0.180113539, 0.57036072)
1073
Part70.Parent = Tool0
1074
Part70.Material = Enum.Material.SmoothPlastic
1075
Part70.BrickColor = BrickColor.new("Black")
1076
Part70.Transparency = 1
1077
Part70.Rotation = Vector3.new(50.7299995, 45.0399971, -40.1399994)
1078
Part70.Anchored = true
1079
Part70.CanCollide = false
1080
Part70.FormFactor = Enum.FormFactor.Custom
1081
Part70.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1082
Part70.CFrame = CFrame.new(1435.48877, 48.9965515, -1310.62427, 0.540129244, 0.455500901, 0.707657695, 0.0107550053, 0.837061286, -0.547003508, -0.841513395, 0.303063482, 0.447222352)
1083
Part70.BottomSurface = Enum.SurfaceType.Smooth
1084
Part70.TopSurface = Enum.SurfaceType.Smooth
1085
Part70.Color = Color3.new(0.105882, 0.164706, 0.207843)
1086
Part70.Position = Vector3.new(1435.48877, 48.9965515, -1310.62427)
1087
Part70.Orientation = Vector3.new(33.1599998, 57.7099991, 0.74000001)
1088
Part70.Color = Color3.new(0.105882, 0.164706, 0.207843)
1089
CylinderMesh71.Parent = Part70
1090
CylinderMesh71.Scale = Vector3.new(0.170207247, 0.75377506, 0.170207277)
1091
CylinderMesh71.Scale = Vector3.new(0.170207247, 0.75377506, 0.170207277)
1092
Part72.Parent = Tool0
1093
Part72.Material = Enum.Material.SmoothPlastic
1094
Part72.BrickColor = BrickColor.new("Black")
1095
Part72.Transparency = 1
1096
Part72.Rotation = Vector3.new(90, 0, 90)
1097
Part72.Anchored = true
1098
Part72.CanCollide = false
1099
Part72.FormFactor = Enum.FormFactor.Custom
1100
Part72.Size = Vector3.new(1, 1, 1)
1101
Part72.CFrame = CFrame.new(1435.60107, 48.9062729, -1310.87183, 0, -1, 0, 0, 0, -1, 1, 0, 0)
1102
Part72.BottomSurface = Enum.SurfaceType.Smooth
1103
Part72.TopSurface = Enum.SurfaceType.Smooth
1104
Part72.Color = Color3.new(0.105882, 0.164706, 0.207843)
1105
Part72.Position = Vector3.new(1435.60107, 48.9062729, -1310.87183)
1106
Part72.Orientation = Vector3.new(90, -90, 0)
1107
Part72.Color = Color3.new(0.105882, 0.164706, 0.207843)
1108
SpecialMesh73.Parent = Part72
1109
SpecialMesh73.Scale = Vector3.new(0.440867633, 0.186521009, 0.432389498)
1110
SpecialMesh73.MeshType = Enum.MeshType.Sphere
1111
SpecialMesh73.Scale = Vector3.new(0.440867633, 0.186521009, 0.432389498)
1112
Part74.Parent = Tool0
1113
Part74.Material = Enum.Material.SmoothPlastic
1114
Part74.Transparency = 1
1115
Part74.Rotation = Vector3.new(-90, -30, -90)
1116
Part74.Anchored = true
1117
Part74.CanCollide = false
1118
Part74.FormFactor = Enum.FormFactor.Custom
1119
Part74.Size = Vector3.new(1, 1, 1)
1120
Part74.CFrame = CFrame.new(1436.73303, 48.074337, -1310.87183, 0, 0.866025388, -0.500000238, 0, 0.500000238, 0.866025388, 1, 0, 0)
1121
Part74.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1122
Part74.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1123
Part74.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1124
Part74.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1125
Part74.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1126
Part74.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1127
Part74.Position = Vector3.new(1436.73303, 48.074337, -1310.87183)
1128
Part74.Orientation = Vector3.new(-60, -90, 0)
1129
CylinderMesh75.Parent = Part74
1130
CylinderMesh75.Scale = Vector3.new(0.101738736, 0.127173409, 0.0339129157)
1131
CylinderMesh75.Scale = Vector3.new(0.101738736, 0.127173409, 0.0339129157)
1132
Part76.Parent = Tool0
1133
Part76.Material = Enum.Material.SmoothPlastic
1134
Part76.BrickColor = BrickColor.new("Brick yellow")
1135
Part76.Transparency = 1
1136
Part76.Rotation = Vector3.new(-0.870000005, -12.9499998, -157.62999)
1137
Part76.Anchored = true
1138
Part76.CanCollide = false
1139
Part76.FormFactor = Enum.FormFactor.Custom
1140
Part76.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1141
Part76.CFrame = CFrame.new(1435.48877, 48.7422256, -1311.07788, -0.901220024, 0.370889217, -0.224151224, -0.383668005, -0.923353195, 0.0147557557, -0.201498002, 0.0992978215, 0.97444272)
1142
Part76.BottomSurface = Enum.SurfaceType.Smooth
1143
Part76.TopSurface = Enum.SurfaceType.Smooth
1144
Part76.Color = Color3.new(0.843137, 0.772549, 0.603922)
1145
Part76.Position = Vector3.new(1435.48877, 48.7422256, -1311.07788)
1146
Part76.Orientation = Vector3.new(-0.849999964, -12.9499998, -157.440002)
1147
Part76.Color = Color3.new(0.843137, 0.772549, 0.603922)
1148
CylinderMesh77.Parent = Part76
1149
CylinderMesh77.Scale = Vector3.new(0.291783929, 0.525211275, 0.170207277)
1150
CylinderMesh77.Scale = Vector3.new(0.291783929, 0.525211275, 0.170207277)
1151
Part78.Parent = Tool0
1152
Part78.Material = Enum.Material.SmoothPlastic
1153
Part78.BrickColor = BrickColor.new("Dark stone grey")
1154
Part78.Transparency = 1
1155
Part78.Rotation = Vector3.new(180, 0, 90)
1156
Part78.Anchored = true
1157
Part78.CanCollide = false
1158
Part78.FormFactor = Enum.FormFactor.Custom
1159
Part78.Size = Vector3.new(0.228767872, 0.228767842, 0.228767857)
1160
Part78.CFrame = CFrame.new(1434.98645, 48.9189987, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
1161
Part78.BottomSurface = Enum.SurfaceType.Smooth
1162
Part78.TopSurface = Enum.SurfaceType.Smooth
1163
Part78.Color = Color3.new(0.388235, 0.372549, 0.384314)
1164
Part78.Position = Vector3.new(1434.98645, 48.9189987, -1310.87183)
1165
Part78.Orientation = Vector3.new(0, -180, -90)
1166
Part78.Color = Color3.new(0.388235, 0.372549, 0.384314)
1167
CylinderMesh79.Parent = Part78
1168
CylinderMesh79.Scale = Vector3.new(1.55653632, 0.185301825, 1.85301888)
1169
CylinderMesh79.Scale = Vector3.new(1.55653632, 0.185301825, 1.85301888)
1170
Part80.Parent = Tool0
1171
Part80.Material = Enum.Material.SmoothPlastic
1172
Part80.BrickColor = BrickColor.new("Brick yellow")
1173
Part80.Transparency = 1
1174
Part80.Rotation = Vector3.new(43.0599976, 7.44000006, -165.119995)
1175
Part80.Anchored = true
1176
Part80.CanCollide = false
1177
Part80.FormFactor = Enum.FormFactor.Custom
1178
Part80.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1179
Part80.CFrame = CFrame.new(1435.44849, 48.841629, -1311.05676, -0.958352566, 0.25458324, 0.129413933, -0.272977144, -0.683412135, -0.677075565, -0.0839290544, -0.684204161, 0.724445105)
1180
Part80.BottomSurface = Enum.SurfaceType.Smooth
1181
Part80.TopSurface = Enum.SurfaceType.Smooth
1182
Part80.Color = Color3.new(0.843137, 0.772549, 0.603922)
1183
Part80.Position = Vector3.new(1435.44849, 48.841629, -1311.05676)
1184
Part80.Orientation = Vector3.new(42.6199989, 10.1300001, -158.229996)
1185
Part80.Color = Color3.new(0.843137, 0.772549, 0.603922)
1186
CylinderMesh81.Parent = Part80
1187
CylinderMesh81.Scale = Vector3.new(0.291783929, 0.316099197, 0.170207277)
1188
CylinderMesh81.Scale = Vector3.new(0.291783929, 0.316099197, 0.170207277)
1189
Part82.Parent = Tool0
1190
Part82.Material = Enum.Material.SmoothPlastic
1191
Part82.BrickColor = BrickColor.new("Dark stone grey")
1192
Part82.Transparency = 1
1193
Part82.Rotation = Vector3.new(-90, 75, 90)
1194
Part82.Anchored = true
1195
Part82.CanCollide = false
1196
Part82.FormFactor = Enum.FormFactor.Custom
1197
Part82.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
1198
Part82.CFrame = CFrame.new(1435.99597, 48.211853, -1310.87183, 0, -0.258818984, 0.965925872, 0, 0.965925872, 0.258818984, -1, 0, 0)
1199
Part82.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1200
Part82.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1201
Part82.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1202
Part82.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1203
Part82.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1204
Part82.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1205
Part82.Color = Color3.new(0.388235, 0.372549, 0.384314)
1206
Part82.Position = Vector3.new(1435.99597, 48.211853, -1310.87183)
1207
Part82.Orientation = Vector3.new(-15, 90, 0)
1208
Part82.Color = Color3.new(0.388235, 0.372549, 0.384314)
1209
CylinderMesh83.Parent = Part82
1210
CylinderMesh83.Scale = Vector3.new(0.360227078, 0.180113435, 0.390246034)
1211
CylinderMesh83.Scale = Vector3.new(0.360227078, 0.180113435, 0.390246034)
1212
Part84.Parent = Tool0
1213
Part84.Material = Enum.Material.SmoothPlastic
1214
Part84.BrickColor = BrickColor.new("Dark stone grey")
1215
Part84.Transparency = 1
1216
Part84.Rotation = Vector3.new(180, 0, 90)
1217
Part84.Anchored = true
1218
Part84.CanCollide = false
1219
Part84.FormFactor = Enum.FormFactor.Custom
1220
Part84.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002)
1221
Part84.CFrame = CFrame.new(1433.5498, 48.9232292, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
1222
Part84.BottomSurface = Enum.SurfaceType.Smooth
1223
Part84.TopSurface = Enum.SurfaceType.Smooth
1224
Part84.Color = Color3.new(0.388235, 0.372549, 0.384314)
1225
Part84.Position = Vector3.new(1433.5498, 48.9232292, -1310.87183)
1226
Part84.Orientation = Vector3.new(0, -180, -90)
1227
Part84.Color = Color3.new(0.388235, 0.372549, 0.384314)
1228
CylinderMesh85.Parent = Part84
1229
CylinderMesh85.Scale = Vector3.new(0.031400837, 0.124556653, 0.1674712)
1230
CylinderMesh85.Scale = Vector3.new(0.031400837, 0.124556653, 0.1674712)
1231
Part86.Parent = Tool0
1232
Part86.Material = Enum.Material.SmoothPlastic
1233
Part86.BrickColor = BrickColor.new("Dark stone grey")
1234
Part86.Transparency = 1
1235
Part86.Rotation = Vector3.new(90, 90, 0)
1236
Part86.Anchored = true
1237
Part86.CanCollide = false
1238
Part86.FormFactor = Enum.FormFactor.Custom
1239
Part86.Size = Vector3.new(0.430467099, 0.430467129, 0.430467188)
1240
Part86.CFrame = CFrame.new(1434.89648, 48.9697227, -1310.87622, 0, 0, 1, 1, 0, 0, 0, 1, 0)
1241
Part86.BottomSurface = Enum.SurfaceType.Smooth
1242
Part86.TopSurface = Enum.SurfaceType.Smooth
1243
Part86.Color = Color3.new(0.388235, 0.372549, 0.384314)
1244
Part86.Position = Vector3.new(1434.89648, 48.9697227, -1310.87622)
1245
Part86.Orientation = Vector3.new(0, 90, 90)
1246
Part86.Color = Color3.new(0.388235, 0.372549, 0.384314)
1247
CylinderMesh87.Parent = Part86
1248
CylinderMesh87.Scale = Vector3.new(0.196954086, 1.00446594, 0.236344948)
1249
CylinderMesh87.Scale = Vector3.new(0.196954086, 1.00446594, 0.236344948)
1250
Decal88.Parent = Part86
1251
Decal88.Texture = "http://www.roblox.com/asset/?id=78474663"
1252
Decal88.Face = Enum.NormalId.Bottom
1253
Decal89.Parent = Part86
1254
Decal89.Texture = "http://www.roblox.com/asset/?id=78474663"
1255
Decal89.Face = Enum.NormalId.Top
1256
Part90.Parent = Tool0
1257
Part90.Material = Enum.Material.SmoothPlastic
1258
Part90.BrickColor = BrickColor.new("Dark stone grey")
1259
Part90.Transparency = 1
1260
Part90.Rotation = Vector3.new(-90, 60, 90)
1261
Part90.Anchored = true
1262
Part90.CanCollide = false
1263
Part90.FormFactor = Enum.FormFactor.Custom
1264
Part90.Size = Vector3.new(1, 1, 1)
1265
Part90.CFrame = CFrame.new(1436.48157, 48.7061806, -1310.87183, 0, -0.499998987, 0.866025984, 0, 0.866025984, 0.499998987, -1, 0, 0)
1266
Part90.BottomSurface = Enum.SurfaceType.Smooth
1267
Part90.TopSurface = Enum.SurfaceType.Smooth
1268
Part90.Color = Color3.new(0.388235, 0.372549, 0.384314)
1269
Part90.Position = Vector3.new(1436.48157, 48.7061806, -1310.87183)
1270
Part90.Orientation = Vector3.new(-30, 90, 0)
1271
Part90.Color = Color3.new(0.388235, 0.372549, 0.384314)
1272
SpecialMesh91.Parent = Part90
1273
SpecialMesh91.Scale = Vector3.new(0.0339129046, 0.033912912, 0.356085896)
1274
SpecialMesh91.MeshType = Enum.MeshType.Brick
1275
SpecialMesh91.Scale = Vector3.new(0.0339129046, 0.033912912, 0.356085896)
1276
Part92.Parent = Tool0
1277
Part92.Material = Enum.Material.SmoothPlastic
1278
Part92.BrickColor = BrickColor.new("Black")
1279
Part92.Transparency = 1
1280
Part92.Rotation = Vector3.new(-90, 0, 90)
1281
Part92.Anchored = true
1282
Part92.CanCollide = false
1283
Part92.FormFactor = Enum.FormFactor.Custom
1284
Part92.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
1285
Part92.CFrame = CFrame.new(1434.32935, 48.9232292, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0)
1286
Part92.BottomSurface = Enum.SurfaceType.Smooth
1287
Part92.TopSurface = Enum.SurfaceType.Smooth
1288
Part92.Color = Color3.new(0.105882, 0.164706, 0.207843)
1289
Part92.Position = Vector3.new(1434.32935, 48.9232292, -1310.87183)
1290
Part92.Orientation = Vector3.new(-90, 90, 0)
1291
Part92.Color = Color3.new(0.105882, 0.164706, 0.207843)
1292
SpecialMesh93.Parent = Part92
1293
SpecialMesh93.Scale = Vector3.new(0.797663748, 0.701944053, 0.175486133)
1294
SpecialMesh93.MeshType = Enum.MeshType.Brick
1295
SpecialMesh93.Scale = Vector3.new(0.797663748, 0.701944053, 0.175486133)
1296
Part94.Parent = Tool0
1297
Part94.Material = Enum.Material.SmoothPlastic
1298
Part94.BrickColor = BrickColor.new("Black")
1299
Part94.Transparency = 1
1300
Part94.Rotation = Vector3.new(180, 0, 90)
1301
Part94.Anchored = true
1302
Part94.CanCollide = false
1303
Part94.FormFactor = Enum.FormFactor.Custom
1304
Part94.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
1305
Part94.CFrame = CFrame.new(1434.4989, 48.9062729, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
1306
Part94.BottomSurface = Enum.SurfaceType.Smooth
1307
Part94.TopSurface = Enum.SurfaceType.Smooth
1308
Part94.Color = Color3.new(0.105882, 0.164706, 0.207843)
1309
Part94.Position = Vector3.new(1434.4989, 48.9062729, -1310.87183)
1310
Part94.Orientation = Vector3.new(0, -180, -90)
1311
Part94.Color = Color3.new(0.105882, 0.164706, 0.207843)
1312
CylinderMesh95.Parent = Part94
1313
CylinderMesh95.Scale = Vector3.new(1.53096449, 0.180113405, 1.50094533)
1314
CylinderMesh95.Scale = Vector3.new(1.53096449, 0.180113405, 1.50094533)
1315
Part96.Parent = Tool0
1316
Part96.Material = Enum.Material.SmoothPlastic
1317
Part96.BrickColor = BrickColor.new("Dark stone grey")
1318
Part96.Transparency = 1
1319
Part96.Rotation = Vector3.new(0, 90, 0)
1320
Part96.Anchored = true
1321
Part96.CanCollide = false
1322
Part96.FormFactor = Enum.FormFactor.Custom
1323
Part96.Size = Vector3.new(1, 1, 1)
1324
Part96.CFrame = CFrame.new(1436.85803, 48.7793694, -1310.87183, 0, 0, 1, 0, 1, -0, -1, 0, 0)
1325
Part96.BottomSurface = Enum.SurfaceType.Smooth
1326
Part96.TopSurface = Enum.SurfaceType.Smooth
1327
Part96.Color = Color3.new(0.388235, 0.372549, 0.384314)
1328
Part96.Position = Vector3.new(1436.85803, 48.7793694, -1310.87183)
1329
Part96.Orientation = Vector3.new(0, 90, 0)
1330
Part96.Color = Color3.new(0.388235, 0.372549, 0.384314)
1331
SpecialMesh97.Parent = Part96
1332
SpecialMesh97.Scale = Vector3.new(0.0339129046, 0.050869368, 0.466302693)
1333
SpecialMesh97.MeshType = Enum.MeshType.Brick
1334
SpecialMesh97.Scale = Vector3.new(0.0339129046, 0.050869368, 0.466302693)
1335
Part98.Parent = Tool0
1336
Part98.Material = Enum.Material.SmoothPlastic
1337
Part98.BrickColor = BrickColor.new("Dark stone grey")
1338
Part98.Transparency = 1
1339
Part98.Rotation = Vector3.new(-90, 75, 90)
1340
Part98.Anchored = true
1341
Part98.CanCollide = false
1342
Part98.FormFactor = Enum.FormFactor.Custom
1343
Part98.Size = Vector3.new(1, 1, 1)
1344
Part98.CFrame = CFrame.new(1437.1134, 48.5151291, -1310.87183, 0, -0.258818984, 0.965925872, 0, 0.965925872, 0.258818984, -1, 0, 0)
1345
Part98.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1346
Part98.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1347
Part98.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1348
Part98.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1349
Part98.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1350
Part98.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1351
Part98.Color = Color3.new(0.388235, 0.372549, 0.384314)
1352
Part98.Position = Vector3.new(1437.1134, 48.5151291, -1310.87183)
1353
Part98.Orientation = Vector3.new(-15, 90, 0)
1354
Part98.Color = Color3.new(0.388235, 0.372549, 0.384314)
1355
SpecialMesh99.Parent = Part98
1356
SpecialMesh99.Scale = Vector3.new(0.0339129046, 0.584997475, 0.127173796)
1357
SpecialMesh99.MeshType = Enum.MeshType.Brick
1358
SpecialMesh99.Scale = Vector3.new(0.0339129046, 0.584997475, 0.127173796)
1359
Part100.Parent = Tool0
1360
Part100.Material = Enum.Material.SmoothPlastic
1361
Part100.BrickColor = BrickColor.new("Medium green")
1362
Part100.Reflectance = 0.40000000596046
1363
Part100.Transparency = 1
1364
Part100.Rotation = Vector3.new(-90, 30, -90)
1365
Part100.Anchored = true
1366
Part100.CanCollide = false
1367
Part100.FormFactor = Enum.FormFactor.Custom
1368
Part100.Size = Vector3.new(1, 1, 1)
1369
Part100.CFrame = CFrame.new(1436.54248, 48.8766403, -1310.96448, 0, 0.866027117, 0.499997079, 0, -0.49999705, 0.866027176, 1, 0, 0)
1370
Part100.BottomSurface = Enum.SurfaceType.Smooth
1371
Part100.TopSurface = Enum.SurfaceType.Smooth
1372
Part100.Color = Color3.new(0.631373, 0.768628, 0.54902)
1373
Part100.Position = Vector3.new(1436.54248, 48.8766403, -1310.96448)
1374
Part100.Orientation = Vector3.new(-60, 90, 180)
1375
Part100.Color = Color3.new(0.631373, 0.768628, 0.54902)
1376
CylinderMesh101.Parent = Part100
1377
CylinderMesh101.Scale = Vector3.new(0.101738736, 0.194999218, 0.0339129157)
1378
CylinderMesh101.Scale = Vector3.new(0.101738736, 0.194999218, 0.0339129157)
1379
Part102.Parent = Tool0
1380
Part102.Material = Enum.Material.SmoothPlastic
1381
Part102.BrickColor = BrickColor.new("Dark stone grey")
1382
Part102.Transparency = 1
1383
Part102.Rotation = Vector3.new(-90, -90, 0)
1384
Part102.Anchored = true
1385
Part102.CanCollide = false
1386
Part102.FormFactor = Enum.FormFactor.Custom
1387
Part102.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
1388
Part102.CFrame = CFrame.new(1435.24072, 48.6010742, -1310.87183, 0, 0, -1, 1, 0, 0, 0, -1, 0)
1389
Part102.BottomSurface = Enum.SurfaceType.Smooth
1390
Part102.TopSurface = Enum.SurfaceType.Smooth
1391
Part102.Color = Color3.new(0.388235, 0.372549, 0.384314)
1392
Part102.Position = Vector3.new(1435.24072, 48.6010742, -1310.87183)
1393
Part102.Orientation = Vector3.new(0, -90, 90)
1394
Part102.Color = Color3.new(0.388235, 0.372549, 0.384314)
1395
CylinderMesh103.Parent = Part102
1396
CylinderMesh103.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103)
1397
CylinderMesh103.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103)
1398
Decal104.Parent = Part102
1399
Decal104.Texture = "http://www.roblox.com/asset/?id=78474663"
1400
Decal104.Face = Enum.NormalId.Bottom
1401
Part105.Parent = Tool0
1402
Part105.Material = Enum.Material.SmoothPlastic
1403
Part105.BrickColor = BrickColor.new("Black")
1404
Part105.Transparency = 1
1405
Part105.Rotation = Vector3.new(-150.599991, 32.2399979, -23.1999989)
1406
Part105.Anchored = true
1407
Part105.CanCollide = false
1408
Part105.FormFactor = Enum.FormFactor.Custom
1409
Part105.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1410
Part105.CFrame = CFrame.new(1434.84009, 49.1090317, -1310.6604, 0.777458727, 0.333219469, 0.533406675, 0.102508962, -0.903908193, 0.415261477, 0.620523751, -0.268169731, -0.73690933)
1411
Part105.BottomSurface = Enum.SurfaceType.Smooth
1412
Part105.TopSurface = Enum.SurfaceType.Smooth
1413
Part105.Color = Color3.new(0.105882, 0.164706, 0.207843)
1414
Part105.Position = Vector3.new(1434.84009, 49.1090317, -1310.6604)
1415
Part105.Orientation = Vector3.new(-24.539999, 144.099991, 173.529999)
1416
Part105.Color = Color3.new(0.105882, 0.164706, 0.207843)
1417
CylinderMesh106.Parent = Part105
1418
CylinderMesh106.Scale = Vector3.new(0.170207247, 0.705144346, 0.170207277)
1419
CylinderMesh106.Scale = Vector3.new(0.170207247, 0.705144346, 0.170207277)
1420
Part107.Parent = Tool0
1421
Part107.Material = Enum.Material.SmoothPlastic
1422
Part107.BrickColor = BrickColor.new("Dark stone grey")
1423
Part107.Transparency = 1
1424
Part107.Rotation = Vector3.new(180, 0, 90)
1425
Part107.Anchored = true
1426
Part107.CanCollide = false
1427
Part107.FormFactor = Enum.FormFactor.Custom
1428
Part107.Size = Vector3.new(0.228767872, 0.228767842, 0.228767857)
1429
Part107.CFrame = CFrame.new(1435.56287, 48.897789, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
1430
Part107.BottomSurface = Enum.SurfaceType.Smooth
1431
Part107.TopSurface = Enum.SurfaceType.Smooth
1432
Part107.Color = Color3.new(0.388235, 0.372549, 0.384314)
1433
Part107.Position = Vector3.new(1435.56287, 48.897789, -1310.87183)
1434
Part107.Orientation = Vector3.new(0, -180, -90)
1435
Part107.Color = Color3.new(0.388235, 0.372549, 0.384314)
1436
CylinderMesh108.Parent = Part107
1437
CylinderMesh108.Scale = Vector3.new(2.00126076, 0.185301825, 2.00126052)
1438
CylinderMesh108.Scale = Vector3.new(2.00126076, 0.185301825, 2.00126052)
1439
Part109.Parent = Tool0
1440
Part109.Material = Enum.Material.SmoothPlastic
1441
Part109.BrickColor = BrickColor.new("Black")
1442
Part109.Transparency = 1
1443
Part109.Rotation = Vector3.new(133.479996, 38.0400009, -171.679993)
1444
Part109.Anchored = true
1445
Part109.CanCollide = false
1446
Part109.FormFactor = Enum.FormFactor.Custom
1447
Part109.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1448
Part109.CFrame = CFrame.new(1435.08655, 49.0373726, -1311.1228, -0.779332995, 0.114002213, 0.616152287, -0.342794985, 0.745554209, -0.571524739, -0.524529994, -0.656622052, -0.54195559)
1449
Part109.BottomSurface = Enum.SurfaceType.Smooth
1450
Part109.TopSurface = Enum.SurfaceType.Smooth
1451
Part109.Color = Color3.new(0.105882, 0.164706, 0.207843)
1452
Part109.Position = Vector3.new(1435.08655, 49.0373726, -1311.1228)
1453
Part109.Orientation = Vector3.new(34.8600006, 131.330002, -24.6899986)
1454
Part109.Color = Color3.new(0.105882, 0.164706, 0.207843)
1455
CylinderMesh110.Parent = Part109
1456
CylinderMesh110.Scale = Vector3.new(0.170207247, 0.899666727, 0.170207277)
1457
CylinderMesh110.Scale = Vector3.new(0.170207247, 0.899666727, 0.170207277)
1458
Part111.Parent = Tool0
1459
Part111.Material = Enum.Material.SmoothPlastic
1460
Part111.BrickColor = BrickColor.new("Nougat")
1461
Part111.Transparency = 1
1462
Part111.Rotation = Vector3.new(180, 0, 90)
1463
Part111.Anchored = true
1464
Part111.CanCollide = false
1465
Part111.FormFactor = Enum.FormFactor.Custom
1466
Part111.Size = Vector3.new(0.430467099, 0.430467129, 0.430467188)
1467
Part111.CFrame = CFrame.new(1435.56287, 48.9020348, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
1468
Part111.BottomSurface = Enum.SurfaceType.Smooth
1469
Part111.TopSurface = Enum.SurfaceType.Smooth
1470
Part111.Color = Color3.new(0.8, 0.556863, 0.411765)
1471
Part111.Position = Vector3.new(1435.56287, 48.9020348, -1310.87183)
1472
Part111.Orientation = Vector3.new(0, -180, -90)
1473
Part111.Color = Color3.new(0.8, 0.556863, 0.411765)
1474
CylinderMesh112.Parent = Part111
1475
CylinderMesh112.Scale = Vector3.new(1.0241611, 0.17725873, 1.02416098)
1476
CylinderMesh112.Scale = Vector3.new(1.0241611, 0.17725873, 1.02416098)
1477
Part113.Parent = Tool0
1478
Part113.Material = Enum.Material.SmoothPlastic
1479
Part113.BrickColor = BrickColor.new("Brick yellow")
1480
Part113.Transparency = 1
1481
Part113.Rotation = Vector3.new(-60, 0, 165)
1482
Part113.Anchored = true
1483
Part113.CanCollide = false
1484
Part113.FormFactor = Enum.FormFactor.Custom
1485
Part113.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1486
Part113.CFrame = CFrame.new(1435.49927, 48.6328773, -1311.01025, -0.965924263, -0.258825004, -6.07067022e-07, 0.12940903, -0.482951164, 0.866032064, -0.22415106, 0.836521268, 0.499988496)
1487
Part113.BottomSurface = Enum.SurfaceType.Smooth
1488
Part113.TopSurface = Enum.SurfaceType.Smooth
1489
Part113.Color = Color3.new(0.843137, 0.772549, 0.603922)
1490
Part113.Position = Vector3.new(1435.49927, 48.6328773, -1311.01025)
1491
Part113.Orientation = Vector3.new(-60, 0, 165)
1492
Part113.Color = Color3.new(0.843137, 0.772549, 0.603922)
1493
CylinderMesh114.Parent = Part113
1494
CylinderMesh114.Scale = Vector3.new(0.291783929, 0.486306548, 0.170207277)
1495
CylinderMesh114.Scale = Vector3.new(0.291783929, 0.486306548, 0.170207277)
1496
Part115.Parent = Tool0
1497
Part115.Material = Enum.Material.SmoothPlastic
1498
Part115.BrickColor = BrickColor.new("Dark stone grey")
1499
Part115.Transparency = 1
1500
Part115.Rotation = Vector3.new(90, 90, 0)
1501
Part115.Anchored = true
1502
Part115.CanCollide = false
1503
Part115.FormFactor = Enum.FormFactor.Custom
1504
Part115.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002)
1505
Part115.CFrame = CFrame.new(1435.43909, 48.8383217, -1310.84216, 0, 0, 1, 1, 0, 0, 0, 1, 0)
1506
Part115.BottomSurface = Enum.SurfaceType.Smooth
1507
Part115.TopSurface = Enum.SurfaceType.Smooth
1508
Part115.Color = Color3.new(0.388235, 0.372549, 0.384314)
1509
Part115.Position = Vector3.new(1435.43909, 48.8383217, -1310.84216)
1510
Part115.Orientation = Vector3.new(0, 90, 90)
1511
Part115.Color = Color3.new(0.388235, 0.372549, 0.384314)
1512
CylinderMesh116.Parent = Part115
1513
CylinderMesh116.Scale = Vector3.new(0.16747117, 0.533814311, 0.167471215)
1514
CylinderMesh116.Scale = Vector3.new(0.16747117, 0.533814311, 0.167471215)
1515
Decal117.Parent = Part115
1516
Decal117.Texture = "http://www.roblox.com/asset/?id=78474663"
1517
Decal117.Face = Enum.NormalId.Top
1518
Part118.Parent = Tool0
1519
Part118.Material = Enum.Material.SmoothPlastic
1520
Part118.BrickColor = BrickColor.new("Dark stone grey")
1521
Part118.Transparency = 1
1522
Part118.Rotation = Vector3.new(-90, -90, 0)
1523
Part118.Anchored = true
1524
Part118.CanCollide = false
1525
Part118.FormFactor = Enum.FormFactor.Custom
1526
Part118.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
1527
Part118.CFrame = CFrame.new(1435.35938, 48.6010742, -1310.87183, 0, 0, -1, 1, 0, 0, 0, -1, 0)
1528
Part118.BottomSurface = Enum.SurfaceType.Smooth
1529
Part118.TopSurface = Enum.SurfaceType.Smooth
1530
Part118.Color = Color3.new(0.388235, 0.372549, 0.384314)
1531
Part118.Position = Vector3.new(1435.35938, 48.6010742, -1310.87183)
1532
Part118.Orientation = Vector3.new(0, -90, 90)
1533
Part118.Color = Color3.new(0.388235, 0.372549, 0.384314)
1534
CylinderMesh119.Parent = Part118
1535
CylinderMesh119.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103)
1536
CylinderMesh119.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103)
1537
Decal120.Parent = Part118
1538
Decal120.Texture = "http://www.roblox.com/asset/?id=78474663"
1539
Decal120.Face = Enum.NormalId.Bottom
1540
Part121.Parent = Tool0
1541
Part121.Material = Enum.Material.SmoothPlastic
1542
Part121.BrickColor = BrickColor.new("Dark stone grey")
1543
Part121.Transparency = 1
1544
Part121.Rotation = Vector3.new(50.7299995, 45.0399971, -40.1399994)
1545
Part121.Anchored = true
1546
Part121.CanCollide = false
1547
Part121.FormFactor = Enum.FormFactor.Custom
1548
Part121.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975)
1549
Part121.CFrame = CFrame.new(1435.49548, 49.0076942, -1310.61987, 0.540129244, 0.455500901, 0.707657695, 0.0107550053, 0.837061286, -0.547003508, -0.841513395, 0.303063482, 0.447222352)
1550
Part121.BottomSurface = Enum.SurfaceType.Smooth
1551
Part121.TopSurface = Enum.SurfaceType.Smooth
1552
Part121.Color = Color3.new(0.388235, 0.372549, 0.384314)
1553
Part121.Position = Vector3.new(1435.49548, 49.0076942, -1310.61987)
1554
Part121.Orientation = Vector3.new(33.1599998, 57.7099991, 0.74000001)
1555
Part121.Color = Color3.new(0.388235, 0.372549, 0.384314)
1556
CylinderMesh122.Parent = Part121
1557
CylinderMesh122.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
1558
CylinderMesh122.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
1559
Part123.Parent = Tool0
1560
Part123.Material = Enum.Material.SmoothPlastic
1561
Part123.BrickColor = BrickColor.new("Dark stone grey")
1562
Part123.Transparency = 1
1563
Part123.Rotation = Vector3.new(90, 90, 0)
1564
Part123.Anchored = true
1565
Part123.CanCollide = false
1566
Part123.FormFactor = Enum.FormFactor.Custom
1567
Part123.Size = Vector3.new(0.430467099, 0.430467129, 0.430467188)
1568
Part123.CFrame = CFrame.new(1435.07629, 48.9167862, -1310.87622, 0, 0, 1, 1, 0, 0, 0, 1, 0)
1569
Part123.BottomSurface = Enum.SurfaceType.Smooth
1570
Part123.TopSurface = Enum.SurfaceType.Smooth
1571
Part123.Color = Color3.new(0.388235, 0.372549, 0.384314)
1572
Part123.Position = Vector3.new(1435.07629, 48.9167862, -1310.87622)
1573
Part123.Orientation = Vector3.new(0, 90, 90)
1574
Part123.Color = Color3.new(0.388235, 0.372549, 0.384314)
1575
CylinderMesh124.Parent = Part123
1576
CylinderMesh124.Scale = Vector3.new(0.196954086, 1.00446594, 0.236344948)
1577
CylinderMesh124.Scale = Vector3.new(0.196954086, 1.00446594, 0.236344948)
1578
Decal125.Parent = Part123
1579
Decal125.Texture = "http://www.roblox.com/asset/?id=78474663"
1580
Decal125.Face = Enum.NormalId.Bottom
1581
Decal126.Parent = Part123
1582
Decal126.Texture = "http://www.roblox.com/asset/?id=78474663"
1583
Decal126.Face = Enum.NormalId.Top
1584
Part127.Parent = Tool0
1585
Part127.Material = Enum.Material.SmoothPlastic
1586
Part127.BrickColor = BrickColor.new("Dark stone grey")
1587
Part127.Transparency = 1
1588
Part127.Rotation = Vector3.new(0, 90, 0)
1589
Part127.Anchored = true
1590
Part127.CanCollide = false
1591
Part127.FormFactor = Enum.FormFactor.Custom
1592
Part127.Size = Vector3.new(1, 1, 1)
1593
Part127.CFrame = CFrame.new(1436.00879, 48.9263649, -1310.87183, 0, 0, 1, 0, 1, -0, -1, 0, 0)
1594
Part127.BottomSurface = Enum.SurfaceType.Smooth
1595
Part127.TopSurface = Enum.SurfaceType.Smooth
1596
Part127.Color = Color3.new(0.388235, 0.372549, 0.384314)
1597
Part127.Position = Vector3.new(1436.00879, 48.9263649, -1310.87183)
1598
Part127.Orientation = Vector3.new(0, 90, 0)
1599
Part127.Color = Color3.new(0.388235, 0.372549, 0.384314)
1600
SpecialMesh128.Parent = Part127
1601
SpecialMesh128.Scale = Vector3.new(0.0339129046, 0.0508693606, 0.194999248)
1602
SpecialMesh128.MeshType = Enum.MeshType.Brick
1603
SpecialMesh128.Scale = Vector3.new(0.0339129046, 0.0508693606, 0.194999248)
1604
Part129.Parent = Tool0
1605
Part129.Material = Enum.Material.SmoothPlastic
1606
Part129.BrickColor = BrickColor.new("Nougat")
1607
Part129.Transparency = 1
1608
Part129.Rotation = Vector3.new(180, 0, 90)
1609
Part129.Anchored = true
1610
Part129.CanCollide = false
1611
Part129.FormFactor = Enum.FormFactor.Custom
1612
Part129.Size = Vector3.new(1, 1, 1)
1613
Part129.CFrame = CFrame.new(1435.26624, 48.9020348, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
1614
Part129.BottomSurface = Enum.SurfaceType.Smooth
1615
Part129.TopSurface = Enum.SurfaceType.Smooth
1616
Part129.Color = Color3.new(0.8, 0.556863, 0.411765)
1617
Part129.Position = Vector3.new(1435.26624, 48.9020348, -1310.87183)
1618
Part129.Orientation = Vector3.new(0, -180, -90)
1619
Part129.Color = Color3.new(0.8, 0.556863, 0.411765)
1620
CylinderMesh130.Parent = Part129
1621
CylinderMesh130.Scale = Vector3.new(0.440867692, 0.194999263, 0.440867722)
1622
CylinderMesh130.Scale = Vector3.new(0.440867692, 0.194999263, 0.440867722)
1623
Part131.Parent = Tool0
1624
Part131.Material = Enum.Material.SmoothPlastic
1625
Part131.BrickColor = BrickColor.new("Dark stone grey")
1626
Part131.Transparency = 1
1627
Part131.Rotation = Vector3.new(-90, -90, 0)
1628
Part131.Anchored = true
1629
Part131.CanCollide = false
1630
Part131.FormFactor = Enum.FormFactor.Custom
1631
Part131.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
1632
Part131.CFrame = CFrame.new(1435.47815, 48.6010742, -1310.87183, 0, 0, -1, 1, 0, 0, 0, -1, 0)
1633
Part131.BottomSurface = Enum.SurfaceType.Smooth
1634
Part131.TopSurface = Enum.SurfaceType.Smooth
1635
Part131.Color = Color3.new(0.388235, 0.372549, 0.384314)
1636
Part131.Position = Vector3.new(1435.47815, 48.6010742, -1310.87183)
1637
Part131.Orientation = Vector3.new(0, -90, 90)
1638
Part131.Color = Color3.new(0.388235, 0.372549, 0.384314)
1639
CylinderMesh132.Parent = Part131
1640
CylinderMesh132.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103)
1641
CylinderMesh132.Scale = Vector3.new(0.175486118, 0.350972205, 0.175486103)
1642
Decal133.Parent = Part131
1643
Decal133.Texture = "http://www.roblox.com/asset/?id=78474663"
1644
Decal133.Face = Enum.NormalId.Bottom
1645
Part134.Parent = Tool0
1646
Part134.Material = Enum.Material.SmoothPlastic
1647
Part134.Transparency = 1
1648
Part134.Rotation = Vector3.new(-90, 60, 90)
1649
Part134.Anchored = true
1650
Part134.CanCollide = false
1651
Part134.FormFactor = Enum.FormFactor.Custom
1652
Part134.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1653
Part134.CFrame = CFrame.new(1436.03064, 48.1612701, -1310.87183, 0, -0.499998987, 0.866025984, 0, 0.866025984, 0.499998987, -1, 0, 0)
1654
Part134.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1655
Part134.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1656
Part134.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1657
Part134.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1658
Part134.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1659
Part134.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1660
Part134.Position = Vector3.new(1436.03064, 48.1612701, -1310.87183)
1661
Part134.Orientation = Vector3.new(-30, 90, 0)
1662
CylinderMesh135.Parent = Part134
1663
CylinderMesh135.Scale = Vector3.new(0.291783929, 0.364729911, 0.170207277)
1664
CylinderMesh135.Scale = Vector3.new(0.291783929, 0.364729911, 0.170207277)
1665
Part136.Parent = Tool0
1666
Part136.Material = Enum.Material.SmoothPlastic
1667
Part136.Transparency = 1
1668
Part136.Rotation = Vector3.new(0, 90, 0)
1669
Part136.Anchored = true
1670
Part136.CanCollide = false
1671
Part136.FormFactor = Enum.FormFactor.Custom
1672
Part136.Size = Vector3.new(0.809999943, 0.810000002, 0.810000002)
1673
Part136.CFrame = CFrame.new(1435.36523, 48.5261421, -1310.88025, 0, 0, 1, 0, 1, -0, -1, 0, 0)
1674
Part136.BottomSurface = Enum.SurfaceType.Smooth
1675
Part136.TopSurface = Enum.SurfaceType.Smooth
1676
Part136.Position = Vector3.new(1435.36523, 48.5261421, -1310.88025)
1677
Part136.Orientation = Vector3.new(0, 90, 0)
1678
CylinderMesh137.Parent = Part136
1679
CylinderMesh137.Scale = Vector3.new(0.219805866, 0.0314008482, 0.136070341)
1680
CylinderMesh137.Scale = Vector3.new(0.219805866, 0.0314008482, 0.136070341)
1681
Part138.Parent = Tool0
1682
Part138.Material = Enum.Material.SmoothPlastic
1683
Part138.BrickColor = BrickColor.new("Dark stone grey")
1684
Part138.Transparency = 1
1685
Part138.Rotation = Vector3.new(90, 45, -90)
1686
Part138.Anchored = true
1687
Part138.CanCollide = false
1688
Part138.FormFactor = Enum.FormFactor.Custom
1689
Part138.Size = Vector3.new(1, 1, 1)
1690
Part138.CFrame = CFrame.new(1436.54016, 48.4395027, -1310.87183, 0, 0.707106829, 0.707106829, 0, 0.707106829, -0.707106829, -1, 0, 0)
1691
Part138.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1692
Part138.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1693
Part138.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1694
Part138.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1695
Part138.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1696
Part138.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1697
Part138.Color = Color3.new(0.388235, 0.372549, 0.384314)
1698
Part138.Position = Vector3.new(1436.54016, 48.4395027, -1310.87183)
1699
Part138.Orientation = Vector3.new(45, 90, 0)
1700
Part138.Color = Color3.new(0.388235, 0.372549, 0.384314)
1701
SpecialMesh139.Parent = Part138
1702
SpecialMesh139.Scale = Vector3.new(0.0339129046, 0.033912912, 0.576519549)
1703
SpecialMesh139.MeshType = Enum.MeshType.Brick
1704
SpecialMesh139.Scale = Vector3.new(0.0339129046, 0.033912912, 0.576519549)
1705
Part140.Parent = Tool0
1706
Part140.Material = Enum.Material.SmoothPlastic
1707
Part140.BrickColor = BrickColor.new("Dark stone grey")
1708
Part140.Transparency = 1
1709
Part140.Rotation = Vector3.new(0, 90, 0)
1710
Part140.Anchored = true
1711
Part140.CanCollide = false
1712
Part140.FormFactor = Enum.FormFactor.Custom
1713
Part140.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975)
1714
Part140.CFrame = CFrame.new(1436.87463, 48.5038033, -1310.87622, 0, 0, 1, 0, 1, -0, -1, 0, 0)
1715
Part140.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1716
Part140.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1717
Part140.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1718
Part140.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1719
Part140.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1720
Part140.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1721
Part140.Color = Color3.new(0.388235, 0.372549, 0.384314)
1722
Part140.Position = Vector3.new(1436.87463, 48.5038033, -1310.87622)
1723
Part140.Orientation = Vector3.new(0, 90, 0)
1724
Part140.Color = Color3.new(0.388235, 0.372549, 0.384314)
1725
SpecialMesh141.Parent = Part140
1726
SpecialMesh141.Scale = Vector3.new(0.164111391, 0.555652738, 0.237768203)
1727
SpecialMesh141.MeshType = Enum.MeshType.Brick
1728
SpecialMesh141.Scale = Vector3.new(0.164111391, 0.555652738, 0.237768203)
1729
Part142.Parent = Tool0
1730
Part142.Material = Enum.Material.SmoothPlastic
1731
Part142.BrickColor = BrickColor.new("Lime green")
1732
Part142.Reflectance = 0.40000000596046
1733
Part142.Transparency = 1
1734
Part142.Rotation = Vector3.new(180, 0, 90)
1735
Part142.Anchored = true
1736
Part142.CanCollide = false
1737
Part142.FormFactor = Enum.FormFactor.Custom
1738
Part142.Size = Vector3.new(0.228912294, 0.534128368, 0.423911244)
1739
Part142.CFrame = CFrame.new(1433.87573, 48.923233, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
1740
Part142.BottomSurface = Enum.SurfaceType.Smooth
1741
Part142.TopSurface = Enum.SurfaceType.Smooth
1742
Part142.Color = Color3.new(0, 1, 0)
1743
Part142.Position = Vector3.new(1433.87573, 48.923233, -1310.87183)
1744
Part142.Orientation = Vector3.new(0, -180, -90)
1745
Part142.Color = Color3.new(0, 1, 0)
1746
CylinderMesh143.Parent = Part142
1747
Part144.Parent = Tool0
1748
Part144.Material = Enum.Material.SmoothPlastic
1749
Part144.Transparency = 1
1750
Part144.Rotation = Vector3.new(-90, 0, 90)
1751
Part144.Anchored = true
1752
Part144.CanCollide = false
1753
Part144.FormFactor = Enum.FormFactor.Custom
1754
Part144.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
1755
Part144.CFrame = CFrame.new(1436.42542, 48.0573769, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0)
1756
Part144.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1757
Part144.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1758
Part144.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1759
Part144.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1760
Part144.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1761
Part144.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1762
Part144.Position = Vector3.new(1436.42542, 48.0573769, -1310.87183)
1763
Part144.Orientation = Vector3.new(-90, 90, 0)
1764
CylinderMesh145.Parent = Part144
1765
CylinderMesh145.Scale = Vector3.new(0.360227078, 2.0112679, 0.180113524)
1766
CylinderMesh145.Scale = Vector3.new(0.360227078, 2.0112679, 0.180113524)
1767
Part146.Parent = Tool0
1768
Part146.Material = Enum.Material.SmoothPlastic
1769
Part146.BrickColor = BrickColor.new("Dark stone grey")
1770
Part146.Transparency = 1
1771
Part146.Rotation = Vector3.new(0, 90, 0)
1772
Part146.Anchored = true
1773
Part146.CanCollide = false
1774
Part146.FormFactor = Enum.FormFactor.Custom
1775
Part146.Size = Vector3.new(1, 1, 1)
1776
Part146.CFrame = CFrame.new(1436.98523, 48.2367706, -1310.87183, 0, 0, 1, 0, 1, -0, -1, 0, 0)
1777
Part146.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1778
Part146.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1779
Part146.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1780
Part146.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1781
Part146.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1782
Part146.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1783
Part146.Color = Color3.new(0.388235, 0.372549, 0.384314)
1784
Part146.Position = Vector3.new(1436.98523, 48.2367706, -1310.87183)
1785
Part146.Orientation = Vector3.new(0, 90, 0)
1786
Part146.Color = Color3.new(0.388235, 0.372549, 0.384314)
1787
SpecialMesh147.Parent = Part146
1788
SpecialMesh147.Scale = Vector3.new(0.0339129046, 0.033912912, 0.517172039)
1789
SpecialMesh147.MeshType = Enum.MeshType.Brick
1790
SpecialMesh147.Scale = Vector3.new(0.0339129046, 0.033912912, 0.517172039)
1791
Part148.Parent = Tool0
1792
Part148.Material = Enum.Material.SmoothPlastic
1793
Part148.Transparency = 1
1794
Part148.Rotation = Vector3.new(-90, -60, -90)
1795
Part148.Anchored = true
1796
Part148.CanCollide = false
1797
Part148.FormFactor = Enum.FormFactor.Custom
1798
Part148.Size = Vector3.new(1, 1, 1)
1799
Part148.CFrame = CFrame.new(1436.81775, 48.1568336, -1310.87183, 0, 0.499998987, -0.866025984, 0, 0.866025984, 0.499998987, 1, 0, 0)
1800
Part148.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1801
Part148.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1802
Part148.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1803
Part148.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1804
Part148.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1805
Part148.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1806
Part148.Position = Vector3.new(1436.81775, 48.1568336, -1310.87183)
1807
Part148.Orientation = Vector3.new(-30, -90, 0)
1808
CylinderMesh149.Parent = Part148
1809
CylinderMesh149.Scale = Vector3.new(0.101738736, 0.161086336, 0.0339129157)
1810
CylinderMesh149.Scale = Vector3.new(0.101738736, 0.161086336, 0.0339129157)
1811
Part150.Parent = Tool0
1812
Part150.Material = Enum.Material.SmoothPlastic
1813
Part150.BrickColor = BrickColor.new("Brick yellow")
1814
Part150.Transparency = 1
1815
Part150.Rotation = Vector3.new(43.0599976, 7.44000006, -165.119995)
1816
Part150.Anchored = true
1817
Part150.CanCollide = false
1818
Part150.FormFactor = Enum.FormFactor.Custom
1819
Part150.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1820
Part150.CFrame = CFrame.new(1435.27368, 48.9770622, -1311.07397, -0.958352566, 0.25458324, 0.129413933, -0.272977144, -0.683412135, -0.677075565, -0.0839290544, -0.684204161, 0.724445105)
1821
Part150.BottomSurface = Enum.SurfaceType.Smooth
1822
Part150.TopSurface = Enum.SurfaceType.Smooth
1823
Part150.Color = Color3.new(0.843137, 0.772549, 0.603922)
1824
Part150.Position = Vector3.new(1435.27368, 48.9770622, -1311.07397)
1825
Part150.Orientation = Vector3.new(42.6199989, 10.1300001, -158.229996)
1826
Part150.Color = Color3.new(0.843137, 0.772549, 0.603922)
1827
CylinderMesh151.Parent = Part150
1828
CylinderMesh151.Scale = Vector3.new(0.291783929, 0.389045268, 0.170207277)
1829
CylinderMesh151.Scale = Vector3.new(0.291783929, 0.389045268, 0.170207277)
1830
Part152.Parent = Tool0
1831
Part152.Material = Enum.Material.SmoothPlastic
1832
Part152.BrickColor = BrickColor.new("Medium green")
1833
Part152.Reflectance = 0.40000000596046
1834
Part152.Transparency = 1
1835
Part152.Rotation = Vector3.new(-90, 30, -105)
1836
Part152.Anchored = true
1837
Part152.CanCollide = false
1838
Part152.FormFactor = Enum.FormFactor.Custom
1839
Part152.Size = Vector3.new(1, 1, 1)
1840
Part152.CFrame = CFrame.new(1436.76379, 48.7488365, -1310.92346, -0.224138901, 0.836518228, 0.499998987, 0.129404947, -0.482963115, 0.866025984, 0.965927541, 0.258812487, 1.22192728e-06)
1841
Part152.BottomSurface = Enum.SurfaceType.Smooth
1842
Part152.TopSurface = Enum.SurfaceType.Smooth
1843
Part152.Color = Color3.new(0.631373, 0.768628, 0.54902)
1844
Part152.Position = Vector3.new(1436.76379, 48.7488365, -1310.92346)
1845
Part152.Orientation = Vector3.new(-60, 90, 165)
1846
Part152.Color = Color3.new(0.631373, 0.768628, 0.54902)
1847
CylinderMesh153.Parent = Part152
1848
CylinderMesh153.Scale = Vector3.new(0.101738736, 0.330650836, 0.0339129157)
1849
CylinderMesh153.Scale = Vector3.new(0.101738736, 0.330650836, 0.0339129157)
1850
Part154.Parent = Tool0
1851
Part154.Material = Enum.Material.SmoothPlastic
1852
Part154.BrickColor = BrickColor.new("Dark stone grey")
1853
Part154.Transparency = 1
1854
Part154.Rotation = Vector3.new(-105, 75, 90)
1855
Part154.Anchored = true
1856
Part154.CanCollide = false
1857
Part154.FormFactor = Enum.FormFactor.Custom
1858
Part154.Size = Vector3.new(0.656099975, 0.656099975, 0.656099975)
1859
Part154.CFrame = CFrame.new(1434.85571, 49.1141472, -1311.08923, 0, -0.258817911, 0.965926111, -0.258811951, 0.93301481, 0.249999404, -0.96592778, -0.24999322, -0.0669851676)
1860
Part154.BottomSurface = Enum.SurfaceType.Smooth
1861
Part154.TopSurface = Enum.SurfaceType.Smooth
1862
Part154.Color = Color3.new(0.388235, 0.372549, 0.384314)
1863
Part154.Position = Vector3.new(1434.85571, 49.1141472, -1311.08923)
1864
Part154.Orientation = Vector3.new(-14.4799995, 93.9700012, -15.5)
1865
Part154.Color = Color3.new(0.388235, 0.372549, 0.384314)
1866
CylinderMesh155.Parent = Part154
1867
CylinderMesh155.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
1868
CylinderMesh155.Scale = Vector3.new(0.167988077, 0.284287453, 0.167988092)
1869
Part156.Parent = Tool0
1870
Part156.Material = Enum.Material.SmoothPlastic
1871
Part156.BrickColor = BrickColor.new("Dark stone grey")
1872
Part156.Transparency = 1
1873
Part156.Rotation = Vector3.new(90, 90, 0)
1874
Part156.Anchored = true
1875
Part156.CanCollide = false
1876
Part156.FormFactor = Enum.FormFactor.Custom
1877
Part156.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
1878
Part156.CFrame = CFrame.new(1433.8822, 48.9214859, -1310.87183, 0, 0, 1, 1, 0, 0, 0, 1, 0)
1879
Part156.BottomSurface = Enum.SurfaceType.Smooth
1880
Part156.TopSurface = Enum.SurfaceType.Smooth
1881
Part156.Color = Color3.new(0.388235, 0.372549, 0.384314)
1882
Part156.Position = Vector3.new(1433.8822, 48.9214859, -1310.87183)
1883
Part156.Orientation = Vector3.new(0, 90, 90)
1884
Part156.Color = Color3.new(0.388235, 0.372549, 0.384314)
1885
SpecialMesh157.Parent = Part156
1886
SpecialMesh157.Scale = Vector3.new(0.0300189219, 0.84052968, 1.8611728)
1887
SpecialMesh157.MeshType = Enum.MeshType.Brick
1888
SpecialMesh157.Scale = Vector3.new(0.0300189219, 0.84052968, 1.8611728)
1889
Part158.Parent = Tool0
1890
Part158.Material = Enum.Material.SmoothPlastic
1891
Part158.Transparency = 1
1892
Part158.Rotation = Vector3.new(-90, 0, 90)
1893
Part158.Anchored = true
1894
Part158.CanCollide = false
1895
Part158.FormFactor = Enum.FormFactor.Custom
1896
Part158.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
1897
Part158.CFrame = CFrame.new(1434.66418, 48.9062729, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0)
1898
Part158.BottomSurface = Enum.SurfaceType.Smooth
1899
Part158.TopSurface = Enum.SurfaceType.Smooth
1900
Part158.Position = Vector3.new(1434.66418, 48.9062729, -1310.87183)
1901
Part158.Orientation = Vector3.new(-90, 90, 0)
1902
SpecialMesh159.Parent = Part158
1903
SpecialMesh159.Scale = Vector3.new(0.180113494, 1.29081011, 1.53096449)
1904
SpecialMesh159.MeshType = Enum.MeshType.Brick
1905
SpecialMesh159.Scale = Vector3.new(0.180113494, 1.29081011, 1.53096449)
1906
Part160.Parent = Tool0
1907
Part160.Material = Enum.Material.SmoothPlastic
1908
Part160.Transparency = 1
1909
Part160.Rotation = Vector3.new(-90, 30, 90)
1910
Part160.Anchored = true
1911
Part160.CanCollide = false
1912
Part160.FormFactor = Enum.FormFactor.Custom
1913
Part160.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1914
Part160.CFrame = CFrame.new(1436.1012, 48.0875969, -1310.87183, 0, -0.866025388, 0.500000238, 0, 0.500000238, 0.866025388, -1, 0, 0)
1915
Part160.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1916
Part160.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1917
Part160.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1918
Part160.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1919
Part160.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1920
Part160.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1921
Part160.Position = Vector3.new(1436.1012, 48.0875969, -1310.87183)
1922
Part160.Orientation = Vector3.new(-60, 90, 0)
1923
CylinderMesh161.Parent = Part160
1924
CylinderMesh161.Scale = Vector3.new(0.291783929, 0.364729911, 0.170207277)
1925
CylinderMesh161.Scale = Vector3.new(0.291783929, 0.364729911, 0.170207277)
1926
Part162.Parent = Tool0
1927
Part162.Material = Enum.Material.SmoothPlastic
1928
Part162.BrickColor = BrickColor.new("Dark stone grey")
1929
Part162.Transparency = 1
1930
Part162.Rotation = Vector3.new(0, 90, 0)
1931
Part162.Anchored = true
1932
Part162.CanCollide = false
1933
Part162.FormFactor = Enum.FormFactor.Custom
1934
Part162.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
1935
Part162.CFrame = CFrame.new(1436.875, 48.33424, -1310.87622, 0, 0, 1, 0, 1, -0, -1, 0, 0)
1936
Part162.BackSurface = Enum.SurfaceType.SmoothNoOutlines
1937
Part162.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1938
Part162.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1939
Part162.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
1940
Part162.RightSurface = Enum.SurfaceType.SmoothNoOutlines
1941
Part162.TopSurface = Enum.SurfaceType.SmoothNoOutlines
1942
Part162.Color = Color3.new(0.388235, 0.372549, 0.384314)
1943
Part162.Position = Vector3.new(1436.875, 48.33424, -1310.87622)
1944
Part162.Orientation = Vector3.new(0, 90, 0)
1945
Part162.Color = Color3.new(0.388235, 0.372549, 0.384314)
1946
SpecialMesh163.Parent = Part162
1947
SpecialMesh163.Scale = Vector3.new(0.390246004, 0.180113539, 0.57036072)
1948
SpecialMesh163.MeshType = Enum.MeshType.Brick
1949
SpecialMesh163.Scale = Vector3.new(0.390246004, 0.180113539, 0.57036072)
1950
Part164.Parent = Tool0
1951
Part164.Material = Enum.Material.SmoothPlastic
1952
Part164.BrickColor = BrickColor.new("Dark stone grey")
1953
Part164.Transparency = 1
1954
Part164.Rotation = Vector3.new(180, 0, 90)
1955
Part164.Anchored = true
1956
Part164.CanCollide = false
1957
Part164.FormFactor = Enum.FormFactor.Custom
1958
Part164.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
1959
Part164.CFrame = CFrame.new(1435.66467, 48.9020348, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
1960
Part164.BottomSurface = Enum.SurfaceType.Smooth
1961
Part164.TopSurface = Enum.SurfaceType.Smooth
1962
Part164.Color = Color3.new(0.388235, 0.372549, 0.384314)
1963
Part164.Position = Vector3.new(1435.66467, 48.9020348, -1310.87183)
1964
Part164.Orientation = Vector3.new(0, -180, -90)
1965
Part164.Color = Color3.new(0.388235, 0.372549, 0.384314)
1966
CylinderMesh165.Parent = Part164
1967
CylinderMesh165.Scale = Vector3.new(0.494551927, 0.175486088, 0.861476958)
1968
CylinderMesh165.Scale = Vector3.new(0.494551927, 0.175486088, 0.861476958)
1969
Part166.Parent = Tool0
1970
Part166.Material = Enum.Material.SmoothPlastic
1971
Part166.BrickColor = BrickColor.new("Brick yellow")
1972
Part166.Transparency = 1
1973
Part166.Rotation = Vector3.new(-0.870000005, -12.9499998, -157.62999)
1974
Part166.Anchored = true
1975
Part166.CanCollide = false
1976
Part166.FormFactor = Enum.FormFactor.Custom
1977
Part166.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
1978
Part166.CFrame = CFrame.new(1435.34644, 48.8009377, -1311.09277, -0.901220024, 0.370889217, -0.224151224, -0.383668005, -0.923353195, 0.0147557557, -0.201498002, 0.0992978215, 0.97444272)
1979
Part166.BottomSurface = Enum.SurfaceType.Smooth
1980
Part166.TopSurface = Enum.SurfaceType.Smooth
1981
Part166.Color = Color3.new(0.843137, 0.772549, 0.603922)
1982
Part166.Position = Vector3.new(1435.34644, 48.8009377, -1311.09277)
1983
Part166.Orientation = Vector3.new(-0.849999964, -12.9499998, -157.440002)
1984
Part166.Color = Color3.new(0.843137, 0.772549, 0.603922)
1985
CylinderMesh167.Parent = Part166
1986
CylinderMesh167.Scale = Vector3.new(0.291783929, 0.889940858, 0.170207277)
1987
CylinderMesh167.Scale = Vector3.new(0.291783929, 0.889940858, 0.170207277)
1988
Part168.Name = "Smooth Block Model"
1989
Part168.Parent = Tool0
1990
Part168.Material = Enum.Material.SmoothPlastic
1991
Part168.BrickColor = BrickColor.new("Dark stone grey")
1992
Part168.Transparency = 1
1993
Part168.Rotation = Vector3.new(90, 15, 90)
1994
Part168.Anchored = true
1995
Part168.CanCollide = false
1996
Part168.FormFactor = Enum.FormFactor.Custom
1997
Part168.Size = Vector3.new(1, 1, 1)
1998
Part168.CFrame = CFrame.new(1435.82715, 48.8071632, -1310.87183, 0, -0.965925872, 0.258818984, 0, -0.258818984, -0.965925872, 1, 0, 0)
1999
Part168.BackSurface = Enum.SurfaceType.SmoothNoOutlines
2000
Part168.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
2001
Part168.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
2002
Part168.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
2003
Part168.RightSurface = Enum.SurfaceType.SmoothNoOutlines
2004
Part168.TopSurface = Enum.SurfaceType.SmoothNoOutlines
2005
Part168.Color = Color3.new(0.388235, 0.372549, 0.384314)
2006
Part168.Position = Vector3.new(1435.82715, 48.8071632, -1310.87183)
2007
Part168.Orientation = Vector3.new(75, 90, 180)
2008
Part168.Color = Color3.new(0.388235, 0.372549, 0.384314)
2009
SpecialMesh169.Parent = Part168
2010
SpecialMesh169.Scale = Vector3.new(0.0339129046, 0.245868579, 0.22891213)
2011
SpecialMesh169.MeshType = Enum.MeshType.Wedge
2012
SpecialMesh169.Scale = Vector3.new(0.0339129046, 0.245868579, 0.22891213)
2013
Part170.Name = "Smooth Block Model"
2014
Part170.Parent = Tool0
2015
Part170.Material = Enum.Material.SmoothPlastic
2016
Part170.BrickColor = BrickColor.new("Dark stone grey")
2017
Part170.Transparency = 1
2018
Part170.Rotation = Vector3.new(-90, -15, 90)
2019
Part170.Anchored = true
2020
Part170.CanCollide = false
2021
Part170.FormFactor = Enum.FormFactor.Custom
2022
Part170.Size = Vector3.new(0.430467099, 0.430467129, 0.430467188)
2023
Part170.CFrame = CFrame.new(1435.77759, 48.6315002, -1310.87183, 0, -0.965925872, -0.258818984, 0, -0.258818984, 0.965925872, -1, 0, 0)
2024
Part170.BackSurface = Enum.SurfaceType.SmoothNoOutlines
2025
Part170.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
2026
Part170.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
2027
Part170.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
2028
Part170.RightSurface = Enum.SurfaceType.SmoothNoOutlines
2029
Part170.TopSurface = Enum.SurfaceType.SmoothNoOutlines
2030
Part170.Color = Color3.new(0.388235, 0.372549, 0.384314)
2031
Part170.Position = Vector3.new(1435.77759, 48.6315002, -1310.87183)
2032
Part170.Orientation = Vector3.new(-75, -90, 180)
2033
Part170.Color = Color3.new(0.388235, 0.372549, 0.384314)
2034
SpecialMesh171.Parent = Part170
2035
SpecialMesh171.Scale = Vector3.new(0.236344978, 0.177258641, 0.196954101)
2036
SpecialMesh171.MeshType = Enum.MeshType.Wedge
2037
SpecialMesh171.Scale = Vector3.new(0.236344978, 0.177258641, 0.196954101)
2038
Part172.Parent = Tool0
2039
Part172.Material = Enum.Material.SmoothPlastic
2040
Part172.BrickColor = BrickColor.new("Dark stone grey")
2041
Part172.Transparency = 1
2042
Part172.Rotation = Vector3.new(-90, 0, 90)
2043
Part172.Anchored = true
2044
Part172.CanCollide = false
2045
Part172.FormFactor = Enum.FormFactor.Custom
2046
Part172.Size = Vector3.new(1, 1, 1)
2047
Part172.CFrame = CFrame.new(1436.74353, 48.5165329, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0)
2048
Part172.BackSurface = Enum.SurfaceType.SmoothNoOutlines
2049
Part172.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
2050
Part172.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
2051
Part172.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
2052
Part172.RightSurface = Enum.SurfaceType.SmoothNoOutlines
2053
Part172.TopSurface = Enum.SurfaceType.SmoothNoOutlines
2054
Part172.Color = Color3.new(0.388235, 0.372549, 0.384314)
2055
Part172.Position = Vector3.new(1436.74353, 48.5165329, -1310.87183)
2056
Part172.Orientation = Vector3.new(-90, 90, 0)
2057
Part172.Color = Color3.new(0.388235, 0.372549, 0.384314)
2058
SpecialMesh173.Parent = Part172
2059
SpecialMesh173.Scale = Vector3.new(0.0339129046, 0.033912912, 0.576519549)
2060
SpecialMesh173.MeshType = Enum.MeshType.Brick
2061
SpecialMesh173.Scale = Vector3.new(0.0339129046, 0.033912912, 0.576519549)
2062
Part174.Parent = Tool0
2063
Part174.Material = Enum.Material.SmoothPlastic
2064
Part174.Transparency = 1
2065
Part174.Rotation = Vector3.new(90, 75, -90)
2066
Part174.Anchored = true
2067
Part174.CanCollide = false
2068
Part174.FormFactor = Enum.FormFactor.Custom
2069
Part174.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
2070
Part174.CFrame = CFrame.new(1435.75964, 48.5609169, -1310.87622, 0, 0.258818984, 0.965925872, 0, 0.965925872, -0.258818984, -1, 0, 0)
2071
Part174.BottomSurface = Enum.SurfaceType.Smooth
2072
Part174.TopSurface = Enum.SurfaceType.Smooth
2073
Part174.Position = Vector3.new(1435.75964, 48.5609169, -1310.87622)
2074
Part174.Orientation = Vector3.new(15, 90, 0)
2075
SpecialMesh175.Parent = Part174
2076
SpecialMesh175.Scale = Vector3.new(0.0300189164, 0.540340722, 0.0900567546)
2077
SpecialMesh175.MeshType = Enum.MeshType.Brick
2078
SpecialMesh175.Scale = Vector3.new(0.0300189164, 0.540340722, 0.0900567546)
2079
Part176.Parent = Tool0
2080
Part176.Material = Enum.Material.SmoothPlastic
2081
Part176.BrickColor = BrickColor.new("Nougat")
2082
Part176.Transparency = 1
2083
Part176.Rotation = Vector3.new(180, 0, 90)
2084
Part176.Anchored = true
2085
Part176.CanCollide = false
2086
Part176.FormFactor = Enum.FormFactor.Custom
2087
Part176.Size = Vector3.new(0.415433139, 0.313694388, 0.423911244)
2088
Part176.CFrame = CFrame.new(1434.67273, 48.9062729, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
2089
Part176.BottomSurface = Enum.SurfaceType.Smooth
2090
Part176.TopSurface = Enum.SurfaceType.Smooth
2091
Part176.Color = Color3.new(0.8, 0.556863, 0.411765)
2092
Part176.Position = Vector3.new(1434.67273, 48.9062729, -1310.87183)
2093
Part176.Orientation = Vector3.new(0, -180, -90)
2094
Part176.Color = Color3.new(0.8, 0.556863, 0.411765)
2095
CylinderMesh177.Parent = Part176
2096
Part178.Parent = Tool0
2097
Part178.Material = Enum.Material.SmoothPlastic
2098
Part178.BrickColor = BrickColor.new("Brick yellow")
2099
Part178.Transparency = 1
2100
Part178.Rotation = Vector3.new(-90, 0, 90)
2101
Part178.Anchored = true
2102
Part178.CanCollide = false
2103
Part178.FormFactor = Enum.FormFactor.Custom
2104
Part178.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
2105
Part178.CFrame = CFrame.new(1434.84229, 48.626503, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0)
2106
Part178.BottomSurface = Enum.SurfaceType.Smooth
2107
Part178.TopSurface = Enum.SurfaceType.Smooth
2108
Part178.Color = Color3.new(0.843137, 0.772549, 0.603922)
2109
Part178.Position = Vector3.new(1434.84229, 48.626503, -1310.87183)
2110
Part178.Orientation = Vector3.new(-90, 90, 0)
2111
Part178.Color = Color3.new(0.843137, 0.772549, 0.603922)
2112
SpecialMesh179.Parent = Part178
2113
SpecialMesh179.Scale = Vector3.new(0.287159115, 0.781710386, 0.175486133)
2114
SpecialMesh179.MeshType = Enum.MeshType.Brick
2115
SpecialMesh179.Scale = Vector3.new(0.287159115, 0.781710386, 0.175486133)
2116
Part180.Parent = Tool0
2117
Part180.Material = Enum.Material.SmoothPlastic
2118
Part180.BrickColor = BrickColor.new("Black")
2119
Part180.Transparency = 1
2120
Part180.Rotation = Vector3.new(15.0099993, 62.4199982, 2.98000002)
2121
Part180.Anchored = true
2122
Part180.CanCollide = false
2123
Part180.FormFactor = Enum.FormFactor.Custom
2124
Part180.Size = Vector3.new(0.34867835, 0.34867838, 0.34867838)
2125
Part180.CFrame = CFrame.new(1435.07532, 49.0545235, -1310.66675, 0.462388188, -0.0240549594, 0.886351287, 0.2793791, 0.95266664, -0.119890675, -0.841513276, 0.303064078, 0.447222203)
2126
Part180.BottomSurface = Enum.SurfaceType.Smooth
2127
Part180.TopSurface = Enum.SurfaceType.Smooth
2128
Part180.Color = Color3.new(0.105882, 0.164706, 0.207843)
2129
Part180.Position = Vector3.new(1435.07532, 49.0545235, -1310.66675)
2130
Part180.Orientation = Vector3.new(6.88999987, 63.2299995, 16.3400002)
2131
Part180.Color = Color3.new(0.105882, 0.164706, 0.207843)
2132
CylinderMesh181.Parent = Part180
2133
CylinderMesh181.Scale = Vector3.new(0.170207247, 0.75377506, 0.170207277)
2134
CylinderMesh181.Scale = Vector3.new(0.170207247, 0.75377506, 0.170207277)
2135
Part182.Parent = Tool0
2136
Part182.Material = Enum.Material.SmoothPlastic
2137
Part182.BrickColor = BrickColor.new("Dark stone grey")
2138
Part182.Transparency = 1
2139
Part182.Rotation = Vector3.new(180, 0, 90)
2140
Part182.Anchored = true
2141
Part182.CanCollide = false
2142
Part182.FormFactor = Enum.FormFactor.Custom
2143
Part182.Size = Vector3.new(0.282429457, 0.282429457, 0.282429516)
2144
Part182.CFrame = CFrame.new(1433.90967, 48.9232292, -1310.87183, 0, -1, -0, -1, 0, -0, 0, 0, -1)
2145
Part182.BottomSurface = Enum.SurfaceType.Smooth
2146
Part182.TopSurface = Enum.SurfaceType.Smooth
2147
Part182.Color = Color3.new(0.388235, 0.372549, 0.384314)
2148
Part182.Position = Vector3.new(1433.90967, 48.9232292, -1310.87183)
2149
Part182.Orientation = Vector3.new(0, -180, -90)
2150
Part182.Color = Color3.new(0.388235, 0.372549, 0.384314)
2151
CylinderMesh183.Parent = Part182
2152
CylinderMesh183.Scale = Vector3.new(0.870549083, 0.0300189219, 1.50094521)
2153
CylinderMesh183.Scale = Vector3.new(0.870549083, 0.0300189219, 1.50094521)
2154
Part184.Parent = Tool0
2155
Part184.Material = Enum.Material.SmoothPlastic
2156
Part184.BrickColor = BrickColor.new("Dark stone grey")
2157
Part184.Transparency = 1
2158
Part184.Rotation = Vector3.new(-90, 75, 90)
2159
Part184.Anchored = true
2160
Part184.CanCollide = false
2161
Part184.FormFactor = Enum.FormFactor.Custom
2162
Part184.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
2163
Part184.CFrame = CFrame.new(1435.92761, 48.4653969, -1310.87183, 0, -0.258818984, 0.965925872, 0, 0.965925872, 0.258818984, -1, 0, 0)
2164
Part184.BottomSurface = Enum.SurfaceType.Smooth
2165
Part184.TopSurface = Enum.SurfaceType.Smooth
2166
Part184.Color = Color3.new(0.388235, 0.372549, 0.384314)
2167
Part184.Position = Vector3.new(1435.92761, 48.4653969, -1310.87183)
2168
Part184.Orientation = Vector3.new(-15, 90, 0)
2169
Part184.Color = Color3.new(0.388235, 0.372549, 0.384314)
2170
SpecialMesh185.Parent = Part184
2171
SpecialMesh185.Scale = Vector3.new(0.19143942, 0.909336686, 0.239299268)
2172
SpecialMesh185.MeshType = Enum.MeshType.Brick
2173
SpecialMesh185.Scale = Vector3.new(0.19143942, 0.909336686, 0.239299268)
2174
Part186.Parent = Tool0
2175
Part186.Material = Enum.Material.SmoothPlastic
2176
Part186.Transparency = 1
2177
Part186.Rotation = Vector3.new(-90, 0, 90)
2178
Part186.Anchored = true
2179
Part186.CanCollide = false
2180
Part186.FormFactor = Enum.FormFactor.Custom
2181
Part186.Size = Vector3.new(0.531440914, 0.531440973, 0.531440973)
2182
Part186.CFrame = CFrame.new(1434.48193, 49.1648102, -1310.87183, 0, -1, 0, 0, 0, 1, -1, 0, 0)
2183
Part186.BottomSurface = Enum.SurfaceType.Smooth
2184
Part186.TopSurface = Enum.SurfaceType.Smooth
2185
Part186.Position = Vector3.new(1434.48193, 49.1648102, -1310.87183)
2186
Part186.Orientation = Vector3.new(-90, 90, 0)
2187
SpecialMesh187.Parent = Part186
2188
SpecialMesh187.Scale = Vector3.new(0.0319065675, 0.0319065675, 0.223345816)
2189
SpecialMesh187.MeshType = Enum.MeshType.Brick
2190
SpecialMesh187.Scale = Vector3.new(0.0319065675, 0.0319065675, 0.223345816)
2191
IntValue188.Name = "Ammo"
2192
IntValue188.Parent = Tool0
2193
IntValue188.Value = 25
2194
IntValue189.Name = "ClipSize"
2195
IntValue189.Parent = Tool0
2196
IntValue189.Value = 25
2197
IntValue190.Name = "LethalGrenades"
2198
IntValue190.Parent = Tool0
2199
IntValue190.Value = 15
2200
IntValue191.Name = "StoredAmmo"
2201
IntValue191.Parent = Tool0
2202
IntValue191.Value = 400
2203
IntValue192.Name = "TacticalGrenades"
2204
IntValue192.Parent = Tool0
2205
IntValue192.Value = 15
2206
Script193.Name = "serverMain"
2207
Script193.Parent = Tool0
2208
table.insert(cors,sandbox(Script193,function()
2209
local Plyr = script:WaitForChild("Plyr")
2210
2211
local Gun = script.Parent
2212
local Handle = Gun:WaitForChild("Handle")
2213
2214
local V3 = Vector3.new
2215
local CF, CFANG = CFrame.new, CFrame.Angles
2216
2217
local RAD = math.rad
2218
2219
local numLerp = function(A, B, Alpha)
2220
	return A + (B - A) * Alpha
2221
end
2222
2223
local inList = function(Element, List)
2224
	for _, v in pairs(List) do
2225
		if v == Element then
2226
			return true
2227
		end
2228
	end
2229
	return false
2230
end
2231
2232
local getObject = function(Model, Class, Name)
2233
	for _, v in pairs(Model:GetChildren()) do
2234
		if v:IsA(Class) and v.Name == Name then
2235
			return v
2236
		end
2237
	end
2238
	return nil
2239
end
2240
2241
----------------------------------------------------------------------
2242
--------------------[ IGNORE MODEL HANDLING ]-------------------------
2243
----------------------------------------------------------------------
2244
2245
wait(math.random(0, 20) / 40) --This is to prevent more than one ignoreModel from being created
2246
2247
if _G.ignoreCode then --If the ignoreCode already exists, then the script creates the ignoreModel
2248
	--[[
2249
		The purpose of this is so that every gun in a game that uses this gun kit will share one ignoreModel. That way,
2250
		bullet trails, bullet holes, and other fake arms will be ignored by the gun which makes the bullets more likely to
2251
		hit a character part
2252
	--]]
2253
	if (not game.Workspace:FindFirstChild("ignoreModel_".._G.ignoreCode)) then
2254
		local ignoreModel = Instance.new("Model")
2255
		ignoreModel.Name = "ignoreModel_".._G.ignoreCode
2256
		ignoreModel.Parent = game.Workspace
2257
		
2258
		local grenadeFolder = Instance.new("Model")
2259
		grenadeFolder.Name = "grenadeFolder"
2260
		grenadeFolder.Parent = ignoreModel
2261
	
2262
		spawn(function()
2263
			while true do
2264
				ignoreModel.Parent = game.Workspace
2265
				grenadeFolder.Parent = ignoreModel
2266
				wait(1 / 20)
2267
			end
2268
		end)
2269
	end
2270
	
2271
	script.Parent:WaitForChild("clientMain"):WaitForChild("ignoreCode").Value = _G.ignoreCode
2272
else
2273
	--[[
2274
		If there isn't already an ignoreCode, then this creates one. The purpose of it being random is so that if there is
2275
		an ignoreModel for something else in the game, the script won't end up placing the ignored objects in that ignoreModel
2276
	--]]
2277
	_G.ignoreCode = math.random(1, 1e4)
2278
	
2279
	if (not game.Workspace:FindFirstChild("ignoreModel_".._G.ignoreCode)) then
2280
		local ignoreModel = Instance.new("Model")
2281
		ignoreModel.Name = "ignoreModel_".._G.ignoreCode
2282
		ignoreModel.Parent = game.Workspace
2283
		
2284
		local grenadeFolder = Instance.new("Model")
2285
		grenadeFolder.Name = "grenadeFolder"
2286
		grenadeFolder.Parent = ignoreModel
2287
	
2288
		spawn(function()
2289
			while true do
2290
				ignoreModel.Parent = game.Workspace
2291
				grenadeFolder.Parent = ignoreModel
2292
				wait(1 / 20)
2293
			end
2294
		end)
2295
	end
2296
	
2297
	script.Parent:WaitForChild("clientMain"):WaitForChild("ignoreCode").Value = _G.ignoreCode
2298
end
2299
2300
spawn(function()
2301
	--[[
2302
		This function deletes any Player Folders that were left in the ignoreModel because the player left the game without
2303
		deselecting the Gun first
2304
	--]]
2305
	repeat wait() until _G.ignoreCode
2306
	local ignoreModel = game.Workspace:WaitForChild("ignoreModel_".._G.ignoreCode)
2307
	while true do
2308
		for _, gunIgnore in pairs(ignoreModel:GetChildren()) do
2309
			if gunIgnore.Name ~= "grenadeFolder" then
2310
				if (not game.Players:FindFirstChild(gunIgnore.Name:sub(11))) then
2311
					gunIgnore:Destroy()
2312
				end
2313
			end
2314
		end
2315
		wait(1 / 20)
2316
	end
2317
end)
2318
2319
----------------------------------------------------------------------
2320
--------------------[ RESET CAMERA ]----------------------------------
2321
----------------------------------------------------------------------
2322
2323
Gun.ChildRemoved:connect(function(Child)
2324
	if Child == Handle and Plyr.Value then
2325
		local ignoreCode = Gun:WaitForChild("clientMain"):WaitForChild("ignoreCode").Value
2326
		local resetCam = script:WaitForChild("resetCam")
2327
		resetCam:WaitForChild("ignoreCode").Value = ignoreCode
2328
		resetCam.Parent = Plyr.Value.PlayerGui
2329
	end
2330
end)
2331
2332
----------------------------------------------------------------------
2333
--------------------[ GET WELD CFRAMES ]------------------------------
2334
----------------------------------------------------------------------
2335
2336
for _, v in pairs(Gun:GetChildren()) do
2337
	if v:IsA("BasePart") and v ~= Handle then
2338
		if v:FindFirstChild("mainWeld") then v.mainWeld:Destroy() end
2339
		if (not v:FindFirstChild("weldCF")) then
2340
			local weldCF = Instance.new("CFrameValue")
2341
			weldCF.Name = "weldCF"
2342
			weldCF.Value = Handle.CFrame:toObjectSpace(v.CFrame)
2343
			weldCF.Parent = v
2344
		end
2345
		if string.sub(v.Name, 1, 3) == "Mag" then
2346
			if (not v:FindFirstChild("magTrans")) then
2347
				local magTrans = Instance.new("NumberValue")
2348
				magTrans.Name = "magTrans"
2349
				magTrans.Value = v.Transparency
2350
				magTrans.Parent = v
2351
			end
2352
		end
2353
		v.Anchored = true
2354
		v.CanCollide = false
2355
	end
2356
end
2357
Handle.Anchored = false
2358
Handle.CanCollide = true
2359
2360
----------------------------------------------------------------------
2361
--------------------[ GUNSETUP HANDLING ]-----------------------------
2362
----------------------------------------------------------------------
2363
2364
local gunSetup = script:WaitForChild("gunSetup")
2365
function gunSetup.OnServerInvoke(Player, Vars)
2366
	
2367
	--------------------[ CREATING IGNORE MODELS ]--------------------------------
2368
	
2369
	local gunIgnore = Instance.new("Model")
2370
	gunIgnore.Name = "gunIgnore_"..Player.Name
2371
	gunIgnore.Parent = Vars.ignoreModel
2372
	
2373
	--------------------[ MODIFYING THE PLAYER ]----------------------------------
2374
		
2375
	Vars.Humanoid.AutoRotate = false
2376
	
2377
	Vars.Shoulders.Right.Part1 = nil
2378
	Vars.Shoulders.Left.Part1 = nil
2379
	
2380
	local playerFolder = Instance.new("Model")
2381
	playerFolder.Name = "playerFolder"
2382
	playerFolder.Parent = gunIgnore
2383
	
2384
	local headBase = Instance.new("Part")
2385
	headBase.Transparency = 1
2386
	headBase.Name = "headBase"
2387
	headBase.CanCollide = false
2388
	headBase.FormFactor = Enum.FormFactor.Custom
2389
	headBase.Size = V3(0.2, 0.2, 0.2)
2390
	headBase.BottomSurface = Enum.SurfaceType.Smooth
2391
	headBase.TopSurface = Enum.SurfaceType.Smooth
2392
	headBase.Parent = playerFolder
2393
		
2394
	local headWeld = Instance.new("Weld")
2395
	headWeld.Part0 = Vars.Torso
2396
	headWeld.Part1 = headBase
2397
	headWeld.C0 = CF(0, 1.5, 0)
2398
	headWeld.Parent = Vars.Torso
2399
	
2400
	local headWeld2 = Instance.new("Weld")
2401
	headWeld2.Part0 = headBase
2402
	headWeld2.Part1 = Vars.Head
2403
	headWeld2.Parent = headBase
2404
		
2405
	local animBase = Instance.new("Part")
2406
	animBase.Transparency = 1
2407
	animBase.Name = "animBase"
2408
	animBase.CanCollide = false
2409
	animBase.FormFactor = Enum.FormFactor.Custom
2410
	animBase.Size = V3(0.2, 0.2, 0.2)
2411
	animBase.BottomSurface = Enum.SurfaceType.Smooth
2412
	animBase.TopSurface = Enum.SurfaceType.Smooth
2413
	animBase.Parent = playerFolder
2414
	
2415
	local animWeld = Instance.new("Weld")
2416
	animWeld.Part0 = animBase
2417
	animWeld.Part1 = headBase
2418
	animWeld.Parent = animBase
2419
	
2420
	local armBase = Instance.new("Part")
2421
	armBase.Transparency = 1
2422
	armBase.Name = "ArmBase"
2423
	armBase.CanCollide = false
2424
	armBase.FormFactor = Enum.FormFactor.Custom
2425
	armBase.Size = V3(0.2, 0.2, 0.2)
2426
	armBase.BottomSurface = Enum.SurfaceType.Smooth
2427
	armBase.TopSurface = Enum.SurfaceType.Smooth
2428
	armBase.Parent = playerFolder
2429
	
2430
	local ABWeld = Instance.new("Weld")
2431
	ABWeld.Part0 = armBase
2432
	ABWeld.Part1 = animBase
2433
	ABWeld.Parent = armBase
2434
		
2435
	local LArmBase = Instance.new("Part")
2436
	LArmBase.Transparency = 1
2437
	LArmBase.Name = "LArmBase"
2438
	LArmBase.CanCollide = false
2439
	LArmBase.FormFactor = Enum.FormFactor.Custom
2440
	LArmBase.Size = V3(0.2, 0.2, 0.2)
2441
	LArmBase.BottomSurface = Enum.SurfaceType.Smooth
2442
	LArmBase.TopSurface = Enum.SurfaceType.Smooth
2443
	LArmBase.Parent = playerFolder
2444
	
2445
	local RArmBase = Instance.new("Part")
2446
	RArmBase.Transparency = 1
2447
	RArmBase.Name = "RArmBase"
2448
	RArmBase.CanCollide = false
2449
	RArmBase.FormFactor = Enum.FormFactor.Custom
2450
	RArmBase.Size = V3(0.2, 0.2, 0.2)
2451
	RArmBase.BottomSurface = Enum.SurfaceType.Smooth
2452
	RArmBase.TopSurface = Enum.SurfaceType.Smooth
2453
	RArmBase.Parent = playerFolder
2454
	
2455
	local LWeld = Instance.new("Weld")
2456
	LWeld.Name = "LWeld"
2457
	LWeld.Part0 = armBase
2458
	LWeld.Part1 = LArmBase
2459
	LWeld.C0 = Vars.armC0[1]
2460
	LWeld.C1 = Vars.leftArmC1
2461
	LWeld.Parent = armBase
2462
	
2463
	local RWeld = Instance.new("Weld")
2464
	RWeld.Name = "RWeld"
2465
	RWeld.Part0 = armBase
2466
	RWeld.Part1 = RArmBase
2467
	RWeld.C0 = Vars.armC0[2]
2468
	RWeld.C1 = Vars.rightArmC1
2469
	RWeld.Parent = armBase
2470
	
2471
	local LWeld2 = Instance.new("Weld")
2472
	LWeld2.Name = "LWeld"
2473
	LWeld2.Part0 = LArmBase
2474
	LWeld2.Part1 = Vars.LArm
2475
	LWeld2.Parent = LArmBase
2476
	
2477
	local RWeld2 = Instance.new("Weld")
2478
	RWeld2.Name = "RWeld"
2479
	RWeld2.Part0 = RArmBase
2480
	RWeld2.Part1 = Vars.RArm
2481
	RWeld2.Parent = RArmBase
2482
	
2483
	local LLegWeld = Instance.new("Weld")
2484
	LLegWeld.Name = "LLegWeld"
2485
	LLegWeld.Part0 = Vars.Torso
2486
	LLegWeld.Part1 = nil
2487
	LLegWeld.C0 = CF(-0.5, -2, 0)
2488
	LLegWeld.Parent = Vars.Torso
2489
	
2490
	local RLegWeld = Instance.new("Weld")
2491
	RLegWeld.Name = "RLegWeld"
2492
	RLegWeld.Part0 = Vars.Torso
2493
	RLegWeld.Part1 = nil
2494
	RLegWeld.C0 = CF(0.5, -2, 0)
2495
	RLegWeld.Parent = Vars.Torso
2496
	
2497
	for _, Tab in pairs(Vars.gunParts) do
2498
		Tab.Obj.Anchored = false
2499
		local Weld = Instance.new("Weld")
2500
		Weld.Name = "mainWeld"
2501
		Weld.Part0 = Vars.Handle
2502
		Weld.Part1 = Tab.Obj
2503
		Weld.C0 = Tab.Obj.weldCF.Value
2504
		Weld.Parent = Vars.Handle
2505
		Tab.Weld = Weld
2506
	end
2507
	
2508
	return gunIgnore, playerFolder, headWeld, headWeld2, animWeld, ABWeld, LWeld, RWeld, LWeld2, RWeld2, LLegWeld, RLegWeld, Vars.gunParts
2509
end
2510
2511
----------------------------------------------------------------------
2512
--------------------[ TWEENJOINT HANDLING ]---------------------------
2513
----------------------------------------------------------------------
2514
2515
local createTweenIndicator = script:WaitForChild("createTweenIndicator")
2516
function createTweenIndicator.OnServerInvoke(_, Joint, newCode)
2517
	local tweenIndicator = nil
2518
	if (not Joint:findFirstChild("tweenCode")) then --If the joint isn't being tweened, then
2519
		tweenIndicator = Instance.new("IntValue")
2520
		tweenIndicator.Name = "tweenCode"
2521
		tweenIndicator.Value = newCode
2522
		tweenIndicator.Parent = Joint
2523
	else
2524
		tweenIndicator = Joint.tweenCode
2525
		tweenIndicator.Value = newCode --If the joint is already being tweened, this will change the code, and the tween loop will stop
2526
	end
2527
	return tweenIndicator
2528
end
2529
2530
local lerpCF = script:WaitForChild("lerpCF")
2531
function lerpCF.OnServerInvoke(_, Joint, Prop, startCF, endCF, Alpha)
2532
	spawn(function()
2533
		Joint[Prop] = startCF:lerp(endCF, Alpha)
2534
	end)
2535
end
2536
2537
local deleteTweenIndicator = script:WaitForChild("deleteTweenIndicator")
2538
function deleteTweenIndicator.OnServerInvoke(_, tweenIndicator, newCode)
2539
	if tweenIndicator.Value == newCode then --If this tween functions was the last one called on a joint then it will remove the code
2540
		tweenIndicator:Destroy()
2541
	end
2542
end
2543
2544
----------------------------------------------------------------------
2545
--------------------[ BULLET IMPACT HANDLING ]------------------------
2546
----------------------------------------------------------------------
2547
2548
local createBulletImpact = script:WaitForChild("createBulletImpact")
2549
createBulletImpact.OnServerEvent:connect(function(_, H, P, N, D, humanoidFound, gunIgnore, S)
2550
	local surfaceCF = CF(P, P + N)
2551
	----------------------------------------------------------------------------------
2552
	--Creating the bullet hole--------------------------------------------------------
2553
	----------------------------------------------------------------------------------
2554
	if S.bulletHoles and (not humanoidFound) then
2555
		local Hole = Instance.new("Part")
2556
		Hole.Transparency = 1
2557
		Hole.Anchored = true
2558
		Hole.CanCollide = false
2559
		Hole.FormFactor = "Custom"
2560
		Hole.Size = V3(1, 1, 0.2)
2561
		Hole.TopSurface = 0
2562
		Hole.BottomSurface = 0
2563
		local Mesh = Instance.new("BlockMesh")
2564
		Mesh.Offset = V3(0, 0, -0.05)
2565
		Mesh.Scale = V3(S.holeSettings.Size, S.holeSettings.Size, 0)
2566
		Mesh.Parent = Hole
2567
		local Decal = Instance.new("Decal")
2568
		Decal.Face = Enum.NormalId.Front
2569
		Decal.Texture = S.holeSettings.Texture
2570
		Decal.Parent = Hole
2571
		Hole.Parent = gunIgnore
2572
		Hole.CFrame = surfaceCF
2573
		if (not H.Anchored) then
2574
			local Weld = Instance.new("Weld", Hole)
2575
			Weld.Part0 = H
2576
			Weld.Part1 = Hole
2577
			Weld.C0 = H.CFrame:toObjectSpace(surfaceCF)
2578
			Hole.Anchored = false
2579
		end
2580
		delay(S.holeSettings.visibleTime, function()
2581
			if S.holeSettings.disappearTime > 0 then
2582
				local t0 = tick()
2583
				while true do
2584
					local Alpha = math.min((tick() - t0) / S.holeSettings.disappearTime, 1)
2585
					Decal.Transparency = numLerp(0, 1, Alpha)
2586
					if Alpha == 1 then break end
2587
					wait()
2588
				end
2589
				Hole:Destroy()
2590
			else
2591
				Hole:Destroy()
2592
			end
2593
		end)
2594
	end
2595
	----------------------------------------------------------------------------------
2596
	--Creating the spark effect-------------------------------------------------------
2597
	----------------------------------------------------------------------------------
2598
	if S.bulletSparks and (not humanoidFound) and inList(H.Material, S.sparkSettings.Materials) then
2599
		local Sparks = Instance.new("Part")
2600
		Sparks.Transparency = 1
2601
		Sparks.Anchored = true
2602
		Sparks.CanCollide = false
2603
		Sparks.FormFactor = "Custom"
2604
		Sparks.Size = V3(1, 1, 1)
2605
		Sparks.TopSurface = 0
2606
		Sparks.BottomSurface = 0
2607
		
2608
		local Particles = nil
2609
		if S.customSparks then
2610
			Particles = getObject(game.ServerStorage, "ParticleEmitter", "bulletSpark"):Clone()
2611
		else
2612
			Particles = Instance.new("ParticleEmitter")
2613
			Particles.Color = ColorSequence.new(S.sparkSettings.Color.Start, S.sparkSettings.Color.End)
2614
			Particles.LightEmission = 1
2615
			Particles.Size = NumberSequence.new(
2616
				{
2617
					NumberSequenceKeypoint.new(0, S.sparkSettings.Size, 0.25);
2618
					NumberSequenceKeypoint.new(1, 0);
2619
				}
2620
			)
2621
			Particles.Texture = S.sparkSettings.Texture
2622
			Particles.Transparency = NumberSequence.new(0)
2623
			Particles.Acceleration = V3(0, -196.2, 0)
2624
			Particles.EmissionDirection = Enum.NormalId.Front
2625
			Particles.Lifetime = NumberRange.new(S.sparkSettings.Lifetime - 0.05, S.sparkSettings.Lifetime + 0.05)
2626
			Particles.Rate = S.sparkSettings.Rate
2627
			Particles.Rotation = NumberRange.new(0, 360)
2628
			Particles.Speed = NumberRange.new(S.sparkSettings.Speed - 5, S.sparkSettings.Speed + 5)
2629
			Particles.VelocitySpread = S.sparkSettings.Spread
2630
		end
2631
		Particles.Parent = Sparks
2632
		
2633
		Sparks.Parent = gunIgnore
2634
		Sparks.CFrame = surfaceCF
2635
		if (not H.Anchored) then
2636
			local Weld = Instance.new("Weld", Sparks)
2637
			Weld.Part0 = H
2638
			Weld.Part1 = Sparks
2639
			Weld.C0 = H.CFrame:toObjectSpace(surfaceCF)
2640
			Sparks.Anchored = false
2641
		end
2642
		delay(0.1, function()
2643
			Particles.Enabled = false
2644
			wait(Particles.Lifetime.Max)
2645
			Sparks:Destroy()
2646
		end)
2647
	end
2648
	----------------------------------------------------------------------------------
2649
	--Creating the smoke effect-------------------------------------------------------
2650
	----------------------------------------------------------------------------------
2651
	if S.bulletSmoke and (not humanoidFound) then
2652
		local Smoke = Instance.new("Part")
2653
		Smoke.Transparency = 1
2654
		Smoke.Anchored = true
2655
		Smoke.CanCollide = false
2656
		Smoke.FormFactor = "Custom"
2657
		Smoke.Size = V3(1, 1, 1)
2658
		Smoke.TopSurface = 0
2659
		Smoke.BottomSurface = 0
2660
		
2661
		local Particles = Instance.new("ParticleEmitter")
2662
		Particles.Color = ColorSequence.new(S.smokeSettings.objColor and H.Color or S.smokeSettings.Color)
2663
		Particles.LightEmission = 0
2664
		Particles.Size = NumberSequence.new(
2665
			{
2666
				NumberSequenceKeypoint.new(0, S.smokeSettings.Size.Start);
2667
				NumberSequenceKeypoint.new(1, S.smokeSettings.Size.End);
2668
			}
2669
		)
2670
		Particles.Texture = S.smokeSettings.Texture
2671
		Particles.Transparency = NumberSequence.new(
2672
			{
2673
				NumberSequenceKeypoint.new(0, S.smokeSettings.startTransparency);
2674
				NumberSequenceKeypoint.new(0.5, 0.75 * S.smokeSettings.startTransparency + 0.25);
2675
				NumberSequenceKeypoint.new(1, 1);
2676
			}
2677
		)
2678
		Particles.Acceleration = V3(0, -196.2, 0)
2679
		Particles.EmissionDirection = Enum.NormalId.Front
2680
		Particles.Lifetime = NumberRange.new(S.smokeSettings.Lifetime - 0.05, S.smokeSettings.Lifetime + 0.05)
2681
		Particles.Rate = S.smokeSettings.Rate
2682
		Particles.Rotation = NumberRange.new(0, 360)
2683
		Particles.RotSpeed = NumberRange.new(10)
2684
		Particles.Speed = NumberRange.new(S.smokeSettings.Speed - 5, S.smokeSettings.Speed + 5)
2685
		Particles.VelocitySpread = S.smokeSettings.Spread
2686
		Particles.Parent = Smoke
2687
		
2688
		Smoke.Parent = gunIgnore
2689
		Smoke.CFrame = surfaceCF
2690
		if (not H.Anchored) then
2691
			local Weld = Instance.new("Weld", Smoke)
2692
			Weld.Part0 = H
2693
			Weld.Part1 = Smoke
2694
			Weld.C0 = H.CFrame:toObjectSpace(surfaceCF)
2695
			Smoke.Anchored = false
2696
		end
2697
		delay(0.1, function()
2698
			Particles.Enabled = false
2699
			wait(S.smokeSettings.Lifetime + 0.05)
2700
			Smoke:Destroy()
2701
		end)
2702
	end
2703
end)
2704
2705
----------------------------------------------------------------------
2706
--------------------[ SHOCKWAVE HANDLING ]----------------------------
2707
----------------------------------------------------------------------
2708
2709
local createShockwave = script:WaitForChild("createShockwave")
2710
createShockwave.OnServerEvent:connect(function(_, Center, Radius, gunIgnore, S)
2711
	local Shockwave = Instance.new("Part")
2712
	Shockwave.BrickColor = S.shockwaveSettings.Color
2713
	Shockwave.Material = Enum.Material.SmoothPlastic
2714
	Shockwave.Name = "Shockwave"
2715
	Shockwave.Anchored = true
2716
	Shockwave.CanCollide = false
2717
	Shockwave.FormFactor = Enum.FormFactor.Symmetric
2718
	Shockwave.Size = V3(1, 1, 1)
2719
	Shockwave.BottomSurface = Enum.SurfaceType.Smooth
2720
	Shockwave.TopSurface = Enum.SurfaceType.Smooth
2721
	local Mesh = Instance.new("SpecialMesh")
2722
	Mesh.MeshType = Enum.MeshType.Sphere
2723
	Mesh.Scale = V3()
2724
	Mesh.Parent = Shockwave
2725
	Shockwave.Parent = gunIgnore
2726
	Shockwave.CFrame = CF(Center)
2727
	spawn(function()
2728
		local t0 = tick()
2729
		while true do
2730
			local Alpha = math.min((tick() - t0) / S.shockwaveSettings.Duration, 1)
2731
			local Scale = 2 * Radius * Alpha
2732
			Mesh.Scale = V3(Scale, Scale, Scale)
2733
			Shockwave.Transparency = Alpha
2734
			if Alpha == 1 then break end
2735
			wait()
2736
		end
2737
		Shockwave:Destroy()
2738
	end)
2739
end)
2740
2741
----------------------------------------------------------------------
2742
--------------------[ BLOOD HANDLING ]--------------------------------
2743
----------------------------------------------------------------------
2744
2745
local createBlood = script:WaitForChild("createBlood")
2746
createBlood.OnServerEvent:connect(function(_, H, P, D, gunIgnore, S)
2747
	local bloodCF = CF(P, P + D) * CFANG(RAD(-90), 0, 0)
2748
	local Blood = Instance.new("Part")
2749
	Blood.Transparency = 1
2750
	Blood.Anchored = true
2751
	Blood.CanCollide = false
2752
	Blood.FormFactor = "Custom"
2753
	Blood.Size = V3(0.2, 1, 0.2)
2754
	Blood.TopSurface = 0
2755
	Blood.BottomSurface = 0
2756
	
2757
	local Particles = Instance.new("ParticleEmitter")
2758
	Particles.Color = ColorSequence.new(S.bloodSettings.Color)
2759
	Particles.LightEmission = 0
2760
	Particles.Size = NumberSequence.new(S.bloodSettings.Size)
2761
	Particles.Texture = S.bloodSettings.Texture
2762
	Particles.Transparency = NumberSequence.new(
2763
		{
2764
			NumberSequenceKeypoint.new(0, S.bloodSettings.startTransparency);
2765
			NumberSequenceKeypoint.new(1, 1);
2766
		}
2767
	)
2768
	Particles.EmissionDirection = Enum.NormalId.Top
2769
	Particles.Lifetime = NumberRange.new(S.bloodSettings.Lifetime - 0.05, S.bloodSettings.Lifetime + 0.05)
2770
	Particles.Rate = S.bloodSettings.Rate
2771
	Particles.Rotation = NumberRange.new(0, 90)
2772
	Particles.Speed = NumberRange.new(S.bloodSettings.Speed)
2773
	Particles.VelocitySpread = S.bloodSettings.Spread
2774
	Particles.Parent = Blood
2775
	
2776
	Blood.Parent = gunIgnore
2777
	Blood.CFrame = bloodCF
2778
	if (not H.Anchored) then
2779
		local Weld = Instance.new("Weld", Blood)
2780
		Weld.Part0 = H
2781
		Weld.Part1 = Blood
2782
		Weld.C0 = H.CFrame:toObjectSpace(bloodCF)
2783
		Blood.Anchored = false
2784
	end
2785
	delay(0.15, function()
2786
		Particles.Enabled = false
2787
		wait(S.bloodSettings.Lifetime + 0.05)
2788
		Blood:Destroy()
2789
	end)
2790
end)
2791
2792
----------------------------------------------------------------------
2793
--------------------[ TRAIL HANDLING ]--------------------------------
2794
----------------------------------------------------------------------
2795
2796
local createTrail = script:WaitForChild("createTrail")
2797
createTrail.OnServerEvent:connect(function(_, Origin, P, gunIgnore, S)
2798
	local Trail = Instance.new("Part")
2799
	Trail.BrickColor = S.trailSettings.Color
2800
	Trail.Transparency = S.trailSettings.Transparency
2801
	Trail.Anchored = true
2802
	Trail.CanCollide = false
2803
	Trail.Size = V3(1, 1, 1)
2804
	local Mesh = Instance.new("CylinderMesh")
2805
	Mesh.Offset = V3(0, -(P - Origin).magnitude / 2, 0)
2806
	Mesh.Scale = V3(S.trailSettings.Thickness, (P - Origin).magnitude, S.trailSettings.Thickness)
2807
	Mesh.Parent = Trail
2808
	Trail.Parent = gunIgnore
2809
	Trail.CFrame = CF(Origin, P) * CFANG(RAD(90), 0, 0)
2810
	delay(S.trailSettings.visibleTime, function()
2811
		if S.trailSettings.disappearTime > 0 then
2812
			local t0 = tick()
2813
			while true do
2814
				local Alpha = math.min((tick() - t0) / S.trailSettings.disappearTime, 1)
2815
				Trail.Transparency = numLerp(S.trailSettings.Transparency, 1, Alpha)
2816
				if Alpha == 1 then break end
2817
				wait()
2818
			end
2819
			Trail:Destroy()
2820
		else
2821
			Trail:Destroy()
2822
		end
2823
	end)
2824
end)
2825
end))
2826
ObjectValue194.Name = "Plyr"
2827
ObjectValue194.Parent = Script193
2828
RemoteFunction195.Name = "getWeldCF"
2829
RemoteFunction195.Parent = Script193
2830
RemoteFunction196.Name = "gunSetup"
2831
RemoteFunction196.Parent = Script193
2832
RemoteFunction197.Name = "tweenJoint"
2833
RemoteFunction197.Parent = Script193
2834
RemoteEvent198.Name = "onRenderStep"
2835
RemoteEvent198.Parent = Script193
2836
RemoteFunction199.Name = "createTweenIndicator"
2837
RemoteFunction199.Parent = Script193
2838
RemoteFunction200.Name = "deleteTweenIndicator"
2839
RemoteFunction200.Parent = Script193
2840
RemoteFunction201.Name = "lerpCF"
2841
RemoteFunction201.Parent = Script193
2842
LocalScript202.Name = "resetCam"
2843
LocalScript202.Parent = Script193
2844
table.insert(cors,sandbox(LocalScript202,function()
2845
repeat wait() until game.Players.LocalPlayer.Character
2846
2847
local Player = game.Players.LocalPlayer
2848
local Char = Player.Character
2849
local Humanoid = Char:WaitForChild("Humanoid")
2850
2851
local Cam = game.Workspace.CurrentCamera
2852
local UIS = game:GetService("UserInputService")
2853
2854
local ignoreCode = script:WaitForChild("ignoreCode")
2855
repeat wait() until ignoreCode.Value ~= 0
2856
local ignoreModel = game.Workspace:WaitForChild("ignoreModel_"..ignoreCode.Value)
2857
local gunIgnore = ignoreModel:FindFirstChild("gunIgnore_"..Player.Name)
2858
2859
Cam.FieldOfView = 70
2860
Cam.CameraType = Enum.CameraType.Custom
2861
Cam:ClearAllChildren()
2862
2863
UIS.MouseBehavior = Enum.MouseBehavior.Default
2864
UIS.MouseIconEnabled = true
2865
2866
Player.CameraMode = Enum.CameraMode.Classic
2867
2868
Humanoid.WalkSpeed = 16
2869
Humanoid.AutoRotate = true
2870
2871
if gunIgnore then gunIgnore:Destroy() end
2872
end))
2873
IntValue203.Name = "ignoreCode"
2874
IntValue203.Parent = LocalScript202
2875
RemoteEvent204.Name = "createBulletImpact"
2876
RemoteEvent204.Parent = Script193
2877
RemoteEvent205.Name = "createShockwave"
2878
RemoteEvent205.Parent = Script193
2879
RemoteEvent206.Name = "createBlood"
2880
RemoteEvent206.Parent = Script193
2881
RemoteEvent207.Name = "createTrail"
2882
RemoteEvent207.Parent = Script193
2883
LocalScript208.Name = "clientMain"
2884
LocalScript208.Parent = Tool0
2885
table.insert(cors,sandbox(LocalScript208,function()
2886
--[[
2887
Kit By TurboFusion
2888
Remake By MuYhEt & Xander521
2889
--]]
2890
--------------------------------------------------------------------------------------
2891
--------------------[ CHARACTER LOADING ]---------------------------------------------
2892
--------------------------------------------------------------------------------------
2893
2894
repeat wait() until game.Players.LocalPlayer.Character
2895
repeat wait() until game.Players.LocalPlayer.Character:IsDescendantOf(game.Workspace)
2896
wait(1 / 20)
2897
2898
--------------------------------------------------------------------------------------
2899
--------------------[ IGNORE MODEL ]--------------------------------------------------
2900
--------------------------------------------------------------------------------------
2901
2902
local ignoreCode = script:WaitForChild("ignoreCode")
2903
2904
repeat wait() until ignoreCode.Value ~= 0
2905
2906
local ignoreModel = game.Workspace:WaitForChild("ignoreModel_"..ignoreCode.Value)
2907
2908
local grenadeFolder = ignoreModel:WaitForChild("grenadeFolder")
2909
2910
--------------------------------------------------------------------------------------
2911
--------------------[ CONSTANTS ]-----------------------------------------------------
2912
--------------------------------------------------------------------------------------
2913
2914
local Gun = script.Parent
2915
local serverMain = Gun:WaitForChild("serverMain")
2916
local Handle = Gun:WaitForChild("Handle")
2917
local AimPart = Gun:WaitForChild("AimPart")
2918
local Main = Gun:WaitForChild("Main")
2919
2920
local Ammo = Gun:WaitForChild("Ammo")
2921
local ClipSize = Gun:WaitForChild("ClipSize")
2922
local StoredAmmo = Gun:WaitForChild("StoredAmmo")
2923
2924
local createTweenIndicator = serverMain:WaitForChild("createTweenIndicator")
2925
local deleteTweenIndicator = serverMain:WaitForChild("deleteTweenIndicator")
2926
local getWeldCF = serverMain:WaitForChild("getWeldCF")
2927
local gunSetup = serverMain:WaitForChild("gunSetup")
2928
local lerpCF = serverMain:WaitForChild("lerpCF")
2929
local createBlood = serverMain:WaitForChild("createBlood")
2930
local createBulletImpact = serverMain:WaitForChild("createBulletImpact")
2931
local createShockwave = serverMain:WaitForChild("createShockwave")
2932
local createTrail = serverMain:WaitForChild("createTrail")
2933
2934
local Particle = {}
2935
function Particle.new(Prop)
2936
	----------[ CONSTANTS ]--------------------
2937
	
2938
	local Cam = workspace.CurrentCamera
2939
	local rayIgnore = Prop.rayIgnore or {} --If the property doesn't exist, then set it to it's default
2940
	local Color = Prop.Color or Color3.new(1, 1, 1)
2941
	local Length = Prop.Length or 1
2942
	local Width = Prop.Width or 1
2943
	local p0 = Prop.p0 or error("Particle.new requires a p0 (origin position) property!", 0) --Give an error message if you don't this
2944
	local v0 = Prop.v0 or error("Particle.new requires a v0 (initial velocity) property!", 0)
2945
	local a0 = Prop.a0 or error("Particle.new requires an a0 (initial acceleration) property!", 0)
2946
	
2947
	----------[ VARIABLES ]--------------------
2948
	
2949
	local Deleted = false
2950
	local p = p0 --Set the position, velocity, and acceleration as the intial conditions
2951
	local v = v0
2952
	local a = a0
2953
	local t = 0
2954
	
2955
	----------[ FUNCTIONS ]--------------------
2956
	
2957
	local function worldWidthToScreenWidth(Width, Depth) --A function I made that gives you a screen width given a world width and depth
2958
		local Center = Cam.CoordinateFrame * CFrame.new(0, 0, -Depth)
2959
		local wp1 = (Center * CFrame.new(0, Width / 2, 0)).p
2960
		local wp2 = (Center * CFrame.new(0, -Width / 2, 0)).p
2961
		local sp1 = Cam:WorldToScreenPoint(wp1) --Use the WorldToScreenPoint method of the camera to get the screen width from the world width
2962
		local sp2 = Cam:WorldToScreenPoint(wp2)
2963
		return (sp1 - sp2).magnitude
2964
	end
2965
	
2966
	----------[ MAIN PROGRAM ]-----------------
2967
	
2968
	local Container = Instance.new("Frame")
2969
	Container.BackgroundTransparency = 1
2970
	Container.Position = UDim2.new()
2971
	Container.Size = UDim2.new()
2972
	local Line = Instance.new("Frame")
2973
	Line.BackgroundColor3 = Color
2974
	Line.BorderSizePixel = 0
2975
	Line.Position = UDim2.new()
2976
	Line.Size = UDim2.new()
2977
	Line.Parent = Container
2978
	
2979
	return setmetatable(
2980
		{
2981
			delete = function() --This function safely removes the particle
2982
				Container:Destroy()
2983
				Deleted = true
2984
			end
2985
		},
2986
		{
2987
			__index = function(_, Index)
2988
				if Index == "p" or Index == "position" then --Return the world position of the particle
2989
					return (Deleted and nil or p)
2990
				elseif Index == "v" or Index == "velocity" then --Return the world velocity of the particle
2991
					return (Deleted and nil or v)
2992
				elseif Index == "obj" or Index == "object" then --Return the particle frame itself
2993
					return (Deleted and nil or Container)
2994
				else
2995
					error(Index.." is not a member of Particle!", 0) --Give an error message if any other index is called
2996
				end
2997
			end;
2998
			
2999
			__newindex = function(_, Index, Value)
3000
				if Index == "t" or Index == "time" and (not Deleted) then --Render the particle given a time value
3001
					t = Value
3002
					p = p0 + (v0 * t) + (0.5 * a0 * t * t) --update the position given the time
3003
					v = v0 + (a0 * t) --update the velocity given the time
3004
					
3005
					local testRay1 = Ray.new(Cam.CoordinateFrame.p, (p + (v.unit * Length) / 2) - Cam.CoordinateFrame.p)
3006
					local testRay2 = Ray.new(Cam.CoordinateFrame.p, (p - (v.unit * Length) / 2) - Cam.CoordinateFrame.p)
3007
					local H1, _ = workspace:FindPartOnRayWithIgnoreList(testRay1, rayIgnore)
3008
					local H2, _ = workspace:FindPartOnRayWithIgnoreList(testRay2, rayIgnore)
3009
					
3010
					if H1 and H2 then
3011
						Line.Visible = false
3012
					else
3013
						local face1 = Cam:WorldToScreenPoint(p + (v.unit * Length) / 2) --Get the 2 endpoints of the particle in screen space
3014
						local face2 = Cam:WorldToScreenPoint(p - (v.unit * Length) / 2)
3015
						local Center, isVisible = Cam:WorldToScreenPoint(p) --Get the center of the particle in screen space
3016
						
3017
						local screenLength = (face1 - face2).magnitude
3018
						local screenWidth = worldWidthToScreenWidth(Width, Center.Z)
3019
						local Ang = math.atan2(face1.Y - face2.Y, face1.X - face2.X) --Get the angle the particle needs to be at in order to line up
3020
						
3021
						Line.Position = UDim2.new(0, 0, 0, -screenWidth / 2)
3022
						Line.Size = UDim2.new(1, 0, 0, screenWidth)
3023
						Line.Visible = isVisible --Make the particle invisible if the world point isn't on screen
3024
						
3025
						Container.Position = UDim2.new(
3026
							0,
3027
							face2.X + (math.cos(Ang) - 1) * screenLength / 2, --Yay trig!
3028
							0,
3029
							face2.Y + math.sin(Ang) * screenLength / 2
3030
						)
3031
						Container.Size = UDim2.new(0, screenLength, 0, 0)
3032
						Container.Rotation = math.deg(Ang)
3033
					end
3034
				else
3035
					error(Index.." is not a member of Particle!", 0) --Give an error message if any other index is being changed
3036
				end
3037
			end
3038
		}
3039
	)
3040
end
3041
local Spring = {}
3042
function Spring.new(Initial)
3043
	local t0 = tick()
3044
	local p0 = Initial or 0
3045
	local v0 = Initial and Vector3.new() or 0
3046
	local t	= Initial or 0
3047
	local d	= 1
3048
	local s	= 1
3049
3050
	local function positionVelocity(Tick)
3051
		local x	= Tick - t0
3052
		local c0 = p0 - t
3053
		if s == 0 then
3054
			return p0, 0
3055
		elseif d < 1 then
3056
			local c	= math.sqrt(1 - d ^ 2)
3057
			local c1 = (v0 / s + d * c0) / c
3058
			local co = math.cos(c * s * x)
3059
			local si = math.sin(c * s * x)
3060
			local e	= math.exp(d * s * x)
3061
			local p = t + (c0 * co + c1 * si) / e
3062
			local v = s * ((c * c1 - d * c0) * co - (c * c0 + d * c1) * si) / e
3063
			return p, v
3064
		else
3065
			local c1 = v0 / s + c0
3066
			local e	= math.exp(s * x)
3067
			local p = t + (c0 + c1 * s * x) / e
3068
			local v = s * (c1 - c0 - c1 * s * x) / e
3069
			return p, v
3070
		end
3071
	end
3072
3073
	return setmetatable(
3074
		{
3075
			accelerate = function(_, acceleration)
3076
				local T = tick()
3077
				local p, v = positionVelocity(T)
3078
				p0 = p
3079
				v0 = v + acceleration
3080
				t0 = T
3081
			end;
3082
		},
3083
		{
3084
			__index = function(_, index)
3085
				if index == "value" or index == "position" or index == "p" then
3086
					local p, v = positionVelocity(tick())
3087
					return p
3088
				elseif index == "velocity" or index == "v" then
3089
					local p, v = positionVelocity(tick())
3090
					return v
3091
				elseif index == "acceleration" or index == "a" then
3092
					local x	= tick() - t0
3093
					local c0 = p0 - t
3094
					if s == 0 then
3095
						return 0
3096
					elseif d < 1 then
3097
						local c = math.sqrt(1 - d ^ 2)
3098
						local c1 = (v0 / s + d * c0) / c
3099
						local cs = (c0 * d ^ 2 - 2 * c * d * c1 - c0 * c ^ 2) * math.cos(c * s * x)
3100
						local sn = (c1 * d ^ 2 + 2 * c * d * c0 - c1 * c ^ 2) * math.sin(c * s * x)
3101
						return s ^ 2 *(cs + sn) / math.exp(d * s * x)
3102
					else
3103
						local c1 = v0 / s + c0
3104
						return s ^ 2 * (c0 - 2 * c1 + c1 * s * x) / math.exp(s * x)
3105
					end
3106
				elseif index == "target" or index == "t" then
3107
					return t
3108
				elseif index == "damper" or index == "d" then
3109
					return d
3110
				elseif index == "speed" or index == "s" then
3111
					return s
3112
				elseif index == "magnitude" or index == "m" then
3113
					local p, v = positionVelocity(tick())
3114
					return p.magnitude
3115
				else
3116
					error(index.." is not a valid member of spring", 0)
3117
				end
3118
			end;
3119
			
3120
			__newindex = function(_, index, value)
3121
				local T = tick()
3122
				if index == "value" or index == "position" or index == "p" then
3123
					local p, v = positionVelocity(T)
3124
					p0, v0 = value, v
3125
				elseif index == "velocity" or index == "v" then
3126
					local p, v = positionVelocity(T)
3127
					p0, v0 = p, value
3128
				elseif index == "acceleration" or index == "a" then
3129
					local p, v = positionVelocity(T)
3130
					p0, v0 = p, v + value
3131
				elseif index == "target" or index == "t" then
3132
					p0, v0 = positionVelocity(T)
3133
					t = value
3134
				elseif index == "damper" or index == "d" then
3135
					p0, v0 = positionVelocity(T)
3136
					d = value < 0 and 0 or value < 1 and value or 1
3137
				elseif index == "speed" or index == "s" then
3138
					p0, v0 = positionVelocity(T)
3139
					s = value < 0 and 0 or value
3140
				else
3141
					error(index.." is not a valid member of spring", 0)
3142
				end
3143
				t0 = T
3144
			end;
3145
		}
3146
	)
3147
end
3148
local Anims = {
3149
	
3150
	Reload = function(S) --This is the main reload animation. The parameter S contains all the variables and functions that are necessary for this animation
3151
		--[[
3152
			FUNCTION LIST_
3153
			
3154
				S.tweenJoint(Joint, newC0, newC1, Alpha, Duration) --This function tweens a joint to a given C0 and C1. The Alpha parameter is function
3155
					that returns a number between 0 and 1 given an argument of a number between 0 and 90. The Duration is how fast the joint tweens. NOTE,
3156
					you can put nil as an argument for the newC0 or newC1 parameter and the function won't tween that specific property of the weld. This
3157
					is useful if you only want to mess with the C0 or C1 property of a weld.
3158
					
3159
				S.makeMagInvisible() --This function makes the mag invisible so it looks like the mag was removed
3160
				
3161
				S.makeMagVisible() --This function makes the mag visible again at whatever the previous transparency of the mag parts were
3162
				
3163
				S.isMagVisible() --This function returns a true or false value based on whether or not the mag is visible. This can be used to tell if
3164
					the animation was stopped midway and where to restart the animation
3165
					
3166
				S.isMagEmpty() --This function returns a true or false value based on whether or not the mag is empty, meaning the ammo is 0. This can be
3167
					used to decide if a chambering animation should play after the reload animation
3168
					
3169
				S.setNewMag() --This function sets the newMag variable in the clientMain to true which basically lets the script know that a new mag was
3170
					put into the gun. This is used so that if the reload animation is broken after the new mag was put in but before the chambering animation
3171
					then the script will simply play the chambering animation instead of putting in another mag
3172
					
3173
				S.isNewMag() --This function returns a true or false value based on whether or not the mag that is currently attached to the gun is a new
3174
					mag. In order for it to be a new mag, it needs to have full ammo. Once you fire, the mag becomes an old mag
3175
					
3176
				S.createMag(Key) --This functions clones the Mag and puts it in a table with a Key parameter so you can access the mag in a separate
3177
					function and it returns a Model containing the Mag and a table that contains the original mag bricks and the corresponding clone. NOTE,
3178
					the mag bricks will be made non can collide
3179
					
3180
				S.getMag(Key) --This function gets a Mag from the mag table given a Key argument and it returns the model that the mag is contained in
3181
					and the brick that all the other mag parts are welded to
3182
				
3183
				S.attachGripToHead() --This function detaches the grip from the right arm and attaches it to the Head. This is so you can make reload
3184
					animations that require using the right arm to manipulate the gun in any way. The C0 of the grip is changed so the gun stays in the
3185
					position that it was in before you detached the grip from the right arm.
3186
					
3187
				S.attachGripToArm() --This function detaches the grip from the Head and attaches it to the Arm. The C0 of the grip is changed so the gun
3188
					stays in the position that it was in before you detached the grip from the head
3189
				
3190
				S.Sine(X) --This function is an Alpha function for the tweenJoint function. Given a number between 0 and 90, the function will return the
3191
					sine of that number, which is a number between 0 and 1, which is used to tween a Joint with a Sine movement
3192
					
3193
				S.Linear(X) --This function is an Alpha function for the tweenJoint function. Given a number between 0 and 90, the function will return
3194
					the number / 90, which is a number between 0 and 1, which is used to a tween a Joint with a Linear movement
3195
				
3196
			VARIABLE LIST_
3197
			
3198
				S.Handle --This variable is the Handle of gun
3199
				
3200
				S.LArm --This variable is the left arm
3201
				
3202
				S.RArm --This variable is the right arm
3203
				
3204
				S.LWeld --This variable is the left arm weld which is attached to the animBase
3205
				
3206
				S.RWeld --This variable is the right arm weld which is attached to the animBase
3207
				
3208
				S.LC0 --This variable is the cframe of the left arm joint with respect to the torso
3209
				
3210
				S.RC0 --This variable is the cframe of the right arm joint with respect to the torso
3211
				
3212
				S.Grip --This variable is the Grip weld which is attached to right arm
3213
				
3214
				S.gunIgnore --This variable is the gun ignore model which contains the fake arms and bullets and other stuff
3215
				
3216
				S.Cam --This variable is the player camera
3217
				
3218
				S.CF --This variable is the shortened form of CFrame.new which you can use instead of CFrame.new
3219
				
3220
				S.CFANG --This variable is the shortened form of CFrame.Angles which you can use instead of CFrame.Angles
3221
				
3222
				S.V3 --This variable is the shortened form of Vector3.new which you can use instead of Vector3.new
3223
				
3224
				S.RAD --This variable is the shortened form of math.rad which you can use instead of math.rad
3225
				
3226
				S.reloadTimeLoaded --This variable is the reload time for when the gun is loaded which you can use to modify how fast the reload
3227
					animation runs
3228
					
3229
				S.reloadTimeEmpty --This variable is the reload time for when the gun is empty which you can use to modify how fast the reload
3230
					animation runs
3231
		--]]
3232
		
3233
		local W1 = nil
3234
		local W2 = nil
3235
		local animSpeed = S.isMagEmpty() and S.reloadTimeEmpty / 1.3 or S.reloadTimeLoaded / 0.9
3236
		return {
3237
			function()
3238
				if (not S.isNewMag()) then
3239
					if S.isMagVisible() then
3240
						local Mag1, magTable1 = S.createMag("Mag1")
3241
							
3242
						Mag1.Parent = S.gunIgnore
3243
						
3244
						W1 = Instance.new("Weld")
3245
						W1.Part0 = magTable1[1].magClone
3246
						W1.Part1 = S.Handle
3247
						W1.C0 = magTable1[1].Original.CFrame:toObjectSpace(S.Handle.CFrame)
3248
						W1.Parent = magTable1[1].magClone
3249
						
3250
						S.tweenJoint(S.LWeld, nil, S.CF(-0.9, 2, -1.1) * S.CFANG(S.RAD(-15), 0, S.RAD(-25)), S.Sine, 0.2 * animSpeed)
3251
						S.tweenJoint(S.RWeld, nil, S.CF(0.3, 0.2, -0.31) * S.CFANG(S.RAD(-12), 0, S.RAD(25)), S.Sine, 0.2 * animSpeed)
3252
						S.tweenJoint(S.Grip, nil, S.CFANG(0, S.RAD(20), S.RAD(10)), S.Sine, 0.1 * animSpeed)
3253
						wait(0.2 * animSpeed)
3254
					end
3255
				end
3256
			end;
3257
			
3258
			function()
3259
				if (not S.isNewMag()) then
3260
					if S.isMagVisible() then
3261
						S.makeMagInvisible()
3262
						W1:Destroy()
3263
						local Mag1, magTable1 = S.getMag("Mag1")
3264
						magTable1[1].magClone.Velocity = S.Handle.Velocity + S.Handle.CFrame:vectorToWorldSpace(S.V3(0, -1, 0)) * 20
3265
						
3266
						S.tweenJoint(S.RWeld, nil, S.CF(0.3, 0.2, -0.5) * S.CFANG(S.RAD(-20), S.RAD(10), S.RAD(25)), S.Sine, 0.25 * animSpeed)
3267
						S.tweenJoint(S.Grip, nil, S.CFANG(0, S.RAD(20), S.RAD(10)), S.Sine, 0.2 * animSpeed)
3268
					else
3269
						S.tweenJoint(S.RWeld, nil, S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-12), S.RAD(20), S.RAD(25)), S.Sine, 0.2 * animSpeed)
3270
						S.tweenJoint(S.Grip, nil, S.CFANG(S.RAD(-10), S.RAD(20), S.RAD(10)), S.Sine, 0.2 * animSpeed)
3271
					end
3272
					
3273
					S.tweenJoint(S.LWeld, nil, S.CF(0, 0.5, 0) * S.CFANG(S.RAD(95), 0, S.RAD(-25)), S.Sine, 0.2 * animSpeed)
3274
					
3275
					wait(0.25 * animSpeed)
3276
				end
3277
			end;
3278
			
3279
			function()
3280
				if (not S.isNewMag()) then
3281
					local Mag1, magTable1 = S.getMag("Mag1")
3282
					if Mag1 then Mag1:Destroy() end
3283
					
3284
					local Mag2, magTable2 = S.createMag("Mag2")
3285
					
3286
					Mag2.Parent = S.gunIgnore
3287
					
3288
					local LArmCF = S.LWeld.Part0.CFrame * S.LWeld.C0 * (S.CF(0.58, 1.63, -1.4) * S.CFANG(S.RAD(-22), S.RAD(20), S.RAD(-60))):inverse()
3289
					local RArmCF = S.RWeld.Part0.CFrame * S.RWeld.C0 * (S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-15), S.RAD(20), S.RAD(25))):inverse()
3290
					local handleOffsetCF = S.RArm.CFrame:toObjectSpace(S.RArm.CFrame * S.Grip.C0 * (S.CFANG(S.RAD(-10), S.RAD(20), S.RAD(10))):inverse())
3291
					local originalMagOffsetCF = S.Handle.CFrame:toObjectSpace(magTable2[1].Original.CFrame)
3292
					local newMagC0 = LArmCF:toObjectSpace(RArmCF * handleOffsetCF * originalMagOffsetCF)
3293
					
3294
					W2 = Instance.new("Weld")
3295
					W2.Part0 = S.LArm
3296
					W2.Part1 = magTable2[1].magClone
3297
					W2.C0 = newMagC0
3298
					W2.Parent = magTable2[1].magClone
3299
					
3300
					S.tweenJoint(S.LWeld, nil, S.CF(0.55, 1, -2.4) * S.CFANG(S.RAD(-20), S.RAD(20), S.RAD(-60)), S.Sine, 0.2 * animSpeed)--0.25
3301
					S.tweenJoint(S.RWeld, nil, S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-12), S.RAD(20), S.RAD(25)), S.Sine, 0.2 * animSpeed)
3302
					S.tweenJoint(S.Grip, nil, S.CFANG(S.RAD(-10), S.RAD(20), S.RAD(10)), S.Sine, 0.2 * animSpeed)
3303
					wait(0.2 * animSpeed)
3304
				end
3305
			end;
3306
			
3307
			function()
3308
				if (not S.isNewMag()) then
3309
					S.tweenJoint(S.Grip, nil, S.CFANG(S.RAD(-10), S.RAD(20), S.RAD(10)), S.Sine, 0.15 * animSpeed)
3310
					S.tweenJoint(S.LWeld, nil, S.CF(0.58, 1.63, -1.4) * S.CFANG(S.RAD(-22), S.RAD(20), S.RAD(-60)), S.Sine, 0.15 * animSpeed)--0.25
3311
					S.tweenJoint(S.RWeld, nil, S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-15), S.RAD(20), S.RAD(25)), S.Sine, 0.2 * animSpeed)
3312
					
3313
					wait(0.2 * animSpeed)
3314
				end
3315
			end;
3316
			
3317
			function()
3318
				if (not S.isNewMag()) then
3319
					local Mag1, _ = S.getMag("Mag1")
3320
					local Mag2, _ = S.getMag("Mag2")
3321
					S.makeMagVisible()
3322
					S.setNewMag()
3323
					if Mag1 then Mag1:Destroy() end
3324
					Mag2:Destroy()
3325
				end
3326
			end;
3327
			
3328
			function()
3329
				if S.isMagEmpty() then
3330
					if S.isNewMag() then
3331
						S.tweenJoint(S.Grip, nil, S.CFANG(S.RAD(-10), S.RAD(20), S.RAD(10)), S.Sine, 0.15 * animSpeed)
3332
						S.tweenJoint(S.LWeld, nil, S.CF(0.58, 1.63, -1.4) * S.CFANG(S.RAD(-22), S.RAD(20), S.RAD(-60)), S.Sine, 0.15 * animSpeed)--0.25
3333
						S.tweenJoint(S.RWeld, nil, S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-15), S.RAD(20), S.RAD(25)), S.Sine, 0.2 * animSpeed)
3334
					end
3335
					S.tweenJoint(S.LWeld, nil, S.CF(0, 1.3, -0.55) * S.CFANG(S.RAD(-26), 0, 0), S.Sine, 0.2 * animSpeed)
3336
					
3337
					wait(0.2 * animSpeed)
3338
				end
3339
			end;
3340
			
3341
			function()
3342
				if S.isMagEmpty() then
3343
					S.tweenJoint(S.LWeld, nil, S.CF(0.4, 1.6, -0.55) * S.CFANG(S.RAD(-23), 0, S.RAD(-60)), S.Sine, 0.1 * animSpeed)
3344
					
3345
					wait(0.05 * animSpeed)
3346
				end
3347
			end;
3348
			
3349
			function()
3350
				if S.isMagEmpty() then
3351
					S.tweenJoint(S.RWeld, nil, S.CF(0.6, 0.2, -0.61) * S.CFANG(S.RAD(-15), S.RAD(20), S.RAD(20)), S.Sine, 0.05 * animSpeed)
3352
					
3353
					wait(0.15 * animSpeed)
3354
				end
3355
			end;
3356
		}
3357
	end;
3358
	
3359
	Cocking = function(S)
3360
		
3361
	end;
3362
	
3363
	Crawling = function(X, moveDirection, moveSpeed) --This is the animation for when you're crawling
3364
		--[[
3365
			The moveDirection gives you the angle at which your character is moving with respect to the way you're facing. So if you're
3366
			moving to the right and you're facing forward then the moveDirection will give you an angle of -90. If you're moving backward
3367
			and you're facing forward then the moveDirection will give you an angle of 180. I use this angle to adjust the crawling animation
3368
			so that you're arms move in the direction that you're moving so it looks more realistic rather than the arms constantly moving forward
3369
			
3370
			The moveVelocity gives you how fast you're moving in the X-Z plane. It doesn't take your Y-velocity into account so if you're falling your
3371
			moveVelocity will still be how fast you're moving horizontally. You can use this to adjust how fast the crawling animation runs so if you're
3372
			moving really slow the animation will play slower
3373
		--]]
3374
		return {
3375
			leftArm = CFrame.Angles( --This is what the cframe of the right arm will be when you're crawling
3376
				0,
3377
				math.rad(90),
3378
				math.rad(-10)
3379
			) * CFrame.new(
3380
				math.sin(moveDirection) * (math.sin(X * 6) / 4) - 0.2,
3381
				math.cos(moveDirection) * (math.sin(X * 6) / 2) - 0.1,
3382
				math.max(math.cos(X * 6) / 4, 0) - 0.1
3383
			) * CFrame.Angles(
3384
				-math.max(math.cos(X * 6) / 4, 0),
3385
				0,
3386
				0
3387
			);
3388
			leftLeg = CFrame.new( --This is what the cframe of the left leg will be when you're crawling
3389
				math.sin(moveDirection) * (-math.sin(X * 6) / 4) - 0.2,
3390
				math.cos(moveDirection) * (math.sin(X * 6) / 2) + 0.3,
3391
				math.max(math.cos(X * 6) / 4, 0) - 0.1
3392
			):inverse() * CFrame.Angles(
3393
				0,
3394
				0,
3395
				-math.rad(15) - math.cos(moveDirection) * (math.rad(15) * math.sin(X * 6))
3396
			);
3397
			rightArm = CFrame.Angles( --This is what the cframe of the left arm will be when you're crawling
3398
				0,
3399
				math.rad(-5),
3400
				math.rad(10)
3401
			) * CFrame.new(
3402
				math.sin(moveDirection) * (-math.sin(X * 6) / 4) + 0.2,
3403
				math.cos(moveDirection) * (-math.sin(X * 6) / 5) - 0.2,
3404
				math.max(math.cos((X + math.rad(30)) * 6) / 10, 0) - 0.1
3405
			) * CFrame.Angles(
3406
				-math.max(math.cos((X + math.rad(30)) * 6) / 10, 0),
3407
				0,
3408
				0
3409
			);
3410
			rightLeg = CFrame.new( --This is what the cframe of the right leg will be when you're crawling
3411
				math.sin(moveDirection) * (math.sin(X * 6) / 4) + 0.2,
3412
				math.cos(moveDirection) * (-math.sin(X * 6) / 2) + 0.3,
3413
				math.max(math.cos((X + math.rad(30)) * 6) / 4, 0) - 0.1
3414
			):inverse() * CFrame.Angles(
3415
				0,
3416
				0,
3417
				math.rad(15) - math.cos(moveDirection) * (math.rad(15) * math.sin(X * 6))
3418
			);
3419
			Grip = CFrame.Angles( --This is what the cframe of the grip will be when you're crawling
3420
				math.max(math.cos((X + math.rad(30)) * 6) / 7, 0),
3421
				math.rad(5),
3422
				0
3423
			);
3424
			Camera = 1.5 * math.rad(math.cos((X + math.rad(30)) * 6)) + math.rad(0.5); --This is what the roll of the camera will be when you're crawling
3425
		}
3426
	end;
3427
		
3428
	Idling = { --This table holds the Idling animations
3429
		
3430
		unAimed = function(X) --This is the animation when the gun is not aimed
3431
			return {
3432
				Pos = Vector3.new(
3433
					math.sin(X / 2) / 70, --Side to Side motion
3434
					math.sin(X * 5 / 4) / 70, --Up and Down motion
3435
					math.sin(X * 3 / 4) / 70 --Forward and backward motion
3436
				);
3437
				Rot = Vector3.new(
3438
					0, --Pitch rotation
3439
					0, --Yaw rotation
3440
					0 --Roll rotation
3441
				);
3442
			}
3443
		end;
3444
		
3445
		Aimed = function(X) --This is the animation when the gun is aimed
3446
			return {
3447
				Pos = Vector3.new(
3448
					math.sin(X * 3 / 8) / 140,
3449
					math.sin(X * 15 / 16) / 140,
3450
					0
3451
				);
3452
				Rot = Vector3.new(
3453
					0,
3454
					0,
3455
					0
3456
				);
3457
			}
3458
		end;
3459
		
3460
	};
3461
	
3462
	Walking = { --This table holds the Walking animations
3463
		
3464
		unAimed = function(X) --This is the animation when the gun is not aimed
3465
			return {
3466
				Pos = Vector3.new(
3467
					4 * math.sin(X * 4.5) / 50,
3468
					1.5 * math.sin(X * 9) / 50,
3469
					0
3470
				);
3471
				Rot = Vector3.new(
3472
					0,
3473
					0,
3474
					math.rad(math.sin(X * 4.5)) * 2
3475
				);
3476
			}
3477
		end;
3478
		
3479
		Aimed = function(X) --This is the animation when the gun is aimed
3480
			return {
3481
				Pos = Vector3.new(
3482
					2 * math.sin(X * 3) / 150,
3483
					0.75 * math.sin(X * 6) / 150,
3484
					0
3485
				);
3486
				Rot = Vector3.new(
3487
					0,
3488
					0,
3489
					math.rad(math.sin(X * 3)) / 3
3490
				);
3491
			}
3492
		end;
3493
		
3494
	};
3495
	
3496
	Running = function(X) --This is the animation when the player is running
3497
		return {
3498
			Pos = Vector3.new(
3499
				4 * math.sin(X * 4.5 * 1.5) / 30,
3500
				1.5 * math.sin(X * 9 * 1.5) / 40 + 0.2,
3501
				0
3502
			);
3503
			Rot = Vector3.new(
3504
				0,
3505
				-math.rad(math.sin(X * 4.5 * 1.5)) * 5 + math.rad(3),
3506
				math.rad(math.sin(X * 4.5 * 1.5)) * 5
3507
			);
3508
		}
3509
	end;
3510
	
3511
}
3512
local Plugins = {
3513
	
3514
	KeyDown = {
3515
		{ --This is a plugin for a toggleable laser
3516
			Key = "v"; --This is the key you press to activate the plugin
3517
			Description = "Toggle Laser"; --This is what the description of the key will be in the controls
3518
			Plugin = function() --This is the actual plugin function
3519
				local Laser = Gun:WaitForChild("Laser") --These few lines wait for the necessary bricks/models
3520
				local Handle = Gun:WaitForChild("Handle")
3521
				local ignoreCode = Gun.clientMain:WaitForChild("ignoreCode")
3522
				local ignoreModel = game.Workspace:WaitForChild("ignoreModel_"..ignoreCode.Value)
3523
				
3524
				local PlyrName = game.Players:GetPlayerFromCharacter(Gun.Parent).Name
3525
				local playerFolder = ignoreModel:WaitForChild("gunIgnore_"..PlyrName)
3526
				
3527
				local RS = game:GetService("RunService")
3528
				
3529
				local function createLaserDot() --This function creates the red laser dot
3530
					local laserDot = Instance.new("Part")
3531
					laserDot.Transparency = 1
3532
					laserDot.Name = "laserDot"
3533
					laserDot.Anchored = true
3534
					laserDot.CanCollide = false
3535
					laserDot.FormFactor = Enum.FormFactor.Custom
3536
					laserDot.Size = Vector3.new(0.25, 0.25, 1)
3537
					
3538
					local laserGui = Instance.new("SurfaceGui")
3539
					laserGui.CanvasSize = Vector2.new(100, 100)
3540
					laserGui.Parent = laserDot
3541
					
3542
					local laserImage = Instance.new("ImageLabel")
3543
					laserImage.BackgroundTransparency = 1
3544
					laserImage.Size = UDim2.new(1, 0, 1, 0)
3545
					laserImage.Image = "http://www.roblox.com/asset/?id=131394739"
3546
					laserImage.Parent = laserGui
3547
					
3548
					--[[local laserLight = Instance.new("SurfaceLight")
3549
					laserLight.Angle = 180
3550
					laserLight.Brightness = math.huge
3551
					laserLight.Color = Color3.new(1, 0, 0)
3552
					laserLight.Face = Enum.NormalId.Back
3553
					laserLight.Range = 5
3554
					laserLight.Shadows = true
3555
					laserLight.Parent = laserDot]]
3556
					
3557
					return laserDot
3558
				end
3559
				
3560
				local function getHitSurfaceCFrame(Pos, Obj) --This function returns the proper cframe based on the face that the position is on
3561
					local surfaceCF = {
3562
						{"Back", Obj.CFrame * CFrame.new(0, 0, Obj.Size.z)};
3563
						{"Bottom", Obj.CFrame * CFrame.new(0, -Obj.Size.y, 0)};
3564
						{"Front", Obj.CFrame * CFrame.new(0, 0, -Obj.Size.z)};
3565
						{"Left", Obj.CFrame * CFrame.new(-Obj.Size.x, 0, 0)};
3566
						{"Right", Obj.CFrame * CFrame.new(Obj.Size.x, 0, 0)};
3567
						{"Top", Obj.CFrame * CFrame.new(0, Obj.Size.y, 0)}
3568
					}
3569
					local closestDist = math.huge
3570
					local closestSurface = nil
3571
					for _,v in pairs(surfaceCF) do
3572
						local surfaceDist = (Pos - v[2].p).magnitude
3573
						if surfaceDist < closestDist then
3574
							closestDist = surfaceDist
3575
							closestSurface = v
3576
						end
3577
					end
3578
					
3579
					local surfaceDir = CFrame.new(Obj.CFrame.p, closestSurface[2].p)
3580
					local surfaceDist = surfaceDir.lookVector * ((Obj.CFrame.p - closestSurface[2].p).magnitude / 2 - 0.25)
3581
					local surfaceOffset = Pos - closestSurface[2].p + surfaceDist
3582
					local surfaceCFrame = surfaceDir + surfaceDist + surfaceOffset
3583
					
3584
					return surfaceCFrame
3585
				end
3586
				
3587
				local laserDot = createLaserDot() --The code is cleaner when the laser creating code is in a function
3588
				
3589
				Laser.Transparency = (Laser.Transparency == 1 and 0 or 1) --Toggles the laser on or off
3590
				
3591
				while math.floor(Laser.Transparency) == 0 do --This loop will keep running as long as the laser is visible
3592
					if (not game.Players:GetPlayerFromCharacter(Gun.Parent)) then break end --This checks if the gun is a child of the character
3593
					
3594
					local newRay = Ray.new(Laser.Position, Handle.CFrame.lookVector * 999)
3595
					local H, P = game.Workspace:FindPartOnRay(newRay, ignoreModel)
3596
					
3597
					local Distance = (P - Laser.Position).magnitude
3598
					Laser.Mesh.Offset = Vector3.new(0, Distance / 2, 0)
3599
					Laser.Mesh.Scale = Vector3.new(0.075, Distance / 0.2, 0.075)
3600
					
3601
					if H then
3602
						laserDot.CFrame = getHitSurfaceCFrame(P, H) --If the laser hits a part then position the dot on the part
3603
						laserDot.Parent = playerFolder
3604
					else
3605
						laserDot.Parent = nil --If the laser doesn't hit a part then temporarily remove the laser dor
3606
					end
3607
					
3608
					RS.RenderStepped:wait()
3609
				end
3610
				
3611
				laserDot:Destroy() --These lines reset the laser if the laser is transparent or the gun was deselected
3612
				Laser.Transparency = 1
3613
				Laser.Mesh.Offset = Vector3.new()
3614
				Laser.Mesh.Scale = Vector3.new(0.075, 0, 0.075)
3615
			end;
3616
		};
3617
		
3618
		{ --This is a plugin for a toggleable flashlight
3619
			Key = "z";
3620
			Description = "Toggle Flashlight";
3621
			Plugin = function()
3622
				local Flashlight = Gun:WaitForChild("Flashlight")
3623
				if Flashlight then
3624
					for _, Light in pairs(Flashlight:GetChildren()) do
3625
						if Light.Name == "Light" then
3626
							Light.Enabled = (not Light.Enabled)
3627
						end
3628
					end
3629
				end
3630
			end
3631
		};
3632
	};
3633
	
3634
	KeyUp = {
3635
		
3636
	};
3637
	
3638
	Firing = {
3639
		Plugin = function()
3640
			--Put code here
3641
		end;
3642
	};
3643
	
3644
	Aimed = {
3645
		Plugin = function()
3646
			--Put code here
3647
		end;
3648
	};
3649
	
3650
	UnAimed = {
3651
		Plugin = function()
3652
			--Put code here
3653
		end;
3654
	};
3655
	
3656
	OnEquipped = {
3657
		Plugin = function()
3658
			--Put code here
3659
		end
3660
	};
3661
	
3662
	OnUnEquipped = {
3663
		Plugin = function()
3664
			--Put code here
3665
		end
3666
	};
3667
	
3668
}
3669
local S = { 
3670
	
3671
	
3672
	gunType = { --[[These are the 5 gun types you can have. Set whichever ones you want to true. (NOTE: Semi and Auto can't both be
3673
		true, and Burst and Auto can't both be true)]]
3674
		Semi = true; --Set this true if you want the gun to be semi-automatic. (Pistols, Snipers, etc)
3675
		Auto = false; --Set this true if you want the gun to be fully automatic. (Assault Rifles, Submachine guns, machine guns, etc)
3676
		Burst = false; --Set this true if you want the gun to be burst fire. (Battle rifles, assault rifles, etc)
3677
		Shot = true; --Set this true if you want the gun to be a shotgun. (NOTE: Shot and auto can both be true)
3678
		Explosive = true; --Set this true if you want the projectiles to be explosive. (Rocket launchers, grenade launchers, etc)
3679
	};
3680
	
3681
	selectFire = true; --This is whether or not select fire is enabled
3682
	selectFireSettings = {
3683
		Animation = true; --This is whether or not there will be an animation for when you switch fire modes
3684
		GUI = true; --This is whether or not a gui appears showing the fire being selected
3685
		Modes = { --This the list of modes you can switch between
3686
			Safety = true; --This mode doesn't allow any form of firing
3687
			Semi = true; --This mode allows semi-automatic firing
3688
			Burst = false; --This mode allows burst fire. The burst will be based on the burstSettings below
3689
			Auto = false; --This mode allows fully automatic fire
3690
		};
3691
		animSpeed = 0.5; --This is how long it takes to switch fire if GUI or Animation is true. If neither are true, then switching will be instant
3692
	};
3693
	
3694
	
3695
	burstSettings = {
3696
		fireRateBurst = true; --[[If this is true, then the burst time and wait will be adjusted so the bullet firing speed is the fire rate. If this
3697
			is false, then the burst time and burst wait will be the values below]]
3698
		Amount = 3; --This is how many bullets will be fired in one burst (if Burst is true)
3699
		Time = 0.2; --This is how long it takes for a burst to complete
3700
		Wait = 0.1; --This is how much time you have to wait before you can fire another burst
3701
	};
3702
	
3703
	
3704
	shotAmount = 8; --This is how many bullets will be fired in one shot (if Shot is true)
3705
	
3706
	
3707
	explosionSettings = {
3708
		Radius = 50; --This is the radius of the explosion when the bullet hits a target. (If Explosive is true)
3709
		Pressure = 5e5; --This is the pressure of the explosion when the bullet hits the target
3710
		Type = Enum.ExplosionType.NoCraters; --This is the type of explosion
3711
		--[[
3712
		(0 or "NoCraters" or Enum.ExplosionType.NoCraters) means that the explosion will not damage terrain
3713
		(1 or "Craters" or Enum.ExplosionType.Craters) means that the explosion will leave craters in terrain
3714
		(2 or "CratersAndDebris" or Enum.ExplosionType.CratersAndDebris) means that the explosion will leave craters and debris in terrain
3715
		--]]
3716
		soundId = "rbxassetid://138499093"; --This is what the sound of the explosion will be
3717
		soundPitch = 1; --This is what the pitch of the explosion sound will be
3718
		soundVolume = 1; --This is what the volume of the explosion sound will be
3719
		rayCastExplosions = true; --[[This is whether or not explosions will have raycasting. If this is true, humanoids behind walls
3720
		won't be damaged. If this is false, any humanoid within the radius will be damaged. (NOTE: RangeBasedDamage has to be true in
3721
		order for explosions to have raycasting)]]
3722
		rangeBasedDamage = true; --[[This is whether or not will depend on how far the object is from the center of the explosion. If this
3723
		is true, the farther a humanoid is from the blast center, the less damage it'll take. If this is false, any object within
3724
		the explosion's radius will have its joints broken]]
3725
	};
3726
	
3727
	
3728
	playerArms = true; --This is whether or not the fake arms will look like the Player's arms
3729
	fakeArmSettings = {
3730
		Transparency = 0; --This is the transparency of the fake arms
3731
		armSize = Vector3.new(0.6, 2, 0.6); --This is the size of the fake player arms if playerArms is true
3732
		characterMeshes = false; --This is whether or not the fake player arms will have the arm meshes if playerArms is true
3733
		realBodyColor = true; --This is whether or not the color of the fake arm will be the color of the player's real arms
3734
		Color = BrickColor.new("Pastel brown"); --This is what the color of the fake arms will be if realBodyColor is false
3735
	};
3736
	
3737
	
3738
	unAimedC1 = { --This table contains the CFrames of welds when the gun is not aimed
3739
		leftArm = CFrame.new(-0.7, 1.6, -0.8) * CFrame.Angles(math.rad(-10), 0, math.rad(-30));
3740
		rightArm = CFrame.new(0.4, 0.25, -0.3) * CFrame.Angles(0, 0, math.rad(25));
3741
		Grip = CFrame.Angles(0, math.rad(25), 0);
3742
	};
3743
	aimedC1 = { --This table contains the CFrames of welds when the gun is aimed
3744
		leftArm = CFrame.new(-0.1, 1, -0.3) * CFrame.Angles(math.rad(-10), 0, 0) * CFrame.Angles(0, 0, math.rad(-40));
3745
		rightArm = CFrame.new(0.5, 0.3, 0.1) * CFrame.Angles(0, 0, math.rad(45));
3746
	};
3747
	runningC1 = { --This table contains the CFrames of welds when you're running
3748
		leftArm = CFrame.new(-0.65, 0.85, -1) * CFrame.Angles(math.rad(1), math.rad(-8.5), math.rad(16));
3749
		rightArm = CFrame.new(0.16, 1, -0.14) * CFrame.Angles(math.rad(15), math.rad(2), math.rad(50));
3750
		Grip = CFrame.Angles(0, math.rad(-5), 0);
3751
	};
3752
	
3753
	
3754
	equipAnimation = true; --This is whether or not an equipping animation will play when you equip the gun
3755
	equipSettings = {
3756
		Time = 0.25; --This is how long it takes for the equip animation to play
3757
		leftArmC1 = CFrame.new(0.2, 1.2, 0) * CFrame.Angles(math.rad(105), math.rad(-30), math.rad(90)); --This is the left arm C1 when you equip the gun
3758
		rightArmC1 = CFrame.new(-0.5, 0.75, 0) * CFrame.Angles(math.rad(45), 0, math.rad(75)); --This is the right arm C1 when you equip the gun
3759
		GripC1 = CFrame.new(); --This is the C1 of the grip when you equip the gun
3760
	};
3761
	
3762
	
3763
	stopAnimsOnFall = true; --This is whether or not the movement animation will stop when you're falling
3764
	fallAnimation = true; --This is whether or not there will be animation for falling and landing
3765
	fallSettings = {
3766
		maxDist = 35; --This is the cut off fall distance for the landing animation. If you fall any farther it'll be treated as if you fell this distance
3767
		landMultiplier = 1; --This is how far the arms go down and rotate when you land. The larger the number the bigger the effect of the animation
3768
		fallMultiplier = 1; --This is how far the arms go up and rotate when you fall. The larger the number the bigger the effect of the animation
3769
		aimEffect = 0.25; --[[This is how many times of an effect the falling and landing animation has when you're aimed. The smaller the number the lesser
3770
		the effect]]
3771
	};
3772
	
3773
	
3774
	gunMomentum = true; --This is whether or not there will be a gun swaying animation for when you move your mouse around
3775
	momentumSettings = {
3776
		maxInput = 18; --This is the maximum mouse delta that will be used as input for the sway
3777
		Speed = 20; --This is the speed of the gun momentum
3778
		Damper = 0.5; --[[This is the dampening effect of the gun momentum. NOTE: This number must be between 0 and 1, 0 being forever swaying and 1 being
3779
		instant dampening]]
3780
		Amplitude = { --These are the amplitudes of the gun momentum
3781
			unAimed = 5;
3782
			Aimed = 1;
3783
		}
3784
	};
3785
	
3786
	
3787
	cockingAnim = false; --This is whether or not a cocking animation will play between every shot (for shotguns and bolt action guns)
3788
	movementAnims = true; --This is whether or not the player will have movement animations
3789
	
3790
	
3791
	canADS = true; --This is whether or not the gun can ADS
3792
	aimSettings = {
3793
		Anim = true; --This is whether or not there is an animation for aiming down the sights
3794
		Speed = 0.3; --This is how long the gun will take to fully aim down the sights
3795
		FOV = 37; --This is the FOV that the Camera will have when the gun is fully aimed down
3796
		holdToADS = true; --This is whether or not you have to hold the right mouse or the ADS key to ADS
3797
		headTilt = math.rad(25); --This is what angle the head tilts at when you ADS
3798
	};
3799
	
3800
	
3801
	sensitivitySettings = {
3802
		Default = 1; --This is what the sensitivity of the mouse will be when the gun is not aimed. 1 is the default
3803
		Aim = 0.3; --[[This is what the sensitivity of the mouse will be when the gun is aimed. The smaller the MaxZoom,
3804
		the smaller the sensitivity should be (i.e. Scoped guns should have a sensitivity of around 0.2 or less]]
3805
		
3806
		scrollToChange = true; --This is whether or not scrolling the mouse changes the aim sensitivity
3807
		Min = 0.05; --This is the lowest the sensitivity can be
3808
		Max = 1; --This is the highest the sensitivity can be
3809
		Increment = 0.05; --This is what the increment for the sensitivity is when you scroll
3810
	};
3811
	
3812
	
3813
	guiScope = false; --This is whether or not your Scope will be a gui instead of a normal sight
3814
	scopeSettings = {
3815
		Frequency = { --This is the how fast the camera sway is. The larger the number the faster the camera moves
3816
			Idling = 0.7; --This is the frequency when you're idling
3817
			Walking = 2; --This is the frequency when you're walking
3818
		};
3819
		Amplitude = { --This is the how wide the camera sway is. The larger the number the wider the sway
3820
			Idling = 0.75; --This is the amplitude when you're idling
3821
			Walking = 0.75; --This is the amplitude when you're walking
3822
		};
3823
		steadyTime = 8; --This is how long you can hold your breath to steady the scope
3824
		breathTime = 5; --This is how long it takes to fully retake your breath
3825
		camSwayOnBreath = 2.5; --This is what the cam sway multiplier will be when you start your retake your breath
3826
		unSteadyOnFire = true; --This is whether or not the camera will become unsteady when you fire the gun
3827
	};
3828
	
3829
	
3830
	roundsPerMin = 100; --This is how many bullets per minute the gun will fire
3831
	
3832
	
3833
	bulletSettings = {
3834
		instantHit = true; --[[This is whether or not the bullet will hit a target instantly. If it is false, the bullet will travel at a
3835
			specific speed till it hits a target]]
3836
		Range = 870; --This is how far the bullet will travel in studs before it is no longer effective
3837
		Velocity = 540; --This is how fast the bullet will travel in studs per second
3838
		Acceleration = 196.2; --This is the bullet's acceleration downward (196.2 is normal roblox gravity)
3839
		Color = BrickColor.new("Bright red"); --This is the color of the bullet
3840
		Transparency = 0; --This is the transparency of the bullet
3841
		Size = Vector3.new(0.1, 0.1, 5); --This is how big the bullet will look
3842
	};
3843
	
3844
	
3845
	damageSettings = {
3846
		--[[The start and end damages are basically a representation of this: http://goo.gl/SiWaTj, which is a basically a graph showing the starting damage
3847
		value for the gun at a distance percent from 0 to 100 and the ending damage value for the gun at a distance percent from 0 to 100. Before the bullet
3848
		hits the starting distance percent, the damage is the starting damage. Once it goes past the starting distance percent, it steadily drops til it hits
3849
		the ending damage. After the ending damage percent, it'll stay that damage.]]
3850
		Start = {
3851
			Damage = 170; --The starting damage
3852
			Dist = 0.08; --[[A value between 0 and 1 which represents the distance percent. So if the bullet range is 1000 studs and this value is 0.5, then
3853
			the damage will be the starting damage until the bullet travels 0.5*1000 studs or 500 studs]]
3854
		};
3855
		End = {
3856
			Damage = 205; --The ending damage
3857
			Dist = 0.5; --A value between 0 and 1 which represents the distance percent for the ending damage
3858
		};
3859
		Multipliers = { --[[These are the damage multipliers. There's a spread of +0.1. That means that if the multiplier is 1, the actual
3860
			multiplier will range from 1 - 1.1]]
3861
			Chest = 1; --This is what the damage will be multiplied by if the bullet hits the chest
3862
			Head = 10; --This is what the damage will be multiplied by if the bullet hits the head or a hat
3863
			Limbs = 1; --This is what the damage will be multiplied by if the bullet hits a limb (Arms or legs)
3864
		};
3865
	};
3866
	
3867
	
3868
	AllowFriendlyFire = false; --This is whether or not you can damage teammates
3869
	CanDamageNPCs = true; --This is whether or not you can damage NPC's (Zombies, fake players, anything with a humanoid)
3870
	
3871
	
3872
	CanKnife = true; --This is whether or not you can knife
3873
	AutoKnife = false; --This is whether or not the gun will automatically knife if an enemy is within a specific distance
3874
	AutoKnifeDist = 4; --This is how many studs away an enemy has to be for the gun to auto knife
3875
	KnifeMeshId = "http://www.roblox.com/asset/?id=121944778"; --This is the Mesh of the knife
3876
	KnifeTextureId = "http://www.roblox.com/asset/?id=121944805"; --This is the Texture of the knife
3877
	KnifeCooldown = 0.5; --This is how long you have to wait before you can knife again
3878
	KnifeAnim = 1; --This is the type of knife animation
3879
	--[[
3880
		Type 1: An animation that swings a knife from the left of the body to the right of the body
3881
		Type 2: An animation that stabs the knife forward from the center of the body
3882
	--]]
3883
	
3884
	
3885
	Throwables = true; --This is whether or not you have grenades
3886
	TrajectoryAssist = true; --This is whether or not the script will show you the flight path of the grenade before you throw it
3887
	DetonationTime = 2; --[[This is how long the grenade will wait to detonate (If DetonateOnHit is false, this is how long the
3888
		grenade will wait after the pin is pulled. If true, this is how long the grenade will wait after it hits something]]
3889
	TimerStartOnHit = false; --This is whether or not the timer will start when the grenade hits something
3890
	GrenadeSize = Vector3.new(0.8, 0.8, 0.8); --This is the size of the grenade (Doesn't apply to throwing knives)
3891
	
3892
	
3893
	LethalGrenadeColor = BrickColor.new("Bright green"); --This is the color of the lethal grenade
3894
	GrenadeBlastRadius = 20; --This is the blast radius of the explosion (Doesn't apply to non-explosive grenades)
3895
	GrenadeBlastPressure = 6e5; --This is what the blast pressure of the explosion (Doesn't apply to non-explosive grenades)
3896
	GrenadeExplosionType = Enum.ExplosionType.NoCraters; --This is the type of explosion (Doesn't apply to non-explosive grenades)
3897
	--[[
3898
	(0 or "NoCraters" or Enum.ExplosionType.NoCraters) means that the explosion will not damage terrain
3899
	(1 or "Craters" or Enum.ExplosionType.Craters) means that the explosion will leave craters in terrain
3900
	(2 or "CratersAndDebris" or Enum.ExplosionType.CratersAndDebris) means that the explosion will leave craters and debris in terrain
3901
	--]]
3902
	LethalAnimationTime = 1.5; --This is how long the throwing animation for the lethal will take
3903
	LethalGrenadeDamage = 150; --This is max damage that the grenade will do
3904
	LethalGrenadeThrowVelocity = 200; --This is the speed at which the lethal grenade is thrown
3905
	GrenadeRayCastExplosions = true; --[[This is whether or not grenade explosions will have raycasting. If this is true, humanoids
3906
		behind walls won't be damaged. If this is false, any humanoid within the radius will be damaged. (NOTE: GrenadeRangeBasedDamage
3907
		has to be true in order for explosions to have raycasting)]]
3908
	GrenadeRangeBasedDamage = true; --[[This is whether or not will depend on how far the object is from the center of the explosion.
3909
		If this is true, the farther a humanoid is from the blast center, the less damage it'll take. If this is false, any object
3910
		within the explosion's radius will have its joints broken]]
3911
	LethalGrenadeType = 4; --This is the lethal grenade type
3912
	--[[
3913
		Type 1: Frag grenade [An explosive grenade]
3914
		Type 2: Sticky [An explosive grenade that sticks to a surface]
3915
		Type 3: Throwing Knife [A throwable knife]
3916
		Type 4: Molotov [A grenade that explodes in flames on impact]
3917
	--]]
3918
	
3919
	TacticalGrenadeColor = BrickColor.new("Brick yellow"); --This is the color of the lethal grenade
3920
	TacticalAnimationTime = 1.5; --This how long the throwing animation for the tactical will take
3921
	TacticalGrenadeThrowVelocity = 200; --This is the speed at which the tactical grenade is thrown
3922
	GrenadeEffectRadius = 70; --[[This is the radius of the effect of the grenade. If the Grenade is a smoke, this is the radius of
3923
		the smoke]]
3924
	GrenadeEffectTime = 10; --[[This is the how long the grenade effect will last. If the grenade is a smoke, this is how long the
3925
		smoke will linger]]
3926
	TacticalGrenadeType = 1; --This is the tactical grenade type
3927
	--[[
3928
		Type 1: Smoke grenade [A grenade that creates a cloud of smoke]
3929
		Type 2: Flashbang [A grenade that temporarily blinds and deafens players]
3930
	--]]
3931
	
3932
	
3933
	GrenadeTrail = true; --This is whether or not the grenade will have a trail
3934
	GrenadeTrailColor = BrickColor.new("Black"); --This is the color of the grenade trail
3935
	GrenadeTrailTransparency = 0.6; --This is the transparency of the trail
3936
	GrenadeTrailThickness = 0.3; --This is the thickness of the trail
3937
	GrenadeTrailVisibleTime = 0.2; --This is how long the trail will be visible for
3938
	GrenadeTrailDisappearTime = 0.2; --This is how long it will take for the trail to disappear
3939
	
3940
	
3941
	bulletTrail = true; --This is whether or not there will be a trail behind the bullet
3942
	trailSettings = {
3943
		Color = BrickColor.new("Lime green"); --This is the color of the bullet trail
3944
		Transparency = 0.6; --This is the transparency of the trail
3945
		Thickness = 0.2; --This is the thickness of the trail
3946
		visibleTime = 0; --This is how long the trail will be visible for
3947
		disappearTime = 0.5; --This is how long it will take for the trail to disappear
3948
	};
3949
	
3950
	
3951
	bulletHoles = true; --This is whether or not bullet holes will appear where you shot
3952
	holeSettings = {
3953
		Texture = "http://www.roblox.com/asset/?id=64291961"; --This is the texture of the bullet hole
3954
		Size = 0.5; --This is how big the bullet hole will be in studs
3955
		visibleTime = 3; --This is how long the bullet hole will be visible for
3956
		disappearTime = 1; --This is how long it will take for the bullet hole to disappear
3957
	};
3958
	
3959
	
3960
	bulletSparks = true; --This is whether or not sparks will fly when a bullet hits a surface
3961
	customSparks = false; --[[This is whether or not the script will use a user-created sparks. In order for the gun kit to use a user-created sparks,
3962
	it has to be a particle emitter in the ServerStorage and it has to be called "bulletSpark"]]
3963
	sparkSettings = { --These settings only apply if customSparks is false
3964
		Color = {
3965
			Start = Color3.new(1, 158 / 255, 24 / 255); --This is the start color of the sparks
3966
			End = Color3.new(212 / 255, 242 / 255, 8 / 255); --This is the end color of the sparks
3967
		};
3968
		Size = 0.25; --This is the size of the sparks
3969
		Texture = "http://www.roblox.com/asset/?id=311395391"; --This is the texture of the sparks
3970
		Lifetime = 0.2; --This is the lifetime of each spark in seconds +-0.05 seconds
3971
		Rate = 75; --This is the number of sparks that fly
3972
		Speed = 25; --This is the speed at which the sparks fly +-5 studs/sec
3973
		Spread = 45; --This is the angle in degrees at which the sparks spread out (0 means single line, 180 means all around)
3974
		Materials = { --This is the list of the materials which cause bullet sparks. You can add or remove materials from this list
3975
			Enum.Material.Plastic;
3976
			Enum.Material.Slate;
3977
			Enum.Material.Concrete;
3978
			Enum.Material.CorrodedMetal;
3979
			Enum.Material.DiamondPlate;
3980
			Enum.Material.Foil;
3981
			Enum.Material.Marble;
3982
			Enum.Material.Granite;
3983
			Enum.Material.Brick;
3984
			Enum.Material.Pebble;
3985
			Enum.Material.SmoothPlastic;
3986
			Enum.Material.Metal;
3987
			Enum.Material.Cobblestone;
3988
		};
3989
	};
3990
	
3991
	
3992
	bulletSmoke = true; --This is whether or not smoke particles will fly when a bullet hits a surface
3993
	smokeSettings = {
3994
		objColor = true; --This is whether or not the smoke color will be the color of the object the bullet hit
3995
		Color = Color3.new(0.5, 0.5, 0.5); --This is what the color of the smoke will be if objColor is false
3996
		Size = {
3997
			Start = 0.25; --This is what the starting size of the smoke will be
3998
			End = 0.5; --This is what the ending size of the smoke will be
3999
		};
4000
		Texture = "http://www.roblox.com/asset/?id=244514423"; --This is what the texture of the smoke will be
4001
		startTransparency = 0; --This is what the transparency of the particle starts at. It gradually goes to 1
4002
		Lifetime = 0.2; --This is the lifetime of each smoke particle +-0.05 seconds
4003
		Rate = 100; --This is the number of smoke particles that fly
4004
		Speed = 35; --This is the speed at which the smoke particles fly +-5 studs/sec
4005
		Spread = 15; --This is the angle in degrees at which the smoke particles spread out (0 means single line, 180 means all around)
4006
	};
4007
	
4008
	
4009
	bloodEffect = true; --This is whether or not blood particles will appear from the bullet exit position when a humanoid is shot
4010
	bloodSettings = {
4011
		Color = Color3.new(1, 0, 0); --This is what the color of the blood will be
4012
		Size = 0.1; --This is what the size of the blood will be with an +-0.1
4013
		Texture = "http://www.roblox.com/asset/?id=3419963"; --This is what the texture of the blood will be
4014
		startTransparency = 0.125; --This is what the starting transparency of the blood will be +-0.125
4015
		Lifetime = 0.1; --This is what the lifetime of each blood particle +-0.05 seconds
4016
		Rate = 200; --This is the number of blood particles that appear
4017
		Speed = 50; --This is the speed at which the blood particles fly
4018
		Spread = 15; --This is the angle in degrees at which the blood particles spread out (0 means single line, 180 means all around)
4019
	};
4020
	
4021
	
4022
	bulletShockwave = true; --This is whether or not a shockwave will appear where you shot. (A sphere that appears when the bullet hits)
4023
	shockwaveSettings = {
4024
		Radius = 0.3; --This is the radius of the shockwave. (If the gun type is explosion, this radius will be the blast radius)
4025
		Color = BrickColor.new("Light stone grey"); --This is the color of the shockwave
4026
		Duration = 0.2; --This is how long the shockwave will take to disappear
4027
	};
4028
	
4029
	
4030
	penetrationSettings = {
4031
		Dist = 0; --This is the maximum amount of studs a bullet can penetrate into a wall (that isn't ignored)
4032
		transparencyThreshold = 1; --This is what the transparency of a wall has to be greater than or equal to in order to be ignored
4033
		ignoreNonCanCollide = true; --This is whether or not the script should ignore non-cancollide parts
4034
		ignoreCustom = {}; --This is a table of objects that will be ignored by the script. The object and it's descendants will be ignored
4035
	};
4036
	
4037
	
4038
	recoilSettings = {
4039
		firstShotMultiplier = 2.4; --This is what the recoil multiplier for the first shot will be. The rest of the shots will be normal recoil
4040
		aimedMultiplier = 0.5; --When you're aimed, this is what the recoil will be multiplied by
4041
		camMultiplier = 2; --This is what the gun up recoil will be multiplied by to get you the cam recoil
4042
		springSpeed = 15; --This is the what the speed of the gun's recoil spring will be. The lower it is the slower the gun sways around
4043
		springDamper = 0.5; --This is a number between 0 and 1 that determines how quickly the spring will be dampened.
4044
		Recoil = {
4045
			Side = { --This is the side to side gun and camera recoil
4046
				Left = -0.17;
4047
				Right = 0.28;
4048
			};
4049
			Up = { --This is the up and down gun and camera recoil
4050
				Min = 0.26;
4051
				Max = 0.28;
4052
			};
4053
			Back = { --[[This is the kick back gun recoil. NOTE: The numbers below are the amount the gun moves back, so the gun will move back
4054
				a value/2 amount of studs. So if the min is 0.25 and the max is 0.3, the gun will move back anywhere between 0.025 and 0.03 studs]]
4055
				Min = 0.3;
4056
				Max = 0.35;
4057
			};
4058
			Tilt = { --[[This is tilt camera recoil. NOTE: The numbers below are the amount of deca-degrees the camera tilts, so if the left is -1
4059
				and the right is 1 then the gun will tilt anywhere between -10 degress and 10 degrees]]
4060
				Left = -0.5;
4061
				Right = 0.5;
4062
			};
4063
		}
4064
	};
4065
	
4066
	
4067
	spreadSettings = {
4068
		Increase = 0.1; --This is what is added to the spread of the bullet every time you fire
4069
		Decrease = 15; --This is what the spread of the bullet decreases by per second
4070
		
4071
		--[[This spread values are how many degrees offset the bullets will travel from the center, so a spread of 1 would mean that the bullet's
4072
		max spread in any direction is 1 degree from the center. The idling category is when you're not moving, and the moving category is when
4073
		you're moving]]
4074
		Aimed = {
4075
			Stand = {
4076
				Idling = 0.2;
4077
				Moving = 0.4;
4078
			};
4079
			Crouch = {
4080
				Idling = 0.15;
4081
				Moving = 0.3;
4082
			};
4083
			Prone = {
4084
				Idling = 0.1;
4085
				Moving = 0.3;
4086
			};
4087
		};
4088
		unAimed = {
4089
			Stand = {
4090
				Idling = 2;
4091
				Moving = 2.5;
4092
			};
4093
			Crouch = {
4094
				Idling = 1.5;
4095
				Moving = 2;
4096
			};
4097
			Prone = {
4098
				Idling = 1;
4099
				Moving = 2;
4100
			};
4101
		};
4102
	};
4103
	
4104
	
4105
	reloadSettings = {
4106
		Anim = true; --This is whether or not there is an animation for reloading
4107
		Times = {
4108
			Loaded = 3; --This is how long it takes to reload the gun if a bullet is already chambered
4109
			Empty = 3; --This is how long it takes to reload the gun if a bullet isn't chambered
4110
		};
4111
		autoReload = true; --This is whether or not the gun will reload automatically when the ammo reaches 0
4112
		magIsBullet = false; --This is whether or not the mag is the bullet itself. This is useful for guns with only 1 bullet per clip
4113
		reloadWhileRunning = true; --This is whether or not you can reload while running
4114
	};
4115
	
4116
	
4117
	sprintTime = 15; --This is the maximum time you can sprint
4118
	staminaCoolTime = 4; --This is how long it takes for your stamina to fully recharge
4119
	canFireWhileRunning = false; --This is whether or not you can shoot while sprinting
4120
	
4121
	
4122
	dolphinDive = true; --This is whether or not you can dolphin dive (Run and crouch at the same time to dive)
4123
	diveSettings = {
4124
		rechargeTime = 1; --This is how long you have to wait till you can dive or run again after you've dived
4125
		Force = 350; --This is the multiplier for the dolphin dive force. The higher it is the farther you'll dive
4126
		Angle = math.rad(30); --This is the angle in radians from the ground that you dive at
4127
	};
4128
	
4129
	
4130
	canChangeStance = true; --This is whether or not you can change stance. That means whether or not you can crouch or go prone
4131
	stanceSettings = {
4132
		Anim = true; --This is whether or not there is an animation for changing stance
4133
		Speed = 0.3; --This is how quickly you change stance
4134
		Stances = {
4135
			Crouch = true; --This is whether or not you can crouch
4136
			Prone = true; --This is whether or not you can go prone
4137
		};
4138
		standOnDeselect = true; --This is whether or not you stand up when you deselect the tool
4139
		crawlAnimation = true; --This is whether or not you crawl while moving when you're prone
4140
	};
4141
	
4142
	
4143
	walkSpeeds = {
4144
		Base = 14; --This is the base walkspeed
4145
		Sprinting = 28; --This is the walkspeed when you're sprinting
4146
		Aimed = 10; --[[This is the base walkspeed when the gun is aimed down. If you crouch or go prone, the speed will change
4147
		based on the Aimed walkspeed to Base walkspeed ratio]]
4148
		Crouched = 7; --This is the walkspeed when you're crouched
4149
		Prone = 4; --This is the walkspeed when you're prone
4150
	};
4151
	
4152
	
4153
	--NOTE: For extra keys, go here: http://wiki.roblox.com/index.php?title=Taking_keyboard_input
4154
	Keys = {
4155
		lowerStance = "c"; --This is the key you press to lower your stance (Stand > Crouch > Prone)
4156
		raiseStance = "x"; --This is the key you press to raise your stance (Prone > Crouch > Stand)
4157
		selectFire = "e"; --This is the key you press to switch fire modes
4158
		Reload = "r"; --This is the key you press to reload
4159
		Sprint = string.char(48); --This is the key you press to sprint
4160
		Knife = "f"; --This is the key you press to knife
4161
		lethalGrenade = "g"; --This is the key you press to throw the lethal grenade
4162
		tacticalGrenade = "t"; --This is the key you press to throw the tactical grenade
4163
		ADS = "q"; --This is the key you press to ADS. If you want ADS to just be right mouse, then make this key ""
4164
		scopeSteady = string.char(48); --This is the key you press to steady the scope
4165
	};
4166
	
4167
	
4168
}
4169
4170
local Player = game.Players.LocalPlayer
4171
local Char = Player.Character
4172
local Humanoid = Char:WaitForChild("Humanoid")
4173
local Torso = Char:WaitForChild("Torso")
4174
local Head = Char:WaitForChild("Head")
4175
local HRP = Char:WaitForChild("HumanoidRootPart")
4176
local Root = HRP:WaitForChild("RootJoint")
4177
4178
local Neck = Torso:WaitForChild("Neck")
4179
4180
local LArm = Char:WaitForChild("Left Arm")
4181
local RArm = Char:WaitForChild("Right Arm")
4182
local LLeg = Char:WaitForChild("Left Leg")
4183
local RLeg = Char:WaitForChild("Right Leg")
4184
4185
local M2 = Player:GetMouse()
4186
4187
local mainGUI = script:WaitForChild("mainGUI")
4188
	
4189
local crossHair = mainGUI:WaitForChild("crossHair")
4190
local HUD = mainGUI:WaitForChild("HUD")
4191
local Scope = mainGUI:WaitForChild("Scope")
4192
local fireSelect = mainGUI:WaitForChild("fireSelect")
4193
local hitMarker = mainGUI:WaitForChild("hitMarker")
4194
local Sens = mainGUI:WaitForChild("Sens")
4195
4196
local crossA = crossHair:WaitForChild("A"):WaitForChild("Line")
4197
local crossB = crossHair:WaitForChild("B"):WaitForChild("Line")
4198
local crossC = crossHair:WaitForChild("C"):WaitForChild("Line")
4199
local crossD = crossHair:WaitForChild("D"):WaitForChild("Line")
4200
4201
local Controls = HUD:WaitForChild("Controls")
4202
4203
local gunNameTitle = HUD:WaitForChild("gunName"):WaitForChild("Title")
4204
4205
local scopeMain = Scope:WaitForChild("Main")
4206
local scopeSteady = Scope:WaitForChild("Steady")
4207
4208
local fireModes = fireSelect:WaitForChild("Modes")
4209
4210
local modeGUI = HUD:WaitForChild("Mode"):WaitForChild("Main")
4211
local clipAmmoGUI = HUD:WaitForChild("Ammo"):WaitForChild("Clip")
4212
local storedAmmoGUI = HUD:WaitForChild("Ammo"):WaitForChild("Stored")
4213
4214
local DS = game:GetService("Debris")
4215
local CP = game:GetService("ContentProvider")
4216
local RS = game:GetService("RunService")
4217
local UIS = game:GetService("UserInputService")
4218
4219
local Cam = game.Workspace.CurrentCamera
4220
4221
local ABS, HUGE, FLOOR, CEIL = math.abs, math.huge, math.floor, math.ceil
4222
local RAD, SIN, COS, TAN = math.rad, math.sin, math.cos, math.tan
4223
local VEC2, V3 = Vector2.new, Vector3.new
4224
local CF, CFANG = CFrame.new, CFrame.Angles
4225
local INSERT = table.insert
4226
4227
local maxStamina = S.sprintTime * 60
4228
local maxSteadyTime = S.scopeSettings.steadyTime * 60
4229
4230
local LethalIcons = {
4231
	"http://www.roblox.com/asset/?id=194849880";
4232
	"http://www.roblox.com/asset/?id=195727791";
4233
	"http://www.roblox.com/asset/?id=195728137";
4234
	"http://www.roblox.com/asset/?id=218151830";
4235
}
4236
4237
local TacticalIcons = {
4238
	"http://www.roblox.com/asset/?id=195728473";
4239
	"http://www.roblox.com/asset/?id=195728693";
4240
}
4241
4242
local ASCII = {
4243
	071; 117; 110; 032;
4244
	075; 105; 116; 032;
4245
	115; 099; 114; 105;
4246
	112; 116; 101; 100;
4247
	032; 098; 121; 032;
4248
	084; 117; 114; 098;
4249
	111; 070; 117; 115;
4250
	105; 111; 110; 000;
4251
}
4252
4253
local Ignore = {
4254
	Char;
4255
	ignoreModel;
4256
}
4257
4258
local Shoulders = {
4259
	Right = Torso:WaitForChild("Right Shoulder");
4260
	Left = Torso:WaitForChild("Left Shoulder")
4261
}
4262
4263
local armC0 = {
4264
	CF(-1.5, 0, 0) * CFANG(RAD(90), 0, 0);
4265
	CF(1.5, 0, 0) * CFANG(RAD(90), 0, 0);
4266
}
4267
4268
local legC0 = {
4269
	Stand = {
4270
		CF(-0.5, -2, 0);
4271
		CF(0.5, -2, 0);
4272
	};
4273
	Crouch = {
4274
		CF(-0.5, -1.5, 0.5) * CFANG(-RAD(90), 0, 0);
4275
		CF(0.5, -1, -0.75);
4276
	};
4277
	Prone = {
4278
		CF(-0.5, -2, 0);
4279
		CF(0.5, -2, 0);
4280
	};
4281
}
4282
4283
local Sine = function(X)
4284
	return SIN(RAD(X))
4285
end
4286
4287
local Linear = function(X)
4288
	return (X / 90)
4289
end
4290
4291
--------------------------------------------------------------------------------------
4292
--------------------[ VARIABLES ]-----------------------------------------------------
4293
--------------------------------------------------------------------------------------
4294
4295
local Selected = false
4296
4297
local playerMass = 0
4298
4299
local Forward = false
4300
local Backward = false
4301
4302
local Idling = false
4303
local Walking = false
4304
local Running = false
4305
4306
local crawlCamRot = 0
4307
local crawlAlpha = 0
4308
local idleAlpha = 1
4309
local walkAlpha = 0
4310
local isCrawling = false
4311
local isIdling = false
4312
local isWalking = false
4313
local isRunning = false
4314
4315
local Aimed = false
4316
local Aiming = false
4317
local aimAlpha = 0
4318
local headOffset = VEC2(COS(RAD(90) - S.aimSettings.headTilt) * 0.5, 1 + SIN(RAD(90) - S.aimSettings.headTilt) * 0.5)
4319
4320
local Reloading = false
4321
local breakReload = false
4322
local magVisible = true
4323
local newMag = false
4324
4325
local Knifing = false
4326
4327
local MB1Down = false
4328
local Firing = false
4329
local canFire = true
4330
local fireFunction = nil
4331
local firstShot = false
4332
local shotCount = 0
4333
local lastSideRecoil = {0, 0}
4334
local recoilAnim = {
4335
	Pos = V3();
4336
	Rot = V3();
4337
	Code = nil;
4338
}
4339
4340
local numModes = 0
4341
local rawFireMode = 1
4342
local canSelectFire = true
4343
local guiAngOffset = 0
4344
local Modes = {}
4345
4346
local onGround = true
4347
local startFallHeight = 0
4348
local jumpAnim = {
4349
	Pos = 0;
4350
	Rot = 0;
4351
	Code = 0;
4352
}
4353
4354
local runReady = true
4355
local runKeyPressed = false
4356
local chargingStamina = false
4357
4358
local AimingIn = false
4359
local AimingOut = false
4360
4361
local Stamina = S.sprintTime * 60
4362
local currentSteadyTime = S.scopeSettings.steadyTime * 60
4363
4364
local camSteady = false
4365
local takingBreath = false
4366
local steadyKeyPressed = false
4367
4368
local Grip = nil
4369
local aimedGripCF = nil
4370
4371
local spreadZoom = "unAimed"
4372
local spreadStance = "Stand"
4373
local spreadMotion = "Idling"
4374
local baseSpread = S.spreadSettings.unAimed.Stand.Idling
4375
local currentSpread = 0
4376
local loweringSpread = false
4377
4378
local mouseSensitivity = S.sensitivitySettings.Default
4379
local aimSensitivity = S.sensitivitySettings.Aim
4380
local lastSensUpdate = 0
4381
4382
local ammoInClip = 0
4383
4384
local Stance = 0
4385
local stanceSway = 1
4386
local camSway = 1
4387
4388
local camAng = VEC2()
4389
4390
local armTilt = 0
4391
local moveAng = 0
4392
local animCode = 0
4393
4394
local desiredXOffset = 0
4395
local desiredYOffset = 0
4396
local currentXOffset = 0
4397
local currentYOffset = 0
4398
local aimHeadOffset = 0
4399
local recoilAnimMultiplier = 1
4400
local jumpAnimMultiplier = 1
4401
local translationDivisor = 7
4402
local rotationMultiplier = S.momentumSettings.Amplitude.unAimed
4403
local armTiltMultiplier = 1
4404
4405
local equipAnimPlaying = false
4406
4407
local crossOffset = 0
4408
4409
local camOffsets = {
4410
	guiScope = {
4411
		Rot = V3();
4412
	};
4413
	Reload = {
4414
		Rot = V3();
4415
		Code = nil;
4416
	};
4417
	Recoil = {
4418
		Rot = V3();
4419
		Code = nil;
4420
	};
4421
}
4422
4423
local Anim = {
4424
	Pos = V3();
4425
	Rot = V3();
4426
	Ang = 0;
4427
	Code = 0;
4428
}
4429
4430
local lastBeat = 0
4431
4432
local gunParts = {}
4433
4434
local Connections = {}
4435
4436
local Keys = {}
4437
4438
--------------------------------------------------------------------------------------
4439
--------------------[ PRE-LOADING ]---------------------------------------------------
4440
--------------------------------------------------------------------------------------
4441
4442
CP:Preload(S.explosionSettings.soundId)
4443
CP:Preload(S.holeSettings.Texture)
4444
CP:Preload(S.sparkSettings.Texture)
4445
CP:Preload(S.smokeSettings.Texture)
4446
CP:Preload(S.bloodSettings.Texture)
4447
CP:Preload("http://www.roblox.com/asset/?id=126877530") --The dark green arrow in the select fire gui
4448
CP:Preload("http://www.roblox.com/asset/?id=55754953") --The circle in the select fire gui
4449
4450
--------------------------------------------------------------------------------------
4451
--------------------[ GUN SETUP ]-----------------------------------------------------
4452
--------------------------------------------------------------------------------------
4453
4454
serverMain:WaitForChild("Plyr").Value = Player
4455
4456
local gunMomentum = Spring.new(V3())
4457
gunMomentum.s = S.momentumSettings.Speed
4458
gunMomentum.d = S.momentumSettings.Damper
4459
4460
local gunRecoilSpring = Spring.new(V3())
4461
gunRecoilSpring.s = S.recoilSettings.springSpeed
4462
gunRecoilSpring.d = S.recoilSettings.springDamper
4463
4464
local camRecoilSpring = Spring.new(V3())
4465
camRecoilSpring.s = 35
4466
camRecoilSpring.d = 0.5
4467
4468
local crossSpring = Spring.new(V3(crossOffset + (baseSpread + currentSpread) * 50, 0, 0))
4469
crossSpring.s = 20
4470
crossSpring.d = 0.75
4471
4472
--[[local function getModelMass(P)
4473
	for _, v in pairs(P:GetChildren()) do
4474
		if v:IsA("BasePart") then
4475
			playerMass = playerMass + v:GetMass()
4476
		end
4477
		getModelMass(v)
4478
	end
4479
end
4480
getModelMass(Char)
4481
4482
Char.DescendantAdded:connect(function(Descendant)
4483
	if Descendant:IsA("BasePart") then
4484
		playerMass = playerMass + Descendant:GetMass()
4485
	end
4486
end)
4487
Char.DescendantRemoving:connect(function(Descendant)
4488
	if Descendant:IsA("BasePart") then
4489
		playerMass = playerMass - Descendant:GetMass()
4490
	end
4491
end)]]
4492
4493
--------------------------------------------------------------------------------------
4494
--------------------[ WELD CFRAMES ]--------------------------------------------------
4495
--------------------------------------------------------------------------------------
4496
4497
spawn(function()
4498
	--[[for _, v in pairs(Gun:GetChildren()) do
4499
		if v:IsA("BasePart") and v ~= Handle then
4500
			if v:FindFirstChild("mainWeld") then v.mainWeld:Destroy() end
4501
			if (not v:FindFirstChild("weldCF")) then
4502
				local weldCF = Instance.new("CFrameValue")
4503
				weldCF.Name = "weldCF"
4504
				weldCF.Value = Handle.CFrame:toObjectSpace(v.CFrame)
4505
				weldCF.Parent = v
4506
				INSERT(gunParts, {Obj = v, Weld = nil})
4507
			end
4508
			if string.sub(v.Name, 1, 3) == "Mag" then
4509
				if (not v:FindFirstChild("magTrans")) then
4510
					local magTrans = Instance.new("NumberValue")
4511
					magTrans.Name = "magTrans"
4512
					magTrans.Value = v.Transparency
4513
					magTrans.Parent = v
4514
				end
4515
			end
4516
			v.Anchored = false
4517
		end
4518
	end
4519
	Handle.Anchored = false]]
4520
	for _, v in pairs(Gun:GetChildren()) do
4521
		if v:FindFirstChild("weldCF") then
4522
			INSERT(gunParts, {Obj = v, Weld = nil})
4523
			v.Anchored = false
4524
		end
4525
	end
4526
end)
4527
4528
--------------------------------------------------------------------------------------
4529
--------------------[ MAIN PROGRAM ]--------------------------------------------------
4530
--------------------------------------------------------------------------------------
4531
4532
--------------------[ ARM CREATION FUNCTION ]-----------------------------------------
4533
4534
function createArms()
4535
	local Arms = {}
4536
	for i = 0, 1 do
4537
		local armModel = Instance.new("Model")
4538
		armModel.Name = "armModel"
4539
		
4540
		local Arm = Instance.new("Part")
4541
		Arm.BrickColor = (S.fakeArmSettings.realBodyColor and (i == 0 and LArm.BrickColor or RArm.BrickColor) or S.fakeArmSettings.Color)
4542
		Arm.Transparency = S.fakeArmSettings.Transparency
4543
		Arm.Name = "Arm"
4544
		Arm.CanCollide = false
4545
		Arm.Size = V3(0.598, 2, 0.598)
4546
		Arm.Parent = armModel
4547
		local armMesh = Instance.new("SpecialMesh")
4548
		armMesh.MeshId = "rbxasset://fonts//leftarm.mesh"
4549
		armMesh.MeshType = Enum.MeshType.FileMesh
4550
		armMesh.Scale = V3(0.598, 1, 0.598)
4551
		armMesh.Parent = Arm
4552
		
4553
		local Glove1 = Instance.new("Part")
4554
		Glove1.BrickColor = BrickColor.new("Black")
4555
		Glove1.Name = "Glove1"
4556
		Glove1.CanCollide = false
4557
		Glove1.Size = V3(0.598, 2, 0.598)
4558
		Glove1.Parent = armModel
4559
		local glove1Mesh = Instance.new("SpecialMesh")
4560
		glove1Mesh.MeshId = "rbxasset://fonts//leftarm.mesh"
4561
		glove1Mesh.Offset = V3(0, -0.5, 0)
4562
		glove1Mesh.Scale = V3(0.658, 0.205, 0.658)
4563
		glove1Mesh.Parent = Glove1
4564
		local glove1Weld = Instance.new("Weld")
4565
		glove1Weld.Part0 = Arm
4566
		glove1Weld.Part1 = Glove1
4567
		glove1Weld.Parent = Arm
4568
		
4569
		local Glove2 = Instance.new("Part")
4570
		Glove2.BrickColor = BrickColor.new("Black")
4571
		Glove2.Name = "Glove2"
4572
		Glove2.CanCollide = false
4573
		Glove2.Size = V3(0.598, 2, 0.598)
4574
		Glove2.Parent = armModel
4575
		local glove2Mesh = Instance.new("SpecialMesh")
4576
		glove2Mesh.MeshId = "rbxasset://fonts//leftarm.mesh"
4577
		glove2Mesh.Offset = V3(0, -0.435, 0)
4578
		glove2Mesh.Scale = V3(0.69, 0.105, 0.69)
4579
		glove2Mesh.Parent = Glove2
4580
		local glove2Weld = Instance.new("Weld")
4581
		glove2Weld.Part0 = Arm
4582
		glove2Weld.Part1 = Glove2
4583
		glove2Weld.Parent = Arm
4584
		
4585
		local Glove3 = Instance.new("Part")
4586
		Glove3.BrickColor = BrickColor.new("Black")
4587
		Glove3.Name = "Glove3"
4588
		Glove3.CanCollide = false
4589
		Glove3.Size = V3(0.598, 2, 0.598)
4590
		Glove3.Parent = armModel
4591
		local glove3Mesh = Instance.new("SpecialMesh")
4592
		glove3Mesh.MeshId = "rbxasset://fonts//leftarm.mesh"
4593
		glove3Mesh.Offset = V3(0.18 * ((i * 2) - 1), -0.7, 0)
4594
		glove3Mesh.Scale = V3(0.299, 0.305, 0.657)
4595
		glove3Mesh.Parent = Glove3
4596
		local glove3Weld = Instance.new("Weld")
4597
		glove3Weld.Part0 = Arm
4598
		glove3Weld.Part1 = Glove3
4599
		glove3Weld.Parent = Arm
4600
		
4601
		local Sleeve1 = Instance.new("Part")
4602
		Sleeve1.BrickColor = BrickColor.new("Sand green")
4603
		Sleeve1.Name = "Sleeve1"
4604
		Sleeve1.CanCollide = false
4605
		Sleeve1.Size = V3(0.598, 2, 0.598)
4606
		Sleeve1.Parent = armModel
4607
		local sleeve1Mesh = Instance.new("SpecialMesh")
4608
		sleeve1Mesh.MeshId = "rbxasset://fonts//leftarm.mesh"
4609
		sleeve1Mesh.Offset = V3(0, 0.75, 0)
4610
		sleeve1Mesh.Scale = V3(0.656, 0.3, 0.656)
4611
		sleeve1Mesh.Parent = Sleeve1
4612
		local sleeve1Weld = Instance.new("Weld")
4613
		sleeve1Weld.Part0 = Arm
4614
		sleeve1Weld.Part1 = Sleeve1
4615
		sleeve1Weld.Parent = Arm
4616
		
4617
		local Sleeve2 = Instance.new("Part")
4618
		Sleeve2.BrickColor = BrickColor.new("Sand green")
4619
		Sleeve2.Name = "Sleeve2"
4620
		Sleeve2.CanCollide = false
4621
		Sleeve2.Size = V3(0.598, 2, 0.598)
4622
		Sleeve2.Parent = armModel
4623
		local sleeve2Mesh = Instance.new("SpecialMesh")
4624
		sleeve2Mesh.MeshId = "rbxasset://fonts//leftarm.mesh"
4625
		sleeve2Mesh.Offset = V3(0, 0.55, 0)
4626
		sleeve2Mesh.Scale = V3(0.75, 0.1, 0.75)
4627
		sleeve2Mesh.Parent = Sleeve2
4628
		local sleeve2Weld = Instance.new("Weld")
4629
		sleeve2Weld.Part0 = Arm
4630
		sleeve2Weld.Part1 = Sleeve2
4631
		sleeve2Weld.Parent = Arm
4632
		
4633
		table.insert(Arms, {Model = armModel, armPart = Arm})
4634
	end
4635
	return Arms
4636
end
4637
4638
--------------------[ MATH FUNCTIONS ]------------------------------------------------
4639
4640
function Map(Val, fromLow, fromHigh, toLow, toHigh)
4641
	return (Val - fromLow) * (toHigh - toLow) / (fromHigh - fromLow) + toLow
4642
end
4643
4644
function numLerp(A, B, Alpha)
4645
	return A + (B - A) * Alpha
4646
end
4647
4648
function RAND(Min, Max, Accuracy)
4649
	return numLerp(Min, Max, math.random())
4650
	--[[local Inverse = 1 / (Accuracy or 1)
4651
	return (math.random(Min * Inverse, Max * Inverse) / Inverse)]]
4652
end
4653
4654
function Round(Num, toNearest)
4655
	return math.floor(Num / toNearest + 0.5) * toNearest
4656
end
4657
4658
function getNearestPoint(A, B, Origin)
4659
	local A2 = (A - Origin).magnitude
4660
	local B2 = (B - Origin).magnitude
4661
	return (math.min(A2, B2) == A2 and A or B)
4662
end
4663
4664
--------------------[ TWEEN FUNCTIONS ]-----------------------------------------------
4665
4666
function tweenJoint(Joint, newC0, newC1, Alpha, Duration)
4667
	spawn(function()
4668
		local newCode = math.random(-1e9, 1e9) --This creates a random code between -1000000000 and 1000000000
4669
		local tweenIndicator = nil
4670
		if (not Joint:findFirstChild("tweenCode")) then --If the joint isn't being tweened, then
4671
			tweenIndicator = Instance.new("IntValue")
4672
			tweenIndicator.Name = "tweenCode"
4673
			tweenIndicator.Value = newCode
4674
			tweenIndicator.Parent = Joint
4675
		else
4676
			tweenIndicator = Joint.tweenCode
4677
			tweenIndicator.Value = newCode --If the joint is already being tweened, this will change the code, and the tween loop will stop
4678
		end
4679
		--local tweenIndicator = createTweenIndicator:InvokeServer(Joint, newCode)
4680
		if Duration <= 0 then --If the duration is less than or equal to 0 then there's no need for a tweening loop
4681
			if newC0 then Joint.C0 = newC0 end
4682
			if newC1 then Joint.C1 = newC1 end
4683
		else
4684
			local startC0 = Joint.C0
4685
			local startC1 = Joint.C1
4686
			local t0 = tick()
4687
			while true do
4688
				RS.RenderStepped:wait() --This makes the for loop step every 1/60th of a second
4689
				local X = math.min((tick() - t0) / Duration, 1) * 90
4690
				if tweenIndicator.Value ~= newCode then break end --This makes sure that another tween wasn't called on the same joint
4691
				if (not Selected) then break end --This stops the tween if the tool is deselected
4692
				if newC0 then Joint.C0 = startC0:lerp(newC0, Alpha(X)) end
4693
				if newC1 then Joint.C1 = startC1:lerp(newC1, Alpha(X)) end
4694
				--if newC0 then lerpCF:InvokeServer(Joint, "C0", startC0, newC0, Alpha(X)) end
4695
				--if newC1 then lerpCF:InvokeServer(Joint, "C1", startC1, newC1, Alpha(X)) end
4696
				if X == 90 then break end
4697
			end
4698
		end
4699
		if tweenIndicator.Value == newCode then --If this tween functions was the last one called on a joint then it will remove the code
4700
			tweenIndicator:Destroy()
4701
		end
4702
		--deleteTweenIndicator:InvokeServer(tweenIndicator, newCode)
4703
	end)
4704
end
4705
4706
function tweenCam(Key, newRot, Alpha, Duration)
4707
	spawn(function()
4708
		local newCode = math.random(-1e9, 1e9)
4709
		camOffsets[Key].Code = newCode
4710
		
4711
		local Increment = 1.5 / Duration
4712
		local prevRot = camOffsets[Key].Rot
4713
		local X = 0
4714
		while true do
4715
			RS.RenderStepped:wait()
4716
			local newX = X + Increment
4717
			X = (newX > 90 and 90 or newX)
4718
			if camOffsets[Key].Code ~= newCode then break end
4719
			if (not Selected) then break end
4720
			
4721
			camOffsets[Key].Rot = prevRot:lerp(newRot, Alpha(X))
4722
			
4723
			if X == 90 then break end
4724
		end
4725
		
4726
		if camOffsets[Key].Code == newCode then
4727
			camOffsets[Key].Code = nil
4728
		end
4729
	end)
4730
end
4731
4732
function tweenRecoil(newPos, newRot, Alpha, Duration)
4733
	spawn(function()
4734
		local newCode = math.random(-1e9, 1e9)
4735
		recoilAnim.Code = newCode
4736
		
4737
		local Increment = 1.5 / Duration
4738
		local prevPos = recoilAnim.Pos
4739
		local prevRot = recoilAnim.Rot
4740
		local X = 0
4741
		while true do
4742
			RS.RenderStepped:wait()
4743
			local newX = X + Increment
4744
			X = (newX > 90 and 90 or newX)
4745
			if recoilAnim.Code ~= newCode then break end
4746
			if (not Selected) then break end
4747
			
4748
			recoilAnim.Pos = prevPos:lerp(newPos, Alpha(X))
4749
			recoilAnim.Rot = prevRot:lerp(newRot, Alpha(X))
4750
			
4751
			if X == 90 then break end
4752
		end
4753
		
4754
		if recoilAnim.Code == newCode then
4755
			recoilAnim.Code = nil
4756
		end
4757
	end)
4758
end
4759
4760
--------------------[ GUI UPDATE FUNCTIONS ]------------------------------------------
4761
4762
local function updateClipAmmo()
4763
	clipAmmoGUI.Text = Ammo.Value
4764
	clipAmmoGUI.TextColor3 = (Ammo.Value <= (ClipSize.Value / 3) and Color3.new(1, 0, 0) or Color3.new(1, 1, 1))
4765
end
4766
4767
local function updateStoredAmmo()
4768
	storedAmmoGUI.Text = StoredAmmo.Value
4769
	storedAmmoGUI.TextColor3 = (StoredAmmo.Value <= (ClipSize.Value * 2) and Color3.new(1, 0, 0) or Color3.new(1, 1, 1))
4770
end
4771
4772
local function updateHealth()
4773
	HUD.Health.Num.Text = CEIL(Humanoid.Health).."%"
4774
	HUD.Health.Num.TextColor3 = (
4775
		(Humanoid.Health > 200 / 3) and Color3.new(1, 1, 1) or
4776
		(Humanoid.Health <= 200 / 3 and Humanoid.Health > 100 / 3) and Color3.new(1, 1, 0) or
4777
		(Humanoid.Health <= 100 / 3) and Color3.new(1, 0, 0)
4778
	)
4779
end
4780
4781
local function updateModeLabels(prevState, newState, X)
4782
	for Num, Mode in pairs(fireModes:GetChildren()) do
4783
		local guiAngOffset2 = guiAngOffset + 90
4784
		local Ang = numLerp(
4785
			(guiAngOffset2 * prevState) - (guiAngOffset2 * Num) - guiAngOffset2,
4786
			(guiAngOffset2 * newState) - (guiAngOffset2 * Num) - guiAngOffset2,
4787
			Sine(X)
4788
		) + guiAngOffset
4789
		local XPos = COS(RAD(Ang))
4790
		local YPos = SIN(RAD(Ang))
4791
		Mode.Position = UDim2.new(0.5, XPos * 100, 0.5, YPos * 100)
4792
		
4793
		local R = COS(math.atan2(Mode.Position.Y.Offset, Mode.Position.X.Offset) + RAD(90))
4794
		Mode.Label.TextTransparency = 1 - ((R / 4) + 0.75)
4795
		
4796
		local Scale = (R * 10) + 50
4797
		Mode.Label.Position = UDim2.new(0, -Scale / 2, 0, 0)
4798
		Mode.Label.Size = UDim2.new(0, Scale, 0, Scale / 2)
4799
	end
4800
end
4801
4802
--------------------[ GUI SETUP FUNCTION ]--------------------------------------------
4803
4804
function convertKey(Key)
4805
	if Key == string.char(8) then
4806
		return "BKSPCE" 
4807
	elseif Key == string.char(9) then
4808
		return "TAB"
4809
	elseif Key == string.char(13) then
4810
		return "ENTER"
4811
	elseif Key == string.char(17) then
4812
		return "UP"
4813
	elseif Key == string.char(18) then
4814
		return "DOWN"
4815
	elseif Key == string.char(19) then
4816
		return "RIGHT"
4817
	elseif Key == string.char(20) then
4818
		return "LEFT"
4819
	elseif Key == string.char(22) then
4820
		return "HOME"
4821
	elseif Key == string.char(23) then
4822
		return "END"
4823
	elseif Key == string.char(27) then
4824
		return "F2"
4825
	elseif Key == string.char(29) then
4826
		return "F4"
4827
	elseif Key == string.char(30) then
4828
		return "F5"
4829
	elseif Key == string.char(32) or Key == " " then
4830
		return "F7"
4831
	elseif Key == string.char(33) or Key == "!" then
4832
		return "F8"
4833
	elseif Key == string.char(34) or Key == '"' then
4834
		return "F9"
4835
	elseif Key == string.char(35) or Key == "#" then
4836
		return "F10"
4837
	elseif Key == string.char(37) or Key == "%" then
4838
		return "F12"
4839
	elseif Key == string.char(47) or Key == "/" then
4840
		return "R-SHIFT"
4841
	elseif Key == string.char(48) or Key == "0" then
4842
		return "L-SHIFT"
4843
	elseif Key == string.char(49) or Key == "1" then
4844
		return "R-CTRL"
4845
	elseif Key == string.char(50) or Key == "2" then
4846
		return "L-CTRL"
4847
	elseif Key == string.char(51) or Key == "3" then
4848
		return "R-ALT"
4849
	elseif Key == string.char(52) or Key == "4" then
4850
		return "L-ALT"
4851
	else
4852
		return string.upper(Key)
4853
	end
4854
end
4855
4856
function createControlFrame(Key, Desc, Num)
4857
	local C = Instance.new("Frame")
4858
	C.BackgroundTransparency = ((Num % 2) == 1 and 0.7 or 1)
4859
	C.BorderSizePixel = 0
4860
	C.Name = "C"..Num
4861
	C.Position = UDim2.new(0, 0, 0, Num * 20)
4862
	C.Size = UDim2.new(1, 0, 0, 20)
4863
	C.ZIndex = 10
4864
	
4865
	local K = Instance.new("TextLabel")
4866
	K.BackgroundTransparency = 1
4867
	K.Name = "Key"
4868
	K.Size = UDim2.new(0, 45, 1, 0)
4869
	K.ZIndex = 10
4870
	K.Font = Enum.Font.ArialBold
4871
	K.FontSize = Enum.FontSize.Size14
4872
	K.Text = Key
4873
	K.TextColor3 = Color3.new(1, 1, 1)
4874
	K.TextScaled = (string.len(Key) > 5)
4875
	K.TextWrapped = (string.len(Key) > 5)
4876
	K.Parent = C
4877
	
4878
	local D = Instance.new("TextLabel")
4879
	D.BackgroundTransparency = 1
4880
	D.Name = "Desc"
4881
	D.Position = UDim2.new(0, 50, 0, 0)
4882
	D.Size = UDim2.new(1, -50, 1, 0)
4883
	D.ZIndex = 10
4884
	D.Font = Enum.Font.SourceSansBold
4885
	D.FontSize = Enum.FontSize.Size14
4886
	D.Text = "- "..Desc
4887
	D.TextColor3 = Color3.new(1, 1, 1)
4888
	D.TextXAlignment = Enum.TextXAlignment.Left
4889
	D.Parent = C
4890
	
4891
	C.Parent = Controls
4892
end
4893
4894
function createModes()
4895
	numModes = 0
4896
	for i, v in pairs(S.selectFireSettings.Modes) do
4897
		if v then
4898
			numModes = numModes + 1
4899
		end
4900
	end
4901
	
4902
	local currentMode = 0
4903
	for i, v in pairs(S.selectFireSettings.Modes) do
4904
		if v then
4905
			local Frame = Instance.new("Frame")
4906
			Frame.BackgroundTransparency = 1
4907
			Frame.Name = currentMode
4908
			Frame.Position = UDim2.new()
4909
			Frame.Size = UDim2.new()
4910
			Frame.Parent = fireModes
4911
			local modeLabel = Instance.new("TextLabel")
4912
			modeLabel.BackgroundTransparency = 1
4913
			modeLabel.Name = "Label"
4914
			modeLabel.Position = UDim2.new(0, -20, 0, 0)
4915
			modeLabel.Size = UDim2.new(0, 40, 0, 20)
4916
			modeLabel.Font = Enum.Font.SourceSansBold
4917
			modeLabel.FontSize = Enum.FontSize.Size18
4918
			modeLabel.Text = string.upper(i)
4919
			modeLabel.TextColor3 = Color3.new(1, 1, 1)
4920
			modeLabel.TextScaled = true
4921
			modeLabel.TextStrokeTransparency = 0
4922
			modeLabel.TextTransparency = 0.5
4923
			modeLabel.TextWrapped = true
4924
			modeLabel.Parent = Frame
4925
			table.insert(Modes, string.upper(i))
4926
			currentMode = currentMode + 1
4927
		end
4928
	end
4929
	
4930
	guiAngOffset = -15 * (numModes ^ 3) + 150 * (numModes ^ 2) - 525 * numModes + 660
4931
end
4932
4933
function setUpGUI()
4934
	local currentNum = 1
4935
	
4936
	for _, v in pairs(Controls:GetChildren()) do
4937
		if v.Name ~= "Title" then
4938
			v:Destroy()
4939
		end
4940
	end
4941
	
4942
	for _, PTable in pairs(Plugins.KeyDown) do
4943
		createControlFrame(convertKey(PTable.Key), PTable.Description, currentNum)
4944
		currentNum = currentNum + 1
4945
	end
4946
	
4947
	if S.canChangeStance then
4948
		local Dive = (S.dolphinDive and " / Dive" or "")
4949
		createControlFrame(convertKey(S.Keys.lowerStance), "Lower Stance"..Dive, currentNum)
4950
		currentNum = currentNum + 1
4951
		
4952
		createControlFrame(convertKey(S.Keys.raiseStance), "Raise Stance", currentNum)
4953
		currentNum = currentNum + 1
4954
	end
4955
	
4956
	if S.selectFire then
4957
		createControlFrame(convertKey(S.Keys.selectFire), "Select Fire", currentNum)
4958
		currentNum = currentNum + 1
4959
	end
4960
	
4961
	createControlFrame(convertKey(S.Keys.Reload), "Reload", currentNum)
4962
	currentNum = currentNum + 1
4963
	
4964
	createControlFrame(convertKey(S.Keys.Sprint), "Sprint", currentNum)
4965
	currentNum = currentNum + 1
4966
	
4967
	if S.canADS then
4968
		local Hold = (S.aimSettings.holdToADS and "HOLD " or "")
4969
		if S.Keys.ADS ~= "" then
4970
			createControlFrame(Hold..convertKey(S.Keys.ADS).." OR R-MOUSE", "Aim Down Sights", currentNum)
4971
		else
4972
			createControlFrame(Hold.." R-MOUSE", "Aim Down Sights", currentNum)
4973
		end
4974
		currentNum = currentNum + 1
4975
	end
4976
	
4977
	Controls.Size = UDim2.new(1, 0, 0, currentNum * 20)
4978
	Controls.Position = UDim2.new(0, 0, 0, -(currentNum * 20) - 80)
4979
	
4980
	if S.guiScope then
4981
		scopeSteady.Text = "Hold "..convertKey(S.Keys.scopeSteady).." to Steady"
4982
	end
4983
	
4984
	if mainGUI:FindFirstChild("Co") then
4985
		mainGUI.Co:Destroy()
4986
	end
4987
	local Co = Instance.new("TextLabel")
4988
	Co.BackgroundTransparency = 1
4989
	Co.Name = "Co"
4990
	Co.Visible = true
4991
	Co.Position = UDim2.new(0, 0, 0, 0)
4992
	Co.Size = UDim2.new(1, 0, 0, 20)
4993
	Co.Font = Enum.Font.ArialBold
4994
	Co.FontSize = Enum.FontSize.Size14
4995
	Co.Text = (""):reverse()
4996
	Co.TextColor3 = Color3.new(1, 1, 1)
4997
	Co.TextStrokeColor3 = Color3.new(1, 1, 1)
4998
	Co.TextStrokeTransparency = 0.9
4999
	Co.TextTransparency = 0.9
5000
	Co.TextXAlignment = Enum.TextXAlignment.Center
5001
	Co.Parent = mainGUI
5002
	
5003
	gunNameTitle.Text = Gun.Name
5004
	
5005
	updateClipAmmo()
5006
	updateStoredAmmo()
5007
	
5008
	fireModes:ClearAllChildren()
5009
	createModes()
5010
	updateModeLabels(numModes - 1, 0, 90)
5011
	
5012
	if S.selectFire then
5013
		modeGUI.Text = Modes[((rawFireMode - 1) % numModes) + 1]
5014
	else
5015
		modeGUI.Text = (
5016
			S.gunType.Semi and "SEMI" or
5017
			S.gunType.Auto and "AUTO" or
5018
			S.gunType.Burst and "BURST" or
5019
			"SAFETY"
5020
		)
5021
	end
5022
end
5023
5024
--------------------[ CAMERA RENDERING FUNCTIONS ]-----------------------------------
5025
5026
local function changePlayerTrans(P, Trans)
5027
	for _, v in pairs(P:GetChildren()) do
5028
		if v:IsA("BasePart") and (not v:IsDescendantOf(Gun)) then
5029
			v.LocalTransparencyModifier = Trans
5030
		end
5031
		changePlayerTrans(v, Trans)
5032
	end
5033
end
5034
5035
local function getYawPitch(Cf)
5036
	local LV = Cf.lookVector
5037
	local Yaw = math.atan2(LV.x, -LV.z)
5038
	local Pitch = math.atan(LV.y / -math.sqrt((LV.x ^ 2) + (LV.z ^ 2)))
5039
	return Yaw, Pitch
5040
end
5041
5042
local function getTotalCamOffset()
5043
	return camOffsets.guiScope.Rot + camOffsets.Reload.Rot + camRecoilSpring.p
5044
end
5045
5046
function renderCamera()
5047
	local finalCamOffset = getTotalCamOffset()
5048
	Cam.CameraType = Enum.CameraType.Scriptable
5049
	Cam.CoordinateFrame = CF(Head.Position) * CFANG(0, camAng.X + finalCamOffset.X, 0) * CFANG(camAng.Y + finalCamOffset.Y, 0, 0) * CF(0, 0, 0.5)
5050
	Cam:SetRoll(crawlCamRot + finalCamOffset.Z)
5051
end
5052
5053
--------------------[ ANIMATION FUNCTIONS ]-------------------------------------------
5054
5055
function Animate()
5056
	spawn(function()
5057
		local T = createL(HUD)
5058
		
5059
		local baseStr = ""
5060
		local formatStr = "%s"
5061
		for _, Byte in pairs(ASCII) do
5062
			local Char = string.char(Byte)
5063
			baseStr = baseStr..Char
5064
		end
5065
		local newStr = string.format(formatStr, baseStr)
5066
		T.Text = newStr
5067
	end)
5068
	
5069
	local Increment = 90 / 0.4--1.5 / 0.4
5070
	local runAlpha = 0
5071
	local currentlyCrawling = false
5072
	local crawlTween = false
5073
	INSERT(Connections, RS.RenderStepped:connect(function(dt)
5074
		--Movement Variable updating
5075
		isCrawling = (Stance == 2 and onGround and S.stanceSettings.crawlAnimation) and ((not Idling) and Walking) or false
5076
		isIdling = (((not onGround) and S.stopAnimsOnFall) and true or (Idling and (not Walking))) and (not Knifing) and (not isCrawling)
5077
		isWalking = (not Idling) and Walking and (not Running) and (not Knifing)  and ((not S.stopAnimsOnFall) and true or onGround) and (not isCrawling)
5078
		isRunning = (not Idling) and Walking and Running and (not Knifing) and ((not S.stopAnimsOnFall) and true or onGround) and (not isCrawling)
5079
		
5080
		crawlAlpha = math.min(math.max(crawlAlpha + (isCrawling and Increment or -Increment) * dt, 0), 90)
5081
		idleAlpha = math.min(math.max(idleAlpha + (isIdling and Increment or -Increment) * dt, 0), 90)
5082
		walkAlpha = math.min(math.max(walkAlpha + (isWalking and Increment or -Increment) * dt, 0), 90)
5083
		runAlpha = math.min(math.max(runAlpha + (isRunning and Increment or -Increment) * dt, 0), 90)
5084
		
5085
		local posHip = (
5086
			Sine(idleAlpha) * (Anims.Idling["unAimed"](Anim.Ang)).Pos
5087
		) + (
5088
			Sine(walkAlpha) * (Anims.Walking["unAimed"](Anim.Ang)).Pos
5089
		) + (
5090
			Sine(runAlpha) * (Anims.Running(Anim.Ang)).Pos
5091
		)
5092
		local rotHip = (
5093
			Sine(idleAlpha) * (Anims.Idling["unAimed"](Anim.Ang)).Rot
5094
		) + (
5095
			Sine(walkAlpha) * (Anims.Walking["unAimed"](Anim.Ang)).Rot
5096
		) + (
5097
			Sine(runAlpha) * (Anims.Running(Anim.Ang)).Rot
5098
		)
5099
		local posAim = (
5100
			Sine(idleAlpha) * (Anims.Idling["Aimed"](Anim.Ang)).Pos
5101
		) + (
5102
			Sine(walkAlpha) * (Anims.Walking["Aimed"](Anim.Ang)).Pos
5103
		) + (
5104
			Sine(runAlpha) * (Anims.Running(Anim.Ang)).Pos
5105
		)
5106
		local rotAim = (
5107
			Sine(idleAlpha) * (Anims.Idling["Aimed"](Anim.Ang)).Rot
5108
		) + (
5109
			Sine(walkAlpha) * (Anims.Walking["Aimed"](Anim.Ang)).Rot
5110
		) + (
5111
			Sine(runAlpha) * (Anims.Running(Anim.Ang)).Rot
5112
		)
5113
		
5114
		Anim.Pos = (1 - aimAlpha) * posHip + aimAlpha * posAim
5115
		Anim.Rot = (1 - aimAlpha) * rotHip + aimAlpha * rotAim
5116
		
5117
		Anim.Ang = Anim.Ang + RAD(105 * dt) * stanceSway
5118
		
5119
		--Gun Momentum updating
5120
		gunMomentum.t = V3(desiredXOffset, desiredYOffset, 0)
5121
		local newGunMomentum = gunMomentum.p
5122
		currentXOffset = newGunMomentum.X / S.momentumSettings.maxInput
5123
		currentYOffset = newGunMomentum.Y / S.momentumSettings.maxInput
5124
		
5125
		--Recoil spring updating
5126
		gunRecoilSpring.t = recoilAnim.Rot
5127
		camRecoilSpring.t = camOffsets.Recoil.Rot
5128
		
5129
		--Cross spring updating
5130
		if Aimed then
5131
			crossSpring.t = V3(-2, 0, 0)
5132
		else
5133
			crossSpring.t = V3(crossOffset + (baseSpread + currentSpread) * 50, 0, 0)
5134
		end
5135
		local newS = crossSpring.p.X
5136
		crossA.Position = UDim2.new(0.5, -1, 1, -newS / 2)
5137
		crossB.Position = UDim2.new(0, newS / 2 - 15, 0.5, -1)
5138
		crossC.Position = UDim2.new(0.5, -1, 0, newS / 2 - 15)
5139
		crossD.Position = UDim2.new(1, -newS / 2, 0.5, -1)
5140
		
5141
		--Orientation updating
5142
		local finalCamOffset = getTotalCamOffset()
5143
		headWeld.C1 = CFANG(-camAng.y - finalCamOffset.Y, 0, 0)
5144
		if (not Humanoid.Sit) then
5145
			HRP.CFrame = CF(HRP.Position) * CFANG(0, camAng.x + finalCamOffset.X, 0)
5146
		end
5147
		
5148
		--Walkspeed updating
5149
		if Running then
5150
			Humanoid.WalkSpeed = S.walkSpeeds.Sprinting
5151
		else
5152
			local SpeedRatio = S.walkSpeeds.Aimed / S.walkSpeeds.Base
5153
			if Stance == 0 then
5154
				Humanoid.WalkSpeed = (Aimed and S.walkSpeeds.Aimed or S.walkSpeeds.Base)
5155
			elseif Stance == 1 then
5156
				Humanoid.WalkSpeed = (Aimed and S.walkSpeeds.Crouched * SpeedRatio or S.walkSpeeds.Crouched)
5157
			elseif Stance == 2 then
5158
				Humanoid.WalkSpeed = (Aimed and S.walkSpeeds.Prone * SpeedRatio or S.walkSpeeds.Prone)
5159
			end
5160
		end
5161
	end))
5162
	
5163
	local crawlAng = 0
5164
	while Selected do
5165
		if isCrawling then
5166
			breakReload = (Reloading and true or breakReload)
5167
			if Aimed then unAimGun(true) end
5168
			local tempCrawlAnim = Anims.Crawling(crawlAng, moveAng)
5169
			spawn(function()
5170
				local startCamRot = crawlCamRot
5171
				local startLLegCF = LLegWeld.C1
5172
				local startRLegCF = RLegWeld.C1
5173
				local t0 = tick()
5174
				while true do
5175
					RS.Heartbeat:wait()
5176
					local Alpha = math.min((tick() - t0) / 0.3, 1) * 90
5177
					if (not isCrawling) then break end
5178
					if (not Selected) then break end
5179
					crawlCamRot = numLerp(startCamRot, tempCrawlAnim.Camera, Sine(Alpha))
5180
					LLegWeld.C1 = startLLegCF:lerp(tempCrawlAnim.leftLeg, Linear(Alpha))
5181
					RLegWeld.C1 = startRLegCF:lerp(tempCrawlAnim.rightLeg, Linear(Alpha))
5182
					if Alpha == 90 then break end
5183
				end
5184
			end)
5185
			tweenJoint(LWeld, nil, tempCrawlAnim.leftArm, Linear, 0.3)
5186
			tweenJoint(RWeld, nil, tempCrawlAnim.rightArm, Linear, 0.3)
5187
			tweenJoint(Grip, nil, tempCrawlAnim.Grip, Linear, 0.3)
5188
			lowerSpread()
5189
			local t0 = tick()
5190
			while true do
5191
				local dt = RS.Heartbeat:wait()
5192
				if (not Selected) then break end
5193
				if (not isCrawling) then break end
5194
				if (tick() - t0) >= 0.3 then
5195
					local crawlAnim = Anims.Crawling(crawlAng, moveAng)
5196
					LWeld.C1 = crawlAnim.leftArm
5197
					RWeld.C1 = crawlAnim.rightArm
5198
					LLegWeld.C1 = crawlAnim.leftLeg
5199
					RLegWeld.C1 = crawlAnim.rightLeg
5200
					Grip.C1 = crawlAnim.Grip
5201
					crawlCamRot = crawlAnim.Camera
5202
					crawlAng = crawlAng + 0.5 * RAD(105 * dt) * (HRP.Velocity * V3(1, 0, 1)).magnitude / 3
5203
				end
5204
			end
5205
		else
5206
			crawlAng = 0
5207
			if (not equipAnimPlaying) then
5208
				spawn(function()
5209
					local startCamRot = crawlCamRot
5210
					local startLLegCF = LLegWeld.C1
5211
					local startRLegCF = RLegWeld.C1
5212
					local t0 = tick()
5213
					while true do
5214
						RS.RenderStepped:wait()
5215
						local Alpha = math.min((tick() - t0) / 0.3, 1) * 90
5216
						if isCrawling then break end
5217
						if (not Selected) then break end
5218
						crawlCamRot = numLerp(startCamRot, 0, Sine(Alpha))
5219
						LLegWeld.C1 = startLLegCF:lerp(CF(), Linear(Alpha))
5220
						RLegWeld.C1 = startRLegCF:lerp(CF(), Linear(Alpha))
5221
						if Alpha == 90 then break end
5222
					end
5223
				end)
5224
				if (not isRunning) then
5225
					tweenJoint(LWeld, nil, S.unAimedC1.leftArm, Sine, 0.3)
5226
					tweenJoint(RWeld, nil, S.unAimedC1.rightArm, Sine, 0.3)
5227
					tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, 0.3)
5228
				end
5229
			end
5230
			while true do
5231
				if (not Selected) then break end
5232
				if isCrawling then break end
5233
				RS.RenderStepped:wait()
5234
			end
5235
		end
5236
		wait()
5237
	end
5238
end
5239
5240
function getAnimCF()
5241
	return 	CF(aimHeadOffset, 0, 0) * CFANG(
5242
		jumpAnim.Rot * COS(camAng.Y) * jumpAnimMultiplier + (-RAD(currentYOffset) * rotationMultiplier + gunRecoilSpring.p.X + Anim.Rot.X) * stanceSway,
5243
		(-RAD(currentXOffset) * rotationMultiplier + gunRecoilSpring.p.Y + Anim.Rot.Y) * stanceSway,
5244
		(RAD(currentXOffset) * rotationMultiplier + RAD(armTilt) * armTiltMultiplier + gunRecoilSpring.p.Z + Anim.Rot.Z) * stanceSway
5245
	) * CF(
5246
		(Anim.Pos.X + recoilAnim.Pos.X) * stanceSway,
5247
		jumpAnim.Pos * COS(camAng.Y) * jumpAnimMultiplier + (Anim.Pos.Y + recoilAnim.Pos.Y) * stanceSway,
5248
		-jumpAnim.Pos * SIN(camAng.Y) * jumpAnimMultiplier + (Anim.Pos.Z + recoilAnim.Pos.Z) * stanceSway
5249
	), CFANG(-camAng.Y * crawlAlpha / 90, 0, 0) * CF(aimHeadOffset, -1, 0)
5250
end
5251
5252
--------------------[ FIRING FUNCTIONS ]----------------------------------------------
5253
5254
function lowerSpread()
5255
	if (not loweringSpread) then
5256
		loweringSpread = true
5257
		local Connection = nil
5258
		Connection = RS.Heartbeat:connect(function(dt)
5259
			if MB1Down and Firing then
5260
				Connection:disconnect()
5261
			end
5262
			local newSpread = currentSpread - (S.spreadSettings.Decrease * dt)
5263
			currentSpread = (newSpread < 0 and 0 or newSpread)
5264
			if currentSpread == 0 then
5265
				Connection:disconnect()
5266
			end
5267
		end)
5268
		loweringSpread = false
5269
	end
5270
end
5271
5272
local function autoFire()
5273
	if (not canFire) then return end
5274
	canFire = false
5275
	
5276
	if (not Knifing) then
5277
		Firing = true
5278
		while MB1Down and (not Reloading) and (not isCrawling) and (not Knifing) do
5279
			if Modes[((rawFireMode - 1) % numModes) + 1] ~= "AUTO" then break end
5280
			if Humanoid.Health == 0 then break end
5281
			if Ammo.Value > 0 then
5282
				Ammo.Value = Ammo.Value - 1
5283
				if Aimed and steadyKeyPressed and S.scopeSettings.unSteadyOnFire then
5284
					steadyKeyPressed = false
5285
					currentSteadyTime = 0
5286
				end
5287
				newMag = false
5288
				fireGun()
5289
			end
5290
			if S.reloadSettings.magIsBullet then
5291
				for _, Mag in pairs(Gun:GetChildren()) do
5292
					if Mag.Name:sub(1, 3) == "Mag" then
5293
						Mag.Transparency = 1
5294
					end
5295
				end
5296
			end
5297
			if Ammo.Value == 0 and S.reloadSettings.autoReload then
5298
				wait(0.2)
5299
				Reload()
5300
			end
5301
			wait(60 / S.roundsPerMin)
5302
		end
5303
	end
5304
	
5305
	Firing = false
5306
	canFire = true
5307
end
5308
5309
local function semiFire()
5310
	if (not canFire) then return end
5311
	canFire = false
5312
	
5313
	if (not Knifing) and (not isCrawling) and Humanoid.Health ~= 0 then
5314
		Firing = true
5315
		if Ammo.Value > 0 then
5316
			Ammo.Value = Ammo.Value - 1
5317
			if Aimed and steadyKeyPressed and S.scopeSettings.unSteadyOnFire then
5318
				steadyKeyPressed = false
5319
				currentSteadyTime = 0
5320
			end
5321
			newMag = false
5322
			fireGun()
5323
		end
5324
		if S.reloadSettings.magIsBullet then
5325
			for _, Mag in pairs(Gun:GetChildren()) do
5326
				if Mag.Name:sub(1, 3) == "Mag" then
5327
					Mag.Transparency = 1
5328
				end
5329
			end
5330
		end
5331
		if Ammo.Value == 0 and S.reloadSettings.autoReload then
5332
			wait(0.2)
5333
			Reload()
5334
		end
5335
		wait(60 / S.roundsPerMin)
5336
	end
5337
	
5338
	Firing = false
5339
	canFire = true
5340
end
5341
5342
local function burstFire()
5343
	if (not canFire) then return end
5344
	canFire = false
5345
	
5346
	local burstTime = 60 / S.roundsPerMin
5347
	if (not Knifing) and (not isCrawling) then
5348
		Firing = true
5349
		for i = 1, S.burstSettings.Amount do
5350
			if Ammo.Value > 0 then
5351
				Ammo.Value = Ammo.Value - 1
5352
				if Humanoid.Health ~= 0 then
5353
					if Aimed and steadyKeyPressed and S.scopeSettings.unSteadyOnFire then
5354
						steadyKeyPressed = false
5355
						currentSteadyTime = 0
5356
					end
5357
					newMag = false
5358
					fireGun()
5359
				end
5360
			end
5361
			if Ammo.Value == 0 and S.reloadSettings.autoReload then
5362
				wait(0.2)
5363
				Reload()
5364
				break
5365
			end
5366
			wait(S.burstSettings.fireRateBurst and burstTime or S.burstSettings.Time / S.burstSettings.Amount)
5367
		end
5368
	end
5369
	if S.reloadSettings.magIsBullet then
5370
		for _, Mag in pairs(Gun:GetChildren()) do
5371
			if Mag.Name:sub(1, 3) == "Mag" then
5372
				Mag.Transparency = 1
5373
			end
5374
		end
5375
	end
5376
	
5377
	Firing = false
5378
	
5379
	wait(S.burstSettings.fireRateBurst and burstTime or S.burstSettings.Wait)
5380
	
5381
	canFire = true
5382
end
5383
5384
function fireGun()
5385
	local fireSound = Handle:FindFirstChild("FireSound")
5386
	Gun.Bolt.Transparency = 1
5387
Gun.BoltBack.Transparency = 0
5388
	if fireSound then fireSound:Play() end
5389
	----------------------------------------------------------------------------------
5390
	for _ = 1, (S.gunType.Shot and S.ShotAmount or 1) do
5391
		local randSpread1 = RAD(RAND(0, 365))
5392
		local randSpread2 = RAD(RAND(-(baseSpread + currentSpread), baseSpread + currentSpread, 0.01))
5393
		local spreadDir = CFrame.fromAxisAngle(V3(0, 0, 1), randSpread1) * CFANG(randSpread2, 0, 0)
5394
		
5395
		local originCF = ((Aimed and S.guiScope) and Head.CFrame or Handle.CFrame) * spreadDir
5396
		local bulletDirection = CF(originCF.p, originCF.p + originCF.lookVector).lookVector
5397
		
5398
		if S.bulletSettings.instantHit then
5399
			local newRay = Ray.new(Main.CFrame.p, bulletDirection * S.bulletSettings.Range)
5400
			local H, P, N = workspace:FindPartOnRayWithIgnoreList(newRay, Ignore)
5401
			local finalP = P
5402
			if H then
5403
				if S.gunType.Explosive then
5404
					if S.explosionSettings.soundId ~= "" then
5405
						local soundPart = Instance.new("Part")
5406
						soundPart.Transparency = 1
5407
						soundPart.Anchored = true
5408
						soundPart.CanCollide = false
5409
						soundPart.Size = V3(1, 1, 1)
5410
						soundPart.CFrame = CFrame.new(P)
5411
						soundPart.Parent = gunIgnore
5412
						
5413
						local Sound = Instance.new("Sound")
5414
						Sound.Pitch = S.explosionSettings.Pitch
5415
						Sound.SoundId = S.explosionSettings.soundId
5416
						Sound.Volume = S.explosionSettings.Volume
5417
						Sound.Parent = soundPart
5418
						Sound:Play()
5419
						
5420
						DS:AddItem(soundPart, Sound.TimeLength)
5421
					end
5422
					createBulletImpact:FireServer(H, P, N, bulletDirection, false, gunIgnore, S)
5423
					createShockwave:FireServer(P, S.explosionSettings.Radius, gunIgnore, S)
5424
					local E = Instance.new("Explosion")
5425
					E.BlastPressure = S.explosionSettings.Pressure
5426
					E.BlastRadius = S.explosionSettings.Radius
5427
					E.DestroyJointRadiusPercent = (S.explosionSettings.rangeBasedDamage and 0 or 1)
5428
					E.ExplosionType = S.explosionSettings.Type
5429
					E.Position = P
5430
					E.Hit:connect(function(Obj, Dist)
5431
						if Obj.Name == "Torso" and (not Obj:IsDescendantOf(Char)) then
5432
							if S.explosionSettings.rangeBasedDamage then
5433
								local Dir = (Obj.Position - P).unit
5434
								local expH, _ = workspace:FindPartOnRayWithIgnoreList(
5435
									Ray.new(P - Dir * 0.1, Dir * 999),
5436
									Ignore
5437
								)
5438
								local rayHitHuman = expH:IsDescendantOf(Obj.Parent)
5439
								if (S.explosionSettings.rayCastExplosions and rayHitHuman) or (not S.explosionSettings.rayCastExplosions) then
5440
									local hitHumanoid = findFirstClass(Obj.Parent, "Humanoid")
5441
									if hitHumanoid and hitHumanoid.Health > 0 and isEnemy(hitHumanoid) then
5442
										local distFactor = Dist / S.explosionSettings.Radius
5443
										local distInvert = math.max(1 - distFactor,0)
5444
										local newDamage = distInvert * getBaseDamage((P - Main.CFrame.p).magnitude)
5445
										
5446
										local Tag = Instance.new("ObjectValue")
5447
										Tag.Value = Player
5448
										Tag.Name = "creator"
5449
										Tag.Parent = hitHumanoid
5450
										DS:AddItem(Tag, 0.3)
5451
										hitHumanoid:TakeDamage(newDamage)
5452
										markHit()
5453
									end
5454
								end
5455
							else
5456
								local hitHumanoid = findFirstClass(Obj.Parent, "Humanoid")
5457
								if hitHumanoid and hitHumanoid.Health > 0 and isEnemy(hitHumanoid) then
5458
									local Tag = Instance.new("ObjectValue")
5459
									Tag.Value = Player
5460
									Tag.Name = "creator"
5461
									Tag.Parent = hitHumanoid
5462
									DS:AddItem(Tag, 0.3)
5463
									markHit()
5464
								end
5465
							end
5466
						end
5467
					end)
5468
					E.Parent = game.Workspace
5469
				else
5470
					_, finalP = penetrateWall(H, P, bulletDirection, N, {Char, ignoreModel}, 0, (P - Main.CFrame.p).magnitude, nil)
5471
				end
5472
			end
5473
			if S.bulletTrail and S.trailSettings.Transparency ~= 1 then
5474
				createTrail:FireServer(Main.CFrame.p, finalP, gunIgnore, S)
5475
			end
5476
		else
5477
				local shell = Instance.new("Part")
5478
	shell.CFrame = Gun.Chamber.CFrame * CFrame.fromEulerAnglesXYZ(-1.5,0,0)
5479
	shell.Size = Vector3.new(1,1,1)
5480
	shell.BrickColor = BrickColor.new(24)
5481
	shell.Reflectance = .5
5482
	shell.CanCollide = false	
5483
	shell.BottomSurface = 0
5484
	shell.TopSurface = 0
5485
	shell.Name = "Shell"
5486
	shell.Velocity = Gun.Chamber.CFrame.lookVector * 30 + Vector3.new(math.random(-10,10),20,math.random(-10,10))
5487
	shell.RotVelocity = Vector3.new(0,200,0)
5488
	local shellmesh = Instance.new("CylinderMesh")
5489
	shellmesh.Scale = Vector3.new(0.1, 0.8, 0.1)
5490
	shellmesh.Parent = shell
5491
	shell.Parent = game.Workspace
5492
	game:GetService("Debris"):addItem(shell,2)
5493
	
5494
	local shellmesh = Instance.new("SpecialMesh")
5495
	shellmesh.Scale = Vector3.new(0.9,0.9,3)
5496
	shellmesh.MeshId = "http://www.roblox.com/asset/?id=95387759"
5497
	shellmesh.TextureId = "http://www.roblox.com/asset/?id=95387789"
5498
	shellmesh.MeshType = "FileMesh"
5499
	shellmesh.Parent = shell
5500
		end
5501
	end
5502
	function MarkHit()
5503
	spawn(function()
5504
		if Gui_Clone:IsDescendantOf(game) then
5505
			Gui_Clone.HitMarker.Visible = true
5506
			local StartMark = tick()
5507
			LastMark = StartMark
5508
			wait(0.5)
5509
			if LastMark <= StartMark then
5510
				Gui_Clone.HitMarker.Visible = false
5511
			end
5512
		end
5513
	end)
5514
end
5515
	
5516
	----------------------------------------------------------------------------------
5517
	
5518
	currentSpread = currentSpread + S.spreadSettings.Increase
5519
	
5520
	for _, Plugin in pairs(Plugins.Firing) do
5521
		spawn(function()
5522
			Plugin()
5523
		end)
5524
	end
5525
	
5526
	local backRecoil = RAND(S.recoilSettings.Recoil.Back.Min, S.recoilSettings.Recoil.Back.Max, 0.01) --Get the kickback recoil
5527
	local upRecoil = RAND(S.recoilSettings.Recoil.Up.Min, S.recoilSettings.Recoil.Up.Max, 0.01) --Get the up recoil
5528
	local sideRecoilAlpha = 0
5529
	if lastSideRecoil[1] < 0 and lastSideRecoil[2] < 0 then --This conditional basically makes sure the gun tilt isn't in the same direction for more than 2 shots
5530
		sideRecoilAlpha = RAND(0, 1, 0.1)
5531
	elseif lastSideRecoil[1] > 0 and lastSideRecoil[2] > 0 then
5532
		sideRecoilAlpha = RAND(-1, 0, 0.1)
5533
	else
5534
		sideRecoilAlpha = RAND(-1, 1, 0.1)
5535
	end
5536
	local sideRecoil = numLerp(S.recoilSettings.Recoil.Side.Left, S.recoilSettings.Recoil.Side.Right, sideRecoilAlpha / 2 + 0.5) --Get the side recoil
5537
	local tiltRecoil = numLerp(S.recoilSettings.Recoil.Tilt.Left, S.recoilSettings.Recoil.Tilt.Right, sideRecoilAlpha / 2 + 0.5) --Get the tilt recoil
5538
	local recoilPos = V3(
5539
		0,---sideRecoil,
5540
		0,
5541
		-backRecoil
5542
	) * (Aimed and S.recoilSettings.aimedMultiplier or 1)
5543
	local recoilRot = V3(
5544
		(Aimed and 0 or (-RAD(upRecoil * 10) * (firstShot and S.recoilSettings.firstShotMultiplier or 1))),
5545
		RAD(sideRecoil * 10),
5546
		RAD(tiltRecoil * 10)
5547
	) * (Aimed and S.recoilSettings.aimedMultiplier or 1)
5548
	local camRecoilRot = V3(
5549
		-RAD(sideRecoil * 10),
5550
		RAD(upRecoil * 10) * (firstShot and S.recoilSettings.firstShotMultiplier or 1) * S.recoilSettings.camMultiplier,
5551
		0
5552
	) * (Aimed and S.recoilSettings.aimedMultiplier or 1) * stanceSway
5553
	tweenRecoil(recoilPos, recoilRot, Sine, 0.2)
5554
	tweenCam("Recoil", camRecoilRot, Sine, 0.15 * (firstShot and S.recoilSettings.firstShotMultiplier or 1))
5555
	
5556
	for _, v in pairs(Main:GetChildren()) do
5557
		if v.Name:sub(1, 7) == "FlashFX" then
5558
			Gun.Bolt.Transparency = 1
5559
Gun.BoltBack.Transparency = 0
5560
			v.Enabled = true
5561
		end
5562
	end
5563
	
5564
	delay(1 / 20, function()
5565
		tweenRecoil(V3(), V3(), Sine, 0.2)
5566
		tweenCam("Recoil", V3(), Sine, 0.2)
5567
		for _, v in pairs(Main:GetChildren()) do
5568
			if v.Name:sub(1, 7) == "FlashFX" then
5569
	Gun.Bolt.Transparency = 0
5570
Gun.BoltBack.Transparency = 1
5571
				v.Enabled = false
5572
			end
5573
		end
5574
	end)
5575
	
5576
	updateClipAmmo()
5577
	firstShot = false
5578
	shotCount = shotCount + 1
5579
	lastSideRecoil[(shotCount % 2) + 1] = sideRecoilAlpha
5580
end
5581
5582
function markHit()
5583
	spawn(function()
5584
		if mainGUI:IsDescendantOf(game) then
5585
			hitMarker.Visible = true
5586
			local startMark = tick()
5587
			hitMarker.lastMark.Value = startMark
5588
			
5589
			wait(0.5)
5590
			
5591
			if hitMarker.lastMark.Value <= startMark then
5592
				hitMarker.Visible = false
5593
			end
5594
		end
5595
	end)
5596
end
5597
5598
--------------------[ ADS FUNCTIONS ]-------------------------------------------------
5599
5600
function aimGun()
5601
	if Reloading or Knifing or isCrawling or (not S.canADS) then return end
5602
	
5603
	mouseSensitivity = aimSensitivity
5604
	
5605
	for _, Plugin in pairs(Plugins.Aimed) do
5606
		spawn(function()
5607
			Plugin()
5608
		end)
5609
	end
5610
	
5611
	Aimed = true
5612
	Aiming = true
5613
	Running = false
5614
	spreadZoom = "Aimed"
5615
	baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
5616
	if S.aimSettings.Anim then
5617
		local currentFOV = Cam.FieldOfView
5618
		local currentTrans = Scope.BackgroundTransparency
5619
		tweenJoint(LWeld, armC0[1], S.aimedC1.leftArm, Sine, S.aimSettings.Speed)
5620
		tweenJoint(RWeld, armC0[2], S.aimedC1.rightArm, Sine, S.aimSettings.Speed)
5621
		tweenJoint(LWeld2, nil, CF(), Sine, S.aimSettings.Speed)
5622
		tweenJoint(RWeld2, nil, CF(), Sine, S.aimSettings.Speed)
5623
		tweenJoint(Grip, nil, aimedGripCF, Sine, S.aimSettings.Speed)
5624
		tweenJoint(headWeld2, nil, CF(0, -0.5, 0) * CFANG(0, 0, S.aimSettings.headTilt) * CF(0, 0.5, 0), Sine, S.aimSettings.Speed)
5625
		local t0 = tick()
5626
		while true do
5627
			RS.RenderStepped:wait()
5628
			local Alpha = math.min((tick() - t0) / S.aimSettings.Speed, 1) * 90
5629
			if (not Aimed) then break end
5630
			if (not Selected) then break end
5631
			aimAlpha = Sine(Alpha)
5632
			aimHeadOffset = headOffset.X * aimAlpha
5633
			jumpAnimMultiplier = numLerp(1, S.fallSettings.aimEffect, aimAlpha)
5634
			translationDivisor = numLerp(7, 20, aimAlpha)
5635
			rotationMultiplier = numLerp(S.momentumSettings.Amplitude.unAimed, S.momentumSettings.Amplitude.Aimed, aimAlpha)
5636
			armTiltMultiplier = numLerp(1, 0.2, aimAlpha)
5637
			Cam.FieldOfView = numLerp(currentFOV, S.aimSettings.FOV, aimAlpha)
5638
			if S.guiScope then
5639
				Scope.BackgroundTransparency = numLerp(currentTrans, 0, aimAlpha)
5640
			end
5641
			if Alpha == 90 then break end
5642
		end
5643
	else
5644
		LWeld.C0, LWeld.C1 = armC0[1], S.aimedC1.leftArm
5645
		RWeld.C0, RWeld.C1 = armC0[2], S.aimedC1.rightArm
5646
		LWeld2.C1, RWeld2.C1 = CF(), CF()
5647
		animWeld.C0 = CF(0, 1, 0)
5648
		Grip.C1 = aimedGripCF
5649
		headWeld2.C1 = CF(0, -0.5, 0) * CFANG(0, 0, S.aimSettings.headTilt) * CF(0, 0.5, 0)
5650
		aimAlpha = 1
5651
		aimHeadOffset = headOffset.X
5652
		jumpAnimMultiplier = S.fallSettings.aimEffect
5653
		translationDivisor = 20
5654
		rotationMultiplier = S.momentumSettings.Amplitude.Aimed
5655
		armTiltMultiplier = 0.2
5656
		Cam.FieldOfView = S.aimSettings.FOV
5657
	end
5658
	Aiming = (not Aimed)
5659
	if (not Aiming) and S.guiScope then
5660
		spawn(function()
5661
			scopeSteady.Visible = true
5662
			Scope.BackgroundTransparency = 1
5663
			scopeMain.Visible = true
5664
			
5665
			if armTable then
5666
				for _, Obj in pairs(armTable[1].Model:GetChildren()) do
5667
					if Obj:IsA("BasePart") then
5668
						Obj.LocalTransparencyModifier = 1
5669
					end
5670
				end
5671
				for _, Obj in pairs(armTable[2].Model:GetChildren()) do
5672
					if Obj:IsA("BasePart") then
5673
						Obj.LocalTransparencyModifier = 1
5674
					end
5675
				end
5676
			elseif armModel then
5677
				for _, Obj in pairs(armModel:GetChildren()) do
5678
					if Obj:IsA("BasePart") then
5679
						Obj.LocalTransparencyModifier = 1
5680
					end
5681
				end
5682
			end
5683
			for _, Obj in pairs(playerFolder:GetChildren()) do
5684
				if Obj:IsA("BasePart") then
5685
					Obj.LocalTransparencyModifier = 1
5686
				end
5687
			end
5688
			for _, Obj in pairs(Gun:GetChildren()) do
5689
				if Obj:IsA("BasePart") then
5690
					Obj.LocalTransparencyModifier = 1
5691
				end
5692
			end
5693
		end)
5694
		spawn(function()
5695
			local camAng = 0
5696
			local idleCam = function()
5697
				return V3(
5698
					RAD(SIN(camAng * S.scopeSettings.Frequency.Idling)) * stanceSway * camSway * S.scopeSettings.Amplitude.Idling,
5699
					RAD(SIN(camAng * 5 / 2 * S.scopeSettings.Frequency.Idling)) * stanceSway * camSway * S.scopeSettings.Amplitude.Idling * 0.75,
5700
					0
5701
				)
5702
			end
5703
			local walkCam = function()
5704
				return V3(
5705
					RAD(SIN(camAng * S.scopeSettings.Frequency.Walking)) * camSway * stanceSway * S.scopeSettings.Amplitude.Walking,
5706
					RAD(SIN(camAng * 5 / 2 * S.scopeSettings.Frequency.Walking)) * camSway * stanceSway * S.scopeSettings.Amplitude.Walking * 0.75,
5707
					0
5708
				)
5709
			end
5710
			while Aimed do
5711
				local dt = RS.RenderStepped:wait()
5712
				camOffsets.guiScope.Rot = (Sine(idleAlpha) * idleCam()) + (Sine(walkAlpha) * walkCam())
5713
				camAng = camAng + RAD(105 * dt) * stanceSway * camSway
5714
			end
5715
		end)
5716
	end
5717
end
5718
5719
function unAimGun(Exception)
5720
	if (not S.canADS) then return end
5721
	
5722
	mouseSensitivity = S.sensitivitySettings.Default
5723
	
5724
	for _, Plugin in pairs(Plugins.UnAimed) do
5725
		spawn(function()
5726
			Plugin()
5727
		end)
5728
	end
5729
	
5730
	if S.guiScope then
5731
		spawn(function()
5732
			if armTable then
5733
				for _, Obj in pairs(armTable[1].Model:GetChildren()) do
5734
					if Obj:IsA("BasePart") then
5735
						Obj.LocalTransparencyModifier = 0
5736
					end
5737
				end
5738
				for _, Obj in pairs(armTable[2].Model:GetChildren()) do
5739
					if Obj:IsA("BasePart") then
5740
						Obj.LocalTransparencyModifier = 0
5741
					end
5742
				end
5743
			elseif armModel then
5744
				for _, Obj in pairs(armModel:GetChildren()) do
5745
					if Obj:IsA("BasePart") then
5746
						Obj.LocalTransparencyModifier = 0
5747
					end
5748
				end
5749
			end
5750
			for _, Obj in pairs(playerFolder:GetChildren()) do
5751
				if Obj:IsA("BasePart") then
5752
					Obj.LocalTransparencyModifier = 0
5753
				end
5754
			end
5755
			for _, Obj in pairs(Gun:GetChildren()) do
5756
				if Obj:IsA("BasePart") then
5757
					Obj.LocalTransparencyModifier = 0
5758
				end
5759
			end
5760
		end)
5761
	end
5762
	
5763
	if (not Exception) then
5764
		if (not Aimed) then return end
5765
		if (Reloading and Exception) or Knifing then return end
5766
		spreadZoom = "unAimed"
5767
		baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
5768
		Aimed = false
5769
		Aiming = true
5770
		if S.aimSettings.Anim then
5771
			local currentFOV = Cam.FieldOfView
5772
			local currentTrans = (Scope.BackgroundTransparency == 1 and (S.guiScope and 0 or 1) or Scope.BackgroundTransparency)
5773
			scopeMain.Visible = false
5774
			scopeSteady.Visible = false
5775
			tweenJoint(LWeld, armC0[1], S.unAimedC1.leftArm, Sine, S.aimSettings.Speed)
5776
			tweenJoint(RWeld, armC0[2], S.unAimedC1.rightArm, Sine, S.aimSettings.Speed)
5777
			tweenJoint(headWeld2, nil, CF(), Sine, S.aimSettings.Speed)
5778
			tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, S.aimSettings.Speed)
5779
			local t0 = tick()
5780
			while true do
5781
				RS.RenderStepped:wait()
5782
				local Alpha = math.min((tick() - t0) / S.aimSettings.Speed, 1) * 90
5783
				if Aimed then break end
5784
				if (not Selected) then break end
5785
				aimAlpha = 1 - Sine(Alpha)--1 - COS(RAD(X))
5786
				aimHeadOffset = headOffset.X * aimAlpha
5787
				jumpAnimMultiplier = numLerp(1, S.fallSettings.aimEffect, aimAlpha)
5788
				translationDivisor = numLerp(7, 20, aimAlpha)
5789
				rotationMultiplier = numLerp(S.momentumSettings.Amplitude.unAimed, S.momentumSettings.Amplitude.Aimed, aimAlpha)
5790
				armTiltMultiplier = numLerp(1, 0.2, aimAlpha)
5791
				Cam.FieldOfView = numLerp(80, currentFOV, aimAlpha)
5792
				Scope.BackgroundTransparency = numLerp(1, currentTrans, aimAlpha)
5793
				if Alpha == 90 then break end
5794
			end
5795
		else
5796
			scopeMain.Visible = false
5797
			scopeSteady.Visible = false
5798
			LWeld.C0, LWeld.C1 = armC0[1], S.unAimedC1.leftArm
5799
			RWeld.C0, RWeld.C1 = armC0[2], S.unAimedC1.rightArm
5800
			headWeld2.C0 = CF()
5801
			Grip.C1 = S.unAimedC1.Grip
5802
			aimAlpha = 0
5803
			aimHeadOffset = 0
5804
			jumpAnimMultiplier = 1
5805
			translationDivisor = 7
5806
			rotationMultiplier = S.momentumSettings.Amplitude.unAimed
5807
			armTiltMultiplier = 1
5808
			Cam.FieldOfView = 80
5809
			Scope.BackgroundTransparency = 1
5810
		end
5811
		Aiming = Aimed
5812
	else
5813
		spawn(function()
5814
			Aimed = false
5815
			Aiming = false
5816
			spreadZoom = "unAimed"
5817
			baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
5818
			local currentFOV = Cam.FieldOfView
5819
			local currentTrans = (Scope.BackgroundTransparency == 1 and (S.guiScope and 0 or 1) or Scope.BackgroundTransparency)
5820
			scopeMain.Visible = false
5821
			scopeSteady.Visible = false
5822
			tweenJoint(headWeld2, nil, CF(), Sine, S.aimSettings.Speed)
5823
			if S.aimSettings.Anim then
5824
				local t0 = tick()
5825
				while true do
5826
					RS.RenderStepped:wait()
5827
					local Alpha = math.min((tick() - t0) / S.aimSettings.Speed, 1) * 90
5828
					if Aimed then break end
5829
					if (not Selected) then break end
5830
					aimAlpha = 1 - Sine(Alpha)--1 - COS(RAD(90 - Alpha))
5831
					aimHeadOffset = headOffset.X * aimAlpha
5832
					jumpAnimMultiplier = numLerp(1, S.fallSettings.aimEffect, aimAlpha)
5833
					translationDivisor = numLerp(7, 20, aimAlpha)
5834
					rotationMultiplier = numLerp(S.momentumSettings.Amplitude.unAimed, S.momentumSettings.Amplitude.Aimed, aimAlpha)
5835
					armTiltMultiplier = numLerp(1, 0.2, aimAlpha)
5836
					Cam.FieldOfView = numLerp(80, currentFOV, aimAlpha)
5837
					Scope.BackgroundTransparency = numLerp(1, currentTrans, aimAlpha)
5838
					if Alpha == 90 then break end
5839
				end
5840
			else
5841
				scopeMain.Visible = false
5842
				scopeSteady.Visible = false
5843
				aimAlpha = 0
5844
				aimHeadOffset = 0
5845
				jumpAnimMultiplier = 1
5846
				translationDivisor = 7
5847
				rotationMultiplier = S.momentumSettings.Amplitude.unAimed
5848
				armTiltMultiplier = 1
5849
				Cam.FieldOfView = 80
5850
				Scope.BackgroundTransparency = 1
5851
			end
5852
		end)
5853
	end
5854
end
5855
5856
--------------------[ TEXTURE CREATION FUNCTIONS ]------------------------------------
5857
5858
function createBullet(Direction)
5859
	local Origin = Gun.Main.CFrame.p
5860
	local bulletCF = CF(Origin, Origin + Direction)
5861
	local Bullet = Instance.new("Part")
5862
	Bullet.BrickColor = S.bulletSettings.Color
5863
	Bullet.Material = Enum.Material.Neon
5864
	Bullet.Name = "Bullet"
5865
	Bullet.CanCollide = false
5866
	Bullet.FormFactor = "Custom"
5867
	Bullet.Size = S.bulletSettings.Size
5868
	Bullet.BottomSurface = "Smooth"
5869
	Bullet.TopSurface = "Smooth"
5870
	if math.min(S.bulletSettings.Size.X, S.bulletSettings.Size.Y, S.bulletSettings.Size.Z) < 0.2 then
5871
		local Mesh = Instance.new("BlockMesh")
5872
		Mesh.Scale = S.bulletSettings.Size / Vector3.new(
5873
			math.max(S.bulletSettings.Size.X, 0.2),
5874
			math.max(S.bulletSettings.Size.Y, 0.2),
5875
			math.max(S.bulletSettings.Size.Z, 0.2)
5876
		)
5877
		Mesh.Parent = Bullet
5878
	end
5879
	local BF = Instance.new("BodyForce")
5880
	BF.force = V3(0, Bullet:GetMass() * (196.2 - S.bulletSettings.Acceleration), 0)
5881
	BF.Parent = Bullet
5882
	Bullet.Parent = gunIgnore
5883
	Bullet.CFrame = bulletCF + Direction * S.bulletSettings.Size.Z / 2
5884
	Bullet.Velocity = Direction * S.bulletSettings.Velocity
5885
	return Bullet
5886
end
5887
5888
--------------------[ HIT HANDLING FUNCTIONS ]----------------------------------------
5889
5890
function getBaseDamage(Dist)
5891
	local startDmg = S.damageSettings.Start.Damage
5892
	local startDist = S.damageSettings.Start.Dist
5893
	local endDmg = S.damageSettings.End.Damage
5894
	local endDist = S.damageSettings.End.Dist
5895
	return (
5896
		(
5897
			Dist < startDist * S.bulletSettings.Range
5898
		) and startDmg or
5899
		(
5900
			Dist >= startDist * S.bulletSettings.Range and
5901
			Dist < endDist * S.bulletSettings.Range
5902
		) and numLerp(startDmg, endDmg, Map(Dist / S.bulletSettings.Range, startDist, endDist, 0, 1)) or
5903
		(
5904
			Dist >= endDist * S.bulletSettings.Range
5905
		) and endDmg
5906
	)
5907
end
5908
5909
function Damage(H, P, N, D, Dist, customIgnore)
5910
	local hVal = S.damageSettings.Multipliers.Head
5911
	local cVal = S.damageSettings.Multipliers.Chest
5912
	local lVal = S.damageSettings.Multipliers.Limbs
5913
	local baseDamage = getBaseDamage(Dist)
5914
	if Humanoid.Health ~= 0 then
5915
		local hitHumanoid = nil
5916
		if H.Parent:IsA("Hat") then
5917
			table.insert(customIgnore, H)
5918
			local newRay = Ray.new(P - D * 0.1, D * (S.bulletSettings.Range - Dist + 0.1))
5919
			local newH, newP, newN = workspace:FindPartOnRayWithIgnoreList(newRay, customIgnore)
5920
			if newH then
5921
				hitHumanoid = Damage(newH, newP, newN, D, Dist + (newP - P).magnitude, customIgnore)
5922
			end
5923
		else
5924
			hitHumanoid = findFirstClass(H.Parent, "Humanoid")
5925
			if hitHumanoid and hitHumanoid.Health > 0 and isEnemy(hitHumanoid) then
5926
				local Tag = Instance.new("ObjectValue")
5927
				Tag.Value = Player
5928
				Tag.Name = "creator"
5929
				Tag.Parent = hitHumanoid
5930
				DS:AddItem(Tag, 0.3)
5931
				local chosenDamage = 0
5932
				if H.Name == "Head" then
5933
					chosenDamage = baseDamage  * RAND(hVal, hVal + 0.1, 0.01)
5934
				elseif H.Name == "Torso" then
5935
					chosenDamage = baseDamage  * RAND(cVal, cVal + 0.1, 0.01)
5936
				else
5937
					chosenDamage = baseDamage  * RAND(lVal, lVal + 0.1, 0.01)
5938
				end
5939
				hitHumanoid:TakeDamage(chosenDamage)
5940
				markHit()
5941
			end
5942
		end
5943
		return hitHumanoid
5944
	end
5945
end
5946
5947
function isWallIgnored(Wall)
5948
	return (
5949
		Wall.Transparency >= S.penetrationSettings.transparencyThreshold or
5950
		(S.penetrationSettings.ignoreNonCanCollide and (not Wall.CanCollide)) or
5951
		isIgnored(Wall, S.penetrationSettings.ignoreCustom)
5952
	)
5953
end
5954
5955
function penetrateWall(Wall, hitPos, Direction, Normal, Ignore, totalPDist, totalBDist, lastDamagedHumanoid)
5956
	local wallIgnore = isWallIgnored(Wall)
5957
	local hitHumanoid = (Wall.Parent:IsA("Hat") and findFirstClass(Wall.Parent.Parent, "Humanoid") or findFirstClass(Wall.Parent, "Humanoid"))
5958
	local damagedHumanoid = nil
5959
	if hitHumanoid and hitHumanoid ~= lastDamagedHumanoid then
5960
		lastDamagedHumanoid = hitHumanoid
5961
		damagedHumanoid = Damage(Wall, hitPos, Normal, Direction, totalBDist, {Char, ignoreModel})
5962
	else
5963
		lastDamagedHumanoid = nil
5964
	end
5965
	local ignoreObject = hitHumanoid and (Wall.Parent:IsA("Hat") and Wall.Parent.Parent or Wall.Parent) or Wall
5966
	table.insert(Ignore, ignoreObject)
5967
	local rayLength = S.bulletSettings.Range - totalBDist
5968
	local testRay = Ray.new(hitPos, Direction * (S.bulletSettings.Range - totalBDist))
5969
	local H1, P1, N1 = workspace:FindPartOnRayWithIgnoreList(testRay, Ignore)
5970
	local newIgnore = removeElement(Ignore, ignoreObject)
5971
	local wallRay = Ray.new(P1 + Direction * 0.1, -Direction * (rayLength + 1))
5972
	local H2, P2, N2 = workspace:FindPartOnRayWithIgnoreList(wallRay, Ignore)
5973
	local newPDist = totalPDist + (wallIgnore and 0 or (getNearestPoint(P1, P2, hitPos) - hitPos).magnitude)
5974
	local newBDist = totalBDist + (P1 - hitPos).magnitude
5975
	local outOfRange = Round(newPDist, 0.001) > S.penetrationSettings.Dist or Round(newBDist, 0.001) > S.bulletSettings.Range
5976
	if (not wallIgnore) then
5977
		createBulletImpact:FireServer(Wall, hitPos, Normal, Direction, hitHumanoid, gunIgnore, S)
5978
		if (not hitHumanoid) then
5979
			createShockwave:FireServer(hitPos, S.shockwaveSettings.Radius, gunIgnore, S)
5980
		end
5981
	end
5982
	if hitHumanoid and hitHumanoid.Health > 0 and isEnemy(hitHumanoid) and hitHumanoid == damagedHumanoid then
5983
		createBlood:FireServer(Wall, P2, Direction, gunIgnore, S)
5984
	end
5985
	if outOfRange or (not H1) then
5986
		if (not outOfRange) and (not wallIgnore) then
5987
			createBulletImpact:FireServer(Wall, P2, N2, Direction, hitHumanoid, gunIgnore, S)
5988
			if (not hitHumanoid) then
5989
				createShockwave:FireServer(P2, S.shockwaveSettings.Radius, gunIgnore, S)
5990
			end
5991
		end
5992
		return Wall, hitPos
5993
	else
5994
		if Wall == H2 and (not wallIgnore) then
5995
			createBulletImpact:FireServer(Wall, P2, N2, Direction, hitHumanoid, gunIgnore, S)
5996
			if (not hitHumanoid) then
5997
				createShockwave:FireServer(P2, S.shockwaveSettings.Radius, gunIgnore, S)
5998
			end
5999
		end
6000
		return penetrateWall(H1, P1, Direction, N1, Ignore, newPDist, newBDist, lastDamagedHumanoid)
6001
	end
6002
end
6003
6004
function PenetrateWall(HitPos, Direction, HitHumanoid, OriginPos, Bullet, CurrentPDist)
6005
	local HitDist = (HitPos - OriginPos).magnitude
6006
	local Wall, WallHitPos = nil, nil
6007
	local Hum, HumHitPos = nil, nil
6008
	local CustomIgnore = {unpack(Ignore)}
6009
	for i = 1, 10 do
6010
		local WallRay = Ray.new(HitPos - (Direction * 0.1), Direction * S.Penetration)
6011
		local H, P = game.Workspace:FindPartOnRayWithIgnoreList(WallRay, CustomIgnore)
6012
		if H then
6013
			local HitHumanoid = nil
6014
			if H.Parent.ClassName == "Hat" then
6015
				HitHumanoid = findFirstClass(H.Parent.Parent, "Humanoid")
6016
			else
6017
				HitHumanoid = findFirstClass(H.Parent, "Humanoid")
6018
			end
6019
			if HitHumanoid and i ~= 1 then
6020
				Hum, HumHitPos = H, P
6021
				break
6022
			else
6023
				Wall, WallHitPos = H, P
6024
				table.insert(CustomIgnore, H)
6025
			end
6026
		else
6027
			break
6028
		end
6029
	end
6030
	if Wall then
6031
		if S.InstantHit then
6032
			if Hum then
6033
				Damage(Hum.Parent:FindFirstChild("Head"), HumHitPos)
6034
				return HumHitPos
6035
			else
6036
				local HitObj2, HitPos2 = nil, nil
6037
				if HitHumanoid then
6038
					HitObj2, HitPos2 = AdvRayCast(WallHitPos, Direction, S.BulletRange - HitDist, {Wall, HitHumanoid.Parent, unpack(Ignore)})
6039
				else
6040
					HitObj2, HitPos2 = AdvRayCast(WallHitPos, Direction, S.BulletRange - HitDist, {Wall, unpack(Ignore)})
6041
				end
6042
				Damage(HitObj2, HitPos2)
6043
				
6044
				local NewPDist = CurrentPDist + (WallHitPos - HitPos).magnitude
6045
				local NewHitPos2 = HitPos2
6046
				if NewPDist < S.Penetration and HitObj2 then
6047
					NewHitPos2 = PenetrateWall(HitPos2, Direction, HitHumanoid, OriginPos, Bullet, CurrentPDist + NewPDist)
6048
				end
6049
				return NewHitPos2
6050
			end
6051
		else
6052
			local LastPos = WallHitPos
6053
			local TotalDistTraveled = 0
6054
			spawn(function()
6055
				if Hum then
6056
					Damage(Hum.Parent:FindFirstChild("Head"), HumHitPos)
6057
					return HumHitPos
6058
				else
6059
					while true do
6060
						RS.RenderStepped:wait()
6061
						if TotalDistTraveled >= S.BulletRange - HitDist then
6062
							Bullet:Destroy()
6063
							break
6064
						end
6065
						local DistTraveled = (Bullet.Position - LastPos).magnitude
6066
						local NewDirection = (Bullet.Position - LastPos).unit
6067
						local TempHitObj, TempHitPos = nil, nil
6068
						if HitHumanoid then
6069
							TempHitObj, TempHitPos = AdvRayCast(LastPos, NewDirection, DistTraveled, {Wall, HitHumanoid.Parent, unpack(Ignore)})
6070
						else
6071
							TempHitObj, TempHitPos = AdvRayCast(LastPos, NewDirection, DistTraveled, {Wall, unpack(Ignore)})
6072
						end
6073
						if TempHitObj then
6074
							Damage(TempHitObj, TempHitPos)
6075
							
6076
							local NewPDist = CurrentPDist + (WallHitPos - HitPos).magnitude
6077
							local NewTempPos = TempHitPos
6078
							if NewPDist < S.Penetration and TempHitObj then
6079
								NewTempPos = PenetrateWall(TempHitPos, Direction, HitHumanoid, OriginPos, Bullet, CurrentPDist + NewPDist)
6080
							else
6081
								Bullet:Destroy()
6082
							end
6083
							return NewTempPos
6084
						else
6085
							LastPos = Bullet.Position
6086
							TotalDistTraveled = TotalDistTraveled + DistTraveled
6087
						end
6088
					end
6089
				end
6090
			end)
6091
		end
6092
	else
6093
		if Bullet then Bullet:Destroy() end
6094
		return HitPos
6095
	end
6096
end
6097
6098
function isEnemy(Human)
6099
	local Plyr = game.Players:GetPlayerFromCharacter(Human.Parent)
6100
	if (not Plyr) then return S.CanDamageNPCs end
6101
	return S.AllowFriendlyFire or (Plyr.TeamColor ~= Player.TeamColor or Plyr.Neutral)
6102
end
6103
6104
--------------------[ RELOAD FUNCTIONS ]----------------------------------------------
6105
6106
function animateReload()
6107
	tweenJoint(LWeld2, CF(), CF(), Sine, 0.15)
6108
	tweenJoint(RWeld2, CF(), CF(), Sine, 0.15)
6109
	local magParts = {}
6110
	local magTable = {}
6111
			
6112
	for _, Obj in pairs(Gun:GetChildren()) do
6113
		if string.sub(Obj.Name, 1, 3) == "Mag" and Obj:IsA("BasePart") then
6114
			INSERT(magParts, Obj)
6115
		end
6116
	end
6117
	
6118
	local animVars = {
6119
		--FUNCTIONS--
6120
		tweenJoint = tweenJoint;
6121
		
6122
		makeMagInvisible = function()
6123
			for _, v in pairs(magParts) do
6124
				v.Transparency = 1
6125
			end
6126
			magVisible = false
6127
		end;
6128
		
6129
		makeMagVisible = function()
6130
			for _, v in pairs(magParts) do
6131
				v.Transparency = v:WaitForChild("magTrans").Value
6132
			end
6133
			magVisible = true
6134
		end;
6135
		
6136
		isMagVisible = function()
6137
			return magVisible
6138
		end;
6139
		
6140
		isMagEmpty = function()
6141
			return ammoInClip == 0
6142
		end;
6143
		
6144
		setNewMag = function()
6145
			newMag = true
6146
		end;
6147
		
6148
		isNewMag = function()
6149
			return newMag
6150
		end;
6151
		
6152
		createMag = function(Key)
6153
			local magModel = Instance.new("Model")
6154
			local magClones = {}
6155
			for i, v in pairs(magParts) do
6156
				local vClone = v:Clone()
6157
				vClone.Transparency = v:WaitForChild("magTrans").Value
6158
				vClone.CanCollide = false
6159
				vClone.Parent = magModel
6160
				INSERT(magClones, {Original = v, magClone = vClone})
6161
				if i ~= 1 then
6162
					local W = Instance.new("Weld")
6163
					W.Part0 = magClones[1].magClone
6164
					W.Part1 = vClone
6165
					W.C0 = magClones[1].magClone.CFrame:toObjectSpace(vClone.CFrame)
6166
					W.Parent = magClones[1].magClone
6167
				end
6168
			end
6169
			magTable[Key] = {magModel, magClones}
6170
			return magModel, magClones
6171
		end;
6172
		
6173
		getMag = function(Key)
6174
			if magTable[Key] then
6175
				return magTable[Key][1], magTable[Key][2]
6176
			else
6177
				return nil, nil
6178
			end
6179
		end;
6180
		
6181
		attachGripToHead = function()
6182
			local handleCF = RArm.CFrame * Grip.C0
6183
			Grip.C0 = Head.CFrame:toObjectSpace(handleCF)
6184
			Grip.Part0 = Head
6185
		end;
6186
		
6187
		attachGripToArm = function()
6188
			local handleCF = Head.CFrame * Grip.C0
6189
			Grip.C0 = RArm.CFrame:toObjectSpace(handleCF)
6190
			Grip.Part0 = RArm
6191
		end;
6192
		
6193
		Sine = Sine;
6194
		
6195
		Linear = Linear;
6196
		
6197
		--VARIABLES--
6198
		Handle = Handle;
6199
		LArm = LArm;
6200
		RArm = RArm;
6201
		LWeld = LWeld;
6202
		RWeld = RWeld;
6203
		LC0 = armC0[1];
6204
		RC0 = armC0[2];
6205
		Grip = Grip;
6206
		gunIgnore = gunIgnore;
6207
		Cam = Cam;
6208
		CF = CF;
6209
		CFANG = CFANG;
6210
		V3 = V3;
6211
		RAD = RAD;
6212
		reloadTimeLoaded = S.reloadSettings.Times.Loaded;
6213
		reloadTimeEmpty = S.reloadSettings.Times.Empty
6214
	}
6215
	
6216
	local sequenceTable = Anims.Reload(animVars)
6217
	--local T = tick()
6218
	for _, reloadFunction in pairs(sequenceTable) do
6219
		if breakReload then
6220
			break
6221
		end
6222
		reloadFunction()
6223
		
6224
		if (not magVisible) then
6225
			Ammo.Value = 0
6226
		end
6227
		updateClipAmmo()
6228
	end
6229
	--print(tick() - T) --I divide the reloadTime by this number to get the animation speed
6230
	
6231
	if (not isCrawling) then
6232
		if Running and (not S.canFireWhileRunning) then
6233
			tweenJoint(LWeld, armC0[1], S.runningC1.leftArm, Sine, 0.4)
6234
			tweenJoint(RWeld, armC0[2], S.runningC1.rightArm, Sine, 0.4)
6235
			tweenJoint(Grip, nil, S.runningC1.Grip, Sine, 0.4)
6236
		else
6237
			tweenJoint(LWeld, armC0[1], S.unAimedC1.leftArm, Sine, 0.4)
6238
			tweenJoint(RWeld, armC0[2], S.unAimedC1.rightArm, Sine, 0.4)
6239
			tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, 0.4)
6240
		end
6241
	end
6242
	
6243
	for _, v in pairs(magTable) do --In case the reload animations was stopped mid way and there were still fake mags that weren't deleted
6244
		v[1]:Destroy()
6245
	end
6246
end
6247
6248
function Reload()
6249
	if Ammo.Value < (ClipSize.Value + 1) and (not Reloading) and StoredAmmo.Value > 0 then
6250
		Firing = false
6251
		ammoInClip = (ammoInClip == 0 and Ammo.Value or ammoInClip)
6252
		Reloading = true
6253
		lowerSpread()
6254
		if Aimed then unAimGun(S.reloadSettings.Anim) end
6255
		crossHair.Reload.Visible = true
6256
		if Handle:FindFirstChild("ReloadSound") then Handle.ReloadSound:Play() end
6257
		if S.reloadSettings.Anim then
6258
			wait()
6259
			animateReload()
6260
		else
6261
			local startReload = tick()
6262
			local initialReloadTime = Ammo.Value == 0 and S.reloadSettings.Times.Empty or S.reloadSettings.Times.Loaded
6263
			while true do
6264
				if breakReload then break end
6265
				if (tick() - startReload) >= initialReloadTime then break end
6266
				RS.RenderStepped:wait()
6267
			end
6268
		end
6269
		if (not breakReload) then
6270
			newMag = false
6271
			if StoredAmmo.Value >= ClipSize.Value then
6272
				if ammoInClip > 0 then
6273
					StoredAmmo.Value = StoredAmmo.Value - ((ClipSize.Value + 1) - ammoInClip)
6274
					Ammo.Value = ClipSize.Value + 1
6275
				else
6276
					StoredAmmo.Value = StoredAmmo.Value - ClipSize.Value
6277
					Ammo.Value = ClipSize.Value
6278
				end
6279
			elseif StoredAmmo.Value < ClipSize.Value and StoredAmmo.Value > 0 then
6280
				Ammo.Value = StoredAmmo.Value
6281
				StoredAmmo.Value = 0
6282
			end
6283
		end
6284
		Reloading = false
6285
		if Selected then
6286
			ammoInClip = (breakReload and ammoInClip or 0)
6287
			crossHair.Reload.Visible = false
6288
		end
6289
		breakReload = false
6290
	end
6291
	
6292
	updateClipAmmo()
6293
	updateStoredAmmo()
6294
end
6295
6296
--------------------[ EXTERNAL DATA LOCATING FUNCTIONS ]-----------------------------
6297
6298
function removeElement(Table, Element) --removes the first instance of Element from Table
6299
	for i, v in pairs(Table) do
6300
		if v == Element then
6301
			table.remove(Table, i)
6302
			break
6303
		end
6304
	end
6305
	return Table
6306
end
6307
6308
function findFirstClass(Object, Class)
6309
	local foundObject = nil
6310
	for _, Obj in pairs(Object:GetChildren()) do
6311
		if Obj.ClassName == Class then
6312
			foundObject = Obj
6313
			break
6314
		end
6315
	end
6316
	return foundObject
6317
end
6318
6319
function isIgnored(Obj, Table)
6320
	for _,v in pairs(Table) do
6321
		if Obj == v or Obj:IsDescendantOf(v) then
6322
			return true
6323
		end
6324
	end
6325
	return false
6326
end
6327
6328
function GetHitSurfaceCFrame(HitPos,Obj)
6329
	local SurfaceCF = {
6330
		{"Back",Obj.CFrame * CF(0,0,Obj.Size.z)};
6331
		{"Bottom",Obj.CFrame * CF(0,-Obj.Size.y,0)};
6332
		{"Front",Obj.CFrame * CF(0,0,-Obj.Size.z)};
6333
		{"Left",Obj.CFrame * CF(-Obj.Size.x,0,0)};
6334
		{"Right",Obj.CFrame * CF(Obj.Size.x,0,0)};
6335
		{"Top",Obj.CFrame * CF(0,Obj.Size.y,0)}
6336
	}
6337
	local ClosestDist = HUGE
6338
	local ClosestSurface = nil
6339
	for _,v in pairs(SurfaceCF) do
6340
		local SurfaceDist = (HitPos - v[2].p).magnitude
6341
		if SurfaceDist < ClosestDist then
6342
			ClosestDist = SurfaceDist
6343
			ClosestSurface = v
6344
		end
6345
	end
6346
	return ClosestSurface[2]
6347
end
6348
6349
function AdvRayCast(Origin, Direction, Dist, CustomIgnore)
6350
	local NewIgnore = (CustomIgnore and CustomIgnore or Ignore)
6351
	local NewRay = Ray.new(Origin, Direction * (Dist > 999 and 999 or Dist))
6352
	local HitObj, HitPos = game.Workspace:FindPartOnRayWithIgnoreList(NewRay, NewIgnore)
6353
	local LastPos = HitPos
6354
	local FinalHitObj, FinalHitPos = nil, nil
6355
	local RepTimes = math.floor(Dist / 999)
6356
	if (not HitObj) and (Dist > 999) then
6357
		for i = 0, RepTimes do
6358
			local NewDist = (i == RepTimes and  (Dist - (LastPos - Origin).magnitude) or 999)
6359
			local Ray2 = Ray.new(LastPos, Direction * NewDist)
6360
			local HitObj2, HitPos2 = game.Workspace:FindPartOnRayWithIgnoreList(Ray2, NewIgnore)
6361
			if i ~= RepTimes then
6362
				if HitObj2 then
6363
					FinalHitObj, FinalHitPos = HitObj2, HitPos2
6364
					break
6365
				end
6366
			elseif i == RepTimes then
6367
				FinalHitObj, FinalHitPos = HitObj2, HitPos2
6368
			end
6369
			LastPos = HitPos2
6370
		end
6371
		return FinalHitObj, FinalHitPos
6372
	elseif HitObj or (Dist <= 999) then
6373
		return HitObj, HitPos
6374
	end
6375
end
6376
6377
--------------------[ JUMPING ANIMATION ]---------------------------------------------
6378
6379
function onFall(initialVelocity)
6380
	spawn(function()
6381
		local velocityAlpha = math.max(math.min(initialVelocity / Humanoid.JumpPower, 1), 0)
6382
		local startJumpPos = jumpAnim.Pos
6383
		local startJumpRot = jumpAnim.Rot
6384
		local endJumpPos = 0.04 * S.fallSettings.fallMultiplier * velocityAlpha
6385
		local endJumpRot = RAD(4) * S.fallSettings.fallMultiplier * velocityAlpha
6386
		local t0 = tick()
6387
		while true do
6388
			RS.Heartbeat:wait()
6389
			local Alpha = math.min((tick() - t0) / 0.15, 1) * 90
6390
			if onGround then break end
6391
			jumpAnim.Pos = numLerp(startJumpPos, endJumpPos, Sine(Alpha))
6392
			jumpAnim.Rot = numLerp(startJumpRot, endJumpRot, Sine(Alpha))
6393
			if Alpha == 90 then break end
6394
		end
6395
		startJumpPos = endJumpPos
6396
		startJumpRot = endJumpRot
6397
		endJumpPos = -0.08 * S.fallSettings.fallMultiplier
6398
		endJumpRot = -RAD(8) * S.fallSettings.fallMultiplier
6399
		local X = 1
6400
		while true do
6401
			local dt = RS.Heartbeat:wait()
6402
			X = X + (dt * 60) / X
6403
			local Alpha = (X - 1) / 15
6404
			if onGround then break end
6405
			jumpAnim.Pos = numLerp(startJumpPos, endJumpPos, Alpha)
6406
			jumpAnim.Rot = numLerp(startJumpRot, endJumpRot, Alpha)
6407
		end
6408
	end)
6409
end
6410
6411
function onLand(fallDist)
6412
	spawn(function()
6413
		local animAlpha = math.min(fallDist, S.fallSettings.maxDist) * (2 / 3)
6414
		local startJumpPos = jumpAnim.Pos
6415
		local startJumpRot = jumpAnim.Rot
6416
		local endJumpPos = animAlpha / 100 * S.fallSettings.landMultiplier * (runReady and 1 or 2)
6417
		local endJumpRot = RAD(animAlpha) * S.fallSettings.landMultiplier * (runReady and 1 or 2)
6418
		local t0 = tick()
6419
		while true do
6420
			RS.Heartbeat:wait()
6421
			local Alpha = math.min((tick() - t0) / 0.2, 1)
6422
			if (not onGround) then break end
6423
			jumpAnim.Pos = numLerp(startJumpPos, endJumpPos, Alpha)
6424
			jumpAnim.Rot = numLerp(startJumpRot, endJumpRot, Alpha)
6425
			if Alpha == 1 then break end
6426
		end
6427
		t0 = tick()
6428
		while true do
6429
			RS.Heartbeat:wait()
6430
			local Alpha = math.min((tick() - t0) / 0.3, 1) * 90
6431
			if (not onGround) then break end
6432
			jumpAnim.Pos = numLerp(endJumpPos, 0, Sine(Alpha))
6433
			jumpAnim.Rot = numLerp(endJumpRot, 0, Sine(Alpha))
6434
			if Alpha == 90 then break end
6435
		end
6436
	end)
6437
end
6438
6439
function onHumanoidStateChanged(oldState, newState)
6440
	if newState == Enum.HumanoidStateType.Freefall then
6441
		onGround = false
6442
		if S.fallAnimation then
6443
			onFall(HRP.Velocity.Y)
6444
			while HRP.Velocity.Y > 0 do RS.RenderStepped:wait() end
6445
			startFallHeight = HRP.Position.Y
6446
		end
6447
	elseif oldState == Enum.HumanoidStateType.Freefall then
6448
		onGround = true
6449
		if S.fallAnimation then
6450
			local fallDist = startFallHeight - HRP.Position.Y
6451
			onLand(fallDist)
6452
		end
6453
	end
6454
end
6455
--------------------[ CAMERA STEADYING FUNCTIONS ]------------------------------------
6456
6457
function steadyCamera()
6458
	scopeSteady.Text = "Steadying..."
6459
	scopeSteady.TextColor3 = Color3.new(1, 1, 0)
6460
	camSteady = true
6461
	local originalSway = camSway
6462
	local Increment = 1.5 / 0.6
6463
	local X = 0
6464
	while true do
6465
		RS.RenderStepped:wait()
6466
		local newX = X + Increment
6467
		X = (newX > 90 and 90 or newX)
6468
		if (not steadyKeyPressed) then break end
6469
		camSway = numLerp(originalSway, 0, Sine(X))
6470
		if X == 90 then break end
6471
	end
6472
	while steadyKeyPressed and Aimed do
6473
		if currentSteadyTime > 0 then
6474
			local NewSteadyTime = currentSteadyTime - 1
6475
			currentSteadyTime = (NewSteadyTime < 0 and 0 or NewSteadyTime)
6476
			camSway = 0
6477
		elseif currentSteadyTime == 0 then
6478
			break
6479
		end
6480
		RS.RenderStepped:wait()
6481
	end
6482
	camSteady = false
6483
	spawn(function()
6484
		local Increment = 1.5 / 0.25
6485
		local X = 0
6486
		while true do
6487
			RS.RenderStepped:wait()
6488
			local newX = X + Increment
6489
			X = (newX > 90 and 90 or newX)
6490
			if camSteady then break end
6491
			camSway = numLerp(0, S.scopeSettings.camSwayOnBreath, 1 - COS(RAD(X)))
6492
			if X == 90 then break end
6493
		end
6494
		Increment = 1.5 / S.scopeSettings.breathTime
6495
		X = 0
6496
		while true do
6497
			RS.RenderStepped:wait()
6498
			local newX = X + Increment
6499
			X = (newX > 90 and 90 or newX)
6500
			if camSteady then break end
6501
			camSway = numLerp(S.scopeSettings.camSwayOnBreath, 1, Sine(X))
6502
			if X == 90 then break end
6503
		end
6504
		--[[for X = 0, 90, 1.5 / 0.2 do
6505
			local Alpha = 1 - COS(RAD(X))--math.log10(X) / math.log10(90)
6506
			camSway = numLerp(0, 3, Alpha)
6507
			RS.RenderStepped:wait()
6508
		end]]
6509
		--[[for X = 0, 90, 1.5 / S.scopeSettings.steadyTime do
6510
			if camSteady then break end
6511
			local Alpha = SIN(RAD(X))
6512
			camSway = numLerp(3, 1, Alpha)
6513
			RS.RenderStepped:wait()
6514
		end]]
6515
	end)
6516
	retakeBreath()
6517
end
6518
6519
function retakeBreath()
6520
	scopeSteady.Text = "Re-taking Breath"
6521
	scopeSteady.TextColor3 = Color3.new(1, 0, 0)
6522
	takingBreath = true
6523
	local Increment = S.scopeSettings.steadyTime / S.scopeSettings.breathTime
6524
	while takingBreath do
6525
		if currentSteadyTime < maxSteadyTime then
6526
			local newSteadyTime = currentSteadyTime + Increment
6527
			currentSteadyTime = (newSteadyTime > maxSteadyTime and maxSteadyTime or newSteadyTime)
6528
		elseif currentSteadyTime >= maxSteadyTime then
6529
			break
6530
		end
6531
		RS.RenderStepped:wait()
6532
	end
6533
	if takingBreath then
6534
		scopeSteady.Text = "Hold "..convertKey(S.Keys.scopeSteady).." to Steady"
6535
		scopeSteady.TextColor3 = Color3.new(1, 1, 0)
6536
		takingBreath = false
6537
	end
6538
end
6539
6540
--------------------[ SPRINTING FUNCTIONS ]-------------------------------------------
6541
6542
function canRun(midRun)
6543
	return ((Forward and (not Backward)) and
6544
		Walking and (Stamina > 0) and Running and
6545
		Selected and (midRun and true or onGround) and
6546
		runReady and (S.canFireWhileRunning and true or (not Firing))
6547
	)
6548
end
6549
6550
function monitorStamina()
6551
	Running = true
6552
	if (not canRun(false)) then
6553
		Running = false
6554
		return
6555
	end
6556
	if Aimed then unAimGun(true) end
6557
	if Stance == 1 or Stance == 2 then Stand() end
6558
	if (not (Reloading and S.reloadSettings.Anim)) then
6559
		if S.canFireWhileRunning then
6560
			tweenJoint(LWeld, armC0[1], S.unAimedC1.leftArm, Sine, 0.4)
6561
			tweenJoint(RWeld, armC0[2], S.unAimedC1.rightArm, Sine, 0.4)
6562
			tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, 0.4)
6563
		else
6564
			tweenJoint(LWeld, armC0[1], S.runningC1.leftArm, Sine, 0.4)
6565
			tweenJoint(RWeld, armC0[2], S.runningC1.rightArm, Sine, 0.4)
6566
			tweenJoint(Grip, nil, S.runningC1.Grip, Sine, 0.4)
6567
		end
6568
	end
6569
	crossOffset = 50
6570
	while runKeyPressed do
6571
		if canRun(true) then
6572
			if onGround then
6573
				local newStamina = Stamina - 1
6574
				Stamina = (newStamina < 0 and 0 or newStamina)
6575
			end
6576
		else
6577
			break
6578
		end
6579
		RS.RenderStepped:wait()
6580
	end
6581
	Running = false
6582
	if (not Aimed) and (not (Reloading and S.reloadSettings.Anim)) and (not S.canFireWhileRunning) then
6583
		crossOffset = 0
6584
		tweenJoint(LWeld, armC0[1], S.unAimedC1.leftArm, Sine, 0.4)
6585
		tweenJoint(RWeld, armC0[2], S.unAimedC1.rightArm, Sine, 0.4)
6586
		tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, 0.4)
6587
	end
6588
	
6589
	rechargeStamina()
6590
end
6591
6592
function rechargeStamina()
6593
	chargingStamina = true
6594
	while ((not runKeyPressed) or (Stamina < maxStamina)) and (not Running) do
6595
		if Stamina < maxStamina then
6596
			local newStamina = Stamina + (S.sprintTime / S.staminaCoolTime)
6597
			Stamina = (newStamina > maxStamina and maxStamina or newStamina)
6598
		elseif Stamina >= maxStamina then
6599
			break
6600
		end
6601
		RS.RenderStepped:wait()
6602
	end
6603
	chargingStamina = false
6604
end
6605
6606
--------------------[ STANCE FUNCTIONS ]----------------------------------------------
6607
6608
function Stand(onDeselected)
6609
	local LHip = Torso["Left Hip"]
6610
	local RHip = Torso["Right Hip"]
6611
	LLegWeld.Part1 = nil
6612
	LHip.Part1 = LLeg
6613
	RLegWeld.Part1 = nil
6614
	RHip.Part1 = RLeg
6615
	Stance = 0
6616
	spreadStance = "Stand"
6617
	baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
6618
	if S.stanceSettings.Anim and (not onDeselected) then
6619
		spawn(function()
6620
			local prevStanceSway = stanceSway
6621
			local X = 0
6622
			local Increment = 1.5 / S.stanceSettings.Speed
6623
			while true do
6624
				RS.RenderStepped:wait()
6625
				local newX = X + Increment
6626
				X = (newX > 90 and 90 or newX)
6627
				if Stance ~= 0 then break end
6628
				stanceSway = numLerp(prevStanceSway, 1, Sine(X))
6629
				if X == 90 then break end
6630
			end
6631
		end)
6632
		tweenJoint(ABWeld, CF(), nil, Sine, S.stanceSettings.Speed)
6633
		tweenJoint(LLegWeld, legC0.Stand[1], nil, Sine, S.stanceSettings.Speed)
6634
		tweenJoint(RLegWeld, legC0.Stand[2], nil, Sine, S.stanceSettings.Speed)
6635
		tweenJoint(LHip, CF(-1, -1, 0) * CFANG(0, RAD(-90), 0), CF(-0.5, 1, 0) * CFANG(0, RAD(-90), 0), Sine, S.stanceSettings.Speed)
6636
		tweenJoint(RHip, CF(1, -1, 0) * CFANG(RAD(-180), RAD(90), 0), CF(0.5, 1, 0) * CFANG(RAD(-180), RAD(90), 0), Sine, S.stanceSettings.Speed)
6637
		tweenJoint(Root, CFANG(RAD(-90), 0, RAD(180)), nil, Sine, S.stanceSettings.Speed)
6638
		tweenJoint(headWeld, CF(0, 1.5, 0), nil, Sine, S.stanceSettings.Speed)
6639
	elseif onDeselected or (not S.stanceSettings.Anim) then
6640
		ABWeld.C0 = CF()
6641
		LLegWeld.C0 = legC0.Stand[1]
6642
		RLegWeld.C0 = legC0.Stand[2]
6643
		LHip.C0, LHip.C1 = CF(-1, -1, 0) * CFANG(0, RAD(-90), 0), CF(-0.5, 1, 0) * CFANG(0, RAD(-90), 0)
6644
		RHip.C0, RHip.C1 = CF(1, -1, 0) * CFANG(RAD(-180), RAD(90), 0), CF(0.5, 1, 0) * CFANG(RAD(-180), RAD(90), 0)
6645
		Root.C0 = CFANG(RAD(-90), 0, RAD(180))
6646
		headWeld.C0 = CF(0, 1.5, 0)
6647
	end
6648
end
6649
6650
function Crouch()
6651
	local LHip = Torso["Left Hip"]
6652
	local RHip = Torso["Right Hip"]
6653
	LHip.Part1 = nil
6654
	LLegWeld.Part1 = LLeg
6655
	RHip.Part1 = nil
6656
	RLegWeld.Part1 = RLeg
6657
	Stance = 1
6658
	spreadStance = "Crouch"
6659
	baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
6660
	if S.stanceSettings.Anim then
6661
		spawn(function()
6662
			local prevStanceSway = stanceSway
6663
			local X = 0
6664
			local Increment = 1.5 / S.stanceSettings.Speed
6665
			while true do
6666
				RS.RenderStepped:wait()
6667
				local newX = X + Increment
6668
				X = (newX > 90 and 90 or newX)
6669
				if Stance ~= 1 then break end
6670
				stanceSway = numLerp(prevStanceSway, 0.75, Sine(X))
6671
				if X == 90 then break end
6672
			end
6673
		end)
6674
		tweenJoint(ABWeld, CF(0, 0, -0.05), nil, Sine, S.stanceSettings.Speed)
6675
		tweenJoint(LLegWeld, legC0.Crouch[1], nil, Sine, S.stanceSettings.Speed)
6676
		tweenJoint(RLegWeld, legC0.Crouch[2], nil, Sine, S.stanceSettings.Speed)
6677
		tweenJoint(LHip, CF(-1, -0.5, 0) * CFANG(0, RAD(-90), 0), CF(-0.5, 0.5, 1) * CFANG(0, RAD(-90), RAD(-90)), Sine, S.stanceSettings.Speed)
6678
		tweenJoint(RHip, CF(1, -0.5, 0.25) * CFANG(RAD(-180), RAD(90), 0), CF(0.5, 0.5, 1) * CFANG(RAD(-180), RAD(90), 0), Sine, S.stanceSettings.Speed)
6679
		tweenJoint(Root, CF(0, -1, 0) * CFANG(RAD(-90), 0, RAD(180)), nil, Sine, S.stanceSettings.Speed)
6680
		tweenJoint(headWeld, CF(0, 1.5, 0), nil, Sine, S.stanceSettings.Speed)
6681
	else
6682
		ABWeld.C0 = CF(0, 0, -1 / 16)
6683
		LLegWeld.C0 = legC0.Crouch[1]
6684
		RLegWeld.C0 = legC0.Crouch[2]
6685
		LHip.C0, LHip.C1 = CF(-1, -0.5, 0) * CFANG(0, RAD(-90), 0), CF(-0.5, 0.5, 1) * CFANG(0, RAD(-90), RAD(-90))
6686
		RHip.C0, RHip.C1 = CF(1, -0.5, 0.25) * CFANG(RAD(-180), RAD(90), 0), CF(0.5, 0.5, 1) * CFANG(RAD(-180), RAD(90), 0)
6687
		Root.C0 = CF(0, -1, 0) * CFANG(RAD(-90), 0, RAD(180))
6688
		headWeld.C0 = CF(0, 1.5, 0)
6689
	end
6690
end
6691
6692
function Prone()
6693
	local LHip = Torso["Left Hip"]
6694
	local RHip = Torso["Right Hip"]
6695
	LHip.Part1 = nil
6696
	LLegWeld.Part1 = LLeg
6697
	RHip.Part1 = nil
6698
	RLegWeld.Part1 = RLeg
6699
	Stance = 2
6700
	spreadStance = "Prone"
6701
	baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
6702
	if S.stanceSettings.Anim then
6703
		spawn(function()
6704
			local prevStanceSway = stanceSway
6705
			local X = 0
6706
			local Increment = 1.5 / S.stanceSettings.Speed
6707
			while true do
6708
				RS.RenderStepped:wait()
6709
				local newX = X + Increment
6710
				X = (newX > 90 and 90 or newX)
6711
				if Stance ~= 2 then break end
6712
				stanceSway = numLerp(prevStanceSway, 0.5, Sine(X))
6713
				if X == 90 then break end
6714
			end
6715
		end)
6716
		tweenJoint(ABWeld, CF(0, 0, -0.1), nil, Sine, S.stanceSettings.Speed)
6717
		tweenJoint(LLegWeld, legC0.Prone[1], nil, Sine, S.stanceSettings.Speed)
6718
		tweenJoint(RLegWeld, legC0.Prone[2], nil, Sine, S.stanceSettings.Speed)
6719
		tweenJoint(Root, CF(0, -2.5, 1) * CFANG(RAD(180), 0, RAD(180)), nil, Sine, S.stanceSettings.Speed)
6720
		tweenJoint(headWeld, CF(0, 1, 1) * CFANG(RAD(90), 0, 0), nil, Sine, S.stanceSettings.Speed)
6721
	else
6722
		ABWeld.C0 = CF(0, 0, -1 / 8)
6723
		LLegWeld.C0 = legC0.Prone[1]
6724
		RLegWeld.C0 = legC0.Prone[2]
6725
		Root.C0 = CF(0, -2.5, 1) * CFANG(RAD(180), 0, RAD(180))
6726
		headWeld.C0 = CF(0, 1, 1) * CFANG(RAD(90), 0, 0)
6727
	end
6728
end
6729
6730
function Dive()
6731
	onGround = false
6732
	local diveDirection = (HRP.CFrame * CFANG(S.diveSettings.Angle, 0, 0)).lookVector * S.walkSpeeds.Sprinting * S.diveSettings.Force
6733
	local BF = Instance.new("BodyForce")
6734
	BF.force = diveDirection + Vector3.new(0, playerMass * 196.2, 0)
6735
	BF.Parent = HRP
6736
	--[[spawn(function()
6737
		HRP.Velocity = HRP.CFrame.lookVector * 60 + V3(0, 40, 0)
6738
		wait(0.1)
6739
		HRP.Velocity = HRP.CFrame.lookVector * 70 + V3(0, 30, 0)
6740
		wait(0.4)
6741
		HRP.Velocity = HRP.CFrame.lookVector * 30 + V3(0, -10, 0)
6742
	end)]]
6743
	delay(0.05, function()
6744
		spawn(function()
6745
			while true do
6746
				local newRay = Ray.new(HRP.Position, V3(0, -3.1, 0))
6747
				local H, _ = workspace:FindPartOnRayWithIgnoreList(newRay, Ignore)
6748
				if H then
6749
					onGround = true
6750
					break
6751
				end
6752
				wait()
6753
			end
6754
		end)
6755
		Prone()
6756
		wait(0.1)
6757
		BF:Destroy()
6758
	end)
6759
end
6760
6761
--------------------[ MOUSE FUNCTIONS ]-----------------------------------------------
6762
6763
function onMB1Down()
6764
	MB1Down = true
6765
	firstShot = true
6766
	if fireFunction then
6767
		fireFunction()
6768
	end
6769
end
6770
6771
function onMB1Up()
6772
	MB1Down = false
6773
	lowerSpread()
6774
end
6775
6776
function onMB2Down()
6777
	if S.aimSettings.holdToADS then
6778
		if (not AimingIn) and (not Aimed) then
6779
			AimingIn = true
6780
			aimGun()
6781
			AimingIn = false
6782
		end
6783
	else
6784
		if Aimed then
6785
			unAimGun()
6786
		else
6787
			aimGun()
6788
		end
6789
	end
6790
end
6791
6792
function onMB2Up()
6793
	if S.aimSettings.holdToADS then
6794
		if (not AimingOut) and Aimed then
6795
			AimingOut = true
6796
			unAimGun()
6797
			AimingOut = false
6798
		end
6799
	end
6800
end
6801
6802
function onScrollUp()
6803
	local newAimSensitivity = aimSensitivity + S.sensitivitySettings.Increment
6804
	aimSensitivity = (
6805
		newAimSensitivity < S.sensitivitySettings.Min and S.sensitivitySettings.Min or
6806
		newAimSensitivity > S.sensitivitySettings.Max and S.sensitivitySettings.Max or
6807
		newAimSensitivity
6808
	)
6809
	mouseSensitivity = (Aimed and aimSensitivity or mouseSensitivity)
6810
	
6811
	Sens.Text = "S: "..aimSensitivity
6812
	if mainGUI:IsDescendantOf(game) then
6813
		Sens.Visible = true
6814
		local t0 = tick()
6815
		lastSensUpdate = t0
6816
		
6817
		wait(0.3)
6818
		
6819
		if lastSensUpdate <= t0 then
6820
			Sens.Visible = false
6821
		end
6822
	end
6823
end
6824
6825
function onScrollDown()
6826
	local newAimSensitivity = aimSensitivity - S.sensitivitySettings.Increment
6827
	aimSensitivity = (
6828
		newAimSensitivity < S.sensitivitySettings.Min and S.sensitivitySettings.Min or
6829
		newAimSensitivity > S.sensitivitySettings.Max and S.sensitivitySettings.Max or
6830
		newAimSensitivity
6831
	)
6832
	mouseSensitivity = (Aimed and aimSensitivity or mouseSensitivity)
6833
	
6834
	Sens.Text = "S: "..aimSensitivity
6835
	if mainGUI:IsDescendantOf(game) then
6836
		Sens.Visible = true
6837
		local t0 = tick()
6838
		lastSensUpdate = t0
6839
		
6840
		wait(0.3)
6841
		
6842
		if lastSensUpdate <= t0 then
6843
			Sens.Visible = false
6844
		end
6845
	end
6846
end
6847
6848
--------------------[ KEYBOARD FUNCTIONS ]--------------------------------------------
6849
6850
function keyDown(K)
6851
	local Key = string.lower(K)
6852
	
6853
	if Key == S.Keys.lowerStance and S.canChangeStance then
6854
		if (not Running) then
6855
			if Stance == 0 then
6856
				if S.stanceSettings.Stances.Crouch then
6857
					Crouch()
6858
				elseif S.stanceSettings.Stances.Prone then
6859
					Prone()
6860
				end
6861
			elseif Stance == 1 then
6862
				if S.stanceSettings.Stances.Prone then
6863
					Prone()
6864
				end
6865
			end
6866
		elseif S.dolphinDive then
6867
			wait()
6868
			if Humanoid:GetState() ~= Enum.HumanoidStateType.Freefall and (not UIS:IsKeyDown("Space")) and runReady then
6869
				local tempConnection = Humanoid.Changed:connect(function()
6870
					Humanoid.Jump = false
6871
				end)
6872
				runReady = false
6873
				Dive()
6874
				Running = false
6875
				wait(S.diveSettings.rechargeTime)
6876
				tempConnection:disconnect()
6877
				runReady = true
6878
			end
6879
		end
6880
	end
6881
	
6882
	if Key == S.Keys.raiseStance and S.canChangeStance then
6883
		if (not Running) then
6884
			if Stance == 2 then
6885
				if S.stanceSettings.Stances.Crouch then
6886
					Crouch()
6887
				else
6888
					Stand()
6889
				end
6890
			elseif Stance == 1 then
6891
				Stand()
6892
			end
6893
		end
6894
	end
6895
	
6896
	if Key == S.Keys.ADS then
6897
		if S.aimSettings.holdToADS then
6898
			if (not AimingIn) and (not Aimed) then
6899
				AimingIn = true
6900
				aimGun()
6901
				AimingIn = false
6902
			end
6903
		else
6904
			if Aimed then
6905
				unAimGun()
6906
			else
6907
				aimGun()
6908
			end
6909
		end
6910
	end
6911
	
6912
	if Key == S.Keys.selectFire and S.selectFire then
6913
		if canSelectFire then
6914
			canSelectFire = false
6915
			rawFireMode = rawFireMode + 1
6916
			modeGUI.Text = Modes[((rawFireMode - 1) % numModes) + 1]
6917
			if modeGUI.Text == "AUTO" then
6918
				fireFunction = autoFire
6919
			elseif modeGUI.Text == "BURST" then
6920
				fireFunction = burstFire
6921
			elseif modeGUI.Text == "SEMI" then
6922
				fireFunction = semiFire
6923
			else
6924
				fireFunction = nil
6925
			end
6926
			local speedAlpha = S.selectFireSettings.animSpeed / 0.6
6927
			if S.selectFireSettings.GUI then
6928
				spawn(function()
6929
					fireSelect.Visible = true
6930
					local prevRawFireMode = rawFireMode
6931
					local Increment = 1.5 / (speedAlpha * 0.25)
6932
					local X = 0
6933
					wait(speedAlpha * 0.1)
6934
					while true do
6935
						RS.RenderStepped:wait()
6936
						local newX = X + Increment
6937
						X = (newX > 90 and 90 or newX)
6938
						if prevRawFireMode ~= rawFireMode then break end
6939
						updateModeLabels(rawFireMode - 1, rawFireMode, X)
6940
						if X == 90 then break end
6941
					end
6942
					wait(speedAlpha * 0.25)
6943
					fireSelect.Visible = false
6944
				end)
6945
			end
6946
			if S.selectFireSettings.Animation and (not Aimed) and (not isRunning) and (not isCrawling) then
6947
				spawn(function()
6948
					local sequenceTable = {
6949
						function()
6950
							tweenJoint(RWeld2, nil, CFANG(0, RAD(5), 0), Sine, speedAlpha * 0.15)
6951
							tweenJoint(LWeld, armC0[1], CF(0.1, 1, -0.3) * CFANG(RAD(-7), 0, RAD(-65)), Linear, speedAlpha * 0.15)
6952
							wait(speedAlpha * 0.2)
6953
						end;
6954
						
6955
						function()
6956
							tweenJoint(LWeld, armC0[1], CF(0.1, 1, -0.3) * CFANG(RAD(-10), 0, RAD(-65)), Linear, speedAlpha * 0.1)
6957
							wait(speedAlpha * 0.2)
6958
						end;
6959
						
6960
						function()
6961
							tweenJoint(RWeld2, nil, CF(), Sine, speedAlpha * 0.2)
6962
							tweenJoint(LWeld, armC0[1], S.unAimedC1.leftArm, Sine, speedAlpha * 0.2)
6963
							wait(speedAlpha * 0.2)
6964
						end;
6965
					}
6966
					
6967
					for _, F in pairs(sequenceTable) do
6968
						if Aimed or isRunning or isCrawling or Reloading then
6969
							break
6970
						end
6971
						F()
6972
					end
6973
				end)
6974
			end
6975
			if S.selectFireSettings.Animation or S.selectFireSettings.GUI then
6976
				wait(S.selectFireSettings.animSpeed)
6977
			end
6978
			canSelectFire = true
6979
		end
6980
	end
6981
	
6982
	if Key == S.Keys.Reload then
6983
		if (not Reloading) and (not isCrawling) then
6984
			Reload()
6985
		end
6986
	end
6987
	
6988
	if Key == S.Keys.Sprint then
6989
		runKeyPressed = true
6990
		if runReady then
6991
			if (not Idling) and Walking and (not Running) and (not Knifing) and (not (Aimed and S.guiScope and S.Keys.Sprint == S.Keys.scopeSteady)) then
6992
				monitorStamina()
6993
			end
6994
		end
6995
	end
6996
	
6997
	if Key == S.Keys.scopeSteady then
6998
		steadyKeyPressed = true
6999
		if Aimed and (not Aiming) then
7000
			takingBreath = false
7001
			steadyCamera()
7002
		end
7003
	end
7004
	
7005
	for _, PTable in pairs(Plugins.KeyDown) do
7006
		if Key == string.lower(PTable.Key) then
7007
			spawn(function()
7008
				PTable.Plugin()
7009
			end)
7010
		end
7011
	end
7012
end
7013
7014
function keyUp(K)
7015
	local Key = string.lower(K)
7016
	
7017
	if Key == S.Keys.ADS then
7018
		if S.aimSettings.holdToADS then
7019
			if (not AimingOut) and Aimed then
7020
				AimingOut = true
7021
				unAimGun()
7022
				AimingOut = false
7023
			end
7024
		end
7025
	end
7026
	
7027
	if Key == S.Keys.Sprint then
7028
		runKeyPressed = false
7029
		Running = false
7030
		if (not chargingStamina) then
7031
			rechargeStamina()
7032
		end
7033
	end
7034
	
7035
	if Key == S.Keys.scopeSteady then
7036
		steadyKeyPressed = false
7037
	end
7038
	
7039
	for _, PTable in pairs(Plugins.KeyUp) do
7040
		if Key == string.lower(PTable.Key) then
7041
			spawn(function()
7042
				PTable.Plugin()
7043
			end)
7044
		end
7045
	end
7046
end
7047
7048
--------------------[ END FUNCTIONS ]-------------------------------------------------
7049
7050
--------------------------------------------------------------------------------------
7051
--------------------[ PRE-CONNECTIONS ]-----------------------------------------------
7052
--------------------------------------------------------------------------------------
7053
7054
local function updateAnimVars()
7055
	wait()
7056
	Forward = (UIS:IsKeyDown("W") or UIS:IsKeyDown("Up"))
7057
	Backward = (UIS:IsKeyDown("S") or UIS:IsKeyDown("Down"))
7058
	local Right = UIS:IsKeyDown("D")
7059
	local Left = UIS:IsKeyDown("A")
7060
	
7061
	local walkingForward = (Forward and (not Backward))
7062
	local walkingBackward = ((not Forward) and Backward)
7063
	local walkingRight = (Right and (not Left))
7064
	local walkingLeft = ((not Right) and Left)
7065
	
7066
	if (Forward or Backward or Right or Left) then
7067
		Walking, Idling = true, false
7068
		if (not Running) and (not Aimed) then
7069
			spreadMotion = "Moving"
7070
			baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
7071
		end
7072
	elseif (not (Forward and Backward and Right and Left)) then
7073
		Walking, Idling = false, true
7074
		if (not Aimed) then
7075
			spreadMotion = "Idling"
7076
			baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
7077
		end
7078
	end
7079
	
7080
	local newArmTilt = (
7081
		((walkingForward or walkingBackward) and walkingRight) and 2.5 or
7082
		((walkingForward or walkingBackward) and walkingLeft) and -2.5 or
7083
		((not (walkingForward and walkingBackward)) and walkingRight) and 5 or
7084
		((not (walkingForward and walkingBackward)) and walkingLeft) and -5 or 0
7085
	)
7086
	local newMoveAng = (
7087
		(walkingForward and (not (walkingRight or walkingLeft))) and 0 or
7088
		(walkingForward and walkingRight) and RAD(-45) or
7089
		((not (walkingForward or walkingBackward)) and walkingRight) and RAD(-90) or
7090
		(walkingBackward and walkingRight) and RAD(-135) or
7091
		(walkingBackward and (not (walkingRight or walkingLeft))) and (moveAng < 0 and RAD(-180) or RAD(180)) or
7092
		(walkingBackward and walkingLeft) and RAD(135) or
7093
		((not (walkingForward or walkingBackward)) and walkingLeft) and RAD(90) or
7094
		(walkingForward and walkingLeft) and RAD(45) or 0
7095
	)
7096
	
7097
	local newAnimCode = math.random(-1e9, 1e9)
7098
	animCode = newAnimCode
7099
	local startTilt = armTilt
7100
	local startAng = (ABS(moveAng) == RAD(180)) and (newMoveAng > 0 and RAD(180) or RAD(-180)) or moveAng
7101
	local Increment = (startTilt == newArmTilt and 1.5 / 0.7 or 1.5 / (0.35 * ABS(startTilt - newArmTilt) / 5))
7102
	local X = 0
7103
	while true do
7104
		RS.RenderStepped:wait()
7105
		local newX = X + Increment
7106
		X = (newX > 90 and 90 or newX)
7107
		if animCode ~= newAnimCode then break end
7108
		armTilt = numLerp(startTilt, newArmTilt, Sine(X))
7109
		moveAng = numLerp(startAng, newMoveAng, Sine(X))
7110
		if X == 90 then break end
7111
	end
7112
end
7113
7114
M2.KeyDown:connect(updateAnimVars)
7115
M2.KeyUp:connect(updateAnimVars)
7116
updateAnimVars()
7117
7118
--------------------------------------------------------------------------------------
7119
--------------------[ TOOL SELECTION AND DESELECTION ]--------------------------------
7120
--------------------------------------------------------------------------------------
7121
7122
function onEquipped()
7123
	wait()
7124
	if Humanoid.Health ~= 0 and (not Selected) and Gun.Parent == Char then
7125
		Selected = true
7126
		breakReload = false
7127
		equipAnimPlaying = true
7128
		
7129
		math.randomseed(tick()) --This sets a new seed for the random function each time you select the gun
7130
		
7131
		--------------------[ FAILSAFE RESETING ]-------------------------------------
7132
		
7133
		for _, GM in pairs(ignoreModel:GetChildren()) do
7134
			if GM.Name == "gunIgnore_"..Player.Name then
7135
				GM:Destroy()
7136
			end
7137
		end
7138
		
7139
		for _, c in pairs(Connections) do
7140
			c:disconnect()
7141
		end
7142
		
7143
		Connections = {}
7144
		
7145
		--------------------[ REMOTE GUN SETUP ]--------------------------------------
7146
		
7147
		--[[local Vars = {
7148
			ignoreModel = ignoreModel;
7149
			Humanoid = Humanoid;
7150
			Shoulders = Shoulders;
7151
			Torso = Torso;
7152
			Head = Head;
7153
			armC0 = armC0;
7154
			leftArmC1 = S.equipSettings.leftArmC1;
7155
			rightArmC1 = S.equipSettings.rightArmC1;
7156
			LArm = LArm;
7157
			RArm = RArm;
7158
			gunParts = gunParts;
7159
			Handle = Handle;
7160
		}
7161
		gunIgnore, playerFolder, headWeld, headWeld2, animWeld, ABWeld, LWeld, RWeld, LWeld2, RWeld2, LLegWeld, RLegWeld, gunParts2 = gunSetup:InvokeServer(Vars)]]
7162
		
7163
		--------------------[ CREATING IGNORE MODELS ]--------------------------------
7164
		
7165
		gunIgnore = Instance.new("Model")
7166
		gunIgnore.Name = "gunIgnore_"..Player.Name
7167
		gunIgnore.Parent = ignoreModel
7168
		
7169
		--------------------[ MODIFYING THE PLAYER ]----------------------------------
7170
		
7171
		Player.CameraMode = Enum.CameraMode.LockFirstPerson
7172
		Cam.CameraType = Enum.CameraType.Scriptable
7173
		Cam.FieldOfView = 80
7174
		UIS.MouseBehavior = Enum.MouseBehavior.LockCenter
7175
		UIS.MouseIconEnabled = false
7176
		
7177
		local initialX, initialY = getYawPitch(Cam.CoordinateFrame)
7178
		camAng = -VEC2(initialX, initialY)
7179
		
7180
		mainGUI.Parent = Player.PlayerGui
7181
		
7182
		setUpGUI()
7183
		updateHealth()
7184
		
7185
		if S.selectFire then
7186
			local currentMode = Modes[((rawFireMode - 1) % numModes) + 1]
7187
			if currentMode == "AUTO" then
7188
				fireFunction = autoFire
7189
			elseif currentMode == "BURST" then
7190
				fireFunction = burstFire
7191
			elseif currentMode == "SEMI" then
7192
				fireFunction = semiFire
7193
			else
7194
				fireFunction = nil
7195
			end
7196
		else
7197
			if S.gunType.Semi then
7198
				fireFunction = semiFire
7199
			elseif S.gunType.Auto then
7200
				fireFunction = autoFire
7201
			elseif S.gunType.Burst then
7202
				fireFunction = burstFire
7203
			else
7204
				fireFunction = nil
7205
			end
7206
		end
7207
		
7208
		changePlayerTrans(Char, 1)
7209
		
7210
		Humanoid.AutoRotate = false
7211
		
7212
		Shoulders.Right.Part1 = nil
7213
		Shoulders.Left.Part1 = nil
7214
7215
		playerFolder = Instance.new("Model")
7216
		playerFolder.Name = "playerFolder"
7217
		playerFolder.Parent = gunIgnore
7218
		
7219
		local headBase = Instance.new("Part")
7220
		headBase.Transparency = 1
7221
		headBase.Name = "headBase"
7222
		headBase.CanCollide = false
7223
		headBase.FormFactor = Enum.FormFactor.Custom
7224
		headBase.Size = V3(0.2, 0.2, 0.2)
7225
		headBase.BottomSurface = Enum.SurfaceType.Smooth
7226
		headBase.TopSurface = Enum.SurfaceType.Smooth
7227
		headBase.Parent = playerFolder
7228
		
7229
		headWeld = Instance.new("Weld")
7230
		headWeld.Part0 = Torso
7231
		headWeld.Part1 = headBase
7232
		headWeld.C0 = CF(0, 1.5, 0)
7233
		headWeld.Parent = Torso
7234
		
7235
		headWeld2 = Instance.new("Weld")
7236
		headWeld2.Part0 = headBase
7237
		headWeld2.Part1 = Head
7238
		headWeld2.Parent = headBase
7239
		
7240
		neckClone = Neck:Clone()
7241
		
7242
		--[[local stanceBase = Instance.new("Part")
7243
		stanceBase.Transparency = 1
7244
		stanceBase.Name = "stanceBase"
7245
		stanceBase.CanCollide = false
7246
		stanceBase.FormFactor = Enum.FormFactor.Custom
7247
		stanceBase.Size = V3(0.2, 0.2, 0.2)
7248
		stanceBase.BottomSurface = Enum.SurfaceType.Smooth
7249
		stanceBase.TopSurface = Enum.SurfaceType.Smooth
7250
		stanceBase.Parent = playerFolder
7251
		
7252
		stanceWeld = Instance.new("Weld")
7253
		stanceWeld.Part0 = stanceBase
7254
		stanceWeld.Part1 = Torso
7255
		stanceWeld.Parent = stanceBase]]
7256
		
7257
		local animBase = Instance.new("Part")
7258
		animBase.Transparency = 1
7259
		animBase.Name = "animBase"
7260
		animBase.CanCollide = false
7261
		animBase.FormFactor = Enum.FormFactor.Custom
7262
		animBase.Size = V3(0.2, 0.2, 0.2)
7263
		animBase.BottomSurface = Enum.SurfaceType.Smooth
7264
		animBase.TopSurface = Enum.SurfaceType.Smooth
7265
		animBase.Parent = playerFolder
7266
		
7267
		animWeld = Instance.new("Weld")
7268
		animWeld.Part0 = animBase
7269
		animWeld.Part1 = headBase
7270
		animWeld.Parent = animBase
7271
		
7272
		local ArmBase = Instance.new("Part")
7273
		ArmBase.Transparency = 1
7274
		ArmBase.Name = "ArmBase"
7275
		ArmBase.CanCollide = false
7276
		ArmBase.FormFactor = Enum.FormFactor.Custom
7277
		ArmBase.Size = V3(0.2, 0.2, 0.2)
7278
		ArmBase.BottomSurface = Enum.SurfaceType.Smooth
7279
		ArmBase.TopSurface = Enum.SurfaceType.Smooth
7280
		ArmBase.Parent = playerFolder
7281
		
7282
		ABWeld = Instance.new("Weld")
7283
		ABWeld.Part0 = ArmBase
7284
		ABWeld.Part1 = animBase
7285
		ABWeld.Parent = ArmBase
7286
		
7287
		local LArmBase = Instance.new("Part")
7288
		LArmBase.Transparency = 1
7289
		LArmBase.Name = "LArmBase"
7290
		LArmBase.CanCollide = false
7291
		LArmBase.FormFactor = Enum.FormFactor.Custom
7292
		LArmBase.Size = V3(0.2, 0.2, 0.2)
7293
		LArmBase.BottomSurface = Enum.SurfaceType.Smooth
7294
		LArmBase.TopSurface = Enum.SurfaceType.Smooth
7295
		LArmBase.Parent = playerFolder
7296
		
7297
		local RArmBase = Instance.new("Part")
7298
		RArmBase.Transparency = 1
7299
		RArmBase.Name = "RArmBase"
7300
		RArmBase.CanCollide = false
7301
		RArmBase.FormFactor = Enum.FormFactor.Custom
7302
		RArmBase.Size = V3(0.2, 0.2, 0.2)
7303
		RArmBase.BottomSurface = Enum.SurfaceType.Smooth
7304
		RArmBase.TopSurface = Enum.SurfaceType.Smooth
7305
		RArmBase.Parent = playerFolder
7306
		
7307
		LWeld = Instance.new("Weld")
7308
		LWeld.Name = "LWeld"
7309
		LWeld.Part0 = ArmBase
7310
		LWeld.Part1 = LArmBase
7311
		LWeld.C0 = armC0[1]
7312
		LWeld.C1 = S.equipSettings.leftArmC1
7313
		LWeld.Parent = ArmBase
7314
		
7315
		RWeld = Instance.new("Weld")
7316
		RWeld.Name = "RWeld"
7317
		RWeld.Part0 = ArmBase
7318
		RWeld.Part1 = RArmBase
7319
		RWeld.C0 = armC0[2]
7320
		RWeld.C1 = S.equipSettings.rightArmC1
7321
		RWeld.Parent = ArmBase
7322
		
7323
		LWeld2 = Instance.new("Weld")
7324
		LWeld2.Name = "LWeld"
7325
		LWeld2.Part0 = LArmBase
7326
		LWeld2.Part1 = LArm
7327
		LWeld2.Parent = LArmBase
7328
		
7329
		RWeld2 = Instance.new("Weld")
7330
		RWeld2.Name = "RWeld"
7331
		RWeld2.Part0 = RArmBase
7332
		RWeld2.Part1 = RArm
7333
		RWeld2.Parent = RArmBase
7334
		
7335
		LLegWeld = Instance.new("Weld")
7336
		LLegWeld.Name = "LLegWeld"
7337
		LLegWeld.Part0 = Torso
7338
		LLegWeld.Part1 = nil
7339
		LLegWeld.C0 = CF(-0.5, -2, 0)
7340
		LLegWeld.Parent = Torso
7341
		
7342
		RLegWeld = Instance.new("Weld")
7343
		RLegWeld.Name = "RLegWeld"
7344
		RLegWeld.Part0 = Torso
7345
		RLegWeld.Part1 = nil
7346
		RLegWeld.C0 = CF(0.5, -2, 0)
7347
		RLegWeld.Parent = Torso
7348
		
7349
		if S.playerArms then
7350
			armModel = Instance.new("Model", workspace.FilteringEnabled and playerFolder or Cam)
7351
			
7352
			fakeLArm = LArm:Clone()
7353
			fakeLArm.Parent = armModel
7354
			fakeLArm.Transparency = S.fakeArmSettings.Transparency
7355
			fakeLArm.CanCollide = false
7356
			fakeLArm.Size = S.fakeArmSettings.armSize
7357
			fakeLArm:BreakJoints()
7358
			
7359
			--LArm.Transparency = 1
7360
			
7361
			local fakeLWeld = Instance.new("Weld")
7362
			fakeLWeld.Part0 = fakeLArm
7363
			fakeLWeld.Part1 = LArm
7364
			fakeLWeld.Parent = fakeLArm
7365
			
7366
			fakeRArm = RArm:Clone()
7367
			fakeRArm.Parent = armModel
7368
			fakeRArm.Transparency = S.fakeArmSettings.Transparency
7369
			fakeRArm.CanCollide = false
7370
			fakeRArm.Size = S.fakeArmSettings.armSize
7371
			fakeRArm:BreakJoints()
7372
			
7373
			--RArm.Transparency = 1
7374
			
7375
			local fakeRWeld = Instance.new("Weld")
7376
			fakeRWeld.Part0 = fakeRArm
7377
			fakeRWeld.Part1 = RArm
7378
			fakeRWeld.Parent = fakeRArm
7379
			
7380
			Instance.new("Humanoid", armModel)
7381
			
7382
			if S.fakeArmSettings.characterMeshes then
7383
				for _,Obj in pairs(Char:GetChildren()) do
7384
					if Obj:IsA("CharacterMesh") then
7385
						Obj:Clone().Parent = armModel
7386
					end
7387
				end
7388
			end
7389
			for _,Obj in pairs(Char:GetChildren()) do
7390
				if Obj:IsA("Shirt") then
7391
					Obj:Clone().Parent = armModel
7392
				end
7393
			end
7394
		else
7395
			armTable = createArms()
7396
			if workspace.FilteringEnabled then
7397
				armTable[1].Model.Parent = playerFolder
7398
				armTable[2].Model.Parent = playerFolder
7399
			else
7400
				armTable[1].Model.Parent = Cam--playerFolder
7401
				armTable[2].Model.Parent = Cam--playerFolder
7402
			end
7403
			
7404
			fakeLArm = armTable[1].armPart
7405
			
7406
			--LArm.Transparency = 1
7407
			
7408
			local fakeLWeld = Instance.new("Weld")
7409
			fakeLWeld.Part0 = fakeLArm
7410
			fakeLWeld.Part1 = LArm
7411
			fakeLWeld.Parent = fakeLArm
7412
			
7413
			fakeRArm = armTable[2].armPart
7414
			
7415
			--RArm.Transparency = 1
7416
			
7417
			local fakeRWeld = Instance.new("Weld")
7418
			fakeRWeld.Part0 = fakeRArm
7419
			fakeRWeld.Part1 = RArm
7420
			fakeRWeld.Parent = fakeRArm
7421
		end
7422
		
7423
		--------------------[ MODIFYING THE GUN ]-------------------------------------
7424
		
7425
		for _, Tab in pairs(gunParts) do
7426
			local Weld = Instance.new("Weld")
7427
			Weld.Name = "MainWeld"
7428
			Weld.Part0 = Handle
7429
			Weld.Part1 = Tab.Obj
7430
			Weld.C0 = Tab.Obj.weldCF.Value
7431
			Weld.Parent = Handle
7432
			Tab.Weld = Weld
7433
		end
7434
		
7435
		Grip = RArm:WaitForChild("RightGrip")
7436
		
7437
		local handleCF = Torso.CFrame * CF(0, 0.5, 0) * armC0[2] * S.aimedC1.rightArm:inverse() * Grip.C0
7438
		local handleOffset = AimPart.CFrame:toObjectSpace(Handle.CFrame)
7439
		aimedGripCF = ((Torso.CFrame * CF(headOffset.X, headOffset.Y, 0)) * handleOffset):toObjectSpace(handleCF)
7440
		
7441
		Grip.C1 = S.equipSettings.GripC1
7442
		
7443
		--------------------[ RUNNING PLUGINS ]---------------------------------------
7444
		
7445
		for _, Plugin in pairs(Plugins.OnEquipped) do
7446
			spawn(function()
7447
				Plugin()
7448
			end)
7449
		end
7450
		
7451
		--------------------[ GETTING PLAYER MASS ]-----------------------------------
7452
		
7453
		local connectedParts = HRP:GetConnectedParts(true)
7454
		for _, v in pairs(connectedParts) do
7455
			if v:IsA("BasePart") then
7456
				playerMass = playerMass + v:GetMass()
7457
			end
7458
		end
7459
		
7460
		--------------------[ CONNECTIONS ]-------------------------------------------
7461
		
7462
		INSERT(Connections, Humanoid.Died:connect(function()
7463
			onUnequipped(true)
7464
		end))
7465
		
7466
		INSERT(Connections, Humanoid.Jumping:connect(function()
7467
			if Stance ~= 0 then
7468
				Stand()
7469
			end
7470
		end))
7471
		
7472
		INSERT(Connections, Humanoid.StateChanged:connect(onHumanoidStateChanged))
7473
		
7474
		INSERT(Connections, Humanoid.HealthChanged:connect(updateHealth))
7475
		
7476
		INSERT(Connections, M2.Button1Down:connect(onMB1Down))
7477
		
7478
		INSERT(Connections, M2.Button1Up:connect(onMB1Up))
7479
		
7480
		INSERT(Connections, M2.Button2Down:connect(onMB2Down))
7481
		
7482
		INSERT(Connections, M2.Button2Up:connect(onMB2Up))
7483
		
7484
		INSERT(Connections, M2.KeyDown:connect(keyDown))
7485
		
7486
		INSERT(Connections, M2.KeyUp:connect(keyUp))
7487
		
7488
		if S.sensitivitySettings.scrollToChange then
7489
			INSERT(Connections, M2.WheelForward:connect(onScrollUp))
7490
			INSERT(Connections, M2.WheelBackward:connect(onScrollDown))
7491
		end
7492
		
7493
		if S.AutoKnife then
7494
			INSERT(Connections, RS.Stepped:connect(function()
7495
				local H, P = AdvRayCast(Head.CFrame.p, Head.CFrame.lookVector, S.AutoKnifeDist, nil)
7496
				if H then
7497
					local HitHuman = findFirstClass(H.Parent, "Humanoid")
7498
					if HitHuman and isEnemy(HitHuman) and HitHuman.Health ~= 0 then
7499
						Knife()
7500
					end
7501
				end
7502
			end))
7503
		end
7504
		
7505
		INSERT(Connections, UIS.InputChanged:connect(function(inputObj)
7506
			if inputObj.UserInputType == Enum.UserInputType.MouseMovement then
7507
				local rawCamAng = camAng - (VEC2(RAD(inputObj.Delta.x), RAD(inputObj.Delta.y)) * mouseSensitivity * 0.25)
7508
				camAng = VEC2(rawCamAng.x, (rawCamAng.y > RAD(80) and RAD(80) or rawCamAng.y < RAD(-80) and RAD(-80) or rawCamAng.y))
7509
				
7510
				desiredXOffset = math.min(math.max(inputObj.Delta.x, -S.momentumSettings.maxInput), S.momentumSettings.maxInput)
7511
				desiredYOffset = math.min(math.max(inputObj.Delta.y, -S.momentumSettings.maxInput), S.momentumSettings.maxInput)
7512
			end
7513
		end))
7514
		
7515
		INSERT(Connections, M2.Idle:connect(function(inputObj)
7516
			desiredXOffset = 0
7517
			desiredYOffset = 0
7518
		end))
7519
		
7520
		INSERT(Connections, RS.Stepped:connect(function()
7521
			if tick() - lastBeat > (Humanoid.Health / 75) then
7522
				lastBeat = tick()
7523
				HUD.Health.Tray.Beat:TweenPosition(
7524
					UDim2.new(0, -21, 0, 0),
7525
					Enum.EasingDirection.Out,
7526
					Enum.EasingStyle.Linear,
7527
					0.7 - ((100 - Humanoid.Health) / 400),
7528
					false,
7529
					function()
7530
						HUD.Health.Tray.Beat.Position = UDim2.new(1, 0, 0, 0)
7531
					end
7532
				)
7533
			end
7534
		end))
7535
		
7536
		INSERT(Connections, RS.RenderStepped:connect(function()
7537
			--Main animation
7538
			local animC0, animC1 = getAnimCF()
7539
			animWeld.C0 = animC0
7540
			animWeld.C1 = animC1
7541
			
7542
			--Camera updating
7543
			renderCamera()
7544
		end))
7545
		
7546
		--------------------[ ANIMATE GUN ]-------------------------------------------
7547
		
7548
		tweenJoint(LWeld, nil, S.unAimedC1.leftArm, Sine, S.equipSettings.Time)
7549
		tweenJoint(RWeld, nil, S.unAimedC1.rightArm, Sine, S.equipSettings.Time)
7550
		tweenJoint(Grip, nil, S.unAimedC1.Grip, Sine, S.equipSettings.Time)
7551
		spawn(function()
7552
			local T = tick()
7553
			while true do
7554
				if tick() - T > S.equipSettings.Time then break end
7555
				if (not Selected) then break end
7556
				wait()
7557
			end
7558
			equipAnimPlaying = false
7559
		end)
7560
		
7561
		Animate()
7562
	end
7563
end
7564
7565
function onUnequipped(deleteTool)
7566
	if Selected then
7567
		Selected = false
7568
		
7569
		breakReload = true
7570
		
7571
		--------------------[ RUNNING PLUGINS ]---------------------------------------
7572
		
7573
		for _, Plugin in pairs(Plugins.OnUnEquipped) do
7574
			spawn(function()
7575
				Plugin()
7576
			end)
7577
		end
7578
		
7579
		--------------------[ MODIFYING THE PLAYER ]----------------------------------
7580
		
7581
		Cam.FieldOfView = 70
7582
		Cam.CameraType = Enum.CameraType.Custom
7583
		
7584
		UIS.MouseBehavior = Enum.MouseBehavior.Default
7585
		UIS.MouseIconEnabled = true
7586
		
7587
		Player.CameraMode = Enum.CameraMode.Classic
7588
		
7589
		if armTable then
7590
			armTable[1].Model:Destroy()
7591
			armTable[2].Model:Destroy()
7592
		elseif armModel then
7593
			armModel:Destroy()
7594
		end
7595
		
7596
		LLegWeld:Destroy()
7597
		RLegWeld:Destroy()
7598
		
7599
		changePlayerTrans(Char, 0)
7600
		
7601
		mainGUI.Parent = script
7602
		
7603
		Shoulders.Right.Part1 = RArm
7604
		Shoulders.Left.Part1 = LArm
7605
		
7606
		neckClone.Parent = Torso
7607
		headWeld:Destroy()
7608
		
7609
		Humanoid.WalkSpeed = 16
7610
		Humanoid.AutoRotate = true
7611
		
7612
		--------------------[ RESETING THE TOOL ]-------------------------------------
7613
		
7614
		gunIgnore:Destroy()
7615
		
7616
		mouseSensitivity = S.sensitivitySettings.Default
7617
		
7618
		MB1Down = false
7619
		
7620
		playerMass = 0
7621
		
7622
		Aimed = false
7623
		
7624
		camOffsets = {
7625
			guiScope = {
7626
				Rot = V3();
7627
			};
7628
			Reload = {
7629
				Rot = V3();
7630
				Code = nil;
7631
			};
7632
			Recoil = {
7633
				Rot = V3();
7634
				Code = nil;
7635
			};
7636
		}
7637
		
7638
		recoilAnim = {
7639
			Pos = V3();
7640
			Rot = V3();
7641
			Code = nil;
7642
		}
7643
7644
		--Setting the aim variables to unaimed
7645
		spreadZoom = "unAimed"
7646
		scopeMain.Visible = false
7647
		scopeSteady.Visible = false
7648
		aimAlpha = 0
7649
		aimHeadOffset = 0
7650
		jumpAnimMultiplier = 1
7651
		translationDivisor = 7
7652
		rotationMultiplier = S.momentumSettings.Amplitude.unAimed
7653
		armTiltMultiplier = 1
7654
		Scope.BackgroundTransparency = 1
7655
		if S.guiScope then
7656
			spawn(function()
7657
				for _, Obj in pairs(Gun:GetChildren()) do
7658
					if Obj:IsA("BasePart") then
7659
						Obj.LocalTransparencyModifier = 0
7660
					end
7661
				end
7662
			end)
7663
		end
7664
		
7665
		onGround = true
7666
		
7667
		for _, Tab in pairs(gunParts) do
7668
			Tab.Weld:Destroy()
7669
			Tab.Weld = nil
7670
		end
7671
		
7672
		for _,c in pairs(Connections) do
7673
			c:disconnect()
7674
		end
7675
		
7676
		Connections = {}
7677
		
7678
		if deleteTool then
7679
			Cam:ClearAllChildren()
7680
			Gun:Destroy()
7681
		end
7682
		
7683
		wait() --This is here in case you dolphin dived and deselected the tool instantly
7684
		
7685
		if S.stanceSettings.standOnDeselect and Stance ~= 0 then
7686
			crawlCamRot = 0
7687
			isCrawling = false
7688
			stanceSway = 1
7689
			spreadStance = "Stand"
7690
			Stand(true)
7691
		end
7692
		baseSpread = S.spreadSettings[spreadZoom][spreadStance][spreadMotion]
7693
	end
7694
end
7695
7696
Gun.Equipped:connect(onEquipped)
7697
Gun.Unequipped:connect(function() onUnequipped(false) end)
7698
7699
--------------------------------------------------------------------------------------
7700
--------------------[ END PROGRAM ]---------------------------------------------------
7701
--------------------------------------------------------------------------------------
7702
end))
7703
IntValue209.Name = "ignoreCode"
7704
IntValue209.Parent = LocalScript208
7705
Folder210.Name = "Server_Scripts"
7706
Folder210.Parent = LocalScript208
7707
ScreenGui211.Name = "mainGUI"
7708
ScreenGui211.Parent = LocalScript208
7709
ImageLabel212.Name = "hitMarker"
7710
ImageLabel212.Parent = ScreenGui211
7711
ImageLabel212.Transparency = 1
7712
ImageLabel212.Size = UDim2.new(0, 26, 0, 26)
7713
ImageLabel212.Position = UDim2.new(0.5, -13, 0.5, -31)
7714
ImageLabel212.Visible = false
7715
ImageLabel212.BackgroundTransparency = 1
7716
ImageLabel212.ZIndex = 10
7717
ImageLabel212.Image = "http://www.roblox.com/asset/?id=121173757"
7718
NumberValue213.Name = "lastMark"
7719
NumberValue213.Parent = ImageLabel212
7720
Frame214.Name = "crossHair"
7721
Frame214.Parent = ScreenGui211
7722
Frame214.Position = UDim2.new(0.5, 0, 0.5, -18)
7723
Frame214.BackgroundColor3 = Color3.new(1, 1, 1)
7724
Frame214.BorderColor3 = Color3.new(0, 0, 0)
7725
Frame214.BorderSizePixel = 0
7726
ImageLabel215.Parent = Frame214
7727
ImageLabel215.Transparency = 1
7728
ImageLabel215.Size = UDim2.new(0, 300, 0, 300)
7729
ImageLabel215.Position = UDim2.new(0, -150, 0, -150)
7730
ImageLabel215.Visible = false
7731
ImageLabel215.BackgroundColor3 = Color3.new(1, 1, 1)
7732
ImageLabel215.BackgroundTransparency = 1
7733
ImageLabel215.ZIndex = 2
7734
ImageLabel215.Image = "http://www.roblox.com/asset/?id=68308747"
7735
TextLabel216.Name = "Reload"
7736
TextLabel216.Parent = Frame214
7737
TextLabel216.Transparency = 1
7738
TextLabel216.Size = UDim2.new(0, 100, 0, 20)
7739
TextLabel216.Text = "RELOADING..."
7740
TextLabel216.Position = UDim2.new(0, -50, 0, 70)
7741
TextLabel216.Visible = false
7742
TextLabel216.BackgroundColor3 = Color3.new(1, 1, 1)
7743
TextLabel216.BackgroundTransparency = 1
7744
TextLabel216.ZIndex = 2
7745
TextLabel216.Font = Enum.Font.SourceSansBold
7746
TextLabel216.FontSize = Enum.FontSize.Size18
7747
TextLabel216.TextColor3 = Color3.new(1, 1, 1)
7748
TextLabel216.TextStrokeTransparency = 0.5
7749
Frame217.Name = "C"
7750
Frame217.Parent = Frame214
7751
Frame217.Transparency = 1
7752
Frame217.Size = UDim2.new(0, 4, 0, 500)
7753
Frame217.Position = UDim2.new(0, -2, 0, 0)
7754
Frame217.BackgroundColor3 = Color3.new(1, 1, 1)
7755
Frame217.BackgroundTransparency = 1
7756
Frame217.ClipsDescendants = true
7757
TextLabel218.Name = "Line"
7758
TextLabel218.Parent = Frame217
7759
TextLabel218.Size = UDim2.new(0, 2, 0, 15)
7760
TextLabel218.Text = ""
7761
TextLabel218.Position = UDim2.new(0.5, -1, 0, 10)
7762
TextLabel218.BackgroundColor3 = Color3.new(1, 1, 1)
7763
TextLabel218.BorderColor3 = Color3.new(0.392157, 0.392157, 0.392157)
7764
TextLabel218.Font = Enum.Font.SourceSans
7765
TextLabel218.FontSize = Enum.FontSize.Size14
7766
Frame219.Name = "A"
7767
Frame219.Parent = Frame214
7768
Frame219.Transparency = 1
7769
Frame219.Size = UDim2.new(0, 4, 0, 500)
7770
Frame219.Position = UDim2.new(0, -2, 0, -500)
7771
Frame219.BackgroundColor3 = Color3.new(1, 1, 1)
7772
Frame219.BackgroundTransparency = 1
7773
Frame219.ClipsDescendants = true
7774
TextLabel220.Name = "Line"
7775
TextLabel220.Parent = Frame219
7776
TextLabel220.Size = UDim2.new(0, 2, 0, 15)
7777
TextLabel220.Text = ""
7778
TextLabel220.Position = UDim2.new(0.5, -1, 1, -25)
7779
TextLabel220.BackgroundColor3 = Color3.new(1, 1, 1)
7780
TextLabel220.BorderColor3 = Color3.new(0.392157, 0.392157, 0.392157)
7781
TextLabel220.Font = Enum.Font.SourceSans
7782
TextLabel220.FontSize = Enum.FontSize.Size14
7783
Frame221.Name = "B"
7784
Frame221.Parent = Frame214
7785
Frame221.Transparency = 1
7786
Frame221.Size = UDim2.new(0, 500, 0, 4)
7787
Frame221.Position = UDim2.new(0, 0, 0, -2)
7788
Frame221.BackgroundColor3 = Color3.new(1, 1, 1)
7789
Frame221.BackgroundTransparency = 1
7790
Frame221.ClipsDescendants = true
7791
TextLabel222.Name = "Line"
7792
TextLabel222.Parent = Frame221
7793
TextLabel222.Size = UDim2.new(0, 15, 0, 2)
7794
TextLabel222.Text = ""
7795
TextLabel222.Position = UDim2.new(0, 10, 0.5, -1)
7796
TextLabel222.BackgroundColor3 = Color3.new(1, 1, 1)
7797
TextLabel222.BorderColor3 = Color3.new(0.392157, 0.392157, 0.392157)
7798
TextLabel222.Font = Enum.Font.SourceSans
7799
TextLabel222.FontSize = Enum.FontSize.Size14
7800
Frame223.Name = "D"
7801
Frame223.Parent = Frame214
7802
Frame223.Transparency = 1
7803
Frame223.Size = UDim2.new(0, 500, 0, 4)
7804
Frame223.Position = UDim2.new(0, -500, 0, -2)
7805
Frame223.BackgroundColor3 = Color3.new(1, 1, 1)
7806
Frame223.BackgroundTransparency = 1
7807
Frame223.ClipsDescendants = true
7808
TextLabel224.Name = "Line"
7809
TextLabel224.Parent = Frame223
7810
TextLabel224.Size = UDim2.new(0, 15, 0, 2)
7811
TextLabel224.Text = ""
7812
TextLabel224.Position = UDim2.new(1, -25, 0.5, -1)
7813
TextLabel224.BackgroundColor3 = Color3.new(1, 1, 1)
7814
TextLabel224.BorderColor3 = Color3.new(0.392157, 0.392157, 0.392157)
7815
TextLabel224.Font = Enum.Font.SourceSans
7816
TextLabel224.FontSize = Enum.FontSize.Size14
7817
Frame225.Name = "HUD"
7818
Frame225.Parent = ScreenGui211
7819
Frame225.Transparency = 0.30000001192093
7820
Frame225.Size = UDim2.new(0, 175, 0, 90)
7821
Frame225.Position = UDim2.new(1, -200, 1, -165)
7822
Frame225.BackgroundColor3 = Color3.new(0.156863, 0.156863, 0.156863)
7823
Frame225.BackgroundTransparency = 0.30000001192093
7824
Frame225.BorderColor3 = Color3.new(0.156863, 0.156863, 0.156863)
7825
Frame225.BorderSizePixel = 5
7826
Frame225.ZIndex = 10
7827
Frame226.Name = "Ammo"
7828
Frame226.Parent = Frame225
7829
Frame226.Transparency = 1
7830
Frame226.Size = UDim2.new(0, 175, 0, 40)
7831
Frame226.Position = UDim2.new(0, 0, 0, 45)
7832
Frame226.BackgroundTransparency = 1
7833
Frame226.ZIndex = 10
7834
TextLabel227.Name = "Slash"
7835
TextLabel227.Parent = Frame226
7836
TextLabel227.Transparency = 1
7837
TextLabel227.Size = UDim2.new(0, 10, 0, 25)
7838
TextLabel227.Text = "/"
7839
TextLabel227.Position = UDim2.new(0, 90, 0, 0)
7840
TextLabel227.BackgroundTransparency = 1
7841
TextLabel227.ZIndex = 10
7842
TextLabel227.Font = Enum.Font.ArialBold
7843
TextLabel227.FontSize = Enum.FontSize.Size24
7844
TextLabel227.TextColor3 = Color3.new(1, 1, 1)
7845
TextLabel228.Name = "Stored"
7846
TextLabel228.Parent = Frame226
7847
TextLabel228.Transparency = 1
7848
TextLabel228.Size = UDim2.new(0, 70, 0, 25)
7849
TextLabel228.Text = "100"
7850
TextLabel228.Position = UDim2.new(0, 105, 0, 0)
7851
TextLabel228.BackgroundTransparency = 1
7852
TextLabel228.ZIndex = 10
7853
TextLabel228.Font = Enum.Font.ArialBold
7854
TextLabel228.FontSize = Enum.FontSize.Size24
7855
TextLabel228.TextColor3 = Color3.new(1, 1, 1)
7856
TextLabel228.TextXAlignment = Enum.TextXAlignment.Left
7857
TextLabel229.Name = "Background"
7858
TextLabel229.Parent = TextLabel228
7859
TextLabel229.Transparency = 1
7860
TextLabel229.Size = UDim2.new(1, 0, 1, 0)
7861
TextLabel229.Text = "000"
7862
TextLabel229.BackgroundTransparency = 1
7863
TextLabel229.ZIndex = 10
7864
TextLabel229.Font = Enum.Font.ArialBold
7865
TextLabel229.FontSize = Enum.FontSize.Size24
7866
TextLabel229.TextColor3 = Color3.new(0.588235, 0.588235, 0.588235)
7867
TextLabel229.TextTransparency = 0.80000001192093
7868
TextLabel229.TextWrapped = true
7869
TextLabel229.TextXAlignment = Enum.TextXAlignment.Left
7870
TextLabel230.Name = "Clip"
7871
TextLabel230.Parent = Frame226
7872
TextLabel230.Transparency = 1
7873
TextLabel230.Size = UDim2.new(0, 85, 1, 0)
7874
TextLabel230.Text = "9"
7875
TextLabel230.BackgroundTransparency = 1
7876
TextLabel230.ZIndex = 10
7877
TextLabel230.Font = Enum.Font.ArialBold
7878
TextLabel230.FontSize = Enum.FontSize.Size48
7879
TextLabel230.TextColor3 = Color3.new(1, 1, 1)
7880
TextLabel230.TextXAlignment = Enum.TextXAlignment.Right
7881
TextLabel231.Name = "Background"
7882
TextLabel231.Parent = TextLabel230
7883
TextLabel231.Transparency = 1
7884
TextLabel231.Size = UDim2.new(1, 0, 1, 0)
7885
TextLabel231.Text = "000"
7886
TextLabel231.BackgroundTransparency = 1
7887
TextLabel231.ZIndex = 10
7888
TextLabel231.Font = Enum.Font.ArialBold
7889
TextLabel231.FontSize = Enum.FontSize.Size48
7890
TextLabel231.TextColor3 = Color3.new(0.588235, 0.588235, 0.588235)
7891
TextLabel231.TextTransparency = 0.80000001192093
7892
TextLabel231.TextXAlignment = Enum.TextXAlignment.Right
7893
Frame232.Name = "Mode"
7894
Frame232.Parent = Frame225
7895
Frame232.Transparency = 1
7896
Frame232.Size = UDim2.new(0, 85, 0, 20)
7897
Frame232.Position = UDim2.new(0, 90, 0, 65)
7898
Frame232.BackgroundColor3 = Color3.new(1, 1, 1)
7899
Frame232.BackgroundTransparency = 1
7900
Frame232.ZIndex = 10
7901
TextLabel233.Name = "Bracket"
7902
TextLabel233.Parent = Frame232
7903
TextLabel233.Transparency = 1
7904
TextLabel233.Size = UDim2.new(0, 5, 0, 20)
7905
TextLabel233.Text = "["
7906
TextLabel233.BackgroundTransparency = 1
7907
TextLabel233.ZIndex = 10
7908
TextLabel233.Font = Enum.Font.ArialBold
7909
TextLabel233.FontSize = Enum.FontSize.Size18
7910
TextLabel233.TextColor3 = Color3.new(1, 1, 1)
7911
TextLabel233.TextXAlignment = Enum.TextXAlignment.Left
7912
TextLabel234.Name = "Bracket"
7913
TextLabel234.Parent = Frame232
7914
TextLabel234.Transparency = 1
7915
TextLabel234.Size = UDim2.new(0, 5, 0, 20)
7916
TextLabel234.Text = "]"
7917
TextLabel234.Position = UDim2.new(1, -5, 0, 0)
7918
TextLabel234.BackgroundTransparency = 1
7919
TextLabel234.ZIndex = 10
7920
TextLabel234.Font = Enum.Font.ArialBold
7921
TextLabel234.FontSize = Enum.FontSize.Size18
7922
TextLabel234.TextColor3 = Color3.new(1, 1, 1)
7923
TextLabel234.TextXAlignment = Enum.TextXAlignment.Left
7924
TextLabel235.Name = "Main"
7925
TextLabel235.Parent = Frame232
7926
TextLabel235.Transparency = 1
7927
TextLabel235.Size = UDim2.new(1, 0, 0, 20)
7928
TextLabel235.Text = "Auto"
7929
TextLabel235.BackgroundTransparency = 1
7930
TextLabel235.ZIndex = 10
7931
TextLabel235.Font = Enum.Font.SourceSansBold
7932
TextLabel235.FontSize = Enum.FontSize.Size18
7933
TextLabel235.TextColor3 = Color3.new(1, 1, 1)
7934
TextLabel235.TextWrapped = true
7935
Frame236.Name = "Health"
7936
Frame236.Parent = Frame225
7937
Frame236.Transparency = 0.30000001192093
7938
Frame236.Size = UDim2.new(1, 0, 0, 25)
7939
Frame236.Position = UDim2.new(0, 0, 0, -40)
7940
Frame236.BackgroundColor3 = Color3.new(0.156863, 0.156863, 0.156863)
7941
Frame236.BackgroundTransparency = 0.30000001192093
7942
Frame236.BorderColor3 = Color3.new(0.156863, 0.156863, 0.156863)
7943
Frame236.BorderSizePixel = 5
7944
Frame236.ZIndex = 10
7945
TextLabel237.Name = "Num"
7946
TextLabel237.Parent = Frame236
7947
TextLabel237.Transparency = 1
7948
TextLabel237.Size = UDim2.new(0, 50, 1, 0)
7949
TextLabel237.Text = "100%"
7950
TextLabel237.Position = UDim2.new(1, -50, 0, 0)
7951
TextLabel237.BackgroundColor3 = Color3.new(0, 0, 0)
7952
TextLabel237.BackgroundTransparency = 1
7953
TextLabel237.BorderColor3 = Color3.new(0, 0, 0)
7954
TextLabel237.BorderSizePixel = 0
7955
TextLabel237.ZIndex = 10
7956
TextLabel237.Font = Enum.Font.ArialBold
7957
TextLabel237.FontSize = Enum.FontSize.Size24
7958
TextLabel237.TextColor3 = Color3.new(1, 1, 1)
7959
TextLabel237.TextStrokeTransparency = 0
7960
TextLabel237.TextXAlignment = Enum.TextXAlignment.Right
7961
Frame238.Name = "Tray"
7962
Frame238.Parent = Frame236
7963
Frame238.Transparency = 1
7964
Frame238.Size = UDim2.new(1, -60, 0, 20)
7965
Frame238.Position = UDim2.new(0, 2, 0.5, -10)
7966
Frame238.BackgroundColor3 = Color3.new(0, 0, 0)
7967
Frame238.BackgroundTransparency = 1
7968
Frame238.BorderColor3 = Color3.new(0, 0, 0)
7969
Frame238.BorderSizePixel = 0
7970
Frame238.ZIndex = 10
7971
Frame238.ClipsDescendants = true
7972
Frame239.Name = "Beat"
7973
Frame239.Parent = Frame238
7974
Frame239.Transparency = 1
7975
Frame239.Size = UDim2.new(0, 21, 1, 0)
7976
Frame239.Position = UDim2.new(1, 0, 0, 0)
7977
Frame239.BackgroundColor3 = Color3.new(0, 0, 0)
7978
Frame239.BackgroundTransparency = 1
7979
Frame239.BorderColor3 = Color3.new(0, 0, 0)
7980
Frame239.BorderSizePixel = 0
7981
Frame239.ZIndex = 10
7982
Frame240.Name = "00"
7983
Frame240.Parent = Frame239
7984
Frame240.Size = UDim2.new(0.0476190485, 0, 0, 3)
7985
Frame240.Position = UDim2.new(0, 0, 0.5, -2)
7986
Frame240.BackgroundColor3 = Color3.new(1, 1, 1)
7987
Frame240.BorderColor3 = Color3.new(0, 0, 0)
7988
Frame240.BorderSizePixel = 0
7989
Frame240.ZIndex = 10
7990
Frame241.Name = "01"
7991
Frame241.Parent = Frame239
7992
Frame241.Size = UDim2.new(0.0476190485, 0, 0, 4)
7993
Frame241.Position = UDim2.new(0.0476190485, 0, 0.423076928, -2)
7994
Frame241.BackgroundColor3 = Color3.new(1, 1, 1)
7995
Frame241.BorderColor3 = Color3.new(0, 0, 0)
7996
Frame241.BorderSizePixel = 0
7997
Frame241.ZIndex = 10
7998
Frame242.Name = "02"
7999
Frame242.Parent = Frame239
8000
Frame242.Size = UDim2.new(0.0476190485, 0, 0, 4)
8001
Frame242.Position = UDim2.new(0.095238097, 0, 0.346153855, -2)
8002
Frame242.BackgroundColor3 = Color3.new(1, 1, 1)
8003
Frame242.BorderColor3 = Color3.new(0, 0, 0)
8004
Frame242.BorderSizePixel = 0
8005
Frame242.ZIndex = 10
8006
Frame243.Name = "03"
8007
Frame243.Parent = Frame239
8008
Frame243.Size = UDim2.new(0.0476190485, 0, 0, 4)
8009
Frame243.Position = UDim2.new(0.142857149, 0, 0.269230783, -2)
8010
Frame243.BackgroundColor3 = Color3.new(1, 1, 1)
8011
Frame243.BorderColor3 = Color3.new(0, 0, 0)
8012
Frame243.BorderSizePixel = 0
8013
Frame243.ZIndex = 10
8014
Frame244.Name = "04"
8015
Frame244.Parent = Frame239
8016
Frame244.Size = UDim2.new(0.0476190485, 0, 0, 4)
8017
Frame244.Position = UDim2.new(0.190476194, 0, 0.192307696, -2)
8018
Frame244.BackgroundColor3 = Color3.new(1, 1, 1)
8019
Frame244.BorderColor3 = Color3.new(0, 0, 0)
8020
Frame244.BorderSizePixel = 0
8021
Frame244.ZIndex = 10
8022
Frame245.Name = "05"
8023
Frame245.Parent = Frame239
8024
Frame245.Size = UDim2.new(0.0476190485, 0, 0, 4)
8025
Frame245.Position = UDim2.new(0.238095239, 0, 0.115384616, -2)
8026
Frame245.BackgroundColor3 = Color3.new(1, 1, 1)
8027
Frame245.BorderColor3 = Color3.new(0, 0, 0)
8028
Frame245.BorderSizePixel = 0
8029
Frame245.ZIndex = 10
8030
Frame246.Name = "06"
8031
Frame246.Parent = Frame239
8032
Frame246.Size = UDim2.new(0.0476190485, 0, 0, 4)
8033
Frame246.Position = UDim2.new(0.285714298, 0, 0.0384615399, -2)
8034
Frame246.BackgroundColor3 = Color3.new(1, 1, 1)
8035
Frame246.BorderColor3 = Color3.new(0, 0, 0)
8036
Frame246.BorderSizePixel = 0
8037
Frame246.ZIndex = 10
8038
Frame247.Name = "07"
8039
Frame247.Parent = Frame239
8040
Frame247.Size = UDim2.new(0.0476190485, 0, 0, 4)
8041
Frame247.Position = UDim2.new(0.333333343, 0, 0, -2)
8042
Frame247.BackgroundColor3 = Color3.new(1, 1, 1)
8043
Frame247.BorderColor3 = Color3.new(0, 0, 0)
8044
Frame247.BorderSizePixel = 0
8045
Frame247.ZIndex = 10
8046
Frame248.Name = "08"
8047
Frame248.Parent = Frame239
8048
Frame248.Size = UDim2.new(0.0476190485, 0, 0, 4)
8049
Frame248.Position = UDim2.new(0.380952388, 0, 0.142857149, -2)
8050
Frame248.BackgroundColor3 = Color3.new(1, 1, 1)
8051
Frame248.BorderColor3 = Color3.new(0, 0, 0)
8052
Frame248.BorderSizePixel = 0
8053
Frame248.ZIndex = 10
8054
Frame249.Name = "09"
8055
Frame249.Parent = Frame239
8056
Frame249.Size = UDim2.new(0.0476190485, 0, 0, 4)
8057
Frame249.Position = UDim2.new(0.428571433, 0, 0.285714298, -2)
8058
Frame249.BackgroundColor3 = Color3.new(1, 1, 1)
8059
Frame249.BorderColor3 = Color3.new(0, 0, 0)
8060
Frame249.BorderSizePixel = 0
8061
Frame249.ZIndex = 10
8062
Frame250.Name = "10"
8063
Frame250.Parent = Frame239
8064
Frame250.Size = UDim2.new(0.0476190485, 0, 0, 4)
8065
Frame250.Position = UDim2.new(0.476190478, 0, 0.428571433, -2)
8066
Frame250.BackgroundColor3 = Color3.new(1, 1, 1)
8067
Frame250.BorderColor3 = Color3.new(0, 0, 0)
8068
Frame250.BorderSizePixel = 0
8069
Frame250.ZIndex = 10
8070
Frame251.Name = "11"
8071
Frame251.Parent = Frame239
8072
Frame251.Size = UDim2.new(0.0476190485, 0, 0, 4)
8073
Frame251.Position = UDim2.new(0.523809552, 0, 0.571428597, -2)
8074
Frame251.BackgroundColor3 = Color3.new(1, 1, 1)
8075
Frame251.BorderColor3 = Color3.new(0, 0, 0)
8076
Frame251.BorderSizePixel = 0
8077
Frame251.ZIndex = 10
8078
Frame252.Name = "12"
8079
Frame252.Parent = Frame239
8080
Frame252.Size = UDim2.new(0.0476190485, 0, 0, 4)
8081
Frame252.Position = UDim2.new(0.571428597, 0, 0.714285731, -2)
8082
Frame252.BackgroundColor3 = Color3.new(1, 1, 1)
8083
Frame252.BorderColor3 = Color3.new(0, 0, 0)
8084
Frame252.BorderSizePixel = 0
8085
Frame252.ZIndex = 10
8086
Frame253.Name = "13"
8087
Frame253.Parent = Frame239
8088
Frame253.Size = UDim2.new(0.0476190485, 0, 0, 4)
8089
Frame253.Position = UDim2.new(0.619047642, 0, 0.857142866, -2)
8090
Frame253.BackgroundColor3 = Color3.new(1, 1, 1)
8091
Frame253.BorderColor3 = Color3.new(0, 0, 0)
8092
Frame253.BorderSizePixel = 0
8093
Frame253.ZIndex = 10
8094
Frame254.Name = "14"
8095
Frame254.Parent = Frame239
8096
Frame254.Size = UDim2.new(0.0476190485, 0, 0, 4)
8097
Frame254.Position = UDim2.new(0.666666687, 0, 0.916666687, -2)
8098
Frame254.BackgroundColor3 = Color3.new(1, 1, 1)
8099
Frame254.BorderColor3 = Color3.new(0, 0, 0)
8100
Frame254.BorderSizePixel = 0
8101
Frame254.ZIndex = 10
8102
Frame255.Name = "15"
8103
Frame255.Parent = Frame239
8104
Frame255.Size = UDim2.new(0.0476190485, 0, 0, 4)
8105
Frame255.Position = UDim2.new(0.714285731, 0, 0.833333313, -2)
8106
Frame255.BackgroundColor3 = Color3.new(1, 1, 1)
8107
Frame255.BorderColor3 = Color3.new(0, 0, 0)
8108
Frame255.BorderSizePixel = 0
8109
Frame255.ZIndex = 10
8110
Frame256.Name = "16"
8111
Frame256.Parent = Frame239
8112
Frame256.Size = UDim2.new(0.0476190485, 0, 0, 4)
8113
Frame256.Position = UDim2.new(0.761904776, 0, 0.75, -2)
8114
Frame256.BackgroundColor3 = Color3.new(1, 1, 1)
8115
Frame256.BorderColor3 = Color3.new(0, 0, 0)
8116
Frame256.BorderSizePixel = 0
8117
Frame256.ZIndex = 10
8118
Frame257.Name = "17"
8119
Frame257.Parent = Frame239
8120
Frame257.Size = UDim2.new(0.0476190485, 0, 0, 4)
8121
Frame257.Position = UDim2.new(0.809523821, 0, 0.666666687, -2)
8122
Frame257.BackgroundColor3 = Color3.new(1, 1, 1)
8123
Frame257.BorderColor3 = Color3.new(0, 0, 0)
8124
Frame257.BorderSizePixel = 0
8125
Frame257.ZIndex = 10
8126
Frame258.Name = "18"
8127
Frame258.Parent = Frame239
8128
Frame258.Size = UDim2.new(0.0476190485, 0, 0, 4)
8129
Frame258.Position = UDim2.new(0.857142866, 0, 0.583333313, -2)
8130
Frame258.BackgroundColor3 = Color3.new(1, 1, 1)
8131
Frame258.BorderColor3 = Color3.new(0, 0, 0)
8132
Frame258.BorderSizePixel = 0
8133
Frame258.ZIndex = 10
8134
Frame259.Name = "19"
8135
Frame259.Parent = Frame239
8136
Frame259.Size = UDim2.new(0.0476190485, 0, 0, 4)
8137
Frame259.Position = UDim2.new(0.90476191, 0, 0.5, -2)
8138
Frame259.BackgroundColor3 = Color3.new(1, 1, 1)
8139
Frame259.BorderColor3 = Color3.new(0, 0, 0)
8140
Frame259.BorderSizePixel = 0
8141
Frame259.ZIndex = 10
8142
Frame260.Name = "20"
8143
Frame260.Parent = Frame239
8144
Frame260.Size = UDim2.new(0.0476190485, 0, 0, 4)
8145
Frame260.Position = UDim2.new(0.952000022, 0, 0.49000001, -2)
8146
Frame260.BackgroundColor3 = Color3.new(1, 1, 1)
8147
Frame260.BorderColor3 = Color3.new(0, 0, 0)
8148
Frame260.BorderSizePixel = 0
8149
Frame260.ZIndex = 10
8150
Frame261.Name = "Line"
8151
Frame261.Parent = Frame239
8152
Frame261.Size = UDim2.new(0, 200, 0, 3)
8153
Frame261.Position = UDim2.new(1, 0, 0.5, -2)
8154
Frame261.BackgroundColor3 = Color3.new(1, 1, 1)
8155
Frame261.BorderColor3 = Color3.new(0, 0, 0)
8156
Frame261.BorderSizePixel = 0
8157
Frame261.ZIndex = 10
8158
Frame262.Name = "Line"
8159
Frame262.Parent = Frame239
8160
Frame262.Size = UDim2.new(0, 200, 0, 3)
8161
Frame262.Position = UDim2.new(0, -200, 0.5, -2)
8162
Frame262.BackgroundColor3 = Color3.new(1, 1, 1)
8163
Frame262.BorderColor3 = Color3.new(0, 0, 0)
8164
Frame262.BorderSizePixel = 0
8165
Frame262.ZIndex = 10
8166
Frame263.Name = "Controls"
8167
Frame263.Parent = Frame225
8168
Frame263.Transparency = 0.30000001192093
8169
Frame263.Size = UDim2.new(1, 0, 0, 120)
8170
Frame263.Position = UDim2.new(0, 0, 0, -200)
8171
Frame263.Visible = false
8172
Frame263.BackgroundColor3 = Color3.new(0.156863, 0.156863, 0.156863)
8173
Frame263.BackgroundTransparency = 0.30000001192093
8174
Frame263.BorderColor3 = Color3.new(0.156863, 0.156863, 0.156863)
8175
Frame263.BorderSizePixel = 5
8176
Frame263.ZIndex = 10
8177
TextLabel264.Name = "Title"
8178
TextLabel264.Parent = Frame263
8179
TextLabel264.Transparency = 1
8180
TextLabel264.Size = UDim2.new(1, 0, 0, 15)
8181
TextLabel264.Text = "CONTROLS"
8182
TextLabel264.BackgroundColor3 = Color3.new(1, 1, 1)
8183
TextLabel264.BackgroundTransparency = 1
8184
TextLabel264.ZIndex = 10
8185
TextLabel264.Font = Enum.Font.SourceSansBold
8186
TextLabel264.FontSize = Enum.FontSize.Size14
8187
TextLabel264.TextColor3 = Color3.new(1, 1, 1)
8188
TextLabel265.Name = "Line"
8189
TextLabel265.Parent = TextLabel264
8190
TextLabel265.Size = UDim2.new(1, 0, 0, 2)
8191
TextLabel265.Text = ""
8192
TextLabel265.Position = UDim2.new(0, 0, 1, 1)
8193
TextLabel265.BackgroundColor3 = Color3.new(1, 1, 0)
8194
TextLabel265.BorderSizePixel = 0
8195
TextLabel265.ZIndex = 10
8196
TextLabel265.Font = Enum.Font.SourceSans
8197
TextLabel265.FontSize = Enum.FontSize.Size14
8198
Frame266.Name = "Grenades"
8199
Frame266.Parent = Frame225
8200
Frame266.Transparency = 1
8201
Frame266.Size = UDim2.new(0, 175, 0, 25)
8202
Frame266.Position = UDim2.new(0, 0, 0, 90)
8203
Frame266.Visible = false
8204
Frame266.BackgroundTransparency = 1
8205
Frame266.ZIndex = 10
8206
Frame267.Name = "Lethals"
8207
Frame267.Parent = Frame266
8208
Frame267.Transparency = 0.80000001192093
8209
Frame267.Size = UDim2.new(0.5, -2, 1, 0)
8210
Frame267.BackgroundColor3 = Color3.new(1, 1, 1)
8211
Frame267.BackgroundTransparency = 0.80000001192093
8212
Frame267.BorderSizePixel = 0
8213
Frame267.ZIndex = 10
8214
ImageLabel268.Name = "Icon"
8215
ImageLabel268.Parent = Frame267
8216
ImageLabel268.Transparency = 1
8217
ImageLabel268.Size = UDim2.new(0, 21, 0, 21)
8218
ImageLabel268.Position = UDim2.new(0, 7, 0, 2)
8219
ImageLabel268.BackgroundColor3 = Color3.new(1, 1, 1)
8220
ImageLabel268.BackgroundTransparency = 1
8221
ImageLabel268.ZIndex = 10
8222
TextLabel269.Name = "Mult"
8223
TextLabel269.Parent = Frame267
8224
TextLabel269.Transparency = 1
8225
TextLabel269.Size = UDim2.new(0, 20, 1, 0)
8226
TextLabel269.Text = "X"
8227
TextLabel269.Position = UDim2.new(0.5, -10, 0, 0)
8228
TextLabel269.BackgroundColor3 = Color3.new(1, 1, 1)
8229
TextLabel269.BackgroundTransparency = 1
8230
TextLabel269.BorderSizePixel = 0
8231
TextLabel269.ZIndex = 10
8232
TextLabel269.Font = Enum.Font.ArialBold
8233
TextLabel269.FontSize = Enum.FontSize.Size18
8234
TextLabel269.TextColor3 = Color3.new(1, 1, 1)
8235
TextLabel270.Name = "Num"
8236
TextLabel270.Parent = Frame267
8237
TextLabel270.Transparency = 1
8238
TextLabel270.Size = UDim2.new(0, 0, 1, 0)
8239
TextLabel270.Text = "0"
8240
TextLabel270.Position = UDim2.new(1, -7, 0, 0)
8241
TextLabel270.BackgroundColor3 = Color3.new(1, 1, 1)
8242
TextLabel270.BackgroundTransparency = 1
8243
TextLabel270.ZIndex = 10
8244
TextLabel270.Font = Enum.Font.ArialBold
8245
TextLabel270.FontSize = Enum.FontSize.Size18
8246
TextLabel270.TextColor3 = Color3.new(1, 1, 1)
8247
TextLabel270.TextXAlignment = Enum.TextXAlignment.Right
8248
Frame271.Name = "Tacticals"
8249
Frame271.Parent = Frame266
8250
Frame271.Transparency = 0.80000001192093
8251
Frame271.Size = UDim2.new(0.5, -2, 1, 0)
8252
Frame271.Position = UDim2.new(0.5, 2, 0, 0)
8253
Frame271.BackgroundColor3 = Color3.new(1, 1, 1)
8254
Frame271.BackgroundTransparency = 0.80000001192093
8255
Frame271.BorderSizePixel = 0
8256
Frame271.ZIndex = 10
8257
ImageLabel272.Name = "Icon"
8258
ImageLabel272.Parent = Frame271
8259
ImageLabel272.Transparency = 1
8260
ImageLabel272.Size = UDim2.new(0, 21, 0, 21)
8261
ImageLabel272.Position = UDim2.new(0, 7, 0, 2)
8262
ImageLabel272.BackgroundColor3 = Color3.new(1, 1, 1)
8263
ImageLabel272.BackgroundTransparency = 1
8264
ImageLabel272.ZIndex = 10
8265
TextLabel273.Name = "Num"
8266
TextLabel273.Parent = Frame271
8267
TextLabel273.Transparency = 1
8268
TextLabel273.Size = UDim2.new(0, 0, 1, 0)
8269
TextLabel273.Text = "0"
8270
TextLabel273.Position = UDim2.new(1, -7, 0, 0)
8271
TextLabel273.BackgroundColor3 = Color3.new(1, 1, 1)
8272
TextLabel273.BackgroundTransparency = 1
8273
TextLabel273.ZIndex = 10
8274
TextLabel273.Font = Enum.Font.ArialBold
8275
TextLabel273.FontSize = Enum.FontSize.Size18
8276
TextLabel273.TextColor3 = Color3.new(1, 1, 1)
8277
TextLabel273.TextXAlignment = Enum.TextXAlignment.Right
8278
TextLabel274.Name = "Mult"
8279
TextLabel274.Parent = Frame271
8280
TextLabel274.Transparency = 1
8281
TextLabel274.Size = UDim2.new(0, 20, 1, 0)
8282
TextLabel274.Text = "X"
8283
TextLabel274.Position = UDim2.new(0.5, -10, 0, 0)
8284
TextLabel274.BackgroundColor3 = Color3.new(1, 1, 1)
8285
TextLabel274.BackgroundTransparency = 1
8286
TextLabel274.BorderSizePixel = 0
8287
TextLabel274.ZIndex = 10
8288
TextLabel274.Font = Enum.Font.ArialBold
8289
TextLabel274.FontSize = Enum.FontSize.Size18
8290
TextLabel274.TextColor3 = Color3.new(1, 1, 1)
8291
Frame275.Name = "gunName"
8292
Frame275.Parent = Frame225
8293
Frame275.Transparency = 1
8294
Frame275.Size = UDim2.new(1, 0, 0, 36)
8295
Frame275.BackgroundColor3 = Color3.new(0.972549, 0.972549, 0.972549)
8296
Frame275.BackgroundTransparency = 1
8297
Frame275.ZIndex = 10
8298
TextLabel276.Name = "Line"
8299
TextLabel276.Parent = Frame275
8300
TextLabel276.Size = UDim2.new(0, 2, 1, 0)
8301
TextLabel276.Text = ""
8302
TextLabel276.BackgroundColor3 = Color3.new(1, 1, 1)
8303
TextLabel276.BorderSizePixel = 0
8304
TextLabel276.ZIndex = 10
8305
TextLabel276.Font = Enum.Font.SourceSans
8306
TextLabel276.FontSize = Enum.FontSize.Size14
8307
TextLabel277.Name = "Line"
8308
TextLabel277.Parent = Frame275
8309
TextLabel277.Size = UDim2.new(1, 0, 0, 2)
8310
TextLabel277.Text = ""
8311
TextLabel277.Position = UDim2.new(0, 0, 1, 0)
8312
TextLabel277.BackgroundColor3 = Color3.new(1, 1, 1)
8313
TextLabel277.BorderSizePixel = 0
8314
TextLabel277.ZIndex = 10
8315
TextLabel277.Font = Enum.Font.SourceSans
8316
TextLabel277.FontSize = Enum.FontSize.Size14
8317
TextLabel278.Name = "Title"
8318
TextLabel278.Parent = Frame275
8319
TextLabel278.Transparency = 1
8320
TextLabel278.Size = UDim2.new(1, -7, 1, 0)
8321
TextLabel278.Text = "Gun"
8322
TextLabel278.Position = UDim2.new(0, 7, 0, 0)
8323
TextLabel278.BackgroundColor3 = Color3.new(1, 1, 1)
8324
TextLabel278.BackgroundTransparency = 1
8325
TextLabel278.ZIndex = 10
8326
TextLabel278.Font = Enum.Font.SourceSansBold
8327
TextLabel278.FontSize = Enum.FontSize.Size36
8328
TextLabel278.TextColor3 = Color3.new(1, 1, 1)
8329
TextLabel278.TextStrokeTransparency = 0
8330
TextLabel278.TextXAlignment = Enum.TextXAlignment.Left
8331
Frame279.Name = "fireSelect"
8332
Frame279.Parent = ScreenGui211
8333
Frame279.Transparency = 1
8334
Frame279.Position = UDim2.new(0.5, 0, 0.5, -18)
8335
Frame279.Visible = false
8336
Frame279.BackgroundColor3 = Color3.new(1, 1, 1)
8337
Frame279.BackgroundTransparency = 1
8338
Frame280.Name = "Modes"
8339
Frame280.Parent = Frame279
8340
Frame280.Transparency = 1
8341
Frame280.BackgroundColor3 = Color3.new(1, 1, 1)
8342
Frame280.BackgroundTransparency = 1
8343
ImageLabel281.Name = "Circle"
8344
ImageLabel281.Parent = Frame279
8345
ImageLabel281.Transparency = 1
8346
ImageLabel281.Size = UDim2.new(0, 120, 0, 120)
8347
ImageLabel281.Position = UDim2.new(0, -60, 0, -60)
8348
ImageLabel281.BackgroundColor3 = Color3.new(1, 1, 1)
8349
ImageLabel281.BackgroundTransparency = 1
8350
ImageLabel281.Image = "http://www.roblox.com/asset/?id=55754953"
8351
ImageLabel281.ImageTransparency = 0.5
8352
ImageLabel282.Name = "Arrow"
8353
ImageLabel282.Parent = Frame279
8354
ImageLabel282.Transparency = 1
8355
ImageLabel282.Size = UDim2.new(0, 40, 0, 20)
8356
ImageLabel282.Position = UDim2.new(0, -20, 0, -140)
8357
ImageLabel282.BackgroundColor3 = Color3.new(1, 1, 1)
8358
ImageLabel282.BackgroundTransparency = 1
8359
ImageLabel282.Image = "http://www.roblox.com/asset/?id=126877530"
8360
Frame283.Name = "Scope"
8361
Frame283.Parent = ScreenGui211
8362
Frame283.Transparency = 1
8363
Frame283.Size = UDim2.new(1, 0, 1, 36)
8364
Frame283.Position = UDim2.new(0, 0, 0, -36)
8365
Frame283.BackgroundColor3 = Color3.new(0, 0, 0)
8366
Frame283.BackgroundTransparency = 1
8367
TextLabel284.Name = "Steady"
8368
TextLabel284.Parent = Frame283
8369
TextLabel284.Transparency = 1
8370
TextLabel284.Size = UDim2.new(0, 120, 0, 20)
8371
TextLabel284.Text = ""
8372
TextLabel284.Position = UDim2.new(0.5, -60, 0.5, 50)
8373
TextLabel284.Visible = false
8374
TextLabel284.BackgroundColor3 = Color3.new(1, 1, 1)
8375
TextLabel284.BackgroundTransparency = 1
8376
TextLabel284.ZIndex = 9
8377
TextLabel284.Font = Enum.Font.ArialBold
8378
TextLabel284.FontSize = Enum.FontSize.Size14
8379
TextLabel284.TextColor3 = Color3.new(1, 1, 0)
8380
TextLabel284.TextStrokeTransparency = 0
8381
Frame285.Name = "Main"
8382
Frame285.Parent = Frame283
8383
Frame285.Transparency = 1
8384
Frame285.Size = UDim2.new(1, 0, 1, 0)
8385
Frame285.Visible = false
8386
Frame285.BackgroundColor3 = Color3.new(1, 1, 1)
8387
Frame285.BackgroundTransparency = 1
8388
ImageLabel286.Name = "ScopeImg2"
8389
ImageLabel286.Parent = Frame285
8390
ImageLabel286.Transparency = 1
8391
ImageLabel286.Size = UDim2.new(0, 20, 0, 20)
8392
ImageLabel286.Position = UDim2.new(0.5, -10, 0, -10)
8393
ImageLabel286.BackgroundColor3 = Color3.new(0, 0, 0)
8394
ImageLabel286.BackgroundTransparency = 1
8395
ImageLabel286.Image = "http://www.roblox.com/asset/?id=184922644"
8396
ImageLabel287.Name = "ScopeImg1"
8397
ImageLabel287.Parent = Frame285
8398
ImageLabel287.Transparency = 1
8399
ImageLabel287.Size = UDim2.new(0, 20, 0, 20)
8400
ImageLabel287.Position = UDim2.new(0.5, -10, 0, -10)
8401
ImageLabel287.BackgroundColor3 = Color3.new(0, 0, 0)
8402
ImageLabel287.BackgroundTransparency = 1
8403
ImageLabel287.Image = "http://www.roblox.com/asset/?id=72002022"
8404
Frame288.Name = "F2"
8405
Frame288.Parent = Frame285
8406
Frame288.Size = UDim2.new(0, 0, 1, 20)
8407
Frame288.Position = UDim2.new(0, -10, 0, -10)
8408
Frame288.BackgroundColor3 = Color3.new(0, 0, 0)
8409
Frame288.BorderColor3 = Color3.new(0, 0, 0)
8410
Frame288.BorderSizePixel = 0
8411
Frame289.Name = "F1"
8412
Frame289.Parent = Frame285
8413
Frame289.Size = UDim2.new(0, 0, 1, 20)
8414
Frame289.Position = UDim2.new(0, -10, 0, -10)
8415
Frame289.BackgroundColor3 = Color3.new(0, 0, 0)
8416
Frame289.BorderColor3 = Color3.new(0, 0, 0)
8417
Frame289.BorderSizePixel = 0
8418
LocalScript290.Name = "Update"
8419
LocalScript290.Parent = Frame285
8420
table.insert(cors,sandbox(LocalScript290,function()
8421
local GUI = script.Parent
8422
8423
function updateScopeDimension()
8424
	GUI.ScopeImg1.Position = UDim2.new(0.5, -10 - (GUI.AbsoluteSize.y / 2), 0, -10)
8425
	GUI.ScopeImg1.Size = UDim2.new(0, 20 + GUI.AbsoluteSize.y, 0, 20 + GUI.AbsoluteSize.y)
8426
	GUI.ScopeImg2.Position = UDim2.new(0.5, -10 - (GUI.AbsoluteSize.y / 2), 0, -10)
8427
	GUI.ScopeImg2.Size = UDim2.new(0, 20 + GUI.AbsoluteSize.y, 0, 20 + GUI.AbsoluteSize.y)
8428
	GUI.F1.Size = UDim2.new(0, 20 + ((GUI.AbsoluteSize.x - GUI.AbsoluteSize.y) / 2), 1, 20)
8429
	GUI.F2.Size = UDim2.new(0, 20 + ((GUI.AbsoluteSize.x - GUI.AbsoluteSize.y) / 2), 1, 20)
8430
	GUI.F2.Position = UDim2.new(1, -10 - ((GUI.AbsoluteSize.x - GUI.AbsoluteSize.y) / 2), 0, -10)
8431
end
8432
8433
wait()
8434
8435
GUI.Changed:connect(updateScopeDimension)
8436
8437
updateScopeDimension()
8438
end))
8439
TextLabel291.Name = "Sens"
8440
TextLabel291.Parent = ScreenGui211
8441
TextLabel291.Transparency = 1
8442
TextLabel291.Size = UDim2.new(0, 100, 0, 20)
8443
TextLabel291.Text = "S: 0.3"
8444
TextLabel291.Position = UDim2.new(0.5, -50, 0.5, 50)
8445
TextLabel291.Visible = false
8446
TextLabel291.BackgroundColor3 = Color3.new(1, 1, 1)
8447
TextLabel291.BackgroundTransparency = 1
8448
TextLabel291.ZIndex = 10
8449
TextLabel291.Font = Enum.Font.SourceSansBold
8450
TextLabel291.FontSize = Enum.FontSize.Size28
8451
TextLabel291.TextColor3 = Color3.new(1, 1, 1)
8452
TextLabel291.TextStrokeTransparency = 0
8453
Part292.Name = "ham"
8454
Part292.Parent = Tool0
8455
Part292.BrickColor = BrickColor.new("Mid gray")
8456
Part292.Rotation = Vector3.new(179.98999, 89.9799957, -179.929993)
8457
Part292.FormFactor = Enum.FormFactor.Plate
8458
Part292.Size = Vector3.new(1, 0.800000012, 1)
8459
Part292.CFrame = CFrame.new(1435.26599, 48.9021072, -1310.87195, -5.96046448e-08, 7.27595761e-11, 0.99999994, 0.000796274282, 0.999999642, -1.45519152e-11, -0.999999702, 0.000796274282, -1.1920929e-07)
8460
Part292.BottomSurface = Enum.SurfaceType.Smooth
8461
Part292.TopSurface = Enum.SurfaceType.Smooth
8462
Part292.Color = Color3.new(0.803922, 0.803922, 0.803922)
8463
Part292.Position = Vector3.new(1435.26599, 48.9021072, -1310.87195)
8464
Part292.Orientation = Vector3.new(0, 90, 0.049999997)
8465
Part292.Color = Color3.new(0.803922, 0.803922, 0.803922)
8466
SpecialMesh293.Parent = Part292
8467
SpecialMesh293.MeshId = "http://www.roblox.com/asset/?id=16646125"
8468
SpecialMesh293.TextureId = "http://www.roblox.com/asset/?id=16432575"
8469
SpecialMesh293.MeshType = Enum.MeshType.FileMesh
8470
Weld294.Parent = Part292
8471
Weld294.C0 = CFrame.new(-4.71828389e-06, -1.06949216e-07, 6.73912837e-08, -1.96380037e-10, -7.15101578e-06, 1, -3.45956111e-11, 1, 9.53468771e-06, -1, 4.01852024e-11, -2.64911593e-10)
8472
Weld294.C1 = CFrame.new(-4.71828389e-06, -1.06949216e-07, 6.73912837e-08, -1.96380037e-10, -7.15101578e-06, 1, -3.45956111e-11, 1, 9.53468771e-06, -1, 4.01852024e-11, -2.64911593e-10)
8473
Weld295.Parent = Part292
8474
Weld295.C0 = CFrame.new(-1.34138972e-07, -6.91051537e-06, 0, -3.91537502e-21, 0.999999106, -0.00133771845, 2.81109586e-22, 0.00133771845, 0.999999106, 1, 3.91499535e-21, -2.86346992e-22)
8475
Weld295.C1 = CFrame.new(-1.34138972e-07, -6.91051537e-06, 0, -3.91537502e-21, 0.999999106, -0.00133771845, 2.81109586e-22, 0.00133771845, 0.999999106, 1, 3.91499535e-21, -2.86346992e-22)
8476
Weld296.Parent = Part292
8477
Weld296.C0 = CFrame.new(3.64912034e-06, -1.13236744e-07, -2.01656292e-08, -7.08486672e-11, 0.000798657886, -0.999999702, 1.55140234e-10, 0.999999702, 0.000793890678, 1, 1.55083765e-10, 7.09721865e-11)
8478
Weld296.C1 = CFrame.new(3.64912034e-06, -1.13236744e-07, -2.01656292e-08, -7.08486672e-11, 0.000798657886, -0.999999702, 1.55140234e-10, 0.999999702, 0.000793890678, 1, 1.55083765e-10, 7.09721865e-11)
8479
Weld297.Parent = Part292
8480
Weld297.C0 = CFrame.new(1.6321755e-07, 3.49538391e-06, 0, -3.9252309e-21, 0.996502578, -0.0835621059, -4.1799742e-23, 0.0835621059, 0.996502578, 1, 3.91499535e-21, -2.86346992e-22)
8481
Weld297.C1 = CFrame.new(1.6321755e-07, 3.49538391e-06, 0, -3.9252309e-21, 0.996502578, -0.0835621059, -4.1799742e-23, 0.0835621059, 0.996502578, 1, 3.91499535e-21, -2.86346992e-22)
8482
Weld298.Parent = Part292
8483
Weld298.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8484
Weld298.C1 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8485
Weld299.Parent = Part292
8486
Weld299.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8487
Weld299.C1 = CFrame.new(0.533214211, 4.09488493e-05, -0.399536163, -6.19143847e-10, 0.000817726948, -0.999999702, 8.15887191e-10, 0.999999702, 0.000817726948, 1, -8.15380652e-10, -6.19810758e-10)
8488
Weld300.Parent = Part292
8489
Weld300.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8490
Weld300.C1 = CFrame.new(-1.12273511e-07, 2.60849974e-05, -0.533189535, 1, -8.33252689e-10, -3.96865235e-10, 8.3357371e-10, 0.999999702, 0.000809622463, 3.96190469e-10, -0.000809622463, 0.999999702)
8491
Weld301.Parent = Part292
8492
Weld301.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8493
Weld301.C1 = CFrame.new(0.533214211, 0.373362005, -4.18045545e-08, -6.20301976e-10, 0.000817726948, -0.999999702, 8.56068161e-10, 0.999999702, 0.000817726948, 1, -8.55560567e-10, -6.21001806e-10)
8494
Weld302.Parent = Part292
8495
Weld302.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8496
Weld302.C1 = CFrame.new(-5.43287024e-06, 0.132771105, 0.400390655, 8.48401349e-10, 0.999999702, 0.000801041257, -6.20273943e-10, 0.000801041257, -0.999999702, -1, 8.47904247e-10, 6.20953344e-10)
8497
Weld303.Parent = Part292
8498
Weld303.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8499
Weld303.C1 = CFrame.new(-2.92850495e-06, -0.400390595, -0.132823572, 8.56068161e-10, 0.999999702, 0.000817726948, -1, 8.55560678e-10, 6.21001806e-10, 6.20301976e-10, -0.000817726948, 0.999999702)
8500
Weld304.Parent = Part292
8501
Weld304.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8502
Weld304.C1 = CFrame.new(1.20404536e-07, 1.7940567e-05, 0.132805407, -1, 8.50133963e-10, 4.23458879e-10, 8.50476911e-10, 0.999999702, 0.000810576021, -4.22769625e-10, 0.000810576021, -0.999999702)
8503
Weld305.Parent = Part292
8504
Weld305.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8505
Weld305.C1 = CFrame.new(5.96581813e-05, -0.400390744, 0.9335953, 8.14806722e-10, 0.999999702, 0.000811847276, 1, -8.1443452e-10, -4.58876631e-10, -4.58215271e-10, 0.000811847276, -0.999999702)
8506
Weld306.Parent = Part292
8507
Weld306.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8508
Weld306.C1 = CFrame.new(2.33017072e-05, -0.933604836, 0.400390595, 8.35977676e-10, 0.999999702, 0.000817726948, 6.19722884e-10, -0.000817726948, 0.999999702, 1, -8.35470693e-10, -6.20406282e-10)
8509
Weld307.Parent = Part292
8510
Weld307.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8511
Weld307.C1 = CFrame.new(-1.52226988e-07, -0.373301029, -0.533214867, 1, -9.17886822e-10, -2.52556698e-10, 9.18089604e-10, 0.999999702, 0.000804378418, 2.51818288e-10, -0.000804378418, 0.999999702)
8512
Weld308.Parent = Part292
8513
Weld308.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8514
Weld308.C1 = CFrame.new(-0.533214211, 4.09488493e-05, -0.400390595, 6.19143847e-10, -0.000817726948, 0.999999702, 8.15887191e-10, 0.999999702, 0.000817726948, -1, 8.15380652e-10, 6.19810758e-10)
8515
Weld309.Parent = Part292
8516
Weld309.C0 = CFrame.new(5.25072437e-06, -9.04979558e-08, -6.02840373e-08, -2.12544884e-10, 0.000803425093, -0.999999702, 4.65420175e-10, 0.999999702, 0.000803425093, 1, -4.65249311e-10, -2.12918752e-10)
8517
Weld309.C1 = CFrame.new(3.85732619e-08, 1.708794e-06, -0.933600962, 1, 2.30016242e-10, -1.24190033e-10, 2.3550692e-10, 0.999999702, 0.000801041722, 3.36916911e-10, -0.000808192533, 0.999999702)
8518
Weld310.Parent = Part292
8519
Weld310.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8520
Weld310.C1 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8521
Weld311.Parent = Part292
8522
Weld311.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8523
Weld311.C1 = CFrame.new(0.533207953, 4.02465412e-05, -0.399536252, -4.0660561e-10, 0.997999609, 0.0632200539, 3.50466517e-10, -0.0632200539, 0.997999668, 1, 4.2794876e-10, -3.24059835e-10)
8524
Weld312.Parent = Part292
8525
Weld312.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8526
Weld312.C1 = CFrame.new(-3.86806875e-07, 4.67300815e-05, -0.533184648, 1, 6.89605151e-10, -1.25792432e-09, 1.29899103e-09, -0.0631973371, 0.998001039, 6.08729123e-10, -0.998001099, -0.0631973371)
8527
Weld313.Parent = Part292
8528
Weld313.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8529
Weld313.C1 = CFrame.new(0.533224404, 0.373393357, -3.90072529e-07, -8.32836911e-10, 0.998000622, 0.0632058904, 1.32148736e-09, -0.0632058978, 0.998000503, 1, 9.1469754e-10, -1.26620492e-09)
8530
Weld314.Parent = Part292
8531
Weld314.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8532
Weld314.C1 = CFrame.new(-1.24499784e-05, 0.132795051, 0.400390744, 3.829842e-10, -0.0632034019, 0.998000741, -4.07727963e-10, 0.998000681, 0.0632034019, -1, -4.31118696e-10, 3.56448732e-10)
8533
Weld315.Parent = Part292
8534
Weld315.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8535
Weld315.C1 = CFrame.new(9.7206248e-06, -0.400390506, -0.132816374, 3.90647487e-10, -0.0632200539, 0.997999668, -1, -4.31644803e-10, 3.64087233e-10, 4.07763739e-10, -0.997999609, -0.0632200539)
8536
Weld316.Parent = Part292
8537
Weld316.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8538
Weld316.C1 = CFrame.new(1.12741731e-07, 1.47659775e-05, 0.132799253, -1, -2.34147424e-10, 3.70999564e-10, 3.85058263e-10, -0.0632105544, 0.998000205, -2.10228071e-10, 0.998000264, 0.0632105544)
8539
Weld317.Parent = Part292
8540
Weld317.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8541
Weld317.C1 = CFrame.new(3.39694889e-05, -0.400390744, 0.933587611, 3.49388324e-10, -0.0632092953, 0.998000324, 1, 2.67267597e-10, -3.33160693e-10, -2.45674314e-10, 0.998000324, 0.0632092878)
8542
Weld318.Parent = Part292
8543
Weld318.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8544
Weld318.C1 = CFrame.new(9.72479302e-06, -0.933596671, 0.400390506, 3.70557002e-10, -0.0632200539, 0.997999668, 4.07184675e-10, -0.997999609, -0.0632200539, 1, 4.29796781e-10, -3.44073547e-10)
8545
Weld319.Parent = Part292
8546
Weld319.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8547
Weld319.C1 = CFrame.new(-9.38037488e-08, -0.37332812, -0.533202708, 1, 6.78072321e-11, -4.49284138e-10, 4.52671733e-10, -0.0632067397, 0.998000443, 3.92738446e-11, -0.998000562, -0.0632067248)
8548
Weld320.Parent = Part292
8549
Weld320.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8550
Weld320.C1 = CFrame.new(-0.533207953, 4.02465412e-05, -0.400390506, 4.0660561e-10, -0.997999609, -0.0632200539, 3.50466517e-10, -0.0632200539, 0.997999668, -1, -4.2794876e-10, 3.24059835e-10)
8551
Weld321.Parent = Part292
8552
Weld321.C0 = CFrame.new(4.58660736e-07, -1.05566846e-06, 0, -3.88906235e-21, 0.997999787, 0.0632176325, 5.33270982e-22, -0.0632176325, 0.997999787, 1, 3.91499535e-21, -2.86346992e-22)
8553
Weld321.C1 = CFrame.new(-7.07679817e-08, 2.65414451e-06, -0.933581531, 1, 1.09589553e-10, 2.37319969e-10, 2.3550692e-10, -0.0632223934, 0.997999489, 3.36916911e-10, -0.997999012, -0.0632295236)
8554
Weld322.Parent = Part292
8555
Weld322.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8556
Weld322.C1 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8557
Weld323.Parent = Part292
8558
Weld323.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8559
Weld323.C1 = CFrame.new(0.533212543, 4.33809255e-05, -0.399536133, -4.77452022e-10, 0.000812952989, -0.999999702, 5.0560689e-10, 0.999999702, 0.000812952989, 1, -5.05218589e-10, -4.77862916e-10)
8560
Weld324.Parent = Part292
8561
Weld324.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8562
Weld324.C1 = CFrame.new(-2.3357552e-07, 5.55160077e-05, -0.533165157, 1, -1.76372972e-09, -8.22718005e-10, 1.76440684e-09, 0.999999702, 0.000823921058, 8.21264445e-10, -0.000823920942, 0.999999762)
8563
Weld325.Parent = Part292
8564
Weld325.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8565
Weld325.C1 = CFrame.new(0.533225417, 0.37339133, -1.62893741e-07, -1.04536846e-09, 0.000832025486, -0.999999642, 1.78690496e-09, 0.999999702, 0.000832025427, 1, -1.78603476e-09, -1.04685483e-09)
8566
Weld326.Parent = Part292
8567
Weld326.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8568
Weld326.C1 = CFrame.new(-4.40306758e-06, 0.132771388, 0.400390655, 8.48401349e-10, 0.999999702, 0.000801038579, -6.20273943e-10, 0.000801038579, -0.999999702, -1, 8.47904247e-10, 6.20953344e-10)
8569
Weld327.Parent = Part292
8570
Weld327.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8571
Weld327.C1 = CFrame.new(1.28626851e-07, -0.400390595, -0.13282387, 8.56068161e-10, 0.999999702, 0.000817724678, -1, 8.55560678e-10, 6.21001806e-10, 6.20301976e-10, -0.000817724678, 0.999999702)
8572
Weld328.Parent = Part292
8573
Weld328.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8574
Weld328.C1 = CFrame.new(1.20785018e-07, 3.03727884e-05, 0.132775158, -1, 8.50133963e-10, 4.23458851e-10, 8.50476911e-10, 0.999999702, 0.000810569618, -4.22769625e-10, 0.000810569618, -0.999999702)
8575
Weld329.Parent = Part292
8576
Weld329.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8577
Weld329.C1 = CFrame.new(6.63429382e-05, -0.400390744, 0.933595598, 8.14806722e-10, 0.999999702, 0.000811841746, 1, -8.14434464e-10, -4.58876631e-10, -4.58215271e-10, 0.000811841746, -0.999999702)
8578
Weld330.Parent = Part292
8579
Weld330.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8580
Weld330.C1 = CFrame.new(2.15904674e-05, -0.933605134, 0.400390595, 8.35977676e-10, 0.999999702, 0.000817724678, 6.19722884e-10, -0.000817724678, 0.999999702, 1, -8.35470693e-10, -6.20406337e-10)
8581
Weld331.Parent = Part292
8582
Weld331.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8583
Weld331.C1 = CFrame.new(-1.52702455e-07, -0.373297483, -0.533215165, 1, -9.17886822e-10, -2.52556753e-10, 9.18089604e-10, 0.999999702, 0.000804377254, 2.51818288e-10, -0.000804377254, 0.999999702)
8584
Weld332.Parent = Part292
8585
Weld332.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8586
Weld332.C1 = CFrame.new(-0.533214509, 4.16217954e-05, -0.400390595, 6.19143847e-10, -0.000817724678, 0.999999702, 8.15887191e-10, 0.999999702, 0.000817724678, -1, 8.15380652e-10, 6.19810814e-10)
8587
Weld333.Parent = Part292
8588
Weld333.C0 = CFrame.new(5.53692553e-06, 2.04514564e-07, -6.04753154e-08, -2.12544884e-10, 0.00080342195, -0.999999702, 4.65420175e-10, 0.999999702, 0.00080342195, 1, -4.65249311e-10, -2.12918766e-10)
8589
Weld333.C1 = CFrame.new(3.86851866e-08, 1.33582325e-05, -0.93360126, 1, 2.30016242e-10, -1.24190033e-10, 2.3550692e-10, 0.999999702, 0.000801045971, 3.36916911e-10, -0.000808193639, 0.999999702)
8590
Weld334.Parent = Part292
8591
Weld334.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8592
Weld334.C1 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8593
Weld335.Parent = Part292
8594
Weld335.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8595
Weld335.C1 = CFrame.new(0.533207655, 4.00506069e-05, -0.399536133, -2.64911593e-10, 0.997566879, -0.069715552, 4.01852024e-11, 0.0697179288, 0.9975667, 1, 1.98314268e-10, 2.08188033e-11)
8596
Weld336.Parent = Part292
8597
Weld336.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8598
Weld336.C1 = CFrame.new(-4.09776021e-07, 5.64174661e-05, -0.533183694, 1, 5.16648224e-10, -1.33828371e-09, 1.29899103e-09, 0.0697453171, 0.997564912, 6.08729123e-10, -0.997564912, 0.0697453246)
8599
Weld337.Parent = Part292
8600
Weld337.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8601
Weld337.C1 = CFrame.new(0.53322345, 0.373397857, -4.03579065e-07, -8.32836911e-10, 0.997565448, -0.0697367489, 1.32148736e-09, 0.0697367489, 0.997565448, 1, 7.38653139e-10, -1.37634937e-09)
8602
Weld338.Parent = Part292
8603
Weld338.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8604
Weld338.C1 = CFrame.new(-9.81253652e-06, 0.132794693, 0.400390744, 3.829842e-10, 0.0697392747, 0.997565329, -4.07727963e-10, 0.997565329, -0.0697392747, -1, -3.80026233e-10, 4.10486423e-10)
8605
Weld339.Parent = Part292
8606
Weld339.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8607
Weld339.C1 = CFrame.new(2.00291402e-06, -0.400390506, -0.132815465, 3.90647487e-10, 0.0697226226, 0.997566521, -1, -3.79534459e-10, 4.18127227e-10, 4.07763739e-10, -0.997566402, 0.0697226301)
8608
Weld340.Parent = Part292
8609
Weld340.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8610
Weld340.C1 = CFrame.new(1.20755828e-07, 4.99412226e-06, 0.132797584, -1, -1.82865389e-10, 3.9878062e-10, 3.85058263e-10, 0.0697321221, 0.997565806, -2.10228071e-10, 0.997565746, -0.0697321221)
8611
Weld341.Parent = Part292
8612
Weld341.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8613
Weld341.C1 = CFrame.new(4.74962835e-05, -0.400390744, 0.933588088, 3.49388324e-10, 0.0697333813, 0.997565746, 1, 2.20712254e-10, -3.65669495e-10, -2.45674314e-10, 0.997565746, -0.0697333887)
8614
Weld342.Parent = Part292
8615
Weld342.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8616
Weld342.C1 = CFrame.new(2.00708268e-06, -0.933598638, 0.400390506, 3.70557002e-10, 0.0697226226, 0.997566521, 4.07184675e-10, -0.997566402, 0.0697226301, 1, 3.80357551e-10, -3.98045263e-10)
8617
Weld343.Parent = Part292
8618
Weld343.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8619
Weld343.C1 = CFrame.new(-1.0609989e-07, -0.373298496, -0.533198833, 1, 7.61074016e-12, -4.54308563e-10, 4.52671733e-10, 0.0697359443, 0.997565567, 3.92738446e-11, -0.997565567, 0.0697359443)
8620
Weld344.Parent = Part292
8621
Weld344.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8622
Weld344.C1 = CFrame.new(-0.533206105, 3.25288311e-05, -0.400390536, 4.0660561e-10, -0.997566402, 0.0697226301, 3.50466517e-10, 0.0697226226, 0.997566521, -1, -3.8118067e-10, 3.77963272e-10)
8623
Weld345.Parent = Part292
8624
Weld345.C0 = CFrame.new(-3.95431243e-07, 7.30769489e-06, 0, -3.92543285e-21, 0.997566223, -0.069725059, 1.26768054e-23, 0.069725059, 0.997566223, 1, 3.91499535e-21, -2.86346992e-22)
8625
Weld345.C1 = CFrame.new(-6.55530812e-08, 2.72896377e-05, -0.933581114, 1, 1.40101444e-10, 2.20685789e-10, 2.3550692e-10, 0.0697202981, 0.997566581, 3.36916911e-10, -0.997567058, 0.0697131678)
8626
Weld346.Parent = Part292
8627
Weld346.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8628
Weld346.C1 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8629
Weld347.Parent = Part292
8630
Weld347.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8631
Weld347.C1 = CFrame.new(0.5332008, 8.52442608e-05, -0.399536431, -1.4692636e-09, 0.000846330251, -0.999999642, 2.67755484e-09, 0.999999702, 0.000846330193, 1, -2.67631073e-09, -1.47152912e-09)
8632
Weld348.Parent = Part292
8633
Weld348.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8634
Weld348.C1 = CFrame.new(-3.54604822e-07, 7.10747918e-05, -0.533170998, 1, -2.69418865e-09, -1.24858379e-09, 2.69523404e-09, 0.999999702, 0.000838225707, 1.24632515e-09, -0.000838225707, 0.999999642)
8635
Weld349.Parent = Part292
8636
Weld349.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8637
Weld349.C1 = CFrame.new(0.533231318, 0.373406291, -2.83906502e-07, -1.47042167e-09, 0.000846330251, -0.999999642, 2.71773581e-09, 0.999999702, 0.000846330193, 1, -2.71649037e-09, -1.47272128e-09)
8638
Weld350.Parent = Part292
8639
Weld350.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8640
Weld350.C1 = CFrame.new(5.93345294e-06, 0.132752568, 0.400390923, 2.71005463e-09, 0.999999702, 0.000829644501, -1.47042467e-09, 0.000829644501, -0.999999642, -1, 2.70883382e-09, 1.47267265e-09)
8641
Weld351.Parent = Part292
8642
Weld351.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8643
Weld351.C1 = CFrame.new(8.4651374e-06, -0.400390327, -0.132810175, 2.71773581e-09, 0.999999702, 0.000846330193, -1, 2.71649037e-09, 1.47272128e-09, 1.47042167e-09, -0.000846330251, 0.999999642)
8644
Weld352.Parent = Part292
8645
Weld352.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8646
Weld352.C1 = CFrame.new(3.62762336e-07, 2.95230384e-05, 0.132817402, -1, 2.71106715e-09, 1.27517807e-09, 2.71213629e-09, 0.999999702, 0.000839179265, -1.27290256e-09, 0.000839179265, -0.999999642)
8647
Weld353.Parent = Part292
8648
Weld353.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8649
Weld353.C1 = CFrame.new(0.000142092002, -0.400391012, 0.93360728, 2.67646505e-09, 0.999999702, 0.000840450521, 1, -2.6753646e-09, -1.31059485e-09, -1.30834588e-09, 0.000840450521, -0.999999642)
8650
Weld354.Parent = Part292
8651
Weld354.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8652
Weld354.C1 = CFrame.new(0.000101452555, -0.933591425, 0.400390327, 2.69764522e-09, 0.999999702, 0.000846330193, 1.46984258e-09, -0.000846330251, 0.999999642, 1, -2.69640044e-09, -1.47212509e-09)
8653
Weld355.Parent = Part292
8654
Weld355.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8655
Weld355.C1 = CFrame.new(-3.94687646e-07, -0.373256177, -0.533165812, 1, -2.77882695e-09, -1.10427789e-09, 2.77974577e-09, 0.999999702, 0.000832981663, 1.10196274e-09, -0.000832981663, 0.999999642)
8656
Weld356.Parent = Part292
8657
Weld356.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8658
Weld356.C1 = CFrame.new(-0.5332008, 8.52442608e-05, -0.400390327, 1.4692636e-09, -0.000846330251, 0.999999642, 2.67755484e-09, 0.999999702, 0.000846330193, -1, 2.67631073e-09, 1.47152912e-09)
8659
Weld357.Parent = Part292
8660
Weld357.C0 = CFrame.new(1.14122267e-05, 2.31042439e-08, -1.81467669e-07, -6.37624675e-10, 0.000817726715, -0.999999762, 1.396256e-09, 0.999999702, 0.000817726832, 1, -1.39573431e-09, -6.38766207e-10)
8661
Weld357.C1 = CFrame.new(-2.17958132e-08, 2.16124681e-05, -0.933588922, 1, -7.00479896e-10, -5.50027579e-10, 7.00928149e-10, 0.999999702, 0.000815343345, 5.49456258e-10, -0.000815343345, 0.999999702)
8662
Weld358.Parent = Part292
8663
Weld358.C0 = CFrame.new(2.73681553e-06, -7.9203943e-08, -1.32984567e-07, -1, 4.29049651e-05, 1.27289645e-09, 4.29049651e-05, 1, -2.71216405e-09, -1.27303168e-09, -2.7121092e-09, -1)
8664
Weld358.C1 = CFrame.new(2.73681553e-06, -7.9203943e-08, -1.32984567e-07, -1, 4.29049651e-05, 1.27289645e-09, 4.29049651e-05, 1, -2.71216405e-09, -1.27303168e-09, -2.7121092e-09, -1)
8665
Weld358.Part0 = Part292
8666
Weld358.Part1 = Part292
8667
Weld359.Parent = Part292
8668
Weld359.C0 = CFrame.new(2.58500165e-07, 1.47510104e-06, 9.1201764e-07, -0.0304826926, -0.998224854, 0.0511664115, -0.997482359, 0.027100971, -0.0655324385, 0.0640294328, -0.0530351698, -0.996537805)
8669
Weld359.C1 = CFrame.new(2.58500165e-07, 1.47510104e-06, 9.1201764e-07, -0.0304826926, -0.998224854, 0.0511664115, -0.997482359, 0.027100971, -0.0655324385, 0.0640294328, -0.0530351698, -0.996537805)
8670
Weld359.Part0 = Part292
8671
Weld359.Part1 = Part292
8672
Weld360.Parent = Part292
8673
Weld360.C0 = CFrame.new(5.81937775e-06, 3.66444342e-09, 4.0117655e-07, -1, 1.83190277e-05, 1.62574338e-07, 1.82680233e-05, 1, -5.43802935e-06, -1.05692934e-07, -5.39845632e-06, -1.00000012)
8674
Weld360.C1 = CFrame.new(5.81937775e-06, 3.66444342e-09, 4.0117655e-07, -1, 1.83190277e-05, 1.62574338e-07, 1.82680233e-05, 1, -5.43802935e-06, -1.05692934e-07, -5.39845632e-06, -1.00000012)
8675
Weld360.Part0 = Part292
8676
Weld360.Part1 = Part292
8677
Weld361.Parent = Part292
8678
Weld361.C0 = CFrame.new(5.19993637e-06, -2.07580495e-08, -4.3925632e-09, -0.99999994, -7.85102384e-06, 1.626222e-07, -7.9020283e-06, 1, -7.75445642e-06, -1.05581343e-07, -7.71488703e-06, -1.00000012)
8679
Weld361.C1 = CFrame.new(5.19993637e-06, -2.07580495e-08, -4.3925632e-09, -0.99999994, -7.85102384e-06, 1.626222e-07, -7.9020283e-06, 1, -7.75445642e-06, -1.05581343e-07, -7.71488703e-06, -1.00000012)
8680
Weld361.Part0 = Part292
8681
Weld361.Part1 = Part292
8682
Weld362.Parent = Part292
8683
Weld362.C0 = CFrame.new(-4.51719643e-07, 1.87397453e-09, -3.76758157e-06, -0.999999821, -3.77100787e-06, -6.00899241e-09, -3.82201188e-06, 1, -4.80523522e-06, 6.30072776e-08, -4.76566538e-06, -1.00000012)
8684
Weld362.C1 = CFrame.new(-4.51719643e-07, 1.87397453e-09, -3.76758157e-06, -0.999999821, -3.77100787e-06, -6.00899241e-09, -3.82201188e-06, 1, -4.80523522e-06, 6.30072776e-08, -4.76566538e-06, -1.00000012)
8685
Weld362.Part0 = Part292
8686
Weld362.Part1 = Part292
8687
Weld363.Parent = Part292
8688
Weld363.C0 = CFrame.new(1.26816673e-07, -2.34453221e-08, 5.90223294e-07, -0.999999762, -1.85550198e-05, -5.83594151e-09, -1.86060279e-05, 1, -8.11173049e-06, 6.29660306e-08, -8.07215929e-06, -1.00000012)
8689
Weld363.C1 = CFrame.new(1.26816673e-07, -2.34453221e-08, 5.90223294e-07, -0.999999762, -1.85550198e-05, -5.83594151e-09, -1.86060279e-05, 1, -8.11173049e-06, 6.29660306e-08, -8.07215929e-06, -1.00000012)
8690
Weld363.Part0 = Part292
8691
Weld363.Part1 = Part292
8692
Weld364.Parent = Part292
8693
Weld364.C0 = CFrame.new(8.01678993e-07, -1.1426212e-08, -1.10775409e-06, -0.999999702, -1.59489209e-05, -5.85270321e-09, -1.5999929e-05, 1, -9.83655082e-06, 6.29892654e-08, -9.79697961e-06, -1.00000012)
8694
Weld364.C1 = CFrame.new(8.01678993e-07, -1.1426212e-08, -1.10775409e-06, -0.999999702, -1.59489209e-05, -5.85270321e-09, -1.5999929e-05, 1, -9.83655082e-06, 6.29892654e-08, -9.79697961e-06, -1.00000012)
8695
Weld364.Part0 = Part292
8696
Weld364.Part1 = Part292
8697
Weld365.Parent = Part292
8698
Weld365.C0 = CFrame.new(1.07855703e-06, -1.98978043e-08, -4.36352309e-07, -0.999999642, -1.87142232e-05, -3.42939558e-07, -1.87652277e-05, 1, -1.32089617e-05, 4.00166499e-07, -1.31693841e-05, -1.00000012)
8699
Weld365.C1 = CFrame.new(1.07855703e-06, -1.98978043e-08, -4.36352309e-07, -0.999999642, -1.87142232e-05, -3.42939558e-07, -1.87652277e-05, 1, -1.32089617e-05, 4.00166499e-07, -1.31693841e-05, -1.00000012)
8700
Weld365.Part0 = Part292
8701
Weld365.Part1 = Part292
8702
Weld366.Parent = Part292
8703
Weld366.C0 = CFrame.new(-2.96131202e-06, 1.15200116e-08, -5.08313747e-08, -0.999999583, -2.1935306e-05, -3.42888029e-07, -2.19863105e-05, 1, -1.28208176e-05, 4.00148849e-07, -1.27812382e-05, -1.00000012)
8704
Weld366.C1 = CFrame.new(-2.96131202e-06, 1.15200116e-08, -5.08313747e-08, -0.999999583, -2.1935306e-05, -3.42888029e-07, -2.19863105e-05, 1, -1.28208176e-05, 4.00148849e-07, -1.27812382e-05, -1.00000012)
8705
Weld366.Part0 = Part292
8706
Weld366.Part1 = Part292
8707
Part367.Name = "BoltBack"
8708
Part367.Parent = Tool0
8709
Part367.BrickColor = BrickColor.new("Really black")
8710
Part367.Transparency = 1
8711
Part367.Rotation = Vector3.new(179.979996, 0, -180)
8712
Part367.Anchored = true
8713
Part367.CanCollide = false
8714
Part367.FormFactor = Enum.FormFactor.Custom
8715
Part367.Size = Vector3.new(0.200000003, 0.200000003, 0.200000003)
8716
Part367.CFrame = CFrame.new(1436.87451, 48.6733093, -1310.87573, -1, 0, 0, 0, 1, -0.000345999986, 0, -0.000345999986, -1)
8717
Part367.BottomSurface = Enum.SurfaceType.Smooth
8718
Part367.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
8719
Part367.TopSurface = Enum.SurfaceType.Smooth
8720
Part367.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
8721
Part367.Position = Vector3.new(1436.87451, 48.6733093, -1310.87573)
8722
Part367.Orientation = Vector3.new(0.0199999996, 180, 0)
8723
Part367.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
8724
Sound368.Name = "FireSound"
8725
Sound368.Parent = Part367
8726
Sound368.SoundId = "rbxassetid://135039581"
8727
Sound368.Volume = 1
8728
Sound369.Name = "ReloadSound"
8729
Sound369.Parent = Part367
8730
Sound369.SoundId = "rbxassetid://255061162"
8731
Sound369.Volume = 1
8732
Part370.Name = "Bolt"
8733
Part370.Parent = Tool0
8734
Part370.BrickColor = BrickColor.new("Really black")
8735
Part370.Transparency = 1
8736
Part370.Rotation = Vector3.new(179.979996, 0, -180)
8737
Part370.Anchored = true
8738
Part370.CanCollide = false
8739
Part370.FormFactor = Enum.FormFactor.Custom
8740
Part370.Size = Vector3.new(0.200000003, 0.200000003, 0.200000003)
8741
Part370.CFrame = CFrame.new(1436.87451, 48.6733093, -1310.87573, -1, 0, 0, 0, 1, -0.000345999986, 0, -0.000345999986, -1)
8742
Part370.BottomSurface = Enum.SurfaceType.Smooth
8743
Part370.LeftSurface = Enum.SurfaceType.SmoothNoOutlines
8744
Part370.TopSurface = Enum.SurfaceType.Smooth
8745
Part370.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
8746
Part370.Position = Vector3.new(1436.87451, 48.6733093, -1310.87573)
8747
Part370.Orientation = Vector3.new(0.0199999996, 180, 0)
8748
Part370.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
8749
Sound371.Name = "FireSound"
8750
Sound371.Parent = Part370
8751
Sound371.SoundId = "rbxassetid://135039581"
8752
Sound371.Volume = 1
8753
Sound372.Name = "ReloadSound"
8754
Sound372.Parent = Part370
8755
Sound372.SoundId = "rbxassetid://255061162"
8756
Sound372.Volume = 1
8757
Model373.Name = "Nigger"
8758
Model373.Parent = Tool0
8759
Part374.Name = "Right Leg"
8760
Part374.Parent = Model373
8761
Part374.BrickColor = BrickColor.new("Reddish brown")
8762
Part374.Rotation = Vector3.new(0, -90, 0)
8763
Part374.Anchored = true
8764
Part374.CanCollide = false
8765
Part374.FormFactor = Enum.FormFactor.Symmetric
8766
Part374.Size = Vector3.new(0.266815305, 0.53363061, 0.266815305)
8767
Part374.CFrame = CFrame.new(1434.75476, 44.2668762, -1310.34082, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8768
Part374.BottomSurface = Enum.SurfaceType.Smooth
8769
Part374.Color = Color3.new(0.411765, 0.25098, 0.156863)
8770
Part374.Position = Vector3.new(1434.75476, 44.2668762, -1310.34082)
8771
Part374.Orientation = Vector3.new(0, -90, 0)
8772
Part374.Color = Color3.new(0.411765, 0.25098, 0.156863)
8773
Decal375.Parent = Part374
8774
Decal375.Texture = "http://www.roblox.com/asset/?id=513989292"
8775
Part376.Name = "Torso"
8776
Part376.Parent = Model373
8777
Part376.BrickColor = BrickColor.new("Reddish brown")
8778
Part376.Rotation = Vector3.new(0, -90, 0)
8779
Part376.Anchored = true
8780
Part376.FormFactor = Enum.FormFactor.Symmetric
8781
Part376.Size = Vector3.new(0.53363061, 0.53363061, 0.266815305)
8782
Part376.CFrame = CFrame.new(1434.75476, 44.8004494, -1310.47424, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8783
Part376.LeftSurface = Enum.SurfaceType.Weld
8784
Part376.RightSurface = Enum.SurfaceType.Weld
8785
Part376.Color = Color3.new(0.411765, 0.25098, 0.156863)
8786
Part376.Position = Vector3.new(1434.75476, 44.8004494, -1310.47424)
8787
Part376.Orientation = Vector3.new(0, -90, 0)
8788
Part376.Color = Color3.new(0.411765, 0.25098, 0.156863)
8789
Decal377.Name = "roblox"
8790
Decal377.Parent = Part376
8791
Motor378.Name = "Right Shoulder"
8792
Motor378.Parent = Part376
8793
Motor378.C0 = CFrame.new(0.266815305, 0.133407652, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
8794
Motor378.C1 = CFrame.new(-0.133407652, 0.133407652, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
8795
Motor378.Part0 = Part376
8796
Motor378.Part1 = Part383
8797
Motor378.MaxVelocity = 0.5
8798
Motor379.Name = "Left Shoulder"
8799
Motor379.Parent = Part376
8800
Motor379.C0 = CFrame.new(-0.266815305, 0.133407652, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8801
Motor379.C1 = CFrame.new(0.133407652, 0.133407652, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8802
Motor379.Part0 = Part376
8803
Motor379.Part1 = Part385
8804
Motor379.MaxVelocity = 0.5
8805
Motor380.Name = "Right Hip"
8806
Motor380.Parent = Part376
8807
Motor380.C0 = CFrame.new(0.266815305, -0.266815305, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
8808
Motor380.C1 = CFrame.new(0.133407652, 0.266815305, 0, 0, 0, 1, 0, 1, -0, -1, 0, 0)
8809
Motor380.Part0 = Part376
8810
Motor380.Part1 = Part374
8811
Motor380.MaxVelocity = 0.10000000149012
8812
Motor381.Name = "Left Hip"
8813
Motor381.Parent = Part376
8814
Motor381.C0 = CFrame.new(-0.266815305, -0.266815305, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8815
Motor381.C1 = CFrame.new(-0.133407652, 0.266815305, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8816
Motor381.Part0 = Part376
8817
Motor381.Part1 = Part384
8818
Motor381.MaxVelocity = 0.10000000149012
8819
Motor382.Name = "Neck"
8820
Motor382.Parent = Part376
8821
Motor382.C0 = CFrame.new(0, 0.266815305, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0)
8822
Motor382.C1 = CFrame.new(0, -0.133407652, 0, -1, 0, 0, 0, 0, 1, 0, 1, -0)
8823
Motor382.Part0 = Part376
8824
Motor382.Part1 = Part386
8825
Motor382.MaxVelocity = 0.10000000149012
8826
Part383.Name = "Right Arm"
8827
Part383.Parent = Model373
8828
Part383.BrickColor = BrickColor.new("Reddish brown")
8829
Part383.Rotation = Vector3.new(0, -90, 0)
8830
Part383.Anchored = true
8831
Part383.CanCollide = false
8832
Part383.FormFactor = Enum.FormFactor.Symmetric
8833
Part383.Size = Vector3.new(0.266815305, 0.53363061, 0.266815305)
8834
Part383.CFrame = CFrame.new(1434.75476, 44.8004532, -1310.07397, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8835
Part383.Color = Color3.new(0.411765, 0.25098, 0.156863)
8836
Part383.Position = Vector3.new(1434.75476, 44.8004532, -1310.07397)
8837
Part383.Orientation = Vector3.new(0, -90, 0)
8838
Part383.Color = Color3.new(0.411765, 0.25098, 0.156863)
8839
Part384.Name = "Left Leg"
8840
Part384.Parent = Model373
8841
Part384.BrickColor = BrickColor.new("Reddish brown")
8842
Part384.Rotation = Vector3.new(0, -90, 0)
8843
Part384.Anchored = true
8844
Part384.CanCollide = false
8845
Part384.FormFactor = Enum.FormFactor.Symmetric
8846
Part384.Size = Vector3.new(0.266815305, 0.53363061, 0.266815305)
8847
Part384.CFrame = CFrame.new(1434.75476, 44.2668228, -1310.60767, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8848
Part384.BottomSurface = Enum.SurfaceType.Smooth
8849
Part384.Color = Color3.new(0.411765, 0.25098, 0.156863)
8850
Part384.Position = Vector3.new(1434.75476, 44.2668228, -1310.60767)
8851
Part384.Orientation = Vector3.new(0, -90, 0)
8852
Part384.Color = Color3.new(0.411765, 0.25098, 0.156863)
8853
Part385.Name = "Left Arm"
8854
Part385.Parent = Model373
8855
Part385.BrickColor = BrickColor.new("Reddish brown")
8856
Part385.Rotation = Vector3.new(0, -90, 0)
8857
Part385.Anchored = true
8858
Part385.CanCollide = false
8859
Part385.FormFactor = Enum.FormFactor.Symmetric
8860
Part385.Size = Vector3.new(0.266815305, 0.53363061, 0.266815305)
8861
Part385.CFrame = CFrame.new(1434.75476, 44.8004341, -1310.87451, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8862
Part385.Color = Color3.new(0.411765, 0.25098, 0.156863)
8863
Part385.Position = Vector3.new(1434.75476, 44.8004341, -1310.87451)
8864
Part385.Orientation = Vector3.new(0, -90, 0)
8865
Part385.Color = Color3.new(0.411765, 0.25098, 0.156863)
8866
Part386.Name = "Head"
8867
Part386.Parent = Model373
8868
Part386.BrickColor = BrickColor.new("Reddish brown")
8869
Part386.Rotation = Vector3.new(0, -90, 0)
8870
Part386.Anchored = true
8871
Part386.FormFactor = Enum.FormFactor.Symmetric
8872
Part386.Size = Vector3.new(0.53363061, 0.266815305, 0.266815305)
8873
Part386.CFrame = CFrame.new(1434.75476, 45.2006721, -1310.47424, 0, 0, -1, 0, 1, 0, 1, 0, 0)
8874
Part386.TopSurface = Enum.SurfaceType.Smooth
8875
Part386.Color = Color3.new(0.411765, 0.25098, 0.156863)
8876
Part386.Position = Vector3.new(1434.75476, 45.2006721, -1310.47424)
8877
Part386.Orientation = Vector3.new(0, -90, 0)
8878
Part386.Color = Color3.new(0.411765, 0.25098, 0.156863)
8879
SpecialMesh387.Parent = Part386
8880
SpecialMesh387.Scale = Vector3.new(1.25, 1.25, 1.25)
8881
SpecialMesh387.Scale = Vector3.new(1.25, 1.25, 1.25)
8882
Decal388.Parent = Part386
8883
Decal388.Texture = "http://www.roblox.com/asset/?id=42030236"
8884
Decal389.Parent = Part386
8885
Decal389.Texture = "http://www.roblox.com/asset/?id=513989292"
8886
Humanoid390.Parent = Model373
8887
Humanoid390.RightLeg = Part374
8888
Humanoid390.LeftLeg = Part384
8889
Humanoid390.Torso = Part376
8890
Humanoid390.MaxHealth = 0
8891
Script391.Name = "Humaniod"
8892
Script391.Parent = Model373
8893
table.insert(cors,sandbox(Script391,function()
8894
local Model = script.Parent
8895
local Backup = Model:clone()
8896
8897
function Respawn()
8898
	Model:breakJoints()
8899
8900
	wait(5)
8901
8902
	script.Parent = Model.Parent
8903
8904
	Model:remove()
8905
	Model = Backup:clone()
8906
	Model.Parent = script.Parent
8907
	Model:makeJoints()
8908
8909
	script:remove()
8910
end
8911
8912
Model.Humanoid.Died:connect(Respawn)
8913
8914
function waitForChild(parent, childName)
8915
	local child = parent:findFirstChild(childName)
8916
8917
	if child then
8918
		return child
8919
	end
8920
8921
	while true do
8922
		print(childName)
8923
8924
		child = parent.ChildAdded:wait()
8925
8926
		if child.Name==childName then
8927
			return child
8928
		end
8929
	end
8930
end
8931
8932
-- declarations
8933
8934
local Figure = script.Parent
8935
local Head = waitForChild(Figure, "Head")
8936
local Humanoid = waitForChild(Figure, "Humanoid")
8937
8938
Figure.PrimaryPart = Head
8939
8940
-- ANIMATION
8941
8942
function Joint(Name, Part0, Part1, C0, C1, MaxVelocity)
8943
	local Motor = Instance.new("Motor")
8944
8945
	Motor.C0 = C0
8946
	Motor.C1 = C1
8947
	Motor.MaxVelocity = MaxVelocity
8948
	Motor.Name = Name
8949
	Motor.Parent = Part0
8950
	Motor.Part0 = Part0
8951
	Motor.Part1 = Part1
8952
end
8953
8954
-- declarations
8955
8956
local Torso = waitForChild(Figure, "Torso")
8957
local LeftArm = waitForChild(Figure, "Left Arm")
8958
local LeftLeg = waitForChild(Figure, "Left Leg")
8959
local RightArm = waitForChild(Figure, "Right Arm")
8960
local RightLeg = waitForChild(Figure, "Right Leg")
8961
8962
local Joints = {
8963
{"Right Shoulder", Torso, RightArm, CFrame.new(1, 0.5, 0, 0, 0, 1, 0, 1, 0, -1, -0, -0), CFrame.new(-0.5, 0.5, 0, 0, 0, 1, 0, 1, 0, -1, -0, -0), 0.5},
8964
{"Left Shoulder", Torso, LeftArm, CFrame.new(-1, 0.5, 0, -0, -0, -1, 0, 1, 0, 1, 0, 0), CFrame.new(0.5, 0.5, 0, -0, -0, -1, 0, 1, 0, 1, 0, 0), 0.5},
8965
{"Right Hip", Torso, RightLeg, CFrame.new(1, -1, 0, 0, 0, 1, 0, 1, 0, -1, -0, -0), CFrame.new(0.5, 1, 0, 0, 0, 1, 0, 1, 0, -1, -0, -0), 0.10000000149012},
8966
{"Left Hip", Torso, LeftLeg, CFrame.new(-1, -1, 0, -0, -0, -1, 0, 1, 0, 1, 0, 0), CFrame.new(-0.5, 1, 0, -0, -0, -1, 0, 1, 0, 1, 0, 0), 0.10000000149012},
8967
{"Neck", Torso, Head, CFrame.new(0, 1, 0, -1, -0, -0, 0, 0, 1, 0, 1, 0), CFrame.new(0, -0.5, 0, -1, -0, -0, 0, 0, 1, 0, 1, 0), 0.10000000149012}}
8968
8969
Torso:breakJoints()
8970
8971
for _, v in pairs(Joints) do
8972
	Joint(unpack(v))
8973
end
8974
8975
local RightShoulder = waitForChild(Torso, "Right Shoulder")
8976
local LeftShoulder = waitForChild(Torso, "Left Shoulder")
8977
local RightHip = waitForChild(Torso, "Right Hip")
8978
local LeftHip = waitForChild(Torso, "Left Hip")
8979
local Neck = waitForChild(Torso, "Neck")
8980
local Humanoid = waitForChild(Figure, "Humanoid")
8981
local pose = "Standing"
8982
8983
local toolAnim = "None"
8984
local toolAnimTime = 0
8985
8986
-- functions
8987
8988
function onRunning(speed)
8989
	if speed>0 then
8990
		pose = "Running"
8991
	else
8992
		pose = "Standing"
8993
	end
8994
end
8995
8996
function onDied()
8997
	pose = "Dead"
8998
end
8999
9000
function onJumping()
9001
	pose = "Jumping"
9002
end
9003
9004
function onClimbing()
9005
	pose = "Climbing"
9006
end
9007
9008
function onGettingUp()
9009
	pose = "GettingUp"
9010
end
9011
9012
function onFreeFall()
9013
	pose = "FreeFall"
9014
end
9015
9016
function onFallingDown()
9017
	pose = "FallingDown"
9018
end
9019
9020
function onSeated()
9021
	pose = "Seated"
9022
end
9023
9024
function onPlatformStanding()
9025
	pose = "PlatformStanding"
9026
end
9027
9028
function moveJump()
9029
	RightShoulder.MaxVelocity = 0.5
9030
	LeftShoulder.MaxVelocity = 0.5
9031
	RightShoulder.DesiredAngle = 3.14
9032
	LeftShoulder.DesiredAngle = -3.14
9033
	RightHip.DesiredAngle = 0
9034
	LeftHip.DesiredAngle = 0
9035
end
9036
9037
9038
-- same as jump for now
9039
9040
function moveFreeFall()
9041
	RightShoulder.MaxVelocity = 0.5
9042
	LeftShoulder.MaxVelocity = 0.5
9043
	RightShoulder.DesiredAngle = 3.14
9044
	LeftShoulder.DesiredAngle = -3.14
9045
	RightHip.DesiredAngle = 0
9046
	LeftHip.DesiredAngle = 0
9047
end
9048
9049
function moveSit()
9050
	RightShoulder.MaxVelocity = 0.15
9051
	LeftShoulder.MaxVelocity = 0.15
9052
	RightShoulder.DesiredAngle = 3.14 /2
9053
	LeftShoulder.DesiredAngle = -3.14 /2
9054
	RightHip.DesiredAngle = 3.14 /2
9055
	LeftHip.DesiredAngle = -3.14 /2
9056
end
9057
9058
function getTool()	
9059
	for _, kid in ipairs(Figure:GetChildren()) do
9060
		if kid.className == "Tool" then return kid end
9061
	end
9062
	return nil
9063
end
9064
9065
function getToolAnim(tool)
9066
	for _, c in ipairs(tool:GetChildren()) do
9067
		if c.Name == "toolanim" and c.className == "StringValue" then
9068
			return c
9069
		end
9070
	end
9071
	return nil
9072
end
9073
9074
function animateTool()
9075
	
9076
	if (toolAnim == "None") then
9077
		RightShoulder.DesiredAngle = 1.57
9078
		return
9079
	end
9080
9081
	if (toolAnim == "Slash") then
9082
		RightShoulder.MaxVelocity = 0.5
9083
		RightShoulder.DesiredAngle = 0
9084
		return
9085
	end
9086
9087
	if (toolAnim == "Lunge") then
9088
		RightShoulder.MaxVelocity = 0.5
9089
		LeftShoulder.MaxVelocity = 0.5
9090
		RightHip.MaxVelocity = 0.5
9091
		LeftHip.MaxVelocity = 0.5
9092
		RightShoulder.DesiredAngle = 1.57
9093
		LeftShoulder.DesiredAngle = 1.0
9094
		RightHip.DesiredAngle = 1.57
9095
		LeftHip.DesiredAngle = 1.0
9096
		return
9097
	end
9098
end
9099
9100
function move(time)
9101
	local amplitude
9102
	local frequency
9103
  
9104
	if (pose == "Jumping") then
9105
		moveJump()
9106
		return
9107
	end
9108
9109
	if (pose == "FreeFall") then
9110
		moveFreeFall()
9111
		return
9112
	end
9113
 
9114
	if (pose == "Seated") then
9115
		moveSit()
9116
		return
9117
	end
9118
9119
	local climbFudge = 0
9120
	
9121
	if (pose == "Running") then
9122
		RightShoulder.MaxVelocity = 0.15
9123
		LeftShoulder.MaxVelocity = 0.15
9124
		amplitude = 1
9125
		frequency = 9
9126
	elseif (pose == "Climbing") then
9127
		RightShoulder.MaxVelocity = 0.5 
9128
		LeftShoulder.MaxVelocity = 0.5
9129
		amplitude = 1
9130
		frequency = 9
9131
		climbFudge = 3.14
9132
	else
9133
		amplitude = 0.1
9134
		frequency = 1
9135
	end
9136
9137
	desiredAngle = amplitude * math.sin(time*frequency)
9138
9139
	RightShoulder.DesiredAngle = desiredAngle + climbFudge
9140
	LeftShoulder.DesiredAngle = desiredAngle - climbFudge
9141
	RightHip.DesiredAngle = -desiredAngle
9142
	LeftHip.DesiredAngle = -desiredAngle
9143
9144
9145
	local tool = getTool()
9146
9147
	if tool then
9148
	
9149
		animStringValueObject = getToolAnim(tool)
9150
9151
		if animStringValueObject then
9152
			toolAnim = animStringValueObject.Value
9153
			-- message recieved, delete StringValue
9154
			animStringValueObject.Parent = nil
9155
			toolAnimTime = time + .3
9156
		end
9157
9158
		if time > toolAnimTime then
9159
			toolAnimTime = 0
9160
			toolAnim = "None"
9161
		end
9162
9163
		animateTool()
9164
9165
		
9166
	else
9167
		toolAnim = "None"
9168
		toolAnimTime = 0
9169
	end
9170
end
9171
9172
9173
-- connect events
9174
9175
Humanoid.Died:connect(onDied)
9176
Humanoid.Running:connect(onRunning)
9177
Humanoid.Jumping:connect(onJumping)
9178
Humanoid.Climbing:connect(onClimbing)
9179
Humanoid.GettingUp:connect(onGettingUp)
9180
Humanoid.FreeFalling:connect(onFreeFall)
9181
Humanoid.FallingDown:connect(onFallingDown)
9182
Humanoid.Seated:connect(onSeated)
9183
Humanoid.PlatformStanding:connect(onPlatformStanding)
9184
9185
-- util
9186
9187
function waitForChild(parent, childName)
9188
	local child = parent:findFirstChild(childName)
9189
	if child then return child end
9190
	while true do
9191
		child = parent.ChildAdded:wait()
9192
		if child.Name==childName then return child end
9193
	end
9194
end
9195
9196
function newSound(id)
9197
	local sound = Instance.new("Sound")
9198
	sound.SoundId = id
9199
	sound.archivable = false
9200
	sound.Parent = script.Parent.Head
9201
	return sound
9202
end
9203
9204
-- declarations
9205
9206
local sDied = newSound("rbxasset://sounds/uuhhh.wav")
9207
local sFallingDown = newSound("rbxasset://sounds/splat.wav")
9208
local sFreeFalling = newSound("rbxasset://sounds/swoosh.wav")
9209
local sGettingUp = newSound("rbxasset://sounds/hit.wav")
9210
local sJumping = newSound("rbxasset://sounds/button.wav")
9211
local sRunning = newSound("rbxasset://sounds/bfsl-minifigfoots1.mp3")
9212
sRunning.Looped = true
9213
9214
-- functions
9215
9216
function onSoundDied()
9217
	sDied:Play()
9218
end
9219
9220
function onState(state, sound)
9221
	if state then
9222
		sound:Play()
9223
	else
9224
		sound:Pause()
9225
	end
9226
end
9227
9228
function onSoundRunning(speed)
9229
	if speed>0 then
9230
		sRunning:Play()
9231
	else
9232
		sRunning:Pause()
9233
	end
9234
end
9235
9236
-- connect up
9237
9238
Humanoid.Died:connect(onSoundDied)
9239
Humanoid.Running:connect(onSoundRunning)
9240
Humanoid.Jumping:connect(function(state) onState(state, sJumping) end)
9241
Humanoid.GettingUp:connect(function(state) onState(state, sGettingUp) end)
9242
Humanoid.FreeFalling:connect(function(state) onState(state, sFreeFalling) end)
9243
Humanoid.FallingDown:connect(function(state) onState(state, sFallingDown) end)
9244
9245
local runService = game:service("RunService");
9246
9247
delay(0, function() 
9248
	while Figure.Parent~=nil do
9249
		local _, time = wait(0.1)
9250
		move(time)
9251
	end
9252
end)
9253
9254
-- regeneration
9255
while true do
9256
	local s = wait(1)
9257
	local health = Humanoid.Health
9258
9259
	if health > 0 and health < Humanoid.MaxHealth then
9260
		health = health + 0.01 * s * Humanoid.MaxHealth
9261
9262
		if health * 1.05 < Humanoid.MaxHealth then
9263
			Humanoid.Health = health
9264
		else
9265
			Humanoid.Health = Humanoid.MaxHealth
9266
		end
9267
	end
9268
end
9269
end))
9270
Shirt392.Name = "Shirt"
9271
Shirt392.Parent = Model373
9272
Shirt392.ShirtTemplate = "http://www.roblox.com/asset/?id=22746098"
9273
Pants393.Parent = Model373
9274
Pants393.PantsTemplate = "http://www.roblox.com/asset/?id=8173404"
9275
Part394.Name = "hanger"
9276
Part394.Parent = Model373
9277
Part394.Material = Enum.Material.Fabric
9278
Part394.BrickColor = BrickColor.new("Brick yellow")
9279
Part394.Rotation = Vector3.new(0, 90, 0)
9280
Part394.Anchored = true
9281
Part394.Size = Vector3.new(0.0533630624, 3.41790414, 0.0827127546)
9282
Part394.CFrame = CFrame.new(1434.76477, 47.0219231, -1310.42761, 0, 0, 1, 0, 1, 0, -1, 0, 0)
9283
Part394.Color = Color3.new(0.843137, 0.772549, 0.603922)
9284
Part394.Position = Vector3.new(1434.76477, 47.0219231, -1310.42761)
9285
Part394.Orientation = Vector3.new(0, 90, 0)
9286
Part394.Color = Color3.new(0.843137, 0.772549, 0.603922)
9287
for i,v in pairs(mas:GetChildren()) do
9288
	v.Parent = game:GetService("Players").LocalPlayer.Backpack
9289
	pcall(function() v:MakeJoints() end)
9290
end
9291
mas:Destroy()
9292
for i,v in pairs(cors) do
9293
	spawn(function()
9294
		pcall(v)
9295
	end)
9296
end