View difference between Paste ID: cvaPee7z and w6nykJLh
SHOW: | | - or go back to the newest paste.
1
if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
2
local Player,Mouse,mouse,UserInputService,ContextActionService = owner
3
local RealPlayer = Player
4
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()}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;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 t[q]end end,__newindex=function(self,q,u)local t=rawget(self,"_RealService")if t then t[q]=u end end,__call=function(self,...)local t=rawget(self,"_RealService")if t then return t(...)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 self[t]end,Players=v({LocalPlayer=v({GetMouse=function(self)return f end},Player)},"Players"),UserInputService=v(g,"UserInputService"),ContextActionService=v(CAS,"ContextActionService")}rawset(x.Players,"localPlayer",x.Players.LocalPlayer)x.service=x.GetService;x.RunService=v({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")setmetatable(x,{__index=function(self,t)return r:GetService(t)or typeof(r[t])=="function"and function(m,...)return r[t](r,...)end or r[t]end,__newindex=s.__newindex,__call=s.__call})game,owner=x,x.Players.LocalPlayer end
5
--// Ultra sans ... by 1x1x1x1IAMbck again converted and free to use :OOOO \\--
6-
--Converted with ttyyuu12345's model to script plugin v4
6+
7
8
9
10
--Converted with nutta1258 model to script plugin v4
11
function sandbox(var,func)
12
	local env = getfenv(func)
13
	local newenv = setmetatable({},{
14
		__index = function(self,k)
15
			if k=="script" then
16
				return var
17
			else
18
				return env[k]
19
			end
20
		end,
21
	})
22
	setfenv(func,newenv)
23
	return func
24
end
25
cors = {}
26
mas = Instance.new("Model",game:GetService("Lighting"))
27
Model0 = Instance.new("Model")
28
Model1 = Instance.new("Model")
29
Part2 = Instance.new("Part")
30
SpecialMesh3 = Instance.new("SpecialMesh")
31
BodyPosition4 = Instance.new("BodyPosition")
32
Part5 = Instance.new("Part")
33
Script6 = Instance.new("Script")
34
Part7 = Instance.new("Part")
35
SpecialMesh8 = Instance.new("SpecialMesh")
36
ParticleEmitter9 = Instance.new("ParticleEmitter")
37
Part10 = Instance.new("Part")
38
SpecialMesh11 = Instance.new("SpecialMesh")
39
ParticleEmitter12 = Instance.new("ParticleEmitter")
40
Part13 = Instance.new("Part")
41
SpecialMesh14 = Instance.new("SpecialMesh")
42
Part15 = Instance.new("Part")
43
SpecialMesh16 = Instance.new("SpecialMesh")
44
Part17 = Instance.new("Part")
45
Script18 = Instance.new("Script")
46
CylinderMesh19 = Instance.new("CylinderMesh")
47
Script20 = Instance.new("Script")
48
Sound21 = Instance.new("Sound")
49
Script22 = Instance.new("Script")
50
Part23 = Instance.new("Part")
51
Script24 = Instance.new("Script")
52
CylinderMesh25 = Instance.new("CylinderMesh")
53
Script26 = Instance.new("Script")
54
Sound27 = Instance.new("Sound")
55
Script28 = Instance.new("Script")
56
Part29 = Instance.new("Part")
57
Script30 = Instance.new("Script")
58
CylinderMesh31 = Instance.new("CylinderMesh")
59
Script32 = Instance.new("Script")
60
Sound33 = Instance.new("Sound")
61
Script34 = Instance.new("Script")
62
Part35 = Instance.new("Part")
63
Script36 = Instance.new("Script")
64
CylinderMesh37 = Instance.new("CylinderMesh")
65
Script38 = Instance.new("Script")
66
Sound39 = Instance.new("Sound")
67
Script40 = Instance.new("Script")
68
Part41 = Instance.new("Part")
69
Script42 = Instance.new("Script")
70
CylinderMesh43 = Instance.new("CylinderMesh")
71
Script44 = Instance.new("Script")
72
Sound45 = Instance.new("Sound")
73
Script46 = Instance.new("Script")
74
Part47 = Instance.new("Part")
75
Script48 = Instance.new("Script")
76
CylinderMesh49 = Instance.new("CylinderMesh")
77
Script50 = Instance.new("Script")
78
Sound51 = Instance.new("Sound")
79
Script52 = Instance.new("Script")
80
Part53 = Instance.new("Part")
81
ParticleEmitter54 = Instance.new("ParticleEmitter")
82
Part55 = Instance.new("Part")
83
ParticleEmitter56 = Instance.new("ParticleEmitter")
84
Part57 = Instance.new("Part")
85
Script58 = Instance.new("Script")
86
CylinderMesh59 = Instance.new("CylinderMesh")
87
Script60 = Instance.new("Script")
88
Sound61 = Instance.new("Sound")
89
Script62 = Instance.new("Script")
90
Model63 = Instance.new("Model")
91
UnionOperation64 = Instance.new("UnionOperation")
92
UnionOperation65 = Instance.new("UnionOperation")
93
Part66 = Instance.new("Part")
94
SpecialMesh67 = Instance.new("SpecialMesh")
95
UnionOperation68 = Instance.new("UnionOperation")
96
Part69 = Instance.new("Part")
97
SpecialMesh70 = Instance.new("SpecialMesh")
98
Script71 = Instance.new("Script")
99
Part72 = Instance.new("Part")
100
Humanoid73 = Instance.new("Humanoid")
101
Script74 = Instance.new("Script")
102
Script75 = Instance.new("Script")
103
NumberValue76 = Instance.new("NumberValue")
104
BodyGyro77 = Instance.new("BodyGyro")
105
BodyPosition78 = Instance.new("BodyPosition")
106
Script79 = Instance.new("Script")
107
Part80 = Instance.new("Part")
108
Script81 = Instance.new("Script")
109
CylinderMesh82 = Instance.new("CylinderMesh")
110
Script83 = Instance.new("Script")
111
Sound84 = Instance.new("Sound")
112
Script85 = Instance.new("Script")
113
Script86 = Instance.new("Script")
114
Sound87 = Instance.new("Sound")
115
UnionOperation88 = Instance.new("UnionOperation")
116
Part89 = Instance.new("Part")
117
Script90 = Instance.new("Script")
118
CylinderMesh91 = Instance.new("CylinderMesh")
119
Script92 = Instance.new("Script")
120
Sound93 = Instance.new("Sound")
121
Script94 = Instance.new("Script")
122
Script95 = Instance.new("Script")
123
Script96 = Instance.new("Script")
124
Part97 = Instance.new("Part")
125
Script98 = Instance.new("Script")
126
SpecialMesh99 = Instance.new("SpecialMesh")
127
Script100 = Instance.new("Script")
128
Sound101 = Instance.new("Sound")
129
Sound102 = Instance.new("Sound")
130
Texture103 = Instance.new("Texture")
131
Texture104 = Instance.new("Texture")
132
Texture105 = Instance.new("Texture")
133
Texture106 = Instance.new("Texture")
134
Texture107 = Instance.new("Texture")
135
Texture108 = Instance.new("Texture")
136
Sound109 = Instance.new("Sound")
137
Sound110 = Instance.new("Sound")
138
Part111 = Instance.new("Part")
139
Script112 = Instance.new("Script")
140
SpecialMesh113 = Instance.new("SpecialMesh")
141
Script114 = Instance.new("Script")
142
Texture115 = Instance.new("Texture")
143
Texture116 = Instance.new("Texture")
144
Texture117 = Instance.new("Texture")
145
Texture118 = Instance.new("Texture")
146
Texture119 = Instance.new("Texture")
147
Texture120 = Instance.new("Texture")
148
Part121 = Instance.new("Part")
149
SpecialMesh122 = Instance.new("SpecialMesh")
150
Model123 = Instance.new("Model")
151
Model124 = Instance.new("Model")
152
Part125 = Instance.new("Part")
153
Script126 = Instance.new("Script")
154
CylinderMesh127 = Instance.new("CylinderMesh")
155
Script128 = Instance.new("Script")
156
Script129 = Instance.new("Script")
157
Sound130 = Instance.new("Sound")
158
UnionOperation131 = Instance.new("UnionOperation")
159
UnionOperation132 = Instance.new("UnionOperation")
160
BodyPosition133 = Instance.new("BodyPosition")
161
ParticleEmitter134 = Instance.new("ParticleEmitter")
162
UnionOperation135 = Instance.new("UnionOperation")
163
Part136 = Instance.new("Part")
164
Humanoid137 = Instance.new("Humanoid")
165
Script138 = Instance.new("Script")
166
Script139 = Instance.new("Script")
167
Script140 = Instance.new("Script")
168
NumberValue141 = Instance.new("NumberValue")
169
BodyGyro142 = Instance.new("BodyGyro")
170
BodyPosition143 = Instance.new("BodyPosition")
171
Script144 = Instance.new("Script")
172
UnionOperation145 = Instance.new("UnionOperation")
173
Script146 = Instance.new("Script")
174
Model147 = Instance.new("Model")
175
Model148 = Instance.new("Model")
176
Part149 = Instance.new("Part")
177
Script150 = Instance.new("Script")
178
CylinderMesh151 = Instance.new("CylinderMesh")
179
Script152 = Instance.new("Script")
180
Script153 = Instance.new("Script")
181
Sound154 = Instance.new("Sound")
182
UnionOperation155 = Instance.new("UnionOperation")
183
UnionOperation156 = Instance.new("UnionOperation")
184
BodyPosition157 = Instance.new("BodyPosition")
185
ParticleEmitter158 = Instance.new("ParticleEmitter")
186
UnionOperation159 = Instance.new("UnionOperation")
187
Part160 = Instance.new("Part")
188
Humanoid161 = Instance.new("Humanoid")
189
Script162 = Instance.new("Script")
190
Script163 = Instance.new("Script")
191
Script164 = Instance.new("Script")
192
NumberValue165 = Instance.new("NumberValue")
193
BodyGyro166 = Instance.new("BodyGyro")
194
BodyPosition167 = Instance.new("BodyPosition")
195
Script168 = Instance.new("Script")
196
UnionOperation169 = Instance.new("UnionOperation")
197
Script170 = Instance.new("Script")
198
Model171 = Instance.new("Model")
199
Model172 = Instance.new("Model")
200
Part173 = Instance.new("Part")
201
Script174 = Instance.new("Script")
202
CylinderMesh175 = Instance.new("CylinderMesh")
203
Script176 = Instance.new("Script")
204
Script177 = Instance.new("Script")
205
Sound178 = Instance.new("Sound")
206
UnionOperation179 = Instance.new("UnionOperation")
207
UnionOperation180 = Instance.new("UnionOperation")
208
BodyPosition181 = Instance.new("BodyPosition")
209
ParticleEmitter182 = Instance.new("ParticleEmitter")
210
UnionOperation183 = Instance.new("UnionOperation")
211
Part184 = Instance.new("Part")
212
Humanoid185 = Instance.new("Humanoid")
213
Script186 = Instance.new("Script")
214
Script187 = Instance.new("Script")
215
Script188 = Instance.new("Script")
216
NumberValue189 = Instance.new("NumberValue")
217
BodyGyro190 = Instance.new("BodyGyro")
218
BodyPosition191 = Instance.new("BodyPosition")
219
Script192 = Instance.new("Script")
220
UnionOperation193 = Instance.new("UnionOperation")
221
Script194 = Instance.new("Script")
222
Model195 = Instance.new("Model")
223
Part196 = Instance.new("Part")
224
Humanoid197 = Instance.new("Humanoid")
225
Script198 = Instance.new("Script")
226
Script199 = Instance.new("Script")
227
Script200 = Instance.new("Script")
228
NumberValue201 = Instance.new("NumberValue")
229
BodyGyro202 = Instance.new("BodyGyro")
230
BodyPosition203 = Instance.new("BodyPosition")
231
UnionOperation204 = Instance.new("UnionOperation")
232
Script205 = Instance.new("Script")
233
Script206 = Instance.new("Script")
234
UnionOperation207 = Instance.new("UnionOperation")
235
BodyPosition208 = Instance.new("BodyPosition")
236
Model209 = Instance.new("Model")
237
Part210 = Instance.new("Part")
238
Humanoid211 = Instance.new("Humanoid")
239
Script212 = Instance.new("Script")
240
Script213 = Instance.new("Script")
241
Script214 = Instance.new("Script")
242
NumberValue215 = Instance.new("NumberValue")
243
BodyGyro216 = Instance.new("BodyGyro")
244
BodyPosition217 = Instance.new("BodyPosition")
245
UnionOperation218 = Instance.new("UnionOperation")
246
Script219 = Instance.new("Script")
247
Script220 = Instance.new("Script")
248
UnionOperation221 = Instance.new("UnionOperation")
249
BodyPosition222 = Instance.new("BodyPosition")
250
Model223 = Instance.new("Model")
251
Part224 = Instance.new("Part")
252
Humanoid225 = Instance.new("Humanoid")
253
Script226 = Instance.new("Script")
254
Script227 = Instance.new("Script")
255
Script228 = Instance.new("Script")
256
NumberValue229 = Instance.new("NumberValue")
257
BodyGyro230 = Instance.new("BodyGyro")
258
BodyPosition231 = Instance.new("BodyPosition")
259
UnionOperation232 = Instance.new("UnionOperation")
260
Script233 = Instance.new("Script")
261
Script234 = Instance.new("Script")
262
UnionOperation235 = Instance.new("UnionOperation")
263
BodyPosition236 = Instance.new("BodyPosition")
264
Model237 = Instance.new("Model")
265
Part238 = Instance.new("Part")
266
Humanoid239 = Instance.new("Humanoid")
267
Script240 = Instance.new("Script")
268
Script241 = Instance.new("Script")
269
Script242 = Instance.new("Script")
270
NumberValue243 = Instance.new("NumberValue")
271
BodyGyro244 = Instance.new("BodyGyro")
272
BodyPosition245 = Instance.new("BodyPosition")
273
UnionOperation246 = Instance.new("UnionOperation")
274
Script247 = Instance.new("Script")
275
Script248 = Instance.new("Script")
276
UnionOperation249 = Instance.new("UnionOperation")
277
BodyPosition250 = Instance.new("BodyPosition")
278
Model251 = Instance.new("Model")
279
Part252 = Instance.new("Part")
280
Humanoid253 = Instance.new("Humanoid")
281
Script254 = Instance.new("Script")
282
Script255 = Instance.new("Script")
283
Script256 = Instance.new("Script")
284
NumberValue257 = Instance.new("NumberValue")
285
BodyGyro258 = Instance.new("BodyGyro")
286
BodyPosition259 = Instance.new("BodyPosition")
287
UnionOperation260 = Instance.new("UnionOperation")
288
Script261 = Instance.new("Script")
289
Script262 = Instance.new("Script")
290
UnionOperation263 = Instance.new("UnionOperation")
291
BodyPosition264 = Instance.new("BodyPosition")
292
Model265 = Instance.new("Model")
293
Part266 = Instance.new("Part")
294
Humanoid267 = Instance.new("Humanoid")
295
Script268 = Instance.new("Script")
296
Script269 = Instance.new("Script")
297
Script270 = Instance.new("Script")
298
NumberValue271 = Instance.new("NumberValue")
299
BodyGyro272 = Instance.new("BodyGyro")
300
BodyPosition273 = Instance.new("BodyPosition")
301
UnionOperation274 = Instance.new("UnionOperation")
302
Script275 = Instance.new("Script")
303
Script276 = Instance.new("Script")
304
UnionOperation277 = Instance.new("UnionOperation")
305
BodyPosition278 = Instance.new("BodyPosition")
306
Model279 = Instance.new("Model")
307
Part280 = Instance.new("Part")
308
Humanoid281 = Instance.new("Humanoid")
309
Script282 = Instance.new("Script")
310
Script283 = Instance.new("Script")
311
Script284 = Instance.new("Script")
312
NumberValue285 = Instance.new("NumberValue")
313
BodyGyro286 = Instance.new("BodyGyro")
314
BodyPosition287 = Instance.new("BodyPosition")
315
UnionOperation288 = Instance.new("UnionOperation")
316
Script289 = Instance.new("Script")
317
Script290 = Instance.new("Script")
318
UnionOperation291 = Instance.new("UnionOperation")
319
BodyPosition292 = Instance.new("BodyPosition")
320
Model293 = Instance.new("Model")
321
Part294 = Instance.new("Part")
322
Humanoid295 = Instance.new("Humanoid")
323
Script296 = Instance.new("Script")
324
Script297 = Instance.new("Script")
325
Script298 = Instance.new("Script")
326
NumberValue299 = Instance.new("NumberValue")
327
BodyGyro300 = Instance.new("BodyGyro")
328
BodyPosition301 = Instance.new("BodyPosition")
329
UnionOperation302 = Instance.new("UnionOperation")
330
Script303 = Instance.new("Script")
331
Script304 = Instance.new("Script")
332
UnionOperation305 = Instance.new("UnionOperation")
333
BodyPosition306 = Instance.new("BodyPosition")
334
Model0.Name = "UltraSans"
335
Model0.Parent = mas
336
Model1.Name = "Body"
337
Model1.Parent = Model0
338
Part2.Name = "Ribs"
339
Part2.Parent = Model1
340
Part2.CFrame = CFrame.new(255.436905, 165.891083, -3.19966507, -0.000402251055, 0.0290115159, 0.999579072, 0.049831178, 0.998337924, -0.0289554391, -0.998757601, 0.0497985519, -0.0018472604)
341
Part2.Orientation = Vector3.new(1.65999997, 90.1100006, 2.8599999)
342
Part2.Position = Vector3.new(255.436905, 165.891083, -3.19966507)
343
Part2.Rotation = Vector3.new(93.6500015, 88.3399963, -90.7900009)
344
Part2.Size = Vector3.new(1.92031944, 1.92031944, 0.960159719)
345
Part2.Anchored = true
346
Part2.TopSurface = Enum.SurfaceType.Smooth
347
Part2.FormFactor = Enum.FormFactor.Symmetric
348
Part2.formFactor = Enum.FormFactor.Symmetric
349
SpecialMesh3.Parent = Part2
350
SpecialMesh3.MeshId = "http://www.roblox.com/asset/?id=36780113"
351
SpecialMesh3.Scale = Vector3.new(43.2071991, 37.0347404, 37.0347404)
352
SpecialMesh3.MeshType = Enum.MeshType.FileMesh
353
BodyPosition4.Parent = Part2
354
BodyPosition4.Position = Vector3.new(0, 175, 0)
355
BodyPosition4.P = 1250
356
BodyPosition4.MaxForce = Vector3.new(0, 1.79099999e+18, 0)
357
BodyPosition4.maxForce = Vector3.new(0, 1.79099999e+18, 0)
358
BodyPosition4.position = Vector3.new(0, 175, 0)
359
Part5.Parent = Model1
360
Part5.CFrame = CFrame.new(256.023621, 204.272949, -1.64614868, -0.0887466818, -0.000201163319, 0.996054292, 0.0574222803, 0.998335838, 0.00531784864, -0.9943977, 0.0576676428, -0.0885874406)
361
Part5.Orientation = Vector3.new(-0.299999982, 95.0799942, 3.28999996)
362
Part5.Position = Vector3.new(256.023621, 204.272949, -1.64614868)
363
Part5.Rotation = Vector3.new(-176.559998, 84.909996, 179.869995)
364
Part5.Size = Vector3.new(4.93796539, 1.23449135, 2.4689827)
365
Part5.Anchored = true
366
Part5.TopParamA = -0.10000000149012
367
Part5.TopParamB = 0.10000000149012
368
Part5.TopSurface = Enum.SurfaceType.SmoothNoOutlines
369
Part5.TopSurfaceInput = Enum.InputType.Constant
370
Script6.Name = "qPerfectionWeld"
371
Script6.Parent = Model1
372
table.insert(cors,sandbox(Script6,function()
373
-- Created by Quenty (@Quenty, follow me on twitter).
374
-- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
375
-- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.
376
377
--[[ INSTRUCTIONS
378
- Place in the model
379
- Make sure model is anchored
380
- That's it. It will weld the model and all children. 
381
382
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
383
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
384
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
385
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
386
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
387
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
388
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
389
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
390
391
This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes. 
392
]]
393
394
--[[ DOCUMENTATION
395
- Will work in tools. If ran more than once it will not create more than one weld.  This is especially useful for tools that are dropped and then picked up again.
396
- Will work in PBS servers
397
- Will work as long as it starts out with the part anchored
398
- Stores the relative CFrame as a CFrame value
399
- Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
400
- Utilizes a recursive algorith to find all parts in the model
401
- Will reweld on script reparent if the script is initially parented to a tool.
402
- Welds as fast as possible
403
]]
404
405
-- qPerfectionWeld.lua
406
-- Created 10/6/2014
407
-- Author: Quenty
408
-- Version 1.0.3
409
410
-- Updated 10/14/2014 - Updated to 1.0.1
411
--- Bug fix with existing ROBLOX welds ? Repro by asimo3089
412
413
-- Updated 10/14/2014 - Updated to 1.0.2
414
--- Fixed bug fix. 
415
416
-- Updated 10/14/2014 - Updated to 1.0.3
417
--- Now handles joints semi-acceptably. May be rather hacky with some joints. :/
418
419
local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).
420
421
422
local function CallOnChildren(Instance, FunctionToCall)
423
	-- Calls a function on each of the children of a certain object, using recursion.  
424
425
	FunctionToCall(Instance)
426
427
	for _, Child in next, Instance:GetChildren() do
428
		CallOnChildren(Child, FunctionToCall)
429
	end
430
end
431
432
local function GetNearestParent(Instance, ClassName)
433
	-- Returns the nearest parent of a certain class, or returns nil
434
435
	local Ancestor = Instance
436
	repeat
437
		Ancestor = Ancestor.Parent
438
		if Ancestor == nil then
439
			return nil
440
		end
441
	until Ancestor:IsA(ClassName)
442
443
	return Ancestor
444
end
445
446
local function GetBricks(StartInstance)
447
	local List = {}
448
449
	-- if StartInstance:IsA("BasePart") then
450
	-- 	List[#List+1] = StartInstance
451
	-- end
452
453
	CallOnChildren(StartInstance, function(Item)
454
		if Item:IsA("BasePart") then
455
			List[#List+1] = Item;
456
		end
457
	end)
458
459
	return List
460
end
461
462
local function Modify(Instance, Values)
463
	-- Modifies an Instance by using a table.  
464
465
	assert(type(Values) == "table", "Values is not a table");
466
467
	for Index, Value in next, Values do
468
		if type(Index) == "number" then
469
			Value.Parent = Instance
470
		else
471
			Instance[Index] = Value
472
		end
473
	end
474
	return Instance
475
end
476
477
local function Make(ClassType, Properties)
478
	-- Using a syntax hack to create a nice way to Make new items.  
479
480
	return Modify(Instance.new(ClassType), Properties)
481
end
482
483
local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
484
local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}
485
486
local function HasWheelJoint(Part)
487
	for _, SurfaceName in pairs(Surfaces) do
488
		for _, HingSurfaceName in pairs(HingSurfaces) do
489
			if Part[SurfaceName].Name == HingSurfaceName then
490
				return true
491
			end
492
		end
493
	end
494
	
495
	return false
496
end
497
498
local function ShouldBreakJoints(Part)
499
	--- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
500
	--  definitely some edge cases. 
501
502
	if NEVER_BREAK_JOINTS then
503
		return false
504
	end
505
	
506
	if HasWheelJoint(Part) then
507
		return false
508
	end
509
	
510
	local Connected = Part:GetConnectedParts()
511
	
512
	if #Connected == 1 then
513
		return false
514
	end
515
	
516
	for _, Item in pairs(Connected) do
517
		if HasWheelJoint(Item) then
518
			return false
519
		elseif not Item:IsDescendantOf(script.Parent) then
520
			return false
521
		end
522
	end
523
	
524
	return true
525
end
526
527
local function WeldTogether(Part0, Part1, JointType, WeldParent)
528
	--- Weld's 2 parts together
529
	-- @param Part0 The first part
530
	-- @param Part1 The second part (Dependent part most of the time).
531
	-- @param [JointType] The type of joint. Defaults to weld.
532
	-- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
533
	-- @return The weld created.
534
535
	JointType = JointType or "Weld"
536
	local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
537
	
538
	local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
539
	Modify(NewWeld, {
540
		Name = "qCFrameWeldThingy";
541
		Part0  = Part0;
542
		Part1  = Part1;
543
		C0     = CFrame.new();--Part0.CFrame:inverse();
544
		C1     = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
545
		Parent = Part1;
546
	})
547
548
	if not RelativeValue then
549
		RelativeValue = Make("CFrameValue", {
550
			Parent     = Part1;
551
			Name       = "qRelativeCFrameWeldValue";
552
			Archivable = true;
553
			Value      = NewWeld.C1;
554
		})
555
	end
556
557
	return NewWeld
558
end
559
560
local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
561
	-- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
562
	-- @param MainPart The part to weld the model to (can be in the model).
563
	-- @param [JointType] The type of joint. Defaults to weld. 
564
	-- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
565
	
566
	for _, Part in pairs(Parts) do
567
		if ShouldBreakJoints(Part) then
568
			Part:BreakJoints()
569
		end
570
	end
571
	
572
	for _, Part in pairs(Parts) do
573
		if Part ~= MainPart then
574
			WeldTogether(MainPart, Part, JointType, MainPart)
575
		end
576
	end
577
578
	if not DoNotUnanchor then
579
		for _, Part in pairs(Parts) do
580
			Part.Anchored = false
581
		end
582
		MainPart.Anchored = false
583
	end
584
end
585
586
local function PerfectionWeld()	
587
	local Tool = GetNearestParent(script, "Tool")
588
589
	local Parts = GetBricks(script.Parent)
590
	local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]
591
592
	if PrimaryPart then
593
		WeldParts(Parts, PrimaryPart, "Weld", false)
594
	else
595
		warn("qWeld - Unable to weld part")
596
	end
597
	
598
	return Tool
599
end
600
601
local Tool = PerfectionWeld()
602
603
604
if Tool and script.ClassName == "Script" then
605
	--- Don't bother with local scripts
606
607
	script.Parent.AncestryChanged:connect(function()
608
		PerfectionWeld()
609
	end)
610
end
611
612
-- Created by Quenty (@Quenty, follow me on twitter).
613
614
end))
615
Part7.Name = "GasterBlaser"
616
Part7.Parent = Model1
617
Part7.CFrame = CFrame.new(246.701797, 208.015915, 47.8325119, -0.974856734, 0.123940133, 0.185183972, -0.0177562926, 0.785197079, -0.618991315, -0.222123757, -0.606716096, -0.763253987)
618
Part7.Orientation = Vector3.new(38.2399979, 166.360001, -1.29999995)
619
Part7.Position = Vector3.new(246.701797, 208.015915, 47.8325119)
620
Part7.Rotation = Vector3.new(140.959991, 10.6700001, -172.75)
621
Part7.Size = Vector3.new(1.23449135, 0.987593114, 1.23449135)
622
Part7.Anchored = true
623
Part7.BottomSurface = Enum.SurfaceType.Smooth
624
Part7.TopSurface = Enum.SurfaceType.Smooth
625
Part7.FormFactor = Enum.FormFactor.Plate
626
Part7.formFactor = Enum.FormFactor.Plate
627
SpecialMesh8.Parent = Part7
628
SpecialMesh8.MeshId = "http://www.roblox.com/asset/?id=14028428"
629
SpecialMesh8.Scale = Vector3.new(18.5173702, 24.6898289, 30.8622837)
630
SpecialMesh8.VertexColor = Vector3.new(1000000, 10000, 10000)
631
SpecialMesh8.MeshType = Enum.MeshType.FileMesh
632
ParticleEmitter9.Name = "Fire"
633
ParticleEmitter9.Parent = Part7
634
ParticleEmitter9.Speed = NumberRange.new(100, 100)
635
ParticleEmitter9.Rotation = NumberRange.new(-45, -45)
636
ParticleEmitter9.Color = ColorSequence.new(Color3.new(0.666667, 0, 0),Color3.new(1, 0, 0))
637
ParticleEmitter9.LightEmission = 1
638
ParticleEmitter9.Texture = "http://www.roblox.com/asset/?id=241936182"
639
ParticleEmitter9.Transparency = NumberSequence.new(0,0.28749996423721,1)
640
ParticleEmitter9.ZOffset = 1
641
ParticleEmitter9.Size = NumberSequence.new(10,0)
642
ParticleEmitter9.EmissionDirection = Enum.NormalId.Bottom
643
ParticleEmitter9.Lifetime = NumberRange.new(0.60000002384186, 0.60000002384186)
644
ParticleEmitter9.LockedToPart = true
645
ParticleEmitter9.Rate = 250
646
ParticleEmitter9.SpreadAngle = Vector2.new(50, 50)
647
ParticleEmitter9.VelocitySpread = 50
648
Part10.Name = "GasterBlaser"
649
Part10.Parent = Model1
650
Part10.CFrame = CFrame.new(246.263687, 210.66745, -45.3492661, 0.911797941, 0.121225327, 0.392337978, 0.143219471, 0.801558256, -0.580510557, -0.384854376, 0.58549875, 0.713497281)
651
Part10.Orientation = Vector3.new(35.4899979, 28.8099995, 10.1300001)
652
Part10.Position = Vector3.new(246.263687, 210.66745, -45.3492661)
653
Part10.Rotation = Vector3.new(39.1299973, 23.1000004, -7.56999969)
654
Part10.Size = Vector3.new(1.23449135, 0.987593114, 1.23449135)
655
Part10.Anchored = true
656
Part10.BottomSurface = Enum.SurfaceType.Smooth
657
Part10.TopSurface = Enum.SurfaceType.Smooth
658
Part10.FormFactor = Enum.FormFactor.Plate
659
Part10.formFactor = Enum.FormFactor.Plate
660
SpecialMesh11.Parent = Part10
661
SpecialMesh11.MeshId = "http://www.roblox.com/asset/?id=14028428"
662
SpecialMesh11.Scale = Vector3.new(18.5173702, 24.6898289, 30.8622837)
663
SpecialMesh11.VertexColor = Vector3.new(1000000, 10000, 10000)
664
SpecialMesh11.MeshType = Enum.MeshType.FileMesh
665
ParticleEmitter12.Name = "Fire"
666
ParticleEmitter12.Parent = Part10
667
ParticleEmitter12.Speed = NumberRange.new(100, 100)
668
ParticleEmitter12.Rotation = NumberRange.new(-45, -45)
669
ParticleEmitter12.Color = ColorSequence.new(Color3.new(0.666667, 0, 0),Color3.new(1, 0, 0))
670
ParticleEmitter12.LightEmission = 1
671
ParticleEmitter12.Texture = "http://www.roblox.com/asset/?id=241936182"
672
ParticleEmitter12.Transparency = NumberSequence.new(0,0.28749996423721,1)
673
ParticleEmitter12.ZOffset = 1
674
ParticleEmitter12.Size = NumberSequence.new(10,0)
675
ParticleEmitter12.EmissionDirection = Enum.NormalId.Bottom
676
ParticleEmitter12.Lifetime = NumberRange.new(0.60000002384186, 0.60000002384186)
677
ParticleEmitter12.LockedToPart = true
678
ParticleEmitter12.Rate = 250
679
ParticleEmitter12.SpreadAngle = Vector2.new(50, 50)
680
ParticleEmitter12.VelocitySpread = 50
681
Part13.Name = "Left Arm"
682
Part13.Parent = Model1
683
Part13.CFrame = CFrame.new(248.724396, 200.188034, 97.2817001, -0.190738052, 0.0807573348, 0.978313506, -0.78801626, 0.581692457, -0.201653793, -0.585362554, -0.809390008, -0.0473127924)
684
Part13.Orientation = Vector3.new(11.6300001, 92.7699966, -53.5699997)
685
Part13.Position = Vector3.new(248.724396, 200.188034, 97.2817001)
686
Part13.Rotation = Vector3.new(103.199997, 78.0499954, -157.050003)
687
Part13.Size = Vector3.new(12.3449135, 66.6625366, 12.3449135)
688
Part13.BottomSurface = Enum.SurfaceType.Smooth
689
Part13.TopSurface = Enum.SurfaceType.Smooth
690
Part13.FormFactor = Enum.FormFactor.Custom
691
Part13.formFactor = Enum.FormFactor.Custom
692
SpecialMesh14.Parent = Part13
693
SpecialMesh14.MeshId = "http://www.roblox.com/asset/?id=36780032"
694
SpecialMesh14.Scale = Vector3.new(49.3796577, 49.3796577, 49.3796577)
695
SpecialMesh14.MeshType = Enum.MeshType.FileMesh
696
Part15.Name = "Right Arm"
697
Part15.Parent = Model1
698
Part15.CFrame = CFrame.new(245.976883, 201.98732, -92.438797, 0.141120955, 0.15161556, 0.978313744, 0.816126168, 0.541548073, -0.201652721, -0.560377538, 0.826884866, -0.0473136418)
699
Part15.Orientation = Vector3.new(11.6300001, 92.7699966, 56.4300003)
700
Part15.Position = Vector3.new(245.976883, 201.98732, -92.438797)
701
Part15.Rotation = Vector3.new(103.199997, 78.0499954, -47.0499992)
702
Part15.Size = Vector3.new(12.3449135, 66.6625366, 12.3449135)
703
Part15.BottomSurface = Enum.SurfaceType.Smooth
704
Part15.TopSurface = Enum.SurfaceType.Smooth
705
Part15.FormFactor = Enum.FormFactor.Custom
706
Part15.formFactor = Enum.FormFactor.Custom
707
SpecialMesh16.Parent = Part15
708
SpecialMesh16.MeshId = "http://www.roblox.com/asset/?id=36780156"
709
SpecialMesh16.Scale = Vector3.new(49.3796577, 49.3796577, 49.3796577)
710
SpecialMesh16.MeshType = Enum.MeshType.FileMesh
711
Part17.Name = "Shatter"
712
Part17.Parent = Model1
713
Part17.CFrame = CFrame.new(240.69458, 179.215439, 394.634857, 0.999580324, 0.0029917676, -0.0286321938, -0.0287241638, 0.0374363177, -0.998891473, -0.00191184809, 0.999302268, 0.0375071391)
714
Part17.Orientation = Vector3.new(87.2999954, -37.3600006, -37.5)
715
Part17.Position = Vector3.new(240.69458, 179.215439, 394.634857)
716
Part17.Rotation = Vector3.new(87.8499985, -1.63999999, -0.170000002)
717
Part17.Color = Color3.new(1, 0, 0)
718
Part17.Transparency = 1
719
Part17.Size = Vector3.new(9.13523674, 102.783638, 8.46861839)
720
Part17.BackSurface = Enum.SurfaceType.Weld
721
Part17.BottomSurface = Enum.SurfaceType.Weld
722
Part17.BrickColor = BrickColor.new("Really red")
723
Part17.CanCollide = false
724
Part17.FrontSurface = Enum.SurfaceType.Weld
725
Part17.LeftSurface = Enum.SurfaceType.Weld
726
Part17.Material = Enum.Material.Neon
727
Part17.Reflectance = 0.5
728
Part17.RightSurface = Enum.SurfaceType.Weld
729
Part17.TopSurface = Enum.SurfaceType.Weld
730
Part17.brickColor = BrickColor.new("Really red")
731
Part17.FormFactor = Enum.FormFactor.Symmetric
732
Part17.formFactor = Enum.FormFactor.Symmetric
733
Script18.Name = "Fade"
734
Script18.Parent = Part17
735
table.insert(cors,sandbox(Script18,function()
736
bin = script.Parent
737
738
function activate(hit)
739
	bin.Transparency = 0.2
740
	wait(0.01)
741
	bin.Transparency = 0.3
742
	wait(0.01)
743
	bin.Transparency = 0.4
744
	wait(0.01)
745
	bin.Transparency = 0.5
746
	wait(0.01)
747
	bin.Transparency = 0.6
748
	wait(0.01)
749
	bin.Transparency = 0.7
750
	wait(0.01)
751
	bin.Transparency = 0.8
752
	wait(0.01)
753
	bin.Transparency = 0.9
754
	wait(0.01)
755
	bin.Transparency = 1
756
end
757
script.Parent.Touched:connect(activate)
758
759
760
end))
761
CylinderMesh19.Parent = Part17
762
CylinderMesh19.Offset = Vector3.new(0, 75, 0)
763
CylinderMesh19.Scale = Vector3.new(1, 6.5, 1)
764
Script20.Parent = Part17
765
table.insert(cors,sandbox(Script20,function()
766
function onTouched(hit)
767
	script.Parent.Fire:play()
768
end
769
script.Parent.Touched:connect(onTouched)
770
end))
771
Sound21.Name = "Fire"
772
Sound21.Parent = Part17
773
Sound21.EmitterSize = 1000
774
Sound21.MinDistance = 1000
775
Sound21.Pitch = 0.60000002384186
776
Sound21.PlaybackSpeed = 0.60000002384186
777
Sound21.SoundId = "http://www.roblox.com/asset?id=2248511"
778
Sound21.Volume = 4
779
Script22.Name = "Lava Script"
780
Script22.Parent = Part17
781
table.insert(cors,sandbox(Script22,function()
782
function onTouched(part)
783
if part.Parent:FindFirstChild("Humanoid") ~= nil then
784
part.Parent.Torso:BreakJoints()
785
end
786
end
787
788
script.Parent.Touched:connect(onTouched)
789
end))
790
Part23.Name = "Shatter"
791
Part23.Parent = Model1
792
Part23.CFrame = CFrame.new(237.289169, 157.746063, -539.278137, 0.99958545, 0.0054795132, -0.0282655954, -0.0284511056, 0.0374020077, -0.998895288, -0.00441626878, 0.99928534, 0.0375424027)
793
Part23.Orientation = Vector3.new(87.3099976, -36.9799995, -37.2599983)
794
Part23.Position = Vector3.new(237.289169, 157.746063, -539.278137)
795
Part23.Rotation = Vector3.new(87.8499985, -1.62, -0.310000002)
796
Part23.Color = Color3.new(1, 0, 0)
797
Part23.Transparency = 1
798
Part23.Size = Vector3.new(9.13523674, 102.783638, 8.46861839)
799
Part23.BackSurface = Enum.SurfaceType.Weld
800
Part23.BottomSurface = Enum.SurfaceType.Weld
801
Part23.BrickColor = BrickColor.new("Really red")
802
Part23.CanCollide = false
803
Part23.FrontSurface = Enum.SurfaceType.Weld
804
Part23.LeftSurface = Enum.SurfaceType.Weld
805
Part23.Material = Enum.Material.Neon
806
Part23.Reflectance = 0.5
807
Part23.RightSurface = Enum.SurfaceType.Weld
808
Part23.TopSurface = Enum.SurfaceType.Weld
809
Part23.brickColor = BrickColor.new("Really red")
810
Part23.FormFactor = Enum.FormFactor.Symmetric
811
Part23.formFactor = Enum.FormFactor.Symmetric
812
Script24.Name = "Fade"
813
Script24.Parent = Part23
814
table.insert(cors,sandbox(Script24,function()
815
bin = script.Parent
816
817
function activate(hit)
818
	bin.Transparency = 0.2
819
	wait(0.01)
820
	bin.Transparency = 0.3
821
	wait(0.01)
822
	bin.Transparency = 0.4
823
	wait(0.01)
824
	bin.Transparency = 0.5
825
	wait(0.01)
826
	bin.Transparency = 0.6
827
	wait(0.01)
828
	bin.Transparency = 0.7
829
	wait(0.01)
830
	bin.Transparency = 0.8
831
	wait(0.01)
832
	bin.Transparency = 0.9
833
	wait(0.01)
834
	bin.Transparency = 1
835
end
836
script.Parent.Touched:connect(activate)
837
838
839
end))
840
CylinderMesh25.Parent = Part23
841
CylinderMesh25.Offset = Vector3.new(0, 75, 0)
842
CylinderMesh25.Scale = Vector3.new(1, 6.5, 1)
843
Script26.Parent = Part23
844
table.insert(cors,sandbox(Script26,function()
845
function onTouched(hit)
846
	script.Parent.Fire:play()
847
end
848
script.Parent.Touched:connect(onTouched)
849
end))
850
Sound27.Name = "Fire"
851
Sound27.Parent = Part23
852
Sound27.EmitterSize = 1000
853
Sound27.MinDistance = 1000
854
Sound27.Pitch = 0.60000002384186
855
Sound27.PlaybackSpeed = 0.60000002384186
856
Sound27.SoundId = "http://www.roblox.com/asset?id=2248511"
857
Sound27.Volume = 4
858
Script28.Name = "Lava Script"
859
Script28.Parent = Part23
860
table.insert(cors,sandbox(Script28,function()
861
function onTouched(part)
862
if part.Parent:FindFirstChild("Humanoid") ~= nil then
863
part.Parent.Torso:BreakJoints()
864
end
865
end
866
867
script.Parent.Touched:connect(onTouched)
868
end))
869
Part29.Name = "Shatter"
870
Part29.Parent = Model1
871
Part29.CFrame = CFrame.new(239.414673, 231.100922, -530.748474, 0.999585509, 0.000488025806, -0.02878768, -0.0284511056, -0.136621878, -0.990214586, -0.00441627763, 0.990623176, -0.136551335)
872
Part29.Orientation = Vector3.new(81.9799957, -168.099991, -168.23999)
873
Part29.Position = Vector3.new(239.414673, 231.100922, -530.748474)
874
Part29.Rotation = Vector3.new(97.8499985, -1.64999998, -0.0299999993)
875
Part29.Color = Color3.new(1, 0, 0)
876
Part29.Transparency = 1
877
Part29.Size = Vector3.new(9.13523674, 102.783638, 8.46861839)
878
Part29.BackSurface = Enum.SurfaceType.Weld
879
Part29.BottomSurface = Enum.SurfaceType.Weld
880
Part29.BrickColor = BrickColor.new("Really red")
881
Part29.CanCollide = false
882
Part29.FrontSurface = Enum.SurfaceType.Weld
883
Part29.LeftSurface = Enum.SurfaceType.Weld
884
Part29.Material = Enum.Material.Neon
885
Part29.Reflectance = 0.5
886
Part29.RightSurface = Enum.SurfaceType.Weld
887
Part29.TopSurface = Enum.SurfaceType.Weld
888
Part29.brickColor = BrickColor.new("Really red")
889
Part29.FormFactor = Enum.FormFactor.Symmetric
890
Part29.formFactor = Enum.FormFactor.Symmetric
891
Script30.Name = "Fade"
892
Script30.Parent = Part29
893
table.insert(cors,sandbox(Script30,function()
894
bin = script.Parent
895
896
function activate(hit)
897
	bin.Transparency = 0.2
898
	wait(0.01)
899
	bin.Transparency = 0.3
900
	wait(0.01)
901
	bin.Transparency = 0.4
902
	wait(0.01)
903
	bin.Transparency = 0.5
904
	wait(0.01)
905
	bin.Transparency = 0.6
906
	wait(0.01)
907
	bin.Transparency = 0.7
908
	wait(0.01)
909
	bin.Transparency = 0.8
910
	wait(0.01)
911
	bin.Transparency = 0.9
912
	wait(0.01)
913
	bin.Transparency = 1
914
end
915
script.Parent.Touched:connect(activate)
916
917
918
end))
919
CylinderMesh31.Parent = Part29
920
CylinderMesh31.Offset = Vector3.new(0, 75, 0)
921
CylinderMesh31.Scale = Vector3.new(1, 6.5, 1)
922
Script32.Parent = Part29
923
table.insert(cors,sandbox(Script32,function()
924
function onTouched(hit)
925
	script.Parent.Fire:play()
926
end
927
script.Parent.Touched:connect(onTouched)
928
end))
929
Sound33.Name = "Fire"
930
Sound33.Parent = Part29
931
Sound33.EmitterSize = 1000
932
Sound33.MinDistance = 1000
933
Sound33.Pitch = 0.60000002384186
934
Sound33.PlaybackSpeed = 0.60000002384186
935
Sound33.SoundId = "http://www.roblox.com/asset?id=2248511"
936
Sound33.Volume = 4
937
Script34.Name = "Lava Script"
938
Script34.Parent = Part29
939
table.insert(cors,sandbox(Script34,function()
940
function onTouched(part)
941
if part.Parent:FindFirstChild("Humanoid") ~= nil then
942
part.Parent.Torso:BreakJoints()
943
end
944
end
945
946
script.Parent.Touched:connect(onTouched)
947
end))
948
Part35.Name = "Shatter"
949
Part35.Parent = Model1
950
Part35.CFrame = CFrame.new(242.149307, 227.234451, 389.155182, 0.999585629, 0.00791429821, -0.0276785586, -0.0287242234, 0.210321724, -0.977210224, -0.00191253109, 0.977600157, 0.2104619)
951
Part35.Orientation = Vector3.new(77.7399979, -7.48999977, -7.77999973)
952
Part35.Position = Vector3.new(242.149307, 227.234451, 389.155182)
953
Part35.Rotation = Vector3.new(77.8499985, -1.58999991, -0.449999988)
954
Part35.Color = Color3.new(1, 0, 0)
955
Part35.Transparency = 1
956
Part35.Size = Vector3.new(9.13523674, 102.783638, 8.46861839)
957
Part35.BackSurface = Enum.SurfaceType.Weld
958
Part35.BottomSurface = Enum.SurfaceType.Weld
959
Part35.BrickColor = BrickColor.new("Really red")
960
Part35.CanCollide = false
961
Part35.FrontSurface = Enum.SurfaceType.Weld
962
Part35.LeftSurface = Enum.SurfaceType.Weld
963
Part35.Material = Enum.Material.Neon
964
Part35.Reflectance = 0.5
965
Part35.RightSurface = Enum.SurfaceType.Weld
966
Part35.TopSurface = Enum.SurfaceType.Weld
967
Part35.brickColor = BrickColor.new("Really red")
968
Part35.FormFactor = Enum.FormFactor.Symmetric
969
Part35.formFactor = Enum.FormFactor.Symmetric
970
Script36.Name = "Fade"
971
Script36.Parent = Part35
972
table.insert(cors,sandbox(Script36,function()
973
bin = script.Parent
974
975
function activate(hit)
976
	bin.Transparency = 0.2
977
	wait(0.01)
978
	bin.Transparency = 0.3
979
	wait(0.01)
980
	bin.Transparency = 0.4
981
	wait(0.01)
982
	bin.Transparency = 0.5
983
	wait(0.01)
984
	bin.Transparency = 0.6
985
	wait(0.01)
986
	bin.Transparency = 0.7
987
	wait(0.01)
988
	bin.Transparency = 0.8
989
	wait(0.01)
990
	bin.Transparency = 0.9
991
	wait(0.01)
992
	bin.Transparency = 1
993
end
994
script.Parent.Touched:connect(activate)
995
996
997
end))
998
CylinderMesh37.Parent = Part35
999
CylinderMesh37.Offset = Vector3.new(0, 75, 0)
1000
CylinderMesh37.Scale = Vector3.new(1, 6.5, 1)
1001
Script38.Parent = Part35
1002
table.insert(cors,sandbox(Script38,function()
1003
function onTouched(hit)
1004
	script.Parent.Fire:play()
1005
end
1006
script.Parent.Touched:connect(onTouched)
1007
end))
1008
Sound39.Name = "Fire"
1009
Sound39.Parent = Part35
1010
Sound39.EmitterSize = 1000
1011
Sound39.MinDistance = 1000
1012
Sound39.Pitch = 0.60000002384186
1013
Sound39.PlaybackSpeed = 0.60000002384186
1014
Sound39.SoundId = "http://www.roblox.com/asset?id=2248511"
1015
Sound39.Volume = 4
1016
Script40.Name = "Lava Script"
1017
Script40.Parent = Part35
1018
table.insert(cors,sandbox(Script40,function()
1019
function onTouched(part)
1020
if part.Parent:FindFirstChild("Humanoid") ~= nil then
1021
part.Parent.Torso:BreakJoints()
1022
end
1023
end
1024
1025
script.Parent.Touched:connect(onTouched)
1026
end))
1027
Part41.Name = "Shatter"
1028
Part41.Parent = Model1
1029
Part41.CFrame = CFrame.new(240.012283, 155.552521, 393.456024, 0.999585629, 0.000480881077, -0.0287836809, -0.0287241023, -0.0497649834, -0.998347819, -0.00191250595, 0.998760879, -0.0497305393)
1030
Part41.Orientation = Vector3.new(86.7099991, -149.940002, -150.009995)
1031
Part41.Position = Vector3.new(240.012283, 155.552521, 393.456024)
1032
Part41.Rotation = Vector3.new(92.8499985, -1.64999998, -0.0299999993)
1033
Part41.Color = Color3.new(1, 0, 0)
1034
Part41.Transparency = 1
1035
Part41.Size = Vector3.new(9.13523674, 102.783638, 8.46861839)
1036
Part41.BackSurface = Enum.SurfaceType.Weld
1037
Part41.BottomSurface = Enum.SurfaceType.Weld
1038
Part41.BrickColor = BrickColor.new("Really red")
1039
Part41.CanCollide = false
1040
Part41.FrontSurface = Enum.SurfaceType.Weld
1041
Part41.LeftSurface = Enum.SurfaceType.Weld
1042
Part41.Material = Enum.Material.Neon
1043
Part41.Reflectance = 0.5
1044
Part41.RightSurface = Enum.SurfaceType.Weld
1045
Part41.TopSurface = Enum.SurfaceType.Weld
1046
Part41.brickColor = BrickColor.new("Really red")
1047
Part41.FormFactor = Enum.FormFactor.Symmetric
1048
Part41.formFactor = Enum.FormFactor.Symmetric
1049
Script42.Name = "Fade"
1050
Script42.Parent = Part41
1051
table.insert(cors,sandbox(Script42,function()
1052
bin = script.Parent
1053
1054
function activate(hit)
1055
	bin.Transparency = 0.2
1056
	wait(0.01)
1057
	bin.Transparency = 0.3
1058
	wait(0.01)
1059
	bin.Transparency = 0.4
1060
	wait(0.01)
1061
	bin.Transparency = 0.5
1062
	wait(0.01)
1063
	bin.Transparency = 0.6
1064
	wait(0.01)
1065
	bin.Transparency = 0.7
1066
	wait(0.01)
1067
	bin.Transparency = 0.8
1068
	wait(0.01)
1069
	bin.Transparency = 0.9
1070
	wait(0.01)
1071
	bin.Transparency = 1
1072
end
1073
script.Parent.Touched:connect(activate)
1074
1075
1076
end))
1077
CylinderMesh43.Parent = Part41
1078
CylinderMesh43.Offset = Vector3.new(0, 75, 0)
1079
CylinderMesh43.Scale = Vector3.new(1, 6.5, 1)
1080
Script44.Parent = Part41
1081
table.insert(cors,sandbox(Script44,function()
1082
function onTouched(hit)
1083
	script.Parent.Fire:play()
1084
end
1085
script.Parent.Touched:connect(onTouched)
1086
end))
1087
Sound45.Name = "Fire"
1088
Sound45.Parent = Part41
1089
Sound45.EmitterSize = 1000
1090
Sound45.MinDistance = 1000
1091
Sound45.Pitch = 0.60000002384186
1092
Sound45.PlaybackSpeed = 0.60000002384186
1093
Sound45.SoundId = "http://www.roblox.com/asset?id=2248511"
1094
Sound45.Volume = 4
1095
Script46.Name = "Lava Script"
1096
Script46.Parent = Part41
1097
table.insert(cors,sandbox(Script46,function()
1098
function onTouched(part)
1099
if part.Parent:FindFirstChild("Humanoid") ~= nil then
1100
part.Parent.Torso:BreakJoints()
1101
end
1102
end
1103
1104
script.Parent.Touched:connect(onTouched)
1105
end))
1106
Part47.Name = "Shatter"
1107
Part47.Parent = Model1
1108
Part47.CFrame = CFrame.new(236.299973, 119.940369, -538.815735, 0.999585509, 0.00792214368, -0.0276803747, -0.0284510124, 0.124318644, -0.991834402, -0.00441626878, 0.992210686, 0.124492511)
1109
Part47.Orientation = Vector3.new(82.6699982, -12.54, -12.8899994)
1110
Part47.Position = Vector3.new(236.299973, 119.940369, -538.815735)
1111
Part47.Rotation = Vector3.new(82.8499985, -1.58999991, -0.449999988)
1112
Part47.Color = Color3.new(1, 0, 0)
1113
Part47.Transparency = 1
1114
Part47.Size = Vector3.new(9.13523674, 102.783638, 8.46861839)
1115
Part47.BackSurface = Enum.SurfaceType.Weld
1116
Part47.BottomSurface = Enum.SurfaceType.Weld
1117
Part47.BrickColor = BrickColor.new("Really red")
1118
Part47.CanCollide = false
1119
Part47.FrontSurface = Enum.SurfaceType.Weld
1120
Part47.LeftSurface = Enum.SurfaceType.Weld
1121
Part47.Material = Enum.Material.Neon
1122
Part47.Reflectance = 0.5
1123
Part47.RightSurface = Enum.SurfaceType.Weld
1124
Part47.TopSurface = Enum.SurfaceType.Weld
1125
Part47.brickColor = BrickColor.new("Really red")
1126
Part47.FormFactor = Enum.FormFactor.Symmetric
1127
Part47.formFactor = Enum.FormFactor.Symmetric
1128
Script48.Name = "Fade"
1129
Script48.Parent = Part47
1130
table.insert(cors,sandbox(Script48,function()
1131
bin = script.Parent
1132
1133
function activate(hit)
1134
	bin.Transparency = 0.2
1135
	wait(0.01)
1136
	bin.Transparency = 0.3
1137
	wait(0.01)
1138
	bin.Transparency = 0.4
1139
	wait(0.01)
1140
	bin.Transparency = 0.5
1141
	wait(0.01)
1142
	bin.Transparency = 0.6
1143
	wait(0.01)
1144
	bin.Transparency = 0.7
1145
	wait(0.01)
1146
	bin.Transparency = 0.8
1147
	wait(0.01)
1148
	bin.Transparency = 0.9
1149
	wait(0.01)
1150
	bin.Transparency = 1
1151
end
1152
script.Parent.Touched:connect(activate)
1153
1154
1155
end))
1156
CylinderMesh49.Parent = Part47
1157
CylinderMesh49.Offset = Vector3.new(0, 75, 0)
1158
CylinderMesh49.Scale = Vector3.new(1, 6.5, 1)
1159
Script50.Parent = Part47
1160
table.insert(cors,sandbox(Script50,function()
1161
function onTouched(hit)
1162
	script.Parent.Fire:play()
1163
end
1164
script.Parent.Touched:connect(onTouched)
1165
end))
1166
Sound51.Name = "Fire"
1167
Sound51.Parent = Part47
1168
Sound51.EmitterSize = 1000
1169
Sound51.MinDistance = 1000
1170
Sound51.Pitch = 0.60000002384186
1171
Sound51.PlaybackSpeed = 0.60000002384186
1172
Sound51.SoundId = "http://www.roblox.com/asset?id=2248511"
1173
Sound51.Volume = 4
1174
Script52.Name = "Lava Script"
1175
Script52.Parent = Part47
1176
table.insert(cors,sandbox(Script52,function()
1177
function onTouched(part)
1178
if part.Parent:FindFirstChild("Humanoid") ~= nil then
1179
part.Parent.Torso:BreakJoints()
1180
end
1181
end
1182
1183
script.Parent.Touched:connect(onTouched)
1184
end))
1185
Part53.Name = " "
1186
Part53.Parent = Model1
1187
Part53.CFrame = CFrame.new(262.916138, 135.497894, -14.6219063, 0.911797941, 0.121225327, 0.392337978, 0.143219471, 0.801558256, -0.580510557, -0.384854376, 0.58549875, 0.713497281)
1188
Part53.Orientation = Vector3.new(35.4899979, 28.8099995, 10.1300001)
1189
Part53.Position = Vector3.new(262.916138, 135.497894, -14.6219063)
1190
Part53.Rotation = Vector3.new(39.1299973, 23.1000004, -7.56999969)
1191
Part53.Size = Vector3.new(1.23449135, 0.987593114, 1.23449135)
1192
Part53.Anchored = true
1193
Part53.BottomSurface = Enum.SurfaceType.Smooth
1194
Part53.TopSurface = Enum.SurfaceType.Smooth
1195
Part53.FormFactor = Enum.FormFactor.Plate
1196
Part53.formFactor = Enum.FormFactor.Plate
1197
ParticleEmitter54.Name = "Fire"
1198
ParticleEmitter54.Parent = Part53
1199
ParticleEmitter54.Speed = NumberRange.new(100, 100)
1200
ParticleEmitter54.Rotation = NumberRange.new(-45, -45)
1201
ParticleEmitter54.Color = ColorSequence.new(Color3.new(0.666667, 0, 0),Color3.new(1, 0, 0))
1202
ParticleEmitter54.LightEmission = 1
1203
ParticleEmitter54.Texture = "http://www.roblox.com/asset/?id=241936182"
1204
ParticleEmitter54.Transparency = NumberSequence.new(0,0.28749996423721,1)
1205
ParticleEmitter54.ZOffset = 1
1206
ParticleEmitter54.Size = NumberSequence.new(10,0)
1207
ParticleEmitter54.EmissionDirection = Enum.NormalId.Bottom
1208
ParticleEmitter54.Lifetime = NumberRange.new(0.60000002384186, 0.60000002384186)
1209
ParticleEmitter54.LockedToPart = true
1210
ParticleEmitter54.Rate = 250
1211
ParticleEmitter54.SpreadAngle = Vector2.new(50, 50)
1212
ParticleEmitter54.VelocitySpread = 50
1213
Part55.Name = " "
1214
Part55.Parent = Model1
1215
Part55.CFrame = CFrame.new(257.581726, 130.483658, 6.27809906, -0.974856734, 0.123940133, 0.185183972, -0.0177562926, 0.785197079, -0.618991315, -0.222123757, -0.606716096, -0.763253987)
1216
Part55.Orientation = Vector3.new(38.2399979, 166.360001, -1.29999995)
1217
Part55.Position = Vector3.new(257.581726, 130.483658, 6.27809906)
1218
Part55.Rotation = Vector3.new(140.959991, 10.6700001, -172.75)
1219
Part55.Size = Vector3.new(1.23449135, 0.987593114, 1.23449135)
1220
Part55.Anchored = true
1221
Part55.BottomSurface = Enum.SurfaceType.Smooth
1222
Part55.TopSurface = Enum.SurfaceType.Smooth
1223
Part55.FormFactor = Enum.FormFactor.Plate
1224
Part55.formFactor = Enum.FormFactor.Plate
1225
ParticleEmitter56.Name = "Fire"
1226
ParticleEmitter56.Parent = Part55
1227
ParticleEmitter56.Speed = NumberRange.new(100, 100)
1228
ParticleEmitter56.Rotation = NumberRange.new(-45, -45)
1229
ParticleEmitter56.Color = ColorSequence.new(Color3.new(0.666667, 0, 0),Color3.new(1, 0, 0))
1230
ParticleEmitter56.LightEmission = 1
1231
ParticleEmitter56.Texture = "http://www.roblox.com/asset/?id=241936182"
1232
ParticleEmitter56.Transparency = NumberSequence.new(0,0.28749996423721,1)
1233
ParticleEmitter56.ZOffset = 1
1234
ParticleEmitter56.Size = NumberSequence.new(10,0)
1235
ParticleEmitter56.EmissionDirection = Enum.NormalId.Bottom
1236
ParticleEmitter56.Lifetime = NumberRange.new(0.60000002384186, 0.60000002384186)
1237
ParticleEmitter56.LockedToPart = true
1238
ParticleEmitter56.Rate = 250
1239
ParticleEmitter56.SpreadAngle = Vector2.new(50, 50)
1240
ParticleEmitter56.VelocitySpread = 50
1241
Part57.Name = "Shatter"
1242
Part57.Parent = Model1
1243
Part57.CFrame = CFrame.new(253.665207, 35.7730713, -10.1541901, 0.999585509, 0.0286352765, 0.00299632479, -0.0284508113, 0.998354912, -0.049779769, -0.00441685319, 0.0496738851, 0.998755753)
1244
Part57.Orientation = Vector3.new(2.8499999, 0.170000002, -1.63)
1245
Part57.Position = Vector3.new(253.665207, 35.7730713, -10.1541901)
1246
Part57.Rotation = Vector3.new(2.8499999, 0.170000002, -1.63999999)
1247
Part57.Color = Color3.new(1, 0, 0)
1248
Part57.Transparency = 1
1249
Part57.Size = Vector3.new(22.1352329, 65.783638, 23.6686192)
1250
Part57.BackSurface = Enum.SurfaceType.Weld
1251
Part57.BottomSurface = Enum.SurfaceType.Weld
1252
Part57.BrickColor = BrickColor.new("Really red")
1253
Part57.CanCollide = false
1254
Part57.FrontSurface = Enum.SurfaceType.Weld
1255
Part57.LeftSurface = Enum.SurfaceType.Weld
1256
Part57.Material = Enum.Material.Neon
1257
Part57.Reflectance = 0.5
1258
Part57.RightSurface = Enum.SurfaceType.Weld
1259
Part57.TopSurface = Enum.SurfaceType.Weld
1260
Part57.brickColor = BrickColor.new("Really red")
1261
Part57.FormFactor = Enum.FormFactor.Symmetric
1262
Part57.formFactor = Enum.FormFactor.Symmetric
1263
Script58.Name = "Fade"
1264
Script58.Parent = Part57
1265
table.insert(cors,sandbox(Script58,function()
1266
bin = script.Parent
1267
1268
function activate(hit)
1269
	bin.Transparency = 0.2
1270
	wait(0.01)
1271
	bin.Transparency = 0.3
1272
	wait(0.01)
1273
	bin.Transparency = 0.4
1274
	wait(0.01)
1275
	bin.Transparency = 0.5
1276
	wait(0.01)
1277
	bin.Transparency = 0.6
1278
	wait(0.01)
1279
	bin.Transparency = 0.7
1280
	wait(0.01)
1281
	bin.Transparency = 0.8
1282
	wait(0.01)
1283
	bin.Transparency = 0.9
1284
	wait(0.01)
1285
	bin.Transparency = 1
1286
end
1287
script.Parent.Touched:connect(activate)
1288
1289
1290
end))
1291
CylinderMesh59.Parent = Part57
1292
CylinderMesh59.Offset = Vector3.new(0, 25, 0)
1293
CylinderMesh59.Scale = Vector3.new(1, 4.5, 1)
1294
Script60.Parent = Part57
1295
table.insert(cors,sandbox(Script60,function()
1296
function onTouched(hit)
1297
	script.Parent.Fire:play()
1298
end
1299
script.Parent.Touched:connect(onTouched)
1300
end))
1301
Sound61.Name = "Fire"
1302
Sound61.Parent = Part57
1303
Sound61.EmitterSize = 1000
1304
Sound61.MinDistance = 1000
1305
Sound61.Pitch = 0.60000002384186
1306
Sound61.PlaybackSpeed = 0.60000002384186
1307
Sound61.SoundId = "http://www.roblox.com/asset?id=2248511"
1308
Sound61.Volume = 4
1309
Script62.Name = "Lava Script"
1310
Script62.Parent = Part57
1311
table.insert(cors,sandbox(Script62,function()
1312
function onTouched(part)
1313
if part.Parent:FindFirstChild("Humanoid") ~= nil then
1314
part.Parent.Torso:BreakJoints()
1315
end
1316
end
1317
1318
script.Parent.Touched:connect(onTouched)
1319
end))
1320
Model63.Name = "Head"
1321
Model63.Parent = Model0
1322
UnionOperation64.Parent = Model63
1323
UnionOperation64.CFrame = CFrame.new(238.314423, 226.662888, 9.3290863, -0.999578953, 0.0290145539, -0.000376083568, 0.0289597735, 0.998337626, 0.0498331301, 0.00182134425, 0.0498012528, -0.998757541)
1324
UnionOperation64.Orientation = Vector3.new(-2.8599999, -179.979996, 1.65999997)
1325
UnionOperation64.Position = Vector3.new(238.314423, 226.662888, 9.3290863)
1326
UnionOperation64.Rotation = Vector3.new(-177.139999, -0.0199999996, -178.339996)
1327
UnionOperation64.Color = Color3.new(1, 0, 0)
1328
UnionOperation64.Size = Vector3.new(0.731566668, 2.22208261, 2.22208357)
1329
UnionOperation64.BrickColor = BrickColor.new("Really red")
1330
UnionOperation64.Material = Enum.Material.Neon
1331
UnionOperation64.brickColor = BrickColor.new("Really red")
1332
UnionOperation64.UsePartColor = true
1333
UnionOperation65.Parent = Model63
1334
UnionOperation65.CFrame = CFrame.new(238.314407, 226.669022, 9.20576477, -0.999578953, 0.0290145539, -0.000376083568, 0.0289597735, 0.998337626, 0.0498331301, 0.00182134425, 0.0498012528, -0.998757541)
1335
UnionOperation65.Orientation = Vector3.new(-2.8599999, -179.979996, 1.65999997)
1336
UnionOperation65.Position = Vector3.new(238.314407, 226.669022, 9.20576477)
1337
UnionOperation65.Rotation = Vector3.new(-177.139999, -0.0199999996, -178.339996)
1338
UnionOperation65.Color = Color3.new(0.592157, 0, 0)
1339
UnionOperation65.Size = Vector3.new(1.46313381, 4.44416523, 4.44416857)
1340
UnionOperation65.BrickColor = BrickColor.new("Crimson")
1341
UnionOperation65.Material = Enum.Material.Neon
1342
UnionOperation65.brickColor = BrickColor.new("Crimson")
1343
UnionOperation65.UsePartColor = true
1344
Part66.Name = "Handle"
1345
Part66.Parent = Model63
1346
Part66.CFrame = CFrame.new(248.086517, 223.699707, -0.307014465, 0.000416902825, 0.314539552, 0.949232578, -0.04983202, -0.948058367, 0.314172506, 0.998767376, -0.0474323109, 0.0152844461)
1347
Part66.Orientation = Vector3.new(-18.3099995, 89.0799942, -176.98999)
1348
Part66.Position = Vector3.new(248.086517, 223.699707, -0.307014465)
1349
Part66.Rotation = Vector3.new(-87.2099991, 71.659996, -89.9199982)
1350
Part66.Color = Color3.new(0.972549, 0.972549, 0.972549)
1351
Part66.Size = Vector3.new(3.3260591, 3.3260591, 3.3260591)
1352
Part66.BottomSurface = Enum.SurfaceType.Smooth
1353
Part66.BrickColor = BrickColor.new("Institutional white")
1354
Part66.Material = Enum.Material.Metal
1355
Part66.TopSurface = Enum.SurfaceType.Smooth
1356
Part66.brickColor = BrickColor.new("Institutional white")
1357
Part66.FormFactor = Enum.FormFactor.Symmetric
1358
Part66.formFactor = Enum.FormFactor.Symmetric
1359
SpecialMesh67.Parent = Part66
1360
SpecialMesh67.MeshId = "http://www.roblox.com/asset/?id=21057589"
1361
SpecialMesh67.Scale = Vector3.new(24.6898289, 30.8622837, 16.0483894)
1362
SpecialMesh67.MeshType = Enum.MeshType.FileMesh
1363
UnionOperation68.Parent = Model63
1364
UnionOperation68.CFrame = CFrame.new(256.070313, 225.963394, -0.327735901, -0.996056914, -0.000202496187, -0.0887173787, -0.00531769032, 0.998335719, 0.0574246123, 0.0885581151, 0.0576699525, -0.994400144)
1365
UnionOperation68.Orientation = Vector3.new(-3.28999996, -174.899994, -0.310000002)
1366
UnionOperation68.Position = Vector3.new(256.070313, 225.963394, -0.327735901)
1367
UnionOperation68.Rotation = Vector3.new(-176.690002, -5.08999968, 179.98999)
1368
UnionOperation68.Color = Color3.new(0.639216, 0.635294, 0.647059)
1369
UnionOperation68.Size = Vector3.new(42.0630302, 42.226326, 41.1241989)
1370
UnionOperation68.BottomParamA = -0.10000000149012
1371
UnionOperation68.BottomParamB = 0.10000000149012
1372
UnionOperation68.BottomSurface = Enum.SurfaceType.Motor
1373
UnionOperation68.BottomSurfaceInput = Enum.InputType.Constant
1374
UnionOperation68.BrickColor = BrickColor.new("Medium stone grey")
1375
UnionOperation68.Material = Enum.Material.Metal
1376
UnionOperation68.brickColor = BrickColor.new("Medium stone grey")
1377
Part69.Name = "Handle"
1378
Part69.Parent = Model63
1379
Part69.CFrame = CFrame.new(253.078461, 215.361496, -0.724945068, -0.000418284559, -0.474598885, 0.880202174, 0.0498288907, 0.879098833, 0.474027723, -0.99875766, 0.0440577716, 0.0232810229)
1380
Part69.Orientation = Vector3.new(-28.2999992, 88.4799957, 3.24000001)
1381
Part69.Position = Vector3.new(253.078461, 215.361496, -0.724945068)
1382
Part69.Rotation = Vector3.new(-87.1899948, 61.6699982, 90.0499954)
1383
Part69.Color = Color3.new(0.972549, 0.972549, 0.972549)
1384
Part69.Size = Vector3.new(3.3260591, 3.3260591, 3.3260591)
1385
Part69.BottomSurface = Enum.SurfaceType.Smooth
1386
Part69.BrickColor = BrickColor.new("Institutional white")
1387
Part69.Material = Enum.Material.Metal
1388
Part69.TopSurface = Enum.SurfaceType.Smooth
1389
Part69.brickColor = BrickColor.new("Institutional white")
1390
Part69.FormFactor = Enum.FormFactor.Symmetric
1391
Part69.formFactor = Enum.FormFactor.Symmetric
1392
SpecialMesh70.Parent = Part69
1393
SpecialMesh70.MeshId = "http://www.roblox.com/asset/?id=21057589"
1394
SpecialMesh70.Scale = Vector3.new(23.4553452, 24.6898289, 16.0483894)
1395
SpecialMesh70.MeshType = Enum.MeshType.FileMesh
1396
Script71.Name = "qPerfectionWeld"
1397
Script71.Parent = Model63
1398
table.insert(cors,sandbox(Script71,function()
1399
-- Created by Quenty (@Quenty, follow me on twitter).
1400
-- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
1401
-- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.
1402
1403
--[[ INSTRUCTIONS
1404
- Place in the model
1405
- Make sure model is anchored
1406
- That's it. It will weld the model and all children. 
1407
1408
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
1409
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
1410
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
1411
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
1412
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
1413
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
1414
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
1415
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
1416
1417
This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes. 
1418
]]
1419
1420
--[[ DOCUMENTATION
1421
- Will work in tools. If ran more than once it will not create more than one weld.  This is especially useful for tools that are dropped and then picked up again.
1422
- Will work in PBS servers
1423
- Will work as long as it starts out with the part anchored
1424
- Stores the relative CFrame as a CFrame value
1425
- Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
1426
- Utilizes a recursive algorith to find all parts in the model
1427
- Will reweld on script reparent if the script is initially parented to a tool.
1428
- Welds as fast as possible
1429
]]
1430
1431
-- qPerfectionWeld.lua
1432
-- Created 10/6/2014
1433
-- Author: Quenty
1434
-- Version 1.0.3
1435
1436
-- Updated 10/14/2014 - Updated to 1.0.1
1437
--- Bug fix with existing ROBLOX welds ? Repro by asimo3089
1438
1439
-- Updated 10/14/2014 - Updated to 1.0.2
1440
--- Fixed bug fix. 
1441
1442
-- Updated 10/14/2014 - Updated to 1.0.3
1443
--- Now handles joints semi-acceptably. May be rather hacky with some joints. :/
1444
1445
local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).
1446
1447
1448
local function CallOnChildren(Instance, FunctionToCall)
1449
	-- Calls a function on each of the children of a certain object, using recursion.  
1450
1451
	FunctionToCall(Instance)
1452
1453
	for _, Child in next, Instance:GetChildren() do
1454
		CallOnChildren(Child, FunctionToCall)
1455
	end
1456
end
1457
1458
local function GetNearestParent(Instance, ClassName)
1459
	-- Returns the nearest parent of a certain class, or returns nil
1460
1461
	local Ancestor = Instance
1462
	repeat
1463
		Ancestor = Ancestor.Parent
1464
		if Ancestor == nil then
1465
			return nil
1466
		end
1467
	until Ancestor:IsA(ClassName)
1468
1469
	return Ancestor
1470
end
1471
1472
local function GetBricks(StartInstance)
1473
	local List = {}
1474
1475
	-- if StartInstance:IsA("BasePart") then
1476
	-- 	List[#List+1] = StartInstance
1477
	-- end
1478
1479
	CallOnChildren(StartInstance, function(Item)
1480
		if Item:IsA("BasePart") then
1481
			List[#List+1] = Item;
1482
		end
1483
	end)
1484
1485
	return List
1486
end
1487
1488
local function Modify(Instance, Values)
1489
	-- Modifies an Instance by using a table.  
1490
1491
	assert(type(Values) == "table", "Values is not a table");
1492
1493
	for Index, Value in next, Values do
1494
		if type(Index) == "number" then
1495
			Value.Parent = Instance
1496
		else
1497
			Instance[Index] = Value
1498
		end
1499
	end
1500
	return Instance
1501
end
1502
1503
local function Make(ClassType, Properties)
1504
	-- Using a syntax hack to create a nice way to Make new items.  
1505
1506
	return Modify(Instance.new(ClassType), Properties)
1507
end
1508
1509
local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
1510
local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}
1511
1512
local function HasWheelJoint(Part)
1513
	for _, SurfaceName in pairs(Surfaces) do
1514
		for _, HingSurfaceName in pairs(HingSurfaces) do
1515
			if Part[SurfaceName].Name == HingSurfaceName then
1516
				return true
1517
			end
1518
		end
1519
	end
1520
	
1521
	return false
1522
end
1523
1524
local function ShouldBreakJoints(Part)
1525
	--- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
1526
	--  definitely some edge cases. 
1527
1528
	if NEVER_BREAK_JOINTS then
1529
		return false
1530
	end
1531
	
1532
	if HasWheelJoint(Part) then
1533
		return false
1534
	end
1535
	
1536
	local Connected = Part:GetConnectedParts()
1537
	
1538
	if #Connected == 1 then
1539
		return false
1540
	end
1541
	
1542
	for _, Item in pairs(Connected) do
1543
		if HasWheelJoint(Item) then
1544
			return false
1545
		elseif not Item:IsDescendantOf(script.Parent) then
1546
			return false
1547
		end
1548
	end
1549
	
1550
	return true
1551
end
1552
1553
local function WeldTogether(Part0, Part1, JointType, WeldParent)
1554
	--- Weld's 2 parts together
1555
	-- @param Part0 The first part
1556
	-- @param Part1 The second part (Dependent part most of the time).
1557
	-- @param [JointType] The type of joint. Defaults to weld.
1558
	-- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
1559
	-- @return The weld created.
1560
1561
	JointType = JointType or "Weld"
1562
	local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
1563
	
1564
	local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
1565
	Modify(NewWeld, {
1566
		Name = "qCFrameWeldThingy";
1567
		Part0  = Part0;
1568
		Part1  = Part1;
1569
		C0     = CFrame.new();--Part0.CFrame:inverse();
1570
		C1     = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
1571
		Parent = Part1;
1572
	})
1573
1574
	if not RelativeValue then
1575
		RelativeValue = Make("CFrameValue", {
1576
			Parent     = Part1;
1577
			Name       = "qRelativeCFrameWeldValue";
1578
			Archivable = true;
1579
			Value      = NewWeld.C1;
1580
		})
1581
	end
1582
1583
	return NewWeld
1584
end
1585
1586
local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
1587
	-- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
1588
	-- @param MainPart The part to weld the model to (can be in the model).
1589
	-- @param [JointType] The type of joint. Defaults to weld. 
1590
	-- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
1591
	
1592
	for _, Part in pairs(Parts) do
1593
		if ShouldBreakJoints(Part) then
1594
			Part:BreakJoints()
1595
		end
1596
	end
1597
	
1598
	for _, Part in pairs(Parts) do
1599
		if Part ~= MainPart then
1600
			WeldTogether(MainPart, Part, JointType, MainPart)
1601
		end
1602
	end
1603
1604
	if not DoNotUnanchor then
1605
		for _, Part in pairs(Parts) do
1606
			Part.Anchored = false
1607
		end
1608
		MainPart.Anchored = false
1609
	end
1610
end
1611
1612
local function PerfectionWeld()	
1613
	local Tool = GetNearestParent(script, "Tool")
1614
1615
	local Parts = GetBricks(script.Parent)
1616
	local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]
1617
1618
	if PrimaryPart then
1619
		WeldParts(Parts, PrimaryPart, "Weld", false)
1620
	else
1621
		warn("qWeld - Unable to weld part")
1622
	end
1623
	
1624
	return Tool
1625
end
1626
1627
local Tool = PerfectionWeld()
1628
1629
1630
if Tool and script.ClassName == "Script" then
1631
	--- Don't bother with local scripts
1632
1633
	script.Parent.AncestryChanged:connect(function()
1634
		PerfectionWeld()
1635
	end)
1636
end
1637
1638
-- Created by Quenty (@Quenty, follow me on twitter).
1639
1640
end))
1641
Part72.Parent = Model63
1642
Part72.CFrame = CFrame.new(236.023392, 227.942581, 1.53780365, -0.000400150049, 0.0291465167, 0.999575138, 0.0497951023, 0.998335719, -0.0290904455, -0.998759449, 0.0497622974, -0.00185083784)
1643
Part72.Orientation = Vector3.new(1.66999996, 90.1100006, 2.8599999)
1644
Part72.Position = Vector3.new(236.023392, 227.942581, 1.53780365)
1645
Part72.Rotation = Vector3.new(93.6399994, 88.3300018, -90.7900009)
1646
Part72.Color = Color3.new(0, 1, 0)
1647
Part72.Transparency = 1
1648
Part72.Size = Vector3.new(0.814765275, 0.814765275, 0.814765275)
1649
Part72.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
1650
Part72.BrickColor = BrickColor.new("Lime green")
1651
Part72.CanCollide = false
1652
Part72.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
1653
Part72.Material = Enum.Material.Metal
1654
Part72.brickColor = BrickColor.new("Lime green")
1655
Part72.FormFactor = Enum.FormFactor.Custom
1656
Part72.formFactor = Enum.FormFactor.Custom
1657
Part72.Shape = Enum.PartType.Ball
1658
Humanoid73.Parent = Part72
1659
Humanoid73.Health = 0
1660
Humanoid73.MaxHealth = 0
1661
Humanoid73.NameOcclusion = Enum.NameOcclusion.NoOcclusion
1662
Humanoid73.WalkSpeed = 10
1663
Humanoid73.maxHealth = 0
1664
Script74.Parent = Part72
1665
table.insert(cors,sandbox(Script74,function()
1666
bin = script.Parent
1667
1668
function move(target)
1669
	local dir = (target.Position - bin.Position).unit
1670
	local spawnPos = bin.Position
1671
	local pos = spawnPos + (dir * 1)
1672
	bin:findFirstChild("BodyGyro").cframe = CFrame.new(pos,  pos + dir)
1673
	bin:findFirstChild("BodyGyro").maxTorque = Vector3.new(9000,9000,9000)
1674
end
1675
1676
function moveTo(target)
1677
	bin.BodyPosition.position = target.Position
1678
	bin.BodyPosition.maxForce = Vector3.new(10000,10000,10000) * bin.Speed.Value
1679
end
1680
1681
function findNearestTorso(pos)
1682
	local list = game.Workspace:GetChildren()
1683
	local torso = nil
1684
	local dist = 10000000000000000
1685
	local temp = nil
1686
	local human = nil
1687
	local temp2 = nil
1688
	for x = 1, #list do
1689
		temp2 = list[x]
1690
		if (temp2.className == "Model") and (temp2 ~= script.Parent) then
1691
			temp = temp2:findFirstChild("Torso")
1692
			human = temp2:findFirstChild("Humanoid")
1693
			if (temp ~= nil) and (human ~= nil) and (human.Health > 0)  then
1694
				if (temp.Position - pos).magnitude < dist then
1695
					torso = temp
1696
					dist = (temp.Position - pos).magnitude
1697
				end
1698
			end
1699
		end
1700
	end
1701
	return torso
1702
end
1703
1704
function shoot(pos)
1705
	dir = (pos - bin.CFrame.p).unit 
1706
	for i = 1, 50 do 
1707
		local ex = Instance.new("Explosion") 
1708
		ex.BlastRadius = 1
1709
		ex.Position = bin.Position + (dir * 10 * i) + (dir * 7) 
1710
		ex.Parent = game.Workspace 
1711
	end
1712
end
1713
1714
function shootAt(torso)
1715
	local dir = (torso.Position - bin.Position).unit
1716
	local spawnPos = bin.Position
1717
	local pos = spawnPos + (dir * 1)
1718
	shoot(pos)
1719
end
1720
1721
while true do
1722
	local torso = findNearestTorso(bin.Position)
1723
	if torso~=nil then
1724
		move(torso)
1725
		moveTo(torso)
1726
	end
1727
	wait()
1728
end
1729
1730
end))
1731
Script75.Parent = Part72
1732
table.insert(cors,sandbox(Script75,function()
1733
function onTouched(part)
1734
	local h = part.Parent:findFirstChild("Humanoid")
1735
	if h~=nil then
1736
		h.Health = h.Health 100
1737
		wait(1)
1738
	end
1739
end
1740
1741
script.Parent.Touched:connect(onTouched)
1742
1743
end))
1744
NumberValue76.Name = "Speed"
1745
NumberValue76.Parent = Part72
1746
NumberValue76.Value = 300
1747
BodyGyro77.Parent = Part72
1748
BodyGyro77.CFrame = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
1749
BodyGyro77.MaxTorque = Vector3.new(9000, 9000, 9000)
1750
BodyGyro77.maxTorque = Vector3.new(9000, 9000, 9000)
1751
BodyGyro77.cframe = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
1752
BodyPosition78.Parent = Part72
1753
BodyPosition78.Position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
1754
BodyPosition78.MaxForce = Vector3.new(6000, 6000, 6000)
1755
BodyPosition78.maxForce = Vector3.new(6000, 6000, 6000)
1756
BodyPosition78.position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
1757
Script79.Name = "SuperRun"
1758
Script79.Parent = Model63
1759
table.insert(cors,sandbox(Script79,function()
1760
function makeRun(character)
1761
	local h = character:FindFirstChild("Humanoid")
1762
	if (h~= nil) then
1763
		h.WalkSpeed = 60
1764
	end
1765
1766
end
1767
1768
function onPlayerRespawn(property, player)
1769
	-- need to connect to new humanoid
1770
	
1771
	if property == "Character" and player.Character ~= nil then
1772
		makeRun(player.Character)
1773
	end
1774
end
1775
1776
1777
1778
function onPlayerEntered(newPlayer)
1779
		-- VERY UGLY HACK
1780
		-- Will this leak threads?
1781
		-- Is the problem even what I think it is (player arrived before character)?
1782
		while true do
1783
			if newPlayer.Character ~= nil then break end
1784
			wait(1)
1785
		end
1786
1787
		-- start to listen for new humanoid
1788
		newPlayer.Changed:connect(function(property) onPlayerRespawn(property, newPlayer) end )
1789
1790
		makeRun(newPlayer.Character)
1791
end
1792
1793
1794
game.Players.ChildAdded:connect(onPlayerEntered)
1795
1796
1797
1798
1799
end))
1800
Part80.Name = "Shatter"
1801
Part80.Parent = Model63
1802
Part80.CFrame = CFrame.new(-2.86876011, 233.069382, 9.46652985, 0.000479114155, -0.999585629, -0.0287835505, -0.049765408, 0.0287240595, -0.998347759, 0.998760819, 0.00191074784, -0.0497310162)
1803
Part80.Orientation = Vector3.new(86.7099991, -149.940002, -60.0099983)
1804
Part80.Position = Vector3.new(-2.86876011, 233.069382, 9.46652985)
1805
Part80.Rotation = Vector3.new(92.8499985, -1.64999998, 89.9700012)
1806
Part80.Color = Color3.new(1, 0, 0)
1807
Part80.Transparency = 1
1808
Part80.Size = Vector3.new(5.67866373, 84.2662811, 3.03685927)
1809
Part80.BackSurface = Enum.SurfaceType.Weld
1810
Part80.BottomSurface = Enum.SurfaceType.Weld
1811
Part80.BrickColor = BrickColor.new("Really red")
1812
Part80.CanCollide = false
1813
Part80.FrontSurface = Enum.SurfaceType.Weld
1814
Part80.LeftSurface = Enum.SurfaceType.Weld
1815
Part80.Material = Enum.Material.Neon
1816
Part80.Reflectance = 0.5
1817
Part80.RightSurface = Enum.SurfaceType.Weld
1818
Part80.TopSurface = Enum.SurfaceType.Weld
1819
Part80.brickColor = BrickColor.new("Really red")
1820
Part80.FormFactor = Enum.FormFactor.Symmetric
1821
Part80.formFactor = Enum.FormFactor.Symmetric
1822
Script81.Name = "Fade"
1823
Script81.Parent = Part80
1824
table.insert(cors,sandbox(Script81,function()
1825
bin = script.Parent
1826
1827
function activate(hit)
1828
	bin.Transparency = 0.2
1829
	wait(0.01)
1830
	bin.Transparency = 0.3
1831
	wait(0.01)
1832
	bin.Transparency = 0.4
1833
	wait(0.01)
1834
	bin.Transparency = 0.5
1835
	wait(0.01)
1836
	bin.Transparency = 0.6
1837
	wait(0.01)
1838
	bin.Transparency = 0.7
1839
	wait(0.01)
1840
	bin.Transparency = 0.8
1841
	wait(0.01)
1842
	bin.Transparency = 0.9
1843
	wait(0.01)
1844
	bin.Transparency = 1
1845
end
1846
script.Parent.Touched:connect(activate)
1847
1848
1849
end))
1850
CylinderMesh82.Parent = Part80
1851
CylinderMesh82.Offset = Vector3.new(0, 150, 0)
1852
CylinderMesh82.Scale = Vector3.new(1, 10.5, 1)
1853
Script83.Parent = Part80
1854
table.insert(cors,sandbox(Script83,function()
1855
function onTouched(hit)
1856
	script.Parent.Fire:play()
1857
end
1858
script.Parent.Touched:connect(onTouched)
1859
end))
1860
Sound84.Name = "Fire"
1861
Sound84.Parent = Part80
1862
Sound84.EmitterSize = 1000
1863
Sound84.MinDistance = 1000
1864
Sound84.Pitch = 0.60000002384186
1865
Sound84.PlaybackSpeed = 0.60000002384186
1866
Sound84.SoundId = "http://www.roblox.com/asset?id=2248511"
1867
Sound84.Volume = 5
1868
Script85.Name = "Lava Script"
1869
Script85.Parent = Part80
1870
table.insert(cors,sandbox(Script85,function()
1871
function onTouched(part)
1872
if part.Parent:FindFirstChild("Humanoid") ~= nil then
1873
part.Parent.Torso:BreakJoints()
1874
end
1875
end
1876
1877
script.Parent.Touched:connect(onTouched)
1878
end))
1879
Script86.Name = "MusicScript"
1880
Script86.Parent = Model63
1881
table.insert(cors,sandbox(Script86,function()
1882
--Made by Stickmasterluke
1883
gw=game.Workspace
1884
1885
function message(text,time)
1886
	local oldmsg=gw:FindFirstChild("Hint")
1887
	if oldmsg then
1888
		oldmsg.Parent=nil
1889
	end
1890
	local spacenumber=time*0
1891
	local msg=Instance.new("Hint")
1892
	msg.Parent=gw
1893
	--[[for i=1, spacenumber do
1894
		wait(1/25)
1895
		local maketext=""
1896
		for i2=1, i do
1897
			maketext=maketext.." "
1898
		end
1899
		maketext=maketext..text
1900
		for i2=1, spacenumber-i do
1901
			maketext=maketext.." "
1902
		end
1903
		msg.Text=maketext
1904
	end]]
1905
	msg.Text=text
1906
	wait(0)
1907
	msg.Parent=nil
1908
end
1909
1910
last=""
1911
lastlast=""
1912
while true do
1913
	wait(0)
1914
	local tracks=script:GetChildren()
1915
	local rn=math.random(1,#tracks)
1916
	local track=tracks[rn]
1917
	if track~=nil then
1918
		if track.className=="Sound" and track.Name~=last and track.Name~=lastlast then
1919
			lastlast=last
1920
			last=track.Name
1921
			message(track.Name,50)
1922
			track:play()
1923
			wait(10000000000000000000000000)
1924
			track:pause()
1925
		end
1926
	end
1927
end
1928
	
1929
end))
1930
Sound87.Parent = Script86
1931
Sound87.Looped = true
1932
Sound87.Pitch = 0.80000001192093
1933
Sound87.PlaybackSpeed = 0.80000001192093
1934
Sound87.Playing = true
1935
Sound87.RollOffMode = Enum.RollOffMode.Linear
1936
Sound87.SoundId = "rbxassetid://459170477"
1937
Sound87.Volume = 8
1938
UnionOperation88.Parent = Model63
1939
UnionOperation88.CFrame = CFrame.new(238.30835, 227.437744, -6.20638275, -0.999578953, 0.0290145539, -0.000376083568, 0.0289597735, 0.998337626, 0.0498331301, 0.00182134425, 0.0498012528, -0.998757541)
1940
UnionOperation88.Orientation = Vector3.new(-2.8599999, -179.979996, 1.65999997)
1941
UnionOperation88.Position = Vector3.new(238.30835, 227.437744, -6.20638275)
1942
UnionOperation88.Rotation = Vector3.new(-177.139999, -0.0199999996, -178.339996)
1943
UnionOperation88.Color = Color3.new(1, 0, 0)
1944
UnionOperation88.Size = Vector3.new(0.731566668, 2.22208261, 2.22208357)
1945
UnionOperation88.BrickColor = BrickColor.new("Really red")
1946
UnionOperation88.Material = Enum.Material.Neon
1947
UnionOperation88.brickColor = BrickColor.new("Really red")
1948
UnionOperation88.UsePartColor = true
1949
Part89.Name = "Shatter"
1950
Part89.Parent = Model63
1951
Part89.CFrame = CFrame.new(-2.87608433, 233.831253, -5.82238388, 0.000479114155, -0.999585629, -0.0287835505, -0.049765408, 0.0287240595, -0.998347759, 0.998760819, 0.00191074784, -0.0497310162)
1952
Part89.Orientation = Vector3.new(86.7099991, -149.940002, -60.0099983)
1953
Part89.Position = Vector3.new(-2.87608433, 233.831253, -5.82238388)
1954
Part89.Rotation = Vector3.new(92.8499985, -1.64999998, 89.9700012)
1955
Part89.Color = Color3.new(1, 0, 0)
1956
Part89.Transparency = 1
1957
Part89.Size = Vector3.new(5.67866373, 84.2662811, 3.03685927)
1958
Part89.BackSurface = Enum.SurfaceType.Weld
1959
Part89.BottomSurface = Enum.SurfaceType.Weld
1960
Part89.BrickColor = BrickColor.new("Really red")
1961
Part89.CanCollide = false
1962
Part89.FrontSurface = Enum.SurfaceType.Weld
1963
Part89.LeftSurface = Enum.SurfaceType.Weld
1964
Part89.Material = Enum.Material.Neon
1965
Part89.Reflectance = 0.5
1966
Part89.RightSurface = Enum.SurfaceType.Weld
1967
Part89.TopSurface = Enum.SurfaceType.Weld
1968
Part89.brickColor = BrickColor.new("Really red")
1969
Part89.FormFactor = Enum.FormFactor.Symmetric
1970
Part89.formFactor = Enum.FormFactor.Symmetric
1971
Script90.Name = "Fade"
1972
Script90.Parent = Part89
1973
table.insert(cors,sandbox(Script90,function()
1974
bin = script.Parent
1975
1976
function activate(hit)
1977
	bin.Transparency = 0.2
1978
	wait(0.01)
1979
	bin.Transparency = 0.3
1980
	wait(0.01)
1981
	bin.Transparency = 0.4
1982
	wait(0.01)
1983
	bin.Transparency = 0.5
1984
	wait(0.01)
1985
	bin.Transparency = 0.6
1986
	wait(0.01)
1987
	bin.Transparency = 0.7
1988
	wait(0.01)
1989
	bin.Transparency = 0.8
1990
	wait(0.01)
1991
	bin.Transparency = 0.9
1992
	wait(0.01)
1993
	bin.Transparency = 1
1994
end
1995
script.Parent.Touched:connect(activate)
1996
1997
1998
end))
1999
CylinderMesh91.Parent = Part89
2000
CylinderMesh91.Offset = Vector3.new(0, 150, 0)
2001
CylinderMesh91.Scale = Vector3.new(1, 10.5, 1)
2002
Script92.Parent = Part89
2003
table.insert(cors,sandbox(Script92,function()
2004
function onTouched(hit)
2005
	script.Parent.Fire:play()
2006
end
2007
script.Parent.Touched:connect(onTouched)
2008
end))
2009
Sound93.Name = "Fire"
2010
Sound93.Parent = Part89
2011
Sound93.EmitterSize = 1000
2012
Sound93.MinDistance = 1000
2013
Sound93.Pitch = 0.60000002384186
2014
Sound93.PlaybackSpeed = 0.60000002384186
2015
Sound93.SoundId = "http://www.roblox.com/asset?id=2248511"
2016
Sound93.Volume = 5
2017
Script94.Name = "Lava Script"
2018
Script94.Parent = Part89
2019
table.insert(cors,sandbox(Script94,function()
2020
function onTouched(part)
2021
if part.Parent:FindFirstChild("Humanoid") ~= nil then
2022
part.Parent.Torso:BreakJoints()
2023
end
2024
end
2025
2026
script.Parent.Touched:connect(onTouched)
2027
end))
2028
Script95.Parent = Model63
2029
table.insert(cors,sandbox(Script95,function()
2030
game.Lighting.TimeOfDay = "00:00:00"
2031
end))
2032
Script96.Parent = Model63
2033
table.insert(cors,sandbox(Script96,function()
2034
--Leonlai Fog Script. :D
2035
2036
game.Lighting.FogStart = 10 
2037
game.Lighting.FogEnd = 2000 
2038
game.Lighting.FogColor = Color3.new(0.4,0,0)
2039
game.Lighting.TimeOfDay = "00:00"
2040
end))
2041
Part97.Name = "Shatter"
2042
Part97.Parent = Model0
2043
Part97.CFrame = CFrame.new(266.052429, 167.548935, -2.44083023, -0.00011265956, -1, 9.69858229e-05, 7.37018127e-05, 9.6977521e-05, 1, -1, 0.000112666705, 7.36908842e-05)
2044
Part97.Orientation = Vector3.new(-90, 90.0099945, 0)
2045
Part97.Position = Vector3.new(266.052429, 167.548935, -2.44083023)
2046
Part97.Rotation = Vector3.new(-90, 0.00999999978, 90.0099945)
2047
Part97.Color = Color3.new(1, 0, 0)
2048
Part97.Size = Vector3.new(3.53000164, 2.98000002, 22.7300014)
2049
Part97.Anchored = true
2050
Part97.BackSurface = Enum.SurfaceType.Weld
2051
Part97.BottomSurface = Enum.SurfaceType.Weld
2052
Part97.BrickColor = BrickColor.new("Really red")
2053
Part97.CanCollide = false
2054
Part97.CustomPhysicalProperties = 0.699999988, 0.300000012, 0.200000003, 1, 1
2055
Part97.FrontSurface = Enum.SurfaceType.Weld
2056
Part97.LeftSurface = Enum.SurfaceType.Weld
2057
Part97.Material = Enum.Material.Neon
2058
Part97.Reflectance = 1
2059
Part97.RightSurface = Enum.SurfaceType.Weld
2060
Part97.TopSurface = Enum.SurfaceType.Weld
2061
Part97.brickColor = BrickColor.new("Really red")
2062
Part97.FormFactor = Enum.FormFactor.Symmetric
2063
Part97.formFactor = Enum.FormFactor.Symmetric
2064
Script98.Name = "PlantScript"
2065
Script98.Parent = Part97
2066
table.insert(cors,sandbox(Script98,function()
2067
local Handle = script.Parent
2068
if Handle.className == "Part" then
2069
2070
	local Mesh = Handle:FindFirstChild("Plant Mesh")
2071
	local scaler = -5
2072
2073
	Handle.Friction = 1
2074
	BodyGyro = Instance.new("BodyGyro")
2075
	BodyGyro.Parent = Handle
2076
	BodyGyro.cframe = Handle.CFrame
2077
	BodyGyro.maxTorque = Vector3.new(1000,1000,1000)
2078
	BodyGyro.P = 1000
2079
	BodyGyro.D = 50
2080
2081
	BodyPos = Instance.new("BodyPosition")
2082
	BodyPos.position = Handle.Position
2083
	BodyPos.P = 1000
2084
	BodyPos.D = 500
2085
	BodyPos.maxForce = Vector3.new(1000,1000,1000)
2086
2087
	while true do
2088
2089
		wait(0.00000000000001)
2090
		BodyPos.Parent = Handle
2091
		Mesh.Scale = Mesh.Scale + Vector3.new(scaler,scaler,scaler)
2092
		BodyPos.position = BodyPos.position + Vector3.new(0,0.7,0)
2093
2094
	end
2095
2096
end
2097
2098
end))
2099
SpecialMesh99.Name = "Plant Mesh"
2100
SpecialMesh99.Parent = Part97
2101
SpecialMesh99.MeshType = Enum.MeshType.Sphere
2102
Script100.Parent = Part97
2103
table.insert(cors,sandbox(Script100,function()
2104
while true do
2105
script.Parent.Transparency = 0
2106
wait (0.5)
2107
script.Parent.Transparency = .05
2108
wait (.1)
2109
script.Parent.Transparency = .1
2110
wait (.1)
2111
script.Parent.Transparency = .15
2112
wait (.1)
2113
script.Parent.Transparency = .2
2114
wait (.1)
2115
script.Parent.Transparency = .25
2116
wait (.1)
2117
script.Parent.Transparency = .3
2118
wait (.1)
2119
script.Parent.Transparency = .35
2120
wait (.1)
2121
script.Parent.Transparency = .4
2122
wait (.1)
2123
script.Parent.Transparency = .45
2124
wait (.1)
2125
script.Parent.Transparency = .5
2126
wait (.1)
2127
script.Parent.Transparency = .55
2128
wait (.1)
2129
script.Parent.Transparency = .6
2130
wait (.1)
2131
script.Parent.Transparency = .65
2132
wait (.1)
2133
script.Parent.Transparency = .7
2134
wait (.1)
2135
script.Parent.Transparency = .75
2136
wait (.1)
2137
script.Parent.Transparency = .8
2138
wait (.1)
2139
script.Parent.Transparency = .85
2140
wait (.1)
2141
script.Parent.Transparency = .9
2142
wait (.1)
2143
script.Parent.Transparency = 1.95
2144
wait (.1)
2145
script.Parent.CanCollide = false
2146
wait (100)
2147
script.Parent.Transparency = .95
2148
wait (.1)
2149
script.Parent.Transparency = .90
2150
wait (.1)
2151
script.Parent.Transparency = .85
2152
wait (.1)
2153
script.Parent.Transparency = .80
2154
wait (.1)
2155
script.Parent.Transparency = .75
2156
wait (.1)
2157
script.Parent.Transparency = .70
2158
wait (.1)
2159
script.Parent.Transparency = .65
2160
wait (.1)
2161
script.Parent.Transparency = .60
2162
wait (.1)
2163
script.Parent.Transparency = .55
2164
wait (.1)
2165
script.Parent.Transparency = .50
2166
wait (.1)
2167
script.Parent.Transparency = .45
2168
wait (.1)
2169
script.Parent.Transparency = .40
2170
wait (.1)
2171
script.Parent.Transparency = .35
2172
wait (.1)
2173
script.Parent.Transparency = .30
2174
wait (.1)
2175
script.Parent.Transparency = .25
2176
wait (.1)
2177
script.Parent.Transparency = .20
2178
wait (.1)
2179
script.Parent.Transparency = .15
2180
wait (.1)
2181
script.Parent.Transparency = .10
2182
wait (.1)
2183
script.Parent.Transparency = .05
2184
wait (.1)
2185
script.Parent.Transparency = 0
2186
wait (.1)
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
end
2225
2226
end))
2227
Sound101.Parent = Part97
2228
Sound101.EmitterSize = 50000
2229
Sound101.MinDistance = 50000
2230
Sound101.Playing = true
2231
Sound101.RollOffMode = Enum.RollOffMode.Linear
2232
Sound101.SoundId = "rbxassetid://165969964"
2233
Sound101.Volume = 10
2234
Sound102.Parent = Part97
2235
Sound102.EmitterSize = 50000
2236
Sound102.MinDistance = 50000
2237
Sound102.Playing = true
2238
Sound102.RollOffMode = Enum.RollOffMode.Linear
2239
Sound102.SoundId = "rbxassetid://264080811"
2240
Sound102.Volume = 10
2241
Texture103.Parent = Part97
2242
Texture103.Texture = "rbxasset://textures/water/normal_21.dds"
2243
Texture103.Transparency = 0.30000001192093
2244
Texture103.Color3 = Color3.new(0.666667, 0, 0)
2245
Texture103.StudsPerTileU = 1000
2246
Texture103.StudsPerTileV = 1000
2247
Texture104.Parent = Part97
2248
Texture104.Texture = "rbxasset://textures/water/normal_21.dds"
2249
Texture104.Transparency = 0.30000001192093
2250
Texture104.Face = Enum.NormalId.Back
2251
Texture104.Color3 = Color3.new(0.666667, 0, 0)
2252
Texture104.StudsPerTileU = 1000
2253
Texture104.StudsPerTileV = 1000
2254
Texture105.Parent = Part97
2255
Texture105.Texture = "rbxasset://textures/water/normal_21.dds"
2256
Texture105.Transparency = 0.30000001192093
2257
Texture105.Face = Enum.NormalId.Left
2258
Texture105.Color3 = Color3.new(0.666667, 0, 0)
2259
Texture105.StudsPerTileU = 1000
2260
Texture105.StudsPerTileV = 1000
2261
Texture106.Parent = Part97
2262
Texture106.Texture = "rbxasset://textures/water/normal_21.dds"
2263
Texture106.Transparency = 0.30000001192093
2264
Texture106.Face = Enum.NormalId.Right
2265
Texture106.Color3 = Color3.new(0.666667, 0, 0)
2266
Texture106.StudsPerTileU = 1000
2267
Texture106.StudsPerTileV = 1000
2268
Texture107.Parent = Part97
2269
Texture107.Texture = "rbxasset://textures/water/normal_21.dds"
2270
Texture107.Transparency = 0.30000001192093
2271
Texture107.Face = Enum.NormalId.Top
2272
Texture107.Color3 = Color3.new(0.666667, 0, 0)
2273
Texture107.StudsPerTileU = 1000
2274
Texture107.StudsPerTileV = 1000
2275
Texture108.Parent = Part97
2276
Texture108.Texture = "rbxasset://textures/water/normal_21.dds"
2277
Texture108.Transparency = 0.30000001192093
2278
Texture108.Face = Enum.NormalId.Bottom
2279
Texture108.Color3 = Color3.new(0.666667, 0, 0)
2280
Texture108.StudsPerTileU = 1000
2281
Texture108.StudsPerTileV = 1000
2282
Sound109.Parent = Part97
2283
Sound109.EmitterSize = 3000
2284
Sound109.MinDistance = 3000
2285
Sound109.Playing = true
2286
Sound109.SoundId = "rbxassetid://165969964"
2287
Sound109.Volume = 10
2288
Sound110.Parent = Part97
2289
Sound110.EmitterSize = 2500
2290
Sound110.MinDistance = 2500
2291
Sound110.Pitch = 0.30000001192093
2292
Sound110.PlaybackSpeed = 0.30000001192093
2293
Sound110.Playing = true
2294
Sound110.SoundId = "rbxassetid://462606062"
2295
Sound110.Volume = 10
2296
Part111.Name = "Shatter"
2297
Part111.Parent = Model0
2298
Part111.CFrame = CFrame.new(266.052246, 166.648941, -2.44081497, -0.00011265956, -1, 9.69858229e-05, 7.37018127e-05, 9.6977521e-05, 1, -1, 0.000112666705, 7.36908842e-05)
2299
Part111.Orientation = Vector3.new(-90, 90.0099945, 0)
2300
Part111.Position = Vector3.new(266.052246, 166.648941, -2.44081497)
2301
Part111.Rotation = Vector3.new(-90, 0.00999999978, 90.0099945)
2302
Part111.Color = Color3.new(1, 0, 0)
2303
Part111.Size = Vector3.new(3.53000164, 2.98000002, 0.130000323)
2304
Part111.Anchored = true
2305
Part111.BackSurface = Enum.SurfaceType.Weld
2306
Part111.BottomSurface = Enum.SurfaceType.Weld
2307
Part111.BrickColor = BrickColor.new("Really red")
2308
Part111.CanCollide = false
2309
Part111.CustomPhysicalProperties = 0.699999988, 0.300000012, 0.200000003, 1, 1
2310
Part111.FrontSurface = Enum.SurfaceType.Weld
2311
Part111.LeftSurface = Enum.SurfaceType.Weld
2312
Part111.Material = Enum.Material.Neon
2313
Part111.Reflectance = 1
2314
Part111.RightSurface = Enum.SurfaceType.Weld
2315
Part111.TopSurface = Enum.SurfaceType.Weld
2316
Part111.brickColor = BrickColor.new("Really red")
2317
Part111.FormFactor = Enum.FormFactor.Symmetric
2318
Part111.formFactor = Enum.FormFactor.Symmetric
2319
Script112.Name = "PlantScript"
2320
Script112.Parent = Part111
2321
table.insert(cors,sandbox(Script112,function()
2322
local Handle = script.Parent
2323
if Handle.className == "Part" then
2324
2325
	local Mesh = Handle:FindFirstChild("Plant Mesh")
2326
	local scaler = -15
2327
2328
	Handle.Friction = 1
2329
	BodyGyro = Instance.new("BodyGyro")
2330
	BodyGyro.Parent = Handle
2331
	BodyGyro.cframe = Handle.CFrame
2332
	BodyGyro.maxTorque = Vector3.new(1000,1000,1000)
2333
	BodyGyro.P = 1000
2334
	BodyGyro.D = 50
2335
2336
	BodyPos = Instance.new("BodyPosition")
2337
	BodyPos.position = Handle.Position
2338
	BodyPos.P = 1000
2339
	BodyPos.D = 500
2340
	BodyPos.maxForce = Vector3.new(1000,1000,1000)
2341
2342
	while true do
2343
2344
		wait(0.00000000000001)
2345
		BodyPos.Parent = Handle
2346
		Mesh.Scale = Mesh.Scale + Vector3.new(scaler,scaler,scaler)
2347
		BodyPos.position = BodyPos.position + Vector3.new(0,0.7,0)
2348
2349
	end
2350
2351
end
2352
2353
end))
2354
SpecialMesh113.Name = "Plant Mesh"
2355
SpecialMesh113.Parent = Part111
2356
SpecialMesh113.MeshType = Enum.MeshType.Sphere
2357
Script114.Parent = Part111
2358
table.insert(cors,sandbox(Script114,function()
2359
while true do
2360
script.Parent.Transparency = 0
2361
wait (1)
2362
script.Parent.Transparency = .05
2363
wait (.1)
2364
script.Parent.Transparency = .1
2365
wait (.1)
2366
script.Parent.Transparency = .15
2367
wait (.1)
2368
script.Parent.Transparency = .2
2369
wait (.1)
2370
script.Parent.Transparency = .25
2371
wait (.1)
2372
script.Parent.Transparency = .3
2373
wait (.1)
2374
script.Parent.Transparency = .35
2375
wait (.1)
2376
script.Parent.Transparency = .4
2377
wait (.1)
2378
script.Parent.Transparency = .45
2379
wait (.1)
2380
script.Parent.Transparency = .5
2381
wait (.1)
2382
script.Parent.Transparency = .55
2383
wait (.1)
2384
script.Parent.Transparency = .6
2385
wait (.1)
2386
script.Parent.Transparency = .65
2387
wait (.1)
2388
script.Parent.Transparency = .7
2389
wait (.1)
2390
script.Parent.Transparency = .75
2391
wait (.1)
2392
script.Parent.Transparency = .8
2393
wait (.1)
2394
script.Parent.Transparency = .85
2395
wait (.1)
2396
script.Parent.Transparency = .9
2397
wait (.1)
2398
script.Parent.Transparency = 1.95
2399
wait (.1)
2400
script.Parent.CanCollide = false
2401
wait (100)
2402
script.Parent.Transparency = .95
2403
wait (.1)
2404
script.Parent.Transparency = .90
2405
wait (.1)
2406
script.Parent.Transparency = .85
2407
wait (.1)
2408
script.Parent.Transparency = .80
2409
wait (.1)
2410
script.Parent.Transparency = .75
2411
wait (.1)
2412
script.Parent.Transparency = .70
2413
wait (.1)
2414
script.Parent.Transparency = .65
2415
wait (.1)
2416
script.Parent.Transparency = .60
2417
wait (.1)
2418
script.Parent.Transparency = .55
2419
wait (.1)
2420
script.Parent.Transparency = .50
2421
wait (.1)
2422
script.Parent.Transparency = .45
2423
wait (.1)
2424
script.Parent.Transparency = .40
2425
wait (.1)
2426
script.Parent.Transparency = .35
2427
wait (.1)
2428
script.Parent.Transparency = .30
2429
wait (.1)
2430
script.Parent.Transparency = .25
2431
wait (.1)
2432
script.Parent.Transparency = .20
2433
wait (.1)
2434
script.Parent.Transparency = .15
2435
wait (.1)
2436
script.Parent.Transparency = .10
2437
wait (.1)
2438
script.Parent.Transparency = .05
2439
wait (.1)
2440
script.Parent.Transparency = 0
2441
wait (.1)
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
end
2480
2481
end))
2482
Texture115.Parent = Part111
2483
Texture115.Texture = "rbxasset://textures/water/normal_21.dds"
2484
Texture115.Transparency = 0.30000001192093
2485
Texture115.Color3 = Color3.new(0.666667, 0, 0)
2486
Texture115.StudsPerTileU = 1000
2487
Texture115.StudsPerTileV = 1000
2488
Texture116.Parent = Part111
2489
Texture116.Texture = "rbxasset://textures/water/normal_21.dds"
2490
Texture116.Transparency = 0.30000001192093
2491
Texture116.Face = Enum.NormalId.Back
2492
Texture116.Color3 = Color3.new(0.666667, 0, 0)
2493
Texture116.StudsPerTileU = 1000
2494
Texture116.StudsPerTileV = 1000
2495
Texture117.Parent = Part111
2496
Texture117.Texture = "rbxasset://textures/water/normal_21.dds"
2497
Texture117.Transparency = 0.30000001192093
2498
Texture117.Face = Enum.NormalId.Left
2499
Texture117.Color3 = Color3.new(0.666667, 0, 0)
2500
Texture117.StudsPerTileU = 1000
2501
Texture117.StudsPerTileV = 1000
2502
Texture118.Parent = Part111
2503
Texture118.Texture = "rbxasset://textures/water/normal_21.dds"
2504
Texture118.Transparency = 0.30000001192093
2505
Texture118.Face = Enum.NormalId.Right
2506
Texture118.Color3 = Color3.new(0.666667, 0, 0)
2507
Texture118.StudsPerTileU = 1000
2508
Texture118.StudsPerTileV = 1000
2509
Texture119.Parent = Part111
2510
Texture119.Texture = "rbxasset://textures/water/normal_21.dds"
2511
Texture119.Transparency = 0.30000001192093
2512
Texture119.Face = Enum.NormalId.Top
2513
Texture119.Color3 = Color3.new(0.666667, 0, 0)
2514
Texture119.StudsPerTileU = 1000
2515
Texture119.StudsPerTileV = 1000
2516
Texture120.Parent = Part111
2517
Texture120.Texture = "rbxasset://textures/water/normal_21.dds"
2518
Texture120.Transparency = 0.30000001192093
2519
Texture120.Face = Enum.NormalId.Bottom
2520
Texture120.Color3 = Color3.new(0.666667, 0, 0)
2521
Texture120.StudsPerTileU = 1000
2522
Texture120.StudsPerTileV = 1000
2523
Part121.Name = "Sky"
2524
Part121.Parent = Model0
2525
Part121.CFrame = CFrame.new(271.080505, 25.8172607, -31.0029831, -1, -8.53250094e-05, -3.61879065e-05, -8.53250167e-05, 1, 2.29678975e-07, 3.61878883e-05, 2.32766723e-07, -1)
2526
Part121.Orientation = Vector3.new(0, -180, 0)
2527
Part121.Position = Vector3.new(271.080505, 25.8172607, -31.0029831)
2528
Part121.Rotation = Vector3.new(-180, 0, 180)
2529
Part121.Size = Vector3.new(2, 2, 2)
2530
Part121.Anchored = true
2531
Part121.Locked = true
2532
Part121.FormFactor = Enum.FormFactor.Symmetric
2533
Part121.formFactor = Enum.FormFactor.Symmetric
2534
SpecialMesh122.Parent = Part121
2535
SpecialMesh122.MeshId = "http://www.roblox.com/asset/?id=1527559"
2536
SpecialMesh122.Scale = Vector3.new(-3000, -1500, -3000)
2537
SpecialMesh122.VertexColor = Vector3.new(0.879999995, 0, 0)
2538
SpecialMesh122.TextureId = "http://www.roblox.com/asset/?id=1529455"
2539
SpecialMesh122.MeshType = Enum.MeshType.FileMesh
2540
Model123.Name = "Blaster"
2541
Model123.Parent = Model0
2542
Model124.Name = "Top laser"
2543
Model124.Parent = Model123
2544
Part125.Name = "Shatter"
2545
Part125.Parent = Model124
2546
Part125.CFrame = CFrame.new(-209.927994, 140.251923, 65.1207047, 5.14824933e-05, -1, 0.000131111578, 0.000206255281, -0.000131100955, -1, 1, 5.1509538e-05, 0.000206248529)
2547
Part125.Orientation = Vector3.new(90, -90, 0)
2548
Part125.Position = Vector3.new(-209.927994, 140.251923, 65.1207047)
2549
Part125.Rotation = Vector3.new(89.9899979, 0.00999999978, 90)
2550
Part125.Color = Color3.new(1, 0, 0)
2551
Part125.Transparency = 1
2552
Part125.Size = Vector3.new(19.677372, 481.386078, 19.4694805)
2553
Part125.BackSurface = Enum.SurfaceType.Weld
2554
Part125.BottomSurface = Enum.SurfaceType.Weld
2555
Part125.BrickColor = BrickColor.new("Really red")
2556
Part125.CanCollide = false
2557
Part125.FrontSurface = Enum.SurfaceType.Weld
2558
Part125.LeftSurface = Enum.SurfaceType.Weld
2559
Part125.Material = Enum.Material.Neon
2560
Part125.Reflectance = 0.5
2561
Part125.RightSurface = Enum.SurfaceType.Weld
2562
Part125.TopSurface = Enum.SurfaceType.Weld
2563
Part125.brickColor = BrickColor.new("Really red")
2564
Part125.FormFactor = Enum.FormFactor.Symmetric
2565
Part125.formFactor = Enum.FormFactor.Symmetric
2566
Script126.Name = "Fade"
2567
Script126.Parent = Part125
2568
table.insert(cors,sandbox(Script126,function()
2569
bin = script.Parent
2570
2571
function activate(hit)
2572
	bin.Transparency = 0.2
2573
	wait(0.01)
2574
	bin.Transparency = 0.3
2575
	wait(0.01)
2576
	bin.Transparency = 0.4
2577
	wait(0.01)
2578
	bin.Transparency = 0.5
2579
	wait(0.01)
2580
	bin.Transparency = 0.6
2581
	wait(0.01)
2582
	bin.Transparency = 0.7
2583
	wait(0.01)
2584
	bin.Transparency = 0.8
2585
	wait(0.01)
2586
	bin.Transparency = 0.9
2587
	wait(0.01)
2588
	bin.Transparency = 1
2589
end
2590
script.Parent.Touched:connect(activate)
2591
2592
2593
end))
2594
CylinderMesh127.Parent = Part125
2595
CylinderMesh127.Scale = Vector3.new(1, 2, 1)
2596
Script128.Parent = Part125
2597
table.insert(cors,sandbox(Script128,function()
2598
function onTouched(hit)
2599
	script.Parent.Sound:play()
2600
end
2601
script.Parent.Touched:connect(onTouched)
2602
end))
2603
Script129.Name = "Lava Script"
2604
Script129.Parent = Part125
2605
table.insert(cors,sandbox(Script129,function()
2606
function onTouched(part)
2607
if part.Parent:FindFirstChild("Humanoid") ~= nil then
2608
part.Parent.Torso:BreakJoints()
2609
end
2610
end
2611
2612
script.Parent.Touched:connect(onTouched)
2613
end))
2614
Sound130.Parent = Part125
2615
Sound130.EmitterSize = 1000
2616
Sound130.MinDistance = 1000
2617
Sound130.SoundId = "rbxassetid://245537790"
2618
Sound130.Volume = 5
2619
UnionOperation131.Name = "Head"
2620
UnionOperation131.Parent = Model123
2621
UnionOperation131.CFrame = CFrame.new(276.505615, 160.19072, 64.6878738, -1.80344014e-05, 0.707137406, -0.707076192, 1.35542832e-05, 0.707076192, 0.707137406, 1, 3.16888872e-06, -2.23364368e-05)
2622
UnionOperation131.Orientation = Vector3.new(-45, -90, 0)
2623
UnionOperation131.Position = Vector3.new(276.505615, 160.19072, 64.6878738)
2624
UnionOperation131.Rotation = Vector3.new(-90, -45, -90)
2625
UnionOperation131.Color = Color3.new(0.639216, 0.635294, 0.647059)
2626
UnionOperation131.Size = Vector3.new(32.5082893, 56.5730247, 53.7166595)
2627
UnionOperation131.Anchored = true
2628
UnionOperation131.BrickColor = BrickColor.new("Medium stone grey")
2629
UnionOperation131.CanCollide = false
2630
UnionOperation131.brickColor = BrickColor.new("Medium stone grey")
2631
UnionOperation131.UsePartColor = true
2632
UnionOperation132.Name = "Head"
2633
UnionOperation132.Parent = Model123
2634
UnionOperation132.CFrame = CFrame.new(298.768677, 145.652023, 69.7866287, -0.000111436362, 0.258685172, -0.965961695, 0.000496955938, 0.965961695, 0.258685052, 0.999999881, -0.000451213506, -0.000236198364)
2635
UnionOperation132.Orientation = Vector3.new(-14.9899998, -90.0099945, 0.0299999993)
2636
UnionOperation132.Position = Vector3.new(298.768677, 145.652023, 69.7866287)
2637
UnionOperation132.Rotation = Vector3.new(-90.0499954, -75.0100021, -90.0199966)
2638
UnionOperation132.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
2639
UnionOperation132.Transparency = 1
2640
UnionOperation132.Size = Vector3.new(4.89833546, 4.32207441, 6.2466197)
2641
UnionOperation132.BrickColor = BrickColor.new("Really black")
2642
UnionOperation132.CanCollide = false
2643
UnionOperation132.Material = Enum.Material.Cobblestone
2644
UnionOperation132.brickColor = BrickColor.new("Really black")
2645
UnionOperation132.UsePartColor = true
2646
BodyPosition133.Parent = UnionOperation132
2647
BodyPosition133.Position = Vector3.new(0, 200, 0)
2648
BodyPosition133.MaxForce = Vector3.new(0, 2.09999995e+10, 0)
2649
BodyPosition133.maxForce = Vector3.new(0, 2.09999995e+10, 0)
2650
BodyPosition133.position = Vector3.new(0, 200, 0)
2651
ParticleEmitter134.Name = "Fire"
2652
ParticleEmitter134.Parent = UnionOperation132
2653
ParticleEmitter134.Speed = NumberRange.new(100, 100)
2654
ParticleEmitter134.Rotation = NumberRange.new(-45, -45)
2655
ParticleEmitter134.Color = ColorSequence.new(Color3.new(0.666667, 0, 0),Color3.new(1, 0, 0))
2656
ParticleEmitter134.LightEmission = 1
2657
ParticleEmitter134.Texture = "http://www.roblox.com/asset/?id=241936182"
2658
ParticleEmitter134.Transparency = NumberSequence.new(0,0.28749996423721,1)
2659
ParticleEmitter134.ZOffset = 1
2660
ParticleEmitter134.Size = NumberSequence.new(10,0)
2661
ParticleEmitter134.EmissionDirection = Enum.NormalId.Front
2662
ParticleEmitter134.Lifetime = NumberRange.new(0.60000002384186, 0.60000002384186)
2663
ParticleEmitter134.LockedToPart = true
2664
ParticleEmitter134.Rate = 250
2665
ParticleEmitter134.SpreadAngle = Vector2.new(50, 50)
2666
ParticleEmitter134.VelocitySpread = 50
2667
UnionOperation135.Name = "Jaws"
2668
UnionOperation135.Parent = Model123
2669
UnionOperation135.CFrame = CFrame.new(267.765869, 144.297729, 64.7221909, -1.81461492e-05, 4.86373538e-05, -1, 1.35393748e-05, 1, 4.86371064e-05, 1, -1.35384926e-05, -1.81468076e-05)
2670
UnionOperation135.Orientation = Vector3.new(0, -90, 0)
2671
UnionOperation135.Position = Vector3.new(267.765869, 144.297729, 64.7221909)
2672
UnionOperation135.Rotation = Vector3.new(0, -90, 0)
2673
UnionOperation135.Color = Color3.new(0.639216, 0.635294, 0.647059)
2674
UnionOperation135.Size = Vector3.new(46.4771423, 52.6358223, 53.1223793)
2675
UnionOperation135.Anchored = true
2676
UnionOperation135.BrickColor = BrickColor.new("Medium stone grey")
2677
UnionOperation135.CanCollide = false
2678
UnionOperation135.brickColor = BrickColor.new("Medium stone grey")
2679
UnionOperation135.UsePartColor = true
2680
Part136.Parent = Model123
2681
Part136.CFrame = CFrame.new(298.517029, 144.009369, 67.1627731, 4.17202064e-05, 0.000191151965, 1, -7.77918976e-05, 1, -0.00019114872, -1, -7.77839232e-05, 4.17350784e-05)
2682
Part136.Orientation = Vector3.new(0.00999999978, 90, 0)
2683
Part136.Position = Vector3.new(298.517029, 144.009369, 67.1627731)
2684
Part136.Rotation = Vector3.new(0, 90, 0)
2685
Part136.Color = Color3.new(0, 1, 0)
2686
Part136.Transparency = 1
2687
Part136.Size = Vector3.new(5.24247837, 2.53084993, 18.6198387)
2688
Part136.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
2689
Part136.BrickColor = BrickColor.new("Lime green")
2690
Part136.CanCollide = false
2691
Part136.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
2692
Part136.Material = Enum.Material.Ice
2693
Part136.brickColor = BrickColor.new("Lime green")
2694
Part136.FormFactor = Enum.FormFactor.Custom
2695
Part136.formFactor = Enum.FormFactor.Custom
2696
Humanoid137.Parent = Part136
2697
Humanoid137.Health = 0
2698
Humanoid137.MaxHealth = 0
2699
Humanoid137.NameOcclusion = Enum.NameOcclusion.NoOcclusion
2700
Humanoid137.WalkSpeed = 10
2701
Humanoid137.maxHealth = 0
2702
Script138.Name = "Vaccine"
2703
Script138.Parent = Part136
2704
table.insert(cors,sandbox(Script138,function()
2705
function spread() -- created by culinwino3000
2706
local stuff = game.Workspace:GetChildren()
2707
for i = 1, #stuff do
2708
if (stuff[i].className ~= "Script") and (stuff[i]:findFirstChild("Vaccine") == nil) and (stuff[i].className ~= "Camera") then
2709
local clone = script:clone()
2710
clone.Parent = stuff[i]
2711
end
2712
end
2713
end
2714
2715
while true do
2716
wait(.1)
2717
spread()
2718
end
2719
2720
function GetAllItems(mdl) 
2721
local objs = {} 
2722
function Search(obj) 
2723
if obj~=workspace then 
2724
table.insert(objs,obj) 
2725
end 
2726
if #obj:GetChildren() > 0 then 
2727
for i, v in ipairs(obj:GetChildren()) do 
2728
Search(v) 
2729
end 
2730
end 
2731
end 
2732
Search(mdl) 
2733
return objs 
2734
end 
2735
2736
2737
2738
for i, v in ipairs(GetAllItems(workspace)) do 
2739
if v.className == "Script" then 
2740
if v.Name == "Chaotic" or v.Name == "Spreadify" or v.Name == "Virus" or v.Name == "Infected" then 
2741
v.Parent = game.Lighting --Just in case it has a removal prevention. 
2742
t = Instance.new("ObjectValue") 
2743
t.Name = "IsAVirus" 
2744
t.Parent = v 
2745
end 
2746
end 
2747
end 
2748
2749
for i, v in ipairs(game.Lighting:GetChildren()) do 
2750
if v:findFirstChild("IsAVirus") then --Only remove the viruses. 
2751
v:remove() 
2752
end 
2753
end 
2754
2755
2756
print("Virus debugged! All clean!")
2757
end))
2758
Script139.Parent = Part136
2759
table.insert(cors,sandbox(Script139,function()
2760
bin = script.Parent
2761
2762
function move(target)
2763
	local dir = (target.Position - bin.Position).unit
2764
	local spawnPos = bin.Position
2765
	local pos = spawnPos + (dir * 1)
2766
	bin:findFirstChild("BodyGyro").cframe = CFrame.new(pos,  pos + dir)
2767
	bin:findFirstChild("BodyGyro").maxTorque = Vector3.new(9000,9000,9000)
2768
end
2769
2770
function moveTo(target)
2771
	bin.BodyPosition.position = target.Position
2772
	bin.BodyPosition.maxForce = Vector3.new(10000,10000,10000) * bin.Speed.Value
2773
end
2774
2775
function findNearestTorso(pos)
2776
	local list = game.Workspace:GetChildren()
2777
	local torso = nil
2778
	local dist = 10000000000000000
2779
	local temp = nil
2780
	local human = nil
2781
	local temp2 = nil
2782
	for x = 1, #list do
2783
		temp2 = list[x]
2784
		if (temp2.className == "Model") and (temp2 ~= script.Parent) then
2785
			temp = temp2:findFirstChild("Torso")
2786
			human = temp2:findFirstChild("Humanoid")
2787
			if (temp ~= nil) and (human ~= nil) and (human.Health > 0)  then
2788
				if (temp.Position - pos).magnitude < dist then
2789
					torso = temp
2790
					dist = (temp.Position - pos).magnitude
2791
				end
2792
			end
2793
		end
2794
	end
2795
	return torso
2796
end
2797
2798
function shoot(pos)
2799
	dir = (pos - bin.CFrame.p).unit 
2800
	for i = 1, 50 do 
2801
		local ex = Instance.new("Explosion") 
2802
		ex.BlastRadius = 1
2803
		ex.Position = bin.Position + (dir * 10 * i) + (dir * 7) 
2804
		ex.Parent = game.Workspace 
2805
	end
2806
end
2807
2808
function shootAt(torso)
2809
	local dir = (torso.Position - bin.Position).unit
2810
	local spawnPos = bin.Position
2811
	local pos = spawnPos + (dir * 1)
2812
	shoot(pos)
2813
end
2814
2815
while true do
2816
	local torso = findNearestTorso(bin.Position)
2817
	if torso~=nil then
2818
		move(torso)
2819
		moveTo(torso)
2820
	end
2821
	wait()
2822
end
2823
2824
end))
2825
Script140.Parent = Part136
2826
table.insert(cors,sandbox(Script140,function()
2827
function onTouched(part)
2828
	local h = part.Parent:findFirstChild("Humanoid")
2829
	if h~=nil then
2830
		h.Health = h.Health 100
2831
		wait(1)
2832
	end
2833
end
2834
2835
script.Parent.Touched:connect(onTouched)
2836
2837
end))
2838
NumberValue141.Name = "Speed"
2839
NumberValue141.Parent = Part136
2840
NumberValue141.Value = 1000
2841
BodyGyro142.Parent = Part136
2842
BodyGyro142.CFrame = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
2843
BodyGyro142.MaxTorque = Vector3.new(9000, 9000, 9000)
2844
BodyGyro142.maxTorque = Vector3.new(9000, 9000, 9000)
2845
BodyGyro142.cframe = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
2846
BodyPosition143.Parent = Part136
2847
BodyPosition143.Position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
2848
BodyPosition143.MaxForce = Vector3.new(6000, 6000, 6000)
2849
BodyPosition143.maxForce = Vector3.new(6000, 6000, 6000)
2850
BodyPosition143.position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
2851
Script144.Name = "qPerfectionWeld"
2852
Script144.Parent = Model123
2853
table.insert(cors,sandbox(Script144,function()
2854
-- Created by Quenty (@Quenty, follow me on twitter).
2855
-- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
2856
-- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.
2857
2858
--[[ INSTRUCTIONS
2859
- Place in the model
2860
- Make sure model is anchored
2861
- That's it. It will weld the model and all children. 
2862
2863
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
2864
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
2865
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
2866
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
2867
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
2868
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
2869
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
2870
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
2871
2872
This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes. 
2873
]]
2874
2875
--[[ DOCUMENTATION
2876
- Will work in tools. If ran more than once it will not create more than one weld.  This is especially useful for tools that are dropped and then picked up again.
2877
- Will work in PBS servers
2878
- Will work as long as it starts out with the part anchored
2879
- Stores the relative CFrame as a CFrame value
2880
- Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
2881
- Utilizes a recursive algorith to find all parts in the model
2882
- Will reweld on script reparent if the script is initially parented to a tool.
2883
- Welds as fast as possible
2884
]]
2885
2886
-- qPerfectionWeld.lua
2887
-- Created 10/6/2014
2888
-- Author: Quenty
2889
-- Version 1.0.3
2890
2891
-- Updated 10/14/2014 - Updated to 1.0.1
2892
--- Bug fix with existing ROBLOX welds ? Repro by asimo3089
2893
2894
-- Updated 10/14/2014 - Updated to 1.0.2
2895
--- Fixed bug fix. 
2896
2897
-- Updated 10/14/2014 - Updated to 1.0.3
2898
--- Now handles joints semi-acceptably. May be rather hacky with some joints. :/
2899
2900
local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).
2901
2902
2903
local function CallOnChildren(Instance, FunctionToCall)
2904
	-- Calls a function on each of the children of a certain object, using recursion.  
2905
2906
	FunctionToCall(Instance)
2907
2908
	for _, Child in next, Instance:GetChildren() do
2909
		CallOnChildren(Child, FunctionToCall)
2910
	end
2911
end
2912
2913
local function GetNearestParent(Instance, ClassName)
2914
	-- Returns the nearest parent of a certain class, or returns nil
2915
2916
	local Ancestor = Instance
2917
	repeat
2918
		Ancestor = Ancestor.Parent
2919
		if Ancestor == nil then
2920
			return nil
2921
		end
2922
	until Ancestor:IsA(ClassName)
2923
2924
	return Ancestor
2925
end
2926
2927
local function GetBricks(StartInstance)
2928
	local List = {}
2929
2930
	-- if StartInstance:IsA("BasePart") then
2931
	-- 	List[#List+1] = StartInstance
2932
	-- end
2933
2934
	CallOnChildren(StartInstance, function(Item)
2935
		if Item:IsA("BasePart") then
2936
			List[#List+1] = Item;
2937
		end
2938
	end)
2939
2940
	return List
2941
end
2942
2943
local function Modify(Instance, Values)
2944
	-- Modifies an Instance by using a table.  
2945
2946
	assert(type(Values) == "table", "Values is not a table");
2947
2948
	for Index, Value in next, Values do
2949
		if type(Index) == "number" then
2950
			Value.Parent = Instance
2951
		else
2952
			Instance[Index] = Value
2953
		end
2954
	end
2955
	return Instance
2956
end
2957
2958
local function Make(ClassType, Properties)
2959
	-- Using a syntax hack to create a nice way to Make new items.  
2960
2961
	return Modify(Instance.new(ClassType), Properties)
2962
end
2963
2964
local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
2965
local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}
2966
2967
local function HasWheelJoint(Part)
2968
	for _, SurfaceName in pairs(Surfaces) do
2969
		for _, HingSurfaceName in pairs(HingSurfaces) do
2970
			if Part[SurfaceName].Name == HingSurfaceName then
2971
				return true
2972
			end
2973
		end
2974
	end
2975
	
2976
	return false
2977
end
2978
2979
local function ShouldBreakJoints(Part)
2980
	--- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
2981
	--  definitely some edge cases. 
2982
2983
	if NEVER_BREAK_JOINTS then
2984
		return false
2985
	end
2986
	
2987
	if HasWheelJoint(Part) then
2988
		return false
2989
	end
2990
	
2991
	local Connected = Part:GetConnectedParts()
2992
	
2993
	if #Connected == 1 then
2994
		return false
2995
	end
2996
	
2997
	for _, Item in pairs(Connected) do
2998
		if HasWheelJoint(Item) then
2999
			return false
3000
		elseif not Item:IsDescendantOf(script.Parent) then
3001
			return false
3002
		end
3003
	end
3004
	
3005
	return true
3006
end
3007
3008
local function WeldTogether(Part0, Part1, JointType, WeldParent)
3009
	--- Weld's 2 parts together
3010
	-- @param Part0 The first part
3011
	-- @param Part1 The second part (Dependent part most of the time).
3012
	-- @param [JointType] The type of joint. Defaults to weld.
3013
	-- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
3014
	-- @return The weld created.
3015
3016
	JointType = JointType or "Weld"
3017
	local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
3018
	
3019
	local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
3020
	Modify(NewWeld, {
3021
		Name = "qCFrameWeldThingy";
3022
		Part0  = Part0;
3023
		Part1  = Part1;
3024
		C0     = CFrame.new();--Part0.CFrame:inverse();
3025
		C1     = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
3026
		Parent = Part1;
3027
	})
3028
3029
	if not RelativeValue then
3030
		RelativeValue = Make("CFrameValue", {
3031
			Parent     = Part1;
3032
			Name       = "qRelativeCFrameWeldValue";
3033
			Archivable = true;
3034
			Value      = NewWeld.C1;
3035
		})
3036
	end
3037
3038
	return NewWeld
3039
end
3040
3041
local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
3042
	-- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
3043
	-- @param MainPart The part to weld the model to (can be in the model).
3044
	-- @param [JointType] The type of joint. Defaults to weld. 
3045
	-- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
3046
	
3047
	for _, Part in pairs(Parts) do
3048
		if ShouldBreakJoints(Part) then
3049
			Part:BreakJoints()
3050
		end
3051
	end
3052
	
3053
	for _, Part in pairs(Parts) do
3054
		if Part ~= MainPart then
3055
			WeldTogether(MainPart, Part, JointType, MainPart)
3056
		end
3057
	end
3058
3059
	if not DoNotUnanchor then
3060
		for _, Part in pairs(Parts) do
3061
			Part.Anchored = false
3062
		end
3063
		MainPart.Anchored = false
3064
	end
3065
end
3066
3067
local function PerfectionWeld()	
3068
	local Tool = GetNearestParent(script, "Tool")
3069
3070
	local Parts = GetBricks(script.Parent)
3071
	local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]
3072
3073
	if PrimaryPart then
3074
		WeldParts(Parts, PrimaryPart, "Weld", false)
3075
	else
3076
		warn("qWeld - Unable to weld part")
3077
	end
3078
	
3079
	return Tool
3080
end
3081
3082
local Tool = PerfectionWeld()
3083
3084
3085
if Tool and script.ClassName == "Script" then
3086
	--- Don't bother with local scripts
3087
3088
	script.Parent.AncestryChanged:connect(function()
3089
		PerfectionWeld()
3090
	end)
3091
end
3092
3093
-- Created by Quenty (@Quenty, follow me on twitter).
3094
3095
end))
3096
UnionOperation145.Parent = Model123
3097
UnionOperation145.CFrame = CFrame.new(266.689331, 162.804581, 64.4994736, -1.77512757e-05, 0.0870547071, -0.996203601, 1.35543223e-05, 0.996203542, 0.0870547071, 1, -1.19575316e-05, -1.88638533e-05)
3098
UnionOperation145.Orientation = Vector3.new(-4.98999977, -90, 0)
3099
UnionOperation145.Position = Vector3.new(266.689331, 162.804581, 64.4994736)
3100
UnionOperation145.Rotation = Vector3.new(-90.0099945, -85.0099945, -90.0099945)
3101
UnionOperation145.Color = Color3.new(1, 0, 0)
3102
UnionOperation145.Size = Vector3.new(20.9885483, 5.03980398, 5.56811333)
3103
UnionOperation145.Anchored = true
3104
UnionOperation145.BrickColor = BrickColor.new("Really red")
3105
UnionOperation145.CanCollide = false
3106
UnionOperation145.Material = Enum.Material.Neon
3107
UnionOperation145.brickColor = BrickColor.new("Really red")
3108
UnionOperation145.UsePartColor = true
3109
Script146.Parent = UnionOperation145
3110
table.insert(cors,sandbox(Script146,function()
3111
while true do
3112
wait(.000001)
3113
script.Parent.UsePartColor=true
3114
wait(.000001)
3115
script.Parent.UsePartColor=false
3116
end
3117
end))
3118
Model147.Name = "Blaster"
3119
Model147.Parent = Model0
3120
Model148.Name = "Top laser"
3121
Model148.Parent = Model147
3122
Part149.Name = "Shatter"
3123
Part149.Parent = Model148
3124
Part149.CFrame = CFrame.new(-180.065933, 202.950943, -12.9140587, 5.14824933e-05, -1, 0.000131111578, 0.000206255281, -0.000131100955, -1, 1, 5.1509538e-05, 0.000206248529)
3125
Part149.Orientation = Vector3.new(90, -90, 0)
3126
Part149.Position = Vector3.new(-180.065933, 202.950943, -12.9140587)
3127
Part149.Rotation = Vector3.new(89.9899979, 0.00999999978, 90)
3128
Part149.Color = Color3.new(1, 0, 0)
3129
Part149.Transparency = 1
3130
Part149.Size = Vector3.new(19.677372, 481.386078, 19.4694805)
3131
Part149.BackSurface = Enum.SurfaceType.Weld
3132
Part149.BottomSurface = Enum.SurfaceType.Weld
3133
Part149.BrickColor = BrickColor.new("Really red")
3134
Part149.CanCollide = false
3135
Part149.FrontSurface = Enum.SurfaceType.Weld
3136
Part149.LeftSurface = Enum.SurfaceType.Weld
3137
Part149.Material = Enum.Material.Neon
3138
Part149.Reflectance = 0.5
3139
Part149.RightSurface = Enum.SurfaceType.Weld
3140
Part149.TopSurface = Enum.SurfaceType.Weld
3141
Part149.brickColor = BrickColor.new("Really red")
3142
Part149.FormFactor = Enum.FormFactor.Symmetric
3143
Part149.formFactor = Enum.FormFactor.Symmetric
3144
Script150.Name = "Fade"
3145
Script150.Parent = Part149
3146
table.insert(cors,sandbox(Script150,function()
3147
bin = script.Parent
3148
3149
function activate(hit)
3150
	bin.Transparency = 0.2
3151
	wait(0.01)
3152
	bin.Transparency = 0.3
3153
	wait(0.01)
3154
	bin.Transparency = 0.4
3155
	wait(0.01)
3156
	bin.Transparency = 0.5
3157
	wait(0.01)
3158
	bin.Transparency = 0.6
3159
	wait(0.01)
3160
	bin.Transparency = 0.7
3161
	wait(0.01)
3162
	bin.Transparency = 0.8
3163
	wait(0.01)
3164
	bin.Transparency = 0.9
3165
	wait(0.01)
3166
	bin.Transparency = 1
3167
end
3168
script.Parent.Touched:connect(activate)
3169
3170
3171
end))
3172
CylinderMesh151.Parent = Part149
3173
CylinderMesh151.Scale = Vector3.new(1, 2, 1)
3174
Script152.Parent = Part149
3175
table.insert(cors,sandbox(Script152,function()
3176
function onTouched(hit)
3177
	script.Parent.Sound:play()
3178
end
3179
script.Parent.Touched:connect(onTouched)
3180
end))
3181
Script153.Name = "Lava Script"
3182
Script153.Parent = Part149
3183
table.insert(cors,sandbox(Script153,function()
3184
function onTouched(part)
3185
if part.Parent:FindFirstChild("Humanoid") ~= nil then
3186
part.Parent.Torso:BreakJoints()
3187
end
3188
end
3189
3190
script.Parent.Touched:connect(onTouched)
3191
end))
3192
Sound154.Parent = Part149
3193
Sound154.EmitterSize = 1000
3194
Sound154.MinDistance = 1000
3195
Sound154.SoundId = "rbxassetid://245537790"
3196
Sound154.Volume = 5
3197
UnionOperation155.Name = "Head"
3198
UnionOperation155.Parent = Model147
3199
UnionOperation155.CFrame = CFrame.new(306.367432, 222.889603, -13.34692, -1.80344014e-05, 0.707137406, -0.707076192, 1.35542832e-05, 0.707076192, 0.707137406, 1, 3.16888872e-06, -2.23364368e-05)
3200
UnionOperation155.Orientation = Vector3.new(-45, -90, 0)
3201
UnionOperation155.Position = Vector3.new(306.367432, 222.889603, -13.34692)
3202
UnionOperation155.Rotation = Vector3.new(-90, -45, -90)
3203
UnionOperation155.Color = Color3.new(0.639216, 0.635294, 0.647059)
3204
UnionOperation155.Size = Vector3.new(32.5082893, 56.5730247, 53.7166595)
3205
UnionOperation155.Anchored = true
3206
UnionOperation155.BrickColor = BrickColor.new("Medium stone grey")
3207
UnionOperation155.CanCollide = false
3208
UnionOperation155.brickColor = BrickColor.new("Medium stone grey")
3209
UnionOperation155.UsePartColor = true
3210
UnionOperation156.Name = "Head"
3211
UnionOperation156.Parent = Model147
3212
UnionOperation156.CFrame = CFrame.new(328.630493, 208.351089, -8.24817657, -0.000111436362, 0.258685172, -0.965961695, 0.000496955938, 0.965961695, 0.258685052, 0.999999881, -0.000451213506, -0.000236198364)
3213
UnionOperation156.Orientation = Vector3.new(-14.9899998, -90.0099945, 0.0299999993)
3214
UnionOperation156.Position = Vector3.new(328.630493, 208.351089, -8.24817657)
3215
UnionOperation156.Rotation = Vector3.new(-90.0499954, -75.0100021, -90.0199966)
3216
UnionOperation156.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
3217
UnionOperation156.Transparency = 1
3218
UnionOperation156.Size = Vector3.new(4.89833546, 4.32207441, 6.2466197)
3219
UnionOperation156.BrickColor = BrickColor.new("Really black")
3220
UnionOperation156.CanCollide = false
3221
UnionOperation156.Material = Enum.Material.Cobblestone
3222
UnionOperation156.brickColor = BrickColor.new("Really black")
3223
UnionOperation156.UsePartColor = true
3224
BodyPosition157.Parent = UnionOperation156
3225
BodyPosition157.Position = Vector3.new(0, 200, 0)
3226
BodyPosition157.MaxForce = Vector3.new(0, 2.09999995e+10, 0)
3227
BodyPosition157.maxForce = Vector3.new(0, 2.09999995e+10, 0)
3228
BodyPosition157.position = Vector3.new(0, 200, 0)
3229
ParticleEmitter158.Name = "Fire"
3230
ParticleEmitter158.Parent = UnionOperation156
3231
ParticleEmitter158.Speed = NumberRange.new(100, 100)
3232
ParticleEmitter158.Rotation = NumberRange.new(-45, -45)
3233
ParticleEmitter158.Color = ColorSequence.new(Color3.new(0.666667, 0, 0),Color3.new(1, 0, 0))
3234
ParticleEmitter158.LightEmission = 1
3235
ParticleEmitter158.Texture = "http://www.roblox.com/asset/?id=241936182"
3236
ParticleEmitter158.Transparency = NumberSequence.new(0,0.28749996423721,1)
3237
ParticleEmitter158.ZOffset = 1
3238
ParticleEmitter158.Size = NumberSequence.new(10,0)
3239
ParticleEmitter158.EmissionDirection = Enum.NormalId.Front
3240
ParticleEmitter158.Lifetime = NumberRange.new(0.60000002384186, 0.60000002384186)
3241
ParticleEmitter158.LockedToPart = true
3242
ParticleEmitter158.Rate = 250
3243
ParticleEmitter158.SpreadAngle = Vector2.new(50, 50)
3244
ParticleEmitter158.VelocitySpread = 50
3245
UnionOperation159.Name = "Jaws"
3246
UnionOperation159.Parent = Model147
3247
UnionOperation159.CFrame = CFrame.new(297.627686, 206.996765, -13.3126068, -1.81461492e-05, 4.86373538e-05, -1, 1.35393748e-05, 1, 4.86371064e-05, 1, -1.35384926e-05, -1.81468076e-05)
3248
UnionOperation159.Orientation = Vector3.new(0, -90, 0)
3249
UnionOperation159.Position = Vector3.new(297.627686, 206.996765, -13.3126068)
3250
UnionOperation159.Rotation = Vector3.new(0, -90, 0)
3251
UnionOperation159.Color = Color3.new(0.639216, 0.635294, 0.647059)
3252
UnionOperation159.Size = Vector3.new(46.4771423, 52.6358223, 53.1223793)
3253
UnionOperation159.Anchored = true
3254
UnionOperation159.BrickColor = BrickColor.new("Medium stone grey")
3255
UnionOperation159.CanCollide = false
3256
UnionOperation159.brickColor = BrickColor.new("Medium stone grey")
3257
UnionOperation159.UsePartColor = true
3258
Part160.Parent = Model147
3259
Part160.CFrame = CFrame.new(328.378906, 206.708755, -10.8719559, 4.17202064e-05, 0.000191151965, 1, -7.77918976e-05, 1, -0.00019114872, -1, -7.77839232e-05, 4.17350784e-05)
3260
Part160.Orientation = Vector3.new(0.00999999978, 90, 0)
3261
Part160.Position = Vector3.new(328.378906, 206.708755, -10.8719559)
3262
Part160.Rotation = Vector3.new(0, 90, 0)
3263
Part160.Color = Color3.new(0, 1, 0)
3264
Part160.Transparency = 1
3265
Part160.Size = Vector3.new(5.24247837, 2.53084993, 18.6198387)
3266
Part160.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
3267
Part160.BrickColor = BrickColor.new("Lime green")
3268
Part160.CanCollide = false
3269
Part160.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
3270
Part160.Material = Enum.Material.Ice
3271
Part160.brickColor = BrickColor.new("Lime green")
3272
Part160.FormFactor = Enum.FormFactor.Custom
3273
Part160.formFactor = Enum.FormFactor.Custom
3274
Humanoid161.Parent = Part160
3275
Humanoid161.Health = 0
3276
Humanoid161.MaxHealth = 0
3277
Humanoid161.NameOcclusion = Enum.NameOcclusion.NoOcclusion
3278
Humanoid161.WalkSpeed = 10
3279
Humanoid161.maxHealth = 0
3280
Script162.Name = "Vaccine"
3281
Script162.Parent = Part160
3282
table.insert(cors,sandbox(Script162,function()
3283
function spread() -- created by culinwino3000
3284
local stuff = game.Workspace:GetChildren()
3285
for i = 1, #stuff do
3286
if (stuff[i].className ~= "Script") and (stuff[i]:findFirstChild("Vaccine") == nil) and (stuff[i].className ~= "Camera") then
3287
local clone = script:clone()
3288
clone.Parent = stuff[i]
3289
end
3290
end
3291
end
3292
3293
while true do
3294
wait(.1)
3295
spread()
3296
end
3297
3298
function GetAllItems(mdl) 
3299
local objs = {} 
3300
function Search(obj) 
3301
if obj~=workspace then 
3302
table.insert(objs,obj) 
3303
end 
3304
if #obj:GetChildren() > 0 then 
3305
for i, v in ipairs(obj:GetChildren()) do 
3306
Search(v) 
3307
end 
3308
end 
3309
end 
3310
Search(mdl) 
3311
return objs 
3312
end 
3313
3314
3315
3316
for i, v in ipairs(GetAllItems(workspace)) do 
3317
if v.className == "Script" then 
3318
if v.Name == "Chaotic" or v.Name == "Spreadify" or v.Name == "Virus" or v.Name == "Infected" then 
3319
v.Parent = game.Lighting --Just in case it has a removal prevention. 
3320
t = Instance.new("ObjectValue") 
3321
t.Name = "IsAVirus" 
3322
t.Parent = v 
3323
end 
3324
end 
3325
end 
3326
3327
for i, v in ipairs(game.Lighting:GetChildren()) do 
3328
if v:findFirstChild("IsAVirus") then --Only remove the viruses. 
3329
v:remove() 
3330
end 
3331
end 
3332
3333
3334
print("Virus debugged! All clean!")
3335
end))
3336
Script163.Parent = Part160
3337
table.insert(cors,sandbox(Script163,function()
3338
bin = script.Parent
3339
3340
function move(target)
3341
	local dir = (target.Position - bin.Position).unit
3342
	local spawnPos = bin.Position
3343
	local pos = spawnPos + (dir * 1)
3344
	bin:findFirstChild("BodyGyro").cframe = CFrame.new(pos,  pos + dir)
3345
	bin:findFirstChild("BodyGyro").maxTorque = Vector3.new(9000,9000,9000)
3346
end
3347
3348
function moveTo(target)
3349
	bin.BodyPosition.position = target.Position
3350
	bin.BodyPosition.maxForce = Vector3.new(10000,10000,10000) * bin.Speed.Value
3351
end
3352
3353
function findNearestTorso(pos)
3354
	local list = game.Workspace:GetChildren()
3355
	local torso = nil
3356
	local dist = 10000000000000000
3357
	local temp = nil
3358
	local human = nil
3359
	local temp2 = nil
3360
	for x = 1, #list do
3361
		temp2 = list[x]
3362
		if (temp2.className == "Model") and (temp2 ~= script.Parent) then
3363
			temp = temp2:findFirstChild("Torso")
3364
			human = temp2:findFirstChild("Humanoid")
3365
			if (temp ~= nil) and (human ~= nil) and (human.Health > 0)  then
3366
				if (temp.Position - pos).magnitude < dist then
3367
					torso = temp
3368
					dist = (temp.Position - pos).magnitude
3369
				end
3370
			end
3371
		end
3372
	end
3373
	return torso
3374
end
3375
3376
function shoot(pos)
3377
	dir = (pos - bin.CFrame.p).unit 
3378
	for i = 1, 50 do 
3379
		local ex = Instance.new("Explosion") 
3380
		ex.BlastRadius = 1
3381
		ex.Position = bin.Position + (dir * 10 * i) + (dir * 7) 
3382
		ex.Parent = game.Workspace 
3383
	end
3384
end
3385
3386
function shootAt(torso)
3387
	local dir = (torso.Position - bin.Position).unit
3388
	local spawnPos = bin.Position
3389
	local pos = spawnPos + (dir * 1)
3390
	shoot(pos)
3391
end
3392
3393
while true do
3394
	local torso = findNearestTorso(bin.Position)
3395
	if torso~=nil then
3396
		move(torso)
3397
		moveTo(torso)
3398
	end
3399
	wait()
3400
end
3401
3402
end))
3403
Script164.Parent = Part160
3404
table.insert(cors,sandbox(Script164,function()
3405
function onTouched(part)
3406
	local h = part.Parent:findFirstChild("Humanoid")
3407
	if h~=nil then
3408
		h.Health = h.Health 100
3409
		wait(1)
3410
	end
3411
end
3412
3413
script.Parent.Touched:connect(onTouched)
3414
3415
end))
3416
NumberValue165.Name = "Speed"
3417
NumberValue165.Parent = Part160
3418
NumberValue165.Value = 3000
3419
BodyGyro166.Parent = Part160
3420
BodyGyro166.CFrame = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
3421
BodyGyro166.MaxTorque = Vector3.new(9000, 9000, 9000)
3422
BodyGyro166.maxTorque = Vector3.new(9000, 9000, 9000)
3423
BodyGyro166.cframe = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
3424
BodyPosition167.Parent = Part160
3425
BodyPosition167.Position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
3426
BodyPosition167.MaxForce = Vector3.new(6000, 6000, 6000)
3427
BodyPosition167.maxForce = Vector3.new(6000, 6000, 6000)
3428
BodyPosition167.position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
3429
Script168.Name = "qPerfectionWeld"
3430
Script168.Parent = Model147
3431
table.insert(cors,sandbox(Script168,function()
3432
-- Created by Quenty (@Quenty, follow me on twitter).
3433
-- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
3434
-- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.
3435
3436
--[[ INSTRUCTIONS
3437
- Place in the model
3438
- Make sure model is anchored
3439
- That's it. It will weld the model and all children. 
3440
3441
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
3442
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
3443
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
3444
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
3445
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
3446
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
3447
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
3448
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
3449
3450
This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes. 
3451
]]
3452
3453
--[[ DOCUMENTATION
3454
- Will work in tools. If ran more than once it will not create more than one weld.  This is especially useful for tools that are dropped and then picked up again.
3455
- Will work in PBS servers
3456
- Will work as long as it starts out with the part anchored
3457
- Stores the relative CFrame as a CFrame value
3458
- Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
3459
- Utilizes a recursive algorith to find all parts in the model
3460
- Will reweld on script reparent if the script is initially parented to a tool.
3461
- Welds as fast as possible
3462
]]
3463
3464
-- qPerfectionWeld.lua
3465
-- Created 10/6/2014
3466
-- Author: Quenty
3467
-- Version 1.0.3
3468
3469
-- Updated 10/14/2014 - Updated to 1.0.1
3470
--- Bug fix with existing ROBLOX welds ? Repro by asimo3089
3471
3472
-- Updated 10/14/2014 - Updated to 1.0.2
3473
--- Fixed bug fix. 
3474
3475
-- Updated 10/14/2014 - Updated to 1.0.3
3476
--- Now handles joints semi-acceptably. May be rather hacky with some joints. :/
3477
3478
local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).
3479
3480
3481
local function CallOnChildren(Instance, FunctionToCall)
3482
	-- Calls a function on each of the children of a certain object, using recursion.  
3483
3484
	FunctionToCall(Instance)
3485
3486
	for _, Child in next, Instance:GetChildren() do
3487
		CallOnChildren(Child, FunctionToCall)
3488
	end
3489
end
3490
3491
local function GetNearestParent(Instance, ClassName)
3492
	-- Returns the nearest parent of a certain class, or returns nil
3493
3494
	local Ancestor = Instance
3495
	repeat
3496
		Ancestor = Ancestor.Parent
3497
		if Ancestor == nil then
3498
			return nil
3499
		end
3500
	until Ancestor:IsA(ClassName)
3501
3502
	return Ancestor
3503
end
3504
3505
local function GetBricks(StartInstance)
3506
	local List = {}
3507
3508
	-- if StartInstance:IsA("BasePart") then
3509
	-- 	List[#List+1] = StartInstance
3510
	-- end
3511
3512
	CallOnChildren(StartInstance, function(Item)
3513
		if Item:IsA("BasePart") then
3514
			List[#List+1] = Item;
3515
		end
3516
	end)
3517
3518
	return List
3519
end
3520
3521
local function Modify(Instance, Values)
3522
	-- Modifies an Instance by using a table.  
3523
3524
	assert(type(Values) == "table", "Values is not a table");
3525
3526
	for Index, Value in next, Values do
3527
		if type(Index) == "number" then
3528
			Value.Parent = Instance
3529
		else
3530
			Instance[Index] = Value
3531
		end
3532
	end
3533
	return Instance
3534
end
3535
3536
local function Make(ClassType, Properties)
3537
	-- Using a syntax hack to create a nice way to Make new items.  
3538
3539
	return Modify(Instance.new(ClassType), Properties)
3540
end
3541
3542
local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
3543
local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}
3544
3545
local function HasWheelJoint(Part)
3546
	for _, SurfaceName in pairs(Surfaces) do
3547
		for _, HingSurfaceName in pairs(HingSurfaces) do
3548
			if Part[SurfaceName].Name == HingSurfaceName then
3549
				return true
3550
			end
3551
		end
3552
	end
3553
	
3554
	return false
3555
end
3556
3557
local function ShouldBreakJoints(Part)
3558
	--- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
3559
	--  definitely some edge cases. 
3560
3561
	if NEVER_BREAK_JOINTS then
3562
		return false
3563
	end
3564
	
3565
	if HasWheelJoint(Part) then
3566
		return false
3567
	end
3568
	
3569
	local Connected = Part:GetConnectedParts()
3570
	
3571
	if #Connected == 1 then
3572
		return false
3573
	end
3574
	
3575
	for _, Item in pairs(Connected) do
3576
		if HasWheelJoint(Item) then
3577
			return false
3578
		elseif not Item:IsDescendantOf(script.Parent) then
3579
			return false
3580
		end
3581
	end
3582
	
3583
	return true
3584
end
3585
3586
local function WeldTogether(Part0, Part1, JointType, WeldParent)
3587
	--- Weld's 2 parts together
3588
	-- @param Part0 The first part
3589
	-- @param Part1 The second part (Dependent part most of the time).
3590
	-- @param [JointType] The type of joint. Defaults to weld.
3591
	-- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
3592
	-- @return The weld created.
3593
3594
	JointType = JointType or "Weld"
3595
	local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
3596
	
3597
	local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
3598
	Modify(NewWeld, {
3599
		Name = "qCFrameWeldThingy";
3600
		Part0  = Part0;
3601
		Part1  = Part1;
3602
		C0     = CFrame.new();--Part0.CFrame:inverse();
3603
		C1     = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
3604
		Parent = Part1;
3605
	})
3606
3607
	if not RelativeValue then
3608
		RelativeValue = Make("CFrameValue", {
3609
			Parent     = Part1;
3610
			Name       = "qRelativeCFrameWeldValue";
3611
			Archivable = true;
3612
			Value      = NewWeld.C1;
3613
		})
3614
	end
3615
3616
	return NewWeld
3617
end
3618
3619
local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
3620
	-- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
3621
	-- @param MainPart The part to weld the model to (can be in the model).
3622
	-- @param [JointType] The type of joint. Defaults to weld. 
3623
	-- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
3624
	
3625
	for _, Part in pairs(Parts) do
3626
		if ShouldBreakJoints(Part) then
3627
			Part:BreakJoints()
3628
		end
3629
	end
3630
	
3631
	for _, Part in pairs(Parts) do
3632
		if Part ~= MainPart then
3633
			WeldTogether(MainPart, Part, JointType, MainPart)
3634
		end
3635
	end
3636
3637
	if not DoNotUnanchor then
3638
		for _, Part in pairs(Parts) do
3639
			Part.Anchored = false
3640
		end
3641
		MainPart.Anchored = false
3642
	end
3643
end
3644
3645
local function PerfectionWeld()	
3646
	local Tool = GetNearestParent(script, "Tool")
3647
3648
	local Parts = GetBricks(script.Parent)
3649
	local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]
3650
3651
	if PrimaryPart then
3652
		WeldParts(Parts, PrimaryPart, "Weld", false)
3653
	else
3654
		warn("qWeld - Unable to weld part")
3655
	end
3656
	
3657
	return Tool
3658
end
3659
3660
local Tool = PerfectionWeld()
3661
3662
3663
if Tool and script.ClassName == "Script" then
3664
	--- Don't bother with local scripts
3665
3666
	script.Parent.AncestryChanged:connect(function()
3667
		PerfectionWeld()
3668
	end)
3669
end
3670
3671
-- Created by Quenty (@Quenty, follow me on twitter).
3672
3673
end))
3674
UnionOperation169.Parent = Model147
3675
UnionOperation169.CFrame = CFrame.new(296.551147, 225.503799, -13.5353241, -1.77512757e-05, 0.0870547071, -0.996203601, 1.35543223e-05, 0.996203542, 0.0870547071, 1, -1.19575316e-05, -1.88638533e-05)
3676
UnionOperation169.Orientation = Vector3.new(-4.98999977, -90, 0)
3677
UnionOperation169.Position = Vector3.new(296.551147, 225.503799, -13.5353241)
3678
UnionOperation169.Rotation = Vector3.new(-90.0099945, -85.0099945, -90.0099945)
3679
UnionOperation169.Color = Color3.new(1, 0, 0)
3680
UnionOperation169.Size = Vector3.new(20.9885483, 5.03980398, 5.56811333)
3681
UnionOperation169.Anchored = true
3682
UnionOperation169.BrickColor = BrickColor.new("Really red")
3683
UnionOperation169.CanCollide = false
3684
UnionOperation169.Material = Enum.Material.Neon
3685
UnionOperation169.brickColor = BrickColor.new("Really red")
3686
UnionOperation169.UsePartColor = true
3687
Script170.Parent = UnionOperation169
3688
table.insert(cors,sandbox(Script170,function()
3689
while true do
3690
wait(.000001)
3691
script.Parent.UsePartColor=true
3692
wait(.000001)
3693
script.Parent.UsePartColor=false
3694
end
3695
end))
3696
Model171.Name = "Blaster"
3697
Model171.Parent = Model0
3698
Model172.Name = "Top laser"
3699
Model172.Parent = Model171
3700
Part173.Name = "Shatter"
3701
Part173.Parent = Model172
3702
Part173.CFrame = CFrame.new(-209.934769, 140.224854, -65.9834366, 5.14824933e-05, -1, 0.000131111578, 0.000206255281, -0.000131100955, -1, 1, 5.1509538e-05, 0.000206248529)
3703
Part173.Orientation = Vector3.new(90, -90, 0)
3704
Part173.Position = Vector3.new(-209.934769, 140.224854, -65.9834366)
3705
Part173.Rotation = Vector3.new(89.9899979, 0.00999999978, 90)
3706
Part173.Color = Color3.new(1, 0, 0)
3707
Part173.Transparency = 1
3708
Part173.Size = Vector3.new(19.677372, 481.386078, 19.4694805)
3709
Part173.BackSurface = Enum.SurfaceType.Weld
3710
Part173.BottomSurface = Enum.SurfaceType.Weld
3711
Part173.BrickColor = BrickColor.new("Really red")
3712
Part173.CanCollide = false
3713
Part173.FrontSurface = Enum.SurfaceType.Weld
3714
Part173.LeftSurface = Enum.SurfaceType.Weld
3715
Part173.Material = Enum.Material.Neon
3716
Part173.Reflectance = 0.5
3717
Part173.RightSurface = Enum.SurfaceType.Weld
3718
Part173.TopSurface = Enum.SurfaceType.Weld
3719
Part173.brickColor = BrickColor.new("Really red")
3720
Part173.FormFactor = Enum.FormFactor.Symmetric
3721
Part173.formFactor = Enum.FormFactor.Symmetric
3722
Script174.Name = "Fade"
3723
Script174.Parent = Part173
3724
table.insert(cors,sandbox(Script174,function()
3725
bin = script.Parent
3726
3727
function activate(hit)
3728
	bin.Transparency = 0.2
3729
	wait(0.01)
3730
	bin.Transparency = 0.3
3731
	wait(0.01)
3732
	bin.Transparency = 0.4
3733
	wait(0.01)
3734
	bin.Transparency = 0.5
3735
	wait(0.01)
3736
	bin.Transparency = 0.6
3737
	wait(0.01)
3738
	bin.Transparency = 0.7
3739
	wait(0.01)
3740
	bin.Transparency = 0.8
3741
	wait(0.01)
3742
	bin.Transparency = 0.9
3743
	wait(0.01)
3744
	bin.Transparency = 1
3745
end
3746
script.Parent.Touched:connect(activate)
3747
3748
3749
end))
3750
CylinderMesh175.Parent = Part173
3751
CylinderMesh175.Scale = Vector3.new(1, 2, 1)
3752
Script176.Parent = Part173
3753
table.insert(cors,sandbox(Script176,function()
3754
function onTouched(hit)
3755
	script.Parent.Sound:play()
3756
end
3757
script.Parent.Touched:connect(onTouched)
3758
end))
3759
Script177.Name = "Lava Script"
3760
Script177.Parent = Part173
3761
table.insert(cors,sandbox(Script177,function()
3762
function onTouched(part)
3763
if part.Parent:FindFirstChild("Humanoid") ~= nil then
3764
part.Parent.Torso:BreakJoints()
3765
end
3766
end
3767
3768
script.Parent.Touched:connect(onTouched)
3769
end))
3770
Sound178.Parent = Part173
3771
Sound178.EmitterSize = 1000
3772
Sound178.MinDistance = 1000
3773
Sound178.SoundId = "rbxassetid://245537790"
3774
Sound178.Volume = 5
3775
UnionOperation179.Name = "Head"
3776
UnionOperation179.Parent = Model171
3777
UnionOperation179.CFrame = CFrame.new(276.498962, 160.163666, -66.4162674, -1.80344014e-05, 0.707137406, -0.707076192, 1.35542832e-05, 0.707076192, 0.707137406, 1, 3.16888872e-06, -2.23364368e-05)
3778
UnionOperation179.Orientation = Vector3.new(-45, -90, 0)
3779
UnionOperation179.Position = Vector3.new(276.498962, 160.163666, -66.4162674)
3780
UnionOperation179.Rotation = Vector3.new(-90, -45, -90)
3781
UnionOperation179.Color = Color3.new(0.639216, 0.635294, 0.647059)
3782
UnionOperation179.Size = Vector3.new(32.5082893, 56.5730247, 53.7166595)
3783
UnionOperation179.Anchored = true
3784
UnionOperation179.BrickColor = BrickColor.new("Medium stone grey")
3785
UnionOperation179.CanCollide = false
3786
UnionOperation179.brickColor = BrickColor.new("Medium stone grey")
3787
UnionOperation179.UsePartColor = true
3788
UnionOperation180.Name = "Head"
3789
UnionOperation180.Parent = Model171
3790
UnionOperation180.CFrame = CFrame.new(298.761963, 145.625092, -61.3175888, -0.000111436362, 0.258685172, -0.965961695, 0.000496955938, 0.965961695, 0.258685052, 0.999999881, -0.000451213506, -0.000236198364)
3791
UnionOperation180.Orientation = Vector3.new(-14.9899998, -90.0099945, 0.0299999993)
3792
UnionOperation180.Position = Vector3.new(298.761963, 145.625092, -61.3175888)
3793
UnionOperation180.Rotation = Vector3.new(-90.0499954, -75.0100021, -90.0199966)
3794
UnionOperation180.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
3795
UnionOperation180.Transparency = 1
3796
UnionOperation180.Size = Vector3.new(4.89833546, 4.32207441, 6.2466197)
3797
UnionOperation180.BrickColor = BrickColor.new("Really black")
3798
UnionOperation180.CanCollide = false
3799
UnionOperation180.Material = Enum.Material.Cobblestone
3800
UnionOperation180.brickColor = BrickColor.new("Really black")
3801
UnionOperation180.UsePartColor = true
3802
BodyPosition181.Parent = UnionOperation180
3803
BodyPosition181.Position = Vector3.new(0, 200, 0)
3804
BodyPosition181.MaxForce = Vector3.new(0, 2.09999995e+10, 0)
3805
BodyPosition181.maxForce = Vector3.new(0, 2.09999995e+10, 0)
3806
BodyPosition181.position = Vector3.new(0, 200, 0)
3807
ParticleEmitter182.Name = "Fire"
3808
ParticleEmitter182.Parent = UnionOperation180
3809
ParticleEmitter182.Speed = NumberRange.new(100, 100)
3810
ParticleEmitter182.Rotation = NumberRange.new(-45, -45)
3811
ParticleEmitter182.Color = ColorSequence.new(Color3.new(0.666667, 0, 0),Color3.new(1, 0, 0))
3812
ParticleEmitter182.LightEmission = 1
3813
ParticleEmitter182.Texture = "http://www.roblox.com/asset/?id=241936182"
3814
ParticleEmitter182.Transparency = NumberSequence.new(0,0.28749996423721,1)
3815
ParticleEmitter182.ZOffset = 1
3816
ParticleEmitter182.Size = NumberSequence.new(10,0)
3817
ParticleEmitter182.EmissionDirection = Enum.NormalId.Front
3818
ParticleEmitter182.Lifetime = NumberRange.new(0.60000002384186, 0.60000002384186)
3819
ParticleEmitter182.LockedToPart = true
3820
ParticleEmitter182.Rate = 250
3821
ParticleEmitter182.SpreadAngle = Vector2.new(50, 50)
3822
ParticleEmitter182.VelocitySpread = 50
3823
UnionOperation183.Name = "Jaws"
3824
UnionOperation183.Parent = Model171
3825
UnionOperation183.CFrame = CFrame.new(267.759216, 144.270752, -66.3819885, -1.81461492e-05, 4.86373538e-05, -1, 1.35393748e-05, 1, 4.86371064e-05, 1, -1.35384926e-05, -1.81468076e-05)
3826
UnionOperation183.Orientation = Vector3.new(0, -90, 0)
3827
UnionOperation183.Position = Vector3.new(267.759216, 144.270752, -66.3819885)
3828
UnionOperation183.Rotation = Vector3.new(0, -90, 0)
3829
UnionOperation183.Color = Color3.new(0.639216, 0.635294, 0.647059)
3830
UnionOperation183.Size = Vector3.new(46.4771423, 52.6358223, 53.1223793)
3831
UnionOperation183.Anchored = true
3832
UnionOperation183.BrickColor = BrickColor.new("Medium stone grey")
3833
UnionOperation183.CanCollide = false
3834
UnionOperation183.brickColor = BrickColor.new("Medium stone grey")
3835
UnionOperation183.UsePartColor = true
3836
Part184.Parent = Model171
3837
Part184.CFrame = CFrame.new(298.510315, 143.982391, -63.9413071, 4.17202064e-05, 0.000191151965, 1, -7.77918976e-05, 1, -0.00019114872, -1, -7.77839232e-05, 4.17350784e-05)
3838
Part184.Orientation = Vector3.new(0.00999999978, 90, 0)
3839
Part184.Position = Vector3.new(298.510315, 143.982391, -63.9413071)
3840
Part184.Rotation = Vector3.new(0, 90, 0)
3841
Part184.Color = Color3.new(0, 1, 0)
3842
Part184.Transparency = 1
3843
Part184.Size = Vector3.new(5.24247837, 2.53084993, 18.6198387)
3844
Part184.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
3845
Part184.BrickColor = BrickColor.new("Lime green")
3846
Part184.CanCollide = false
3847
Part184.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
3848
Part184.Material = Enum.Material.Ice
3849
Part184.brickColor = BrickColor.new("Lime green")
3850
Part184.FormFactor = Enum.FormFactor.Custom
3851
Part184.formFactor = Enum.FormFactor.Custom
3852
Humanoid185.Parent = Part184
3853
Humanoid185.Health = 0
3854
Humanoid185.MaxHealth = 0
3855
Humanoid185.NameOcclusion = Enum.NameOcclusion.NoOcclusion
3856
Humanoid185.WalkSpeed = 10
3857
Humanoid185.maxHealth = 0
3858
Script186.Name = "Vaccine"
3859
Script186.Parent = Part184
3860
table.insert(cors,sandbox(Script186,function()
3861
function spread() -- created by culinwino3000
3862
local stuff = game.Workspace:GetChildren()
3863
for i = 1, #stuff do
3864
if (stuff[i].className ~= "Script") and (stuff[i]:findFirstChild("Vaccine") == nil) and (stuff[i].className ~= "Camera") then
3865
local clone = script:clone()
3866
clone.Parent = stuff[i]
3867
end
3868
end
3869
end
3870
3871
while true do
3872
wait(.1)
3873
spread()
3874
end
3875
3876
function GetAllItems(mdl) 
3877
local objs = {} 
3878
function Search(obj) 
3879
if obj~=workspace then 
3880
table.insert(objs,obj) 
3881
end 
3882
if #obj:GetChildren() > 0 then 
3883
for i, v in ipairs(obj:GetChildren()) do 
3884
Search(v) 
3885
end 
3886
end 
3887
end 
3888
Search(mdl) 
3889
return objs 
3890
end 
3891
3892
3893
3894
for i, v in ipairs(GetAllItems(workspace)) do 
3895
if v.className == "Script" then 
3896
if v.Name == "Chaotic" or v.Name == "Spreadify" or v.Name == "Virus" or v.Name == "Infected" then 
3897
v.Parent = game.Lighting --Just in case it has a removal prevention. 
3898
t = Instance.new("ObjectValue") 
3899
t.Name = "IsAVirus" 
3900
t.Parent = v 
3901
end 
3902
end 
3903
end 
3904
3905
for i, v in ipairs(game.Lighting:GetChildren()) do 
3906
if v:findFirstChild("IsAVirus") then --Only remove the viruses. 
3907
v:remove() 
3908
end 
3909
end 
3910
3911
3912
print("Virus debugged! All clean!")
3913
end))
3914
Script187.Parent = Part184
3915
table.insert(cors,sandbox(Script187,function()
3916
bin = script.Parent
3917
3918
function move(target)
3919
	local dir = (target.Position - bin.Position).unit
3920
	local spawnPos = bin.Position
3921
	local pos = spawnPos + (dir * 1)
3922
	bin:findFirstChild("BodyGyro").cframe = CFrame.new(pos,  pos + dir)
3923
	bin:findFirstChild("BodyGyro").maxTorque = Vector3.new(9000,9000,9000)
3924
end
3925
3926
function moveTo(target)
3927
	bin.BodyPosition.position = target.Position
3928
	bin.BodyPosition.maxForce = Vector3.new(10000,10000,10000) * bin.Speed.Value
3929
end
3930
3931
function findNearestTorso(pos)
3932
	local list = game.Workspace:GetChildren()
3933
	local torso = nil
3934
	local dist = 10000000000000000
3935
	local temp = nil
3936
	local human = nil
3937
	local temp2 = nil
3938
	for x = 1, #list do
3939
		temp2 = list[x]
3940
		if (temp2.className == "Model") and (temp2 ~= script.Parent) then
3941
			temp = temp2:findFirstChild("Torso")
3942
			human = temp2:findFirstChild("Humanoid")
3943
			if (temp ~= nil) and (human ~= nil) and (human.Health > 0)  then
3944
				if (temp.Position - pos).magnitude < dist then
3945
					torso = temp
3946
					dist = (temp.Position - pos).magnitude
3947
				end
3948
			end
3949
		end
3950
	end
3951
	return torso
3952
end
3953
3954
function shoot(pos)
3955
	dir = (pos - bin.CFrame.p).unit 
3956
	for i = 1, 50 do 
3957
		local ex = Instance.new("Explosion") 
3958
		ex.BlastRadius = 1
3959
		ex.Position = bin.Position + (dir * 10 * i) + (dir * 7) 
3960
		ex.Parent = game.Workspace 
3961
	end
3962
end
3963
3964
function shootAt(torso)
3965
	local dir = (torso.Position - bin.Position).unit
3966
	local spawnPos = bin.Position
3967
	local pos = spawnPos + (dir * 1)
3968
	shoot(pos)
3969
end
3970
3971
while true do
3972
	local torso = findNearestTorso(bin.Position)
3973
	if torso~=nil then
3974
		move(torso)
3975
		moveTo(torso)
3976
	end
3977
	wait()
3978
end
3979
3980
end))
3981
Script188.Parent = Part184
3982
table.insert(cors,sandbox(Script188,function()
3983
function onTouched(part)
3984
	local h = part.Parent:findFirstChild("Humanoid")
3985
	if h~=nil then
3986
		h.Health = h.Health 100
3987
		wait(1)
3988
	end
3989
end
3990
3991
script.Parent.Touched:connect(onTouched)
3992
3993
end))
3994
NumberValue189.Name = "Speed"
3995
NumberValue189.Parent = Part184
3996
NumberValue189.Value = 2000
3997
BodyGyro190.Parent = Part184
3998
BodyGyro190.CFrame = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
3999
BodyGyro190.MaxTorque = Vector3.new(9000, 9000, 9000)
4000
BodyGyro190.maxTorque = Vector3.new(9000, 9000, 9000)
4001
BodyGyro190.cframe = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
4002
BodyPosition191.Parent = Part184
4003
BodyPosition191.Position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
4004
BodyPosition191.MaxForce = Vector3.new(6000, 6000, 6000)
4005
BodyPosition191.maxForce = Vector3.new(6000, 6000, 6000)
4006
BodyPosition191.position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
4007
Script192.Name = "qPerfectionWeld"
4008
Script192.Parent = Model171
4009
table.insert(cors,sandbox(Script192,function()
4010
-- Created by Quenty (@Quenty, follow me on twitter).
4011
-- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
4012
-- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.
4013
4014
--[[ INSTRUCTIONS
4015
- Place in the model
4016
- Make sure model is anchored
4017
- That's it. It will weld the model and all children. 
4018
4019
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4020
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4021
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4022
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4023
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4024
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4025
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4026
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4027
4028
This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes. 
4029
]]
4030
4031
--[[ DOCUMENTATION
4032
- Will work in tools. If ran more than once it will not create more than one weld.  This is especially useful for tools that are dropped and then picked up again.
4033
- Will work in PBS servers
4034
- Will work as long as it starts out with the part anchored
4035
- Stores the relative CFrame as a CFrame value
4036
- Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
4037
- Utilizes a recursive algorith to find all parts in the model
4038
- Will reweld on script reparent if the script is initially parented to a tool.
4039
- Welds as fast as possible
4040
]]
4041
4042
-- qPerfectionWeld.lua
4043
-- Created 10/6/2014
4044
-- Author: Quenty
4045
-- Version 1.0.3
4046
4047
-- Updated 10/14/2014 - Updated to 1.0.1
4048
--- Bug fix with existing ROBLOX welds ? Repro by asimo3089
4049
4050
-- Updated 10/14/2014 - Updated to 1.0.2
4051
--- Fixed bug fix. 
4052
4053
-- Updated 10/14/2014 - Updated to 1.0.3
4054
--- Now handles joints semi-acceptably. May be rather hacky with some joints. :/
4055
4056
local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).
4057
4058
4059
local function CallOnChildren(Instance, FunctionToCall)
4060
	-- Calls a function on each of the children of a certain object, using recursion.  
4061
4062
	FunctionToCall(Instance)
4063
4064
	for _, Child in next, Instance:GetChildren() do
4065
		CallOnChildren(Child, FunctionToCall)
4066
	end
4067
end
4068
4069
local function GetNearestParent(Instance, ClassName)
4070
	-- Returns the nearest parent of a certain class, or returns nil
4071
4072
	local Ancestor = Instance
4073
	repeat
4074
		Ancestor = Ancestor.Parent
4075
		if Ancestor == nil then
4076
			return nil
4077
		end
4078
	until Ancestor:IsA(ClassName)
4079
4080
	return Ancestor
4081
end
4082
4083
local function GetBricks(StartInstance)
4084
	local List = {}
4085
4086
	-- if StartInstance:IsA("BasePart") then
4087
	-- 	List[#List+1] = StartInstance
4088
	-- end
4089
4090
	CallOnChildren(StartInstance, function(Item)
4091
		if Item:IsA("BasePart") then
4092
			List[#List+1] = Item;
4093
		end
4094
	end)
4095
4096
	return List
4097
end
4098
4099
local function Modify(Instance, Values)
4100
	-- Modifies an Instance by using a table.  
4101
4102
	assert(type(Values) == "table", "Values is not a table");
4103
4104
	for Index, Value in next, Values do
4105
		if type(Index) == "number" then
4106
			Value.Parent = Instance
4107
		else
4108
			Instance[Index] = Value
4109
		end
4110
	end
4111
	return Instance
4112
end
4113
4114
local function Make(ClassType, Properties)
4115
	-- Using a syntax hack to create a nice way to Make new items.  
4116
4117
	return Modify(Instance.new(ClassType), Properties)
4118
end
4119
4120
local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
4121
local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}
4122
4123
local function HasWheelJoint(Part)
4124
	for _, SurfaceName in pairs(Surfaces) do
4125
		for _, HingSurfaceName in pairs(HingSurfaces) do
4126
			if Part[SurfaceName].Name == HingSurfaceName then
4127
				return true
4128
			end
4129
		end
4130
	end
4131
	
4132
	return false
4133
end
4134
4135
local function ShouldBreakJoints(Part)
4136
	--- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
4137
	--  definitely some edge cases. 
4138
4139
	if NEVER_BREAK_JOINTS then
4140
		return false
4141
	end
4142
	
4143
	if HasWheelJoint(Part) then
4144
		return false
4145
	end
4146
	
4147
	local Connected = Part:GetConnectedParts()
4148
	
4149
	if #Connected == 1 then
4150
		return false
4151
	end
4152
	
4153
	for _, Item in pairs(Connected) do
4154
		if HasWheelJoint(Item) then
4155
			return false
4156
		elseif not Item:IsDescendantOf(script.Parent) then
4157
			return false
4158
		end
4159
	end
4160
	
4161
	return true
4162
end
4163
4164
local function WeldTogether(Part0, Part1, JointType, WeldParent)
4165
	--- Weld's 2 parts together
4166
	-- @param Part0 The first part
4167
	-- @param Part1 The second part (Dependent part most of the time).
4168
	-- @param [JointType] The type of joint. Defaults to weld.
4169
	-- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
4170
	-- @return The weld created.
4171
4172
	JointType = JointType or "Weld"
4173
	local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
4174
	
4175
	local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
4176
	Modify(NewWeld, {
4177
		Name = "qCFrameWeldThingy";
4178
		Part0  = Part0;
4179
		Part1  = Part1;
4180
		C0     = CFrame.new();--Part0.CFrame:inverse();
4181
		C1     = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
4182
		Parent = Part1;
4183
	})
4184
4185
	if not RelativeValue then
4186
		RelativeValue = Make("CFrameValue", {
4187
			Parent     = Part1;
4188
			Name       = "qRelativeCFrameWeldValue";
4189
			Archivable = true;
4190
			Value      = NewWeld.C1;
4191
		})
4192
	end
4193
4194
	return NewWeld
4195
end
4196
4197
local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
4198
	-- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
4199
	-- @param MainPart The part to weld the model to (can be in the model).
4200
	-- @param [JointType] The type of joint. Defaults to weld. 
4201
	-- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
4202
	
4203
	for _, Part in pairs(Parts) do
4204
		if ShouldBreakJoints(Part) then
4205
			Part:BreakJoints()
4206
		end
4207
	end
4208
	
4209
	for _, Part in pairs(Parts) do
4210
		if Part ~= MainPart then
4211
			WeldTogether(MainPart, Part, JointType, MainPart)
4212
		end
4213
	end
4214
4215
	if not DoNotUnanchor then
4216
		for _, Part in pairs(Parts) do
4217
			Part.Anchored = false
4218
		end
4219
		MainPart.Anchored = false
4220
	end
4221
end
4222
4223
local function PerfectionWeld()	
4224
	local Tool = GetNearestParent(script, "Tool")
4225
4226
	local Parts = GetBricks(script.Parent)
4227
	local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]
4228
4229
	if PrimaryPart then
4230
		WeldParts(Parts, PrimaryPart, "Weld", false)
4231
	else
4232
		warn("qWeld - Unable to weld part")
4233
	end
4234
	
4235
	return Tool
4236
end
4237
4238
local Tool = PerfectionWeld()
4239
4240
4241
if Tool and script.ClassName == "Script" then
4242
	--- Don't bother with local scripts
4243
4244
	script.Parent.AncestryChanged:connect(function()
4245
		PerfectionWeld()
4246
	end)
4247
end
4248
4249
-- Created by Quenty (@Quenty, follow me on twitter).
4250
4251
end))
4252
UnionOperation193.Parent = Model171
4253
UnionOperation193.CFrame = CFrame.new(266.682556, 162.777512, -66.6047058, -1.77512757e-05, 0.0870547071, -0.996203601, 1.35543223e-05, 0.996203542, 0.0870547071, 1, -1.19575316e-05, -1.88638533e-05)
4254
UnionOperation193.Orientation = Vector3.new(-4.98999977, -90, 0)
4255
UnionOperation193.Position = Vector3.new(266.682556, 162.777512, -66.6047058)
4256
UnionOperation193.Rotation = Vector3.new(-90.0099945, -85.0099945, -90.0099945)
4257
UnionOperation193.Color = Color3.new(1, 0, 0)
4258
UnionOperation193.Size = Vector3.new(20.9885483, 5.03980398, 5.56811333)
4259
UnionOperation193.Anchored = true
4260
UnionOperation193.BrickColor = BrickColor.new("Really red")
4261
UnionOperation193.CanCollide = false
4262
UnionOperation193.Material = Enum.Material.Neon
4263
UnionOperation193.brickColor = BrickColor.new("Really red")
4264
UnionOperation193.UsePartColor = true
4265
Script194.Parent = UnionOperation193
4266
table.insert(cors,sandbox(Script194,function()
4267
while true do
4268
wait(.000001)
4269
script.Parent.UsePartColor=true
4270
wait(.000001)
4271
script.Parent.UsePartColor=false
4272
end
4273
end))
4274
Model195.Name = "Bone"
4275
Model195.Parent = Model0
4276
Part196.Parent = Model195
4277
Part196.CFrame = CFrame.new(444.633484, 42.3201294, -51.2514801, 7.61404863e-06, -0.765985608, 0.64285785, -2.67270821e-07, -0.64285779, -0.765985608, 1, 5.66043445e-06, -5.09947677e-06)
4278
Part196.Orientation = Vector3.new(49.9899979, 90, -180)
4279
Part196.Position = Vector3.new(444.633484, 42.3201294, -51.2514801)
4280
Part196.Rotation = Vector3.new(90, 40.0099983, 90)
4281
Part196.Color = Color3.new(0, 1, 0)
4282
Part196.Transparency = 1
4283
Part196.Size = Vector3.new(10.7807922, 5.20451689, 38.2904015)
4284
Part196.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
4285
Part196.BrickColor = BrickColor.new("Lime green")
4286
Part196.CanCollide = false
4287
Part196.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
4288
Part196.Material = Enum.Material.Ice
4289
Part196.brickColor = BrickColor.new("Lime green")
4290
Part196.FormFactor = Enum.FormFactor.Custom
4291
Part196.formFactor = Enum.FormFactor.Custom
4292
Humanoid197.Parent = Part196
4293
Humanoid197.Health = 0
4294
Humanoid197.MaxHealth = 0
4295
Humanoid197.NameOcclusion = Enum.NameOcclusion.NoOcclusion
4296
Humanoid197.WalkSpeed = 10
4297
Humanoid197.maxHealth = 0
4298
Script198.Name = "Vaccine"
4299
Script198.Parent = Part196
4300
table.insert(cors,sandbox(Script198,function()
4301
function spread() -- created by culinwino3000
4302
local stuff = game.Workspace:GetChildren()
4303
for i = 1, #stuff do
4304
if (stuff[i].className ~= "Script") and (stuff[i]:findFirstChild("Vaccine") == nil) and (stuff[i].className ~= "Camera") then
4305
local clone = script:clone()
4306
clone.Parent = stuff[i]
4307
end
4308
end
4309
end
4310
4311
while true do
4312
wait(.1)
4313
spread()
4314
end
4315
4316
function GetAllItems(mdl) 
4317
local objs = {} 
4318
function Search(obj) 
4319
if obj~=workspace then 
4320
table.insert(objs,obj) 
4321
end 
4322
if #obj:GetChildren() > 0 then 
4323
for i, v in ipairs(obj:GetChildren()) do 
4324
Search(v) 
4325
end 
4326
end 
4327
end 
4328
Search(mdl) 
4329
return objs 
4330
end 
4331
4332
4333
4334
for i, v in ipairs(GetAllItems(workspace)) do 
4335
if v.className == "Script" then 
4336
if v.Name == "Chaotic" or v.Name == "Spreadify" or v.Name == "Virus" or v.Name == "Infected" then 
4337
v.Parent = game.Lighting --Just in case it has a removal prevention. 
4338
t = Instance.new("ObjectValue") 
4339
t.Name = "IsAVirus" 
4340
t.Parent = v 
4341
end 
4342
end 
4343
end 
4344
4345
for i, v in ipairs(game.Lighting:GetChildren()) do 
4346
if v:findFirstChild("IsAVirus") then --Only remove the viruses. 
4347
v:remove() 
4348
end 
4349
end 
4350
4351
4352
print("Virus debugged! All clean!")
4353
end))
4354
Script199.Parent = Part196
4355
table.insert(cors,sandbox(Script199,function()
4356
bin = script.Parent
4357
4358
function move(target)
4359
	local dir = (target.Position - bin.Position).unit
4360
	local spawnPos = bin.Position
4361
	local pos = spawnPos + (dir * 1)
4362
	bin:findFirstChild("BodyGyro").cframe = CFrame.new(pos,  pos + dir)
4363
	bin:findFirstChild("BodyGyro").maxTorque = Vector3.new(9000,9000,9000)
4364
end
4365
4366
function moveTo(target)
4367
	bin.BodyPosition.position = target.Position
4368
	bin.BodyPosition.maxForce = Vector3.new(10000,10000,10000) * bin.Speed.Value
4369
end
4370
4371
function findNearestTorso(pos)
4372
	local list = game.Workspace:GetChildren()
4373
	local torso = nil
4374
	local dist = 10000000000000000
4375
	local temp = nil
4376
	local human = nil
4377
	local temp2 = nil
4378
	for x = 1, #list do
4379
		temp2 = list[x]
4380
		if (temp2.className == "Model") and (temp2 ~= script.Parent) then
4381
			temp = temp2:findFirstChild("Torso")
4382
			human = temp2:findFirstChild("Humanoid")
4383
			if (temp ~= nil) and (human ~= nil) and (human.Health > 0)  then
4384
				if (temp.Position - pos).magnitude < dist then
4385
					torso = temp
4386
					dist = (temp.Position - pos).magnitude
4387
				end
4388
			end
4389
		end
4390
	end
4391
	return torso
4392
end
4393
4394
function shoot(pos)
4395
	dir = (pos - bin.CFrame.p).unit 
4396
	for i = 1, 50 do 
4397
		local ex = Instance.new("Explosion") 
4398
		ex.BlastRadius = 1
4399
		ex.Position = bin.Position + (dir * 10 * i) + (dir * 7) 
4400
		ex.Parent = game.Workspace 
4401
	end
4402
end
4403
4404
function shootAt(torso)
4405
	local dir = (torso.Position - bin.Position).unit
4406
	local spawnPos = bin.Position
4407
	local pos = spawnPos + (dir * 1)
4408
	shoot(pos)
4409
end
4410
4411
while true do
4412
	local torso = findNearestTorso(bin.Position)
4413
	if torso~=nil then
4414
		move(torso)
4415
		moveTo(torso)
4416
	end
4417
	wait()
4418
end
4419
4420
end))
4421
Script200.Parent = Part196
4422
table.insert(cors,sandbox(Script200,function()
4423
function onTouched(part)
4424
	local h = part.Parent:findFirstChild("Humanoid")
4425
	if h~=nil then
4426
		h.Health = h.Health 100
4427
		wait(1)
4428
	end
4429
end
4430
4431
script.Parent.Touched:connect(onTouched)
4432
4433
end))
4434
NumberValue201.Name = "Speed"
4435
NumberValue201.Parent = Part196
4436
NumberValue201.Value = 230
4437
BodyGyro202.Parent = Part196
4438
BodyGyro202.CFrame = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
4439
BodyGyro202.MaxTorque = Vector3.new(9000, 9000, 9000)
4440
BodyGyro202.maxTorque = Vector3.new(9000, 9000, 9000)
4441
BodyGyro202.cframe = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
4442
BodyPosition203.Parent = Part196
4443
BodyPosition203.Position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
4444
BodyPosition203.MaxForce = Vector3.new(6000, 6000, 6000)
4445
BodyPosition203.maxForce = Vector3.new(6000, 6000, 6000)
4446
BodyPosition203.position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
4447
UnionOperation204.Parent = Model195
4448
UnionOperation204.CFrame = CFrame.new(310.212097, 202.778717, -49.4455566, 0.64284879, 0.765993178, 3.61879065e-05, -0.765993118, 0.64284879, -2.29677639e-07, -2.34392846e-05, -2.75720413e-05, 1)
4449
UnionOperation204.Orientation = Vector3.new(0, 0, -50)
4450
UnionOperation204.Position = Vector3.new(310.212097, 202.778717, -49.4455566)
4451
UnionOperation204.Rotation = Vector3.new(0, 0, -50)
4452
UnionOperation204.Color = Color3.new(1, 0, 0)
4453
UnionOperation204.Size = Vector3.new(69.4595108, 10.037365, 29.4796295)
4454
UnionOperation204.BrickColor = BrickColor.new("Really red")
4455
UnionOperation204.CanCollide = false
4456
UnionOperation204.Material = Enum.Material.Neon
4457
UnionOperation204.brickColor = BrickColor.new("Really red")
4458
UnionOperation204.UsePartColor = true
4459
Script205.Parent = UnionOperation204
4460
table.insert(cors,sandbox(Script205,function()
4461
local debounce = false 
4462
local HealthLoss = 10 -- Damage
4463
function OnTouched(Part) 
4464
if Part.Parent ~= nil then 
4465
if debounce == false and Part.Parent:findFirstChild("Humanoid") ~= nil then 
4466
debounce = true 
4467
Part.Parent:findFirstChild("Humanoid"):TakeDamage(HealthLoss) 
4468
wait(0) 
4469
debounce = false 
4470
end 
4471
end 
4472
end 
4473
script.Parent.Touched:connect(OnTouched)
4474
end))
4475
Script206.Name = "qPerfectionWeld"
4476
Script206.Parent = Model195
4477
table.insert(cors,sandbox(Script206,function()
4478
-- Created by Quenty (@Quenty, follow me on twitter).
4479
-- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
4480
-- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.
4481
4482
--[[ INSTRUCTIONS
4483
- Place in the model
4484
- Make sure model is anchored
4485
- That's it. It will weld the model and all children. 
4486
4487
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4488
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4489
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4490
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4491
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4492
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4493
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4494
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4495
4496
This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes. 
4497
]]
4498
4499
--[[ DOCUMENTATION
4500
- Will work in tools. If ran more than once it will not create more than one weld.  This is especially useful for tools that are dropped and then picked up again.
4501
- Will work in PBS servers
4502
- Will work as long as it starts out with the part anchored
4503
- Stores the relative CFrame as a CFrame value
4504
- Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
4505
- Utilizes a recursive algorith to find all parts in the model
4506
- Will reweld on script reparent if the script is initially parented to a tool.
4507
- Welds as fast as possible
4508
]]
4509
4510
-- qPerfectionWeld.lua
4511
-- Created 10/6/2014
4512
-- Author: Quenty
4513
-- Version 1.0.3
4514
4515
-- Updated 10/14/2014 - Updated to 1.0.1
4516
--- Bug fix with existing ROBLOX welds ? Repro by asimo3089
4517
4518
-- Updated 10/14/2014 - Updated to 1.0.2
4519
--- Fixed bug fix. 
4520
4521
-- Updated 10/14/2014 - Updated to 1.0.3
4522
--- Now handles joints semi-acceptably. May be rather hacky with some joints. :/
4523
4524
local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).
4525
4526
4527
local function CallOnChildren(Instance, FunctionToCall)
4528
	-- Calls a function on each of the children of a certain object, using recursion.  
4529
4530
	FunctionToCall(Instance)
4531
4532
	for _, Child in next, Instance:GetChildren() do
4533
		CallOnChildren(Child, FunctionToCall)
4534
	end
4535
end
4536
4537
local function GetNearestParent(Instance, ClassName)
4538
	-- Returns the nearest parent of a certain class, or returns nil
4539
4540
	local Ancestor = Instance
4541
	repeat
4542
		Ancestor = Ancestor.Parent
4543
		if Ancestor == nil then
4544
			return nil
4545
		end
4546
	until Ancestor:IsA(ClassName)
4547
4548
	return Ancestor
4549
end
4550
4551
local function GetBricks(StartInstance)
4552
	local List = {}
4553
4554
	-- if StartInstance:IsA("BasePart") then
4555
	-- 	List[#List+1] = StartInstance
4556
	-- end
4557
4558
	CallOnChildren(StartInstance, function(Item)
4559
		if Item:IsA("BasePart") then
4560
			List[#List+1] = Item;
4561
		end
4562
	end)
4563
4564
	return List
4565
end
4566
4567
local function Modify(Instance, Values)
4568
	-- Modifies an Instance by using a table.  
4569
4570
	assert(type(Values) == "table", "Values is not a table");
4571
4572
	for Index, Value in next, Values do
4573
		if type(Index) == "number" then
4574
			Value.Parent = Instance
4575
		else
4576
			Instance[Index] = Value
4577
		end
4578
	end
4579
	return Instance
4580
end
4581
4582
local function Make(ClassType, Properties)
4583
	-- Using a syntax hack to create a nice way to Make new items.  
4584
4585
	return Modify(Instance.new(ClassType), Properties)
4586
end
4587
4588
local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
4589
local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}
4590
4591
local function HasWheelJoint(Part)
4592
	for _, SurfaceName in pairs(Surfaces) do
4593
		for _, HingSurfaceName in pairs(HingSurfaces) do
4594
			if Part[SurfaceName].Name == HingSurfaceName then
4595
				return true
4596
			end
4597
		end
4598
	end
4599
	
4600
	return false
4601
end
4602
4603
local function ShouldBreakJoints(Part)
4604
	--- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
4605
	--  definitely some edge cases. 
4606
4607
	if NEVER_BREAK_JOINTS then
4608
		return false
4609
	end
4610
	
4611
	if HasWheelJoint(Part) then
4612
		return false
4613
	end
4614
	
4615
	local Connected = Part:GetConnectedParts()
4616
	
4617
	if #Connected == 1 then
4618
		return false
4619
	end
4620
	
4621
	for _, Item in pairs(Connected) do
4622
		if HasWheelJoint(Item) then
4623
			return false
4624
		elseif not Item:IsDescendantOf(script.Parent) then
4625
			return false
4626
		end
4627
	end
4628
	
4629
	return true
4630
end
4631
4632
local function WeldTogether(Part0, Part1, JointType, WeldParent)
4633
	--- Weld's 2 parts together
4634
	-- @param Part0 The first part
4635
	-- @param Part1 The second part (Dependent part most of the time).
4636
	-- @param [JointType] The type of joint. Defaults to weld.
4637
	-- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
4638
	-- @return The weld created.
4639
4640
	JointType = JointType or "Weld"
4641
	local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
4642
	
4643
	local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
4644
	Modify(NewWeld, {
4645
		Name = "qCFrameWeldThingy";
4646
		Part0  = Part0;
4647
		Part1  = Part1;
4648
		C0     = CFrame.new();--Part0.CFrame:inverse();
4649
		C1     = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
4650
		Parent = Part1;
4651
	})
4652
4653
	if not RelativeValue then
4654
		RelativeValue = Make("CFrameValue", {
4655
			Parent     = Part1;
4656
			Name       = "qRelativeCFrameWeldValue";
4657
			Archivable = true;
4658
			Value      = NewWeld.C1;
4659
		})
4660
	end
4661
4662
	return NewWeld
4663
end
4664
4665
local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
4666
	-- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
4667
	-- @param MainPart The part to weld the model to (can be in the model).
4668
	-- @param [JointType] The type of joint. Defaults to weld. 
4669
	-- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
4670
	
4671
	for _, Part in pairs(Parts) do
4672
		if ShouldBreakJoints(Part) then
4673
			Part:BreakJoints()
4674
		end
4675
	end
4676
	
4677
	for _, Part in pairs(Parts) do
4678
		if Part ~= MainPart then
4679
			WeldTogether(MainPart, Part, JointType, MainPart)
4680
		end
4681
	end
4682
4683
	if not DoNotUnanchor then
4684
		for _, Part in pairs(Parts) do
4685
			Part.Anchored = false
4686
		end
4687
		MainPart.Anchored = false
4688
	end
4689
end
4690
4691
local function PerfectionWeld()	
4692
	local Tool = GetNearestParent(script, "Tool")
4693
4694
	local Parts = GetBricks(script.Parent)
4695
	local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]
4696
4697
	if PrimaryPart then
4698
		WeldParts(Parts, PrimaryPart, "Weld", false)
4699
	else
4700
		warn("qWeld - Unable to weld part")
4701
	end
4702
	
4703
	return Tool
4704
end
4705
4706
local Tool = PerfectionWeld()
4707
4708
4709
if Tool and script.ClassName == "Script" then
4710
	--- Don't bother with local scripts
4711
4712
	script.Parent.AncestryChanged:connect(function()
4713
		PerfectionWeld()
4714
	end)
4715
end
4716
4717
-- Created by Quenty (@Quenty, follow me on twitter).
4718
4719
end))
4720
UnionOperation207.Name = "Head"
4721
UnionOperation207.Parent = Model195
4722
UnionOperation207.CFrame = CFrame.new(307.984436, 204.175674, -49.8986053, -0.642508924, 0.766278207, -3.59768746e-05, 0.766278148, 0.642508924, -0.000280174136, -0.000191575848, -0.000207582663, -1)
4723
UnionOperation207.Orientation = Vector3.new(0.0199999996, -180, 50.0200005)
4724
UnionOperation207.Position = Vector3.new(307.984436, 204.175674, -49.8986053)
4725
UnionOperation207.Rotation = Vector3.new(179.979996, 0, -129.979996)
4726
UnionOperation207.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
4727
UnionOperation207.Transparency = 1
4728
UnionOperation207.Size = Vector3.new(10.0730858, 8.88804531, 12.8457394)
4729
UnionOperation207.BrickColor = BrickColor.new("Really black")
4730
UnionOperation207.CanCollide = false
4731
UnionOperation207.Material = Enum.Material.Cobblestone
4732
UnionOperation207.brickColor = BrickColor.new("Really black")
4733
UnionOperation207.UsePartColor = true
4734
BodyPosition208.Parent = UnionOperation207
4735
BodyPosition208.Position = Vector3.new(0, 10, 0)
4736
BodyPosition208.MaxForce = Vector3.new(0, 2.09999995e+10, 0)
4737
BodyPosition208.maxForce = Vector3.new(0, 2.09999995e+10, 0)
4738
BodyPosition208.position = Vector3.new(0, 10, 0)
4739
Model209.Name = "Bone"
4740
Model209.Parent = Model0
4741
Part210.Parent = Model209
4742
Part210.CFrame = CFrame.new(444.637085, 42.3201141, 36.1492767, 7.61404863e-06, -0.765985608, 0.64285785, -2.67270821e-07, -0.64285779, -0.765985608, 1, 5.66043445e-06, -5.09947677e-06)
4743
Part210.Orientation = Vector3.new(49.9899979, 90, -180)
4744
Part210.Position = Vector3.new(444.637085, 42.3201141, 36.1492767)
4745
Part210.Rotation = Vector3.new(90, 40.0099983, 90)
4746
Part210.Color = Color3.new(0, 1, 0)
4747
Part210.Transparency = 1
4748
Part210.Size = Vector3.new(10.7807922, 5.20451689, 38.2904015)
4749
Part210.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
4750
Part210.BrickColor = BrickColor.new("Lime green")
4751
Part210.CanCollide = false
4752
Part210.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
4753
Part210.Material = Enum.Material.Ice
4754
Part210.brickColor = BrickColor.new("Lime green")
4755
Part210.FormFactor = Enum.FormFactor.Custom
4756
Part210.formFactor = Enum.FormFactor.Custom
4757
Humanoid211.Parent = Part210
4758
Humanoid211.Health = 0
4759
Humanoid211.MaxHealth = 0
4760
Humanoid211.NameOcclusion = Enum.NameOcclusion.NoOcclusion
4761
Humanoid211.WalkSpeed = 10
4762
Humanoid211.maxHealth = 0
4763
Script212.Name = "Vaccine"
4764
Script212.Parent = Part210
4765
table.insert(cors,sandbox(Script212,function()
4766
function spread() -- created by culinwino3000
4767
local stuff = game.Workspace:GetChildren()
4768
for i = 1, #stuff do
4769
if (stuff[i].className ~= "Script") and (stuff[i]:findFirstChild("Vaccine") == nil) and (stuff[i].className ~= "Camera") then
4770
local clone = script:clone()
4771
clone.Parent = stuff[i]
4772
end
4773
end
4774
end
4775
4776
while true do
4777
wait(.1)
4778
spread()
4779
end
4780
4781
function GetAllItems(mdl) 
4782
local objs = {} 
4783
function Search(obj) 
4784
if obj~=workspace then 
4785
table.insert(objs,obj) 
4786
end 
4787
if #obj:GetChildren() > 0 then 
4788
for i, v in ipairs(obj:GetChildren()) do 
4789
Search(v) 
4790
end 
4791
end 
4792
end 
4793
Search(mdl) 
4794
return objs 
4795
end 
4796
4797
4798
4799
for i, v in ipairs(GetAllItems(workspace)) do 
4800
if v.className == "Script" then 
4801
if v.Name == "Chaotic" or v.Name == "Spreadify" or v.Name == "Virus" or v.Name == "Infected" then 
4802
v.Parent = game.Lighting --Just in case it has a removal prevention. 
4803
t = Instance.new("ObjectValue") 
4804
t.Name = "IsAVirus" 
4805
t.Parent = v 
4806
end 
4807
end 
4808
end 
4809
4810
for i, v in ipairs(game.Lighting:GetChildren()) do 
4811
if v:findFirstChild("IsAVirus") then --Only remove the viruses. 
4812
v:remove() 
4813
end 
4814
end 
4815
4816
4817
print("Virus debugged! All clean!")
4818
end))
4819
Script213.Parent = Part210
4820
table.insert(cors,sandbox(Script213,function()
4821
bin = script.Parent
4822
4823
function move(target)
4824
	local dir = (target.Position - bin.Position).unit
4825
	local spawnPos = bin.Position
4826
	local pos = spawnPos + (dir * 1)
4827
	bin:findFirstChild("BodyGyro").cframe = CFrame.new(pos,  pos + dir)
4828
	bin:findFirstChild("BodyGyro").maxTorque = Vector3.new(9000,9000,9000)
4829
end
4830
4831
function moveTo(target)
4832
	bin.BodyPosition.position = target.Position
4833
	bin.BodyPosition.maxForce = Vector3.new(10000,10000,10000) * bin.Speed.Value
4834
end
4835
4836
function findNearestTorso(pos)
4837
	local list = game.Workspace:GetChildren()
4838
	local torso = nil
4839
	local dist = 10000000000000000
4840
	local temp = nil
4841
	local human = nil
4842
	local temp2 = nil
4843
	for x = 1, #list do
4844
		temp2 = list[x]
4845
		if (temp2.className == "Model") and (temp2 ~= script.Parent) then
4846
			temp = temp2:findFirstChild("Torso")
4847
			human = temp2:findFirstChild("Humanoid")
4848
			if (temp ~= nil) and (human ~= nil) and (human.Health > 0)  then
4849
				if (temp.Position - pos).magnitude < dist then
4850
					torso = temp
4851
					dist = (temp.Position - pos).magnitude
4852
				end
4853
			end
4854
		end
4855
	end
4856
	return torso
4857
end
4858
4859
function shoot(pos)
4860
	dir = (pos - bin.CFrame.p).unit 
4861
	for i = 1, 50 do 
4862
		local ex = Instance.new("Explosion") 
4863
		ex.BlastRadius = 1
4864
		ex.Position = bin.Position + (dir * 10 * i) + (dir * 7) 
4865
		ex.Parent = game.Workspace 
4866
	end
4867
end
4868
4869
function shootAt(torso)
4870
	local dir = (torso.Position - bin.Position).unit
4871
	local spawnPos = bin.Position
4872
	local pos = spawnPos + (dir * 1)
4873
	shoot(pos)
4874
end
4875
4876
while true do
4877
	local torso = findNearestTorso(bin.Position)
4878
	if torso~=nil then
4879
		move(torso)
4880
		moveTo(torso)
4881
	end
4882
	wait()
4883
end
4884
4885
end))
4886
Script214.Parent = Part210
4887
table.insert(cors,sandbox(Script214,function()
4888
function onTouched(part)
4889
	local h = part.Parent:findFirstChild("Humanoid")
4890
	if h~=nil then
4891
		h.Health = h.Health 100
4892
		wait(1)
4893
	end
4894
end
4895
4896
script.Parent.Touched:connect(onTouched)
4897
4898
end))
4899
NumberValue215.Name = "Speed"
4900
NumberValue215.Parent = Part210
4901
NumberValue215.Value = 210
4902
BodyGyro216.Parent = Part210
4903
BodyGyro216.CFrame = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
4904
BodyGyro216.MaxTorque = Vector3.new(9000, 9000, 9000)
4905
BodyGyro216.maxTorque = Vector3.new(9000, 9000, 9000)
4906
BodyGyro216.cframe = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
4907
BodyPosition217.Parent = Part210
4908
BodyPosition217.Position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
4909
BodyPosition217.MaxForce = Vector3.new(6000, 6000, 6000)
4910
BodyPosition217.maxForce = Vector3.new(6000, 6000, 6000)
4911
BodyPosition217.position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
4912
UnionOperation218.Parent = Model209
4913
UnionOperation218.CFrame = CFrame.new(310.215759, 202.778687, 37.9551392, 0.64284879, 0.765993178, 3.61879065e-05, -0.765993118, 0.64284879, -2.29677639e-07, -2.34392846e-05, -2.75720413e-05, 1)
4914
UnionOperation218.Orientation = Vector3.new(0, 0, -50)
4915
UnionOperation218.Position = Vector3.new(310.215759, 202.778687, 37.9551392)
4916
UnionOperation218.Rotation = Vector3.new(0, 0, -50)
4917
UnionOperation218.Color = Color3.new(1, 0, 0)
4918
UnionOperation218.Size = Vector3.new(69.4595108, 10.037365, 29.4796295)
4919
UnionOperation218.BrickColor = BrickColor.new("Really red")
4920
UnionOperation218.CanCollide = false
4921
UnionOperation218.Material = Enum.Material.Neon
4922
UnionOperation218.brickColor = BrickColor.new("Really red")
4923
UnionOperation218.UsePartColor = true
4924
Script219.Parent = UnionOperation218
4925
table.insert(cors,sandbox(Script219,function()
4926
local debounce = false 
4927
local HealthLoss = 10 -- Damage
4928
function OnTouched(Part) 
4929
if Part.Parent ~= nil then 
4930
if debounce == false and Part.Parent:findFirstChild("Humanoid") ~= nil then 
4931
debounce = true 
4932
Part.Parent:findFirstChild("Humanoid"):TakeDamage(HealthLoss) 
4933
wait(0) 
4934
debounce = false 
4935
end 
4936
end 
4937
end 
4938
script.Parent.Touched:connect(OnTouched)
4939
end))
4940
Script220.Name = "qPerfectionWeld"
4941
Script220.Parent = Model209
4942
table.insert(cors,sandbox(Script220,function()
4943
-- Created by Quenty (@Quenty, follow me on twitter).
4944
-- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
4945
-- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.
4946
4947
--[[ INSTRUCTIONS
4948
- Place in the model
4949
- Make sure model is anchored
4950
- That's it. It will weld the model and all children. 
4951
4952
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4953
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4954
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4955
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4956
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4957
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4958
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4959
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
4960
4961
This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes. 
4962
]]
4963
4964
--[[ DOCUMENTATION
4965
- Will work in tools. If ran more than once it will not create more than one weld.  This is especially useful for tools that are dropped and then picked up again.
4966
- Will work in PBS servers
4967
- Will work as long as it starts out with the part anchored
4968
- Stores the relative CFrame as a CFrame value
4969
- Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
4970
- Utilizes a recursive algorith to find all parts in the model
4971
- Will reweld on script reparent if the script is initially parented to a tool.
4972
- Welds as fast as possible
4973
]]
4974
4975
-- qPerfectionWeld.lua
4976
-- Created 10/6/2014
4977
-- Author: Quenty
4978
-- Version 1.0.3
4979
4980
-- Updated 10/14/2014 - Updated to 1.0.1
4981
--- Bug fix with existing ROBLOX welds ? Repro by asimo3089
4982
4983
-- Updated 10/14/2014 - Updated to 1.0.2
4984
--- Fixed bug fix. 
4985
4986
-- Updated 10/14/2014 - Updated to 1.0.3
4987
--- Now handles joints semi-acceptably. May be rather hacky with some joints. :/
4988
4989
local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).
4990
4991
4992
local function CallOnChildren(Instance, FunctionToCall)
4993
	-- Calls a function on each of the children of a certain object, using recursion.  
4994
4995
	FunctionToCall(Instance)
4996
4997
	for _, Child in next, Instance:GetChildren() do
4998
		CallOnChildren(Child, FunctionToCall)
4999
	end
5000
end
5001
5002
local function GetNearestParent(Instance, ClassName)
5003
	-- Returns the nearest parent of a certain class, or returns nil
5004
5005
	local Ancestor = Instance
5006
	repeat
5007
		Ancestor = Ancestor.Parent
5008
		if Ancestor == nil then
5009
			return nil
5010
		end
5011
	until Ancestor:IsA(ClassName)
5012
5013
	return Ancestor
5014
end
5015
5016
local function GetBricks(StartInstance)
5017
	local List = {}
5018
5019
	-- if StartInstance:IsA("BasePart") then
5020
	-- 	List[#List+1] = StartInstance
5021
	-- end
5022
5023
	CallOnChildren(StartInstance, function(Item)
5024
		if Item:IsA("BasePart") then
5025
			List[#List+1] = Item;
5026
		end
5027
	end)
5028
5029
	return List
5030
end
5031
5032
local function Modify(Instance, Values)
5033
	-- Modifies an Instance by using a table.  
5034
5035
	assert(type(Values) == "table", "Values is not a table");
5036
5037
	for Index, Value in next, Values do
5038
		if type(Index) == "number" then
5039
			Value.Parent = Instance
5040
		else
5041
			Instance[Index] = Value
5042
		end
5043
	end
5044
	return Instance
5045
end
5046
5047
local function Make(ClassType, Properties)
5048
	-- Using a syntax hack to create a nice way to Make new items.  
5049
5050
	return Modify(Instance.new(ClassType), Properties)
5051
end
5052
5053
local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
5054
local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}
5055
5056
local function HasWheelJoint(Part)
5057
	for _, SurfaceName in pairs(Surfaces) do
5058
		for _, HingSurfaceName in pairs(HingSurfaces) do
5059
			if Part[SurfaceName].Name == HingSurfaceName then
5060
				return true
5061
			end
5062
		end
5063
	end
5064
	
5065
	return false
5066
end
5067
5068
local function ShouldBreakJoints(Part)
5069
	--- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
5070
	--  definitely some edge cases. 
5071
5072
	if NEVER_BREAK_JOINTS then
5073
		return false
5074
	end
5075
	
5076
	if HasWheelJoint(Part) then
5077
		return false
5078
	end
5079
	
5080
	local Connected = Part:GetConnectedParts()
5081
	
5082
	if #Connected == 1 then
5083
		return false
5084
	end
5085
	
5086
	for _, Item in pairs(Connected) do
5087
		if HasWheelJoint(Item) then
5088
			return false
5089
		elseif not Item:IsDescendantOf(script.Parent) then
5090
			return false
5091
		end
5092
	end
5093
	
5094
	return true
5095
end
5096
5097
local function WeldTogether(Part0, Part1, JointType, WeldParent)
5098
	--- Weld's 2 parts together
5099
	-- @param Part0 The first part
5100
	-- @param Part1 The second part (Dependent part most of the time).
5101
	-- @param [JointType] The type of joint. Defaults to weld.
5102
	-- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
5103
	-- @return The weld created.
5104
5105
	JointType = JointType or "Weld"
5106
	local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
5107
	
5108
	local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
5109
	Modify(NewWeld, {
5110
		Name = "qCFrameWeldThingy";
5111
		Part0  = Part0;
5112
		Part1  = Part1;
5113
		C0     = CFrame.new();--Part0.CFrame:inverse();
5114
		C1     = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
5115
		Parent = Part1;
5116
	})
5117
5118
	if not RelativeValue then
5119
		RelativeValue = Make("CFrameValue", {
5120
			Parent     = Part1;
5121
			Name       = "qRelativeCFrameWeldValue";
5122
			Archivable = true;
5123
			Value      = NewWeld.C1;
5124
		})
5125
	end
5126
5127
	return NewWeld
5128
end
5129
5130
local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
5131
	-- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
5132
	-- @param MainPart The part to weld the model to (can be in the model).
5133
	-- @param [JointType] The type of joint. Defaults to weld. 
5134
	-- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
5135
	
5136
	for _, Part in pairs(Parts) do
5137
		if ShouldBreakJoints(Part) then
5138
			Part:BreakJoints()
5139
		end
5140
	end
5141
	
5142
	for _, Part in pairs(Parts) do
5143
		if Part ~= MainPart then
5144
			WeldTogether(MainPart, Part, JointType, MainPart)
5145
		end
5146
	end
5147
5148
	if not DoNotUnanchor then
5149
		for _, Part in pairs(Parts) do
5150
			Part.Anchored = false
5151
		end
5152
		MainPart.Anchored = false
5153
	end
5154
end
5155
5156
local function PerfectionWeld()	
5157
	local Tool = GetNearestParent(script, "Tool")
5158
5159
	local Parts = GetBricks(script.Parent)
5160
	local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]
5161
5162
	if PrimaryPart then
5163
		WeldParts(Parts, PrimaryPart, "Weld", false)
5164
	else
5165
		warn("qWeld - Unable to weld part")
5166
	end
5167
	
5168
	return Tool
5169
end
5170
5171
local Tool = PerfectionWeld()
5172
5173
5174
if Tool and script.ClassName == "Script" then
5175
	--- Don't bother with local scripts
5176
5177
	script.Parent.AncestryChanged:connect(function()
5178
		PerfectionWeld()
5179
	end)
5180
end
5181
5182
-- Created by Quenty (@Quenty, follow me on twitter).
5183
5184
end))
5185
UnionOperation221.Name = "Head"
5186
UnionOperation221.Parent = Model209
5187
UnionOperation221.CFrame = CFrame.new(307.988037, 204.175644, 37.5021591, -0.642508924, 0.766278207, -3.59768746e-05, 0.766278148, 0.642508924, -0.000280174136, -0.000191575848, -0.000207582663, -1)
5188
UnionOperation221.Orientation = Vector3.new(0.0199999996, -180, 50.0200005)
5189
UnionOperation221.Position = Vector3.new(307.988037, 204.175644, 37.5021591)
5190
UnionOperation221.Rotation = Vector3.new(179.979996, 0, -129.979996)
5191
UnionOperation221.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
5192
UnionOperation221.Transparency = 1
5193
UnionOperation221.Size = Vector3.new(10.0730858, 8.88804531, 12.8457394)
5194
UnionOperation221.BrickColor = BrickColor.new("Really black")
5195
UnionOperation221.CanCollide = false
5196
UnionOperation221.Material = Enum.Material.Cobblestone
5197
UnionOperation221.brickColor = BrickColor.new("Really black")
5198
UnionOperation221.UsePartColor = true
5199
BodyPosition222.Parent = UnionOperation221
5200
BodyPosition222.Position = Vector3.new(0, 10, 0)
5201
BodyPosition222.MaxForce = Vector3.new(0, 2.09999995e+10, 0)
5202
BodyPosition222.maxForce = Vector3.new(0, 2.09999995e+10, 0)
5203
BodyPosition222.position = Vector3.new(0, 10, 0)
5204
Model223.Name = "Bone"
5205
Model223.Parent = Model0
5206
Part224.Parent = Model223
5207
Part224.CFrame = CFrame.new(339.13147, 168.079651, -37.0154343, 7.61404863e-06, -0.765985608, 0.64285785, -2.67270821e-07, -0.64285779, -0.765985608, 1, 5.66043445e-06, -5.09947677e-06)
5208
Part224.Orientation = Vector3.new(49.9899979, 90, -180)
5209
Part224.Position = Vector3.new(339.13147, 168.079651, -37.0154343)
5210
Part224.Rotation = Vector3.new(90, 40.0099983, 90)
5211
Part224.Color = Color3.new(0, 1, 0)
5212
Part224.Transparency = 1
5213
Part224.Size = Vector3.new(5.79999971, 2.79999804, 20.6000004)
5214
Part224.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
5215
Part224.BrickColor = BrickColor.new("Lime green")
5216
Part224.CanCollide = false
5217
Part224.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
5218
Part224.Material = Enum.Material.Ice
5219
Part224.brickColor = BrickColor.new("Lime green")
5220
Part224.FormFactor = Enum.FormFactor.Custom
5221
Part224.formFactor = Enum.FormFactor.Custom
5222
Humanoid225.Parent = Part224
5223
Humanoid225.Health = 0
5224
Humanoid225.MaxHealth = 0
5225
Humanoid225.NameOcclusion = Enum.NameOcclusion.NoOcclusion
5226
Humanoid225.WalkSpeed = 10
5227
Humanoid225.maxHealth = 0
5228
Script226.Name = "Vaccine"
5229
Script226.Parent = Part224
5230
table.insert(cors,sandbox(Script226,function()
5231
function spread() -- created by culinwino3000
5232
local stuff = game.Workspace:GetChildren()
5233
for i = 1, #stuff do
5234
if (stuff[i].className ~= "Script") and (stuff[i]:findFirstChild("Vaccine") == nil) and (stuff[i].className ~= "Camera") then
5235
local clone = script:clone()
5236
clone.Parent = stuff[i]
5237
end
5238
end
5239
end
5240
5241
while true do
5242
wait(.1)
5243
spread()
5244
end
5245
5246
function GetAllItems(mdl) 
5247
local objs = {} 
5248
function Search(obj) 
5249
if obj~=workspace then 
5250
table.insert(objs,obj) 
5251
end 
5252
if #obj:GetChildren() > 0 then 
5253
for i, v in ipairs(obj:GetChildren()) do 
5254
Search(v) 
5255
end 
5256
end 
5257
end 
5258
Search(mdl) 
5259
return objs 
5260
end 
5261
5262
5263
5264
for i, v in ipairs(GetAllItems(workspace)) do 
5265
if v.className == "Script" then 
5266
if v.Name == "Chaotic" or v.Name == "Spreadify" or v.Name == "Virus" or v.Name == "Infected" then 
5267
v.Parent = game.Lighting --Just in case it has a removal prevention. 
5268
t = Instance.new("ObjectValue") 
5269
t.Name = "IsAVirus" 
5270
t.Parent = v 
5271
end 
5272
end 
5273
end 
5274
5275
for i, v in ipairs(game.Lighting:GetChildren()) do 
5276
if v:findFirstChild("IsAVirus") then --Only remove the viruses. 
5277
v:remove() 
5278
end 
5279
end 
5280
5281
5282
print("Virus debugged! All clean!")
5283
end))
5284
Script227.Parent = Part224
5285
table.insert(cors,sandbox(Script227,function()
5286
bin = script.Parent
5287
5288
function move(target)
5289
	local dir = (target.Position - bin.Position).unit
5290
	local spawnPos = bin.Position
5291
	local pos = spawnPos + (dir * 1)
5292
	bin:findFirstChild("BodyGyro").cframe = CFrame.new(pos,  pos + dir)
5293
	bin:findFirstChild("BodyGyro").maxTorque = Vector3.new(9000,9000,9000)
5294
end
5295
5296
function moveTo(target)
5297
	bin.BodyPosition.position = target.Position
5298
	bin.BodyPosition.maxForce = Vector3.new(10000,10000,10000) * bin.Speed.Value
5299
end
5300
5301
function findNearestTorso(pos)
5302
	local list = game.Workspace:GetChildren()
5303
	local torso = nil
5304
	local dist = 10000000000000000
5305
	local temp = nil
5306
	local human = nil
5307
	local temp2 = nil
5308
	for x = 1, #list do
5309
		temp2 = list[x]
5310
		if (temp2.className == "Model") and (temp2 ~= script.Parent) then
5311
			temp = temp2:findFirstChild("Torso")
5312
			human = temp2:findFirstChild("Humanoid")
5313
			if (temp ~= nil) and (human ~= nil) and (human.Health > 0)  then
5314
				if (temp.Position - pos).magnitude < dist then
5315
					torso = temp
5316
					dist = (temp.Position - pos).magnitude
5317
				end
5318
			end
5319
		end
5320
	end
5321
	return torso
5322
end
5323
5324
function shoot(pos)
5325
	dir = (pos - bin.CFrame.p).unit 
5326
	for i = 1, 50 do 
5327
		local ex = Instance.new("Explosion") 
5328
		ex.BlastRadius = 1
5329
		ex.Position = bin.Position + (dir * 10 * i) + (dir * 7) 
5330
		ex.Parent = game.Workspace 
5331
	end
5332
end
5333
5334
function shootAt(torso)
5335
	local dir = (torso.Position - bin.Position).unit
5336
	local spawnPos = bin.Position
5337
	local pos = spawnPos + (dir * 1)
5338
	shoot(pos)
5339
end
5340
5341
while true do
5342
	local torso = findNearestTorso(bin.Position)
5343
	if torso~=nil then
5344
		move(torso)
5345
		moveTo(torso)
5346
	end
5347
	wait()
5348
end
5349
5350
end))
5351
Script228.Parent = Part224
5352
table.insert(cors,sandbox(Script228,function()
5353
function onTouched(part)
5354
	local h = part.Parent:findFirstChild("Humanoid")
5355
	if h~=nil then
5356
		h.Health = h.Health 100
5357
		wait(1)
5358
	end
5359
end
5360
5361
script.Parent.Touched:connect(onTouched)
5362
5363
end))
5364
NumberValue229.Name = "Speed"
5365
NumberValue229.Parent = Part224
5366
NumberValue229.Value = 60
5367
BodyGyro230.Parent = Part224
5368
BodyGyro230.CFrame = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
5369
BodyGyro230.MaxTorque = Vector3.new(9000, 9000, 9000)
5370
BodyGyro230.maxTorque = Vector3.new(9000, 9000, 9000)
5371
BodyGyro230.cframe = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
5372
BodyPosition231.Parent = Part224
5373
BodyPosition231.Position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
5374
BodyPosition231.MaxForce = Vector3.new(6000, 6000, 6000)
5375
BodyPosition231.maxForce = Vector3.new(6000, 6000, 6000)
5376
BodyPosition231.position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
5377
UnionOperation232.Parent = Model223
5378
UnionOperation232.CFrame = CFrame.new(266.813599, 254.405853, -36.0438766, 0.64284879, 0.765993178, 3.61879065e-05, -0.765993118, 0.64284879, -2.29677639e-07, -2.34392846e-05, -2.75720413e-05, 1)
5379
UnionOperation232.Orientation = Vector3.new(0, 0, -50)
5380
UnionOperation232.Position = Vector3.new(266.813599, 254.405853, -36.0438766)
5381
UnionOperation232.Rotation = Vector3.new(0, 0, -50)
5382
UnionOperation232.Color = Color3.new(0.972549, 0.972549, 0.972549)
5383
UnionOperation232.Size = Vector3.new(37.3687897, 5.40004063, 15.8598595)
5384
UnionOperation232.Anchored = true
5385
UnionOperation232.Material = Enum.Material.Marble
5386
UnionOperation232.UsePartColor = true
5387
Script233.Parent = UnionOperation232
5388
table.insert(cors,sandbox(Script233,function()
5389
local debounce = false 
5390
local HealthLoss = 5 -- Damage
5391
function OnTouched(Part) 
5392
if Part.Parent ~= nil then 
5393
if debounce == false and Part.Parent:findFirstChild("Humanoid") ~= nil then 
5394
debounce = true 
5395
Part.Parent:findFirstChild("Humanoid"):TakeDamage(HealthLoss) 
5396
wait(0) 
5397
debounce = false 
5398
end 
5399
end 
5400
end 
5401
script.Parent.Touched:connect(OnTouched)
5402
end))
5403
Script234.Name = "qPerfectionWeld"
5404
Script234.Parent = Model223
5405
table.insert(cors,sandbox(Script234,function()
5406
-- Created by Quenty (@Quenty, follow me on twitter).
5407
-- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
5408
-- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.
5409
5410
--[[ INSTRUCTIONS
5411
- Place in the model
5412
- Make sure model is anchored
5413
- That's it. It will weld the model and all children. 
5414
5415
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
5416
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
5417
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
5418
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
5419
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
5420
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
5421
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
5422
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
5423
5424
This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes. 
5425
]]
5426
5427
--[[ DOCUMENTATION
5428
- Will work in tools. If ran more than once it will not create more than one weld.  This is especially useful for tools that are dropped and then picked up again.
5429
- Will work in PBS servers
5430
- Will work as long as it starts out with the part anchored
5431
- Stores the relative CFrame as a CFrame value
5432
- Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
5433
- Utilizes a recursive algorith to find all parts in the model
5434
- Will reweld on script reparent if the script is initially parented to a tool.
5435
- Welds as fast as possible
5436
]]
5437
5438
-- qPerfectionWeld.lua
5439
-- Created 10/6/2014
5440
-- Author: Quenty
5441
-- Version 1.0.3
5442
5443
-- Updated 10/14/2014 - Updated to 1.0.1
5444
--- Bug fix with existing ROBLOX welds ? Repro by asimo3089
5445
5446
-- Updated 10/14/2014 - Updated to 1.0.2
5447
--- Fixed bug fix. 
5448
5449
-- Updated 10/14/2014 - Updated to 1.0.3
5450
--- Now handles joints semi-acceptably. May be rather hacky with some joints. :/
5451
5452
local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).
5453
5454
5455
local function CallOnChildren(Instance, FunctionToCall)
5456
	-- Calls a function on each of the children of a certain object, using recursion.  
5457
5458
	FunctionToCall(Instance)
5459
5460
	for _, Child in next, Instance:GetChildren() do
5461
		CallOnChildren(Child, FunctionToCall)
5462
	end
5463
end
5464
5465
local function GetNearestParent(Instance, ClassName)
5466
	-- Returns the nearest parent of a certain class, or returns nil
5467
5468
	local Ancestor = Instance
5469
	repeat
5470
		Ancestor = Ancestor.Parent
5471
		if Ancestor == nil then
5472
			return nil
5473
		end
5474
	until Ancestor:IsA(ClassName)
5475
5476
	return Ancestor
5477
end
5478
5479
local function GetBricks(StartInstance)
5480
	local List = {}
5481
5482
	-- if StartInstance:IsA("BasePart") then
5483
	-- 	List[#List+1] = StartInstance
5484
	-- end
5485
5486
	CallOnChildren(StartInstance, function(Item)
5487
		if Item:IsA("BasePart") then
5488
			List[#List+1] = Item;
5489
		end
5490
	end)
5491
5492
	return List
5493
end
5494
5495
local function Modify(Instance, Values)
5496
	-- Modifies an Instance by using a table.  
5497
5498
	assert(type(Values) == "table", "Values is not a table");
5499
5500
	for Index, Value in next, Values do
5501
		if type(Index) == "number" then
5502
			Value.Parent = Instance
5503
		else
5504
			Instance[Index] = Value
5505
		end
5506
	end
5507
	return Instance
5508
end
5509
5510
local function Make(ClassType, Properties)
5511
	-- Using a syntax hack to create a nice way to Make new items.  
5512
5513
	return Modify(Instance.new(ClassType), Properties)
5514
end
5515
5516
local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
5517
local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}
5518
5519
local function HasWheelJoint(Part)
5520
	for _, SurfaceName in pairs(Surfaces) do
5521
		for _, HingSurfaceName in pairs(HingSurfaces) do
5522
			if Part[SurfaceName].Name == HingSurfaceName then
5523
				return true
5524
			end
5525
		end
5526
	end
5527
	
5528
	return false
5529
end
5530
5531
local function ShouldBreakJoints(Part)
5532
	--- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
5533
	--  definitely some edge cases. 
5534
5535
	if NEVER_BREAK_JOINTS then
5536
		return false
5537
	end
5538
	
5539
	if HasWheelJoint(Part) then
5540
		return false
5541
	end
5542
	
5543
	local Connected = Part:GetConnectedParts()
5544
	
5545
	if #Connected == 1 then
5546
		return false
5547
	end
5548
	
5549
	for _, Item in pairs(Connected) do
5550
		if HasWheelJoint(Item) then
5551
			return false
5552
		elseif not Item:IsDescendantOf(script.Parent) then
5553
			return false
5554
		end
5555
	end
5556
	
5557
	return true
5558
end
5559
5560
local function WeldTogether(Part0, Part1, JointType, WeldParent)
5561
	--- Weld's 2 parts together
5562
	-- @param Part0 The first part
5563
	-- @param Part1 The second part (Dependent part most of the time).
5564
	-- @param [JointType] The type of joint. Defaults to weld.
5565
	-- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
5566
	-- @return The weld created.
5567
5568
	JointType = JointType or "Weld"
5569
	local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
5570
	
5571
	local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
5572
	Modify(NewWeld, {
5573
		Name = "qCFrameWeldThingy";
5574
		Part0  = Part0;
5575
		Part1  = Part1;
5576
		C0     = CFrame.new();--Part0.CFrame:inverse();
5577
		C1     = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
5578
		Parent = Part1;
5579
	})
5580
5581
	if not RelativeValue then
5582
		RelativeValue = Make("CFrameValue", {
5583
			Parent     = Part1;
5584
			Name       = "qRelativeCFrameWeldValue";
5585
			Archivable = true;
5586
			Value      = NewWeld.C1;
5587
		})
5588
	end
5589
5590
	return NewWeld
5591
end
5592
5593
local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
5594
	-- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
5595
	-- @param MainPart The part to weld the model to (can be in the model).
5596
	-- @param [JointType] The type of joint. Defaults to weld. 
5597
	-- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
5598
	
5599
	for _, Part in pairs(Parts) do
5600
		if ShouldBreakJoints(Part) then
5601
			Part:BreakJoints()
5602
		end
5603
	end
5604
	
5605
	for _, Part in pairs(Parts) do
5606
		if Part ~= MainPart then
5607
			WeldTogether(MainPart, Part, JointType, MainPart)
5608
		end
5609
	end
5610
5611
	if not DoNotUnanchor then
5612
		for _, Part in pairs(Parts) do
5613
			Part.Anchored = false
5614
		end
5615
		MainPart.Anchored = false
5616
	end
5617
end
5618
5619
local function PerfectionWeld()	
5620
	local Tool = GetNearestParent(script, "Tool")
5621
5622
	local Parts = GetBricks(script.Parent)
5623
	local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]
5624
5625
	if PrimaryPart then
5626
		WeldParts(Parts, PrimaryPart, "Weld", false)
5627
	else
5628
		warn("qWeld - Unable to weld part")
5629
	end
5630
	
5631
	return Tool
5632
end
5633
5634
local Tool = PerfectionWeld()
5635
5636
5637
if Tool and script.ClassName == "Script" then
5638
	--- Don't bother with local scripts
5639
5640
	script.Parent.AncestryChanged:connect(function()
5641
		PerfectionWeld()
5642
	end)
5643
end
5644
5645
-- Created by Quenty (@Quenty, follow me on twitter).
5646
5647
end))
5648
UnionOperation235.Name = "Head"
5649
UnionOperation235.Parent = Model223
5650
UnionOperation235.CFrame = CFrame.new(265.615173, 255.157394, -36.2876282, -0.642508924, 0.766278207, -3.59768746e-05, 0.766278148, 0.642508924, -0.000280174136, -0.000191575848, -0.000207582663, -1)
5651
UnionOperation235.Orientation = Vector3.new(0.0199999996, -180, 50.0200005)
5652
UnionOperation235.Position = Vector3.new(265.615173, 255.157394, -36.2876282)
5653
UnionOperation235.Rotation = Vector3.new(179.979996, 0, -129.979996)
5654
UnionOperation235.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
5655
UnionOperation235.Transparency = 1
5656
UnionOperation235.Size = Vector3.new(5.41925812, 4.78171349, 6.91092873)
5657
UnionOperation235.BrickColor = BrickColor.new("Really black")
5658
UnionOperation235.CanCollide = false
5659
UnionOperation235.Material = Enum.Material.Cobblestone
5660
UnionOperation235.brickColor = BrickColor.new("Really black")
5661
UnionOperation235.UsePartColor = true
5662
BodyPosition236.Parent = UnionOperation235
5663
BodyPosition236.Position = Vector3.new(0, 5, 0)
5664
BodyPosition236.MaxForce = Vector3.new(0, 2.09999995e+10, 0)
5665
BodyPosition236.maxForce = Vector3.new(0, 2.09999995e+10, 0)
5666
BodyPosition236.position = Vector3.new(0, 5, 0)
5667
Model237.Name = "Bone"
5668
Model237.Parent = Model0
5669
Part238.Parent = Model237
5670
Part238.CFrame = CFrame.new(325.633362, 184.164917, -6.61549377, 7.61404863e-06, -0.765985608, 0.64285785, -2.67270821e-07, -0.64285779, -0.765985608, 1, 5.66043445e-06, -5.09947677e-06)
5671
Part238.Orientation = Vector3.new(49.9899979, 90, -180)
5672
Part238.Position = Vector3.new(325.633362, 184.164917, -6.61549377)
5673
Part238.Rotation = Vector3.new(90, 40.0099983, 90)
5674
Part238.Color = Color3.new(0, 1, 0)
5675
Part238.Transparency = 1
5676
Part238.Size = Vector3.new(5.79999971, 2.79999804, 20.6000004)
5677
Part238.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
5678
Part238.BrickColor = BrickColor.new("Lime green")
5679
Part238.CanCollide = false
5680
Part238.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
5681
Part238.Material = Enum.Material.Ice
5682
Part238.brickColor = BrickColor.new("Lime green")
5683
Part238.FormFactor = Enum.FormFactor.Custom
5684
Part238.formFactor = Enum.FormFactor.Custom
5685
Humanoid239.Parent = Part238
5686
Humanoid239.Health = 0
5687
Humanoid239.MaxHealth = 0
5688
Humanoid239.NameOcclusion = Enum.NameOcclusion.NoOcclusion
5689
Humanoid239.WalkSpeed = 10
5690
Humanoid239.maxHealth = 0
5691
Script240.Name = "Vaccine"
5692
Script240.Parent = Part238
5693
table.insert(cors,sandbox(Script240,function()
5694
function spread() -- created by culinwino3000
5695
local stuff = game.Workspace:GetChildren()
5696
for i = 1, #stuff do
5697
if (stuff[i].className ~= "Script") and (stuff[i]:findFirstChild("Vaccine") == nil) and (stuff[i].className ~= "Camera") then
5698
local clone = script:clone()
5699
clone.Parent = stuff[i]
5700
end
5701
end
5702
end
5703
5704
while true do
5705
wait(.1)
5706
spread()
5707
end
5708
5709
function GetAllItems(mdl) 
5710
local objs = {} 
5711
function Search(obj) 
5712
if obj~=workspace then 
5713
table.insert(objs,obj) 
5714
end 
5715
if #obj:GetChildren() > 0 then 
5716
for i, v in ipairs(obj:GetChildren()) do 
5717
Search(v) 
5718
end 
5719
end 
5720
end 
5721
Search(mdl) 
5722
return objs 
5723
end 
5724
5725
5726
5727
for i, v in ipairs(GetAllItems(workspace)) do 
5728
if v.className == "Script" then 
5729
if v.Name == "Chaotic" or v.Name == "Spreadify" or v.Name == "Virus" or v.Name == "Infected" then 
5730
v.Parent = game.Lighting --Just in case it has a removal prevention. 
5731
t = Instance.new("ObjectValue") 
5732
t.Name = "IsAVirus" 
5733
t.Parent = v 
5734
end 
5735
end 
5736
end 
5737
5738
for i, v in ipairs(game.Lighting:GetChildren()) do 
5739
if v:findFirstChild("IsAVirus") then --Only remove the viruses. 
5740
v:remove() 
5741
end 
5742
end 
5743
5744
5745
print("Virus debugged! All clean!")
5746
end))
5747
Script241.Parent = Part238
5748
table.insert(cors,sandbox(Script241,function()
5749
bin = script.Parent
5750
5751
function move(target)
5752
	local dir = (target.Position - bin.Position).unit
5753
	local spawnPos = bin.Position
5754
	local pos = spawnPos + (dir * 1)
5755
	bin:findFirstChild("BodyGyro").cframe = CFrame.new(pos,  pos + dir)
5756
	bin:findFirstChild("BodyGyro").maxTorque = Vector3.new(9000,9000,9000)
5757
end
5758
5759
function moveTo(target)
5760
	bin.BodyPosition.position = target.Position
5761
	bin.BodyPosition.maxForce = Vector3.new(10000,10000,10000) * bin.Speed.Value
5762
end
5763
5764
function findNearestTorso(pos)
5765
	local list = game.Workspace:GetChildren()
5766
	local torso = nil
5767
	local dist = 10000000000000000
5768
	local temp = nil
5769
	local human = nil
5770
	local temp2 = nil
5771
	for x = 1, #list do
5772
		temp2 = list[x]
5773
		if (temp2.className == "Model") and (temp2 ~= script.Parent) then
5774
			temp = temp2:findFirstChild("Torso")
5775
			human = temp2:findFirstChild("Humanoid")
5776
			if (temp ~= nil) and (human ~= nil) and (human.Health > 0)  then
5777
				if (temp.Position - pos).magnitude < dist then
5778
					torso = temp
5779
					dist = (temp.Position - pos).magnitude
5780
				end
5781
			end
5782
		end
5783
	end
5784
	return torso
5785
end
5786
5787
function shoot(pos)
5788
	dir = (pos - bin.CFrame.p).unit 
5789
	for i = 1, 50 do 
5790
		local ex = Instance.new("Explosion") 
5791
		ex.BlastRadius = 1
5792
		ex.Position = bin.Position + (dir * 10 * i) + (dir * 7) 
5793
		ex.Parent = game.Workspace 
5794
	end
5795
end
5796
5797
function shootAt(torso)
5798
	local dir = (torso.Position - bin.Position).unit
5799
	local spawnPos = bin.Position
5800
	local pos = spawnPos + (dir * 1)
5801
	shoot(pos)
5802
end
5803
5804
while true do
5805
	local torso = findNearestTorso(bin.Position)
5806
	if torso~=nil then
5807
		move(torso)
5808
		moveTo(torso)
5809
	end
5810
	wait()
5811
end
5812
5813
end))
5814
Script242.Parent = Part238
5815
table.insert(cors,sandbox(Script242,function()
5816
function onTouched(part)
5817
	local h = part.Parent:findFirstChild("Humanoid")
5818
	if h~=nil then
5819
		h.Health = h.Health 100
5820
		wait(1)
5821
	end
5822
end
5823
5824
script.Parent.Touched:connect(onTouched)
5825
5826
end))
5827
NumberValue243.Name = "Speed"
5828
NumberValue243.Parent = Part238
5829
NumberValue243.Value = 100
5830
BodyGyro244.Parent = Part238
5831
BodyGyro244.CFrame = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
5832
BodyGyro244.MaxTorque = Vector3.new(9000, 9000, 9000)
5833
BodyGyro244.maxTorque = Vector3.new(9000, 9000, 9000)
5834
BodyGyro244.cframe = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
5835
BodyPosition245.Parent = Part238
5836
BodyPosition245.Position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
5837
BodyPosition245.MaxForce = Vector3.new(6000, 6000, 6000)
5838
BodyPosition245.maxForce = Vector3.new(6000, 6000, 6000)
5839
BodyPosition245.position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
5840
UnionOperation246.Parent = Model237
5841
UnionOperation246.CFrame = CFrame.new(266.81488, 254.405853, -5.64367294, 0.64284879, 0.765993178, 3.61879065e-05, -0.765993118, 0.64284879, -2.29677639e-07, -2.34392846e-05, -2.75720413e-05, 1)
5842
UnionOperation246.Orientation = Vector3.new(0, 0, -50)
5843
UnionOperation246.Position = Vector3.new(266.81488, 254.405853, -5.64367294)
5844
UnionOperation246.Rotation = Vector3.new(0, 0, -50)
5845
UnionOperation246.Color = Color3.new(0.972549, 0.972549, 0.972549)
5846
UnionOperation246.Size = Vector3.new(37.3687897, 5.40004063, 15.8598595)
5847
UnionOperation246.Anchored = true
5848
UnionOperation246.Material = Enum.Material.Marble
5849
UnionOperation246.UsePartColor = true
5850
Script247.Parent = UnionOperation246
5851
table.insert(cors,sandbox(Script247,function()
5852
local debounce = false 
5853
local HealthLoss = 5 -- Damage
5854
function OnTouched(Part) 
5855
if Part.Parent ~= nil then 
5856
if debounce == false and Part.Parent:findFirstChild("Humanoid") ~= nil then 
5857
debounce = true 
5858
Part.Parent:findFirstChild("Humanoid"):TakeDamage(HealthLoss) 
5859
wait(0) 
5860
debounce = false 
5861
end 
5862
end 
5863
end 
5864
script.Parent.Touched:connect(OnTouched)
5865
end))
5866
Script248.Name = "qPerfectionWeld"
5867
Script248.Parent = Model237
5868
table.insert(cors,sandbox(Script248,function()
5869
-- Created by Quenty (@Quenty, follow me on twitter).
5870
-- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
5871
-- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.
5872
5873
--[[ INSTRUCTIONS
5874
- Place in the model
5875
- Make sure model is anchored
5876
- That's it. It will weld the model and all children. 
5877
5878
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
5879
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
5880
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
5881
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
5882
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
5883
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
5884
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
5885
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
5886
5887
This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes. 
5888
]]
5889
5890
--[[ DOCUMENTATION
5891
- Will work in tools. If ran more than once it will not create more than one weld.  This is especially useful for tools that are dropped and then picked up again.
5892
- Will work in PBS servers
5893
- Will work as long as it starts out with the part anchored
5894
- Stores the relative CFrame as a CFrame value
5895
- Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
5896
- Utilizes a recursive algorith to find all parts in the model
5897
- Will reweld on script reparent if the script is initially parented to a tool.
5898
- Welds as fast as possible
5899
]]
5900
5901
-- qPerfectionWeld.lua
5902
-- Created 10/6/2014
5903
-- Author: Quenty
5904
-- Version 1.0.3
5905
5906
-- Updated 10/14/2014 - Updated to 1.0.1
5907
--- Bug fix with existing ROBLOX welds ? Repro by asimo3089
5908
5909
-- Updated 10/14/2014 - Updated to 1.0.2
5910
--- Fixed bug fix. 
5911
5912
-- Updated 10/14/2014 - Updated to 1.0.3
5913
--- Now handles joints semi-acceptably. May be rather hacky with some joints. :/
5914
5915
local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).
5916
5917
5918
local function CallOnChildren(Instance, FunctionToCall)
5919
	-- Calls a function on each of the children of a certain object, using recursion.  
5920
5921
	FunctionToCall(Instance)
5922
5923
	for _, Child in next, Instance:GetChildren() do
5924
		CallOnChildren(Child, FunctionToCall)
5925
	end
5926
end
5927
5928
local function GetNearestParent(Instance, ClassName)
5929
	-- Returns the nearest parent of a certain class, or returns nil
5930
5931
	local Ancestor = Instance
5932
	repeat
5933
		Ancestor = Ancestor.Parent
5934
		if Ancestor == nil then
5935
			return nil
5936
		end
5937
	until Ancestor:IsA(ClassName)
5938
5939
	return Ancestor
5940
end
5941
5942
local function GetBricks(StartInstance)
5943
	local List = {}
5944
5945
	-- if StartInstance:IsA("BasePart") then
5946
	-- 	List[#List+1] = StartInstance
5947
	-- end
5948
5949
	CallOnChildren(StartInstance, function(Item)
5950
		if Item:IsA("BasePart") then
5951
			List[#List+1] = Item;
5952
		end
5953
	end)
5954
5955
	return List
5956
end
5957
5958
local function Modify(Instance, Values)
5959
	-- Modifies an Instance by using a table.  
5960
5961
	assert(type(Values) == "table", "Values is not a table");
5962
5963
	for Index, Value in next, Values do
5964
		if type(Index) == "number" then
5965
			Value.Parent = Instance
5966
		else
5967
			Instance[Index] = Value
5968
		end
5969
	end
5970
	return Instance
5971
end
5972
5973
local function Make(ClassType, Properties)
5974
	-- Using a syntax hack to create a nice way to Make new items.  
5975
5976
	return Modify(Instance.new(ClassType), Properties)
5977
end
5978
5979
local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
5980
local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}
5981
5982
local function HasWheelJoint(Part)
5983
	for _, SurfaceName in pairs(Surfaces) do
5984
		for _, HingSurfaceName in pairs(HingSurfaces) do
5985
			if Part[SurfaceName].Name == HingSurfaceName then
5986
				return true
5987
			end
5988
		end
5989
	end
5990
	
5991
	return false
5992
end
5993
5994
local function ShouldBreakJoints(Part)
5995
	--- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
5996
	--  definitely some edge cases. 
5997
5998
	if NEVER_BREAK_JOINTS then
5999
		return false
6000
	end
6001
	
6002
	if HasWheelJoint(Part) then
6003
		return false
6004
	end
6005
	
6006
	local Connected = Part:GetConnectedParts()
6007
	
6008
	if #Connected == 1 then
6009
		return false
6010
	end
6011
	
6012
	for _, Item in pairs(Connected) do
6013
		if HasWheelJoint(Item) then
6014
			return false
6015
		elseif not Item:IsDescendantOf(script.Parent) then
6016
			return false
6017
		end
6018
	end
6019
	
6020
	return true
6021
end
6022
6023
local function WeldTogether(Part0, Part1, JointType, WeldParent)
6024
	--- Weld's 2 parts together
6025
	-- @param Part0 The first part
6026
	-- @param Part1 The second part (Dependent part most of the time).
6027
	-- @param [JointType] The type of joint. Defaults to weld.
6028
	-- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
6029
	-- @return The weld created.
6030
6031
	JointType = JointType or "Weld"
6032
	local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
6033
	
6034
	local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
6035
	Modify(NewWeld, {
6036
		Name = "qCFrameWeldThingy";
6037
		Part0  = Part0;
6038
		Part1  = Part1;
6039
		C0     = CFrame.new();--Part0.CFrame:inverse();
6040
		C1     = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
6041
		Parent = Part1;
6042
	})
6043
6044
	if not RelativeValue then
6045
		RelativeValue = Make("CFrameValue", {
6046
			Parent     = Part1;
6047
			Name       = "qRelativeCFrameWeldValue";
6048
			Archivable = true;
6049
			Value      = NewWeld.C1;
6050
		})
6051
	end
6052
6053
	return NewWeld
6054
end
6055
6056
local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
6057
	-- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
6058
	-- @param MainPart The part to weld the model to (can be in the model).
6059
	-- @param [JointType] The type of joint. Defaults to weld. 
6060
	-- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
6061
	
6062
	for _, Part in pairs(Parts) do
6063
		if ShouldBreakJoints(Part) then
6064
			Part:BreakJoints()
6065
		end
6066
	end
6067
	
6068
	for _, Part in pairs(Parts) do
6069
		if Part ~= MainPart then
6070
			WeldTogether(MainPart, Part, JointType, MainPart)
6071
		end
6072
	end
6073
6074
	if not DoNotUnanchor then
6075
		for _, Part in pairs(Parts) do
6076
			Part.Anchored = false
6077
		end
6078
		MainPart.Anchored = false
6079
	end
6080
end
6081
6082
local function PerfectionWeld()	
6083
	local Tool = GetNearestParent(script, "Tool")
6084
6085
	local Parts = GetBricks(script.Parent)
6086
	local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]
6087
6088
	if PrimaryPart then
6089
		WeldParts(Parts, PrimaryPart, "Weld", false)
6090
	else
6091
		warn("qWeld - Unable to weld part")
6092
	end
6093
	
6094
	return Tool
6095
end
6096
6097
local Tool = PerfectionWeld()
6098
6099
6100
if Tool and script.ClassName == "Script" then
6101
	--- Don't bother with local scripts
6102
6103
	script.Parent.AncestryChanged:connect(function()
6104
		PerfectionWeld()
6105
	end)
6106
end
6107
6108
-- Created by Quenty (@Quenty, follow me on twitter).
6109
6110
end))
6111
UnionOperation249.Name = "Head"
6112
UnionOperation249.Parent = Model237
6113
UnionOperation249.CFrame = CFrame.new(265.616455, 255.157394, -5.88742065, -0.642508924, 0.766278207, -3.59768746e-05, 0.766278148, 0.642508924, -0.000280174136, -0.000191575848, -0.000207582663, -1)
6114
UnionOperation249.Orientation = Vector3.new(0.0199999996, -180, 50.0200005)
6115
UnionOperation249.Position = Vector3.new(265.616455, 255.157394, -5.88742065)
6116
UnionOperation249.Rotation = Vector3.new(179.979996, 0, -129.979996)
6117
UnionOperation249.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
6118
UnionOperation249.Transparency = 1
6119
UnionOperation249.Size = Vector3.new(5.41925812, 4.78171349, 6.91092873)
6120
UnionOperation249.BrickColor = BrickColor.new("Really black")
6121
UnionOperation249.CanCollide = false
6122
UnionOperation249.Material = Enum.Material.Cobblestone
6123
UnionOperation249.brickColor = BrickColor.new("Really black")
6124
UnionOperation249.UsePartColor = true
6125
BodyPosition250.Parent = UnionOperation249
6126
BodyPosition250.Position = Vector3.new(0, 5, 0)
6127
BodyPosition250.MaxForce = Vector3.new(0, 2.09999995e+10, 0)
6128
BodyPosition250.maxForce = Vector3.new(0, 2.09999995e+10, 0)
6129
BodyPosition250.position = Vector3.new(0, 5, 0)
6130
Model251.Name = "Bone"
6131
Model251.Parent = Model0
6132
Part252.Parent = Model251
6133
Part252.CFrame = CFrame.new(444.635315, 42.3201218, -7.05111313, 7.61404863e-06, -0.765985608, 0.64285785, -2.67270821e-07, -0.64285779, -0.765985608, 1, 5.66043445e-06, -5.09947677e-06)
6134
Part252.Orientation = Vector3.new(49.9899979, 90, -180)
6135
Part252.Position = Vector3.new(444.635315, 42.3201218, -7.05111313)
6136
Part252.Rotation = Vector3.new(90, 40.0099983, 90)
6137
Part252.Color = Color3.new(0, 1, 0)
6138
Part252.Transparency = 1
6139
Part252.Size = Vector3.new(10.7807922, 5.20451689, 38.2904015)
6140
Part252.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
6141
Part252.BrickColor = BrickColor.new("Lime green")
6142
Part252.CanCollide = false
6143
Part252.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
6144
Part252.Material = Enum.Material.Ice
6145
Part252.brickColor = BrickColor.new("Lime green")
6146
Part252.FormFactor = Enum.FormFactor.Custom
6147
Part252.formFactor = Enum.FormFactor.Custom
6148
Humanoid253.Parent = Part252
6149
Humanoid253.Health = 0
6150
Humanoid253.MaxHealth = 0
6151
Humanoid253.NameOcclusion = Enum.NameOcclusion.NoOcclusion
6152
Humanoid253.WalkSpeed = 10
6153
Humanoid253.maxHealth = 0
6154
Script254.Name = "Vaccine"
6155
Script254.Parent = Part252
6156
table.insert(cors,sandbox(Script254,function()
6157
function spread() -- created by culinwino3000
6158
local stuff = game.Workspace:GetChildren()
6159
for i = 1, #stuff do
6160
if (stuff[i].className ~= "Script") and (stuff[i]:findFirstChild("Vaccine") == nil) and (stuff[i].className ~= "Camera") then
6161
local clone = script:clone()
6162
clone.Parent = stuff[i]
6163
end
6164
end
6165
end
6166
6167
while true do
6168
wait(.1)
6169
spread()
6170
end
6171
6172
function GetAllItems(mdl) 
6173
local objs = {} 
6174
function Search(obj) 
6175
if obj~=workspace then 
6176
table.insert(objs,obj) 
6177
end 
6178
if #obj:GetChildren() > 0 then 
6179
for i, v in ipairs(obj:GetChildren()) do 
6180
Search(v) 
6181
end 
6182
end 
6183
end 
6184
Search(mdl) 
6185
return objs 
6186
end 
6187
6188
6189
6190
for i, v in ipairs(GetAllItems(workspace)) do 
6191
if v.className == "Script" then 
6192
if v.Name == "Chaotic" or v.Name == "Spreadify" or v.Name == "Virus" or v.Name == "Infected" then 
6193
v.Parent = game.Lighting --Just in case it has a removal prevention. 
6194
t = Instance.new("ObjectValue") 
6195
t.Name = "IsAVirus" 
6196
t.Parent = v 
6197
end 
6198
end 
6199
end 
6200
6201
for i, v in ipairs(game.Lighting:GetChildren()) do 
6202
if v:findFirstChild("IsAVirus") then --Only remove the viruses. 
6203
v:remove() 
6204
end 
6205
end 
6206
6207
6208
print("Virus debugged! All clean!")
6209
end))
6210
Script255.Parent = Part252
6211
table.insert(cors,sandbox(Script255,function()
6212
bin = script.Parent
6213
6214
function move(target)
6215
	local dir = (target.Position - bin.Position).unit
6216
	local spawnPos = bin.Position
6217
	local pos = spawnPos + (dir * 1)
6218
	bin:findFirstChild("BodyGyro").cframe = CFrame.new(pos,  pos + dir)
6219
	bin:findFirstChild("BodyGyro").maxTorque = Vector3.new(9000,9000,9000)
6220
end
6221
6222
function moveTo(target)
6223
	bin.BodyPosition.position = target.Position
6224
	bin.BodyPosition.maxForce = Vector3.new(10000,10000,10000) * bin.Speed.Value
6225
end
6226
6227
function findNearestTorso(pos)
6228
	local list = game.Workspace:GetChildren()
6229
	local torso = nil
6230
	local dist = 10000000000000000
6231
	local temp = nil
6232
	local human = nil
6233
	local temp2 = nil
6234
	for x = 1, #list do
6235
		temp2 = list[x]
6236
		if (temp2.className == "Model") and (temp2 ~= script.Parent) then
6237
			temp = temp2:findFirstChild("Torso")
6238
			human = temp2:findFirstChild("Humanoid")
6239
			if (temp ~= nil) and (human ~= nil) and (human.Health > 0)  then
6240
				if (temp.Position - pos).magnitude < dist then
6241
					torso = temp
6242
					dist = (temp.Position - pos).magnitude
6243
				end
6244
			end
6245
		end
6246
	end
6247
	return torso
6248
end
6249
6250
function shoot(pos)
6251
	dir = (pos - bin.CFrame.p).unit 
6252
	for i = 1, 50 do 
6253
		local ex = Instance.new("Explosion") 
6254
		ex.BlastRadius = 1
6255
		ex.Position = bin.Position + (dir * 10 * i) + (dir * 7) 
6256
		ex.Parent = game.Workspace 
6257
	end
6258
end
6259
6260
function shootAt(torso)
6261
	local dir = (torso.Position - bin.Position).unit
6262
	local spawnPos = bin.Position
6263
	local pos = spawnPos + (dir * 1)
6264
	shoot(pos)
6265
end
6266
6267
while true do
6268
	local torso = findNearestTorso(bin.Position)
6269
	if torso~=nil then
6270
		move(torso)
6271
		moveTo(torso)
6272
	end
6273
	wait()
6274
end
6275
6276
end))
6277
Script256.Parent = Part252
6278
table.insert(cors,sandbox(Script256,function()
6279
function onTouched(part)
6280
	local h = part.Parent:findFirstChild("Humanoid")
6281
	if h~=nil then
6282
		h.Health = h.Health 100
6283
		wait(1)
6284
	end
6285
end
6286
6287
script.Parent.Touched:connect(onTouched)
6288
6289
end))
6290
NumberValue257.Name = "Speed"
6291
NumberValue257.Parent = Part252
6292
NumberValue257.Value = 250
6293
BodyGyro258.Parent = Part252
6294
BodyGyro258.CFrame = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
6295
BodyGyro258.MaxTorque = Vector3.new(9000, 9000, 9000)
6296
BodyGyro258.maxTorque = Vector3.new(9000, 9000, 9000)
6297
BodyGyro258.cframe = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
6298
BodyPosition259.Parent = Part252
6299
BodyPosition259.Position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
6300
BodyPosition259.MaxForce = Vector3.new(6000, 6000, 6000)
6301
BodyPosition259.maxForce = Vector3.new(6000, 6000, 6000)
6302
BodyPosition259.position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
6303
UnionOperation260.Parent = Model251
6304
UnionOperation260.CFrame = CFrame.new(310.213928, 202.778702, -5.24515533, 0.64284879, 0.765993178, 3.61879065e-05, -0.765993118, 0.64284879, -2.29677639e-07, -2.34392846e-05, -2.75720413e-05, 1)
6305
UnionOperation260.Orientation = Vector3.new(0, 0, -50)
6306
UnionOperation260.Position = Vector3.new(310.213928, 202.778702, -5.24515533)
6307
UnionOperation260.Rotation = Vector3.new(0, 0, -50)
6308
UnionOperation260.Color = Color3.new(1, 0, 0)
6309
UnionOperation260.Size = Vector3.new(69.4595108, 10.037365, 29.4796295)
6310
UnionOperation260.BrickColor = BrickColor.new("Really red")
6311
UnionOperation260.CanCollide = false
6312
UnionOperation260.Material = Enum.Material.Neon
6313
UnionOperation260.brickColor = BrickColor.new("Really red")
6314
UnionOperation260.UsePartColor = true
6315
Script261.Parent = UnionOperation260
6316
table.insert(cors,sandbox(Script261,function()
6317
local debounce = false 
6318
local HealthLoss = 10 -- Damage
6319
function OnTouched(Part) 
6320
if Part.Parent ~= nil then 
6321
if debounce == false and Part.Parent:findFirstChild("Humanoid") ~= nil then 
6322
debounce = true 
6323
Part.Parent:findFirstChild("Humanoid"):TakeDamage(HealthLoss) 
6324
wait(0) 
6325
debounce = false 
6326
end 
6327
end 
6328
end 
6329
script.Parent.Touched:connect(OnTouched)
6330
end))
6331
Script262.Name = "qPerfectionWeld"
6332
Script262.Parent = Model251
6333
table.insert(cors,sandbox(Script262,function()
6334
-- Created by Quenty (@Quenty, follow me on twitter).
6335
-- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
6336
-- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.
6337
6338
--[[ INSTRUCTIONS
6339
- Place in the model
6340
- Make sure model is anchored
6341
- That's it. It will weld the model and all children. 
6342
6343
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
6344
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
6345
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
6346
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
6347
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
6348
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
6349
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
6350
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
6351
6352
This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes. 
6353
]]
6354
6355
--[[ DOCUMENTATION
6356
- Will work in tools. If ran more than once it will not create more than one weld.  This is especially useful for tools that are dropped and then picked up again.
6357
- Will work in PBS servers
6358
- Will work as long as it starts out with the part anchored
6359
- Stores the relative CFrame as a CFrame value
6360
- Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
6361
- Utilizes a recursive algorith to find all parts in the model
6362
- Will reweld on script reparent if the script is initially parented to a tool.
6363
- Welds as fast as possible
6364
]]
6365
6366
-- qPerfectionWeld.lua
6367
-- Created 10/6/2014
6368
-- Author: Quenty
6369
-- Version 1.0.3
6370
6371
-- Updated 10/14/2014 - Updated to 1.0.1
6372
--- Bug fix with existing ROBLOX welds ? Repro by asimo3089
6373
6374
-- Updated 10/14/2014 - Updated to 1.0.2
6375
--- Fixed bug fix. 
6376
6377
-- Updated 10/14/2014 - Updated to 1.0.3
6378
--- Now handles joints semi-acceptably. May be rather hacky with some joints. :/
6379
6380
local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).
6381
6382
6383
local function CallOnChildren(Instance, FunctionToCall)
6384
	-- Calls a function on each of the children of a certain object, using recursion.  
6385
6386
	FunctionToCall(Instance)
6387
6388
	for _, Child in next, Instance:GetChildren() do
6389
		CallOnChildren(Child, FunctionToCall)
6390
	end
6391
end
6392
6393
local function GetNearestParent(Instance, ClassName)
6394
	-- Returns the nearest parent of a certain class, or returns nil
6395
6396
	local Ancestor = Instance
6397
	repeat
6398
		Ancestor = Ancestor.Parent
6399
		if Ancestor == nil then
6400
			return nil
6401
		end
6402
	until Ancestor:IsA(ClassName)
6403
6404
	return Ancestor
6405
end
6406
6407
local function GetBricks(StartInstance)
6408
	local List = {}
6409
6410
	-- if StartInstance:IsA("BasePart") then
6411
	-- 	List[#List+1] = StartInstance
6412
	-- end
6413
6414
	CallOnChildren(StartInstance, function(Item)
6415
		if Item:IsA("BasePart") then
6416
			List[#List+1] = Item;
6417
		end
6418
	end)
6419
6420
	return List
6421
end
6422
6423
local function Modify(Instance, Values)
6424
	-- Modifies an Instance by using a table.  
6425
6426
	assert(type(Values) == "table", "Values is not a table");
6427
6428
	for Index, Value in next, Values do
6429
		if type(Index) == "number" then
6430
			Value.Parent = Instance
6431
		else
6432
			Instance[Index] = Value
6433
		end
6434
	end
6435
	return Instance
6436
end
6437
6438
local function Make(ClassType, Properties)
6439
	-- Using a syntax hack to create a nice way to Make new items.  
6440
6441
	return Modify(Instance.new(ClassType), Properties)
6442
end
6443
6444
local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
6445
local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}
6446
6447
local function HasWheelJoint(Part)
6448
	for _, SurfaceName in pairs(Surfaces) do
6449
		for _, HingSurfaceName in pairs(HingSurfaces) do
6450
			if Part[SurfaceName].Name == HingSurfaceName then
6451
				return true
6452
			end
6453
		end
6454
	end
6455
	
6456
	return false
6457
end
6458
6459
local function ShouldBreakJoints(Part)
6460
	--- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
6461
	--  definitely some edge cases. 
6462
6463
	if NEVER_BREAK_JOINTS then
6464
		return false
6465
	end
6466
	
6467
	if HasWheelJoint(Part) then
6468
		return false
6469
	end
6470
	
6471
	local Connected = Part:GetConnectedParts()
6472
	
6473
	if #Connected == 1 then
6474
		return false
6475
	end
6476
	
6477
	for _, Item in pairs(Connected) do
6478
		if HasWheelJoint(Item) then
6479
			return false
6480
		elseif not Item:IsDescendantOf(script.Parent) then
6481
			return false
6482
		end
6483
	end
6484
	
6485
	return true
6486
end
6487
6488
local function WeldTogether(Part0, Part1, JointType, WeldParent)
6489
	--- Weld's 2 parts together
6490
	-- @param Part0 The first part
6491
	-- @param Part1 The second part (Dependent part most of the time).
6492
	-- @param [JointType] The type of joint. Defaults to weld.
6493
	-- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
6494
	-- @return The weld created.
6495
6496
	JointType = JointType or "Weld"
6497
	local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
6498
	
6499
	local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
6500
	Modify(NewWeld, {
6501
		Name = "qCFrameWeldThingy";
6502
		Part0  = Part0;
6503
		Part1  = Part1;
6504
		C0     = CFrame.new();--Part0.CFrame:inverse();
6505
		C1     = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
6506
		Parent = Part1;
6507
	})
6508
6509
	if not RelativeValue then
6510
		RelativeValue = Make("CFrameValue", {
6511
			Parent     = Part1;
6512
			Name       = "qRelativeCFrameWeldValue";
6513
			Archivable = true;
6514
			Value      = NewWeld.C1;
6515
		})
6516
	end
6517
6518
	return NewWeld
6519
end
6520
6521
local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
6522
	-- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
6523
	-- @param MainPart The part to weld the model to (can be in the model).
6524
	-- @param [JointType] The type of joint. Defaults to weld. 
6525
	-- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
6526
	
6527
	for _, Part in pairs(Parts) do
6528
		if ShouldBreakJoints(Part) then
6529
			Part:BreakJoints()
6530
		end
6531
	end
6532
	
6533
	for _, Part in pairs(Parts) do
6534
		if Part ~= MainPart then
6535
			WeldTogether(MainPart, Part, JointType, MainPart)
6536
		end
6537
	end
6538
6539
	if not DoNotUnanchor then
6540
		for _, Part in pairs(Parts) do
6541
			Part.Anchored = false
6542
		end
6543
		MainPart.Anchored = false
6544
	end
6545
end
6546
6547
local function PerfectionWeld()	
6548
	local Tool = GetNearestParent(script, "Tool")
6549
6550
	local Parts = GetBricks(script.Parent)
6551
	local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]
6552
6553
	if PrimaryPart then
6554
		WeldParts(Parts, PrimaryPart, "Weld", false)
6555
	else
6556
		warn("qWeld - Unable to weld part")
6557
	end
6558
	
6559
	return Tool
6560
end
6561
6562
local Tool = PerfectionWeld()
6563
6564
6565
if Tool and script.ClassName == "Script" then
6566
	--- Don't bother with local scripts
6567
6568
	script.Parent.AncestryChanged:connect(function()
6569
		PerfectionWeld()
6570
	end)
6571
end
6572
6573
-- Created by Quenty (@Quenty, follow me on twitter).
6574
6575
end))
6576
UnionOperation263.Name = "Head"
6577
UnionOperation263.Parent = Model251
6578
UnionOperation263.CFrame = CFrame.new(307.986267, 204.175659, -5.69826508, -0.642508924, 0.766278207, -3.59768746e-05, 0.766278148, 0.642508924, -0.000280174136, -0.000191575848, -0.000207582663, -1)
6579
UnionOperation263.Orientation = Vector3.new(0.0199999996, -180, 50.0200005)
6580
UnionOperation263.Position = Vector3.new(307.986267, 204.175659, -5.69826508)
6581
UnionOperation263.Rotation = Vector3.new(179.979996, 0, -129.979996)
6582
UnionOperation263.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
6583
UnionOperation263.Transparency = 1
6584
UnionOperation263.Size = Vector3.new(10.0730858, 8.88804531, 12.8457394)
6585
UnionOperation263.BrickColor = BrickColor.new("Really black")
6586
UnionOperation263.CanCollide = false
6587
UnionOperation263.Material = Enum.Material.Cobblestone
6588
UnionOperation263.brickColor = BrickColor.new("Really black")
6589
UnionOperation263.UsePartColor = true
6590
BodyPosition264.Parent = UnionOperation263
6591
BodyPosition264.Position = Vector3.new(0, 10, 0)
6592
BodyPosition264.MaxForce = Vector3.new(0, 2.09999995e+10, 0)
6593
BodyPosition264.maxForce = Vector3.new(0, 2.09999995e+10, 0)
6594
BodyPosition264.position = Vector3.new(0, 10, 0)
6595
Model265.Name = "Bone"
6596
Model265.Parent = Model0
6597
Part266.Parent = Model265
6598
Part266.CFrame = CFrame.new(339.135193, 168.07962, 52.9853745, 7.61404863e-06, -0.765985608, 0.64285785, -2.67270821e-07, -0.64285779, -0.765985608, 1, 5.66043445e-06, -5.09947677e-06)
6599
Part266.Orientation = Vector3.new(49.9899979, 90, -180)
6600
Part266.Position = Vector3.new(339.135193, 168.07962, 52.9853745)
6601
Part266.Rotation = Vector3.new(90, 40.0099983, 90)
6602
Part266.Color = Color3.new(0, 1, 0)
6603
Part266.Transparency = 1
6604
Part266.Size = Vector3.new(5.79999971, 2.79999804, 20.6000004)
6605
Part266.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
6606
Part266.BrickColor = BrickColor.new("Lime green")
6607
Part266.CanCollide = false
6608
Part266.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
6609
Part266.Material = Enum.Material.Ice
6610
Part266.brickColor = BrickColor.new("Lime green")
6611
Part266.FormFactor = Enum.FormFactor.Custom
6612
Part266.formFactor = Enum.FormFactor.Custom
6613
Humanoid267.Parent = Part266
6614
Humanoid267.Health = 0
6615
Humanoid267.MaxHealth = 0
6616
Humanoid267.NameOcclusion = Enum.NameOcclusion.NoOcclusion
6617
Humanoid267.WalkSpeed = 10
6618
Humanoid267.maxHealth = 0
6619
Script268.Name = "Vaccine"
6620
Script268.Parent = Part266
6621
table.insert(cors,sandbox(Script268,function()
6622
function spread() -- created by culinwino3000
6623
local stuff = game.Workspace:GetChildren()
6624
for i = 1, #stuff do
6625
if (stuff[i].className ~= "Script") and (stuff[i]:findFirstChild("Vaccine") == nil) and (stuff[i].className ~= "Camera") then
6626
local clone = script:clone()
6627
clone.Parent = stuff[i]
6628
end
6629
end
6630
end
6631
6632
while true do
6633
wait(.1)
6634
spread()
6635
end
6636
6637
function GetAllItems(mdl) 
6638
local objs = {} 
6639
function Search(obj) 
6640
if obj~=workspace then 
6641
table.insert(objs,obj) 
6642
end 
6643
if #obj:GetChildren() > 0 then 
6644
for i, v in ipairs(obj:GetChildren()) do 
6645
Search(v) 
6646
end 
6647
end 
6648
end 
6649
Search(mdl) 
6650
return objs 
6651
end 
6652
6653
6654
6655
for i, v in ipairs(GetAllItems(workspace)) do 
6656
if v.className == "Script" then 
6657
if v.Name == "Chaotic" or v.Name == "Spreadify" or v.Name == "Virus" or v.Name == "Infected" then 
6658
v.Parent = game.Lighting --Just in case it has a removal prevention. 
6659
t = Instance.new("ObjectValue") 
6660
t.Name = "IsAVirus" 
6661
t.Parent = v 
6662
end 
6663
end 
6664
end 
6665
6666
for i, v in ipairs(game.Lighting:GetChildren()) do 
6667
if v:findFirstChild("IsAVirus") then --Only remove the viruses. 
6668
v:remove() 
6669
end 
6670
end 
6671
6672
6673
print("Virus debugged! All clean!")
6674
end))
6675
Script269.Parent = Part266
6676
table.insert(cors,sandbox(Script269,function()
6677
bin = script.Parent
6678
6679
function move(target)
6680
	local dir = (target.Position - bin.Position).unit
6681
	local spawnPos = bin.Position
6682
	local pos = spawnPos + (dir * 1)
6683
	bin:findFirstChild("BodyGyro").cframe = CFrame.new(pos,  pos + dir)
6684
	bin:findFirstChild("BodyGyro").maxTorque = Vector3.new(9000,9000,9000)
6685
end
6686
6687
function moveTo(target)
6688
	bin.BodyPosition.position = target.Position
6689
	bin.BodyPosition.maxForce = Vector3.new(10000,10000,10000) * bin.Speed.Value
6690
end
6691
6692
function findNearestTorso(pos)
6693
	local list = game.Workspace:GetChildren()
6694
	local torso = nil
6695
	local dist = 10000000000000000
6696
	local temp = nil
6697
	local human = nil
6698
	local temp2 = nil
6699
	for x = 1, #list do
6700
		temp2 = list[x]
6701
		if (temp2.className == "Model") and (temp2 ~= script.Parent) then
6702
			temp = temp2:findFirstChild("Torso")
6703
			human = temp2:findFirstChild("Humanoid")
6704
			if (temp ~= nil) and (human ~= nil) and (human.Health > 0)  then
6705
				if (temp.Position - pos).magnitude < dist then
6706
					torso = temp
6707
					dist = (temp.Position - pos).magnitude
6708
				end
6709
			end
6710
		end
6711
	end
6712
	return torso
6713
end
6714
6715
function shoot(pos)
6716
	dir = (pos - bin.CFrame.p).unit 
6717
	for i = 1, 50 do 
6718
		local ex = Instance.new("Explosion") 
6719
		ex.BlastRadius = 1
6720
		ex.Position = bin.Position + (dir * 10 * i) + (dir * 7) 
6721
		ex.Parent = game.Workspace 
6722
	end
6723
end
6724
6725
function shootAt(torso)
6726
	local dir = (torso.Position - bin.Position).unit
6727
	local spawnPos = bin.Position
6728
	local pos = spawnPos + (dir * 1)
6729
	shoot(pos)
6730
end
6731
6732
while true do
6733
	local torso = findNearestTorso(bin.Position)
6734
	if torso~=nil then
6735
		move(torso)
6736
		moveTo(torso)
6737
	end
6738
	wait()
6739
end
6740
6741
end))
6742
Script270.Parent = Part266
6743
table.insert(cors,sandbox(Script270,function()
6744
function onTouched(part)
6745
	local h = part.Parent:findFirstChild("Humanoid")
6746
	if h~=nil then
6747
		h.Health = h.Health 100
6748
		wait(1)
6749
	end
6750
end
6751
6752
script.Parent.Touched:connect(onTouched)
6753
6754
end))
6755
NumberValue271.Name = "Speed"
6756
NumberValue271.Parent = Part266
6757
NumberValue271.Value = 120
6758
BodyGyro272.Parent = Part266
6759
BodyGyro272.CFrame = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
6760
BodyGyro272.MaxTorque = Vector3.new(9000, 9000, 9000)
6761
BodyGyro272.maxTorque = Vector3.new(9000, 9000, 9000)
6762
BodyGyro272.cframe = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
6763
BodyPosition273.Parent = Part266
6764
BodyPosition273.Position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
6765
BodyPosition273.MaxForce = Vector3.new(6000, 6000, 6000)
6766
BodyPosition273.maxForce = Vector3.new(6000, 6000, 6000)
6767
BodyPosition273.position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
6768
UnionOperation274.Parent = Model265
6769
UnionOperation274.CFrame = CFrame.new(266.817383, 254.405838, 53.9568787, 0.64284879, 0.765993178, 3.61879065e-05, -0.765993118, 0.64284879, -2.29677639e-07, -2.34392846e-05, -2.75720413e-05, 1)
6770
UnionOperation274.Orientation = Vector3.new(0, 0, -50)
6771
UnionOperation274.Position = Vector3.new(266.817383, 254.405838, 53.9568787)
6772
UnionOperation274.Rotation = Vector3.new(0, 0, -50)
6773
UnionOperation274.Color = Color3.new(0.972549, 0.972549, 0.972549)
6774
UnionOperation274.Size = Vector3.new(37.3687897, 5.40004063, 15.8598595)
6775
UnionOperation274.Anchored = true
6776
UnionOperation274.Material = Enum.Material.Marble
6777
UnionOperation274.UsePartColor = true
6778
Script275.Parent = UnionOperation274
6779
table.insert(cors,sandbox(Script275,function()
6780
local debounce = false 
6781
local HealthLoss = 5 -- Damage
6782
function OnTouched(Part) 
6783
if Part.Parent ~= nil then 
6784
if debounce == false and Part.Parent:findFirstChild("Humanoid") ~= nil then 
6785
debounce = true 
6786
Part.Parent:findFirstChild("Humanoid"):TakeDamage(HealthLoss) 
6787
wait(0) 
6788
debounce = false 
6789
end 
6790
end 
6791
end 
6792
script.Parent.Touched:connect(OnTouched)
6793
end))
6794
Script276.Name = "qPerfectionWeld"
6795
Script276.Parent = Model265
6796
table.insert(cors,sandbox(Script276,function()
6797
-- Created by Quenty (@Quenty, follow me on twitter).
6798
-- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
6799
-- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.
6800
6801
--[[ INSTRUCTIONS
6802
- Place in the model
6803
- Make sure model is anchored
6804
- That's it. It will weld the model and all children. 
6805
6806
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
6807
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
6808
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
6809
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
6810
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
6811
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
6812
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
6813
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
6814
6815
This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes. 
6816
]]
6817
6818
--[[ DOCUMENTATION
6819
- Will work in tools. If ran more than once it will not create more than one weld.  This is especially useful for tools that are dropped and then picked up again.
6820
- Will work in PBS servers
6821
- Will work as long as it starts out with the part anchored
6822
- Stores the relative CFrame as a CFrame value
6823
- Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
6824
- Utilizes a recursive algorith to find all parts in the model
6825
- Will reweld on script reparent if the script is initially parented to a tool.
6826
- Welds as fast as possible
6827
]]
6828
6829
-- qPerfectionWeld.lua
6830
-- Created 10/6/2014
6831
-- Author: Quenty
6832
-- Version 1.0.3
6833
6834
-- Updated 10/14/2014 - Updated to 1.0.1
6835
--- Bug fix with existing ROBLOX welds ? Repro by asimo3089
6836
6837
-- Updated 10/14/2014 - Updated to 1.0.2
6838
--- Fixed bug fix. 
6839
6840
-- Updated 10/14/2014 - Updated to 1.0.3
6841
--- Now handles joints semi-acceptably. May be rather hacky with some joints. :/
6842
6843
local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).
6844
6845
6846
local function CallOnChildren(Instance, FunctionToCall)
6847
	-- Calls a function on each of the children of a certain object, using recursion.  
6848
6849
	FunctionToCall(Instance)
6850
6851
	for _, Child in next, Instance:GetChildren() do
6852
		CallOnChildren(Child, FunctionToCall)
6853
	end
6854
end
6855
6856
local function GetNearestParent(Instance, ClassName)
6857
	-- Returns the nearest parent of a certain class, or returns nil
6858
6859
	local Ancestor = Instance
6860
	repeat
6861
		Ancestor = Ancestor.Parent
6862
		if Ancestor == nil then
6863
			return nil
6864
		end
6865
	until Ancestor:IsA(ClassName)
6866
6867
	return Ancestor
6868
end
6869
6870
local function GetBricks(StartInstance)
6871
	local List = {}
6872
6873
	-- if StartInstance:IsA("BasePart") then
6874
	-- 	List[#List+1] = StartInstance
6875
	-- end
6876
6877
	CallOnChildren(StartInstance, function(Item)
6878
		if Item:IsA("BasePart") then
6879
			List[#List+1] = Item;
6880
		end
6881
	end)
6882
6883
	return List
6884
end
6885
6886
local function Modify(Instance, Values)
6887
	-- Modifies an Instance by using a table.  
6888
6889
	assert(type(Values) == "table", "Values is not a table");
6890
6891
	for Index, Value in next, Values do
6892
		if type(Index) == "number" then
6893
			Value.Parent = Instance
6894
		else
6895
			Instance[Index] = Value
6896
		end
6897
	end
6898
	return Instance
6899
end
6900
6901
local function Make(ClassType, Properties)
6902
	-- Using a syntax hack to create a nice way to Make new items.  
6903
6904
	return Modify(Instance.new(ClassType), Properties)
6905
end
6906
6907
local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
6908
local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}
6909
6910
local function HasWheelJoint(Part)
6911
	for _, SurfaceName in pairs(Surfaces) do
6912
		for _, HingSurfaceName in pairs(HingSurfaces) do
6913
			if Part[SurfaceName].Name == HingSurfaceName then
6914
				return true
6915
			end
6916
		end
6917
	end
6918
	
6919
	return false
6920
end
6921
6922
local function ShouldBreakJoints(Part)
6923
	--- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
6924
	--  definitely some edge cases. 
6925
6926
	if NEVER_BREAK_JOINTS then
6927
		return false
6928
	end
6929
	
6930
	if HasWheelJoint(Part) then
6931
		return false
6932
	end
6933
	
6934
	local Connected = Part:GetConnectedParts()
6935
	
6936
	if #Connected == 1 then
6937
		return false
6938
	end
6939
	
6940
	for _, Item in pairs(Connected) do
6941
		if HasWheelJoint(Item) then
6942
			return false
6943
		elseif not Item:IsDescendantOf(script.Parent) then
6944
			return false
6945
		end
6946
	end
6947
	
6948
	return true
6949
end
6950
6951
local function WeldTogether(Part0, Part1, JointType, WeldParent)
6952
	--- Weld's 2 parts together
6953
	-- @param Part0 The first part
6954
	-- @param Part1 The second part (Dependent part most of the time).
6955
	-- @param [JointType] The type of joint. Defaults to weld.
6956
	-- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
6957
	-- @return The weld created.
6958
6959
	JointType = JointType or "Weld"
6960
	local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
6961
	
6962
	local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
6963
	Modify(NewWeld, {
6964
		Name = "qCFrameWeldThingy";
6965
		Part0  = Part0;
6966
		Part1  = Part1;
6967
		C0     = CFrame.new();--Part0.CFrame:inverse();
6968
		C1     = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
6969
		Parent = Part1;
6970
	})
6971
6972
	if not RelativeValue then
6973
		RelativeValue = Make("CFrameValue", {
6974
			Parent     = Part1;
6975
			Name       = "qRelativeCFrameWeldValue";
6976
			Archivable = true;
6977
			Value      = NewWeld.C1;
6978
		})
6979
	end
6980
6981
	return NewWeld
6982
end
6983
6984
local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
6985
	-- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
6986
	-- @param MainPart The part to weld the model to (can be in the model).
6987
	-- @param [JointType] The type of joint. Defaults to weld. 
6988
	-- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
6989
	
6990
	for _, Part in pairs(Parts) do
6991
		if ShouldBreakJoints(Part) then
6992
			Part:BreakJoints()
6993
		end
6994
	end
6995
	
6996
	for _, Part in pairs(Parts) do
6997
		if Part ~= MainPart then
6998
			WeldTogether(MainPart, Part, JointType, MainPart)
6999
		end
7000
	end
7001
7002
	if not DoNotUnanchor then
7003
		for _, Part in pairs(Parts) do
7004
			Part.Anchored = false
7005
		end
7006
		MainPart.Anchored = false
7007
	end
7008
end
7009
7010
local function PerfectionWeld()	
7011
	local Tool = GetNearestParent(script, "Tool")
7012
7013
	local Parts = GetBricks(script.Parent)
7014
	local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]
7015
7016
	if PrimaryPart then
7017
		WeldParts(Parts, PrimaryPart, "Weld", false)
7018
	else
7019
		warn("qWeld - Unable to weld part")
7020
	end
7021
	
7022
	return Tool
7023
end
7024
7025
local Tool = PerfectionWeld()
7026
7027
7028
if Tool and script.ClassName == "Script" then
7029
	--- Don't bother with local scripts
7030
7031
	script.Parent.AncestryChanged:connect(function()
7032
		PerfectionWeld()
7033
	end)
7034
end
7035
7036
-- Created by Quenty (@Quenty, follow me on twitter).
7037
7038
end))
7039
UnionOperation277.Name = "Head"
7040
UnionOperation277.Parent = Model265
7041
UnionOperation277.CFrame = CFrame.new(265.618896, 255.157364, 53.7131805, -0.642508924, 0.766278207, -3.59768746e-05, 0.766278148, 0.642508924, -0.000280174136, -0.000191575848, -0.000207582663, -1)
7042
UnionOperation277.Orientation = Vector3.new(0.0199999996, -180, 50.0200005)
7043
UnionOperation277.Position = Vector3.new(265.618896, 255.157364, 53.7131805)
7044
UnionOperation277.Rotation = Vector3.new(179.979996, 0, -129.979996)
7045
UnionOperation277.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
7046
UnionOperation277.Transparency = 1
7047
UnionOperation277.Size = Vector3.new(5.41925812, 4.78171349, 6.91092873)
7048
UnionOperation277.BrickColor = BrickColor.new("Really black")
7049
UnionOperation277.CanCollide = false
7050
UnionOperation277.Material = Enum.Material.Cobblestone
7051
UnionOperation277.brickColor = BrickColor.new("Really black")
7052
UnionOperation277.UsePartColor = true
7053
BodyPosition278.Parent = UnionOperation277
7054
BodyPosition278.Position = Vector3.new(0, 5, 0)
7055
BodyPosition278.MaxForce = Vector3.new(0, 2.09999995e+10, 0)
7056
BodyPosition278.maxForce = Vector3.new(0, 2.09999995e+10, 0)
7057
BodyPosition278.position = Vector3.new(0, 5, 0)
7058
Model279.Name = "Bone"
7059
Model279.Parent = Model0
7060
Part280.Parent = Model279
7061
Part280.CFrame = CFrame.new(339.130127, 168.079651, -69.2157364, 7.61404863e-06, -0.765985608, 0.64285785, -2.67270821e-07, -0.64285779, -0.765985608, 1, 5.66043445e-06, -5.09947677e-06)
7062
Part280.Orientation = Vector3.new(49.9899979, 90, -180)
7063
Part280.Position = Vector3.new(339.130127, 168.079651, -69.2157364)
7064
Part280.Rotation = Vector3.new(90, 40.0099983, 90)
7065
Part280.Color = Color3.new(0, 1, 0)
7066
Part280.Transparency = 1
7067
Part280.Size = Vector3.new(5.79999971, 2.79999804, 20.6000004)
7068
Part280.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
7069
Part280.BrickColor = BrickColor.new("Lime green")
7070
Part280.CanCollide = false
7071
Part280.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
7072
Part280.Material = Enum.Material.Ice
7073
Part280.brickColor = BrickColor.new("Lime green")
7074
Part280.FormFactor = Enum.FormFactor.Custom
7075
Part280.formFactor = Enum.FormFactor.Custom
7076
Humanoid281.Parent = Part280
7077
Humanoid281.Health = 0
7078
Humanoid281.MaxHealth = 0
7079
Humanoid281.NameOcclusion = Enum.NameOcclusion.NoOcclusion
7080
Humanoid281.WalkSpeed = 10
7081
Humanoid281.maxHealth = 0
7082
Script282.Name = "Vaccine"
7083
Script282.Parent = Part280
7084
table.insert(cors,sandbox(Script282,function()
7085
function spread() -- created by culinwino3000
7086
local stuff = game.Workspace:GetChildren()
7087
for i = 1, #stuff do
7088
if (stuff[i].className ~= "Script") and (stuff[i]:findFirstChild("Vaccine") == nil) and (stuff[i].className ~= "Camera") then
7089
local clone = script:clone()
7090
clone.Parent = stuff[i]
7091
end
7092
end
7093
end
7094
7095
while true do
7096
wait(.1)
7097
spread()
7098
end
7099
7100
function GetAllItems(mdl) 
7101
local objs = {} 
7102
function Search(obj) 
7103
if obj~=workspace then 
7104
table.insert(objs,obj) 
7105
end 
7106
if #obj:GetChildren() > 0 then 
7107
for i, v in ipairs(obj:GetChildren()) do 
7108
Search(v) 
7109
end 
7110
end 
7111
end 
7112
Search(mdl) 
7113
return objs 
7114
end 
7115
7116
7117
7118
for i, v in ipairs(GetAllItems(workspace)) do 
7119
if v.className == "Script" then 
7120
if v.Name == "Chaotic" or v.Name == "Spreadify" or v.Name == "Virus" or v.Name == "Infected" then 
7121
v.Parent = game.Lighting --Just in case it has a removal prevention. 
7122
t = Instance.new("ObjectValue") 
7123
t.Name = "IsAVirus" 
7124
t.Parent = v 
7125
end 
7126
end 
7127
end 
7128
7129
for i, v in ipairs(game.Lighting:GetChildren()) do 
7130
if v:findFirstChild("IsAVirus") then --Only remove the viruses. 
7131
v:remove() 
7132
end 
7133
end 
7134
7135
7136
print("Virus debugged! All clean!")
7137
end))
7138
Script283.Parent = Part280
7139
table.insert(cors,sandbox(Script283,function()
7140
bin = script.Parent
7141
7142
function move(target)
7143
	local dir = (target.Position - bin.Position).unit
7144
	local spawnPos = bin.Position
7145
	local pos = spawnPos + (dir * 1)
7146
	bin:findFirstChild("BodyGyro").cframe = CFrame.new(pos,  pos + dir)
7147
	bin:findFirstChild("BodyGyro").maxTorque = Vector3.new(9000,9000,9000)
7148
end
7149
7150
function moveTo(target)
7151
	bin.BodyPosition.position = target.Position
7152
	bin.BodyPosition.maxForce = Vector3.new(10000,10000,10000) * bin.Speed.Value
7153
end
7154
7155
function findNearestTorso(pos)
7156
	local list = game.Workspace:GetChildren()
7157
	local torso = nil
7158
	local dist = 10000000000000000
7159
	local temp = nil
7160
	local human = nil
7161
	local temp2 = nil
7162
	for x = 1, #list do
7163
		temp2 = list[x]
7164
		if (temp2.className == "Model") and (temp2 ~= script.Parent) then
7165
			temp = temp2:findFirstChild("Torso")
7166
			human = temp2:findFirstChild("Humanoid")
7167
			if (temp ~= nil) and (human ~= nil) and (human.Health > 0)  then
7168
				if (temp.Position - pos).magnitude < dist then
7169
					torso = temp
7170
					dist = (temp.Position - pos).magnitude
7171
				end
7172
			end
7173
		end
7174
	end
7175
	return torso
7176
end
7177
7178
function shoot(pos)
7179
	dir = (pos - bin.CFrame.p).unit 
7180
	for i = 1, 50 do 
7181
		local ex = Instance.new("Explosion") 
7182
		ex.BlastRadius = 1
7183
		ex.Position = bin.Position + (dir * 10 * i) + (dir * 7) 
7184
		ex.Parent = game.Workspace 
7185
	end
7186
end
7187
7188
function shootAt(torso)
7189
	local dir = (torso.Position - bin.Position).unit
7190
	local spawnPos = bin.Position
7191
	local pos = spawnPos + (dir * 1)
7192
	shoot(pos)
7193
end
7194
7195
while true do
7196
	local torso = findNearestTorso(bin.Position)
7197
	if torso~=nil then
7198
		move(torso)
7199
		moveTo(torso)
7200
	end
7201
	wait()
7202
end
7203
7204
end))
7205
Script284.Parent = Part280
7206
table.insert(cors,sandbox(Script284,function()
7207
function onTouched(part)
7208
	local h = part.Parent:findFirstChild("Humanoid")
7209
	if h~=nil then
7210
		h.Health = h.Health 100
7211
		wait(1)
7212
	end
7213
end
7214
7215
script.Parent.Touched:connect(onTouched)
7216
7217
end))
7218
NumberValue285.Name = "Speed"
7219
NumberValue285.Parent = Part280
7220
NumberValue285.Value = 110
7221
BodyGyro286.Parent = Part280
7222
BodyGyro286.CFrame = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
7223
BodyGyro286.MaxTorque = Vector3.new(9000, 9000, 9000)
7224
BodyGyro286.maxTorque = Vector3.new(9000, 9000, 9000)
7225
BodyGyro286.cframe = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
7226
BodyPosition287.Parent = Part280
7227
BodyPosition287.Position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
7228
BodyPosition287.MaxForce = Vector3.new(6000, 6000, 6000)
7229
BodyPosition287.maxForce = Vector3.new(6000, 6000, 6000)
7230
BodyPosition287.position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
7231
UnionOperation288.Parent = Model279
7232
UnionOperation288.CFrame = CFrame.new(266.812256, 254.405869, -68.2441406, 0.64284879, 0.765993178, 3.61879065e-05, -0.765993118, 0.64284879, -2.29677639e-07, -2.34392846e-05, -2.75720413e-05, 1)
7233
UnionOperation288.Orientation = Vector3.new(0, 0, -50)
7234
UnionOperation288.Position = Vector3.new(266.812256, 254.405869, -68.2441406)
7235
UnionOperation288.Rotation = Vector3.new(0, 0, -50)
7236
UnionOperation288.Color = Color3.new(0.972549, 0.972549, 0.972549)
7237
UnionOperation288.Size = Vector3.new(37.3687897, 5.40004063, 15.8598595)
7238
UnionOperation288.Anchored = true
7239
UnionOperation288.Material = Enum.Material.Marble
7240
UnionOperation288.UsePartColor = true
7241
Script289.Parent = UnionOperation288
7242
table.insert(cors,sandbox(Script289,function()
7243
local debounce = false 
7244
local HealthLoss = 5 -- Damage
7245
function OnTouched(Part) 
7246
if Part.Parent ~= nil then 
7247
if debounce == false and Part.Parent:findFirstChild("Humanoid") ~= nil then 
7248
debounce = true 
7249
Part.Parent:findFirstChild("Humanoid"):TakeDamage(HealthLoss) 
7250
wait(0) 
7251
debounce = false 
7252
end 
7253
end 
7254
end 
7255
script.Parent.Touched:connect(OnTouched)
7256
end))
7257
Script290.Name = "qPerfectionWeld"
7258
Script290.Parent = Model279
7259
table.insert(cors,sandbox(Script290,function()
7260
-- Created by Quenty (@Quenty, follow me on twitter).
7261
-- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
7262
-- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.
7263
7264
--[[ INSTRUCTIONS
7265
- Place in the model
7266
- Make sure model is anchored
7267
- That's it. It will weld the model and all children. 
7268
7269
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
7270
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
7271
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
7272
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
7273
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
7274
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
7275
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
7276
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
7277
7278
This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes. 
7279
]]
7280
7281
--[[ DOCUMENTATION
7282
- Will work in tools. If ran more than once it will not create more than one weld.  This is especially useful for tools that are dropped and then picked up again.
7283
- Will work in PBS servers
7284
- Will work as long as it starts out with the part anchored
7285
- Stores the relative CFrame as a CFrame value
7286
- Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
7287
- Utilizes a recursive algorith to find all parts in the model
7288
- Will reweld on script reparent if the script is initially parented to a tool.
7289
- Welds as fast as possible
7290
]]
7291
7292
-- qPerfectionWeld.lua
7293
-- Created 10/6/2014
7294
-- Author: Quenty
7295
-- Version 1.0.3
7296
7297
-- Updated 10/14/2014 - Updated to 1.0.1
7298
--- Bug fix with existing ROBLOX welds ? Repro by asimo3089
7299
7300
-- Updated 10/14/2014 - Updated to 1.0.2
7301
--- Fixed bug fix. 
7302
7303
-- Updated 10/14/2014 - Updated to 1.0.3
7304
--- Now handles joints semi-acceptably. May be rather hacky with some joints. :/
7305
7306
local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).
7307
7308
7309
local function CallOnChildren(Instance, FunctionToCall)
7310
	-- Calls a function on each of the children of a certain object, using recursion.  
7311
7312
	FunctionToCall(Instance)
7313
7314
	for _, Child in next, Instance:GetChildren() do
7315
		CallOnChildren(Child, FunctionToCall)
7316
	end
7317
end
7318
7319
local function GetNearestParent(Instance, ClassName)
7320
	-- Returns the nearest parent of a certain class, or returns nil
7321
7322
	local Ancestor = Instance
7323
	repeat
7324
		Ancestor = Ancestor.Parent
7325
		if Ancestor == nil then
7326
			return nil
7327
		end
7328
	until Ancestor:IsA(ClassName)
7329
7330
	return Ancestor
7331
end
7332
7333
local function GetBricks(StartInstance)
7334
	local List = {}
7335
7336
	-- if StartInstance:IsA("BasePart") then
7337
	-- 	List[#List+1] = StartInstance
7338
	-- end
7339
7340
	CallOnChildren(StartInstance, function(Item)
7341
		if Item:IsA("BasePart") then
7342
			List[#List+1] = Item;
7343
		end
7344
	end)
7345
7346
	return List
7347
end
7348
7349
local function Modify(Instance, Values)
7350
	-- Modifies an Instance by using a table.  
7351
7352
	assert(type(Values) == "table", "Values is not a table");
7353
7354
	for Index, Value in next, Values do
7355
		if type(Index) == "number" then
7356
			Value.Parent = Instance
7357
		else
7358
			Instance[Index] = Value
7359
		end
7360
	end
7361
	return Instance
7362
end
7363
7364
local function Make(ClassType, Properties)
7365
	-- Using a syntax hack to create a nice way to Make new items.  
7366
7367
	return Modify(Instance.new(ClassType), Properties)
7368
end
7369
7370
local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
7371
local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}
7372
7373
local function HasWheelJoint(Part)
7374
	for _, SurfaceName in pairs(Surfaces) do
7375
		for _, HingSurfaceName in pairs(HingSurfaces) do
7376
			if Part[SurfaceName].Name == HingSurfaceName then
7377
				return true
7378
			end
7379
		end
7380
	end
7381
	
7382
	return false
7383
end
7384
7385
local function ShouldBreakJoints(Part)
7386
	--- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
7387
	--  definitely some edge cases. 
7388
7389
	if NEVER_BREAK_JOINTS then
7390
		return false
7391
	end
7392
	
7393
	if HasWheelJoint(Part) then
7394
		return false
7395
	end
7396
	
7397
	local Connected = Part:GetConnectedParts()
7398
	
7399
	if #Connected == 1 then
7400
		return false
7401
	end
7402
	
7403
	for _, Item in pairs(Connected) do
7404
		if HasWheelJoint(Item) then
7405
			return false
7406
		elseif not Item:IsDescendantOf(script.Parent) then
7407
			return false
7408
		end
7409
	end
7410
	
7411
	return true
7412
end
7413
7414
local function WeldTogether(Part0, Part1, JointType, WeldParent)
7415
	--- Weld's 2 parts together
7416
	-- @param Part0 The first part
7417
	-- @param Part1 The second part (Dependent part most of the time).
7418
	-- @param [JointType] The type of joint. Defaults to weld.
7419
	-- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
7420
	-- @return The weld created.
7421
7422
	JointType = JointType or "Weld"
7423
	local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
7424
	
7425
	local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
7426
	Modify(NewWeld, {
7427
		Name = "qCFrameWeldThingy";
7428
		Part0  = Part0;
7429
		Part1  = Part1;
7430
		C0     = CFrame.new();--Part0.CFrame:inverse();
7431
		C1     = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
7432
		Parent = Part1;
7433
	})
7434
7435
	if not RelativeValue then
7436
		RelativeValue = Make("CFrameValue", {
7437
			Parent     = Part1;
7438
			Name       = "qRelativeCFrameWeldValue";
7439
			Archivable = true;
7440
			Value      = NewWeld.C1;
7441
		})
7442
	end
7443
7444
	return NewWeld
7445
end
7446
7447
local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
7448
	-- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
7449
	-- @param MainPart The part to weld the model to (can be in the model).
7450
	-- @param [JointType] The type of joint. Defaults to weld. 
7451
	-- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
7452
	
7453
	for _, Part in pairs(Parts) do
7454
		if ShouldBreakJoints(Part) then
7455
			Part:BreakJoints()
7456
		end
7457
	end
7458
	
7459
	for _, Part in pairs(Parts) do
7460
		if Part ~= MainPart then
7461
			WeldTogether(MainPart, Part, JointType, MainPart)
7462
		end
7463
	end
7464
7465
	if not DoNotUnanchor then
7466
		for _, Part in pairs(Parts) do
7467
			Part.Anchored = false
7468
		end
7469
		MainPart.Anchored = false
7470
	end
7471
end
7472
7473
local function PerfectionWeld()	
7474
	local Tool = GetNearestParent(script, "Tool")
7475
7476
	local Parts = GetBricks(script.Parent)
7477
	local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]
7478
7479
	if PrimaryPart then
7480
		WeldParts(Parts, PrimaryPart, "Weld", false)
7481
	else
7482
		warn("qWeld - Unable to weld part")
7483
	end
7484
	
7485
	return Tool
7486
end
7487
7488
local Tool = PerfectionWeld()
7489
7490
7491
if Tool and script.ClassName == "Script" then
7492
	--- Don't bother with local scripts
7493
7494
	script.Parent.AncestryChanged:connect(function()
7495
		PerfectionWeld()
7496
	end)
7497
end
7498
7499
-- Created by Quenty (@Quenty, follow me on twitter).
7500
7501
end))
7502
UnionOperation291.Name = "Head"
7503
UnionOperation291.Parent = Model279
7504
UnionOperation291.CFrame = CFrame.new(265.613831, 255.157425, -68.4878311, -0.642508924, 0.766278207, -3.59768746e-05, 0.766278148, 0.642508924, -0.000280174136, -0.000191575848, -0.000207582663, -1)
7505
UnionOperation291.Orientation = Vector3.new(0.0199999996, -180, 50.0200005)
7506
UnionOperation291.Position = Vector3.new(265.613831, 255.157425, -68.4878311)
7507
UnionOperation291.Rotation = Vector3.new(179.979996, 0, -129.979996)
7508
UnionOperation291.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
7509
UnionOperation291.Transparency = 1
7510
UnionOperation291.Size = Vector3.new(5.41925812, 4.78171349, 6.91092873)
7511
UnionOperation291.BrickColor = BrickColor.new("Really black")
7512
UnionOperation291.CanCollide = false
7513
UnionOperation291.Material = Enum.Material.Cobblestone
7514
UnionOperation291.brickColor = BrickColor.new("Really black")
7515
UnionOperation291.UsePartColor = true
7516
BodyPosition292.Parent = UnionOperation291
7517
BodyPosition292.Position = Vector3.new(0, 5, 0)
7518
BodyPosition292.MaxForce = Vector3.new(0, 2.09999995e+10, 0)
7519
BodyPosition292.maxForce = Vector3.new(0, 2.09999995e+10, 0)
7520
BodyPosition292.position = Vector3.new(0, 5, 0)
7521
Model293.Name = "Bone"
7522
Model293.Parent = Model0
7523
Part294.Parent = Model293
7524
Part294.CFrame = CFrame.new(335.534058, 172.369431, 20.9850388, 7.61404863e-06, -0.765985608, 0.64285785, -2.67270821e-07, -0.64285779, -0.765985608, 1, 5.66043445e-06, -5.09947677e-06)
7525
Part294.Orientation = Vector3.new(49.9899979, 90, -180)
7526
Part294.Position = Vector3.new(335.534058, 172.369431, 20.9850388)
7527
Part294.Rotation = Vector3.new(90, 40.0099983, 90)
7528
Part294.Color = Color3.new(0, 1, 0)
7529
Part294.Transparency = 1
7530
Part294.Size = Vector3.new(5.79999971, 2.79999804, 20.6000004)
7531
Part294.BottomSurface = Enum.SurfaceType.SmoothNoOutlines
7532
Part294.BrickColor = BrickColor.new("Lime green")
7533
Part294.CanCollide = false
7534
Part294.FrontSurface = Enum.SurfaceType.SmoothNoOutlines
7535
Part294.Material = Enum.Material.Ice
7536
Part294.brickColor = BrickColor.new("Lime green")
7537
Part294.FormFactor = Enum.FormFactor.Custom
7538
Part294.formFactor = Enum.FormFactor.Custom
7539
Humanoid295.Parent = Part294
7540
Humanoid295.Health = 0
7541
Humanoid295.MaxHealth = 0
7542
Humanoid295.NameOcclusion = Enum.NameOcclusion.NoOcclusion
7543
Humanoid295.WalkSpeed = 10
7544
Humanoid295.maxHealth = 0
7545
Script296.Name = "Vaccine"
7546
Script296.Parent = Part294
7547
table.insert(cors,sandbox(Script296,function()
7548
function spread() -- created by culinwino3000
7549
local stuff = game.Workspace:GetChildren()
7550
for i = 1, #stuff do
7551
if (stuff[i].className ~= "Script") and (stuff[i]:findFirstChild("Vaccine") == nil) and (stuff[i].className ~= "Camera") then
7552
local clone = script:clone()
7553
clone.Parent = stuff[i]
7554
end
7555
end
7556
end
7557
7558
while true do
7559
wait(.1)
7560
spread()
7561
end
7562
7563
function GetAllItems(mdl) 
7564
local objs = {} 
7565
function Search(obj) 
7566
if obj~=workspace then 
7567
table.insert(objs,obj) 
7568
end 
7569
if #obj:GetChildren() > 0 then 
7570
for i, v in ipairs(obj:GetChildren()) do 
7571
Search(v) 
7572
end 
7573
end 
7574
end 
7575
Search(mdl) 
7576
return objs 
7577
end 
7578
7579
7580
7581
for i, v in ipairs(GetAllItems(workspace)) do 
7582
if v.className == "Script" then 
7583
if v.Name == "Chaotic" or v.Name == "Spreadify" or v.Name == "Virus" or v.Name == "Infected" then 
7584
v.Parent = game.Lighting --Just in case it has a removal prevention. 
7585
t = Instance.new("ObjectValue") 
7586
t.Name = "IsAVirus" 
7587
t.Parent = v 
7588
end 
7589
end 
7590
end 
7591
7592
for i, v in ipairs(game.Lighting:GetChildren()) do 
7593
if v:findFirstChild("IsAVirus") then --Only remove the viruses. 
7594
v:remove() 
7595
end 
7596
end 
7597
7598
7599
print("Virus debugged! All clean!")
7600
end))
7601
Script297.Parent = Part294
7602
table.insert(cors,sandbox(Script297,function()
7603
bin = script.Parent
7604
7605
function move(target)
7606
	local dir = (target.Position - bin.Position).unit
7607
	local spawnPos = bin.Position
7608
	local pos = spawnPos + (dir * 1)
7609
	bin:findFirstChild("BodyGyro").cframe = CFrame.new(pos,  pos + dir)
7610
	bin:findFirstChild("BodyGyro").maxTorque = Vector3.new(9000,9000,9000)
7611
end
7612
7613
function moveTo(target)
7614
	bin.BodyPosition.position = target.Position
7615
	bin.BodyPosition.maxForce = Vector3.new(10000,10000,10000) * bin.Speed.Value
7616
end
7617
7618
function findNearestTorso(pos)
7619
	local list = game.Workspace:GetChildren()
7620
	local torso = nil
7621
	local dist = 10000000000000000
7622
	local temp = nil
7623
	local human = nil
7624
	local temp2 = nil
7625
	for x = 1, #list do
7626
		temp2 = list[x]
7627
		if (temp2.className == "Model") and (temp2 ~= script.Parent) then
7628
			temp = temp2:findFirstChild("Torso")
7629
			human = temp2:findFirstChild("Humanoid")
7630
			if (temp ~= nil) and (human ~= nil) and (human.Health > 0)  then
7631
				if (temp.Position - pos).magnitude < dist then
7632
					torso = temp
7633
					dist = (temp.Position - pos).magnitude
7634
				end
7635
			end
7636
		end
7637
	end
7638
	return torso
7639
end
7640
7641
function shoot(pos)
7642
	dir = (pos - bin.CFrame.p).unit 
7643
	for i = 1, 50 do 
7644
		local ex = Instance.new("Explosion") 
7645
		ex.BlastRadius = 1
7646
		ex.Position = bin.Position + (dir * 10 * i) + (dir * 7) 
7647
		ex.Parent = game.Workspace 
7648
	end
7649
end
7650
7651
function shootAt(torso)
7652
	local dir = (torso.Position - bin.Position).unit
7653
	local spawnPos = bin.Position
7654
	local pos = spawnPos + (dir * 1)
7655
	shoot(pos)
7656
end
7657
7658
while true do
7659
	local torso = findNearestTorso(bin.Position)
7660
	if torso~=nil then
7661
		move(torso)
7662
		moveTo(torso)
7663
	end
7664
	wait()
7665
end
7666
7667
end))
7668
Script298.Parent = Part294
7669
table.insert(cors,sandbox(Script298,function()
7670
function onTouched(part)
7671
	local h = part.Parent:findFirstChild("Humanoid")
7672
	if h~=nil then
7673
		h.Health = h.Health 100
7674
		wait(1)
7675
	end
7676
end
7677
7678
script.Parent.Touched:connect(onTouched)
7679
7680
end))
7681
NumberValue299.Name = "Speed"
7682
NumberValue299.Parent = Part294
7683
NumberValue299.Value = 80
7684
BodyGyro300.Parent = Part294
7685
BodyGyro300.CFrame = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
7686
BodyGyro300.MaxTorque = Vector3.new(9000, 9000, 9000)
7687
BodyGyro300.maxTorque = Vector3.new(9000, 9000, 9000)
7688
BodyGyro300.cframe = CFrame.new(45.0327187, 0.927936018, -9.25215626, 0.252255172, 0.0270326007, 0.96728307, -0, 0.999609649, -0.027936032, -0.967660725, 0.00704700872, 0.252156705)
7689
BodyPosition301.Parent = Part294
7690
BodyPosition301.Position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
7691
BodyPosition301.MaxForce = Vector3.new(6000, 6000, 6000)
7692
BodyPosition301.maxForce = Vector3.new(6000, 6000, 6000)
7693
BodyPosition301.position = Vector3.new(-37.0716858, 3.2991848, -30.6555519)
7694
UnionOperation302.Parent = Model293
7695
UnionOperation302.CFrame = CFrame.new(266.815979, 254.405838, 21.9565964, 0.64284879, 0.765993178, 3.61879065e-05, -0.765993118, 0.64284879, -2.29677639e-07, -2.34392846e-05, -2.75720413e-05, 1)
7696
UnionOperation302.Orientation = Vector3.new(0, 0, -50)
7697
UnionOperation302.Position = Vector3.new(266.815979, 254.405838, 21.9565964)
7698
UnionOperation302.Rotation = Vector3.new(0, 0, -50)
7699
UnionOperation302.Color = Color3.new(0.972549, 0.972549, 0.972549)
7700
UnionOperation302.Size = Vector3.new(37.3687897, 5.40004063, 15.8598595)
7701
UnionOperation302.Anchored = true
7702
UnionOperation302.Material = Enum.Material.Marble
7703
UnionOperation302.UsePartColor = true
7704
Script303.Parent = UnionOperation302
7705
table.insert(cors,sandbox(Script303,function()
7706
local debounce = false 
7707
local HealthLoss = 5 -- Damage
7708
function OnTouched(Part) 
7709
if Part.Parent ~= nil then 
7710
if debounce == false and Part.Parent:findFirstChild("Humanoid") ~= nil then 
7711
debounce = true 
7712
Part.Parent:findFirstChild("Humanoid"):TakeDamage(HealthLoss) 
7713
wait(0) 
7714
debounce = false 
7715
end 
7716
end 
7717
end 
7718
script.Parent.Touched:connect(OnTouched)
7719
end))
7720
Script304.Name = "qPerfectionWeld"
7721
Script304.Parent = Model293
7722
table.insert(cors,sandbox(Script304,function()
7723
-- Created by Quenty (@Quenty, follow me on twitter).
7724
-- Should work with only ONE copy, seamlessly with weapons, trains, et cetera.
7725
-- Parts should be ANCHORED before use. It will, however, store relatives values and so when tools are reparented, it'll fix them.
7726
7727
--[[ INSTRUCTIONS
7728
- Place in the model
7729
- Make sure model is anchored
7730
- That's it. It will weld the model and all children. 
7731
7732
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
7733
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
7734
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
7735
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
7736
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
7737
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
7738
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
7739
THIS SCRIPT SHOULD BE USED ONLY BY ITSELF. THE MODEL SHOULD BE ANCHORED. 
7740
7741
This script is designed to be used is a regular script. In a local script it will weld, but it will not attempt to handle ancestory changes. 
7742
]]
7743
7744
--[[ DOCUMENTATION
7745
- Will work in tools. If ran more than once it will not create more than one weld.  This is especially useful for tools that are dropped and then picked up again.
7746
- Will work in PBS servers
7747
- Will work as long as it starts out with the part anchored
7748
- Stores the relative CFrame as a CFrame value
7749
- Takes careful measure to reduce lag by not having a joint set off or affected by the parts offset from origin
7750
- Utilizes a recursive algorith to find all parts in the model
7751
- Will reweld on script reparent if the script is initially parented to a tool.
7752
- Welds as fast as possible
7753
]]
7754
7755
-- qPerfectionWeld.lua
7756
-- Created 10/6/2014
7757
-- Author: Quenty
7758
-- Version 1.0.3
7759
7760
-- Updated 10/14/2014 - Updated to 1.0.1
7761
--- Bug fix with existing ROBLOX welds ? Repro by asimo3089
7762
7763
-- Updated 10/14/2014 - Updated to 1.0.2
7764
--- Fixed bug fix. 
7765
7766
-- Updated 10/14/2014 - Updated to 1.0.3
7767
--- Now handles joints semi-acceptably. May be rather hacky with some joints. :/
7768
7769
local NEVER_BREAK_JOINTS = false -- If you set this to true it will never break joints (this can create some welding issues, but can save stuff like hinges).
7770
7771
7772
local function CallOnChildren(Instance, FunctionToCall)
7773
	-- Calls a function on each of the children of a certain object, using recursion.  
7774
7775
	FunctionToCall(Instance)
7776
7777
	for _, Child in next, Instance:GetChildren() do
7778
		CallOnChildren(Child, FunctionToCall)
7779
	end
7780
end
7781
7782
local function GetNearestParent(Instance, ClassName)
7783
	-- Returns the nearest parent of a certain class, or returns nil
7784
7785
	local Ancestor = Instance
7786
	repeat
7787
		Ancestor = Ancestor.Parent
7788
		if Ancestor == nil then
7789
			return nil
7790
		end
7791
	until Ancestor:IsA(ClassName)
7792
7793
	return Ancestor
7794
end
7795
7796
local function GetBricks(StartInstance)
7797
	local List = {}
7798
7799
	-- if StartInstance:IsA("BasePart") then
7800
	-- 	List[#List+1] = StartInstance
7801
	-- end
7802
7803
	CallOnChildren(StartInstance, function(Item)
7804
		if Item:IsA("BasePart") then
7805
			List[#List+1] = Item;
7806
		end
7807
	end)
7808
7809
	return List
7810
end
7811
7812
local function Modify(Instance, Values)
7813
	-- Modifies an Instance by using a table.  
7814
7815
	assert(type(Values) == "table", "Values is not a table");
7816
7817
	for Index, Value in next, Values do
7818
		if type(Index) == "number" then
7819
			Value.Parent = Instance
7820
		else
7821
			Instance[Index] = Value
7822
		end
7823
	end
7824
	return Instance
7825
end
7826
7827
local function Make(ClassType, Properties)
7828
	-- Using a syntax hack to create a nice way to Make new items.  
7829
7830
	return Modify(Instance.new(ClassType), Properties)
7831
end
7832
7833
local Surfaces = {"TopSurface", "BottomSurface", "LeftSurface", "RightSurface", "FrontSurface", "BackSurface"}
7834
local HingSurfaces = {"Hinge", "Motor", "SteppingMotor"}
7835
7836
local function HasWheelJoint(Part)
7837
	for _, SurfaceName in pairs(Surfaces) do
7838
		for _, HingSurfaceName in pairs(HingSurfaces) do
7839
			if Part[SurfaceName].Name == HingSurfaceName then
7840
				return true
7841
			end
7842
		end
7843
	end
7844
	
7845
	return false
7846
end
7847
7848
local function ShouldBreakJoints(Part)
7849
	--- We do not want to break joints of wheels/hinges. This takes the utmost care to not do this. There are
7850
	--  definitely some edge cases. 
7851
7852
	if NEVER_BREAK_JOINTS then
7853
		return false
7854
	end
7855
	
7856
	if HasWheelJoint(Part) then
7857
		return false
7858
	end
7859
	
7860
	local Connected = Part:GetConnectedParts()
7861
	
7862
	if #Connected == 1 then
7863
		return false
7864
	end
7865
	
7866
	for _, Item in pairs(Connected) do
7867
		if HasWheelJoint(Item) then
7868
			return false
7869
		elseif not Item:IsDescendantOf(script.Parent) then
7870
			return false
7871
		end
7872
	end
7873
	
7874
	return true
7875
end
7876
7877
local function WeldTogether(Part0, Part1, JointType, WeldParent)
7878
	--- Weld's 2 parts together
7879
	-- @param Part0 The first part
7880
	-- @param Part1 The second part (Dependent part most of the time).
7881
	-- @param [JointType] The type of joint. Defaults to weld.
7882
	-- @param [WeldParent] Parent of the weld, Defaults to Part0 (so GC is better).
7883
	-- @return The weld created.
7884
7885
	JointType = JointType or "Weld"
7886
	local RelativeValue = Part1:FindFirstChild("qRelativeCFrameWeldValue")
7887
	
7888
	local NewWeld = Part1:FindFirstChild("qCFrameWeldThingy") or Instance.new(JointType)
7889
	Modify(NewWeld, {
7890
		Name = "qCFrameWeldThingy";
7891
		Part0  = Part0;
7892
		Part1  = Part1;
7893
		C0     = CFrame.new();--Part0.CFrame:inverse();
7894
		C1     = RelativeValue and RelativeValue.Value or Part1.CFrame:toObjectSpace(Part0.CFrame); --Part1.CFrame:inverse() * Part0.CFrame;-- Part1.CFrame:inverse();
7895
		Parent = Part1;
7896
	})
7897
7898
	if not RelativeValue then
7899
		RelativeValue = Make("CFrameValue", {
7900
			Parent     = Part1;
7901
			Name       = "qRelativeCFrameWeldValue";
7902
			Archivable = true;
7903
			Value      = NewWeld.C1;
7904
		})
7905
	end
7906
7907
	return NewWeld
7908
end
7909
7910
local function WeldParts(Parts, MainPart, JointType, DoNotUnanchor)
7911
	-- @param Parts The Parts to weld. Should be anchored to prevent really horrible results.
7912
	-- @param MainPart The part to weld the model to (can be in the model).
7913
	-- @param [JointType] The type of joint. Defaults to weld. 
7914
	-- @parm DoNotUnanchor Boolean, if true, will not unachor the model after cmopletion.
7915
	
7916
	for _, Part in pairs(Parts) do
7917
		if ShouldBreakJoints(Part) then
7918
			Part:BreakJoints()
7919
		end
7920
	end
7921
	
7922
	for _, Part in pairs(Parts) do
7923
		if Part ~= MainPart then
7924
			WeldTogether(MainPart, Part, JointType, MainPart)
7925
		end
7926
	end
7927
7928
	if not DoNotUnanchor then
7929
		for _, Part in pairs(Parts) do
7930
			Part.Anchored = false
7931
		end
7932
		MainPart.Anchored = false
7933
	end
7934
end
7935
7936
local function PerfectionWeld()	
7937
	local Tool = GetNearestParent(script, "Tool")
7938
7939
	local Parts = GetBricks(script.Parent)
7940
	local PrimaryPart = Tool and Tool:FindFirstChild("Handle") and Tool.Handle:IsA("BasePart") and Tool.Handle or script.Parent:IsA("Model") and script.Parent.PrimaryPart or Parts[1]
7941
7942
	if PrimaryPart then
7943
		WeldParts(Parts, PrimaryPart, "Weld", false)
7944
	else
7945
		warn("qWeld - Unable to weld part")
7946
	end
7947
	
7948
	return Tool
7949
end
7950
7951
local Tool = PerfectionWeld()
7952
7953
7954
if Tool and script.ClassName == "Script" then
7955
	--- Don't bother with local scripts
7956
7957
	script.Parent.AncestryChanged:connect(function()
7958
		PerfectionWeld()
7959
	end)
7960
end
7961
7962
-- Created by Quenty (@Quenty, follow me on twitter).
7963
7964
end))
7965
UnionOperation305.Name = "Head"
7966
UnionOperation305.Parent = Model293
7967
UnionOperation305.CFrame = CFrame.new(265.617554, 255.157379, 21.7128983, -0.642508924, 0.766278207, -3.59768746e-05, 0.766278148, 0.642508924, -0.000280174136, -0.000191575848, -0.000207582663, -1)
7968
UnionOperation305.Orientation = Vector3.new(0.0199999996, -180, 50.0200005)
7969
UnionOperation305.Position = Vector3.new(265.617554, 255.157379, 21.7128983)
7970
UnionOperation305.Rotation = Vector3.new(179.979996, 0, -129.979996)
7971
UnionOperation305.Color = Color3.new(0.0666667, 0.0666667, 0.0666667)
7972
UnionOperation305.Transparency = 1
7973
UnionOperation305.Size = Vector3.new(5.41925812, 4.78171349, 6.91092873)
7974
UnionOperation305.BrickColor = BrickColor.new("Really black")
7975
UnionOperation305.CanCollide = false
7976
UnionOperation305.Material = Enum.Material.Cobblestone
7977
UnionOperation305.brickColor = BrickColor.new("Really black")
7978
UnionOperation305.UsePartColor = true
7979
BodyPosition306.Parent = UnionOperation305
7980
BodyPosition306.Position = Vector3.new(0, 5, 0)
7981
BodyPosition306.MaxForce = Vector3.new(0, 2.09999995e+10, 0)
7982
BodyPosition306.maxForce = Vector3.new(0, 2.09999995e+10, 0)
7983
BodyPosition306.position = Vector3.new(0, 5, 0)
7984
for i,v in pairs(mas:GetChildren()) do
7985
	v.Parent = workspace
7986
	pcall(function() v:MakeJoints() end)
7987
end
7988
mas:Destroy()
7989
for i,v in pairs(cors) do
7990
	spawn(function()
7991
		pcall(v)
7992
	end)
7993
end