Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Tool = Instance.new("Tool")
- Tool.Name = 'Subspace Tripmine'
- Tool.CanBeDropped = true
- Tool.RequiresHandle = true
- Part0 = Instance.new("Part")
- SpecialMesh1 = Instance.new("SpecialMesh")
- Part0.Name = "Handle"
- Part0.Parent = Tool
- Part0.CFrame = CFrame.new(7, 1.39097822, 3, 1, -5.50079088e-19, 5.6767685e-24, 5.50079088e-19, 1, -5.50079088e-19, -5.6767685e-24, 5.50079088e-19, 1)
- Part0.Position = Vector3.new(7, 1.390978217124939, 3)
- Part0.Color = Color3.new(1, 0, 0.74902)
- Part0.Velocity = Vector3.new(-2.0073717184513294e-18, -0.009398775175213814, 2.100645224708268e-18)
- Part0.Size = Vector3.new(2, 2, 2)
- Part0.BottomSurface = Enum.SurfaceType.Smooth
- Part0.BrickColor = BrickColor.new("Hot pink")
- Part0.RotVelocity = Vector3.new(2.05534653961818e-18, 8.374077637867082e-21, 2.05534653961818e-18)
- Part0.TopSurface = Enum.SurfaceType.Smooth
- Part0.brickColor = BrickColor.new("Hot pink")
- SpecialMesh1.Parent = Part0
- SpecialMesh1.MeshId = "http://www.roblox.com/asset/?id=11954776"
- SpecialMesh1.Scale = Vector3.new(0.699999988079071, 0.699999988079071, 0.699999988079071)
- SpecialMesh1.TextureId = "http://www.roblox.com/asset/?id=11954766"
- SpecialMesh1.MeshType = Enum.MeshType.FileMesh
- wait = task.wait
- function runmine(Mine)
- 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 looping = true
- 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 tagHumanoid(humanoid, creator)
- 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
- local function onPlayerBlownUp(part, distance, creator)
- if part:IsA("BasePart") and not part:IsA("SpawnLocation") and (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 = Mine:FindFirstChild("creator")
- e.Hit:connect(function(part, distance) onPlayerBlownUp(part, distance, creator) end)
- for i=0,1,.2 do
- Mine.Transparency = i
- wait(.05)
- end
- 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
- connection = Mine.Touched:connect(OnTouch)
- while Mine and Mine.Parent do
- update()
- local e,g = wait(.5)
- cur_time = cur_time + e
- end
- end
- 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
- coroutine.wrap(function()
- runmine(bomb)
- end)()
- 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)
- --wait(3)
- Tool.Handle.Transparency = 0
- Tool.Enabled = true
- end
- Tool.Activated:Connect(onActivated)
- Tool.Parent = owner:FindFirstChildOfClass("Backpack")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement