#TouhouDanmakufu
#Title[J64 : "Satiated sign : Or not..."]
#Text[J64 est tres enervant je sais, mais concentrez-vous un peu ! Ici, il se montre tres glouton et essaie de vous avaler ! Resistez a la force d'aspiration tout en faisant attention aux etoiles qui reviennent. Pour aspirer, J64 a du s'arreter, il est vulnerable, profitez-en pour lui donner une bonne lecon !]
#Image[]
#BGM[script\DanMUku\Stage4\Stage4.mp3]
#Player[script\DanMUku\Joueur\KorA\KorHosik.txt, script\DanMUku\Joueur\KorB\KorB.txt, script\DanMUku\Joueur\KorC\KorC.txt]
#ScriptVersion[2]

script_enemy_main
{    
   let imgEnemy="script\DanMUku\Stage4\Image\j64.png";
   let count=-100;
   let angle=0;
   let x=GetX;
   let a = 0;
   let b = 36;
   let couleur=0;
   let dif=0;
   let q=0;
    let bg = "script\DanMUku\Stage1\Image\etoiles.png";
    let tir ="script\DanMUku\Stage1\Son\tir.wav";
    let munch ="script\DanMUku\Stage1\Son\muncher.wav";
    let aspire="script\DanMUku\Stage4\Son\aspire.mp3";
	let bonus=false;

 function Wait(let frames){
   loop(frames){yield;}
 }

   @Initialize
   {
      LoadUserShotData("script\DanMUku\MUtir\MUtir.txt");
      LoadGraphic(imgEnemy);
      LoadGraphic(bg);
      LoadSE(tir);
      LoadSE(munch);
      LoadSE(aspire);
            SetLife(6000);
            SetTimer(32);
            SetInvincibility(100);
            SetEnemyMarker(true);
            SetScore(1500000);
            CutIn(YOUMU, "Satiated sign "\""Or not..."\", "script\DanMUku\Stage4\Image\j64cutin.png", 0,0,121, 214);
	    SetMovePosition02(GetCenterX, GetCenterY, 60);
 
   }
   
   @MainLoop
   {
          SetCollisionA(GetX, GetY, 16);
        SetCollisionB(GetX, GetY, 16);

	if(GetTimer==5){
		bonus=true;
	}

	if(count==330&&dif==0){
		couleur=54;
		PlaySE(tir);
		loop(20){
			Bullet(GetX, GetY, 2.75, -0.005, angle, -1/2, couleur);
			couleur+=2;
			if(couleur==60){couleur=54;}
			angle+=360/20;
		}
	}
	if(count==240&&dif==0){
		couleur=53;
		PlaySE(tir);
		loop(16){
			Bullet(GetX, GetY, 3, -0.005, angle, 0.8/2, couleur);
			couleur+=2;
			if(couleur==59){couleur=53;}
			angle+=360/16;
		}
	}
	if(count==150&&dif==0){
		couleur=54;
		PlaySE(tir);
		loop(12){
			Bullet(GetX, GetY, 2.25, -0.005, angle, -0.6/2, couleur);
			couleur+=2;
			if(couleur==60){couleur=54;}
			angle+=360/12;
		}
	}
	if(count==60&&dif==0){
		couleur=53;
		PlaySE(tir);
		loop(8){
			Bullet(GetX, GetY, 1.5, -0.005, angle, 0.4/2, couleur);
			couleur+=2;
			if(couleur==59){couleur=53;}
			angle+=360/8;
		}
	}

	if(count==0&&dif==0){
		couleur=38;
		PlaySE(tir);
		loop(14){
			Bullet(GetX, GetY, 1, -0.005, angle, -0.4/2, couleur);
			couleur+=2;
			if(couleur==52){couleur=38;}
			angle+=360/14;
		}
	}
	if(count==30&&dif==0){
		couleur=39;
		PlaySE(tir);
		loop(14){
			Bullet(GetX, GetY, 1.25, -0.005, angle, 0.4/2, couleur);
			couleur+=2;
			if(couleur==53){couleur=39;}
			angle+=360/14;
		}
	}
	if(count==90&&dif==0){
		couleur=38;
		PlaySE(tir);
		loop(28){
			Bullet(GetX, GetY, 1.75, -0.005, angle, -0.6/2, couleur);
			couleur+=2;
			if(couleur==52){couleur=38;}
			angle+=360/28;
		}
	}
	if(count==120&&dif==0){
		couleur=39;
		PlaySE(tir);
		loop(28){
			Bullet(GetX, GetY, 2, -0.005, angle, 0.6/2, couleur);
			couleur+=2;
			if(couleur==53){couleur=39;}
			angle+=360/28;
		}
	}
	if(count==180&&dif==0){
		couleur=38;
		PlaySE(tir);
		loop(42){
			Bullet(GetX, GetY, 2.5, -0.005, angle, -0.8/2, couleur);
			couleur+=2;
			if(couleur==52){couleur=38;}
			angle+=360/42;
		}
	}
	if(count==210&&dif==0){
		couleur=39;
		PlaySE(tir);
		loop(42){
			Bullet(GetX, GetY, 2.5, -0.005, angle, 0.8/2, couleur);
			couleur+=2;
			if(couleur==53){couleur=39;}
			angle+=360/42;
		}
	}
	if(count==270&&dif==0){
		couleur=38;
		PlaySE(tir);
		loop(56){
			Bullet(GetX, GetY, 2.75, -0.005, angle, -1/2, couleur);
			couleur+=2;
			if(couleur==52){couleur=38;}
			angle+=360/56;
		}
	}
	if(count==300&&dif==0){
		couleur=39;
		PlaySE(tir);
		loop(56){
			Bullet(GetX, GetY, 2.75, -0.005, angle, 1/2, couleur);
			couleur+=2;
			if(couleur==53){couleur=39;}
			angle+=360/56;
		}
	}
	if(count>600||dif==1){
	SetPlayerX(GetPlayerX-cos(GetAngleToPlayer));
	SetPlayerY(GetPlayerY-sin(GetAngleToPlayer));
	}
	if(count%6==0&&(count>600||dif==1)){
		if(a==92||a==0){a=67;b=92;}
		else{a=92;b=120;}
	}
	if(count>=600&&count%60==0){
		LoadSE(aspire);
		PlaySE(aspire);
	}
      count++;
      yield;
   }
   
   @Finalize
   {
CreateItem(ITEM_SCORE, rand(GetX-10, GetX+10), rand(GetY-10, GetY+10));  
CreateItem(ITEM_SCORE, rand(GetX-10, GetX+10), rand(GetY-10, GetY+10));  
CreateItem(ITEM_SCORE, rand(GetX-10, GetX+10), rand(GetY-10, GetY+10));  
CreateItem(ITEM_SCORE, rand(GetX-10, GetX+10), rand(GetY-10, GetY+10));  
CreateItem(ITEM_SCORE, rand(GetX-10, GetX+10), rand(GetY-10, GetY+10));  
CreateItem(ITEM_SCORE, rand(GetX-10, GetX+10), rand(GetY-10, GetY+10));  
CreateItem(ITEM_SCORE, rand(GetX-10, GetX+10), rand(GetY-10, GetY+10));  
CreateItem(ITEM_SCORE, rand(GetX-10, GetX+10), rand(GetY-10, GetY+10));  
CreateItem(ITEM_SCORE, rand(GetX-10, GetX+10), rand(GetY-10, GetY+10));  

	if(bonus){
		SetCommonData("B", true);
	}

      DeleteGraphic(imgEnemy);
   }
   
   @DrawLoop
   {

	if(x>GetX){
		SetGraphicAngle(180,0,0);
	}
	if(x<GetX){
		SetGraphicAngle(0,0,0);
	}
      x=GetX;
      SetColor(255,255,255);
            SetRenderState(ALPHA);
            SetTexture(imgEnemy);
            SetGraphicRect(a,0,b,43);
            DrawGraphic(GetX,GetY);
   }

   @BackGround{
            SetTexture(bg);
            SetRenderState(ALPHA);
            SetAlpha(255);
            SetGraphicRect(0, 0, 50000+q, 50000+q);
            SetGraphicScale(1,1);
            SetGraphicAngle(0, 0, 0);
            DrawGraphic(GetCenterX+q, GetCenterY+q);
		q-=2;

	}


	task Bullet(x, y, v, dv, dir, angv, graph){

	let obj= Obj_Create(OBJ_SHOT);
	Obj_SetPosition(obj, x, y);
	Obj_SetSpeed(obj, v);
	Obj_SetAngle(obj, dir);
	ObjShot_SetGraphic(obj, graph);
	Obj_SetAutoDelete(obj, false);
	ObjShot_SetBombResist(obj, true);
	while(Obj_BeDeleted(obj)==false){
		if(count<400){
		Obj_SetAngle(obj, Obj_GetAngle(obj)+angv);}
		if(Obj_GetSpeed(obj)>0.5&&count<700){
		Obj_SetSpeed(obj, Obj_GetSpeed(obj)+dv);}
		if(absolute(Obj_GetX(obj)-GetCenterX)<1&&absolute(Obj_GetY(obj)-GetCenterY)<1&&count>600){
		CreateShot01(x, y, v, dir, graph, 0);		
		Obj_Delete(obj);}
		if(count==600){
		Obj_SetAngle(obj, atan2(-Obj_GetY(obj)+GetY, -Obj_GetX(obj)+GetX));}
		yield;
	}

	}
}
