Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #TouhouDanmakufu
- #Title[Trap Sign "Ice Cage"]
- #Text[Cirno's Spell Card]
- #BGM[script\cirno\bgm\Marisa.mp3]
- #PlayLevel[Lunatic]
- #Player[FREE]
- #ScriptVersion[2]
- script_enemy_main {
- let CSD = GetCurrentScriptDirectory;
- let boss = CSD ~ "system/anm.png";
- let cut = CSD ~ "system/cirnocutin.png";
- let bg = CSD ~ "bg/trapbg.png";
- let lay = CSD ~ "system/lay.png";
- let slide = 0;
- let spell = CSD ~ "sfx/Spell.wav";
- let sfx1 = CSD ~ "sfx/ReverseA.wav";
- let sfx2 = CSD ~ "sfx/ShotB.wav";
- let sfx3 = CSD ~ "sfx/ShotA.wav";
- let sfx4 = CSD ~ "sfx/Shot2.wav";
- let concenfx = CSD ~ "sfx/Concen.wav";
- let f = 0;
- let f2 = 0;
- @Initialize {
- LoadSE(spell);
- PlaySE(spell);
- LoadSE(sfx2);
- LoadSE(concenfx);
- LoadSE(sfx1);
- LoadSE(sfx3);
- SetLife(500);
- SetDamageRate(10,15);
- SetTimer(90);
- SetScore(48000000);
- SetShotAutoDeleteClip(100,100,100,100);
- SetMovePosition01(GetCenterX, GetClipMinY + 120, 5);
- LoadGraphic(boss);
- LoadGraphic(cut);
- LoadGraphic(bg);
- LoadGraphic(lay);
- LoadSE(sfx4);
- CutIn(YOUMU, "Trap Sign"\""Ice Cage"\",cut,0,0,507,600);
- mainTask;
- }
- @MainLoop {
- SetCollisionA(GetX,GetY,24);
- SetCollisionB(GetX,GetY,16);
- yield;
- }
- @DrawLoop {
- SetTexture(boss);
- SetRenderState(ALPHA);
- SetAlpha(255);
- SetGraphicScale(1,1);
- SetGraphicAngle(0,0,0);
- if(int(GetSpeedX())==0){
- if(f<10){ SetGraphicRect(0,0,64,64); }
- if(f>=10 && f<20){ SetGraphicRect(64,0,128,64); }
- if(f>=20 && f<30){ SetGraphicRect(128,0,192,64); }
- if(f>=30 && f<40){ SetGraphicRect(192,0,256,64); }
- f2=0;
- }
- if(GetSpeedX()>0){
- if(f2<5){ SetGraphicRect(0,64,64,128); }
- if(f2>=5 && f2<10){ SetGraphicRect(64,64,128,128); }
- if(f2>=10 && f2<15){ SetGraphicRect(128,64,192,128); }
- if(f2>=15){ SetGraphicRect(192,64,256,128); }
- f2++;
- }
- if(GetSpeedX()<0){
- SetGraphicAngle(180,0,0);
- if(f2<5){ SetGraphicRect(0,64,64,128); }
- if(f2>=5 && f2<10){ SetGraphicRect(64,64,128,128); }
- if(f2>=10 && f2<15){ SetGraphicRect(128,64,192,128); }
- if(f2>=15){ SetGraphicRect(192,64,256,128); }
- f2++;
- }
- DrawGraphic(GetX,GetY);
- f++;
- if(f==40){f=0;}
- }
- @BackGround {
- SetTexture(bg);
- SetRenderState(ALPHA);
- SetAlpha(255);
- SetGraphicRect(0,0,1600,1118);
- SetGraphicScale(1,1);
- SetGraphicAngle(0,0,0);
- DrawGraphic(GetCenterX,GetCenterY);
- SetTexture(lay);
- SetRenderState(ADD);
- SetGraphicRect(0,0,20000,20000);
- SetGraphicScale(1,1);
- SetGraphicAngle(0,0,0);
- DrawGraphic(GetCenterX+slide,GetCenterY+slide);
- slide+=2;
- }
- @Finalize {
- DeleteGraphic(boss);
- DeleteGraphic(bg);
- DeleteGraphic(cut);
- DeleteSE(sfx1);
- DeleteSE(sfx2);
- DeleteSE(concenfx);
- DeleteSE(sfx3);
- DeleteSE(sfx4);
- }
- task mainTask{
- yield;
- cage;
- wait(60);
- PlaySE(concenfx);
- Concentration01(60);
- Concentration02(60);
- movement;
- }
- // movement
- task movement{
- wait(60);
- loop{
- wait(120);
- shot;
- wait(100);
- spin;
- spin2;
- wait(10);
- SetMovePosition03(GetCenterX-125,GetCenterY,7,5);//goes left
- wait(90);
- PlaySE(sfx4);
- circle(GetEnemyX,GetEnemyY,3,0,1);
- circle(GetEnemyX,GetEnemyY,3,-90,1);
- circle(GetEnemyX,GetEnemyY,3,90,1);
- circle(GetEnemyX,GetEnemyY,3,60,1);
- circle(GetEnemyX,GetEnemyY,3,-60,1);
- circle(GetEnemyX,GetEnemyY,3,30,1);
- circle(GetEnemyX,GetEnemyY,3,-30,1);
- wait(240);
- SetMovePosition03(GetCenterX+125,GetCenterY,7,5);//goes right
- wait(240);
- SetMovePosition03(GetCenterX, GetClipMinY + 120,7,5);//goes center
- wait(1);
- yield;
- }
- }
- //object bullet cage
- task cage{
- wait(190);
- PlaySE(sfx1);
- loop{
- right(GetCenterX+185,GetClipMaxY,20,270);
- left(GetCenterX-185,GetClipMaxY,20,270);
- top(GetCenterX-185,GetClipMinY,20,0);
- bottom(GetCenterX+185,GetClipMaxY,20,180);
- diag1(GetCenterX-185,GetClipMinY,20,51); // left side
- diag2(GetCenterX+185,GetClipMinY,20,129); // right side
- yield;
- }
- }
- //right object bullet
- task right(x,y,speed,angle){
- let obj=Obj_Create(OBJ_SHOT);
- Obj_SetPosition(obj,x,y);
- Obj_SetAngle(obj,angle);
- Obj_SetSpeed(obj,speed);
- ObjShot_SetGraphic(obj,WHITE04);
- ObjShot_SetDelay(obj,5);
- ObjShot_SetBombResist(obj,true);
- while(Obj_BeDeleted(obj)==false) {
- yield;
- }
- }
- task left(x,y,speed,angle){
- let obj=Obj_Create(OBJ_SHOT);
- Obj_SetPosition(obj,x,y);
- Obj_SetAngle(obj,angle);
- Obj_SetSpeed(obj,speed);
- ObjShot_SetGraphic(obj,WHITE04);
- ObjShot_SetDelay(obj,5);
- ObjShot_SetBombResist(obj,true);
- while(Obj_BeDeleted(obj)==false) {
- yield;
- }
- }
- task top(x,y,speed,angle){
- let obj=Obj_Create(OBJ_SHOT);
- Obj_SetPosition(obj,x,y);
- Obj_SetAngle(obj,angle);
- Obj_SetSpeed(obj,speed);
- ObjShot_SetGraphic(obj,WHITE04);
- ObjShot_SetDelay(obj,5);
- ObjShot_SetBombResist(obj,true);
- while(Obj_BeDeleted(obj)==false) {
- yield;
- }
- }
- task bottom(x,y,speed,angle){
- let obj=Obj_Create(OBJ_SHOT);
- Obj_SetPosition(obj,x,y);
- Obj_SetAngle(obj,angle);
- Obj_SetSpeed(obj,speed);
- ObjShot_SetGraphic(obj,WHITE04);
- ObjShot_SetDelay(obj,5);
- ObjShot_SetBombResist(obj,true);
- while(Obj_BeDeleted(obj)==false) {
- yield;
- }
- }
- task diag1(x,y,speed,angle){
- let obj=Obj_Create(OBJ_SHOT);
- Obj_SetPosition(obj,x,y);
- Obj_SetAngle(obj,angle);
- Obj_SetSpeed(obj,speed);
- ObjShot_SetGraphic(obj,WHITE04);
- ObjShot_SetDelay(obj,5);
- ObjShot_SetBombResist(obj,true);
- while(Obj_BeDeleted(obj)==false) {
- yield;
- }
- }
- task diag2(x,y,speed,angle){
- let obj=Obj_Create(OBJ_SHOT);
- Obj_SetPosition(obj,x,y);
- Obj_SetAngle(obj,angle);
- Obj_SetSpeed(obj,speed);
- ObjShot_SetGraphic(obj,WHITE04);
- ObjShot_SetDelay(obj,5);
- ObjShot_SetBombResist(obj,true);
- while(Obj_BeDeleted(obj)==false) {
- yield;
- }
- }
- // Attack Center Side
- task spin{
- let x = 0;
- let dir = 0;
- wait(1);
- loop(1){
- PlaySE(sfx3);
- while(x<36){
- CreateShotA(1,GetEnemyX,GetEnemyY,1);
- SetShotDataA(1,0,1,dir,1,-1,3,BLUE21);
- SetShotDataA(1,160,1,dir,0,-1,NULL,BLUE21);
- FireShot(1);
- dir+=360/36;
- x++;
- }
- x = 0;
- dir = 0;
- wait(10);
- yield;
- }
- }
- task spin2{
- let x = 0;
- let dir = 0;
- wait(1);
- loop(1){
- PlaySE(sfx3);
- while(x<36){
- CreateShotA(1,GetEnemyX,GetEnemyY,1);
- SetShotDataA(1,0,1,dir,-1,-1,3,GREEN21);
- SetShotDataA(1,160,1,dir,0,-1,NULL,BLUE21);
- FireShot(1);
- dir+=360/36;
- x++;
- }
- x = 0;
- dir = 0;
- wait(10);
- yield;
- }
- }
- task shot{
- let x = 0;
- let dir = 0;
- wait(1);
- loop(10){
- PlaySE(sfx2);
- while(x<36){
- CreateShotA(1,GetEnemyX,GetEnemyY,1);
- SetShotDataA(1,0,1,dir,0,-10,1,BLUE02);
- SetShotDataA(1,30,3,dir,0,1,2,NULL);
- FireShot(1);
- dir+=360/5;
- x++;
- }
- x = 0;
- dir += 20;
- wait(10);
- yield;
- }
- }
- //Attack Left Side
- task circle(x,y,v,dir,delay){
- let obj=Obj_Create(OBJ_SHOT);
- let time = 0;
- Obj_SetPosition(obj,x,y);
- Obj_SetSpeed(obj,v);
- Obj_SetAngle(obj,dir);
- ObjShot_SetGraphic(obj,RED03);
- ObjShot_SetDelay(obj,delay);
- ObjShot_SetBombResist(obj,true);
- //as long as the object exist
- while(!Obj_BeDeleted(obj)){
- //Scatter Shot X side
- if(Obj_GetX(obj) > GetClipMaxX) {
- PlaySE(sfx1);
- loop(15){CreateShot01(Obj_GetX(obj),Obj_GetY(obj),3,dir,BLUE01,0); dir+=360/8; }
- Obj_Delete(obj);
- }
- //ScatterSide Y Side MAX
- if(Obj_GetY(obj) > GetClipMaxY) {
- PlaySE(sfx1);
- loop(15){CreateShot01(Obj_GetX(obj),Obj_GetY(obj),3,dir,BLUE01,0); dir+=360/8; }
- Obj_Delete(obj);
- }
- //Trail
- if(time==5){
- PlaySE(sfx3);
- CreateShotA(1,Obj_GetX(obj),Obj_GetY(obj),15);
- SetShotDataA(1,0,0,rand(0,359),0,0,0,BLUE04);
- SetShotDataA(1,160,0,NULL,0,0.01,2,BLUE04);
- FireShot(1);
- time = 0;
- }
- time++;
- yield;
- }
- }
- //Wait Function
- function wait(w){
- loop(w) {yield;}
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement