script_enemy_main {
	let time = -100;
	let phase = 1;
	let rate = 10;
	let kaku = 40;
	let score = 5000;
	let layer = 1;
	let bairitu = 1;
	let lv = 0;
	let angle = GetAngle();
	let rank = GetSpeed();
	let arg = GetArgument();
	let ex = GetCommonData("ex");
	SetCommonData("bossx",GetX);
	SetCommonData("bossy",GetY);
	SetCommonData("bossphase",1);
	let imgEnemy = GetCurrentScriptDirectory~"img\st3semiboss.png";
	let tama = GetCurrentScriptDirectory~"tama.txt";
	let se1 = GetCurrentScriptDirectory~"wav\se1.wav";
	let se7 = GetCurrentScriptDirectory~"wav\se7.wav";
	let seshot1 = GetCurrentScriptDirectory~"wav\shot1.wav";
	let seshot2 = GetCurrentScriptDirectory~"wav\shot2.wav";
	SetCommonData("haya",0);
	@Initialize(){
		SetLife( 3200 );
		SetInvincibility( 100 );
		LoadGraphic( imgEnemy );
		LoadUserShotData( tama );
		SetX(GetCommonData("bossx")-GetCommonData("bgx"));
		SetY(GetCommonData("bgy")-GetCommonData("bossy"));
		Tgazou(1,1,320,320);
		Tmove;Tshot1;Tshot2;
	}
	@MainLoop {
		SetCommonData("bossy",GetCommonData("bossy")+1);
		if(time==-99){
			CreateEnemyFromScript( "parts1", +72, 60, 2, 0, 1);
			CreateEnemyFromScript( "parts1", -72, 60, 2, 0, 1);
			CreateEnemyFromScript( "parts2", +73, -97, 2, 0, 1);
			CreateEnemyFromScript( "parts2", -73, -97, 2, 0, -1);
		}
		if(phase==1&&GetLife<=100){
			phase-=1;
			score = 40000;
			SetCommonData("bossphase",0);
			if(lv==0||GetPoint>0){DeleteEnemyShotImmediatelyInCircle(SHOT, 224, 240, 600);}
			Tdeath(20,64,2,0);
			Tbaku;Toti;
		}
		if(phase>=1&&time>=0){
			SetCollisionA(GetX(), GetY()-70, 40);
			SetCollisionA(GetX(), GetY(), 40);
		}
		SetX(GetCommonData("bossx")-GetCommonData("bgx"));
		SetY(GetCommonData("bgy")-GetCommonData("bossy"));
		if(GetCommonData("kakusei")>0){lv=1}
		else{lv=0}
		time++;
		yield;
	}
	@Finalize() {
	       SetCommonData("haya",1);
	}
	@DrawLoop {
	}
	task Tmain{
	}
	task Tshot1{
	    wait(300);
	    let a=0;
	    while(time<650){
	       loop(6){
	          if(phase<=0){return;}
	          let b=0;
	          loop(12){
	             let c=(b*15+a*11.3)%180;
	             CreateShotFromScript( "shot1",GetX()+cos(c)*50, GetY()+sin(c)*50, 2.5+ex, c, 0, 13);
	             b++;
	          }
	          PlaySE(seshot1);
	          wait(4);
	       }
	       wait((35-lv*17)/(1+ex));
	       a++;
	    }
	}
	task Tshot2{
	    wait(750);
	    let a=0;
	    loop{
	       if(phase<=0){return;}
	       let b=0;
	       loop(18){
	          CreateShotFromScript( "shot5", GetX(), GetY()-60, 2.2+ex, b*20+a*7.3, 0, 6*(a%2-0.5));
	          b++;
	       }
	       PlaySE(seshot2);
	       wait((60-lv*35)/(1+ex));
	       a++;
	    }
	}


   task Tmove{
      loop(70){SetCommonData("bossy",GetCommonData("bossy")-4);yield;}
      let a=0;
      loop(41){SetCommonData("bossy",GetCommonData("bossy")-4+a*0.1);a++;yield;}
      loop(8){
      loop(100){SetCommonData("bossy",GetCommonData("bossy")+0.1);yield;}
      loop(100){SetCommonData("bossy",GetCommonData("bossy")-0.1);yield;}
      }
      VanishEnemy();
   }
   task Toti{
   	loop(120){
      	yield;
   	}
      Explosion01(GetX,GetY,5,0.4,50);
      PlaySE(se7);
      VanishEnemy();
   }
   task Tgazou(x1,y1,x2,y2)
   {
      let system = GetCurrentScriptDirectory~"img\system.png";
      let objenemy = Obj_Create(OBJ_EFFECT);//GtFNgIuWFNg쐬
      ObjEffect_SetTexture(objenemy, imgEnemy);//Ȃ炩̃eNX`ݒ
      ObjEffect_SetPrimitiveType(objenemy, PRIMITIVE_TRIANGLESTRIP);//v~eBu^Cvݒ
      ObjEffect_CreateVertex(objenemy, 4);//_4
      ObjEffect_SetLayer(objenemy,layer);
		
      //lp`Ɋe_̍Wݒ
      ObjEffect_SetVertexXY(objenemy, 0, -(x2-x1)*bairitu/2, -(y2-y1)*bairitu/2);
      ObjEffect_SetVertexXY(objenemy, 1, -(x2-x1)*bairitu/2,  (y2-y1)*bairitu/2);
      ObjEffect_SetVertexXY(objenemy, 2,  (x2-x1)*bairitu/2, -(y2-y1)*bairitu/2);
      ObjEffect_SetVertexXY(objenemy, 3,  (x2-x1)*bairitu/2,  (y2-y1)*bairitu/2);
		
      //lp`Ɋe_UVlݒB(0,0)-(10,10)̕B
      ObjEffect_SetVertexUV(objenemy, 0, x1, y1);
      ObjEffect_SetVertexUV(objenemy, 1, x1, y2);
      ObjEffect_SetVertexUV(objenemy, 2, x2, y1);
      ObjEffect_SetVertexUV(objenemy, 3, x2, y2);

      Obj_SetPosition(objenemy, GetX, GetY);
   
		
      loop{
         ObjEffect_SetVertexXY(objenemy, 0, -(x2-x1)*bairitu/2, -(y2-y1)*bairitu/2);
         ObjEffect_SetVertexXY(objenemy, 1, -(x2-x1)*bairitu/2,  (y2-y1)*bairitu/2);
         ObjEffect_SetVertexXY(objenemy, 2,  (x2-x1)*bairitu/2, -(y2-y1)*bairitu/2);
         ObjEffect_SetVertexXY(objenemy, 3,  (x2-x1)*bairitu/2,  (y2-y1)*bairitu/2);
         Obj_SetX(objenemy,GetX);
         Obj_SetY(objenemy,GetY);
         yield;
      }
      Obj_Delete(objenemy);
   }



    #include_function".\efanction.txt"
}
script_enemy parts1 {
    let time = -100;
    let phase = 1;
    let rate = 6;
    let kaku = 10;
    let score = 180;
    let lv = 0;
    let angle = GetAngle();
    let rank = GetSpeed();
    let arg = GetArgument();
    let ex = GetCommonData("ex");
    let mapx = GetX();
    let mapy = GetY();
    let imgEnemy = GetCurrentScriptDirectory~"img\st3semiboss.png";
    let tama = GetCurrentScriptDirectory~"tama.txt";
    let se1 = GetCurrentScriptDirectory~"wav\se1.wav";
    let se8 = GetCurrentScriptDirectory~"wav\se8.wav";
    @Initialize(){
        SetLife( 400 );
        SetInvincibility( 10 );
        LoadGraphic( imgEnemy );
        LoadUserShotData( tama );
        SetX(GetCommonData("bossx")-GetCommonData("bgx")+mapx);
        SetY(GetCommonData("bgy")-GetCommonData("bossy")+mapy);
        Tshot;
    }
    @MainLoop {
        if(phase==1&&GetLife<=100){
           score = 2500;
           phase-=1;
           if(lv==0||GetPoint>0){DeleteEnemyShotImmediatelyInCircle(SHOT, GetX, GetY, 30);}
           PlaySE(se8);
           Tdeath(6,24,2,1);
        }
        if(phase==1&&GetCommonData("bossphase")==0){
           phase-=1;
           score=0;
           PlaySE(se8);
           Tdeath(4,24,2,1);
        }
        if(GetX<12||GetX>436||GetY<40){
           SetInvincibility( 5 );
        }
        if(time>240&&GetY>500){VanishEnemy;}
        if(time>1600){VanishEnemy;}
        if(phase>=1&&time>0){SetCollisionA(GetX, GetY, 24);}
        SetX(GetCommonData("bossx")-GetCommonData("bgx")+mapx);
        SetY(GetCommonData("bgy")-GetCommonData("bossy")+mapy);
        if(GetCommonData("kakusei")>0){lv=1}
        else{lv=0}
        time++;
        yield;
    }
    @Finalize() {
    }
    @DrawLoop {
	SetTexture( imgEnemy );
        SetGraphicRect( 320, 48, 384, 112 );
        SetGraphicAngle(0,0,genteikaku(GetAngleToPlayer(),48));
	DrawGraphic( GetX(), GetY() );
    }

    task Tshot{
        yield;
        wait(100);
        loop{
           if(GetX>32&&GetX<416){
              let p=genteikaku(GetAngleToPlayer(),48);
              let a=0;
              loop(3+rank){
                 if(phase<=0){return;}
                 CreateShotFromScript( "shot1",GetX()+cos(p+9)*22, GetY()+sin(p+9)*22, 3+ex, p, 0, 14);
                 CreateShotFromScript( "shot1",GetX()+cos(p-9)*22, GetY()+sin(p-9)*22, 3+ex, p, 0, 14);
                 wait(4);
                 a++;
              }
           }
           wait((40-lv*20)/(1+ex));
        }
    }


    #include_function".\efanction.txt"
}
script_enemy parts2 {
    let time = -100;
    let phase = 1;
    let rate = 6;
    let kaku = 10;
    let score = 180;
    let lv = 0;
    let angle = GetAngle();
    let rank = GetSpeed();
    let arg = GetArgument();
    let ex = GetCommonData("ex");
    let mapx = GetX();
    let mapy = GetY();
    let imgEnemy = GetCurrentScriptDirectory~"img\st3semiboss.png";
    let tama = GetCurrentScriptDirectory~"tama.txt";
    let se1 = GetCurrentScriptDirectory~"wav\se1.wav";
    let se8 = GetCurrentScriptDirectory~"wav\se8.wav";
    @Initialize(){
        SetLife( 400 );
        SetInvincibility( 10 );
        LoadGraphic( imgEnemy );
        LoadUserShotData( tama );
        SetX(GetCommonData("bossx")-GetCommonData("bgx")+mapx);
        SetY(GetCommonData("bgy")-GetCommonData("bossy")+mapy);
        Tshot;
    }
    @MainLoop {
        if(phase==1&&GetLife<=100){
           score = 2500;
           phase-=1;
           if(lv==0||GetPoint>0){DeleteEnemyShotImmediatelyInCircle(SHOT, GetX, GetY, 30);}
           PlaySE(se8);
           Tdeath(6,24,2,1);
        }
        if(phase==1&&GetCommonData("bossphase")==0){
           phase-=1;
           score=0;
           PlaySE(se8);
           Tdeath(6,24,2,1);
        }
        if(GetX<12||GetX>436||GetY<40){
           SetInvincibility( 5 );
        }
        if(time>240&&GetY>500){VanishEnemy;}
        if(time>1600){VanishEnemy;}
        if(phase>=1&&time>0){SetCollisionA(GetX, GetY, 24);}
        SetX(GetCommonData("bossx")-GetCommonData("bgx")+mapx);
        SetY(GetCommonData("bgy")-GetCommonData("bossy")+mapy);
        if(GetCommonData("kakusei")>0){lv=1}
        else{lv=0}
        time++;
        yield;
    }
    @Finalize() {
    }
    @DrawLoop {
	SetTexture( imgEnemy );
        SetGraphicRect( 320, 0, 384, 48 );
	DrawGraphic( GetX(), GetY() );
    }

    task Tshot{
        yield;
        wait(100);
        let a=0;
        loop{
           if(GetX>32&&GetX<416){
              let b=0;
              loop(2+ex*1){
                 if(phase<=0){return;}
                 CreateShotFromScript( "shot1",GetX(), GetY(), 2.5+ex, a*13.7*arg+b*(180-60*ex), 0, 05);
                 b++;
              }
           }
           wait(5-lv*2);
           a++;
        }
    }


    #include_function".\efanction.txt"
}
#include_script".\escript.txt"