freeslot("MT_GLASSGIB")
freeslot("S_BITS")
freeslot("SPR_BITS")

local glass_soundlist = GLASSSONIC.glass_soundlist

local function gibblet_spawn(mobj)
	mobj.fuse = 5*TICRATE -- despawn after 5 seconds
	mobj.randomize = P_RandomRange(1, 15)
	mobj.gibtime = 4*TICRATE
	P_Thrust(mobj, FixedAngle(P_RandomRange(0,359)*FRACUNIT), P_RandomRange(-13, 13)*FRACUNIT)
	mobj.momz = P_RandomRange(6, 17)*FRACUNIT
end

addHook("MobjSpawn", gibblet_spawn, MT_GLASSGIB)

local function gibblet_actions(mobj)
	if mobj.momz != 0 then
		mobj.makesound = true
	end
	
	if P_IsObjectOnGround(mobj) == true
		if mobj.randomize == 5 then
			S_StartSound(mobj, glass_soundlist[P_RandomRange(0, 1)]) //playing sound
			P_KillMobj(mobj)
		elseif mobj.randomize != 5 then
			if mobj.makesound == true then
				mobj.makesound = 0
				S_StartSound(mobj, glass_soundlist[P_RandomRange(2, 5)]) //playing sound
			end
		end
	end
	
	//dissapearing
	if mobj.valid then
		if mobj.gibtime then
			mobj.gibtime = $ - 1
		end
		
		if mobj.target and mobj.target.player and mobj.target.player.valid then
			local player = mobj.target.player
			
			if mobj.gibtime == 0 or player.gibclean == true then
				P_RemoveMobj(mobj)
			end
		end
	end
end

addHook("MobjThinker", gibblet_actions, MT_GLASSGIB)