local competitionboxes = CV_FindVar("competitionboxes")
local matchboxes = CV_FindVar("matchboxes")
addHook("MobjThinker", function(mo)
	P_RemoveMobj(mo)
end, MT_EMBLEM)

addHook("MapLoad", function()
	for ma in mapthings.iterate do
		if (ma and ma.valid) and ma.type == 322 and not (maptol & TOL_NIGHTS or maptol & TOL_XMAS)
			local oneup = P_SpawnMobj(ma.x*FRACUNIT,ma.y*FRACUNIT,0,MT_1UP_BOX)
			oneup.flags = $|MF_NOGRAVITY|MF_NOCLIPHEIGHT
			oneup.z = oneup.floorz+(ma.z*FRACUNIT)
			oneup.spawnedfromemblem = true
		end
	end
end)

addHook("MapLoad", function()
	for mo in mobjs.iterate() do
		if ((competitionboxes.value == 1 and (gametype == GT_COMPETITION or gametype == GT_RACE)) or (matchboxes.value == 1 and (gametype == GT_MATCH or gametype == GT_CTF or gametype == GT_TAG or gametype == GT_HIDEANDSEEK))) and mo.spawnedfromemblem == true
			local box = P_SpawnMobjFromMobj(mo,_,_,_,MT_MYSTERY_BOX)
			box.flags = $|MF_NOGRAVITY|MF_NOCLIPHEIGHT
			mo.type = MT_NULL
		elseif ((competitionboxes.value == 2 and (gametype == GT_COMPETITION or gametype == GT_RACE))) and mo.spawnedfromemblem == true
			local box = P_SpawnMobjFromMobj(mo,_,_,_,MT_MIXUP_BOX)
			box.flags = $|MF_NOGRAVITY|MF_NOCLIPHEIGHT
			mo.type = MT_NULL
		elseif ((competitionboxes.value == 3 and (gametype == GT_COMPETITION or gametype == GT_RACE)) or (matchboxes.value == 3 and (gametype == GT_MATCH or gametype == GT_CTF or gametype == GT_TAG or gametype == GT_HIDEANDSEEK))) and mo.spawnedfromemblem == true
			mo.type = MT_NULL
		elseif modeattacking == true and mo.spawnedfromemblem == true
			local box = P_SpawnMobjFromMobj(mo,_,_,_,MT_SCORE10K_BOX)
			box.flags = $|MF_NOGRAVITY|MF_NOCLIPHEIGHT
			mo.type = MT_NULL
		end
	end	
end)