addHook("PlayerThink", function(player)
    if player.mo and player.mo.valid then
        searchBlockmap("objects", function(refmo, mo)
            if (mo.type == MT_RING or mo.type == MT_COIN)
            and mo.health > 0
				if mo.target then
				local angle = R_PointToAngle2(mo.x, mo.y, mo.target.x, mo.target.y)
				local vangle = R_PointToAngle2(0, 0, R_PointToDist2(mo.x, mo.y, mo.target.x, mo.target.y), mo.target.z - mo.z)
					mo.momx = FixedMul(FixedMul(cos(angle), cos(vangle)), player.boostspeed*3/2)
					mo.momy = FixedMul(FixedMul(sin(angle), cos(vangle)), player.boostspeed*3/2)
					mo.momz = FixedMul(sin(vangle), player.boostspeed*3/2)
				end
                if (P_AproxDistance(P_AproxDistance(player.mo.x-mo.x, player.mo.y-mo.y),player.mo.z-mo.z) < 192*FRACUNIT
                or P_CheckSight(player.mo, mo)) and player.boosting then
                    mo.target = player.mo
                end
            end
        end, player.mo)
    end
end)