#東方弾幕風 #Title[テステステス] #Text[] #Image[] #BackGround[] #BGM[] #PlayLevel[Normal] #Player[REIMU,MARISA] #ScriptVersion[2] script_enemy_main { let spellname=""; let ImgBoss="script\img\dot_reimu.png"; let moveflag0=0; let moveflag1=0; let moveflag2=0; let moveflag3=0; @Initialize { SetLife(10000); SetX(GetClipMinX-50); SetY(GetClipMinY-120); LoadGraphic(ImgBoss); SetTexture(ImgBoss); SetEnemyMarker(true); main; } @MainLoop { SetCollisionA(GetX,GetY,32); SetCollisionB(GetX,GetY,24); setGraphicMove; if(OnBomb) { SetDamageRate(0,0); } else { SetDamageRate(100,0); } yield; } //==================スペル宣言まとめ-==================================== sub CallSpell{ // CutIn(YOUMU,spellname,cutin,0,0,0,0); SetTimer(180); SetScore(15000000); } //==================メインタスク========================================= task main { SetDamageRate(0,0); wait(30); fastMove(GetCenterX,GetClipMinY+120,60); wait(80); CallSpell; wait(20); SetInvincibility(240); Concentration01(120); SetDamageRate(100,0); // shot; } //===================弾幕タスクここから================================== task shot { Shield; FirstStep; // ScondStep; // ThirdStep; // FinalStep; } //===================各段階まとめ======================================== task FirstStep { First1(5,1.5,2); First2; } //=================第一段階============================================== //四角ショットを全方位nway弾にする、発射間隔設定 task First1(n,speed,delay) { while(GetEnemyLife>7500) { let a=0; let int=360/n; loop(n) { SquareShot(GetAngleToPlayer+a,speed); a+=int; } wait(90*delay); } } //全方位弾を紅白交互に、発射間隔設定 task First2 { wait(120); while(GetEnemyLife>7500) { AroundShot(GetX,GetY,2.5,GetAngleToPlayer,18,RED02,40); wait(40); AroundShot(GetX,GetY,2.5,GetAngleToPlayer,18,WHITE02,40); wait(40); } } //全方位弾作成 function AroundShot(x,y,speed,baseangle,n,grf,delay) { let a=0; let int=360/n; loop(n) { CreateShot01(x,y,speed,baseangle+a,grf,delay); a+=int; } } //四角にして角度、速度を指定できるようにしてショットにする function SquareShot(angle,speed) { let a=0; let shotX=-cos(angle)*speed; let shotY=sin(angle)*speed; loop(4){ Square(a,shotX,shotY); a+=1; } } //レーザー結界流用、飛び出すようにする task Square(num,x,y) { let angle=90*num; let vx=0; let vy=0; let VX=x; let VY=y; let r=141.421; let rad=0; let obj =Obj_Create(OBJ_LASER); Obj_SetX(obj,GetX()+rad*cos(angle-90)); Obj_SetY(obj,GetY()+rad*sin(angle-90)); Obj_SetAngle(obj,angle+45); ObjShot_SetGraphic(obj,BLUE11); ObjShot_SetDelay(obj,110); ObjLaser_SetLength(obj,(2^0.5)*rad); ObjLaser_SetWidth(obj,6+rad*0.05); Obj_SetAutoDelete(obj,false); ObjShot_SetBombResist(obj,true); ObjLaser_SetSource(obj,false); loop(140) { if (GetEnemyLife<7500) { ObjShot_FadeDelete(obj); } angle+=-1; Obj_SetX(obj,GetX()+rad*cos(angle-90)); Obj_SetY(obj,GetY()+rad*sin(angle-90)); Obj_SetAngle(obj,angle+45); ObjLaser_SetLength(obj,(2^0.5)*rad); ObjLaser_SetWidth(obj,6+rad*0.05); if(radHP) { angle+=speed; Obj_SetX(obj,GetX()+rad*cos(angle-90)); Obj_SetY(obj,GetY()+rad*sin(angle-90)); Obj_SetAngle(obj,angle+45); ObjLaser_SetLength(obj,(2^0.5)*rad); ObjLaser_SetWidth(obj,6+rad*0.05); if(rad