freeslot("SPR_PEEL")

addHook("ThinkFrame", do
	for player in players.iterate
		if (player.mo.valid) and (player.mo.skin == "sonic")
			player.charflags = $ | SF_DASHMODE
			if player.dashmode >= 3*TICRATE
				player.nomoredashmodeflash = P_SpawnGhostMobj(player.mo)
				player.nomoredashmodeflash.fuse = 1
				player.nomoredashmodeflash.frame = player.mo.frame
				if player.mo.state == S_PLAY_DASH
				and not player.powers[pw_super]
					local force = FRACUNIT*10
					local angle = ANGLE_90

					local shiftx = FixedMul(cos(player.drawangle + angle), force)
					local shifty = FixedMul(sin(player.drawangle + angle), force)

					player.peelout1 = P_SpawnMobj(player.mo.x - shiftx, player.mo.y - shifty, player.mo.z, MT_THOK)
					player.peelout1.fuse = 1
					player.peelout1.sprite = SPR_PEEL
					if player.mo.frame == A
						player.peelout1.frame = A
					elseif player.mo.frame == B
						player.peelout1.frame = B
					elseif player.mo.frame == C
						player.peelout1.frame = C
					elseif player.mo.frame == D
						player.peelout1.frame = D
					end
					player.peelout1.renderflags = RF_PAPERSPRITE
					player.peelout1.angle = player.drawangle + ANG10
					player.peelout1.scale = player.mo.scale/2
					
					player.peelout2 = P_SpawnMobj(player.mo.x + shiftx, player.mo.y + shifty, player.mo.z, MT_THOK)
					player.peelout2.fuse = 1
					player.peelout2.sprite = SPR_PEEL
					if player.mo.frame == A
						player.peelout2.frame = D
					elseif player.mo.frame == B
						player.peelout2.frame = C
					elseif player.mo.frame == C
						player.peelout2.frame = B
					elseif player.mo.frame == D
						player.peelout2.frame = A
					end
					player.peelout2.renderflags = RF_PAPERSPRITE
					player.peelout2.angle = player.drawangle - ANG10
					player.peelout2.scale = player.mo.scale/2
				end
			end
		end
	end
end)