freeslot("SPR_COPL")

addHook("ThinkFrame", do
	for player in players.iterate
		if (player and player.mo and player.mo.valid) and (player.mo.skin == "copper")
			if player.mo.state == S_PLAY_DASH
			and not player.powers[pw_super]
				for i = -30, 30
					
					local force = i*FRACUNIT/3
					local angle = ANGLE_90

					local shiftx = FixedMul(cos(player.drawangle + angle), force)
					local shifty = FixedMul(sin(player.drawangle + angle), force)
					
					local shiftx2 = FixedMul(cos(player.drawangle), FRACUNIT)
					local shifty2 = FixedMul(sin(player.drawangle), FRACUNIT)
					
					if i > 15
					or i < -15
						local COPLout = P_SpawnMobjFromMobj(player.mo, shiftx2 + shiftx, shifty2 + shifty, 0, MT_OVERLAY)
						COPLout.target = player.mo
						COPLout.fuse = 1
						COPLout.sprite = SPR_COPL
						if i < 0
							if player.mo.frame == A
								COPLout.frame = A
							elseif player.mo.frame == B
								COPLout.frame = B
							elseif player.mo.frame == C
								COPLout.frame = C
							elseif player.mo.frame == D
								COPLout.frame = D
							end
							COPLout.angle = player.drawangle + ANGLE_90/6
						else
							if player.mo.frame == A
								COPLout.frame = C
							elseif player.mo.frame == B
								COPLout.frame = D
							elseif player.mo.frame == C
								COPLout.frame = A
							elseif player.mo.frame == D
								COPLout.frame = B
							end
							COPLout.angle = player.drawangle - ANGLE_90/6
						end
						COPLout.renderflags = RF_PAPERSPRITE
						COPLout.scale = player.mo.scale/2
						if player.mo.eflags & MFE_VERTICALFLIP
							COPLout.eflags = $ | MFE_VERTICALFLIP
							COPLout.z = player.mo.z + player.mo.height - COPLout.height
						end
					end
				end
			end
		end
	end
end)