freeslot("SPR_BRHA")

-- Script visual del aura boost tipo 1 (BRHA)
addHook("ThinkFrame", function()
	for player in players.iterate
		if not player.mo or not player.mo.valid then continue end
		if player.mo.skin ~= "sonic" then continue end

		-- Solo si está boosteando
		if not (player.boosting or player.airboost or player.superboost) then continue end

		local mo = player.mo
		local dist = max(player.speed / (4*FRACUNIT), 1)

		-- Boost Aura central
		local boostaura = P_SpawnMobjFromMobj(
			mo,
			mo.momx/dist,
			mo.momy/dist,
			mo.momz/dist,
			MT_THOK
		)

		boostaura.sprite = SPR_BRHA
		boostaura.frame = (leveltime % 4) | FF_FULLBRIGHT
		boostaura.tics = 1
		boostaura.rollangle = mo.rollangle
		boostaura.angle = player.drawangle
		boostaura.scale = mo.scale

		-- FORZAR COLOR LAPIS
		boostaura.colorized = true
		boostaura.color = SKINCOLOR_SAPPHIRE

		-- Memoria z previa
		if not mo.prevz or mo.prevleveltime ~= leveltime - 1 then
			mo.prevz = mo.z
		end

		-- Estela
		if player.rings >= 9999 or player.powers[pw_super] then
			local rmomz = mo.z - mo.prevz
			mo.prevz = mo.z
			mo.prevleveltime = leveltime

			local mospeed = R_PointToDist2(
				0, 0,
				R_PointToDist2(0, 0, mo.momx, mo.momy),
				rmomz
			)

			local traildist = mospeed / FRACUNIT

			for i = traildist, 1, -1 do
				local spawned = P_SpawnMobjFromMobj(
					mo,
					(mo.momx/traildist)*i,
					(mo.momy/traildist)*i,
					(rmomz/traildist)*i,
					MT_THOK
				)

				-- FORZAR COLOR LAPIS EN LA ESTELA
				spawned.color = SKINCOLOR_SAPPHIRE
				spawned.colorized = true
				spawned.blendmode = AST_ADD
				spawned.frame = $|FF_FULLBRIGHT
				spawned.fuse = 5
			end
		end
	end
end)