Super-Nostalgia-Zone/Tools/Plane/Rocket/RocketScript/init.server.lua

96 lines
1.8 KiB
Lua

r = game:service("RunService")
shaft = script.Parent
position = shaft.Position
function fly()
direction = shaft.CFrame.lookVector
position = position + 35*direction
error = position - shaft.Position
shaft.Velocity = 5*error
end
function blow()
swoosh:stop()
explosion = Instance.new("Explosion")
explosion.Position = shaft.Position
explosion.BlastRadius = 10
-- find instigator tag
local creator = script.Parent:findFirstChild("creator")
if creator ~= nil then
explosion.Hit:connect(function(part, distance) onPlayerBlownUp(part, distance, creator) end)
end
explosion.Parent = game.Workspace
connection:disconnect()
wait(.1)
shaft:remove()
end
function onTouch(hit)
if hit.Name == "Building" or
hit.Name == "Safe" then
swoosh:stop()
shaft:remove()
return end
local parent = hit.Parent.Parent
local owner = shaft.Owner
if owner ~= nil then
if parent ~= nil and owner.Value ~= nil then
if parent ~= owner.Value then
local stunt = parent:FindFirstChild("Stunt")
if stunt ~= nil then
if stunt.Value ~= 1 then
blow()
end
else
blow()
end
end
end
end
end
function onPlayerBlownUp(part, distance, creator)
if part.Name == "Head" then
local humanoid = part.Parent:findFirstChild("Humanoid")
tagHumanoid(humanoid, creator)
end
end
function tagHumanoid(humanoid, creator)
if creator ~= nil then
local new_tag = creator:clone()
new_tag.Parent = humanoid
end
end
function untagHumanoid(humanoid)
if humanoid ~= nil then
local tag = humanoid:findFirstChild("creator")
if tag ~= nil then
tag.Parent = nil
end
end
end
t, s = r.Stepped:wait()
swoosh = script.Parent.Swoosh
swoosh:play()
d = t + 4.0 - s
connection = shaft.Touched:connect(onTouch)
while t < d do
fly()
t = r.Stepped:wait()
end
-- at max range
script.Parent.Explosion.PlayOnRemove = false
swoosh:stop()
shaft:remove()