Advertisement
GuardianTempest

Danmakufu thing

Sep 2nd, 2015
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.70 KB | None | 0 0
  1. #TouhouDanmakufu[Single]
  2. #ScriptVersion[3]
  3. #Title["Sandbox File"]
  4. #Text["This is where you experiment various new things"]
  5. // #BGM ["./conflict.mp3"]
  6. // Note: Default game field is 384 x 448
  7.  
  8. //Variables, constants and inclusions
  9. let objBoss;
  10. let objScene = GetEnemyBossSceneObjectID();
  11. let objPlayer =GetPlayerObjectID();
  12.  
  13. #include"script/default_system/Default_ShotConst.txt"
  14. #include"script/default_system/Default_Effect.txt"
  15.  
  16. @Event{
  17. alternative(GetEventType())
  18. case(EV_REQUEST_LIFE){
  19. SetScriptResult(500);
  20. }
  21. case(EV_REQUEST_TIMER){
  22. SetScriptResult(60);
  23. }
  24. case(EV_REQUEST_SPELL_SCORE){
  25. SetScriptResult(1000000);
  26. }
  27. }
  28.  
  29. @Initialize{
  30. objBoss = ObjEnemy_Create(OBJ_ENEMY_BOSS);
  31. ObjEnemy_Regist(objBoss);
  32. ObjMove_SetDestAtFrame(objBoss, GetCenterX, 60, 60);
  33.  
  34. ObjEnemyBossScene_StartSpell(objScene);
  35.  
  36. TDrawLoop;
  37. TFinalize;
  38. MainTask;
  39. }
  40.  
  41. @MainLoop{
  42. ObjEnemy_SetIntersectionCircleToShot(objBoss, ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 32);
  43. ObjEnemy_SetIntersectionCircleToPlayer(objBoss, ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 24);
  44. yield;
  45. }
  46.  
  47. // Tasks ###############
  48. task TDrawLoop {
  49. let imgExRumia = GetCurrentScriptDirectory ~ "ExRumia.png";
  50. ObjPrim_SetTexture(objBoss, imgExRumia);
  51. ObjSprite2D_SetSourceRect(objBoss, 64, 1, 127, 64);
  52. ObjSprite2D_SetDestCenter(objBoss);
  53. }
  54.  
  55. task MainTask {
  56. movement;
  57. fireA;
  58. fireB;
  59. fireC;
  60. }
  61.  
  62. task movement{
  63. while(ObjEnemy_GetInfo(objBoss,INFO_LIFE)>0){
  64. ObjMove_SetDestAtFrame(objBoss, rand(GetCenterX+90,GetCenterX-90), rand(GetCenterY-60,GetCenterY-120), 60);
  65. wait(240);
  66. }
  67. }
  68.  
  69. task fireA{
  70. while(ObjEnemy_GetInfo(objBoss,INFO_LIFE)>0){
  71. let angleT = GetAngleToPlayer(objBoss);
  72. ascent(i in -1..2){
  73. ascent(j in 0..3){
  74. CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 3-j/6, angleT+i*15, DS_RICE_M_SKY, 5);
  75. }
  76. }
  77. wait(60);
  78. }
  79. }
  80.  
  81. task fireB{
  82. while(ObjEnemy_GetInfo(objBoss,INFO_LIFE)>0){
  83. let angleT = GetAngleToPlayer(objBoss);
  84. loop(13){
  85. ascent(i in 0..3){
  86. CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 2.5-i/3, angleT, DS_BALL_S_RED+i, 5);
  87. }
  88. angleT+=360/13;
  89. }
  90. wait(30);
  91. }
  92. }
  93.  
  94. task fireC {
  95. while(ObjEnemy_GetInfo(objBoss,INFO_LIFE)>0){
  96. let angleToPlayer = atan2(GetPlayerY() - ObjMove_GetY(objBoss), GetPlayerX() - ObjMove_GetX(objBoss));
  97. // let obj = CreateShotA2(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 4, GetAngleToPlayer(objBoss), -0.001, 0, 25, 5);
  98. let obj = CreateShotA1(ObjMove_GetX(objBoss), ObjMove_GetY(objBoss), 1, angleToPlayer, 25, 5);
  99. BulletBurst1(obj);
  100. wait(120);
  101. }
  102. }
  103.  
  104. task BulletBurst1(obj){
  105. // while(ObjMove_GetSpeed(obj)>0){yield;}
  106. wait(120);
  107. let angleT = rand(0,360);
  108. loop(15){
  109. CreateShotA1(ObjMove_GetX(obj), ObjMove_GetY(obj), 3, angleT, 6, 0);
  110. angleT+=360/15;
  111. }
  112. Obj_Delete(obj);
  113. }
  114.  
  115. task TFinalize {
  116. while(ObjEnemy_GetInfo(objBoss,INFO_LIFE)>0){yield;}
  117. if(ObjEnemyBossScene_GetInfo(objScene, INFO_PLAYER_SHOOTDOWN_COUNT)
  118. +ObjEnemyBossScene_GetInfo(objScene, INFO_PLAYER_SPELL_COUNT) == 0){
  119. AddScore(ObjEnemyBossScene_GetInfo(objScene,INFO_SPELL_SCORE));
  120. }
  121. let ex = ObjMove_GetX(objBoss);
  122. let ey = ObjMove_GetY(objBoss);
  123. TExplosionA(ex, ey, 10, 0.6);
  124. Obj_Delete(objBoss);
  125. DeleteShotAll(TYPE_ALL,TYPE_ITEM);
  126. SetAutoDeleteObject(true);
  127. CloseScript(GetOwnScriptID());
  128. return;
  129. }
  130.  
  131. // Functions ###############
  132.  
  133. function GetCenterX{
  134. return GetStgFrameWidth/2;
  135. }
  136.  
  137. function GetCenterY{
  138. return GetStgFrameHeight/2;
  139. }
  140.  
  141. function wait(n){
  142. loop(n){yield;}
  143. }
  144.  
  145. function rand_int(min, max){
  146. return round(rand(min, max));
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement