script_enemy_main {
   let time = -180;
   let rate = 1;
   let phase = 1;
   let score =5000;
   let angle = 90;
   let rank = GetSpeed;
	let bairitu = 4;
   let ex = 0;
   let arg = GetArgument();
   let imgEnemy = GetCurrentScriptDirectory~"img\ExRumia.png";
   let imgmahou = GetCurrentScriptDirectory~"img\kdm_seal001.png";
   let tama = GetCurrentScriptDirectory~"tama.txt";
   let se1 = GetCurrentScriptDirectory~"wav\se1.wav";
   let se2 = GetCurrentScriptDirectory~"wav\se2.wav";
   let seshot1 = GetCurrentScriptDirectory~"wav\shot1.wav";
   let seshot2 = GetCurrentScriptDirectory~"wav\shot2.wav";
   @Initialize(){
      SetLife( 7000 );
      SetInvincibility(180);
      LoadUserShotData( tama );
      Tmove;
   	Tgazou(0,0,64,64);
   	if(GetCommonData("ex")==1){ex=1;}
   	SetCommonData("bossphase",1);
   }
   @MainLoop {
      if(phase==1&&GetLife<=100){
         phase-=1;
         PlaySE(se2);
         Tdeath(0,64,3,0);
      	Tbaku;
      	Tbossbaku;
   		SetCommonData("bossphase",0);
      }
      if(phase>=1&&time>0){
      SetCollisionA(GetX, GetY-30, 40);
      SetCollisionA(GetX+70, GetY-30, 40);
      SetCollisionA(GetX-70, GetY-30, 40);
      }
      yield;
      time++;
   }
   @Finalize() {
   }
   @DrawLoop {
   }

   task Tmove {
      SetMovePosition02(224,GetY+200,180);
      wait(180);
   	
   	loop(2){
   		Tshot1a;Tshot1b;
      	SetMovePosition02(224+30+rand(20,-20),150+rand(10,-10),80);
      	wait(80);
      	SetMovePosition02(224-30+rand(20,-20),150+rand(10,-10),160);
      	wait(160);
      	SetMovePosition02(224+30+rand(20,-20),150+rand(10,-10),160);
      	wait(160);
      	SetMovePosition02(224-30+rand(20,-20),150+rand(10,-10),160);
      	wait(160);
      	SetMovePosition02(224+rand(20,-20),150+rand(10,-10),80);
      	wait(80);
   		
   		Tshot2a;
      	SetMovePosition02(224+60+rand(20,-20),150+rand(10,-10),80);
      	wait(80);
      	SetMovePosition02(224-60+rand(20,-20),150+rand(10,-10),160);
      	wait(160);
      	SetMovePosition02(224+60+rand(20,-20),150+rand(10,-10),160);
      	wait(160);
      	SetMovePosition02(224-60+rand(20,-20),150+rand(10,-10),160);
      	wait(160);
      	SetMovePosition02(224+rand(20,-20),150+rand(10,-10),80);
      	wait(80);
   	}
      //VanishEnemy();
   }
	
   task Tshot1a{
      yield;
   	let r=1;
   	loop(5+ex*5){
			loop(3){
         	if(phase<1){return;}
				let a=0-ex/2;
            SetShotDirectionType(ABSOLUTE);
				loop(1+ex){
         		SetShotDirectionType(ABSOLUTE);
         		CreateShot01( GetX()+90*r, GetY()-10, 4+ex*3, 90+rand(5,-5)+a*22, ORANGE02, 0);
					a++;
				}
         	PlaySE(seshot1);
				wait(20-ex*10);
			}
			wait(40-ex*20);
   		r*=-1;
		}
	}

   task Tshot1b{
      yield;
   	wait(80);
   	loop(4+ex*2){
         if(phase<1){return;}
         SetShotDirectionType(ABSOLUTE);
   		let b=-0.5-ex/2;
   		loop(2+ex){
         	let p1=atan2( GetPlayerY()-(GetY()-40), GetPlayerX()-(GetX()+50));
         	let p2=atan2( GetPlayerY()-(GetY()-40), GetPlayerX()-(GetX()-50));
         	CreateShot01( GetX()+50, GetY()-50, 5.5+ex*2, genteikaku(p1,30)+b*10, ORANGE04, 0);
         	CreateShot01( GetX()-50, GetY()-50, 5.5+ex*2, genteikaku(p2,30)+b*10, ORANGE04, 0);
   			b++;
   		}
         PlaySE(seshot2);
      	wait(15);
         if(phase<1){return;}
         SetShotDirectionType(ABSOLUTE);
   		let b=-0.5-ex/2;
   		loop(2+ex){
         	let p1=atan2( GetPlayerY()-(GetY()-40), GetPlayerX()-(GetX()+30));
         	let p2=atan2( GetPlayerY()-(GetY()-40), GetPlayerX()-(GetX()-30));
         	CreateShot01( GetX()+30, GetY()-50, 5.5+ex*2, genteikaku(p1,30)+b*10, ORANGE04, 0);
         	CreateShot01( GetX()-30, GetY()-50, 5.5+ex*2, genteikaku(p2,30)+b*10, ORANGE04, 0);
   			b++;
   		}
         PlaySE(seshot2);
      	wait(15);
   		let b=-2.5;
   		loop(5){
				if(phase<1){return;}
				SetShotDirectionType(ABSOLUTE);
         	CreateShot01( GetX()+90, GetY()-40, 5.5+ex*2, 90+b*25, ORANGE01, 0);
         	CreateShot01( GetX()-90, GetY()-40, 5.5+ex*2, 90-b*25, ORANGE01, 0);
   			if(ex==1){
         		CreateShot01( GetX()+90, GetY()-40, 5.5+ex*2, 105+b*25, ORANGE01, 0);
         		CreateShot01( GetX()-90, GetY()-40, 5.5+ex*2, 75-b*25, ORANGE01, 0);
   			}
				wait(14-ex*7);
   			b++;
   		}
      	wait(16);
		}
      wait(15);
		if(phase<1){return;}
		SetShotDirectionType(ABSOLUTE);
      PlaySE(seshot2);
   	let b=-1;
   	loop(3){
   		if(ex==0){
         	CreateShot01( GetX()-b*15, GetY()-30, 8+ex*5, 90+b*7, WHITE02, 0);
   		}
   		else{
         	CreateShot01( GetX()-b*15, GetY()-30, 8+ex*5, 90+b*7, WHITE03, 0);
   		}
   		b++;
   	}
	}
	

   task Tshot2a{
      yield;
   	loop(2){
   	let a=0;
   	loop(4+ex*2){
         if(phase<1){return;}
			let b=0;
         SetShotDirectionType(ABSOLUTE);
			loop(18+ex*6){
         	SetShotDirectionType(ABSOLUTE);
         	CreateShot01( GetX()+90, GetY()-10, 3+ex*1, b*(20-5*ex)+a*3, ORANGE01, 0);
         	CreateShot01( GetX()-90, GetY()-10, 3+ex*1, b*(20-5*ex)-a*3, ORANGE01, 0);
				b++;
			}
         PlaySE(seshot1);
			wait(30-ex*10);
   		a++;
		}
		wait(30);
   	let a=0;
   	loop(6){
         if(phase<1){return;}
			let b=0-ex/2;
         SetShotDirectionType(ABSOLUTE);
         let p1=atan2( GetPlayerY()-(GetY()-40), GetPlayerX()-(GetX()+90));
         let p2=atan2( GetPlayerY()-(GetY()-40), GetPlayerX()-(GetX()-90));
			loop(1+ex){
         	SetShotDirectionType(ABSOLUTE);
         	CreateShot01( GetX()+90, GetY()-10, 7+ex*5, genteikaku(p1,30)+b*30, WHITE02, 0);
         	CreateShot01( GetX()-90, GetY()-10, 7+ex*5, genteikaku(p2,30)+b*30, WHITE02, 0);
				b++;
			}
         PlaySE(seshot2);
			wait(9);
   		a++;
		}
   	loop(6){
         if(phase<1){return;}
			let b=-0.5-ex/2;
         SetShotDirectionType(ABSOLUTE);
         let p1=atan2( GetPlayerY()-(GetY()-40), GetPlayerX()-(GetX()+90));
         let p2=atan2( GetPlayerY()-(GetY()-40), GetPlayerX()-(GetX()-90));
			loop(2+ex){
         	SetShotDirectionType(ABSOLUTE);
         	CreateShot01( GetX()+90, GetY()-10, 7+ex*5, genteikaku(p1,30)+b*30, WHITE02, 0);
         	CreateShot01( GetX()-90, GetY()-10, 7+ex*5, genteikaku(p2,30)+b*30, WHITE02, 0);
				b++;
			}
         PlaySE(seshot2);
			wait(9);
   		a++;
		}
   	}
		wait(60);
   	let a=0;
      PlaySE(seshot2);
   	loop(36){
         CreateShot01( GetX()+cos(a*10)*40, GetY()-30+sin(a*10)*20, 8+ex*7, a*10+120, WHITE02, 0);
   		a++;
   	}
   	
	}
	
	
   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,1);
		
      //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".\efanc.txt"
}
