Advertisement
Guest User

halp

a guest
Jun 17th, 2017
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.87 KB | None | 0 0
  1. #東方弾幕風[Single]
  2. #ScriptVersion[3]
  3. #Title["Seal 「Amulet Ribbon」"]
  4. #Background["script/default_system/Default_Background_IceMountain.txt"]
  5.  
  6. #include"script/ActuallyExRumia/Shot/AllStarShot_Const.dnh"
  7. #include"script/default_system/Default_Effect.txt"
  8.  
  9. let objEnemy;
  10. let bConcentrationMotion = false;
  11. let objScene = GetEnemyBossSceneObjectID();
  12. @Initialize
  13. {
  14.     objEnemy = ObjEnemy_Create(OBJ_ENEMY_BOSS);
  15.     ObjEnemy_Regist(objEnemy);
  16.     ObjEnemy_SetDamageRate(objEnemy, 0, 0);
  17.     TWork;
  18.     TRender;
  19.     TEnd;
  20.  
  21.     DeleteShotAll(TYPE_ALL, TYPE_ITEM);
  22. }
  23.  
  24. @MainLoop
  25. {
  26.     let ex = ObjMove_GetX(objEnemy);
  27.     let ey = ObjMove_GetY(objEnemy);
  28.     ObjEnemy_SetIntersectionCircleToShot(objEnemy, ex, ey, 32);
  29.     ObjEnemy_SetIntersectionCircleToPlayer(objEnemy, ex, ey, 24);
  30.    
  31.  
  32.     yield;
  33. }
  34.  
  35. @Event
  36. {
  37.     alternative(GetEventType())
  38.     case(EV_REQUEST_LIFE)
  39.     {
  40.         SetScriptResult(1000);
  41.     }
  42.     case(EV_REQUEST_TIMER)
  43.     {
  44.         SetScriptResult(41);
  45.     }
  46.     case(EV_REQUEST_SPELL_SCORE)
  47.     {
  48.         SetScriptResult(7000000);
  49.     }
  50. }
  51.  
  52. function wait(n){
  53.     loop(n){
  54.         yield;
  55.     }
  56. }
  57.  
  58. task TWork
  59. {
  60.     let cx = GetStgFrameWidth() / 2;
  61.     loop(60){yield;}
  62.     ObjMove_SetDestAtFrame(objEnemy, cx, 120, 60);
  63.     wait(60);
  64.     let objScene = GetEnemyBossSceneObjectID();
  65.     ObjEnemyBossScene_StartSpell(objScene);
  66.     Cutin("Seal 「Amulet Ribbon」");
  67.     //Cutin("封印 「お守りリボン」");
  68.     ObjEnemy_SetDamageRate(objEnemy, 20, 0);
  69.     CheckSpell;
  70.     Amulet;
  71.     while(!Obj_IsDeleted(objEnemy))
  72.     {
  73.        
  74.         //let px = GetPlayerX();
  75.         //ObjMove_SetDestAtFrame(objEnemy, px + rand(-50, 50), ObjMove_GetY(objEnemy), 60);
  76.         yield;
  77.     }
  78. }
  79.  
  80. task Amulet{
  81.     AmuletLaser;
  82.     //ConfineField;
  83. }
  84.  
  85. task ConfineField{
  86.     while((ObjEnemy_GetInfo(objEnemy, INFO_LIFE) > 0)){
  87.         let x = GetPlayerX();
  88.         let y = GetPlayerY();
  89.         ACreateShotA1(x+50,y,1,135,ARROWHEAD_RED+500,0);
  90.         ACreateShotA1(x+50,y,1,225,ARROWHEAD_RED+500,0);
  91.        
  92.         ACreateShotA1(x-50,y,1,45,ARROWHEAD_RED+500,0);
  93.         ACreateShotA1(x-50,y,1,315,ARROWHEAD_RED+500,0);
  94.        
  95.         ACreateShotA1(x,y+50,1,315,ARROWHEAD_RED+500,0);
  96.         ACreateShotA1(x,y+50,1,225,ARROWHEAD_RED+500,0);
  97.        
  98.         ACreateShotA1(x,y-50,1,45,ARROWHEAD_RED+500,0);
  99.         ACreateShotA1(x,y-50,1,135,ARROWHEAD_RED+500,0);
  100.        
  101.        
  102.         ACreateShotA1(x-40,y-40,1,0,ARROWHEAD_RED+500,0);
  103.         ACreateShotA1(x-40,y-40,1,90,ARROWHEAD_RED+500,0);
  104.        
  105.         ACreateShotA1(x-40,y+40,1,270,ARROWHEAD_RED+500,0);
  106.         ACreateShotA1(x-40,y+40,1,0,ARROWHEAD_RED+500,0);
  107.        
  108.         ACreateShotA1(x+40,y-40,1,180,ARROWHEAD_RED+500,0);
  109.         ACreateShotA1(x+40,y-40,1,90,ARROWHEAD_RED+500,0);
  110.        
  111.         ACreateShotA1(x+40,y+40,1,180,ARROWHEAD_RED+500,0);
  112.         ACreateShotA1(x+40,y+40,1,270,ARROWHEAD_RED+500,0);
  113.        
  114.         wait(10);
  115.     }
  116. }
  117.  
  118. task ACreateShotA1(x,y,speed,angle,graphic,delay){
  119.     let shot = CreateShotA1(x,y,speed,angle,graphic,0);
  120.     wait(90);
  121.     if (!Obj_IsDeleted(shot)){Obj_Delete(shot);}
  122. }
  123.  
  124. task AmuletShoot(x,y,timer){
  125.     let count = 0;
  126.     let rAngle = rand(0,360);
  127.     let rSpeed = rand(1,2);
  128.     let rColor = rand(97,112);
  129.     let rRotate = rand(-0.25,0.25);
  130.     wait(timer);
  131.     if (!(ObjEnemy_GetInfo(objEnemy, INFO_LIFE) > 0)){break;}
  132.     loop(36){
  133.         let amulet = CreateShotA1(x,y,rSpeed,rAngle,rColor,5);
  134.         //ObjMove_SetAngularVelocity(amulet,rRotate);
  135.         rAngle+=10;
  136.     }
  137. }
  138.  
  139. task AmuletLaser{
  140.     let bx = ObjMove_GetX(objEnemy);
  141.     let by = ObjMove_GetY(objEnemy);
  142.     let white = CreateShotA1(bx,by,0,0,32,30);
  143.     let timer = 30;
  144.     ObjShot_SetSpellResist(white,true);
  145.     white = CreateShotA1(bx+(5000^(1/2)),by+(5000^(1/2)),0,0,32,30);
  146.     ObjShot_SetSpellResist(white,true);
  147.     white = CreateShotA1(bx-(5000^(1/2)),by-(5000^(1/2)),0,0,32,30);
  148.     ObjShot_SetSpellResist(white,true);
  149.     white = CreateShotA1(bx+2*(5000^(1/2)),by,0,0,32,30);
  150.     ObjShot_SetSpellResist(white,true);
  151.     white = CreateShotA1(bx-2*(5000^(1/2)),by,0,0,32,30);
  152.     ObjShot_SetSpellResist(white,true);
  153.     white = CreateShotA1(bx+(5000^(1/2)),by-(5000^(1/2)),0,0,32,30);
  154.     ObjShot_SetSpellResist(white,true);
  155.     white = CreateShotA1(bx-(5000^(1/2)),by+(5000^(1/2)),0,0,32,30);
  156.     ObjShot_SetSpellResist(white,true);
  157.     while((ObjEnemy_GetInfo(objEnemy, INFO_LIFE) > 0)){
  158.         CreateStraightLaserA1(bx,by,45,100,10,60,1003,30);
  159.         CreateStraightLaserA1(bx,by,225,100,10,60,1003,30);
  160.         AmuletShoot(bx+(5000^(1/2)),by+(5000^(1/2)),timer);
  161.         AmuletShoot(bx-(5000^(1/2)),by-(5000^(1/2)),timer);
  162.         wait(timer);
  163.         if (!(ObjEnemy_GetInfo(objEnemy, INFO_LIFE) > 0)){break;}
  164.         CreateStraightLaserA1(bx+(5000^(1/2)),by+(5000^(1/2)),-45,100,10,60,1003,30);
  165.         CreateStraightLaserA1(bx-(5000^(1/2)),by-(5000^(1/2)),135,100,10,60,1003,30);
  166.         AmuletShoot(bx+2*(5000^(1/2)),by,timer);
  167.         AmuletShoot(bx-2*(5000^(1/2)),by,timer);
  168.         wait(timer);
  169.         if (!(ObjEnemy_GetInfo(objEnemy, INFO_LIFE) > 0)){break;}
  170.         CreateStraightLaserA1(bx+2*(5000^(1/2)),by,-135,100,10,60,1003,30);
  171.         CreateStraightLaserA1(bx-2*(5000^(1/2)),by,45,100,10,60,1003,30);
  172.         AmuletShoot(bx+(5000^(1/2)),by-(5000^(1/2)),timer);
  173.         AmuletShoot(bx-(5000^(1/2)),by+(5000^(1/2)),timer);
  174.         wait(timer);
  175.         if (!(ObjEnemy_GetInfo(objEnemy, INFO_LIFE) > 0)){break;}
  176.         CreateStraightLaserA1(bx+(5000^(1/2)),by-(5000^(1/2)),135,100,10,60,1003,30);
  177.         CreateStraightLaserA1(bx-(5000^(1/2)),by+(5000^(1/2)),-45,100,10,60,1003,30);
  178.         AmuletShoot(bx,by,timer);
  179.         AmuletShoot(bx,by,timer);
  180.         wait(timer);
  181.         //timer--;
  182.     }
  183. }
  184.  
  185. task CheckSpell{
  186.     while(!Obj_IsDeleted(objEnemy))
  187.     {
  188.         ObjEnemy_SetDamageRate(objEnemy, 25, 0);
  189.         if(IsPlayerSpellActive){ObjEnemy_SetDamageRate(objEnemy, 0, 0);}
  190.         yield;
  191.     }
  192. }
  193.  
  194. task TRender
  195. {
  196.     let imgExRumia = GetCurrentScriptDirectory~"ExRumia.png";
  197.     ObjPrim_SetTexture(objEnemy, imgExRumia);
  198.  
  199.     while(!Obj_IsDeleted(objEnemy))
  200.     {
  201.         let angle = ObjMove_GetAngle(objEnemy);
  202.         let speed = ObjMove_GetSpeed(objEnemy);
  203.         if(speed == 0)
  204.         {
  205.             if(bConcentrationMotion)
  206.             {
  207.                 ObjSprite2D_SetSourceRect(objEnemy, 64, 1, 127, 64);
  208.             }
  209.             else
  210.             {
  211.                 ObjSprite2D_SetSourceRect(objEnemy, 1, 1, 64, 64);
  212.             }
  213.         }
  214.         else if(cos(angle) > 0){ObjSprite2D_SetSourceRect(objEnemy, 192, 1, 255, 64);}
  215.         else if(cos(angle) < 0){ObjSprite2D_SetSourceRect(objEnemy, 128 ,1, 191, 64);}
  216.         ObjSprite2D_SetDestCenter(objEnemy);
  217.  
  218.         yield;
  219.     }
  220.  
  221. }
  222.  
  223.  
  224. task TEnd
  225. {
  226.     while(ObjEnemy_GetInfo(objEnemy, INFO_LIFE) > 0)
  227.     {
  228.         yield;
  229.     }
  230.     if(ObjEnemyBossScene_GetInfo(objScene, INFO_PLAYER_SHOOTDOWN_COUNT)
  231.         +ObjEnemyBossScene_GetInfo(objScene, INFO_PLAYER_SPELL_COUNT) == 0){
  232.            
  233.         AddScore(ObjEnemyBossScene_GetInfo(objScene, INFO_SPELL_SCORE));
  234.     }
  235.    
  236.     let ex = ObjMove_GetX(objEnemy);
  237.     let ey = ObjMove_GetY(objEnemy);
  238.     TExplosionA(ex, ey, 10, 0.6);
  239.     DeleteShotAll(TYPE_ALL, TYPE_ITEM);
  240.     Obj_Delete(objEnemy);
  241.     let time = ObjEnemyBossScene_GetInfo(objScene, INFO_TIMER);
  242.     if (time == 0){LifeGet;wait(120);}
  243.    
  244.     loop(30){yield;}
  245.  
  246.     CloseScript(GetOwnScriptID());
  247. }
  248.  
  249. task Cutin(name) {
  250.     let objTxt=ObjText_Create;
  251.     ObjText_SetText(objTxt,name);
  252.     ObjText_SetFontSize(objTxt,15);
  253.     ObjText_SetFontColorTop(objTxt,0,0,0);
  254.     ObjText_SetFontColorBottom(objTxt,0,0,0);
  255.     ObjText_SetFontBorderType(objTxt,BORDER_FULL);
  256.     ObjText_SetFontBorderColor(objTxt,255,255,255);
  257.     ObjText_SetFontBorderWidth(objTxt,1);
  258.     ObjText_SetHorizontalAlignment(objTxt,ALIGNMENT_RIGHT);
  259.     ObjText_SetMaxWidth(objTxt,380);
  260.     Obj_SetRenderPriority(objTxt,0.8);
  261.     ObjRender_SetPosition(objTxt,GetStgFrameWidth-385,GetStgFrameHeight-150,0);
  262.     ObjText_SetAutoTransCenter(objTxt,true);
  263.    
  264.     let scale = 4;
  265.     let alpha = 0;
  266.    
  267.     loop(20){
  268.         alpha+=12.75;
  269.         scale-=0.15;
  270.         ObjRender_SetAlpha(objTxt,alpha);
  271.         ObjRender_SetScaleXYZ(objTxt,scale,scale,1);
  272.         yield;
  273.     }
  274.     wait(55);
  275.     let yscale = 1;
  276.     loop(20){
  277.         yscale-=0.05;
  278.         ObjRender_SetScaleXYZ(objTxt,1,yscale,1);
  279.         yield;
  280.     }
  281.     wait(5);
  282.     ObjRender_SetPosition(objTxt,GetStgFrameWidth-385,GetStgFrameHeight-425,0);
  283.     loop(20){
  284.         yscale+=0.05;
  285.         ObjRender_SetScaleXYZ(objTxt,1,yscale,1);
  286.         yield;
  287.     }
  288.     while(!Obj_IsDeleted(objEnemy)){yield;}
  289.         loop(20){
  290.             alpha-=12.75;
  291.             yscale+=0.05;
  292.             ObjRender_SetAlpha(objTxt,alpha);
  293.             ObjRender_SetScaleXYZ(objTxt,yscale,yscale,1);
  294.             yield;
  295.         }
  296.     Obj_Delete(objTxt);
  297. }
  298.  
  299. task LifeGet {
  300.    
  301.     SetPlayerLife(GetPlayerLife() + 1);
  302.    
  303.     let objTxt=ObjText_Create;
  304.     ObjText_SetText(objTxt,"Timeout Bonus Get!");
  305.     ObjText_SetFontSize(objTxt,30);
  306.     ObjText_SetFontColorTop(objTxt,255,255,255);
  307.     ObjText_SetFontColorBottom(objTxt,128,128,255);
  308.     ObjText_SetFontBorderType(objTxt,BORDER_FULL);
  309.     ObjText_SetFontBorderColor(objTxt,0,0,200);
  310.     ObjText_SetFontBorderWidth(objTxt,1);
  311.     ObjText_SetHorizontalAlignment(objTxt,ALIGNMENT_RIGHT);
  312.     ObjText_SetMaxWidth(objTxt,380);
  313.     Obj_SetRenderPriority(objTxt,0.8);
  314.     ObjRender_SetPosition(objTxt,-37.5,GetStgFrameHeight/4,0);
  315.     ObjText_SetAutoTransCenter(objTxt,true);
  316.    
  317.     let scale = 4;
  318.     let alpha = 0;
  319.    
  320.     loop(20){
  321.         alpha+=12.75;
  322.         scale-=0.15;
  323.         ObjRender_SetAlpha(objTxt,alpha);
  324.         ObjRender_SetScaleXYZ(objTxt,scale,scale,1);
  325.         yield;
  326.     }
  327.     wait(60);
  328.     let yscale = 1;
  329.     loop(20){
  330.         yscale-=0.05;
  331.         ObjRender_SetScaleXYZ(objTxt,1,yscale,1);
  332.         yield;
  333.     }
  334.    
  335.     Obj_Delete(objTxt);
  336. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement