Guest User

Danmakufu Shot

a guest
Oct 26th, 2012
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.61 KB | None | 0 0
  1. task MainThread
  2.     {
  3.         yield;
  4.         wait(50);
  5.         let r=1;
  6.         if(round(rand(0,1))){r=-r;}
  7.         loop
  8.         {  
  9.             let p=GetAngleToPlayer(objEnemy)+45;
  10.             loop(2)
  11.             {
  12.                 let way=4;
  13.                 ascent(a in 0..way)
  14.                 {
  15.                     SetShot(ObjMove_GetX(objEnemy),ObjMove_GetY(objEnemy),p+(360/way)*a,r);
  16.                 }
  17.                 wait(10);
  18.                 r=-r;
  19.             }
  20.             wait(120);
  21.             let wt=160;
  22.             wait(wt);
  23.             r=-r;
  24.         }
  25.    
  26.     task SetShot(let sx,let sy,let rot,let r)
  27.         {
  28.             let bx=sx;
  29.             let by=sy;
  30.             let leng=0;
  31.             let state=0;
  32.             Eff;
  33.             Shot;
  34.             let rp=3;
  35.             while(leng<600)
  36.             {
  37.                 rot+=rp*r;
  38.                 leng+=3;
  39.                 rp*=0.98;
  40.                 yield;
  41.             }
  42.             state=-1;
  43.            
  44.             task Shot
  45.             {
  46.                 wait(10);
  47.                 let g=0;
  48.                 while(state!=-1)
  49.                 {
  50.                     loop(3)
  51.                     {
  52.                         Set(g);
  53.                         wait(1);
  54.                     }
  55.                     wait(4);
  56.                     g++;
  57.                 }
  58.                 task Set(let g)
  59.                 {
  60.                     let x=sx;
  61.                     let y=sy;
  62.                     let p=rot+g*60;
  63.                     wait(10);
  64.                     let speed=2;
  65.                     let angle=p;
  66.                     let gra=5+(2*g)%4;
  67.                     let delay=0;
  68.                     while(angle<=p+180+1)
  69.                     {
  70.                         CreateShotA2(x,y,0,angle,speed/200,speed,gra,delay);
  71.                         angle+=180;
  72.                     }
  73.                 }
  74.             }
  75.             task Eff
  76.             {
  77.                 let g=0;
  78.                 let st=0;
  79.                 while(state!=-1)
  80.                 {
  81.                     sx=bx+leng*cos(rot);
  82.                     sy=by+leng*sin(rot);
  83.                         let size=64;
  84.                         if(st<=50){
  85.                         let gra=51;//GREEN01;
  86.                         let del=30;
  87.                         SetLaserEffect(sx-(size/2)*cos(rot),sy-(size/2)*sin(rot),size,size,rot,gra,del);
  88.                         }
  89.                         if(st>=50){
  90.                         let gra=74;//AQUA01;
  91.                         let del=30;
  92.                         SetLaserEffect(sx-(size/2)*cos(rot),sy-(size/2)*sin(rot),size,size,rot,gra,del);
  93.                         }
  94.                     if(st==100){st=0;}
  95.                     st++;
  96.                     g++;
  97.                     yield;
  98.                 }
  99.             }
  100.         }
  101.     }
  102.  
  103. function wait(let frames){
  104.    loop(frames){yield;}
  105. }
  106.  
  107.     task SetLaserEffect(
  108. let x,
  109. let y,
  110. let leng,
  111. let width,
  112. let angle,
  113. let gra,
  114. let del
  115. ){
  116.     let count=0;
  117.     let l=leng;
  118.     let w=width;
  119.     let alpha=0;
  120.     let obj=ObjShot_Create(OBJ_CURVE_LASER);
  121.     ObjMove_SetX(obj,x);
  122.     ObjMove_SetY(obj,y);
  123.     ObjMove_SetAngle(obj,angle);
  124.     ObjRender_SetAlpha(obj,0);
  125.     ObjLaser_SetLength(obj,leng);
  126.     ObjLaser_SetRenderWidth(obj,width);
  127.     ObjShot_SetGraphic(obj,gra);
  128.     ObjShot_SetDelay(obj,0);
  129.     ObjShot_SetAutoDelete(obj,false);
  130.     ObjShot_Regist(obj);
  131.     while( !Obj_IsDeleted(obj))
  132.     {
  133.         ObjRender_SetAlpha(obj,alpha);
  134.         ObjLaser_SetLength(obj,leng);
  135.         ObjLaser_SetRenderWidth(obj,width);
  136.         leng-=l/(del);
  137.         width-=w/(del);
  138.         if(count>=5&&alpha<200){alpha+=40;}
  139.        
  140.         if(count<4||width<=w/2){ObjShot_SetIntersectionEnable(obj,false);}
  141.         else{ObjShot_SetIntersectionEnable(obj,true);}
  142.        
  143.         if(count==del)
  144.         {
  145.             ObjShot_FadeDelete(obj);
  146.         }
  147.         count++;
  148.         yield;
  149.     }
  150. }
Advertisement
Add Comment
Please, Sign In to add comment