


script_enemy_main {
	let imgBoss     = "script\l\img\dot_yuyuko.png";
	#include_function ".\lib\lib_anime_Yuyuko.txt"
	#include_function ".\prg\function_value.txt"
	let name = " -M̕-";
	let cx=GetCenterX();
	@Initialize {
		SetX(GetCenterX);
        SetY(GetClipMinY + 120);
        SetLife(700);
        SetTimer(44);
        SetScore(5000000);
        LoadGraphic(imgBoss);
        SetTexture(imgBoss);

        CutIn(YOUMU, name, "", 0, 0, 0, 0);
        SetDamageRate(25, 25);
        
		TMain;
	}
		@MainLoop {
        SetCollisionA(GetX, GetY, 24);
        SetCollisionB(GetX, GetY, 24);

        yield;
       }
       @DrawLoop {
       DrawBoss( imgBoss );
    }

    @Finalize {
        DeleteGraphic(imgBoss);
        loop(8)
		{
			CreateItem(ITEM_SCORE,cx+rand(-100,100),rand(20,100));
		}
    }
    task TMain {
        yield;
        concentration;
        TM;
        TB;
        TC;
        wait(20);
        LA;
        wait(20);
        LC;
       }
       sub concentration {
        let wConc = 100;
        Concentration01(wConc);
        wait(wConc);
        
    }	
    task TM {
	    loop{
        
        loop(120) { 

        moveToPlayer(rand(40, 80), rand(-40, 40), 60,
                     GetClipMinX + 48, GetClipMinY +  32,
                     GetClipMaxX - 48, GetClipMinY + 128);
        SetAction( ACT_MOVE, 50 );
        wait(120)
      }
     }
      }
    task TB{
	    loop {
	    let Ta = 1;
	    let angle = GetAngleToPlayer + 40;
		CreateShotA(Ta, GetX, GetY, 0);
		SetShotDataA(Ta, 0, 4, angle, 0, 0, 5, RED03);
		SetShotDataA(Ta, 30, 0, NULL, 0, 0, 5, RED03);
		let Tb = 2;
		let nt = 0;
		
		loop(18) {
			let nt2 = GetAngleToPlayer + nt;
			
			CreateShotA(Tb, 0, 0, 5);
			SetShotDataA(Tb, 0, 2, nt2, 6, 0, 5, RED22);
			SetShotDataA(Tb, 36, 0, NULL, 0, 0, 5, RED22);
			let Tc = 3;
			let tza = 0;
			loop (5) {
				CreateShotA(Tc, 0, 0, tza);
				SetShotDataA(Tc, 0, 5, nt2, 0, 0, 5, RED22);
				AddShot(37, Tb, Tc, 0);
				tza +=3;
			}

			SetShotKillTime(Tb,69);
			AddShot(31, Ta, Tb, 0);
		
			
			nt +=20;
		}
		SetShotKillTime(Ta,32);
		FireShot(Ta);
		wait(60);
}
}	    
    task TC{
	    loop {
	    let Ta = 1;
	    let angle = GetAngleToPlayer - 40;
		CreateShotA(Ta, GetX, GetY, 0);
		SetShotDataA(Ta, 0, 4, angle, 0, 0, 5, BLUE03);
		SetShotDataA(Ta, 30, 0, NULL, 0, 0, 5, BLUE03);
		let Tb = 2;
		let nt = 0;
		
		loop(18) {
			let nt2 = GetAngleToPlayer + nt;
			
			CreateShotA(Tb, 0, 0, 5);
			SetShotDataA(Tb, 0, 2, nt2, 6, 0, 5, BLUE22);
			SetShotDataA(Tb, 36, 0, NULL, 0, 0, 5, BLUE22);
			let Tc = 3;
			let tza = 0;
			let nt3 = nt2 +20;
			loop (5) {
				CreateShotA(Tc, 0, 0, tza);
				SetShotDataA(Tc, 0, 5, nt3, 0, 0, 5, BLUE22);
				AddShot(37, Tb, Tc, 0);
				tza +=3;
			}

			SetShotKillTime(Tb,69);
			AddShot(31, Ta, Tb, 0);
		
			
			nt +=20;
		}
		SetShotKillTime(Ta,32);
		FireShot(Ta);
		wait(60);
}
}	    

task LA {
	loop{
		let LA = 1;
		let ALaserBx = rand(GetClipMinX, GetClipMaxX);
		let ALaserEx = rand(GetClipMinX, GetClipMaxX);
		let ALaserBy = GetClipMaxY;
		let ALaserEy = GetClipMinY-100;
		let LMove = 20;
		let span  = GetGapLength(ALaserBx, ALaserBy, ALaserEx, ALaserEy) /LMove;
		CreateLaserA(LA, ALaserBx, GetClipMaxY, 0, 30, RED01, 60);
		SetLaserDataA(LA, 0, rand(-40, -140), 0, span, 0, 0);
		SetLaserDataA(LA, LMove, NULL, 0, 0, 0, 0);
		SetShotKillTime(LA, 130);
		FireShot(LA);
		wait(80)
	}
}

sub LC {
	loop {
		let LF = 5;
		let FLaserBy = rand(GetClipMinY, GetClipMaxY);
		let FLaserEy = rand(GetClipMinY, GetClipMaxY);
		let FLaserBx = GetClipMinX;
		let FLaserEx = GetClipMaxX+100;
		let LMovef = 20;
		let Fkaku = GetGapAngle(FLaserBx, FLaserBy, GetPlayerX, GetPlayerY);
		let spanf  = GetGapLength(FLaserBx, FLaserBy, FLaserEx, FLaserEy) /LMovef;
		CreateLaserA(LF, FLaserBx, FLaserBy, 0, 30, WHITE01, 60);
		SetLaserDataA(LF, 0, Fkaku, 0, spanf, 0, 0);
		SetLaserDataA(LF, LMovef, NULL, 0, 0, 0, 0);
		SetShotKillTime(LF, 130);
		FireShot(LF);
		wait(90)
	}
}
    sub setGraphicMove {
        if(GetSpeedX < 0) {
            SetAction( ACT_MOVE_L, 1 );
        } else {
            SetAction( ACT_MOVE_R, 1 );
        } 
       }

       function moveToPlayer(xMove, yAdd, frame, left, top, right, bottom) {
        let x;
        let y;

        if(GetPlayerX < GetX) {
            
            x = GetX - xMove;

            
            if(x < left) {
                x = GetX + xMove;
            }
        } else {
           
            x = GetX + xMove;

           
            if(right < x) {
                x = GetX - xMove;
            }
        }

        y = GetY + yAdd;
        if(y < top) {
            y = top;
        } else if(bottom < y) {
            y = bottom;
        }

        SetMovePosition02(x, y, frame);
        
    }
    
	function wait(w) {
        loop(w) { yield; }
}
}