#e
#Title[ʏ3v]
#Text[ʏ3]
#ScriptVersion[2]
#Player[FREE]



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 cx=GetCenterX();
	@Initialize {
		SetX(GetCenterX);
        SetY(GetClipMinY + 120);
        SetLife(4000);
        SetTimer(52);
        LoadGraphic(imgBoss);
        SetTexture(imgBoss);
        
		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;
        TA;
        TB;
        TC;
        ShotAir;
        LA;
        LB;
       }
       sub concentration {
        let wConc = 100;
        Concentration01(wConc);
        wait(wConc);
        
    }
    task TA{
	    loop {
	    let Ta = 1;
	    let angle = GetAngleToPlayer;
		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, 5, 0, 5, RED22);
			SetShotDataA(Tb, 36, 0, NULL, 0, 0, 5, RED22);
			let Tc = 3;
			let tza = 0;
			loop (10) {
				CreateShotA(Tc, 0, 0, tza);
				SetShotDataA(Tc, 0, 4, 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 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, 5, 0, 5, RED22);
			SetShotDataA(Tb, 36, 0, NULL, 0, 0, 5, RED22);
			let Tc = 3;
			let tza = 0;
			loop (10) {
				CreateShotA(Tc, 0, 0, tza);
				SetShotDataA(Tc, 0, 4, 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, 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, 5, 0, 5, RED22);
			SetShotDataA(Tb, 36, 0, NULL, 0, 0, 5, RED22);
			let Tc = 3;
			let tza = 0;
			let nt3 = nt2 +20;
			loop (10) {
				CreateShotA(Tc, 0, 0, tza);
				SetShotDataA(Tc, 0, 4, nt3, 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 ShotAir {
        let wShot = 10;

        loop {
            CreateShot01(rand(GetClipMinX, GetClipMaxX), GetClipMaxY - 32, 0.5, rand(-92, -88), RED11, 4);
            wait(wShot);
        }
    }

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(50)
	}
}
task LB {
	loop{
		let LB = 2;
		let BLaserBx = rand(GetClipMinX, GetClipMaxX);
		let BLaserEx = rand(GetClipMinX, GetClipMaxX);
		let BLaserBy = GetClipMaxY;
		let BLaserEy = GetClipMinY-100;
		let LMoveb = 20;
		let spanb  = GetGapLength(BLaserBx, BLaserBy, BLaserEx, BLaserEy) /LMoveb;
		CreateLaserA(LB, BLaserBx, GetClipMaxY, 0, 30, BLUE01, 60);
		SetLaserDataA(LB, 0, rand(-40, -140), 0, spanb, 0, 0);
		SetLaserDataA(LB, LMoveb, NULL, 0, 0, 0, 0);
		SetShotKillTime(LB, 130);
		FireShot(LB);
		wait(50)
	}
}
    sub setGraphicMove {
        if(GetSpeedX < 0) {
            SetAction( ACT_MOVE_L, 1 );
        } else {
            SetAction( ACT_MOVE_R, 1 );
        } 
       }
	function wait(w) {
        loop(w) { yield; }
}
}