    //ܒeEvY̊px␳Ǘ
    //gpO[oϐFȂ
    //o̓O[oϐFReviseShotAngle, RevisePrismAngle


    task TRefractionControl
    {
        //蓮`ϐ
        let v = [2, 2, 2.5, 3, 3][Level];	//Point̕ωx[mdig./flame]B(= 2000 / [flame])
        let time = TimeFirstMagic + TimeShotStartToMove;	//pxωJn܂ł̎

        //vYEܒe̊px(0 => vYFOOp`, ܒeFOp`̒S)
        let LShots = [25, -15];	//Ɋ̋ܒepx
        let CShots = [15, -15];	//̎
        let RShots = [15, -25];	//EɊ
        let LPrisms = [35, 5];	//x̓vY
        let CPrisms = [5, -5];
        let RPrisms = [-5, -35];

        //`ϐ
        let Point = 0;			//ŏ͐^񒆁B(E[1, [-1)
        let Right = (rand(0, 1) < 0.5);	//ŏ̐is(Etrue, -false)
        v *= 0.001;			//[dig / mdig]

        SetRefraction(Point, LShots, CShots, RShots, LPrisms, CPrisms, RPrisms);	//px̐ݒ

        wait(time);

        //ܒeEɐU
        loop
        {
            //Point̕ύX
            if(Right) {Point += v;
            } else {Point -= v;}

            if(Point >= 1)
            {
                Point = 1;
                Right = false;
            } else if(Point <= -1)
            {
                Point = -1;
                Right = true;
            }

        SetRefraction(Point, LShots, CShots, RShots, LPrisms, CPrisms, RPrisms);	//px̐ݒ
        yield;			//[vh~
        }
    }



    function SetRefraction(Point, LShots, CShots, RShots, LPrisms, CPrisms, RPrisms)	//PointɉċܒeEvY̊pxςB
    {
        //Ƃ肠^񒆂Œ`BoȂƃXgȂB
        let NowShots = CShots;
        let NowPrisms = CPrisms;

        let dir = sign(Point);		//mF
        Point = absolute(Point);		//Βl

        //pxvZ
        ascent(i in 0..length(CShots))	//܂͋ܒe
        {
            if( dir == 1)
            {
                NowShots[i] = CShots[i] + Point * (RShots[i] - CShots[i]);
            } else
            {
                NowShots[i] = CShots[i] + Point * (LShots[i] - CShots[i]);
            }
        }
        ascent(i in 0..length(CPrisms))	//ăvY
        {
            if( dir == 1)
            {
                NowPrisms[i] = CPrisms[i] + Point * (RPrisms[i] - CPrisms[i]);
            } else
            {
                NowPrisms[i] = CPrisms[i] + Point * (LPrisms[i] - CPrisms[i]);
            }
        }

        //O[oϐo
        ReviseShotAngle = NowShots;
        RevisePrismAngle = NowPrisms;
    }
        