Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- coroutine.wrap(function()
- local tool=Instance.new('Tool')
- local handle=Instance.new('Part',tool)
- local mesh=Instance.new('SpecialMesh',handle)
- mesh.TextureId='http://www.roblox.com/asset/?id=11954766'
- mesh.MeshId='http://www.roblox.com/asset/?id=11954776'
- mesh.Scale=Vector3.one*.7
- handle.Size=Vector3.new(2,2,2)
- handle.Color=Color3.fromRGB(255,0,191)
- handle.Name='Handle'
- tool.Grip=CFrame.new(-.5,0,0)*CFrame.Angles(0,math.rad(-90),0)
- tool.Name='SubspaceTripmine'
- tool.TextureId='http://www.roblox.com/asset/?id=11987521'
- local script=Instance.new('Script',tool)
- script.Name='PlantBomb'
- local function SubspaceMine(script)
- local Mine = script.Parent
- local DunDun = Instance.new("Sound")
- DunDun.SoundId = "http://www.roblox.com/asset/?id=11984254"
- DunDun.Parent = Mine
- local SubspaceExplosion = Instance.new("Sound")
- SubspaceExplosion.SoundId = "http://www.roblox.com/asset/?id=11984351"
- SubspaceExplosion.Parent = Mine
- local Calibrate = Instance.new("Sound")
- Calibrate.SoundId = "http://www.roblox.com/asset/?id=11956590"
- Calibrate.Looped = true
- Calibrate.Parent = Mine
- Calibrate:Play()
- local calibration_time = 2 -- needs to be still/untouched for this long before calibrating
- local cur_time = 0
- local max_life = 120 -- these things last for 2 minutes on their own, once activated
- local calibrated = false
- local connection = nil
- local function activateMine()
- for i=0,1,-.1 do
- Mine.Transparency = i
- wait(.05)
- end
- calibrated = true
- Calibrate:Stop()
- end
- local function pulse()
- DunDun:Play()
- for i=.9,.5,-.1 do
- Mine.Transparency = i
- wait(.05)
- end
- for i=.5,1,.1 do
- Mine.Transparency = i
- wait(.05)
- end
- end
- local function onPlayerBlownUp(part, distance, creator)
- if (part:getMass() < 300) then
- part.BrickColor = BrickColor.new(1032)
- local s = Instance.new("Sparkles")
- s.Parent = part
- game.Debris:AddItem(s, 5)
- end
- if creator ~= nil and part.Name == "Head" then
- local humanoid = part.Parent.Humanoid
- tagHumanoid(humanoid, creator)
- end
- end
- local function explode()
- connection:disconnect()
- for i=1,0,-.2 do
- Mine.Transparency = i
- wait(.05)
- end
- SubspaceExplosion:Play()
- local e = Instance.new("Explosion")
- e.BlastRadius = 16
- e.BlastPressure = 1000000
- e.Position = Mine.Position
- e.Parent = Mine
- local creator = script.Parent:findFirstChild("creator")
- e.Hit:connect(function(part, distance) onPlayerBlownUp(part, distance, creator) end)
- for i=0,1,.2 do
- Mine.Transparency = i
- task.wait(.05)
- end
- task.wait(4)
- Mine:Remove()
- end
- local function update()
- if (calibrated == false) then
- if (Mine.Velocity.magnitude > .1) then
- cur_time = 0
- end
- if (cur_time > calibration_time) then
- activateMine()
- end
- else
- -- calibrated mine
- if (math.random(1,20) == 2) then
- pulse()
- end
- if (cur_time > max_life) then pulse() Mine:Remove() end
- end
- end
- local function OnTouch(part)
- if (calibrated == false) then
- cur_time = 0
- else
- explode()
- end
- end
- local function tagHumanoid(humanoid, creator)
- -- tag does not need to expire iff all explosions lethal
- if creator ~= nil then
- local new_tag = creator:clone()
- new_tag.Parent = humanoid
- end
- end
- local function untagHumanoid(humanoid)
- if humanoid ~= nil then
- local tag = humanoid:findFirstChild("creator")
- if tag ~= nil then
- tag.Parent = nil
- end
- end
- end
- connection = Mine.Touched:connect(OnTouch)
- while true do
- update()
- local e,g = wait(.5)
- cur_time = cur_time + e
- end
- end
- Tool = script.Parent
- function plant(pos)
- local vCharacter = Tool.Parent
- local vPlayer = game.Players:playerFromCharacter(vCharacter)
- local spawnPos = vCharacter.PrimaryPart.Position
- local bomb = Tool.Handle:Clone()
- bomb.CanCollide = true
- bomb.Transparency = 0
- bomb.Position = pos
- bomb.Size = Vector3.new(2,2,2)
- bomb.Name = "SubspaceTripmine"
- bomb.Locked = true
- local creator_tag = Instance.new("ObjectValue")
- creator_tag.Value = vPlayer
- creator_tag.Name = "creator"
- creator_tag.Parent = bomb
- bomb.Parent = game.Workspace
- local new_script = Instance.new('Script',bomb)
- new_script.Disabled = false
- new_script.Parent = bomb
- task.spawn(SubspaceMine,new_script)
- end
- Tool.Enabled = true
- function onActivated()
- if not Tool.Enabled then
- return
- end
- Tool.Enabled = false
- local character = Tool.Parent;
- local humanoid = character.Humanoid
- if humanoid == nil then
- print("Humanoid not found")
- return
- end
- local targetPos = humanoid.TargetPoint
- Tool.Handle.Transparency = 1
- plant(Tool.Handle.Position)
- Tool.Handle.Transparency = 0
- Tool.Enabled = true
- end
- tool.Parent=owner:WaitForChild("Backpack")
- script.Parent.Activated:connect(onActivated)
- end)()
Advertisement
Add Comment
Please, Sign In to add comment