    //ˋ̐EA`΍{EǗ^XŇĂяoB
    //gpO[oϐFListMirrors, x0Mirrors, y0Mirrors, ReflectOrder, LockMirror, SPModeMirror
    //o̓O[oϐFListMirrors, x0Mirrors, y0Mirrors, ReflectOrder, NumberOfReflect, SPModeMirror

    sub Mirror			//ˋ̐
    {
        let x0List = [GetClipMinX + 40, GetClipMaxX - 40, GetClipMinX + 40, GetClipMaxX - 40];
        let y0List = [GetClipMinY + 40, GetClipMinY + 40, GetClipMaxY - 40, GetClipMaxY - 40];;
        let L = 120;
        let D = 10;
        let dAng = [4, 12];		//ˋ̊px(@ǔE])
        let Img = WHITE01;

        let time = TimeMirrorDelay;	//˒x
        let n = length(x0List);

        ascent(i in 0..n)
        {
            let X0 = [x0List[i], y0List[i]];
            let Ang = atan2(X0[1] - GetCenterY, X0[0] - GetCenterX) + 90;	//[U[˕
            let Ang = Angle180(Ang);			//̕ꂢ

            //ݒuEǗ^XŇĂяo
            PutMirror(X0, L, D, Ang, Img, time);
            TLockOnPlayer(i, dAng[0]);
            TRotateAtack(i, dAng[1]);
        }
    }

    task TRotateAtack(ID, dAng)		//A`΍B]UB
    {
        //{f[^̌Ăяo
        let obj = ListMirrors[ID];
        let X0 = [x0Mirrors[ID], y0Mirrors[ID]];	//g̍W
        let L = ObjLaser_GetLength(obj);

        loop
        {
            loop
            {
                //]{
                let XPlayer = [GetPlayerX, GetPlayerY];
                let r = distance(X0, XPlayer);
                if( r > L/2 || ! CheckOutside(XPlayer, X0) ) {break;}

                SPModeMirror = true;	//]{tO

                let Ang = Obj_GetAngle( ListMirrors[ID] ) + dAng;

                Obj_SetPosition(obj, X0[0] - L / 2 *cos(Ang), X0[1] - L / 2 *sin(Ang));
                Obj_SetAngle(obj, Ang);

                yield;			//[vh~Byield̈ʒuɂ̂͋ɂ߂ďdvB

                //]I
                XPlayer = [GetPlayerX, GetPlayerY];
                r = distance(X0, XPlayer);
                if( r > L/2 || ! CheckOutside(XPlayer, X0) )	//ȁBifZ2񂠂̂ɂ͈ӖB
                {
                    SPModeMirror = false;	//]ItO
                    break;
                 }
            }
            yield;			//[vh~
        }
    }


    function CheckOutside(X, X0)	//S猩X0X̕trueB
    {
        let XCenter = [GetCenterX, GetCenterY];
        let r0 = distance(X0, XCenter);
        let r = distance(X, XCenter);

        return(r > r0)
    }