Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #TouhouDanmakufu[Single]
- #ScriptVersion[3]
- #Title["N1"]
- #Text["???"]
- let objBoss;
- let way = 1;
- let stgy=GetStgFrameHeight()/2;
- let idle = true;
- let atk = false;
- @Event{
- alternative(GetEventType())
- case(EV_REQUEST_LIFE){
- SetScriptResult(2000);
- }
- case(EV_REQUEST_TIMER){
- SetScriptResult(99);
- }
- case(EV_REQUEST_SPELL_SCORE){
- SetScriptResult(1000000);
- }
- }
- @Initialize{
- objBoss = ObjEnemy_Create(OBJ_ENEMY_BOSS);
- ObjEnemy_Regist(objBoss);
- ObjPrim_SetTexture(objBoss, imgBoss);
- ObjSprite2D_SetSourceRect(objBoss, 0, 0, 148, 125);
- ObjSprite2D_SetDestCenter(objBoss);
- ObjMove_SetDestAtFrame(objBoss, GetCenterX(), 60, 60);
- StartPhase;
- wait(50);
- MainPhase;
- MainSplit;
- yield;
- TFinalize;
- }
- @MainLoop{
- ObjEnemy_SetIntersectionCircleToShot(objBoss, ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 32);
- ObjEnemy_SetIntersectionCircleToPlayer(objBoss, ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 24);
- yield;
- }
- task StartPhase{
- wait(120);
- MainTask;
- }
- task MainPhase{
- loop{
- wait(50);
- SpawnBubble(0);
- wait(200);
- SpawnBubble2(0);
- wait(150);
- yield;
- }
- }
- task MainSplit{
- ShootSplit(30);
- wait(200);
- }
- task movement{
- while(ObjEnemy_GetInfo(objBoss, INFO_LIFE) > 0){
- ObjMove_SetDestAtFrame(objBoss, rand(GetCenterX() + 90, GetCenterX() - 90), rand(GetCenterY() - 60, GetCenterY() - 120), 60);
- wait(20);
- }
- }
- task MainTask{
- let angleT = GetAngleToPlayer(objBoss);
- loop(30){
- CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 5, angleT, 360, 5);
- ascent(i in 0..50){
- CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), i/50+rand(2,4), rand(i/10+angleT,angleT), 318, 5);
- }
- angleT += 360/30;
- }
- }
- task SpawnBubble(angle){
- wait(200);
- loop(8){
- let obj = CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 2.8, angle, 360, 5);
- angle += 360/8;
- Twist(obj,0.5);
- SpawnBullets(obj);
- }
- }
- task SpawnBubble2(angle){
- wait(200);
- loop(8){
- let obj = CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 4, angle, 360, 5);
- angle -= 360/8;
- Twist(obj,-1);
- SpawnBullets(obj);
- }
- }
- task Twist(obj,velo){
- ObjMove_SetAngularVelocity(obj,velo);
- }
- task SpawnBullets(obj){
- loop(30){
- wait(5);
- let b = CreateShotA1(ObjMove_GetX(obj), ObjMove_GetY(obj), 0, obj, 318 , 7);
- Release(b);
- yield;
- }
- }
- task Release(b){
- wait(100);
- ObjMove_SetSpeed(b,2);
- ObjMove_SetAngle(b,rand(0,360));
- }
- task ShootSplit(value){
- while(ObjEnemy_GetInfo(objBoss,INFO_LIFE) > 0){
- ObjMove_SetDestAtFrame(objBoss, GetCenterX(), 60, 60);
- wait(100);
- let angleT = 30; //Base angle faces directly right
- loop(10){
- ascent(i in 0..1){
- loop(10){
- wait(3);
- let obj = CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), rand(1,2),i/20+angleT, 294, 10);
- angleT += 360/value;
- }
- }
- }
- }
- }
- function GetCenterX(){
- return GetStgFrameWidth() / 2;
- }
- function GetCenterY(){
- return GetStgFrameHeight() / 2;
- }
- function wait(n){
- loop(n){yield;}
- }
- task TFinalize {
- while(ObjEnemy_GetInfo(objBoss, INFO_LIFE) > 0){yield;}
- Obj_Delete(objBoss);
- DeleteShotAll(TYPE_ALL, TYPE_IMMEDIATE);
- SetAutoDeleteObject(true);
- CloseScript(GetOwnScriptID());
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement