
script_enemy_main{
	let csd		=GetCurrentScriptDirectory;
	let imgBoss	=csd ~ ".\img\dot_nue.png";
	let shotData	=csd ~ ".\img\shot_all.txt";

	@Initialize {
        	SetLife(1200);
		SetTimer(99);
		SetInvincibility(180);
		InitializeAction();
		LoadUserShotData(shotData);
		SetShotAutoDeleteClip(100,100,100,100);
        	LoadGraphic(imgBoss);
        	Main;
	}
	
	@MainLoop {
        	SetCollisionA(GetX, GetY, 32);
        	SetCollisionB(GetX, GetY, 16);
		if(GetLife>20){SetDamageRate(19,0);}
		else{SetDamageRate(0,0);}
		DeleteEnemyShotImmediatelyInCircle(ALL,0,0,5);
		if(GetTimer==10&&counter==0){
			Timer;
			counter++;
		}
		if(OnPlayerMissed){VanishEnemy;}
		yield;
	}

	@DrawLoop {
		SetColor(255,255,255);
		SetGraphicScale(1,1);
		DrawBoss(imgBoss);
	}

	sub standBy {
		SetMovePosition03(224, 240, 10, 7);
		SetAction(ACT_MOVE, 60);
		wait(60);
	}

    	task Main {
        	yield;
		standBy;
		CutIn(YOUMU,"KuXl[Nt@gv",NULL,0,0,0,0);
		SetScore(100000000);
		SetAction(ACT_SPELL, 120);
		wait(60);
		SetColor(255,63,63);
		Concentration01(60);
		PlaySE(seCharge1);
		wait(60);
		death;
		attack;
	}

	task attack{
		let type=1;
		loop{
			let angle=0;
			let randxy=rand_int(0,1);
			let randangle=[0,6];
			while(angle<360){
				CreateHenyoriLaser(GetX,GetY,3,angle+randangle[randxy],40,10,228,0,180);
				CreateHenyoriLaser(GetX,GetY,3,angle+6+randangle[randxy],40,10,228,type,180);
				angle+=12;
			}
			PlaySE(seShot3);
			if(type==2){type=0;}
			type++;
			wait(480);
			yield;
		}
	}

	task CreateHenyoriLaser(x,y,speed,angle,length,width,color,type,time) {
		let Obj = Obj_Create(OBJ_SINUATE_LASER);
		let addangle=0;

		Obj_SetPosition(Obj, x, y);
		Obj_SetAngle(Obj, angle);
		Obj_SetSpeed(Obj, speed);
		ObjSinuateLaser_SetLength(Obj,length);
		ObjSinuateLaser_SetWidth(Obj,width);
		ObjShot_SetGraphic(Obj, color);
		Obj_SetAutoDelete(Obj,true);
		ObjShot_SetBombResist(Obj,false);
		ObjShot_SetDelay(Obj, 0);
		
		shot;

		while(Obj_BeDeleted(Obj)==false) {
			Obj_SetAngle(Obj, angle+35*sin(addangle));
			addangle+=30;
			wait(1);
			if(type==1&&addangle==360){
				loop(72){
					Obj_SetAngle(Obj, angle+addangle);
					addangle+=5;
					wait(1);
				}
			}
			if(type==2&&addangle==540){
				loop(72){
					Obj_SetAngle(Obj, angle-addangle+180);
					addangle+=5;
					wait(1);
				}
			}
			yield;
		}
		
		task shot{
			while(Obj_BeDeleted(Obj)==false) {
				wait(15);
				CreateCenShot(Obj_GetX(Obj),Obj_GetY(Obj),1.5,245,time);
				time-=15;
				yield;
			}
		}

	}

	task CreateCenShot(x,y,speed,color,time) {
		let Obj = Obj_Create(OBJ_SHOT);
		let upspeed=0;

		Obj_SetPosition(Obj, x, y);
		Obj_SetAngle(Obj, atan2(240-y, 224-x));
		Obj_SetSpeed(Obj, 0);
		ObjShot_SetGraphic(Obj, color);
		ObjShot_SetDelay(Obj, 10);

		wait(time);
		loop(10){
			upspeed+=speed/10;
			Obj_SetSpeed(Obj, upspeed);
			wait(5);
		}
	}

	task death{
		loop{
			if(GetLife<=20){break;}
			yield;
		}
		SetCommonDataEx("Effect","bossx",GetX);
		SetCommonDataEx("Effect","bossy",GetY);
		SetCommonDataEx("Effect","boss",1);
		if(GetTimer>0&&GetLife<=20){
			AddLife(-20);
		}
	}

	@Finalize{
		DeleteGraphic(imgBoss);
	}

	#include_function ".\lib\lib_anime_Nue.txt"
	#include_function ".\lib\lib_Functions.txt"
}