Advertisement
Guest User

Untitled

a guest
Jul 8th, 2015
277
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.53 KB | None | 0 0
  1. #TouhouDanmakufu[Single]
  2. #ScriptVersion[3]
  3. #Title["Tutorial Sign 'Just Kind Of Bullets I Guess'"]
  4. #Text["This here boss is coming together VERY nicely. Now for some more advanced bullets."]
  5.  
  6. let bossObj;
  7. let bossX = 0;
  8. let bossY = 0;
  9. let animFrame = 0;
  10. let animFrame2 = 0;
  11. let objScene = GetEnemyBossSceneObjectID();
  12.  
  13. let imgBoss = GetCurrentScriptDirectory ~ "texture/someassholesheet.png";
  14. let japanhouse = GetCurrentScriptDirectory ~ "texture/japanhouse.png";
  15.  
  16. let spellcardSFX = GetCurrentScriptDirectory ~ "SFX/SPELLCARD.wav";
  17. let bossdeathSFX = GetCurrentScriptDirectory ~ "SFX/DEFEATED.wav";
  18. let bulletSFX = GetCurrentScriptDirectory ~ "SFX/ATTACK4.wav";
  19. let gunSFX = GetCurrentScriptDirectory ~ "SFX/GUN.wav";
  20.  
  21.  
  22. #include "script/default_system/Default_ShotConst.txt"
  23. #include "script/default_system/Default_Effect.txt"
  24.  
  25. @Initialize {
  26.  
  27. //automatically deletes objects when script ends
  28. SetAutoDeleteObject(true);
  29.  
  30. // define a boss in bossObj and register it
  31. bossObj = ObjEnemy_Create(OBJ_ENEMY_BOSS);
  32. ObjEnemy_Regist(bossObj);
  33.  
  34. //warp boss to this location when initialized
  35. ObjMove_SetPosition(bossObj,192,-100);
  36.  
  37. // move boss to desired x y location at desired speed
  38. ObjMove_SetDestAtSpeed(bossObj,190,120,5);
  39.  
  40. //load sounds
  41. LoadSound(spellcardSFX);
  42. LoadSound(bossdeathSFX);
  43. LoadSound(bulletSFX);
  44. LoadSound(gunSFX);
  45.  
  46. ObjEnemyBossScene_StartSpell(objScene);
  47. PlaySE(spellcardSFX);
  48.  
  49. mainTask; //run mainTask
  50. }
  51.  
  52. @Event {
  53. //setting the boss timer and life
  54. alternative(GetEventType())
  55. case(EV_REQUEST_LIFE) {
  56. SetScriptResult(1500);
  57. }
  58. case(EV_REQUEST_TIMER) {
  59. SetScriptResult(60);
  60. }
  61. case(EV_REQUEST_SPELL_SCORE) {
  62. SetScriptResult(30000);
  63. }
  64.  
  65. }
  66.  
  67. @MainLoop {
  68. bossX = ObjMove_GetX(bossObj);
  69. bossY = ObjMove_GetY(bossObj);
  70.  
  71. //collision for the shots and player
  72. ObjEnemy_SetIntersectionCircleToShot(bossObj,bossX,bossY,24);
  73. ObjEnemy_SetIntersectionCircleToPlayer(bossObj,bossX,bossY,32);
  74. yield;
  75. }
  76.  
  77. function GetCenterX{
  78. return GetStgFrameWidth/2;
  79. }
  80.  
  81. function GetCenterY{
  82. return GetStgFrameHeight/2;
  83. }
  84.  
  85. //your best friend forever
  86. function wait(w) { loop(w) {yield; } }
  87.  
  88. task mainTask {
  89. renderBoss;
  90. renderBG;
  91. wait(60);
  92. //fireA;
  93. wait(120);
  94. movement;
  95. TEnd;
  96. }
  97.  
  98. task renderBoss {
  99. let dir;
  100. let speed;
  101.  
  102. // texture the boss, set center as true center
  103. ObjPrim_SetTexture(bossObj,imgBoss);
  104. ObjSprite2D_SetSourceRect(bossObj,0,0,100,100);
  105. ObjSprite2D_SetDestCenter(bossObj);
  106. ObjRender_SetScaleXYZ(bossObj,1.0,1.0,0);
  107.  
  108. while(!Obj_IsDeleted(bossObj)) {
  109.  
  110. // update boss speed and direction locally
  111. dir = ObjMove_GetAngle(bossObj);
  112. speed = ObjMove_GetSpeed(bossObj);
  113.  
  114. // animation handling
  115. if(speed == 0){
  116. ObjRender_SetAngleXYZ(bossObj,0,0,0);
  117. if(animFrame < 15) { ObjSprite2D_SetSourceRect(bossObj,0,0,101,100); }
  118. if(animFrame >= 15 && animFrame < 30) { ObjSprite2D_SetSourceRect(bossObj,0,100,101,200); }
  119. if(animFrame >= 30 && animFrame < 45) { ObjSprite2D_SetSourceRect(bossObj,0,200,101,300); }
  120. if(animFrame >= 45) { ObjSprite2D_SetSourceRect(bossObj,0,100,101,200); }
  121. }
  122. else if(cos(dir) < 0){
  123. ObjRender_SetAngleXYZ(bossObj,0,0,0);
  124. ObjSprite2D_SetSourceRect(bossObj,202,100,303,200);
  125. }
  126. else if(cos(dir) > 0){
  127. ObjRender_SetAngleXYZ(bossObj,0,0,0);
  128. ObjSprite2D_SetSourceRect(bossObj,202,200,303,300);
  129. }
  130. animFrame++; // count animFrame. (++ is +1)
  131. if(animFrame > 60) { animFrame = 0; } //reset animFrame when it is higher than 60.
  132. yield;
  133.  
  134. }
  135. }
  136.  
  137. task renderBG{
  138.  
  139. let scrollTex = 0;
  140.  
  141. //background
  142. let obj = ObjPrim_Create(OBJ_SPRITE_2D);
  143. Obj_SetRenderPriorityI(obj,21);
  144. ObjPrim_SetTexture(obj,japanhouse);
  145. ObjSprite2D_SetSourceRect(obj,0,0,1920,1200);
  146. ObjSprite2D_SetDestRect(obj,0,0,GetStgFrameWidth,GetStgFrameHeight);
  147.  
  148. }
  149.  
  150. function angletoPlayer {
  151. let dir = GetAngleToPlayer(bossObj);
  152. return dir;
  153. }
  154.  
  155. task movement {
  156. while(ObjEnemy_GetInfo(bossObj,INFO_LIFE) > 0) {
  157. ObjMove_SetDestAtFrame(bossObj,rand(GetCenterX+90,GetCenterX-90),rand(GetCenterY-60,GetCenterY-120),60);
  158. fireB;
  159. wait(180);
  160. }
  161. }
  162.  
  163. task fireA {
  164. let dir = angletoPlayer;
  165. while(ObjEnemy_GetInfo(bossObj,INFO_LIFE) > 0) {
  166. loop {
  167. loop(13) {
  168. ascent(i in 0..8) {
  169. CreateShotA1(bossX,bossY,2.5-i/3,dir,73+i,5);
  170. dir += 360/13;
  171. PlaySE(bulletSFX);
  172. }
  173. }
  174. wait(90);
  175. yield;
  176. }
  177. yield;
  178. }
  179. }
  180.  
  181. task fireB {
  182. wait(120);
  183. PlaySE(gunSFX);
  184. loop(150) {
  185. let animFrame2 = 0;
  186. CreateShotA1(ObjMove_GetX(bossObj),ObjMove_GetY(bossObj),3,angletoPlayer,41,0);
  187. ObjRender_SetAngleXYZ(bossObj,0,0,0);
  188. if(animFrame2 < 6) { ObjSprite2D_SetSourceRect(bossObj,303,0,404,100); }
  189. if(animFrame2 >= 6 && animFrame < 12) { ObjSprite2D_SetSourceRect(bossObj,303,100,404,200); }
  190. if(animFrame2 >= 12 && animFrame < 18) { ObjSprite2D_SetSourceRect(bossObj,303,200,404,300); }
  191. if(animFrame2 >= 18 && animFrame < 24) { ObjSprite2D_SetSourceRect(bossObj,303,300,404,400); }
  192. if(animFrame2 >= 24) { ObjSprite2D_SetSourceRect(bossObj,303,400,404,500); }
  193. animFrame2++;
  194. if(animFrame2 > 30) { animFrame = 0; }
  195.  
  196. yield;
  197. }
  198. }
  199.  
  200. task TEnd {
  201. while(ObjEnemy_GetInfo(bossObj,INFO_LIFE)) {
  202. yield;
  203. }
  204. if(ObjEnemyBossScene_GetInfo(objScene,INFO_PLAYER_SHOOTDOWN_COUNT)
  205. + ObjEnemyBossScene_GetInfo(objScene,INFO_PLAYER_SPELL_COUNT) == 0) {
  206. AddScore(ObjEnemyBossScene_GetInfo(objScene,INFO_SPELL_SCORE));
  207. }
  208. PlaySE(bossdeathSFX);
  209. TExplosionA(bossX,bossY,10,0.5);
  210. Obj_Delete(bossObj);
  211. DeleteShotAll(TYPE_ALL,TYPE_ITEM);
  212. wait(120);
  213. CloseScript(GetOwnScriptID);
  214. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement