local doomsday = false

addHook("MobjThinker", function(mobj)
	mobj.color = SKINCOLOR_HYPERMETALSONIC
	mobj.frame = FF_FULLBRIGHT|$
	if leveltime % 1 == 0
		local metalbolt = P_SpawnMobjFromMobj(mobj, FRACUNIT*P_RandomRange(-16,16), FRACUNIT*P_RandomRange(-16,16), FixedDiv(mobj.height/2,mobj.scale)+(P_RandomRange(-16,16)*FRACUNIT), MT_SUPERBOLT)
		metalbolt.momx = P_RandomRange(-14, 14) * FRACUNIT + FixedMul(-12, 12, mobj.scale)
		metalbolt.momy = P_RandomRange(-14, 14) * FRACUNIT + FixedMul(-12, 12, mobj.scale)
		metalbolt.momz = P_RandomRange(-1, 9) * FRACUNIT + FixedMul(-12, 12, mobj.scale)
		metalbolt.scale = mobj.scale
		metalbolt.colorized = true
		metalbolt.color = SKINCOLOR_MAGENTA
		metalbolt.frame = $|FF_FULLBRIGHT
		metalbolt.target = mobj
	end
	if (mobj.momx > 2*FRACUNIT or mobj.momx < -1*FRACUNIT or mobj.momy > 2*FRACUNIT or mobj.momy < -1*FRACUNIT or mobj.momz > 2*FRACUNIT or mobj.momz < -1*FRACUNIT)
		local ghost1 = P_SpawnGhostMobj(mobj)
		ghost1.color = mobj.color
		ghost1.colorized = true
		ghost1.rollangle = mobj.rollangle
		ghost1.fuse = 5
		ghost1.blendmode = AST_ADD
		ghost1.eflags = mobj.eflags & MFE_VERTICALFLIP
		ghost1.source = mobj
	end
end, MT_METALSONIC_RACE)

addHook("ThinkFrame", do
	for player in players.iterate
		if player.mo and player.mo.valid and player.mo.skin == "supersonic"
			//print(leveltime)
			if (gamemap == 25)
			and not player.exiting
			and player.playerstate == PST_LIVE
				player.sshypermusic = true
				S_ChangeMusic("vshmet", true, player)
				if not player.hyper.transformed
				and not doomsday
					if not player.hyper.isunlocked return end
					player.hyper.transformed = 1
					doomsday = true
					player.rings = 30
					S_StartSound(player.mo,sfx_hypert)
					P_SetMobjStateNF(player.mo, S_PLAY_SUPER_TRANS1)
					player.mo.state = S_PLAY_SUPER_TRANS1
					player.mo.frame = A
				end
				if leveltime >= 1065
				and player.playerstate == PST_LIVE
				or player.rings <= 0
				or ((player.rings >= 0) and not (player.hyper.transformed))
					P_KillMobj(player.mo)
					S_StartSound(player.mo,sfx_s3k66)
					doomsday = false
				end
			end
		end
	end
end)

addHook("PlayerSpawn", function(p)
	doomsday = false
end)
