local Q=Instance.new("\080\097\114\116")Q.Locked=true Q.BackSurface=3 Q.BottomSurface=3 Q.FrontSurface=3 Q.LeftSurface=3 Q.RightSurface=3 Q.TopSurface=3 Q.Size=Vector3.new(1,1,4)Q.BrickColor=BrickColor.new(21);(script.Parent.RocketScript:clone()).Parent=Q;(script.Parent.Explosion:clone()).Parent=Q;(script.Parent.Swoosh:clone()).Parent=Q function fire(A)local P=A-sphere.Position P=computeDirection(P)local V=Q:clone()local x=sphere.Position local h=x+P*8 V.CFrame=CFrame.new(h,h+P)V.RocketScript.Disabled=false V.Parent=game.Workspace end function computeDirection(Q)local A=Q.magnitude*Q.magnitude local P=1/math.sqrt(A)return Vector3.new(Q.x*P,Q.y*P,Q.z*P)end function scanForHumans()local Q={}local A=game.Players:children()if#A<1 then return end local P=math.random(1,#A)myTarget=A[P].Character end function moveKillbot()local Q=math.random(-100,100)local A=math.random(-40,40)local P=math.random(-100,100)if sphere.Position.y<10 and A<0 then A=-A end if sphere.Position.y>80 and A>0 then A=-A end if myTarget~=nil then local A=computeDirection(myTarget.PrimaryPart.Position-sphere.Position)Q=Q+A.x*80 P=P+A.z*80 end local V=computeDirection(Vector3.new(Q,A,P))sphere.BodyPosition.position=sphere.Position+V*40 end function onTouched(Q)local A=Q.Parent:findFirstChild("\072\117\109\097\110\111\105\100")if A~=nil then A.Health=A.Health-2000 end end sphere.Touched:connect(onTouched)while true do scanForHumans()for Q=1,5,1 do if myTarget~=nil then if math.random(1,3)==2 then fire(myTarget.PrimaryPart.Position)end wait(math.random(1,2))moveKillbot()wait(math.random(1,2))end end wait(1)end
-- this code hijacked from the new rocket launcher
local Rocket = Instance.new("Part")
Rocket.Locked = true
Rocket.BackSurface = 3
Rocket.BottomSurface = 3
Rocket.FrontSurface = 3
Rocket.LeftSurface = 3
Rocket.RightSurface = 3
Rocket.TopSurface = 3
Rocket.Size = Vector3.new(1, 1, 4)
Rocket.BrickColor = BrickColor.new(21)
script.Parent.RocketScript:clone().Parent = Rocket
script.Parent.Explosion:clone().Parent = Rocket
script.Parent.Swoosh:clone().Parent = Rocket

function fire(target)
	local dir = target - sphere.Position
	dir = computeDirection(dir)

	local missile = Rocket:clone()

	local spawnPos = sphere.Position

	local pos = spawnPos + (dir * 8)

	--missile.Position = pos
	missile.CFrame = CFrame.new(pos, pos + dir)

	missile.RocketScript.Disabled = false
	missile.Parent = game.Workspace
end

function computeDirection(vec)
	local lenSquared = vec.magnitude * vec.magnitude
	local invSqrt = 1 / math.sqrt(lenSquared)
	return Vector3.new(vec.x * invSqrt, vec.y * invSqrt, vec.z * invSqrt)
end

function scanForHumans()
	-- KILL THE HUMANS!!!!!!!!!!

	-- for now, pick a random one. In the future, pick the closest. Or use hit test to pick a visible one.
	local humansFound = {}

	local players = game.Players:children()

	if #players < 1 then
		return
	end

	local i = math.random(1, #players)

	myTarget = players[i].Character
end

function moveKillbot()
	-- killbots move using a biased random walk toward the target
	-- they also like to float at least 10 studs above the ground

	local dx = math.random(-100, 100)
	local dy = math.random(-40, 40)
	local dz = math.random(-100, 100)

	if sphere.Position.y < 10 and dy < 0 then
		dy = -dy
	end
	if sphere.Position.y > 80 and dy > 0 then
		dy = -dy
	end

	if myTarget ~= nil then
		local dir = computeDirection(myTarget.PrimaryPart.Position - sphere.Position)
		dx = dx + (dir.x * 80) -- change this number to alter player trophism
		dz = dz + (dir.z * 80)
	end

	local vec = computeDirection(Vector3.new(dx, dy, dz))

	sphere.BodyPosition.position = sphere.Position + (vec * 40) -- change this number to alter speed
end

function onTouched(hit)
	local humanoid = hit.Parent:findFirstChild("Humanoid")
	if humanoid ~= nil then
		humanoid.Health = humanoid.Health - 2000 -- Killbots kill you when you touch them! duh.
	end
end

sphere.Touched:connect(onTouched)

while true do -- loop forever
	scanForHumans()

	for n = 1, 5 do
		if myTarget ~= nil then
			if math.random(1, 3) == 2 then
				fire(myTarget.PrimaryPart.Position)
			end
			wait(math.random(1, 2))
			moveKillbot()
			wait(math.random(1, 2))
		end
	end
	wait(1) -- don't hog CPU
end
