Needs fixing at line 50
----------------- --| Constants |-- ----------------- local BLAST_RADIUS = 12 local BLAST_PRESSURE = 0 local RED_TEXTURE_ID = 'http://www.roblox.com/asset/?id=94691735' -------------------- --| WaitForChild |-- -------------------- -- Waits for parent.child to exist, then returns it local function WaitForChild(parent, childName) assert(parent, "ERROR: WaitForChild: parent is nil") while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end return parent[childName] end ----------------- --| Variables |-- ----------------- local DebrisService = Game:GetService('Debris') local ContentProviderService = Game:GetService('ContentProvider') local TimeBomb = script.Parent local BombMesh = WaitForChild(TimeBomb, 'Mesh') local BoomSound = WaitForChild(TimeBomb, 'Boom') local BeepSound = WaitForChild(TimeBomb, 'Beep') local CreatorTag = WaitForChild(TimeBomb, 'creator') local OriginalTextureId = BombMesh.TextureId local Connection = nil local ParentTorso = WaitForChild(TimeBomb, 'ParentTorso') local XGraceDistance=2.5 local YGraceDistance=2.5 ----------------- --| Functions |-- ----------------- -- Returns the ancestor that contains a Humanoid, if it exists local function FindCharacterAncestor(subject) if subject and subject ~= Workspace then local humanoid = subject:FindFirstChild('Humanoid') if humanoid then return subject, humanoid else return FindCharacterAncestor(subject.Parent) end end return nil end -- When a player is hit, if they are alive they will be tagged local function OnExplosionHit(hitPart) if hitPart then local _, humanoid = FindCharacterAncestor(hitPart.Parent) if humanoid and humanoid.Health > 0 then humanoid:TakeDamage(50) end end end -- Needless to say, this should only be called once local function Explode() local explosion = Instance.new('Explosion') explosion.BlastRadius = BLAST_RADIUS explosion.BlastPressure = BLAST_PRESSURE explosion.Position = TimeBomb.Position explosion.Hit:connect(OnExplosionHit) explosion.Parent = Workspace BoomSound:Play() -- NOTE: -- If we just destroyed the bomb at this point, the boom sound would be destroyed too, -- so instead we will hide the bomb, keep it in the same spot, and schedule it for deletion TimeBomb.Transparency = 1 TimeBomb.CanCollide = false TimeBomb.Anchored = true DebrisService:AddItem(TimeBomb, 3) end -------------------- --| Script Logic |-- -------------------- --Distance check to see if can collide should be true Spawn(function() while not TimeBomb.CanCollide and ParentTorso.Value do local TorsoPosition = ParentTorso.Value.CFrame.p local XZOffset = TorsoPosition-Vector3.new(TimeBomb.CFrame.p.x,TorsoPosition.y,TimeBomb.CFrame.p.z) if XZOffset.magnitude>XGraceDistance or math.abs(TorsoPosition.y-TimeBomb.CFrame.p.y)>YGraceDistance then TimeBomb.CanCollide=true end wait(1/30) end end) -- Flash red and beep increasingly fast for about 3 seconds local tickTime = 0.4 local red = true repeat BombMesh.TextureId = red and RED_TEXTURE_ID or OriginalTextureId BeepSound:Play() wait(tickTime) red = not red tickTime = tickTime * 0.9 until tickTime < 0.1 Explode()