    //ˋƘAC
    //ϐFeAwayAnwaypAOtBbNA[˖h~ԁA˒eh~({Xgւ)]A[G@_[WALa]
    //gpO[oϐFx0Mirrors, y0Mirrors, RefrectOrder
    //o̓O[oϐFȂ
    function FireMainShot(v, nWay, dAng, Img, time, BossDamage)
    {
        let IDTGT = ReflectOrder[0];	//ꔽˋID

        //ˏopxZo
        let dx = x0Mirrors[IDTGT] - GetX;
        let dy = y0Mirrors[IDTGT] - GetY;
        let Ang = atan2(dy, dx);

       Ang -= (nWay - 1) / 2 * dAng;
        loop(nWay)			//C
        {
            TFireMainShot(v, Ang, Img, time, BossDamage);
            Ang += dAng;
        }
    } 

    task TFireMainShot(v, Ang, Img, time, BossDamage)	//CIuWFNg
    {
        //ϐ̉
        let Damage = BossDamage[0];
        let rDmg = BossDamage[1];

        //obj{
        let obj = Obj_Create(OBJ_SHOT);
        Obj_SetPosition(obj, GetX, GetY);
        Obj_SetSpeed(obj, v);
        Obj_SetAngle(obj, Ang);
        ObjShot_SetGraphic(obj, Img);

        if(Damage > 0 || rDmg > 0)
        {
            THitBoss(obj, rDmg, Damage, time[1]);	//G@ւ̓蔻mF
        }

        while( !Obj_BeDeleted(obj) )
        {
            ascent( i in 0..length(ListMirrors) )	//ˋڐG
            {
                if (Collision_Obj_Obj(ListMirrors[i], obj) )
                {
                    let AngMirror = Obj_GetAngle(ListMirrors[i]);
                    Ang = 2 * AngMirror - Ang;

                    Obj_SetAngle(obj, Ang);
                    wait(time[0]);		//˖h~
                }
            }
            yield;			//[vh~
        }
    }

    task THitBoss(obj, r, Damage, time)
    {
        wait(time);			//˒̔eh~

        while( !Obj_BeDeleted(obj) )
        {
            let X = [Obj_GetX(obj), Obj_GetY(obj)];
            let XBoss = [GetX, GetY];

            if( distance(XBoss, X) <= r)
            {
                AddLife(-Damage);
                wait(time);			//Aeh~
            }
            yield;			//[vh~
        }
    }