#TouhouDanmakufu
#Title[Spell Card 5]
#Text[Lunatic Mode.]
#Player[FREE]
#ScriptVersion[2]

script_enemy_main{
let CSD = GetCurrentScriptDirectory;
let niceshot = CSD~"\supershot\supershot.txt";
let death = CSD~"BossDeath.wav";
let time01 = CSD~"timeout01.wav";
let time02 = CSD~"timeout02.wav";
let frame = 0;
let spellbg = CSD~"spellbg.png";
let spellbg2 = CSD~"spellbg2.png";
let circle = CSD~"Circle.png";
let booksheet = CSD~"servant.png";
#include_function ".\AnimationLib.dnh"
#include_function ".\FunctionLib.dnh"


 @Initialize{
                LoadUserShotData(niceshot);
                LoadGraphic(circle);
                LoadGraphic(booksheet);
				LoadGraphic(spellbg2);
                LoadGraphic(spellbg);
		SetLife(1000);
		SetTimer(60);
                SetScore(100000);
		SetInvincibility(100);
		SetMovePosition03(GetCenterX, GetCenterY-120, 10, 4);
                SetDamageRate(10,5);
                SetEffectForZeroLife(70,200,1);
				SetText(""\""Thors Wrath"\");
                MOVE;
                mainTask;
                Timer;

    CreateAnimation("book", "intro", 4);
    SetAnimationFrame("book", "intro", 0, booksheet, 12, 0, 2, 31, 30);
    SetAnimationFrame("book", "intro", 1, booksheet, 12, 31, 2, 62, 30);
    SetAnimationFrame("book", "intro", 2, booksheet, 12, 62, 2, 93, 30);
    SetAnimationFrame("book", "intro", 3, booksheet, 12, 93, 2, 124, 30);

    Animate("book","intro",false);

  }


  @MainLoop{
  yield;
  SetCollisionA(GetX,GetY,10);
  SetCollisionB(GetX,GetY,15);
  if(frame<900){frame++;}
  if(frame==800){SetDamageRate(50,50);}
 }

 let circlespin = 0;
 let wave = 0;
 let float = 0;

 @DrawLoop{

  SetTexture(circle);
  SetGraphicRect(64,64,192,192);
  SetGraphicScale(1+sin(wave)*0.5,1+sin(wave)*0.5);
  SetGraphicAngle(0,0,circlespin);
  SetAlpha(150);
  DrawGraphic(GetX,GetY);
  circlespin+=5;
  wave+=2;

  SetTexture(booksheet);
  SetGraphicScale(1,1);
  SetAlpha(255);
  SetGraphicAngle(0,0,0);
  DrawAnimatedSprite("book", GetX, GetY+sin(float)*4);
  float += (1/((|GetSpeedX|)+1))*3;

 }

 @Finalize{
 }
 
 let bgalpha=0;
 let bgalpha2=0;
 let bgscroll=0;

 @BackGround{
  if(bgalpha<100){bgalpha+=2;}
  if(bgalpha2<70){bgalpha2+=2;}
  
  SetTexture(spellbg);
  SetGraphicRect(0,0,256,256);
  SetGraphicScale(2,2);
  SetAlpha(bgalpha);
  DrawGraphic(GetCenterX,GetCenterY);
  
  SetTexture(spellbg2);
  SetGraphicRect(0+bgscroll,0+bgscroll,256+bgscroll,256+bgscroll);
  SetGraphicScale(2,2);
  SetAlpha(bgalpha2);
  DrawGraphic(GetCenterX,GetCenterY);
  
  bgscroll+=2;
 }

     task mainTask{
     wait(100);
     let addangle=0;
	 
     loop{
     
	 ascent(i in 0..4){
     CreateEnemyFromScript("Thunder",GetClipMinX+20+i*100,GetClipMinY,0,0,addangle);
	 addangle+=47.5;
	 wait(30);}
	 
	 wait(200);

	 ascent(i in 0..4){
	 CreateEnemyFromScript("Thunder",GetPlayerX,GetClipMinY,0,0,addangle);
	 addangle+=39.7;
	 wait(30);
	 }
	 
	 wait(200);
	 
	 ascent(i in 0..4){
     CreateEnemyFromScript("Thunder",GetClipMaxX-60-i*100,GetClipMinY,0,0,addangle);
	 addangle+=47.5;
	 wait(30);}
	 
	 wait(200);
	 
	 ascent(i in 0..4){
	 CreateEnemyFromScript("Thunder",GetPlayerX,GetClipMinY,0,0,addangle);
	 addangle+=39.7;
	 wait(30);
	 }
	 
	 wait(200);
	 
	 }
     }	 
     
	
     task MOVE{
     wait(100);
     loop{
     wait(300);
     SetMovePosition03(GetPlayerX, GetCenterY-120, 10, 3);
     }
     }

     task Timer{
     loop{
	if (GetTimer > 5 && GetTimer <= 11){PlaySE(time01);}
	if (GetTimer >= 1 && GetTimer <= 5){PlaySE(time02);}
	wait(60);
	}
        }
     
}

//Familiar Scripting Starts Here!!!

script_enemy Thunder {
 let CSD = GetCurrentScriptDirectory;
 let niceshot = CSD~"\supershot\supershot.txt";
 let fampoint = GetArgument;
 let SE4 = CSD~"Shot4.WAV";
 let SE5 = CSD~"Shot5.WAV";
 let frame = 0;
#include_function ".\FunctionLib.dnh"
@Initialize{
    LoadUserShotData(niceshot);
    SetLife(10);
    MOVE;
    Shoot;
    Delete;
 }

@MainLoop{
  yield;
 }

@DrawLoop{
 }

@Finalize{
 }

    task MOVE{
	let wave = 0;
    loop{
	SetX(GetX+sin(wave)*5);
	SetY(GetY+7);
	wave+=15;
	yield;
    }
    }
  
    task Shoot{
	let addangle = 0;
	
	ascent(i in 0..100){
	CreateShotA(i,GetX,GetY,10);
	SetShotDataA(i,0,0,fampoint+addangle,20,0,0,155);
	SetShotDataA(i,200-i*2,0,NULL,0,0.01,1,NULL);
	FireShot(i);
	PlaySE(SE4);
	wait(2);
	addangle+=0.5;
    }
    }
 
    task Delete{
    loop{
	
    if(GetY>=GetClipMaxY){
	PlaySE(SE5);
	ascent(i in 0..50){
	CreateShot02(GetX,GetY,6,GetAngleToPlayer+i*360/50,-0.1,2,240,50);
	}
	yield;
	VanishEnemy;
    }
	yield;
    }
	}



}



