Guest User

Familiar

a guest
Aug 19th, 2013
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1. script_enemy_main{
  2.  
  3. let CSD = GetCurrentScriptDirectory;
  4.  
  5. let imgboss = CSD ~ "system\imgboss.png";
  6.  
  7. let f = 0;
  8. let f2 = 0;
  9.  
  10. let charge0 = CSD ~ "sfx\se_ch00.wav";
  11.  
  12. let start = GetArgument;
  13. let phase = 0;
  14.  
  15. let exist = false;
  16.  
  17. @Initialize{
  18. SetLife(20000);
  19. SetDamageRateEx(100,100,100,100);
  20. SetShotAutoDeleteClip(0,0,0,0);
  21.  
  22. mainTask;
  23. }
  24.  
  25. @MainLoop{
  26. SetCollisionA(GetX,GetY,32);
  27. SetCollisionB(GetX,GetY,16);
  28.  
  29. if(GetEnemyLife<start){ phase = 1;}
  30.  
  31. yield;
  32. }
  33.  
  34. @DrawLoop{
  35. SetTexture(imgboss);
  36. SetRenderState(ALPHA);
  37. SetAlpha(255);
  38. SetGraphicRect(0,0,64,86);
  39. SetGraphicScale(0.7,0.7);
  40. SetGraphicAngle(0,0,0);
  41. SetColor(64,64,255);
  42.  
  43. //no movement
  44. if(int(GetSpeedX())==0){
  45. if(f<10){SetGraphicRect(0,0,64,86);}
  46. if(f>=10 && f<20){SetGraphicRect(64,0,128,86);}
  47. if(f>=20 && f<30){SetGraphicRect(128,0,192,86);}
  48. if(f>=30){SetGraphicRect(192,0,256,86);}
  49. f2 = 0;
  50. }
  51.  
  52. //to the right
  53. if(GetSpeedX()>0){
  54. if(f2<5){SetGraphicRect(0,86,64,172);}
  55. if(f2>=5 && f2<10){SetGraphicRect(64,86,128,172);}
  56. if(f2>=10 && f2<15){SetGraphicRect(128,86,192,172);}
  57. if(f2>=15){SetGraphicRect(192,86,256,172);}
  58. f2++;
  59. }
  60.  
  61. //to the left
  62. if(GetSpeedX()<0){
  63. SetGraphicAngle(180,0,0);
  64. if(f2<5){SetGraphicRect(0,86,64,172);}
  65. if(f2>=5 && f2<10){SetGraphicRect(64,86,128,172);}
  66. if(f2>=10 && f2<15){SetGraphicRect(128,86,192,172);}
  67. if(f2>=15){SetGraphicRect(192,86,256,172);}
  68. f2++;
  69. }
  70.  
  71. DrawGraphic(GetX,GetY);
  72. f++;
  73. if(f==40){f=0;}
  74. }
  75.  
  76. @Finalize{
  77.  
  78. }
  79.  
  80. task mainTask{
  81. SetMovePosition03(GetCenterX-180,GetCenterY,10,60);
  82. wait(60);
  83. Concentration01(120);
  84. PlaySE(charge0);
  85. wait(120);
  86. fire;
  87. }
  88.  
  89. task fire{
  90. loop{
  91. if(phase==1 && exist==false){
  92. curve(GetX,GetY,90,4);
  93. wait(300);
  94. }
  95. yield;
  96. }
  97. }
  98.  
  99. task curve(x,y,angle,graphic){
  100. let obj = Obj_Create(OBJ_SINUATE_LASER);
  101.  
  102. Obj_SetPosition(obj,x,y);
  103. Obj_SetAngle(obj,angle);
  104. ObjShot_SetGraphic(obj,graphic);
  105.  
  106. ObjShot_SetBombResist(obj,true);
  107. Obj_SetSpeed(obj,0.5);
  108. ObjSinuateLaser_SetLength(obj,30);
  109. ObjSinuateLaser_SetWidth(obj,15);
  110.  
  111. while(!Obj_BeDeleted(obj)){
  112. let playerangle = atan2(GetPlayerY-Obj_GetY(obj),GetPlayerX-Obj_GetX(obj));
  113. TurnToAngle(obj,2,playerangle);
  114. Obj_SetSpeed(obj,Obj_GetSpeed(obj)+0.005);
  115. yield;
  116. }
  117.  
  118. if(!Obj_BeDeleted(obj)){ exist = true}
  119. else{ exist = false}
  120. }
  121.  
  122. function NormalizeAngle(angle){
  123. angle %= 360;
  124. if(angle<0){ angle += 360; }
  125. return angle;
  126. }
  127.  
  128. function AngularDistance(angle1, angle2){
  129. let distance = NormalizeAngle(angle2 - angle1);
  130. if(distance>180){ distance-=360; }
  131. return distance;
  132. }
  133.  
  134. function TurnToAngle(id, speed, angle){
  135. let current_angle = Obj_GetAngle(id);
  136. let target_angle = angle;
  137. let adist = AngularDistance(current_angle, target_angle);
  138.  
  139. if(absolute(adist) < speed){
  140. Obj_SetAngle(id, target_angle);
  141. }
  142. else {
  143. if(adist > 0){
  144. Obj_SetAngle(id, Obj_GetAngle(id)+speed);
  145. }
  146. else if(adist < 0){
  147. Obj_SetAngle(id, Obj_GetAngle(id)-speed);
  148. }
  149. }
  150. }
  151.  
  152. function wait(w){ loop(w){ yield;}}
  153. }
Advertisement
Add Comment
Please, Sign In to add comment