Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #東方弾幕風[Single]
- #ScriptVersion[3]
- #Title["Seal 「Amulet Ribbon」"]
- #Background["script/default_system/Default_Background_IceMountain.txt"]
- #include"script/ActuallyExRumia/Shot/AllStarShot_Const.dnh"
- #include"script/default_system/Default_Effect.txt"
- let objEnemy;
- let bConcentrationMotion = false;
- let objScene = GetEnemyBossSceneObjectID();
- @Initialize
- {
- objEnemy = ObjEnemy_Create(OBJ_ENEMY_BOSS);
- ObjEnemy_Regist(objEnemy);
- ObjEnemy_SetDamageRate(objEnemy, 0, 0);
- TWork;
- TRender;
- TEnd;
- DeleteShotAll(TYPE_ALL, TYPE_ITEM);
- }
- @MainLoop
- {
- let ex = ObjMove_GetX(objEnemy);
- let ey = ObjMove_GetY(objEnemy);
- ObjEnemy_SetIntersectionCircleToShot(objEnemy, ex, ey, 32);
- ObjEnemy_SetIntersectionCircleToPlayer(objEnemy, ex, ey, 24);
- yield;
- }
- @Event
- {
- alternative(GetEventType())
- case(EV_REQUEST_LIFE)
- {
- SetScriptResult(1000);
- }
- case(EV_REQUEST_TIMER)
- {
- SetScriptResult(41);
- }
- case(EV_REQUEST_SPELL_SCORE)
- {
- SetScriptResult(7000000);
- }
- }
- function wait(n){
- loop(n){
- yield;
- }
- }
- task TWork
- {
- let cx = GetStgFrameWidth() / 2;
- loop(60){yield;}
- ObjMove_SetDestAtFrame(objEnemy, cx, 120, 60);
- wait(60);
- let objScene = GetEnemyBossSceneObjectID();
- ObjEnemyBossScene_StartSpell(objScene);
- Cutin("Seal 「Amulet Ribbon」");
- //Cutin("封印 「お守りリボン」");
- ObjEnemy_SetDamageRate(objEnemy, 20, 0);
- CheckSpell;
- Amulet;
- while(!Obj_IsDeleted(objEnemy))
- {
- //let px = GetPlayerX();
- //ObjMove_SetDestAtFrame(objEnemy, px + rand(-50, 50), ObjMove_GetY(objEnemy), 60);
- yield;
- }
- }
- task Amulet{
- AmuletLaser;
- //ConfineField;
- }
- task ConfineField{
- while((ObjEnemy_GetInfo(objEnemy, INFO_LIFE) > 0)){
- let x = GetPlayerX();
- let y = GetPlayerY();
- ACreateShotA1(x+50,y,1,135,ARROWHEAD_RED+500,0);
- ACreateShotA1(x+50,y,1,225,ARROWHEAD_RED+500,0);
- ACreateShotA1(x-50,y,1,45,ARROWHEAD_RED+500,0);
- ACreateShotA1(x-50,y,1,315,ARROWHEAD_RED+500,0);
- ACreateShotA1(x,y+50,1,315,ARROWHEAD_RED+500,0);
- ACreateShotA1(x,y+50,1,225,ARROWHEAD_RED+500,0);
- ACreateShotA1(x,y-50,1,45,ARROWHEAD_RED+500,0);
- ACreateShotA1(x,y-50,1,135,ARROWHEAD_RED+500,0);
- ACreateShotA1(x-40,y-40,1,0,ARROWHEAD_RED+500,0);
- ACreateShotA1(x-40,y-40,1,90,ARROWHEAD_RED+500,0);
- ACreateShotA1(x-40,y+40,1,270,ARROWHEAD_RED+500,0);
- ACreateShotA1(x-40,y+40,1,0,ARROWHEAD_RED+500,0);
- ACreateShotA1(x+40,y-40,1,180,ARROWHEAD_RED+500,0);
- ACreateShotA1(x+40,y-40,1,90,ARROWHEAD_RED+500,0);
- ACreateShotA1(x+40,y+40,1,180,ARROWHEAD_RED+500,0);
- ACreateShotA1(x+40,y+40,1,270,ARROWHEAD_RED+500,0);
- wait(10);
- }
- }
- task ACreateShotA1(x,y,speed,angle,graphic,delay){
- let shot = CreateShotA1(x,y,speed,angle,graphic,0);
- wait(90);
- if (!Obj_IsDeleted(shot)){Obj_Delete(shot);}
- }
- task AmuletShoot(x,y,timer){
- let count = 0;
- let rAngle = rand(0,360);
- let rSpeed = rand(1,2);
- let rColor = rand(97,112);
- let rRotate = rand(-0.25,0.25);
- wait(timer);
- if (!(ObjEnemy_GetInfo(objEnemy, INFO_LIFE) > 0)){break;}
- loop(36){
- let amulet = CreateShotA1(x,y,rSpeed,rAngle,rColor,5);
- //ObjMove_SetAngularVelocity(amulet,rRotate);
- rAngle+=10;
- }
- }
- task AmuletLaser{
- let bx = ObjMove_GetX(objEnemy);
- let by = ObjMove_GetY(objEnemy);
- let white = CreateShotA1(bx,by,0,0,32,30);
- let timer = 30;
- ObjShot_SetSpellResist(white,true);
- white = CreateShotA1(bx+(5000^(1/2)),by+(5000^(1/2)),0,0,32,30);
- ObjShot_SetSpellResist(white,true);
- white = CreateShotA1(bx-(5000^(1/2)),by-(5000^(1/2)),0,0,32,30);
- ObjShot_SetSpellResist(white,true);
- white = CreateShotA1(bx+2*(5000^(1/2)),by,0,0,32,30);
- ObjShot_SetSpellResist(white,true);
- white = CreateShotA1(bx-2*(5000^(1/2)),by,0,0,32,30);
- ObjShot_SetSpellResist(white,true);
- white = CreateShotA1(bx+(5000^(1/2)),by-(5000^(1/2)),0,0,32,30);
- ObjShot_SetSpellResist(white,true);
- white = CreateShotA1(bx-(5000^(1/2)),by+(5000^(1/2)),0,0,32,30);
- ObjShot_SetSpellResist(white,true);
- while((ObjEnemy_GetInfo(objEnemy, INFO_LIFE) > 0)){
- CreateStraightLaserA1(bx,by,45,100,10,60,1003,30);
- CreateStraightLaserA1(bx,by,225,100,10,60,1003,30);
- AmuletShoot(bx+(5000^(1/2)),by+(5000^(1/2)),timer);
- AmuletShoot(bx-(5000^(1/2)),by-(5000^(1/2)),timer);
- wait(timer);
- if (!(ObjEnemy_GetInfo(objEnemy, INFO_LIFE) > 0)){break;}
- CreateStraightLaserA1(bx+(5000^(1/2)),by+(5000^(1/2)),-45,100,10,60,1003,30);
- CreateStraightLaserA1(bx-(5000^(1/2)),by-(5000^(1/2)),135,100,10,60,1003,30);
- AmuletShoot(bx+2*(5000^(1/2)),by,timer);
- AmuletShoot(bx-2*(5000^(1/2)),by,timer);
- wait(timer);
- if (!(ObjEnemy_GetInfo(objEnemy, INFO_LIFE) > 0)){break;}
- CreateStraightLaserA1(bx+2*(5000^(1/2)),by,-135,100,10,60,1003,30);
- CreateStraightLaserA1(bx-2*(5000^(1/2)),by,45,100,10,60,1003,30);
- AmuletShoot(bx+(5000^(1/2)),by-(5000^(1/2)),timer);
- AmuletShoot(bx-(5000^(1/2)),by+(5000^(1/2)),timer);
- wait(timer);
- if (!(ObjEnemy_GetInfo(objEnemy, INFO_LIFE) > 0)){break;}
- CreateStraightLaserA1(bx+(5000^(1/2)),by-(5000^(1/2)),135,100,10,60,1003,30);
- CreateStraightLaserA1(bx-(5000^(1/2)),by+(5000^(1/2)),-45,100,10,60,1003,30);
- AmuletShoot(bx,by,timer);
- AmuletShoot(bx,by,timer);
- wait(timer);
- //timer--;
- }
- }
- task CheckSpell{
- while(!Obj_IsDeleted(objEnemy))
- {
- ObjEnemy_SetDamageRate(objEnemy, 25, 0);
- if(IsPlayerSpellActive){ObjEnemy_SetDamageRate(objEnemy, 0, 0);}
- yield;
- }
- }
- task TRender
- {
- let imgExRumia = GetCurrentScriptDirectory~"ExRumia.png";
- ObjPrim_SetTexture(objEnemy, imgExRumia);
- while(!Obj_IsDeleted(objEnemy))
- {
- let angle = ObjMove_GetAngle(objEnemy);
- let speed = ObjMove_GetSpeed(objEnemy);
- if(speed == 0)
- {
- if(bConcentrationMotion)
- {
- ObjSprite2D_SetSourceRect(objEnemy, 64, 1, 127, 64);
- }
- else
- {
- ObjSprite2D_SetSourceRect(objEnemy, 1, 1, 64, 64);
- }
- }
- else if(cos(angle) > 0){ObjSprite2D_SetSourceRect(objEnemy, 192, 1, 255, 64);}
- else if(cos(angle) < 0){ObjSprite2D_SetSourceRect(objEnemy, 128 ,1, 191, 64);}
- ObjSprite2D_SetDestCenter(objEnemy);
- yield;
- }
- }
- task TEnd
- {
- while(ObjEnemy_GetInfo(objEnemy, INFO_LIFE) > 0)
- {
- yield;
- }
- if(ObjEnemyBossScene_GetInfo(objScene, INFO_PLAYER_SHOOTDOWN_COUNT)
- +ObjEnemyBossScene_GetInfo(objScene, INFO_PLAYER_SPELL_COUNT) == 0){
- AddScore(ObjEnemyBossScene_GetInfo(objScene, INFO_SPELL_SCORE));
- }
- let ex = ObjMove_GetX(objEnemy);
- let ey = ObjMove_GetY(objEnemy);
- TExplosionA(ex, ey, 10, 0.6);
- DeleteShotAll(TYPE_ALL, TYPE_ITEM);
- Obj_Delete(objEnemy);
- let time = ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER);
- if (time == 0){LifeGet;wait(120);}
- loop(30){yield;}
- CloseScript(GetOwnScriptID());
- }
- task Cutin(name) {
- let objTxt=ObjText_Create;
- ObjText_SetText(objTxt,name);
- ObjText_SetFontSize(objTxt,15);
- ObjText_SetFontColorTop(objTxt,0,0,0);
- ObjText_SetFontColorBottom(objTxt,0,0,0);
- ObjText_SetFontBorderType(objTxt,BORDER_FULL);
- ObjText_SetFontBorderColor(objTxt,255,255,255);
- ObjText_SetFontBorderWidth(objTxt,1);
- ObjText_SetHorizontalAlignment(objTxt,ALIGNMENT_RIGHT);
- ObjText_SetMaxWidth(objTxt,380);
- Obj_SetRenderPriority(objTxt,0.8);
- ObjRender_SetPosition(objTxt,GetStgFrameWidth-385,GetStgFrameHeight-150,0);
- ObjText_SetAutoTransCenter(objTxt,true);
- let scale = 4;
- let alpha = 0;
- loop(20){
- alpha+=12.75;
- scale-=0.15;
- ObjRender_SetAlpha(objTxt,alpha);
- ObjRender_SetScaleXYZ(objTxt,scale,scale,1);
- yield;
- }
- wait(55);
- let yscale = 1;
- loop(20){
- yscale-=0.05;
- ObjRender_SetScaleXYZ(objTxt,1,yscale,1);
- yield;
- }
- wait(5);
- ObjRender_SetPosition(objTxt,GetStgFrameWidth-385,GetStgFrameHeight-425,0);
- loop(20){
- yscale+=0.05;
- ObjRender_SetScaleXYZ(objTxt,1,yscale,1);
- yield;
- }
- while(!Obj_IsDeleted(objEnemy)){yield;}
- loop(20){
- alpha-=12.75;
- yscale+=0.05;
- ObjRender_SetAlpha(objTxt,alpha);
- ObjRender_SetScaleXYZ(objTxt,yscale,yscale,1);
- yield;
- }
- Obj_Delete(objTxt);
- }
- task LifeGet {
- SetPlayerLife(GetPlayerLife() + 1);
- let objTxt=ObjText_Create;
- ObjText_SetText(objTxt,"Timeout Bonus Get!");
- ObjText_SetFontSize(objTxt,30);
- ObjText_SetFontColorTop(objTxt,255,255,255);
- ObjText_SetFontColorBottom(objTxt,128,128,255);
- ObjText_SetFontBorderType(objTxt,BORDER_FULL);
- ObjText_SetFontBorderColor(objTxt,0,0,200);
- ObjText_SetFontBorderWidth(objTxt,1);
- ObjText_SetHorizontalAlignment(objTxt,ALIGNMENT_RIGHT);
- ObjText_SetMaxWidth(objTxt,380);
- Obj_SetRenderPriority(objTxt,0.8);
- ObjRender_SetPosition(objTxt,-37.5,GetStgFrameHeight/4,0);
- ObjText_SetAutoTransCenter(objTxt,true);
- let scale = 4;
- let alpha = 0;
- loop(20){
- alpha+=12.75;
- scale-=0.15;
- ObjRender_SetAlpha(objTxt,alpha);
- ObjRender_SetScaleXYZ(objTxt,scale,scale,1);
- yield;
- }
- wait(60);
- let yscale = 1;
- loop(20){
- yscale-=0.05;
- ObjRender_SetScaleXYZ(objTxt,1,yscale,1);
- yield;
- }
- Obj_Delete(objTxt);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement